{"version":3,"file":"static/js/main.14d8f037.js","mappings":"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AiBC,WAAa,YAAAh9C,OAC5B68C,EAAqBC,EAAsB7kF,EAAAA,GAAAA,CAAAA,EAAUnuB,EAAAA,CAAAA,EAAYk2D,GAAAA,EAGnE+8C,EAAiBthG,MAAQ,YAAAA,OACvBohG,EAAqBC,EAAsB7kF,EAAAA,GAAAA,CAAAA,EACtCnuB,EAAAA,CACH2R,MAAOjW,MAAMC,UAAU6E,OAAOR,EAAQ2R,MAAOA,GAAO9Q,OAAOoZ,WAAAA,EAGxDg5F,CAAAA,CDzBO9kF,CAAqCglF,GAAiBhlF,EAAAA,EDJvD,CACb,IACA,OACA,UACA,OACA,UACA,QACA,QACA,IACA,OACA,MACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,UACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,QACA,KACA,QACA,IACA,KACA,MACA,QACA,MAGA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OACA,iBACA,SACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,WACA,SCnIU7sB,SAAQ,YAClBwxG,GAAOM,GAAcN,GAAOM,EAAAA,KELTC,WAAAA,SAAAA,EAOP3M,EAAgByE,GAAAA,KACrBzE,MAAQA,EAAAA,KACRyE,YAAcA,EAAAA,KACdG,SAAWN,GAActE,GAI9BqD,GAAWI,WAAWprG,KAAKosG,YAAc,uBAG3CmI,aAAAA,SACEhqG,EACAoiG,EACAC,EACAC,GAAAA,IAGMvE,EAAMuE,EADIE,GAAQ/sG,KAAK2nG,MAAOgF,EAAkBC,EAAYC,GACvCxvG,KAAK,IAAK,IAC/B+hC,EAAKp/B,KAAKosG,YAAc7hG,EAG9BqiG,EAAWlF,YAAYtoE,EAAIA,EAAIkpE,EAAAA,EAAAA,EAGjCkM,aAAAA,SAAajqG,EAAkBqiG,GAC7BA,EAAWjB,WAAW3rG,KAAKosG,YAAc7hG,EAAAA,EAAAA,EAG3CkqG,aAAAA,SACElqG,EACAoiG,EACAC,EACAC,GAEItiG,EAAW,GAAGygG,GAAWI,WAAWprG,KAAKosG,YAAc7hG,GAAAA,KAGtDiqG,aAAajqG,EAAUqiG,GAAAA,KACvB2H,aAAahqG,EAAUoiG,EAAkBC,EAAYC,EAAAA,CAAAA,CA7CzCyH,ICOAI,WAAAA,SAAAA,IAAAA,IAAAA,EAAAA,KAAAA,KAYnBC,cAAgB,eACRrM,EAAMpsF,EAAK3R,SAAS9J,WAAAA,IACrB6nG,EAAK,MAAO,OAEXhzC,EAAQm0C,KAAAA,MAAAA,UACA,CAACn0C,GAAAA,UAAmBA,EAAAA,IAAayxC,GAAAA,UAAqB6N,+BAC7C9yG,OAAOoZ,SAAS7d,KAAK,SAEfirG,EAAAA,UAAAA,EAAAA,KAW/BuM,aAAe,kBACT34F,EAAK44F,OACA/M,GAAiB,GAGnB7rF,EAAKy4F,eAAAA,EAAAA,KAGdI,gBAAkB,oBACZ74F,EAAK44F,OAAQ,OACR/M,GAAiB,OAGpBt+F,IAAAA,EAAAA,CAAAA,GACHs9F,IAAU,KpChDc,uBACLgD,QAAAA,EoCiDpBp4E,wBAAyB,CACvBue,OAAQh0B,EAAK3R,SAAS9J,YAAAA,GAIpB60D,EAAQm0C,KAAAA,OACVn0C,IACD7rD,EAAY6rD,MAAQA,GAIhB,CAACp1C,EAAAA,cAAAA,QAAAA,GAAAA,CAAAA,EAAWzW,EAAAA,CAAOjH,IAAI,mBAsDhCwyG,KAAO,WACL94F,EAAK44F,QAAS,QAzGTvqG,SAAW,IAAIygG,GAAW,CAAEF,UAAU,SACtCgK,QAAS,sBAchBG,cAAAA,SAAcr3F,GAAAA,OACR5d,KAAK80G,OACA/M,GAAiB,GAGnB7nF,EAAAA,cAACovF,GAAAA,CAAkBrG,MAAOjpG,KAAKuK,UAAWqT,EAAAA,EAAAA,EAkCnDs3F,yBAAAA,SAAyB9+F,GAAAA,OAEd2xF,GAAiB,IAhET2M,GCaQ/M,IC2Ba,4BChDtCwN,GAAmC,oBAAVC,QAAyBA,OAAOD,iBAAmBC,OAAOD,gBAAgBvhG,KAAKwhG,SAA8B,oBAAZC,UAA8D,mBAA5BA,SAASF,iBAAiCE,SAASF,gBAAgBvhG,KAAKyhG,UACpOC,GAAQ,IAAIC,WAAW,IAEZ,SAASC,KACtB,IAAKL,GACH,MAAM,IAAIr3G,MAAM,4GAGlB,OAAOq3G,GAAgBG,GACzB,CCRA,IAFA,IAAIG,GAAY,GAEP/4G,GAAI,EAAGA,GAAI,MAAOA,GACzB+4G,GAAU/4G,KAAMA,GAAI,KAAO+D,SAAS,IAAI8yD,OAAO,GAUjD,OAPA,SAAqBmiD,EAAK3rE,GACxB,IAAIrtC,EAAIqtC,GAAU,EACd4rE,EAAMF,GAEV,MAAO,CAACE,EAAID,EAAIh5G,MAAOi5G,EAAID,EAAIh5G,MAAOi5G,EAAID,EAAIh5G,MAAOi5G,EAAID,EAAIh5G,MAAO,IAAKi5G,EAAID,EAAIh5G,MAAOi5G,EAAID,EAAIh5G,MAAO,IAAKi5G,EAAID,EAAIh5G,MAAOi5G,EAAID,EAAIh5G,MAAO,IAAKi5G,EAAID,EAAIh5G,MAAOi5G,EAAID,EAAIh5G,MAAO,IAAKi5G,EAAID,EAAIh5G,MAAOi5G,EAAID,EAAIh5G,MAAOi5G,EAAID,EAAIh5G,MAAOi5G,EAAID,EAAIh5G,MAAOi5G,EAAID,EAAIh5G,MAAOi5G,EAAID,EAAIh5G,OAAOW,KAAK,GACnR,ECWA,OAvBA,SAAY4D,EAASy0G,EAAK3rE,GACxB,IAAIrtC,EAAIg5G,GAAO3rE,GAAU,EAEH,iBAAX9oC,IACTy0G,EAAkB,WAAZz0G,EAAuB,IAAItE,MAAM,IAAM,KAC7CsE,EAAU,MAIZ,IAAI20G,GADJ30G,EAAUA,GAAW,CAAC,GACHutC,SAAWvtC,EAAQu0G,KAAOA,MAK7C,GAHAI,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAEvBF,EACF,IAAK,IAAIh5D,EAAK,EAAGA,EAAK,KAAMA,EAC1Bg5D,EAAIh5G,EAAIggD,GAAMk5D,EAAKl5D,GAIvB,OAAOg5D,GAAOG,GAAYD,EAC5B,+hDCxBA,OACU,CACNE,KAAM,6BACNC,QAAS,gCACTC,KAAM,8BCCJC,GAAsB,SAACC,EAAW3jG,GAItC,IAAIg2B,EAE8B,oBAAvBllC,OAAO8yG,YAChB5tE,EAAQ,IAAIllC,OAAO8yG,YAAYD,EAAW,CAAE10E,OAAQjvB,KAEpDg2B,EAAQjlC,SAAS8yG,YAAY,UACvBC,UAAUH,GAAW,GAAO,EAAM3jG,GAG1ClP,OAAOk7B,cAAcgK,EACtB,ECXD,IAAa+tE,GAAc,SAASC,EAAcjwG,GAAG,IAC3Cu6D,EAAS7gE,KAAK4f,MAAdihD,KACAzhC,EAAOp/B,KAAKyJ,MAAZ21B,GACFo3E,EAAYx2G,KAAKw2G,UAAUlwG,EAAE85B,eAC7Bq2E,EAAcnwG,EAAE85B,cAAcwpC,aAAa,eAE5C4sC,GAAWlwG,EAAEg5B,kBACduhC,GAAwB,SAAhB41C,EACLF,GAAcv2G,KAAK02G,YAAYpwG,IAEpCA,EAAE85B,cAActtB,aAAa,cAAe,QAC5C6jG,GAAiBrwG,EAAE85B,cAAepgC,KAAK42G,eAAex3E,IACtDp/B,KAAK62G,YAAYvwG,GAEpB,EAEKqwG,GAAmB,SAASv2E,EAAe02E,GAC/C,IAAK,IAAIp6G,EAAI,EAAGA,EAAIo6G,EAAYl/G,OAAQ8E,IAClC0jC,IAAkB02E,EAAYp6G,GAChCo6G,EAAYp6G,GAAGoW,aAAa,cAAe,SAE3CgkG,EAAYp6G,GAAGoW,aAAa,cAAe,OAGhD,EAEKikG,GAAkB,CACtB33E,GAAI,uCACJnQ,IAFsB,SAElB1tB,EAAQgnC,EAAO0F,GACbjuC,KAAKo/B,MAAM79B,EACDA,EAAOvB,KAAKo/B,IACpBmJ,GAAS0F,EAGb1vC,OAAOC,eAAe+C,EAAQvB,KAAKo/B,GAAI,CACrCz1B,cAAc,EACdlL,MAAO,MAAG8pC,EAAQ0F,IAGvB,EACDle,IAdsB,SAclBxuB,EAAQgnC,GACV,IAAMhsC,EAAMgF,EAAOvB,KAAKo/B,IACxB,QAAYh1B,IAAR7N,EACF,OAAOA,EAAIgsC,EAEd,GChDH,IAYMyuE,GAAe,SAAS7+D,EAAUl3C,EAASqF,GAAG,MACKrF,EAA/Cg2G,cAAAA,OAD0C,SAAAC,EACKj2G,EAAxBk2G,YAAAA,OADmB,SAE1C/3E,EAAOp/B,KAAKyJ,MAAZ21B,GAEFg4E,EAAM9wG,EAAE/E,OAAOqoE,aAAa,aAAe,KAC3CytC,EAAQ/wG,EAAE/E,OAAOqoE,aAAa,aAAe,KAE7CroE,EAAS+E,EAAE/E,OACjB,IAAIvB,KAAKs3G,cAAc/1G,IAAY41G,EAAnC,CAIA,IAAMI,EACG,MAANn4E,GAAuB,MAATi4E,GAAkBA,IAAUj4E,EAE7C,GACS,MAAPg4E,KACEH,GAA4C,UAA3Bj3G,KAAKw3G,UAAUj2G,KAClCg2G,EACA,CACA,IAAME,EAhCQ,SAAAC,GAChB,IAAMD,EAAQ,CAAC,EACf,IAAK,IAAMj1G,KAAO8D,EACM,oBAAXA,EAAE9D,GACXi1G,EAAMj1G,GAAO8D,EAAE9D,GAAKoR,KAAKtN,GAEzBmxG,EAAMj1G,GAAO8D,EAAE9D,GAGnB,OAAOi1G,CACR,CAsBiBC,CAAUpxG,GACxBmxG,EAAMr3E,cAAgB7+B,EACtB42C,EAASs/D,EACV,CAbA,CAcF,EAEKE,GAAmB,SAACb,EAAac,GACrC,IAAMC,EAAS,CAAC,EAMhB,OALAf,EAAYv0G,SAAQ,SAAAhB,GAClB,IAAMgnC,EAAQhnC,EAAOqoE,aAAaguC,GAC9BrvE,GAAOA,EAAMzsC,MAAM,KAAKyG,SAAQ,SAAAgmC,GAAK,OAAKsvE,EAAOtvE,IAAS,CAArB,GAC1C,IAEMsvE,CACR,EAEKC,GAAU,kBAAMx0G,SAASmP,qBAAqB,QAAQ,EAA5C,ECrChB,SAAeslG,GAASzxG,EAAG/E,EAAQkY,EAAMu+F,EAAOC,EAAcC,EAAQnuE,GAgEpE,IAhE4E,MAC7BouE,GAAc1+F,GAA9C2+F,EAD6D,EACpEjqG,MAAyBkqG,EAD2C,EACnDjqG,OADmD,EAGvB+pG,GAAc52G,GAApD+2G,EAH6D,EAGpEnqG,MAA4BoqG,EAHwC,EAGhDnqG,OAHgD,EAKjDoqG,GAAiBlyG,EAAG/E,EAAQ22G,GAA/CO,EALoE,EAKpEA,OAAQC,EAL4D,EAK5DA,OACVC,EAAgBC,GACpBV,EACAI,EACAC,EACAH,EACAC,GAX0E,EAarCQ,GAAgB9uE,GAA/C+uE,EAboE,EAapEA,aAAcC,EAbsD,EAatDA,aAEhBC,EAAc31G,OAAO41G,WACrBC,EAAe71G,OAAO81G,YAhBgD,EAkB1CC,GAAU3/F,GAApC4/F,EAlBoE,EAkBpEA,UAAWC,EAlByD,EAkBzDA,WAGbC,EAAmB,SAAAA,GACvB,IAAMC,EAAUb,EAAcX,GAAOnxG,EACrC,OAAO4xG,EAASe,EAAUV,CAC3B,EAKKW,EAAkB,SAAAA,GACtB,IAAMC,EAAUf,EAAcX,GAAO1gH,EACrC,OAAOohH,EAASgB,EAAUX,CAC3B,EAqBKY,EAAe,SAAAA,GAAC,OA5BI,SAAAC,GACxB,IAAMJ,EAAUb,EAAcX,GAAO9wG,EACrC,OAAOuxG,EAASe,EAAUV,CAC3B,CAyByBc,CAAkB5yG,GAAKgyG,CAA3B,EAEhBa,EAAgB,SAAAA,GAAC,OAtBI,SAAAC,GACzB,IAAMJ,EAAUf,EAAcX,GAAOzxG,EACrC,OAAOmyG,EAASgB,EAAUX,CAC3B,CAmB0Be,CAAmB9yG,GAAKkyG,CAA5B,EAGjBa,EAAU,SAAAA,GAAC,OANG,SAAAC,GAAC,OAAIT,EAAiBvyG,GAAK,CAA1B,CAOnBgzG,CAAYhzG,IAAM2yG,EAAa3yG,IALd,SAAAizG,GAAC,OAAIR,EAAgBzyG,GAAK,CAAzB,CAKmBizG,CAAWjzG,IAAM6yG,EAAc7yG,EADrD,EAEXkzG,EAAS,SAAAA,GAAC,OAAKH,EAAQ/yG,EAAb,EAEVmzG,EAAa,CAAC,MAAO,SAAU,OAAQ,SACvCC,EAAa,GACV19G,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAMsK,EAAImzG,EAAWz9G,GACjBw9G,EAAOlzG,IACTozG,EAAWt9G,KAAKkK,EAEnB,CAED,IACIqzG,EADAC,GAAa,EAEXC,EAAoBtC,IAAiBD,EAS3C,OARIkC,EAAOjC,IAAiBsC,GAC1BD,GAAa,EACbD,EAAWpC,GACFmC,EAAWxiH,OAAS,GAAKmiH,EAAQ9B,IAAiB8B,EAAQ/B,KACnEsC,GAAa,EACbD,EAAWD,EAAW,IAGpBE,EACK,CACLA,YAAY,EACZE,SAAU,CAAExC,MAAOqC,IAIhB,CACLC,YAAY,EACZ/6C,SAAU,CACRvzB,KAAM76B,SAASooG,EAAiBvB,GAASsB,EAAY,IACrDptE,IAAK/6B,SAASsoG,EAAgBzB,GAASqB,EAAW,KAGvD,CAED,IAAMlB,GAAgB,SAAAA,GAAQ,MACF1+F,EAAKghG,wBAAvBrsG,EADoB,EACpBA,OAAQD,EADY,EACZA,MAChB,MAAO,CACLC,OAAQ+C,SAAS/C,EAAQ,IACzBD,MAAOgD,SAAShD,EAAO,IAE1B,EAGKqqG,GAAmB,SAAClyG,EAAG85B,EAAe83E,GAC1C,IAAMwC,EAAqBt6E,EAAcq6E,wBACnCE,EAAYD,EAAmBxuE,IAC/B0uE,EAAaF,EAAmB1uE,KAHe,EAIAmsE,GACnD/3E,GADak4E,EAJsC,EAI7CnqG,MAA4BoqG,EAJiB,EAIzBnqG,OAI5B,MAAe,UAAX8pG,EACK,CACLO,OAAQnyG,EAAEu7B,QACV62E,OAAQpyG,EAAEw7B,SAGP,CACL22E,OAAQmC,EAAatC,EAAc,EACnCI,OAAQiC,EAAYpC,EAAe,EAEtC,EAIKK,GAAqB,SACzBV,EACAI,EACAC,EACAH,EACAC,GAEA,IAAInsE,EACAszB,EACAC,EACAzzB,EAyDJ,MApDe,UAAXksE,GACFhsE,EAAM,CACJrlC,GAAKuxG,EAAW,EAChBlxG,EAAGkxG,EAAW,EACd9gH,IAAK+gH,EARU,EACI,GAQnB9xG,GATe,GAWjBk5D,EAAS,CACP54D,GAAKuxG,EAAW,EAChBlxG,EAAGkxG,EAAW,EACd9gH,EAAGujH,GACHt0G,EAAG8xG,EAfY,EACI,EACF,IAenBrsE,EAAO,CACLnlC,IAAKuxG,EAlBU,EACI,GAkBnBlxG,GAnBe,EAoBf5P,GAAK+gH,EAAY,EACjB9xG,EAAG8xG,EAAY,GAEjB74C,EAAQ,CACN34D,EAxBe,EAyBfK,EAAGkxG,EAzBY,EACI,EAyBnB9gH,GAAK+gH,EAAY,EACjB9xG,EAAG8xG,EAAY,IAEG,UAAXH,IACThsE,EAAM,CACJrlC,GAAKuxG,EAAW,EAChBlxG,EAAGkxG,EAAW,EACd9gH,IAAKihH,EAAe,EAAIF,EAhCL,GAiCnB9xG,GAAKgyG,EAAe,GAEtB94C,EAAS,CACP54D,GAAKuxG,EAAW,EAChBlxG,EAAGkxG,EAAW,EACd9gH,EAAGihH,EAAe,EAClBhyG,EAAGgyG,EAAe,EAAIF,EAvCH,GAyCrBrsE,EAAO,CACLnlC,IAAKuxG,EAAWE,EAAc,EA1CX,GA2CnBpxG,GAAKoxG,EAAc,EACnBhhH,GAAK+gH,EAAY,EACjB9xG,EAAG8xG,EAAY,GAEjB74C,EAAQ,CACN34D,EAAGyxG,EAAc,EACjBpxG,EAAGkxG,EAAWE,EAAc,EAjDT,EAkDnBhhH,GAAK+gH,EAAY,EACjB9xG,EAAG8xG,EAAY,IAIZ,CAAEnsE,IAAAA,EAAKuzB,OAAAA,EAAQzzB,KAAAA,EAAMwzB,MAAAA,EAC7B,EAGKq5C,GAAkB,SAAAA,GACtB,IAAIC,EAAe,EACfC,EAAe,EAKnB,IAAK,IAAMv2G,IAHqC,oBAA5CjE,OAAO3B,UAAU6D,SAASX,MAAMiqC,KAClCA,EAASgkB,KAAK4yC,MAAM52D,EAAOtpC,WAAW9E,QAAQ,KAAM,OAEpCouC,EACJ,QAARvnC,EACFu2G,GAAgB5nG,SAAS44B,EAAOvnC,GAAM,IACrB,WAARA,EACTu2G,GAAgB5nG,SAAS44B,EAAOvnC,GAAM,IACrB,SAARA,EACTs2G,GAAgB3nG,SAAS44B,EAAOvnC,GAAM,IACrB,UAARA,IACTs2G,GAAgB3nG,SAAS44B,EAAOvnC,GAAM,KAI1C,MAAO,CAAEs2G,aAAAA,EAAcC,aAAAA,EACxB,EAGKK,GAAY,SAAAA,GAEhB,IADA,IAAI0B,EAAgB16E,EACb06E,GAAe,CACpB,IAAMC,EAAgB13G,OAAO0lE,iBAAiB+xC,GAG9C,GACkD,SAAhDC,EAAc9xC,iBAAiB,cACmB,cAAlD8xC,EAAc9xC,iBAAiB,eAE/B,MACF6xC,EAAgBA,EAAc50C,aAC/B,CAOD,MAAO,CAAEmzC,UAJNyB,GAAiBA,EAAcL,wBAAwBvuE,KAAQ,EAI9CotE,WAFjBwB,GAAiBA,EAAcL,wBAAwBzuE,MAAS,EAGpE,ECtPD,SAEegvE,GAAS5D,EAAKx5F,EAAUq9F,EAAYC,GACjD,GAAIt9F,EAAU,OAAOA,EACrB,QAAmBxT,IAAf6wG,GAA2C,OAAfA,EAAqB,OAAOA,EAC5D,GAAmB,OAAfA,EAAqB,OAAO,KAEhC,IAAME,EAAS,aACf,OAAKD,GAA2B,UAAdA,GAA0BC,EAAOjjH,KAAKk/G,GAMjDA,EAAIt7G,MAAMq/G,GAAQ5+G,KAAI,SAACiK,EAAG9J,GAC/B,OACEwjB,EAAAA,cAAAA,OAAAA,CAAM1d,IAAK9F,EAAGuhB,UAAU,cACrBzX,EAGN,IAVQ4wG,CAWV,CC5BD,SAAgBgE,GAAU3xG,GACxB,IAAM4xG,EAAU,CAAC,EAUjB,OATA98G,OAAOqD,KAAK6H,GACT3H,QAAO,SAAA2M,GAEN,MAAO,sBAAsBvW,KAAKuW,EACnC,IACAlM,SAAQ,SAAAkM,GACP4sG,EAAQ5sG,GAAQhF,EAAMgF,EACvB,IAEI4sG,CACR,CCZD,SAAeC,GAASn2C,GACtB,IAAMvtE,EAASutE,EAASvtE,OACxB,OAAIutE,EAAStnE,eACJlB,MAAMC,UAAUgU,MAAM/T,KAAKsoE,GAE7B,IAAIxoE,MAAM/E,GAAQ2jH,OAAOh/G,KAAI,SAAAqS,GAAK,OAAIu2D,EAASv2D,EAAb,GAC1C,KCTK4sG,GAAgB,CACpBC,KAAM,CACJzoG,KAAM,OACN4sD,WAAY,OACZD,OAAQ,cACR+7C,MAAO,QAETC,QAAS,CACP3oG,KAAM,OACN4sD,WAAY,UACZD,OAAQ,cACR+7C,MAAO,WAET3tB,QAAS,CACP/6E,KAAM,OACN4sD,WAAY,UACZD,OAAQ,cACR+7C,MAAO,WAETn6F,MAAO,CACLvO,KAAM,OACN4sD,WAAY,UACZD,OAAQ,cACR+7C,MAAO,WAETrtB,KAAM,CACJr7E,KAAM,OACN4sD,WAAY,UACZD,OAAQ,cACR+7C,MAAO,WAETxqC,MAAO,CACLl+D,KAAM,OACN4sD,WAAY,OACZD,OAAQ,cACR+7C,MAAO,SCjCX,SAAgBE,GAAqBC,EAAMC,EAAcl3G,EAAMm3G,GAC7D,OAMF,SAAuBF,EAAMG,GAC3B,IAAMC,EAAYD,EAAOhpG,KACnB0sD,EAAkBs8C,EAAOp8C,WACzBs8C,EAAcF,EAAOr8C,OACrBw8C,EAAaH,EAAON,MAE1B,MAAO,UAAP,OACIG,EADJ,4BAEYI,EAFZ,gCAGiBv8C,EAHjB,sCAIuBw8C,EAJvB,4BAOIL,EAPJ,iEAUKA,EAVL,+DAW8BK,EAX9B,0BAaKL,EAbL,4NAmB0BM,EAnB1B,8FAwBKN,EAxBL,mEA2BKA,EA3BL,qEA4BiCK,EA5BjC,0BA8BKL,EA9BL,+NAoC6BM,EApC7B,oGAyCKN,EAzCL,mEA4CKA,EA5CL,iEA6C+BK,EA7C/B,0BA+CKL,EA/CL,2NAqD2BM,EArD3B,gGA0DKN,EA1DL,mEA6DKA,EA7DL,mEA8DgCK,EA9DhC,0BAgEKL,EAhEL,4NAsE4BM,EAtE5B,qFA2ED,CAvFQC,CAAcP,EAyFvB,SAAwBC,EAAcl3G,EAAMm3G,GAC1C,IAAME,EAAYH,EAAa9oG,KACzB0sD,EAAkBo8C,EAAal8C,WAC/Bs8C,EAAcJ,EAAan8C,OAC3Bw8C,EAAaL,EAAaJ,MAC5BI,EAAaJ,MACbI,EAAal8C,WAEXo8C,ED7DR,SAAsCp3G,GACpC,OAAO42G,GAAc52G,GAAd,MAA2B42G,GAAc52G,SAAUwF,CAC3D,CC2DgBiyG,CAAsBz3G,GAEjCq3G,IACFD,EAAOhpG,KAAOipG,GAGZv8C,IACFs8C,EAAOp8C,WAAaF,GAGlBq8C,IAEAC,EAAOr8C,OADLu8C,IAGuB,UAATt3G,EAAmB,QAAU,UAI7Cu3G,IACFH,EAAON,MAAQS,GAGjB,OAAOH,CACR,CAxH4BM,CAAeR,EAAcl3G,EAAMm3G,GAC/D,mNCPD,IAAI79G,GAAQ,SAAU40D,GACpB,OAAOA,GAAMA,EAAG71D,MAAQA,MAAQ61D,CAClC,EAGA,GAEE50D,GAA2B,iBAAd61F,YAA0BA,aACvC71F,GAAuB,iBAAVmF,QAAsBA,SAEnCnF,GAAqB,iBAARiX,MAAoBA,OACjCjX,GAAuB,iBAAVyyE,IAAsBA,KAElC,WAAc,OAAO3wE,IAAK,CAA1B,IAAmC6T,SAAS,cAATA,GCbtC,GAAiB,SAAUmC,GACzB,IACE,QAASA,GACb,CAAI,MAAOuL,IACP,OAAO,CACX,CACA,ECHA,IAAkBg7F,IAAM,WAEtB,OAA8E,GAAvEh+G,OAAOC,eAAe,CAAC,EAAG,EAAG,CAAEuxB,IAAK,WAAc,OAAO,CAAE,IAAM,EAC1E,ICLIysF,GAAwB,CAAC,EAAEx6G,qBAE3B2D,GAA2BpH,OAAOoH,yBAOtC,GAJkBA,KAA6B62G,GAAsB3/G,KAAK,CAAE,EAAG,GAAK,GAI1D,SAA8BspD,GACtD,IAAI9/C,EAAaV,GAAyB3F,KAAMmmD,GAChD,QAAS9/C,GAAcA,EAAWqD,UACpC,EAAI8yG,aCbJ,GAAiB,SAAUC,EAAQh+G,GACjC,MAAO,CACLiL,aAAuB,EAAT+yG,GACd9yG,eAAyB,EAAT8yG,GAChB7yG,WAAqB,EAAT6yG,GACZh+G,MAAOA,EAEX,ECPIgC,GAAW,CAAC,EAAEA,SAElB,GAAiB,SAAUqyD,GACzB,OAAOryD,GAAS5D,KAAKi2D,GAAIliD,MAAM,GAAI,EACrC,ECDI9U,GAAQ,GAAGA,MAGf,GAAiBygH,IAAM,WAGrB,OAAQh+G,OAAO,KAAKyD,qBAAqB,EAC3C,IAAK,SAAU8wD,GACb,MAAsB,UAAf4pD,GAAQ5pD,GAAkBh3D,GAAMe,KAAKi2D,EAAI,IAAMv0D,OAAOu0D,EAC/D,EAAIv0D,OCVJ,GAAiB,SAAUu0D,GACzB,QAAU1oD,GAAN0oD,EAAiB,MAAMtoD,UAAU,wBAA0BsoD,GAC/D,OAAOA,CACT,ECDA,GAAiB,SAAUA,GACzB,OAAO6pD,GAAcC,GAAuB9pD,GAC9C,ECNA,GAAiB,SAAUA,GACzB,MAAqB,kBAAPA,EAAyB,OAAPA,EAA4B,oBAAPA,CACvD,ECIA,GAAiB,SAAU18C,EAAOymG,GAChC,IAAK1L,GAAS/6F,GAAQ,OAAOA,EAC7B,IAAI4nE,EAAI58E,EACR,GAAIy7G,GAAoD,mBAAxB7+B,EAAK5nE,EAAM3V,YAA4B0wG,GAAS/vG,EAAM48E,EAAGnhF,KAAKuZ,IAAS,OAAOhV,EAC9G,GAAmC,mBAAvB48E,EAAK5nE,EAAM+E,WAA2Bg2F,GAAS/vG,EAAM48E,EAAGnhF,KAAKuZ,IAAS,OAAOhV,EACzF,IAAKy7G,GAAoD,mBAAxB7+B,EAAK5nE,EAAM3V,YAA4B0wG,GAAS/vG,EAAM48E,EAAGnhF,KAAKuZ,IAAS,OAAOhV,EAC/G,MAAMoJ,UAAU,0CAClB,ECTA,GAAiB,SAAUsyG,GACzB,OAAOv+G,OAAOq+G,GAAuBE,GACvC,ECJIj/G,GAAiB,CAAC,EAAEA,eAExB,GAAiB,SAAgBi1D,EAAItwD,GACnC,OAAO3E,GAAehB,KAAKkgH,GAASjqD,GAAKtwD,EAC3C,ECHIc,GAAWqtE,GAAOrtE,SAElB05G,GAAS7L,GAAS7tG,KAAa6tG,GAAS7tG,GAASC,eAErD,GAAiB,SAAUuvD,GACzB,OAAOkqD,GAAS15G,GAASC,cAAcuvD,GAAM,CAAC,CAChD,ECJA,IAAkBmqD,KAAgBV,IAAM,WAEtC,OAEQ,GAFDh+G,OAAOC,eAAe+E,GAAc,OAAQ,IAAK,CACtDwsB,IAAK,WAAc,OAAO,CAAE,IAC3B/zB,CACL,ICDIkhH,GAA4B3+G,OAAOoH,yBAIvC,GAAYs3G,GAAcC,GAA4B,SAAkCjjE,EAAGK,GAGzF,GAFAL,EAAIkjE,GAAgBljE,GACpBK,EAAIoa,GAAYpa,GAAG,GACf8iE,GAAgB,IAClB,OAAOF,GAA0BjjE,EAAGK,EACxC,CAAI,MAAO/4B,IAAO,CAChB,GAAI6sB,GAAI6L,EAAGK,GAAI,OAAO+iE,IAA0BC,GAA2B72G,EAAE5J,KAAKo9C,EAAGK,GAAIL,EAAEK,GAC7F,YClBA,GAAiB,SAAUwY,GACzB,IAAKq+C,GAASr+C,GACZ,MAAMtoD,UAAUzM,OAAO+0D,GAAM,qBAC7B,OAAOA,CACX,ECAIyqD,GAAkBh/G,OAAOC,eAI7B,GAAYy+G,GAAcM,GAAkB,SAAwBtjE,EAAGK,EAAGkjE,GAIxE,GAHAC,GAASxjE,GACTK,EAAIoa,GAAYpa,GAAG,GACnBmjE,GAASD,GACLJ,GAAgB,IAClB,OAAOG,GAAgBtjE,EAAGK,EAAGkjE,EACjC,CAAI,MAAOj8F,IAAO,CAChB,GAAI,QAASi8F,GAAc,QAASA,EAAY,MAAMhzG,UAAU,2BAEhE,MADI,UAAWgzG,IAAYvjE,EAAEK,GAAKkjE,EAAW/+G,OACtCw7C,CACT,YChBA,GAAiBgjE,GAAc,SAAU96G,EAAQK,EAAK/D,GACpD,OAAOi/G,GAAqBj3G,EAAEtE,EAAQK,EAAK66G,GAAyB,EAAG5+G,GACzE,EAAI,SAAU0D,EAAQK,EAAK/D,GAEzB,OADA0D,EAAOK,GAAO/D,EACP0D,CACT,ECNA,GAAiB,SAAUK,EAAK/D,GAC9B,IACEk/G,GAA4BhtC,GAAQnuE,EAAK/D,EAC7C,CAAI,MAAO8iB,IACPovD,GAAOnuE,GAAO/D,CAClB,CAAI,OAAOA,CACX,ECNIm/G,GAAS,qBAGb,GAFYjtC,GAAOitC,KAAWC,GAAUD,GAAQ,CAAC,GCF7CE,GAAmBjqG,SAASpT,SAGE,mBAAvBs9G,GAAMC,gBACfD,GAAMC,cAAgB,SAAUlrD,GAC9B,OAAOgrD,GAAiBjhH,KAAKi2D,EACjC,GAGA,ICAI7jC,GAAKc,GAAKqe,GDAd,GAAiB2vE,GAAMC,cERnBj9D,GAAU4vB,GAAO5vB,QAErB,GAAoC,oBAAZA,IAA0B,cAAc7oD,KAAK8lH,GAAcj9D,yBCFlF3iD,EAAOC,QAAU,SAAUmE,EAAK/D,GAC/B,OAAOs/G,GAAMv7G,KAASu7G,GAAMv7G,QAAiB4H,IAAV3L,EAAsBA,EAAQ,CAAC,EACpE,GAAG,WAAY,IAAI3B,KAAK,CACtBzD,QAAS,SACTm7C,KAAyB,SACzBypE,UAAW,+CCRT7+E,GAAK,EACL8+E,GAAUjhH,KAAKuxC,SAEnB,GAAiB,SAAUhsC,GACzB,MAAO,UAAYzE,YAAeqM,IAAR5H,EAAoB,GAAKA,GAAO,QAAU48B,GAAK8+E,IAASz9G,SAAS,GAC7F,ECFImB,GAAO+1C,GAAO,QAElB,GAAiB,SAAUn1C,GACzB,OAAOZ,GAAKY,KAASZ,GAAKY,GAAO27G,GAAI37G,GACvC,ECPA,GAAiB,CAAC,ELSd47G,GAA6B,6BAC7Br9D,GAAU4vB,GAAO5vB,QAgBrB,GAAIs9D,IAAmB1mE,GAAO/3B,MAAO,CACnC,IAAIm+F,GAAQpmE,GAAO/3B,QAAU+3B,GAAO/3B,MAAQ,IAAImhC,IAC5Cu9D,GAAQP,GAAMhuF,IACdwuF,GAAQR,GAAM3vE,IACdowE,GAAQT,GAAM9uF,IAClBA,GAAM,SAAU6jC,EAAI2rD,GAClB,GAAIF,GAAM1hH,KAAKkhH,GAAOjrD,GAAK,MAAM,IAAItoD,UAAU4zG,IAG/C,OAFAK,EAASC,OAAS5rD,EAClB0rD,GAAM3hH,KAAKkhH,GAAOjrD,EAAI2rD,GACfA,CACX,EACE1uF,GAAM,SAAU+iC,GACd,OAAOwrD,GAAMzhH,KAAKkhH,GAAOjrD,IAAO,CAAC,CACrC,EACE1kB,GAAM,SAAU0kB,GACd,OAAOyrD,GAAM1hH,KAAKkhH,GAAOjrD,EAC7B,CACA,KAAO,CACL,IAAI6rD,GAAQC,GAAU,SACtBC,GAAWF,KAAS,EACpB1vF,GAAM,SAAU6jC,EAAI2rD,GAClB,GAAIK,GAAUhsD,EAAI6rD,IAAQ,MAAM,IAAIn0G,UAAU4zG,IAG9C,OAFAK,EAASC,OAAS5rD,EAClB6qD,GAA4B7qD,EAAI6rD,GAAOF,GAChCA,CACX,EACE1uF,GAAM,SAAU+iC,GACd,OAAOgsD,GAAUhsD,EAAI6rD,IAAS7rD,EAAG6rD,IAAS,CAAC,CAC/C,EACEvwE,GAAM,SAAU0kB,GACd,OAAOgsD,GAAUhsD,EAAI6rD,GACzB,CACA,CAEA,IMtDIhnH,GAAO0B,GNsDX,GAAiB,CACf41B,IAAKA,GACLc,IAAKA,GACLqe,IAAKA,GACL2wE,QAnDY,SAAUjsD,GACtB,OAAO1kB,GAAI0kB,GAAM/iC,GAAI+iC,GAAM7jC,GAAI6jC,EAAI,CAAC,EACtC,EAkDEksD,UAhDc,SAAUv1B,GACxB,OAAO,SAAU32B,GACf,IAAIlzC,EACJ,IAAKuxF,GAASr+C,KAAQlzC,EAAQmQ,GAAI+iC,IAAKluD,OAAS6kF,EAC9C,MAAMj/E,UAAU,0BAA4Bi/E,EAAO,aACnD,OAAO7pE,CACb,CACA,sBOjBA,IAAIq/F,EAAmBC,GAAoBnvF,IACvCovF,EAAuBD,GAAoBH,QAC3CK,EAAWrhH,OAAOA,QAAQjC,MAAM,WAEnCsC,EAAOC,QAAU,SAAU47C,EAAGz3C,EAAK/D,EAAOwC,GACzC,IAGI2e,EAHAy/F,IAASp+G,KAAYA,EAAQo+G,OAC7BC,IAASr+G,KAAYA,EAAQyI,WAC7B61G,IAAct+G,KAAYA,EAAQs+G,YAElB,mBAAT9gH,IACS,iBAAP+D,GAAoB4rC,GAAI3vC,EAAO,SACxCk/G,GAA4Bl/G,EAAO,OAAQ+D,IAE7Cod,EAAQu/F,EAAqB1gH,IAClB+C,SACToe,EAAMpe,OAAS49G,EAAS/hH,KAAmB,iBAAPmF,EAAkBA,EAAM,MAG5Dy3C,IAAM02B,IAIE0uC,GAEAE,GAAetlE,EAAEz3C,KAC3B88G,GAAS,UAFFrlE,EAAEz3C,GAIP88G,EAAQrlE,EAAEz3C,GAAO/D,EAChBk/G,GAA4B1jE,EAAGz3C,EAAK/D,IATnC6gH,EAAQrlE,EAAEz3C,GAAO/D,EAChBo/G,GAAUr7G,EAAK/D,EAUxB,GAAGoV,SAASjX,UAAW,YAAY,WACjC,MAAsB,mBAARoD,MAAsBi/G,EAAiBj/G,MAAMwB,QAAUw8G,GAAch+G,KACrF,OCrCA,GAAiB2wE,GCCb6uC,GAAY,SAAUC,GACxB,MAA0B,mBAAZA,EAAyBA,OAAWr1G,CACpD,EAEA,GAAiB,SAAUs1G,EAAW/rG,GACpC,OAAO1T,UAAUrI,OAAS,EAAI4nH,GAAUtoB,GAAKwoB,KAAeF,GAAU7uC,GAAO+uC,IACzExoB,GAAKwoB,IAAcxoB,GAAKwoB,GAAW/rG,IAAWg9D,GAAO+uC,IAAc/uC,GAAO+uC,GAAW/rG,EAC3F,ECVI60C,GAAOvrD,KAAKurD,KACZ/rC,GAAQxf,KAAKwf,MAIjB,GAAiB,SAAUqgG,GACzB,OAAOxlG,MAAMwlG,GAAYA,GAAY,GAAKA,EAAW,EAAIrgG,GAAQ+rC,IAAMs0D,EACzE,ECLI5xE,GAAMjuC,KAAKiuC,IAIf,GAAiB,SAAU4xE,GACzB,OAAOA,EAAW,EAAI5xE,GAAIy0E,GAAU7C,GAAW,kBAAoB,CACrE,ECNI5/G,GAAMD,KAAKC,IACXguC,GAAMjuC,KAAKiuC,ICEX00E,GAAe,SAAUC,GAC3B,OAAO,SAAUC,EAAOpzD,EAAIqzD,GAC1B,IAGIthH,EAHAw7C,EAAIkjE,GAAgB2C,GACpBloH,EAASooH,GAAS/lE,EAAEriD,QACpBgX,EDDS,SAAUA,EAAOhX,GAChC,IAAIqoH,EAAUN,GAAU/wG,GACxB,OAAOqxG,EAAU,EAAI/iH,GAAI+iH,EAAUroH,EAAQ,GAAKszC,GAAI+0E,EAASroH,EAC/D,CCFgBsoH,CAAgBH,EAAWnoH,GAIvC,GAAIioH,GAAenzD,GAAMA,GAAI,KAAO90D,EAASgX,GAG3C,IAFAnQ,EAAQw7C,EAAErrC,OAEGnQ,EAAO,OAAO,OAEtB,KAAM7G,EAASgX,EAAOA,IAC3B,IAAKixG,GAAejxG,KAASqrC,IAAMA,EAAErrC,KAAW89C,EAAI,OAAOmzD,GAAejxG,GAAS,EACnF,OAAQixG,IAAgB,CAC9B,CACA,ECpBIrzG,GDsBa,CAGf0iB,SAAU0wF,IAAa,GAGvBpzG,QAASozG,IAAa,IC5B6BpzG,QAGrD,GAAiB,SAAUrK,EAAQ+mG,GACjC,IAGI1mG,EAHAy3C,EAAIkjE,GAAgBh7G,GACpBzF,EAAI,EACJ5E,EAAS,GAEb,IAAK0K,KAAOy3C,GAAI7L,GAAIywE,GAAYr8G,IAAQ4rC,GAAI6L,EAAGz3C,IAAQ1K,EAAOgF,KAAK0F,GAEnE,KAAO0mG,EAAMtxG,OAAS8E,GAAO0xC,GAAI6L,EAAGz3C,EAAM0mG,EAAMxsG,SAC7C8P,GAAQ1U,EAAQ0K,IAAQ1K,EAAOgF,KAAK0F,IAEvC,OAAO1K,CACT,ECfA,GAAiB,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,WCLE+mH,GAAasB,GAAY1+G,OAAO,SAAU,aAK9C,GAAYlD,OAAOmH,qBAAuB,SAA6Bu0C,GACrE,OAAOmmE,GAAmBnmE,EAAG4kE,GAC/B,kBCTYtgH,OAAOsD,uBCKnB,GAAiBw+G,GAAW,UAAW,YAAc,SAAiBvtD,GACpE,IAAIlxD,EAAO0+G,GAA0B75G,EAAEg3G,GAAS3qD,IAC5CjxD,EAAwB0+G,GAA4B95G,EACxD,OAAO5E,EAAwBD,EAAKH,OAAOI,EAAsBixD,IAAOlxD,CAC1E,ECLA,GAAiB,SAAUL,EAAQC,GAIjC,IAHA,IAAII,EAAO+c,GAAQnd,GACfhD,EAAiBk/G,GAAqBj3G,EACtCd,EAA2B66G,GAA+B/5G,EACrD/J,EAAI,EAAGA,EAAIkF,EAAKhK,OAAQ8E,IAAK,CACpC,IAAI8F,EAAMZ,EAAKlF,GACV0xC,GAAI7sC,EAAQiB,IAAMhE,EAAe+C,EAAQiB,EAAKmD,EAAyBnE,EAAQgB,GACxF,CACA,ECXIi+G,GAAc,kBAEdC,GAAW,SAAUC,EAASC,GAChC,IAAIniH,EAAQilC,GAAKm9E,GAAUF,IAC3B,OAAOliH,GAASqiH,IACZriH,GAASsiH,KACW,mBAAbH,EAA0BrE,GAAMqE,KACrCA,EACR,EAEIC,GAAYH,GAASG,UAAY,SAAUznG,GAC7C,OAAOrb,OAAOqb,GAAQzd,QAAQ8kH,GAAa,KAAKzoH,aAClD,EAEI0rC,GAAOg9E,GAASh9E,KAAO,CAAC,EACxBq9E,GAASL,GAASK,OAAS,IAC3BD,GAAWJ,GAASI,SAAW,IAEnC,GAAiBJ,GCnBb/6G,GAA2Bq7G,GAA2Dv6G,ECE1F,GAAiB,SAAUu3E,EAAIijC,EAAMrpH,GAEnC,GCLe,SAAUk7D,GACzB,GAAiB,mBAANA,EACT,MAAMtoD,UAAUzM,OAAO+0D,GAAM,qBAEjC,CDAE0sD,CAAUxhC,QACG5zE,IAAT62G,EAAoB,OAAOjjC,EAC/B,OAAQpmF,GACN,KAAK,EAAG,OAAO,WACb,OAAOomF,EAAGnhF,KAAKokH,EACrB,EACI,KAAK,EAAG,OAAO,SAAUjlH,GACvB,OAAOgiF,EAAGnhF,KAAKokH,EAAMjlH,EAC3B,EACI,KAAK,EAAG,OAAO,SAAUA,EAAGuK,GAC1B,OAAOy3E,EAAGnhF,KAAKokH,EAAMjlH,EAAGuK,EAC9B,EACI,KAAK,EAAG,OAAO,SAAUvK,EAAGuK,EAAGtK,GAC7B,OAAO+hF,EAAGnhF,KAAKokH,EAAMjlH,EAAGuK,EAAGtK,EACjC,EAEE,OAAO,WACL,OAAO+hF,EAAGl+E,MAAMmhH,EAAMhhH,UAC1B,CACA,EElBA,GAAiBtD,MAAM0E,SAAW,SAAiBkzD,GACjD,MAAuB,SAAhBmoD,GAAQnoD,EACjB,ECLA,GAAiB8rD,GAAW,YAAa,cAAgB,GnBCrDn8C,GAAUyM,GAAOzM,QACjBnnE,GAAWmnE,IAAWA,GAAQnnE,SAC9BmkH,GAAKnkH,IAAYA,GAASmkH,GAG1BA,GAEF7nH,IADA1B,GAAQupH,GAAGplH,MAAM,MACD,GAAK,EAAI,EAAInE,GAAM,GAAKA,GAAM,GACrC0E,OACT1E,GAAQ0E,GAAU1E,MAAM,iBACVA,GAAM,IAAM,MACxBA,GAAQ0E,GAAU1E,MAAM,oBACb0B,GAAU1B,GAAM,IAI/B,IoBgCIwpH,GpBhCJ,GAAiB9nH,KAAYA,GqBd7B,KAAmBkF,OAAOsD,wBAA0B06G,IAAM,WACxD,OAAQx+G,OAAO+C,YAGZA,OAAOka,MAAQomG,IAAcA,GAAa,EAC/C,ICPA,GAAiBC,KACXvgH,OAAOka,MACkB,iBAAnBla,OAAOrE,SCEf6kH,GAAwB3pE,GAAO,OAC/B72C,GAAS6vE,GAAO7vE,OAChBygH,GAAwBC,GAAoB1gH,GAASA,IAAUA,GAAO2gH,eAAiBtD,GAE3F,GAAiB,SAAUhlH,GAOvB,OANGi1C,GAAIkzE,GAAuBnoH,KAAWkoH,IAAuD,iBAA/BC,GAAsBnoH,MACnFkoH,IAAiBjzE,GAAIttC,GAAQ3H,GAC/BmoH,GAAsBnoH,GAAQ2H,GAAO3H,GAErCmoH,GAAsBnoH,GAAQooH,GAAsB,UAAYpoH,IAE3DmoH,GAAsBnoH,EACjC,ECfIuoH,GAAUC,GAAgB,WAI9B,GAAiB,SAAUC,EAAehqH,GACxC,IAAI0kC,EASF,OAREj7B,GAAQugH,KAGM,mBAFhBtlF,EAAIslF,EAAcznG,cAEamiB,IAAM3/B,QAAS0E,GAAQi7B,EAAE1/B,WAC/Cu0G,GAAS70E,IAEN,QADVA,EAAIA,EAAEolF,OACUplF,OAAIlyB,GAH+CkyB,OAAIlyB,GAKlE,SAAWA,IAANkyB,EAAkB3/B,MAAQ2/B,GAAc,IAAX1kC,EAAe,EAAIA,EAChE,ECbIkF,GAAO,GAAGA,KAGV8iH,GAAe,SAAUn2B,GAC3B,IAAIo4B,EAAiB,GAARp4B,EACTq4B,EAAoB,GAARr4B,EACZs4B,EAAkB,GAARt4B,EACVu4B,EAAmB,GAARv4B,EACXw4B,EAAwB,GAARx4B,EAChBy4B,EAAwB,GAARz4B,EAChB04B,EAAmB,GAAR14B,GAAaw4B,EAC5B,OAAO,SAAUnC,EAAOsC,EAAYnB,EAAMoB,GASxC,IARA,IAOI5jH,EAAO3G,EAPPmiD,EAAI8iE,GAAS+C,GACb3qG,EAAOwnG,GAAc1iE,GACrBqoE,EAAgB1uG,GAAKwuG,EAAYnB,EAAM,GACvCrpH,EAASooH,GAAS7qG,EAAKvd,QACvBgX,EAAQ,EACRmN,EAASsmG,GAAkBE,GAC3BhhH,EAASsgH,EAAS9lG,EAAO+jG,EAAOloH,GAAUkqH,GAAaI,EAAgBnmG,EAAO+jG,EAAO,QAAK11G,EAExFxS,EAASgX,EAAOA,IAAS,IAAIuzG,GAAYvzG,KAASuG,KAEtDrd,EAASwqH,EADT7jH,EAAQ0W,EAAKvG,GACiBA,EAAOqrC,GACjCwvC,GACF,GAAIo4B,EAAQtgH,EAAOqN,GAAS9W,OACvB,GAAIA,EAAQ,OAAQ2xF,GACvB,KAAK,EAAG,OAAO,EACf,KAAK,EAAG,OAAOhrF,EACf,KAAK,EAAG,OAAOmQ,EACf,KAAK,EAAG9R,GAAKD,KAAK0E,EAAQ9C,QACrB,OAAQgrF,GACb,KAAK,EAAG,OAAO,EACf,KAAK,EAAG3sF,GAAKD,KAAK0E,EAAQ9C,GAIhC,OAAOwjH,GAAiB,EAAIF,GAAWC,EAAWA,EAAWzgH,CACjE,CACA,EAEA,GAAiB,CAGfgB,QAASq9G,GAAa,GAGtBrjH,IAAKqjH,GAAa,GAGlB99G,OAAQ89G,GAAa,GAGrB/hG,KAAM+hG,GAAa,GAGnB7rC,MAAO6rC,GAAa,GAGpB4C,KAAM5C,GAAa,GAGnBpc,UAAWoc,GAAa,GAGxB6C,UAAW7C,GAAa,IChE1B,GAAiBrhH,OAAOqD,MAAQ,SAAcq4C,GAC5C,OAAOmmE,GAAmBnmE,EAAGkmE,GAC/B,ECAA,GAAiBlD,GAAc1+G,OAAOiL,iBAAmB,SAA0BywC,EAAGyoE,GACpFjF,GAASxjE,GAKT,IAJA,IAGIz3C,EAHAZ,EAAO+gH,GAAWD,GAClB9qH,EAASgK,EAAKhK,OACdgX,EAAQ,EAELhX,EAASgX,GAAO8uG,GAAqBj3G,EAAEwzC,EAAGz3C,EAAMZ,EAAKgN,KAAU8zG,EAAWlgH,IACjF,OAAOy3C,CACT,ECdA,GAAiBomE,GAAW,WAAY,mBRQpCuC,GAAY,YACZC,GAAS,SACTC,GAAWlE,GAAU,YAErBmE,GAAmB,WAAY,EAE/BC,GAAY,SAAU5mG,GACxB,MARO,IAQKymG,GATL,IASmBzmG,EAAnB6mG,KAAwCJ,GATxC,GAUT,EAkCIK,GAAkB,WACpB,IAEE/B,GAAkB79G,SAAS6/G,QAAU,IAAIC,cAAc,WAC3D,CAAI,MAAO7hG,IAAO,CAChB2hG,GAAkB/B,GApCY,SAAUA,GACxCA,EAAgBkC,MAAML,GAAU,KAChC7B,EAAgBx/C,QAChB,IAAI2hD,EAAOnC,EAAgBnyE,aAAazwC,OAExC,OADA4iH,EAAkB,KACXmC,CACT,CA8BsCC,CAA0BpC,IA3BjC,WAE7B,IAEIqC,EAFAC,EAASC,GAAsB,UAC/BC,EAAK,OAASd,GAAS,IAU3B,OARAY,EAAOp5G,MAAM29C,QAAU,OACvB47D,GAAK3wG,YAAYwwG,GAEjBA,EAAOtxG,IAAMpU,OAAO4lH,IACpBH,EAAiBC,EAAOn5E,cAAchnC,UACvB69D,OACfqiD,EAAeH,MAAML,GAAU,sBAC/BQ,EAAe7hD,QACR6hD,EAAe30E,CACxB,CAamFg1E,GAEjF,IADA,IAAIjsH,EAASuoH,GAAYvoH,OAClBA,YAAiBsrH,GAAgBN,IAAWzC,GAAYvoH,IAC/D,OAAOsrH,IACT,EAEArE,GAAWiE,KAAY,EAIvB,OAAiBvkH,OAAOwd,QAAU,SAAgBk+B,EAAGyoE,GACnD,IAAI5qH,EAQJ,OAPU,OAANmiD,GACF8oE,GAAiBH,IAAanF,GAASxjE,GACvCniD,EAAS,IAAIirH,GACbA,GAAiBH,IAAa,KAE9B9qH,EAAOgrH,IAAY7oE,GACdniD,EAASorH,UACM94G,IAAfs4G,EAA2B5qH,EAAS0R,GAAiB1R,EAAQ4qH,EACtE,ESzEIoB,GAAcnC,GAAgB,eAC9BoC,GAAiBpnH,MAAMC,eAIQwN,GAA/B25G,GAAeD,KACjBpG,GAAqBj3G,EAAEs9G,GAAgBD,GAAa,CAClDn6G,cAAc,EACdlL,MAAOsd,GAAO,QAKlB,IAA2BvZ,YCfvBwhH,GAAQhD,GAAwCwB,KAGhDyB,GAAO,OACPC,IAAc,EAGdD,KAAQ,IAAItnH,MAAM,GAAGsnH,KAAM,WAAcC,IAAc,CAAM,IfahD,SAAUjjH,EAASO,GAClC,IAGYD,EAAQiB,EAAK2hH,EAAgBC,EAAgB/9G,EAHrDg+G,EAASpjH,EAAQM,OACjB+iH,EAASrjH,EAAQ0vE,OACjB4zC,EAAStjH,EAAQujH,KASrB,GANEjjH,EADE+iH,EACO3zC,GACA4zC,EACA5zC,GAAO0zC,IAAWxG,GAAUwG,EAAQ,CAAC,IAEpC1zC,GAAO0zC,IAAW,CAAC,GAAGznH,UAEtB,IAAK4F,KAAOhB,EAAQ,CAQ9B,GAPA4iH,EAAiB5iH,EAAOgB,GAGtB2hH,EAFEljH,EAAQs+G,aACVl5G,EAAaV,GAAyBpE,EAAQiB,KACf6D,EAAW5H,MACpB8C,EAAOiB,IACtBk+G,GAAS4D,EAAS9hH,EAAM6hH,GAAUE,EAAS,IAAM,KAAO/hH,EAAKvB,EAAQwjH,cAE5Cr6G,IAAnB+5G,EAA8B,CAC3C,UAAWC,WAA0BD,EAAgB,SACrDO,GAA0BN,EAAgBD,EAChD,EAEQljH,EAAQ+Z,MAASmpG,GAAkBA,EAAenpG,OACpD2iG,GAA4ByG,EAAgB,QAAQ,GAGtDO,GAASpjH,EAAQiB,EAAK4hH,EAAgBnjH,EAC1C,CACA,CexCA0sF,CAAE,CAAEpsF,OAAQ,QAASqjH,OAAO,EAAMH,OAAQP,IAAe,CACvD1B,KAAM,SAAcJ,GAClB,OAAO4B,GAAMhkH,KAAMoiH,EAAYniH,UAAUrI,OAAS,EAAIqI,UAAU,QAAKmK,EACzE,IDC2B5H,GCGVyhH,GDFfF,GAAeD,IAAathH,KAAO,MED1BqiH,GACAC,GCgBLC,GrEbN,SAAwBxjH,GAKtBA,EAAO4hE,KAAO,SAAA5hE,GACZ00G,GAAoB+O,GAAgBlP,KAAM,CAAEv0G,OAAAA,GAC7C,EAMDA,EAAOqV,QAAU,WACfq/F,GAAoB+O,GAAgBjP,QACrC,EAMDx0G,EAAOs/D,KAAO,SAAAt/D,GACZ00G,GAAoB+O,GAAgBhP,KAAM,CAAEz0G,OAAAA,GAC7C,EAEDA,EAAO3E,UAAUqoH,cAAgB,WAC3BjlH,KAAKklH,QACPllH,KAAKmlH,iBACLnlH,KAAKolH,eAER,EAED7jH,EAAO3E,UAAUyoH,WAAa,SAAS98E,GACrC,GAAIvoC,KAAKklH,MAAO,CACd,IAAMI,KACH/8E,GAASA,EAAM/G,QAAU+G,EAAM/G,OAAOjgC,QAGzCvB,KAAK62G,YACH,CAAEz2E,cAAeklF,GAAa/8E,EAAM/G,OAAOjgC,SAC3C,EAEH,CACF,EAEDA,EAAO3E,UAAU2oH,WAAa,SAASh9E,GACrC,GAAIvoC,KAAKklH,MAAO,CACd,IAAMI,KACH/8E,GAASA,EAAM/G,QAAU+G,EAAM/G,OAAOjgC,QACzCvB,KAAK02G,YACH,CAAEt2E,cAAeklF,GAAa/8E,EAAM/G,OAAOjgC,QAC3C+jH,EAEH,CACF,CACF,CqEjDAE,CAAAA,GCxBD,SAEwBjkH,GACtBA,EAAO3E,UAAU6oH,iBAAmB,SAASC,GAE3CriH,OAAO60B,oBAAoB8sF,GAAgBlP,KAAM91G,KAAKulH,YACtDliH,OAAOO,iBAAiBohH,GAAgBlP,KAAM91G,KAAKulH,YAAY,GAG/DliH,OAAO60B,oBAAoB8sF,GAAgBjP,QAAS/1G,KAAKilH,eACzD5hH,OAAOO,iBAAiBohH,GAAgBjP,QAAS/1G,KAAKilH,eAAe,GAGrE5hH,OAAO60B,oBAAoB8sF,GAAgBhP,KAAMh2G,KAAKqlH,YACtDhiH,OAAOO,iBAAiBohH,GAAgBhP,KAAMh2G,KAAKqlH,YAAY,GAG3DK,IACFriH,OAAO60B,oBAAoB,SAAUl4B,KAAK2lH,gBAC1CtiH,OAAOO,iBAAiB,SAAU5D,KAAK2lH,gBAAgB,GAE1D,EAEDpkH,EAAO3E,UAAUgpH,mBAAqB,WACpCviH,OAAO60B,oBAAoB8sF,GAAgBlP,KAAM91G,KAAKulH,YACtDliH,OAAO60B,oBAAoB8sF,GAAgBjP,QAAS/1G,KAAKilH,eACzD5hH,OAAO60B,oBAAoB8sF,GAAgBhP,KAAMh2G,KAAKqlH,YACtDhiH,OAAO60B,oBAAoB,SAAUl4B,KAAK2lH,eAC3C,EAKDpkH,EAAO3E,UAAU+oH,eAAiB,WAC3B3lH,KAAKklH,OACVllH,KAAK02G,aACN,CACF,CDZAmP,CAAAA,GpE4BD,SAAwBtkH,GACtBA,EAAO3E,UAAU06G,cAAgB,SAASwO,GAExC,OADkB9lH,KAAK4f,MAAf2oB,SACUu9E,EAAIl8C,aAAa,aACpC,EAGDroE,EAAO3E,UAAUmpH,mBAAqB,SAASD,GAAK,aACtB9lH,KAAK4f,MAAzB2oB,EAD0C,EAC1CA,MAAOy9E,EADmC,EACnCA,SACTC,EAAYH,EAAIl8C,aAAa,eAAiBrhC,EAC9CguE,EAAeuP,EAAIl8C,aAAa,mBAAqBo8C,EAE3DC,EAAUnqH,MAAM,KAAKyG,SAAQ,SAAAgmC,GAC3Bu9E,EAAI5tF,oBAAoBqQ,EAAOwuE,GAAgBhnF,IAAI+1F,EAAKv9E,IACxD,IAAM29E,EAAiB5P,GAAY1iG,KAAKsI,EAAMq6F,GAC9CQ,GAAgB9nF,IAAI62F,EAAKv9E,EAAO29E,GAChCJ,EAAIliH,iBAAiB2kC,EAAO29E,GAAgB,EAC7C,IACG3P,GACFA,EAAaz6G,MAAM,KAAKyG,SAAQ,SAAAgmC,GAC9Bu9E,EAAI5tF,oBAAoBqQ,EAAOrsB,EAAKw6F,aACpCoP,EAAIliH,iBAAiB2kC,EAAOrsB,EAAKw6F,aAAa,EAC/C,GAEJ,EAGDn1G,EAAO3E,UAAUupH,qBAAuB,SAASL,GAAK,MACxB9lH,KAAK4f,MAAzB2oB,EAD4C,EAC5CA,MAAOy9E,EADqC,EACrCA,SACTC,EAAY19E,GAASu9E,EAAIl8C,aAAa,cACtC2sC,EAAeyP,GAAYF,EAAIl8C,aAAa,kBAElDk8C,EAAI5tF,oBAAoB+tF,EAAWlP,GAAgBhnF,IAAI+1F,EAAKv9E,IACxDguE,GAAcuP,EAAI5tF,oBAAoBq+E,EAAcv2G,KAAK02G,YAC9D,CACF,CoE9DAS,CAAAA,GEzBD,SAAwB51G,GACtBA,EAAO3E,UAAU45G,UAAY,SAASp2E,GACpC,OACGA,GACkD,SAAjDA,EAAcwpC,aAAa,mBAC7B5pE,KAAKyJ,MAAM+sG,YACX,CAEH,CACF,CFiBAA,CAAAA,GG1BD,SAAwBj1G,GACtBA,EAAO3E,UAAU46G,UAAY,SAASp3E,GAEpC,OADmBA,EAAcwpC,aAAa,gBACzB5pE,KAAKyJ,MAAMyuG,QAAU,OAC3C,CACF,CHsBAV,CAAAA,GnEwBD,SAAwBj2G,GACtBA,EAAO3E,UAAUwpH,WAAa,WAC5B,QAASpmH,KAAKyJ,MAAM48G,QACrB,EAED9kH,EAAO3E,UAAU0pH,iBAAmB,SAASxP,GAAa,aAMpD92G,KAAK4f,MAJP2oB,EAFsD,EAEtDA,MACAy9E,EAHsD,EAGtDA,SACAO,EAJsD,EAItDA,qBACAC,EALsD,EAKtDA,wBAEIh2F,EAAOsnF,KAEP2O,EAAe9O,GAAiBb,EAAa,cAC7C4P,EAAkB/O,GAAiBb,EAAa,kBAEzC,MAATvuE,IAAek+E,EAAal+E,IAAS,GACzB,MAAZy9E,IAAkBU,EAAgBV,IAAY,GAClDO,EACGzqH,MAAM,KACNyG,SAAQ,SAAAgmC,GAAK,OAAKk+E,EAAal+E,IAAS,CAA3B,IAChBi+E,EACG1qH,MAAM,KACNyG,SAAQ,SAAAgmC,GAAK,OAAKm+E,EAAgBn+E,IAAS,CAA9B,IAEhBvoC,KAAK2mH,mBAAmBn2F,GAExB,IAAMgY,EAAaxoC,KAAK4mH,kBAAoB,CAAC,EAS7C,IAAK,IAAMr+E,KARE,MAATA,IACFC,EAAUq+E,UAAY7P,GAAapjG,KAAK5T,KAAMA,KAAK62G,YAAa,CAAC,GACjEruE,EAAUs+E,UAAY9P,GAAapjG,KAAK5T,KAAMA,KAAK+mH,cAAe,CAChE9P,eAAe,IAEjBzuE,EAAUw+E,SAAWhQ,GAAapjG,KAAK5T,KAAMA,KAAK02G,YAAa,CAAC,IAG9C+P,EAClBj+E,EAAUD,GAASyuE,GAAapjG,KAC9B5T,MACA,SAAAsG,GACE,IAAM2gH,EACJ3gH,EAAE85B,cAAcwpC,aAAa,mBAAqBo8C,EACpD1P,GAAYz5G,KAAKqf,EAAM+qG,EAAgB3gH,EACxC,GACD,CAAE6wG,aAAa,IAGnB,IAAK,IAAM5uE,KAASm+E,EAClBl+E,EAAUD,GAASyuE,GAAapjG,KAAK5T,KAAMA,KAAK02G,YAAa,CAC3DS,aAAa,IAGjB,IAAK,IAAM5uE,KAASC,EAClBhY,EAAK5sB,iBAAiB2kC,EAAOC,EAAUD,GAE1C,EAEDhnC,EAAO3E,UAAU+pH,mBAAqB,SAASn2F,GAC7CA,EAAOA,GAAQsnF,KAEf,IAAMtvE,EAAYxoC,KAAK4mH,kBACvB,IAAK,IAAMr+E,KAASC,EAClBhY,EAAK0H,oBAAoBqQ,EAAOC,EAAUD,GAE7C,CACF,CmEzFA89E,CAAAA,GIdD,SAAwB9kH,GACtBA,EAAO3E,UAAUsqH,mBAAqB,WAAW,WACzCC,EARN9jH,OAAO8jH,kBACP9jH,OAAO+jH,wBACP/jH,OAAOgkH,oBAOP,GAAwB,MAApBF,EAAJ,CAEA,IAAMG,EAAW,IAAIH,GAAiB,SAAAI,GACpC,IAAK,IAAIC,EAAK,EAAGA,EAAKD,EAAU3vH,OAAQ4vH,IAEtC,IADA,IAAMC,EAAWF,EAAUC,GAClBE,EAAK,EAAGA,EAAKD,EAASE,aAAa/vH,OAAQ8vH,IAAM,CAExD,GADgBD,EAASE,aAAaD,KACtBxrG,EAAK0D,MAAMwgB,cAEzB,YADAlkB,EAAKw6F,aAGR,CAEJ,IAED4Q,EAASM,QAAQvkH,OAAOC,SAAU,CAAEukH,WAAW,EAAMC,SAAS,IAE9D9nH,KAAK+nH,eAAiBT,CAjBc,CAkBrC,EAED/lH,EAAO3E,UAAUorH,qBAAuB,WAClChoH,KAAK+nH,iBACP/nH,KAAK+nH,eAAevhC,aACpBxmF,KAAK+nH,eAAiB,KAEzB,CACF,CJdAE,EAAAA,GAAAA,eAsDC,WAAYx+G,GAAO,yGAAAgB,CAAAA,KAAAA,IACjByR,EAAAA,GAAAA,KAAAA,GAAAA,GAAAA,KAAAA,KAAMzS,KAEDmW,MAAQ,CACXi8F,KAAMpyG,EAAMoyG,MKxFT,IAAMA,KLyFT7D,MAAOvuG,EAAMuuG,OAAS,MACtBC,aAAcxuG,EAAMuuG,OAAS,MAC7BpzG,KAAM,OACNszG,OAAQ,QACRr3C,MAAM,EACNlB,QAAQ,EACRm8C,aAAc,CAAC,EACf/xE,OAAQ,CAAC,EACTm+E,WAAY,GACZtE,MAAM,EACNuE,UAAW,EACXC,UAAW,EACX7/E,MAAO9+B,EAAM8+B,OAAS,KACtBy9E,SAAUv8G,EAAMu8G,UAAY,KAC5BqC,aAAc,KACdjoF,cAAe,KACfkoF,UAAWlN,GAAU3xG,GACrB8+G,YAAY,EACZC,SAAS,EACTjC,qBAAsB98G,EAAM88G,sBAAwB,GACpDC,wBAAyB/8G,EAAM+8G,yBAA2B,GAC1DiC,cAAe,KACfC,aAAa,GAGfxsG,EAAKtI,KAAK,CACR,cACA,gBACA,cACA,sBACA,oBACA,gBACA,aACA,aACA,iBACA,mBAGFsI,EAAKgpG,OAAQ,EACbhpG,EAAKysG,cAAgB,KACrBzsG,EAAK0sG,cAAgB,KACrB1sG,EAAK2sG,YAAc,KACnB3sG,EAAK4sG,sBAAwB,KA/CZ,CAgDlB,6RAnGC,MAAO,CACLjN,KAAM7hG,KAAAA,OACN4D,SAAU5D,KAAAA,IACVg+F,MAAOh+F,KAAAA,OACPpV,KAAMoV,KAAAA,OACNk+F,OAAQl+F,KAAAA,OACR+vB,OAAQ/vB,KAAAA,OACRkhG,UAAWlhG,KAAAA,KACX2lD,OAAQ3lD,KAAAA,KACRiiG,UAAWjiG,KAAAA,OACX0lD,gBAAiB1lD,KAAAA,OACjBkiG,YAAaliG,KAAAA,OACbmiG,WAAYniG,KAAAA,OACZ+uG,SAAU/uG,KAAAA,KACVgvG,MAAOhvG,KAAAA,OACPiE,UAAWjE,KAAAA,OACXolB,GAAIplB,KAAAA,OACJ4pG,KAAM5pG,KAAAA,KACNmuG,UAAWnuG,KAAAA,OACXivG,YAAajvG,KAAAA,OACbouG,UAAWpuG,KAAAA,OACXuuB,MAAOvuB,KAAAA,OACPgsG,SAAUhsG,KAAAA,OACVw8F,UAAWx8F,KAAAA,KACXkvG,eAAgBlvG,KAAAA,OAChBihG,WAAYjhG,KAAAA,IACZmvG,UAAWnvG,KAAAA,KACXovG,UAAWpvG,KAAAA,KACXqvG,iBAAkBrvG,KAAAA,KAClBwuG,QAASxuG,KAAAA,KACTsvG,WAAYtvG,KAAAA,KACZ0rG,WAAY1rG,KAAAA,KACZm3D,QAASn3D,KAAAA,OACTqsG,SAAUrsG,KAAAA,KACVusG,qBAAsBvsG,KAAAA,OACtBwsG,wBAAyBxsG,KAAAA,OACzBuvG,UAAWvvG,KAAAA,KAEd,sCAkEIwvG,GAAa,WAChBA,EAAYjnH,SAAQ,SAAAoR,GAClBg7D,EAAKh7D,GAAUg7D,EAAKh7D,GAAQC,KAAK+6D,EAClC,GACF,6CAEmB,MACe3uE,KAAKyJ,MAApBi8G,GADA,EACVqD,SADU,EACArD,YAElB1lH,KAAKolH,eACLplH,KAAKylH,iBAAiBC,GACtB1lH,KAAKypH,cACN,gDAkBCzpH,KAAKklH,OAAQ,EAEbllH,KAAK0pH,aAEL1pH,KAAKmlH,iBACLnlH,KAAK2pH,qBAAqB3pH,KAAK4f,MAAMwgB,eACrCpgC,KAAK4lH,oBACN,wCAGc,IACLgE,EAAe5pH,KAAf4pH,WACR,GAAKA,EAAL,CAKA,IADA,IAKIC,EALA5yF,EAAa2yF,EAAW3yF,WACrBA,EAAWA,YAChBA,EAAaA,EAAWA,WAK1B,OAAQA,EAAW9c,YAAYhhB,MAC7B,IAAK,WACL,IAAK,eACL,UAAKiR,EACHy/G,EAAU5yF,EAAWzkB,KACrB,MAEF,QACEq3G,EAAU5yF,EAKd,IAAK4yF,EAAQC,cAAc,6BAA8B,CACvD,IAAMz/G,EAAQ/G,SAASC,cAAc,SACrC8G,EAAM0nB,4+CACN1nB,EAAMyI,aAAa,qBAAsB,QAEzC+2G,EAAQ52G,YAAY5I,EACrB,CA5BA,CA6BF,0CASC,SAFiBrK,KAAK4f,MAAdihD,OAEI7gE,KAAK4pH,cAEV5pH,KAAK4pH,WAAW/9B,UAEf7rF,KAAK4pH,WAAWG,kBAClB/pH,KAAK4pH,WAAW/9B,QAAU7rF,KAAK4pH,WAAWG,kBAG1C/pH,KAAK4pH,WAAW/9B,QAAU7rF,KAAK4pH,WAAWI,oBAGvChqH,KAAK4pH,WAAW/9B,QAAQ,UAGlC,wCAKczsD,GACb,IACIgmC,EADA0xC,EAAc,GAElB,GAAK13E,EAEE,CACL,IAAM6qF,EAAU7qF,EAAGzjC,QAAQ,MAAO,QAAQA,QAAQ,KAAM,OACxDypE,EAAW,wBAAH,OAA2B6kD,EAA3B,KACT,MAJC7kD,EAAW,6BAcb,OAPAk2C,GAAgBh4G,SAASmP,qBAAqB,MAC3C3Q,QAAO,SAAAJ,GAAO,OAAIA,EAAQ0mE,UAAZ,IACd7lE,SAAQ,SAAAb,GACPo1G,EAAcA,EAAYr1G,OACxB65G,GAAgB55G,EAAQ0mE,WAAWta,iBAAiBsX,IAEvD,IACI0xC,EAAYr1G,OACjB65G,GAAgBh4G,SAASwqD,iBAAiBsX,IAE7C,wCAMc,aAC6BplE,KAAKyJ,MAAvC21B,EADK,EACLA,GAAI8pF,EADC,EACDA,eAAgB1S,EADf,EACeA,UACtBM,EAAc92G,KAAK42G,eAAex3E,GAExC03E,EAAYv0G,SAAQ,SAAAhB,GACyB,OAAvCA,EAAOqoE,aAAa,gBACtBroE,EAAOuR,aAAa,cAAe,SAErC08D,EAAK06C,oBAAoB3oH,GACrBiuE,EAAK8nC,cAAc/1G,IACrBiuE,EAAK22C,qBAAqB5kH,EAE7B,IAEGvB,KAAKomH,aACPpmH,KAAKsmH,iBAAiBxP,GAEtBA,EAAYv0G,SAAQ,SAAAhB,GAClB,IAAM4oH,EAAgB36C,EAAKgnC,UAAUj1G,GAC/B22G,EAAS1oC,EAAKgoC,UAAUj2G,GAC1BiuE,EAAK8nC,cAAc/1G,GACrBiuE,EAAKu2C,mBAAmBxkH,IAI1BA,EAAOqC,iBAAiB,aAAc4rE,EAAKqnC,YAAasT,GACxD5oH,EAAOqC,iBAAiB,QAAS4rE,EAAKqnC,YAAasT,GACpC,UAAXjS,GACF32G,EAAOqC,iBACL,YACA4rE,EAAKu3C,cACLoD,GAGJ5oH,EAAOqC,iBAAiB,aAAc4rE,EAAKknC,YAAayT,GACxD5oH,EAAOqC,iBAAiB,OAAQ4rE,EAAKknC,YAAayT,GACnD,IAICjB,IACF7lH,OAAO60B,oBAAoBgxF,EAAgBlpH,KAAK02G,aAChDrzG,OAAOO,iBAAiBslH,EAAgBlpH,KAAK02G,YAAaF,IAI5Dx2G,KAAKknH,oBACN,0CAKgB,aACgBlnH,KAAKyJ,MAA5B21B,EADO,EACPA,GAAI8pF,EADG,EACHA,eACRlpH,KAAKomH,aACPpmH,KAAK2mH,qBAEe3mH,KAAK42G,eAAex3E,GAC5B78B,SAAQ,SAAAhB,GAClB6oH,EAAKF,oBAAoB3oH,GACrB6oH,EAAK9S,cAAc/1G,IAAS6oH,EAAKjE,qBAAqB5kH,EAC3D,IAGC2nH,GACF7lH,OAAO60B,oBAAoBgxF,EAAgBlpH,KAAK02G,aAClD12G,KAAKgoH,sBACN,6CAOmBzmH,GAClB,IAAM4oH,EAAgBnqH,KAAKw2G,UAAUj1G,GACrCA,EAAO22B,oBAAoB,aAAcl4B,KAAK62G,YAAasT,GAC3D5oH,EAAO22B,oBAAoB,YAAal4B,KAAK+mH,cAAeoD,GAC5D5oH,EAAO22B,oBAAoB,aAAcl4B,KAAK02G,YAAayT,EAC5D,6CAEmB,IAId/tG,EAJc,EACepc,KAAKyJ,MAA9BwxG,EADU,EACVA,WAAYr9F,EADF,EACEA,SAYpB,OARIq9F,IAEA7+F,EADEzf,MAAM0E,QAAQ45G,GACNA,EAAW,IAAMA,EAAW,GAAGj7G,KAAK4f,MAAM6oG,eAE1CxN,EAAWj7G,KAAK4f,MAAM6oG,gBAI7BzN,GACLh7G,KAAK4f,MAAM6oG,cACX7qG,EACAxB,EACApc,KAAK4f,MAAM8oG,YAEd,oCAEU2B,GACT,MAC0B,kBAAhBA,GAA4C,KAAhBA,GACpB,OAAhBA,CAEH,qCAKW/jH,EAAGgkH,GACb,GAAKtqH,KAAK4pH,WAAV,CAIA,GAAIU,EAIF,IAFoBtqH,KAAK42G,eAAe52G,KAAKyJ,MAAM21B,IACnBvhB,MAAK,SAAAioG,GAAG,OAAIA,IAAQx/G,EAAE85B,aAAd,IACtB,OATO,MAaOpgC,KAAKyJ,MAA/ByxG,EAbmB,EAanBA,UAAWD,EAbQ,EAaRA,WACbwN,EAAgBniH,EAAE85B,cAAcwpC,aAAa,YAC7C8+C,EACJpiH,EAAE85B,cAAcwpC,aAAa,mBAAqBsxC,IAAa,EAG3DqP,EAAgBjkH,aAAajD,OAAOmnH,YAAcF,EAGpDhB,GAAa,EACbhjH,EAAE85B,cAAcwpC,aAAa,oBAC/B0/C,EAAkE,SAArDhjH,EAAE85B,cAAcwpC,aAAa,oBACR,MAAzB5pE,KAAKyJ,MAAM6/G,aACpBA,EAAatpH,KAAKyJ,MAAM6/G,YAItBhjH,GAAKA,EAAE85B,eAAiB95B,EAAE85B,cAActtB,cAC1CxM,EAAE85B,cAActtB,aAAa,mBAAoB9S,KAAK4f,MAAMi8F,MAI9D,IAAM5D,EACJ3xG,EAAE85B,cAAcwpC,aAAa,eAAiB5pE,KAAKyJ,MAAMuuG,OAAS,MAC9DE,EACHqS,EAAiB,QAAYvqH,KAAKw3G,UAAUlxG,EAAE85B,eAC3C2J,EACJzjC,EAAE85B,cAAcwpC,aAAa,gBAAkB5pE,KAAKyJ,MAAMsgC,QAAU,CAAC,EACjEjyC,EAASigH,GACbzxG,EACAA,EAAE85B,cACFpgC,KAAK4pH,WACL3R,EACAA,EACAC,EACAnuE,GAEEjyC,EAAOynE,UAAYv/D,KAAKyJ,MAAM4/G,mBAChCvxH,EAAOynE,SAAWv/D,KAAKyJ,MAAM4/G,iBAC3BvxH,EAAOynE,SACPj5D,EACAA,EAAE85B,cACFpgC,KAAK4pH,WACL3R,EACAA,EACAC,EACAnuE,IAIJ,IAAMiuE,EAAQlgH,EAAOwiH,WAAaxiH,EAAO0iH,SAASxC,MAAQC,EAG1Dj4G,KAAK0pH,aAEL,IAAMnoH,EAAS+E,EAAE85B,cAEXqqF,EAAczqH,KAAK4f,MAAMihD,KAC3Bt/D,EAAOqoE,aAAa,sBAAwB5pE,KAAKyJ,MAAMw/G,YACvD,EAEE9zG,EAAOnV,KAEP0qH,EAAc,WAClBv1G,EAAKqK,SACH,CACEipG,cAAeA,EACfC,YAAaA,EACbzQ,aAAcA,EACdD,MAAOA,EACPpzG,KAAMrD,EAAOqoE,aAAa,cAAgBz0D,EAAK1L,MAAM7E,MAAQ,OAC7Dk3G,aAAc,CACZ9oG,KACEzR,EAAOqoE,aAAa,oBACpBz0D,EAAK1L,MAAMwyG,WACX,KACFr8C,WACEr+D,EAAOqoE,aAAa,0BACpBz0D,EAAK1L,MAAMi2D,iBACX,KACFC,OACEp+D,EAAOqoE,aAAa,sBACpBz0D,EAAK1L,MAAMyyG,aACX,KACFR,MACEn6G,EAAOqoE,aAAa,qBACpBz0D,EAAK1L,MAAM0yG,YACX,MAEJjE,OAAQA,EACRnuE,OAAQA,EACR65E,MACGriH,EAAOqoE,aAAa,aACoB,SAArCroE,EAAOqoE,aAAa,aACpBz0D,EAAK1L,MAAMm6G,QAAS,EAC1BwE,UACE7mH,EAAOqoE,aAAa,oBAAsBz0D,EAAK1L,MAAM2+G,WAAa,EACpED,UACE5mH,EAAOqoE,aAAa,oBAAsBz0D,EAAK1L,MAAM0+G,WAAa,EACpEc,YACE1nH,EAAOqoE,aAAa,sBACpBz0D,EAAK1L,MAAMw/G,aACX,EACFtpD,QACGp+D,EAAOqoE,aAAa,eACsB,SAAvCroE,EAAOqoE,aAAa,eACpBz0D,EAAK1L,MAAMk2D,UAAW,EAC5BuoD,WACE3mH,EAAOqoE,aAAa,eACpBz0D,EAAK1L,MAAL,OACA0L,EAAK1L,MAAMwU,WACX,GACFuqG,SACGjnH,EAAOqoE,aAAa,oBAC2B,SAA5CroE,EAAOqoE,aAAa,oBACpBz0D,EAAK1L,MAAM++G,WAAY,EAC7BpoF,cAAe7+B,IAEjB,WACM+nH,GACFn0G,EAAKw1G,kBAAkBx1G,EAAKyK,MAAMwgB,eAGpCjrB,EAAK4xG,cAAczgH,GAEf20G,GAAct+G,MAAM0E,QAAQ45G,KAC9B9lG,EAAK2zG,sBAAwB8B,aAAY,WACvC,GAAIz1G,EAAK+vG,MAAO,KACNjK,EAAe9lG,EAAK1L,MAApBwxG,WACFoP,EAAcrP,GAClByN,EACA,GACAxN,EAAW,KACXyN,GAEIH,EAAapzG,EAAKozG,WAAW8B,GACnCl1G,EAAKqK,SAAS,CAAE+oG,WAAAA,IAChBpzG,EAAK01G,gBACN,CACF,GAAE5P,EAAW,IAEjB,GAEJ,EAGGwP,EACFzqH,KAAK6oH,YAAchpH,WAAW6qH,EAAaD,GAE3CC,GA/JD,CAiKF,uCAKapkH,GAAG,aACgBtG,KAAK4f,MAA5BwoG,EADO,EACPA,UAAWI,EADJ,EACIA,QACXW,EAAcnpH,KAAKyJ,MAAnB0/G,UACFkB,EAAcrqH,KAAK8qH,oBACnBC,EAAczkH,EAAE85B,eAAiB95B,EAAE/E,OAGzC,IAAIvB,KAAKgrH,mBAKLhrH,KAAKuoH,WAAW8B,KAAgB7B,EAApC,CAIA,IAAMyC,EAAajrH,KAAK4f,MAAMihD,KAAiC,EAA1B1vD,SAASi3G,EAAW,IAEnDsC,EAAc,WAClB,GACG/tH,MAAM0E,QAAQgpH,IAAgBA,EAAYzyH,OAAS,GACpDyyH,EACA,CACA,IAAMa,GAAeC,EAAKvrG,MAAMihD,KAChCsqD,EAAK3rG,SACH,CACE6oG,aAAc/hH,EACd85B,cAAe2qF,EACflqD,MAAM,IAER,WACEsqD,EAAKN,iBACDK,GAAe/B,GACjBA,EAAU7iH,EAEb,GAEJ,CACF,EAEDlG,aAAaJ,KAAK2oH,eACdsC,EACFjrH,KAAK2oH,cAAgB9oH,WAAW6qH,EAAaO,GAE7CP,GA9BD,CAgCF,gDAMkB1qH,KAAK4f,MAAdihD,MAEI7gE,KAAK4pH,YACf5pH,KAAK4pH,WAAWhmH,iBAAiB,aAAc5D,KAAK02G,YAEvD,wDAGkB12G,KAAK4f,MAAdihD,MAEI7gE,KAAK4pH,YACf5pH,KAAK4pH,WAAW1xF,oBAAoB,aAAcl4B,KAAK02G,YAE1D,qCAKWpwG,EAAGg/G,GAA0C,WAA/BrkH,EAA+B,uDAArB,CAAEmqH,UAAU,GACtC5C,EAAYxoH,KAAK4f,MAAjB4oG,QAEFL,EADelnH,EAAbmqH,SACqB,EAAIprH,KAAK4f,MAAMuoG,UACpCiB,EAAcppH,KAAKyJ,MAAnB2/G,UACFiB,EAAcrqH,KAAK8qH,oBACzB,GAAK9qH,KAAKklH,QACNllH,KAAKuoH,WAAW8B,KAAgB7B,EAApC,CACA,GAAIlD,EAIF,IAFoBtlH,KAAK42G,eAAe52G,KAAKyJ,MAAM21B,IACnBvhB,MAAK,SAAAioG,GAAG,OAAIA,IAAQx/G,EAAE85B,aAAd,MACnBpgC,KAAK4f,MAAMihD,KAAM,OAIpCv6D,GAAKA,EAAE85B,eAAiB95B,EAAE85B,cAAc7S,iBAC1CjnB,EAAE85B,cAAc7S,gBAAgB,oBAGlC,IAAMy2C,EAAa,WACjB,IAAMqnD,EAAYC,EAAK1rG,MAAMihD,KAEzByqD,EAAKN,iBACPM,EAAKC,wBAIPD,EAAKE,+BAELF,EAAK9rG,SAAS,CAAEqhD,MAAM,IAAS,WAC7ByqD,EAAK3B,qBAAqB2B,EAAK1rG,MAAMwgB,eACjCirF,GAAajC,GACfA,EAAU9iH,EAEb,IACF,EAEDtG,KAAK0pH,aACDvB,EACFnoH,KAAK4oH,cAAgB/oH,WAAWmkE,EAAY7yD,SAASg3G,EAAW,KAEhEnkD,GAnCiD,CAqCpD,6CAKmBz7B,EAAO+8E,GACzBtlH,KAAK02G,YAAYnuE,EAAO+8E,EAAW,CAAE8F,UAAU,GAChD,2CAMiBhrF,GAChB,IAAM+pF,EAAgBnqH,KAAKw2G,UAAUp2E,GACrC/8B,OAAOO,iBAAiB,SAAU5D,KAAKyrH,oBAAqBtB,EAC7D,8CAEoB/pF,GACnB,IAAM+pF,EAAgBnqH,KAAKw2G,UAAUp2E,GACrC/8B,OAAO60B,oBACL,SACAl4B,KAAKyrH,oBACLtB,EAEH,0CAGgB,aAQXnqH,KAAK4f,MANPyoG,EAFa,EAEbA,aACAjoF,EAHa,EAGbA,cACA43E,EAJa,EAIbA,MACAC,EALa,EAKbA,aACAC,EANa,EAMbA,OACAnuE,EAPa,EAObA,OAEItwB,EAAOzZ,KAAK4pH,WACZ9xH,EAASigH,GACbsQ,EACAjoF,EACA3mB,EACAu+F,EACAC,EACAC,EACAnuE,GAeF,GAbIjyC,EAAOynE,UAAYv/D,KAAKyJ,MAAM4/G,mBAChCvxH,EAAOynE,SAAWv/D,KAAKyJ,MAAM4/G,iBAC3BvxH,EAAOynE,SACP8oD,EACAjoF,EACA3mB,EACAu+F,EACAC,EACAC,EACAnuE,IAIAjyC,EAAOwiH,WAET,OAAOt6G,KAAKwf,SAAS1nB,EAAO0iH,UAAU,WACpCkR,EAAKb,gBACN,IAIHpxG,EAAKpP,MAAM2hC,KAAOl0C,EAAOynE,SAASvzB,KAAO,KACzCvyB,EAAKpP,MAAM6hC,IAAMp0C,EAAOynE,SAASrzB,IAAM,IACxC,sCAMC9rC,aAAaJ,KAAK2oH,eAClBvoH,aAAaJ,KAAK4oH,eAClBxoH,aAAaJ,KAAK6oH,aAClB8C,cAAc3rH,KAAK8oH,sBACpB,2CAEiB,WAChB,OAAO5tG,QACL3c,OAAOqD,KAAK5B,KAAK4f,MAAMk8F,cAAc0G,MACnC,SAAAh7E,GAAK,MAAc,WAAVA,GAAsBokF,EAAKhsG,MAAMk8F,aAAat0E,EAAlD,KAEJxnC,KAAK4f,MAAM+/C,QAAU3/D,KAAK4f,MAAMk8F,aAAX,OAE3B,kCAEQ,aACgD97G,KAAK4f,MAApDsoG,EADD,EACCA,WAAYtE,EADb,EACaA,KAAM0E,EADnB,EACmBA,UAAWE,EAD9B,EAC8BA,QAAS3M,EADvC,EACuCA,KACxCz/F,EAAUpc,KAAK8qH,oBACfvC,EAAavoH,KAAKuoH,WAAWnsG,GAC7B/R,EAAQuxG,GACZ57G,KAAK4f,MAAMi8F,KACX77G,KAAK4f,MAAMk8F,aACX97G,KAAK4f,MAAMhb,KACX5E,KAAK4f,MAAM+/C,QAGPksD,EACJ,uCACI7rH,KAAK4f,MAAMi8F,QACd77G,KAAK4f,MAAMihD,MAAS2nD,GAAYD,EAAuB,GAAV,UAC7CvoH,KAAK4f,MAAM+/C,OAAS,UAAY,IAHjC,iBAIU3/D,KAAK4f,MAAMo4F,OAJrB,gBAKSh4G,KAAK8rH,kBAAoB,SAAW9rH,KAAK4f,MAAMhb,OACvD5E,KAAKyJ,MAAMw/G,YAAc,eAAiB,KAC1CjpH,KAAKyJ,MAAM8/G,UAAY,eAAiB,IAEvCt3C,EAAUjyE,KAAKyJ,MAAM0nE,QAErB4zC,EAAagH,kBAAkBv/G,QAAQylE,GAAW,IACpDA,EAAU8yC,EAAa1gH,aAAa8sE,SAGtC,IAAM66C,EAAmB,CAACH,EAAc3D,GACrCpmH,OAAOoZ,SACP7d,KAAK,KAER,GAAIumH,EAAM,CACR,IAAMqI,EAAc,GAAH,OAAM7vG,EAAN,uCAA4C/R,EAA5C,YAEjB,OACE6V,EAAAA,cAAC+xD,EAAD,IACEh0D,UAAS,UAAK+tG,GACd5sF,GAAIp/B,KAAKyJ,MAAM21B,IAAMy8E,EACrB99F,IAAK,YAAG,OAAKmuG,EAAKtC,WAAa7rG,CAAvB,GACJuqG,EAJN,CAKE,UAAQ,UACR32F,wBAAyB,CAAEue,OAAQ+7E,KAGxC,CACC,OACE/rG,EAAAA,cAAC+xD,EAAD,IACEh0D,UAAS,UAAK+tG,GACd5sF,GAAIp/B,KAAKyJ,MAAM21B,IAAMy8E,GACjByM,EAHN,CAIEvqG,IAAK,YAAG,OAAKmuG,EAAKtC,WAAa7rG,CAAvB,EACR,UAAQ,YAERmC,EAAAA,cAAAA,QAAAA,CACEyR,wBAAyB,CAAEue,OAAQ7lC,GACnC,cAAY,SAEb+R,EAIR,oDArpB+BqB,EAAW09C,GAAW,IAC5CmtD,EAAcntD,EAAdmtD,UACF6D,EAAe/Q,GAAU39F,GAI/B,OAHkBlf,OAAOqD,KAAKuqH,GAActuG,MAAK,SAAApU,GAC/C,OAAO0iH,EAAa1iH,KAAW6+G,EAAU7+G,EAC1C,IAIM,MACF0xD,EADL,CAEEmtD,UAAW6D,IAJJ,IAMV,QArIwBjsG,EAAAA,WAAe9B,GAAAA,GAAAA,eA0ClB,CACpB2qG,UAAU,EACVrD,YAAY,EACZv0C,QAAS,MACTo4C,WAAW,IAJS,0BAOK,CAAC,MAAO,SAAR,oBAEN,gBApDtBtB,GAoDsB,6CDtDhB,mBObItqG,GAEAyuG,GACAC,GAEAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GPEEC,GAAoB,wCOApBntD,GAAkB,UAGlBotD,GAAqB,QACrBC,GAA6B,QAG7BC,GAAe,QACfC,GAAmB,QACnBC,GAAe,QACfC,GAAmB,QAMnBC,GAAsB,OAItBC,GAA8C,IAE5C,SAASC,KAEvB,IAAAC,GAA4CpvE,EAAAA,EAAAA,YAAWqvE,KAA/CC,EAAWF,EAAXE,YAAaC,EAAkBH,EAAlBG,oBAErBtvE,EAAAA,EAAAA,YAAU,WACT,KAGDA,EAAAA,EAAAA,YAAU,WAIT,OAHAuvE,IACAC,IACAvqH,OAAOO,iBAAiB,SAAUgqH,GAC3B,WACNvqH,OAAO60B,oBAAoB,SAAU01F,EACtC,CAED,GAAG,IAGH,IAAMC,EAAiCxqH,OAAO41G,WAAaoU,GAW3D,SAASO,IACRD,IACA,IAAMG,EAAW,IAgFlB,SAAwBA,GAAW,IAADC,EAAAC,EACjCF,EAAShxH,KAAK,CAAC,SAAUytB,GAAAA,KACzBujG,EAAShxH,KAAK,CAAC,cAAesO,GAAAA,KAC9B0iH,EAAShxH,KAAK,CAAC,iBAAkBuO,GAAAA,KACjCyiH,EAAShxH,KAAK,CAAC,WAAYutB,GAAAA,KAC3ByjG,EAAShxH,KAAK,CAAC,WAAYqtB,GAAAA,KAC3B2jG,EAAShxH,KAAK,CAAC,YAAaitB,GAAAA,KAC5B+jG,EAAShxH,KAAK,CAAC,WAAYinB,GAAAA,KAC3B+pG,EAAShxH,KAAK,CAAC,WAAYknB,GAAAA,KAC3B8pG,EAAShxH,KAAK,CAAC,SAAU4vH,KACzBoB,EAAShxH,KAAK,CAAC,cAAe6vH,KAC9BmB,EAAShxH,KAAK,CAAC,WAAYuvH,KAE3ByB,EAAShxH,KAAK,CAAC,SAAS,KAAD2E,OAAOsC,OAAOoK,MAAK,QAAA1M,OAAOsC,OAAOqK,UACxD0/G,EAAShxH,KAAK,CAAC,QAAQ,KAAD2E,OAAO4B,OAAO41G,WAAU,QAAAx3G,OAAO4B,OAAO81G,eAC5D2U,EAAShxH,KAAK,CAAC,YAAwBuG,OAAO4qH,WAAW,4BAA4BpiC,UACrFiiC,EAAShxH,KAAK,CAAC,aAAcoxH,MAC7BJ,EAAShxH,KAAK,CAAC,iBAA4C,QAA5BixH,EAAEI,WAA0B,IAAAJ,GAAY,QAAZC,EAA1BD,EAA4BttH,kBAAU,IAAAutH,OAAZ,EAA1BA,EAAwCt4F,UAAU,EAAG,KACvF,CAjGC04F,CAAeN,GACfJ,EAAmB,cAAeI,EACnC,CAGA,SAASH,IACR,IACMx/G,EAAQ9K,OAAO41G,WACrBmT,IAAQriG,GAAAA,IAAa/F,GAAAA,KAAa7V,EAFb,IAGrBk+G,GAAWD,KAASjiG,GAAAA,IAAYU,GAAAA,IAAUR,GAAAA,IAC1CqiG,GAAS1oG,GAAAA,KAAwB,WAAXuG,GAAAA,IAAkC,QAAXA,GAAAA,IAC7CoiG,GAAcvhH,GAAAA,GAAY8jB,SAAS,aACnC09F,IAAgB7iG,GAAAA,GACI1mB,OAAO81G,YAC3BmT,GAsDsC,SAA/B6B,KAAuE,SAA9BE,MAAyC3B,GArDzFH,GAAe2B,IACf1B,GAA0B2B,IAC1B1B,GAAyB4B,GAC1B,CAwBA,SAASF,IACR,IAAMG,EAAOhrH,SAASktB,KAQtB,OAPa89F,EAAKC,kBACfD,EAAKE,kBACLF,EAAKG,wBACJH,EAAKG,wBACLH,EAAKI,qBACJJ,EAAKI,qBACL,MAEN,CAEA,SAASL,IACR,IAAMC,EAAOhrH,SAQb,OAPagrH,EAAKK,eACfL,EAAKM,eACLN,EAAKO,qBACJP,EAAKO,qBACLP,EAAKQ,kBACJR,EAAKQ,kBACL,MAEN,CAQA,SAASZ,IACR,IAAMa,EAAgB1rH,OAAO4qH,WAAW,8BAA8BpiC,QAEhEmjC,EAAc3rH,OAAO81G,cAAgBp1G,OAAOqK,OAClD,OAAO2gH,GAAMC,CACd,CA1FAC,GAA6B,gBAAC,GAAAxtH,OAAMosH,EAA8B,MAClEoB,GAAqC,wBAAIpB,EACzCqB,GAAsC,wBAAI7rH,OAAO41G,YAEjD76D,EAAAA,EAAAA,YAAU,WAETzgC,GAAQyuG,GAAO8C,GAAeD,QACE7kH,IAAhCqjH,EAAY0B,iBAAiC1B,EAAY0B,gBAAgBxxG,GAC1E,GAAG,CAAC8vG,GAyGL,CAQO,SAAS2B,GAAQ/kH,EAAOglH,GAC9B,QAAcjlH,IAAVuT,GAAqB,OAAOtT,EAEhC,IAAMmH,EAAWu8C,KAAK4yC,MAAM5yC,KAAKC,UAAU3jD,IAErCilH,EAAkBD,EADF,IAGlBE,EAAiB,QAGHnlH,IAAdilH,IAKHE,EAHgBhxH,OAAOqD,KAAK+b,IACM7b,QAAO,SAAC2M,GAAI,OAAKA,EAAK+rF,WAAW80B,EAAgB,IAEhD/yH,KAAI,SAACkS,GAAI,OAAKA,EAAK3S,MAXjC,KAWsD,EAAE,KAI9E,IAAM0zH,EAAa,CAAC,EACpBD,EAAehtH,SAAQ,SAACC,GACvBgtH,EAAWhtH,GAAOmb,GAAM2xG,EAAkB9sH,EAC3C,IAGA,IAAMitH,EAAc1wG,EAAAA,EAAA,GAAQpB,IAAU6xG,GAQtC,OALAjxH,OAAOqD,KAAK4P,GAAUjP,SAAQ,SAACC,GAC9B,IAAMktH,EAASD,EAAejtH,QACf4H,IAAXslH,IAAsBl+G,EAAShP,GAAOktH,EAC3C,IAEOl+G,CACR,CAEA,IAEa09G,GAAe,CAC3BS,qBAAsB,QACtBC,mBAAoB,QACpBC,0BAA2B,QAC3BC,aAAc,QACdC,oBAAqB,UACrBC,iBAAkB,OAClBC,oBAAqB,OACrBC,gBAAiB,OACjBC,gBAAiB,OACjBC,mBAAoB,IACpBC,sBAAuB,GACvBC,cAAe,OACfC,gBAAiB,OACjBC,wBAAyB,IACzBC,yBAA0B,MAC1BC,mBAAoB,OACpBC,mBAAoB,YACpBC,oBAAqB,OACrBC,wBAAyB,OACzBC,oBAAqB,IACrBC,yBAA0B,cAC1BC,6BAA8B,MAC9BC,8BAA+B,MAC/BC,wBAAyB,IACzBC,gCAAiC,IACjCC,YAAa,OACbC,YAAa,OACbC,YAAa,OACbC,YAAa,OACbC,YAAa,OACbC,cAAe,SACfC,cAAe,SACfC,cAAe,SACfC,cAAe,OACfC,eAAgB,MAChBC,uBAAwB,OACxBC,8BAA+B,QAC/BC,sCAAuC,GACvCC,iBAAkB,IAClBC,iCAAkC,gBAClCC,yBAA0B,cAC1BC,4BAA6B,GAC7BC,6BAA8B,aAC9BC,wBAAyB,eACzBC,mBAAoB,MACpBC,mBAAoB,YACpBC,kBAAmB,OACnBC,yCAA0C,OAC1CC,gCAAiC,OACjCC,+BAAgC,OAChCC,8BAA+B,QAC/BC,sCAAuC,IACvCC,uBAAwB,IACxBC,6BAA8B,OAC9BC,2BAA4B,aAC5BC,mCAAoC,MACpCC,iCAAkC,QAClCC,iCAAkC,gBAClCC,yBAA0B,UAC1BC,yBAA0B,OAC1BC,uBAAwB,YACxBC,0BAA2B,GAC3BC,gBAAiB,QACjBC,eAAgB,QAChBC,eAAgB,SAGX1E,GAAc,CACnBU,qBAAsB,QACtBC,mBAAoB,QACpBC,0BAA2B,QAC3BC,aAAc,QACdC,oBAAqB,QACrBC,iBAAkB,OAClBC,oBAAqB,OACrBC,gBAAiB,OACjBC,gBAAiB,OACjBC,mBAAoB,gBACpBC,sBAAuB,GACvBC,cAAe,OACfC,gBAAgB,MAChBC,wBAAyB,IACzBC,yBAA0B,cAC1BC,mBAAoB,OACpBC,mBAAoB,cACpBC,oBAAqB,OACrBC,wBAAyB,MACzBC,oBAAqB,IACrBC,yBAA0B,cAC1BC,6BAA8B,MAC9BC,8BAA+B,SAC/BC,wBAAyB,YACzBC,gCAAiC,UACjCC,YAAa,OACbC,YAAa,OACbC,YAAa,OACbC,YAAa,OACbC,YAAa,OACbC,cAAe,SACfC,cAAe,SACfC,cAAe,SACfC,cAAe,OACfC,eAAgB,IAChBC,uBAAwB,MACxBC,8BAA+B,QAC/BC,sCAAuC,MACvCC,iBAAkB,eAClBC,iCAAkC,SAClCC,yBAA0B,IAC1BE,6BAA8B,UAC9BD,4BAA6B,IAC7BE,wBAAyB,mBACzBC,mBAAoB,MACpBC,mBAAoB,UACpBC,kBAAmB,OACnBC,yCAA0C,SAC1CC,gCAAiC,OACjCC,+BAAgC,YAChCC,8BAA8B,GAADpxH,OAAK4rH,GAA2C,MAC7EyF,sCAAuCzF,GACvC0F,uBAAuB,GAADtxH,QA3HW,GA2HoB,MACrDuxH,6BAA8B,OAC9BC,2BAA4B,cAC5BC,mCAAoC,SACpCC,iCAAkC,WAClCC,iCAAkC,SAClCC,yBAA0B,UAC1BC,yBAA0B,OAC1BC,uBAAwB,UACxBC,0BAA2B,MAC3BC,gBAAiB,QACjBC,eAAgB,QAChBC,eAAgB,SAGJC,GAAK7f,GAAO/sG,EAAC6sH,KAAAA,GAAAh+B,EAAA,qJAIZ,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMyzG,WAAW,IAKnC0C,GAAK/f,GAAO6f,GAAP7f,CAAUggB,KAAAA,GAAAl+B,EAAA,6BACd,SAACpsF,GAAK,OAAKA,EAAMkU,MAAM0zG,WAAW,IAGnC2C,GAAKjgB,GAAO+f,GAAP/f,CAAUkgB,KAAAA,GAAAp+B,EAAA,wDACd,SAACpsF,GAAK,OAAKA,EAAMkU,MAAM2zG,WAAW,IAInC4C,GAAKngB,GAAOigB,GAAPjgB,CAAUogB,KAAAA,GAAAt+B,EAAA,kGAEd,SAACpsF,GAAK,OAAKA,EAAMkU,MAAM4zG,WAAW,IAChC,SAAC9nH,GAAK,OAAKA,EAAMkU,MAAMi0G,aAAa,IAGvCwC,GAAKrgB,GAAOmgB,GAAPngB,CAAUsgB,KAAAA,GAAAx+B,EAAA,6BACd,SAACpsF,GAAK,OAAKA,EAAMkU,MAAM6zG,WAAW,0YC9ThC,SAAA8C,GACdC,GAEA,YAFAA,IAAAA,IAAAA,EAA4B,IAErB,IAAIC,gBACO,kBAATD,GACP53H,MAAM0E,QAAQkzH,IACdA,aAAgBC,gBACZD,EACAh2H,OAAOqD,KAAK2yH,GAAMvxH,QAAO,SAACqlF,EAAM7lF,GAC9B,IAAI/D,EAAQ81H,EAAK/xH,GACjB,OAAO6lF,EAAK5mF,OACV9E,MAAM0E,QAAQ5C,GAASA,EAAMlC,KAAK4K,SAAAA,GAAC,MAAK,CAAC3E,EAAK2E,EAAE,IAAI,CAAC,CAAC3E,EAAK/D,OAE5D,IAEX,CA4IgD,IAAIutB,IAAI,CACtD,oCACA,sBACA,6ICaF,IACE3oB,OAAOoxH,qBAHT,GAIC,CAAC,MAAOnuH,KACP,CAgJiE,IAAI62B,IAkCvE,IACMu3F,GAAsBx0G,EAAsB,gBAE5By0G,GAAmB,UAEvBz0G,EAAY,MA4VxB,SAAU00G,GAAc,GAKT,IxIzanB3zH,EwIqaAi4F,EAImB7zE,EAJnB6zE,SACAt7E,EAGmByH,EAHnBzH,SACA6iF,EAEmBp7E,EAFnBo7E,OACAp9F,EACmBgiB,EADnBhiB,OAEIwxH,EAAa30G,EAAAA,SACS,MAAtB20G,EAAWv7F,UACbu7F,EAAWv7F,cxI5abr4B,KAAAA,EwI4a4C,CAAEoC,OAAAA,EAAQu0F,UAAU,MxI5ahE32F,EAAiC,CAAC,GAoB3Bq2F,GAlBP,SACEj0F,EACAw0F,GAEA,MAAiCx0F,EAAO0S,SACxC,OAAO6gF,EACL,GACA,CAAEC,SAHU,EAARA,SAGQ9uD,OAHQ,EAANA,OAGM+uD,KAHEA,EAAAA,MAKrBe,EAAcj4E,OAASi4E,EAAcj4E,MAAM+2E,KAAQ,KACnDkB,EAAcj4E,OAASi4E,EAAcj4E,MAAMpd,KAAQ,UAExD,IAEA,SAA2Ba,EAAgBunE,GACzC,MAAqB,kBAAPA,EAAkBA,EAAKytB,EAAWztB,EAClD,GAKE,KACA3pE,KwIuZF,IAAI62F,EAAU+8B,EAAWv7F,QAIvBw7F,EAAAA,EAH0B50G,EAAAA,SAAe,CACzCm7B,OAAQy8C,EAAQz8C,OAChBtlC,SAAU+hF,EAAQ/hF,WAClB++G,GAHGl1G,EAAK,KAAEm1G,EAAY,KAIlBC,GAAuBv0B,GAAU,CAAC,GAAlCu0B,mBACFx1G,EAAWU,EAAAA,aACZs6F,SAAAA,GACCwa,GAAsBN,GAClBA,IAAoB,kBAAMK,EAAava,EAAS,IAChDua,EAAava,EACnB,GACA,CAACua,EAAcC,IAKjB,OAFA90G,EAAAA,iBAAsB,kBAAM43E,EAAQS,OAAO/4E,EAAS,GAAE,CAACs4E,EAASt4E,IAG9DU,EAAAA,cAACukF,GAAM,CACLvL,SAAUA,EACVt7E,SAAUA,EACV7H,SAAU6J,EAAM7J,SAChB8rF,eAAgBjiF,EAAMy7B,OACtBj/C,UAAW07F,EACX2I,OAAQA,GAGd,CAqHA,IAAMx8E,GACc,qBAAX5gB,QACoB,qBAApBA,OAAOC,UAC2B,qBAAlCD,OAAOC,SAASC,cAEnB0xH,GAAqB,gCAKdC,GAAOh1G,EAAAA,YAClB,SAAqB,EAanBnC,GAAG,IAKCo3G,EAhBF9vE,EAUD1/B,EAVC0/B,QACAu7C,EASDj7E,EATCi7E,SACAw0B,EAQDzvG,EARCyvG,eACAz5H,EAODgqB,EAPChqB,QACAikB,EAMD+F,EANC/F,MACAre,EAKDokB,EALCpkB,OACAqpE,EAIDjlD,EAJCilD,GACAyqD,EAGD1vG,EAHC0vG,mBACAC,EAED3vG,EAFC2vG,wBACG/1G,EAAI,SAIH25E,EAAah5E,EAAAA,WAAiBi/E,IAA9BjG,SAIFq8B,GAAa,EAEjB,GAAkB,kBAAP3qD,GAAmBqqD,GAAmB/8H,KAAK0yE,KAEpDuqD,EAAevqD,EAGX3mD,IACF,IACE,IAAIuxG,EAAa,IAAIp8C,IAAI/1E,OAAO0S,SAASw0B,MACrCkrF,EAAY7qD,EAAG4vB,WAAW,MAC1B,IAAIphB,IAAIo8C,EAAWE,SAAW9qD,GAC9B,IAAIwO,IAAIxO,GACRssB,EAAOmC,GAAco8B,EAAU5+B,SAAUqC,GAEzCu8B,EAAUr9B,SAAWo9B,EAAWp9B,QAAkB,MAARlB,EAE5CtsB,EAAKssB,EAAOu+B,EAAU1tF,OAAS0tF,EAAU3+B,KAEzCy+B,GAAa,EAEf,MAAOjvH,KAOR,CAKL,IAAIikC,EpI96BD,SACLqgC,EAAM,GAEE,IADNg2B,QAA8C5jC,IAAAA,EAAG,CAAC,EAAC,GAAnD4jC,SAGAnB,MADFjJ,GAAU,GAOV,MAA8Bt2E,EAAAA,WAAiBi/E,IAAzCjG,EAAQ,EAARA,SAAU98F,EAAAA,EAAAA,UAChB,EAAiC4kG,GAAgBp2B,EAAI,CAAEg2B,SAAAA,IAAjD9J,EAAI,EAAJA,KAAMD,EAAQ,EAARA,SAAU9uD,EAAAA,EAAAA,OAElB4tF,EAAiB9+B,EAWrB,MALiB,MAAbqC,IACFy8B,EACe,MAAb9+B,EAAmBqC,EAAWuB,GAAU,CAACvB,EAAUrC,KAGhDz6F,EAAUo7F,WAAW,CAAEX,SAAU8+B,EAAgB5tF,OAAAA,EAAQ+uD,KAAAA,GAClE,CoIo5Be8+B,CAAQhrD,EAAI,CAAEg2B,SAAAA,IAErBi1B,EAoZF,SACJjrD,EAAM,GAeA,iBAAF,CAAC,EAAC,EAbJrpE,EAAM,EAANA,OACSu0H,EAAW,EAApBn6H,QACAikB,EAAK,EAALA,MACAy1G,EAAkB,EAAlBA,mBACAz0B,EAAQ,EAARA,SACA00B,EAAAA,EAAAA,wBAUEj1B,EAAWR,KACX9pF,EAAW2pF,KACXxI,EAAO8J,GAAgBp2B,EAAI,CAAEg2B,SAAAA,IAEjC,OAAO1gF,EAAAA,aACJqoB,SAAAA,GACC,GDj3CU,SACdA,EACAhnC,GAEA,OACmB,IAAjBgnC,EAAMhG,UACJhhC,GAAqB,UAAXA,KAVhB,SAAyBgnC,GACvB,SAAUA,EAAMnG,SAAWmG,EAAMpG,QAAUoG,EAAMtG,SAAWsG,EAAMrG,SACpE,CASK6zF,CAAgBxtF,EAErB,CCw2CUytF,CAAuBztF,EAAOhnC,GAAS,CACzCgnC,EAAM9H,iBAIN,IAAI9kC,OACcyO,IAAhB0rH,EACIA,EACAz9B,EAAWtiF,KAAcsiF,EAAWnB,GAE1CmJ,EAASz1B,EAAI,CACXjvE,QAAAA,EACAikB,MAAAA,EACAy1G,mBAAAA,EACAz0B,SAAAA,EACA00B,wBAAAA,GAEH,IAEH,CACEv/G,EACAsqF,EACAnJ,EACA4+B,EACAl2G,EACAre,EACAqpE,EACAyqD,EACAz0B,EACA00B,GAGN,CA5c0BW,CAAoBrrD,EAAI,CAC5CjvE,QAAAA,EACAikB,MAAAA,EACAre,OAAAA,EACA8zH,mBAAAA,EACAz0B,SAAAA,EACA00B,wBAAAA,IAWF,OAEEp1G,EAAAA,cAAAA,IAAAA,GAAAA,CAAAA,EACMX,EAAI,CACRgrB,KAAM4qF,GAAgB5qF,EACtB8a,QAASkwE,GAAcH,EAAiB/vE,EAd5C,SACE9c,GAEI8c,GAASA,EAAQ9c,GAChBA,EAAMjI,kBACTu1F,EAAgBttF,EAEpB,EAQIxqB,IAAKA,EACLxc,OAAQA,IAGd,IAuPK,IAyFFy+F,GAQAG,GA+FC,SAAU+1B,GACdC,GAUA,IAAIC,EAAyBl2G,EAAAA,OAAao0G,GAAmB6B,IACzDE,EAAwBn2G,EAAAA,QAAa,GAErCnK,EAAW2pF,KACX42B,EAAep2G,EAAAA,SACjB,kBD92CY,SACdq2G,EACAC,GAEA,IAAIF,EAAehC,GAAmBiC,GAiBtC,OAfIC,GAMFA,EAAoBj0H,SAAQ,SAACH,EAAGI,GACzB8zH,EAAaloF,IAAI5rC,IACpBg0H,EAAoBC,OAAOj0H,GAAKD,SAAS9D,SAAAA,GACvC63H,EAAaI,OAAOl0H,EAAK/D,EAC3B,GAEJ,IAGK63H,CACT,CCw1CI,CAKIvgH,EAASgyB,OACTsuF,EAAsB/8F,QAAU,KAAO88F,EAAuB98F,QAC/D,GACH,CAACvjB,EAASgyB,SAGRs4D,EAAWR,KACX82B,EAAkBz2G,EAAAA,aACpB,SAAC02G,EAAUC,GACT,IAAMC,EAAkBxC,GACF,oBAAbsC,EAA0BA,EAASN,GAAgBM,GAE5DP,EAAsB/8F,SAAU,EAChC+mE,EAAS,IAAMy2B,EAAiBD,EAClC,GACA,CAACx2B,EAAUi2B,IAGb,MAAO,CAACA,EAAcK,EACxB,EA/IA,SAAK32B,GACHA,EAAAA,qBAAAA,uBACAA,EAAAA,UAAAA,YACAA,EAAAA,iBAAAA,mBACAA,EAAAA,WAAAA,aACAA,EAAAA,uBAAAA,wBACD,EAND,CAAKA,KAAAA,GAMJ,KAED,SAAKG,GACHA,EAAAA,WAAAA,aACAA,EAAAA,YAAAA,cACAA,EAAAA,qBAAAA,sBACD,CAJD,CAAKA,KAAAA,GAIJ,+BC51CG42B,GAAmB,CACrBhkG,yBAAyB,EACzBE,mBAAmB,EACnBC,kBAAkB,EAClBC,kBAAkB,EAClBC,SAAS,EACTC,cAAc,EACdC,iBAAiB,EACjBC,aAAa,EACbC,SAAS,EACTxmB,MAAM,EACNQ,UAAU,EACVimB,cAAc,EACdhmB,YAAY,EACZimB,cAAc,EACdC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,YAAY,EACZC,aAAa,EACbC,cAAc,EACdC,YAAY,EACZC,eAAe,EACfC,gBAAgB,EAChBC,iBAAiB,EACjBC,YAAY,EACZC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTjnB,OAAO,EACPknB,SAAS,EACTC,SAAS,EACTC,QAAQ,EACRC,QAAQ,EACRC,MAAM,EAENC,aAAa,EACbC,cAAc,EACdC,aAAa,EACbC,iBAAiB,EACjBC,kBAAkB,EAClBC,kBAAkB,EAClBC,eAAe,EACfC,aAAa,GAEA,SAAS2hG,GAAiBlqG,EAAcruB,GAErD,OADqBs4H,GAAiBjqG,IAAkC,kBAAVruB,GAAgC,IAAVA,EAC7DA,EAAQ,KAAOA,CACxC,CCnDe,SAASw4H,GAAU90H,EAAQ+0H,GACxC,OAAO34H,OAAOqD,KAAKO,GAAQa,QAAO,SAAUlL,EAAQ0K,GAElD,OADA1K,EAAO0K,GAAO00H,EAAO/0H,EAAOK,GAAMA,GAC3B1K,CACT,GAAG,CAAC,EACN,CCHe,SAASq/H,GAA2B9sH,GACjD,OAAO4sH,GAAU5sH,GAAO,SAAUvS,EAAQ0K,GACxC,OAAOw0H,GAAiBx0H,EAAK6H,EAAM7H,IAAQ,aAC7C,GACF,CCNA,IAAI40H,GAAkB,mBAElBC,GAAqB,SAA4B1/H,EAAO2/H,EAAIC,GAC9D,OAAQD,GAAM,IAAM,IAAMC,EAAGv/H,aAC/B,EAEWw/H,GAAsB,SAA6B/7H,GAC5D,OAAOA,EAAEE,QAAQy7H,GAAiBC,GACpC,EAiBA,GAf+B,SAAkCI,GAG/D,OAAOl5H,OAAOqD,KAAK61H,GAAez0H,QAAO,SAAUlL,EAAQ0K,GACzD,IAAIk1H,EAAcF,GAAoBh1H,GAOtC,MALI,OAAOtK,KAAKw/H,KACdA,EAAc,IAAIj2H,OAAOi2H,IAG3B5/H,EAAO4/H,GAAeD,EAAcj1H,GAC7B1K,CACT,GAAG,CAAC,EACN,0UCXIsP,GAAI,CAAC,UACLN,GAAI,CAAC,OACLwJ,GAAK,CAAC,MACNqnH,GAAK,CAAC,SAAU,OAChBC,GAAM,CAAC,SAAU,MACjBC,GAAO,CAAC,SAAU,MAAO,MAC7B,IACE3tH,QAAS,CAAC4tH,KAAMC,KAAWC,KAAQl2H,KAAQkL,KAAMirH,KAAWC,KAAYC,KAAUC,KAAU74D,KAAU84D,KAAQvpH,MAC9G7E,UAAW,CACTquH,UAAWV,GACXW,gBAAiBX,GACjBY,iBAAkBZ,GAClBa,iBAAkBb,GAClBc,mBAAoBtxH,GACpBuxH,YAAavxH,GACbwxH,kBAAmBxxH,GACnByxH,eAAgBzxH,GAChB0xH,iBAAkB1xH,GAClB+lC,UAAW/lC,GACX2xH,eAAgB3xH,GAChB4xH,mBAAoB5xH,GACpB6xH,kBAAmB7xH,GACnB8xH,kBAAmB9xH,GACnB2rB,wBAAyB3rB,GACzB+7B,cAAe/7B,GACf+xH,mBAAoB/xH,GACpBgyH,wBAAyBhyH,GACzBiyH,WAAY1B,GACZ2B,WAAYzB,GACZ0B,YAAanyH,GACboyH,qBAAsBpyH,GACtBqyH,aAAcryH,GACdsyH,kBAAmBtyH,GACnBuyH,kBAAmBvyH,GACnBwyH,mBAAoBxyH,GACpByyH,SAAUzyH,GACV0yH,UAAW1yH,GACX2yH,SAAU3yH,GACV4yH,WAAY5yH,GACZ6yH,aAAc7yH,GACd8yH,SAAU9yH,GACV+yH,WAAY/yH,GACZgzH,SAAUhzH,GACVizH,cAAejzH,GACfkzH,KAAMlzH,GACNmzH,iBAAkBnzH,GAClBozH,eAAgBpzH,GAChBqzH,gBAAiBrzH,GACjBszH,gBAAiBtzH,GACjBuzH,iBAAkBvzH,GAClBwzH,iBAAkBxzH,GAClByzH,WAAYzzH,GACZ0zH,SAAU1zH,GACV2zH,oBAAqBpD,GACrBqD,mBAAoBrD,GACpBsD,mBAAoBtD,GACpBuD,oBAAqBvD,GACrB71H,OAAQsF,GACR+zH,oBAAqBxD,GACrByD,WAAYvD,GACZwD,YAAaxD,GACbyD,YAAazD,GACbtkG,YAAaokG,GACb4D,WAAY5D,GACZ6D,UAAW7D,GACX8D,WAAY9D,GACZ+D,gBAAiB/D,GACjBgE,gBAAiBhE,GACjBiE,gBAAiBjE,GACjBnkG,QAASmkG,GACTkE,WAAYlE,GACZtpH,YAAaspH,GACbmE,YAAalE,GACb5qH,KAAM4qH,GACNlqH,UAAWtG,GACX20H,cAAenE,GACfpqH,SAAUpG,GACV40H,SAAUpE,GACVnqH,WAAYrG,GACZ2G,SAAU6pH,GACVzqH,aAAc/F,GACdiG,WAAYjG,GACZgG,UAAWhG,GACXkG,eAAgBlG,GAChBmG,MAAOnG,GACP60H,gBAAiB70H,GACjB80H,mBAAoB90H,GACpB2H,mBAAoB3H,GACpB+0H,yBAA0B/0H,GAC1Bg1H,eAAgBh1H,GAChBi1H,eAAgBzE,GAChB0E,kBAAmB1E,GACnB2E,kBAAmB3E,GACnB4E,sBAAuB5E,GACvB6E,qBAAsB7E,GACtB8E,oBAAqBt1H,GACrBu1H,iBAAkBv1H,GAClBw1H,kBAAmBx1H,GACnBy1H,QAAShF,GACTiF,SAAUlF,GACVmF,SAAUnF,GACVoF,eAAgBpF,GAChBqF,UAAWn2H,GACXo2H,cAAep2H,GACf4tB,QAAS5tB,GACTq2H,SAAU7sH,GACV8sH,YAAa9sH,GACb+sH,WAAY/sH,GACZgtH,YAAahtH,GACbitH,oBAAqBjtH,GACrBktH,iBAAkBltH,GAClBmtH,kBAAmBntH,GACnBotH,aAAcptH,GACdqtH,gBAAiBrtH,GACjBstH,aAActtH,GACdutH,aAAcvtH,GACdwtH,KAAMxtH,GACN0jB,aAAc1jB,GACd8jB,gBAAiB9jB,GACjBwjB,WAAYxjB,GACZujB,QAASvjB,GACT2jB,WAAY3jB,GACZ4jB,cAAe5jB,GACfytH,cAAeztH,GACf0tH,WAAY1tH,GACZsjB,SAAUtjB,GACV2tH,QAAS3tH,GACT4tH,eAAgBtG,GAChBuG,YAAa/2H,GACb6rB,kBAAmB7rB,GACnBg3H,kBAAmBh3H,GACnB8rB,iBAAkB9rB,GAClBi3H,kBAAmBj3H,GACnB+rB,iBAAkB/rB,4QCrItB,IACE8C,QAAS,CAAC4tH,KAAMC,KAAWC,KAAQl2H,KAAQkL,KAAMirH,KAAWC,KAAYC,KAAUC,KAAU74D,KAAU84D,KAAQvpH,MAC9G7E,UAAW,CACT3P,OAAQ,CACNg+H,UAAW,GACXC,gBAAiB,GACjBC,iBAAkB,GAClBC,iBAAkB,GAClBC,mBAAoB,GACpBC,YAAa,GACbC,kBAAmB,GACnBC,eAAgB,GAChBC,iBAAkB,GAClB3rF,UAAW,GACX4rF,eAAgB,GAChBC,mBAAoB,GACpBC,kBAAmB,GACnBC,kBAAmB,GACnBnmG,wBAAyB,GACzBoQ,cAAe,GACfg2F,mBAAoB,GACpBC,wBAAyB,GACzBC,WAAY,GACZC,WAAY,GACZC,YAAa,GACbC,qBAAsB,GACtBC,aAAc,GACdC,kBAAmB,GACnBC,kBAAmB,GACnBC,mBAAoB,GACpBC,SAAU,GACVC,UAAW,GACXC,SAAU,GACVC,WAAY,GACZC,aAAc,GACdC,SAAU,GACVC,WAAY,GACZC,SAAU,GACVC,cAAe,GACfC,KAAM,GACNC,iBAAkB,GAClBC,eAAgB,GAChBC,gBAAiB,GACjBC,gBAAiB,GACjBC,iBAAkB,GAClBC,iBAAkB,GAClBC,WAAY,GACZC,SAAU,GACVC,oBAAqB,GACrBC,mBAAoB,GACpBC,mBAAoB,GACpBC,oBAAqB,GACrBp5H,OAAQ,GACRq5H,oBAAqB,GACrBC,WAAY,GACZC,YAAa,GACbC,YAAa,GACb/nG,YAAa,GACbgoG,WAAY,GACZC,UAAW,GACXC,WAAY,GACZC,gBAAiB,GACjBC,gBAAiB,GACjBC,gBAAiB,GACjBpoG,QAAS,GACTqoG,WAAY,GACZxtH,YAAa,GACbytH,YAAa,IAEf5gI,OAAQ,CACN8R,KAAM,EACNU,UAAW,EACXquH,cAAe,EACfvuH,SAAU,EACVwuH,SAAU,EACVvuH,WAAY,EACZM,SAAU,EACVZ,aAAc,EACdE,WAAY,EACZD,UAAW,EACXE,eAAgB,EAChBC,MAAO,EACPuB,WAAY,EACZmtH,gBAAiB,EACjBC,mBAAoB,EACpBntH,mBAAoB,EACpBotH,yBAA0B,EAC1B7D,UAAW,EACXC,gBAAiB,EACjBC,iBAAkB,EAClBC,iBAAkB,EAClBC,mBAAoB,EACpBC,YAAa,EACbC,kBAAmB,EACnBC,eAAgB,EAChBC,iBAAkB,EAClB3rF,UAAW,EACX4rF,eAAgB,EAChBC,mBAAoB,EACpBC,kBAAmB,EACnBC,kBAAmB,EACnBnmG,wBAAyB,EACzBoQ,cAAe,EACfg2F,mBAAoB,EACpBC,wBAAyB,EACzBC,WAAY,GACZC,WAAY,GACZ8C,eAAgB,GAChB7C,YAAa,EACb8C,eAAgB,KAChBC,kBAAmB,KACnBC,kBAAmB,KACnBC,sBAAuB,KACvBC,qBAAsB,KACtBjD,qBAAsB,EACtBC,aAAc,EACdC,kBAAmB,EACnBC,kBAAmB,EACnBC,mBAAoB,GACpBC,SAAU,GACVC,UAAW,GACXC,SAAU,GACVC,WAAY,GACZC,aAAc,GACdC,SAAU,GACVC,WAAY,GACZC,SAAU,GACVC,cAAe,GACfC,KAAM,GACNC,iBAAkB,GAClBC,eAAgB,GAChBC,gBAAiB,GACjBC,gBAAiB,GACjBC,iBAAkB,GAClBC,iBAAkB,GAClBC,WAAY,GACZC,SAAU,GACVC,oBAAqB,GACrBC,mBAAoB,GACpBC,mBAAoB,GACpBC,oBAAqB,GACrBwB,oBAAqB,GACrBC,iBAAkB,GAClBC,kBAAmB,GACnB96H,OAAQ,EACR+6H,QAAS,GACTC,SAAU,GACVC,SAAU,GACV1B,YAAa,EACbD,WAAY,EACZE,YAAa,EACb0B,eAAgB,GAChBzpG,YAAa,EACbgoG,WAAY,EACZC,UAAW,EACXC,WAAY,EACZC,gBAAiB,EACjBC,gBAAiB,EACjBC,gBAAiB,EACjBpoG,QAAS,EACTqoG,WAAY,EACZxtH,YAAa,EACbytH,YAAa,MAEfrhI,QAAS,CACP4+H,WAAY,GACZC,WAAY,GACZ2D,UAAW,GACXC,cAAe,GACfnC,oBAAqB,GACrBC,mBAAoB,GACpBC,mBAAoB,GACpBC,oBAAqB,GACrBxmG,QAAS,GACTmoG,QAAS,GACT1B,oBAAqB,GACrBC,WAAY,GACZC,YAAa,GACbC,YAAa,GACb/nG,YAAa,GACbgoG,WAAY,GACZC,UAAW,GACXC,WAAY,GACZC,gBAAiB,GACjBC,gBAAiB,GACjBC,gBAAiB,GACjBpoG,QAAS,GACTqoG,WAAY,GACZxtH,YAAa,IAEfjV,MAAO,CACL4T,KAAM,GACNU,UAAW,GACXquH,cAAe,GACfvuH,SAAU,GACVwuH,SAAU,GACVvuH,WAAY,GACZM,SAAU,GACVZ,aAAc,GACdE,WAAY,GACZD,UAAW,GACXE,eAAgB,GAChBC,MAAO,GACP+qH,UAAW,GACXC,gBAAiB,GACjBC,iBAAkB,GAClBC,iBAAkB,GAClBC,mBAAoB,GACpBC,YAAa,GACbC,kBAAmB,GACnBC,eAAgB,GAChBC,iBAAkB,GAClB3rF,UAAW,GACX4rF,eAAgB,GAChBC,mBAAoB,GACpBC,kBAAmB,GACnBC,kBAAmB,GACnBnmG,wBAAyB,GACzBoQ,cAAe,GACfg2F,mBAAoB,GACpBC,wBAAyB,GACzBC,WAAY,GACZC,WAAY,GACZC,YAAa,GACbC,qBAAsB,GACtBC,aAAc,GACdC,kBAAmB,GACnBC,kBAAmB,GACnBC,mBAAoB,GACpBC,SAAU,GACVC,UAAW,GACXC,SAAU,GACVC,WAAY,GACZC,aAAc,GACdC,SAAU,GACVC,WAAY,GACZC,SAAU,GACVC,cAAe,GACfC,KAAM,GACNC,iBAAkB,GAClBC,eAAgB,GAChBC,gBAAiB,GACjBC,gBAAiB,GACjBC,iBAAkB,GAClBC,iBAAkB,GAClBC,WAAY,GACZC,SAAU,GACVC,oBAAqB,GACrBC,mBAAoB,GACpBC,mBAAoB,GACpBC,oBAAqB,GACrBp5H,OAAQ,GACRq5H,oBAAqB,GACrBC,WAAY,GACZC,YAAa,GACbC,YAAa,GACb/nG,YAAa,GACbgoG,WAAY,GACZC,UAAW,GACXC,WAAY,GACZC,gBAAiB,GACjBC,gBAAiB,GACjBC,gBAAiB,GACjBpoG,QAAS,GACTqoG,WAAY,GACZxtH,YAAa,GACbytH,YAAa,IAEfx0F,GAAI,CACFt6B,KAAM,GACN+uH,cAAe,GACfC,SAAU,GACVjuH,SAAU,GACVuqH,UAAW,EACXC,gBAAiB,EACjBC,iBAAkB,EAClBC,iBAAkB,EAClBa,WAAY,GACZ6D,SAAU,GACVC,YAAa,GACbC,WAAY,GACZhB,eAAgB,GAChBC,kBAAmB,GACnBC,kBAAmB,GACnBC,sBAAuB,GACvBC,qBAAsB,GACtBa,YAAa,GACbT,QAAS,GACTC,SAAU,GACVC,SAAU,GACV1B,YAAa,GACbD,WAAY,GACZE,YAAa,GACb0B,eAAgB,GAChBO,oBAAqB,GACrBC,iBAAkB,GAClBC,kBAAmB,GACnBC,aAAc,GACdC,gBAAiB,GACjBC,aAAc,GACdC,aAAc,GACdC,KAAM,GACN9pG,aAAc,GACdI,gBAAiB,GACjBN,WAAY,GACZD,QAAS,GACTI,WAAY,GACZC,cAAe,GACf6pG,cAAe,GACfC,WAAY,GACZpqG,SAAU,GACVqqG,QAAS,GACTC,eAAgB,GAChBpC,YAAa,IAEfwC,KAAM,CACJhF,WAAY,GACZ6D,SAAU,GACVC,YAAa,GACbC,WAAY,GACZhB,eAAgB,GAChBC,kBAAmB,GACnBC,kBAAmB,GACnBC,sBAAuB,GACvBC,qBAAsB,GACtBI,QAAS,GACTC,SAAU,GACVC,SAAU,GACV1B,YAAa,GACbD,WAAY,GACZE,YAAa,GACb0B,eAAgB,GAChBO,oBAAqB,GACrBC,iBAAkB,GAClBC,kBAAmB,GACnBC,aAAc,GACdC,gBAAiB,GACjBC,aAAc,GACdC,aAAc,GACdC,KAAM,GACN9pG,aAAc,GACdI,gBAAiB,GACjBN,WAAY,GACZD,QAAS,GACTI,WAAY,GACZC,cAAe,GACf6pG,cAAe,GACfC,WAAY,GACZpqG,SAAU,GACVqqG,QAAS,IAEXM,QAAS,CACPvxH,KAAM,IACNU,UAAW,IACXquH,cAAe,IACfvuH,SAAU,IACVwuH,SAAU,IACVvuH,WAAY,IACZM,SAAU,IACVZ,aAAc,IACdE,WAAY,IACZD,UAAW,IACXE,eAAgB,IAChBC,MAAO,IACPuB,WAAY,EACZmtH,gBAAiB,EACjBC,mBAAoB,EACpBntH,mBAAoB,EACpBotH,yBAA0B,EAC1B7D,UAAW,IACXC,gBAAiB,IACjBC,iBAAkB,IAClBC,iBAAkB,IAClBC,mBAAoB,IACpBC,YAAa,IACbC,kBAAmB,IACnBC,eAAgB,IAChBC,iBAAkB,IAClB3rF,UAAW,IACX4rF,eAAgB,IAChBC,mBAAoB,IACpBC,kBAAmB,IACnBC,kBAAmB,IACnBnmG,wBAAyB,IACzBoQ,cAAe,IACfg2F,mBAAoB,IACpBC,wBAAyB,IACzBC,WAAY,GACZC,WAAY,GACZ8C,eAAgB,GAChB7C,YAAa,GACb8C,eAAgB,KAChBC,kBAAmB,KACnBC,kBAAmB,KACnBC,sBAAuB,KACvBC,qBAAsB,KACtB7C,mBAAoB,GACpBC,SAAU,GACVC,UAAW,GACXC,SAAU,GACVC,WAAY,GACZC,aAAc,GACdC,SAAU,GACVC,WAAY,GACZC,SAAU,GACVC,cAAe,GACfC,KAAM,GACNC,iBAAkB,GAClBC,eAAgB,GAChBC,gBAAiB,GACjBC,gBAAiB,GACjBC,iBAAkB,GAClBC,iBAAkB,GAClBC,WAAY,GACZC,SAAU,GACVoD,eAAgB,GAChBnD,oBAAqB,GACrBC,mBAAoB,GACpBC,mBAAoB,GACpBC,oBAAqB,GACrBwB,oBAAqB,GACrBC,iBAAkB,GAClBC,kBAAmB,GACnB96H,OAAQ,EACR+6H,QAAS,GACTC,SAAU,GACVC,SAAU,GACV1B,YAAa,IACbD,WAAY,IACZE,YAAa,IACb0B,eAAgB,GAChBzpG,YAAa,IACbgoG,WAAY,IACZC,UAAW,IACXC,WAAY,IACZC,gBAAiB,IACjBC,gBAAiB,IACjBC,gBAAiB,IACjBpoG,QAAS,IACTqoG,WAAY,IACZxtH,YAAa,IACbytH,YAAa,MAEf7jI,QAAS,CACPkmI,YAAa,IACblrG,kBAAmB,IACnBmrG,kBAAmB,IACnBlrG,iBAAkB,IAClBmrG,kBAAmB,IACnBlrG,iBAAkB,IAClBnmB,KAAM,IACNU,UAAW,IACXquH,cAAe,IACfvuH,SAAU,IACVwuH,SAAU,IACVvuH,WAAY,IACZM,SAAU,IACVZ,aAAc,IACdE,WAAY,IACZD,UAAW,IACXE,eAAgB,IAChBC,MAAO,IACPuB,WAAY,IACZmtH,gBAAiB,IACjBC,mBAAoB,IACpBntH,mBAAoB,IACpBotH,yBAA0B,IAC1B7D,UAAW,IACXC,gBAAiB,IACjBC,iBAAkB,IAClBC,iBAAkB,IAClBC,mBAAoB,IACpBC,YAAa,IACbC,kBAAmB,IACnBC,eAAgB,IAChBC,iBAAkB,IAClB3rF,UAAW,IACX4rF,eAAgB,IAChBC,mBAAoB,IACpBC,kBAAmB,IACnBC,kBAAmB,IACnBnmG,wBAAyB,IACzBoQ,cAAe,IACfg2F,mBAAoB,IACpBC,wBAAyB,IACzBC,WAAY,GACZC,WAAY,IACZC,YAAa,IACbC,qBAAsB,GACtBC,aAAc,GACdC,kBAAmB,GACnBC,kBAAmB,GACnBC,mBAAoB,GACpBC,SAAU,IACVC,UAAW,GACXC,SAAU,GACVC,WAAY,GACZC,aAAc,GACdC,SAAU,GACVC,WAAY,GACZC,SAAU,GACVC,cAAe,GACfC,KAAM,GACNC,iBAAkB,GAClBC,eAAgB,GAChBC,gBAAiB,GACjBC,gBAAiB,GACjBC,iBAAkB,GAClBC,iBAAkB,GAClBC,WAAY,GACZC,SAAU,GACVh5H,OAAQ,IACRq5H,oBAAqB,IACrBC,WAAY,IACZC,YAAa,IACbC,YAAa,IACb/nG,YAAa,IACbgoG,WAAY,IACZC,UAAW,IACXC,WAAY,IACZC,gBAAiB,IACjBC,gBAAiB,IACjBC,gBAAiB,IACjBpoG,QAAS,IACTqoG,WAAY,IACZxtH,YAAa,IACbytH,YAAa,KAEf0C,QAAS,CACPnF,WAAY,GACZG,qBAAsB,GACtBC,aAAc,GACdC,kBAAmB,GACnBC,kBAAmB,GACnBC,mBAAoB,GACpBE,UAAW,GACXC,SAAU,GACVC,WAAY,GACZC,aAAc,GACdC,SAAU,GACVC,WAAY,GACZC,SAAU,GACVC,cAAe,GACfC,KAAM,GACNC,iBAAkB,GAClBC,eAAgB,GAChBC,gBAAiB,GACjBC,gBAAiB,GACjBC,iBAAkB,GAClBC,iBAAkB,GAClBC,WAAY,GACZC,SAAU,IAEZ2D,OAAQ,CACNzxH,KAAM,KACNU,UAAW,KACXquH,cAAe,KACfvuH,SAAU,KACVwuH,SAAU,KACVvuH,WAAY,KACZM,SAAU,KACVZ,aAAc,KACdE,WAAY,KACZD,UAAW,KACXE,eAAgB,KAChBC,MAAO,KACP+qH,UAAW,KACXC,gBAAiB,KACjBC,iBAAkB,KAClBC,iBAAkB,KAClBC,mBAAoB,KACpBC,YAAa,KACbC,kBAAmB,KACnBC,eAAgB,KAChBC,iBAAkB,KAClB3rF,UAAW,KACX4rF,eAAgB,KAChBC,mBAAoB,KACpBC,kBAAmB,KACnBC,kBAAmB,KACnBnmG,wBAAyB,KACzBoQ,cAAe,KACfg2F,mBAAoB,KACpBC,wBAAyB,KACzBC,WAAY,KACZC,WAAY,KACZE,qBAAsB,KACtBC,aAAc,KACdC,kBAAmB,KACnBC,kBAAmB,KACnBE,SAAU,KACVC,UAAW,KACXC,SAAU,KACVC,WAAY,KACZC,aAAc,KACdC,SAAU,KACVC,WAAY,KACZC,SAAU,KACVC,cAAe,KACfC,KAAM,KACNC,iBAAkB,KAClBC,eAAgB,KAChBC,gBAAiB,KACjBC,gBAAiB,KACjBC,iBAAkB,KAClBC,iBAAkB,KAClBC,WAAY,KACZC,SAAU,KACVoD,eAAgB,KAChBp8H,OAAQ,KACR+6H,QAAS,KACT1B,oBAAqB,KACrBC,WAAY,KACZC,YAAa,KACbC,YAAa,KACb/nG,YAAa,KACbgoG,WAAY,KACZC,UAAW,KACXC,WAAY,KACZC,gBAAiB,KACjBC,gBAAiB,KACjBC,gBAAiB,KACjBpoG,QAAS,KACTqoG,WAAY,KACZxtH,YAAa,KACbytH,YAAa,MAEf4C,QAAS,CAAC,IC/nBd,SAASxkH,GAAQrb,GAAwT,OAAtOqb,GAArD,oBAAXpZ,QAAoD,kBAApBA,OAAOrE,SAAmC,SAAiBoC,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXiC,QAAyBjC,EAAIsb,cAAgBrZ,QAAUjC,IAAQiC,OAAOlE,UAAY,gBAAkBiC,CAAK,EAAYqb,GAAQrb,EAAM,CAc9V,IAAIuQ,GAAYuvH,KAAqBC,IACjCC,GAAsBC,KAAsBC,GAAa3vH,IA0D7D,IAEI4vH,GAEAC,GAEJ,SAASC,GAAY7iI,GACnB,IAAI8iI,EAAkB9iI,GAAas0E,EAAAA,GAAUA,EAAAA,EAAOv0E,WAAau0E,EAAAA,EAAOv0E,UAAUC,UA2BlF,OAfwC4iI,IAAmBE,IAAoBH,KAE3EC,GADsB,QAApBE,EACgB,CAChBrzH,OAAQsD,GACRlE,kBAAmB,aAGH,IAAI2zH,GAAoB,CACxCxiI,UAAW8iI,IAIfH,GAAiBG,GAGZF,EACT,CAOO,SAASG,GAAiB/0H,EAAOhO,GACtC,IAAIgjI,EAnGN,SAAyBh1H,GACvB,OAAO9L,OAAOqD,KAAKyI,GAAOrH,QAAO,SAAUwO,EAAUhP,GACnD,IAAI/D,EAAQ4L,EAAM7H,GASlB,OAPI7F,MAAM0E,QAAQ5C,GAChBA,EAAQA,EAAMpB,KAAK,IAAMmF,EAAM,KACtB/D,GAA4B,WAAnByb,GAAQzb,IAAiD,oBAAnBA,EAAMgC,WAC9DhC,EAAQA,EAAMgC,YAGhB+Q,EAAShP,GAAO/D,EACT+S,CACT,GAAG,CAAC,EACN,CAsF2B8tH,CAAgBj1H,GAGrCk1H,EA3EN,SAA4Bl1H,GAC1B,OAAO9L,OAAOqD,KAAKyI,GAAOrH,QAAO,SAAUwO,EAAUhP,GACnD,IAAIpB,EAAMiJ,EAAM7H,GAuBhB,OArBI7F,MAAM0E,QAAQD,KAMdA,EALEoC,KAAAA,UAKIpC,EAAIA,EAAIxJ,OAAS,GAAG6I,WAUpBW,EAAI/D,KAAK,IAAIoE,OAAO+1H,GAAoBh1H,GAAM,OAIxDgP,EAAShP,GAAOpB,EACToQ,CACT,GAAG,CAAC,EACN,CAgDuBguH,CAFNN,GAAY7iI,GACEyP,OAAOuzH,IAEpC,OAAOE,CACT,CC9Ge,SAASE,GAAmBr6D,EAAUuiC,EAAOtrG,GAC1D,IAAKsrG,EACH,MAAO,GAGT,IAAI+3B,EAAczI,GAAUtvB,GAAO,SAAUlpG,EAAO+D,GAClD,OAAOw0H,GAAiBx0H,EAAK/D,EAC/B,IACIkhI,EAAgBP,GAAiBM,EAAarjI,GAE9CujI,EAhBN,SAA+Bv1H,GAC7B,OAAO9L,OAAOqD,KAAKyI,GAAO9N,KAAI,SAAUmC,GACtC,OAAOA,EAAW,KAAO2L,EAAM3L,GAAY,GAC7C,IAAGrB,KAAK,KACV,CAYwBwiI,CADCC,GAAyBH,IAEhD,OAAOv6D,EAAW,IAAMw6D,EAAkB,GAC5C,CCtBA,IAIA,GAJoB,SAAuBp9H,GACzC,OAAe,OAARA,GAA+B,qBAARA,EAAsB,OAASA,EAAI/B,UACnE,ECIA,GALe,SAAkBmf,EAAOmgH,EAAYthI,GAClD,IAAI+D,EAAMw9H,GAAcD,GACxB,QAASngH,KAAWA,EAAMqgH,qBAAuBrgH,EAAMqgH,kBAAkBz9H,IAAQod,EAAMqgH,kBAAkBz9H,GAAK/D,EAChH,ECDA,GAJkB,SAAqByhI,GACrC,MAAsC,kBAAxBA,EAAgBniH,IAAmBmiH,EAAgBniH,IAAMmiH,EAAgB19H,GACzF,ECEA,GAJ0B,SAA6B6C,GACrD,OAAOA,EAAU86H,kBAAoB96H,EAAUua,OAASva,EAAUua,MAAMqgH,mBAAqB,CAAC,CAChG,ECCe,SAASnpC,GAAK9jF,GAC3B,IAAKA,EACH,MAAO,GAMT,IAHA,IAAIotH,EAAY,KACZxxH,EAAQoE,EAAKpb,OAAS,EAEnBgX,GACLwxH,EAAwB,GAAZA,EAAiBptH,EAAK+yF,WAAWn3F,GAC7CA,GAAS,EAGX,OAAQwxH,IAAc,GAAG3/H,SAAS,GACpC,CCjBA,SAASyZ,GAAQrb,GAAwT,OAAtOqb,GAArD,oBAAXpZ,QAAoD,kBAApBA,OAAOrE,SAAmC,SAAiBoC,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXiC,QAAyBjC,EAAIsb,cAAgBrZ,QAAUjC,IAAQiC,OAAOlE,UAAY,gBAAkBiC,CAAK,EAAYqb,GAAQrb,EAAM,CAEvV,SAASwhI,GAAc5hI,GAG5B,OAAOA,GAASA,EAAM0b,cAAgB5b,QAAUE,EAAMgC,WAAalC,OAAO3B,UAAU6D,QACtF,CAEO,SAAS6/H,GAAYh0H,GAC1B,IAAIxU,EAAS,CAAC,EAsCd,OArCAwU,EAAO/J,SAAQ,SAAU8H,GAClBA,GAA4B,WAAnB6P,GAAQ7P,KAIlB1N,MAAM0E,QAAQgJ,KAChBA,EAAQi2H,GAAYj2H,IAGtB9L,OAAOqD,KAAKyI,GAAO9H,SAAQ,SAAUC,GAEnC,GAAK69H,GAAch2H,EAAM7H,KAAU69H,GAAcvoI,EAAO0K,IAAxD,CASA,GAA8B,IAA1BA,EAAIgK,QAAQ,UAGd,IAFA,IAAI+zH,EAAS/9H,IAKX,IAAK1K,EAFLyoI,GAAU,KAIR,YADAzoI,EAAOyoI,GAAUl2H,EAAM7H,IAO7B1K,EAAO0K,GAAO89H,GAAY,CAACxoI,EAAO0K,GAAM6H,EAAM7H,IApB9C,MAFE1K,EAAO0K,GAAO6H,EAAM7H,EAuBxB,IACF,IACO1K,CACT,CC9CA,IAUA,GAV4B,SAA+BkS,GACzD,IAAIK,EAAQL,EAAKK,MACbi2H,EAAct2H,EAAKs2H,YAGvB,MAAO,CACLj2H,MAFa1N,MAAM0E,QAAQgJ,GAASi2H,EAAYj2H,GAASA,EAI7D,ECVA,IAAIm2H,GAAa,GACbC,IAA2B,EAE/B,SAASC,KACPF,GAAWj+H,SAAQ,SAAU41C,GAC3BA,GACF,GACF,CAEA,ICLIwoF,GD6BJ,GAxBgB,SAAmBxoF,GAUjC,OATsC,IAAlCqoF,GAAWh0H,QAAQ2rC,IACrBqoF,GAAW1jI,KAAKq7C,GAGbsoF,KACHp9H,OAAOO,iBAAiB,UAAW88H,IACnCD,IAA2B,GAGtB,CACL7/D,OAAQ,WACN,IAAIhyD,EAAQ4xH,GAAWh0H,QAAQ2rC,GAE/BqoF,GAAW3yE,OAAOj/C,EAAO,GAEC,IAAtB4xH,GAAW5oI,QAAgB6oI,KAC7Bp9H,OAAO60B,oBAAoB,UAAWwoG,IACtCD,IAA2B,EAE/B,EAEJ,EE7BIG,GAA2B,SAAkCC,GAC/D,MAA0B,WAAnBA,GAAkD,YAAnBA,GAAmD,WAAnBA,CACxE,EA8GA,GA5G+B,SAAkC1pE,GAC/D,IAAI3zD,EAAuB2zD,EAAO3zD,qBAC9Bs9H,EAAoB3pE,EAAO2pE,kBAC3BC,EAAW5pE,EAAO4pE,SAClBT,EAAcnpE,EAAOmpE,YACrB72H,EAAQ0tD,EAAO1tD,MACf+V,EAAW23C,EAAO33C,SAClBnV,EAAQ8sD,EAAO9sD,MACf22H,EAAqB,CAAC,EACtBC,EAAW,CAAC,EAEhB,GAAI52H,EAAM,UAAW,CAInB,IAAI62H,EAAuBz3H,EAAM03H,aAEjCF,EAASE,aAAe,SAAU76H,GAChC46H,GAAwBA,EAAqB56H,GAC7CkZ,EAAS,UAAU,EACrB,EAEA,IAAI4hH,EAAuB33H,EAAM43H,aAEjCJ,EAASI,aAAe,SAAU/6H,GAChC86H,GAAwBA,EAAqB96H,GAC7CkZ,EAAS,UAAU,EACrB,CACF,CAEA,GAAInV,EAAM,WAAY,CACpB,IAAIi3H,EAAsB73H,EAAMg6D,YAEhCw9D,EAASx9D,YAAc,SAAUn9D,GAC/Bg7H,GAAuBA,EAAoBh7H,GAC3C06H,EAAmBO,eAAiB5hI,KAAKC,MACzC4f,EAAS,UAAW,eACtB,EAEA,IAAIgiH,EAAoB/3H,EAAMm6D,UAE9Bq9D,EAASr9D,UAAY,SAAUt9D,GAC7Bk7H,GAAqBA,EAAkBl7H,GAEzB,MAAVA,EAAE9D,KAAyB,UAAV8D,EAAE9D,KACrBgd,EAAS,UAAW,aAExB,EAEA,IAAIiiH,EAAkBh4H,EAAMi4H,QAE5BT,EAASS,QAAU,SAAUp7H,GAC3Bm7H,GAAmBA,EAAgBn7H,GAErB,MAAVA,EAAE9D,KAAyB,UAAV8D,EAAE9D,KACrBgd,EAAS,WAAW,EAExB,CACF,CAEA,GAAInV,EAAM,UAAW,CACnB,IAAIs3H,EAAkBl4H,EAAMm4H,QAE5BX,EAASW,QAAU,SAAUt7H,GAC3Bq7H,GAAmBA,EAAgBr7H,GACnCkZ,EAAS,UAAU,EACrB,EAEA,IAAIqiH,EAAiBp4H,EAAMq4H,OAE3Bb,EAASa,OAAS,SAAUx7H,GAC1Bu7H,GAAkBA,EAAev7H,GACjCkZ,EAAS,UAAU,EACrB,CACF,CAEInV,EAAM,aAAey2H,EAAkB,2BAA6Bt9H,EAAqBG,uBAC3Fq9H,EAAmBe,uBAAyBC,IAA0B,WACpEzjI,OAAOqD,KAAKk/H,EAAkB,SAASb,mBAAmB19H,SAAQ,SAAUC,GACzC,iBAA7Bu+H,EAAS,UAAWv+H,IACtBgd,EAAS,WAAW,EAAOhd,EAE/B,GACF,KAIF,IAAIy/H,EAAoBx4H,EAAMgoB,SAAW,CAACpnB,EAAM,cAAgB9L,OAAOqD,KAAKyI,GAAOvI,QAAO,SAAU3I,GAClG,OAAOynI,GAAyBznI,IAAS4nI,EAAS5nI,EACpD,IAAGoD,KAAI,SAAUpD,GACf,OAAOkR,EAAMlR,EACf,IACIqY,EAAW8uH,EAAY,CAACj2H,GAAO5I,OAAOwgI,IAS1C,OAPAzwH,EAAWjT,OAAOqD,KAAK4P,GAAUxO,QAAO,SAAUk/H,EAA0B/oI,GAK1E,OAJKynI,GAAyBznI,IAAkB,cAATA,IACrC+oI,EAAyB/oI,GAAQqY,EAASrY,IAGrC+oI,CACT,GAAG,CAAC,GACG,CACLC,gBAAiBnB,EACjBv3H,MAAOw3H,EACP52H,MAAOmH,EAEX,ED9GA,SAASmK,GAAgB9c,EAAK2D,EAAK/D,GAAiK,OAApJ+D,KAAO3D,EAAON,OAAOC,eAAeK,EAAK2D,EAAK,CAAE/D,MAAOA,EAAOiL,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkB/K,EAAI2D,GAAO/D,EAAgBI,CAAK,CAchN,SAASujI,GAAcvjI,EAAKwjI,GAC1B,OAAO9jI,OAAOqD,KAAK/C,GAAKiD,QAAO,SAAUU,GACvC,OAAO6/H,EAAUxjI,EAAI2D,GAAMA,EAC7B,IAAGQ,QAAO,SAAUlL,EAAQ0K,GAE1B,OADA1K,EAAO0K,GAAO3D,EAAI2D,GACX1K,CACT,GAAG,CAAC,EACN,CEdA,QACEwqI,WCJgB,WAAuB,EDKvCC,UEXa,SAAyBv4H,GACtC,IAAIw4H,EAASx4H,EAAKw4H,OACdrrE,EAASntD,EAAKmtD,OACd9sD,EAAQL,EAAKK,MAEbo4H,EAAuB,SAA8BhkI,GACvD,IAEIikI,EAFiBjkI,EAEsBkkI,UAAUxrE,EAAO96D,WACxD8mC,EAAgBu/F,EAAsBv/F,cACtCmlE,EAAMo6B,EAAsBp6B,IAGhC,OADAk6B,EAAOl6B,GACAnlE,CACT,EAEI3xB,EAAWjT,OAAOqD,KAAKyI,GAAOrH,QAAO,SAAU4/H,EAAoBpgI,GACrE,IAAI/D,EAAQ4L,EAAM7H,GACdqgI,EAAkBlmI,MAAM0E,QAAQ5C,GAWpC,MATY,kBAAR+D,GAA2B/D,IAAUA,EAAMqkI,mBAAqBD,KAEhEpkI,EADEokI,EACMpkI,EAAMlC,IAAIkmI,GAAsBplI,KAAK,MAErColI,EAAqBhkI,IAIjCmkI,EAAmBpgI,GAAO/D,EACnBmkI,CACT,GAAG,CAAC,GACJ,MAAO,CACLv4H,MAAOmH,EAEX,EFtBEuxH,gBAAiBC,GACjBl3H,OGZa,SAAsB9B,GACnC,IAAImtD,EAASntD,EAAKmtD,OAGlB,MAAO,CACL9sD,MAFa+0H,GADHp1H,EAAKK,MACsB8sD,EAAO96D,WAIhD,EHME4mI,mBIda,SAA4Bj5H,GACzC,IAAIq2H,EAAgBr2H,EAAKq2H,cACrBh2H,EAAQL,EAAKK,MAEbmH,EAAWjT,OAAOqD,KAAKyI,GAAOrH,QAAO,SAAU4/H,EAAoBpgI,GACrE,IAAI/D,EAAQ4L,EAAM7H,GAMlB,OAJK69H,EAAc5hI,KACjBmkI,EAAmBpgI,GAAO/D,GAGrBmkI,CACT,GAAG,CAAC,GACJ,MAAO,CACLv4H,MAAOmH,EAEX,EJDE0xH,yBAA0BC,GAC1BC,oBF0Ea,SAA6Bj+G,GAC1C,IAAI3hB,EAAuB2hB,EAAM3hB,qBAC7Bg/H,EAASr9G,EAAMq9G,OACfrL,EAA6BhyG,EAAMgyG,2BACnChgE,EAAShyC,EAAMgyC,OACfsoE,EAAqBt6G,EAAMs6G,mBAC3BqB,EAAoB37G,EAAM27G,kBAC1BuC,EAAiBl+G,EAAMk+G,eACvBvsC,EAAO3xE,EAAM2xE,KACbupC,EAAgBl7G,EAAMk7G,cACtBC,EAAcn7G,EAAMm7G,YACpB72H,EAAQ0b,EAAM1b,MACd+V,EAAW2F,EAAM3F,SACjBnV,EAAQ8a,EAAM9a,MAGdmH,EAjFN,SAA6BnH,GAC3B,OAAO9L,OAAOqD,KAAKyI,GAAOrH,QAAO,SAAUsgI,EAAmB9gI,GAK5D,OAJ8B,IAA1BA,EAAIgK,QAAQ,YACd82H,EAAkB9gI,GAAO6H,EAAM7H,IAG1B8gI,CACT,GAAG,CAAC,EACN,CAyEiBC,CAAoBl5H,GAE/Bm5H,EAzEN,SAA6Bx5H,GAC3B,IAAIw4H,EAASx4H,EAAKw4H,OACdrL,EAA6BntH,EAAKmtH,2BAClCsI,EAAqBz1H,EAAKy1H,mBAC1B3oC,EAAO9sF,EAAK8sF,KACZupC,EAAgBr2H,EAAKq2H,cACrBh2H,EAAQL,EAAKK,MACbhO,EAAY2N,EAAK3N,UACjB4hB,EAAY,GAmBhB,OAlBA1f,OAAOqD,KAAKyI,GAAOvI,QAAO,SAAU3I,GAClC,OAAkC,IAA3BA,EAAKqT,QAAQ,SACtB,IAAGjQ,KAAI,SAAUknI,GACf,IAAIC,EAAgBvM,EAA2BiL,GAAc/3H,EAAMo5H,IAAQ,SAAUhlI,GACnF,OAAQ4hI,EAAc5hI,EACxB,KAEA,GAAKF,OAAOqD,KAAK8hI,GAAe9rI,OAAhC,CAIA,IAAI+rI,EAAUlE,EAAmB,GAAIiE,EAAernI,GAEhDunI,EAAsB,OAAS9sC,EAAK2sC,EAAQE,GAEhDnB,EADUiB,EAAQ,MAAQG,EAAsBD,EAAU,KAE1D1lH,IAAcA,EAAY,IAAM,IAAM2lH,CAPtC,CAQF,IACO3lH,CACT,CA6C6B4lH,CAAoB,CAC7CrB,OAAQA,EACRrL,2BAA4BA,EAC5BsI,mBAAoBA,EACpB3oC,KAAMA,EACNupC,cAAeA,EACfh2H,MAAOA,EACPhO,UAAW86D,EAAO96D,YAGhB4kI,EAAWuC,EAAuB,CACpCvlH,UAAWulH,GAAwB/5H,EAAMwU,UAAY,IAAMxU,EAAMwU,UAAY,KAC3E,KAEAgwG,EAAa92D,EAAO82D,YApH1B,SAA8BzqH,GAO5B,YAN0B4G,IAAtBu2H,KACFA,KAAsBn9H,EAAqBJ,aAAeC,UAAYA,OAAO4qH,YAAc,SAAU6V,GACnG,OAAOzgI,OAAO4qH,WAAW6V,EAC3B,GAAK,MAGAnD,EACT,CA4GwCoD,CAAqBvgI,GAE3D,IAAKyqH,EACH,MAAO,CACLxkH,MAAOw3H,EACP52H,MAAOmH,GAIX,IAAIwyH,EAnIN,SAAuBziI,GAAU,IAAK,IAAI7E,EAAI,EAAGA,EAAIuD,UAAUrI,OAAQ8E,IAAK,CAAE,IAAI8E,EAAyB,MAAhBvB,UAAUvD,GAAauD,UAAUvD,GAAK,CAAC,EAAOiiB,EAAUpgB,OAAOqD,KAAKJ,GAAqD,oBAAjCjD,OAAOsD,wBAAwC8c,EAAUA,EAAQld,OAAOlD,OAAOsD,sBAAsBL,GAAQM,QAAO,SAAUgd,GAAO,OAAOvgB,OAAOoH,yBAAyBnE,EAAQsd,GAAKpV,UAAY,MAAOiV,EAAQpc,SAAQ,SAAUC,GAAOmZ,GAAgBpa,EAAQiB,EAAKhB,EAAOgB,GAAO,GAAI,CAAE,OAAOjB,CAAQ,CAmIvcwd,CAAc,CAAC,EAAG+hH,EAAkB,sCAEvDmD,EAAyBZ,EAAe,2BAA6B,CAAC,EAyB1E,OAxBA9kI,OAAOqD,KAAKyI,GAAOvI,QAAO,SAAU3I,GAClC,OAAkC,IAA3BA,EAAKqT,QAAQ,SACtB,IAAGjQ,KAAI,SAAUknI,GACf,IAAIS,EAAc9B,GAAc/3H,EAAMo5H,GAAQpD,GAE9C,GAAK9hI,OAAOqD,KAAKsiI,GAAatsI,OAA9B,CAIA,IAAIusI,EA9ER,SAAgC9mH,GAC9B,IAAI4wB,EAAW5wB,EAAM4wB,SACjB+1F,EAAmB3mH,EAAM2mH,iBACzB/V,EAAa5wG,EAAM4wG,WACnBgW,EAAyB5mH,EAAM4mH,uBAC/BR,EAAQpmH,EAAMomH,MAEdU,EAAMF,EADVR,EAAQA,EAAM9nI,QAAQ,UAAW,KAgBjC,OAbKwoI,GAAOlW,IACVgW,EAAuBR,GAASU,EAAMlW,EAAWwV,IAG9CO,GAAqBA,EAAiBP,KACzCU,EAAIC,YAAYn2F,GAChB+1F,EAAiBP,GAAS,CACxB7iE,OAAQ,WACNujE,EAAIE,eAAep2F,EACrB,IAIGk2F,CACT,CAuDcG,CAAuB,CAC/Br2F,SAAU,WACR,OAAOzuB,EAASikH,EAAOU,EAAIt4C,QAAS,OACtC,EACAm4C,iBAAkBA,EAClB/V,WAAYA,EACZgW,uBAAwBA,EACxBR,MAAOA,IAILU,EAAIt4C,UACNr6E,EAAW8uH,EAAY,CAAC9uH,EAAU0yH,IAdpC,CAgBF,IACO,CACL/B,gBAAiB,CACfoC,kCAAmCP,GAErCvW,YAAa,CACXwW,uBAAwBA,GAE1Bx6H,MAAOw3H,EACP52H,MAAOmH,EAEX,EEvJEgzH,QKjBa,SAAiBx6H,GAC9B,IAAIw4H,EAASx4H,EAAKw4H,OACdrL,EAA6BntH,EAAKmtH,2BAClChgE,EAASntD,EAAKmtD,OACdsoE,EAAqBz1H,EAAKy1H,mBAC1B3oC,EAAO9sF,EAAK8sF,KACZrtF,EAAQO,EAAKP,MACbY,EAAQL,EAAKK,MAEb4T,EAAYxU,EAAMwU,UAClBzM,EAAWjT,OAAOqD,KAAKyI,GAAOrH,QAAO,SAAU4/H,EAAoBpgI,GACrE,IAAI/D,EAAQ4L,EAAM7H,GAElB,GAAY,aAARA,EAAoB,CACtB/D,EAAQ04H,EAA2B14H,GACnC,IAAIklI,EAAUlE,EAAmB,GAAIhhI,EAAO04D,EAAO96D,WAC/CooI,EAAmB,OAAS3tC,EAAK6sC,GAErCnB,EADU,IAAMiC,EAAmB,WAAad,GAEhD1lH,GAAaA,EAAYA,EAAY,IAAM,IAAMwmH,CACnD,MACE7B,EAAmBpgI,GAAO/D,EAG5B,OAAOmkI,CACT,GAAG,CAAC,GACJ,MAAO,CACLn5H,MAAOwU,IAAcxU,EAAMwU,UAAY,KAAO,CAC5CA,UAAWA,GAEb5T,MAAOmH,EAEX,GChCA,SAASuN,GAAcxd,GAAU,IAAK,IAAI7E,EAAI,EAAGA,EAAIuD,UAAUrI,OAAQ8E,IAAK,CAAE,IAAI8E,EAAyB,MAAhBvB,UAAUvD,GAAauD,UAAUvD,GAAK,CAAC,EAAOiiB,EAAUpgB,OAAOqD,KAAKJ,GAAqD,oBAAjCjD,OAAOsD,wBAAwC8c,EAAUA,EAAQld,OAAOlD,OAAOsD,sBAAsBL,GAAQM,QAAO,SAAUgd,GAAO,OAAOvgB,OAAOoH,yBAAyBnE,EAAQsd,GAAKpV,UAAY,MAAOiV,EAAQpc,SAAQ,SAAUC,GAAOmZ,GAAgBpa,EAAQiB,EAAKhB,EAAOgB,GAAO,GAAI,CAAE,OAAOjB,CAAQ,CAEhe,SAASoa,GAAgB9c,EAAK2D,EAAK/D,GAAiK,OAApJ+D,KAAO3D,EAAON,OAAOC,eAAeK,EAAK2D,EAAK,CAAE/D,MAAOA,EAAOiL,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkB/K,EAAI2D,GAAO/D,EAAgBI,CAAK,CAEhN,SAASqb,GAAQrb,GAAwT,OAAtOqb,GAArD,oBAAXpZ,QAAoD,kBAApBA,OAAOrE,SAAmC,SAAiBoC,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXiC,QAAyBjC,EAAIsb,cAAgBrZ,QAAUjC,IAAQiC,OAAOlE,UAAY,gBAAkBiC,CAAK,EAAYqb,GAAQrb,EAAM,CAc9V,IAAI6lI,GAAiB,CACnBx6H,QAAS,CAACy6H,GAAQ5B,gBAAiB4B,GAAQrC,WAAYqC,GAAQvB,oBAAqBuB,GAAQzB,yBAA0ByB,GAAQpC,UAAWoC,GAAQH,QAASG,GAAQ1B,mBAAoB0B,GAAQ74H,OAAQ64H,GAAQrC,aAG5M7U,GAAc,CAAC,EAIfmX,GAAkB,KA8JlBC,GAAc,SAAqBx/G,GACrC,IAAIhgB,EAAYggB,EAAMhgB,UAClB8xD,EAAS9xC,EAAM8xC,OACf2tE,EAAiBz/G,EAAMy/G,eACvBr7H,EAAQ4b,EAAM5b,MACdy2H,EAAkB76G,EAAM66G,gBAI5B,IAAKhgH,EAAAA,eAAqBggH,IAAoD,kBAAzBA,EAAgBt7H,OAAsB6E,EAAMY,MAC/F,OAAOZ,EAGT,IAAIw3H,EAAWx3H,EACXS,EAAUitD,EAAOjtD,SAAWw6H,GAAex6H,QAC3CwO,EAAgBrT,EAAU8U,YAAY7V,aAAee,EAAU8U,YAAYhhB,KAE3E4rI,EArEa,SAAsB5/G,GACvC,IAAIzM,EAAgByM,EAAMzM,cACtBosH,EAAiB3/G,EAAM2/G,eACvB5E,EAAkB/6G,EAAM+6G,gBAIxB8E,EAAcC,GAAY/E,GAC1B19H,EAAMw9H,GAAcgF,GACpBE,GAAgB,EAyBpB,OAvBa,WACX,GAAIA,EACF,OAAO1iI,EAMP,IAAI2iI,EADN,GAFAD,GAAgB,EAEZJ,EAAetiI,GASjB,KANoC,kBAAzB09H,EAAgBt7H,KACzBugI,EAAcjF,EAAgBt7H,KACrBs7H,EAAgBt7H,KAAKuV,cAC9BgrH,EAAcjF,EAAgBt7H,KAAKuV,YAAY7V,aAAe47H,EAAgBt7H,KAAKuV,YAAYhhB,MAG3F,IAAI2E,MAAM,qHAA4HknI,EAAc,QAAUA,EAAc,oBAAsB,4CAAxL,gBAA6PtsH,EAAgB,OAASysH,EAAc,aAAeA,EAAc,KAAO,KAI1V,OADAL,EAAetiI,IAAO,EACfA,CACT,CAGF,CAkCe4iI,CAAa,CACxBlF,gBAAiBA,EACjB4E,eAAgBA,EAChBpsH,cAAeA,IAGbooH,EAAoB,SAA2Bt+H,GACjD,OAAO6C,EAAU7C,EACnB,EAEI6gI,EAAiB,SAAwB7gI,GAC3C,OAAOirH,GAAYjrH,EACrB,EAEI6iI,EAAoB,SAA2BC,EAAUvF,GAC3D,OAAOgB,GAAS17H,EAAUua,MAAOmgH,GAAcgF,IAAUO,EAC3D,EAEI9lH,EAAW,SAAkB8lH,EAAU7mI,EAAOshI,GAChD,OAnDiB,SAAwB16H,EAAW7C,EAAK8iI,EAAU7mI,GACrE,GAAK4G,EAAUkgI,iBAAf,CAIA,IACI3lH,EAAQ,CACVqgH,kBAAmBlhH,GAAc,CAAC,EAFrBymH,GAAoBngI,KAInCua,EAAMqgH,kBAAkBz9H,GAAOuc,GAAc,CAAC,EAAGa,EAAMqgH,kBAAkBz9H,IACzEod,EAAMqgH,kBAAkBz9H,GAAK8iI,GAAY7mI,EACzC4G,EAAU86H,iBAAmBvgH,EAAMqgH,kBACnC56H,EAAUma,SAASI,EATnB,CAUF,CAsCW6lH,CAAepgI,EAAW06H,GAAcgF,IAAUO,EAAU7mI,EACrE,EAEI+jI,EAAS,SAAgBl6B,GAC3B,IAAIo9B,EAAcrgI,EAAUsgI,mBAE5B,IAAKD,EAOH,MAAM,IAAI5nI,MAAM,gJAA4J4a,EAAgB,MAG9L,OAAOgtH,EAAYlD,OAAOl6B,EAC5B,EAEI92F,EAAW/H,EAAMY,MAqCrB,OApCAH,EAAQ3H,SAAQ,SAAUwsG,GACxB,IAAIj3G,EAASi3G,EAAO,CAClBvrG,qBAAsBA,KACtBg/H,OAAQA,EACRrL,2BAA4BA,GAC5Bz+G,cAAeA,EACfy+C,OAAQA,EACRsoE,mBAAoBA,GACpBqB,kBAAmBA,EACnBuC,eAAgBA,EAChBtC,SAAUsE,EACVvuC,KAAMA,GACNwpC,YAAaA,GACb72H,MAAOw3H,EACPzhH,SAAUA,EACV6gH,cAAeA,GACfh2H,MAAOmH,KACH,CAAC,EACPA,EAAW1Z,EAAOuS,OAASmH,EAC3ByvH,EAAWnpI,EAAO2R,OAASlL,OAAOqD,KAAK9J,EAAO2R,OAAO7R,OAASmnB,GAAc,CAAC,EAAGkiH,EAAUnpI,EAAO2R,OAASw3H,EAC1G,IAAID,EAAqBlpI,EAAOqqI,iBAAmB,CAAC,EACpD5jI,OAAOqD,KAAKo/H,GAAoBz+H,SAAQ,SAAUqjI,GAChDvgI,EAAUugI,GAAa5E,EAAmB4E,EAC5C,IACA,IAAIC,EAAiB/tI,EAAO21H,aAAe,CAAC,EAC5ClvH,OAAOqD,KAAKikI,GAAgBtjI,SAAQ,SAAUC,GAC5CirH,GAAYjrH,GAAOqjI,EAAerjI,EACpC,GACF,IAEIgP,IAAa/H,EAAMY,QACrB42H,EAAWliH,GAAc,CAAC,EAAGkiH,EAAU,CACrC52H,MAAOmH,KAIJyvH,CACT,EAyBA2D,GAAkB,SAAuBv/H,EAAW66H,GAClD,IAAI/oE,EAASl3D,UAAUrI,OAAS,QAAsBwS,IAAjBnK,UAAU,GAAmBA,UAAU,GAAKykI,GAC7EI,EAAiB7kI,UAAUrI,OAAS,QAAsBwS,IAAjBnK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACtF6lI,EAA2B7lI,UAAUrI,OAAS,QAAsBwS,IAAjBnK,UAAU,IAAmBA,UAAU,GAC1F8lI,EAAmB9lI,UAAUrI,OAAS,EAAIqI,UAAU,QAAKmK,EAK7D,IAAK27H,EAAkB,CACrB,IAAInmH,EAAQ4lH,GAAoBngI,GAChC0gI,EAAmBxnI,OAAOqD,KAAKge,GAAO5c,QAAO,SAAUggE,EAAKxgE,GAS1D,MAJY,SAARA,IACFwgE,EAAIxgE,IAAO,GAGNwgE,CACT,GAAG,CAAC,EACN,CAEA,GAAIrmE,MAAM0E,QAAQ6+H,KAAqBA,EAAgBz2H,MAAO,CAC5D,IAAIu8H,EAAW9F,EAAgB3jI,KAAI,SAAUmF,GAE3C,GAAIqkI,EAAkB,CACpB,IAAIxsE,EAAQ0rE,GAAYvjI,UAEjBqkI,EAAiBxsE,EAC1B,CAIA,OAAOqrE,GAAgBv/H,EAAW3D,EAASy1D,EAAQ2tE,EAAgBgB,EAA0BC,GAAkBrkI,OACjH,IACA,MAAO,CACLqkI,iBAAkBA,EAClBrkI,QAASskI,EAEb,CAGA,IAAK9F,GAILA,EAAgBz2H,OAASy2H,EAAgBz2H,MAAM,gBAE/Cq8H,IApUyB,SAA8BzgI,GACvD,OAAOA,EAAUT,OAASS,EAAUT,KAAKqhI,iBAC3C,CAkU+BC,CAAqBhG,GAChD,MAAO,CACL6F,iBAAkBA,EAClBrkI,QAASw+H,GAIb,IAAItiH,EAAWsiH,EAAgBz2H,MAAMmU,SAEjCuoH,EAzUiB,SAA0Bn8H,GAC/C,IAAI4T,EAAW5T,EAAK4T,SAChBvY,EAAY2E,EAAK3E,UACjB8xD,EAASntD,EAAKmtD,OACd2tE,EAAiB96H,EAAK86H,eACtBiB,EAAmB/7H,EAAK+7H,iBAE5B,IAAKnoH,EACH,OAAOA,EAGT,IAAIwoH,EAAelsH,GAAQ0D,GAE3B,GAAqB,WAAjBwoH,GAA8C,WAAjBA,EAE/B,OAAOxoH,EAGT,GAAqB,aAAjBwoH,EAEF,OAAO,WACL,IAAItuI,EAAS8lB,EAAS9d,MAAME,KAAMC,WAElC,GAAIigB,EAAAA,eAAqBpoB,GAAS,CAChC,IAAIs9D,EAAO6vE,GAAYntI,GAOvB,cALOiuI,EAAiB3wE,GAEHwvE,GAAgBv/H,EAAWvN,EAAQq/D,EAAQ2tE,GAAgB,EAAMiB,GACzDrkI,OAG/B,CAEA,OAAO5J,CACT,EAGF,GAAuC,IAAnCooB,EAAAA,SAAey9D,MAAM//D,IAAmBA,EAAShZ,KAAM,CAGzD,IAAIyhI,EAAYnmH,EAAAA,SAAesnE,KAAK5pE,GAEhCq6C,EAAQgtE,GAAYoB,GAOxB,cALON,EAAiB9tE,GAEF2sE,GAAgBv/H,EAAWghI,EAAWlvE,EAAQ2tE,GAAgB,EAAMiB,GAC5DrkI,OAGhC,CAEA,OAAOwe,EAAAA,SAAe3jB,IAAIqhB,GAAU,SAAUwb,GAC5C,GAAIlZ,EAAAA,eAAqBkZ,GAAQ,CAC/B,IAAI0/B,EAAQmsE,GAAY7rG,GAOxB,cALO2sG,EAAiBjtE,GAEF8rE,GAAgBv/H,EAAW+zB,EAAO+9B,EAAQ2tE,GAAgB,EAAMiB,GACvDrkI,OAGjC,CAEA,OAAO03B,CACT,GACF,CAsQoBktG,CAAiB,CACjC1oH,SAAUA,EACVvY,UAAWA,EACX8xD,OAAQA,EACR2tE,eAAgBA,EAChBiB,iBAAkBA,IAGhB9E,EA3Qc,SAAuB5jH,GACzC,IAAIhY,EAAYgY,EAAMhY,UAClB8xD,EAAS95C,EAAM85C,OACf2tE,EAAiBznH,EAAMynH,eACvBr7H,EAAQ4T,EAAM5T,MACds8H,EAAmB1oH,EAAM0oH,iBACzB9E,EAAWx3H,EAqBf,OApBAlL,OAAOqD,KAAK6H,GAAOlH,SAAQ,SAAUkM,GAEnC,GAAa,aAATA,EAAJ,CAIA,IAAI83H,EAAY98H,EAAMgF,GAEtB,GAAIyR,EAAAA,eAAqBqmH,GAAY,CACnC,IAAIrtE,EAAQ+rE,GAAYsB,UAEjBR,EAAiB7sE,GACxB+nE,EAAWliH,GAAc,CAAC,EAAGkiH,GAE7B,IACIv/H,EADkBkjI,GAAgBv/H,EAAWkhI,EAAWpvE,EAAQ2tE,GAAgB,EAAMiB,GAC5DrkI,QAE9Bu/H,EAASxyH,GAAQ/M,CACnB,CAdA,CAeF,IACOu/H,CACT,CA+OiBuF,CAAc,CAC3BnhI,UAAWA,EACX8xD,OAAQA,EACR2tE,eAAgBA,EAChBiB,iBAAkBA,EAClBt8H,MAAOy2H,EAAgBz2H,QAazB,GAVAw3H,EAAW4D,GAAY,CACrBx/H,UAAWA,EACX8xD,OAAQA,EACR2tE,eAAgBA,EAChBr7H,MAAOw3H,EACPf,gBAAiBA,IAKfiG,IAAgBvoH,GAAYqjH,IAAaf,EAAgBz2H,MAC3D,MAAO,CACLs8H,iBAAkBA,EAClBrkI,QAASw+H,GAIb,IAAIx+H,EAhHc,SAAuBw+H,EAAiBe,EAAUkF,GAQpE,MANoC,kBAAzBjG,EAAgBt7H,OACzBq8H,EAAWliH,GAAc,CAAC,EAAGkiH,EAAU,CACrC,eAAe,KAIZ/gH,EAAAA,aAAmBggH,EAAiBe,EAAUkF,EACvD,CAuGgBM,CAAcvG,EAAiBe,IAAaf,EAAgBz2H,MAAQw3H,EAAW,CAAC,EAAGkF,GAEjG,MAAO,CACLJ,iBAAkBA,EAClBrkI,QAASA,EAEb,EAeA,UC/ZA,SAAS+c,KAA2Q,OAA9PA,GAAWlgB,OAAOmgB,QAAU,SAAUnd,GAAU,IAAK,IAAI7E,EAAI,EAAGA,EAAIuD,UAAUrI,OAAQ8E,IAAK,CAAE,IAAI8E,EAASvB,UAAUvD,GAAI,IAAK,IAAI8F,KAAOhB,EAAcjD,OAAO3B,UAAUiB,eAAehB,KAAK2E,EAAQgB,KAAQjB,EAAOiB,GAAOhB,EAAOgB,GAAU,CAAE,OAAOjB,CAAQ,EAAUkd,GAAS3e,MAAME,KAAMC,UAAY,CAKrT,IAAIymI,GAAqBxmH,EAAAA,mBAAoB9V,GACzCu8H,GAAsBzmH,EAAAA,mBAAoB9V,GAC9C,SAASw8H,GAAmBC,GACjC,IAAIC,EAAqB5mH,EAAAA,YAAiB,SAAUzW,EAAOsU,GACzD,IAAIgpH,GAAsB5oF,EAAAA,EAAAA,YAAWwoF,IACjCK,GAAqB7oF,EAAAA,EAAAA,YAAWuoF,IACpC,OAAOxmH,EAAAA,cAAoB2mH,EAAkBpoH,GAAS,CACpDV,IAAKA,GACJtU,EAAO,CACRs9H,oBAAqBA,EACrBC,mBAAoBA,IAExB,IAEA,OADAF,EAAmBxiI,YAAc,sBAAsB7C,OAAOolI,EAAiBviI,aAAeuiI,EAAiB1tI,MAAQ,YAAa,KAC7H8tI,KAAaH,EAAoBD,EAC1C,CCpBA,SAAS3sH,GAAQrb,GAAwT,OAAtOqb,GAArD,oBAAXpZ,QAAoD,kBAApBA,OAAOrE,SAAmC,SAAiBoC,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXiC,QAAyBjC,EAAIsb,cAAgBrZ,QAAUjC,IAAQiC,OAAOlE,UAAY,gBAAkBiC,CAAK,EAAYqb,GAAQrb,EAAM,CAE9V,SAAS4L,GAAgBF,EAAUV,GAAe,KAAMU,aAAoBV,GAAgB,MAAM,IAAIW,UAAU,oCAAwC,CAExJ,SAAS8P,GAAkB/Y,EAAQkI,GAAS,IAAK,IAAI/M,EAAI,EAAGA,EAAI+M,EAAM7R,OAAQ8E,IAAK,CAAE,IAAI2J,EAAaoD,EAAM/M,GAAI2J,EAAWqD,WAAarD,EAAWqD,aAAc,EAAOrD,EAAWsD,cAAe,EAAU,UAAWtD,IAAYA,EAAWuD,UAAW,GAAMrL,OAAOC,eAAe+C,EAAQ8E,EAAW7D,IAAK6D,EAAa,CAAE,CAI5T,SAASoV,GAA2BtG,EAAMtY,GAAQ,OAAIA,GAA2B,WAAlBqd,GAAQrd,IAAsC,oBAATA,EAA8C2e,GAAuBrG,GAAtCtY,CAA6C,CAEhL,SAAS2e,GAAuBrG,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIuG,eAAe,6DAAgE,OAAOvG,CAAM,CAErK,SAAS+xH,GAAK3lI,EAAQ7C,EAAUyoI,GAAuV,OAAtRD,GAA9B,qBAAZpsH,SAA2BA,QAAQiV,IAAcjV,QAAQiV,IAAqB,SAAcxuB,EAAQ7C,EAAUyoI,GAAY,IAAIrxG,EAErL,SAAwB3zB,EAAQzD,GAAY,MAAQH,OAAO3B,UAAUiB,eAAehB,KAAKsF,EAAQzD,IAA8D,QAAjDyD,EAASmZ,GAAgBnZ,MAAuC,OAAOA,CAAQ,CAFDilI,CAAe7lI,EAAQ7C,GAAW,GAAKo3B,EAAL,CAAmB,IAAIilC,EAAOx8D,OAAOoH,yBAAyBmwB,EAAMp3B,GAAW,OAAIq8D,EAAKhrC,IAAcgrC,EAAKhrC,IAAIlzB,KAAKsqI,GAAoBpsE,EAAKt8D,KAA5H,CAAmI,EAAYyoI,GAAK3lI,EAAQ7C,EAAUyoI,GAAY5lI,EAAS,CAI1a,SAAS+Z,GAAgBd,GAAwJ,OAAnJc,GAAkB/c,OAAOkc,eAAiBlc,OAAOqH,eAAiB,SAAyB4U,GAAK,OAAOA,EAAEE,WAAanc,OAAOqH,eAAe4U,EAAI,EAAUc,GAAgBd,EAAI,CAE5M,SAASwB,GAAUH,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAItR,UAAU,sDAAyDqR,EAASjf,UAAY2B,OAAOwd,OAAOD,GAAcA,EAAWlf,UAAW,CAAEud,YAAa,CAAE1b,MAAOod,EAAUjS,UAAU,EAAMD,cAAc,KAAemS,GAAYvB,GAAgBsB,EAAUC,EAAa,CAEhY,SAASvB,GAAgBC,EAAGxT,GAA+G,OAA1GuT,GAAkBhc,OAAOkc,gBAAkB,SAAyBD,EAAGxT,GAAsB,OAAjBwT,EAAEE,UAAY1T,EAAUwT,CAAG,EAAUD,GAAgBC,EAAGxT,EAAI,CAEzK,SAAS0a,GAAellB,EAAKE,GAAK,OAMlC,SAAyBF,GAAO,GAAIG,MAAM0E,QAAQ7E,GAAM,OAAOA,CAAK,CAN3BmlB,CAAgBnlB,IAIzD,SAA+BA,EAAKE,GAAK,IAAIolB,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWH,OAAKzX,EAAW,IAAM,IAAK,IAAiCwX,EAA7BzJ,EAAK3b,EAAIsE,OAAOrE,cAAmBslB,GAAMH,EAAKzJ,EAAGjV,QAAQ+e,QAAoBH,EAAKhlB,KAAK8kB,EAAGnjB,QAAY/B,GAAKolB,EAAKlqB,SAAW8E,GAA3DqlB,GAAK,GAAkE,CAAE,MAAOlJ,GAAOmJ,GAAK,EAAMH,EAAKhJ,CAAK,CAAE,QAAU,IAAWkJ,GAAsB,MAAhB5J,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAI6J,EAAI,MAAMH,CAAI,CAAE,CAAE,OAAOC,CAAM,CAJvVI,CAAsB1lB,EAAKE,IAE5F,WAA8B,MAAM,IAAI8N,UAAU,uDAAyD,CAFT+X,EAAoB,CAQtH,SAASxD,GAAcxd,GAAU,IAAK,IAAI7E,EAAI,EAAGA,EAAIuD,UAAUrI,OAAQ8E,IAAK,CAAE,IAAI8E,EAAyB,MAAhBvB,UAAUvD,GAAauD,UAAUvD,GAAK,CAAC,EAAOiiB,EAAUpgB,OAAOqD,KAAKJ,GAAqD,oBAAjCjD,OAAOsD,wBAAwC8c,EAAUA,EAAQld,OAAOlD,OAAOsD,sBAAsBL,GAAQM,QAAO,SAAUgd,GAAO,OAAOvgB,OAAOoH,yBAAyBnE,EAAQsd,GAAKpV,UAAY,MAAOiV,EAAQpc,SAAQ,SAAUC,GAAOmZ,GAAgBpa,EAAQiB,EAAKhB,EAAOgB,GAAO,GAAI,CAAE,OAAOjB,CAAQ,CAEhe,SAASoa,GAAgB9c,EAAK2D,EAAK/D,GAAiK,OAApJ+D,KAAO3D,EAAON,OAAOC,eAAeK,EAAK2D,EAAK,CAAE/D,MAAOA,EAAOiL,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkB/K,EAAI2D,GAAO/D,EAAgBI,CAAK,CAEhN,SAASogB,GAAyBzd,EAAQ0d,GAAY,GAAc,MAAV1d,EAAgB,MAAO,CAAC,EAAG,IAAkEgB,EAAK9F,EAAnE6E,EAEzF,SAAuCC,EAAQ0d,GAAY,GAAc,MAAV1d,EAAgB,MAAO,CAAC,EAAG,IAA2DgB,EAAK9F,EAA5D6E,EAAS,CAAC,EAAO4d,EAAa5gB,OAAOqD,KAAKJ,GAAqB,IAAK9E,EAAI,EAAGA,EAAIyiB,EAAWvnB,OAAQ8E,IAAO8F,EAAM2c,EAAWziB,GAAQwiB,EAAS1S,QAAQhK,IAAQ,IAAajB,EAAOiB,GAAOhB,EAAOgB,IAAQ,OAAOjB,CAAQ,CAFhN6d,CAA8B5d,EAAQ0d,GAAuB,GAAI3gB,OAAOsD,sBAAuB,CAAE,IAAIwd,EAAmB9gB,OAAOsD,sBAAsBL,GAAS,IAAK9E,EAAI,EAAGA,EAAI2iB,EAAiBznB,OAAQ8E,IAAO8F,EAAM6c,EAAiB3iB,GAAQwiB,EAAS1S,QAAQhK,IAAQ,GAAkBjE,OAAO3B,UAAUoF,qBAAqBnF,KAAK2E,EAAQgB,KAAgBjB,EAAOiB,GAAOhB,EAAOgB,GAAQ,CAAE,OAAOjB,CAAQ,CAI3e,SAAS+yD,GAAeC,GAAO,IAAI/xD,EAEnC,SAAsB4T,EAAOo+C,GAAQ,GAAuB,WAAnBt6C,GAAQ9D,IAAiC,OAAVA,EAAgB,OAAOA,EAAO,IAAIq+C,EAAOr+C,EAAMtV,OAAO4zD,aAAc,QAAatqD,IAATqqD,EAAoB,CAAE,IAAIE,EAAMF,EAAK53D,KAAKuZ,EAAOo+C,GAAQ,WAAY,GAAqB,WAAjBt6C,GAAQy6C,GAAmB,OAAOA,EAAK,MAAM,IAAInqD,UAAU,+CAAiD,CAAE,OAAiB,WAATgqD,EAAoBz2D,OAASsZ,QAAQjB,EAAQ,CAFnVw+C,CAAaL,EAAK,UAAW,MAAwB,WAAjBr6C,GAAQ1X,GAAoBA,EAAMzE,OAAOyE,EAAM,CAW5H,IACI6kI,GACAC,GAFAC,GAAyC,CAAC,YAAa,SAAU,SAAU,SAAU,OAAQ,YAAa,QA0D9G,SAASC,GAAgBC,GACvB,GAAIA,EAASC,uBAAyBD,EAASC,sBAAsB9vI,OAAS,EAAG,CAC/E,IAAI+vI,EAAqBF,EAASC,sBAAsB1kI,QAAO,SAAU4c,EAAOpd,GAE1Dod,EAAMpd,GAG1B,OAFqByc,GAAyBW,EAAO,CAACpd,GAAKjG,IAAI+3D,IAGjE,GAAGkxE,GAAoBiC,IAEvBA,EAAStH,iBAAmBwH,EAC5BF,EAASjoH,SAAS,CAChBygH,kBAAmB0H,GAEvB,CACF,CAEA,SAASC,GAAgBH,GACvB,IAAI1F,EAAyB0F,EAAS1F,uBAClCwC,EAAoCkD,EAASlD,kCACjDkD,EAASlC,kBAAmB,EAExBxD,GACFA,EAAuBnhE,SAGrB2jE,GACFhmI,OAAOqD,KAAK2iI,GAAmChiI,SAAQ,SAAUkhI,GAC/Dc,EAAkCd,GAAO7iE,QAC3C,GAAG6mE,EAEP,CAEA,SAASI,GAAcC,EAAYC,EAAeC,GAChD,IAAI7wE,EAAS2wE,GAAcC,GAAiBC,EAM5C,OAJIA,GAAa7wE,IAAW6wE,IAC1B7wE,EAASp4C,GAAc,CAAC,EAAGipH,EAAW7wE,IAGjCA,CACT,CAEA,SAAS8wE,GAAsBR,EAAUvH,EAAiBgI,EAAgBJ,GACxE,IAAIK,EAAiBC,GAAcX,EAAUvH,EAAiBgI,GAC1DnC,EAAmBoC,EAAepC,iBAClCrkI,EAAUymI,EAAezmI,QAI7B,OAFA+lI,EAASC,sBAAwBnpI,OAAOqD,KAAKmkI,GAEzC+B,EACK5nH,EAAAA,cAAoBymH,GAAoB9+C,SAAU,CACvDppF,MAAOqpI,GACNpmI,GAGEA,CACT,CAEA,SAAS2mI,GAAgCC,EAAenxE,GACtD,IAAIoxE,EAAiBroH,EAAAA,YAAiB,SAAUzW,EAAOsU,GACrD,IAAIyqH,EAAe/+H,EAAM++H,aACrBC,EAAaxpH,GAAyBxV,EAAO,CAAC,iBAE9Cs9H,GAAsB5oF,EAAAA,EAAAA,YAAWwoF,IACjCK,GAAqB7oF,EAAAA,EAAAA,YAAWuoF,IAKhCgC,EAAahnH,IAHDi9B,EAAAA,EAAAA,UAAS,CACvBshF,kBAAmB,CAAC,IAEqB,GACvCrgH,EAAQ8oH,EAAW,GACnBlpH,EAAWkpH,EAAW,GAEtBC,GAAcjqF,EAAAA,EAAAA,QAAO,CACvB9+B,MAAOA,EACPJ,SAAUA,EACV+kH,uCAAmCn6H,EACnC23H,4BAAwB33H,EACxBm7H,kBAAkB,EAClBpF,sBAAkB/1H,EAClBs9H,2BAAuBt9H,EACvBu7H,mBAAoBqB,IACnB1tG,QAGHqvG,EAAY/oH,MAAQA,GACpBw+B,EAAAA,EAAAA,YAAU,WACR,OAAO,WACLwpF,GAAgBe,EAClB,CACF,GAAG,CAACA,IACJ,IAAIC,EAAoBD,EAAYjB,uBAAyBiB,EAAYjB,sBAAsB9vI,OAAS,GACxGwmD,EAAAA,EAAAA,YAAU,WACRopF,GAAgBmB,EAClB,GAAG,CAACC,EAAmBD,IACvB,IAAIzI,EAAkBoI,EAAcG,EAAY1qH,GAC5C8qH,EAAgBhB,GAAcW,EAAczB,EAAqB5vE,GACrE,OAAO8wE,GAAsBU,EAAazI,EAAiB2I,EAAeL,EAC5E,IAGA,OAFAD,EAAetC,mBAAoB,EACnCsC,EAAelkI,aAAeikI,EAAcjkI,aACrC4iI,KAAasB,EAAgBD,EACtC,CAEA,SAASQ,GAA6BR,EAAeS,EAAmB5xE,GACtE,IAAIoxE,EAEJ,SAAUS,GAQR,SAAST,IACP,IAAIrsH,EAkBJ,OAhBAzR,GAAgBzK,KAAMuoI,IAEtBrsH,EAAQT,GAA2Bzb,KAAMsb,GAAgBitH,GAAgBzoI,MAAME,KAAMC,aAC/E2f,MAAQ1D,EAAM0D,OAAS,CAAC,EAC9B1D,EAAMypH,mBAAqBzpH,EAAMzS,MAAMu9H,mBACvC9qH,EAAMqoH,kCAAoCroH,EAAMqoH,kCAChDroH,EAAM6lH,uBAAyB7lH,EAAM6lH,uBACrC7lH,EAAMqpH,kBAAmB,EACzBrpH,EAAMikH,sBAAmB,EACzBjkH,EAAMwrH,2BAAwB,EAC9BxrH,EAAM0D,MAAMqgH,kBAAoB,CAAC,EA3JvC,SAAwBgJ,EAAcF,GACpCzB,GAAe/kI,SAAQ,SAAUpJ,GAC/B,IAAI+vI,EAAW3qI,OAAOoH,yBAAyBsjI,EAAc9vI,GACzDgwI,GAAcD,GAAY,CAAC,GAAGzqI,MAElC,GAAK0qI,EAAL,CAIA,IACIC,GADa7qI,OAAOoH,yBAAyB0hI,GAAcluI,IACxB,CAAC,GAAGsF,MACpBsqI,EAAkBnsI,UAAUzD,IAK1BgwI,IAAeC,IAEtCF,GAAY3qI,OAAOC,eAAeuqI,EAAkBnsI,UAAWzD,EAAM+vI,UAG9DD,EAAa9vI,GAdtB,CAgBF,GACF,CAwIMkwI,CAHW7tH,GAAuBU,GAGb6sH,GACd7sH,CACT,CA7OJ,IAAsBrS,EAAaC,EAAYC,EA2Q3C,OAzDAiS,GAAUusH,EAAgBS,GAlNRn/H,EA+OL0+H,GA/OkBz+H,EA+OF,CAAC,CAC5BtH,IAAK,qBACL/D,MAAO,SAA4BohB,EAAWs7C,EAAWU,GACnDqrE,GAAK5rH,GAAgBitH,EAAe3rI,WAAY,qBAAsBoD,OACxEknI,GAAK5rH,GAAgBitH,EAAe3rI,WAAY,qBAAsBoD,MAAMnD,KAAKmD,KAAM6f,EAAWs7C,EAAWU,GAG/G2rE,GAAgBxnI,KAClB,GACC,CACDwC,IAAK,uBACL/D,MAAO,WACDyoI,GAAK5rH,GAAgBitH,EAAe3rI,WAAY,uBAAwBoD,OAC1EknI,GAAK5rH,GAAgBitH,EAAe3rI,WAAY,uBAAwBoD,MAAMnD,KAAKmD,MAGrF4nI,GAAgB5nI,KAClB,GACC,CACDwC,IAAK,SACL/D,MAAO,WAIL,OAAOwpI,GAAsBjoI,KAHPknI,GAAK5rH,GAAgBitH,EAAe3rI,WAAY,SAAUoD,MAAMnD,KAAKmD,MAEvE6nI,GAAc7nI,KAAKyJ,MAAM++H,aAAcxoI,KAAKyJ,MAAMs9H,oBAAqB5vE,GACxBn3D,KAAKyJ,MAAM++H,aAChF,MAxQwEluH,GAAkBzQ,EAAYjN,UAAWkN,GAAiBC,GAAauQ,GAAkBzQ,EAAaE,GA2QzKw+H,CACT,CA3DA,CA2DEQ,GA8BF,OA3BAR,EAAetC,mBAAoB,EACnCoB,GAAekB,EAAe3rI,UAC9B0qI,GAAiB/oI,OAAOmH,oBAAoB2hI,IAAcvlI,QAAO,SAAUiF,GACzE,MAAa,gBAANA,GAAkD,oBAApBsgI,GAAatgI,EACpD,IApOF,SAAwBvF,EAAQD,GAC9BhD,OAAOmH,oBAAoBlE,GAAQe,SAAQ,SAAUC,GACnD,GAAI+kI,GAAuC/6H,QAAQhK,GAAO,IAAMjB,EAAO1D,eAAe2E,GAAM,CAC1F,IAAI6D,EAAa9H,OAAOoH,yBAAyBnE,EAAQgB,GACzD6D,GAAc9H,OAAOC,eAAe+C,EAAQiB,EAAK6D,EACnD,CACF,GACF,CAkOEijI,CAAehB,EAAeC,GAU1BA,EAAe5jI,WAAa4jI,EAAe5jI,UAAU0F,QACvDk+H,EAAe5jI,UAAYoa,GAAc,CAAC,EAAGwpH,EAAe5jI,UAAW,CACrE0F,MAAO2P,KAAAA,UAAoB,CAACA,KAAAA,MAAiBA,KAAAA,YAKjDuuH,EAAejkI,YAAcgkI,EAAchkI,aAAegkI,EAAcnvI,MAAQ,YACzEytI,GAAmB2B,EAC5B,CAoBA,IAAIgB,IAAwBphD,EAAAA,EAAAA,aAAW,WACrC,OAAO,IACT,IAAGznF,SACY,SAAS8oI,GAAkBC,GACxC,IAAItyE,EAASl3D,UAAUrI,OAAS,QAAsBwS,IAAjBnK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAElF,GAAIspI,IAAyBE,EAA0B/oI,WAAa6oI,GAClE,OAAOlB,GAAgCoB,EAA0BjkI,OAAQ2xD,GAG3E,GAAyC,oBAA9BsyE,EACT,OAqCJ,SAAiCtyE,EAAQsyE,GACvC,IAAIC,EAAY3qH,GAAc,CAAC,EAAGo4C,EAAQsyE,GAE1C,OAAO,SAAUE,GACf,OAAOH,GAAkBG,EAAmBD,EAC9C,CACF,CA3CWE,CAAwBzyE,EAAQsyE,GAGzC,IAAInB,EAAgBmB,EAEpB,GAnRF,SAAqBpkI,GACnB,IAAIu/G,EAAQv/G,EAAUzI,WAAa,CAAC,EACpC,OAAQyI,EAAU8mD,mBAAqBy4D,EAAMz4D,mBAAqB9mD,EAAUG,SAAWo/G,EAAMp/G,MAC/F,CAgRMqkI,CAAYvB,GACd,OAAOD,GAAgCC,EAAenxE,GAGxD,IAtCqC4xE,EA1OhB1jI,EAgRjBykI,EAAsBxB,EAyB1B,MAxS4B,oBADPjjI,EAoRHykI,IAnRwB,eAAe5xI,KAAKmN,EAAU5E,cA0OxEsoI,EAAoB,SAAUgB,GAC5B,SAASC,IAGP,OADUlvH,QAAQC,UAAUgvH,EAAe9pI,UAAWD,KAAKma,YAE7D,CAMA,OAHAW,QAAQL,eAAeuvH,EAAaptI,UAAWmtI,EAAcntI,WAE7Dke,QAAQL,eAAeuvH,EAAcD,GAC9BC,CACT,CAZoB,CADiBjB,EA2CiBe,GAApDA,EA5BKf,GAgCHe,IAAwBxB,IAC1BwB,EAEA,SAAUG,GAGR,SAASlB,IAGP,OAFAt+H,GAAgBzK,KAAM+oI,GAEfttH,GAA2Bzb,KAAMsb,GAAgBytH,GAAmBjpI,MAAME,KAAMC,WACzF,CAEA,OARA+b,GAAU+sH,EAAmBkB,GAQtBlB,CACT,CAVA,CAUEe,IAGGhB,GAA6BR,EAAewB,EAAqB3yE,EAC1E,CCnXA,SAASj9C,GAAQrb,GAAwT,OAAtOqb,GAArD,oBAAXpZ,QAAoD,kBAApBA,OAAOrE,SAAmC,SAAiBoC,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXiC,QAAyBjC,EAAIsb,cAAgBrZ,QAAUjC,IAAQiC,OAAOlE,UAAY,gBAAkBiC,CAAK,EAAYqb,GAAQrb,EAAM,CAI9V,SAASyb,GAAkB/Y,EAAQkI,GAAS,IAAK,IAAI/M,EAAI,EAAGA,EAAI+M,EAAM7R,OAAQ8E,IAAK,CAAE,IAAI2J,EAAaoD,EAAM/M,GAAI2J,EAAWqD,WAAarD,EAAWqD,aAAc,EAAOrD,EAAWsD,cAAe,EAAU,UAAWtD,IAAYA,EAAWuD,UAAW,GAAMrL,OAAOC,eAAe+C,EAAQ8E,EAAW7D,IAAK6D,EAAa,CAAE,CAI5T,SAASoV,GAA2BtG,EAAMtY,GAAQ,OAAIA,GAA2B,WAAlBqd,GAAQrd,IAAsC,oBAATA,EAEpG,SAAgCsY,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIuG,eAAe,6DAAgE,OAAOvG,CAAM,CAFnBqG,CAAuBrG,GAAtCtY,CAA6C,CAIhL,SAASye,GAAgBd,GAAwJ,OAAnJc,GAAkB/c,OAAOkc,eAAiBlc,OAAOqH,eAAiB,SAAyB4U,GAAK,OAAOA,EAAEE,WAAanc,OAAOqH,eAAe4U,EAAI,EAAUc,GAAgBd,EAAI,CAI5M,SAASD,GAAgBC,EAAGxT,GAA+G,OAA1GuT,GAAkBhc,OAAOkc,gBAAkB,SAAyBD,EAAGxT,GAAsB,OAAjBwT,EAAEE,UAAY1T,EAAUwT,CAAG,EAAUD,GAAgBC,EAAGxT,EAAI,CAOzK,IAAIkjI,GAEJ,SAAUC,GAGR,SAASD,IAGP,OA7BJ,SAAyB3/H,EAAUV,GAAe,KAAMU,aAAoBV,GAAgB,MAAM,IAAIW,UAAU,oCAAwC,CA2BpJC,CAAgBzK,KAAMkqI,GAEfzuH,GAA2Bzb,KAAMsb,GAAgB4uH,GAAOpqI,MAAME,KAAMC,WAC7E,CA1BF,IAAsB4J,EAAaC,EAAYC,EAsF7C,OA9EF,SAAmB8R,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAItR,UAAU,sDAAyDqR,EAASjf,UAAY2B,OAAOwd,OAAOD,GAAcA,EAAWlf,UAAW,CAAEud,YAAa,CAAE1b,MAAOod,EAAUjS,UAAU,EAAMD,cAAc,KAAemS,GAAYvB,GAAgBsB,EAAUC,EAAa,CAY9XE,CAAUkuH,EAAOC,GApBGtgI,EA4BPqgI,EA5BoBpgI,EA4Bb,CAAC,CACnBtH,IAAK,eACL/D,MAAO,SAAsB6N,GAC3B,IAAI4P,EAAQlc,KAER3D,EAAY2D,KAAKyJ,MAAM++H,cAAgBxoI,KAAKyJ,MAAM++H,aAAansI,WAAa2D,KAAKyJ,MAAMs9H,qBAAuB/mI,KAAKyJ,MAAMs9H,oBAAoB1qI,UAC7I+tI,EAAgBpqI,KAAKyJ,MAAM2gI,cAC3BC,EAAY9rI,OAAOqD,KAAK0K,GAAQtJ,QAAO,SAAUsnI,EAAallE,GAKhE,MAJkC,WAA9BlrD,GAAQ5N,EAAO84D,MACjBklE,EAAYllE,GAAY94D,EAAO84D,IAG1BklE,CACT,GAAG,CAAC,GAEJ,OADiB/rI,OAAOqD,KAAKyoI,GAAWzyI,OAAS6nI,GAAmB2K,GAAiB,GAAIC,EAAWhuI,GAAa,IAC7FkC,OAAOqD,KAAK0K,GAAQtJ,QAAO,SAAUsnI,EAAallE,GACpE,IAAIuiC,EAAQr7F,EAAO84D,GAWnB,MATiB,iBAAbA,EACFklE,GAAepuH,EAAMquH,uBAAuB5iC,GACL,WAA9BztF,GAAQ5N,EAAO84D,MAIxBklE,GAAe7K,GAHQ2K,EAAgBhlE,EAAStpE,MAAM,KAAKS,KAAI,SAAU+sG,GACvE,OAAO8gC,EAAgB,IAAM9gC,EAAKz6E,MACpC,IAAGxxB,KAAK,KAAO+nE,EACqCuiC,EAAOtrG,IAGtDiuI,CACT,GAAG,GACL,GACC,CACD9nI,IAAK,yBACL/D,MAAO,SAAgC+rI,GACrC,IAAI77D,EAAS3uE,KAET8jI,EAAmB,GAIvB,OAHAvlI,OAAOqD,KAAK4oI,GAAoBjoI,SAAQ,SAAUkhI,GAChDK,GAAoB,UAAYL,EAAQ,IAAM90D,EAAO87D,aAAaD,EAAmB/G,IAAU,GACjG,IACOK,CACT,GACC,CACDthI,IAAK,SACL/D,MAAO,WACL,IAAKuB,KAAKyJ,MAAMk+F,MACd,OAAO,KAGT,IAAIr7F,EAAStM,KAAKyqI,aAAazqI,KAAKyJ,MAAMk+F,OAE1C,OAAOznF,EAAAA,cAAoB,QAAS,CAClCyR,wBAAyB,CACvBue,OAAQ5jC,IAGd,IAnF8DxC,GAAYwQ,GAAkBzQ,EAAYjN,UAAWkN,GAAiBC,GAAauQ,GAAkBzQ,EAAaE,GAsF3KmgI,CACT,CApEA,CAoEElqH,EAAAA,eAEFkqH,GAAMvlI,UAAY,CAChB6jI,aAAcxuH,KAAAA,OACd2tF,MAAO3tF,KAAAA,OACPowH,cAAepwH,KAAAA,QAEjBkwH,GAAM7lI,aAAe,CACnB+lI,cAAe,IAEjB,OAAexD,GAAmBsD,ICrGlC,SAAS5vH,GAAkB/Y,EAAQkI,GAAS,IAAK,IAAI/M,EAAI,EAAGA,EAAI+M,EAAM7R,OAAQ8E,IAAK,CAAE,IAAI2J,EAAaoD,EAAM/M,GAAI2J,EAAWqD,WAAarD,EAAWqD,aAAc,EAAOrD,EAAWsD,cAAe,EAAU,UAAWtD,IAAYA,EAAWuD,UAAW,GAAMrL,OAAOC,eAAe+C,EAAQ8E,EAAW7D,IAAK6D,EAAa,CAAE,CAI5T,IAAIqkI,GAEJ,WACE,SAASA,EAAYruI,IATvB,SAAyBkO,EAAUV,GAAe,KAAMU,aAAoBV,GAAgB,MAAM,IAAIW,UAAU,oCAAwC,CAUpJC,CAAgBzK,KAAM0qI,GAEtB1qI,KAAK2K,gBAAa,EAClB3K,KAAK2qI,gBAAa,EAClB3qI,KAAK4qI,aAAU,EACf5qI,KAAK2K,WAAatO,EAClB2D,KAAK2qI,WAAa,GAClB3qI,KAAK4qI,QAAU,CAAC,CAClB,CAdF,IAAsB/gI,EAAaC,EAAYC,EAsE7C,OAtEoBF,EAgBP6gI,GAhBoB5gI,EAgBP,CAAC,CACzBtH,IAAK,YACL/D,MAAO,SAAmBwvC,GACxB,IAAI/xB,EAAQlc,KAMZ,OAJ2C,IAAvCA,KAAK2qI,WAAWn+H,QAAQyhC,IAC1BjuC,KAAK2qI,WAAW7tI,KAAKmxC,GAGhB,CAEL2yB,OAAQ,WACN,IAAIiqE,EAAgB3uH,EAAMyuH,WAAWn+H,QAAQyhC,GAEzC48F,GAAiB,GACnB3uH,EAAMyuH,WAAW98E,OAAOg9E,EAAe,EAE3C,EAEJ,GACC,CACDroI,IAAK,SACL/D,MAAO,SAAgB6pG,GACrB,IAAI35B,EAAS3uE,KAQb,OANKA,KAAK4qI,QAAQtiC,KAChBtoG,KAAK4qI,QAAQtiC,IAAO,EAEpBtoG,KAAK8qI,eAGA,CAELlqE,OAAQ,kBACC+N,EAAOi8D,QAAQtiC,GAEtB35B,EAAOm8D,aACT,EAEJ,GACC,CACDtoI,IAAK,SACL/D,MAAO,WACL,OAAOF,OAAOqD,KAAK5B,KAAK4qI,SAASvtI,KAAK,KACxC,GACC,CACDmF,IAAK,cACL/D,MAAO,WACLuB,KAAK2qI,WAAWpoI,SAAQ,SAAU0rC,GAChC,OAAOA,GACT,GACF,MAnE0E3zB,GAAkBzQ,EAAYjN,UAAWkN,GAAiBC,GAAauQ,GAAkBzQ,EAAaE,GAsE3K2gI,CACT,CAnEA,GCRA,SAASxwH,GAAQrb,GAAwT,OAAtOqb,GAArD,oBAAXpZ,QAAoD,kBAApBA,OAAOrE,SAAmC,SAAiBoC,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXiC,QAAyBjC,EAAIsb,cAAgBrZ,QAAUjC,IAAQiC,OAAOlE,UAAY,gBAAkBiC,CAAK,EAAYqb,GAAQrb,EAAM,CAI9V,SAASyb,GAAkB/Y,EAAQkI,GAAS,IAAK,IAAI/M,EAAI,EAAGA,EAAI+M,EAAM7R,OAAQ8E,IAAK,CAAE,IAAI2J,EAAaoD,EAAM/M,GAAI2J,EAAWqD,WAAarD,EAAWqD,aAAc,EAAOrD,EAAWsD,cAAe,EAAU,UAAWtD,IAAYA,EAAWuD,UAAW,GAAMrL,OAAOC,eAAe+C,EAAQ8E,EAAW7D,IAAK6D,EAAa,CAAE,CAI5T,SAASoV,GAA2BtG,EAAMtY,GAAQ,OAAIA,GAA2B,WAAlBqd,GAAQrd,IAAsC,oBAATA,EAEpG,SAAgCsY,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIuG,eAAe,6DAAgE,OAAOvG,CAAM,CAFnBqG,CAAuBrG,GAAtCtY,CAA6C,CAIhL,SAASye,GAAgBd,GAAwJ,OAAnJc,GAAkB/c,OAAOkc,eAAiBlc,OAAOqH,eAAiB,SAAyB4U,GAAK,OAAOA,EAAEE,WAAanc,OAAOqH,eAAe4U,EAAI,EAAUc,GAAgBd,EAAI,CAI5M,SAASD,GAAgBC,EAAGxT,GAA+G,OAA1GuT,GAAkBhc,OAAOkc,gBAAkB,SAAyBD,EAAGxT,GAAsB,OAAjBwT,EAAEE,UAAY1T,EAAUwT,CAAG,EAAUD,GAAgBC,EAAGxT,EAAI,CAMzK,IAAIgkG,GAEJ,SAAUjuC,GAIR,SAASiuC,IACP,IAAI9uF,EAwBJ,GAnDJ,SAAyB3R,EAAUV,GAAe,KAAMU,aAAoBV,GAAgB,MAAM,IAAIW,UAAU,oCAAwC,CA6BpJC,CAAgBzK,KAAMgrG,IAEtB9uF,EAAQT,GAA2Bzb,KAAMsb,GAAgB0vF,GAAYlrG,MAAME,KAAMC,aAC3EylI,iBAAc,EACpBxpH,EAAM6uH,mBAAgB,EACtB7uH,EAAM8uH,WAAQ,EACd9uH,EAAM+uH,UAAO,EAEb/uH,EAAMgvH,UAAY,WAChB,IAAIC,EAAUjvH,EAAMwpH,YAAY0F,SAEhC,GAAID,IAAYjvH,EAAM+uH,KAAM,CAC1B,IAAI/uH,EAAM8uH,MAGR,MAAM,IAAIltI,MAAM,4DAFhBoe,EAAM8uH,MAAM34G,UAAY84G,EAK1BjvH,EAAM+uH,KAAOE,CACf,CACF,GAEKjvH,EAAMzS,MAAMu9H,mBACf,MAAM,IAAIlpI,MAAM,2CAKlB,OAFAoe,EAAMwpH,YAAcxpH,EAAMzS,MAAMu9H,mBAChC9qH,EAAM+uH,KAAO/uH,EAAMwpH,YAAY0F,SACxBlvH,CACT,CAtDF,IAAsBrS,EAAaC,EAAYC,EA2F7C,OAnFF,SAAmB8R,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAItR,UAAU,sDAAyDqR,EAASjf,UAAY2B,OAAOwd,OAAOD,GAAcA,EAAWlf,UAAW,CAAEud,YAAa,CAAE1b,MAAOod,EAAUjS,UAAU,EAAMD,cAAc,KAAemS,GAAYvB,GAAgBsB,EAAUC,EAAa,CAW9XE,CAAUgvF,EAAYjuC,GAnBFlzD,EAwDPmhG,GAxDoBlhG,EAwDR,CAAC,CACxBtH,IAAK,oBACL/D,MAAO,WACLuB,KAAK+qI,cAAgB/qI,KAAK0lI,YAAY5/D,UAAU9lE,KAAKkrI,WAErDlrI,KAAKkrI,WACP,GACC,CACD1oI,IAAK,wBACL/D,MAAO,WACL,OAAO,CACT,GACC,CACD+D,IAAK,uBACL/D,MAAO,WACDuB,KAAK+qI,eACP/qI,KAAK+qI,cAAcnqE,QAEvB,GACC,CACDp+D,IAAK,SACL/D,MAAO,WACL,IAAIkwE,EAAS3uE,KAEb,OAAOkgB,EAAAA,cAAoB,QAAS,CAClCyR,wBAAyB,CACvBue,OAAQlwC,KAAKirI,MAEfltH,IAAK,SAAa9hB,GAChB0yE,EAAOq8D,MAAQ/uI,CACjB,GAEJ,MAxF0Eqe,GAAkBzQ,EAAYjN,UAAWkN,GAAiBC,GAAauQ,GAAkBzQ,EAAaE,GA2F3KihG,CACT,CA1EA,CA0EE5sF,EAAAA,WAEF,GAAewoH,GAAmB57B,ICpGlC,SAAS/rF,GAAyBzd,EAAQ0d,GAAY,GAAc,MAAV1d,EAAgB,MAAO,CAAC,EAAG,IAAkEgB,EAAK9F,EAAnE6E,EAEzF,SAAuCC,EAAQ0d,GAAY,GAAc,MAAV1d,EAAgB,MAAO,CAAC,EAAG,IAA2DgB,EAAK9F,EAA5D6E,EAAS,CAAC,EAAO4d,EAAa5gB,OAAOqD,KAAKJ,GAAqB,IAAK9E,EAAI,EAAGA,EAAIyiB,EAAWvnB,OAAQ8E,IAAO8F,EAAM2c,EAAWziB,GAAQwiB,EAAS1S,QAAQhK,IAAQ,IAAajB,EAAOiB,GAAOhB,EAAOgB,IAAQ,OAAOjB,CAAQ,CAFhN6d,CAA8B5d,EAAQ0d,GAAuB,GAAI3gB,OAAOsD,sBAAuB,CAAE,IAAIwd,EAAmB9gB,OAAOsD,sBAAsBL,GAAS,IAAK9E,EAAI,EAAGA,EAAI2iB,EAAiBznB,OAAQ8E,IAAO8F,EAAM6c,EAAiB3iB,GAAQwiB,EAAS1S,QAAQhK,IAAQ,GAAkBjE,OAAO3B,UAAUoF,qBAAqBnF,KAAK2E,EAAQgB,KAAgBjB,EAAOiB,GAAOhB,EAAOgB,GAAQ,CAAE,OAAOjB,CAAQ,CAe3e,IAAI8pI,GAAiBC,IAAS,SAAUthI,GACtC,IAAI4T,EAAW5T,EAAK4T,SAChB6qH,EAAaxpH,GAAyBjV,EAAM,CAAC,aAEjD,OAAOkW,EAAAA,cAAoB,MAAOuoH,EAAY7qH,EAAUsC,EAAAA,cAAoB8qF,GAAY,MAC1F,IAeA,GAbgB,SAAmBvhG,GAKjC,IAAI++H,EAAe/+H,EAAM++H,aACrB+C,GAAgBptF,EAAAA,EAAAA,YAAWwoF,IAC3BjB,GAAchnF,EAAAA,EAAAA,QAnBpB,SAAwB8sF,EAAYD,GAClC,IAAIlvI,EAAYmvI,GAAcA,EAAWnvI,WAAakvI,GAAiBA,EAAclvI,UACrF,OAAO,IAAIquI,GAAYruI,EACzB,CAgB2BovI,CAAejD,EAAc+C,IACtD,OAAOrrH,EAAAA,cAAoBwmH,GAAmB7+C,SAAU,CACtDppF,MAAOinI,EAAYpsG,SAClBpZ,EAAAA,cAAoBmrH,GAAgB5hI,GACzC,ECzBA,SAASiiI,GAAO3C,GACd,OAAOuC,GAASvC,EAClB,CAQA2C,GAAO/G,QAAUA,GACjB+G,GAAOxB,MAAQA,GACfwB,GAAOC,UAAYA,GACnBD,GAAO3K,SAAWA,GAClB2K,GAAOnJ,UCnBQ,SAAmBqJ,EAAezyI,GAC/C,MAAO,CACL2pI,mBAAmB,EACnBH,UAAW,SAAmBtmI,GAC5B,IAAIwvI,E1BuGH,SAA8BxvI,GACnC,OAAO6iI,GAAY7iI,GAAW6O,mBAAqB,WACrD,C0BzG8B4gI,CAAqBzvI,GACzCsrG,EAAQppG,OAAOqD,KAAKgqI,GAAervI,KAAI,SAAUwvI,GACnD,OAAOtM,GAAmBsM,EAAYH,EAAcG,GAAa1vI,EACnE,IAAGgB,KAAK,MACJ8lC,GAAiBhqC,EAAOA,EAAO,IAAM,IAAM,oBAAsB29F,GAAK6Q,GAE1E,MAAO,CACLW,IAFQ,IAAMujC,EAAoB,IAAM1oG,EAAgB,OAASwkE,EAAQ,QAGzExkE,cAAeA,EAEnB,EAEJ,EDaA,IEMI6oG,GAgqBFC,GFtqBF,MEhCI3hE,GAAY/rE,OAAOC,eACnB0tI,GAAsB3tI,OAAOsD,sBAC7B6oE,GAAensE,OAAO3B,UAAUiB,eAChCsuI,GAAe5tI,OAAO3B,UAAUoF,qBAChCmpE,GAAkB,SAACtsE,EAAK2D,EAAK/D,GAAK,OAAK+D,KAAO3D,EAAMyrE,GAAUzrE,EAAK2D,EAAK,CAAEkH,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAMnL,MAAAA,IAAWI,EAAI2D,GAAO/D,CAAK,EAC3J2tI,GAAiB,SAACpwI,EAAGuK,GACvB,IAAK,IAAIkI,KAAQlI,IAAMA,EAAI,CAAC,GACtBmkE,GAAa7tE,KAAK0J,EAAGkI,IACvB08D,GAAgBnvE,EAAGyS,EAAMlI,EAAEkI,IAC/B,GAAIy9H,GAAmB,KACkBznE,EADlBC,EAAAoG,EACJohE,GAAoB3lI,IAAE,IAAvC,IAAAm+D,EAAAjpE,MAAAgpE,EAAAC,EAAA39D,KAAAkb,MAAyC,CAAhCxT,EAAIg2D,EAAAhmE,MACP0tI,GAAatvI,KAAK0J,EAAGkI,IACvB08D,GAAgBnvE,EAAGyS,EAAMlI,EAAEkI,GAC/B,CAAC,OAAAoK,GAAA6rD,EAAAp+D,EAAAuS,EAAA,SAAA6rD,EAAAj+D,GAAA,EACH,OAAOzK,CACT,EACIqwI,GAAY,SAAC7qI,EAAQ8qI,GACvB,IAAI/qI,EAAS,CAAC,EACd,IAAK,IAAIkN,KAAQjN,EACXkpE,GAAa7tE,KAAK2E,EAAQiN,IAAS69H,EAAQ9/H,QAAQiC,GAAQ,IAC7DlN,EAAOkN,GAAQjN,EAAOiN,IAC1B,GAAc,MAAVjN,GAAkB0qI,GAAmB,KACKpnE,EADLC,EAAA+F,EACtBohE,GAAoB1qI,IAAO,IAA5C,IAAAujE,EAAAtpE,MAAAqpE,EAAAC,EAAAh+D,KAAAkb,MAA8C,CAArCxT,EAAIq2D,EAAArmE,MACP6tI,EAAQ9/H,QAAQiC,GAAQ,GAAK09H,GAAatvI,KAAK2E,EAAQiN,KACzDlN,EAAOkN,GAAQjN,EAAOiN,GAC1B,CAAC,OAAAoK,GAAAksD,EAAAz+D,EAAAuS,EAAA,SAAAksD,EAAAt+D,GAAA,EACH,OAAOlF,CACT,GAYA,SAAE0qI,GACA,IAAMM,EAAO,WAMX,SAAAA,EAAYlzI,EAASmzI,EAAsBC,EAAeC,GAQxD,GAR6DjiI,EAAA,KAAA8hI,GAC7DvsI,KAAK3G,QAAUA,EACf2G,KAAKwsI,qBAAuBA,EAG5BxsI,KAAK2sI,QAAU,GAEf3sI,KAAK2mG,WAAa,GACdttG,EAAUkzI,EAAQK,aAAevzI,EAAUkzI,EAAQM,YACrD,MAAM,IAAIC,WAAW,8BACvB,GAAIJ,GAAO,GAAKA,EAAM,EACpB,MAAM,IAAII,WAAW,2BACvB9sI,KAAKulD,KAAiB,EAAVlsD,EAAc,GAE1B,IADA,IAAI0zI,EAAM,GACDrwI,EAAI,EAAGA,EAAIsD,KAAKulD,KAAM7oD,IAC7BqwI,EAAIjwI,MAAK,GACX,IAAK,IAAIJ,EAAI,EAAGA,EAAIsD,KAAKulD,KAAM7oD,IAC7BsD,KAAK2sI,QAAQ7vI,KAAKiwI,EAAIn8H,SACtB5Q,KAAK2mG,WAAW7pG,KAAKiwI,EAAIn8H,SAE3B5Q,KAAKgtI,uBACL,IAAMC,EAAejtI,KAAKktI,oBAAoBT,GAE9C,GADAzsI,KAAKmtI,cAAcF,IACP,GAARP,EAEF,IADA,IAAIU,EAAa,IACR1wI,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1BsD,KAAKqtI,UAAU3wI,GACfsD,KAAKstI,eAAe5wI,GACpB,IAAM6wI,EAAUvtI,KAAKwtI,kBACjBD,EAAUH,IACZV,EAAMhwI,EACN0wI,EAAaG,GAEfvtI,KAAKqtI,UAAU3wI,EACjB,CAEF+wI,EAAO,GAAKf,GAAOA,GAAO,GAC1B1sI,KAAKs6H,KAAOoS,EACZ1sI,KAAKqtI,UAAUX,GACf1sI,KAAKstI,eAAeZ,GACpB1sI,KAAK2mG,WAAa,EACpB,CA2ZC,OArZDp9F,EAAAgjI,EAAA,EAAA/pI,IAAA,YAAA/D,MAmEA,SAAUvC,EAAGmL,GACX,OAAO,GAAKnL,GAAKA,EAAI8D,KAAKulD,MAAQ,GAAKl+C,GAAKA,EAAIrH,KAAKulD,MAAQvlD,KAAK2sI,QAAQtlI,GAAGnL,EAC/E,GACA,CAAAsG,IAAA,aAAA/D,MACA,WACE,OAAOuB,KAAK2sI,OACd,GAEA,CAAAnqI,IAAA,uBAAA/D,MACA,WACE,IAAK,IAAI/B,EAAI,EAAGA,EAAIsD,KAAKulD,KAAM7oD,IAC7BsD,KAAK0tI,kBAAkB,EAAGhxI,EAAGA,EAAI,GAAK,GACtCsD,KAAK0tI,kBAAkBhxI,EAAG,EAAGA,EAAI,GAAK,GAExCsD,KAAK2tI,kBAAkB,EAAG,GAC1B3tI,KAAK2tI,kBAAkB3tI,KAAKulD,KAAO,EAAG,GACtCvlD,KAAK2tI,kBAAkB,EAAG3tI,KAAKulD,KAAO,GAGtC,IAFA,IAAMqoF,EAAc5tI,KAAK6tI,+BACnBC,EAAWF,EAAYh2I,OACpB8E,EAAI,EAAGA,EAAIoxI,EAAUpxI,IAC5B,IAAK,IAAImT,EAAI,EAAGA,EAAIi+H,EAAUj+H,IACjB,GAALnT,GAAe,GAALmT,GAAe,GAALnT,GAAUmT,GAAKi+H,EAAW,GAAKpxI,GAAKoxI,EAAW,GAAU,GAALj+H,GAC5E7P,KAAK+tI,qBAAqBH,EAAYlxI,GAAIkxI,EAAY/9H,IAG5D7P,KAAKstI,eAAe,GACpBttI,KAAKguI,aACP,GAEA,CAAAxrI,IAAA,iBAAA/D,MACA,SAAe67H,GAGb,IAFA,IAAM52F,EAAO1jC,KAAKwsI,qBAAqByB,YAAc,EAAI3T,EACrD4T,EAAMxqG,EACDhnC,EAAI,EAAGA,EAAI,GAAIA,IACtBwxI,EAAMA,GAAO,EAAkB,MAAbA,IAAQ,GAC5B,IAAMC,EAA4B,OAApBzqG,GAAQ,GAAKwqG,GAC3BT,EAAOU,IAAS,IAAM,GACtB,IAAK,IAAIzxI,EAAI,EAAGA,GAAK,EAAGA,IACtBsD,KAAK0tI,kBAAkB,EAAGhxI,EAAG0xI,EAAOD,EAAMzxI,IAC5CsD,KAAK0tI,kBAAkB,EAAG,EAAGU,EAAOD,EAAM,IAC1CnuI,KAAK0tI,kBAAkB,EAAG,EAAGU,EAAOD,EAAM,IAC1CnuI,KAAK0tI,kBAAkB,EAAG,EAAGU,EAAOD,EAAM,IAC1C,IAAK,IAAIzxI,EAAI,EAAGA,EAAI,GAAIA,IACtBsD,KAAK0tI,kBAAkB,GAAKhxI,EAAG,EAAG0xI,EAAOD,EAAMzxI,IACjD,IAAK,IAAIA,EAAI,EAAGA,EAAI,EAAGA,IACrBsD,KAAK0tI,kBAAkB1tI,KAAKulD,KAAO,EAAI7oD,EAAG,EAAG0xI,EAAOD,EAAMzxI,IAC5D,IAAK,IAAIA,EAAI,EAAGA,EAAI,GAAIA,IACtBsD,KAAK0tI,kBAAkB,EAAG1tI,KAAKulD,KAAO,GAAK7oD,EAAG0xI,EAAOD,EAAMzxI,IAC7DsD,KAAK0tI,kBAAkB,EAAG1tI,KAAKulD,KAAO,GAAG,EAC3C,GAEA,CAAA/iD,IAAA,cAAA/D,MACA,WACE,KAAIuB,KAAK3G,QAAU,GAAnB,CAGA,IADA,IAAI60I,EAAMluI,KAAK3G,QACNqD,EAAI,EAAGA,EAAI,GAAIA,IACtBwxI,EAAMA,GAAO,EAAmB,MAAdA,IAAQ,IAC5B,IAAMC,EAAOnuI,KAAK3G,SAAW,GAAK60I,EAClCT,EAAOU,IAAS,IAAM,GACtB,IAAK,IAAIzxI,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAM8qC,EAAQ4mG,EAAOD,EAAMzxI,GACrBV,EAAIgE,KAAKulD,KAAO,GAAK7oD,EAAI,EACzB6J,EAAItJ,KAAKwf,MAAM/f,EAAI,GACzBsD,KAAK0tI,kBAAkB1xI,EAAGuK,EAAGihC,GAC7BxnC,KAAK0tI,kBAAkBnnI,EAAGvK,EAAGwrC,EAC/B,CAZQ,CAaV,GAEA,CAAAhlC,IAAA,oBAAA/D,MACA,SAAkBvC,EAAGmL,GACnB,IAAK,IAAIgnI,GAAM,EAAGA,GAAM,EAAGA,IACzB,IAAK,IAAIC,GAAM,EAAGA,GAAM,EAAGA,IAAM,CAC/B,IAAMC,EAAOtxI,KAAKC,IAAID,KAAK4f,IAAIyxH,GAAKrxI,KAAK4f,IAAIwxH,IACvCG,EAAKtyI,EAAIoyI,EACTG,EAAKpnI,EAAIgnI,EACX,GAAKG,GAAMA,EAAKxuI,KAAKulD,MAAQ,GAAKkpF,GAAMA,EAAKzuI,KAAKulD,MACpDvlD,KAAK0tI,kBAAkBc,EAAIC,EAAY,GAARF,GAAqB,GAARA,EAChD,CAEJ,GAEA,CAAA/rI,IAAA,uBAAA/D,MACA,SAAqBvC,EAAGmL,GACtB,IAAK,IAAIgnI,GAAM,EAAGA,GAAM,EAAGA,IACzB,IAAK,IAAIC,GAAM,EAAGA,GAAM,EAAGA,IACzBtuI,KAAK0tI,kBAAkBxxI,EAAIoyI,EAAIjnI,EAAIgnI,EAA4C,GAAxCpxI,KAAKC,IAAID,KAAK4f,IAAIyxH,GAAKrxI,KAAK4f,IAAIwxH,IAE7E,GAEA,CAAA7rI,IAAA,oBAAA/D,MACA,SAAkBvC,EAAGmL,EAAGqnI,GACtB1uI,KAAK2sI,QAAQtlI,GAAGnL,GAAKwyI,EACrB1uI,KAAK2mG,WAAWt/F,GAAGnL,IAAK,CAC1B,GAGA,CAAAsG,IAAA,sBAAA/D,MACA,SAAoBilC,GAClB,IAAMirG,EAAM3uI,KAAK3G,QACXu1I,EAAM5uI,KAAKwsI,qBACjB,GAAI9oG,EAAK9rC,QAAU20I,EAAQsC,oBAAoBF,EAAKC,GAClD,MAAM,IAAI9B,WAAW,oBAQvB,IAPA,IAAMgC,EAAYvC,EAAQwC,4BAA4BH,EAAII,SAASL,GAC7DM,EAAc1C,EAAQ2C,wBAAwBN,EAAII,SAASL,GAC3DQ,EAAelyI,KAAKwf,MAAM8vH,EAAQ6C,qBAAqBT,GAAO,GAC9DU,EAAiBP,EAAYK,EAAeL,EAC5CQ,EAAgBryI,KAAKwf,MAAM0yH,EAAeL,GAC5CS,EAAS,GACPC,EAAQjD,EAAQkD,0BAA0BR,GACvCvyI,EAAI,EAAGkK,EAAI,EAAGlK,EAAIoyI,EAAWpyI,IAAK,CACzC,IAAIgzI,EAAMhsG,EAAK9yB,MAAMhK,EAAGA,EAAI0oI,EAAgBL,GAAevyI,EAAI2yI,EAAiB,EAAI,IACpFzoI,GAAK8oI,EAAI93I,OACT,IAAM+3I,EAAMpD,EAAQqD,4BAA4BF,EAAKF,GACjD9yI,EAAI2yI,GACNK,EAAI5yI,KAAK,GACXyyI,EAAOzyI,KAAK4yI,EAAIjuI,OAAOkuI,GACzB,CAEA,IADA,IAAI73I,EAAS,GAAGizE,EAAA,SACPruE,GACP6yI,EAAOhtI,SAAQ,SAAC2rG,EAAOr+F,IACjBnT,GAAK4yI,EAAgBL,GAAep/H,GAAKw/H,IAC3Cv3I,EAAOgF,KAAKoxG,EAAMxxG,GACtB,GAAG,EAJIA,EAAI,EAAGA,EAAI6yI,EAAO,GAAG33I,OAAQ8E,IAAKquE,EAAlCruE,GAOT,OADA+wI,EAAO31I,EAAOF,QAAUu3I,GACjBr3I,CACT,GAEA,CAAA0K,IAAA,gBAAA/D,MACA,SAAcilC,GACZ,GAAIA,EAAK9rC,QAAUqF,KAAKwf,MAAM8vH,EAAQ6C,qBAAqBpvI,KAAK3G,SAAW,GACzE,MAAM,IAAIyzI,WAAW,oBAEvB,IADA,IAAIpwI,EAAI,EACC8iE,EAAQx/D,KAAKulD,KAAO,EAAGia,GAAS,EAAGA,GAAS,EAAG,CACzC,GAATA,IACFA,EAAQ,GACV,IAAK,IAAIqwE,EAAO,EAAGA,EAAO7vI,KAAKulD,KAAMsqF,IACnC,IAAK,IAAIhgI,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAM3T,EAAIsjE,EAAQ3vD,EAEZxI,EAD4B,IAAlBm4D,EAAQ,EAAI,GACTx/D,KAAKulD,KAAO,EAAIsqF,EAAOA,GACrC7vI,KAAK2mG,WAAWt/F,GAAGnL,IAAMQ,EAAkB,EAAdgnC,EAAK9rC,SACrCoI,KAAK2sI,QAAQtlI,GAAGnL,GAAKkyI,EAAO1qG,EAAKhnC,IAAM,GAAI,GAAS,EAAJA,IAChDA,IAEJ,CAEJ,CACA+wI,EAAO/wI,GAAmB,EAAdgnC,EAAK9rC,OACnB,GAKA,CAAA4K,IAAA,YAAA/D,MACA,SAAU67H,GACR,GAAIA,EAAO,GAAKA,EAAO,EACrB,MAAM,IAAIwS,WAAW,2BACvB,IAAK,IAAIzlI,EAAI,EAAGA,EAAIrH,KAAKulD,KAAMl+C,IAC7B,IAAK,IAAInL,EAAI,EAAGA,EAAI8D,KAAKulD,KAAMrpD,IAAK,CAClC,IAAI4zI,OAAM,EACV,OAAQxV,GACN,KAAK,EACHwV,GAAU5zI,EAAImL,GAAK,GAAK,EACxB,MACF,KAAK,EACHyoI,EAASzoI,EAAI,GAAK,EAClB,MACF,KAAK,EACHyoI,EAAS5zI,EAAI,GAAK,EAClB,MACF,KAAK,EACH4zI,GAAU5zI,EAAImL,GAAK,GAAK,EACxB,MACF,KAAK,EACHyoI,GAAU7yI,KAAKwf,MAAMvgB,EAAI,GAAKe,KAAKwf,MAAMpV,EAAI,IAAM,GAAK,EACxD,MACF,KAAK,EACHyoI,EAAS5zI,EAAImL,EAAI,EAAInL,EAAImL,EAAI,GAAK,EAClC,MACF,KAAK,EACHyoI,GAAU5zI,EAAImL,EAAI,EAAInL,EAAImL,EAAI,GAAK,GAAK,EACxC,MACF,KAAK,EACHyoI,IAAW5zI,EAAImL,GAAK,EAAInL,EAAImL,EAAI,GAAK,GAAK,EAC1C,MACF,QACE,MAAM,IAAIvJ,MAAM,gBAEfkC,KAAK2mG,WAAWt/F,GAAGnL,IAAM4zI,IAC5B9vI,KAAK2sI,QAAQtlI,GAAGnL,IAAM8D,KAAK2sI,QAAQtlI,GAAGnL,GAC1C,CAEJ,GAEA,CAAAsG,IAAA,kBAAA/D,MACA,WAEE,IADA,IAAI3G,EAAS,EACJuP,EAAI,EAAGA,EAAIrH,KAAKulD,KAAMl+C,IAAK,CAIlC,IAHA,IAAI0oI,GAAW,EACXC,EAAO,EACPC,EAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC3B/zI,EAAI,EAAGA,EAAI8D,KAAKulD,KAAMrpD,IACzB8D,KAAK2sI,QAAQtlI,GAAGnL,IAAM6zI,EAEZ,KADZC,EAEEl4I,GAAUy0I,EAAQ2D,WACXF,EAAO,GACdl4I,KAEFkI,KAAKmwI,wBAAwBH,EAAMC,GAC9BF,IACHj4I,GAAUkI,KAAKowI,2BAA2BH,GAAc1D,EAAQ8D,YAClEN,EAAW/vI,KAAK2sI,QAAQtlI,GAAGnL,GAC3B8zI,EAAO,GAGXl4I,GAAUkI,KAAKswI,+BAA+BP,EAAUC,EAAMC,GAAc1D,EAAQ8D,UACtF,CACA,IAAK,IAAIn0I,EAAI,EAAGA,EAAI8D,KAAKulD,KAAMrpD,IAAK,CAIlC,IAHA,IAAI6zI,GAAW,EACXQ,EAAO,EACPN,EAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC3B5oI,EAAI,EAAGA,EAAIrH,KAAKulD,KAAMl+C,IACzBrH,KAAK2sI,QAAQtlI,GAAGnL,IAAM6zI,EAEZ,KADZQ,EAEEz4I,GAAUy0I,EAAQ2D,WACXK,EAAO,GACdz4I,KAEFkI,KAAKmwI,wBAAwBI,EAAMN,GAC9BF,IACHj4I,GAAUkI,KAAKowI,2BAA2BH,GAAc1D,EAAQ8D,YAClEN,EAAW/vI,KAAK2sI,QAAQtlI,GAAGnL,GAC3Bq0I,EAAO,GAGXz4I,GAAUkI,KAAKswI,+BAA+BP,EAAUQ,EAAMN,GAAc1D,EAAQ8D,UACtF,CACA,IAAK,IAAIhpI,EAAI,EAAGA,EAAIrH,KAAKulD,KAAO,EAAGl+C,IACjC,IAAK,IAAInL,EAAI,EAAGA,EAAI8D,KAAKulD,KAAO,EAAGrpD,IAAK,CACtC,IAAMsrC,EAAQxnC,KAAK2sI,QAAQtlI,GAAGnL,GAC1BsrC,GAASxnC,KAAK2sI,QAAQtlI,GAAGnL,EAAI,IAAMsrC,GAASxnC,KAAK2sI,QAAQtlI,EAAI,GAAGnL,IAAMsrC,GAASxnC,KAAK2sI,QAAQtlI,EAAI,GAAGnL,EAAI,KACzGpE,GAAUy0I,EAAQiE,WACtB,CAEF,IAC8BC,EAD1Bh1B,EAAO,EAAEi1B,EAAA5lE,EACK9qE,KAAK2sI,SAAO,IAA9B,IAAA+D,EAAAj1I,MAAAg1I,EAAAC,EAAA3pI,KAAAkb,MAAA,CACEw5F,EADYg1B,EAAAhyI,MACDuE,QAAO,SAAC2tI,EAAKnpG,GAAK,OAAKmpG,GAAOnpG,EAAQ,EAAI,EAAE,GAAEi0E,EAAM,QAAA5iG,GAAA63H,EAAApqI,EAAAuS,EAAA,SAAA63H,EAAAjqI,GAAA,CACjE,IAAMmqI,EAAQ5wI,KAAKulD,KAAOvlD,KAAKulD,KACzB3+C,EAAI3J,KAAKurD,KAAKvrD,KAAK4f,IAAW,GAAP4+F,EAAoB,GAARm1B,GAAcA,GAAS,EAIhE,OAHAnD,EAAO,GAAK7mI,GAAKA,GAAK,GAEtB6mI,EAAO,IADP31I,GAAU8O,EAAI2lI,EAAQsE,aACA/4I,GAAU,SACzBA,CACT,GAIA,CAAA0K,IAAA,+BAAA/D,MACA,WACE,GAAoB,GAAhBuB,KAAK3G,QACP,MAAO,GAKP,IAHA,IAAMy0I,EAAW7wI,KAAKwf,MAAMzc,KAAK3G,QAAU,GAAK,EAC1Cq1F,EAAuB,IAAhB1uF,KAAK3G,QAAgB,GAA8D,EAAzD4D,KAAKurD,MAAqB,EAAfxoD,KAAK3G,QAAc,IAAiB,EAAXy0I,EAAe,IACtFh2I,EAAS,CAAC,GACLg5I,EAAM9wI,KAAKulD,KAAO,EAAGztD,EAAOF,OAASk2I,EAAUgD,GAAOpiD,EAC7D52F,EAAO+1D,OAAO,EAAG,EAAGijF,GACtB,OAAOh5I,CAEX,GAGA,CAAA0K,IAAA,6BAAA/D,MAiEA,SAA2BwxI,GACzB,IAAMlpI,EAAIkpI,EAAW,GACrBxC,EAAO1mI,GAAiB,EAAZ/G,KAAKulD,MACjB,IAAMwrF,EAAOhqI,EAAI,GAAKkpI,EAAW,IAAMlpI,GAAKkpI,EAAW,IAAU,EAAJlpI,GAASkpI,EAAW,IAAMlpI,GAAKkpI,EAAW,IAAMlpI,EAC7G,OAAQgqI,GAAQd,EAAW,IAAU,EAAJlpI,GAASkpI,EAAW,IAAMlpI,EAAI,EAAI,IAAMgqI,GAAQd,EAAW,IAAU,EAAJlpI,GAASkpI,EAAW,IAAMlpI,EAAI,EAAI,EACtI,GACA,CAAAvE,IAAA,iCAAA/D,MACA,SAA+BuyI,EAAiBC,EAAkBhB,GAOhE,OANIe,IACFhxI,KAAKmwI,wBAAwBc,EAAkBhB,GAC/CgB,EAAmB,GAErBA,GAAoBjxI,KAAKulD,KACzBvlD,KAAKmwI,wBAAwBc,EAAkBhB,GACxCjwI,KAAKowI,2BAA2BH,EACzC,GACA,CAAAztI,IAAA,0BAAA/D,MACA,SAAwBwyI,EAAkBhB,GACnB,GAAjBA,EAAW,KACbgB,GAAoBjxI,KAAKulD,MAC3B0qF,EAAWj/E,MACXi/E,EAAWlgI,QAAQkhI,EACrB,IAAC,EAAAzuI,IAAA,aAAA/D,MA7aD,SAAkBuU,EAAM47H,GACtB,IAAMsC,EAAOjF,EAAWkF,UAAUC,aAAap+H,GAC/C,OAAOu5H,EAAQ8E,eAAeH,EAAMtC,EACtC,GAIA,CAAApsI,IAAA,eAAA/D,MACA,SAAoBilC,EAAMkrG,GACxB,IAAM0C,EAAMrF,EAAWkF,UAAUI,UAAU7tG,GAC3C,OAAO6oG,EAAQ8E,eAAe,CAACC,GAAM1C,EACvC,GAUA,CAAApsI,IAAA,iBAAA/D,MACA,SAAsByyI,EAAMtC,GAAkE,IAGxFv1I,EACAm4I,EAJ2BC,EAAUxxI,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGyxI,EAAUzxI,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAIq6H,EAAIr6H,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,IAAI,EAAG0xI,IAAQ1xI,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GACnF,KAAMssI,EAAQK,aAAe6E,GAAcA,GAAcC,GAAcA,GAAcnF,EAAQM,cAAgBvS,GAAQ,GAAKA,EAAO,EAC/H,MAAM,IAAIwS,WAAW,iBAGvB,IAAKzzI,EAAUo4I,GAAcp4I,IAAW,CACtC,IAAMu4I,EAAgE,EAA5CrF,EAAQsC,oBAAoBx1I,EAASu1I,GACzDiD,EAAWV,EAAUW,aAAaZ,EAAM73I,GAC9C,GAAIw4I,GAAYD,EAAmB,CACjCJ,EAAeK,EACf,KACF,CACA,GAAIx4I,GAAWq4I,EACb,MAAM,IAAI5E,WAAW,gBACzB,CACA,IAAK,IAALiF,EAAA,EAAAjwH,EAAqB,CAACyqH,EAAQyF,IAAIC,OAAQ1F,EAAQyF,IAAIE,SAAU3F,EAAQyF,IAAIG,MAAKJ,EAAAjwH,EAAAlqB,OAAAm6I,IAAE,CAA9E,IAAMK,EAAMtwH,EAAAiwH,GACXJ,GAAYH,GAA+D,EAA/CjF,EAAQsC,oBAAoBx1I,EAAS+4I,KACnExD,EAAMwD,EACV,CACA,IACsBC,EADlBnhH,EAAK,GAAGohH,EAAAxnE,EACMomE,GAAI,IAAtB,IAAAoB,EAAA72I,MAAA42I,EAAAC,EAAAvrI,KAAAkb,MAAwB,KAAbqvH,EAAGe,EAAA5zI,MACZ8zI,EAAWjB,EAAI98F,KAAKg+F,SAAU,EAAGthH,GACjCqhH,EAAWjB,EAAImB,SAAUnB,EAAI98F,KAAKk+F,iBAAiBr5I,GAAU63B,GAAI,IACpCyhH,EADoCC,EAAA9nE,EACjDwmE,EAAIuB,WAAS,IAA7B,IAAAD,EAAAn3I,MAAAk3I,EAAAC,EAAA7rI,KAAAkb,MAAA,KAAW1b,EAACosI,EAAAl0I,MACVyyB,EAAGp0B,KAAKyJ,EAAG,QAAAsS,GAAA+5H,EAAAtsI,EAAAuS,EAAA,SAAA+5H,EAAAnsI,GAAA,CACf,CAAC,OAAAoS,GAAAy5H,EAAAhsI,EAAAuS,EAAA,SAAAy5H,EAAA7rI,GAAA,CACDgnI,EAAOv8G,EAAGt5B,QAAU45I,GACpB,IAAMsB,EAA+D,EAA5CvG,EAAQsC,oBAAoBx1I,EAASu1I,GAC9DnB,EAAOv8G,EAAGt5B,QAAUk7I,GACpBP,EAAW,EAAGt1I,KAAKiuC,IAAI,EAAG4nG,EAAmB5hH,EAAGt5B,QAASs5B,GACzDqhH,EAAW,GAAI,EAAIrhH,EAAGt5B,OAAS,GAAK,EAAGs5B,GACvCu8G,EAAOv8G,EAAGt5B,OAAS,GAAK,GACxB,IAAK,IAAIm7I,EAAU,IAAK7hH,EAAGt5B,OAASk7I,EAAkBC,GAAW,IAC/DR,EAAWQ,EAAS,EAAG7hH,GAEzB,IADA,IAAIu7G,EAAgB,GACU,EAAvBA,EAAc70I,OAAas5B,EAAGt5B,QACnC60I,EAAc3vI,KAAK,GAErB,OADAo0B,EAAG3uB,SAAQ,SAACgE,EAAG7J,GAAC,OAAK+vI,EAAc/vI,IAAM,IAAM6J,GAAK,GAAS,EAAJ7J,EAAM,IACxD,IAAI6vI,EAAQlzI,EAASu1I,EAAKnC,EAAenS,EAClD,GAAC,CAAA93H,IAAA,uBAAA/D,MA0RD,SAA4BkwI,GAC1B,GAAIA,EAAMpC,EAAQK,aAAe+B,EAAMpC,EAAQM,YAC7C,MAAM,IAAIC,WAAW,+BACvB,IAAIh1I,GAAU,GAAK62I,EAAM,KAAOA,EAAM,GACtC,GAAIA,GAAO,EAAG,CACZ,IAAMb,EAAW7wI,KAAKwf,MAAMkyH,EAAM,GAAK,EACvC72I,IAAW,GAAKg2I,EAAW,IAAMA,EAAW,GACxCa,GAAO,IACT72I,GAAU,GACd,CAEA,OADA21I,EAAO,KAAO31I,GAAUA,GAAU,OAC3BA,CACT,GAGA,CAAA0K,IAAA,sBAAA/D,MACA,SAA2BkwI,EAAKC,GAC9B,OAAO3xI,KAAKwf,MAAM8vH,EAAQ6C,qBAAqBT,GAAO,GAAKpC,EAAQ2C,wBAAwBN,EAAII,SAASL,GAAOpC,EAAQwC,4BAA4BH,EAAII,SAASL,EAClK,GAEA,CAAAnsI,IAAA,4BAAA/D,MACA,SAAiCu0I,GAC/B,GAAIA,EAAS,GAAKA,EAAS,IACzB,MAAM,IAAIlG,WAAW,uBAEvB,IADA,IAAIh1I,EAAS,GACJ4E,EAAI,EAAGA,EAAIs2I,EAAS,EAAGt2I,IAC9B5E,EAAOgF,KAAK,GACdhF,EAAOgF,KAAK,GAEZ,IADA,IAAIoW,EAAO,EACFxW,EAAI,EAAGA,EAAIs2I,EAAQt2I,IAAK,CAC/B,IAAK,IAAImT,EAAI,EAAGA,EAAI/X,EAAOF,OAAQiY,IACjC/X,EAAO+X,GAAK08H,EAAQ0G,oBAAoBn7I,EAAO+X,GAAIqD,GAC/CrD,EAAI,EAAI/X,EAAOF,SACjBE,EAAO+X,IAAM/X,EAAO+X,EAAI,IAE5BqD,EAAOq5H,EAAQ0G,oBAAoB//H,EAAM,EAC3C,CACA,OAAOpb,CACT,GACA,CAAA0K,IAAA,8BAAA/D,MACA,SAAmCilC,EAAMwvG,GACvC,IACoBC,EADhBr7I,EAASo7I,EAAQ32I,KAAI,SAAC6F,GAAC,OAAK,CAAC,IAAEgxI,EAAAtoE,EACnBpnC,GAAI,QAAA2vG,EAAA,eACZC,EADIH,EAAA10I,MACS3G,EAAO0mC,QAC1B1mC,EAAOgF,KAAK,GACZo2I,EAAQ3wI,SAAQ,SAACgxI,EAAM72I,GAAC,OAAK5E,EAAO4E,IAAM6vI,EAAQ0G,oBAAoBM,EAAMD,EAAO,GAAE,EAHvF,IAAAF,EAAA33I,MAAA03I,EAAAC,EAAArsI,KAAAkb,MAAsBoxH,GAIrB,OAAAx6H,GAAAu6H,EAAA9sI,EAAAuS,EAAA,SAAAu6H,EAAA3sI,GAAA,CACD,OAAO3O,CACT,GAEA,CAAA0K,IAAA,sBAAA/D,MACA,SAA2BvC,EAAGmL,GAC5B,GAAInL,IAAM,GAAK,GAAKmL,IAAM,GAAK,EAC7B,MAAM,IAAIylI,WAAW,qBAEvB,IADA,IAAIxlI,EAAI,EACC5K,EAAI,EAAGA,GAAK,EAAGA,IACtB4K,EAAIA,GAAK,EAAgB,KAAXA,IAAM,GACpBA,IAAMD,IAAM3K,EAAI,GAAKR,EAGvB,OADAuxI,EAAOnmI,IAAM,GAAK,GACXA,CACT,KAACilI,CAAA,CA1cU,GAuebA,EAAQK,YAAc,EAEtBL,EAAQM,YAAc,GAEtBN,EAAQ2D,WAAa,EACrB3D,EAAQiE,WAAa,EACrBjE,EAAQ8D,WAAa,GACrB9D,EAAQsE,WAAa,GACrBtE,EAAQ2C,wBAA0B,CAGhC,EAAE,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEhK,EAAE,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEjK,EAAE,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEjK,EAAE,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAGnK3C,EAAQwC,4BAA8B,CAGpC,EAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAE1I,EAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEnJ,EAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEtJ,EAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAKzJ,SAASwD,EAAWnxI,EAAK4K,EAAKklB,GAC5B,GAAIllB,EAAM,GAAKA,EAAM,IAAM5K,IAAQ4K,GAAO,EACxC,MAAM,IAAI8gI,WAAW,sBACvB,IAAK,IAAIpwI,EAAIsP,EAAM,EAAGtP,GAAK,EAAGA,IAC5Bw0B,EAAGp0B,KAAKsE,IAAQ1E,EAAI,EACxB,CACA,SAAS0xI,EAAOlyI,EAAGQ,GACjB,OAAwB,IAAhBR,IAAMQ,EAAI,EACpB,CACA,SAAS+wI,EAAOh3C,GACd,IAAKA,EACH,MAAM,IAAI34F,MAAM,kBACpB,CAbAmuI,EAAWuH,OAASjH,EAcpB,IAAMkH,EAAU,WAKd,SAAAA,EAAYj/F,EAAMi+F,EAAUiB,GAI1B,GAJmCjpI,EAAA,KAAAgpI,GACnCzzI,KAAKw0C,KAAOA,EACZx0C,KAAKyyI,SAAWA,EAChBzyI,KAAK0zI,QAAUA,EACXjB,EAAW,EACb,MAAM,IAAI3F,WAAW,oBACvB9sI,KAAK0zI,QAAUA,EAAQ9iI,OACzB,CA+GC,OA3GDrH,EAAAkqI,EAAA,EAAAjxI,IAAA,UAAA/D,MA+EA,WACE,OAAOuB,KAAK0zI,QAAQ9iI,OACtB,IAEA,EAAApO,IAAA,YAAA/D,MAlFA,SAAiBilC,GACf,IACoBiwG,EADhBziH,EAAK,GAAG0iH,EAAA9oE,EACIpnC,GAAI,IAApB,IAAAkwG,EAAAn4I,MAAAk4I,EAAAC,EAAA7sI,KAAAkb,MAAA,CACEswH,EADUoB,EAAAl1I,MACI,EAAGyyB,EAAI,QAAArY,GAAA+6H,EAAAttI,EAAAuS,EAAA,SAAA+6H,EAAAntI,GAAA,CACvB,OAAO,IAAIgtI,EAAWA,EAAWI,KAAKC,KAAMpwG,EAAK9rC,OAAQs5B,EAC3D,GACA,CAAA1uB,IAAA,cAAA/D,MACA,SAAmBs1I,GACjB,IAAKN,EAAWO,UAAUD,GACxB,MAAM,IAAIjH,WAAW,0CAEvB,IADA,IAAI57G,EAAK,GACAx0B,EAAI,EAAGA,EAAIq3I,EAAOn8I,QAAU,CACnC,IAAMmP,EAAI9J,KAAKiuC,IAAI6oG,EAAOn8I,OAAS8E,EAAG,GACtC61I,EAAWphI,SAAS4iI,EAAOr+G,UAAUh5B,EAAGA,EAAIqK,GAAI,IAAS,EAAJA,EAAQ,EAAGmqB,GAChEx0B,GAAKqK,CACP,CACA,OAAO,IAAI0sI,EAAWA,EAAWI,KAAKI,QAASF,EAAOn8I,OAAQs5B,EAChE,GAGA,CAAA1uB,IAAA,mBAAA/D,MACA,SAAwBuU,GACtB,IAAKygI,EAAWS,eAAelhI,GAC7B,MAAM,IAAI85H,WAAW,+DACvB,IACIpwI,EADAw0B,EAAK,GAET,IAAKx0B,EAAI,EAAGA,EAAI,GAAKsW,EAAKpb,OAAQ8E,GAAK,EAAG,CACxC,IAAI4mH,EAAiE,GAA1DmwB,EAAWU,qBAAqB3nI,QAAQwG,EAAKtC,OAAOhU,IAE/D61I,EADAjvB,GAAQmwB,EAAWU,qBAAqB3nI,QAAQwG,EAAKtC,OAAOhU,EAAI,IAC/C,GAAIw0B,EACvB,CAGA,OAFIx0B,EAAIsW,EAAKpb,QACX26I,EAAWkB,EAAWU,qBAAqB3nI,QAAQwG,EAAKtC,OAAOhU,IAAK,EAAGw0B,GAClE,IAAIuiH,EAAWA,EAAWI,KAAKO,aAAcphI,EAAKpb,OAAQs5B,EACnE,GAEA,CAAA1uB,IAAA,eAAA/D,MACA,SAAoBuU,GAClB,MAAY,IAARA,EACK,GACAygI,EAAWO,UAAUhhI,GACrB,CAACygI,EAAWY,YAAYrhI,IACxBygI,EAAWS,eAAelhI,GAC1B,CAACygI,EAAWa,iBAAiBthI,IAE7B,CAACygI,EAAWlC,UAAUkC,EAAWc,gBAAgBvhI,IAC5D,GAEA,CAAAxQ,IAAA,UAAA/D,MACA,SAAe+1I,GACb,IAAItjH,EAAK,GACT,GAAIsjH,EAAY,EACd,MAAM,IAAI1H,WAAW,qCAClB,GAAI0H,EAAY,IACnBjC,EAAWiC,EAAW,EAAGtjH,QACtB,GAAIsjH,EAAY,MACnBjC,EAAW,EAAG,EAAGrhH,GACjBqhH,EAAWiC,EAAW,GAAItjH,OACrB,MAAIsjH,EAAY,KAIrB,MAAM,IAAI1H,WAAW,qCAHrByF,EAAW,EAAG,EAAGrhH,GACjBqhH,EAAWiC,EAAW,GAAItjH,EAE+B,CAC3D,OAAO,IAAIuiH,EAAWA,EAAWI,KAAKY,IAAK,EAAGvjH,EAChD,GAEA,CAAA1uB,IAAA,YAAA/D,MACA,SAAiBuU,GACf,OAAOygI,EAAWiB,cAAcx8I,KAAK8a,EACvC,GAGA,CAAAxQ,IAAA,iBAAA/D,MACA,SAAsBuU,GACpB,OAAOygI,EAAWkB,mBAAmBz8I,KAAK8a,EAC5C,GAAC,CAAAxQ,IAAA,eAAA/D,MAQD,SAAoByyI,EAAM73I,GACxB,IACsBu7I,EADlB98I,EAAS,EAAE+8I,EAAA/pE,EACGomE,GAAI,IAAtB,IAAA2D,EAAAp5I,MAAAm5I,EAAAC,EAAA9tI,KAAAkb,MAAwB,KAAbqvH,EAAGsD,EAAAn2I,MACNq2I,EAASxD,EAAI98F,KAAKk+F,iBAAiBr5I,GACzC,GAAIi4I,EAAImB,UAAY,GAAKqC,EACvB,OAAO3rF,IACTrxD,GAAU,EAAIg9I,EAASxD,EAAIoC,QAAQ97I,MACrC,CAAC,OAAAihB,GAAAg8H,EAAAvuI,EAAAuS,EAAA,SAAAg8H,EAAApuI,GAAA,CACD,OAAO3O,CACT,GACA,CAAA0K,IAAA,kBAAA/D,MACA,SAAuBgS,GACrBA,EAAMskI,UAAUtkI,GAEhB,IADA,IAAI3Y,EAAS,GACJ4E,EAAI,EAAGA,EAAI+T,EAAI7Y,OAAQ8E,IACT,KAAjB+T,EAAIC,OAAOhU,GACb5E,EAAOgF,KAAK2T,EAAIs1F,WAAWrpG,KAE3B5E,EAAOgF,KAAKqU,SAASV,EAAIilB,UAAUh5B,EAAI,EAAGA,EAAI,GAAI,KAClDA,GAAK,GAGT,OAAO5E,CACT,KAAC27I,CAAA,CA3Ha,GA+HhBA,EAAWiB,cAAgB,WAE3BjB,EAAWkB,mBAAqB,wBAGhClB,EAAWU,qBAAuB,gDAClC,IAAIhD,EAAYsC,EAChBxH,EAAWkF,UAAYsC,CACxB,CA9pBD,CA8pBGzH,KAAcA,GAAY,CAAC,IAG5B,SAAEgJ,GACA,IAAMC,EAAI1rI,GAGR,SAAA0rI,EAAYjG,EAASf,GAAYxjI,EAAA,KAAAwqI,GAC/Bj1I,KAAKgvI,QAAUA,EACfhvI,KAAKiuI,WAAaA,CACpB,IAGFgH,EAAKC,IAAM,IAAID,EAAK,EAAG,GAEvBA,EAAKhD,OAAS,IAAIgD,EAAK,EAAG,GAE1BA,EAAK/C,SAAW,IAAI+C,EAAK,EAAG,GAE5BA,EAAK9C,KAAO,IAAI8C,EAAK,EAAG,GAExBD,EAAQhD,IAAMiD,CACf,CAnBD,EAFAhJ,GAsBCD,KAAcA,GAAY,CAAC,IADLwH,SAAWvH,GAAWuH,OAAS,CAAC,IAEzD,SAAEvH,IAEA,SAAEkJ,GACA,IAAMC,EAAK,WAET,SAAAA,EAAY5C,EAAU6C,GAAkB5qI,EAAA,KAAA2qI,GACtCp1I,KAAKwyI,SAAWA,EAChBxyI,KAAKq1I,iBAAmBA,CAC1B,CAMC,OAHD9rI,EAAA6rI,EAAA,EAAA5yI,IAAA,mBAAA/D,MACA,SAAiBkwI,GACf,OAAO3uI,KAAKq1I,iBAAiBp4I,KAAKwf,OAAOkyH,EAAM,GAAK,IACtD,KAACyG,CAAA,CAXQ,GAcXA,EAAMnB,QAAU,IAAImB,EAAM,EAAG,CAAC,GAAI,GAAI,KACtCA,EAAMhB,aAAe,IAAIgB,EAAM,EAAG,CAAC,EAAG,GAAI,KAC1CA,EAAMtB,KAAO,IAAIsB,EAAM,EAAG,CAAC,EAAG,GAAI,KAClCA,EAAME,MAAQ,IAAIF,EAAM,EAAG,CAAC,EAAG,GAAI,KACnCA,EAAMX,IAAM,IAAIW,EAAM,EAAG,CAAC,EAAG,EAAG,IAEhCD,EAAWtB,KAAOuB,CACnB,CAtBD,CAsBenJ,EAAWkF,YAAclF,EAAWkF,UAAY,CAAC,GACjE,CAzBD,CAyBGnF,KAAcA,GAAY,CAAC,IAC9B,IAAIuJ,GAAoBvJ,GAQpBwJ,GAAkB,CACpBn8F,EAAGk8F,GAAkB/B,OAAOxB,IAAIkD,IAChCn7F,EAAGw7F,GAAkB/B,OAAOxB,IAAIC,OAChC/1F,EAAGq5F,GAAkB/B,OAAOxB,IAAIE,SAChCtgG,EAAG2jG,GAAkB/B,OAAOxB,IAAIG,MAI9BsD,GAAkB,UAClBC,GAAkB,UAGlBC,GAAmB,EACnBC,GAAsB,EACtBC,GAAoB,GACxB,SAASC,GAAanJ,GAAqB,IAAZoJ,EAAM91I,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAChC+1I,EAAM,GA6BZ,OA5BArJ,EAAQpqI,SAAQ,SAASwqI,EAAK1lI,GAC5B,IAAIyjC,EAAQ,KACZiiG,EAAIxqI,SAAQ,SAAS0zI,EAAM/5I,GACzB,IAAK+5I,GAAkB,OAAVnrG,EAKX,OAJAkrG,EAAIl5I,KAAK,IAAD2E,OACFqpC,EAAQirG,EAAM,KAAAt0I,OAAI4F,EAAI0uI,EAAM,KAAAt0I,OAAIvF,EAAI4uC,EAAK,OAAArpC,OAAMqpC,EAAQirG,EAAM,WAEnEjrG,EAAQ,MAGV,GAAI5uC,IAAM6wI,EAAIn1I,OAAS,EAanBq+I,GAAkB,OAAVnrG,IACVA,EAAQ5uC,OAdV,CACE,IAAK+5I,EACH,OAEY,OAAVnrG,EACFkrG,EAAIl5I,KAAK,IAAD2E,OAAKvF,EAAI65I,EAAM,KAAAt0I,OAAI4F,EAAI0uI,EAAM,UAAAt0I,OAASvF,EAAI65I,EAAM,MAExDC,EAAIl5I,KAAK,IAAD2E,OACFqpC,EAAQirG,EAAM,KAAAt0I,OAAI4F,EAAI0uI,EAAM,MAAAt0I,OAAKvF,EAAI,EAAI4uC,EAAK,OAAArpC,OAAMqpC,EAAQirG,EAAM,KAI5E,CAIF,GACF,IACOC,EAAI34I,KAAK,GAClB,CACA,SAAS64I,GAAgBvJ,EAASwJ,GAChC,OAAOxJ,EAAQ/7H,QAAQrU,KAAI,SAACwwI,EAAK1lI,GAC/B,OAAIA,EAAI8uI,EAAW9uI,GAAKA,GAAK8uI,EAAW9uI,EAAI8uI,EAAWxvI,EAC9ComI,EAEFA,EAAIxwI,KAAI,SAAC05I,EAAM/5I,GACpB,OAAIA,EAAIi6I,EAAWj6I,GAAKA,GAAKi6I,EAAWj6I,EAAIi6I,EAAW/uI,IAC9C6uI,CAGX,GACF,GACF,CA8BA,SAASG,GAASpsI,GASf,IARDvL,EAAKuL,EAALvL,MACA2V,EAAKpK,EAALoK,MACAq9H,EAAUznI,EAAVynI,WACA4E,EAAarsI,EAAbqsI,cACAC,EAAUtsI,EAAVssI,WACAC,EAAavsI,EAAbusI,cACAhxF,EAAIv7C,EAAJu7C,KACAixF,EAAUxsI,EAAVwsI,WAEIC,EAASv2H,EAAAA,SAAc,WACzB,IACM46E,GADSn+F,MAAM0E,QAAQ5C,GAASA,EAAQ,CAACA,IACvBuE,QAAO,SAAC0zI,EAAOvvI,GAErC,OADAuvI,EAAM55I,KAAIgD,MAAV42I,EAAK3iF,EAASwhF,GAAkBpE,UAAUC,aAAajqI,KAChDuvI,CACT,GAAG,IACH,OAAOnB,GAAkB/B,OAAOnC,eAC9Bv2C,EACA06C,GAAgBphI,GAChBq9H,OACA,OACA,EACA+E,EAEJ,GAAG,CAAC/3I,EAAO2V,EAAOq9H,EAAY+E,IAC9BG,EAA6Dz2H,EAAAA,SAAc,WACzE,IAAI02H,EAASH,EAAOI,aACdC,EAjCV,SAAuBT,EAAeC,GACpC,OAAkB,MAAdA,EACKr5I,KAAKC,IAAID,KAAKwf,MAAM65H,GAAa,GAEnCD,EAAgBV,GAAmBC,EAC5C,CA4BoBmB,CAAcV,EAAeC,GACvCU,EAAYJ,EAAOh/I,OAAmB,EAAVk/I,EAC5BG,EA1DV,SAA0BC,EAAO3xF,EAAMwwF,EAAQQ,GAC7C,GAAqB,MAAjBA,EACF,OAAO,KAET,IAAMY,EAAWD,EAAMt/I,OAAkB,EAATm+I,EAC1BqB,EAAcn6I,KAAKwf,MAAM8oC,EAAOswF,IAChCwB,EAAQF,EAAW5xF,EACnBn+C,GAAKmvI,EAAcpoI,OAASipI,GAAeC,EAC3C1wI,GAAK4vI,EAAcnoI,QAAUgpI,GAAeC,EAC5Cn7I,EAAuB,MAAnBq6I,EAAcr6I,EAAYg7I,EAAMt/I,OAAS,EAAIwP,EAAI,EAAImvI,EAAcr6I,EAAIm7I,EAC3EhwI,EAAuB,MAAnBkvI,EAAclvI,EAAY6vI,EAAMt/I,OAAS,EAAI+O,EAAI,EAAI4vI,EAAclvI,EAAIgwI,EAC3E7iH,EAAmC,MAAzB+hH,EAAc/hH,QAAkB,EAAI+hH,EAAc/hH,QAC9D2hH,EAAa,KACjB,GAAII,EAAce,SAAU,CAC1B,IAAIC,EAASt6I,KAAKwf,MAAMvgB,GACpBs7I,EAASv6I,KAAKwf,MAAMpV,GAGxB8uI,EAAa,CAAEj6I,EAAGq7I,EAAQlwI,EAAGmwI,EAAQpwI,EAFzBnK,KAAKurD,KAAKphD,EAAIlL,EAAIq7I,GAEiB5wI,EADnC1J,KAAKurD,KAAK7hD,EAAIU,EAAImwI,GAEhC,CAEA,MAAO,CAAEt7I,EAAAA,EAAGmL,EAAAA,EAAGV,EAAAA,EAAGS,EAAAA,EAAG+uI,WAAAA,EAAY3hH,QAAAA,EAASijH,YADtBlB,EAAckB,YAEpC,CAoCqCC,CAC/Bd,EACArxF,EACAuxF,EACAP,GAEF,MAAO,CACLW,MAAON,EACPb,OAAQe,EACRK,SAAUH,EACVW,wBAAyBV,EAE7B,GAAG,CAACR,EAAQlxF,EAAMgxF,EAAeF,EAAeC,IAhBxCY,EAAKP,EAALO,MAAOnB,EAAMY,EAANZ,OAAQoB,EAAQR,EAARQ,SAAUQ,EAAuBhB,EAAvBgB,wBAiBjC,MAAO,CACLlB,OAAAA,EACAV,OAAAA,EACAmB,MAAAA,EACAC,SAAAA,EACAQ,wBAAAA,EAEJ,CACA,IAAIC,GAAkB,WACpB,KACE,IAAIC,QAASC,QAAQ,IAAID,OAC3B,CAAE,MAAOvxI,KACP,OAAO,CACT,CACA,OAAO,CACT,CAPsB,GAQlByxI,GAAe73H,EAAAA,YACjB,SAAuBzW,EAAO+oG,GACtB,IAAAxhC,EAAKvnE,EACThL,EAUEuyE,EAVFvyE,MAAKu5I,EAUHhnE,EATFzrB,KAAAA,OAAI,IAAAyyF,EAjJS,IAiJMA,EAAAC,EASjBjnE,EARF58D,MAAAA,OAAK,IAAA6jI,EAjJS,IAiJOA,EAAAC,EAQnBlnE,EAPFmnE,QAAAA,OAAO,IAAAD,EAAGzC,GAAeyC,EAAAE,EAOvBpnE,EANFqnE,QAAAA,OAAO,IAAAD,EAAG1C,GAAe0C,EAAAE,EAMvBtnE,EALFqlE,cAAAA,OAAa,IAAAiC,GAAwBA,EAAAC,EAKnCvnE,EAJFygE,WAAAA,OAAU,IAAA8G,EAjJS,EAiJYA,EAC/B/B,EAGExlE,EAHFwlE,WACAF,EAEEtlE,EAFFslE,WACAC,EACEvlE,EADFulE,cAaIiC,EAZenM,GAAUr7D,EAAI,CACjC,QACA,OACA,QACA,UACA,UACA,gBACA,aACA,aACA,aACA,kBAEuB3mE,EAAUmuI,EAAVnuI,MAAco+H,EAAa4D,GAAUmM,EAAI,CAAC,UAC7DC,EAA0B,MAAjBlC,OAAwB,EAASA,EAAcpkI,IACxDumI,EAAUx4H,EAAAA,OAAa,MACvBy4H,EAASz4H,EAAAA,OAAa,MACtB04H,EAAe14H,EAAAA,aACnB,SAACzG,GACCi/H,EAAQp/G,QAAU7f,EACU,oBAAjB+4F,EACTA,EAAa/4F,GACJ+4F,IACTA,EAAal5E,QAAU7f,EAE3B,GACA,CAAC+4F,IAE0DqmC,EAAAn3H,EAArBxB,EAAAA,UAAe,GAAM,GAAzC44H,GAAFD,EAAA,GAAkBA,EAAA,IACpCE,EAA6D3C,GAAU,CACrE33I,MAAAA,EACA2V,MAAAA,EACAq9H,WAAAA,EACA+E,WAAAA,EACAH,cAAAA,EACAC,WAAAA,EACAC,cAAAA,EACAhxF,KAAAA,IARMwwF,EAAMgD,EAANhD,OAAQmB,EAAK6B,EAAL7B,MAAOC,EAAQ4B,EAAR5B,SAAUQ,EAAuBoB,EAAvBpB,wBAUjCz3H,EAAAA,WAAgB,WACd,GAAuB,MAAnBw4H,EAAQp/G,QAAiB,CAC3B,IAAM0/G,EAASN,EAAQp/G,QACjB+qE,EAAM20C,EAAOC,WAAW,MAC9B,IAAK50C,EACH,OAEF,IAAI60C,EAAchC,EACZiC,EAAQR,EAAOr/G,QACf8/G,EAA+C,MAA3BzB,GAA6C,OAAVwB,GAAkBA,EAAMjmD,UAAoC,IAAxBimD,EAAME,eAA8C,IAAvBF,EAAMG,aAChIF,GACwC,MAAtCzB,EAAwBxB,aAC1B+C,EAAchD,GACZgB,EACAS,EAAwBxB,aAI9B,IAAMoD,EAAal2I,OAAOm2I,kBAAoB,EAC9CR,EAAO5qI,OAAS4qI,EAAO7qI,MAAQo3C,EAAOg0F,EACtC,IAAMlC,EAAQ9xF,EAAO4xF,EAAWoC,EAChCl1C,EAAIgzC,MAAMA,EAAOA,GACjBhzC,EAAIo1C,UAAYtB,EAChB9zC,EAAIq1C,SAAS,EAAG,EAAGvC,EAAUA,GAC7B9yC,EAAIo1C,UAAYpB,EACZT,GACFvzC,EAAIkX,KAAK,IAAIs8B,OAAO/B,GAAaoD,EAAanD,KAE9CmB,EAAM30I,SAAQ,SAASwqI,EAAK4M,GAC1B5M,EAAIxqI,SAAQ,SAAS0zI,EAAM2D,GACrB3D,GACF5xC,EAAIq1C,SAASE,EAAM7D,EAAQ4D,EAAM5D,EAAQ,EAAG,EAEhD,GACF,IAEE4B,IACFtzC,EAAIw1C,YAAclC,EAAwBnjH,SAExC4kH,GACF/0C,EAAIy1C,UACFX,EACAxB,EAAwBz7I,EAAI65I,EAC5B4B,EAAwBtwI,EAAI0uI,EAC5B4B,EAAwBvwI,EACxBuwI,EAAwBhxI,EAG9B,CACF,IACAuZ,EAAAA,WAAgB,WACd44H,GAAiB,EACnB,GAAG,CAACL,IACJ,IAAMsB,EAAc3N,GAAe,CAAEh+H,OAAQm3C,EAAMp3C,MAAOo3C,GAAQl7C,GAC9D8rB,EAAM,KAgBV,OAfc,MAAVsiH,IACFtiH,EAAsBjW,EAAAA,cACpB,MACA,CACE/N,IAAKsmI,EACLj2I,IAAKi2I,EACLpuI,MAAO,CAAE29C,QAAS,QAClBgyF,OAAQ,WACNlB,GAAiB,EACnB,EACA/6H,IAAK46H,EACLlB,YAAwC,MAA3BE,OAAkC,EAASA,EAAwBF,eAI/Dv3H,EAAAA,cAAoBA,EAAAA,SAAgB,KAAsBA,EAAAA,cAC/E,SACAksH,GAAe,CACb/hI,MAAO0vI,EACP3rI,OAAQm3C,EACRp3C,MAAOo3C,EACPxnC,IAAK66H,EACL75E,KAAM,OACL0pE,IACFtyG,EACL,IAEF4hH,GAAazzI,YAAc,eAC3B,IAAI21I,GAAY/5H,EAAAA,YACd,SAAoBzW,EAAO+oG,GACnB,IAAAxhC,EAAKvnE,EACThL,EAWEuyE,EAXFvyE,MAAKy7I,EAWHlpE,EAVFzrB,KAAAA,OAAI,IAAA20F,EAvRS,IAuRMA,EAAAC,EAUjBnpE,EATF58D,MAAAA,OAAK,IAAA+lI,EAvRS,IAuROA,EAAAC,EASnBppE,EARFmnE,QAAAA,OAAO,IAAAiC,EAAG3E,GAAe2E,EAAAC,EAQvBrpE,EAPFqnE,QAAAA,OAAO,IAAAgC,EAAG3E,GAAe2E,EAAAC,EAOvBtpE,EANFqlE,cAAAA,OAAa,IAAAiE,GAAwBA,EAAAC,EAMnCvpE,EALFygE,WAAAA,OAAU,IAAA8I,EAvRS,EAuRYA,EAC/B/D,EAIExlE,EAJFwlE,WACAnjF,EAGE2d,EAHF3d,MACAijF,EAEEtlE,EAFFslE,WACAC,EACEvlE,EADFulE,cACM9N,EAAa4D,GAAUr7D,EAAI,CACjC,QACA,OACA,QACA,UACA,UACA,gBACA,aACA,aACA,QACA,aACA,kBAEFwpE,EAA6DpE,GAAU,CACrE33I,MAAAA,EACA2V,MAAAA,EACAq9H,WAAAA,EACA+E,WAAAA,EACAH,cAAAA,EACAC,WAAAA,EACAC,cAAAA,EACAhxF,KAAAA,IARMwwF,EAAMyE,EAANzE,OAAQmB,EAAKsD,EAALtD,MAAOC,EAAQqD,EAARrD,SAAUQ,EAAuB6C,EAAvB7C,wBAU7BuB,EAAchC,EACdiC,EAAQ,KACS,MAAjB5C,GAAoD,MAA3BoB,IACe,MAAtCA,EAAwBxB,aAC1B+C,EAAchD,GACZgB,EACAS,EAAwBxB,aAG5BgD,EAAwBj5H,EAAAA,cACtB,QACA,CACEqqB,KAAMgsG,EAAcpkI,IACpB/D,OAAQupI,EAAwBhxI,EAChCwH,MAAOwpI,EAAwBvwI,EAC/BlL,EAAGy7I,EAAwBz7I,EAAI65I,EAC/B1uI,EAAGswI,EAAwBtwI,EAAI0uI,EAC/B0E,oBAAqB,OACrBjmH,QAASmjH,EAAwBnjH,QACjCijH,YAAaE,EAAwBF,eAI3C,IAAMiD,EAAS5E,GAAaoD,EAAanD,GACzC,OAAuB71H,EAAAA,cACrB,MACAksH,GAAe,CACbh+H,OAAQm3C,EACRp3C,MAAOo3C,EACPo1F,QAAS,OAAFl5I,OAAS01I,EAAQ,KAAA11I,OAAI01I,GAC5Bp5H,IAAKy0F,EACLzzC,KAAM,OACL0pE,KACDp1E,GAAyBnzC,EAAAA,cAAoB,QAAS,KAAMmzC,GAC9CnzC,EAAAA,cACd,OACA,CACEq7F,KAAM48B,EACN3xI,EAAG,SAAF/E,OAAW01I,EAAQ,KAAA11I,OAAI01I,EAAQ,OAChCyD,eAAgB,eAGJ16H,EAAAA,cAAoB,OAAQ,CAAEq7F,KAAM88B,EAAS7xI,EAAGk0I,EAAQE,eAAgB,eACxFzB,EAEJ,IAEFc,GAAU31I,YAAc,sCC3mCbu2I,GAAiB,CAC1BrzG,WAAOp9B,EACPm7C,UAAMn7C,EACN6T,eAAW7T,EACXC,WAAOD,EACPyI,UAAMzI,GAEG0wI,GAAc56H,EAAAA,eAAoCA,EAAAA,cAAoB26H,ICR7Et8H,GAAY,CAAC,OAAQ,OAAQ,SACjC,SAASU,GAAyBzd,EAAQ0d,GAAY,GAAc,MAAV1d,EAAgB,MAAO,CAAC,EAAG,IAAkEgB,EAAK9F,EAAnE6E,EACzF,SAAuCC,EAAQ0d,GAAY,GAAc,MAAV1d,EAAgB,MAAO,CAAC,EAAG,IAAID,EAAS,CAAC,EAAG,IAAK,IAAIiB,KAAOhB,EAAU,GAAIjD,OAAO3B,UAAUiB,eAAehB,KAAK2E,EAAQgB,GAAM,CAAE,GAAI0c,EAAS1S,QAAQhK,IAAQ,EAAG,SAAUjB,EAAOiB,GAAOhB,EAAOgB,EAAM,CAAI,OAAOjB,CAAQ,CADpL6d,CAA8B5d,EAAQ0d,GAAuB,GAAI3gB,OAAOsD,sBAAuB,CAAE,IAAIwd,EAAmB9gB,OAAOsD,sBAAsBL,GAAS,IAAK9E,EAAI,EAAGA,EAAI2iB,EAAiBznB,OAAQ8E,IAAO8F,EAAM6c,EAAiB3iB,GAAQwiB,EAAS1S,QAAQhK,IAAQ,GAAkBjE,OAAO3B,UAAUoF,qBAAqBnF,KAAK2E,EAAQgB,KAAgBjB,EAAOiB,GAAOhB,EAAOgB,GAAQ,CAAE,OAAOjB,CAAQ,CAE3e,SAASkd,KAAiS,OAApRA,GAAWlgB,OAAOmgB,OAASngB,OAAOmgB,OAAO9K,OAAS,SAAUrS,GAAU,IAAK,IAAI7E,EAAI,EAAGA,EAAIuD,UAAUrI,OAAQ8E,IAAK,CAAE,IAAI8E,EAASvB,UAAUvD,GAAI,IAAK,IAAI8F,KAAOhB,EAAcjD,OAAO3B,UAAUiB,eAAehB,KAAK2E,EAAQgB,KAAQjB,EAAOiB,GAAOhB,EAAOgB,GAAU,CAAE,OAAOjB,CAAQ,EAAUkd,GAAS3e,MAAME,KAAMC,UAAY,CAClV,SAAS0e,GAAQrY,EAAGY,GAAK,IAAI5P,EAAIiH,OAAOqD,KAAK0E,GAAI,GAAI/H,OAAOsD,sBAAuB,CAAE,IAAI2Y,EAAIjc,OAAOsD,sBAAsByE,GAAIY,IAAMsT,EAAIA,EAAE1Y,QAAO,SAAUoF,GAAK,OAAO3I,OAAOoH,yBAAyBW,EAAGY,GAAGwC,UAAY,KAAKpS,EAAEwF,KAAKgD,MAAMxI,EAAGkjB,EAAI,CAAE,OAAOljB,CAAG,CAC9P,SAASynB,GAAczY,GAAK,IAAK,IAAIY,EAAI,EAAGA,EAAIjH,UAAUrI,OAAQsP,IAAK,CAAE,IAAI5P,EAAI,MAAQ2I,UAAUiH,GAAKjH,UAAUiH,GAAK,CAAC,EAAGA,EAAI,EAAIyX,GAAQpgB,OAAOjH,IAAI,GAAIiL,SAAQ,SAAU2E,GAAKyU,GAAgBrV,EAAGY,EAAG5P,EAAE4P,GAAK,IAAK3I,OAAOygB,0BAA4BzgB,OAAOiL,iBAAiBlD,EAAG/H,OAAOygB,0BAA0B1nB,IAAMqnB,GAAQpgB,OAAOjH,IAAIiL,SAAQ,SAAU2E,GAAK3I,OAAOC,eAAe8H,EAAGY,EAAG3I,OAAOoH,yBAAyBrO,EAAG4P,GAAK,GAAI,CAAE,OAAOZ,CAAG,CACtb,SAASqV,GAAgB9c,EAAK2D,EAAK/D,GAA4L,OAAnL+D,EAC5C,SAAwBlL,GAAK,IAAIoF,EACjC,SAAsBpF,EAAG4P,GAAK,GAAI,iBAAmB5P,IAAMA,EAAG,OAAOA,EAAG,IAAIgP,EAAIhP,EAAEwJ,OAAO4zD,aAAc,QAAI,IAAWpuD,EAAG,CAAE,IAAI5J,EAAI4J,EAAEzJ,KAAKvF,EAAG4P,GAAK,WAAY,GAAI,iBAAmBxK,EAAG,OAAOA,EAAG,MAAM,IAAI8N,UAAU,+CAAiD,CAAE,OAAQ,WAAatD,EAAInJ,OAASsZ,QAAQ/f,EAAI,CADlRs9D,CAAat9D,EAAG,UAAW,MAAO,iBAAmBoF,EAAIA,EAAIA,EAAI,EAAI,CADxD43D,CAAe9xD,GAAUA,KAAO3D,EAAON,OAAOC,eAAeK,EAAK2D,EAAK,CAAE/D,MAAOA,EAAOiL,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkB/K,EAAI2D,GAAO/D,EAAgBI,CAAK,CAK3O,SAASk8I,GAAaC,GACpB,OAAOA,GAAQA,EAAKz+I,KAAI,SAACkd,EAAM/c,GAAC,OAAkBwjB,EAAAA,cAAoBzG,EAAK2V,IAAKrQ,GAAc,CAC5Fvc,IAAK9F,GACJ+c,EAAK5G,MAAOkoI,GAAathI,EAAK2f,OAAO,GAC1C,CACO,SAAS6hH,GAAQv3G,GACtB,OAAO,SAAAj6B,GAAK,OAAiByW,EAAAA,cAAoBg7H,GAAUz8H,GAAS,CAClE5L,KAAMkM,GAAc,CAAC,EAAG2kB,EAAK7wB,OAC5BpJ,GAAQsxI,GAAar3G,EAAKtK,OAAO,CACtC,CACO,SAAS8hH,GAASzxI,GACvB,IAAI6kH,EAAO,SAAA6sB,GACT,IAOIl9H,EANApL,EAGEpJ,EAHFoJ,KACA0yC,EAEE97C,EAFF87C,KACA8N,EACE5pD,EADF4pD,MAEF+nF,EAAWn8H,GAAyBxV,EAAO8U,IACzC88H,EAAe91F,GAAQ41F,EAAK51F,MAAQ,MAIxC,OAFI41F,EAAKl9H,YAAWA,EAAYk9H,EAAKl9H,WACjCxU,EAAMwU,YAAWA,GAAaA,EAAYA,EAAY,IAAM,IAAMxU,EAAMwU,WACxDiC,EAAAA,cAAoB,MAAOzB,GAAS,CACtD68H,OAAQ,eACR//B,KAAM,eACNlmF,YAAa,KACZ8lH,EAAKtoI,KAAMA,EAAMuoI,EAAU,CAC5Bn9H,UAAWA,EACX5T,MAAO0U,GAAcA,GAAc,CACjCyoB,MAAO/9B,EAAM+9B,OAAS2zG,EAAK3zG,OAC1B2zG,EAAK9wI,OAAQZ,EAAMY,OACtB+D,OAAQitI,EACRltI,MAAOktI,EACPE,MAAO,+BACLloF,GAAsBnzC,EAAAA,cAAoB,QAAS,KAAMmzC,GAAQ5pD,EAAMmU,SAC7E,EACA,YAAuBxT,IAAhB0wI,GAAyC56H,EAAAA,cAAoB46H,GAAYhzD,SAAU,MAAM,SAAAqzD,GAAI,OAAI7sB,EAAK6sB,EAAK,IAAI7sB,EAAKusB,GAC7H,CC8PO,SAASW,GAAS/xI,GACvB,OAAOwxI,GAAQ,CAAC,IAAM,MAAM,KAAO,CAAC,QAAU,aAAa,MAAQ,CAAC,CAAC,IAAM,OAAO,KAAO,CAAC,KAAO,OAAO,YAAc,IAAI,EAAI,2BAA2B,MAAQ,MAA1JA,CAAiKxxI,EAC1K,2BC1Se,SAASgyI,GAAWzxI,GAAiC,IAA9B0zD,EAAM1zD,EAAN0zD,OAAQrY,EAAOr7C,EAAPq7C,QAASznC,EAAQ5T,EAAR4T,SAOhD89H,EAAa,CAClBt/H,QAAS,CACR8vB,IAAK,MACLF,KAAM,MACNwzB,MAAO,OACPC,OAAQ,OACRnxD,SAAU,QACVgqH,UAAW,wBACXqjB,UAAW,gCACX3zF,QAAS,OACT+zE,cAAe,SACf6f,WAAY,wBACZp5C,UAAW,SACXq5C,SAAS,GAADp6I,OAAU,OAALkc,SAAK,IAALA,QAAK,EAALA,GAAO0zG,cAErBrzD,QAAS,CACRuB,SAAU,WACV3qC,OAAQ,EACR8qC,gBAAiBA,KAInB,OACCo8E,EAAAA,GAAAA,MAACh/E,KAAK,CACLY,OAAQA,EACRe,aAAa,EACbp0D,MAAOqxI,EACP/8E,2BAA2B,EAC3BH,eAAgB,WACfnZ,GACD,EAAEznC,SAAA,EAEFm+H,EAAAA,GAAAA,KAAA,OAAK1xI,MArCY,CAClB29C,QAAS,OACT16C,eAAgB,OAmCQsQ,UACtBm+H,EAAAA,GAAAA,KAACP,GAAO,CAACn2F,QAASA,MAElBznC,IAGJ,CC/CO,SAASo+H,GAASC,EAAkBC,GAE1C,GAAqB,OAAhBD,QAAgB,IAAhBA,IAAAA,EAAkB/sH,SAAS,KAAM,OAAO+sH,EAE7C,IAAME,EAA+B,OAAhBF,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkBngJ,MAAM,KAC7C,OAAQogJ,GACP,IAAK,KAML,QACC,OAAOC,EAAa,GALrB,IAAK,KACJ,OAAOA,EAAa,GACrB,IAAK,KACJ,OAAOA,EAAa,GAIvB,CCRA,IAAMC,GAAc,CACnBjuI,MAAO,QACPC,OAAQ,OACR2nI,OAAQ,EACRsG,YAAa,IACb70G,MAAM,GAAD/lC,OAAKwrH,IACVntD,aAAa,MACbJ,gBAAgB,GAADj+D,OAAKurH,IACpB,SAAU,CACTttD,gBAAiB,OACjBl4B,MAAO,UAIH80G,GAAev9H,EAAAA,EAAA,GACjBq9H,IAAW,IACdhuI,OAAQ,SAGHmuI,GAAgBx9H,EAAAA,EAAA,GAClBq9H,IAAW,IACd,SAAU,CACT18E,gBAAiB,OACjBl4B,MAAO,WAIHg1G,GAASz9H,EAAAA,EAAA,GACXq9H,IAAW,IACdp0F,QAAS,OACT16C,eAAgB,SAChBmvI,eAAgB,OAChB,SAAU,CACT/8E,gBAAiB,OACjBl4B,MAAO,WAKHk1G,GAAa,CAClB3G,OAAQ,IACR6F,WAAY,cACZp5C,UAAW,SACXnuE,WAAY,MACZwnH,SAAU,OACVc,cAAe,SAIVC,GAAc79H,EAAAA,EAAA,GAChB29H,IAAU,IACbd,WAAY,wBACZC,SAAU,SAGLgB,GAAQ99H,EAAAA,EAAA,GACV29H,IAAU,IACbtvI,UAAW,WAGN0vI,GAAkB,SAAAlhI,GAAAI,EAAA8gI,EAAAlhI,GAAA,IAAAK,EAAAtB,EAAAmiI,GAAA,SAAAA,IAAA,OAAAryI,EAAA,KAAAqyI,GAAA7gI,EAAAnc,MAAA,KAAAG,UAAA,CAStB,OATsBsJ,EAAAuzI,EAAA,EAAAt6I,IAAA,SAAA/D,MACvB,WAAU,IAAD4d,EAAAqB,EAAAI,EAAAswD,EAAAQ,EAAA6G,EACR,OACCsmE,EAAAA,GAAAA,KAAA,UAAQ38G,GAAQ,OAAJp/B,WAAI,IAAJA,MAAW,QAAPqc,EAAJrc,KAAMyJ,aAAK,IAAA4S,OAAP,EAAJA,EAAa+iB,GAAIimB,QAAa,OAAJrlD,WAAI,IAAJA,MAAW,QAAP0d,EAAJ1d,KAAMyJ,aAAK,IAAAiU,OAAP,EAAJA,EAAa2nC,QAASpnC,UAAe,OAAJje,WAAI,IAAJA,MAAW,QAAP8d,EAAJ9d,KAAMyJ,aAAK,IAAAqU,OAAP,EAAJA,EAAai/H,iBAAkB1yI,MAAK0U,EAAAA,EAAA,GAAOqwG,GAAQgtB,GAAa,gBAAuB,OAAJp8I,WAAI,IAAJA,MAAW,QAAPouE,EAAJpuE,KAAMyJ,aAAK,IAAA2kE,OAAP,EAAJA,EAAa4uE,sBAAuBp/H,UAC7Lm+H,EAAAA,GAAAA,KAAA,QAAM1xI,MAAO+kH,GAAQstB,GAAY,cAAe,WAAc,OAAJ18I,WAAI,IAAJA,MAAW,QAAP4uE,EAAJ5uE,KAAMyJ,aAAK,IAAAmlE,OAAP,EAAJA,EAAaquE,QAAQr/H,SACzE,OAAJ5d,WAAI,IAAJA,MAAW,QAAPy1E,EAAJz1E,KAAMyJ,aAAK,IAAAgsE,OAAP,EAAJA,EAAaziE,QAIlB,KAAC8pI,CAAA,CATsB,CAAS58H,EAAAA,WAWjC48H,GAAqBpR,GAAOoR,IAAmB,IAEzCI,GAAsB,SAAAC,GAAAnhI,EAAAkhI,EAAAC,GAAA,IAAAC,EAAAziI,EAAAuiI,GAAA,SAAAA,IAAA,OAAAzyI,EAAA,KAAAyyI,GAAAE,EAAAt9I,MAAA,KAAAG,UAAA,CAU1B,OAV0BsJ,EAAA2zI,EAAA,EAAA16I,IAAA,SAAA/D,MAC3B,WAAU,IAADi3E,EAAAE,EAAAE,EAAAc,EAAAuD,EAER,OACC4hE,EAAAA,GAAAA,KAAA,UAAQ38G,GAAQ,OAAJp/B,WAAI,IAAJA,MAAW,QAAP01E,EAAJ11E,KAAMyJ,aAAK,IAAAisE,OAAP,EAAJA,EAAat2C,GAAIimB,QAAa,OAAJrlD,WAAI,IAAJA,MAAW,QAAP41E,EAAJ51E,KAAMyJ,aAAK,IAAAmsE,OAAP,EAAJA,EAAavwB,QAASh7C,MAAK0U,EAAAA,EAAA,GAAOqwG,GAAQktB,GAAiB,oBAA2B,OAAJt8I,WAAI,IAAJA,MAAW,QAAP81E,EAAJ91E,KAAMyJ,aAAK,IAAAqsE,OAAP,EAAJA,EAAaknE,sBAAuBp/H,UAC3Jm+H,EAAAA,GAAAA,KAAA,QAAM1xI,MAAO+kH,GAAQwtB,GAAgB,kBAAmB,WAAc,OAAJ58I,WAAI,IAAJA,MAAW,QAAP42E,EAAJ52E,KAAMyJ,aAAK,IAAAmtE,OAAP,EAAJA,EAAaqmE,QAAQr/H,SACjF,OAAJ5d,WAAI,IAAJA,MAAW,QAAPm6E,EAAJn6E,KAAMyJ,aAAK,IAAA0wE,OAAP,EAAJA,EAAannE,QAIlB,KAACkqI,CAAA,CAV0B,CAASh9H,EAAAA,WAYrCg9H,GAAyBxR,GAAOwR,IAAuB,IAEjDG,GAAgB,SAAAC,GAAAthI,EAAAqhI,EAAAC,GAAA,IAAAC,EAAA5iI,EAAA0iI,GAAA,SAAAA,IAAA,OAAA5yI,EAAA,KAAA4yI,GAAAE,EAAAz9I,MAAA,KAAAG,UAAA,CAWpB,OAXoBsJ,EAAA8zI,EAAA,EAAA76I,IAAA,SAAA/D,MACrB,WAAU,IAAD++I,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAGR,OACC9B,EAAAA,GAAAA,KAACpQ,GAAS,CAACthI,MAAK0U,EAAAA,EAAA,GAAOqwG,GAAQmtB,GAAkB,qBAA4B,OAAJv8I,WAAI,IAAJA,MAAW,QAAPw9I,EAAJx9I,KAAMyJ,aAAK,IAAA+zI,OAAP,EAAJA,EAAaR,sBAAwB,WAAc,OAAJh9I,WAAI,IAAJA,MAAW,QAAPy9I,EAAJz9I,KAAMyJ,aAAK,IAAAg0I,OAAP,EAAJA,EAAaR,QAAQr/H,UAC5Im+H,EAAAA,GAAAA,KAAC7mB,GAAI,CAACtqD,GAAQ,OAAJ5qE,WAAI,IAAJA,MAAW,QAAP09I,EAAJ19I,KAAMyJ,aAAK,IAAAi0I,OAAP,EAAJA,EAAa9yE,GAAIrpE,OAAY,OAAJvB,WAAI,IAAJA,MAAW,QAAP29I,EAAJ39I,KAAMyJ,aAAK,IAAAk0I,OAAP,EAAJA,EAAap8I,OAAQ8I,MAAK0U,EAAAA,EAAA,GAAOqwG,GAAQotB,GAAW,cAAqB,OAAJx8I,WAAI,IAAJA,MAAW,QAAP49I,EAAJ59I,KAAMyJ,aAAK,IAAAm0I,OAAP,EAAJA,EAAaE,oBAAqBlgI,UACzIm+H,EAAAA,GAAAA,KAAA,OAAK1xI,MAAO+kH,GAAQytB,GAAU,YAAYj/H,SAAM,OAAJ5d,WAAI,IAAJA,MAAW,QAAP69I,EAAJ79I,KAAMyJ,aAAK,IAAAo0I,OAAP,EAAJA,EAAa7qI,UAI7D,KAACqqI,CAAA,CAXoB,CAASn9H,EAAAA,WAa/Bm9H,GAAmB3R,GAAO2R,IAAiB,IAErCU,GAAa,SAAAC,GAAAhiI,EAAA+hI,EAAAC,GAAA,IAAAC,EAAAtjI,EAAAojI,GAAA,SAAAA,IAAA,OAAAtzI,EAAA,KAAAszI,GAAAE,EAAAn+I,MAAA,KAAAG,UAAA,CASjB,OATiBsJ,EAAAw0I,EAAA,EAAAv7I,IAAA,SAAA/D,MAClB,WAAU,IAADy/I,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACR,OACCzC,EAAAA,GAAAA,KAACpQ,GAAS,CAAC1tH,UAAe,OAAJje,WAAI,IAAJA,UAAI,EAAJA,KAAMyJ,MAAMszI,iBAAkB1yI,MAAK0U,EAAA,GAAW,OAAJ/e,WAAI,IAAJA,MAAW,QAAPk+I,EAAJl+I,KAAMyJ,aAAK,IAAAy0I,OAAP,EAAJA,EAAalB,sBAAwB,WAAc,OAAJh9I,WAAI,IAAJA,MAAW,QAAPm+I,EAAJn+I,KAAMyJ,aAAK,IAAA00I,OAAP,EAAJA,EAAalB,QAAQr/H,UACnIm+H,EAAAA,GAAAA,KAAA,KAAGxxG,KAAU,OAAJvqC,WAAI,IAAJA,MAAW,QAAPo+I,EAAJp+I,KAAMyJ,aAAK,IAAA20I,OAAP,EAAJA,EAAa7zG,KAAM8a,QAAa,OAAJrlD,WAAI,IAAJA,UAAI,EAAJA,KAAMyJ,MAAM47C,QAAS9jD,OAAY,OAAJvB,WAAI,IAAJA,MAAW,QAAPq+I,EAAJr+I,KAAMyJ,aAAK,IAAA40I,OAAP,EAAJA,EAAa98I,OAAQi6E,SAAc,OAAJx7E,WAAI,IAAJA,MAAW,QAAPs+I,EAAJt+I,KAAMyJ,aAAK,IAAA60I,OAAP,EAAJA,EAAa9iE,SAAUnxE,MAAK0U,EAAAA,EAAA,GAAOqwG,GAAQotB,GAAW,cAAqB,OAAJx8I,WAAI,IAAJA,MAAW,QAAPu+I,EAAJv+I,KAAMyJ,aAAK,IAAA80I,OAAP,EAAJA,EAAaT,oBAAqBlgI,UACzMm+H,EAAAA,GAAAA,KAAA,KAAG1xI,MAAO+kH,GAAQytB,GAAU,YAAYj/H,SAAM,OAAJ5d,WAAI,IAAJA,MAAW,QAAPw+I,EAAJx+I,KAAMyJ,aAAK,IAAA+0I,OAAP,EAAJA,EAAaxrI,UAI3D,KAAC+qI,CAAA,CATiB,CAAS79H,EAAAA,WAW5B69H,GAAgBrS,GAAOqS,IAEvB,IAAMU,GAAqB,SAAHz0I,GAAmF,IAA7EgJ,EAAIhJ,EAAJgJ,KAAM0rI,EAAa10I,EAAb00I,cAAe1B,EAAoBhzI,EAApBgzI,qBAAsBD,EAAgB/yI,EAAhB+yI,iBAAkBb,EAAQlyI,EAARkyI,SAC1F,OACCH,EAAAA,GAAAA,KAACe,GAAkB,CAClB9pI,KAAMA,EACNqyC,QAASq5F,EACT3B,iBAAkBA,EAClBC,qBAAsBA,EACtBC,QAASjB,GACR,gLACAE,IAIJ,EAEMyC,GAAoB,SAAHthI,GAAgD,IAA1CqgD,EAAMrgD,EAANqgD,OAAQkhF,EAASvhI,EAATuhI,UAAWC,EAAKxhI,EAALwhI,MAAO3C,EAAQ7+H,EAAR6+H,SACtD,OACCH,EAAAA,GAAAA,KAAC+C,GAAU,CAACphF,OAAQA,EAAQrY,QAAS,kBAAMu5F,GAAU,EAAM,EAAChhI,UAC3Dk+H,EAAAA,GAAAA,MAACiD,GAAU,CAAAnhI,SAAA,EACVm+H,EAAAA,GAAAA,KAACiD,GAAS,CAAAphI,SACRo+H,GACA,gFACAE,MAGFH,EAAAA,GAAAA,KAACkD,GAAiB,CAAArhI,SAAC,OACnBm+H,EAAAA,GAAAA,KAACmD,GAAU,CAAAthI,SACTo+H,GACA,0WACAE,MAGFH,EAAAA,GAAAA,KAAA,OAAK1xI,MAAO,CAAC80I,UAAW,UAAUvhI,UACjCm+H,EAAAA,GAAAA,KAAC9B,GAAS,CACTx7I,MAAOogJ,EACPvI,WAAY,EACZnoI,MAAO,IACPC,OAAQ,IACRmoI,cAAe,CACdpoI,MAAO,IACPC,OAAQ,aAOf,EAIM2wI,GAAahrC,GAAOqrC,IAAGvrB,KAAAA,GAAAh+B,EAAA,wHAOvBmpD,GAAYjrC,GAAO6f,GAAP7f,CAAUggB,KAAAA,GAAAl+B,EAAA,qDAItBopD,GAAoBlrC,GAAOqrC,IAAGnrB,KAAAA,GAAAp+B,EAAA,0EAK9BqpD,GAAanrC,GAAOqrC,IAAGjrB,KAAAA,GAAAt+B,EAAA,+BCs/DtB,SAASwpD,GAAyB51I,GACvC,OAAOwxI,GAAQ,CAAC,IAAM,MAAM,KAAO,CAAC,KAAO,eAAe,QAAU,aAAa,MAAQ,CAAC,CAAC,IAAM,OAAO,KAAO,CAAC,SAAW,UAAU,EAAI,iEAAiE,MAAQ,IAAI,CAAC,IAAM,OAAO,KAAO,CAAC,EAAI,sGAAsG,MAAQ,MAAvVA,CAA8VxxI,EACvW,CA4KO,SAAS61I,GAAoB71I,GAClC,OAAOwxI,GAAQ,CAAC,IAAM,MAAM,KAAO,CAAC,KAAO,eAAe,QAAU,aAAa,MAAQ,CAAC,CAAC,IAAM,OAAO,KAAO,CAAC,SAAW,UAAU,EAAI,yiBAAyiB,MAAQ,MAAnrBA,CAA0rBxxI,EACnsB,CA+sCO,SAAS81I,GAAe91I,GAC7B,OAAOwxI,GAAQ,CAAC,IAAM,MAAM,KAAO,CAAC,KAAO,eAAe,QAAU,aAAa,MAAQ,CAAC,CAAC,IAAM,OAAO,KAAO,CAAC,SAAW,UAAU,EAAI,yHAAyH,MAAQ,MAAnQA,CAA0QxxI,EACnR,CAUO,SAAS+1I,GAAa/1I,GAC3B,OAAOwxI,GAAQ,CAAC,IAAM,MAAM,KAAO,CAAC,KAAO,eAAe,QAAU,aAAa,MAAQ,CAAC,CAAC,IAAM,OAAO,KAAO,CAAC,SAAW,UAAU,EAAI,qGAAqG,MAAQ,MAA/OA,CAAsPxxI,EAC/P,CAsBO,SAASg2I,GAAiBh2I,GAC/B,OAAOwxI,GAAQ,CAAC,IAAM,MAAM,KAAO,CAAC,KAAO,eAAe,QAAU,aAAa,MAAQ,CAAC,CAAC,IAAM,OAAO,KAAO,CAAC,EAAI,8GAA8G,MAAQ,IAAI,CAAC,IAAM,OAAO,KAAO,CAAC,EAAI,yJAAyJ,MAAQ,IAAI,CAAC,IAAM,OAAO,KAAO,CAAC,EAAI,mLAAmL,MAAQ,MAA3nBA,CAAkoBxxI,EAC3oB,CAskDO,SAASi2I,GAAkBj2I,GAChC,OAAOwxI,GAAQ,CAAC,IAAM,MAAM,KAAO,CAAC,KAAO,eAAe,QAAU,aAAa,MAAQ,CAAC,CAAC,IAAM,OAAO,KAAO,CAAC,EAAI,qYAAqY,MAAQ,MAA1fA,CAAigBxxI,EAC1gB,CA8UO,SAASk2I,GAAal2I,GAC3B,OAAOwxI,GAAQ,CAAC,IAAM,MAAM,KAAO,CAAC,KAAO,eAAe,QAAU,aAAa,MAAQ,CAAC,CAAC,IAAM,OAAO,KAAO,CAAC,EAAI,gKAAgK,MAAQ,IAAI,CAAC,IAAM,OAAO,KAAO,CAAC,EAAI,0EAA0E,MAAQ,MAArYA,CAA4YxxI,EACrZ,CA2FO,SAASm2I,GAAcn2I,GAC5B,OAAOwxI,GAAQ,CAAC,IAAM,MAAM,KAAO,CAAC,KAAO,eAAe,QAAU,aAAa,MAAQ,CAAC,CAAC,IAAM,OAAO,KAAO,CAAC,EAAI,uEAAuE,MAAQ,IAAI,CAAC,IAAM,OAAO,KAAO,CAAC,EAAI,uOAAuO,MAAQ,MAAzcA,CAAgdxxI,EACzd,CA27BO,SAASo2I,GAAkBp2I,GAChC,OAAOwxI,GAAQ,CAAC,IAAM,MAAM,KAAO,CAAC,KAAO,eAAe,QAAU,aAAa,MAAQ,CAAC,CAAC,IAAM,OAAO,KAAO,CAAC,EAAI,uEAAuE,MAAQ,IAAI,CAAC,IAAM,OAAO,KAAO,CAAC,EAAI,keAAke,MAAQ,MAApsBA,CAA2sBxxI,EACptB,CAg7CO,SAASq2I,GAAWr2I,GACzB,OAAOwxI,GAAQ,CAAC,IAAM,MAAM,KAAO,CAAC,KAAO,eAAe,QAAU,aAAa,MAAQ,CAAC,CAAC,IAAM,OAAO,KAAO,CAAC,EAAI,8IAA8I,MAAQ,IAAI,CAAC,IAAM,OAAO,KAAO,CAAC,EAAI,kMAAkM,MAAQ,MAA3eA,CAAkfxxI,EAC3f,CC57PA,IAAMs2I,GAAiB,WACtB,IAAIC,EAAOxqI,aAAayqI,QAAQ,YAEhC,OADAD,EAAgB,KAATA,EAAc,KAAOA,GAE3BlE,EAAAA,GAAAA,MAAA,OACCzxI,MAAO,CACN29C,QAAS,OACT+zE,cAAe,SACf1uH,WAAY,SACZe,OAAQ,OACRd,eAAgB,UACfsQ,SAAA,EAEFm+H,EAAAA,GAAAA,KAAA,MAAAn+H,SAAKo+H,GAAS,kFAAgFgE,MAC9FlE,EAAAA,GAAAA,MAAA,KACCvxG,KAAK,6BACLlgC,MAAO,CAAEu1D,WAAY,QAASp4B,MAAO,QAASw4B,QAAS,YAAa67E,SAAU,QAASj+H,SAAA,EAEvFm+H,EAAAA,GAAAA,KAAC4D,GAAW,IAAG,gBAInB,EAEqB18C,GAAa,SAAArnF,GAAAI,EAAAinF,EAAArnF,GAAA,IAAAK,EAAAtB,EAAAsoF,GAAA,SAAAA,IAAA,IAAA/mF,EAAAzR,EAAA,KAAAw4F,GAAA,QAAA9tC,EAAAl1D,UAAArI,OAAA0H,EAAA,IAAA3C,MAAAw4D,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAA91D,EAAA81D,GAAAn1D,UAAAm1D,GAahC,OAbgCl5C,EAAAD,EAAApf,KAAAiD,MAAAmc,EAAA,OAAAxa,OAAAnC,KACjCsgB,MAAQ,CACPsgI,UAAU,EACV3+H,MAAO,CAAEm/B,QAAS,GAAI9xB,MAAO,IAC7By/D,KAAM,CAAE/sC,eAAgB,KACxBplC,EAMDklC,kBAAoB,SAAC7/B,EAAO8sE,GAC3BnyE,EAAKsD,SAAS,CAAE+B,MAAAA,EAAO8sE,KAAAA,GACxB,EAACnyE,CAAA,CAQA,OARA3S,EAAA05F,EAAA,EAAAzgG,IAAA,SAAA/D,MAED,WACC,IAAAkhB,EAAkC3f,KAAK4f,MAA/BsgI,EAAQvgI,EAARugI,SAAU3+H,EAAK5B,EAAL4B,MAAO8sE,EAAI1uE,EAAJ0uE,KACrB6xD,GAAUnsI,QAAQC,IAAIuN,EAAO8sE,GACjC,IAAQzwE,EAAa5d,KAAKyJ,MAAlBmU,SAER,OAAOsiI,GAAWnE,EAAAA,GAAAA,KAACgE,GAAc,IAAMniI,CACxC,KAACqlF,CAAA,CArBgC,CAAS/iF,EAAAA,WAAtB+iF,GAObz+F,yBAA2B,SAAC+c,GAClC,MAAO,CAAE2+H,UAAU,EACpB,8rRCrBc,SAASC,GAASn2I,GAAuB,IAADo2I,EAAnBC,EAAer2I,EAAfq2I,gBAGnC9yB,GAA4CpvE,EAAAA,EAAAA,YAAWqvE,KAA/CC,EAAWF,EAAXE,YAAaC,EAAkBH,EAAlBG,mBACwCgb,EAAAhnH,GAAfi9B,EAAAA,EAAAA,WAAS,GAAM,GAAtD2hG,EAAe5X,EAAA,GAAE6X,EAAkB7X,EAAA,GACY8X,EAAA9+H,GAAdi9B,EAAAA,EAAAA,WAAS,GAAK,GAA/C8hG,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GAuBpC,IArBApiG,EAAAA,EAAAA,YAAU,WACTsiG,EAAgB/iI,GAAM6yG,wBAA0B,IACjD,GAAG,CAAC/C,IAmBS,MAAT9vG,GAAe,OAAOo+H,EAAAA,GAAAA,KAAA4E,GAAAA,SAAA,IAE1B,IAAMC,EAAkB,CACvB7K,OAAQ,mBACR3nI,OAAO,GAAD3M,OAAKkc,GAAM2yG,eACjB5wD,gBAAiB,cACjBl4B,MAAM,GAAD/lC,OAAKsrH,IACV5+G,MAAO,GACPgxI,UAAW,SAIN0B,EAAgB,CACrB9K,OAAQ,EACR3nI,OAAO,GAAD3M,OAAKkc,GAAM2yG,eACjB5wD,gBAAiB,cACjBl4B,MAAM,GAAD/lC,OAAKsrH,IACV5+G,MAAO,IAIF2yI,EAA0B,CAC/B1yI,OAAO,GAAD3M,OAAgC,GAA3Bkc,GAAM0yG,sBAAmD,MACpE0wB,WAAW,GAADt/I,OAHmB,GAGdkc,GAAM0yG,sBAA6C,MAClE3wD,gBAAiB,cACjBvxD,MAAO,IAIF6yI,EAAyB,CAC9B5yI,OAAO,GAAD3M,OAAgC,GAA3Bkc,GAAM0yG,sBAAkD,MACnE0wB,WAAW,GAADt/I,OAHkB,GAGbkc,GAAM0yG,sBAA4C,MACjE3wD,gBAAiB,cACjBvxD,MAAO,IAGF8yI,EAAmB,CACxB7yI,OAAO,GAAD3M,OAAmC,GAA9Bkc,GAAM0yG,sBAA2B,MAC5C0lB,OAAQ,iBAGHmL,EAAkB,CACvB9yI,OAAO,GAAD3M,OAAmC,GAA9Bkc,GAAM0yG,sBAA2B,MAC5C0lB,OAAQ,iBAGHoL,EAAmB/0B,GAAO00B,EAA0BE,EACpDI,EAAYh1B,GAAO60B,EAAmBC,EAE5C,OACCpF,EAAAA,GAAAA,MAACuF,GAAS,CAACh3I,MAAO,CAAE8D,MAAOkyI,GAAmB,QAASziI,SAAA,EACtDk+H,EAAAA,GAAAA,MAACwF,GAAgB,CAAA1jI,SAAA,CACf6iI,IACA1E,EAAAA,GAAAA,KAACgC,GAAa,CACbxzG,KAAMsiF,GACNtrH,OAAO,SACPyR,MAAM+oI,EAAAA,GAAAA,KAAA,OAAK5pI,IAAYovI,GAA2Bl3I,MAAO+2I,EAAWI,IAAI,KACxE1D,mBAAoBqD,EACpBnE,qBAAsB4D,EACtB3D,QAASjB,GACR,+HACAvuB,EAAYyuB,aAIfH,EAAAA,GAAAA,KAACgC,GAAa,CACbxzG,KAAK,IACLhpC,OAAO,SACPyR,KAAMgpI,GAAS,0BAA2BvuB,EAAYyuB,UACtD4B,mBAAoB+C,EACpB7D,qBAAsB4D,EACtB3D,QAASjB,GACR,2HACAvuB,EAAYyuB,gBAIfH,EAAAA,GAAAA,KAACuF,GAAgB,CAAA1jI,SACf0uG,KACAyvB,EAAAA,GAAAA,KAACe,GAAkB,CAClB19G,GAAG,mBACHpsB,KACCu5G,IACCwvB,EAAAA,GAAAA,KAAC2D,GAAgB,CAACn6F,KAAM5nC,GAAMsyG,uBAE9B8rB,EAAAA,GAAAA,KAACuD,GAAkB,CAAC/5F,KAAM5nC,GAAMsyG,sBAGlC5qE,QApGL,SAAsB/+C,GAChBimH,GAGJE,GAAuB3sH,MAAMwD,UAF7BkpH,GAAwB1sH,MAAMwD,SAASktB,KAIzC,EA+FKwsH,qBAAoBj+H,EAAAA,EAAA,GAAO6hI,GAAoB,CAAE5gF,QAAS,YAAa,SAAU,KACjFi9E,QAASjB,GACR,+EACAvuB,EAAYyuB,eAKhBJ,EAAAA,GAAAA,MAACwF,GAAgB,CAAA1jI,SAAA,CACf6iI,IACA1E,EAAAA,GAAAA,KAAC0F,GAAc,CACdC,SArHL,SAAkCp7I,GACjConH,EAAmB,WAAYpnH,EAAE/E,OAAO9C,MACzC,EAoHKA,MAAiC,QAAf,OAAXgvH,QAAW,IAAXA,OAAW,EAAXA,EAAayuB,UAAoBzuB,EAAYyuB,SAAW,KAAKt+H,SAEnE,mDAAgD9hB,MAAM,KAAKS,KAAI,SAAColJ,EAAM/yI,GAAK,OAC3EmtI,EAAAA,GAAAA,KAAA,UAAoBt9I,MAAOkjJ,EAAK7lJ,MAAM,KAAK,GAAG+yB,OAAOjR,SACnD+jI,EAAK7lJ,MAAM,KAAK,GAAG+yB,QADRjgB,EAEJ,OAIZmtI,EAAAA,GAAAA,KAACe,GAAkB,CAClBz3F,QAnHJ,WACCk7F,GAAmB,EACpB,EAkHIvtI,MAAM+oI,EAAAA,GAAAA,KAAC6D,GAAY,CAACr6F,KAAM5nC,GAAMsyG,sBAChC+sB,qBAAoBj+H,EAAAA,EAAA,GAAO6hI,GAAe,IAAE7K,OAAQ,mBACpDkH,QAASjB,GACR,mFACAvuB,EAAYyuB,aAGdH,EAAAA,GAAAA,KAACN,GAAW,CAAC/9E,OAAQ4iF,EAAiBj7F,QAAS,kBAAMk7F,GAAmB,EAAM,EAAC3iI,UAC9Em+H,EAAAA,GAAAA,KAAC6F,GAAW,CAAAhkI,SACC,OAAX6vG,QAAW,IAAXA,GAAwB,QAAb2yB,EAAX3yB,EAAao0B,mBAAW,IAAAzB,OAAb,EAAXA,EAA0B7jJ,KAAI,SAACkS,EAAMG,GAAK,IAAAkzI,EAAAC,EAAAC,EAAA,OAC1ClG,EAAAA,GAAAA,MAAA,KAAAl+H,SAAA,CACEnP,EAAK,GAAG,KAAU,QAARqzI,EAACrzI,EAAK,UAAE,IAAAqzI,GAAY,QAAZC,EAAPD,EAASrhJ,kBAAU,IAAAshJ,GAAmB,QAAnBC,EAAnBD,EAAqBpmJ,QAAQ,KAAM,WAAG,IAAAqmJ,OAA/B,EAAPA,EAAwCrmJ,QAAQ,KAAM,MAD3DiT,EAEJ,aAOX,CAEA,IAAMyyI,GAAYttC,GAAOqrC,IAAGvrB,KAAAA,GAAAh+B,EAAA,gIAClB,SAACpsF,GAAK,OAAKA,EAAMkU,MAAM4yG,eAAe,GAG3BzD,IAIfw0B,GAAmBvtC,GAAOqrC,IAAGrrB,KAAAA,GAAAl+B,EAAA,oDAK7B4rD,GAAiB1tC,GAAOkuC,OAAMhuB,KAAAA,GAAAp+B,EAAA,qTAIrBi3B,GACLC,IAYJ60B,GAAc7tC,GAAOqrC,IAAGjrB,KAAAA,GAAAt+B,EAAA,6CCnG9B,IAAMqsD,GAAe,+sEAQfC,GAAe,u+kDAIfC,GAAiB,slCAMjBC,GAAeC,GAAaJ,IAC5BK,GAAeD,GAfA,63LAgBfE,GAAeF,GAAaH,IAC5BM,GAAiBH,GAAaF,IAGpC,SAASE,GAAaI,GACrB,IAAMC,EAAcD,EAAU5mJ,MAAM,MAAMgG,QAAO,SAACusG,GAAI,MAAqB,KAAhBA,EAAKx/E,MAAa,IAGzE+zH,EAAWC,GAAUF,EAAY,IAEjCG,EAAiBH,EAAY/xI,MAAM,GAAGrU,KAAI,SAAC8xG,GAAI,OAAKw0C,GAAUx0C,EAAK,IAMvE,OAJAy0C,EAAiBA,EAAehhJ,QAAO,SAACJ,GACvC,OAAuC,IAAhCnD,OAAOqD,KAAKF,GAAS9J,MAC7B,KAEsB2E,KAAI,SAAC26I,GAAK,OAIjC,SAAiBhuC,EAAOn8F,GACvB,IAAIg2D,EAAQ,CAAC,EAGb,OAFAmmC,EAAM3mG,SAAQ,SAACpJ,EAAMyV,GAAK,OAAMm0D,EAAM5pE,GAAQyV,EAAQ7B,EAAOnV,OAASmV,EAAO6B,GAAS,GAAG,IAElFm0D,CACR,CATsCggF,CAAQH,EAAU1L,EAAM,GAC9D,CAWA,SAAS2L,GAAUG,GAClB,IAAMhd,EAAWgd,EAAclnJ,MAAM,KAC/BhE,EAAS,GASf,OAPAkuI,EAASzjI,SAAQ,SAACb,GACjB,IAAM+O,EAAM/O,EAAQmtB,OACpB/2B,EAAOgF,KAAK2T,EACb,IACkC,KAA9B3Y,EAAOA,EAAOF,OAAS,IAC1BE,EAAOk5D,MAEDl5D,CACR,CAeA,SAASmrJ,GAAWC,GACnB,IAAMC,EAAYb,GAbXJ,IAeP,QAAkB93I,IAAd84I,EAAyB,OAAOC,EAEpC,IAAMC,EAAYF,EAAUpnJ,MAAM,KAAK,GACvC,OAAOqnJ,EAAUrhJ,QAAO,SAACgF,GAAC,OAAKA,EAAEs8I,YAAcA,CAAS,IAAE,EAC3D,CAEA,SAASC,GAAeH,GACvB,OAAOD,GAAWC,GAAWI,SAC9B,CAEA,SAASC,GAAqBL,GAC7B,MAAqC,SAA9BG,GAAeH,EACvB,CAEA,SAASM,GAAUN,GAElB,MAAkB,MADHD,GAAWC,GAAWO,MAEtC,CA4BA,SAASC,GAAWR,GACnB,IAAMS,EAAYrB,GArDXH,IAuDP,QAAkB/3I,IAAd84I,EAAyB,OAAOS,EAEpC,IAAMP,EAAYF,EAAUpnJ,MAAM,KAAK,GACvC,OAAO6nJ,EAAU7hJ,QAAO,SAACgF,GAAC,OAAMA,EAAEs8I,YAAcA,EAA8B,MAAhBt8I,EAAEs8I,SAAkB,GACnF,CCzOO,SAASQ,GAAWV,EAAWW,GAGrC,OAFYC,GAAQ,YAAaZ,EAAWW,EAAe/+B,GAG5D,CAEO,SAASi/B,GAAUb,GAEzB,OADYY,GAAQ,YAAaZ,EAAW,CAAC,EAAGp+B,GAEjD,CAWO,SAASk/B,GAAgBd,EAAWW,GAC1C,IAAM37G,EAsBP,SAAyB27G,GACxB,IAAM3pF,EAAS37D,OAAOqD,KAAKiiJ,GAAetnJ,KAAI,SAACiG,GAAG,SAAAf,OAAQe,EAAG,KAAAf,OAAIoiJ,EAAcrhJ,GAAI,IACnF,OAAO03D,EAAO78D,KAAK,IACpB,CAzBa4mJ,CAAgBC,GAAiBhB,EAAWW,IACxD,OAAO37G,CACR,CAOO,SAASi8G,GAAMjB,EAAWW,GAEhC,OADYC,GAAQ,KAAMZ,EAAWgB,GAAiBhB,EAAWW,GAAgBh/B,GAElF,CAGA,SAASi/B,GAAQ5sD,EAAMgsD,EAAWW,EAAeO,GAChD,IAAMl8G,EAAM,IAAIkxC,IAAI,IAAD33E,OAAKy1F,EAAI,KAAAz1F,OAAIyhJ,GAAakB,GAG7C,OAFA7lJ,OAAOqD,KAAKiiJ,GAAethJ,SAAQ,SAACC,GAAG,OAAK0lC,EAAIouF,aAAaI,OAAOl0H,EAAKqhJ,EAAcrhJ,GAAK,IAErF0lC,CACR,CAiBO,SAASg8G,GAAiBhB,EAAWW,GAC3C,IAAMQ,EAAQX,GAAWR,GAEnBoB,EAAU,CAAC,EACjBD,EAAM9hJ,SAAQ,SAACg0B,GAAK,OAAM+tH,EAAQ/tH,EAAMguH,WAAahuH,EAAMiuH,MAAM,IAEjE,IAAMC,EAAU,CAAC,EAGjB,OAFAlmJ,OAAOw0D,QAAQ8wF,GAAethJ,SAAQ,SAAAyH,GAAA,IAAAqT,EAAAqE,EAAA1X,EAAA,GAAExH,EAAG6a,EAAA,GAAE5e,EAAK4e,EAAA,UAAOonI,EAAQC,GAAUliJ,EAAK8hJ,IAAY7lJ,CAAK,IAE1FgmJ,CACR,CAEO,SAASE,GAAmBzB,EAAW0B,GAC7C,IAAMP,EAAQX,GAAWR,GAEnBoB,EAAU,CAAC,EACjBD,EAAM9hJ,SAAQ,SAACg0B,GAAK,OAAM+tH,EAAQ/tH,EAAMiuH,QAAUjuH,EAAMguH,SAAS,IAEjE,IAAMxqD,EAAU,CAAC,EAGjB,OAFAx7F,OAAOw0D,QAAQ6xF,GAAuBriJ,SAAQ,SAAA4iB,GAAA,IAAAE,EAAA3D,EAAAyD,EAAA,GAAE3iB,EAAG6iB,EAAA,GAAE5mB,EAAK4mB,EAAA,UAAO00E,EAAQ2qD,GAAUliJ,EAAK8hJ,IAAY7lJ,CAAK,IAElGs7F,CACR,CAEA,SAAS2qD,GAAUliJ,EAAK8hJ,GAEvB,YAAwBl6I,IAAjBk6I,EAAQ9hJ,GAAqBA,EAAM8hJ,EAAQ9hJ,EACnD,eC3DO,SAASqiJ,GAAU3B,EAAW4B,GACpCC,GAAAA,GAAQx8G,MAAM,CACb8S,OAAQypG,EACR3qF,SAAU+oF,GAEZ,CC5Be,SAAS8B,GAAQh7I,GAAwB,IAArBi7I,EAAgBj7I,EAAhBi7I,iBACzBx3B,GAAgBtvE,EAAAA,EAAAA,YAAWqvE,KAA3BC,YACAo2B,GAAkB1lG,EAAAA,EAAAA,YAAW+mG,KAA7BrB,cAOR,IAAMsB,EAAY/4B,GACd,CAAC,EACD,CACA1sD,gBAAiB,cACjB1X,QAAS,SACTxgB,MAAO,QACP23G,UAAW,UAGTiG,EAAsB,WAAH,OAAUrJ,EAAAA,GAAAA,KAAA4E,GAAAA,SAAA,CAAA/iI,SAC/Bo+H,GADkC5vB,GACzB,0DACA,KAD2DqB,EAAYyuB,WACxC,EAEtCmJ,EAAcj5B,GAAO,CAAE3sD,OAAQ,OAAQzzB,KAAM,QAAW,CAAE79B,MAAO,OAAQ+9B,IAAK,OAAQszB,MAAO,QAEnG,OAAOotD,IACLmvB,EAAAA,GAAAA,KAACgC,GAAa,CACZ/qI,MACE+oI,EAAAA,GAAAA,KAAA4E,GAAAA,SAAA,CAAA/iI,UAEEm+H,EAAAA,GAAAA,KAACqJ,EAAmB,MAGxB76G,KAAM45G,GAAM12B,EAAYy1B,UAAWW,GACnCtiJ,OAAO,SACPw7I,iBAAiB,WACjBC,qBAAsBqI,EACtBvH,mBAAoBqH,EACpBlI,QAASjB,GACP,qSACAvuB,EAAYyuB,aAIhBH,EAAAA,GAAAA,KAAC0C,GAAkB,CACjBzrI,MACE+oI,EAAAA,GAAAA,KAAA4E,GAAAA,SAAA,CAAA/iI,UAEEm+H,EAAAA,GAAAA,KAACqJ,EAAmB,MAGxBrI,iBAAiB,WACjBC,qBAAsBqI,EACtBvH,mBAAoBqH,EACpBzG,cAjDJ,WACEuG,GAAiB,GACjBJ,GAAUp3B,EAAYy1B,UAAW,eACnC,GAiDF,CCzBA,IACA,GAAe,IAA0B,+DCLzC,IACA,GAAe,IAA0B,4DCFzC,IACA,GAAe,IAA0B,6DCKzC,GAjC8B,SAAHl5I,GAAuC,IAAjCs7I,EAAiBt7I,EAAjBs7I,kBAAmBrsJ,EAAM+Q,EAAN/Q,OAC1Cy0H,GAAuBvvE,EAAAA,EAAAA,YAAWqvE,KAAlCE,mBAaR,OACEouB,EAAAA,GAAAA,MAAA,OAAK79H,UAAU,kBAAiBL,SAAA,EAC9Bm+H,EAAAA,GAAAA,KAAC7mB,GAAI,CAAC7vE,QAASigG,EAAmBrnI,UAAU,kBAAiBL,UAC3Dm+H,EAAAA,GAAAA,KAAA,OAAK5pI,IAAKozI,GAAe/D,IAAI,kBAE7BvoJ,IACA6iJ,EAAAA,GAAAA,MAAA6E,GAAAA,SAAA,CAAA/iI,SAAA,EACEm+H,EAAAA,GAAAA,KAAC7mB,GAAI,CAAC7vE,QAfQ,WACrBqoE,EAAmB,OAJA,GAIuC,KAAhBzwH,KAAKuxC,SACjD,EAauCvwB,UAAU,eAAcL,UACpDm+H,EAAAA,GAAAA,KAAA,OAAK5pI,IAAKqzI,GAAQhE,IAAI,eAExBzF,EAAAA,GAAAA,KAAC7mB,GAAI,CAAC7vE,QAdQ,WACrBqoE,EAAmB,OAPC,mBAOuC,KAAhBzwH,KAAKuxC,SAClD,EAYwCvwB,UAAU,gBAAeL,UACtDm+H,EAAAA,GAAAA,KAAA,OAAK5pI,IAAKszI,GAASjE,IAAI,oBAMnC,EC5Be,SAASkE,GAAsB17I,GAAuD,IAApD4T,EAAQ5T,EAAR4T,SAAU+nI,EAAU37I,EAAV27I,WAAYC,EAAM57I,EAAN47I,OAAQN,EAAiBt7I,EAAjBs7I,kBACtE73B,GAAgBtvE,EAAAA,EAAAA,YAAWqvE,KAA3BC,YACAo2B,GAAkB1lG,EAAAA,EAAAA,YAAW+mG,KAA7BrB,cACiDnb,EAAAhnH,GAAfi9B,EAAAA,EAAAA,WAAS,GAAM,GAAlDknG,EAAand,EAAA,GAAEuc,EAAgBvc,EAAA,GACG8X,EAAA9+H,GAAfi9B,EAAAA,EAAAA,WAAS,GAAM,GAAlCkgG,EAAK2B,EAAA,GAAEsF,EAAQtF,EAAA,GAMtB,OAJApiG,EAAAA,EAAAA,YAAU,WACT0nG,EAAS3B,GAAM12B,EAAYy1B,UAAWW,GACvC,GAAG,CAACp2B,EAAao2B,KAGhB9H,EAAAA,GAAAA,KAAC94C,GAAa,CAAArlF,UACbk+H,EAAAA,GAAAA,MAAA,OAAK79H,UAAU,wBAAuBL,SAAA,EACrCk+H,EAAAA,GAAAA,MAAA,OAAK79H,UAAU,sBAAqBL,SAAA,EACjC+nI,IAAc5J,EAAAA,GAAAA,KAACoE,GAAS,CAACE,iBAAiB,KAC5CvE,EAAAA,GAAAA,MAAA,OAAK79H,UAAU,cAAaL,SAAA,EAC3Bm+H,EAAAA,GAAAA,KAACgK,GAAc,CAACT,kBAAmBA,EAAmBrsJ,QAASmzH,MAC7Dw5B,IAAU7J,EAAAA,GAAAA,KAACiJ,GAAQ,CAACC,iBAAkBA,IACvCrnI,SAGHm+H,EAAAA,GAAAA,KAAC4C,GAAiB,CACjBjhF,OAAQmoF,EACRjH,UAAWqG,EACXpG,MAAOA,EACP3C,SAAUzuB,EAAYyuB,eAK3B,8BCvCe,SAAS,GAAyB16I,EAAQ0d,GACvD,GAAc,MAAV1d,EAAgB,MAAO,CAAC,EAC5B,IACIgB,EAAK9F,EADL6E,ECHS,SAAuCC,EAAQ0d,GAC5D,GAAc,MAAV1d,EAAgB,MAAO,CAAC,EAC5B,IAEIgB,EAAK9F,EAFL6E,EAAS,CAAC,EACV4d,EAAa5gB,OAAOqD,KAAKJ,GAE7B,IAAK9E,EAAI,EAAGA,EAAIyiB,EAAWvnB,OAAQ8E,IACjC8F,EAAM2c,EAAWziB,GACbwiB,EAAS1S,QAAQhK,IAAQ,IAC7BjB,EAAOiB,GAAOhB,EAAOgB,IAEvB,OAAOjB,CACT,CDRe,CAA6BC,EAAQ0d,GAElD,GAAI3gB,OAAOsD,sBAAuB,CAChC,IAAIwd,EAAmB9gB,OAAOsD,sBAAsBL,GACpD,IAAK9E,EAAI,EAAGA,EAAI2iB,EAAiBznB,OAAQ8E,IACvC8F,EAAM6c,EAAiB3iB,GACnBwiB,EAAS1S,QAAQhK,IAAQ,GACxBjE,OAAO3B,UAAUoF,qBAAqBnF,KAAK2E,EAAQgB,KACxDjB,EAAOiB,GAAOhB,EAAOgB,GAEzB,CACA,OAAOjB,CACT,CEfA,SAAS0sF,GAAmBC,EAAKz9C,EAAS8tC,EAAQ4P,EAAOC,EAAQ5rF,EAAK+xD,GACpE,IACE,IAAI85B,EAAOH,EAAI1rF,GAAK+xD,GAChB91D,EAAQ4vF,EAAK5vF,KACnB,CAAE,MAAO8iB,IAEP,YADAg9D,EAAOh9D,GAET,CACI8sE,EAAKpsE,KACPwuB,EAAQhyC,GAER6xC,QAAQG,QAAQhyC,GAAOiyC,KAAKy9C,EAAOC,EAEvC,CACe,SAAS,GAAkBpQ,GACxC,OAAO,WACL,IAAI7oE,EAAOnV,KACTV,EAAOW,UACT,OAAO,IAAIqwC,SAAQ,SAAUG,EAAS8tC,GACpC,IAAI2P,EAAMlQ,EAAGl+E,MAAMqV,EAAM7V,GACzB,SAAS6uF,EAAM1vF,GACbwvF,GAAmBC,EAAKz9C,EAAS8tC,EAAQ4P,EAAOC,EAAQ,OAAQ3vF,EAClE,CACA,SAAS2vF,EAAOv1E,GACdo1E,GAAmBC,EAAKz9C,EAAS8tC,EAAQ4P,EAAOC,EAAQ,QAASv1E,EACnE,CACAs1E,OAAM/jF,EACR,GACF,CACF,CC5Be,SAAS,KActB,OAZE,GADqB,qBAAZ0Q,SAA2BA,QAAQiV,IACrCjV,QAAQiV,IAAInc,OAEZ,SAAcrS,EAAQ7C,EAAUyoI,GACrC,IAAIrxG,ECLK,SAAwB3zB,EAAQzD,GAC7C,MAAQH,OAAO3B,UAAUiB,eAAehB,KAAKsF,EAAQzD,IAEpC,QADfyD,EAAS,EAAeA,MAG1B,OAAOA,CACT,CDDiB,CAAcZ,EAAQ7C,GACjC,GAAKo3B,EAAL,CACA,IAAIilC,EAAOx8D,OAAOoH,yBAAyBmwB,EAAMp3B,GACjD,OAAIq8D,EAAKhrC,IACAgrC,EAAKhrC,IAAIlzB,KAAKoD,UAAUrI,OAAS,EAAI2J,EAAS4lI,GAEhDpsE,EAAKt8D,KALK,CAMnB,EAEK,GAAKqB,MAAME,KAAMC,UAC1B,CEoQA,IA/QA,IAAM+lJ,GAAW,MACXC,GAAQ,CAAEC,KAAM,EAAGC,OAAQ,EAAGC,MAAO,EAAGC,OAAQ,EAAGC,MAAO,EAAGC,IAAK,GAClEC,GAAQ,CAAEH,OAAQ,EAAGE,IAAK,EAAGE,UAAW,EAAGC,aAAc,GACzDC,GAAe,EACfC,GAAe,EACfC,GAAgB,EAChBC,GAAoB,EACpBC,GAAiB,EACjBC,GAAe,EACfC,GAAmB,EACnBC,GAAe,EACfC,GAAY,EACZC,GAAW,EACXC,GAAa,EACbC,GAAc,EACdC,GAAgB,EAChBC,GAAa,EACbC,GAAiB,EACjBC,GAAmB,EACnBC,GAAsB,EACtBC,GAAmB,EACnBC,GAAiB,EACjBC,GAAc,IACdC,GAAmB,IACnBC,GAA0B,IAC1BC,GAAc,IACdC,GAAc,IACdC,GAAa,IACbC,GAAY,IACZC,GAAiB,IACjBC,GAAyB,IACzBC,GAAiB,IACjBC,GAAyB,IACzBC,GAAiB,IACjBC,GAAyB,IACzBC,GAAiB,IACjBC,GAAyB,IACzBC,GAAyB,IACzBC,GAAa,EACbC,GAAc,EACdC,GAAY,EACZC,GAAiB,EACjBC,GAAa,EACbC,GAAoB,EACpBC,GAAe,EACfC,GAAgB,EAChBC,GAAoB,EACpBC,GAAe,EACfC,GAAe,EACfC,GAAgB,EAChBC,GAAoB,EACpBC,GAAsB,EACtBC,GAAoB,EACpBC,GAAwB,EACxBC,GAAoB,EAEpBC,GAAY,IACZC,GAAwB,IACxBC,GAAwB,IACxBC,GAAmC,IACnCC,GAAmC,IACnCC,GAA0B,IAC1BC,GAAiB,IACjBC,GAAsB,KACtBC,GAAyB,KACzBC,GAAgB,KAChBC,GAA6B,KAC7BC,GAA6B,KAC7BC,GAA4B,KAC5BC,GAA4B,KAC5BC,GAAe,KACfC,GAA4B,KAC5BC,GAA4B,KAC5BC,GAA2B,KAC3BC,GAA2B,KAC3BC,GAAmB,KACnBC,GAAW,KACXC,GAAY,KACZC,GAAoB,KACpBC,GAAU,KACVC,GAAkB,KAClBC,GAAY,KACZC,GAAgB,KAChBC,GAAwB,KACxBC,GAAwB,KACxBC,GAAqB,KACrBC,GAAc,KACdC,GAAY,KACZC,GAAa,KACbC,GAAkB,KAClBC,GAAuB,KACvBC,GAAc,KACdC,GAAqB,KACrBC,GAAY,KACZC,GAAmB,KACnBC,GAAW,KACXC,GAAkB,KAClBC,GAAoB,KAEpBC,GAAuB,MACvBC,GAAwB,MACxBC,GAAwB,MACxBC,GAAwB,MACxBC,GAA0B,MAC1BC,GAA0B,MAC1BC,GAA2B,MAC3BC,GAA2B,MAC3BC,GAAkB,MAClBC,GAAkB,MAClBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAwB,MACxBC,GAAwB,MACxBC,GAAwB,MACxBC,GAAyB,MACzBC,GAAyB,MACzBC,GAAyB,MACzBC,GAAmB,MACnBC,GAAW,KACXC,GAAa,KACbC,GAAe,KACfC,GAAsB,KACtBC,GAAoB,KACpBC,GAAoB,KACpBC,GAAsB,KACtBC,GAAkB,KAClBC,GAAmB,KACnBC,GAA2B,KAC3BC,GAA6B,KAC7BC,GAAoB,EACpBC,GAAwB,EACxBC,GAAsB,EACtBC,GAAiB,IACjBC,GAAe,KACfC,GAAoB,KACpBC,GAAmB,KACnBC,GAAwB,EACxBC,GAAuB,EAGvBC,GAAe,GACfC,GAAiB,OACjBC,GAAuB,cAEvBC,GAAgB,EAChBC,GAAgB,KAChBC,GAAmB,KACnBC,GAAqB,KACrBC,GAAqB,KACrBC,GAAyB,MACzBC,GAAyB,MACzBC,GAAkB,KAElBC,GAAmB,IACnBC,GAAkB,IAClBC,GAAmB,IACnBC,GAAuB,IACvBC,GAAqB,IACrBC,GAAsB,IACtBC,GAA0B,IAC1BC,GAAoB,IAEpBC,GAAkB,MAClBC,GAAmB,MACnBC,GAAkB,MAClBC,GAAkB,MAClBC,GAAmB,MACnBC,GAAkB,MAClBC,GAAkB,MAClBC,GAAmB,MACnBC,GAAkB,MAElBC,GAAQ,MACRC,GAAQ,SAERC,GAAe,KAMfC,GAAe,oBAAAA,IAAA7mJ,EAAA,KAAA6mJ,EAAA,CA6EnB,OA7EmB/nJ,EAAA+nJ,EAAA,EAAA9uJ,IAAA,mBAAA/D,MAEpB,SAAkBmG,EAAMqpC,QAEE7jC,IAApBpK,KAAK2qI,aAA2B3qI,KAAK2qI,WAAa,CAAC,GAExD,IAAMniG,EAAYxoC,KAAK2qI,gBAEIvgI,IAAtBo+B,EAAW5jC,KAEf4jC,EAAW5jC,GAAS,KAI4B,IAA5C4jC,EAAW5jC,GAAO4H,QAASyhC,IAE/BzF,EAAW5jC,GAAO9H,KAAMmxC,EAI1B,GAAC,CAAAzrC,IAAA,mBAAA/D,MAED,SAAkBmG,EAAMqpC,GAEvB,QAAyB7jC,IAApBpK,KAAK2qI,WAA2B,OAAO,EAE5C,IAAMniG,EAAYxoC,KAAK2qI,WAEvB,YAA6BvgI,IAAtBo+B,EAAW5jC,KAAoE,IAA5C4jC,EAAW5jC,GAAO4H,QAASyhC,EAEtE,GAAC,CAAAzrC,IAAA,sBAAA/D,MAED,SAAqBmG,EAAMqpC,GAE1B,QAAyB7jC,IAApBpK,KAAK2qI,WAAV,CAEA,IACM4mB,EADYvxJ,KAAK2qI,WACU/lI,GAEjC,QAAuBwF,IAAlBmnJ,EAA8B,CAElC,IAAM3iJ,EAAQ2iJ,EAAc/kJ,QAASyhC,IAEpB,IAAZr/B,GAEJ2iJ,EAAc1jG,OAAQj/C,EAAO,EAI/B,CAf2C,CAiB5C,GAAC,CAAApM,IAAA,gBAAA/D,MAED,SAAe8pC,GAEd,QAAyBn+B,IAApBpK,KAAK2qI,WAAV,CAEA,IACM4mB,EADYvxJ,KAAK2qI,WACUpiG,EAAM3jC,MAEvC,QAAuBwF,IAAlBmnJ,EAA8B,CAElChpH,EAAMhnC,OAASvB,KAKf,IAFA,IAAM+C,EAAQwuJ,EAAc3gJ,MAAO,GAEzBlU,EAAI,EAAGmK,EAAI9D,EAAMnL,OAAQ8E,EAAImK,EAAGnK,IAEzCqG,EAAOrG,GAAIG,KAAMmD,KAAMuoC,GAIxBA,EAAMhnC,OAAS,IAEhB,CApB2C,CAsB5C,KAAC+vJ,CAAA,CA7EmB,GAiFfE,GAAO,GAEH90J,GAAI,EAAGA,GAAI,IAAKA,KAEzB80J,GAAM90J,KAAQA,GAAI,GAAK,IAAM,IAASA,GAAI+D,SAAU,IAIrD,IAAIgxJ,GAAQ,QAGNC,GAAUz0J,KAAK00J,GAAK,IACpBC,GAAU,IAAM30J,KAAK00J,GAG3B,SAASE,KAER,IAAMC,EAAqB,WAAhB70J,KAAKuxC,SAAwB,EAClCujH,EAAqB,WAAhB90J,KAAKuxC,SAAwB,EAClCwjH,EAAqB,WAAhB/0J,KAAKuxC,SAAwB,EAClCyjH,EAAqB,WAAhBh1J,KAAKuxC,SAAwB,EAOxC,OANagjH,GAAW,IAALM,GAAcN,GAAMM,GAAM,EAAI,KAASN,GAAMM,GAAM,GAAK,KAASN,GAAMM,GAAM,GAAK,KAAS,IAC5GN,GAAW,IAALO,GAAcP,GAAMO,GAAM,EAAI,KAAS,IAAMP,GAAMO,GAAM,GAAK,GAAO,IAASP,GAAMO,GAAM,GAAK,KAAS,IAC9GP,GAAW,GAALQ,EAAY,KAASR,GAAMQ,GAAM,EAAI,KAAS,IAAMR,GAAMQ,GAAM,GAAK,KAASR,GAAMQ,GAAM,GAAK,KACrGR,GAAW,IAALS,GAAcT,GAAMS,GAAM,EAAI,KAAST,GAAMS,GAAM,GAAK,KAAST,GAAMS,GAAM,GAAK,MAG9Ej6J,aAEb,CAEA,SAASk6J,GAAOzzJ,EAAOysC,EAAKhuC,GAE3B,OAAOD,KAAKC,IAAKguC,EAAKjuC,KAAKiuC,IAAKhuC,EAAKuB,GAEtC,CAIA,SAAS0zJ,GAAiBprJ,EAAGD,GAE5B,OAAWC,EAAID,EAAMA,GAAMA,CAE5B,CAyBA,SAASsrJ,GAAMl2J,EAAGmL,EAAG/P,GAEpB,OAAS,EAAIA,GAAM4E,EAAI5E,EAAI+P,CAE5B,CAyFA,SAASgrJ,GAAc5zJ,GAEtB,OAAqC,KAA5BA,EAAUA,EAAQ,IAAyB,IAAVA,CAE3C,CAEA,SAAS6zJ,GAAgB7zJ,GAExB,OAAOxB,KAAKs1J,IAAK,EAAGt1J,KAAKurD,KAAMvrD,KAAK+W,IAAKvV,GAAUxB,KAAKo+B,KAEzD,CAEA,SAASm3H,GAAiB/zJ,GAEzB,OAAOxB,KAAKs1J,IAAK,EAAGt1J,KAAKwf,MAAOxf,KAAK+W,IAAKvV,GAAUxB,KAAKo+B,KAE1D,CA0HA,IAAIo3H,GAAyBl0J,OAAOkjB,OAAO,CAC1C/G,UAAW,KACXg3I,QAASA,GACTE,QAASA,GACTC,aAAcA,GACdK,MAAOA,GACPC,gBAAiBA,GACjBO,UApQD,SAAoBx2J,EAAGy2J,EAAIC,EAAIC,EAAIC,GAElC,OAAOD,GAAO32J,EAAIy2J,IAASG,EAAKD,IAASD,EAAKD,EAE/C,EAiQCI,YA9PD,SAAsB72J,EAAGmL,EAAG5I,GAE3B,OAAKvC,IAAMmL,GAED5I,EAAQvC,IAAQmL,EAAInL,GAItB,CAIT,EAmPCk2J,KAAMA,GACNY,KA1OD,SAAe92J,EAAGmL,EAAG4rJ,EAAQC,GAE5B,OAAOd,GAAMl2J,EAAGmL,EAAG,EAAIpK,KAAKk2J,KAAOF,EAASC,GAE7C,EAuOCE,SApOD,SAAmBl3J,GAAgB,IAAbtE,EAAMqI,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE9B,OAAOrI,EAASqF,KAAK4f,IAAKs1I,GAAiBj2J,EAAY,EAATtE,GAAeA,EAE9D,EAiOCy7J,WA9ND,SAAqBn3J,EAAGgvC,EAAKhuC,GAE5B,OAAKhB,GAAKgvC,EAAa,EAClBhvC,GAAKgB,EAAa,GAEvBhB,GAAMA,EAAIgvC,IAAUhuC,EAAMguC,IAEfhvC,GAAM,EAAI,EAAIA,EAE1B,EAsNCo3J,aApND,SAAuBp3J,EAAGgvC,EAAKhuC,GAE9B,OAAKhB,GAAKgvC,EAAa,EAClBhvC,GAAKgB,EAAa,GAEvBhB,GAAMA,EAAIgvC,IAAUhuC,EAAMguC,IAEfhvC,EAAIA,GAAMA,GAAU,EAAJA,EAAQ,IAAO,GAE3C,EA4MCq3J,QAzMD,SAAkBC,EAAKC,GAEtB,OAAOD,EAAMv2J,KAAKwf,MAAOxf,KAAKuxC,UAAailH,EAAOD,EAAM,GAEzD,EAsMCE,UAnMD,SAAoBF,EAAKC,GAExB,OAAOD,EAAMv2J,KAAKuxC,UAAailH,EAAOD,EAEvC,EAgMCG,gBA7LD,SAA0B7rH,GAEzB,OAAOA,GAAU,GAAM7qC,KAAKuxC,SAE7B,EA0LColH,aAvLD,SAAuBn4J,QAEX2O,IAAN3O,IAAkBg2J,GAAQh2J,GAI/B,IAAInE,EAAIm6J,IAAS,WAMjB,OAJAn6J,EAAI2F,KAAK42J,KAAMv8J,EAAIA,IAAM,GAAQ,EAAJA,MAE7BA,GAAKA,EAAI2F,KAAK42J,KAAMv8J,EAAIA,IAAM,EAAO,GAAJA,IAElBA,IAAM,MAAS,GAAM,UAErC,EA0KCw8J,SAxKD,SAAmBC,GAElB,OAAOA,EAAUrC,EAElB,EAqKCsC,SAnKD,SAAmBC,GAElB,OAAOA,EAAUrC,EAElB,EAgKCS,aAAcA,GACdC,eAAgBA,GAChBE,gBAAiBA,GACjB0B,6BA/ID,SAAuCjtJ,EAAGjL,EAAGuK,EAAGtK,EAAGsR,GAQlD,IAAM4mJ,EAAMl3J,KAAKk3J,IACXC,EAAMn3J,KAAKm3J,IAEXC,EAAKF,EAAK5tJ,EAAI,GACd+tJ,EAAKF,EAAK7tJ,EAAI,GAEdguJ,EAAMJ,GAAOn4J,EAAIC,GAAM,GACvBu4J,EAAMJ,GAAOp4J,EAAIC,GAAM,GAEvBw4J,EAAON,GAAOn4J,EAAIC,GAAM,GACxBy4J,EAAON,GAAOp4J,EAAIC,GAAM,GAExB04J,EAAOR,GAAOl4J,EAAID,GAAM,GACxB44J,EAAOR,GAAOn4J,EAAID,GAAM,GAE9B,OAASuR,GAER,IAAK,MACJtG,EAAEgoB,IAAKolI,EAAKG,EAAKF,EAAKG,EAAMH,EAAKI,EAAML,EAAKE,GAC5C,MAED,IAAK,MACJttJ,EAAEgoB,IAAKqlI,EAAKI,EAAML,EAAKG,EAAKF,EAAKG,EAAMJ,EAAKE,GAC5C,MAED,IAAK,MACJttJ,EAAEgoB,IAAKqlI,EAAKG,EAAMH,EAAKI,EAAML,EAAKG,EAAKH,EAAKE,GAC5C,MAED,IAAK,MACJttJ,EAAEgoB,IAAKolI,EAAKG,EAAKF,EAAKM,EAAMN,EAAKK,EAAMN,EAAKE,GAC5C,MAED,IAAK,MACJttJ,EAAEgoB,IAAKqlI,EAAKK,EAAMN,EAAKG,EAAKF,EAAKM,EAAMP,EAAKE,GAC5C,MAED,IAAK,MACJttJ,EAAEgoB,IAAKqlI,EAAKM,EAAMN,EAAKK,EAAMN,EAAKG,EAAKH,EAAKE,GAC5C,MAED,QACCxgJ,QAAQk/C,KAAM,kFAAoF1lD,GAIrG,EA0FCszG,UAxDD,SAAoBpiH,EAAOsE,GAE1B,OAASA,EAAMoX,aAEd,KAAK06I,aAEJ,OAAOp2J,EAER,KAAKq2J,YAEJ,OAAO73J,KAAK83J,MAAe,MAARt2J,GAEpB,KAAK82G,WAEJ,OAAOt4G,KAAK83J,MAAe,IAARt2J,GAEpB,KAAKu2J,WAEJ,OAAO/3J,KAAK83J,MAAe,MAARt2J,GAEpB,KAAKw2J,UAEJ,OAAOh4J,KAAK83J,MAAe,IAARt2J,GAEpB,QAEC,MAAM,IAAIX,MAAO,2BAIpB,EA2BCo3J,YAzFD,SAAwBz2J,EAAOsE,GAE9B,OAASA,EAAMoX,aAEd,KAAK06I,aAEJ,OAAOp2J,EAER,KAAKq2J,YAEJ,OAAOr2J,EAAQ,MAEhB,KAAK82G,WAEJ,OAAO92G,EAAQ,IAEhB,KAAKu2J,WAEJ,OAAO/3J,KAAKC,IAAKuB,EAAQ,OAAW,GAErC,KAAKw2J,UAEJ,OAAOh4J,KAAKC,IAAKuB,EAAQ,KAAS,GAEnC,QAEC,MAAM,IAAIX,MAAO,2BAIpB,IA8DMq3J,GAAO,WAEZ,SAAAA,IAA4B,IAAfj5J,EAAC+D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAA0qJ,GAExBn1J,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,CAEV,CAsdC,OAtdAkC,EAAA4rJ,EAAA,EAAA3yJ,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAK9D,CAEb,EAAC+yB,IAED,SAAWxwB,GAEVuB,KAAK9D,EAAIuC,CAEV,GAAC,CAAA+D,IAAA,SAAAutB,IAED,WAEC,OAAO/vB,KAAKqH,CAEb,EAAC4nB,IAED,SAAYxwB,GAEXuB,KAAKqH,EAAI5I,CAEV,GAAC,CAAA+D,IAAA,MAAA/D,MAED,SAAKvC,EAAGmL,GAKP,OAHArH,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EAEFrH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW22J,GAKV,OAHAp1J,KAAK9D,EAAIk5J,EACTp1J,KAAKqH,EAAI+tJ,EAEFp1J,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMvC,GAIL,OAFA8D,KAAK9D,EAAIA,EAEF8D,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM4I,GAIL,OAFArH,KAAKqH,EAAIA,EAEFrH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,EAAOnQ,GAEpB,OAASmQ,GAER,KAAK,EAAG5O,KAAK9D,EAAIuC,EAAO,MACxB,KAAK,EAAGuB,KAAKqH,EAAI5I,EAAO,MACxB,QAAS,MAAM,IAAIX,MAAO,0BAA4B8Q,GAIvD,OAAO5O,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,GAEb,OAASA,GAER,KAAK,EAAG,OAAO5O,KAAK9D,EACpB,KAAK,EAAG,OAAO8D,KAAKqH,EACpB,QAAS,MAAM,IAAIvJ,MAAO,0BAA4B8Q,GAIxD,GAAC,CAAApM,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAK9D,EAAG8D,KAAKqH,EAE3C,GAAC,CAAA7E,IAAA,OAAA/D,MAED,SAAM0I,GAKL,OAHAnH,KAAK9D,EAAIiL,EAAEjL,EACX8D,KAAKqH,EAAIF,EAAEE,EAEJrH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,EAAGC,GAEP,YAAWgD,IAANhD,GAEJ2M,QAAQk/C,KAAM,yFACPjzD,KAAKq1J,WAAYluJ,EAAGC,KAI5BpH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EAELrH,KAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAKV,OAHAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAKd,OAHAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EAEVrH,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiB0I,EAAG1L,GAKnB,OAHAuE,KAAK9D,GAAKiL,EAAEjL,EAAIT,EAChBuE,KAAKqH,GAAKF,EAAEE,EAAI5L,EAETuE,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,EAAGC,GAEP,YAAWgD,IAANhD,GAEJ2M,QAAQk/C,KAAM,yFACPjzD,KAAKs1J,WAAYnuJ,EAAGC,KAI5BpH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EAELrH,KAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAKV,OAHAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAKd,OAHAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EAEVrH,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU0I,GAKT,OAHAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EAELrH,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB22J,GAKf,OAHAp1J,KAAK9D,GAAKk5J,EACVp1J,KAAKqH,GAAK+tJ,EAEHp1J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0I,GAKP,OAHAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EAELrH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc22J,GAEb,OAAOp1J,KAAKu1J,eAAgB,EAAIH,EAEjC,GAAC,CAAA5yJ,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM5K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EACrBf,EAAIQ,EAAEk/H,SAKZ,OAHAhmI,KAAK9D,EAAIoK,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GACtCtG,KAAKqH,EAAIf,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAE/BtG,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAKJ,OAHAnH,KAAK9D,EAAIe,KAAKiuC,IAAKlrC,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKiuC,IAAKlrC,KAAKqH,EAAGF,EAAEE,GAEtBrH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAKJ,OAHAnH,KAAK9D,EAAIe,KAAKC,IAAK8C,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKC,IAAK8C,KAAKqH,EAAGF,EAAEE,GAEtBrH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOysC,EAAKhuC,GAOX,OAHA8C,KAAK9D,EAAIe,KAAKC,IAAKguC,EAAIhvC,EAAGe,KAAKiuC,IAAKhuC,EAAIhB,EAAG8D,KAAK9D,IAChD8D,KAAKqH,EAAIpK,KAAKC,IAAKguC,EAAI7jC,EAAGpK,KAAKiuC,IAAKhuC,EAAImK,EAAGrH,KAAKqH,IAEzCrH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAa+2J,EAAQC,GAKpB,OAHAz1J,KAAK9D,EAAIe,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAK9D,IAClD8D,KAAKqH,EAAIpK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKqH,IAE3CrH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAaysC,EAAKhuC,GAEjB,IAAMtF,EAASoI,KAAKpI,SAEpB,OAAOoI,KAAK01J,aAAc99J,GAAU,GAAI29J,eAAgBt4J,KAAKC,IAAKguC,EAAKjuC,KAAKiuC,IAAKhuC,EAAKtF,IAEvF,GAAC,CAAA4K,IAAA,QAAA/D,MAED,WAKC,OAHAuB,KAAK9D,EAAIe,KAAKwf,MAAOzc,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAKwf,MAAOzc,KAAKqH,GAEnBrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAKC,OAHAuB,KAAK9D,EAAIe,KAAKurD,KAAMxoD,KAAK9D,GACzB8D,KAAKqH,EAAIpK,KAAKurD,KAAMxoD,KAAKqH,GAElBrH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAKC,OAHAuB,KAAK9D,EAAIe,KAAK83J,MAAO/0J,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAK83J,MAAO/0J,KAAKqH,GAEnBrH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAKC,OAHAuB,KAAK9D,EAAM8D,KAAK9D,EAAI,EAAMe,KAAKurD,KAAMxoD,KAAK9D,GAAMe,KAAKwf,MAAOzc,KAAK9D,GACjE8D,KAAKqH,EAAMrH,KAAKqH,EAAI,EAAMpK,KAAKurD,KAAMxoD,KAAKqH,GAAMpK,KAAKwf,MAAOzc,KAAKqH,GAE1DrH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAKC,OAHAuB,KAAK9D,GAAM8D,KAAK9D,EAChB8D,KAAKqH,GAAMrH,KAAKqH,EAETrH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAEJ,OAAOnH,KAAK9D,EAAIiL,EAAEjL,EAAI8D,KAAKqH,EAAIF,EAAEE,CAElC,GAAC,CAAA7E,IAAA,QAAA/D,MAED,SAAO0I,GAEN,OAAOnH,KAAK9D,EAAIiL,EAAEE,EAAIrH,KAAKqH,EAAIF,EAAEjL,CAElC,GAAC,CAAAsG,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,CAExC,GAAC,CAAA7E,IAAA,SAAA/D,MAED,WAEC,OAAOxB,KAAK04J,KAAM31J,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,EAEnD,GAAC,CAAA7E,IAAA,kBAAA/D,MAED,WAEC,OAAOxB,KAAK4f,IAAK7c,KAAK9D,GAAMe,KAAK4f,IAAK7c,KAAKqH,EAE5C,GAAC,CAAA7E,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAK01J,aAAc11J,KAAKpI,UAAY,EAE5C,GAAC,CAAA4K,IAAA,QAAA/D,MAED,WAIC,IAAMm3J,EAAQ34J,KAAK44J,OAAS71J,KAAKqH,GAAKrH,KAAK9D,GAAMe,KAAK00J,GAEtD,OAAOiE,CAER,GAAC,CAAApzJ,IAAA,aAAA/D,MAED,SAAY0I,GAEX,OAAOlK,KAAK04J,KAAM31J,KAAK81J,kBAAmB3uJ,GAE3C,GAAC,CAAA3E,IAAA,oBAAA/D,MAED,SAAmB0I,GAElB,IAAMmnI,EAAKtuI,KAAK9D,EAAIiL,EAAEjL,EAAGmyI,EAAKruI,KAAKqH,EAAIF,EAAEE,EACzC,OAAOinI,EAAKA,EAAKD,EAAKA,CAEvB,GAAC,CAAA7rI,IAAA,sBAAA/D,MAED,SAAqB0I,GAEpB,OAAOlK,KAAK4f,IAAK7c,KAAK9D,EAAIiL,EAAEjL,GAAMe,KAAK4f,IAAK7c,KAAKqH,EAAIF,EAAEE,EAExD,GAAC,CAAA7E,IAAA,YAAA/D,MAED,SAAW7G,GAEV,OAAOoI,KAAK6gH,YAAY00C,eAAgB39J,EAEzC,GAAC,CAAA4K,IAAA,OAAA/D,MAED,SAAM0I,EAAG4uJ,GAKR,OAHA/1J,KAAK9D,IAAOiL,EAAEjL,EAAI8D,KAAK9D,GAAM65J,EAC7B/1J,KAAKqH,IAAOF,EAAEE,EAAIrH,KAAKqH,GAAM0uJ,EAEtB/1J,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAau3J,EAAIC,EAAIF,GAKpB,OAHA/1J,KAAK9D,EAAI85J,EAAG95J,GAAM+5J,EAAG/5J,EAAI85J,EAAG95J,GAAM65J,EAClC/1J,KAAKqH,EAAI2uJ,EAAG3uJ,GAAM4uJ,EAAG5uJ,EAAI2uJ,EAAG3uJ,GAAM0uJ,EAE3B/1J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0I,GAEP,OAAWA,EAAEjL,IAAM8D,KAAK9D,GAASiL,EAAEE,IAAMrH,KAAKqH,CAE/C,GAAC,CAAA7E,IAAA,YAAA/D,MAED,SAAWsE,GAAoB,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAK1B,OAHAD,KAAK9D,EAAI6G,EAAOgnC,GAChB/pC,KAAKqH,EAAItE,EAAOgnC,EAAS,GAElB/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAK7B,OAHA8C,EAAOgnC,GAAW/pC,KAAK9D,EACvB6G,EAAOgnC,EAAS,GAAM/pC,KAAKqH,EAEpBtE,CAER,GAAC,CAAAP,IAAA,sBAAA/D,MAED,SAAqBy3J,EAAWtnJ,EAAOm7B,GAWtC,YATgB3/B,IAAX2/B,GAEJh2B,QAAQk/C,KAAM,uEAIfjzD,KAAK9D,EAAIg6J,EAAUC,KAAMvnJ,GACzB5O,KAAKqH,EAAI6uJ,EAAUE,KAAMxnJ,GAElB5O,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc43J,EAAQT,GAErB,IAAM35J,EAAIgB,KAAKk3J,IAAKyB,GAASn6J,EAAIwB,KAAKm3J,IAAKwB,GAErC15J,EAAI8D,KAAK9D,EAAIm6J,EAAOn6J,EACpBmL,EAAIrH,KAAKqH,EAAIgvJ,EAAOhvJ,EAK1B,OAHArH,KAAK9D,EAAIA,EAAID,EAAIoL,EAAI5L,EAAI46J,EAAOn6J,EAChC8D,KAAKqH,EAAInL,EAAIT,EAAI4L,EAAIpL,EAAIo6J,EAAOhvJ,EAEzBrH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAKC,OAHAuB,KAAK9D,EAAIe,KAAKuxC,SACdxuC,KAAKqH,EAAIpK,KAAKuxC,SAEPxuC,IAER,GAAC,CAAAwC,IAEE1B,OAAOrE,SAAQgC,MAAAq+E,EAAAA,MAAlB,SAAAr+E,IAAA,OAAAq+E,EAAAA,MAAA,SAAAw5E,GAAA,cAAAA,EAAArzJ,KAAAqzJ,EAAApzJ,MAAA,OAEC,OAFDozJ,EAAApzJ,KAAA,EAEOlD,KAAK9D,EAAC,OACZ,OADYo6J,EAAApzJ,KAAA,EACNlD,KAAKqH,EAAC,wBAAAivJ,EAAA7nF,OAAA,GAAAhwE,EAAA,YAEZ02J,CAAA,CA7dW,GAiebA,GAAQv4J,UAAU25J,WAAY,EAAK,IAE7BC,GAAO,WAEZ,SAAAA,IAAc/rJ,EAAA,KAAA+rJ,GAEbx2J,KAAKgmI,SAAW,CAEf,EAAG,EAAG,EACN,EAAG,EAAG,EACN,EAAG,EAAG,GAIF/lI,UAAUrI,OAAS,GAEvBmc,QAAQwN,MAAO,gFAIjB,CA0TC,OA1TAhY,EAAAitJ,EAAA,EAAAh0J,IAAA,MAAA/D,MAED,SAAKg4J,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAE5C,IAAMpuH,EAAK7oC,KAAKgmI,SAMhB,OAJAn9F,EAAI,GAAM4tH,EAAK5tH,EAAI,GAAM+tH,EAAK/tH,EAAI,GAAMkuH,EACxCluH,EAAI,GAAM6tH,EAAK7tH,EAAI,GAAMguH,EAAKhuH,EAAI,GAAMmuH,EACxCnuH,EAAI,GAAM8tH,EAAK9tH,EAAI,GAAMiuH,EAAKjuH,EAAI,GAAMouH,EAEjCj3J,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,WAUC,OARAuB,KAAKivB,IAEJ,EAAG,EAAG,EACN,EAAG,EAAG,EACN,EAAG,EAAG,GAIAjvB,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMqI,GAEL,IAAM+hC,EAAK7oC,KAAKgmI,SACV59F,EAAKthC,EAAEk/H,SAMb,OAJAn9F,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GACpDS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GACpDS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAE7CpoC,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcy4J,EAAOC,EAAOC,GAM3B,OAJAF,EAAMG,qBAAsBr3J,KAAM,GAClCm3J,EAAME,qBAAsBr3J,KAAM,GAClCo3J,EAAMC,qBAAsBr3J,KAAM,GAE3BA,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBqI,GAEf,IAAMshC,EAAKthC,EAAEk/H,SAUb,OARAhmI,KAAKivB,IAEJmZ,EAAI,GAAKA,EAAI,GAAKA,EAAI,GACtBA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GACtBA,EAAI,GAAKA,EAAI,GAAKA,EAAI,KAIhBpoC,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAUqI,GAET,OAAO9G,KAAKs3J,iBAAkBt3J,KAAM8G,EAErC,GAAC,CAAAtE,IAAA,cAAA/D,MAED,SAAaqI,GAEZ,OAAO9G,KAAKs3J,iBAAkBxwJ,EAAG9G,KAElC,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBzC,EAAGuK,GAEpB,IAAMsgC,EAAK7qC,EAAEgqI,SACPl/F,EAAKvgC,EAAEy/H,SACPn9F,EAAK7oC,KAAKgmI,SAEVuxB,EAAM1wH,EAAI,GAAK2wH,EAAM3wH,EAAI,GAAK4wH,EAAM5wH,EAAI,GACxC6wH,EAAM7wH,EAAI,GAAK8wH,EAAM9wH,EAAI,GAAK+wH,EAAM/wH,EAAI,GACxCgxH,EAAMhxH,EAAI,GAAKixH,EAAMjxH,EAAI,GAAKkxH,EAAMlxH,EAAI,GAExCmxH,EAAMlxH,EAAI,GAAKmxH,EAAMnxH,EAAI,GAAKoxH,EAAMpxH,EAAI,GACxCqxH,EAAMrxH,EAAI,GAAKsxH,EAAMtxH,EAAI,GAAKuxH,EAAMvxH,EAAI,GACxCwxH,EAAMxxH,EAAI,GAAKyxH,EAAMzxH,EAAI,GAAK0xH,EAAM1xH,EAAI,GAc9C,OAZA+B,EAAI,GAAM0uH,EAAMS,EAAMR,EAAMW,EAAMV,EAAMa,EACxCzvH,EAAI,GAAM0uH,EAAMU,EAAMT,EAAMY,EAAMX,EAAMc,EACxC1vH,EAAI,GAAM0uH,EAAMW,EAAMV,EAAMa,EAAMZ,EAAMe,EAExC3vH,EAAI,GAAM6uH,EAAMM,EAAML,EAAMQ,EAAMP,EAAMU,EACxCzvH,EAAI,GAAM6uH,EAAMO,EAAMN,EAAMS,EAAMR,EAAMW,EACxC1vH,EAAI,GAAM6uH,EAAMQ,EAAMP,EAAMU,EAAMT,EAAMY,EAExC3vH,EAAI,GAAMgvH,EAAMG,EAAMF,EAAMK,EAAMJ,EAAMO,EACxCzvH,EAAI,GAAMgvH,EAAMI,EAAMH,EAAMM,EAAML,EAAMQ,EACxC1vH,EAAI,GAAMgvH,EAAMK,EAAMJ,EAAMO,EAAMN,EAAMS,EAEjCx4J,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBhD,GAEf,IAAMotC,EAAK7oC,KAAKgmI,SAMhB,OAJAn9F,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EACvCotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EACvCotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAEhCuE,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAEC,IAAMoqC,EAAK7oC,KAAKgmI,SAEVhqI,EAAI6sC,EAAI,GAAKtiC,EAAIsiC,EAAI,GAAK5sC,EAAI4sC,EAAI,GACvCriC,EAAIqiC,EAAI,GAAKviC,EAAIuiC,EAAI,GAAKpiC,EAAIoiC,EAAI,GAClCniC,EAAImiC,EAAI,GAAKliC,EAAIkiC,EAAI,GAAKnsC,EAAImsC,EAAI,GAEnC,OAAO7sC,EAAIsK,EAAI5J,EAAIV,EAAIyK,EAAIE,EAAIJ,EAAIC,EAAI9J,EAAI6J,EAAIE,EAAIC,EAAIzK,EAAIuK,EAAIG,EAAI1K,EAAIqK,EAAII,CAE5E,GAAC,CAAAlE,IAAA,SAAA/D,MAED,WAEC,IAAMoqC,EAAK7oC,KAAKgmI,SAEfywB,EAAM5tH,EAAI,GAAK+tH,EAAM/tH,EAAI,GAAKkuH,EAAMluH,EAAI,GACxC6tH,EAAM7tH,EAAI,GAAKguH,EAAMhuH,EAAI,GAAKmuH,EAAMnuH,EAAI,GACxC8tH,EAAM9tH,EAAI,GAAKiuH,EAAMjuH,EAAI,GAAKouH,EAAMpuH,EAAI,GAExC4vH,EAAMxB,EAAMJ,EAAMG,EAAMF,EACxB4B,EAAM1B,EAAML,EAAMM,EAAMP,EACxBiC,EAAM7B,EAAMJ,EAAMG,EAAMF,EAExBiC,EAAMnC,EAAMgC,EAAM7B,EAAM8B,EAAM3B,EAAM4B,EAErC,GAAa,IAARC,EAAY,OAAO54J,KAAKivB,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAE1D,IAAM4pI,EAAS,EAAID,EAcnB,OAZA/vH,EAAI,GAAM4vH,EAAMI,EAChBhwH,EAAI,IAAQkuH,EAAMD,EAAMG,EAAML,GAAQiC,EACtChwH,EAAI,IAAQmuH,EAAMJ,EAAMG,EAAMF,GAAQgC,EAEtChwH,EAAI,GAAM6vH,EAAMG,EAChBhwH,EAAI,IAAQouH,EAAMR,EAAMM,EAAMJ,GAAQkC,EACtChwH,EAAI,IAAQkuH,EAAML,EAAMM,EAAMP,GAAQoC,EAEtChwH,EAAI,GAAM8vH,EAAME,EAChBhwH,EAAI,IAAQ+tH,EAAMD,EAAMG,EAAML,GAAQoC,EACtChwH,EAAI,IAAQguH,EAAMJ,EAAMG,EAAMF,GAAQmC,EAE/B74J,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,WAEC,IAAIq6J,EACEhyJ,EAAI9G,KAAKgmI,SAMf,OAJA8yB,EAAMhyJ,EAAG,GAAKA,EAAG,GAAMA,EAAG,GAAKA,EAAG,GAAMgyJ,EACxCA,EAAMhyJ,EAAG,GAAKA,EAAG,GAAMA,EAAG,GAAKA,EAAG,GAAMgyJ,EACxCA,EAAMhyJ,EAAG,GAAKA,EAAG,GAAMA,EAAG,GAAKA,EAAG,GAAMgyJ,EAEjC94J,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBs6J,GAEhB,OAAO/4J,KAAKg5J,eAAgBD,GAAUjpB,SAASmpB,WAEhD,GAAC,CAAAz2J,IAAA,qBAAA/D,MAED,SAAoByI,GAEnB,IAAMJ,EAAI9G,KAAKgmI,SAYf,OAVA9+H,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GAEL9G,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBy6J,EAAIC,EAAIC,EAAIC,EAAIC,EAAUC,EAAIC,GAE7C,IAAMv9J,EAAIgB,KAAKk3J,IAAKmF,GACd79J,EAAIwB,KAAKm3J,IAAKkF,GAQpB,OANAt5J,KAAKivB,IACJmqI,EAAKn9J,EAAGm9J,EAAK39J,GAAK29J,GAAOn9J,EAAIs9J,EAAK99J,EAAI+9J,GAAOD,EAAKL,GAChDG,EAAK59J,EAAG49J,EAAKp9J,GAAKo9J,IAAS59J,EAAI89J,EAAKt9J,EAAIu9J,GAAOA,EAAKL,EACtD,EAAG,EAAG,GAGAn5J,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO26J,EAAIC,GAEV,IAAMxwH,EAAK7oC,KAAKgmI,SAKhB,OAHAn9F,EAAI,IAAOuwH,EAAIvwH,EAAI,IAAOuwH,EAAIvwH,EAAI,IAAOuwH,EACzCvwH,EAAI,IAAOwwH,EAAIxwH,EAAI,IAAOwwH,EAAIxwH,EAAI,IAAOwwH,EAElCr5J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQg7J,GAEP,IAAMx9J,EAAIgB,KAAKk3J,IAAKsF,GACdh+J,EAAIwB,KAAKm3J,IAAKqF,GAEd5wH,EAAK7oC,KAAKgmI,SAEVuxB,EAAM1uH,EAAI,GAAK2uH,EAAM3uH,EAAI,GAAK4uH,EAAM5uH,EAAI,GACxC6uH,EAAM7uH,EAAI,GAAK8uH,EAAM9uH,EAAI,GAAK+uH,EAAM/uH,EAAI,GAU9C,OARAA,EAAI,GAAM5sC,EAAIs7J,EAAM97J,EAAIi8J,EACxB7uH,EAAI,GAAM5sC,EAAIu7J,EAAM/7J,EAAIk8J,EACxB9uH,EAAI,GAAM5sC,EAAIw7J,EAAMh8J,EAAIm8J,EAExB/uH,EAAI,IAAQptC,EAAI87J,EAAMt7J,EAAIy7J,EAC1B7uH,EAAI,IAAQptC,EAAI+7J,EAAMv7J,EAAI07J,EAC1B9uH,EAAI,IAAQptC,EAAIg8J,EAAMx7J,EAAI27J,EAEnB53J,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWy6J,EAAIC,GAEd,IAAMtwH,EAAK7oC,KAAKgmI,SAKhB,OAHAn9F,EAAI,IAAOqwH,EAAKrwH,EAAI,GAAKA,EAAI,IAAOqwH,EAAKrwH,EAAI,GAAKA,EAAI,IAAOqwH,EAAKrwH,EAAI,GACtEA,EAAI,IAAOswH,EAAKtwH,EAAI,GAAKA,EAAI,IAAOswH,EAAKtwH,EAAI,GAAKA,EAAI,IAAOswH,EAAKtwH,EAAI,GAE/D7oC,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQi7J,GAKP,IAHA,IAAM7wH,EAAK7oC,KAAKgmI,SACV59F,EAAKsxH,EAAO1zB,SAERtpI,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAKmsC,EAAInsC,KAAQ0rC,EAAI1rC,GAAM,OAAO,EAInC,OAAO,CAER,GAAC,CAAA8F,IAAA,YAAA/D,MAED,SAAWsE,GAEV,IAF8B,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEhBvD,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKgmI,SAAUtpI,GAAMqG,EAAOrG,EAAIqtC,GAIjC,OAAO/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEvB4oC,EAAK7oC,KAAKgmI,SAchB,OAZAjjI,EAAOgnC,GAAWlB,EAAI,GACtB9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAE1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAE1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAEnB9lC,CAER,GAAC,CAAAP,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcw/I,UAAW35J,KAAKgmI,SAE/C,KAACwwB,CAAA,CA5UW,GAkVb,SAASoD,GAAkB72J,GAI1B,IAAM,IAAIrG,EAAIqG,EAAMnL,OAAS,EAAG8E,GAAK,IAAMA,EAE1C,GAAKqG,EAAOrG,GAAM,MAAQ,OAAO,EAIlC,OAAO,CAER,CAdA85J,GAAQ55J,UAAUi9J,WAAY,EAgB9B,IAAMC,GAAe,CACpB7E,UAAWA,UACX1/C,WAAYA,WACZwkD,kBAAmBA,kBACnB/E,WAAYA,WACZF,YAAaA,YACbkF,WAAYA,WACZzyD,YAAaA,YACbstD,aAAcA,aACdoF,aAAcA,cAGf,SAASC,GAAet1J,EAAMu1J,GAE7B,OAAO,IAAIL,GAAcl1J,GAAQu1J,EAElC,CAEA,SAAS30G,GAAiBrsD,GAEzB,OAAOmK,SAASkiD,gBAAiB,+BAAgCrsD,EAElE,CAEA,SAASihK,GAAcn+J,GAEtB,OAASA,EAAI,OAAgB,YAAJA,EAAmBgB,KAAKs1J,IAAS,YAAJt2J,EAAmB,YAAc,IAExF,CAEA,SAASo+J,GAAcp+J,GAEtB,OAASA,EAAI,SAAkB,MAAJA,EAAY,MAAUgB,KAAKs1J,IAAKt2J,EAAG,QAAc,IAE7E,CAIA,IAAMq+J,IAAE3+I,EAAA4+I,GAAG,CAAC,EACT/K,GAAc7zI,EAAA,GAAQ8zI,GAAwB2K,KAAYz+I,EAAA4+I,GAC1D9K,GAAoB9zI,EAAA,GAAQ6zI,GAAkB6K,KAAYE,IAGvDC,GAAkB,CAEvBC,YAAY,EAEZ,qBAAIC,GAEH,OAAOjL,EAER,EAEA,qBAAIiL,CAAmBC,GAEtB5mJ,QAAQk/C,KAAM,yDAEf,EAEA2nG,QAAS,SAAWpzH,EAAOqzH,EAAkBC,GAE5C,GAAK96J,KAAKy6J,YAAcI,IAAqBC,IAAsBD,IAAsBC,EAExF,OAAOtzH,EAIR,GAAK8yH,GAAIO,SAAqEzwJ,IAA/CkwJ,GAAIO,GAAoBC,GAAmC,CAEzF,IAAM98E,EAAKs8E,GAAIO,GAAoBC,GAMnC,OAJAtzH,EAAMtgC,EAAI82E,EAAIx2C,EAAMtgC,GACpBsgC,EAAM9gC,EAAIs3E,EAAIx2C,EAAM9gC,GACpB8gC,EAAMjhC,EAAIy3E,EAAIx2C,EAAMjhC,GAEbihC,CAER,CAEA,MAAM,IAAI1pC,MAAO,sCAElB,EAEAi9J,sBAAuB,SAAWvzH,EAAOszH,GAExC,OAAO96J,KAAK46J,QAASpzH,EAAOxnC,KAAK06J,kBAAmBI,EAErD,EAEAE,oBAAqB,SAAWxzH,EAAOqzH,GAEtC,OAAO76J,KAAK46J,QAASpzH,EAAOqzH,EAAkB76J,KAAK06J,kBAEpD,GAIKO,GAAiB,CAAE,UAAa,SAAU,aAAgB,SAAU,KAAQ,MAAU,WAAc,QAAU,MAAS,SAC5H,MAAS,SAAU,OAAU,SAAU,MAAS,EAAU,eAAkB,SAAU,KAAQ,IAAU,WAAc,QACtH,MAAS,SAAU,UAAa,SAAU,UAAa,QAAU,WAAc,QAAU,UAAa,SAAU,MAAS,SACzH,eAAkB,QAAU,SAAY,SAAU,QAAW,SAAU,KAAQ,MAAU,SAAY,IAAU,SAAY,MAC3H,cAAiB,SAAU,SAAY,SAAU,UAAa,MAAU,SAAY,SAAU,UAAa,SAAU,YAAe,QACpI,eAAkB,QAAU,WAAc,SAAU,WAAc,SAAU,QAAW,QAAU,WAAc,SAAU,aAAgB,QACzI,cAAiB,QAAU,cAAiB,QAAU,cAAiB,QAAU,cAAiB,MAAU,WAAc,QAC1H,SAAY,SAAU,YAAe,MAAU,QAAW,QAAU,QAAW,QAAU,WAAc,QAAU,UAAa,SAC9H,YAAe,SAAU,YAAe,QAAU,QAAW,SAAU,UAAa,SAAU,WAAc,SAAU,KAAQ,SAC9H,UAAa,SAAU,KAAQ,QAAU,MAAS,MAAU,YAAe,SAAU,KAAQ,QAAU,SAAY,SAAU,QAAW,SACxI,UAAa,SAAU,OAAU,QAAU,MAAS,SAAU,MAAS,SAAU,SAAY,SAAU,cAAiB,SAAU,UAAa,QAC/I,aAAgB,SAAU,UAAa,SAAU,WAAc,SAAU,UAAa,SAAU,qBAAwB,SAAU,UAAa,SAC/I,WAAc,QAAU,UAAa,SAAU,UAAa,SAAU,YAAe,SAAU,cAAiB,QAAU,aAAgB,QAC1I,eAAkB,QAAU,eAAkB,QAAU,eAAkB,SAAU,YAAe,SAAU,KAAQ,MAAU,UAAa,QAC5I,MAAS,SAAU,QAAW,SAAU,OAAU,QAAU,iBAAoB,QAAU,WAAc,IAAU,aAAgB,SAClI,aAAgB,QAAU,eAAkB,QAAU,gBAAmB,QAAU,kBAAqB,MAAU,gBAAmB,QACrI,gBAAmB,SAAU,aAAgB,QAAU,UAAa,SAAU,UAAa,SAAU,SAAY,SAAU,YAAe,SAC1I,KAAQ,IAAU,QAAW,SAAU,MAAS,QAAU,UAAa,QAAU,OAAU,SAAU,UAAa,SAAU,OAAU,SACtI,cAAiB,SAAU,UAAa,SAAU,cAAiB,SAAU,cAAiB,SAAU,WAAc,SAAU,UAAa,SAC7I,KAAQ,SAAU,KAAQ,SAAU,KAAQ,SAAU,WAAc,SAAU,OAAU,QAAU,cAAiB,QAAU,IAAO,SAAU,UAAa,SAC3J,UAAa,QAAU,YAAe,QAAU,OAAU,SAAU,WAAc,SAAU,SAAY,QAAU,SAAY,SAC9H,OAAU,SAAU,OAAU,SAAU,QAAW,QAAU,UAAa,QAAU,UAAa,QAAU,UAAa,QAAU,KAAQ,SAC1I,YAAe,MAAU,UAAa,QAAU,IAAO,SAAU,KAAQ,MAAU,QAAW,SAAU,OAAU,SAAU,UAAa,QACzI,OAAU,SAAU,MAAS,SAAU,MAAS,SAAU,WAAc,SAAU,OAAU,SAAU,YAAe,UAEhHC,GAAO,CAAEh0J,EAAG,EAAGR,EAAG,EAAGH,EAAG,GACxB40J,GAAQ,CAAEx0J,EAAG,EAAGlL,EAAG,EAAGoL,EAAG,GACzBu0J,GAAQ,CAAEz0J,EAAG,EAAGlL,EAAG,EAAGoL,EAAG,GAE/B,SAASw0J,GAASr0J,EAAGC,EAAG3P,GAIvB,OAFKA,EAAI,IAAIA,GAAK,GACbA,EAAI,IAAIA,GAAK,GACbA,EAAI,EAAI,EAAW0P,EAAgB,GAAVC,EAAID,GAAU1P,EACvCA,EAAI,GAAe2P,EACnB3P,EAAI,EAAI,EAAW0P,EAAgB,GAAVC,EAAID,IAAY,EAAI,EAAI1P,GAC/C0P,CAER,CAEA,SAASs0J,GAAc95J,EAAQD,GAM9B,OAJAA,EAAO2F,EAAI1F,EAAO0F,EAClB3F,EAAOmF,EAAIlF,EAAOkF,EAClBnF,EAAOgF,EAAI/E,EAAO+E,EAEXhF,CAER,CAAC,IAyiBGm3I,GAviBE6iB,GAAK,WAEV,SAAAA,EAAar0J,EAAGR,EAAGH,GAElB,OAFsBkE,EAAA,KAAA8wJ,QAEXnxJ,IAAN1D,QAAyB0D,IAAN7D,EAGhBvG,KAAKivB,IAAK/nB,GAIXlH,KAAKw7J,OAAQt0J,EAAGR,EAAGH,EAE3B,CA+gBC,OA/gBAgD,EAAAgyJ,EAAA,EAAA/4J,IAAA,MAAA/D,MAED,SAAKA,GAgBJ,OAdKA,GAASA,EAAMg9J,QAEnBz7J,KAAK07J,KAAMj9J,GAEiB,kBAAVA,EAElBuB,KAAK27J,OAAQl9J,GAEe,kBAAVA,GAElBuB,KAAK47J,SAAUn9J,GAITuB,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW22J,GAMV,OAJAp1J,KAAKkH,EAAIkuJ,EACTp1J,KAAK0G,EAAI0uJ,EACTp1J,KAAKuG,EAAI6uJ,EAEFp1J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQo9J,GAAmC,IAA9BlB,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAUzB,OARAqM,EAAM5+J,KAAKwf,MAAOo/I,GAElB77J,KAAKkH,GAAM20J,GAAO,GAAK,KAAQ,IAC/B77J,KAAK0G,GAAMm1J,GAAO,EAAI,KAAQ,IAC9B77J,KAAKuG,GAAY,IAANs1J,GAAc,IAEzBrB,GAAgBQ,oBAAqBh7J,KAAM26J,GAEpC36J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQyI,EAAGR,EAAGH,GAAuC,IAApCo0J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGwvJ,GAQ7B,OANAzvJ,KAAKkH,EAAIA,EACTlH,KAAK0G,EAAIA,EACT1G,KAAKuG,EAAIA,EAETi0J,GAAgBQ,oBAAqBh7J,KAAM26J,GAEpC36J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQkI,EAAGlL,EAAGoL,GAAuC,IAApC8zJ,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGwvJ,GAO7B,GAJA9oJ,EAAIwrJ,GAAiBxrJ,EAAG,GACxBlL,EAAIy2J,GAAOz2J,EAAG,EAAG,GACjBoL,EAAIqrJ,GAAOrrJ,EAAG,EAAG,GAEN,IAANpL,EAEJuE,KAAKkH,EAAIlH,KAAK0G,EAAI1G,KAAKuG,EAAIM,MAErB,CAEN,IAAMG,EAAIH,GAAK,GAAMA,GAAM,EAAIpL,GAAMoL,EAAIpL,EAAMoL,EAAIpL,EAC7CwL,EAAM,EAAIJ,EAAMG,EAEtBhH,KAAKkH,EAAIm0J,GAASp0J,EAAGD,EAAGL,EAAI,EAAI,GAChC3G,KAAK0G,EAAI20J,GAASp0J,EAAGD,EAAGL,GACxB3G,KAAKuG,EAAI80J,GAASp0J,EAAGD,EAAGL,EAAI,EAAI,EAEjC,CAIA,OAFA6zJ,GAAgBQ,oBAAqBh7J,KAAM26J,GAEpC36J,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU4L,GAAqC,IAe1CvD,EAfY6zJ,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAE7B,SAASsM,EAAa1iJ,QAELhP,IAAXgP,GAEAlI,WAAYkI,GAAW,GAE3BrF,QAAQk/C,KAAM,mCAAqC5oD,EAAQ,oBAI7D,CAKA,GAAKvD,EAAI,+BAA+BkP,KAAM3L,GAAU,CAIvD,IAAIm9B,EACEruC,EAAO2N,EAAG,GACVi1J,EAAaj1J,EAAG,GAEtB,OAAS3N,GAER,IAAK,MACL,IAAK,OAEJ,GAAKquC,EAAQ,+DAA+DxxB,KAAM+lJ,GAWjF,OARA/7J,KAAKkH,EAAIjK,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IACvDxnC,KAAK0G,EAAIzJ,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IACvDxnC,KAAKuG,EAAItJ,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IAEvDgzH,GAAgBQ,oBAAqBh7J,KAAM26J,GAE3CmB,EAAat0H,EAAO,IAEbxnC,KAIR,GAAKwnC,EAAQ,qEAAqExxB,KAAM+lJ,GAWvF,OARA/7J,KAAKkH,EAAIjK,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IACvDxnC,KAAK0G,EAAIzJ,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IACvDxnC,KAAKuG,EAAItJ,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IAEvDgzH,GAAgBQ,oBAAqBh7J,KAAM26J,GAE3CmB,EAAat0H,EAAO,IAEbxnC,KAIR,MAED,IAAK,MACL,IAAK,OAEJ,GAAKwnC,EAAQ,yEAAyExxB,KAAM+lJ,GAAe,CAG1G,IAAMp1J,EAAIuK,WAAYs2B,EAAO,IAAQ,IAC/B/rC,EAAI0V,SAAUq2B,EAAO,GAAK,IAAO,IACjC3gC,EAAIsK,SAAUq2B,EAAO,GAAK,IAAO,IAIvC,OAFAs0H,EAAat0H,EAAO,IAEbxnC,KAAKg8J,OAAQr1J,EAAGlL,EAAGoL,EAAG8zJ,EAE9B,EAMH,MAAO,GAAK7zJ,EAAI,oBAAoBkP,KAAM3L,GAAU,CAInD,IAAMwxJ,EAAM/0J,EAAG,GACTy+C,EAAOs2G,EAAIjkK,OAEjB,GAAc,IAAT2tD,EASJ,OANAvlD,KAAKkH,EAAIiK,SAAU0qJ,EAAInrJ,OAAQ,GAAMmrJ,EAAInrJ,OAAQ,GAAK,IAAO,IAC7D1Q,KAAK0G,EAAIyK,SAAU0qJ,EAAInrJ,OAAQ,GAAMmrJ,EAAInrJ,OAAQ,GAAK,IAAO,IAC7D1Q,KAAKuG,EAAI4K,SAAU0qJ,EAAInrJ,OAAQ,GAAMmrJ,EAAInrJ,OAAQ,GAAK,IAAO,IAE7D8pJ,GAAgBQ,oBAAqBh7J,KAAM26J,GAEpC36J,KAED,GAAc,IAATulD,EASX,OANAvlD,KAAKkH,EAAIiK,SAAU0qJ,EAAInrJ,OAAQ,GAAMmrJ,EAAInrJ,OAAQ,GAAK,IAAO,IAC7D1Q,KAAK0G,EAAIyK,SAAU0qJ,EAAInrJ,OAAQ,GAAMmrJ,EAAInrJ,OAAQ,GAAK,IAAO,IAC7D1Q,KAAKuG,EAAI4K,SAAU0qJ,EAAInrJ,OAAQ,GAAMmrJ,EAAInrJ,OAAQ,GAAK,IAAO,IAE7D8pJ,GAAgBQ,oBAAqBh7J,KAAM26J,GAEpC36J,IAIT,CAEA,OAAKqK,GAASA,EAAMzS,OAAS,EAErBoI,KAAKi8J,aAAc5xJ,EAAOswJ,GAI3B36J,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc4L,GAAqC,IAA9BswJ,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAG3BqM,EAAMZ,GAAgB5wJ,EAAMrS,eAclC,YAZaoS,IAARyxJ,EAGJ77J,KAAK27J,OAAQE,EAAKlB,GAKlB5mJ,QAAQk/C,KAAM,8BAAgC5oD,GAIxCrK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAKkH,EAAGlH,KAAK0G,EAAG1G,KAAKuG,EAEnD,GAAC,CAAA/D,IAAA,OAAA/D,MAED,SAAM+oC,GAML,OAJAxnC,KAAKkH,EAAIsgC,EAAMtgC,EACflH,KAAK0G,EAAI8gC,EAAM9gC,EACf1G,KAAKuG,EAAIihC,EAAMjhC,EAERvG,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB+oC,GAMjB,OAJAxnC,KAAKkH,EAAIkzJ,GAAc5yH,EAAMtgC,GAC7BlH,KAAK0G,EAAI0zJ,GAAc5yH,EAAM9gC,GAC7B1G,KAAKuG,EAAI6zJ,GAAc5yH,EAAMjhC,GAEtBvG,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB+oC,GAMjB,OAJAxnC,KAAKkH,EAAImzJ,GAAc7yH,EAAMtgC,GAC7BlH,KAAK0G,EAAI2zJ,GAAc7yH,EAAM9gC,GAC7B1G,KAAKuG,EAAI8zJ,GAAc7yH,EAAMjhC,GAEtBvG,IAER,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,WAIC,OAFAuB,KAAKk8J,iBAAkBl8J,MAEhBA,IAER,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,WAIC,OAFAuB,KAAKm8J,iBAAkBn8J,MAEhBA,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAAsC,IAA9Bk8J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAIpB,OAFAgL,GAAgBO,sBAAuBO,GAAct7J,KAAMk7J,IAAQP,GAE5DzI,GAAgB,IAATgJ,GAAKh0J,EAAS,EAAG,MAAS,GAAKgrJ,GAAgB,IAATgJ,GAAKx0J,EAAS,EAAG,MAAS,EAAIwrJ,GAAgB,IAATgJ,GAAK30J,EAAS,EAAG,MAAS,CAEpH,GAAC,CAAA/D,IAAA,eAAA/D,MAED,WAA4C,IAA9Bk8J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAE1B,OAAS,SAAWxvJ,KAAKo8J,OAAQzB,GAAal6J,SAAU,KAAOmQ,OAAS,EAEzE,GAAC,CAAApO,IAAA,SAAA/D,MAED,SAAQ8C,GAA4C,IAApCo5J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGwvJ,GAI5B+K,GAAgBO,sBAAuBO,GAAct7J,KAAMk7J,IAAQP,GAEnE,IAKI0B,EAAKC,EALHp1J,EAAIg0J,GAAKh0J,EAAGR,EAAIw0J,GAAKx0J,EAAGH,EAAI20J,GAAK30J,EAEjCrJ,EAAMD,KAAKC,IAAKgK,EAAGR,EAAGH,GACtB2kC,EAAMjuC,KAAKiuC,IAAKhkC,EAAGR,EAAGH,GAGtBg2J,GAAcrxH,EAAMhuC,GAAQ,EAElC,GAAKguC,IAAQhuC,EAEZm/J,EAAM,EACNC,EAAa,MAEP,CAEN,IAAMl/J,EAAQF,EAAMguC,EAIpB,OAFAoxH,EAAaC,GAAa,GAAMn/J,GAAUF,EAAMguC,GAAQ9tC,GAAU,EAAIF,EAAMguC,GAEnEhuC,GAER,KAAKgK,EAAGm1J,GAAQ31J,EAAIH,GAAMnJ,GAAUsJ,EAAIH,EAAI,EAAI,GAAK,MACrD,KAAKG,EAAG21J,GAAQ91J,EAAIW,GAAM9J,EAAQ,EAAG,MACrC,KAAKmJ,EAAG81J,GAAQn1J,EAAIR,GAAMtJ,EAAQ,EAInCi/J,GAAO,CAER,CAMA,OAJA96J,EAAOoF,EAAI01J,EACX96J,EAAO9F,EAAI6gK,EACX/6J,EAAOsF,EAAI01J,EAEJh7J,CAER,GAAC,CAAAiB,IAAA,SAAA/D,MAED,SAAQ8C,GAA4C,IAApCo5J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGwvJ,GAQ5B,OANA+K,GAAgBO,sBAAuBO,GAAct7J,KAAMk7J,IAAQP,GAEnEp5J,EAAO2F,EAAIg0J,GAAKh0J,EAChB3F,EAAOmF,EAAIw0J,GAAKx0J,EAChBnF,EAAOgF,EAAI20J,GAAK30J,EAEThF,CAER,GAAC,CAAAiB,IAAA,WAAA/D,MAED,WAAwC,IAA9Bk8J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAItB,OAFAgL,GAAgBO,sBAAuBO,GAAct7J,KAAMk7J,IAAQP,GAE9DA,IAAenL,GAGZ,SAAP/tJ,OAAiBk5J,EAAU,KAAAl5J,OAAMy5J,GAAKh0J,EAAC,KAAAzF,OAAMy5J,GAAKx0J,EAAC,KAAAjF,OAAMy5J,GAAK30J,EAAC,KAIzD,OAAP9E,OAAyB,IAATy5J,GAAKh0J,EAAY,EAAC,KAAAzF,OAAe,IAATy5J,GAAKx0J,EAAY,EAAC,KAAAjF,OAAe,IAATy5J,GAAK30J,EAAY,EAAC,IAEnF,GAAC,CAAA/D,IAAA,YAAA/D,MAED,SAAWkI,EAAGlL,EAAGoL,GAQhB,OANA7G,KAAKw8J,OAAQrB,IAEbA,GAAMx0J,GAAKA,EAAGw0J,GAAM1/J,GAAKA,EAAG0/J,GAAMt0J,GAAKA,EAEvC7G,KAAKg8J,OAAQb,GAAMx0J,EAAGw0J,GAAM1/J,EAAG0/J,GAAMt0J,GAE9B7G,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK+oC,GAMJ,OAJAxnC,KAAKkH,GAAKsgC,EAAMtgC,EAChBlH,KAAK0G,GAAK8gC,EAAM9gC,EAChB1G,KAAKuG,GAAKihC,EAAMjhC,EAETvG,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWg+J,EAAQC,GAMlB,OAJA18J,KAAKkH,EAAIu1J,EAAOv1J,EAAIw1J,EAAOx1J,EAC3BlH,KAAK0G,EAAI+1J,EAAO/1J,EAAIg2J,EAAOh2J,EAC3B1G,KAAKuG,EAAIk2J,EAAOl2J,EAAIm2J,EAAOn2J,EAEpBvG,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAMV,OAJAuE,KAAKkH,GAAKzL,EACVuE,KAAK0G,GAAKjL,EACVuE,KAAKuG,GAAK9K,EAEHuE,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK+oC,GAMJ,OAJAxnC,KAAKkH,EAAIjK,KAAKC,IAAK,EAAG8C,KAAKkH,EAAIsgC,EAAMtgC,GACrClH,KAAK0G,EAAIzJ,KAAKC,IAAK,EAAG8C,KAAK0G,EAAI8gC,EAAM9gC,GACrC1G,KAAKuG,EAAItJ,KAAKC,IAAK,EAAG8C,KAAKuG,EAAIihC,EAAMjhC,GAE9BvG,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU+oC,GAMT,OAJAxnC,KAAKkH,GAAKsgC,EAAMtgC,EAChBlH,KAAK0G,GAAK8gC,EAAM9gC,EAChB1G,KAAKuG,GAAKihC,EAAMjhC,EAETvG,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBhD,GAMf,OAJAuE,KAAKkH,GAAKzL,EACVuE,KAAK0G,GAAKjL,EACVuE,KAAKuG,GAAK9K,EAEHuE,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+oC,EAAOuuH,GAMZ,OAJA/1J,KAAKkH,IAAOsgC,EAAMtgC,EAAIlH,KAAKkH,GAAM6uJ,EACjC/1J,KAAK0G,IAAO8gC,EAAM9gC,EAAI1G,KAAK0G,GAAMqvJ,EACjC/1J,KAAKuG,IAAOihC,EAAMjhC,EAAIvG,KAAKuG,GAAMwvJ,EAE1B/1J,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYg+J,EAAQC,EAAQ3G,GAM3B,OAJA/1J,KAAKkH,EAAIu1J,EAAOv1J,GAAMw1J,EAAOx1J,EAAIu1J,EAAOv1J,GAAM6uJ,EAC9C/1J,KAAK0G,EAAI+1J,EAAO/1J,GAAMg2J,EAAOh2J,EAAI+1J,EAAO/1J,GAAMqvJ,EAC9C/1J,KAAKuG,EAAIk2J,EAAOl2J,GAAMm2J,EAAOn2J,EAAIk2J,EAAOl2J,GAAMwvJ,EAEvC/1J,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAAS+oC,EAAOuuH,GAEf/1J,KAAKw8J,OAAQrB,IACb3zH,EAAMg1H,OAAQpB,IAEd,IAAMz0J,EAAIyrJ,GAAM+I,GAAMx0J,EAAGy0J,GAAMz0J,EAAGovJ,GAC5Bt6J,EAAI22J,GAAM+I,GAAM1/J,EAAG2/J,GAAM3/J,EAAGs6J,GAC5BlvJ,EAAIurJ,GAAM+I,GAAMt0J,EAAGu0J,GAAMv0J,EAAGkvJ,GAIlC,OAFA/1J,KAAKg8J,OAAQr1J,EAAGlL,EAAGoL,GAEZ7G,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQxC,GAEP,OAASA,EAAEiL,IAAMlH,KAAKkH,GAASjL,EAAEyK,IAAM1G,KAAK0G,GAASzK,EAAEsK,IAAMvG,KAAKuG,CAEnE,GAAC,CAAA/D,IAAA,YAAA/D,MAED,SAAWsE,GAAoB,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAM1B,OAJAD,KAAKkH,EAAInE,EAAOgnC,GAChB/pC,KAAK0G,EAAI3D,EAAOgnC,EAAS,GACzB/pC,KAAKuG,EAAIxD,EAAOgnC,EAAS,GAElB/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAM7B,OAJA8C,EAAOgnC,GAAW/pC,KAAKkH,EACvBnE,EAAOgnC,EAAS,GAAM/pC,KAAK0G,EAC3B3D,EAAOgnC,EAAS,GAAM/pC,KAAKuG,EAEpBxD,CAER,GAAC,CAAAP,IAAA,sBAAA/D,MAED,SAAqBy3J,EAAWtnJ,GAgB/B,OAdA5O,KAAKkH,EAAIgvJ,EAAUC,KAAMvnJ,GACzB5O,KAAK0G,EAAIwvJ,EAAUE,KAAMxnJ,GACzB5O,KAAKuG,EAAI2vJ,EAAUyG,KAAM/tJ,IAEK,IAAzBsnJ,EAAU0G,aAId58J,KAAKkH,GAAK,IACVlH,KAAK0G,GAAK,IACV1G,KAAKuG,GAAK,KAIJvG,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,OAAOuB,KAAKo8J,QAEb,KAACb,CAAA,CA5hBS,GAgiBXA,GAAMsB,MAAQ5B,GAEdM,GAAM3+J,UAAU6+J,SAAU,EAC1BF,GAAM3+J,UAAUsK,EAAI,EACpBq0J,GAAM3+J,UAAU8J,EAAI,EACpB60J,GAAM3+J,UAAU2J,EAAI,EAER,IAENu2J,GAAU,oBAAAA,IAAAryJ,EAAA,KAAAqyJ,EAAA,CAuHd,OAvHcvzJ,EAAAuzJ,EAAA,OAAAt6J,IAAA,aAAA/D,MAEf,SAAmB06I,GAElB,GAAK,UAAUjhJ,KAAMihJ,EAAMhnI,KAE1B,OAAOgnI,EAAMhnI,IAId,GAAiC,oBAArB4qJ,kBAEX,OAAO5jB,EAAMhnI,IAId,IAAI6mI,EAEJ,GAAKG,aAAiB4jB,kBAErB/jB,EAASG,MAEH,MAEW/uI,IAAZsuI,KAAwBA,GAAUlzF,GAAiB,WAExDkzF,GAAQvqI,MAAQgrI,EAAMhrI,MACtBuqI,GAAQtqI,OAAS+qI,EAAM/qI,OAEvB,IAAM7O,EAAUm5I,GAAQO,WAAY,MAE/BE,aAAiB6jB,UAErBz9J,EAAQ09J,aAAc9jB,EAAO,EAAG,GAIhC55I,EAAQu6I,UAAWX,EAAO,EAAG,EAAGA,EAAMhrI,MAAOgrI,EAAM/qI,QAIpD4qI,EAASN,EAEV,CAEA,OAAKM,EAAO7qI,MAAQ,MAAQ6qI,EAAO5qI,OAAS,MAE3C2F,QAAQk/C,KAAM,8EAA+EkmF,GAEtFH,EAAOkkB,UAAW,aAAc,KAIhClkB,EAAOkkB,UAAW,YAI3B,GAAC,CAAA16J,IAAA,eAAA/D,MAED,SAAqB06I,GAEpB,GAAmC,qBAArBgkB,kBAAoChkB,aAAiBgkB,kBACnC,qBAAtBJ,mBAAqC5jB,aAAiB4jB,mBACtC,qBAAhBK,aAA+BjkB,aAAiBikB,YAAgB,CAEzE,IAAMpkB,EAASxzF,GAAiB,UAEhCwzF,EAAO7qI,MAAQgrI,EAAMhrI,MACrB6qI,EAAO5qI,OAAS+qI,EAAM/qI,OAEtB,IAAM7O,EAAUy5I,EAAOC,WAAY,MACnC15I,EAAQu6I,UAAWX,EAAO,EAAG,EAAGA,EAAMhrI,MAAOgrI,EAAM/qI,QAKnD,IAHA,IAAMivJ,EAAY99J,EAAQ+9J,aAAc,EAAG,EAAGnkB,EAAMhrI,MAAOgrI,EAAM/qI,QAC3Ds1B,EAAO25H,EAAU35H,KAEbhnC,EAAI,EAAGA,EAAIgnC,EAAK9rC,OAAQ8E,IAEjCgnC,EAAMhnC,GAAwC,IAAlC09J,GAAc12H,EAAMhnC,GAAM,KAMvC,OAFA6C,EAAQ09J,aAAcI,EAAW,EAAG,GAE7BrkB,CAER,CAAO,GAAKG,EAAMz1G,KAAO,CAIxB,IAFA,IAAMA,EAAOy1G,EAAMz1G,KAAK9yB,MAAO,GAErBlU,EAAI,EAAGA,EAAIgnC,EAAK9rC,OAAQ8E,IAE5BgnC,aAAgB6xE,YAAc7xE,aAAgBq2H,kBAElDr2H,EAAMhnC,GAAMO,KAAKwf,MAAyC,IAAlC29I,GAAc12H,EAAMhnC,GAAM,MAMlDgnC,EAAMhnC,GAAM09J,GAAc12H,EAAMhnC,IAMlC,MAAO,CACNgnC,KAAMA,EACNv1B,MAAOgrI,EAAMhrI,MACbC,OAAQ+qI,EAAM/qI,OAGhB,CAGC,OADA2F,QAAQk/C,KAAM,+FACPkmF,CAIT,KAAC2jB,CAAA,CAvHc,GA2HVS,GAAM,WAEX,SAAAA,IAA2B,IAAd75H,EAAIzjC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAIwK,EAAA,KAAA8yJ,GAEvBv9J,KAAK67G,KAAOg2C,KAEZ7xJ,KAAK0jC,KAAOA,EAEZ1jC,KAAK3G,QAAU,CAEhB,CAqEC,OArEAkQ,EAAAg0J,EAAA,EAAA/6J,IAAA,cAAAysB,IAED,SAAiBxwB,IAED,IAAVA,GAAiBuB,KAAK3G,SAE5B,GAAC,CAAAmJ,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMknI,OAA0BpzJ,IAATksB,GAAsC,kBAATA,EAEpD,IAAOknI,QAA6CpzJ,IAA7BksB,EAAKmnI,OAAQz9J,KAAK67G,MAExC,OAAOvlF,EAAKmnI,OAAQz9J,KAAK67G,MAI1B,IAAMh9B,EAAS,CACdg9B,KAAM77G,KAAK67G,KACX3zE,IAAK,IAGAxE,EAAO1jC,KAAK0jC,KAElB,GAAc,OAATA,EAAgB,CAEpB,IAAIwE,EAEJ,GAAKvrC,MAAM0E,QAASqiC,GAAS,CAI5BwE,EAAM,GAEN,IAAM,IAAIxrC,EAAI,EAAGmK,EAAI68B,EAAK9rC,OAAQ8E,EAAImK,EAAGnK,IAEnCgnC,EAAMhnC,GAAIghK,cAEdx1H,EAAIprC,KAAM6gK,GAAgBj6H,EAAMhnC,GAAIy8I,QAIpCjxG,EAAIprC,KAAM6gK,GAAgBj6H,EAAMhnC,IAMnC,MAICwrC,EAAMy1H,GAAgBj6H,GAIvBm7C,EAAO32C,IAAMA,CAEd,CAQA,OANOs1H,IAENlnI,EAAKmnI,OAAQz9J,KAAK67G,MAASh9B,GAIrBA,CAER,KAAC0+E,CAAA,CA/EU,GAmFZ,SAASI,GAAgBxkB,GAExB,MAAmC,qBAArBgkB,kBAAoChkB,aAAiBgkB,kBACnC,qBAAtBJ,mBAAqC5jB,aAAiB4jB,mBACtC,qBAAhBK,aAA+BjkB,aAAiBikB,YAIlDN,GAAWc,WAAYzkB,GAIzBA,EAAMz1G,KAIH,CACNA,KAAM/mC,MAAMC,UAAUgU,MAAM/T,KAAMs8I,EAAMz1G,MACxCv1B,MAAOgrI,EAAMhrI,MACbC,OAAQ+qI,EAAM/qI,OACdxJ,KAAMu0I,EAAMz1G,KAAKvpB,YAAYhhB,OAK9B4a,QAAQk/C,KAAM,+CACP,CAAC,EAMX,CAEAsqG,GAAO3gK,UAAUihK,UAAW,EAE5B,IAAIC,GAAY,EAEVC,GAAO,SAAAC,GAAAhiJ,EAAA+hJ,EAAAC,GAAA,IAAA/hJ,EAAAtB,EAAAojJ,GAEZ,SAAAA,IAAmS,IAAApvF,EAAtRwqE,EAAKl5I,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG89J,EAAQE,cAAe3Z,EAAOrkJ,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG89J,EAAQG,gBAAiBC,EAAKl+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGqqJ,GAAqB8T,EAAKn+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGqqJ,GAAqB+T,EAASp+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG4qJ,GAAcyT,EAASr+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG+qJ,GAA0BuT,EAAMt+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG8rJ,GAAYnnJ,EAAI3E,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGirJ,GAAkBsT,EAAUv+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGw+J,EAAQx+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGgvJ,GAoDlP,OApDgQxkJ,EAAA,KAAAszJ,GAE/RpvF,EAAA1yD,EAAApf,KAAA,MAEA0B,OAAOC,eAAcgd,EAAAmzD,GAAQ,KAAM,CAAElwE,MAAOq/J,OAE5CnvF,EAAKktC,KAAOg2C,KAEZljF,EAAKx1E,KAAO,GAEZw1E,EAAKntE,OAAS,IAAI+7J,GAAQpkB,GAC1BxqE,EAAK+vF,QAAU,GAEf/vF,EAAK21E,QAAUA,EAEf31E,EAAKwvF,MAAQA,EACbxvF,EAAKyvF,MAAQA,EAEbzvF,EAAK0vF,UAAYA,EACjB1vF,EAAK2vF,UAAYA,EAEjB3vF,EAAK6vF,WAAaA,EAElB7vF,EAAK4vF,OAASA,EACd5vF,EAAKgwF,eAAiB,KACtBhwF,EAAK/pE,KAAOA,EAEZ+pE,EAAK5kC,OAAS,IAAIorH,GAAS,EAAG,GAC9BxmF,EAAKzpC,OAAS,IAAIiwH,GAAS,EAAG,GAC9BxmF,EAAK0nF,OAAS,IAAIlB,GAAS,EAAG,GAC9BxmF,EAAK2qF,SAAW,EAEhB3qF,EAAKiwF,kBAAmB,EACxBjwF,EAAK+qF,OAAS,IAAIlD,GAElB7nF,EAAKkwF,iBAAkB,EACvBlwF,EAAKmwF,kBAAmB,EACxBnwF,EAAKowF,OAAQ,EACbpwF,EAAKqwF,gBAAkB,EAMvBrwF,EAAK8vF,SAAWA,EAEhB9vF,EAAKswF,SAAW,CAAC,EAEjBtwF,EAAKt1E,QAAU,EACfs1E,EAAKuwF,SAAW,KAEhBvwF,EAAKwwF,uBAAwB,EAC7BxwF,EAAKywF,kBAAmB,EAAOzwF,CAEhC,CA+NC,OA/NAplE,EAAAw0J,EAAA,EAAAv7J,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAKwB,OAAOkiC,IAEpB,EAACzU,IAED,SAAWxwB,GAEVuB,KAAKwB,OAAOkiC,KAAOjlC,CAEpB,GAAC,CAAA+D,IAAA,eAAA/D,MAED,WAECuB,KAAK05J,OAAO2F,eAAgBr/J,KAAK+pC,OAAO7tC,EAAG8D,KAAK+pC,OAAO1iC,EAAGrH,KAAKklC,OAAOhpC,EAAG8D,KAAKklC,OAAO79B,EAAGrH,KAAKs5J,SAAUt5J,KAAKq2J,OAAOn6J,EAAG8D,KAAKq2J,OAAOhvJ,EAEnI,GAAC,CAAA7E,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAuCL,OArCAxB,KAAK7G,KAAOqI,EAAOrI,KAEnB6G,KAAKwB,OAASA,EAAOA,OACrBxB,KAAK0+J,QAAUl9J,EAAOk9J,QAAQ9tJ,MAAO,GAErC5Q,KAAKskJ,QAAU9iJ,EAAO8iJ,QAEtBtkJ,KAAKm+J,MAAQ38J,EAAO28J,MACpBn+J,KAAKo+J,MAAQ58J,EAAO48J,MAEpBp+J,KAAKq+J,UAAY78J,EAAO68J,UACxBr+J,KAAKs+J,UAAY98J,EAAO88J,UAExBt+J,KAAKw+J,WAAah9J,EAAOg9J,WAEzBx+J,KAAKu+J,OAAS/8J,EAAO+8J,OACrBv+J,KAAK2+J,eAAiBn9J,EAAOm9J,eAC7B3+J,KAAK4E,KAAOpD,EAAOoD,KAEnB5E,KAAK+pC,OAAO2xH,KAAMl6J,EAAOuoC,QACzB/pC,KAAKklC,OAAOw2H,KAAMl6J,EAAO0jC,QACzBllC,KAAKq2J,OAAOqF,KAAMl6J,EAAO60J,QACzBr2J,KAAKs5J,SAAW93J,EAAO83J,SAEvBt5J,KAAK4+J,iBAAmBp9J,EAAOo9J,iBAC/B5+J,KAAK05J,OAAOgC,KAAMl6J,EAAOk4J,QAEzB15J,KAAK6+J,gBAAkBr9J,EAAOq9J,gBAC9B7+J,KAAK8+J,iBAAmBt9J,EAAOs9J,iBAC/B9+J,KAAK++J,MAAQv9J,EAAOu9J,MACpB/+J,KAAKg/J,gBAAkBx9J,EAAOw9J,gBAC9Bh/J,KAAKy+J,SAAWj9J,EAAOi9J,SAEvBz+J,KAAKi/J,SAAWlxG,KAAK4yC,MAAO5yC,KAAKC,UAAWxsD,EAAOy9J,WAEnDj/J,KAAKs/J,aAAc,EAEZt/J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMknI,OAA0BpzJ,IAATksB,GAAsC,kBAATA,EAEpD,IAAOknI,QAA+CpzJ,IAA/BksB,EAAKipI,SAAUv/J,KAAK67G,MAE1C,OAAOvlF,EAAKipI,SAAUv/J,KAAK67G,MAI5B,IAAMh9B,EAAS,CAEd4/B,SAAU,CACTplH,QAAS,IACTuL,KAAM,UACNgrF,UAAW,kBAGZisB,KAAM77G,KAAK67G,KACX1iH,KAAM6G,KAAK7G,KAEXggJ,MAAOn5I,KAAKwB,OAAOg+J,OAAQlpI,GAAOulF,KAElCyoC,QAAStkJ,KAAKskJ,QAEdp/G,OAAQ,CAAEllC,KAAKklC,OAAOhpC,EAAG8D,KAAKklC,OAAO79B,GACrC0iC,OAAQ,CAAE/pC,KAAK+pC,OAAO7tC,EAAG8D,KAAK+pC,OAAO1iC,GACrCgvJ,OAAQ,CAAEr2J,KAAKq2J,OAAOn6J,EAAG8D,KAAKq2J,OAAOhvJ,GACrCiyJ,SAAUt5J,KAAKs5J,SAEfxrJ,KAAM,CAAE9N,KAAKm+J,MAAOn+J,KAAKo+J,OAEzBG,OAAQv+J,KAAKu+J,OACb35J,KAAM5E,KAAK4E,KACX65J,SAAUz+J,KAAKy+J,SAEfH,UAAWt+J,KAAKs+J,UAChBD,UAAWr+J,KAAKq+J,UAChBG,WAAYx+J,KAAKw+J,WAEjBO,MAAO/+J,KAAK++J,MAEZD,iBAAkB9+J,KAAK8+J,iBACvBE,gBAAiBh/J,KAAKg/J,iBAYvB,MARyC,OAApCjxG,KAAKC,UAAWhuD,KAAKi/J,YAAsBpgF,EAAOogF,SAAWj/J,KAAKi/J,UAEhEzB,IAENlnI,EAAKipI,SAAUv/J,KAAK67G,MAASh9B,GAIvBA,CAER,GAAC,CAAAr8E,IAAA,UAAA/D,MAED,WAECuB,KAAKu+B,cAAe,CAAE35B,KAAM,WAE7B,GAAC,CAAApC,IAAA,cAAA/D,MAED,SAAaghK,GAEZ,GAAKz/J,KAAKskJ,UAAYyF,GAAY,OAAO0V,EAIzC,GAFAA,EAAGC,aAAc1/J,KAAK05J,QAEjB+F,EAAGvjK,EAAI,GAAKujK,EAAGvjK,EAAI,EAEvB,OAAS8D,KAAKm+J,OAEb,KAAK9T,GAEJoV,EAAGvjK,EAAIujK,EAAGvjK,EAAIe,KAAKwf,MAAOgjJ,EAAGvjK,GAC7B,MAED,KAAKouJ,GAEJmV,EAAGvjK,EAAIujK,EAAGvjK,EAAI,EAAI,EAAI,EACtB,MAED,KAAKquJ,GAEwC,IAAvCttJ,KAAK4f,IAAK5f,KAAKwf,MAAOgjJ,EAAGvjK,GAAM,GAEnCujK,EAAGvjK,EAAIe,KAAKurD,KAAMi3G,EAAGvjK,GAAMujK,EAAGvjK,EAI9BujK,EAAGvjK,EAAIujK,EAAGvjK,EAAIe,KAAKwf,MAAOgjJ,EAAGvjK,GAUjC,GAAKujK,EAAGp4J,EAAI,GAAKo4J,EAAGp4J,EAAI,EAEvB,OAASrH,KAAKo+J,OAEb,KAAK/T,GAEJoV,EAAGp4J,EAAIo4J,EAAGp4J,EAAIpK,KAAKwf,MAAOgjJ,EAAGp4J,GAC7B,MAED,KAAKijJ,GAEJmV,EAAGp4J,EAAIo4J,EAAGp4J,EAAI,EAAI,EAAI,EACtB,MAED,KAAKkjJ,GAEwC,IAAvCttJ,KAAK4f,IAAK5f,KAAKwf,MAAOgjJ,EAAGp4J,GAAM,GAEnCo4J,EAAGp4J,EAAIpK,KAAKurD,KAAMi3G,EAAGp4J,GAAMo4J,EAAGp4J,EAI9Bo4J,EAAGp4J,EAAIo4J,EAAGp4J,EAAIpK,KAAKwf,MAAOgjJ,EAAGp4J,GAgBjC,OANKrH,KAAK++J,QAETU,EAAGp4J,EAAI,EAAIo4J,EAAGp4J,GAIRo4J,CAER,GAAC,CAAAj9J,IAAA,cAAAysB,IAED,SAAiBxwB,IAED,IAAVA,IAEJuB,KAAK3G,UACL2G,KAAKwB,OAAO89J,aAAc,EAI5B,KAACvB,CAAA,CAvRW,CAASzM,IA2RtByM,GAAQE,cAAgB,KACxBF,GAAQG,gBAAkBnU,GAE1BgU,GAAQnhK,UAAU+iK,WAAY,EAAK,IAE7BC,GAAO,WAEZ,SAAAA,IAA0C,IAA7B1jK,EAAC+D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqH,EAACrH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmH,EAACnH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAm1J,GAEtC5/J,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EACTrH,KAAKsH,EAAIA,EACTtH,KAAKoH,EAAIA,CAEV,CAwoBC,OAxoBAmC,EAAAq2J,EAAA,EAAAp9J,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAKsH,CAEb,EAAC2nB,IAED,SAAWxwB,GAEVuB,KAAKsH,EAAI7I,CAEV,GAAC,CAAA+D,IAAA,SAAAutB,IAED,WAEC,OAAO/vB,KAAKoH,CAEb,EAAC6nB,IAED,SAAYxwB,GAEXuB,KAAKoH,EAAI3I,CAEV,GAAC,CAAA+D,IAAA,MAAA/D,MAED,SAAKvC,EAAGmL,EAAGC,EAAGF,GAOb,OALApH,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EACTrH,KAAKsH,EAAIA,EACTtH,KAAKoH,EAAIA,EAEFpH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW22J,GAOV,OALAp1J,KAAK9D,EAAIk5J,EACTp1J,KAAKqH,EAAI+tJ,EACTp1J,KAAKsH,EAAI8tJ,EACTp1J,KAAKoH,EAAIguJ,EAEFp1J,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMvC,GAIL,OAFA8D,KAAK9D,EAAIA,EAEF8D,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM4I,GAIL,OAFArH,KAAKqH,EAAIA,EAEFrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM6I,GAIL,OAFAtH,KAAKsH,EAAIA,EAEFtH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM2I,GAIL,OAFApH,KAAKoH,EAAIA,EAEFpH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,EAAOnQ,GAEpB,OAASmQ,GAER,KAAK,EAAG5O,KAAK9D,EAAIuC,EAAO,MACxB,KAAK,EAAGuB,KAAKqH,EAAI5I,EAAO,MACxB,KAAK,EAAGuB,KAAKsH,EAAI7I,EAAO,MACxB,KAAK,EAAGuB,KAAKoH,EAAI3I,EAAO,MACxB,QAAS,MAAM,IAAIX,MAAO,0BAA4B8Q,GAIvD,OAAO5O,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,GAEb,OAASA,GAER,KAAK,EAAG,OAAO5O,KAAK9D,EACpB,KAAK,EAAG,OAAO8D,KAAKqH,EACpB,KAAK,EAAG,OAAOrH,KAAKsH,EACpB,KAAK,EAAG,OAAOtH,KAAKoH,EACpB,QAAS,MAAM,IAAItJ,MAAO,0BAA4B8Q,GAIxD,GAAC,CAAApM,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAK9D,EAAG8D,KAAKqH,EAAGrH,KAAKsH,EAAGtH,KAAKoH,EAE3D,GAAC,CAAA5E,IAAA,OAAA/D,MAED,SAAM0I,GAOL,OALAnH,KAAK9D,EAAIiL,EAAEjL,EACX8D,KAAKqH,EAAIF,EAAEE,EACXrH,KAAKsH,EAAIH,EAAEG,EACXtH,KAAKoH,OAAcgD,IAARjD,EAAEC,EAAoBD,EAAEC,EAAI,EAEhCpH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,EAAGC,GAEP,YAAWgD,IAANhD,GAEJ2M,QAAQk/C,KAAM,yFACPjzD,KAAKq1J,WAAYluJ,EAAGC,KAI5BpH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EACZtH,KAAKoH,GAAKD,EAAEC,EAELpH,KAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAOV,OALAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EACVuE,KAAKsH,GAAK7L,EACVuE,KAAKoH,GAAK3L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAOd,OALAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EACjBrH,KAAKsH,EAAItL,EAAEsL,EAAIf,EAAEe,EACjBtH,KAAKoH,EAAIpL,EAAEoL,EAAIb,EAAEa,EAEVpH,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiB0I,EAAG1L,GAOnB,OALAuE,KAAK9D,GAAKiL,EAAEjL,EAAIT,EAChBuE,KAAKqH,GAAKF,EAAEE,EAAI5L,EAChBuE,KAAKsH,GAAKH,EAAEG,EAAI7L,EAChBuE,KAAKoH,GAAKD,EAAEC,EAAI3L,EAETuE,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,EAAGC,GAEP,YAAWgD,IAANhD,GAEJ2M,QAAQk/C,KAAM,yFACPjzD,KAAKs1J,WAAYnuJ,EAAGC,KAI5BpH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EACZtH,KAAKoH,GAAKD,EAAEC,EAELpH,KAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAOV,OALAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EACVuE,KAAKsH,GAAK7L,EACVuE,KAAKoH,GAAK3L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAOd,OALAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EACjBrH,KAAKsH,EAAItL,EAAEsL,EAAIf,EAAEe,EACjBtH,KAAKoH,EAAIpL,EAAEoL,EAAIb,EAAEa,EAEVpH,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU0I,GAOT,OALAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EACZtH,KAAKoH,GAAKD,EAAEC,EAELpH,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB22J,GAOf,OALAp1J,KAAK9D,GAAKk5J,EACVp1J,KAAKqH,GAAK+tJ,EACVp1J,KAAKsH,GAAK8tJ,EACVp1J,KAAKoH,GAAKguJ,EAEHp1J,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM5K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EAAGC,EAAItH,KAAKsH,EAAGF,EAAIpH,KAAKoH,EAC7Cd,EAAIQ,EAAEk/H,SAOZ,OALAhmI,KAAK9D,EAAIoK,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAAIhB,EAAG,IAAOc,EAC1DpH,KAAKqH,EAAIf,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAAIhB,EAAG,IAAOc,EAC1DpH,KAAKsH,EAAIhB,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,IAAOgB,EAAIhB,EAAG,IAAOc,EAC3DpH,KAAKoH,EAAId,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,IAAOgB,EAAIhB,EAAG,IAAOc,EAEpDpH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc22J,GAEb,OAAOp1J,KAAKu1J,eAAgB,EAAIH,EAEjC,GAAC,CAAA5yJ,IAAA,6BAAA/D,MAED,SAA4BwI,GAM3BjH,KAAKoH,EAAI,EAAInK,KAAK4iK,KAAM54J,EAAEG,GAE1B,IAAM3L,EAAIwB,KAAK04J,KAAM,EAAI1uJ,EAAEG,EAAIH,EAAEG,GAgBjC,OAdK3L,EAAI,MAERuE,KAAK9D,EAAI,EACT8D,KAAKqH,EAAI,EACTrH,KAAKsH,EAAI,IAITtH,KAAK9D,EAAI+K,EAAE/K,EAAIT,EACfuE,KAAKqH,EAAIJ,EAAEI,EAAI5L,EACfuE,KAAKsH,EAAIL,EAAEK,EAAI7L,GAITuE,IAER,GAAC,CAAAwC,IAAA,iCAAA/D,MAED,SAAgCqI,GAM/B,IAAI8uJ,EAAO15J,EAAGmL,EAAGC,EACXw4J,EAAU,IACfC,EAAW,GAEXl3H,EAAK/hC,EAAEk/H,SAEPg6B,EAAMn3H,EAAI,GAAKo3H,EAAMp3H,EAAI,GAAKq3H,EAAMr3H,EAAI,GACxCs3H,EAAMt3H,EAAI,GAAKu3H,EAAMv3H,EAAI,GAAKw3H,EAAMx3H,EAAI,GACxCy3H,EAAMz3H,EAAI,GAAK03H,EAAM13H,EAAI,GAAK23H,EAAM33H,EAAI,IAEzC,GAAO5rC,KAAK4f,IAAKojJ,EAAME,GAAQL,GACxB7iK,KAAK4f,IAAKqjJ,EAAMI,GAAQR,GACxB7iK,KAAK4f,IAAKwjJ,EAAME,GAAQT,EAAY,CAM1C,GAAO7iK,KAAK4f,IAAKojJ,EAAME,GAAQJ,GACxB9iK,KAAK4f,IAAKqjJ,EAAMI,GAAQP,GACxB9iK,KAAK4f,IAAKwjJ,EAAME,GAAQR,GACxB9iK,KAAK4f,IAAKmjJ,EAAMI,EAAMI,EAAM,GAAMT,EAMxC,OAFA//J,KAAKivB,IAAK,EAAG,EAAG,EAAG,GAEZjvB,KAMR41J,EAAQ34J,KAAK00J,GAEb,IAAMnjB,GAAOwxB,EAAM,GAAM,EACnBvxB,GAAO2xB,EAAM,GAAM,EACnBK,GAAOD,EAAM,GAAM,EACnBE,GAAOT,EAAME,GAAQ,EACrBQ,GAAOT,EAAMI,GAAQ,EACrBM,GAAOP,EAAME,GAAQ,EA4D3B,OA1DO/xB,EAAKC,GAAUD,EAAKiyB,EAIrBjyB,EAAKsxB,GAET5jK,EAAI,EACJmL,EAAI,WACJC,EAAI,aAKJD,EAAIq5J,GADJxkK,EAAIe,KAAK04J,KAAMnnB,IAEflnI,EAAIq5J,EAAKzkK,GAICuyI,EAAKgyB,EAIXhyB,EAAKqxB,GAET5jK,EAAI,WACJmL,EAAI,EACJC,EAAI,aAKJpL,EAAIwkK,GADJr5J,EAAIpK,KAAK04J,KAAMlnB,IAEfnnI,EAAIs5J,EAAKv5J,GAQLo5J,EAAKX,GAET5jK,EAAI,WACJmL,EAAI,WACJC,EAAI,IAKJpL,EAAIykK,GADJr5J,EAAIrK,KAAK04J,KAAM8K,IAEfp5J,EAAIu5J,EAAKt5J,GAMXtH,KAAKivB,IAAK/yB,EAAGmL,EAAGC,EAAGsuJ,GAEZ51J,IAER,CAIA,IAAIvE,EAAIwB,KAAK04J,MAAQ4K,EAAMF,IAAUE,EAAMF,IACxCH,EAAMI,IAAUJ,EAAMI,IACtBH,EAAMF,IAAUE,EAAMF,IAYzB,OAVKhjK,KAAK4f,IAAKphB,GAAM,OAAQA,EAAI,GAKjCuE,KAAK9D,GAAMqkK,EAAMF,GAAQ5kK,EACzBuE,KAAKqH,GAAM64J,EAAMI,GAAQ7kK,EACzBuE,KAAKsH,GAAM64J,EAAMF,GAAQxkK,EACzBuE,KAAKoH,EAAInK,KAAK4iK,MAAQG,EAAMI,EAAMI,EAAM,GAAM,GAEvCxgK,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAOJ,OALAnH,KAAK9D,EAAIe,KAAKiuC,IAAKlrC,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKiuC,IAAKlrC,KAAKqH,EAAGF,EAAEE,GAC7BrH,KAAKsH,EAAIrK,KAAKiuC,IAAKlrC,KAAKsH,EAAGH,EAAEG,GAC7BtH,KAAKoH,EAAInK,KAAKiuC,IAAKlrC,KAAKoH,EAAGD,EAAEC,GAEtBpH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAOJ,OALAnH,KAAK9D,EAAIe,KAAKC,IAAK8C,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKC,IAAK8C,KAAKqH,EAAGF,EAAEE,GAC7BrH,KAAKsH,EAAIrK,KAAKC,IAAK8C,KAAKsH,EAAGH,EAAEG,GAC7BtH,KAAKoH,EAAInK,KAAKC,IAAK8C,KAAKoH,EAAGD,EAAEC,GAEtBpH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOysC,EAAKhuC,GASX,OALA8C,KAAK9D,EAAIe,KAAKC,IAAKguC,EAAIhvC,EAAGe,KAAKiuC,IAAKhuC,EAAIhB,EAAG8D,KAAK9D,IAChD8D,KAAKqH,EAAIpK,KAAKC,IAAKguC,EAAI7jC,EAAGpK,KAAKiuC,IAAKhuC,EAAImK,EAAGrH,KAAKqH,IAChDrH,KAAKsH,EAAIrK,KAAKC,IAAKguC,EAAI5jC,EAAGrK,KAAKiuC,IAAKhuC,EAAIoK,EAAGtH,KAAKsH,IAChDtH,KAAKoH,EAAInK,KAAKC,IAAKguC,EAAI9jC,EAAGnK,KAAKiuC,IAAKhuC,EAAIkK,EAAGpH,KAAKoH,IAEzCpH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAa+2J,EAAQC,GAOpB,OALAz1J,KAAK9D,EAAIe,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAK9D,IAClD8D,KAAKqH,EAAIpK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKqH,IAClDrH,KAAKsH,EAAIrK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKsH,IAClDtH,KAAKoH,EAAInK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKoH,IAE3CpH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAaysC,EAAKhuC,GAEjB,IAAMtF,EAASoI,KAAKpI,SAEpB,OAAOoI,KAAK01J,aAAc99J,GAAU,GAAI29J,eAAgBt4J,KAAKC,IAAKguC,EAAKjuC,KAAKiuC,IAAKhuC,EAAKtF,IAEvF,GAAC,CAAA4K,IAAA,QAAA/D,MAED,WAOC,OALAuB,KAAK9D,EAAIe,KAAKwf,MAAOzc,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAKwf,MAAOzc,KAAKqH,GAC1BrH,KAAKsH,EAAIrK,KAAKwf,MAAOzc,KAAKsH,GAC1BtH,KAAKoH,EAAInK,KAAKwf,MAAOzc,KAAKoH,GAEnBpH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAOC,OALAuB,KAAK9D,EAAIe,KAAKurD,KAAMxoD,KAAK9D,GACzB8D,KAAKqH,EAAIpK,KAAKurD,KAAMxoD,KAAKqH,GACzBrH,KAAKsH,EAAIrK,KAAKurD,KAAMxoD,KAAKsH,GACzBtH,KAAKoH,EAAInK,KAAKurD,KAAMxoD,KAAKoH,GAElBpH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAOC,OALAuB,KAAK9D,EAAIe,KAAK83J,MAAO/0J,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAK83J,MAAO/0J,KAAKqH,GAC1BrH,KAAKsH,EAAIrK,KAAK83J,MAAO/0J,KAAKsH,GAC1BtH,KAAKoH,EAAInK,KAAK83J,MAAO/0J,KAAKoH,GAEnBpH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAOC,OALAuB,KAAK9D,EAAM8D,KAAK9D,EAAI,EAAMe,KAAKurD,KAAMxoD,KAAK9D,GAAMe,KAAKwf,MAAOzc,KAAK9D,GACjE8D,KAAKqH,EAAMrH,KAAKqH,EAAI,EAAMpK,KAAKurD,KAAMxoD,KAAKqH,GAAMpK,KAAKwf,MAAOzc,KAAKqH,GACjErH,KAAKsH,EAAMtH,KAAKsH,EAAI,EAAMrK,KAAKurD,KAAMxoD,KAAKsH,GAAMrK,KAAKwf,MAAOzc,KAAKsH,GACjEtH,KAAKoH,EAAMpH,KAAKoH,EAAI,EAAMnK,KAAKurD,KAAMxoD,KAAKoH,GAAMnK,KAAKwf,MAAOzc,KAAKoH,GAE1DpH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAOC,OALAuB,KAAK9D,GAAM8D,KAAK9D,EAChB8D,KAAKqH,GAAMrH,KAAKqH,EAChBrH,KAAKsH,GAAMtH,KAAKsH,EAChBtH,KAAKoH,GAAMpH,KAAKoH,EAETpH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAEJ,OAAOnH,KAAK9D,EAAIiL,EAAEjL,EAAI8D,KAAKqH,EAAIF,EAAEE,EAAIrH,KAAKsH,EAAIH,EAAEG,EAAItH,KAAKoH,EAAID,EAAEC,CAEhE,GAAC,CAAA5E,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,EAAIrH,KAAKsH,EAAItH,KAAKsH,EAAItH,KAAKoH,EAAIpH,KAAKoH,CAE5E,GAAC,CAAA5E,IAAA,SAAA/D,MAED,WAEC,OAAOxB,KAAK04J,KAAM31J,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,EAAIrH,KAAKsH,EAAItH,KAAKsH,EAAItH,KAAKoH,EAAIpH,KAAKoH,EAEvF,GAAC,CAAA5E,IAAA,kBAAA/D,MAED,WAEC,OAAOxB,KAAK4f,IAAK7c,KAAK9D,GAAMe,KAAK4f,IAAK7c,KAAKqH,GAAMpK,KAAK4f,IAAK7c,KAAKsH,GAAMrK,KAAK4f,IAAK7c,KAAKoH,EAEtF,GAAC,CAAA5E,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAK01J,aAAc11J,KAAKpI,UAAY,EAE5C,GAAC,CAAA4K,IAAA,YAAA/D,MAED,SAAW7G,GAEV,OAAOoI,KAAK6gH,YAAY00C,eAAgB39J,EAEzC,GAAC,CAAA4K,IAAA,OAAA/D,MAED,SAAM0I,EAAG4uJ,GAOR,OALA/1J,KAAK9D,IAAOiL,EAAEjL,EAAI8D,KAAK9D,GAAM65J,EAC7B/1J,KAAKqH,IAAOF,EAAEE,EAAIrH,KAAKqH,GAAM0uJ,EAC7B/1J,KAAKsH,IAAOH,EAAEG,EAAItH,KAAKsH,GAAMyuJ,EAC7B/1J,KAAKoH,IAAOD,EAAEC,EAAIpH,KAAKoH,GAAM2uJ,EAEtB/1J,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAau3J,EAAIC,EAAIF,GAOpB,OALA/1J,KAAK9D,EAAI85J,EAAG95J,GAAM+5J,EAAG/5J,EAAI85J,EAAG95J,GAAM65J,EAClC/1J,KAAKqH,EAAI2uJ,EAAG3uJ,GAAM4uJ,EAAG5uJ,EAAI2uJ,EAAG3uJ,GAAM0uJ,EAClC/1J,KAAKsH,EAAI0uJ,EAAG1uJ,GAAM2uJ,EAAG3uJ,EAAI0uJ,EAAG1uJ,GAAMyuJ,EAClC/1J,KAAKoH,EAAI4uJ,EAAG5uJ,GAAM6uJ,EAAG7uJ,EAAI4uJ,EAAG5uJ,GAAM2uJ,EAE3B/1J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0I,GAEP,OAAWA,EAAEjL,IAAM8D,KAAK9D,GAASiL,EAAEE,IAAMrH,KAAKqH,GAASF,EAAEG,IAAMtH,KAAKsH,GAASH,EAAEC,IAAMpH,KAAKoH,CAE3F,GAAC,CAAA5E,IAAA,YAAA/D,MAED,SAAWsE,GAAoB,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAO1B,OALAD,KAAK9D,EAAI6G,EAAOgnC,GAChB/pC,KAAKqH,EAAItE,EAAOgnC,EAAS,GACzB/pC,KAAKsH,EAAIvE,EAAOgnC,EAAS,GACzB/pC,KAAKoH,EAAIrE,EAAOgnC,EAAS,GAElB/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAO7B,OALA8C,EAAOgnC,GAAW/pC,KAAK9D,EACvB6G,EAAOgnC,EAAS,GAAM/pC,KAAKqH,EAC3BtE,EAAOgnC,EAAS,GAAM/pC,KAAKsH,EAC3BvE,EAAOgnC,EAAS,GAAM/pC,KAAKoH,EAEpBrE,CAER,GAAC,CAAAP,IAAA,sBAAA/D,MAED,SAAqBy3J,EAAWtnJ,EAAOm7B,GAatC,YAXgB3/B,IAAX2/B,GAEJh2B,QAAQk/C,KAAM,uEAIfjzD,KAAK9D,EAAIg6J,EAAUC,KAAMvnJ,GACzB5O,KAAKqH,EAAI6uJ,EAAUE,KAAMxnJ,GACzB5O,KAAKsH,EAAI4uJ,EAAUyG,KAAM/tJ,GACzB5O,KAAKoH,EAAI8uJ,EAAU2K,KAAMjyJ,GAElB5O,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAOC,OALAuB,KAAK9D,EAAIe,KAAKuxC,SACdxuC,KAAKqH,EAAIpK,KAAKuxC,SACdxuC,KAAKsH,EAAIrK,KAAKuxC,SACdxuC,KAAKoH,EAAInK,KAAKuxC,SAEPxuC,IAER,GAAC,CAAAwC,IAEE1B,OAAOrE,SAAQgC,MAAAq+E,EAAAA,MAAlB,SAAAr+E,IAAA,OAAAq+E,EAAAA,MAAA,SAAAgkF,GAAA,cAAAA,EAAA79J,KAAA69J,EAAA59J,MAAA,OAEC,OAFD49J,EAAA59J,KAAA,EAEOlD,KAAK9D,EAAC,OACZ,OADY4kK,EAAA59J,KAAA,EACNlD,KAAKqH,EAAC,OACZ,OADYy5J,EAAA59J,KAAA,EACNlD,KAAKsH,EAAC,OACZ,OADYw5J,EAAA59J,KAAA,EACNlD,KAAKoH,EAAC,wBAAA05J,EAAAryF,OAAA,GAAAhwE,EAAA,YAEZmhK,CAAA,CAjpBW,GAqpBbA,GAAQhjK,UAAUmkK,WAAY,EAE9B,IAKMC,GAAiB,SAAAC,GAAAjlJ,EAAAglJ,EAAAC,GAAA,IAAA7jB,EAAAziI,EAAAqmJ,GAEtB,SAAAA,EAAa7yJ,EAAOC,GAAuB,IAAAohE,EAAfvuE,EAAOhB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAACwK,EAAA,KAAAu2J,IAEvCxxF,EAAA4tE,EAAAvgJ,KAAA,OAEKsR,MAAQA,EACbqhE,EAAKphE,OAASA,EACdohE,EAAK++B,MAAQ,EAEb/+B,EAAK0xF,QAAU,IAAItB,GAAS,EAAG,EAAGzxJ,EAAOC,GACzCohE,EAAK2xF,aAAc,EAEnB3xF,EAAK4xF,SAAW,IAAIxB,GAAS,EAAG,EAAGzxJ,EAAOC,GAE1C,IAAM+qI,EAAQ,CAAEhrI,MAAOA,EAAOC,OAAQA,EAAQmgG,MAAO,GAec,OAbnE/+B,EAAK6xF,QAAU,IAAItD,GAAS5kB,EAAOl4I,EAAQqjJ,QAASrjJ,EAAQk9J,MAAOl9J,EAAQm9J,MAAOn9J,EAAQo9J,UAAWp9J,EAAQq9J,UAAWr9J,EAAQs9J,OAAQt9J,EAAQ2D,KAAM3D,EAAQu9J,WAAYv9J,EAAQw9J,UAClLjvF,EAAK6xF,QAAQlC,uBAAwB,EAErC3vF,EAAK6xF,QAAQtC,OAAQ,EACrBvvF,EAAK6xF,QAAQxC,qBAA8Cz0J,IAA5BnJ,EAAQ49J,iBAAgC59J,EAAQ49J,gBAC/ErvF,EAAK6xF,QAAQ1C,oBAA4Cv0J,IAA3BnJ,EAAQ09J,eAA+B19J,EAAQ09J,eAAiB,KAC9FnvF,EAAK6xF,QAAQ/C,eAAkCl0J,IAAtBnJ,EAAQq9J,UAA0Br9J,EAAQq9J,UAAYzT,GAE/Er7E,EAAK8xF,iBAAsCl3J,IAAxBnJ,EAAQqgK,aAA4BrgK,EAAQqgK,YAC/D9xF,EAAK+xF,mBAA0Cn3J,IAA1BnJ,EAAQsgK,eAA8BtgK,EAAQsgK,cAEnE/xF,EAAKgyF,kBAAwCp3J,IAAzBnJ,EAAQugK,aAA6BvgK,EAAQugK,aAAe,KAEhFhyF,EAAKiyF,aAA8Br3J,IAApBnJ,EAAQwgK,QAAwBxgK,EAAQwgK,QAAU,EAAEjyF,CAEpE,CA2DC,OA3DAjmE,EAAAy3J,EAAA,EAAAx+J,IAAA,UAAA/D,MAED,SAAS0P,EAAOC,GAAoB,IAAZmgG,EAAKtuG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE1BD,KAAKmO,QAAUA,GAASnO,KAAKoO,SAAWA,GAAUpO,KAAKuuG,QAAUA,IAErEvuG,KAAKmO,MAAQA,EACbnO,KAAKoO,OAASA,EACdpO,KAAKuuG,MAAQA,EAEbvuG,KAAKqhK,QAAQloB,MAAMhrI,MAAQA,EAC3BnO,KAAKqhK,QAAQloB,MAAM/qI,OAASA,EAC5BpO,KAAKqhK,QAAQloB,MAAM5qC,MAAQA,EAE3BvuG,KAAK0hK,WAIN1hK,KAAKohK,SAASnyI,IAAK,EAAG,EAAG9gB,EAAOC,GAChCpO,KAAKkhK,QAAQjyI,IAAK,EAAG,EAAG9gB,EAAOC,EAEhC,GAAC,CAAA5L,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAsBL,OApBAxB,KAAKmO,MAAQ3M,EAAO2M,MACpBnO,KAAKoO,OAAS5M,EAAO4M,OACrBpO,KAAKuuG,MAAQ/sG,EAAO+sG,MAEpBvuG,KAAKohK,SAAS1F,KAAMl6J,EAAO4/J,UAE3BphK,KAAKqhK,QAAU7/J,EAAO6/J,QAAQngK,QAC9BlB,KAAKqhK,QAAQlC,uBAAwB,EAIrCn/J,KAAKqhK,QAAQloB,MAAQ56I,OAAOmgB,OAAQ,CAAC,EAAGld,EAAO6/J,QAAQloB,OAEvDn5I,KAAKshK,YAAc9/J,EAAO8/J,YAC1BthK,KAAKuhK,cAAgB//J,EAAO+/J,cAEC,OAAxB//J,EAAOggK,eAAwBxhK,KAAKwhK,aAAehgK,EAAOggK,aAAatgK,SAE5ElB,KAAKyhK,QAAUjgK,EAAOigK,QAEfzhK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAECuB,KAAKu+B,cAAe,CAAE35B,KAAM,WAE7B,KAACo8J,CAAA,CA3FqB,CAAS1P,IA+FhC0P,GAAkBpkK,UAAU+kK,qBAAsB,EAAK,IAEjDC,GAAgB,SAAAC,GAAA7lJ,EAAA4lJ,EAAAC,GAAA,IAAAtkB,EAAA5iI,EAAAinJ,GAErB,SAAAA,IAA6D,IAAAx3C,EAAhD1mF,EAAIzjC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAMkO,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGsuG,EAAKtuG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAa/B,OAbgCwK,EAAA,KAAAm3J,IAEzDx3C,EAAAmzB,EAAA1gJ,KAAA,KAAO,OAEFs8I,MAAQ,CAAEz1G,KAAAA,EAAMv1B,MAAAA,EAAOC,OAAAA,EAAQmgG,MAAAA,GAEpC6b,EAAKi0C,UAAY7T,GACjBpgC,EAAKk0C,UAAY9T,GAEjBpgC,EAAK03C,MAAQxX,GAEblgC,EAAKy0C,iBAAkB,EACvBz0C,EAAK20C,OAAQ,EACb30C,EAAK40C,gBAAkB,EAAE50C,CAE1B,CAAC,OAAA7gH,EAAAq4J,EAAA,CAjBoB,CAAS7D,IAqB/B6D,GAAiBhlK,UAAUmlK,oBAAqB,EAAK,IAE/CC,GAAsB,SAAAC,GAAAjmJ,EAAAgmJ,EAAAC,GAAA,IAAAhkB,EAAAtjI,EAAAqnJ,GAE3B,SAAAA,EAAa7zJ,EAAOC,EAAQmgG,GAAQ,IAAA4c,EAQO,OARP1gH,EAAA,KAAAu3J,IAEnC72C,EAAA8yB,EAAAphJ,KAAA,KAAOsR,EAAOC,IAETmgG,MAAQA,EAEb4c,EAAKk2C,QAAU,IAAIO,GAAkB,KAAMzzJ,EAAOC,EAAQmgG,GAE1D4c,EAAKk2C,QAAQlC,uBAAwB,EAAKh0C,CAE3C,CAAC,OAAA5hH,EAAAy4J,EAAA,CAZ0B,CAAShB,IAgBrCgB,GAAuBplK,UAAUslK,0BAA2B,EAAK,IAE3DC,GAAa,SAAAC,GAAApmJ,EAAAmmJ,EAAAC,GAAA,IAAAC,EAAA1nJ,EAAAwnJ,GAElB,SAAAA,IAA6D,IAAA72C,EAAhD5nF,EAAIzjC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAMkO,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGsuG,EAAKtuG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAqB/B,OArBgCwK,EAAA,KAAA03J,IAUzD72C,EAAA+2C,EAAAxlK,KAAA,KAAO,OAEFs8I,MAAQ,CAAEz1G,KAAAA,EAAMv1B,MAAAA,EAAOC,OAAAA,EAAQmgG,MAAAA,GAEpC+c,EAAK+yC,UAAY7T,GACjBl/B,EAAKgzC,UAAY9T,GAEjBl/B,EAAKw2C,MAAQxX,GAEbh/B,EAAKuzC,iBAAkB,EACvBvzC,EAAKyzC,OAAQ,EACbzzC,EAAK0zC,gBAAkB,EAAE1zC,CAE1B,CAAC,OAAA/hH,EAAA44J,EAAA,CAzBiB,CAASpE,IA6B5BoE,GAAcvlK,UAAU0lK,iBAAkB,EAAK,IAEzCC,GAAmB,SAAAC,GAAAxmJ,EAAAumJ,EAAAC,GAAA,IAAAC,EAAA9nJ,EAAA4nJ,GAExB,SAAAA,EAAap0J,EAAOC,EAAQmgG,GAAQ,IAAAmd,EAQO,OARPjhH,EAAA,KAAA83J,IAEnC72C,EAAA+2C,EAAA5lK,KAAA,KAAOsR,EAAOC,IAETmgG,MAAQA,EAEbmd,EAAK21C,QAAU,IAAIc,GAAe,KAAMh0J,EAAOC,EAAQmgG,GAEvDmd,EAAK21C,QAAQlC,uBAAwB,EAAKzzC,CAE3C,CAAC,OAAAniH,EAAAg5J,EAAA,CAZuB,CAASvB,IAgBlCuB,GAAoB3lK,UAAU8lK,uBAAwB,EAAK,IAErDC,GAA0B,SAAAC,GAAA5mJ,EAAA2mJ,EAAAC,GAAA,IAAAC,EAAAloJ,EAAAgoJ,GAE/B,SAAAA,EAAax0J,EAAOC,EAAQuvE,GAAsB,IAAAiuC,EAAf3qH,EAAOhB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAACwK,EAAA,KAAAk4J,GAI9C,IAAMtB,GAFNz1C,EAAAi3C,EAAAhmK,KAAA,KAAOsR,EAAOC,EAAQnN,IAEDogK,QAErBz1C,EAAKy1C,QAAU,GAEf,IAAM,IAAI3kK,EAAI,EAAGA,EAAIihF,EAAOjhF,IAE3BkvH,EAAKy1C,QAAS3kK,GAAM2kK,EAAQngK,QAC5B0qH,EAAKy1C,QAAS3kK,GAAIyiK,uBAAwB,EAE1C,OAAAvzC,CAEF,CAsDC,OAtDAriH,EAAAo5J,EAAA,EAAAngK,IAAA,UAAA/D,MAED,SAAS0P,EAAOC,GAAoB,IAAZmgG,EAAKtuG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE/B,GAAKD,KAAKmO,QAAUA,GAASnO,KAAKoO,SAAWA,GAAUpO,KAAKuuG,QAAUA,EAAQ,CAE7EvuG,KAAKmO,MAAQA,EACbnO,KAAKoO,OAASA,EACdpO,KAAKuuG,MAAQA,EAEb,IAAM,IAAI7xG,EAAI,EAAGowD,EAAK9sD,KAAKqhK,QAAQzpK,OAAQ8E,EAAIowD,EAAIpwD,IAElDsD,KAAKqhK,QAAS3kK,GAAIy8I,MAAMhrI,MAAQA,EAChCnO,KAAKqhK,QAAS3kK,GAAIy8I,MAAM/qI,OAASA,EACjCpO,KAAKqhK,QAAS3kK,GAAIy8I,MAAM5qC,MAAQA,EAIjCvuG,KAAK0hK,SAEN,CAKA,OAHA1hK,KAAKohK,SAASnyI,IAAK,EAAG,EAAG9gB,EAAOC,GAChCpO,KAAKkhK,QAAQjyI,IAAK,EAAG,EAAG9gB,EAAOC,GAExBpO,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAELxB,KAAK0hK,UAEL1hK,KAAKmO,MAAQ3M,EAAO2M,MACpBnO,KAAKoO,OAAS5M,EAAO4M,OACrBpO,KAAKuuG,MAAQ/sG,EAAO+sG,MAEpBvuG,KAAKohK,SAASnyI,IAAK,EAAG,EAAGjvB,KAAKmO,MAAOnO,KAAKoO,QAC1CpO,KAAKkhK,QAAQjyI,IAAK,EAAG,EAAGjvB,KAAKmO,MAAOnO,KAAKoO,QAEzCpO,KAAKshK,YAAc9/J,EAAO8/J,YAC1BthK,KAAKuhK,cAAgB//J,EAAO+/J,cAC5BvhK,KAAKwhK,aAAehgK,EAAOggK,aAE3BxhK,KAAKqhK,QAAQzpK,OAAS,EAEtB,IAAM,IAAI8E,EAAI,EAAGowD,EAAKtrD,EAAO6/J,QAAQzpK,OAAQ8E,EAAIowD,EAAIpwD,IAEpDsD,KAAKqhK,QAAS3kK,GAAM8E,EAAO6/J,QAAS3kK,GAAIwE,QAIzC,OAAOlB,IAER,KAAC2iK,CAAA,CAvE8B,CAAS3B,IA2EzC2B,GAA2B/lK,UAAUkmK,8BAA+B,EAAK,IAEnEC,GAAU,WAEf,SAAAA,IAA0C,IAA7B7mK,EAAC+D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqH,EAACrH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmH,EAACnH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAs4J,GAEtC/iK,KAAKo0D,GAAKl4D,EACV8D,KAAKgjK,GAAK37J,EACVrH,KAAKijK,GAAK37J,EACVtH,KAAKkjK,GAAK97J,CAEX,CA4GC,OA5GAmC,EAAAw5J,EAAA,EAAAvgK,IAAA,IAAAutB,IA8GD,WAEC,OAAO/vB,KAAKo0D,EAEb,EAACnlC,IAED,SAAOxwB,GAENuB,KAAKo0D,GAAK31D,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKgjK,EAEb,EAAC/zI,IAED,SAAOxwB,GAENuB,KAAKgjK,GAAKvkK,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKijK,EAEb,EAACh0I,IAED,SAAOxwB,GAENuB,KAAKijK,GAAKxkK,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKkjK,EAEb,EAACj0I,IAED,SAAOxwB,GAENuB,KAAKkjK,GAAKzkK,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,MAAA/D,MAED,SAAKvC,EAAGmL,EAAGC,EAAGF,GASb,OAPApH,KAAKo0D,GAAKl4D,EACV8D,KAAKgjK,GAAK37J,EACVrH,KAAKijK,GAAK37J,EACVtH,KAAKkjK,GAAK97J,EAEVpH,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAKo0D,GAAIp0D,KAAKgjK,GAAIhjK,KAAKijK,GAAIjjK,KAAKkjK,GAE9D,GAAC,CAAA1gK,IAAA,OAAA/D,MAED,SAAM2kK,GASL,OAPApjK,KAAKo0D,GAAKgvG,EAAWlnK,EACrB8D,KAAKgjK,GAAKI,EAAW/7J,EACrBrH,KAAKijK,GAAKG,EAAW97J,EACrBtH,KAAKkjK,GAAKE,EAAWh8J,EAErBpH,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc4kK,EAAOC,GAEpB,IAASD,IAASA,EAAME,QAEvB,MAAM,IAAIzlK,MAAO,oGAIlB,IAAM5B,EAAImnK,EAAMjvG,GAAI/sD,EAAIg8J,EAAML,GAAI17J,EAAI+7J,EAAMJ,GAAI11J,EAAQ81J,EAAMG,OAMxDrP,EAAMl3J,KAAKk3J,IACXC,EAAMn3J,KAAKm3J,IAEXqP,EAAKtP,EAAKj4J,EAAI,GACdm4J,EAAKF,EAAK9sJ,EAAI,GACdq8J,EAAKvP,EAAK7sJ,EAAI,GAEdq8J,EAAKvP,EAAKl4J,EAAI,GACdo4J,EAAKF,EAAK/sJ,EAAI,GACdu8J,EAAKxP,EAAK9sJ,EAAI,GAEpB,OAASiG,GAER,IAAK,MACJvN,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,IAAK,MACJ5jK,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,IAAK,MACJ5jK,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,IAAK,MACJ5jK,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,IAAK,MACJ5jK,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,IAAK,MACJ5jK,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,QACC7vJ,QAAQk/C,KAAM,mEAAqE1lD,GAMrF,OAFgB,IAAX+1J,GAAmBtjK,KAAKmjK,oBAEtBnjK,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBolK,EAAMjO,GAMvB,IAAMkO,EAAYlO,EAAQ,EAAGn6J,EAAIwB,KAAKm3J,IAAK0P,GAS3C,OAPA9jK,KAAKo0D,GAAKyvG,EAAK3nK,EAAIT,EACnBuE,KAAKgjK,GAAKa,EAAKx8J,EAAI5L,EACnBuE,KAAKijK,GAAKY,EAAKv8J,EAAI7L,EACnBuE,KAAKkjK,GAAKjmK,KAAKk3J,IAAK2P,GAEpB9jK,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuBqI,GAMtB,IAAM+hC,EAAK/hC,EAAEk/H,SAEZg6B,EAAMn3H,EAAI,GAAKo3H,EAAMp3H,EAAI,GAAKq3H,EAAMr3H,EAAI,GACxCs3H,EAAMt3H,EAAI,GAAKu3H,EAAMv3H,EAAI,GAAKw3H,EAAMx3H,EAAI,GACxCy3H,EAAMz3H,EAAI,GAAK03H,EAAM13H,EAAI,GAAK23H,EAAM33H,EAAI,IAExC50B,EAAQ+rJ,EAAMI,EAAMI,EAErB,GAAKvsJ,EAAQ,EAAI,CAEhB,IAAMxY,EAAI,GAAMwB,KAAK04J,KAAM1hJ,EAAQ,GAEnCjU,KAAKkjK,GAAK,IAAOznK,EACjBuE,KAAKo0D,IAAOmsG,EAAMF,GAAQ5kK,EAC1BuE,KAAKgjK,IAAO9C,EAAMI,GAAQ7kK,EAC1BuE,KAAKijK,IAAO9C,EAAMF,GAAQxkK,CAE3B,MAAO,GAAKukK,EAAMI,GAAOJ,EAAMQ,EAAM,CAEpC,IAAM/kK,EAAI,EAAMwB,KAAK04J,KAAM,EAAMqK,EAAMI,EAAMI,GAE7CxgK,KAAKkjK,IAAO3C,EAAMF,GAAQ5kK,EAC1BuE,KAAKo0D,GAAK,IAAO34D,EACjBuE,KAAKgjK,IAAO/C,EAAME,GAAQ1kK,EAC1BuE,KAAKijK,IAAO/C,EAAMI,GAAQ7kK,CAE3B,MAAO,GAAK2kK,EAAMI,EAAM,CAEvB,IAAM/kK,EAAI,EAAMwB,KAAK04J,KAAM,EAAMyK,EAAMJ,EAAMQ,GAE7CxgK,KAAKkjK,IAAOhD,EAAMI,GAAQ7kK,EAC1BuE,KAAKo0D,IAAO6rG,EAAME,GAAQ1kK,EAC1BuE,KAAKgjK,GAAK,IAAOvnK,EACjBuE,KAAKijK,IAAO5C,EAAME,GAAQ9kK,CAE3B,KAAO,CAEN,IAAMA,EAAI,EAAMwB,KAAK04J,KAAM,EAAM6K,EAAMR,EAAMI,GAE7CpgK,KAAKkjK,IAAO/C,EAAMF,GAAQxkK,EAC1BuE,KAAKo0D,IAAO8rG,EAAMI,GAAQ7kK,EAC1BuE,KAAKgjK,IAAO3C,EAAME,GAAQ9kK,EAC1BuE,KAAKijK,GAAK,IAAOxnK,CAElB,CAIA,OAFAuE,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBslK,EAAOC,GAI1B,IAAI98J,EAAI68J,EAAME,IAAKD,GAAQ,EAmC3B,OAjCK98J,EAAImQ,OAAO6sJ,SAIfh9J,EAAI,EAECjK,KAAK4f,IAAKknJ,EAAM7nK,GAAMe,KAAK4f,IAAKknJ,EAAMz8J,IAE1CtH,KAAKo0D,IAAO2vG,EAAM18J,EAClBrH,KAAKgjK,GAAKe,EAAM7nK,EAChB8D,KAAKijK,GAAK,EACVjjK,KAAKkjK,GAAKh8J,IAIVlH,KAAKo0D,GAAK,EACVp0D,KAAKgjK,IAAOe,EAAMz8J,EAClBtH,KAAKijK,GAAKc,EAAM18J,EAChBrH,KAAKkjK,GAAKh8J,KAQXlH,KAAKo0D,GAAK2vG,EAAM18J,EAAI28J,EAAI18J,EAAIy8J,EAAMz8J,EAAI08J,EAAI38J,EAC1CrH,KAAKgjK,GAAKe,EAAMz8J,EAAI08J,EAAI9nK,EAAI6nK,EAAM7nK,EAAI8nK,EAAI18J,EAC1CtH,KAAKijK,GAAKc,EAAM7nK,EAAI8nK,EAAI38J,EAAI08J,EAAM18J,EAAI28J,EAAI9nK,EAC1C8D,KAAKkjK,GAAKh8J,GAIJlH,KAAK6gH,WAEb,GAAC,CAAAr+G,IAAA,UAAA/D,MAED,SAASwI,GAER,OAAO,EAAIhK,KAAK4iK,KAAM5iK,KAAK4f,IAAKq1I,GAAOlyJ,KAAKikK,IAAKh9J,IAAO,EAAG,IAE5D,GAAC,CAAAzE,IAAA,gBAAA/D,MAED,SAAewI,EAAGynF,GAEjB,IAAMknE,EAAQ51J,KAAKmkK,QAASl9J,GAE5B,GAAe,IAAV2uJ,EAAc,OAAO51J,KAE1B,IAAM1I,EAAI2F,KAAKiuC,IAAK,EAAGwjD,EAAOknE,GAI9B,OAFA51J,KAAKokK,MAAOn9J,EAAG3P,GAER0I,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAKivB,IAAK,EAAG,EAAG,EAAG,EAE3B,GAAC,CAAAzsB,IAAA,SAAA/D,MAED,WAIC,OAAOuB,KAAKqkK,WAEb,GAAC,CAAA7hK,IAAA,YAAA/D,MAED,WAQC,OANAuB,KAAKo0D,KAAQ,EACbp0D,KAAKgjK,KAAQ,EACbhjK,KAAKijK,KAAQ,EAEbjjK,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAEJ,OAAOnH,KAAKo0D,GAAKjtD,EAAEitD,GAAKp0D,KAAKgjK,GAAK77J,EAAE67J,GAAKhjK,KAAKijK,GAAK97J,EAAE87J,GAAKjjK,KAAKkjK,GAAK/7J,EAAE+7J,EAEvE,GAAC,CAAA1gK,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAKo0D,GAAKp0D,KAAKo0D,GAAKp0D,KAAKgjK,GAAKhjK,KAAKgjK,GAAKhjK,KAAKijK,GAAKjjK,KAAKijK,GAAKjjK,KAAKkjK,GAAKljK,KAAKkjK,EAEnF,GAAC,CAAA1gK,IAAA,SAAA/D,MAED,WAEC,OAAOxB,KAAK04J,KAAM31J,KAAKo0D,GAAKp0D,KAAKo0D,GAAKp0D,KAAKgjK,GAAKhjK,KAAKgjK,GAAKhjK,KAAKijK,GAAKjjK,KAAKijK,GAAKjjK,KAAKkjK,GAAKljK,KAAKkjK,GAE9F,GAAC,CAAA1gK,IAAA,YAAA/D,MAED,WAEC,IAAIoI,EAAI7G,KAAKpI,SAsBb,OApBW,IAANiP,GAEJ7G,KAAKo0D,GAAK,EACVp0D,KAAKgjK,GAAK,EACVhjK,KAAKijK,GAAK,EACVjjK,KAAKkjK,GAAK,IAIVr8J,EAAI,EAAIA,EAER7G,KAAKo0D,GAAKp0D,KAAKo0D,GAAKvtD,EACpB7G,KAAKgjK,GAAKhjK,KAAKgjK,GAAKn8J,EACpB7G,KAAKijK,GAAKjjK,KAAKijK,GAAKp8J,EACpB7G,KAAKkjK,GAAKljK,KAAKkjK,GAAKr8J,GAIrB7G,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAUwI,EAAGD,GAEZ,YAAWoD,IAANpD,GAEJ+M,QAAQk/C,KAAM,0GACPjzD,KAAKskK,oBAAqBr9J,EAAGD,IAI9BhH,KAAKskK,oBAAqBtkK,KAAMiH,EAExC,GAAC,CAAAzE,IAAA,cAAA/D,MAED,SAAawI,GAEZ,OAAOjH,KAAKskK,oBAAqBr9J,EAAGjH,KAErC,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,SAAqBzC,EAAGuK,GAIvB,IAAMg+J,EAAMvoK,EAAEo4D,GAAIowG,EAAMxoK,EAAEgnK,GAAIyB,EAAMzoK,EAAEinK,GAAIyB,EAAM1oK,EAAEknK,GAC5CyB,EAAMp+J,EAAE6tD,GAAIwwG,EAAMr+J,EAAEy8J,GAAI6B,EAAMt+J,EAAE08J,GAAI6B,EAAMv+J,EAAE28J,GASlD,OAPAljK,KAAKo0D,GAAKmwG,EAAMO,EAAMJ,EAAMC,EAAMH,EAAMK,EAAMJ,EAAMG,EACpD5kK,KAAKgjK,GAAKwB,EAAMM,EAAMJ,EAAME,EAAMH,EAAME,EAAMJ,EAAMM,EACpD7kK,KAAKijK,GAAKwB,EAAMK,EAAMJ,EAAMG,EAAMN,EAAMK,EAAMJ,EAAMG,EACpD3kK,KAAKkjK,GAAKwB,EAAMI,EAAMP,EAAMI,EAAMH,EAAMI,EAAMH,EAAMI,EAEpD7kK,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO62B,EAAIh+B,GAEV,GAAW,IAANA,EAAU,OAAO0I,KACtB,GAAW,IAAN1I,EAAU,OAAO0I,KAAK07J,KAAMpmI,GAEjC,IAAMp5B,EAAI8D,KAAKo0D,GAAI/sD,EAAIrH,KAAKgjK,GAAI17J,EAAItH,KAAKijK,GAAI77J,EAAIpH,KAAKkjK,GAIlD6B,EAAe39J,EAAIkuB,EAAG4tI,GAAKhnK,EAAIo5B,EAAG8+B,GAAK/sD,EAAIiuB,EAAG0tI,GAAK17J,EAAIguB,EAAG2tI,GAiB9D,GAfK8B,EAAe,GAEnB/kK,KAAKkjK,IAAO5tI,EAAG4tI,GACfljK,KAAKo0D,IAAO9+B,EAAG8+B,GACfp0D,KAAKgjK,IAAO1tI,EAAG0tI,GACfhjK,KAAKijK,IAAO3tI,EAAG2tI,GAEf8B,GAAiBA,GAIjB/kK,KAAK07J,KAAMpmI,GAIPyvI,GAAgB,EAOpB,OALA/kK,KAAKkjK,GAAK97J,EACVpH,KAAKo0D,GAAKl4D,EACV8D,KAAKgjK,GAAK37J,EACVrH,KAAKijK,GAAK37J,EAEHtH,KAIR,IAAMglK,EAAkB,EAAMD,EAAeA,EAE7C,GAAKC,GAAmB3tJ,OAAO6sJ,QAAU,CAExC,IAAMzoK,EAAI,EAAInE,EASd,OARA0I,KAAKkjK,GAAKznK,EAAI2L,EAAI9P,EAAI0I,KAAKkjK,GAC3BljK,KAAKo0D,GAAK34D,EAAIS,EAAI5E,EAAI0I,KAAKo0D,GAC3Bp0D,KAAKgjK,GAAKvnK,EAAI4L,EAAI/P,EAAI0I,KAAKgjK,GAC3BhjK,KAAKijK,GAAKxnK,EAAI6L,EAAIhQ,EAAI0I,KAAKijK,GAE3BjjK,KAAK6gH,YACL7gH,KAAKmjK,oBAEEnjK,IAER,CAEA,IAAMilK,EAAehoK,KAAK04J,KAAMqP,GAC1BE,EAAYjoK,KAAK44J,MAAOoP,EAAcF,GACtCI,EAASloK,KAAKm3J,KAAO,EAAI98J,GAAM4tK,GAAcD,EAClDG,EAASnoK,KAAKm3J,IAAK98J,EAAI4tK,GAAcD,EAStC,OAPAjlK,KAAKkjK,GAAO97J,EAAI+9J,EAASnlK,KAAKkjK,GAAKkC,EACnCplK,KAAKo0D,GAAOl4D,EAAIipK,EAASnlK,KAAKo0D,GAAKgxG,EACnCplK,KAAKgjK,GAAO37J,EAAI89J,EAASnlK,KAAKgjK,GAAKoC,EACnCplK,KAAKijK,GAAO37J,EAAI69J,EAASnlK,KAAKijK,GAAKmC,EAEnCplK,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB4uB,EAAIiI,EAAIh+B,GAEzB,OAAO0I,KAAK07J,KAAMruI,GAAK+2I,MAAO9uI,EAAIh+B,EAEnC,GAAC,CAAAkL,IAAA,SAAA/D,MAED,WAMC,IAAM4mK,EAAKpoK,KAAKuxC,SACV82H,EAAUroK,KAAK04J,KAAM,EAAI0P,GACzBE,EAAStoK,KAAK04J,KAAM0P,GAEpBG,EAAK,EAAIvoK,KAAK00J,GAAK10J,KAAKuxC,SAExBi3H,EAAK,EAAIxoK,KAAK00J,GAAK10J,KAAKuxC,SAE9B,OAAOxuC,KAAKivB,IACXq2I,EAAUroK,KAAKk3J,IAAKqR,GACpBD,EAAStoK,KAAKm3J,IAAKqR,GACnBF,EAAStoK,KAAKk3J,IAAKsR,GACnBH,EAAUroK,KAAKm3J,IAAKoR,GAGtB,GAAC,CAAAhjK,IAAA,SAAA/D,MAED,SAAQ2kK,GAEP,OAASA,EAAWhvG,KAAOp0D,KAAKo0D,IAAUgvG,EAAWJ,KAAOhjK,KAAKgjK,IAAUI,EAAWH,KAAOjjK,KAAKijK,IAAUG,EAAWF,KAAOljK,KAAKkjK,EAEpI,GAAC,CAAA1gK,IAAA,YAAA/D,MAED,SAAWsE,GAAoB,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAS1B,OAPAD,KAAKo0D,GAAKrxD,EAAOgnC,GACjB/pC,KAAKgjK,GAAKjgK,EAAOgnC,EAAS,GAC1B/pC,KAAKijK,GAAKlgK,EAAOgnC,EAAS,GAC1B/pC,KAAKkjK,GAAKngK,EAAOgnC,EAAS,GAE1B/pC,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAO7B,OALA8C,EAAOgnC,GAAW/pC,KAAKo0D,GACvBrxD,EAAOgnC,EAAS,GAAM/pC,KAAKgjK,GAC3BjgK,EAAOgnC,EAAS,GAAM/pC,KAAKijK,GAC3BlgK,EAAOgnC,EAAS,GAAM/pC,KAAKkjK,GAEpBngK,CAER,GAAC,CAAAP,IAAA,sBAAA/D,MAED,SAAqBy3J,EAAWtnJ,GAO/B,OALA5O,KAAKo0D,GAAK8hG,EAAUC,KAAMvnJ,GAC1B5O,KAAKgjK,GAAK9M,EAAUE,KAAMxnJ,GAC1B5O,KAAKijK,GAAK/M,EAAUyG,KAAM/tJ,GAC1B5O,KAAKkjK,GAAKhN,EAAU2K,KAAMjyJ,GAEnB5O,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW05C,GAIV,OAFAn4C,KAAKmjK,kBAAoBhrH,EAElBn4C,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,WAAqB,IAAC,EAAA+D,IAAA,QAAA/D,MA7pBtB,SAAc4uB,EAAIiI,EAAIowI,EAAIpuK,GAGzB,OADAyc,QAAQk/C,KAAM,wGACPyyG,EAAGC,iBAAkBt4I,EAAIiI,EAAIh+B,EAErC,GAAC,CAAAkL,IAAA,YAAA/D,MAED,SAAkBmnK,EAAKC,EAAWC,EAAMC,EAAYC,EAAMC,EAAY3uK,GAIrE,IAAI4uK,EAAKJ,EAAMC,EAAa,GAC3BI,EAAKL,EAAMC,EAAa,GACxBK,EAAKN,EAAMC,EAAa,GACxBM,EAAKP,EAAMC,EAAa,GAEnBO,EAAKN,EAAMC,EAAa,GAC7BM,EAAKP,EAAMC,EAAa,GACxBO,EAAKR,EAAMC,EAAa,GACxBQ,EAAKT,EAAMC,EAAa,GAEzB,GAAW,IAAN3uK,EAMJ,OAJAsuK,EAAKC,EAAY,GAAMK,EACvBN,EAAKC,EAAY,GAAMM,EACvBP,EAAKC,EAAY,GAAMO,OACvBR,EAAKC,EAAY,GAAMQ,GAKxB,GAAW,IAAN/uK,EAMJ,OAJAsuK,EAAKC,EAAY,GAAMS,EACvBV,EAAKC,EAAY,GAAMU,EACvBX,EAAKC,EAAY,GAAMW,OACvBZ,EAAKC,EAAY,GAAMY,GAKxB,GAAKJ,IAAOI,GAAMP,IAAOI,GAAMH,IAAOI,GAAMH,IAAOI,EAAK,CAEvD,IAAI/qK,EAAI,EAAInE,EACN68J,EAAM+R,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAC9CC,EAAQvS,GAAO,EAAI,GAAM,EACzBwS,EAAS,EAAIxS,EAAMA,EAGpB,GAAKwS,EAAStvJ,OAAO6sJ,QAAU,CAE9B,IAAM9P,EAAMn3J,KAAK04J,KAAMgR,GACtB36J,EAAM/O,KAAK44J,MAAOzB,EAAKD,EAAMuS,GAE9BjrK,EAAIwB,KAAKm3J,IAAK34J,EAAIuQ,GAAQooJ,EAC1B98J,EAAI2F,KAAKm3J,IAAK98J,EAAI0U,GAAQooJ,CAE3B,CAEA,IAAMwS,EAAOtvK,EAAIovK,EAQjB,GANAR,EAAKA,EAAKzqK,EAAI6qK,EAAKM,EACnBT,EAAKA,EAAK1qK,EAAI8qK,EAAKK,EACnBR,EAAKA,EAAK3qK,EAAI+qK,EAAKI,EACnBP,EAAKA,EAAK5qK,EAAIgrK,EAAKG,EAGdnrK,IAAM,EAAInE,EAAI,CAElB,IAAMmP,EAAI,EAAIxJ,KAAK04J,KAAMuQ,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,GAE5DH,GAAMz/J,EACN0/J,GAAM1/J,EACN2/J,GAAM3/J,EACN4/J,GAAM5/J,CAEP,CAED,CAEAm/J,EAAKC,GAAcK,EACnBN,EAAKC,EAAY,GAAMM,EACvBP,EAAKC,EAAY,GAAMO,EACvBR,EAAKC,EAAY,GAAMQ,CAExB,GAAC,CAAA7jK,IAAA,0BAAA/D,MAED,SAAgCmnK,EAAKC,EAAWC,EAAMC,EAAYC,EAAMC,GAEvE,IAAMC,EAAKJ,EAAMC,GACXI,EAAKL,EAAMC,EAAa,GACxBK,EAAKN,EAAMC,EAAa,GACxBM,EAAKP,EAAMC,EAAa,GAExBO,EAAKN,EAAMC,GACXM,EAAKP,EAAMC,EAAa,GACxBO,EAAKR,EAAMC,EAAa,GACxBQ,EAAKT,EAAMC,EAAa,GAO9B,OALAL,EAAKC,GAAcK,EAAKO,EAAKJ,EAAKC,EAAKH,EAAKK,EAAKJ,EAAKG,EACtDX,EAAKC,EAAY,GAAMM,EAAKM,EAAKJ,EAAKE,EAAKH,EAAKE,EAAKJ,EAAKM,EAC1DZ,EAAKC,EAAY,GAAMO,EAAKK,EAAKJ,EAAKG,EAAKN,EAAKK,EAAKJ,EAAKG,EAC1DV,EAAKC,EAAY,GAAMQ,EAAKI,EAAKP,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAEnDZ,CAER,KAAC7C,CAAA,CArHc,GA4qBhBA,GAAWnmK,UAAUiqK,cAAe,EAAK,IAEnCC,GAAO,WAEZ,SAAAA,IAAmC,IAAtB5qK,EAAC+D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqH,EAACrH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAq8J,GAE/B9mK,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EACTrH,KAAKsH,EAAIA,CAEV,CA8tBC,OA9tBAiC,EAAAu9J,EAAA,EAAAtkK,IAAA,MAAA/D,MAED,SAAKvC,EAAGmL,EAAGC,GAQV,YANW8C,IAAN9C,IAAkBA,EAAItH,KAAKsH,GAEhCtH,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EACTrH,KAAKsH,EAAIA,EAEFtH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW22J,GAMV,OAJAp1J,KAAK9D,EAAIk5J,EACTp1J,KAAKqH,EAAI+tJ,EACTp1J,KAAKsH,EAAI8tJ,EAEFp1J,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMvC,GAIL,OAFA8D,KAAK9D,EAAIA,EAEF8D,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM4I,GAIL,OAFArH,KAAKqH,EAAIA,EAEFrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM6I,GAIL,OAFAtH,KAAKsH,EAAIA,EAEFtH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,EAAOnQ,GAEpB,OAASmQ,GAER,KAAK,EAAG5O,KAAK9D,EAAIuC,EAAO,MACxB,KAAK,EAAGuB,KAAKqH,EAAI5I,EAAO,MACxB,KAAK,EAAGuB,KAAKsH,EAAI7I,EAAO,MACxB,QAAS,MAAM,IAAIX,MAAO,0BAA4B8Q,GAIvD,OAAO5O,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,GAEb,OAASA,GAER,KAAK,EAAG,OAAO5O,KAAK9D,EACpB,KAAK,EAAG,OAAO8D,KAAKqH,EACpB,KAAK,EAAG,OAAOrH,KAAKsH,EACpB,QAAS,MAAM,IAAIxJ,MAAO,0BAA4B8Q,GAIxD,GAAC,CAAApM,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAK9D,EAAG8D,KAAKqH,EAAGrH,KAAKsH,EAEnD,GAAC,CAAA9E,IAAA,OAAA/D,MAED,SAAM0I,GAML,OAJAnH,KAAK9D,EAAIiL,EAAEjL,EACX8D,KAAKqH,EAAIF,EAAEE,EACXrH,KAAKsH,EAAIH,EAAEG,EAEJtH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,EAAGC,GAEP,YAAWgD,IAANhD,GAEJ2M,QAAQk/C,KAAM,yFACPjzD,KAAKq1J,WAAYluJ,EAAGC,KAI5BpH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EAELtH,KAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAMV,OAJAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EACVuE,KAAKsH,GAAK7L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAMd,OAJAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EACjBrH,KAAKsH,EAAItL,EAAEsL,EAAIf,EAAEe,EAEVtH,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiB0I,EAAG1L,GAMnB,OAJAuE,KAAK9D,GAAKiL,EAAEjL,EAAIT,EAChBuE,KAAKqH,GAAKF,EAAEE,EAAI5L,EAChBuE,KAAKsH,GAAKH,EAAEG,EAAI7L,EAETuE,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,EAAGC,GAEP,YAAWgD,IAANhD,GAEJ2M,QAAQk/C,KAAM,yFACPjzD,KAAKs1J,WAAYnuJ,EAAGC,KAI5BpH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EAELtH,KAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAMV,OAJAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EACVuE,KAAKsH,GAAK7L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAMd,OAJAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EACjBrH,KAAKsH,EAAItL,EAAEsL,EAAIf,EAAEe,EAEVtH,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU0I,EAAGC,GAEZ,YAAWgD,IAANhD,GAEJ2M,QAAQk/C,KAAM,mGACPjzD,KAAK+mK,gBAAiB5/J,EAAGC,KAIjCpH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EAELtH,KAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB22J,GAMf,OAJAp1J,KAAK9D,GAAKk5J,EACVp1J,KAAKqH,GAAK+tJ,EACVp1J,KAAKsH,GAAK8tJ,EAEHp1J,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBzC,EAAGuK,GAMnB,OAJAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EACjBrH,KAAKsH,EAAItL,EAAEsL,EAAIf,EAAEe,EAEVtH,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAY4kK,GAQX,OANSA,GAASA,EAAME,SAEvBxvJ,QAAQwN,MAAO,+FAITvhB,KAAKgnK,gBAAiBC,GAAcC,aAAc7D,GAE1D,GAAC,CAAA7gK,IAAA,iBAAA/D,MAED,SAAgBolK,EAAMjO,GAErB,OAAO51J,KAAKgnK,gBAAiBC,GAAcE,iBAAkBtD,EAAMjO,GAEpE,GAAC,CAAApzJ,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM5K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EAAGC,EAAItH,KAAKsH,EACjChB,EAAIQ,EAAEk/H,SAMZ,OAJAhmI,KAAK9D,EAAIoK,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAC5CtH,KAAKqH,EAAIf,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAC5CtH,KAAKsH,EAAIhB,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAErCtH,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBqI,GAElB,OAAO9G,KAAK0/J,aAAc54J,GAAI+5G,WAE/B,GAAC,CAAAr+G,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM5K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EAAGC,EAAItH,KAAKsH,EACjChB,EAAIQ,EAAEk/H,SAEN5+H,EAAI,GAAMd,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,IAAOgB,EAAIhB,EAAG,KAM3D,OAJAtG,KAAK9D,GAAMoK,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAAIhB,EAAG,KAASc,EAC9DpH,KAAKqH,GAAMf,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAAIhB,EAAG,KAASc,EAC9DpH,KAAKsH,GAAMhB,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,IAAOgB,EAAIhB,EAAG,KAASc,EAExDpH,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBwI,GAEhB,IAAM/K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EAAGC,EAAItH,KAAKsH,EACjC8/J,EAAKngK,EAAE/K,EAAGmrK,EAAKpgK,EAAEI,EAAGigK,EAAKrgK,EAAEK,EAAGigK,EAAKtgK,EAAEG,EAIrCogK,EAAKD,EAAKrrK,EAAImrK,EAAK//J,EAAIggK,EAAKjgK,EAC5BogK,EAAKF,EAAKlgK,EAAIigK,EAAKprK,EAAIkrK,EAAK9/J,EAC5BogK,EAAKH,EAAKjgK,EAAI8/J,EAAK//J,EAAIggK,EAAKnrK,EAC5ByrK,GAAOP,EAAKlrK,EAAImrK,EAAKhgK,EAAIigK,EAAKhgK,EAQpC,OAJAtH,KAAK9D,EAAIsrK,EAAKD,EAAKI,GAAOP,EAAKK,GAAOH,EAAKI,GAAOL,EAClDrnK,KAAKqH,EAAIogK,EAAKF,EAAKI,GAAON,EAAKK,GAAON,EAAKI,GAAOF,EAClDtnK,KAAKsH,EAAIogK,EAAKH,EAAKI,GAAOL,EAAKE,GAAOH,EAAKI,GAAOL,EAE3CpnK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASmpK,GAER,OAAO5nK,KAAK6nK,aAAcD,EAAOE,oBAAqBD,aAAcD,EAAOG,iBAE5E,GAAC,CAAAvlK,IAAA,YAAA/D,MAED,SAAWmpK,GAEV,OAAO5nK,KAAK6nK,aAAcD,EAAOI,yBAA0BH,aAAcD,EAAOK,YAEjF,GAAC,CAAAzlK,IAAA,qBAAA/D,MAED,SAAoBqI,GAKnB,IAAM5K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EAAGC,EAAItH,KAAKsH,EACjChB,EAAIQ,EAAEk/H,SAMZ,OAJAhmI,KAAK9D,EAAIoK,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAC5CtH,KAAKqH,EAAIf,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAC5CtH,KAAKsH,EAAIhB,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,IAAOgB,EAEtCtH,KAAK6gH,WAEb,GAAC,CAAAr+G,IAAA,SAAA/D,MAED,SAAQ0I,GAMP,OAJAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EAELtH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc22J,GAEb,OAAOp1J,KAAKu1J,eAAgB,EAAIH,EAEjC,GAAC,CAAA5yJ,IAAA,MAAA/D,MAED,SAAK0I,GAMJ,OAJAnH,KAAK9D,EAAIe,KAAKiuC,IAAKlrC,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKiuC,IAAKlrC,KAAKqH,EAAGF,EAAEE,GAC7BrH,KAAKsH,EAAIrK,KAAKiuC,IAAKlrC,KAAKsH,EAAGH,EAAEG,GAEtBtH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAMJ,OAJAnH,KAAK9D,EAAIe,KAAKC,IAAK8C,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKC,IAAK8C,KAAKqH,EAAGF,EAAEE,GAC7BrH,KAAKsH,EAAIrK,KAAKC,IAAK8C,KAAKsH,EAAGH,EAAEG,GAEtBtH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOysC,EAAKhuC,GAQX,OAJA8C,KAAK9D,EAAIe,KAAKC,IAAKguC,EAAIhvC,EAAGe,KAAKiuC,IAAKhuC,EAAIhB,EAAG8D,KAAK9D,IAChD8D,KAAKqH,EAAIpK,KAAKC,IAAKguC,EAAI7jC,EAAGpK,KAAKiuC,IAAKhuC,EAAImK,EAAGrH,KAAKqH,IAChDrH,KAAKsH,EAAIrK,KAAKC,IAAKguC,EAAI5jC,EAAGrK,KAAKiuC,IAAKhuC,EAAIoK,EAAGtH,KAAKsH,IAEzCtH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAa+2J,EAAQC,GAMpB,OAJAz1J,KAAK9D,EAAIe,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAK9D,IAClD8D,KAAKqH,EAAIpK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKqH,IAClDrH,KAAKsH,EAAIrK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKsH,IAE3CtH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAaysC,EAAKhuC,GAEjB,IAAMtF,EAASoI,KAAKpI,SAEpB,OAAOoI,KAAK01J,aAAc99J,GAAU,GAAI29J,eAAgBt4J,KAAKC,IAAKguC,EAAKjuC,KAAKiuC,IAAKhuC,EAAKtF,IAEvF,GAAC,CAAA4K,IAAA,QAAA/D,MAED,WAMC,OAJAuB,KAAK9D,EAAIe,KAAKwf,MAAOzc,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAKwf,MAAOzc,KAAKqH,GAC1BrH,KAAKsH,EAAIrK,KAAKwf,MAAOzc,KAAKsH,GAEnBtH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAMC,OAJAuB,KAAK9D,EAAIe,KAAKurD,KAAMxoD,KAAK9D,GACzB8D,KAAKqH,EAAIpK,KAAKurD,KAAMxoD,KAAKqH,GACzBrH,KAAKsH,EAAIrK,KAAKurD,KAAMxoD,KAAKsH,GAElBtH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAMC,OAJAuB,KAAK9D,EAAIe,KAAK83J,MAAO/0J,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAK83J,MAAO/0J,KAAKqH,GAC1BrH,KAAKsH,EAAIrK,KAAK83J,MAAO/0J,KAAKsH,GAEnBtH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAMC,OAJAuB,KAAK9D,EAAM8D,KAAK9D,EAAI,EAAMe,KAAKurD,KAAMxoD,KAAK9D,GAAMe,KAAKwf,MAAOzc,KAAK9D,GACjE8D,KAAKqH,EAAMrH,KAAKqH,EAAI,EAAMpK,KAAKurD,KAAMxoD,KAAKqH,GAAMpK,KAAKwf,MAAOzc,KAAKqH,GACjErH,KAAKsH,EAAMtH,KAAKsH,EAAI,EAAMrK,KAAKurD,KAAMxoD,KAAKsH,GAAMrK,KAAKwf,MAAOzc,KAAKsH,GAE1DtH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAMC,OAJAuB,KAAK9D,GAAM8D,KAAK9D,EAChB8D,KAAKqH,GAAMrH,KAAKqH,EAChBrH,KAAKsH,GAAMtH,KAAKsH,EAETtH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAEJ,OAAOnH,KAAK9D,EAAIiL,EAAEjL,EAAI8D,KAAKqH,EAAIF,EAAEE,EAAIrH,KAAKsH,EAAIH,EAAEG,CAEjD,GAEA,CAAA9E,IAAA,WAAA/D,MAEA,WAEC,OAAOuB,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,EAAIrH,KAAKsH,EAAItH,KAAKsH,CAE1D,GAAC,CAAA9E,IAAA,SAAA/D,MAED,WAEC,OAAOxB,KAAK04J,KAAM31J,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,EAAIrH,KAAKsH,EAAItH,KAAKsH,EAErE,GAAC,CAAA9E,IAAA,kBAAA/D,MAED,WAEC,OAAOxB,KAAK4f,IAAK7c,KAAK9D,GAAMe,KAAK4f,IAAK7c,KAAKqH,GAAMpK,KAAK4f,IAAK7c,KAAKsH,EAEjE,GAAC,CAAA9E,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAK01J,aAAc11J,KAAKpI,UAAY,EAE5C,GAAC,CAAA4K,IAAA,YAAA/D,MAED,SAAW7G,GAEV,OAAOoI,KAAK6gH,YAAY00C,eAAgB39J,EAEzC,GAAC,CAAA4K,IAAA,OAAA/D,MAED,SAAM0I,EAAG4uJ,GAMR,OAJA/1J,KAAK9D,IAAOiL,EAAEjL,EAAI8D,KAAK9D,GAAM65J,EAC7B/1J,KAAKqH,IAAOF,EAAEE,EAAIrH,KAAKqH,GAAM0uJ,EAC7B/1J,KAAKsH,IAAOH,EAAEG,EAAItH,KAAKsH,GAAMyuJ,EAEtB/1J,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAau3J,EAAIC,EAAIF,GAMpB,OAJA/1J,KAAK9D,EAAI85J,EAAG95J,GAAM+5J,EAAG/5J,EAAI85J,EAAG95J,GAAM65J,EAClC/1J,KAAKqH,EAAI2uJ,EAAG3uJ,GAAM4uJ,EAAG5uJ,EAAI2uJ,EAAG3uJ,GAAM0uJ,EAClC/1J,KAAKsH,EAAI0uJ,EAAG1uJ,GAAM2uJ,EAAG3uJ,EAAI0uJ,EAAG1uJ,GAAMyuJ,EAE3B/1J,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO0I,EAAGC,GAET,YAAWgD,IAANhD,GAEJ2M,QAAQk/C,KAAM,6FACPjzD,KAAKkoK,aAAc/gK,EAAGC,IAIvBpH,KAAKkoK,aAAcloK,KAAMmH,EAEjC,GAAC,CAAA3E,IAAA,eAAA/D,MAED,SAAczC,EAAGuK,GAEhB,IAAM4hK,EAAKnsK,EAAEE,EAAGksK,EAAKpsK,EAAEqL,EAAGghK,EAAKrsK,EAAEsL,EAC3BghK,EAAK/hK,EAAErK,EAAGqsK,EAAKhiK,EAAEc,EAAGmhK,EAAKjiK,EAAEe,EAMjC,OAJAtH,KAAK9D,EAAIksK,EAAKI,EAAKH,EAAKE,EACxBvoK,KAAKqH,EAAIghK,EAAKC,EAAKH,EAAKK,EACxBxoK,KAAKsH,EAAI6gK,EAAKI,EAAKH,EAAKE,EAEjBtoK,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiB0I,GAEhB,IAAMshK,EAActhK,EAAEuhK,WAEtB,GAAqB,IAAhBD,EAAoB,OAAOzoK,KAAKivB,IAAK,EAAG,EAAG,GAEhD,IAAMmmI,EAASjuJ,EAAE88J,IAAKjkK,MAASyoK,EAE/B,OAAOzoK,KAAK07J,KAAMv0J,GAAIouJ,eAAgBH,EAEvC,GAAC,CAAA5yJ,IAAA,iBAAA/D,MAED,SAAgBkqK,GAIf,OAFAC,GAAUlN,KAAM17J,MAAO6oK,gBAAiBF,GAEjC3oK,KAAK8oK,IAAKF,GAElB,GAAC,CAAApmK,IAAA,UAAA/D,MAED,SAASsqK,GAKR,OAAO/oK,KAAK8oK,IAAKF,GAAUlN,KAAMqN,GAASxT,eAAgB,EAAIv1J,KAAKikK,IAAK8E,IAEzE,GAAC,CAAAvmK,IAAA,UAAA/D,MAED,SAAS0I,GAER,IAAMshK,EAAcxrK,KAAK04J,KAAM31J,KAAK0oK,WAAavhK,EAAEuhK,YAEnD,GAAqB,IAAhBD,EAAoB,OAAOxrK,KAAK00J,GAAK,EAE1C,IAAM8H,EAAQz5J,KAAKikK,IAAK98J,GAAMshK,EAI9B,OAAOxrK,KAAK4iK,KAAM3N,GAAOuH,GAAS,EAAG,GAEtC,GAAC,CAAAj3J,IAAA,aAAA/D,MAED,SAAY0I,GAEX,OAAOlK,KAAK04J,KAAM31J,KAAK81J,kBAAmB3uJ,GAE3C,GAAC,CAAA3E,IAAA,oBAAA/D,MAED,SAAmB0I,GAElB,IAAMmnI,EAAKtuI,KAAK9D,EAAIiL,EAAEjL,EAAGmyI,EAAKruI,KAAKqH,EAAIF,EAAEE,EAAG2hK,EAAKhpK,KAAKsH,EAAIH,EAAEG,EAE5D,OAAOgnI,EAAKA,EAAKD,EAAKA,EAAK26B,EAAKA,CAEjC,GAAC,CAAAxmK,IAAA,sBAAA/D,MAED,SAAqB0I,GAEpB,OAAOlK,KAAK4f,IAAK7c,KAAK9D,EAAIiL,EAAEjL,GAAMe,KAAK4f,IAAK7c,KAAKqH,EAAIF,EAAEE,GAAMpK,KAAK4f,IAAK7c,KAAKsH,EAAIH,EAAEG,EAEnF,GAAC,CAAA9E,IAAA,mBAAA/D,MAED,SAAkBhD,GAEjB,OAAOuE,KAAKipK,uBAAwBxtK,EAAEytK,OAAQztK,EAAE0tK,IAAK1tK,EAAEg+J,MAExD,GAAC,CAAAj3J,IAAA,yBAAA/D,MAED,SAAwByqK,EAAQC,EAAK1P,GAEpC,IAAM2P,EAAensK,KAAKm3J,IAAK+U,GAAQD,EAMvC,OAJAlpK,KAAK9D,EAAIktK,EAAensK,KAAKm3J,IAAKqF,GAClCz5J,KAAKqH,EAAIpK,KAAKk3J,IAAKgV,GAAQD,EAC3BlpK,KAAKsH,EAAI8hK,EAAensK,KAAKk3J,IAAKsF,GAE3Bz5J,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBxC,GAEnB,OAAO+D,KAAKqpK,yBAA0BptK,EAAEitK,OAAQjtK,EAAEw9J,MAAOx9J,EAAEoL,EAE5D,GAAC,CAAA7E,IAAA,2BAAA/D,MAED,SAA0ByqK,EAAQzP,EAAOpyJ,GAMxC,OAJArH,KAAK9D,EAAIgtK,EAASjsK,KAAKm3J,IAAKqF,GAC5Bz5J,KAAKqH,EAAIA,EACTrH,KAAKsH,EAAI4hK,EAASjsK,KAAKk3J,IAAKsF,GAErBz5J,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuBqI,GAEtB,IAAMR,EAAIQ,EAAEk/H,SAMZ,OAJAhmI,KAAK9D,EAAIoK,EAAG,IACZtG,KAAKqH,EAAIf,EAAG,IACZtG,KAAKsH,EAAIhB,EAAG,IAELtG,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBqI,GAEnB,IAAMsyJ,EAAKp5J,KAAKspK,oBAAqBxiK,EAAG,GAAIlP,SACtCyhK,EAAKr5J,KAAKspK,oBAAqBxiK,EAAG,GAAIlP,SACtC2xK,EAAKvpK,KAAKspK,oBAAqBxiK,EAAG,GAAIlP,SAM5C,OAJAoI,KAAK9D,EAAIk9J,EACTp5J,KAAKqH,EAAIgyJ,EACTr5J,KAAKsH,EAAIiiK,EAEFvpK,IAER,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,SAAqBqI,EAAG8H,GAEvB,OAAO5O,KAAK25J,UAAW7yJ,EAAEk/H,SAAkB,EAARp3H,EAEpC,GAAC,CAAApM,IAAA,uBAAA/D,MAED,SAAsBqI,EAAG8H,GAExB,OAAO5O,KAAK25J,UAAW7yJ,EAAEk/H,SAAkB,EAARp3H,EAEpC,GAAC,CAAApM,IAAA,eAAA/D,MAED,SAAc6H,GAMb,OAJAtG,KAAK9D,EAAIoK,EAAE8tD,GACXp0D,KAAKqH,EAAIf,EAAE08J,GACXhjK,KAAKsH,EAAIhB,EAAE28J,GAEJjjK,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0I,GAEP,OAAWA,EAAEjL,IAAM8D,KAAK9D,GAASiL,EAAEE,IAAMrH,KAAKqH,GAASF,EAAEG,IAAMtH,KAAKsH,CAErE,GAAC,CAAA9E,IAAA,YAAA/D,MAED,SAAWsE,GAAoB,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAM1B,OAJAD,KAAK9D,EAAI6G,EAAOgnC,GAChB/pC,KAAKqH,EAAItE,EAAOgnC,EAAS,GACzB/pC,KAAKsH,EAAIvE,EAAOgnC,EAAS,GAElB/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAM7B,OAJA8C,EAAOgnC,GAAW/pC,KAAK9D,EACvB6G,EAAOgnC,EAAS,GAAM/pC,KAAKqH,EAC3BtE,EAAOgnC,EAAS,GAAM/pC,KAAKsH,EAEpBvE,CAER,GAAC,CAAAP,IAAA,sBAAA/D,MAED,SAAqBy3J,EAAWtnJ,EAAOm7B,GAYtC,YAVgB3/B,IAAX2/B,GAEJh2B,QAAQk/C,KAAM,uEAIfjzD,KAAK9D,EAAIg6J,EAAUC,KAAMvnJ,GACzB5O,KAAKqH,EAAI6uJ,EAAUE,KAAMxnJ,GACzB5O,KAAKsH,EAAI4uJ,EAAUyG,KAAM/tJ,GAElB5O,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAMC,OAJAuB,KAAK9D,EAAIe,KAAKuxC,SACdxuC,KAAKqH,EAAIpK,KAAKuxC,SACdxuC,KAAKsH,EAAIrK,KAAKuxC,SAEPxuC,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,WAIC,IAAM8I,EAA8B,GAAxBtK,KAAKuxC,SAAW,IACtBl3C,EAAI2F,KAAKuxC,SAAWvxC,KAAK00J,GAAK,EAC9BlrJ,EAAIxJ,KAAK04J,KAAM,EAAC14J,KAAAs1J,IAAGhrJ,EAAK,IAM9B,OAJAvH,KAAK9D,EAAIuK,EAAIxJ,KAAKk3J,IAAK78J,GACvB0I,KAAKqH,EAAIZ,EAAIxJ,KAAKm3J,IAAK98J,GACvB0I,KAAKsH,EAAIC,EAEFvH,IAER,GAAC,CAAAwC,IAEE1B,OAAOrE,SAAQgC,MAAAq+E,EAAAA,MAAlB,SAAAr+E,IAAA,OAAAq+E,EAAAA,MAAA,SAAA0sF,GAAA,cAAAA,EAAAvmK,KAAAumK,EAAAtmK,MAAA,OAEC,OAFDsmK,EAAAtmK,KAAA,EAEOlD,KAAK9D,EAAC,OACZ,OADYstK,EAAAtmK,KAAA,EACNlD,KAAKqH,EAAC,OACZ,OADYmiK,EAAAtmK,KAAA,EACNlD,KAAKsH,EAAC,wBAAAkiK,EAAA/6F,OAAA,GAAAhwE,EAAA,YAEZqoK,CAAA,CAtuBW,GA0uBbA,GAAQlqK,UAAU6sK,WAAY,EAE9B,IAAMb,GAA0B,IAAI9B,GAC9BG,GAA8B,IAAIlE,GAElC2G,GAAI,WAET,SAAAA,IAAgI,IAAnHx+H,EAAGjrC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAW39G,IAAYA,IAAYA,KAAYjsD,EAAG+C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,IAAW39G,KAAYA,KAAYA,KAAU1+C,EAAA,KAAAi/J,GAE5H1pK,KAAKkrC,IAAMA,EACXlrC,KAAK9C,IAAMA,CAEZ,CA0cC,OA1cAqM,EAAAmgK,EAAA,EAAAlnK,IAAA,MAAA/D,MAED,SAAKysC,EAAKhuC,GAKT,OAHA8C,KAAKkrC,IAAIwwH,KAAMxwH,GACflrC,KAAK9C,IAAIw+J,KAAMx+J,GAER8C,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcsE,GAUb,IARA,IAAI4mK,EAASxgH,IACTygH,EAASzgH,IACT0gH,EAAS1gH,IAET2gH,GAAS3gH,IACT4gH,GAAS5gH,IACT6gH,GAAS7gH,IAEHzsD,EAAI,EAAGmK,EAAI9D,EAAMnL,OAAQ8E,EAAImK,EAAGnK,GAAK,EAAI,CAElD,IAAMR,EAAI6G,EAAOrG,GACX2K,EAAItE,EAAOrG,EAAI,GACf4K,EAAIvE,EAAOrG,EAAI,GAEhBR,EAAIytK,IAAOA,EAAOztK,GAClBmL,EAAIuiK,IAAOA,EAAOviK,GAClBC,EAAIuiK,IAAOA,EAAOviK,GAElBpL,EAAI4tK,IAAOA,EAAO5tK,GAClBmL,EAAI0iK,IAAOA,EAAO1iK,GAClBC,EAAI0iK,IAAOA,EAAO1iK,EAExB,CAKA,OAHAtH,KAAKkrC,IAAIjc,IAAK06I,EAAMC,EAAMC,GAC1B7pK,KAAK9C,IAAI+xB,IAAK66I,EAAMC,EAAMC,GAEnBhqK,IAER,GAAC,CAAAwC,IAAA,yBAAA/D,MAED,SAAwBy3J,GAUvB,IARA,IAAIyT,EAASxgH,IACTygH,EAASzgH,IACT0gH,EAAS1gH,IAET2gH,GAAS3gH,IACT4gH,GAAS5gH,IACT6gH,GAAS7gH,IAEHzsD,EAAI,EAAGmK,EAAIqvJ,EAAUv4E,MAAOjhF,EAAImK,EAAGnK,IAAO,CAEnD,IAAMR,EAAIg6J,EAAUC,KAAMz5J,GACpB2K,EAAI6uJ,EAAUE,KAAM15J,GACpB4K,EAAI4uJ,EAAUyG,KAAMjgK,GAErBR,EAAIytK,IAAOA,EAAOztK,GAClBmL,EAAIuiK,IAAOA,EAAOviK,GAClBC,EAAIuiK,IAAOA,EAAOviK,GAElBpL,EAAI4tK,IAAOA,EAAO5tK,GAClBmL,EAAI0iK,IAAOA,EAAO1iK,GAClBC,EAAI0iK,IAAOA,EAAO1iK,EAExB,CAKA,OAHAtH,KAAKkrC,IAAIjc,IAAK06I,EAAMC,EAAMC,GAC1B7pK,KAAK9C,IAAI+xB,IAAK66I,EAAMC,EAAMC,GAEnBhqK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAewrK,GAEdjqK,KAAKkqK,YAEL,IAAM,IAAIxtK,EAAI,EAAGowD,EAAKm9G,EAAOryK,OAAQ8E,EAAIowD,EAAIpwD,IAE5CsD,KAAKmqK,cAAeF,EAAQvtK,IAI7B,OAAOsD,IAER,GAAC,CAAAwC,IAAA,uBAAA/D,MAED,SAAsB43J,EAAQ9wG,GAE7B,IAAM6kH,EAAWC,GAAU3O,KAAMn2G,GAAOgwG,eAAgB,IAKxD,OAHAv1J,KAAKkrC,IAAIwwH,KAAMrF,GAASyS,IAAKsB,GAC7BpqK,KAAK9C,IAAIw+J,KAAMrF,GAASjqI,IAAKg+I,GAEtBpqK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAe0D,GAA0B,IAAlBmoK,EAAOrqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAI7B,OAFAD,KAAKkqK,YAEElqK,KAAKuqK,eAAgBpoK,EAAQmoK,EAErC,GAAC,CAAA9nK,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+rK,GAKL,OAHAxqK,KAAKkrC,IAAIwwH,KAAM8O,EAAIt/H,KACnBlrC,KAAK9C,IAAIw+J,KAAM8O,EAAIttK,KAEZ8C,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,WAKC,OAHAuB,KAAKkrC,IAAIhvC,EAAI8D,KAAKkrC,IAAI7jC,EAAIrH,KAAKkrC,IAAI5jC,EAAM6hD,IACzCnpD,KAAK9C,IAAIhB,EAAI8D,KAAK9C,IAAImK,EAAIrH,KAAK9C,IAAIoK,GAAM6hD,IAElCnpD,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAIC,OAASuB,KAAK9C,IAAIhB,EAAI8D,KAAKkrC,IAAIhvC,GAAS8D,KAAK9C,IAAImK,EAAIrH,KAAKkrC,IAAI7jC,GAASrH,KAAK9C,IAAIoK,EAAItH,KAAKkrC,IAAI5jC,CAE9F,GAAC,CAAA9E,IAAA,YAAA/D,MAED,SAAW8C,GAEV,OAAOvB,KAAKyqK,UAAYlpK,EAAO0tB,IAAK,EAAG,EAAG,GAAM1tB,EAAO8zJ,WAAYr1J,KAAKkrC,IAAKlrC,KAAK9C,KAAMq4J,eAAgB,GAEzG,GAAC,CAAA/yJ,IAAA,UAAA/D,MAED,SAAS8C,GAER,OAAOvB,KAAKyqK,UAAYlpK,EAAO0tB,IAAK,EAAG,EAAG,GAAM1tB,EAAO+zJ,WAAYt1J,KAAK9C,IAAK8C,KAAKkrC,IAEnF,GAAC,CAAA1oC,IAAA,gBAAA/D,MAED,SAAeisK,GAKd,OAHA1qK,KAAKkrC,IAAIA,IAAKw/H,GACd1qK,KAAK9C,IAAIA,IAAKwtK,GAEP1qK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBksK,GAKf,OAHA3qK,KAAKkrC,IAAI49H,IAAK6B,GACd3qK,KAAK9C,IAAIkvB,IAAKu+I,GAEP3qK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB22J,GAKf,OAHAp1J,KAAKkrC,IAAI0/H,WAAaxV,GACtBp1J,KAAK9C,IAAI0tK,UAAWxV,GAEbp1J,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB0D,GAA0B,IAAlBmoK,EAAOrqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAK9BkC,EAAO0oK,mBAAmB,GAAO,GAEjC,IAAMC,EAAW3oK,EAAO2oK,SAExB,QAAkB1gK,IAAb0gK,EAEJ,GAAKR,QAAkClgK,GAAvB0gK,EAAS54F,iBAA4D9nE,IAAjC0gK,EAAS54F,WAAW3S,SAGvE,IADA,IAAMA,EAAWurG,EAAS54F,WAAW3S,SAC3B7iE,EAAI,EAAGmK,EAAI04D,EAASoe,MAAOjhF,EAAImK,EAAGnK,IAE3C2tK,GAAUU,oBAAqBxrG,EAAU7iE,GAAImrK,aAAc1lK,EAAO8lK,aAClEjoK,KAAKmqK,cAAeE,SAMS,OAAzBS,EAASE,aAEbF,EAASG,qBAIVC,GAAOxP,KAAMoP,EAASE,aACtBE,GAAOrD,aAAc1lK,EAAO8lK,aAE5BjoK,KAAKmrK,MAAOD,IAQd,IAFA,IAAMttJ,EAAWzb,EAAOyb,SAEdlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5CsD,KAAKuqK,eAAgB3sJ,EAAUlhB,GAAK4tK,GAIrC,OAAOtqK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeisK,GAEd,QAAOA,EAAMxuK,EAAI8D,KAAKkrC,IAAIhvC,GAAKwuK,EAAMxuK,EAAI8D,KAAK9C,IAAIhB,GACjDwuK,EAAMrjK,EAAIrH,KAAKkrC,IAAI7jC,GAAKqjK,EAAMrjK,EAAIrH,KAAK9C,IAAImK,GAC3CqjK,EAAMpjK,EAAItH,KAAKkrC,IAAI5jC,GAAKojK,EAAMpjK,EAAItH,KAAK9C,IAAIoK,EAE7C,GAAC,CAAA9E,IAAA,cAAA/D,MAED,SAAa+rK,GAEZ,OAAOxqK,KAAKkrC,IAAIhvC,GAAKsuK,EAAIt/H,IAAIhvC,GAAKsuK,EAAIttK,IAAIhB,GAAK8D,KAAK9C,IAAIhB,GACvD8D,KAAKkrC,IAAI7jC,GAAKmjK,EAAIt/H,IAAI7jC,GAAKmjK,EAAIttK,IAAImK,GAAKrH,KAAK9C,IAAImK,GACjDrH,KAAKkrC,IAAI5jC,GAAKkjK,EAAIt/H,IAAI5jC,GAAKkjK,EAAIttK,IAAIoK,GAAKtH,KAAK9C,IAAIoK,CAEnD,GAAC,CAAA9E,IAAA,eAAA/D,MAED,SAAcisK,EAAOnpK,GAKpB,OAAOA,EAAO0tB,KACXy7I,EAAMxuK,EAAI8D,KAAKkrC,IAAIhvC,IAAQ8D,KAAK9C,IAAIhB,EAAI8D,KAAKkrC,IAAIhvC,IACjDwuK,EAAMrjK,EAAIrH,KAAKkrC,IAAI7jC,IAAQrH,KAAK9C,IAAImK,EAAIrH,KAAKkrC,IAAI7jC,IACjDqjK,EAAMpjK,EAAItH,KAAKkrC,IAAI5jC,IAAQtH,KAAK9C,IAAIoK,EAAItH,KAAKkrC,IAAI5jC,GAGrD,GAAC,CAAA9E,IAAA,gBAAA/D,MAED,SAAe+rK,GAGd,QAAOA,EAAIttK,IAAIhB,EAAI8D,KAAKkrC,IAAIhvC,GAAKsuK,EAAIt/H,IAAIhvC,EAAI8D,KAAK9C,IAAIhB,GACrDsuK,EAAIttK,IAAImK,EAAIrH,KAAKkrC,IAAI7jC,GAAKmjK,EAAIt/H,IAAI7jC,EAAIrH,KAAK9C,IAAImK,GAC/CmjK,EAAIttK,IAAIoK,EAAItH,KAAKkrC,IAAI5jC,GAAKkjK,EAAIt/H,IAAI5jC,EAAItH,KAAK9C,IAAIoK,EAEjD,GAAC,CAAA9E,IAAA,mBAAA/D,MAED,SAAkB2sK,GAMjB,OAHAprK,KAAKqrK,WAAYD,EAAO/U,OAAQgU,IAGzBA,GAAUvU,kBAAmBsV,EAAO/U,SAAc+U,EAAOlC,OAASkC,EAAOlC,MAEjF,GAAC,CAAA1mK,IAAA,kBAAA/D,MAED,SAAiB6sK,GAKhB,IAAIpgI,EAAKhuC,EAsCT,OApCKouK,EAAMvC,OAAO7sK,EAAI,GAErBgvC,EAAMogI,EAAMvC,OAAO7sK,EAAI8D,KAAKkrC,IAAIhvC,EAChCgB,EAAMouK,EAAMvC,OAAO7sK,EAAI8D,KAAK9C,IAAIhB,IAIhCgvC,EAAMogI,EAAMvC,OAAO7sK,EAAI8D,KAAK9C,IAAIhB,EAChCgB,EAAMouK,EAAMvC,OAAO7sK,EAAI8D,KAAKkrC,IAAIhvC,GAI5BovK,EAAMvC,OAAO1hK,EAAI,GAErB6jC,GAAOogI,EAAMvC,OAAO1hK,EAAIrH,KAAKkrC,IAAI7jC,EACjCnK,GAAOouK,EAAMvC,OAAO1hK,EAAIrH,KAAK9C,IAAImK,IAIjC6jC,GAAOogI,EAAMvC,OAAO1hK,EAAIrH,KAAK9C,IAAImK,EACjCnK,GAAOouK,EAAMvC,OAAO1hK,EAAIrH,KAAKkrC,IAAI7jC,GAI7BikK,EAAMvC,OAAOzhK,EAAI,GAErB4jC,GAAOogI,EAAMvC,OAAOzhK,EAAItH,KAAKkrC,IAAI5jC,EACjCpK,GAAOouK,EAAMvC,OAAOzhK,EAAItH,KAAK9C,IAAIoK,IAIjC4jC,GAAOogI,EAAMvC,OAAOzhK,EAAItH,KAAK9C,IAAIoK,EACjCpK,GAAOouK,EAAMvC,OAAOzhK,EAAItH,KAAKkrC,IAAI5jC,GAIzB4jC,IAASogI,EAAMC,UAAYruK,IAASouK,EAAMC,QAEpD,GAAC,CAAA/oK,IAAA,qBAAA/D,MAED,SAAoB+sK,GAEnB,GAAKxrK,KAAKyqK,UAET,OAAO,EAKRzqK,KAAKyrK,UAAWC,IAChBC,GAASrW,WAAYt1J,KAAK9C,IAAKwuK,IAG/BE,GAAMtW,WAAYkW,EAASxvK,EAAG0vK,IAC9BG,GAAMvW,WAAYkW,EAASjlK,EAAGmlK,IAC9BI,GAAMxW,WAAYkW,EAASvvK,EAAGyvK,IAG9BK,GAAIzW,WAAYuW,GAAOD,IACvBI,GAAI1W,WAAYwW,GAAOD,IACvBI,GAAI3W,WAAYsW,GAAOE,IAKvB,IAAII,EAAO,CACV,GAAKH,GAAIzkK,EAAGykK,GAAI1kK,EAAG,GAAK2kK,GAAI1kK,EAAG0kK,GAAI3kK,EAAG,GAAK4kK,GAAI3kK,EAAG2kK,GAAI5kK,EACtD0kK,GAAIzkK,EAAG,GAAKykK,GAAI7vK,EAAG8vK,GAAI1kK,EAAG,GAAK0kK,GAAI9vK,EAAG+vK,GAAI3kK,EAAG,GAAK2kK,GAAI/vK,GACpD6vK,GAAI1kK,EAAG0kK,GAAI7vK,EAAG,GAAK8vK,GAAI3kK,EAAG2kK,GAAI9vK,EAAG,GAAK+vK,GAAI5kK,EAAG4kK,GAAI/vK,EAAG,GAEvD,QAAOiwK,GAAYD,EAAMN,GAAOC,GAAOC,GAAOH,QAQvCQ,GADPD,EAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACRN,GAAOC,GAAOC,GAAOH,MAQ9CS,GAAgBlE,aAAc6D,GAAKC,IAG5BG,GAFPD,EAAO,CAAEE,GAAgBlwK,EAAGkwK,GAAgB/kK,EAAG+kK,GAAgB9kK,GAEtCskK,GAAOC,GAAOC,GAAOH,KAE/C,GAAC,CAAAnpK,IAAA,aAAA/D,MAED,SAAYisK,EAAOnpK,GAElB,OAAOA,EAAOm6J,KAAMgP,GAAQxY,MAAOlyJ,KAAKkrC,IAAKlrC,KAAK9C,IAEnD,GAAC,CAAAsF,IAAA,kBAAA/D,MAED,SAAiBisK,GAIhB,OAFqBL,GAAU3O,KAAMgP,GAAQxY,MAAOlyJ,KAAKkrC,IAAKlrC,KAAK9C,KAE/C4rK,IAAK4B,GAAQ9yK,QAElC,GAAC,CAAA4K,IAAA,oBAAA/D,MAED,SAAmB8C,GAMlB,OAJAvB,KAAKyrK,UAAWlqK,EAAO80J,QAEvB90J,EAAO2nK,OAA8C,GAArClpK,KAAKqsK,QAAShC,IAAYzyK,SAEnC2J,CAER,GAAC,CAAAiB,IAAA,YAAA/D,MAED,SAAW+rK,GAQV,OANAxqK,KAAKkrC,IAAIhuC,IAAKstK,EAAIt/H,KAClBlrC,KAAK9C,IAAIguC,IAAKs/H,EAAIttK,KAGb8C,KAAKyqK,WAAYzqK,KAAKkqK,YAEpBlqK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO+rK,GAKN,OAHAxqK,KAAKkrC,IAAIA,IAAKs/H,EAAIt/H,KAClBlrC,KAAK9C,IAAIA,IAAKstK,EAAIttK,KAEX8C,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAci7J,GAGb,OAAK15J,KAAKyqK,YAGV6B,GAAS,GAAIr9I,IAAKjvB,KAAKkrC,IAAIhvC,EAAG8D,KAAKkrC,IAAI7jC,EAAGrH,KAAKkrC,IAAI5jC,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAKkrC,IAAIhvC,EAAG8D,KAAKkrC,IAAI7jC,EAAGrH,KAAK9C,IAAIoK,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAKkrC,IAAIhvC,EAAG8D,KAAK9C,IAAImK,EAAGrH,KAAKkrC,IAAI5jC,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAKkrC,IAAIhvC,EAAG8D,KAAK9C,IAAImK,EAAGrH,KAAK9C,IAAIoK,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAK9C,IAAIhB,EAAG8D,KAAKkrC,IAAI7jC,EAAGrH,KAAKkrC,IAAI5jC,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAK9C,IAAIhB,EAAG8D,KAAKkrC,IAAI7jC,EAAGrH,KAAK9C,IAAIoK,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAK9C,IAAIhB,EAAG8D,KAAK9C,IAAImK,EAAGrH,KAAKkrC,IAAI5jC,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAK9C,IAAIhB,EAAG8D,KAAK9C,IAAImK,EAAGrH,KAAK9C,IAAIoK,GAAIugK,aAAcnO,GAErE15J,KAAKusK,cAAeD,KAZStsK,IAgB9B,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsrC,GAKV,OAHA/pC,KAAKkrC,IAAI9e,IAAK2d,GACd/pC,KAAK9C,IAAIkvB,IAAK2d,GAEP/pC,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ+rK,GAEP,OAAOA,EAAIt/H,IAAIshI,OAAQxsK,KAAKkrC,MAASs/H,EAAIttK,IAAIsvK,OAAQxsK,KAAK9C,IAE3D,KAACwsK,CAAA,CAjdQ,GAqdVA,GAAK9sK,UAAU6vK,QAAS,EAExB,IAAMH,GAAU,CACD,IAAIxF,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,IAGbuD,GAA0B,IAAIvD,GAE9BoE,GAAuB,IAAIxB,GAI3BkC,GAAsB,IAAI9E,GAC1B+E,GAAsB,IAAI/E,GAC1BgF,GAAsB,IAAIhF,GAI1BiF,GAAoB,IAAIjF,GACxBkF,GAAoB,IAAIlF,GACxBmF,GAAoB,IAAInF,GAExB4E,GAAwB,IAAI5E,GAC5B6E,GAAyB,IAAI7E,GAC7BsF,GAAgC,IAAItF,GACpC4F,GAA0B,IAAI5F,GAEpC,SAASqF,GAAYD,EAAMS,EAAI3W,EAAIC,EAAI2W,GAEtC,IAAM,IAAIlwK,EAAI,EAAGmT,EAAIq8J,EAAKt0K,OAAS,EAAG8E,GAAKmT,EAAGnT,GAAK,EAAI,CAEtDgwK,GAAU/S,UAAWuS,EAAMxvK,GAE3B,IAAMwK,EAAI0lK,EAAQ1wK,EAAIe,KAAK4f,IAAK6vJ,GAAUxwK,GAAM0wK,EAAQvlK,EAAIpK,KAAK4f,IAAK6vJ,GAAUrlK,GAAMulK,EAAQtlK,EAAIrK,KAAK4f,IAAK6vJ,GAAUplK,GAEhHulK,EAAKF,EAAG1I,IAAKyI,IACbp1C,EAAK0+B,EAAGiO,IAAKyI,IACbn1C,EAAK0+B,EAAGgO,IAAKyI,IAEnB,GAAKzvK,KAAKC,KAAOD,KAAKC,IAAK2vK,EAAIv1C,EAAIC,GAAMt6H,KAAKiuC,IAAK2hI,EAAIv1C,EAAIC,IAASrwH,EAInE,OAAO,CAIT,CAEA,OAAO,CAER,CAEA,IAAM4lK,GAAuB,IAAIpD,GAC3BqD,GAAsB,IAAIjG,GAC1BkG,GAAiC,IAAIlG,GACrCmG,GAAyB,IAAInG,GAE7BoG,GAAM,WAEX,SAAAA,IAAoD,IAAvC7W,EAAMp2J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAWoC,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,IAAK,EAACwK,EAAA,KAAAyiK,GAEhDltK,KAAKq2J,OAASA,EACdr2J,KAAKkpK,OAASA,CAEf,CAgNC,OAhNA3/J,EAAA2jK,EAAA,EAAA1qK,IAAA,MAAA/D,MAED,SAAK43J,EAAQ6S,GAKZ,OAHAlpK,KAAKq2J,OAAOqF,KAAMrF,GAClBr2J,KAAKkpK,OAASA,EAEPlpK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAewrK,EAAQkD,GAEtB,IAAM9W,EAASr2J,KAAKq2J,YAEIjsJ,IAAnB+iK,EAEJ9W,EAAOqF,KAAMyR,GAIbL,GAAOP,cAAetC,GAASwB,UAAWpV,GAM3C,IAFA,IAAI+W,EAAc,EAER1wK,EAAI,EAAGowD,EAAKm9G,EAAOryK,OAAQ8E,EAAIowD,EAAIpwD,IAE5C0wK,EAAcnwK,KAAKC,IAAKkwK,EAAa/W,EAAOP,kBAAmBmU,EAAQvtK,KAMxE,OAFAsD,KAAKkpK,OAASjsK,KAAK04J,KAAMyX,GAElBptK,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM2sK,GAKL,OAHAprK,KAAKq2J,OAAOqF,KAAM0P,EAAO/U,QACzBr2J,KAAKkpK,OAASkC,EAAOlC,OAEdlpK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAEC,OAASuB,KAAKkpK,OAAS,CAExB,GAAC,CAAA1mK,IAAA,YAAA/D,MAED,WAKC,OAHAuB,KAAKq2J,OAAOpnI,IAAK,EAAG,EAAG,GACvBjvB,KAAKkpK,QAAW,EAETlpK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeisK,GAEd,OAASA,EAAM5U,kBAAmB91J,KAAKq2J,SAAcr2J,KAAKkpK,OAASlpK,KAAKkpK,MAEzE,GAAC,CAAA1mK,IAAA,kBAAA/D,MAED,SAAiBisK,GAEhB,OAASA,EAAM2C,WAAYrtK,KAAKq2J,QAAWr2J,KAAKkpK,MAEjD,GAAC,CAAA1mK,IAAA,mBAAA/D,MAED,SAAkB2sK,GAEjB,IAAMkC,EAAYttK,KAAKkpK,OAASkC,EAAOlC,OAEvC,OAAOkC,EAAO/U,OAAOP,kBAAmB91J,KAAKq2J,SAAciX,EAAYA,CAExE,GAAC,CAAA9qK,IAAA,gBAAA/D,MAED,SAAe+rK,GAEd,OAAOA,EAAI+C,iBAAkBvtK,KAE9B,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiB6sK,GAEhB,OAAOruK,KAAK4f,IAAKyuJ,EAAMkC,gBAAiBxtK,KAAKq2J,UAAcr2J,KAAKkpK,MAEjE,GAAC,CAAA1mK,IAAA,aAAA/D,MAED,SAAYisK,EAAOnpK,GAElB,IAAMksK,EAAgBztK,KAAKq2J,OAAOP,kBAAmB4U,GAWrD,OATAnpK,EAAOm6J,KAAMgP,GAER+C,EAAkBztK,KAAKkpK,OAASlpK,KAAKkpK,SAEzC3nK,EAAOunK,IAAK9oK,KAAKq2J,QAASx1C,YAC1Bt/G,EAAOg0J,eAAgBv1J,KAAKkpK,QAAS98I,IAAKpsB,KAAKq2J,SAIzC90J,CAER,GAAC,CAAAiB,IAAA,iBAAA/D,MAED,SAAgB8C,GAEf,OAAKvB,KAAKyqK,WAGTlpK,EAAO2oK,YACA3oK,IAIRA,EAAO0tB,IAAKjvB,KAAKq2J,OAAQr2J,KAAKq2J,QAC9B90J,EAAOmsK,eAAgB1tK,KAAKkpK,QAErB3nK,EAER,GAAC,CAAAiB,IAAA,eAAA/D,MAED,SAAci7J,GAKb,OAHA15J,KAAKq2J,OAAOwR,aAAcnO,GAC1B15J,KAAKkpK,OAASlpK,KAAKkpK,OAASxP,EAAOiU,oBAE5B3tK,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsrC,GAIV,OAFA/pC,KAAKq2J,OAAOjqI,IAAK2d,GAEV/pC,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeisK,GAIduC,GAAS3X,WAAYoV,EAAO1qK,KAAKq2J,QAEjC,IAAMqS,EAAWuE,GAASvE,WAE1B,GAAKA,EAAa1oK,KAAKkpK,OAASlpK,KAAKkpK,OAAW,CAE/C,IAAMtxK,EAASqF,KAAK04J,KAAM+S,GACpBkF,EAA+C,IAAzBh2K,EAASoI,KAAKkpK,QAM1ClpK,KAAKq2J,OAAOjqI,IAAK6gJ,GAAS1X,eAAgBqY,EAAoBh2K,IAC9DoI,KAAKkpK,QAAU0E,CAEhB,CAEA,OAAO5tK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO2sK,GAsBN,OAd8C,IAAxCprK,KAAKq2J,OAAOmW,OAAQpB,EAAO/U,QAE/B2W,GAAiB/9I,IAAK,EAAG,EAAG,GAAIsmI,eAAgB6V,EAAOlC,QAKxD8D,GAAiB1X,WAAY8V,EAAO/U,OAAQr2J,KAAKq2J,QAASx1C,YAAY00C,eAAgB6V,EAAOlC,QAI9FlpK,KAAKmqK,cAAe4C,GAAMrR,KAAM0P,EAAO/U,QAASjqI,IAAK4gJ,KACrDhtK,KAAKmqK,cAAe4C,GAAMrR,KAAM0P,EAAO/U,QAASyS,IAAKkE,KAE9ChtK,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ2sK,GAEP,OAAOA,EAAO/U,OAAOmW,OAAQxsK,KAAKq2J,SAAc+U,EAAOlC,SAAWlpK,KAAKkpK,MAExE,GAAC,CAAA1mK,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACktK,CAAA,CAvNU,GA2NNW,GAA0B,IAAI/G,GAC9BgH,GAA2B,IAAIhH,GAC/BiH,GAAwB,IAAIjH,GAC5BkH,GAAsB,IAAIlH,GAE1BmH,GAAuB,IAAInH,GAC3BoH,GAAuB,IAAIpH,GAC3BqH,GAA0B,IAAIrH,GAE9BsH,GAAG,WAER,SAAAA,IAA4E,IAA/Dh2E,EAAMn4F,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAWuH,EAASpuK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAS,EAAG,GAAK,GAAGr8J,EAAA,KAAA2jK,GAExEpuK,KAAKo4F,OAASA,EACdp4F,KAAKquK,UAAYA,CAElB,CAydC,OAzdA9kK,EAAA6kK,EAAA,EAAA5rK,IAAA,MAAA/D,MAED,SAAK25F,EAAQi2E,GAKZ,OAHAruK,KAAKo4F,OAAOsjE,KAAMtjE,GAClBp4F,KAAKquK,UAAU3S,KAAM2S,GAEdruK,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM6vK,GAKL,OAHAtuK,KAAKo4F,OAAOsjE,KAAM4S,EAAIl2E,QACtBp4F,KAAKquK,UAAU3S,KAAM4S,EAAID,WAElBruK,IAER,GAAC,CAAAwC,IAAA,KAAA/D,MAED,SAAInH,EAAGiK,GAEN,OAAOA,EAAOm6J,KAAM17J,KAAKquK,WAAY9Y,eAAgBj+J,GAAI80B,IAAKpsB,KAAKo4F,OAEpE,GAAC,CAAA51F,IAAA,SAAA/D,MAED,SAAQ0I,GAIP,OAFAnH,KAAKquK,UAAU3S,KAAMv0J,GAAI2hK,IAAK9oK,KAAKo4F,QAASyoB,YAErC7gH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQnH,GAIP,OAFA0I,KAAKo4F,OAAOsjE,KAAM17J,KAAKymE,GAAInvE,EAAGu2K,KAEvB7tK,IAER,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,SAAqBisK,EAAOnpK,GAE3BA,EAAO+zJ,WAAYoV,EAAO1qK,KAAKo4F,QAE/B,IAAMm2E,EAAoBhtK,EAAO0iK,IAAKjkK,KAAKquK,WAE3C,OAAKE,EAAoB,EAEjBhtK,EAAOm6J,KAAM17J,KAAKo4F,QAInB72F,EAAOm6J,KAAM17J,KAAKquK,WAAY9Y,eAAgBgZ,GAAoBniJ,IAAKpsB,KAAKo4F,OAEpF,GAAC,CAAA51F,IAAA,kBAAA/D,MAED,SAAiBisK,GAEhB,OAAOztK,KAAK04J,KAAM31J,KAAKwuK,kBAAmB9D,GAE3C,GAAC,CAAAloK,IAAA,oBAAA/D,MAED,SAAmBisK,GAElB,IAAM6D,EAAoBV,GAAUvY,WAAYoV,EAAO1qK,KAAKo4F,QAAS6rE,IAAKjkK,KAAKquK,WAI/E,OAAKE,EAAoB,EAEjBvuK,KAAKo4F,OAAO09D,kBAAmB4U,IAIvCmD,GAAUnS,KAAM17J,KAAKquK,WAAY9Y,eAAgBgZ,GAAoBniJ,IAAKpsB,KAAKo4F,QAExEy1E,GAAU/X,kBAAmB4U,GAErC,GAAC,CAAAloK,IAAA,sBAAA/D,MAED,SAAqBkuK,EAAI3W,EAAIyY,EAAoBC,GAShDZ,GAAWpS,KAAMiR,GAAKvgJ,IAAK4pI,GAAKT,eAAgB,IAChDwY,GAAQrS,KAAM1F,GAAK8S,IAAK6D,GAAK9rD,YAC7BmtD,GAAMtS,KAAM17J,KAAKo4F,QAAS0wE,IAAKgF,IAE/B,IAMIa,EAAIhL,EAAIiL,EAASC,EANfC,EAAkC,GAAtBnC,EAAGU,WAAYrX,GAC3B+Y,GAAQ/uK,KAAKquK,UAAUpK,IAAK8J,IAC5BiB,EAAKhB,GAAM/J,IAAKjkK,KAAKquK,WACrBxb,GAAOmb,GAAM/J,IAAK8J,IAClB9xK,EAAI+xK,GAAMtF,WACV9P,EAAM37J,KAAK4f,IAAK,EAAIkyJ,EAAMA,GAGhC,GAAKnW,EAAM,EAQV,GAHA+K,EAAKoL,EAAMC,EAAKnc,EAChBgc,EAASC,EAAYlW,GAFrB+V,EAAKI,EAAMlc,EAAKmc,IAIL,EAEV,GAAKrL,IAAQkL,EAEZ,GAAKlL,GAAMkL,EAAS,CAKnB,IAAMI,EAAS,EAAIrW,EAGnBgW,GAFAD,GAAMM,IAEWN,EAAKI,GADtBpL,GAAMsL,GAC2B,EAAID,GAAOrL,GAAOoL,EAAMJ,EAAKhL,EAAK,EAAI9Q,GAAO52J,CAE/E,MAIC0nK,EAAKmL,EAELF,IADAD,EAAK1xK,KAAKC,IAAK,IAAO6xK,EAAMpL,EAAKqL,KAChBL,EAAKhL,GAAOA,EAAK,EAAI9Q,GAAO52J,OAQ9C0nK,GAAOmL,EAEPF,IADAD,EAAK1xK,KAAKC,IAAK,IAAO6xK,EAAMpL,EAAKqL,KAChBL,EAAKhL,GAAOA,EAAK,EAAI9Q,GAAO52J,OAMzC0nK,IAAQkL,EAMZD,IAFAD,EAAK1xK,KAAKC,IAAK,KAAS6xK,EAAMD,EAAYE,KAEzBL,GADjBhL,EAAOgL,EAAK,GAAQG,EAAY7xK,KAAKiuC,IAAKjuC,KAAKC,KAAO4xK,GAAajc,GAAMic,KAC5CnL,EAAK,EAAI9Q,GAAO52J,EAElC0nK,GAAMkL,GAIjBF,EAAK,EAELC,GADAjL,EAAK1mK,KAAKiuC,IAAKjuC,KAAKC,KAAO4xK,GAAajc,GAAMic,KAC7BnL,EAAK,EAAI9Q,GAAO52J,GAQjC2yK,IAFAD,EAAK1xK,KAAKC,IAAK,IAAO6xK,EAAMD,EAAYE,KAEvBL,GADjBhL,EAAOgL,EAAK,EAAMG,EAAY7xK,KAAKiuC,IAAKjuC,KAAKC,KAAO4xK,GAAajc,GAAMic,KAC1CnL,EAAK,EAAI9Q,GAAO52J,OAU/C0nK,EAAOoL,EAAM,GAAQD,EAAYA,EAEjCF,IADAD,EAAK1xK,KAAKC,IAAK,IAAO6xK,EAAMpL,EAAKqL,KAChBL,EAAKhL,GAAOA,EAAK,EAAI9Q,GAAO52J,EAgB9C,OAZKwyK,GAEJA,EAAmB/S,KAAM17J,KAAKquK,WAAY9Y,eAAgBoZ,GAAKviJ,IAAKpsB,KAAKo4F,QAIrEs2E,GAEJA,EAAuBhT,KAAMqS,IAAUxY,eAAgBoO,GAAKv3I,IAAK0hJ,IAI3Dc,CAER,GAAC,CAAApsK,IAAA,kBAAA/D,MAED,SAAiB2sK,EAAQ7pK,GAExBssK,GAAUvY,WAAY8V,EAAO/U,OAAQr2J,KAAKo4F,QAC1C,IAAM82E,EAAMrB,GAAU5J,IAAKjkK,KAAKquK,WAC1Brc,EAAK6b,GAAU5J,IAAK4J,IAAcqB,EAAMA,EACxCC,EAAU/D,EAAOlC,OAASkC,EAAOlC,OAEvC,GAAKlX,EAAKmd,EAAU,OAAO,KAE3B,IAAMC,EAAMnyK,KAAK04J,KAAMwZ,EAAUnd,GAG3Bqd,EAAKH,EAAME,EAGXE,EAAKJ,EAAME,EAGjB,OAAKC,EAAK,GAAKC,EAAK,EAAW,KAK1BD,EAAK,EAAWrvK,KAAKymE,GAAI6oG,EAAI/tK,GAG3BvB,KAAKymE,GAAI4oG,EAAI9tK,EAErB,GAAC,CAAAiB,IAAA,mBAAA/D,MAED,SAAkB2sK,GAEjB,OAAOprK,KAAKwuK,kBAAmBpD,EAAO/U,SAAc+U,EAAOlC,OAASkC,EAAOlC,MAE5E,GAAC,CAAA1mK,IAAA,kBAAA/D,MAED,SAAiB6sK,GAEhB,IAAM7C,EAAc6C,EAAMvC,OAAO9E,IAAKjkK,KAAKquK,WAE3C,GAAqB,IAAhB5F,EAGJ,OAA8C,IAAzC6C,EAAMkC,gBAAiBxtK,KAAKo4F,QAEzB,EAMD,KAIR,IAAM9gG,IAAQ0I,KAAKo4F,OAAO6rE,IAAKqH,EAAMvC,QAAWuC,EAAMC,UAAa9C,EAInE,OAAOnxK,GAAK,EAAIA,EAAI,IAErB,GAAC,CAAAkL,IAAA,iBAAA/D,MAED,SAAgB6sK,EAAO/pK,GAEtB,IAAMjK,EAAI0I,KAAKuvK,gBAAiBjE,GAEhC,OAAW,OAANh0K,EAEG,KAID0I,KAAKymE,GAAInvE,EAAGiK,EAEpB,GAAC,CAAAiB,IAAA,kBAAA/D,MAED,SAAiB6sK,GAIhB,IAAMkE,EAAclE,EAAMkC,gBAAiBxtK,KAAKo4F,QAEhD,OAAqB,IAAhBo3E,GAMelE,EAAMvC,OAAO9E,IAAKjkK,KAAKquK,WAExBmB,EAAc,CAUlC,GAAC,CAAAhtK,IAAA,eAAA/D,MAED,SAAc+rK,EAAKjpK,GAElB,IAAIkuK,EAAMC,EAAMC,EAAOC,EAAOC,EAAOC,EAE/BC,EAAU,EAAI/vK,KAAKquK,UAAUnyK,EAClC8zK,EAAU,EAAIhwK,KAAKquK,UAAUhnK,EAC7B4oK,EAAU,EAAIjwK,KAAKquK,UAAU/mK,EAExB8wF,EAASp4F,KAAKo4F,OA0BpB,OAxBK23E,GAAW,GAEfN,GAASjF,EAAIt/H,IAAIhvC,EAAIk8F,EAAOl8F,GAAM6zK,EAClCL,GAASlF,EAAIttK,IAAIhB,EAAIk8F,EAAOl8F,GAAM6zK,IAIlCN,GAASjF,EAAIttK,IAAIhB,EAAIk8F,EAAOl8F,GAAM6zK,EAClCL,GAASlF,EAAIt/H,IAAIhvC,EAAIk8F,EAAOl8F,GAAM6zK,GAI9BC,GAAW,GAEfL,GAAUnF,EAAIt/H,IAAI7jC,EAAI+wF,EAAO/wF,GAAM2oK,EACnCJ,GAAUpF,EAAIttK,IAAImK,EAAI+wF,EAAO/wF,GAAM2oK,IAInCL,GAAUnF,EAAIttK,IAAImK,EAAI+wF,EAAO/wF,GAAM2oK,EACnCJ,GAAUpF,EAAIt/H,IAAI7jC,EAAI+wF,EAAO/wF,GAAM2oK,GAI7BP,EAAOG,GAAaD,EAAQD,EAAgB,OAK9CC,EAAQF,GAAQA,IAASA,KAAOA,EAAOE,IAEvCC,EAAQF,GAAQA,IAASA,KAAOA,EAAOE,GAEvCK,GAAW,GAEfJ,GAAUrF,EAAIt/H,IAAI5jC,EAAI8wF,EAAO9wF,GAAM2oK,EACnCH,GAAUtF,EAAIttK,IAAIoK,EAAI8wF,EAAO9wF,GAAM2oK,IAInCJ,GAAUrF,EAAIttK,IAAIoK,EAAI8wF,EAAO9wF,GAAM2oK,EACnCH,GAAUtF,EAAIt/H,IAAI5jC,EAAI8wF,EAAO9wF,GAAM2oK,GAI7BR,EAAOK,GAAaD,EAAQH,EAAgB,OAE9CG,EAAQJ,GAAQA,IAASA,KAAOA,EAAOI,IAEvCC,EAAQJ,GAAQA,IAASA,KAAOA,EAAOI,GAIvCJ,EAAO,EAAW,KAEhB1vK,KAAKymE,GAAIgpG,GAAQ,EAAIA,EAAOC,EAAMnuK,IAE1C,GAAC,CAAAiB,IAAA,gBAAA/D,MAED,SAAe+rK,GAEd,OAA+C,OAAxCxqK,KAAKkwK,aAAc1F,EAAKqD,GAEhC,GAAC,CAAArrK,IAAA,oBAAA/D,MAED,SAAmBzC,EAAGuK,EAAGtK,EAAGk0K,EAAiB5uK,GAM5C0sK,GAAO3Y,WAAY/uJ,EAAGvK,GACtBkyK,GAAO5Y,WAAYr5J,EAAGD,GACtBmyK,GAAUjG,aAAc+F,GAAQC,IAOhC,IACIkC,EADAC,EAAMrwK,KAAKquK,UAAUpK,IAAKkK,IAG9B,GAAKkC,EAAM,EAAI,CAEd,GAAKF,EAAkB,OAAO,KAC9BC,EAAO,CAER,KAAO,MAAKC,EAAM,GAOjB,OAAO,KALPD,GAAS,EACTC,GAAQA,CAMT,CAEArC,GAAM1Y,WAAYt1J,KAAKo4F,OAAQp8F,GAC/B,IAAMs0K,EAASF,EAAOpwK,KAAKquK,UAAUpK,IAAKiK,GAAOhG,aAAc8F,GAAOE,KAGtE,GAAKoC,EAAS,EAEb,OAAO,KAIR,IAAMC,EAASH,EAAOpwK,KAAKquK,UAAUpK,IAAKgK,GAAOuC,MAAOxC,KAGxD,GAAKuC,EAAS,EAEb,OAAO,KAKR,GAAKD,EAASC,EAASF,EAEtB,OAAO,KAKR,IAAMI,GAAQL,EAAOpC,GAAM/J,IAAKkK,IAGhC,OAAKsC,EAAM,EAEH,KAKDzwK,KAAKymE,GAAIgqG,EAAMJ,EAAK9uK,EAE5B,GAAC,CAAAiB,IAAA,eAAA/D,MAED,SAAcs6J,GAKb,OAHA/4J,KAAKo4F,OAAOyvE,aAAc9O,GAC1B/4J,KAAKquK,UAAUqC,mBAAoB3X,GAE5B/4J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ6vK,GAEP,OAAOA,EAAIl2E,OAAOo0E,OAAQxsK,KAAKo4F,SAAYk2E,EAAID,UAAU7B,OAAQxsK,KAAKquK,UAEvE,GAAC,CAAA7rK,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACouK,CAAA,CAheO,GAoeHuC,GAAO,WAEZ,SAAAA,IAAclmK,EAAA,KAAAkmK,GAEb3wK,KAAKgmI,SAAW,CAEf,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GAIL/lI,UAAUrI,OAAS,GAEvBmc,QAAQwN,MAAO,gFAIjB,CAi1BC,OAj1BAhY,EAAAonK,EAAA,EAAAnuK,IAAA,MAAA/D,MAED,SAAKg4J,EAAKC,EAAKC,EAAKia,EAAKha,EAAKC,EAAKC,EAAK+Z,EAAK9Z,EAAKC,EAAKC,EAAK6Z,EAAKC,EAAKC,EAAKC,EAAKC,GAE/E,IAAMroI,EAAK7oC,KAAKgmI,SAOhB,OALAn9F,EAAI,GAAM4tH,EAAK5tH,EAAI,GAAM6tH,EAAK7tH,EAAI,GAAM8tH,EAAK9tH,EAAI,IAAO+nI,EACxD/nI,EAAI,GAAM+tH,EAAK/tH,EAAI,GAAMguH,EAAKhuH,EAAI,GAAMiuH,EAAKjuH,EAAI,IAAOgoI,EACxDhoI,EAAI,GAAMkuH,EAAKluH,EAAI,GAAMmuH,EAAKnuH,EAAI,IAAOouH,EAAKpuH,EAAI,IAAOioI,EACzDjoI,EAAI,GAAMkoI,EAAKloI,EAAI,GAAMmoI,EAAKnoI,EAAI,IAAOooI,EAAKpoI,EAAI,IAAOqoI,EAElDlxK,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,WAWC,OATAuB,KAAKivB,IAEJ,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GAIHjvB,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIkyK,GAAUhX,UAAW35J,KAAKgmI,SAEtC,GAAC,CAAAxjI,IAAA,OAAA/D,MAED,SAAMqI,GAEL,IAAM+hC,EAAK7oC,KAAKgmI,SACV59F,EAAKthC,EAAEk/H,SAOb,OALAn9F,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GACvES,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GACvES,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,IAAOT,EAAI,IAAMS,EAAI,IAAOT,EAAI,IAC1ES,EAAI,IAAOT,EAAI,IAAMS,EAAI,IAAOT,EAAI,IAAMS,EAAI,IAAOT,EAAI,IAAMS,EAAI,IAAOT,EAAI,IAEvEpoC,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM+hC,EAAK7oC,KAAKgmI,SAAU59F,EAAKthC,EAAEk/H,SAMjC,OAJAn9F,EAAI,IAAOT,EAAI,IACfS,EAAI,IAAOT,EAAI,IACfS,EAAI,IAAOT,EAAI,IAERpoC,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBqI,GAEf,IAAMshC,EAAKthC,EAAEk/H,SAWb,OATAhmI,KAAKivB,IAEJmZ,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAK,EAC3BA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAK,EAC3BA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAK,EAC3B,EAAG,EAAG,EAAG,GAIHpoC,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcy4J,EAAOC,EAAOC,GAM3B,OAJAF,EAAMoS,oBAAqBtpK,KAAM,GACjCm3J,EAAMmS,oBAAqBtpK,KAAM,GACjCo3J,EAAMkS,oBAAqBtpK,KAAM,GAE1BA,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWy4J,EAAOC,EAAOC,GASxB,OAPAp3J,KAAKivB,IACJioI,EAAMh7J,EAAGi7J,EAAMj7J,EAAGk7J,EAAMl7J,EAAG,EAC3Bg7J,EAAM7vJ,EAAG8vJ,EAAM9vJ,EAAG+vJ,EAAM/vJ,EAAG,EAC3B6vJ,EAAM5vJ,EAAG6vJ,EAAM7vJ,EAAG8vJ,EAAM9vJ,EAAG,EAC3B,EAAG,EAAG,EAAG,GAGHtH,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBqI,GAIhB,IAAM+hC,EAAK7oC,KAAKgmI,SACV59F,EAAKthC,EAAEk/H,SAEPmrC,EAAS,EAAIC,GAAM9H,oBAAqBxiK,EAAG,GAAIlP,SAC/Cy5K,EAAS,EAAID,GAAM9H,oBAAqBxiK,EAAG,GAAIlP,SAC/C05K,EAAS,EAAIF,GAAM9H,oBAAqBxiK,EAAG,GAAIlP,SAsBrD,OApBAixC,EAAI,GAAMT,EAAI,GAAM+oI,EACpBtoI,EAAI,GAAMT,EAAI,GAAM+oI,EACpBtoI,EAAI,GAAMT,EAAI,GAAM+oI,EACpBtoI,EAAI,GAAM,EAEVA,EAAI,GAAMT,EAAI,GAAMipI,EACpBxoI,EAAI,GAAMT,EAAI,GAAMipI,EACpBxoI,EAAI,GAAMT,EAAI,GAAMipI,EACpBxoI,EAAI,GAAM,EAEVA,EAAI,GAAMT,EAAI,GAAMkpI,EACpBzoI,EAAI,GAAMT,EAAI,GAAMkpI,EACpBzoI,EAAI,IAAOT,EAAI,IAAOkpI,EACtBzoI,EAAI,IAAO,EAEXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EAEJ7oC,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuB4kK,GAEbA,GAASA,EAAME,SAEvBxvJ,QAAQwN,MAAO,yGAIhB,IAAMsnB,EAAK7oC,KAAKgmI,SAEV9pI,EAAImnK,EAAMnnK,EAAGmL,EAAIg8J,EAAMh8J,EAAGC,EAAI+7J,EAAM/7J,EACpCtL,EAAIiB,KAAKk3J,IAAKj4J,GAAKqK,EAAItJ,KAAKm3J,IAAKl4J,GACjCD,EAAIgB,KAAKk3J,IAAK9sJ,GAAKb,EAAIvJ,KAAKm3J,IAAK/sJ,GACjCf,EAAIrJ,KAAKk3J,IAAK7sJ,GAAKb,EAAIxJ,KAAKm3J,IAAK9sJ,GAEvC,GAAqB,QAAhB+7J,EAAM91J,MAAkB,CAE5B,IAAMs5B,EAAK7qC,EAAIsK,EAAG+mC,EAAKrxC,EAAIyK,EAAGqgC,EAAKvgC,EAAID,EAAGgnC,EAAK/mC,EAAIE,EAEnDoiC,EAAI,GAAM5sC,EAAIqK,EACduiC,EAAI,IAAQ5sC,EAAIwK,EAChBoiC,EAAI,GAAMriC,EAEVqiC,EAAI,GAAMwE,EAAKvG,EAAKtgC,EACpBqiC,EAAI,GAAMhC,EAAKyG,EAAK9mC,EACpBqiC,EAAI,IAAQtiC,EAAItK,EAEhB4sC,EAAI,GAAMyE,EAAKzG,EAAKrgC,EACpBqiC,EAAI,GAAM/B,EAAKuG,EAAK7mC,EACpBqiC,EAAI,IAAO7sC,EAAIC,CAEhB,MAAO,GAAqB,QAAhBonK,EAAM91J,MAAkB,CAEnC,IAAMy5B,EAAK/qC,EAAIqK,EAAGinC,EAAKtxC,EAAIwK,EAAGwgC,EAAKzgC,EAAIF,EAAGknC,EAAKhnC,EAAIC,EAEnDoiC,EAAI,GAAM7B,EAAKwG,EAAKjnC,EACpBsiC,EAAI,GAAM5B,EAAK1gC,EAAIgnC,EACnB1E,EAAI,GAAM7sC,EAAIwK,EAEdqiC,EAAI,GAAM7sC,EAAIyK,EACdoiC,EAAI,GAAM7sC,EAAIsK,EACduiC,EAAI,IAAQtiC,EAEZsiC,EAAI,GAAM0E,EAAKhnC,EAAI0gC,EACnB4B,EAAI,GAAM2E,EAAKxG,EAAKzgC,EACpBsiC,EAAI,IAAO7sC,EAAIC,CAEhB,MAAO,GAAqB,QAAhBonK,EAAM91J,MAAkB,CAEnC,IAAMy5B,EAAK/qC,EAAIqK,EAAGinC,EAAKtxC,EAAIwK,EAAGwgC,EAAKzgC,EAAIF,EAAGknC,EAAKhnC,EAAIC,EAEnDoiC,EAAI,GAAM7B,EAAKwG,EAAKjnC,EACpBsiC,EAAI,IAAQ7sC,EAAIyK,EAChBoiC,EAAI,GAAM5B,EAAKsG,EAAKhnC,EAEpBsiC,EAAI,GAAM0E,EAAKtG,EAAK1gC,EACpBsiC,EAAI,GAAM7sC,EAAIsK,EACduiC,EAAI,GAAM2E,EAAKxG,EAAKzgC,EAEpBsiC,EAAI,IAAQ7sC,EAAIwK,EAChBqiC,EAAI,GAAMtiC,EACVsiC,EAAI,IAAO7sC,EAAIC,CAEhB,MAAO,GAAqB,QAAhBonK,EAAM91J,MAAkB,CAEnC,IAAMs5B,EAAK7qC,EAAIsK,EAAG+mC,EAAKrxC,EAAIyK,EAAGqgC,EAAKvgC,EAAID,EAAGgnC,EAAK/mC,EAAIE,EAEnDoiC,EAAI,GAAM5sC,EAAIqK,EACduiC,EAAI,GAAM/B,EAAKtgC,EAAI6mC,EACnBxE,EAAI,GAAMhC,EAAKrgC,EAAI8mC,EAEnBzE,EAAI,GAAM5sC,EAAIwK,EACdoiC,EAAI,GAAMyE,EAAK9mC,EAAIqgC,EACnBgC,EAAI,GAAMwE,EAAK7mC,EAAIsgC,EAEnB+B,EAAI,IAAQriC,EACZqiC,EAAI,GAAMtiC,EAAItK,EACd4sC,EAAI,IAAO7sC,EAAIC,CAEhB,MAAO,GAAqB,QAAhBonK,EAAM91J,MAAkB,CAEnC,IAAMksB,EAAKz9B,EAAIC,EAAG0iC,EAAK3iC,EAAIwK,EAAGmzB,EAAKpzB,EAAItK,EAAG2iC,EAAKr4B,EAAIC,EAEnDqiC,EAAI,GAAM5sC,EAAIqK,EACduiC,EAAI,GAAMjK,EAAKnF,EAAKhzB,EACpBoiC,EAAI,GAAMlP,EAAKlzB,EAAIk4B,EAEnBkK,EAAI,GAAMpiC,EACVoiC,EAAI,GAAM7sC,EAAIsK,EACduiC,EAAI,IAAQtiC,EAAID,EAEhBuiC,EAAI,IAAQriC,EAAIF,EAChBuiC,EAAI,GAAMlK,EAAKl4B,EAAIkzB,EACnBkP,EAAI,IAAOpP,EAAKmF,EAAKn4B,CAEtB,MAAO,GAAqB,QAAhB48J,EAAM91J,MAAkB,CAEnC,IAAMksB,EAAKz9B,EAAIC,EAAG0iC,EAAK3iC,EAAIwK,EAAGmzB,EAAKpzB,EAAItK,EAAG2iC,EAAKr4B,EAAIC,EAEnDqiC,EAAI,GAAM5sC,EAAIqK,EACduiC,EAAI,IAAQpiC,EACZoiC,EAAI,GAAMriC,EAAIF,EAEduiC,EAAI,GAAMpP,EAAKhzB,EAAIm4B,EACnBiK,EAAI,GAAM7sC,EAAIsK,EACduiC,EAAI,GAAMlK,EAAKl4B,EAAIkzB,EAEnBkP,EAAI,GAAMlP,EAAKlzB,EAAIk4B,EACnBkK,EAAI,GAAMtiC,EAAID,EACduiC,EAAI,IAAOjK,EAAKn4B,EAAIgzB,CAErB,CAaA,OAVAoP,EAAI,GAAM,EACVA,EAAI,GAAM,EACVA,EAAI,IAAO,EAGXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EAEJ7oC,IAER,GAAC,CAAAwC,IAAA,6BAAA/D,MAED,SAA4BwI,GAE3B,OAAOjH,KAAKuxK,QAASC,GAAOvqK,EAAGwqK,GAEhC,GAAC,CAAAjvK,IAAA,SAAA/D,MAED,SAAQizK,EAAKnwK,EAAQowK,GAEpB,IAAM9oI,EAAK7oC,KAAKgmI,SAyChB,OAvCAi9B,GAAG3N,WAAYoc,EAAKnwK,GAEG,IAAlB0hK,GAAGyF,aAIPzF,GAAG37J,EAAI,GAIR27J,GAAGpiD,YACHzsD,GAAG8zG,aAAcyJ,EAAI1O,IAEE,IAAlB7uG,GAAGs0G,aAImB,IAArBzrK,KAAK4f,IAAK80J,EAAGrqK,GAEjB27J,GAAG/mK,GAAK,KAIR+mK,GAAG37J,GAAK,KAIT27J,GAAGpiD,YACHzsD,GAAG8zG,aAAcyJ,EAAI1O,KAItB7uG,GAAGysD,YACHmiD,GAAGkF,aAAcjF,GAAI7uG,IAErBvrB,EAAI,GAAMurB,GAAGl4D,EAAG2sC,EAAI,GAAMm6H,GAAG9mK,EAAG2sC,EAAI,GAAMo6H,GAAG/mK,EAC7C2sC,EAAI,GAAMurB,GAAG/sD,EAAGwhC,EAAI,GAAMm6H,GAAG37J,EAAGwhC,EAAI,GAAMo6H,GAAG57J,EAC7CwhC,EAAI,GAAMurB,GAAG9sD,EAAGuhC,EAAI,GAAMm6H,GAAG17J,EAAGuhC,EAAI,IAAOo6H,GAAG37J,EAEvCtH,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAUqI,EAAGC,GAEZ,YAAWqD,IAANrD,GAEJgN,QAAQk/C,KAAM,oGACPjzD,KAAKs3J,iBAAkBxwJ,EAAGC,IAI3B/G,KAAKs3J,iBAAkBt3J,KAAM8G,EAErC,GAAC,CAAAtE,IAAA,cAAA/D,MAED,SAAaqI,GAEZ,OAAO9G,KAAKs3J,iBAAkBxwJ,EAAG9G,KAElC,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBzC,EAAGuK,GAEpB,IAAMsgC,EAAK7qC,EAAEgqI,SACPl/F,EAAKvgC,EAAEy/H,SACPn9F,EAAK7oC,KAAKgmI,SAEVuxB,EAAM1wH,EAAI,GAAK2wH,EAAM3wH,EAAI,GAAK4wH,EAAM5wH,EAAI,GAAK+qI,EAAM/qI,EAAI,IACvD6wH,EAAM7wH,EAAI,GAAK8wH,EAAM9wH,EAAI,GAAK+wH,EAAM/wH,EAAI,GAAKgrI,EAAMhrI,EAAI,IACvDgxH,EAAMhxH,EAAI,GAAKixH,EAAMjxH,EAAI,GAAKkxH,EAAMlxH,EAAI,IAAMirI,EAAMjrI,EAAI,IACxDkrI,EAAMlrI,EAAI,GAAKmrI,EAAMnrI,EAAI,GAAKorI,EAAMprI,EAAI,IAAMqrI,EAAMrrI,EAAI,IAExDmxH,EAAMlxH,EAAI,GAAKmxH,EAAMnxH,EAAI,GAAKoxH,EAAMpxH,EAAI,GAAKqrI,EAAMrrI,EAAI,IACvDqxH,EAAMrxH,EAAI,GAAKsxH,EAAMtxH,EAAI,GAAKuxH,EAAMvxH,EAAI,GAAKsrI,EAAMtrI,EAAI,IACvDwxH,EAAMxxH,EAAI,GAAKyxH,EAAMzxH,EAAI,GAAK0xH,EAAM1xH,EAAI,IAAMurI,EAAMvrI,EAAI,IACxDwrI,EAAMxrI,EAAI,GAAKyrI,EAAMzrI,EAAI,GAAK0rI,EAAM1rI,EAAI,IAAM2rI,EAAM3rI,EAAI,IAsB9D,OApBA+B,EAAI,GAAM0uH,EAAMS,EAAMR,EAAMW,EAAMV,EAAMa,EAAMsZ,EAAMU,EACpDzpI,EAAI,GAAM0uH,EAAMU,EAAMT,EAAMY,EAAMX,EAAMc,EAAMqZ,EAAMW,EACpD1pI,EAAI,GAAM0uH,EAAMW,EAAMV,EAAMa,EAAMZ,EAAMe,EAAMoZ,EAAMY,EACpD3pI,EAAI,IAAO0uH,EAAM4a,EAAM3a,EAAM4a,EAAM3a,EAAM4a,EAAMT,EAAMa,EAErD5pI,EAAI,GAAM6uH,EAAMM,EAAML,EAAMQ,EAAMP,EAAMU,EAAMuZ,EAAMS,EACpDzpI,EAAI,GAAM6uH,EAAMO,EAAMN,EAAMS,EAAMR,EAAMW,EAAMsZ,EAAMU,EACpD1pI,EAAI,GAAM6uH,EAAMQ,EAAMP,EAAMU,EAAMT,EAAMY,EAAMqZ,EAAMW,EACpD3pI,EAAI,IAAO6uH,EAAMya,EAAMxa,EAAMya,EAAMxa,EAAMya,EAAMR,EAAMY,EAErD5pI,EAAI,GAAMgvH,EAAMG,EAAMF,EAAMK,EAAMJ,EAAMO,EAAMwZ,EAAMQ,EACpDzpI,EAAI,GAAMgvH,EAAMI,EAAMH,EAAMM,EAAML,EAAMQ,EAAMuZ,EAAMS,EACpD1pI,EAAI,IAAOgvH,EAAMK,EAAMJ,EAAMO,EAAMN,EAAMS,EAAMsZ,EAAMU,EACrD3pI,EAAI,IAAOgvH,EAAMsa,EAAMra,EAAMsa,EAAMra,EAAMsa,EAAMP,EAAMW,EAErD5pI,EAAI,GAAMkpI,EAAM/Z,EAAMga,EAAM7Z,EAAM8Z,EAAM3Z,EAAM4Z,EAAMI,EACpDzpI,EAAI,GAAMkpI,EAAM9Z,EAAM+Z,EAAM5Z,EAAM6Z,EAAM1Z,EAAM2Z,EAAMK,EACpD1pI,EAAI,IAAOkpI,EAAM7Z,EAAM8Z,EAAM3Z,EAAM4Z,EAAMzZ,EAAM0Z,EAAMM,EACrD3pI,EAAI,IAAOkpI,EAAMI,EAAMH,EAAMI,EAAMH,EAAMI,EAAMH,EAAMO,EAE9CzyK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBhD,GAEf,IAAMotC,EAAK7oC,KAAKgmI,SAOhB,OALAn9F,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,KAAQptC,EACtDotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,KAAQptC,EACtDotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,KAAQptC,EAAGotC,EAAI,KAAQptC,EACvDotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,KAAQptC,EAAGotC,EAAI,KAAQptC,EAEhDuE,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAEC,IAAMoqC,EAAK7oC,KAAKgmI,SAEVywB,EAAM5tH,EAAI,GAAK6tH,EAAM7tH,EAAI,GAAK8tH,EAAM9tH,EAAI,GAAK+nI,EAAM/nI,EAAI,IACvD+tH,EAAM/tH,EAAI,GAAKguH,EAAMhuH,EAAI,GAAKiuH,EAAMjuH,EAAI,GAAKgoI,EAAMhoI,EAAI,IACvDkuH,EAAMluH,EAAI,GAAKmuH,EAAMnuH,EAAI,GAAKouH,EAAMpuH,EAAI,IAAMioI,EAAMjoI,EAAI,IAM9D,OALYA,EAAI,KAOZ+nI,EAAM9Z,EAAME,EACXL,EAAMka,EAAM7Z,EACZ4Z,EAAM/Z,EAAMI,EACZP,EAAMma,EAAM5Z,EACZN,EAAME,EAAMia,EACZpa,EAAMI,EAAMga,GAZUjoI,EAAI,KAe3B4tH,EAAMK,EAAMga,EACXra,EAAMoa,EAAM5Z,EACZ2Z,EAAMha,EAAMK,EACZN,EAAMC,EAAMka,EACZna,EAAMka,EAAM9Z,EACZ6Z,EAAM9Z,EAAMC,GApByBluH,EAAI,MAuB1C4tH,EAAMoa,EAAM7Z,EACXP,EAAMI,EAAMia,EACZF,EAAMha,EAAMI,EACZN,EAAME,EAAMka,EACZF,EAAM/Z,EAAME,EACZL,EAAMma,EAAM9Z,GA5ByCluH,EAAI,MA+B1D8tH,EAAME,EAAME,EACXN,EAAMK,EAAME,EACZP,EAAMI,EAAMI,EACZN,EAAMC,EAAMI,EACZN,EAAME,EAAMK,EACZP,EAAMI,EAAMC,EAKlB,GAAC,CAAAv0J,IAAA,YAAA/D,MAED,WAEC,IACIq6J,EADEjwH,EAAK7oC,KAAKgmI,SAWhB,OARA8yB,EAAMjwH,EAAI,GAAKA,EAAI,GAAMA,EAAI,GAAKA,EAAI,GAAMiwH,EAC5CA,EAAMjwH,EAAI,GAAKA,EAAI,GAAMA,EAAI,GAAKA,EAAI,GAAMiwH,EAC5CA,EAAMjwH,EAAI,GAAKA,EAAI,GAAMA,EAAI,GAAKA,EAAI,GAAMiwH,EAE5CA,EAAMjwH,EAAI,GAAKA,EAAI,GAAMA,EAAI,IAAMA,EAAI,IAAOiwH,EAC9CA,EAAMjwH,EAAI,GAAKA,EAAI,GAAMA,EAAI,IAAMA,EAAI,IAAOiwH,EAC9CA,EAAMjwH,EAAI,IAAMA,EAAI,IAAOA,EAAI,IAAMA,EAAI,IAAOiwH,EAEzC94J,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAavC,EAAGmL,EAAGC,GAElB,IAAMuhC,EAAK7oC,KAAKgmI,SAgBhB,OAdK9pI,EAAEutK,WAEN5gI,EAAI,IAAO3sC,EAAEA,EACb2sC,EAAI,IAAO3sC,EAAEmL,EACbwhC,EAAI,IAAO3sC,EAAEoL,IAIbuhC,EAAI,IAAO3sC,EACX2sC,EAAI,IAAOxhC,EACXwhC,EAAI,IAAOvhC,GAILtH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAGC,IAAMoqC,EAAK7oC,KAAKgmI,SAEfywB,EAAM5tH,EAAI,GAAK+tH,EAAM/tH,EAAI,GAAKkuH,EAAMluH,EAAI,GAAKkoI,EAAMloI,EAAI,GACvD6tH,EAAM7tH,EAAI,GAAKguH,EAAMhuH,EAAI,GAAKmuH,EAAMnuH,EAAI,GAAKmoI,EAAMnoI,EAAI,GACvD8tH,EAAM9tH,EAAI,GAAKiuH,EAAMjuH,EAAI,GAAKouH,EAAMpuH,EAAI,IAAMooI,EAAMpoI,EAAI,IACxD+nI,EAAM/nI,EAAI,IAAMgoI,EAAMhoI,EAAI,IAAMioI,EAAMjoI,EAAI,IAAMqoI,EAAMroI,EAAI,IAE1D4vH,EAAM3B,EAAMga,EAAME,EAAMH,EAAM5Z,EAAM+Z,EAAMH,EAAM7Z,EAAMia,EAAMpa,EAAMia,EAAMG,EAAMna,EAAME,EAAMka,EAAMra,EAAMI,EAAMia,EAC5GxY,EAAMkY,EAAM3Z,EAAM+Z,EAAMra,EAAMma,EAAME,EAAMJ,EAAM5Z,EAAMia,EAAMva,EAAMoa,EAAMG,EAAMta,EAAMK,EAAMka,EAAMxa,EAAMO,EAAMia,EAC5GvY,EAAMhC,EAAMka,EAAMG,EAAMJ,EAAM9Z,EAAMka,EAAMJ,EAAM/Z,EAAMoa,EAAMva,EAAMma,EAAMI,EAAMta,EAAME,EAAMqa,EAAMxa,EAAMI,EAAMoa,EAC5GwB,EAAM9B,EAAM9Z,EAAME,EAAML,EAAMka,EAAM7Z,EAAM4Z,EAAM/Z,EAAMI,EAAMP,EAAMma,EAAM5Z,EAAMN,EAAME,EAAMia,EAAMpa,EAAMI,EAAMga,EAEvGlY,EAAMnC,EAAMgC,EAAM7B,EAAM8B,EAAM3B,EAAM4B,EAAMoY,EAAM2B,EAEtD,GAAa,IAAR9Z,EAAY,OAAO54J,KAAKivB,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAE/E,IAAM4pI,EAAS,EAAID,EAsBnB,OApBA/vH,EAAI,GAAM4vH,EAAMI,EAChBhwH,EAAI,IAAQgoI,EAAM5Z,EAAM8Z,EAAMja,EAAMga,EAAMC,EAAMF,EAAM9Z,EAAMka,EAAMra,EAAMka,EAAMG,EAAMna,EAAMC,EAAMma,EAAMta,EAAMK,EAAMia,GAAQrY,EAC1HhwH,EAAI,IAAQguH,EAAMia,EAAMC,EAAMF,EAAM7Z,EAAM+Z,EAAMF,EAAM9Z,EAAMia,EAAMpa,EAAMka,EAAME,EAAMna,EAAME,EAAMma,EAAMta,EAAMI,EAAMka,GAAQrY,EAC1HhwH,EAAI,IAAQiuH,EAAME,EAAM+Z,EAAMla,EAAMI,EAAM8Z,EAAMja,EAAMC,EAAMia,EAAMpa,EAAMK,EAAM+Z,EAAMna,EAAME,EAAMka,EAAMra,EAAMI,EAAMia,GAAQpY,EAE1HhwH,EAAI,GAAM6vH,EAAMG,EAChBhwH,EAAI,IAAQ8tH,EAAMma,EAAMC,EAAMH,EAAM3Z,EAAM8Z,EAAMH,EAAM7Z,EAAMka,EAAMxa,EAAMqa,EAAMG,EAAMta,EAAMI,EAAMma,EAAMza,EAAMQ,EAAMia,GAAQrY,EAC1HhwH,EAAI,IAAQ+nI,EAAM5Z,EAAM+Z,EAAMra,EAAMoa,EAAMC,EAAMH,EAAM7Z,EAAMia,EAAMva,EAAMqa,EAAME,EAAMta,EAAMK,EAAMma,EAAMza,EAAMO,EAAMka,GAAQrY,EAC1HhwH,EAAI,IAAQ6tH,EAAMO,EAAM8Z,EAAMpa,EAAMK,EAAM+Z,EAAMpa,EAAMI,EAAMia,EAAMva,EAAMQ,EAAM+Z,EAAMta,EAAMK,EAAMka,EAAMxa,EAAMO,EAAMia,GAAQpY,EAE1HhwH,EAAI,GAAM8vH,EAAME,EAChBhwH,EAAI,IAAQ+nI,EAAM9Z,EAAMia,EAAMpa,EAAMka,EAAME,EAAMH,EAAMha,EAAMqa,EAAMxa,EAAMoa,EAAMI,EAAMta,EAAMC,EAAMsa,EAAMza,EAAMK,EAAMoa,GAAQrY,EAC1HhwH,EAAI,KAAS6tH,EAAMma,EAAME,EAAMH,EAAM/Z,EAAMka,EAAMH,EAAMha,EAAMoa,EAAMva,EAAMoa,EAAMG,EAAMta,EAAME,EAAMsa,EAAMza,EAAMI,EAAMqa,GAAQrY,EAC3HhwH,EAAI,KAAS8tH,EAAME,EAAMka,EAAMra,EAAMI,EAAMia,EAAMpa,EAAMC,EAAMoa,EAAMva,EAAMK,EAAMka,EAAMta,EAAME,EAAMqa,EAAMxa,EAAMI,EAAMoa,GAAQpY,EAE3HhwH,EAAI,IAAO6pI,EAAM7Z,EACjBhwH,EAAI,KAAS8tH,EAAMka,EAAM9Z,EAAM6Z,EAAM9Z,EAAMC,EAAM6Z,EAAMha,EAAMK,EAAMR,EAAMoa,EAAM5Z,EAAMN,EAAMC,EAAMka,EAAMra,EAAMK,EAAMga,GAAQjY,EAC3HhwH,EAAI,KAAS+nI,EAAM/Z,EAAME,EAAML,EAAMma,EAAM9Z,EAAM6Z,EAAMha,EAAMI,EAAMP,EAAMoa,EAAM7Z,EAAMN,EAAME,EAAMka,EAAMra,EAAMI,EAAMia,GAAQjY,EAC3HhwH,EAAI,KAAS6tH,EAAMI,EAAMC,EAAMJ,EAAME,EAAME,EAAMJ,EAAMC,EAAMI,EAAMP,EAAMK,EAAME,EAAMN,EAAME,EAAMK,EAAMR,EAAMI,EAAMI,GAAQ4B,EAEpH74J,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO0I,GAEN,IAAM0hC,EAAK7oC,KAAKgmI,SACV9pI,EAAIiL,EAAEjL,EAAGmL,EAAIF,EAAEE,EAAGC,EAAIH,EAAEG,EAO9B,OALAuhC,EAAI,IAAO3sC,EAAG2sC,EAAI,IAAOxhC,EAAGwhC,EAAI,IAAOvhC,EACvCuhC,EAAI,IAAO3sC,EAAG2sC,EAAI,IAAOxhC,EAAGwhC,EAAI,IAAOvhC,EACvCuhC,EAAI,IAAO3sC,EAAG2sC,EAAI,IAAOxhC,EAAGwhC,EAAI,KAAQvhC,EACxCuhC,EAAI,IAAO3sC,EAAG2sC,EAAI,IAAOxhC,EAAGwhC,EAAI,KAAQvhC,EAEjCtH,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,WAEC,IAAMoqC,EAAK7oC,KAAKgmI,SAEV2sC,EAAW9pI,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GACjE+pI,EAAW/pI,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GACjEgqI,EAAWhqI,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,IAAOA,EAAI,IAExE,OAAO5rC,KAAK04J,KAAM14J,KAAKC,IAAKy1K,EAAUC,EAAUC,GAEjD,GAAC,CAAArwK,IAAA,kBAAA/D,MAED,SAAiBvC,EAAGmL,EAAGC,GAWtB,OATAtH,KAAKivB,IAEJ,EAAG,EAAG,EAAG/yB,EACT,EAAG,EAAG,EAAGmL,EACT,EAAG,EAAG,EAAGC,EACT,EAAG,EAAG,EAAG,GAIHtH,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeg7J,GAEd,IAAMx9J,EAAIgB,KAAKk3J,IAAKsF,GAASh+J,EAAIwB,KAAKm3J,IAAKqF,GAW3C,OATAz5J,KAAKivB,IAEJ,EAAG,EAAG,EAAG,EACT,EAAGhzB,GAAKR,EAAG,EACX,EAAGA,EAAGQ,EAAG,EACT,EAAG,EAAG,EAAG,GAIH+D,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeg7J,GAEd,IAAMx9J,EAAIgB,KAAKk3J,IAAKsF,GAASh+J,EAAIwB,KAAKm3J,IAAKqF,GAW3C,OATAz5J,KAAKivB,IAEHhzB,EAAG,EAAGR,EAAG,EACT,EAAG,EAAG,EAAG,GACRA,EAAG,EAAGQ,EAAG,EACV,EAAG,EAAG,EAAG,GAIJ+D,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeg7J,GAEd,IAAMx9J,EAAIgB,KAAKk3J,IAAKsF,GAASh+J,EAAIwB,KAAKm3J,IAAKqF,GAW3C,OATAz5J,KAAKivB,IAEJhzB,GAAKR,EAAG,EAAG,EACXA,EAAGQ,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GAIH+D,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBolK,EAAMjO,GAIvB,IAAM35J,EAAIgB,KAAKk3J,IAAKyB,GACdn6J,EAAIwB,KAAKm3J,IAAKwB,GACdt+J,EAAI,EAAI2E,EACRC,EAAI2nK,EAAK3nK,EAAGmL,EAAIw8J,EAAKx8J,EAAGC,EAAIu8J,EAAKv8J,EACjC4xJ,EAAK5hK,EAAI4E,EAAGi9J,EAAK7hK,EAAI+P,EAW3B,OATArH,KAAKivB,IAEJiqI,EAAKh9J,EAAID,EAAGi9J,EAAK7xJ,EAAI5L,EAAI6L,EAAG4xJ,EAAK5xJ,EAAI7L,EAAI4L,EAAG,EAC5C6xJ,EAAK7xJ,EAAI5L,EAAI6L,EAAG6xJ,EAAK9xJ,EAAIpL,EAAGk9J,EAAK7xJ,EAAI7L,EAAIS,EAAG,EAC5Cg9J,EAAK5xJ,EAAI7L,EAAI4L,EAAG8xJ,EAAK7xJ,EAAI7L,EAAIS,EAAG5E,EAAIgQ,EAAIA,EAAIrL,EAAG,EAC/C,EAAG,EAAG,EAAG,GAIH+D,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWvC,EAAGmL,EAAGC,GAWhB,OATAtH,KAAKivB,IAEJ/yB,EAAG,EAAG,EAAG,EACT,EAAGmL,EAAG,EAAG,EACT,EAAG,EAAGC,EAAG,EACT,EAAG,EAAG,EAAG,GAIHtH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWiiK,EAAIC,EAAImS,EAAIlS,EAAImS,EAAIC,GAW9B,OATAhzK,KAAKivB,IAEJ,EAAG6jJ,EAAIC,EAAI,EACXrS,EAAI,EAAGsS,EAAI,EACXrS,EAAIC,EAAI,EAAG,EACX,EAAG,EAAG,EAAG,GAIH5gK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAAS8gE,EAAU6jG,EAAY/rB,GAE9B,IAAMxuG,EAAK7oC,KAAKgmI,SAEV9pI,EAAIknK,EAAWhvG,GAAI/sD,EAAI+7J,EAAWJ,GAAI17J,EAAI87J,EAAWH,GAAI77J,EAAIg8J,EAAWF,GACxE+P,EAAK/2K,EAAIA,EAAGg3K,EAAK7rK,EAAIA,EAAG8rK,EAAK7rK,EAAIA,EACjCknI,EAAKtyI,EAAI+2K,EAAIvS,EAAKxkK,EAAIg3K,EAAIvS,EAAKzkK,EAAIi3K,EACnC1kC,EAAKpnI,EAAI6rK,EAAItS,EAAKv5J,EAAI8rK,EAAI1S,EAAKn5J,EAAI6rK,EACnCC,EAAKhsK,EAAI6rK,EAAII,EAAKjsK,EAAI8rK,EAAII,EAAKlsK,EAAI+rK,EAEnC/Z,EAAK/hB,EAAMn7I,EAAGm9J,EAAKhiB,EAAMhwI,EAAGkiK,EAAKlyB,EAAM/vI,EAsB7C,OApBAuhC,EAAI,IAAQ,GAAM4lG,EAAKgyB,IAASrH,EAChCvwH,EAAI,IAAQ63H,EAAK4S,GAAOla,EACxBvwH,EAAI,IAAQ83H,EAAK0S,GAAOja,EACxBvwH,EAAI,GAAM,EAEVA,EAAI,IAAQ63H,EAAK4S,GAAOja,EACxBxwH,EAAI,IAAQ,GAAM2lG,EAAKiyB,IAASpH,EAChCxwH,EAAI,IAAQ+3H,EAAKwS,GAAO/Z,EACxBxwH,EAAI,GAAM,EAEVA,EAAI,IAAQ83H,EAAK0S,GAAO9J,EACxB1gI,EAAI,IAAQ+3H,EAAKwS,GAAO7J,EACxB1gI,EAAI,KAAS,GAAM2lG,EAAKC,IAAS86B,EACjC1gI,EAAI,IAAO,EAEXA,EAAI,IAAO02B,EAASrjE,EACpB2sC,EAAI,IAAO02B,EAASl4D,EACpBwhC,EAAI,IAAO02B,EAASj4D,EACpBuhC,EAAI,IAAO,EAEJ7oC,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW8gE,EAAU6jG,EAAY/rB,GAEhC,IAAMxuG,EAAK7oC,KAAKgmI,SAEZozB,EAAKgY,GAAMniJ,IAAK4Z,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAMjxC,SAC1CyhK,EAAK+X,GAAMniJ,IAAK4Z,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAMjxC,SAC5C2xK,EAAK6H,GAAMniJ,IAAK4Z,EAAI,GAAKA,EAAI,GAAKA,EAAI,KAAOjxC,SAGvCoI,KAAKuzK,cACN,IAAIna,GAAOA,GAEtB75F,EAASrjE,EAAI2sC,EAAI,IACjB02B,EAASl4D,EAAIwhC,EAAI,IACjB02B,EAASj4D,EAAIuhC,EAAI,IAGjB2qI,GAAM9X,KAAM17J,MAEZ,IAAMyzK,EAAQ,EAAIra,EACZsa,EAAQ,EAAIra,EACZsa,EAAQ,EAAIpK,EAoBlB,OAlBAiK,GAAMxtC,SAAU,IAAOytC,EACvBD,GAAMxtC,SAAU,IAAOytC,EACvBD,GAAMxtC,SAAU,IAAOytC,EAEvBD,GAAMxtC,SAAU,IAAO0tC,EACvBF,GAAMxtC,SAAU,IAAO0tC,EACvBF,GAAMxtC,SAAU,IAAO0tC,EAEvBF,GAAMxtC,SAAU,IAAO2tC,EACvBH,GAAMxtC,SAAU,IAAO2tC,EACvBH,GAAMxtC,SAAU,KAAQ2tC,EAExBvQ,EAAWwQ,sBAAuBJ,IAElCn8B,EAAMn7I,EAAIk9J,EACV/hB,EAAMhwI,EAAIgyJ,EACVhiB,EAAM/vI,EAAIiiK,EAEHvpK,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiButC,EAAMwzB,EAAOtzB,EAAKuzB,EAAQo0G,EAAMC,QAEnC1pK,IAAR0pK,GAEJ//J,QAAQk/C,KAAM,wGAIf,IAAMpqB,EAAK7oC,KAAKgmI,SACV9pI,EAAI,EAAI23K,GAASr0G,EAAQxzB,GACzB3kC,EAAI,EAAIwsK,GAAS3nI,EAAMuzB,GAEvBzjE,GAAMwjE,EAAQxzB,IAAWwzB,EAAQxzB,GACjCzlC,GAAM2lC,EAAMuzB,IAAavzB,EAAMuzB,GAC/BxjE,IAAQ63K,EAAMD,IAAWC,EAAMD,GAC/BrtK,GAAM,EAAIstK,EAAMD,GAASC,EAAMD,GAOrC,OALAhrI,EAAI,GAAM3sC,EAAG2sC,EAAI,GAAM,EAAGA,EAAI,GAAM7sC,EAAG6sC,EAAI,IAAO,EAClDA,EAAI,GAAM,EAAGA,EAAI,GAAMxhC,EAAGwhC,EAAI,GAAMtiC,EAAGsiC,EAAI,IAAO,EAClDA,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,IAAO5sC,EAAG4sC,EAAI,IAAOriC,EACnDqiC,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,KAAS,EAAGA,EAAI,IAAO,EAE9C7oC,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkButC,EAAMwzB,EAAOtzB,EAAKuzB,EAAQo0G,EAAMC,GAEjD,IAAMjrI,EAAK7oC,KAAKgmI,SACV5+H,EAAI,GAAQo4D,EAAQxzB,GACpBrlC,EAAI,GAAQulC,EAAMuzB,GAClBz4D,EAAI,GAAQ8sK,EAAMD,GAElB33K,GAAMsjE,EAAQxzB,GAAS5kC,EACvBC,GAAM6kC,EAAMuzB,GAAW94D,EACvBW,GAAMwsK,EAAMD,GAAS7sK,EAO3B,OALA6hC,EAAI,GAAM,EAAIzhC,EAAGyhC,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,KAAS3sC,EACxD2sC,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAIliC,EAAGkiC,EAAI,GAAM,EAAGA,EAAI,KAASxhC,EACxDwhC,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,KAAS,EAAI7hC,EAAG6hC,EAAI,KAASvhC,EAC3DuhC,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,IAAO,EAAGA,EAAI,IAAO,EAE5C7oC,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQi7J,GAKP,IAHA,IAAM7wH,EAAK7oC,KAAKgmI,SACV59F,EAAKsxH,EAAO1zB,SAERtpI,EAAI,EAAGA,EAAI,GAAIA,IAExB,GAAKmsC,EAAInsC,KAAQ0rC,EAAI1rC,GAAM,OAAO,EAInC,OAAO,CAER,GAAC,CAAA8F,IAAA,YAAA/D,MAED,SAAWsE,GAEV,IAF8B,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEhBvD,EAAI,EAAGA,EAAI,GAAIA,IAExBsD,KAAKgmI,SAAUtpI,GAAMqG,EAAOrG,EAAIqtC,GAIjC,OAAO/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEvB4oC,EAAK7oC,KAAKgmI,SAsBhB,OApBAjjI,EAAOgnC,GAAWlB,EAAI,GACtB9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAE1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAE1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAC3B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAE3B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAC3B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAC3B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAC3B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAEpB9lC,CAER,KAAC4tK,CAAA,CAp2BW,GAw2BbA,GAAQ/zK,UAAUm3K,WAAY,EAE9B,IAAM3C,GAAsB,IAAItK,GAC1B0M,GAAsB,IAAI7C,GAC1Ba,GAAsB,IAAI1K,GAAS,EAAG,EAAG,GACzC2K,GAAqB,IAAI3K,GAAS,EAAG,EAAG,GACxC1yG,GAAmB,IAAI0yG,GACvB9D,GAAmB,IAAI8D,GACvB7D,GAAmB,IAAI6D,GAEvBkN,GAA0B,IAAIrD,GAC9BsD,GAA8B,IAAIlR,GAElCmR,GAAK,WAEV,SAAAA,IAA+D,IAAlDh4K,EAAC+D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqH,EAACrH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGsN,EAAKtN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGi0K,EAAMC,aAAY1pK,EAAA,KAAAypK,GAE3Dl0K,KAAKo0D,GAAKl4D,EACV8D,KAAKgjK,GAAK37J,EACVrH,KAAKijK,GAAK37J,EACVtH,KAAKwjK,OAASj2J,CAEf,CAyRsB,OAzRrBhE,EAAA2qK,EAAA,EAAA1xK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKo0D,EAEb,EAACnlC,IAED,SAAOxwB,GAENuB,KAAKo0D,GAAK31D,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKgjK,EAEb,EAAC/zI,IAED,SAAOxwB,GAENuB,KAAKgjK,GAAKvkK,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKijK,EAEb,EAACh0I,IAED,SAAOxwB,GAENuB,KAAKijK,GAAKxkK,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAKwjK,MAEb,EAACv0I,IAED,SAAWxwB,GAEVuB,KAAKwjK,OAAS/kK,EACduB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,MAAA/D,MAED,SAAKvC,EAAGmL,EAAGC,GAAyB,IAAtBiG,EAAKtN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGD,KAAKwjK,OAS1B,OAPAxjK,KAAKo0D,GAAKl4D,EACV8D,KAAKgjK,GAAK37J,EACVrH,KAAKijK,GAAK37J,EACVtH,KAAKwjK,OAASj2J,EAEdvN,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAKo0D,GAAIp0D,KAAKgjK,GAAIhjK,KAAKijK,GAAIjjK,KAAKwjK,OAE9D,GAAC,CAAAhhK,IAAA,OAAA/D,MAED,SAAM4kK,GASL,OAPArjK,KAAKo0D,GAAKivG,EAAMjvG,GAChBp0D,KAAKgjK,GAAKK,EAAML,GAChBhjK,KAAKijK,GAAKI,EAAMJ,GAChBjjK,KAAKwjK,OAASH,EAAMG,OAEpBxjK,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuBqI,GAAwC,IAArCyG,EAAKtN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGD,KAAKwjK,OAAQF,IAAMrjK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GAI9C4oC,EAAK/hC,EAAEk/H,SACPg6B,EAAMn3H,EAAI,GAAKo3H,EAAMp3H,EAAI,GAAKq3H,EAAMr3H,EAAI,GACxCs3H,EAAMt3H,EAAI,GAAKu3H,EAAMv3H,EAAI,GAAKw3H,EAAMx3H,EAAI,GACxCy3H,EAAMz3H,EAAI,GAAK03H,EAAM13H,EAAI,GAAK23H,EAAM33H,EAAI,IAE9C,OAASt7B,GAER,IAAK,MAEJvN,KAAKgjK,GAAK/lK,KAAKm3K,KAAMliB,GAAOgO,GAAO,EAAG,IAEjCjjK,KAAK4f,IAAKqjJ,GAAQ,UAEtBlgK,KAAKo0D,GAAKn3D,KAAK44J,OAASwK,EAAKG,GAC7BxgK,KAAKijK,GAAKhmK,KAAK44J,OAASoK,EAAKD,KAI7BhgK,KAAKo0D,GAAKn3D,KAAK44J,MAAO0K,EAAKH,GAC3BpgK,KAAKijK,GAAK,GAIX,MAED,IAAK,MAEJjjK,KAAKo0D,GAAKn3D,KAAKm3K,MAAQliB,GAAOmO,GAAO,EAAG,IAEnCpjK,KAAK4f,IAAKwjJ,GAAQ,UAEtBrgK,KAAKgjK,GAAK/lK,KAAK44J,MAAOqK,EAAKM,GAC3BxgK,KAAKijK,GAAKhmK,KAAK44J,MAAOsK,EAAKC,KAI3BpgK,KAAKgjK,GAAK/lK,KAAK44J,OAASyK,EAAKN,GAC7BhgK,KAAKijK,GAAK,GAIX,MAED,IAAK,MAEJjjK,KAAKo0D,GAAKn3D,KAAKm3K,KAAMliB,GAAOqO,GAAO,EAAG,IAEjCtjK,KAAK4f,IAAK0jJ,GAAQ,UAEtBvgK,KAAKgjK,GAAK/lK,KAAK44J,OAASyK,EAAKE,GAC7BxgK,KAAKijK,GAAKhmK,KAAK44J,OAASoK,EAAKG,KAI7BpgK,KAAKgjK,GAAK,EACVhjK,KAAKijK,GAAKhmK,KAAK44J,MAAOsK,EAAKH,IAI5B,MAED,IAAK,MAEJhgK,KAAKgjK,GAAK/lK,KAAKm3K,MAAQliB,GAAOoO,GAAO,EAAG,IAEnCrjK,KAAK4f,IAAKyjJ,GAAQ,UAEtBtgK,KAAKo0D,GAAKn3D,KAAK44J,MAAO0K,EAAKC,GAC3BxgK,KAAKijK,GAAKhmK,KAAK44J,MAAOsK,EAAKH,KAI3BhgK,KAAKo0D,GAAK,EACVp0D,KAAKijK,GAAKhmK,KAAK44J,OAASoK,EAAKG,IAI9B,MAED,IAAK,MAEJpgK,KAAKijK,GAAKhmK,KAAKm3K,KAAMliB,GAAOiO,GAAO,EAAG,IAEjCljK,KAAK4f,IAAKsjJ,GAAQ,UAEtBngK,KAAKo0D,GAAKn3D,KAAK44J,OAASwK,EAAKD,GAC7BpgK,KAAKgjK,GAAK/lK,KAAK44J,OAASyK,EAAKN,KAI7BhgK,KAAKo0D,GAAK,EACVp0D,KAAKgjK,GAAK/lK,KAAK44J,MAAOqK,EAAKM,IAI5B,MAED,IAAK,MAEJxgK,KAAKijK,GAAKhmK,KAAKm3K,MAAQliB,GAAO+N,GAAO,EAAG,IAEnChjK,KAAK4f,IAAKojJ,GAAQ,UAEtBjgK,KAAKo0D,GAAKn3D,KAAK44J,MAAO0K,EAAKH,GAC3BpgK,KAAKgjK,GAAK/lK,KAAK44J,MAAOqK,EAAKF,KAI3BhgK,KAAKo0D,GAAKn3D,KAAK44J,OAASwK,EAAKG,GAC7BxgK,KAAKgjK,GAAK,GAIX,MAED,QAECjvJ,QAAQk/C,KAAM,uEAAyE1lD,GAQzF,OAJAvN,KAAKwjK,OAASj2J,GAEE,IAAX+1J,GAAkBtjK,KAAKmjK,oBAErBnjK,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBwI,EAAGsG,EAAO+1J,GAI5B,OAFA0Q,GAAUK,2BAA4BptK,GAE/BjH,KAAK4zK,sBAAuBI,GAAWzmK,EAAO+1J,EAEtD,GAAC,CAAA9gK,IAAA,iBAAA/D,MAED,SAAgB0I,GAAyB,IAAtBoG,EAAKtN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGD,KAAKwjK,OAE/B,OAAOxjK,KAAKivB,IAAK9nB,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,EAAGiG,EAEjC,GAAC,CAAA/K,IAAA,UAAA/D,MAED,SAAS61K,GAMR,OAFAL,GAAc/M,aAAclnK,MAErBA,KAAKu0K,kBAAmBN,GAAeK,EAE/C,GAAC,CAAA9xK,IAAA,SAAA/D,MAED,SAAQ4kK,GAEP,OAASA,EAAMjvG,KAAOp0D,KAAKo0D,IAAUivG,EAAML,KAAOhjK,KAAKgjK,IAAUK,EAAMJ,KAAOjjK,KAAKijK,IAAUI,EAAMG,SAAWxjK,KAAKwjK,MAEpH,GAAC,CAAAhhK,IAAA,YAAA/D,MAED,SAAWsE,GASV,OAPA/C,KAAKo0D,GAAKrxD,EAAO,GACjB/C,KAAKgjK,GAAKjgK,EAAO,GACjB/C,KAAKijK,GAAKlgK,EAAO,QACGqH,IAAfrH,EAAO,KAAoB/C,KAAKwjK,OAASzgK,EAAO,IAErD/C,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAO7B,OALA8C,EAAOgnC,GAAW/pC,KAAKo0D,GACvBrxD,EAAOgnC,EAAS,GAAM/pC,KAAKgjK,GAC3BjgK,EAAOgnC,EAAS,GAAM/pC,KAAKijK,GAC3BlgK,EAAOgnC,EAAS,GAAM/pC,KAAKwjK,OAEpBzgK,CAER,GAAC,CAAAP,IAAA,YAAA/D,MAED,SAAW05C,GAIV,OAFAn4C,KAAKmjK,kBAAoBhrH,EAElBn4C,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,WAAqB,KAACy1K,CAAA,CAlSZ,GAsSXA,GAAMt3K,UAAU2mK,SAAU,EAE1B2Q,GAAMC,aAAe,MACrBD,GAAMM,eAAiB,CAAE,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,IAE9DC,GAAM,WAEX,SAAAA,IAAchqK,EAAA,KAAAgqK,GAEbz0K,KAAKs6H,KAAO,CAEb,CAgDC,OAhDA/wH,EAAAkrK,EAAA,EAAAjyK,IAAA,MAAA/D,MAED,SAAKi2K,GAEJ10K,KAAKs6H,MAAS,GAAKo6C,EAAU,KAAQ,CAEtC,GAAC,CAAAlyK,IAAA,SAAA/D,MAED,SAAQi2K,GAEP10K,KAAKs6H,MAAQ,GAAKo6C,EAAU,CAE7B,GAAC,CAAAlyK,IAAA,YAAA/D,MAED,WAECuB,KAAKs6H,MAAO,CAEb,GAAC,CAAA93H,IAAA,SAAA/D,MAED,SAAQi2K,GAEP10K,KAAKs6H,MAAQ,GAAKo6C,EAAU,CAE7B,GAAC,CAAAlyK,IAAA,UAAA/D,MAED,SAASi2K,GAER10K,KAAKs6H,QAAY,GAAKo6C,EAAU,EAEjC,GAAC,CAAAlyK,IAAA,aAAA/D,MAED,WAECuB,KAAKs6H,KAAO,CAEb,GAAC,CAAA93H,IAAA,OAAA/D,MAED,SAAMk2K,GAEL,OAAuC,KAA9B30K,KAAKs6H,KAAOq6C,EAAOr6C,KAE7B,GAAC,CAAA93H,IAAA,YAAA/D,MAED,SAAWi2K,GAEV,OAAgD,KAAvC10K,KAAKs6H,MAAS,GAAKo6C,EAAU,GAEvC,KAACD,CAAA,CAtDU,GA0DRG,GAAc,EAEZC,GAAsB,IAAI/N,GAC1BgO,GAAoB,IAAI/R,GACxBgS,GAAsB,IAAIpE,GAC1BhmE,GAAwB,IAAIm8D,GAE5BkO,GAA4B,IAAIlO,GAChCmO,GAAyB,IAAInO,GAC7BoO,GAA8B,IAAInS,GAElCoS,GAAuB,IAAIrO,GAAS,EAAG,EAAG,GAC1CsO,GAAuB,IAAItO,GAAS,EAAG,EAAG,GAC1CuO,GAAuB,IAAIvO,GAAS,EAAG,EAAG,GAE1CwO,GAAc,CAAE1wK,KAAM,SACtB2wK,GAAgB,CAAE3wK,KAAM,WAExB4wK,GAAQ,SAAAC,GAAAz5J,EAAAw5J,EAAAC,GAAA,IAAAC,EAAA/6J,EAAA66J,GAEb,SAAAA,IAAc,IAAAtpD,EAAAzhH,EAAA,KAAA+qK,GAEbtpD,EAAAwpD,EAAA74K,KAAA,MAEA0B,OAAOC,eAAcgd,EAAA0wG,GAAQ,KAAM,CAAEztH,MAAOm2K,OAE5C1oD,EAAKrQ,KAAOg2C,KAEZ3lC,EAAK/yH,KAAO,GACZ+yH,EAAKtnH,KAAO,WAEZsnH,EAAKhvD,OAAS,KACdgvD,EAAKtuG,SAAW,GAEhBsuG,EAAKylD,GAAK6D,EAASG,UAAUz0K,QAE7B,IAAMq+D,EAAW,IAAIunG,GACfxN,EAAW,IAAI4a,GACf9Q,EAAa,IAAIL,GACjB1rB,EAAQ,IAAIyvB,GAAS,EAAG,EAAG,GA+Dd,OAjDnBxN,EAASpuB,WAZT,WAECk4B,EAAW8D,aAAc5N,GAAU,EAEpC,IASA8J,EAAWl4B,WAPX,WAECouB,EAASib,kBAAmBnR,OAAYh5J,GAAW,EAEpD,IAKA7L,OAAOiL,iBAAgBgS,EAAA0wG,GAAQ,CAC9B3sD,SAAU,CACT51D,cAAc,EACdD,YAAY,EACZjL,MAAO8gE,GAER+5F,SAAU,CACT3vJ,cAAc,EACdD,YAAY,EACZjL,MAAO66J,GAER8J,WAAY,CACXz5J,cAAc,EACdD,YAAY,EACZjL,MAAO2kK,GAER/rB,MAAO,CACN1tI,cAAc,EACdD,YAAY,EACZjL,MAAO44I,GAERu+B,gBAAiB,CAChBn3K,MAAO,IAAIkyK,IAEZkF,aAAc,CACbp3K,MAAO,IAAI+3J,MAIbtqC,EAAKwtC,OAAS,IAAIiX,GAClBzkD,EAAK+7C,YAAc,IAAI0I,GAEvBzkD,EAAK0yC,iBAAmB4W,EAASM,wBACjC5pD,EAAK6pD,wBAAyB,EAE9B7pD,EAAKyoD,OAAS,IAAIF,GAClBvoD,EAAKviD,SAAU,EAEfuiD,EAAK8pD,YAAa,EAClB9pD,EAAK+pD,eAAgB,EAErB/pD,EAAKgqD,eAAgB,EACrBhqD,EAAKiqD,YAAc,EAEnBjqD,EAAKkqD,WAAa,GAElBlqD,EAAK+yC,SAAW,CAAC,EAAE/yC,CAEpB,CAoyBC,OApyBA3iH,EAAAisK,EAAA,EAAAhzK,IAAA,iBAAA/D,MAED,WAA4E,GAAC,CAAA+D,IAAA,gBAAA/D,MAE7E,WAA2E,GAAC,CAAA+D,IAAA,eAAA/D,MAE5E,SAAci7J,GAER15J,KAAK4+J,kBAAmB5+J,KAAKq2K,eAElCr2K,KAAK05J,OAAO4c,YAAa5c,GAEzB15J,KAAK05J,OAAO6c,UAAWv2K,KAAKu/D,SAAUv/D,KAAKojK,WAAYpjK,KAAKq3I,MAE7D,GAAC,CAAA70I,IAAA,kBAAA/D,MAED,SAAiBwI,GAIhB,OAFAjH,KAAKojK,WAAWkT,YAAarvK,GAEtBjH,IAER,GAAC,CAAAwC,IAAA,2BAAA/D,MAED,SAA0BolK,EAAMjO,GAI/B51J,KAAKojK,WAAW+D,iBAAkBtD,EAAMjO,EAEzC,GAAC,CAAApzJ,IAAA,uBAAA/D,MAED,SAAsB4kK,GAErBrjK,KAAKojK,WAAW8D,aAAc7D,GAAO,EAEtC,GAAC,CAAA7gK,IAAA,wBAAA/D,MAED,SAAuBqI,GAItB9G,KAAKojK,WAAWwQ,sBAAuB9sK,EAExC,GAAC,CAAAtE,IAAA,4BAAA/D,MAED,SAA2BwI,GAI1BjH,KAAKojK,WAAW1H,KAAMz0J,EAEvB,GAAC,CAAAzE,IAAA,eAAA/D,MAED,SAAcolK,EAAMjO,GASnB,OAJAkf,GAAI3N,iBAAkBtD,EAAMjO,GAE5B51J,KAAKojK,WAAWoT,SAAU1B,IAEnB90K,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBolK,EAAMjO,GAUxB,OAJAkf,GAAI3N,iBAAkBtD,EAAMjO,GAE5B51J,KAAKojK,WAAWkT,YAAaxB,IAEtB90K,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASm3J,GAER,OAAO51J,KAAKy2K,aAActB,GAAQvf,EAEnC,GAAC,CAAApzJ,IAAA,UAAA/D,MAED,SAASm3J,GAER,OAAO51J,KAAKy2K,aAAcrB,GAAQxf,EAEnC,GAAC,CAAApzJ,IAAA,UAAA/D,MAED,SAASm3J,GAER,OAAO51J,KAAKy2K,aAAcpB,GAAQzf,EAEnC,GAAC,CAAApzJ,IAAA,kBAAA/D,MAED,SAAiBolK,EAAM6S,GAStB,OAJA7B,GAAMnZ,KAAMmI,GAAOmD,gBAAiBhnK,KAAKojK,YAEzCpjK,KAAKu/D,SAASnzC,IAAKyoJ,GAAMtf,eAAgBmhB,IAElC12K,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYi4K,GAEX,OAAO12K,KAAK22K,gBAAiBxB,GAAQuB,EAEtC,GAAC,CAAAl0K,IAAA,aAAA/D,MAED,SAAYi4K,GAEX,OAAO12K,KAAK22K,gBAAiBvB,GAAQsB,EAEtC,GAAC,CAAAl0K,IAAA,aAAA/D,MAED,SAAYi4K,GAEX,OAAO12K,KAAK22K,gBAAiBtB,GAAQqB,EAEtC,GAAC,CAAAl0K,IAAA,eAAA/D,MAED,SAAcksK,GAEb,OAAOA,EAAO9C,aAAc7nK,KAAKioK,YAElC,GAAC,CAAAzlK,IAAA,eAAA/D,MAED,SAAcksK,GAEb,OAAOA,EAAO9C,aAAckN,GAAMrZ,KAAM17J,KAAKioK,aAAcn4B,SAE5D,GAAC,CAAAttI,IAAA,SAAA/D,MAED,SAAQvC,EAAGmL,EAAGC,GAIRpL,EAAEutK,UAEN9+D,GAAQ+wD,KAAMx/J,GAIdyuG,GAAQ17E,IAAK/yB,EAAGmL,EAAGC,GAIpB,IAAM41D,EAASl9D,KAAKk9D,OAEpBl9D,KAAK6qK,mBAAmB,GAAM,GAE9BmK,GAAY4B,sBAAuB52K,KAAKioK,aAEnCjoK,KAAK62K,UAAY72K,KAAK82K,QAE1B/B,GAAMgC,OAAQ/B,GAAarqE,GAAS3qG,KAAK2xK,IAIzCoD,GAAMgC,OAAQpsE,GAASqqE,GAAah1K,KAAK2xK,IAI1C3xK,KAAKojK,WAAWwQ,sBAAuBmB,IAElC73G,IAEJ63G,GAAMiC,gBAAiB95G,EAAO+qG,aAC9B6M,GAAIlB,sBAAuBmB,IAC3B/0K,KAAKojK,WAAWkT,YAAaxB,GAAIhlC,UAInC,GAAC,CAAAttI,IAAA,MAAA/D,MAED,SAAK0D,GAEJ,GAAKlC,UAAUrI,OAAS,EAAI,CAE3B,IAAM,IAAI8E,EAAI,EAAGA,EAAIuD,UAAUrI,OAAQ8E,IAEtCsD,KAAKosB,IAAKnsB,UAAWvD,IAItB,OAAOsD,IAER,CAEA,OAAKmC,IAAWnC,MAEf+T,QAAQwN,MAAO,kEAAoEpf,GAC5EnC,OAIHmC,GAAUA,EAAO80K,YAEE,OAAlB90K,EAAO+6D,QAEX/6D,EAAO+6D,OAAO0D,OAAQz+D,GAIvBA,EAAO+6D,OAASl9D,KAChBA,KAAK4d,SAAS9gB,KAAMqF,GAEpBA,EAAOo8B,cAAe+2I,KAItBvhK,QAAQwN,MAAO,gEAAiEpf,GAI1EnC,KAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0D,GAEP,GAAKlC,UAAUrI,OAAS,EAAI,CAE3B,IAAM,IAAI8E,EAAI,EAAGA,EAAIuD,UAAUrI,OAAQ8E,IAEtCsD,KAAK4gE,OAAQ3gE,UAAWvD,IAIzB,OAAOsD,IAER,CAEA,IAAM4O,EAAQ5O,KAAK4d,SAASpR,QAASrK,GAWrC,OATiB,IAAZyM,IAEJzM,EAAO+6D,OAAS,KAChBl9D,KAAK4d,SAASiwC,OAAQj/C,EAAO,GAE7BzM,EAAOo8B,cAAeg3I,KAIhBv1K,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,WAEC,IAAMy+D,EAASl9D,KAAKk9D,OAQpB,OANgB,OAAXA,GAEJA,EAAO0D,OAAQ5gE,MAITA,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,IAAM,IAAI/B,EAAI,EAAGA,EAAIsD,KAAK4d,SAAShmB,OAAQ8E,IAAO,CAEjD,IAAMyF,EAASnC,KAAK4d,SAAUlhB,GAE9ByF,EAAO+6D,OAAS,KAEhB/6D,EAAOo8B,cAAeg3I,GAEvB,CAIA,OAFAv1K,KAAK4d,SAAShmB,OAAS,EAEhBoI,IAGR,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0D,GAwBP,OAlBAnC,KAAK6qK,mBAAmB,GAAM,GAE9BkK,GAAMrZ,KAAM17J,KAAKioK,aAAcn4B,SAER,OAAlB3tI,EAAO+6D,SAEX/6D,EAAO+6D,OAAO2tG,mBAAmB,GAAM,GAEvCkK,GAAMyB,SAAUr0K,EAAO+6D,OAAO+qG,cAI/B9lK,EAAO0lK,aAAckN,IAErB/0K,KAAKosB,IAAKjqB,GAEVA,EAAO0oK,mBAAmB,GAAO,GAE1B7qK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAe2gC,GAEd,OAAOp/B,KAAKk3K,oBAAqB,KAAM93I,EAExC,GAAC,CAAA58B,IAAA,kBAAA/D,MAED,SAAiBtF,GAEhB,OAAO6G,KAAKk3K,oBAAqB,OAAQ/9K,EAE1C,GAAC,CAAAqJ,IAAA,sBAAA/D,MAED,SAAqBtF,EAAMsF,GAE1B,GAAKuB,KAAM7G,KAAWsF,EAAQ,OAAOuB,KAErC,IAAM,IAAItD,EAAI,EAAGmK,EAAI7G,KAAK4d,SAAShmB,OAAQ8E,EAAImK,EAAGnK,IAAO,CAExD,IACMyF,EADQnC,KAAK4d,SAAUlhB,GACRw6K,oBAAqB/9K,EAAMsF,GAEhD,QAAgB2L,IAAXjI,EAEJ,OAAOA,CAIT,CAID,GAAC,CAAAK,IAAA,mBAAA/D,MAED,SAAkB8C,GAIjB,OAFAvB,KAAK6qK,mBAAmB,GAAM,GAEvBtpK,EAAOq1K,sBAAuB52K,KAAKioK,YAE3C,GAAC,CAAAzlK,IAAA,qBAAA/D,MAED,SAAoB8C,GAMnB,OAJAvB,KAAK6qK,mBAAmB,GAAM,GAE9B7qK,KAAKioK,YAAYsO,UAAWvB,GAAazzK,EAAQ0zK,IAE1C1zK,CAER,GAAC,CAAAiB,IAAA,gBAAA/D,MAED,SAAe8C,GAMd,OAJAvB,KAAK6qK,mBAAmB,GAAM,GAE9B7qK,KAAKioK,YAAYsO,UAAWvB,GAAaE,GAAe3zK,GAEjDA,CAER,GAAC,CAAAiB,IAAA,oBAAA/D,MAED,SAAmB8C,GAElBvB,KAAK6qK,mBAAmB,GAAM,GAE9B,IAAMvkK,EAAItG,KAAKioK,YAAYjiC,SAE3B,OAAOzkI,EAAO0tB,IAAK3oB,EAAG,GAAKA,EAAG,GAAKA,EAAG,KAAOu6G,WAE9C,GAAC,CAAAr+G,IAAA,UAAA/D,MAED,WAAwC,GAAC,CAAA+D,IAAA,WAAA/D,MAEzC,SAAU05C,GAETA,EAAUn4C,MAIV,IAFA,IAAM4d,EAAW5d,KAAK4d,SAEZlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5CkhB,EAAUlhB,GAAIy6K,SAAUh/H,EAI1B,GAAC,CAAA31C,IAAA,kBAAA/D,MAED,SAAiB05C,GAEhB,IAAsB,IAAjBn4C,KAAK2pE,QAAV,CAEAxxB,EAAUn4C,MAIV,IAFA,IAAM4d,EAAW5d,KAAK4d,SAEZlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5CkhB,EAAUlhB,GAAI06K,gBAAiBj/H,EARI,CAYrC,GAAC,CAAA31C,IAAA,oBAAA/D,MAED,SAAmB05C,GAElB,IAAM+kB,EAASl9D,KAAKk9D,OAEJ,OAAXA,IAEJ/kB,EAAU+kB,GAEVA,EAAOm6G,kBAAmBl/H,GAI5B,GAAC,CAAA31C,IAAA,eAAA/D,MAED,WAECuB,KAAK05J,OAAO6X,QAASvxK,KAAKu/D,SAAUv/D,KAAKojK,WAAYpjK,KAAKq3I,OAE1Dr3I,KAAK+1K,wBAAyB,CAE/B,GAAC,CAAAvzK,IAAA,oBAAA/D,MAED,SAAmB64K,GAEbt3K,KAAK4+J,kBAAmB5+J,KAAKq2K,gBAE7Br2K,KAAK+1K,wBAA0BuB,KAEd,OAAhBt3K,KAAKk9D,OAETl9D,KAAKioK,YAAYvM,KAAM17J,KAAK05J,QAI5B15J,KAAKioK,YAAY3Q,iBAAkBt3J,KAAKk9D,OAAO+qG,YAAajoK,KAAK05J,QAIlE15J,KAAK+1K,wBAAyB,EAE9BuB,GAAQ,GAQT,IAFA,IAAM15J,EAAW5d,KAAK4d,SAEZlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5CkhB,EAAUlhB,GAAI66K,kBAAmBD,EAInC,GAAC,CAAA90K,IAAA,oBAAA/D,MAED,SAAmB+4K,EAAeC,GAEjC,IAAMv6G,EAASl9D,KAAKk9D,OAsBpB,IApBuB,IAAlBs6G,GAAqC,OAAXt6G,GAE9BA,EAAO2tG,mBAAmB,GAAM,GAI5B7qK,KAAK4+J,kBAAmB5+J,KAAKq2K,eAEb,OAAhBr2K,KAAKk9D,OAETl9D,KAAKioK,YAAYvM,KAAM17J,KAAK05J,QAI5B15J,KAAKioK,YAAY3Q,iBAAkBt3J,KAAKk9D,OAAO+qG,YAAajoK,KAAK05J,SAM1C,IAAnB+d,EAIJ,IAFA,IAAM75J,EAAW5d,KAAK4d,SAEZlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5CkhB,EAAUlhB,GAAImuK,mBAAmB,GAAO,EAM3C,GAAC,CAAAroK,IAAA,SAAA/D,MAED,SAAQ63B,GAGP,IAAMknI,OAA0BpzJ,IAATksB,GAAsC,kBAATA,EAE9CuoD,EAAS,CAAC,EAKX2+E,IAGJlnI,EAAO,CACNohJ,WAAY,CAAC,EACbC,UAAW,CAAC,EACZpY,SAAU,CAAC,EACX9B,OAAQ,CAAC,EACTma,OAAQ,CAAC,EACTC,UAAW,CAAC,EACZzB,WAAY,CAAC,EACb5rE,MAAO,CAAC,GAGT3rB,EAAO4/B,SAAW,CACjBplH,QAAS,IACTuL,KAAM,SACNgrF,UAAW,oBAOb,IAAMztF,EAAS,CAAC,EA+BhB,SAAS21K,EAAWC,EAASr2K,GAQ5B,YANiC0I,IAA5B2tK,EAASr2K,EAAQm6G,QAErBk8D,EAASr2K,EAAQm6G,MAASn6G,EAAQ89J,OAAQlpI,IAIpC50B,EAAQm6G,IAEhB,CAEA,GAzCA15G,EAAO05G,KAAO77G,KAAK67G,KACnB15G,EAAOyC,KAAO5E,KAAK4E,KAEA,KAAd5E,KAAK7G,OAAcgJ,EAAOhJ,KAAO6G,KAAK7G,OAClB,IAApB6G,KAAKg2K,aAAsB7zK,EAAO6zK,YAAa,IACxB,IAAvBh2K,KAAKi2K,gBAAyB9zK,EAAO8zK,eAAgB,IACpC,IAAjBj2K,KAAK2pE,UAAoBxnE,EAAOwnE,SAAU,IACnB,IAAvB3pE,KAAKk2K,gBAA0B/zK,EAAO+zK,eAAgB,GACjC,IAArBl2K,KAAKm2K,cAAoBh0K,EAAOg0K,YAAcn2K,KAAKm2K,aACf,OAApCpoH,KAAKC,UAAWhuD,KAAKi/J,YAAsB98J,EAAO88J,SAAWj/J,KAAKi/J,UAEvE98J,EAAOwyK,OAAS30K,KAAK20K,OAAOr6C,KAC5Bn4H,EAAOu3J,OAAS15J,KAAK05J,OAAOnyE,WAEG,IAA1BvnF,KAAK4+J,mBAA6Bz8J,EAAOy8J,kBAAmB,GAI5D5+J,KAAKg4K,kBAET71K,EAAOyC,KAAO,gBACdzC,EAAOw7E,MAAQ39E,KAAK29E,MACpBx7E,EAAO81K,eAAiBj4K,KAAKi4K,eAAezY,SAChB,OAAvBx/J,KAAKk4K,gBAAyB/1K,EAAO+1K,cAAgBl4K,KAAKk4K,cAAc1Y,WAkBzEx/J,KAAKm4K,QAEJn4K,KAAK4/D,aAEJ5/D,KAAK4/D,WAAW67F,QAEpBt5J,EAAOy9D,WAAa5/D,KAAK4/D,WAAW4/F,SAEzBx/J,KAAK4/D,WAAW+/F,YAE3Bx9J,EAAOy9D,WAAa5/D,KAAK4/D,WAAW4/F,OAAQlpI,GAAOulF,OAMhD77G,KAAKo4K,aAAep4K,KAAKo4K,YAAYzY,YAEzCx9J,EAAOi2K,YAAcp4K,KAAKo4K,YAAY5Y,OAAQlpI,GAAOulF,WAIhD,GAAK77G,KAAKq4K,QAAUr4K,KAAKs4K,QAAUt4K,KAAKu4K,SAAW,CAEzDp2K,EAAO2oK,SAAWgN,EAAWxhJ,EAAKohJ,WAAY13K,KAAK8qK,UAEnD,IAAM0N,EAAax4K,KAAK8qK,SAAS0N,WAEjC,QAAoBpuK,IAAfouK,QAAkDpuK,IAAtBouK,EAAWZ,OAAuB,CAElE,IAAMA,EAASY,EAAWZ,OAE1B,GAAKj7K,MAAM0E,QAASu2K,GAEnB,IAAM,IAAIl7K,EAAI,EAAGmK,EAAI+wK,EAAOhgL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAMmd,EAAQ+9J,EAAQl7K,GAEtBo7K,EAAWxhJ,EAAKshJ,OAAQ/9J,EAEzB,MAIAi+J,EAAWxhJ,EAAKshJ,OAAQA,EAI1B,CAED,CAiBA,GAfK53K,KAAKy4K,gBAETt2K,EAAOu2K,SAAW14K,KAAK04K,SACvBv2K,EAAOw2K,WAAa34K,KAAK24K,WAAWpxF,eAEbn9E,IAAlBpK,KAAK44K,WAETd,EAAWxhJ,EAAKuhJ,UAAW73K,KAAK44K,UAEhCz2K,EAAOy2K,SAAW54K,KAAK44K,SAAS/8D,YAMXzxG,IAAlBpK,KAAK64K,SAET,GAAKl8K,MAAM0E,QAASrB,KAAK64K,UAAa,CAIrC,IAFA,IAAMC,EAAQ,GAEJp8K,EAAI,EAAGmK,EAAI7G,KAAK64K,SAASjhL,OAAQ8E,EAAImK,EAAGnK,IAEjDo8K,EAAMh8K,KAAMg7K,EAAWxhJ,EAAKqhJ,UAAW33K,KAAK64K,SAAUn8K,KAIvDyF,EAAO02K,SAAWC,CAEnB,MAEC32K,EAAO02K,SAAWf,EAAWxhJ,EAAKqhJ,UAAW33K,KAAK64K,UAQpD,GAAK74K,KAAK4d,SAAShmB,OAAS,EAAI,CAE/BuK,EAAOyb,SAAW,GAElB,IAAM,IAAIlhB,EAAI,EAAGA,EAAIsD,KAAK4d,SAAShmB,OAAQ8E,IAE1CyF,EAAOyb,SAAS9gB,KAAMkD,KAAK4d,SAAUlhB,GAAI8iK,OAAQlpI,GAAOn0B,OAI1D,CAIA,GAAKnC,KAAKo2K,WAAWx+K,OAAS,EAAI,CAEjCuK,EAAOi0K,WAAa,GAEpB,IAAM,IAAI15K,EAAI,EAAGA,EAAIsD,KAAKo2K,WAAWx+K,OAAQ8E,IAAO,CAEnD,IAAMywC,EAAYntC,KAAKo2K,WAAY15K,GAEnCyF,EAAOi0K,WAAWt5K,KAAMg7K,EAAWxhJ,EAAK8/I,WAAYjpI,GAErD,CAED,CAEA,GAAKqwH,EAAe,CAEnB,IAAMka,EAAaqB,EAAkBziJ,EAAKohJ,YACpCC,EAAYoB,EAAkBziJ,EAAKqhJ,WACnCpY,EAAWwZ,EAAkBziJ,EAAKipI,UAClC9B,EAASsb,EAAkBziJ,EAAKmnI,QAChCma,EAASmB,EAAkBziJ,EAAKshJ,QAChCC,EAAYkB,EAAkBziJ,EAAKuhJ,WACnCzB,EAAa2C,EAAkBziJ,EAAK8/I,YACpC5rE,EAAQuuE,EAAkBziJ,EAAKk0E,OAEhCktE,EAAW9/K,OAAS,IAAIinF,EAAO64F,WAAaA,GAC5CC,EAAU//K,OAAS,IAAIinF,EAAO84F,UAAYA,GAC1CpY,EAAS3nK,OAAS,IAAIinF,EAAO0gF,SAAWA,GACxC9B,EAAO7lK,OAAS,IAAIinF,EAAO4+E,OAASA,GACpCma,EAAOhgL,OAAS,IAAIinF,EAAO+4F,OAASA,GACpCC,EAAUjgL,OAAS,IAAIinF,EAAOg5F,UAAYA,GAC1CzB,EAAWx+K,OAAS,IAAIinF,EAAOu3F,WAAaA,GAC5C5rE,EAAM5yG,OAAS,IAAIinF,EAAO2rB,MAAQA,EAExC,CAIA,OAFA3rB,EAAO18E,OAASA,EAET08E,EAKP,SAASk6F,EAAkB3vK,GAE1B,IAAM2D,EAAS,GACf,IAAM,IAAMvK,KAAO4G,EAAQ,CAE1B,IAAMs6B,EAAOt6B,EAAO5G,UACbkhC,EAAK+6E,SACZ1xG,EAAOjQ,KAAM4mC,EAEd,CAEA,OAAO32B,CAER,CAED,GAAC,CAAAvK,IAAA,QAAA/D,MAED,SAAOu6K,GAEN,OAAO,IAAIh5K,KAAKma,aAAcuhJ,KAAM17J,KAAMg5K,EAE3C,GAAC,CAAAx2K,IAAA,OAAA/D,MAED,SAAM+C,GAA2B,IAAnBw3K,IAAS/4K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GA4BtB,GA1BAD,KAAK7G,KAAOqI,EAAOrI,KAEnB6G,KAAK2xK,GAAGjW,KAAMl6J,EAAOmwK,IAErB3xK,KAAKu/D,SAASm8F,KAAMl6J,EAAO+9D,UAC3Bv/D,KAAKs5J,SAAS/rJ,MAAQ/L,EAAO83J,SAAS/rJ,MACtCvN,KAAKojK,WAAW1H,KAAMl6J,EAAO4hK,YAC7BpjK,KAAKq3I,MAAMqkB,KAAMl6J,EAAO61I,OAExBr3I,KAAK05J,OAAOgC,KAAMl6J,EAAOk4J,QACzB15J,KAAKioK,YAAYvM,KAAMl6J,EAAOymK,aAE9BjoK,KAAK4+J,iBAAmBp9J,EAAOo9J,iBAC/B5+J,KAAK+1K,uBAAyBv0K,EAAOu0K,uBAErC/1K,KAAK20K,OAAOr6C,KAAO94H,EAAOmzK,OAAOr6C,KACjCt6H,KAAK2pE,QAAUnoE,EAAOmoE,QAEtB3pE,KAAKg2K,WAAax0K,EAAOw0K,WACzBh2K,KAAKi2K,cAAgBz0K,EAAOy0K,cAE5Bj2K,KAAKk2K,cAAgB10K,EAAO00K,cAC5Bl2K,KAAKm2K,YAAc30K,EAAO20K,YAE1Bn2K,KAAKi/J,SAAWlxG,KAAK4yC,MAAO5yC,KAAKC,UAAWxsD,EAAOy9J,YAEhC,IAAd+Z,EAEJ,IAAM,IAAIt8K,EAAI,EAAGA,EAAI8E,EAAOoc,SAAShmB,OAAQ8E,IAAO,CAEnD,IAAM08B,EAAQ53B,EAAOoc,SAAUlhB,GAC/BsD,KAAKosB,IAAKgN,EAAMl4B,QAEjB,CAID,OAAOlB,IAER,KAACw1K,CAAA,CA13BY,CAASlkB,IA83BvBkkB,GAASG,UAAY,IAAI7O,GAAS,EAAG,EAAG,GACxC0O,GAASM,yBAA0B,EAEnCN,GAAS54K,UAAUq6K,YAAa,EAEhC,IAAMgC,GAAsB,IAAInS,GAC1BoS,GAAsB,IAAIpS,GAC1BqS,GAAsB,IAAIrS,GAC1BsS,GAAsB,IAAItS,GAE1BuS,GAAqB,IAAIvS,GACzBwS,GAAqB,IAAIxS,GACzByS,GAAqB,IAAIzS,GACzB0S,GAAqB,IAAI1S,GACzB2S,GAAqB,IAAI3S,GACzB4S,GAAqB,IAAI5S,GAEzB6S,GAAQ,WAEb,SAAAA,IAAuE,IAA1D39K,EAACiE,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAWvgK,EAACtG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAW7qK,EAACgE,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAASr8J,EAAA,KAAAkvK,GAEnE35K,KAAKhE,EAAIA,EACTgE,KAAKuG,EAAIA,EACTvG,KAAK/D,EAAIA,CAEV,CAkFC,OAlFAsN,EAAAowK,EAAA,EAAAn3K,IAAA,MAAA/D,MAoFD,SAAKzC,EAAGuK,EAAGtK,GAMV,OAJA+D,KAAKhE,EAAE0/J,KAAM1/J,GACbgE,KAAKuG,EAAEm1J,KAAMn1J,GACbvG,KAAK/D,EAAEy/J,KAAMz/J,GAEN+D,IAER,GAAC,CAAAwC,IAAA,0BAAA/D,MAED,SAAyBwrK,EAAQ2P,EAAIC,EAAIC,GAMxC,OAJA95K,KAAKhE,EAAE0/J,KAAMuO,EAAQ2P,IACrB55K,KAAKuG,EAAEm1J,KAAMuO,EAAQ4P,IACrB75K,KAAK/D,EAAEy/J,KAAMuO,EAAQ6P,IAEd95K,IAER,GAAC,CAAAwC,IAAA,6BAAA/D,MAED,SAA4By3J,EAAW0jB,EAAIC,EAAIC,GAM9C,OAJA95K,KAAKhE,EAAE+uK,oBAAqB7U,EAAW0jB,GACvC55K,KAAKuG,EAAEwkK,oBAAqB7U,EAAW2jB,GACvC75K,KAAK/D,EAAE8uK,oBAAqB7U,EAAW4jB,GAEhC95K,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+sK,GAML,OAJAxrK,KAAKhE,EAAE0/J,KAAM8P,EAASxvK,GACtBgE,KAAKuG,EAAEm1J,KAAM8P,EAASjlK,GACtBvG,KAAK/D,EAAEy/J,KAAM8P,EAASvvK,GAEf+D,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAKC,OAHAw6K,GAAM3jB,WAAYt1J,KAAK/D,EAAG+D,KAAKuG,GAC/B2yK,GAAM5jB,WAAYt1J,KAAKhE,EAAGgE,KAAKuG,GAEQ,GAAhC0yK,GAAMzI,MAAO0I,IAAQthL,QAE7B,GAAC,CAAA4K,IAAA,cAAA/D,MAED,SAAa8C,GAEZ,OAAOA,EAAO8zJ,WAAYr1J,KAAKhE,EAAGgE,KAAKuG,GAAI6lB,IAAKpsB,KAAK/D,GAAIs5J,eAAgB,EAAI,EAE9E,GAAC,CAAA/yJ,IAAA,YAAA/D,MAED,SAAW8C,GAEV,OAAOo4K,EAASI,UAAW/5K,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAAGsF,EAEpD,GAAC,CAAAiB,IAAA,WAAA/D,MAED,SAAU8C,GAET,OAAOA,EAAOy4K,sBAAuBh6K,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAE3D,GAAC,CAAAuG,IAAA,eAAA/D,MAED,SAAcisK,EAAOnpK,GAEpB,OAAOo4K,EAASM,aAAcvP,EAAO1qK,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAAGsF,EAE9D,GAAC,CAAAiB,IAAA,QAAA/D,MAED,SAAOisK,EAAOwP,EAAKC,EAAKC,EAAK74K,GAE5B,OAAOo4K,EAASU,MAAO3P,EAAO1qK,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAAGi+K,EAAKC,EAAKC,EAAK74K,EAEtE,GAAC,CAAAiB,IAAA,gBAAA/D,MAED,SAAeisK,GAEd,OAAOiP,EAASW,cAAe5P,EAAO1qK,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAE5D,GAAC,CAAAuG,IAAA,gBAAA/D,MAED,SAAe4vK,GAEd,OAAOsL,EAASY,cAAev6K,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAAGoyK,EAExD,GAAC,CAAA7rK,IAAA,gBAAA/D,MAED,SAAe+rK,GAEd,OAAOA,EAAIgQ,mBAAoBx6K,KAEhC,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,SAAqBuI,EAAGzF,GAEvB,IACI4F,EAAGC,EADDpL,EAAIgE,KAAKhE,EAAGuK,EAAIvG,KAAKuG,EAAGtK,EAAI+D,KAAK/D,EASvCo9K,GAAK/jB,WAAY/uJ,EAAGvK,GACpBs9K,GAAKhkB,WAAYr5J,EAAGD,GACpBw9K,GAAKlkB,WAAYtuJ,EAAGhL,GACpB,IAAM+1J,EAAKsnB,GAAKpV,IAAKuV,IACfxnB,EAAKsnB,GAAKrV,IAAKuV,IACrB,GAAKznB,GAAM,GAAKC,GAAM,EAGrB,OAAOzwJ,EAAOm6J,KAAM1/J,GAIrBy9K,GAAKnkB,WAAYtuJ,EAAGT,GACpB,IAAM0rJ,EAAKonB,GAAKpV,IAAKwV,IACfgB,EAAKnB,GAAKrV,IAAKwV,IACrB,GAAKxnB,GAAM,GAAKwoB,GAAMxoB,EAGrB,OAAO1wJ,EAAOm6J,KAAMn1J,GAIrB,IAAMw1B,EAAKg2H,EAAK0oB,EAAKxoB,EAAKD,EAC1B,GAAKj2H,GAAM,GAAKg2H,GAAM,GAAKE,GAAM,EAIhC,OAFA9qJ,EAAI4qJ,GAAOA,EAAKE,GAET1wJ,EAAOm6J,KAAM1/J,GAAI0+K,gBAAiBrB,GAAMlyK,GAIhDuyK,GAAKpkB,WAAYtuJ,EAAG/K,GACpB,IAAM0+K,EAAKtB,GAAKpV,IAAKyV,IACfkB,EAAKtB,GAAKrV,IAAKyV,IACrB,GAAKkB,GAAM,GAAKD,GAAMC,EAGrB,OAAOr5K,EAAOm6J,KAAMz/J,GAIrB,IAAM06B,EAAKgkJ,EAAK3oB,EAAKD,EAAK6oB,EAC1B,GAAKjkJ,GAAM,GAAKq7H,GAAM,GAAK4oB,GAAM,EAIhC,OAFAxzK,EAAI4qJ,GAAOA,EAAK4oB,GAETr5K,EAAOm6J,KAAM1/J,GAAI0+K,gBAAiBpB,GAAMlyK,GAIhD,IAAMumB,EAAKskI,EAAK2oB,EAAKD,EAAKF,EAC1B,GAAK9sJ,GAAM,GAAO8sJ,EAAKxoB,GAAQ,GAAO0oB,EAAKC,GAAQ,EAKlD,OAHArB,GAAKjkB,WAAYr5J,EAAGsK,GACpBa,GAAMqzK,EAAKxoB,IAAWwoB,EAAKxoB,GAAS0oB,EAAKC,IAElCr5K,EAAOm6J,KAAMn1J,GAAIm0K,gBAAiBnB,GAAMnyK,GAKhD,IAAMyzK,EAAQ,GAAMltJ,EAAKgJ,EAAKoF,GAK9B,OAHA50B,EAAIwvB,EAAKkkJ,EACTzzK,EAAI20B,EAAK8+I,EAEFt5K,EAAOm6J,KAAM1/J,GAAI0+K,gBAAiBrB,GAAMlyK,GAAIuzK,gBAAiBpB,GAAMlyK,EAE3E,GAAC,CAAA5E,IAAA,SAAA/D,MAED,SAAQ+sK,GAEP,OAAOA,EAASxvK,EAAEwwK,OAAQxsK,KAAKhE,IAAOwvK,EAASjlK,EAAEimK,OAAQxsK,KAAKuG,IAAOilK,EAASvvK,EAAEuwK,OAAQxsK,KAAK/D,EAE9F,IAAC,EAAAuG,IAAA,YAAA/D,MA9QD,SAAkBzC,EAAGuK,EAAGtK,EAAGsF,GAE1BA,EAAO+zJ,WAAYr5J,EAAGsK,GACtB0yK,GAAM3jB,WAAYt5J,EAAGuK,GACrBhF,EAAOivK,MAAOyI,IAEd,IAAM6B,EAAiBv5K,EAAOmnK,WAC9B,OAAKoS,EAAiB,EAEdv5K,EAAOg0J,eAAgB,EAAIt4J,KAAK04J,KAAMmlB,IAIvCv5K,EAAO0tB,IAAK,EAAG,EAAG,EAE1B,GAGA,CAAAzsB,IAAA,eAAA/D,MACA,SAAqBisK,EAAO1uK,EAAGuK,EAAGtK,EAAGsF,GAEpC03K,GAAM3jB,WAAYr5J,EAAGD,GACrBk9K,GAAM5jB,WAAY/uJ,EAAGvK,GACrBm9K,GAAM7jB,WAAYoV,EAAO1uK,GAEzB,IAAM++K,EAAQ9B,GAAMhV,IAAKgV,IACnB+B,EAAQ/B,GAAMhV,IAAKiV,IACnB+B,EAAQhC,GAAMhV,IAAKkV,IACnB+B,EAAQhC,GAAMjV,IAAKiV,IACnBiC,EAAQjC,GAAMjV,IAAKkV,IAEnB0B,EAAUE,EAAQG,EAAQF,EAAQA,EAGxC,GAAe,IAAVH,EAIJ,OAAOt5K,EAAO0tB,KAAO,GAAK,GAAK,GAIhC,IAAMmsJ,EAAW,EAAIP,EACftzK,GAAM2zK,EAAQD,EAAQD,EAAQG,GAAUC,EACxCj0K,GAAM4zK,EAAQI,EAAQH,EAAQC,GAAUG,EAG9C,OAAO75K,EAAO0tB,IAAK,EAAI1nB,EAAIJ,EAAGA,EAAGI,EAElC,GAAC,CAAA/E,IAAA,gBAAA/D,MAED,SAAsBisK,EAAO1uK,EAAGuK,EAAGtK,GAIlC,OAFA+D,KAAKi6K,aAAcvP,EAAO1uK,EAAGuK,EAAGtK,EAAGm9K,IAE1BA,GAAMl9K,GAAK,GAASk9K,GAAM/xK,GAAK,GAAW+xK,GAAMl9K,EAAIk9K,GAAM/xK,GAAO,CAE3E,GAAC,CAAA7E,IAAA,QAAA/D,MAED,SAAcisK,EAAOpzC,EAAIC,EAAI8jD,EAAInB,EAAKC,EAAKC,EAAK74K,GAS/C,OAPAvB,KAAKi6K,aAAcvP,EAAOpzC,EAAIC,EAAI8jD,EAAIjC,IAEtC73K,EAAO0tB,IAAK,EAAG,GACf1tB,EAAOm5K,gBAAiBR,EAAKd,GAAMl9K,GACnCqF,EAAOm5K,gBAAiBP,EAAKf,GAAM/xK,GACnC9F,EAAOm5K,gBAAiBN,EAAKhB,GAAM9xK,GAE5B/F,CAER,GAAC,CAAAiB,IAAA,gBAAA/D,MAED,SAAsBzC,EAAGuK,EAAGtK,EAAGoyK,GAM9B,OAJA4K,GAAM3jB,WAAYr5J,EAAGsK,GACrB2yK,GAAM5jB,WAAYt5J,EAAGuK,GAGZ0yK,GAAMzI,MAAO0I,IAAQjV,IAAKoK,GAAc,CAElD,KAACsL,CAAA,CA1FY,GA4RV2B,GAAa,EAEXC,GAAQ,SAAAC,GAAAx/J,EAAAu/J,EAAAC,GAAA,IAAAC,EAAA9gK,EAAA4gK,GAEb,SAAAA,IAAc,IAAAG,EAmEO,OAnEPjxK,EAAA,KAAA8wK,GAEbG,EAAAD,EAAA5+K,KAAA,MAEA0B,OAAOC,eAAcgd,EAAAkgK,GAAQ,KAAM,CAAEj9K,MAAO68K,OAE5CI,EAAK7/D,KAAOg2C,KAEZ6pB,EAAKviL,KAAO,GACZuiL,EAAK92K,KAAO,WAEZ82K,EAAKC,KAAM,EAEXD,EAAKE,SAAWn0B,GAChBi0B,EAAKG,KAAO10B,GACZu0B,EAAKI,cAAe,EAEpBJ,EAAKlnJ,QAAU,EACfknJ,EAAKK,aAAc,EAEnBL,EAAKM,SAAWzzB,GAChBmzB,EAAKO,SAAWzzB,GAChBkzB,EAAKQ,cAAgBp0B,GACrB4zB,EAAKS,cAAgB,KACrBT,EAAKU,cAAgB,KACrBV,EAAKW,mBAAqB,KAE1BX,EAAKY,UAAYrzB,GACjByyB,EAAKa,WAAY,EACjBb,EAAKc,YAAa,EAElBd,EAAKe,iBAAmB,IACxBf,EAAKgB,YAAcjsB,GACnBirB,EAAKiB,WAAa,EAClBjB,EAAKkB,gBAAkB,IACvBlB,EAAKmB,YAAcltB,GACnB+rB,EAAKoB,aAAentB,GACpB+rB,EAAKqB,aAAeptB,GACpB+rB,EAAKsB,cAAe,EAEpBtB,EAAKuB,eAAiB,KACtBvB,EAAKwB,kBAAmB,EACxBxB,EAAKyB,aAAc,EAEnBzB,EAAK0B,WAAa,KAElB1B,EAAK2B,YAAa,EAElB3B,EAAK1+K,UAAY,KAEjB0+K,EAAK4B,eAAgB,EACrB5B,EAAK6B,oBAAsB,EAC3B7B,EAAK8B,mBAAqB,EAE1B9B,EAAK+B,WAAY,EAEjB/B,EAAKgC,iBAAkB,EACvBhC,EAAKiC,oBAAqB,EAE1BjC,EAAK/xG,SAAU,EAEf+xG,EAAKkC,YAAa,EAElBlC,EAAKzc,SAAW,CAAC,EAEjByc,EAAKriL,QAAU,EAEfqiL,EAAKmC,WAAa,EAAEnC,CAErB,CAoZC,OApZAnyK,EAAAgyK,EAAA,EAAA/4K,IAAA,YAAAutB,IAED,WAEC,OAAO/vB,KAAK69K,UAEb,EAAC5uJ,IAED,SAAexwB,GAETuB,KAAK69K,WAAa,IAAMp/K,EAAQ,GAEpCuB,KAAK3G,UAIN2G,KAAK69K,WAAap/K,CAEnB,GAAC,CAAA+D,IAAA,UAAA/D,MAED,WAAyC,GAAC,CAAA+D,IAAA,iBAAA/D,MAE1C,WAA0E,GAAC,CAAA+D,IAAA,kBAAA/D,MAE3E,WAAiD,GAAC,CAAA+D,IAAA,wBAAA/D,MAElD,WAEC,OAAOuB,KAAK89K,gBAAgBr9K,UAE7B,GAAC,CAAA+B,IAAA,YAAA/D,MAED,SAAWsO,GAEV,QAAgB3C,IAAX2C,EAEL,IAAM,IAAMvK,KAAOuK,EAAS,CAE3B,IAAMgxK,EAAWhxK,EAAQvK,GAEzB,QAAkB4H,IAAb2zK,EAQL,GAAa,YAARv7K,EAAL,CAQA,IAAMw7K,EAAeh+K,KAAMwC,QAEL4H,IAAjB4zK,EAOAA,GAAgBA,EAAaviB,QAEjCuiB,EAAa/uJ,IAAK8uJ,GAELC,GAAgBA,EAAavU,WAAiBsU,GAAYA,EAAStU,UAEhFuU,EAAatiB,KAAMqiB,GAInB/9K,KAAMwC,GAAQu7K,EAfdhqK,QAAQk/C,KAAM,SAAWjzD,KAAK4E,KAAO,MAASpC,EAAM,wCANrD,MAJCuR,QAAQk/C,KAAM,SAAWjzD,KAAK4E,KAAO,sEACrC5E,KAAKi+K,YAAgBF,IAAaz2B,QATlCvzI,QAAQk/C,KAAM,oBAAuBzwD,EAAM,4BAqC7C,CAED,GAAC,CAAAA,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMknI,OAA0BpzJ,IAATksB,GAAsC,kBAATA,EAE/CknI,IAEJlnI,EAAO,CACNipI,SAAU,CAAC,EACX9B,OAAQ,CAAC,IAKX,IAAM/5H,EAAO,CACZ+6E,SAAU,CACTplH,QAAS,IACTuL,KAAM,WACNgrF,UAAW,oBAmLb,SAASmpF,EAAkB3vK,GAE1B,IAAM2D,EAAS,GAEf,IAAM,IAAMvK,KAAO4G,EAAQ,CAE1B,IAAMs6B,EAAOt6B,EAAO5G,UACbkhC,EAAK+6E,SACZ1xG,EAAOjQ,KAAM4mC,EAEd,CAEA,OAAO32B,CAER,CAEA,GA9LA22B,EAAKm4E,KAAO77G,KAAK67G,KACjBn4E,EAAK9+B,KAAO5E,KAAK4E,KAEE,KAAd5E,KAAK7G,OAAcuqC,EAAKvqC,KAAO6G,KAAK7G,MAEpC6G,KAAKwnC,OAASxnC,KAAKwnC,MAAMi0H,UAAU/3H,EAAK8D,MAAQxnC,KAAKwnC,MAAM40H,eAExChyJ,IAAnBpK,KAAKk+K,YAA0Bx6I,EAAKw6I,UAAYl+K,KAAKk+K,gBAClC9zK,IAAnBpK,KAAKm+K,YAA0Bz6I,EAAKy6I,UAAYn+K,KAAKm+K,gBAEtC/zK,IAAfpK,KAAKo+K,QAAsB16I,EAAK06I,MAAQp+K,KAAKo+K,OAC7Cp+K,KAAKq+K,YAAcr+K,KAAKq+K,WAAW5iB,UAAU/3H,EAAK26I,WAAar+K,KAAKq+K,WAAWjiB,eACvDhyJ,IAAxBpK,KAAKs+K,iBAA+B56I,EAAK46I,eAAiBt+K,KAAKs+K,gBAC/Dt+K,KAAKu+K,UAAYv+K,KAAKu+K,SAAS9iB,UAAU/3H,EAAK66I,SAAWv+K,KAAKu+K,SAASniB,UACvEp8J,KAAKw+K,mBAAgD,IAA3Bx+K,KAAKw+K,oBAA0B96I,EAAK86I,kBAAoBx+K,KAAKw+K,mBAEvFx+K,KAAKy+K,UAAYz+K,KAAKy+K,SAAShjB,UAAU/3H,EAAK+6I,SAAWz+K,KAAKy+K,SAASriB,eAC5ChyJ,IAA3BpK,KAAK0+K,oBAAkCh7I,EAAKg7I,kBAAoB1+K,KAAK0+K,mBACrE1+K,KAAK2+K,eAAiB3+K,KAAK2+K,cAAcljB,UAAU/3H,EAAKi7I,cAAgB3+K,KAAK2+K,cAAcviB,eACxEhyJ,IAAnBpK,KAAK4+K,YAA0Bl7I,EAAKk7I,UAAY5+K,KAAK4+K,gBAClCx0K,IAAnBpK,KAAK6+K,YAA0Bn7I,EAAKm7I,UAAY7+K,KAAK6+K,gBACzBz0K,IAA5BpK,KAAK8+K,qBAAmCp7I,EAAKo7I,mBAAqB9+K,KAAK8+K,oBAEvE9+K,KAAK++K,cAAgB/+K,KAAK++K,aAAapf,YAE3Cj8H,EAAKq7I,aAAe/+K,KAAK++K,aAAavf,OAAQlpI,GAAOulF,MAIjD77G,KAAKg/K,uBAAyBh/K,KAAKg/K,sBAAsBrf,YAE7Dj8H,EAAKs7I,sBAAwBh/K,KAAKg/K,sBAAsBxf,OAAQlpI,GAAOulF,MAInE77G,KAAKi/K,oBAAsBj/K,KAAKi/K,mBAAmBtf,YAEvDj8H,EAAKu7I,mBAAqBj/K,KAAKi/K,mBAAmBzf,OAAQlpI,GAAOulF,KACjEn4E,EAAKw7I,qBAAuBl/K,KAAKk/K,qBAAqB33F,WAIlDvnF,KAAKzD,KAAOyD,KAAKzD,IAAIojK,YAAYj8H,EAAKnnC,IAAMyD,KAAKzD,IAAIijK,OAAQlpI,GAAOulF,MACpE77G,KAAKm/K,QAAUn/K,KAAKm/K,OAAOxf,YAAYj8H,EAAKy7I,OAASn/K,KAAKm/K,OAAO3f,OAAQlpI,GAAOulF,MAChF77G,KAAKo/K,UAAYp/K,KAAKo/K,SAASzf,YAAYj8H,EAAK07I,SAAWp/K,KAAKo/K,SAAS5f,OAAQlpI,GAAOulF,MAExF77G,KAAKq/K,UAAYr/K,KAAKq/K,SAAS1f,YAEnCj8H,EAAK27I,SAAWr/K,KAAKq/K,SAAS7f,OAAQlpI,GAAOulF,KAC7Cn4E,EAAK47I,kBAAoBt/K,KAAKs/K,mBAI1Bt/K,KAAKu/K,OAASv/K,KAAKu/K,MAAM5f,YAE7Bj8H,EAAK67I,MAAQv/K,KAAKu/K,MAAM/f,OAAQlpI,GAAOulF,KACvCn4E,EAAK87I,eAAiBx/K,KAAKw/K,gBAIvBx/K,KAAKy/K,SAAWz/K,KAAKy/K,QAAQ9f,YAEjCj8H,EAAK+7I,QAAUz/K,KAAKy/K,QAAQjgB,OAAQlpI,GAAOulF,KAC3Cn4E,EAAKg8I,UAAY1/K,KAAK0/K,WAIlB1/K,KAAK2/K,WAAa3/K,KAAK2/K,UAAUhgB,YAErCj8H,EAAKi8I,UAAY3/K,KAAK2/K,UAAUngB,OAAQlpI,GAAOulF,KAC/Cn4E,EAAKk8I,cAAgB5/K,KAAK4/K,cAC1Bl8I,EAAKm8I,YAAc7/K,KAAK6/K,YAAYt4F,WAIhCvnF,KAAK8/K,iBAAmB9/K,KAAK8/K,gBAAgBngB,YAEjDj8H,EAAKo8I,gBAAkB9/K,KAAK8/K,gBAAgBtgB,OAAQlpI,GAAOulF,KAC3Dn4E,EAAKq8I,kBAAoB//K,KAAK+/K,kBAC9Br8I,EAAKs8I,iBAAmBhgL,KAAKggL,kBAIzBhgL,KAAKigL,cAAgBjgL,KAAKigL,aAAatgB,YAAYj8H,EAAKu8I,aAAejgL,KAAKigL,aAAazgB,OAAQlpI,GAAOulF,MACxG77G,KAAKkgL,cAAgBlgL,KAAKkgL,aAAavgB,YAAYj8H,EAAKw8I,aAAelgL,KAAKkgL,aAAa1gB,OAAQlpI,GAAOulF,MAExG77G,KAAKmgL,aAAengL,KAAKmgL,YAAYxgB,YAAYj8H,EAAKy8I,YAAcngL,KAAKmgL,YAAY3gB,OAAQlpI,GAAOulF,MACpG77G,KAAKogL,aAAepgL,KAAKogL,YAAYzgB,YAAYj8H,EAAK08I,YAAcpgL,KAAKogL,YAAY5gB,OAAQlpI,GAAOulF,MACpG77G,KAAKqgL,sBAAwBrgL,KAAKqgL,qBAAqB1gB,YAAYj8H,EAAK28I,qBAAuBrgL,KAAKqgL,qBAAqB7gB,OAAQlpI,GAAOulF,MACxI77G,KAAKsgL,kBAAoBtgL,KAAKsgL,iBAAiB3gB,YAAYj8H,EAAK48I,iBAAmBtgL,KAAKsgL,iBAAiB9gB,OAAQlpI,GAAOulF,MAExH77G,KAAKugL,QAAUvgL,KAAKugL,OAAO5gB,YAE/Bj8H,EAAK68I,OAASvgL,KAAKugL,OAAO/gB,OAAQlpI,GAAOulF,UAEnBzxG,IAAjBpK,KAAKwgL,UAAwB98I,EAAK88I,QAAUxgL,KAAKwgL,eAIzBp2K,IAAzBpK,KAAKygL,kBAAgC/8I,EAAK+8I,gBAAkBzgL,KAAKygL,sBAC3Cr2K,IAAtBpK,KAAK0gL,eAA6Bh9I,EAAKg9I,aAAe1gL,KAAK0gL,mBAClCt2K,IAAzBpK,KAAK2gL,kBAAgCj9I,EAAKi9I,gBAAkB3gL,KAAK2gL,iBAEjE3gL,KAAK4gL,aAAe5gL,KAAK4gL,YAAYjhB,YAEzCj8H,EAAKk9I,YAAc5gL,KAAK4gL,YAAYphB,OAAQlpI,GAAOulF,WAIzBzxG,IAAtBpK,KAAK6gL,eAA6Bn9I,EAAKm9I,aAAe7gL,KAAK6gL,cAC3D7gL,KAAK8gL,iBAAmB9gL,KAAK8gL,gBAAgBnhB,YAAYj8H,EAAKo9I,gBAAkB9gL,KAAK8gL,gBAAgBthB,OAAQlpI,GAAOulF,WACjGzxG,IAAnBpK,KAAK+gL,YAA0Br9I,EAAKq9I,UAAY/gL,KAAK+gL,WACrD/gL,KAAKghL,cAAgBhhL,KAAKghL,aAAarhB,YAAYj8H,EAAKs9I,aAAehhL,KAAKghL,aAAaxhB,OAAQlpI,GAAOulF,WAC3EzxG,IAA7BpK,KAAKihL,sBAAoCv9I,EAAKu9I,oBAAsBjhL,KAAKihL,0BAC/C72K,IAA1BpK,KAAKkhL,mBAAiCx9I,EAAKw9I,iBAAmBlhL,KAAKkhL,iBAAiB9kB,eAEtEhyJ,IAAdpK,KAAKulD,OAAqB7hB,EAAK6hB,KAAOvlD,KAAKulD,MACvB,OAApBvlD,KAAKo9K,aAAsB15I,EAAK05I,WAAap9K,KAAKo9K,iBACzBhzK,IAAzBpK,KAAKmhL,kBAAgCz9I,EAAKy9I,gBAAkBnhL,KAAKmhL,iBAEjEnhL,KAAK47K,WAAan0B,KAAiB/jH,EAAKk4I,SAAW57K,KAAK47K,UACxD57K,KAAK67K,OAAS10B,KAAYzjH,EAAKm4I,KAAO77K,KAAK67K,MAC3C77K,KAAK87K,eAAep4I,EAAKo4I,cAAe,GAExC97K,KAAKw0B,QAAU,IAAIkP,EAAKlP,QAAUx0B,KAAKw0B,UAClB,IAArBx0B,KAAK+7K,cAAuBr4I,EAAKq4I,YAAc/7K,KAAK+7K,aAEzDr4I,EAAK44I,UAAYt8K,KAAKs8K,UACtB54I,EAAK64I,UAAYv8K,KAAKu8K,UACtB74I,EAAK84I,WAAax8K,KAAKw8K,WACvB94I,EAAK25I,WAAar9K,KAAKq9K,WAEvB35I,EAAKs5I,aAAeh9K,KAAKg9K,aACzBt5I,EAAK+4I,iBAAmBz8K,KAAKy8K,iBAC7B/4I,EAAKg5I,YAAc18K,KAAK08K,YACxBh5I,EAAKi5I,WAAa38K,KAAK28K,WACvBj5I,EAAKk5I,gBAAkB58K,KAAK48K,gBAC5Bl5I,EAAKm5I,YAAc78K,KAAK68K,YACxBn5I,EAAKo5I,aAAe98K,KAAK88K,aACzBp5I,EAAKq5I,aAAe/8K,KAAK+8K,kBAGF3yK,IAAlBpK,KAAKs5J,UAA4C,IAAlBt5J,KAAKs5J,WAAiB51H,EAAK41H,SAAWt5J,KAAKs5J,WAEnD,IAAvBt5J,KAAKs9K,gBAAyB55I,EAAK45I,eAAgB,GACtB,IAA7Bt9K,KAAKu9K,sBAA4B75I,EAAK65I,oBAAsBv9K,KAAKu9K,qBACrC,IAA5Bv9K,KAAKw9K,qBAA2B95I,EAAK85I,mBAAqBx9K,KAAKw9K,yBAE5CpzK,IAAnBpK,KAAKohL,WAA8C,IAAnBphL,KAAKohL,YAAkB19I,EAAK09I,UAAYphL,KAAKohL,gBAC3Dh3K,IAAlBpK,KAAKqhL,WAAyB39I,EAAK29I,SAAWrhL,KAAKqhL,eAClCj3K,IAAjBpK,KAAKshL,UAAwB59I,EAAK49I,QAAUthL,KAAKshL,cAClCl3K,IAAfpK,KAAKq3I,QAAsB3zG,EAAK2zG,MAAQr3I,KAAKq3I,QAE1B,IAAnBr3I,KAAKy9K,YAAqB/5I,EAAK+5I,WAAY,GAE3Cz9K,KAAKuhL,UAAY,IAAI79I,EAAK69I,UAAYvhL,KAAKuhL,YAClB,IAAzBvhL,KAAK09K,kBAA2Bh6I,EAAKg6I,gBAAkB19K,KAAK09K,kBAChC,IAA5B19K,KAAK29K,qBAA8Bj6I,EAAKi6I,mBAAqB39K,KAAK29K,qBAE/C,IAAnB39K,KAAKwhL,YAAqB99I,EAAK89I,UAAYxhL,KAAKwhL,WAChDxhL,KAAKyhL,mBAAqB,IAAI/9I,EAAK+9I,mBAAqBzhL,KAAKyhL,oBACnC,UAA1BzhL,KAAK0hL,mBAA+Bh+I,EAAKg+I,iBAAmB1hL,KAAK0hL,kBACtC,UAA3B1hL,KAAK2hL,oBAAgCj+I,EAAKi+I,kBAAoB3hL,KAAK2hL,oBAE9C,IAArB3hL,KAAKi+K,cAAuBv6I,EAAKu6I,YAAcj+K,KAAKi+K,cAEnC,IAAjBj+K,KAAK2pE,UAAoBjmC,EAAKimC,SAAU,IAEpB,IAApB3pE,KAAK49K,aAAuBl6I,EAAKk6I,YAAa,GAEV,OAApC7vH,KAAKC,UAAWhuD,KAAKi/J,YAAsBv7H,EAAKu7H,SAAWj/J,KAAKi/J,UAoBhEzB,EAAe,CAEnB,IAAM+B,EAAWwZ,EAAkBziJ,EAAKipI,UAClC9B,EAASsb,EAAkBziJ,EAAKmnI,QAEjC8B,EAAS3nK,OAAS,IAAI8rC,EAAK67H,SAAWA,GACtC9B,EAAO7lK,OAAS,IAAI8rC,EAAK+5H,OAASA,EAExC,CAEA,OAAO/5H,CAER,GAAC,CAAAlhC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAELxB,KAAK7G,KAAOqI,EAAOrI,KAEnB6G,KAAK27K,IAAMn6K,EAAOm6K,IAElB37K,KAAK47K,SAAWp6K,EAAOo6K,SACvB57K,KAAK67K,KAAOr6K,EAAOq6K,KACnB77K,KAAK87K,aAAet6K,EAAOs6K,aAE3B97K,KAAKw0B,QAAUhzB,EAAOgzB,QACtBx0B,KAAK+7K,YAAcv6K,EAAOu6K,YAE1B/7K,KAAKg8K,SAAWx6K,EAAOw6K,SACvBh8K,KAAKi8K,SAAWz6K,EAAOy6K,SACvBj8K,KAAKk8K,cAAgB16K,EAAO06K,cAC5Bl8K,KAAKm8K,cAAgB36K,EAAO26K,cAC5Bn8K,KAAKo8K,cAAgB56K,EAAO46K,cAC5Bp8K,KAAKq8K,mBAAqB76K,EAAO66K,mBAEjCr8K,KAAKs8K,UAAY96K,EAAO86K,UACxBt8K,KAAKu8K,UAAY/6K,EAAO+6K,UACxBv8K,KAAKw8K,WAAah7K,EAAOg7K,WAEzBx8K,KAAKy8K,iBAAmBj7K,EAAOi7K,iBAC/Bz8K,KAAK08K,YAAcl7K,EAAOk7K,YAC1B18K,KAAK28K,WAAan7K,EAAOm7K,WACzB38K,KAAK48K,gBAAkBp7K,EAAOo7K,gBAC9B58K,KAAK68K,YAAcr7K,EAAOq7K,YAC1B78K,KAAK88K,aAAet7K,EAAOs7K,aAC3B98K,KAAK+8K,aAAev7K,EAAOu7K,aAC3B/8K,KAAKg9K,aAAex7K,EAAOw7K,aAE3B,IAAM4E,EAAYpgL,EAAOy7K,eACrB4E,EAAY,KAEhB,GAAmB,OAAdD,EAAqB,CAEzB,IAAM76K,EAAI66K,EAAUhqL,OACpBiqL,EAAY,IAAIllL,MAAOoK,GAEvB,IAAM,IAAIrK,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5BmlL,EAAWnlL,GAAMklL,EAAWllL,GAAIwE,OAIlC,CA4BA,OA1BAlB,KAAKi9K,eAAiB4E,EACtB7hL,KAAKk9K,iBAAmB17K,EAAO07K,iBAC/Bl9K,KAAKm9K,YAAc37K,EAAO27K,YAE1Bn9K,KAAKo9K,WAAa57K,EAAO47K,WAEzBp9K,KAAKq9K,WAAa77K,EAAO67K,WAEzBr9K,KAAKhD,UAAYwE,EAAOxE,UAExBgD,KAAKs9K,cAAgB97K,EAAO87K,cAC5Bt9K,KAAKu9K,oBAAsB/7K,EAAO+7K,oBAClCv9K,KAAKw9K,mBAAqBh8K,EAAOg8K,mBAEjCx9K,KAAKy9K,UAAYj8K,EAAOi8K,UAExBz9K,KAAKuhL,UAAY//K,EAAO+/K,UACxBvhL,KAAK09K,gBAAkBl8K,EAAOk8K,gBAC9B19K,KAAK29K,mBAAqBn8K,EAAOm8K,mBAEjC39K,KAAK2pE,QAAUnoE,EAAOmoE,QAEtB3pE,KAAK49K,WAAap8K,EAAOo8K,WAEzB59K,KAAKi/J,SAAWlxG,KAAK4yC,MAAO5yC,KAAKC,UAAWxsD,EAAOy9J,WAE5Cj/J,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAECuB,KAAKu+B,cAAe,CAAE35B,KAAM,WAE7B,GAAC,CAAApC,IAAA,cAAAysB,IAED,SAAiBxwB,IAED,IAAVA,GAAiBuB,KAAK3G,SAE5B,KAACkiL,CAAA,CA3dY,CAASjqB,IA+dvBiqB,GAAS3+K,UAAUklL,YAAa,EAEhCvG,GAASwG,SAAW,WAInB,OAAO,IAER,EAAE,IAEIC,GAAiB,SAAAC,GAAAjmK,EAAAgmK,EAAAC,GAAA,IAAAC,EAAAvnK,EAAAqnK,GAEtB,SAAAA,EAAaxJ,GAAa,IAAA2J,EA8BI,OA9BJ13K,EAAA,KAAAu3K,IAEzBG,EAAAD,EAAArlL,KAAA,OAEK+H,KAAO,oBAEZu9K,EAAK36I,MAAQ,IAAI+zH,GAAO,UAExB4mB,EAAK5lL,IAAM,KAEX4lL,EAAK9C,SAAW,KAChB8C,EAAK7C,kBAAoB,EAEzB6C,EAAK5C,MAAQ,KACb4C,EAAK3C,eAAiB,EAEtB2C,EAAK/B,YAAc,KAEnB+B,EAAK/C,SAAW,KAEhB+C,EAAK5B,OAAS,KACd4B,EAAK3B,QAAUl3B,GACf64B,EAAKzB,aAAe,EACpByB,EAAKxB,gBAAkB,IAEvBwB,EAAKX,WAAY,EACjBW,EAAKV,mBAAqB,EAC1BU,EAAKT,iBAAmB,QACxBS,EAAKR,kBAAoB,QAEzBQ,EAAKC,UAAW5J,GAAa2J,CAE9B,CAgCC,OAhCA54K,EAAAy4K,EAAA,EAAAx/K,IAAA,OAAA/D,MAED,SAAM+C,GA4BL,OA1BA0lI,GAAA5rH,EAAA0mK,EAAAplL,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OAExBxnC,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKq/K,SAAW79K,EAAO69K,SACvBr/K,KAAKs/K,kBAAoB99K,EAAO89K,kBAEhCt/K,KAAKu/K,MAAQ/9K,EAAO+9K,MACpBv/K,KAAKw/K,eAAiBh+K,EAAOg+K,eAE7Bx/K,KAAKogL,YAAc5+K,EAAO4+K,YAE1BpgL,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAKugL,OAAS/+K,EAAO++K,OACrBvgL,KAAKwgL,QAAUh/K,EAAOg/K,QACtBxgL,KAAK0gL,aAAel/K,EAAOk/K,aAC3B1gL,KAAK2gL,gBAAkBn/K,EAAOm/K,gBAE9B3gL,KAAKwhL,UAAYhgL,EAAOggL,UACxBxhL,KAAKyhL,mBAAqBjgL,EAAOigL,mBACjCzhL,KAAK0hL,iBAAmBlgL,EAAOkgL,iBAC/B1hL,KAAK2hL,kBAAoBngL,EAAOmgL,kBAEzB3hL,IAER,KAACgiL,CAAA,CAlEqB,CAASzG,IAsEhCyG,GAAkBplL,UAAUylL,qBAAsB,EAElD,IAAMC,GAA0B,IAAIxb,GAC9Byb,GAA2B,IAAIptB,GAE/BqtB,GAAe,WAEpB,SAAAA,EAAaz/K,EAAO0/K,EAAU7lB,GAE7B,GAF0CnyJ,EAAA,KAAA+3K,GAErC7lL,MAAM0E,QAAS0B,GAEnB,MAAM,IAAIyH,UAAW,yDAItBxK,KAAK7G,KAAO,GAEZ6G,KAAK+C,MAAQA,EACb/C,KAAKyiL,SAAWA,EAChBziL,KAAK29E,WAAkBvzE,IAAVrH,EAAsBA,EAAMnL,OAAS6qL,EAAW,EAC7DziL,KAAK48J,YAA4B,IAAfA,EAElB58J,KAAK0iL,MAAQhyB,GACb1wJ,KAAK2iL,YAAc,CAAE54I,OAAQ,EAAG4zC,OAAS,GAEzC39E,KAAK3G,QAAU,CAEhB,CA8WC,OA9WAkQ,EAAAi5K,EAAA,EAAAhgL,IAAA,mBAAA/D,MAED,WAAoB,GAAC,CAAA+D,IAAA,cAAAysB,IAErB,SAAiBxwB,IAED,IAAVA,GAAiBuB,KAAK3G,SAE5B,GAAC,CAAAmJ,IAAA,WAAA/D,MAED,SAAUA,GAIT,OAFAuB,KAAK0iL,MAAQjkL,EAENuB,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAUL,OARAxB,KAAK7G,KAAOqI,EAAOrI,KACnB6G,KAAK+C,MAAQ,IAAIvB,EAAOuB,MAAMoX,YAAa3Y,EAAOuB,OAClD/C,KAAKyiL,SAAWjhL,EAAOihL,SACvBziL,KAAK29E,MAAQn8E,EAAOm8E,MACpB39E,KAAK48J,WAAap7J,EAAOo7J,WAEzB58J,KAAK0iL,MAAQlhL,EAAOkhL,MAEb1iL,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQmkL,EAAQ1sB,EAAW2sB,GAE1BD,GAAU5iL,KAAKyiL,SACfI,GAAU3sB,EAAUusB,SAEpB,IAAM,IAAI/lL,EAAI,EAAGmK,EAAI7G,KAAKyiL,SAAU/lL,EAAImK,EAAGnK,IAE1CsD,KAAK+C,MAAO6/K,EAASlmL,GAAMw5J,EAAUnzJ,MAAO8/K,EAASnmL,GAItD,OAAOsD,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsE,GAIV,OAFA/C,KAAK+C,MAAMksB,IAAKlsB,GAET/C,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBu9G,GAKhB,IAHA,IAAMj5G,EAAQ/C,KAAK+C,MACfgnC,EAAS,EAEHrtC,EAAI,EAAGmK,EAAIm1G,EAAOpkH,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAI8qC,EAAQw0E,EAAQt/G,QAEL0N,IAAVo9B,IAEJzzB,QAAQk/C,KAAM,8DAA+Dv2D,GAC7E8qC,EAAQ,IAAI+zH,IAIbx4J,EAAOgnC,KAAcvC,EAAMtgC,EAC3BnE,EAAOgnC,KAAcvC,EAAM9gC,EAC3B3D,EAAOgnC,KAAcvC,EAAMjhC,CAE5B,CAEA,OAAOvG,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBqkL,GAKlB,IAHA,IAAM//K,EAAQ/C,KAAK+C,MACfgnC,EAAS,EAEHrtC,EAAI,EAAGmK,EAAIi8K,EAAQlrL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAElD,IAAIiuK,EAASmY,EAASpmL,QAEN0N,IAAXugK,IAEJ52J,QAAQk/C,KAAM,iEAAkEv2D,GAChFiuK,EAAS,IAAIxV,IAIdpyJ,EAAOgnC,KAAc4gI,EAAOzuK,EAC5B6G,EAAOgnC,KAAc4gI,EAAOtjK,CAE7B,CAEA,OAAOrH,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBqkL,GAKlB,IAHA,IAAM//K,EAAQ/C,KAAK+C,MACfgnC,EAAS,EAEHrtC,EAAI,EAAGmK,EAAIi8K,EAAQlrL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAElD,IAAIiuK,EAASmY,EAASpmL,QAEN0N,IAAXugK,IAEJ52J,QAAQk/C,KAAM,iEAAkEv2D,GAChFiuK,EAAS,IAAI7D,IAId/jK,EAAOgnC,KAAc4gI,EAAOzuK,EAC5B6G,EAAOgnC,KAAc4gI,EAAOtjK,EAC5BtE,EAAOgnC,KAAc4gI,EAAOrjK,CAE7B,CAEA,OAAOtH,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBqkL,GAKlB,IAHA,IAAM//K,EAAQ/C,KAAK+C,MACfgnC,EAAS,EAEHrtC,EAAI,EAAGmK,EAAIi8K,EAAQlrL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAElD,IAAIiuK,EAASmY,EAASpmL,QAEN0N,IAAXugK,IAEJ52J,QAAQk/C,KAAM,iEAAkEv2D,GAChFiuK,EAAS,IAAI/K,IAId78J,EAAOgnC,KAAc4gI,EAAOzuK,EAC5B6G,EAAOgnC,KAAc4gI,EAAOtjK,EAC5BtE,EAAOgnC,KAAc4gI,EAAOrjK,EAC5BvE,EAAOgnC,KAAc4gI,EAAOvjK,CAE7B,CAEA,OAAOpH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcqI,GAEb,GAAuB,IAAlB9G,KAAKyiL,SAET,IAAM,IAAI/lL,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvC6lL,GAAWxX,oBAAqB/qK,KAAMtD,GACtC6lL,GAAW7iB,aAAc54J,GAEzB9G,KAAK+iL,MAAOrmL,EAAG6lL,GAAWrmL,EAAGqmL,GAAWl7K,QAInC,GAAuB,IAAlBrH,KAAKyiL,SAEhB,IAAM,IAAI/lL,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvC4lL,GAAUvX,oBAAqB/qK,KAAMtD,GACrC4lL,GAAU5iB,aAAc54J,GAExB9G,KAAKgjL,OAAQtmL,EAAG4lL,GAAUpmL,EAAGomL,GAAUj7K,EAAGi7K,GAAUh7K,GAMtD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvC4lL,GAAUvX,oBAAqB/qK,KAAMtD,GAErC4lL,GAAUza,aAAc/gK,GAExB9G,KAAKgjL,OAAQtmL,EAAG4lL,GAAUpmL,EAAGomL,GAAUj7K,EAAGi7K,GAAUh7K,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBqI,GAElB,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvC4lL,GAAUvX,oBAAqB/qK,KAAMtD,GAErC4lL,GAAUW,kBAAmBn8K,GAE7B9G,KAAKgjL,OAAQtmL,EAAG4lL,GAAUpmL,EAAGomL,GAAUj7K,EAAGi7K,GAAUh7K,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBqI,GAEnB,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvC4lL,GAAUvX,oBAAqB/qK,KAAMtD,GAErC4lL,GAAU5R,mBAAoB5pK,GAE9B9G,KAAKgjL,OAAQtmL,EAAG4lL,GAAUpmL,EAAGomL,GAAUj7K,EAAGi7K,GAAUh7K,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAKA,GAAoB,IAAbsrC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAIpB,OAFAD,KAAK+C,MAAMksB,IAAKxwB,EAAOsrC,GAEhB/pC,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,OAAO5O,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAEjC,GAAC,CAAAjgL,IAAA,OAAA/D,MAED,SAAMmQ,EAAO1S,GAIZ,OAFA8D,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,UAAavmL,EAE/B8D,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,OAAO5O,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,EAE5C,GAAC,CAAAjgL,IAAA,OAAA/D,MAED,SAAMmQ,EAAOvH,GAIZ,OAFArH,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,GAAMp7K,EAEnCrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,OAAO5O,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,EAE5C,GAAC,CAAAjgL,IAAA,OAAA/D,MAED,SAAMmQ,EAAOtH,GAIZ,OAFAtH,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,GAAMn7K,EAEnCtH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,OAAO5O,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,EAE5C,GAAC,CAAAjgL,IAAA,OAAA/D,MAED,SAAMmQ,EAAOxH,GAIZ,OAFApH,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,GAAMr7K,EAEnCpH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOmQ,EAAO1S,EAAGmL,GAOhB,OALAuH,GAAS5O,KAAKyiL,SAEdziL,KAAK+C,MAAO6L,EAAQ,GAAM1S,EAC1B8D,KAAK+C,MAAO6L,EAAQ,GAAMvH,EAEnBrH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQmQ,EAAO1S,EAAGmL,EAAGC,GAQpB,OANAsH,GAAS5O,KAAKyiL,SAEdziL,KAAK+C,MAAO6L,EAAQ,GAAM1S,EAC1B8D,KAAK+C,MAAO6L,EAAQ,GAAMvH,EAC1BrH,KAAK+C,MAAO6L,EAAQ,GAAMtH,EAEnBtH,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASmQ,EAAO1S,EAAGmL,EAAGC,EAAGF,GASxB,OAPAwH,GAAS5O,KAAKyiL,SAEdziL,KAAK+C,MAAO6L,EAAQ,GAAM1S,EAC1B8D,KAAK+C,MAAO6L,EAAQ,GAAMvH,EAC1BrH,KAAK+C,MAAO6L,EAAQ,GAAMtH,EAC1BtH,KAAK+C,MAAO6L,EAAQ,GAAMxH,EAEnBpH,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU05C,GAIT,OAFAn4C,KAAKkjL,iBAAmB/qI,EAEjBn4C,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAK+C,MAAO/C,KAAKyiL,UAAW/mB,KAAM17J,KAEhE,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAO,CACZ++I,SAAUziL,KAAKyiL,SACf79K,KAAM5E,KAAK+C,MAAMoX,YAAYhhB,KAC7B4J,MAAOpG,MAAMC,UAAUgU,MAAM/T,KAAMmD,KAAK+C,OACxC65J,WAAY58J,KAAK48J,YAOlB,MAJmB,KAAd58J,KAAK7G,OAAcuqC,EAAKvqC,KAAO6G,KAAK7G,MACpC6G,KAAK0iL,QAAUhyB,KAAkBhtH,EAAKg/I,MAAQ1iL,KAAK0iL,OACvB,IAA5B1iL,KAAK2iL,YAAY54I,SAA6C,IAA7B/pC,KAAK2iL,YAAYhlG,QAAgBj6C,EAAKi/I,YAAc3iL,KAAK2iL,aAExFj/I,CAER,KAAC8+I,CAAA,CApYmB,GAwYrBA,GAAgB5lL,UAAUumL,mBAAoB,EAE9C,IAEMC,GAAmB,SAAAC,GAAArnK,EAAAonK,EAAAC,GAAA,IAAAC,EAAA3oK,EAAAyoK,GAExB,SAAAA,EAAargL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAA24K,GAAAE,EAAAzmL,KAAA,KAEnC,IAAIo4J,UAAWlyJ,GAAS0/K,EAAU7lB,EAE1C,CAAC,OAAArzJ,EAAA65K,EAAA,CANuB,CAASZ,IAU5Be,GAAoB,SAAAC,GAAAxnK,EAAAunK,EAAAC,GAAA,IAAAC,EAAA9oK,EAAA4oK,GAEzB,SAAAA,EAAaxgL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAA84K,GAAAE,EAAA5mL,KAAA,KAEnC,IAAI04G,WAAYxyG,GAAS0/K,EAAU7lB,EAE3C,CAAC,OAAArzJ,EAAAg6K,EAAA,CANwB,CAASf,IAU7BkB,GAA2B,SAAAC,GAAA3nK,EAAA0nK,EAAAC,GAAA,IAAAC,EAAAjpK,EAAA+oK,GAEhC,SAAAA,EAAa3gL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAAi5K,GAAAE,EAAA/mL,KAAA,KAEnC,IAAIk9J,kBAAmBh3J,GAAS0/K,EAAU7lB,EAElD,CAAC,OAAArzJ,EAAAm6K,EAAA,CAN+B,CAASlB,IAUpCqB,GAAoB,SAAAC,GAAA9nK,EAAA6nK,EAAAC,GAAA,IAAAC,EAAAppK,EAAAkpK,GAEzB,SAAAA,EAAa9gL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAAo5K,GAAAE,EAAAlnL,KAAA,KAEnC,IAAIm4J,WAAYjyJ,GAAS0/K,EAAU7lB,EAE3C,CAAC,OAAArzJ,EAAAs6K,EAAA,CANwB,CAASrB,IAU7BwB,GAAqB,SAAAC,GAAAjoK,EAAAgoK,EAAAC,GAAA,IAAAC,EAAAvpK,EAAAqpK,GAE1B,SAAAA,EAAajhL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAAu5K,GAAAE,EAAArnL,KAAA,KAEnC,IAAIi4J,YAAa/xJ,GAAS0/K,EAAU7lB,EAE5C,CAAC,OAAArzJ,EAAAy6K,EAAA,CANyB,CAASxB,IAU9B2B,GAAoB,SAAAC,GAAApoK,EAAAmoK,EAAAC,GAAA,IAAAC,EAAA1pK,EAAAwpK,GAEzB,SAAAA,EAAaphL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAA05K,GAAAE,EAAAxnL,KAAA,KAEnC,IAAIm9J,WAAYj3J,GAAS0/K,EAAU7lB,EAE3C,CAAC,OAAArzJ,EAAA46K,EAAA,CANwB,CAAS3B,IAU7B8B,GAAqB,SAAAC,GAAAvoK,EAAAsoK,EAAAC,GAAA,IAAAC,EAAA7pK,EAAA2pK,GAE1B,SAAAA,EAAavhL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAA65K,GAAAE,EAAA3nL,KAAA,KAEnC,IAAI0qG,YAAaxkG,GAAS0/K,EAAU7lB,EAE5C,CAAC,OAAArzJ,EAAA+6K,EAAA,CANyB,CAAS9B,IAU9BiC,GAAsB,SAAAC,GAAA1oK,EAAAyoK,EAAAC,GAAA,IAAAC,EAAAhqK,EAAA8pK,GAE3B,SAAAA,EAAa1hL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAAg6K,GAAAE,EAAA9nL,KAAA,KAEnC,IAAIi4J,YAAa/xJ,GAAS0/K,EAAU7lB,EAE5C,CAAC,OAAArzJ,EAAAk7K,EAAA,CAN0B,CAASjC,IAUrCiC,GAAuB7nL,UAAUgoL,0BAA2B,EAAK,IAE3DC,GAAsB,SAAAC,GAAA9oK,EAAA6oK,EAAAC,GAAA,IAAAC,EAAApqK,EAAAkqK,GAE3B,SAAAA,EAAa9hL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAAo6K,GAAAE,EAAAloL,KAAA,KAEnC,IAAIg4J,aAAc9xJ,GAAS0/K,EAAU7lB,EAE7C,CAAC,OAAArzJ,EAAAs7K,EAAA,CAN0B,CAASrC,IAU/BwC,GAAsB,SAAAC,GAAAjpK,EAAAgpK,EAAAC,GAAA,IAAAC,EAAAvqK,EAAAqqK,GAE3B,SAAAA,EAAajiL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAAu6K,GAAAE,EAAAroL,KAAA,KAEnC,IAAIo9J,aAAcl3J,GAAS0/K,EAAU7lB,EAE7C,CAAC,OAAArzJ,EAAAy7K,EAAA,CAN0B,CAASxC,IAUjC2C,GAAQ,EAENC,GAAoB,IAAIzU,GACxB0U,GAAqB,IAAI7P,GACzB8P,GAAwB,IAAIxe,GAC5Bye,GAAuB,IAAI7b,GAC3B8b,GAAiC,IAAI9b,GACrC+b,GAA0B,IAAI3e,GAE9B4e,GAAc,SAAAC,GAAA3pK,EAAA0pK,EAAAC,GAAA,IAAAC,EAAAjrK,EAAA+qK,GAEnB,SAAAA,IAAc,IAAAG,EAwBM,OAxBNp7K,EAAA,KAAAi7K,GAEbG,EAAAD,EAAA/oL,KAAA,MAEA0B,OAAOC,eAAcgd,EAAAqqK,GAAQ,KAAM,CAAEpnL,MAAO0mL,OAE5CU,EAAKhqE,KAAOg2C,KAEZg0B,EAAK1sL,KAAO,GACZ0sL,EAAKjhL,KAAO,iBAEZihL,EAAKj3K,MAAQ,KACbi3K,EAAK3zG,WAAa,CAAC,EAEnB2zG,EAAKC,gBAAkB,CAAC,EACxBD,EAAKE,sBAAuB,EAE5BF,EAAKG,OAAS,GAEdH,EAAK7a,YAAc,KACnB6a,EAAKI,eAAiB,KAEtBJ,EAAKK,UAAY,CAAEp7I,MAAO,EAAG6yC,MAAOx0B,KAEpC08H,EAAK5mB,SAAW,CAAC,EAAE4mB,CAEpB,CAkjCC,OAljCAt8K,EAAAm8K,EAAA,EAAAljL,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAK4O,KAEb,GAAC,CAAApM,IAAA,WAAA/D,MAED,SAAUmQ,GAYT,OAVKjS,MAAM0E,QAASuN,GAEnB5O,KAAK4O,MAAQ,IAAMgrJ,GAAkBhrJ,GAAU01K,GAAwBN,IAAyBp1K,EAAO,GAIvG5O,KAAK4O,MAAQA,EAIP5O,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAActF,GAEb,OAAO6G,KAAKkyE,WAAY/4E,EAEzB,GAAC,CAAAqJ,IAAA,eAAA/D,MAED,SAActF,EAAM+8J,GAInB,OAFAl2J,KAAKkyE,WAAY/4E,GAAS+8J,EAEnBl2J,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBtF,GAIhB,cAFO6G,KAAKkyE,WAAY/4E,GAEjB6G,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAActF,GAEb,YAAmCiR,IAA5BpK,KAAKkyE,WAAY/4E,EAEzB,GAAC,CAAAqJ,IAAA,WAAA/D,MAED,SAAUqsC,EAAO6yC,GAA2B,IAApBwoG,EAAalmL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEvCD,KAAKgmL,OAAOlpL,KAAM,CAEjBguC,MAAOA,EACP6yC,MAAOA,EACPwoG,cAAeA,GAIjB,GAAC,CAAA3jL,IAAA,cAAA/D,MAED,WAECuB,KAAKgmL,OAAS,EAEf,GAAC,CAAAxjL,IAAA,eAAA/D,MAED,SAAcqsC,EAAO6yC,GAEpB39E,KAAKkmL,UAAUp7I,MAAQA,EACvB9qC,KAAKkmL,UAAUvoG,MAAQA,CAExB,GAAC,CAAAn7E,IAAA,eAAA/D,MAED,SAAci7J,GAEb,IAAMn6F,EAAWv/D,KAAKkyE,WAAW3S,cAEfn1D,IAAbm1D,IAEJA,EAASsoG,aAAcnO,GAEvBn6F,EAAS+/F,aAAc,GAIxB,IAAMyJ,EAAS/oK,KAAKkyE,WAAW62F,OAE/B,QAAgB3+J,IAAX2+J,EAAuB,CAE3B,IAAM8M,GAAe,IAAIrf,IAAU4vB,gBAAiB1sB,GAEpDqP,EAAOka,kBAAmBpN,GAE1B9M,EAAOzJ,aAAc,CAEtB,CAEA,IAAM+mB,EAAUrmL,KAAKkyE,WAAWm0G,QAsBhC,YApBiBj8K,IAAZi8K,IAEJA,EAAQ3V,mBAAoBhX,GAE5B2sB,EAAQ/mB,aAAc,GAIG,OAArBt/J,KAAKgrK,aAEThrK,KAAKirK,qBAIuB,OAAxBjrK,KAAKimL,gBAETjmL,KAAKsmL,wBAICtmL,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBwI,GAMhB,OAJAm+K,GAAI/Q,2BAA4BptK,GAEhCjH,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASm3J,GAQR,OAJAwvB,GAAImB,cAAe3wB,GAEnB51J,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASm3J,GAQR,OAJAwvB,GAAIoB,cAAe5wB,GAEnB51J,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASm3J,GAQR,OAJAwvB,GAAIqB,cAAe7wB,GAEnB51J,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWvC,EAAGmL,EAAGC,GAQhB,OAJA89K,GAAIsB,gBAAiBxqL,EAAGmL,EAAGC,GAE3BtH,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOvC,EAAGmL,EAAGC,GAQZ,OAJA89K,GAAIuB,UAAWzqL,EAAGmL,EAAGC,GAErBtH,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQksK,GAQP,OANA0a,GAAKtO,OAAQpM,GAEb0a,GAAKhP,eAELr2K,KAAK6nK,aAAcwd,GAAK3rB,QAEjB15J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAQC,OANAuB,KAAKirK,qBAELjrK,KAAKgrK,YAAYS,UAAW6Z,IAAUsB,SAEtC5mL,KAAK6mL,UAAWvB,GAAQppL,EAAGopL,GAAQj+K,EAAGi+K,GAAQh+K,GAEvCtH,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAewrK,GAId,IAFA,IAAM1qG,EAAW,GAEP7iE,EAAI,EAAGmK,EAAIojK,EAAOryK,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAMguK,EAAQT,EAAQvtK,GACtB6iE,EAASziE,KAAM4tK,EAAMxuK,EAAGwuK,EAAMrjK,EAAGqjK,EAAMpjK,GAAK,EAE7C,CAIA,OAFAtH,KAAK8S,aAAc,WAAY,IAAI+xK,GAAwBtlH,EAAU,IAE9Dv/D,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,WAE2B,OAArBuB,KAAKgrK,cAEThrK,KAAKgrK,YAAc,IAAItB,IAIxB,IAAMnqG,EAAWv/D,KAAKkyE,WAAW3S,SAC3BunH,EAA0B9mL,KAAK8lL,gBAAgBvmH,SAErD,GAAKA,GAAYA,EAASwnH,oBASzB,OAPAhzK,QAAQwN,MAAO,kJAAmJvhB,WAElKA,KAAKgrK,YAAY/7I,IAChB,IAAI63I,IAAW39G,KAAYA,KAAYA,KACvC,IAAI29G,GAAW39G,IAAYA,IAAYA,MAOzC,QAAkB/+C,IAAbm1D,GAMJ,GAJAv/D,KAAKgrK,YAAYgc,uBAAwBznH,GAIpCunH,EAEJ,IAAM,IAAIpqL,EAAI,EAAGowD,EAAKg6H,EAAwBlvL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEpE,IAAMuqL,EAAiBH,EAAyBpqL,GAChD6oL,GAAOyB,uBAAwBC,GAE1BjnL,KAAK+lL,sBAETN,GAAUpwB,WAAYr1J,KAAKgrK,YAAY9/H,IAAKq6I,GAAOr6I,KACnDlrC,KAAKgrK,YAAYb,cAAesb,IAEhCA,GAAUpwB,WAAYr1J,KAAKgrK,YAAY9tK,IAAKqoL,GAAOroL,KACnD8C,KAAKgrK,YAAYb,cAAesb,MAIhCzlL,KAAKgrK,YAAYb,cAAeob,GAAOr6I,KACvClrC,KAAKgrK,YAAYb,cAAeob,GAAOroL,KAIzC,OAMD8C,KAAKgrK,YAAYd,aAIb5yJ,MAAOtX,KAAKgrK,YAAY9/H,IAAIhvC,IAAOob,MAAOtX,KAAKgrK,YAAY9/H,IAAI7jC,IAAOiQ,MAAOtX,KAAKgrK,YAAY9/H,IAAI5jC,KAEtGyM,QAAQwN,MAAO,sIAAuIvhB,KAIxJ,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,WAE8B,OAAxBuB,KAAKimL,iBAETjmL,KAAKimL,eAAiB,IAAI/Y,IAI3B,IAAM3tG,EAAWv/D,KAAKkyE,WAAW3S,SAC3BunH,EAA0B9mL,KAAK8lL,gBAAgBvmH,SAErD,GAAKA,GAAYA,EAASwnH,oBAMzB,OAJAhzK,QAAQwN,MAAO,wJAAyJvhB,WAExKA,KAAKimL,eAAeh3J,IAAK,IAAI63I,GAAW39G,KAMzC,GAAKoW,EAAW,CAIf,IAAM82F,EAASr2J,KAAKimL,eAAe5vB,OAMnC,GAJAkvB,GAAOyB,uBAAwBznH,GAI1BunH,EAEJ,IAAM,IAAIpqL,EAAI,EAAGowD,EAAKg6H,EAAwBlvL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEpE,IAAMuqL,EAAiBH,EAAyBpqL,GAChD8oL,GAAiBwB,uBAAwBC,GAEpCjnL,KAAK+lL,sBAETN,GAAUpwB,WAAYkwB,GAAOr6I,IAAKs6I,GAAiBt6I,KACnDq6I,GAAOpb,cAAesb,IAEtBA,GAAUpwB,WAAYkwB,GAAOroL,IAAKsoL,GAAiBtoL,KACnDqoL,GAAOpb,cAAesb,MAItBF,GAAOpb,cAAeqb,GAAiBt6I,KACvCq6I,GAAOpb,cAAeqb,GAAiBtoL,KAIzC,CAIDqoL,GAAO9Z,UAAWpV,GAOlB,IAFA,IAAI+W,EAAc,EAER1wK,EAAI,EAAGowD,EAAKyS,EAASoe,MAAOjhF,EAAIowD,EAAIpwD,IAE7C+oL,GAAU1a,oBAAqBxrG,EAAU7iE,GAEzC0wK,EAAcnwK,KAAKC,IAAKkwK,EAAa/W,EAAOP,kBAAmB2vB,KAMhE,GAAKqB,EAEJ,IAAM,IAAIpqL,EAAI,EAAGowD,EAAKg6H,EAAwBlvL,OAAQ8E,EAAIowD,EAAIpwD,IAK7D,IAHA,IAAMuqL,EAAiBH,EAAyBpqL,GAC1CqpL,EAAuB/lL,KAAK+lL,qBAExBl2K,EAAI,EAAGq3K,EAAKD,EAAetpG,MAAO9tE,EAAIq3K,EAAIr3K,IAEnD41K,GAAU1a,oBAAqBkc,EAAgBp3K,GAE1Ck2K,IAEJT,GAAQva,oBAAqBxrG,EAAU1vD,GACvC41K,GAAUr5J,IAAKk5J,KAIhBlY,EAAcnwK,KAAKC,IAAKkwK,EAAa/W,EAAOP,kBAAmB2vB,KAQlEzlL,KAAKimL,eAAe/c,OAASjsK,KAAK04J,KAAMyX,GAEnC91J,MAAOtX,KAAKimL,eAAe/c,SAE/Bn1J,QAAQwN,MAAO,+HAAgIvhB,KAIjJ,CAED,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,WAEC,IAAMmQ,EAAQ5O,KAAK4O,MACbsjE,EAAalyE,KAAKkyE,WAKxB,GAAe,OAAVtjE,QACqBxE,IAAxB8nE,EAAW3S,eACWn1D,IAAtB8nE,EAAW62F,aACO3+J,IAAlB8nE,EAAWutF,GAHb,CAUA,IAAM0nB,EAAUv4K,EAAM7L,MAChBqkL,EAAYl1G,EAAW3S,SAASx8D,MAChCskL,EAAUn1G,EAAW62F,OAAOhmK,MAC5BukL,EAAMp1G,EAAWutF,GAAG18J,MAEpBwkL,EAAYH,EAAUxvL,OAAS,GAEG,IAAnCoI,KAAK8pG,aAAc,YAEvB9pG,KAAK8S,aAAc,UAAW,IAAI0vK,GAAiB,IAAI3tB,aAAc,EAAI0yB,GAAa,IAQvF,IAJA,IAAMC,EAAWxnL,KAAK4pE,aAAc,WAAY7mE,MAE1C0kL,EAAO,GAAIC,EAAO,GAEdhrL,EAAI,EAAGA,EAAI6qL,EAAW7qL,IAE/B+qL,EAAM/qL,GAAM,IAAIoqK,GAChB4gB,EAAMhrL,GAAM,IAAIoqK,GAIjB,IAAM6gB,EAAK,IAAI7gB,GACd8gB,EAAK,IAAI9gB,GACT+gB,EAAK,IAAI/gB,GAETghB,EAAM,IAAI3yB,GACV4yB,EAAM,IAAI5yB,GACV6yB,EAAM,IAAI7yB,GAEV8yB,EAAO,IAAInhB,GACXohB,EAAO,IAAIphB,GAqCRkf,EAAShmL,KAAKgmL,OAEK,IAAlBA,EAAOpuL,SAEXouL,EAAS,CAAE,CACVl7I,MAAO,EACP6yC,MAAOwpG,EAAQvvL,UAKjB,IAAM,IAAI8E,EAAI,EAAGowD,EAAKk5H,EAAOpuL,OAAQ8E,EAAIowD,IAAOpwD,EAO/C,IALA,IAAM+qG,EAAQu+E,EAAQtpL,GAEhBouC,EAAQ28D,EAAM38D,MAGVj7B,EAAIi7B,EAAOo8I,EAAKp8I,EAFZ28D,EAAM9pB,MAEqB9tE,EAAIq3K,EAAIr3K,GAAK,EAErDs4K,EACChB,EAASt3K,EAAI,GACbs3K,EAASt3K,EAAI,GACbs3K,EAASt3K,EAAI,IAmChB,IA5BA,IAAMipJ,EAAM,IAAIgO,GAAWshB,EAAO,IAAIthB,GAChC//J,EAAI,IAAI+/J,GAAWuhB,EAAK,IAAIvhB,GA2BxBpqK,EAAI,EAAGowD,EAAKk5H,EAAOpuL,OAAQ8E,EAAIowD,IAAOpwD,EAO/C,IALA,IAAM+qG,EAAQu+E,EAAQtpL,GAEhBouC,EAAQ28D,EAAM38D,MAGVj7B,EAAIi7B,EAAOo8I,EAAKp8I,EAFZ28D,EAAM9pB,MAEqB9tE,EAAIq3K,EAAIr3K,GAAK,EAErDy4K,EAAcnB,EAASt3K,EAAI,IAC3By4K,EAAcnB,EAASt3K,EAAI,IAC3By4K,EAAcnB,EAASt3K,EAAI,GA7I7B,MAHCkE,QAAQwN,MAAO,gHAwChB,SAAS4mK,EAAgBnsL,EAAGuK,EAAGtK,GAE9B0rL,EAAGhuB,UAAWytB,EAAe,EAAJprL,GACzB4rL,EAAGjuB,UAAWytB,EAAe,EAAJ7gL,GACzBshL,EAAGluB,UAAWytB,EAAe,EAAJnrL,GAEzB6rL,EAAInuB,UAAW2tB,EAAS,EAAJtrL,GACpB+rL,EAAIpuB,UAAW2tB,EAAS,EAAJ/gL,GACpByhL,EAAIruB,UAAW2tB,EAAS,EAAJrrL,GAEpB2rL,EAAG9e,IAAK6e,GACRE,EAAG/e,IAAK6e,GAERI,EAAIjf,IAAKgf,GACTE,EAAIlf,IAAKgf,GAET,IAAM5gL,EAAI,GAAQ6gL,EAAI7rL,EAAI8rL,EAAI3gL,EAAI2gL,EAAI9rL,EAAI6rL,EAAI1gL,GAIvCkhL,SAAUrhL,KAEjB+gL,EAAKvsB,KAAMksB,GAAKryB,eAAgByyB,EAAI3gL,GAAIqzK,gBAAiBmN,GAAME,EAAI1gL,GAAIkuJ,eAAgBruJ,GACvFghL,EAAKxsB,KAAMmsB,GAAKtyB,eAAgBwyB,EAAI7rL,GAAIw+K,gBAAiBkN,GAAMI,EAAI9rL,GAAIq5J,eAAgBruJ,GAEvFugL,EAAMzrL,GAAIowB,IAAK67J,GACfR,EAAMlhL,GAAI6lB,IAAK67J,GACfR,EAAMxrL,GAAImwB,IAAK67J,GAEfP,EAAM1rL,GAAIowB,IAAK87J,GACfR,EAAMnhL,GAAI6lB,IAAK87J,GACfR,EAAMzrL,GAAImwB,IAAK87J,GAEhB,CAmCA,SAASI,EAAcnhL,GAEtBJ,EAAE4yJ,UAAW0tB,EAAa,EAAJlgL,GACtBkhL,EAAG3sB,KAAM30J,GAET,IAAMzP,EAAImwL,EAAMtgL,GAIhB2xJ,EAAI4C,KAAMpkK,GACVwhK,EAAIgQ,IAAK/hK,EAAEwuJ,eAAgBxuJ,EAAEk9J,IAAK3sK,KAAQupH,YAI1CunE,EAAKlgB,aAAcmgB,EAAI/wL,GACvB,IACM8P,EADOghL,EAAKnkB,IAAKyjB,EAAMvgL,IACV,GAAU,EAAM,EAEnCqgL,EAAc,EAAJrgL,GAAU2xJ,EAAI58J,EACxBsrL,EAAc,EAAJrgL,EAAQ,GAAM2xJ,EAAIzxJ,EAC5BmgL,EAAc,EAAJrgL,EAAQ,GAAM2xJ,EAAIxxJ,EAC5BkgL,EAAc,EAAJrgL,EAAQ,GAAMC,CAEzB,CAmBD,GAAC,CAAA5E,IAAA,uBAAA/D,MAED,WAEC,IAAMmQ,EAAQ5O,KAAK4O,MACb45K,EAAoBxoL,KAAK4pE,aAAc,YAE7C,QAA2Bx/D,IAAtBo+K,EAAkC,CAEtC,IAAIC,EAAkBzoL,KAAK4pE,aAAc,UAEzC,QAAyBx/D,IAApBq+K,EAEJA,EAAkB,IAAIjG,GAAiB,IAAI3tB,aAAwC,EAA1B2zB,EAAkB7qG,OAAa,GACxF39E,KAAK8S,aAAc,SAAU21K,QAM7B,IAAM,IAAI/rL,EAAI,EAAGowD,EAAK27H,EAAgB9qG,MAAOjhF,EAAIowD,EAAIpwD,IAEpD+rL,EAAgBzF,OAAQtmL,EAAG,EAAG,EAAG,GAMnC,IAAMgsL,EAAK,IAAI5hB,GAAW6hB,EAAK,IAAI7hB,GAAW8hB,EAAK,IAAI9hB,GACjD+hB,EAAK,IAAI/hB,GAAWgiB,EAAK,IAAIhiB,GAAWiiB,EAAK,IAAIjiB,GACjD90J,EAAK,IAAI80J,GAAW71I,EAAK,IAAI61I,GAInC,GAAKl4J,EAEJ,IAAM,IAAIlS,EAAI,EAAGowD,EAAKl+C,EAAM+uE,MAAOjhF,EAAIowD,EAAIpwD,GAAK,EAAI,CAEnD,IAAMirL,EAAK/4K,EAAMunJ,KAAMz5J,EAAI,GACrBkrL,EAAKh5K,EAAMunJ,KAAMz5J,EAAI,GACrBmrL,EAAKj5K,EAAMunJ,KAAMz5J,EAAI,GAE3BgsL,EAAG3d,oBAAqByd,EAAmBb,GAC3CgB,EAAG5d,oBAAqByd,EAAmBZ,GAC3CgB,EAAG7d,oBAAqByd,EAAmBX,GAE3C71K,EAAGsjJ,WAAYszB,EAAID,GACnB13J,EAAGqkI,WAAYozB,EAAIC,GACnB32K,EAAGw+J,MAAOv/I,GAEV43J,EAAG9d,oBAAqB0d,EAAiBd,GACzCmB,EAAG/d,oBAAqB0d,EAAiBb,GACzCmB,EAAGhe,oBAAqB0d,EAAiBZ,GAEzCgB,EAAGz8J,IAAKpa,GACR82K,EAAG18J,IAAKpa,GACR+2K,EAAG38J,IAAKpa,GAERy2K,EAAgBzF,OAAQ2E,EAAIkB,EAAG3sL,EAAG2sL,EAAGxhL,EAAGwhL,EAAGvhL,GAC3CmhL,EAAgBzF,OAAQ4E,EAAIkB,EAAG5sL,EAAG4sL,EAAGzhL,EAAGyhL,EAAGxhL,GAC3CmhL,EAAgBzF,OAAQ6E,EAAIkB,EAAG7sL,EAAG6sL,EAAG1hL,EAAG0hL,EAAGzhL,EAE5C,MAMA,IAAM,IAAI5K,EAAI,EAAGowD,EAAK07H,EAAkB7qG,MAAOjhF,EAAIowD,EAAIpwD,GAAK,EAE3DgsL,EAAG3d,oBAAqByd,EAAmB9rL,EAAI,GAC/CisL,EAAG5d,oBAAqByd,EAAmB9rL,EAAI,GAC/CksL,EAAG7d,oBAAqByd,EAAmB9rL,EAAI,GAE/CsV,EAAGsjJ,WAAYszB,EAAID,GACnB13J,EAAGqkI,WAAYozB,EAAIC,GACnB32K,EAAGw+J,MAAOv/I,GAEVw3J,EAAgBzF,OAAQtmL,EAAI,EAAGsV,EAAG9V,EAAG8V,EAAG3K,EAAG2K,EAAG1K,GAC9CmhL,EAAgBzF,OAAQtmL,EAAI,EAAGsV,EAAG9V,EAAG8V,EAAG3K,EAAG2K,EAAG1K,GAC9CmhL,EAAgBzF,OAAQtmL,EAAI,EAAGsV,EAAG9V,EAAG8V,EAAG3K,EAAG2K,EAAG1K,GAMhDtH,KAAKgpL,mBAELP,EAAgBnpB,aAAc,CAE/B,CAED,GAAC,CAAA98J,IAAA,QAAA/D,MAED,SAAOqsK,EAAU/gI,GAEhB,GAAS+gI,GAAYA,EAASme,iBAA9B,MAOgB7+K,IAAX2/B,IAEJA,EAAS,EAETh2B,QAAQk/C,KACP,2JAMF,IAAMif,EAAalyE,KAAKkyE,WAExB,IAAM,IAAM1vE,KAAO0vE,EAElB,QAAoC9nE,IAA/B0gK,EAAS54F,WAAY1vE,GAW1B,IATA,IACM0mL,EADah3G,EAAY1vE,GACIO,MAE7BomL,EAAare,EAAS54F,WAAY1vE,GAClC4mL,EAAkBD,EAAWpmL,MAE7BsmL,EAAkBF,EAAW1G,SAAW14I,EACxCnyC,EAASqF,KAAKiuC,IAAKk+I,EAAgBxxL,OAAQsxL,EAAgBtxL,OAASyxL,GAEhE3sL,EAAI,EAAGmT,EAAIw5K,EAAiB3sL,EAAI9E,EAAQ8E,IAAMmT,IAEvDq5K,EAAiBr5K,GAAMu5K,EAAiB1sL,GAM1C,OAAOsD,IApCP,CAHC+T,QAAQwN,MAAO,kFAAmFupJ,EAyCpG,GAAC,CAAAtoK,IAAA,mBAAA/D,MAED,WAIC,IAFA,IAAM4oL,EAAUrnL,KAAKkyE,WAAW62F,OAEtBrsK,EAAI,EAAGowD,EAAKu6H,EAAQ1pG,MAAOjhF,EAAIowD,EAAIpwD,IAE5C+oL,GAAU1a,oBAAqBsc,EAAS3qL,GAExC+oL,GAAU5kE,YAEVwmE,EAAQrE,OAAQtmL,EAAG+oL,GAAUvpL,EAAGupL,GAAUp+K,EAAGo+K,GAAUn+K,EAIzD,GAAC,CAAA9E,IAAA,eAAA/D,MAED,WAEC,SAAS6qL,EAAwBpzB,EAAWixB,GAU3C,IARA,IAAMpkL,EAAQmzJ,EAAUnzJ,MAClB0/K,EAAWvsB,EAAUusB,SACrB7lB,EAAa1G,EAAU0G,WAEvB2sB,EAAS,IAAIxmL,EAAMoX,YAAagtK,EAAQvvL,OAAS6qL,GAEnD7zK,EAAQ,EAAGi0K,EAAS,EAEdnmL,EAAI,EAAGmK,EAAIsgL,EAAQvvL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAIjDkS,EAFIsnJ,EAAUszB,6BAENrC,EAASzqL,GAAMw5J,EAAUxyH,KAAK+lJ,OAASvzB,EAAUnsH,OAIjDo9I,EAASzqL,GAAM+lL,EAIxB,IAAM,IAAI5yK,EAAI,EAAGA,EAAI4yK,EAAU5yK,IAE9B05K,EAAQ1G,KAAc9/K,EAAO6L,IAI/B,CAEA,OAAO,IAAI4zK,GAAiB+G,EAAQ9G,EAAU7lB,EAE/C,CAIA,GAAoB,OAAf58J,KAAK4O,MAGT,OADAmF,QAAQk/C,KAAM,+EACPjzD,KAIR,IAAM0pL,EAAY,IAAIhE,EAEhByB,EAAUnnL,KAAK4O,MAAM7L,MACrBmvE,EAAalyE,KAAKkyE,WAIxB,IAAM,IAAM/4E,KAAQ+4E,EAAa,CAEhC,IAEMy3G,EAAeL,EAFHp3G,EAAY/4E,GAE0BguL,GAExDuC,EAAU52K,aAAc3Z,EAAMwwL,EAE/B,CAIA,IAAM7D,EAAkB9lL,KAAK8lL,gBAE7B,IAAM,IAAM3sL,KAAQ2sL,EAAkB,CAKrC,IAHA,IAAM8D,EAAa,GACb3C,EAAiBnB,EAAiB3sL,GAE9BuD,EAAI,EAAGowD,EAAKm6H,EAAervL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAE3D,IAEMitL,EAAeL,EAFHrC,EAAgBvqL,GAEsByqL,GAExDyC,EAAW9sL,KAAM6sL,EAElB,CAEAD,EAAU5D,gBAAiB3sL,GAASywL,CAErC,CAEAF,EAAU3D,qBAAuB/lL,KAAK+lL,qBAMtC,IAFA,IAAMC,EAAShmL,KAAKgmL,OAEVtpL,EAAI,EAAGmK,EAAIm/K,EAAOpuL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAM+qG,EAAQu+E,EAAQtpL,GACtBgtL,EAAUG,SAAUpiF,EAAM38D,MAAO28D,EAAM9pB,MAAO8pB,EAAM0+E,cAErD,CAEA,OAAOuD,CAER,GAAC,CAAAlnL,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAO,CACZ+6E,SAAU,CACTplH,QAAS,IACTuL,KAAM,iBACNgrF,UAAW,0BAWb,GALAlsD,EAAKm4E,KAAO77G,KAAK67G,KACjBn4E,EAAK9+B,KAAO5E,KAAK4E,KACE,KAAd5E,KAAK7G,OAAcuqC,EAAKvqC,KAAO6G,KAAK7G,MACpCoF,OAAOqD,KAAM5B,KAAKi/J,UAAWrnK,OAAS,IAAI8rC,EAAKu7H,SAAWj/J,KAAKi/J,eAE3C70J,IAApBpK,KAAKw4K,WAA2B,CAEpC,IAAMA,EAAax4K,KAAKw4K,WAExB,IAAM,IAAMh2K,KAAOg2K,OAESpuK,IAAtBouK,EAAYh2K,KAAsBkhC,EAAMlhC,GAAQg2K,EAAYh2K,IAIlE,OAAOkhC,CAER,CAIAA,EAAKA,KAAO,CAAEwuC,WAAY,CAAC,GAE3B,IAAMtjE,EAAQ5O,KAAK4O,MAEJ,OAAVA,IAEJ80B,EAAKA,KAAK90B,MAAQ,CACjBhK,KAAMgK,EAAM7L,MAAMoX,YAAYhhB,KAC9B4J,MAAOpG,MAAMC,UAAUgU,MAAM/T,KAAM+R,EAAM7L,SAK3C,IAAMmvE,EAAalyE,KAAKkyE,WAExB,IAAM,IAAM1vE,KAAO0vE,EAAa,CAE/B,IAAMgkF,EAAYhkF,EAAY1vE,GAE9BkhC,EAAKA,KAAKwuC,WAAY1vE,GAAQ0zJ,EAAUsJ,OAAQ97H,EAAKA,KAEtD,CAEA,IAAMoiJ,EAAkB,CAAC,EACrBgE,GAAqB,EAEzB,IAAM,IAAMtnL,KAAOxC,KAAK8lL,gBAAkB,CAMzC,IAJA,IAAMiE,EAAiB/pL,KAAK8lL,gBAAiBtjL,GAEvCO,EAAQ,GAEJrG,EAAI,EAAGowD,EAAKi9H,EAAenyL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAE3D,IAAMw5J,EAAY6zB,EAAgBrtL,GAElCqG,EAAMjG,KAAMo5J,EAAUsJ,OAAQ97H,EAAKA,MAEpC,CAEK3gC,EAAMnL,OAAS,IAEnBkuL,EAAiBtjL,GAAQO,EAEzB+mL,GAAqB,EAIvB,CAEKA,IAEJpmJ,EAAKA,KAAKoiJ,gBAAkBA,EAC5BpiJ,EAAKA,KAAKqiJ,qBAAuB/lL,KAAK+lL,sBAIvC,IAAMC,EAAShmL,KAAKgmL,OAEfA,EAAOpuL,OAAS,IAEpB8rC,EAAKA,KAAKsiJ,OAASj4H,KAAK4yC,MAAO5yC,KAAKC,UAAWg4H,KAIhD,IAAMC,EAAiBjmL,KAAKimL,eAW5B,OATwB,OAAnBA,IAEJviJ,EAAKA,KAAKuiJ,eAAiB,CAC1B5vB,OAAQ4vB,EAAe5vB,OAAO9uE,UAC9B2hF,OAAQ+c,EAAe/c,SAKlBxlI,CAER,GAAC,CAAAlhC,IAAA,QAAA/D,MAED,WAEE,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAEtC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAILxB,KAAK4O,MAAQ,KACb5O,KAAKkyE,WAAa,CAAC,EACnBlyE,KAAK8lL,gBAAkB,CAAC,EACxB9lL,KAAKgmL,OAAS,GACdhmL,KAAKgrK,YAAc,KACnBhrK,KAAKimL,eAAiB,KAItB,IAAMviJ,EAAO,CAAC,EAId1jC,KAAK7G,KAAOqI,EAAOrI,KAInB,IAAMyV,EAAQpN,EAAOoN,MAEN,OAAVA,GAEJ5O,KAAKgqL,SAAUp7K,EAAM1N,MAAOwiC,IAM7B,IAAMwuC,EAAa1wE,EAAO0wE,WAE1B,IAAM,IAAM/4E,KAAQ+4E,EAAa,CAEhC,IAAMgkF,EAAYhkF,EAAY/4E,GAC9B6G,KAAK8S,aAAc3Z,EAAM+8J,EAAUh1J,MAAOwiC,GAE3C,CAIA,IAAMoiJ,EAAkBtkL,EAAOskL,gBAE/B,IAAM,IAAM3sL,KAAQ2sL,EAAkB,CAKrC,IAHA,IAAM/iL,EAAQ,GACRkkL,EAAiBnB,EAAiB3sL,GAE9BuD,EAAI,EAAGmK,EAAIogL,EAAervL,OAAQ8E,EAAImK,EAAGnK,IAElDqG,EAAMjG,KAAMmqL,EAAgBvqL,GAAIwE,MAAOwiC,IAIxC1jC,KAAK8lL,gBAAiB3sL,GAAS4J,CAEhC,CAEA/C,KAAK+lL,qBAAuBvkL,EAAOukL,qBAMnC,IAFA,IAAMC,EAASxkL,EAAOwkL,OAEZtpL,EAAI,EAAGmK,EAAIm/K,EAAOpuL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAM+qG,EAAQu+E,EAAQtpL,GACtBsD,KAAK6pL,SAAUpiF,EAAM38D,MAAO28D,EAAM9pB,MAAO8pB,EAAM0+E,cAEhD,CAIA,IAAMnb,EAAcxpK,EAAOwpK,YAEN,OAAhBA,IAEJhrK,KAAKgrK,YAAcA,EAAY9pK,SAMhC,IAAM+kL,EAAiBzkL,EAAOykL,eAqB9B,OAnBwB,OAAnBA,IAEJjmL,KAAKimL,eAAiBA,EAAe/kL,SAMtClB,KAAKkmL,UAAUp7I,MAAQtpC,EAAO0kL,UAAUp7I,MACxC9qC,KAAKkmL,UAAUvoG,MAAQn8E,EAAO0kL,UAAUvoG,MAIxC39E,KAAKi/J,SAAWz9J,EAAOy9J,cAII70J,IAAtB5I,EAAOg3K,aAA2Bx4K,KAAKw4K,WAAaj6K,OAAOmgB,OAAQ,CAAC,EAAGld,EAAOg3K,aAE5Ex4K,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAECuB,KAAKu+B,cAAe,CAAE35B,KAAM,WAE7B,KAAC8gL,CAAA,CA9kCkB,CAASp0B,IAklC7Bo0B,GAAe9oL,UAAUqsL,kBAAmB,EAE5C,IAAMgB,GAAiC,IAAItZ,GACrCuZ,GAAuB,IAAI9b,GAC3B+b,GAA0B,IAAIjd,GAE9Bkd,GAAsB,IAAItjB,GAC1BujB,GAAsB,IAAIvjB,GAC1BwjB,GAAsB,IAAIxjB,GAE1ByjB,GAAuB,IAAIzjB,GAC3B0jB,GAAuB,IAAI1jB,GAC3B2jB,GAAuB,IAAI3jB,GAE3B4jB,GAAwB,IAAI5jB,GAC5B6jB,GAAwB,IAAI7jB,GAC5B8jB,GAAwB,IAAI9jB,GAE5B+jB,GAAuB,IAAI11B,GAC3B21B,GAAuB,IAAI31B,GAC3B41B,GAAuB,IAAI51B,GAE3B61B,GAAmC,IAAIlkB,GACvCmkB,GAAwC,IAAInkB,GAE5CokB,GAAI,SAAAC,GAAAnvK,EAAAkvK,EAAAC,GAAA,IAAAC,EAAAzwK,EAAAuwK,GAET,SAAAA,IAAmF,IAAAG,EAAtEvgB,EAAQ7qK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIylL,GAAkB7M,EAAQ54K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI+hL,GASlC,OATqDv3K,EAAA,KAAAygL,IAE/EG,EAAAD,EAAAvuL,KAAA,OAEK+H,KAAO,OAEZymL,EAAKvgB,SAAWA,EAChBugB,EAAKxS,SAAWA,EAEhBwS,EAAKC,qBAAqBD,CAE3B,CA6OC,OA7OA9hL,EAAA2hL,EAAA,EAAA1oL,IAAA,OAAA/D,MAED,SAAM+C,GAmBL,OAjBA0lI,GAAA5rH,EAAA4vK,EAAAtuL,WAAA,aAAAC,KAAA,KAAY2E,QAE0B4I,IAAjC5I,EAAO+pL,wBAEXvrL,KAAKurL,sBAAwB/pL,EAAO+pL,sBAAsB36K,cAIrBxG,IAAjC5I,EAAOgqL,wBAEXxrL,KAAKwrL,sBAAwBjtL,OAAOmgB,OAAQ,CAAC,EAAGld,EAAOgqL,wBAIxDxrL,KAAK64K,SAAWr3K,EAAOq3K,SACvB74K,KAAK8qK,SAAWtpK,EAAOspK,SAEhB9qK,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,WAEC,IAAMqsK,EAAW9qK,KAAK8qK,SAEtB,GAAKA,EAASme,iBAAmB,CAEhC,IAAMnD,EAAkBhb,EAASgb,gBAC3BlkL,EAAOrD,OAAOqD,KAAMkkL,GAE1B,GAAKlkL,EAAKhK,OAAS,EAAI,CAEtB,IAAMqvL,EAAiBnB,EAAiBlkL,EAAM,IAE9C,QAAwBwI,IAAnB68K,EAA+B,CAEnCjnL,KAAKurL,sBAAwB,GAC7BvrL,KAAKwrL,sBAAwB,CAAC,EAE9B,IAAM,IAAI1kL,EAAI,EAAGumD,EAAK45H,EAAervL,OAAQkP,EAAIumD,EAAIvmD,IAAO,CAE3D,IAAM3N,EAAO8tL,EAAgBngL,GAAI3N,MAAQ4E,OAAQ+I,GAEjD9G,KAAKurL,sBAAsBzuL,KAAM,GACjCkD,KAAKwrL,sBAAuBryL,GAAS2N,CAEtC,CAED,CAED,CAED,KAAO,CAEN,IAAM2kL,EAAe3gB,EAAS2gB,kBAERrhL,IAAjBqhL,GAA8BA,EAAa7zL,OAAS,GAExDmc,QAAQwN,MAAO,uGAIjB,CAED,GAAC,CAAA/e,IAAA,UAAA/D,MAED,SAASitL,EAAWC,GAEnB,IA4BIC,EA5BE9gB,EAAW9qK,KAAK8qK,SAChB+N,EAAW74K,KAAK64K,SAChB5Q,EAAcjoK,KAAKioK,YAEzB,QAAkB79J,IAAbyuK,IAI4B,OAA5B/N,EAASmb,gBAA0Bnb,EAASwb,wBAEjD6D,GAAUzuB,KAAMoP,EAASmb,gBACzBkE,GAAUtiB,aAAcI,IAE6B,IAAhDyjB,EAAUpd,IAAIf,iBAAkB4c,MAIrCF,GAAiBvuB,KAAMuM,GAAcn4B,SACrCo6C,GAAOxuB,KAAMgwB,EAAUpd,KAAMzG,aAAcoiB,IAIb,OAAzBnf,EAASE,cAEyC,IAAjDkf,GAAO2B,cAAe/gB,EAASE,eAMrC,GAAKF,EAASme,iBAAmB,CAEhC,IAAMr6K,EAAQk8J,EAASl8J,MACjB2wD,EAAWurG,EAAS54F,WAAW3S,SAC/BusH,EAAgBhhB,EAASgb,gBAAgBvmH,SACzCwmH,EAAuBjb,EAASib,qBAChCtmB,EAAKqL,EAAS54F,WAAWutF,GACzB0a,EAAMrP,EAAS54F,WAAWioG,IAC1B6L,EAASlb,EAASkb,OAClBE,EAAYpb,EAASob,UAE3B,GAAe,OAAVt3K,EAIJ,GAAKjS,MAAM0E,QAASw3K,GAEnB,IAAM,IAAIn8K,EAAI,EAAGowD,EAAKk5H,EAAOpuL,OAAQ8E,EAAIowD,EAAIpwD,IAQ5C,IANA,IAAM+qG,EAAQu+E,EAAQtpL,GAChBqvL,EAAgBlT,EAAUpxE,EAAM0+E,eAK5Bt2K,EAHI5S,KAAKC,IAAKuqG,EAAM38D,MAAOo7I,EAAUp7I,OAG1Bo8I,EAFTjqL,KAAKiuC,IAAKt8B,EAAM+uE,MAAO1gF,KAAKiuC,IAAOu8D,EAAM38D,MAAQ28D,EAAM9pB,MAAWuoG,EAAUp7I,MAAQo7I,EAAUvoG,QAE3E9tE,EAAIq3K,EAAIr3K,GAAK,EAAI,CAE/C,IAAM7T,EAAI4S,EAAMunJ,KAAMtmJ,GAChBtJ,EAAIqI,EAAMunJ,KAAMtmJ,EAAI,GACpB5T,EAAI2S,EAAMunJ,KAAMtmJ,EAAI,IAE1B+7K,EAAeI,GAAiChsL,KAAM+rL,EAAeL,EAAWxB,GAAQ3qH,EAAUusH,EAAe/F,EAAsBtmB,EAAI0a,EAAKn+K,EAAGuK,EAAGtK,MAIrJ2vL,EAAaK,UAAYhvL,KAAKwf,MAAO5M,EAAI,GACzC+7K,EAAaM,KAAK/F,cAAgB1+E,EAAM0+E,cACxCwF,EAAW7uL,KAAM8uL,GAInB,MASD,IAHA,IAGUlvL,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBgiB,EAFT7vD,KAAKiuC,IAAKt8B,EAAM+uE,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAElCjhF,EAAIowD,EAAIpwD,GAAK,EAAI,CAE/C,IAAMV,EAAI4S,EAAMunJ,KAAMz5J,GAChB6J,EAAIqI,EAAMunJ,KAAMz5J,EAAI,GACpBT,EAAI2S,EAAMunJ,KAAMz5J,EAAI,IAE1BkvL,EAAeI,GAAiChsL,KAAM64K,EAAU6S,EAAWxB,GAAQ3qH,EAAUusH,EAAe/F,EAAsBtmB,EAAI0a,EAAKn+K,EAAGuK,EAAGtK,MAIhJ2vL,EAAaK,UAAYhvL,KAAKwf,MAAO/f,EAAI,GACzCivL,EAAW7uL,KAAM8uL,GAInB,MAIK,QAAkBxhL,IAAbm1D,EAIX,GAAK5iE,MAAM0E,QAASw3K,GAEnB,IAAM,IAAIn8K,EAAI,EAAGowD,EAAKk5H,EAAOpuL,OAAQ8E,EAAIowD,EAAIpwD,IAQ5C,IANA,IAAM+qG,EAAQu+E,EAAQtpL,GAChBqvL,EAAgBlT,EAAUpxE,EAAM0+E,eAK5Bt2K,EAHI5S,KAAKC,IAAKuqG,EAAM38D,MAAOo7I,EAAUp7I,OAG1Bo8I,EAFTjqL,KAAKiuC,IAAKq0B,EAASoe,MAAO1gF,KAAKiuC,IAAOu8D,EAAM38D,MAAQ28D,EAAM9pB,MAAWuoG,EAAUp7I,MAAQo7I,EAAUvoG,QAE9E9tE,EAAIq3K,EAAIr3K,GAAK,EAAI,EAM/C+7K,EAAeI,GAAiChsL,KAAM+rL,EAAeL,EAAWxB,GAAQ3qH,EAAUusH,EAAe/F,EAAsBtmB,EAAI0a,EAJjItqK,EACAA,EAAI,EACJA,EAAI,MAMb+7K,EAAaK,UAAYhvL,KAAKwf,MAAO5M,EAAI,GACzC+7K,EAAaM,KAAK/F,cAAgB1+E,EAAM0+E,cACxCwF,EAAW7uL,KAAM8uL,GAInB,MASD,IAHA,IAGUlvL,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBgiB,EAFT7vD,KAAKiuC,IAAKq0B,EAASoe,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAErCjhF,EAAIowD,EAAIpwD,GAAK,EAAI,EAM/CkvL,EAAeI,GAAiChsL,KAAM64K,EAAU6S,EAAWxB,GAAQ3qH,EAAUusH,EAAe/F,EAAsBtmB,EAAI0a,EAJ5Hz9K,EACAA,EAAI,EACJA,EAAI,MAMbkvL,EAAaK,UAAYhvL,KAAKwf,MAAO/f,EAAI,GACzCivL,EAAW7uL,KAAM8uL,GAInB,CAMH,MAAY9gB,EAASqhB,YAEpBp4K,QAAQwN,MAAO,4FAIjB,KAAC2pK,CAAA,CA1PQ,CAAS1V,IA+RnB,SAASwW,GAAiC7pL,EAAQ02K,EAAU6S,EAAWpd,EAAK/uG,EAAUusH,EAAe/F,EAAsBtmB,EAAI0a,EAAKn+K,EAAGuK,EAAGtK,GAEzImuL,GAAMrf,oBAAqBxrG,EAAUvjE,GACrCquL,GAAMtf,oBAAqBxrG,EAAUh5D,GACrC+jL,GAAMvf,oBAAqBxrG,EAAUtjE,GAErC,IAAMmwL,EAAkBjqL,EAAOopL,sBAE/B,GAAKO,GAAiBM,EAAkB,CAEvC1B,GAAQz7J,IAAK,EAAG,EAAG,GACnB07J,GAAQ17J,IAAK,EAAG,EAAG,GACnB27J,GAAQ37J,IAAK,EAAG,EAAG,GAEnB,IAAM,IAAIvyB,EAAI,EAAGowD,EAAKg/H,EAAcl0L,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAE1D,IAAM2vL,EAAYD,EAAiB1vL,GAC7BuqL,EAAiB6E,EAAepvL,GAEnB,IAAd2vL,IAEL9B,GAAOxf,oBAAqBkc,EAAgBjrL,GAC5CwuL,GAAOzf,oBAAqBkc,EAAgB1gL,GAC5CkkL,GAAO1f,oBAAqBkc,EAAgBhrL,GAEvC8pL,GAEJ2E,GAAQhQ,gBAAiB6P,GAAQ8B,GACjC1B,GAAQjQ,gBAAiB8P,GAAQ6B,GACjCzB,GAAQlQ,gBAAiB+P,GAAQ4B,KAIjC3B,GAAQhQ,gBAAiB6P,GAAOzhB,IAAKshB,IAASiC,GAC9C1B,GAAQjQ,gBAAiB8P,GAAO1hB,IAAKuhB,IAASgC,GAC9CzB,GAAQlQ,gBAAiB+P,GAAO3hB,IAAKwhB,IAAS+B,IAIhD,CAEAjC,GAAMh+J,IAAKs+J,IACXL,GAAMj+J,IAAKu+J,IACXL,GAAMl+J,IAAKw+J,GAEZ,CAEKzoL,EAAOs2K,gBAEXt2K,EAAOmqL,cAAetwL,EAAGouL,IACzBjoL,EAAOmqL,cAAe/lL,EAAG8jL,IACzBloL,EAAOmqL,cAAerwL,EAAGquL,KAI1B,IAAMsB,EAtFP,SAA4BzpL,EAAQ02K,EAAU6S,EAAWpd,EAAKoa,EAAIC,EAAIC,EAAIle,GAczE,GAAmB,QAVdmO,EAASgD,OAASz0B,GAEVknB,EAAIie,kBAAmB3D,EAAID,EAAID,GAAI,EAAMhe,GAIzC4D,EAAIie,kBAAmB7D,EAAIC,EAAIC,EAAI/P,EAASgD,OAASx0B,GAAYqjB,IAIpD,OAAO,KAEjCugB,GAAwBvvB,KAAMgP,GAC9BugB,GAAwBpjB,aAAc1lK,EAAO8lK,aAE7C,IAAMyO,EAAWgV,EAAUpd,IAAIl2E,OAAOi1E,WAAY4d,IAElD,OAAKvU,EAAWgV,EAAU7X,MAAQ6C,EAAWgV,EAAU5X,IAAa,KAE7D,CACN4C,SAAUA,EACVhM,MAAOugB,GAAwB/pL,QAC/BiB,OAAQA,EAGV,CAyDsBqqL,CAAmBrqL,EAAQ02K,EAAU6S,EAAWpd,EAAK8b,GAAOC,GAAOC,GAAOU,IAE/F,GAAKY,EAAe,CAEdnsB,IAEJorB,GAAO9f,oBAAqBtL,EAAIzjK,GAChC8uL,GAAO/f,oBAAqBtL,EAAIl5J,GAChCwkL,GAAOhgB,oBAAqBtL,EAAIxjK,GAEhC2vL,EAAansB,GAAKka,GAASU,MAAO2Q,GAAoBZ,GAAOC,GAAOC,GAAOO,GAAQC,GAAQC,GAAQ,IAAI51B,KAInGglB,IAEJ0Q,GAAO9f,oBAAqBoP,EAAKn+K,GACjC8uL,GAAO/f,oBAAqBoP,EAAK5zK,GACjCwkL,GAAOhgB,oBAAqBoP,EAAKl+K,GAEjC2vL,EAAazR,IAAMR,GAASU,MAAO2Q,GAAoBZ,GAAOC,GAAOC,GAAOO,GAAQC,GAAQC,GAAQ,IAAI51B,KAIzG,IAAM+2B,EAAO,CACZlwL,EAAGA,EACHuK,EAAGA,EACHtK,EAAGA,EACH8sK,OAAQ,IAAIjC,GACZqf,cAAe,GAGhBxM,GAASI,UAAWqQ,GAAOC,GAAOC,GAAO4B,EAAKnjB,QAE9C6iB,EAAaM,KAAOA,CAErB,CAEA,OAAON,CAER,CAhIAV,GAAKtuL,UAAUy7K,QAAS,EAgIvB,IAEKoU,GAAW,SAAAC,GAAA1wK,EAAAywK,EAAAC,GAAA,IAAAC,EAAAhyK,EAAA8xK,GAEhB,SAAAA,IAA0G,IAAAG,EAA7Fz+K,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGsuG,EAAKtuG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG4sL,EAAa5sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG6sL,EAAc7sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG8sL,EAAa9sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAgiL,IAEtGG,EAAAD,EAAA9vL,KAAA,OAEK+H,KAAO,cAEZgoL,EAAKpU,WAAa,CACjBrqK,MAAOA,EACPC,OAAQA,EACRmgG,MAAOA,EACPs+E,cAAeA,EACfC,eAAgBA,EAChBC,cAAeA,GAGhB,IAAMC,EAAKxxK,EAAAoxK,GAIXC,EAAgB5vL,KAAKwf,MAAOowK,GAC5BC,EAAiB7vL,KAAKwf,MAAOqwK,GAC7BC,EAAgB9vL,KAAKwf,MAAOswK,GAI5B,IAAM5F,EAAU,GACV8F,EAAW,GACX5F,EAAU,GACVC,EAAM,GAIR4F,EAAmB,EACnBC,EAAa,EAkBjB,SAASC,EAAY7lL,EAAGJ,EAAGC,EAAGimL,EAAMC,EAAMn/K,EAAOC,EAAQmgG,EAAOg/E,EAAOC,EAAOrH,GAmB7E,IAjBA,IAAMsH,EAAet/K,EAAQo/K,EACvBG,EAAgBt/K,EAASo/K,EAEzBG,EAAYx/K,EAAQ,EACpBy/K,EAAax/K,EAAS,EACtBy/K,EAAYt/E,EAAQ,EAEpBu/E,EAASP,EAAQ,EACjBQ,EAASP,EAAQ,EAEnBQ,EAAgB,EAChBC,EAAa,EAEXtjB,EAAS,IAAI7D,GAITW,EAAK,EAAGA,EAAKsmB,EAAQtmB,IAI9B,IAFA,IAAMpgK,EAAIogK,EAAKimB,EAAgBE,EAErBpmB,EAAK,EAAGA,EAAKsmB,EAAQtmB,IAAQ,CAEtC,IAAMtrK,EAAIsrK,EAAKimB,EAAeE,EAI9BhjB,EAAQpjK,GAAMrL,EAAImxL,EAClB1iB,EAAQxjK,GAAME,EAAIimL,EAClB3iB,EAAQvjK,GAAMymL,EAIdZ,EAASnwL,KAAM6tK,EAAOzuK,EAAGyuK,EAAOtjK,EAAGsjK,EAAOrjK,GAI1CqjK,EAAQpjK,GAAM,EACdojK,EAAQxjK,GAAM,EACdwjK,EAAQvjK,GAAMmnG,EAAQ,EAAI,GAAM,EAIhC84E,EAAQvqL,KAAM6tK,EAAOzuK,EAAGyuK,EAAOtjK,EAAGsjK,EAAOrjK,GAIzCggL,EAAIxqL,KAAM0qK,EAAK+lB,GACfjG,EAAIxqL,KAAM,EAAM2qK,EAAK+lB,GAIrBQ,GAAiB,CAElB,CAUD,IAAM,IAAIvmB,EAAK,EAAGA,EAAK+lB,EAAO/lB,IAE7B,IAAM,IAAID,EAAK,EAAGA,EAAK+lB,EAAO/lB,IAAQ,CAErC,IAAMxrK,EAAIkxL,EAAmB1lB,EAAKsmB,EAASrmB,EACrClhK,EAAI2mL,EAAmB1lB,EAAKsmB,GAAWrmB,EAAK,GAC5CxrK,EAAIixL,GAAqB1lB,EAAK,GAAMsmB,GAAWrmB,EAAK,GACpDjhK,EAAI0mL,GAAqB1lB,EAAK,GAAMsmB,EAASrmB,EAInD0f,EAAQrqL,KAAMd,EAAGuK,EAAGC,GACpB2gL,EAAQrqL,KAAMyJ,EAAGtK,EAAGuK,GAIpBynL,GAAc,CAEf,CAMDjB,EAAMnD,SAAUsD,EAAYc,EAAY9H,GAIxCgH,GAAcc,EAIdf,GAAoBc,CAErB,CAAC,OAlHDZ,EAAY,IAAK,IAAK,KAAO,GAAK,EAAG7+E,EAAOngG,EAAQD,EAAO4+K,EAAeD,EAAgB,GAC1FM,EAAY,IAAK,IAAK,IAAK,GAAK,EAAG7+E,EAAOngG,GAAUD,EAAO4+K,EAAeD,EAAgB,GAC1FM,EAAY,IAAK,IAAK,IAAK,EAAG,EAAGj/K,EAAOogG,EAAOngG,EAAQy+K,EAAeE,EAAe,GACrFK,EAAY,IAAK,IAAK,IAAK,GAAK,EAAGj/K,EAAOogG,GAASngG,EAAQy+K,EAAeE,EAAe,GACzFK,EAAY,IAAK,IAAK,IAAK,GAAK,EAAGj/K,EAAOC,EAAQmgG,EAAOs+E,EAAeC,EAAgB,GACxFM,EAAY,IAAK,IAAK,KAAO,GAAK,EAAGj/K,EAAOC,GAAUmgG,EAAOs+E,EAAeC,EAAgB,GAI5FF,EAAK5C,SAAU7C,GACfyF,EAAK95K,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACrEL,EAAK95K,aAAc,SAAU,IAAI+xK,GAAwBwC,EAAS,IAClEuF,EAAK95K,aAAc,KAAM,IAAI+xK,GAAwByC,EAAK,IAsGzDsF,CAEF,CAMC,OANArjL,EAAAkjL,EAAA,OAAAjqL,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAI+oJ,EAAa/oJ,EAAKv1B,MAAOu1B,EAAKt1B,OAAQs1B,EAAK6qE,MAAO7qE,EAAKmpJ,cAAenpJ,EAAKopJ,eAAgBppJ,EAAKqpJ,cAE5G,KAACN,CAAA,CAjKe,CAAS/G,IAyK1B,SAASwI,GAAe/7K,GAEvB,IAAMyzJ,EAAM,CAAC,EAEb,IAAM,IAAMr+J,KAAK4K,EAIhB,IAAM,IAAMnL,KAFZ4+J,EAAKr+J,GAAM,CAAC,EAEK4K,EAAK5K,GAAM,CAE3B,IAAM7I,EAAWyT,EAAK5K,GAAKP,GAEtBtI,IAAcA,EAAS+8J,SAC3B/8J,EAASm7J,WAAan7J,EAASq1K,WAC/Br1K,EAAS63J,WAAa73J,EAAS+qK,WAAa/qK,EAASqiK,WACrDriK,EAASihK,WAAajhK,EAASmoK,cAE/BjB,EAAKr+J,GAAKP,GAAMtI,EAASwC,QAEdvE,MAAM0E,QAAS3C,GAE1BknK,EAAKr+J,GAAKP,GAAMtI,EAASkS,QAIzBg1J,EAAKr+J,GAAKP,GAAMtI,CAIlB,CAID,OAAOknK,CAER,CAEA,SAASuoB,GAAeC,GAIvB,IAFA,IAAMC,EAAS,CAAC,EAEN9mL,EAAI,EAAGA,EAAI6mL,EAASx2L,OAAQ2P,IAAO,CAE5C,IAAMuxJ,EAAMo1B,GAAeE,EAAU7mL,IAErC,IAAM,IAAMP,KAAK8xJ,EAEhBu1B,EAAQrnL,GAAM8xJ,EAAK9xJ,EAIrB,CAEA,OAAOqnL,CAER,CAIA,IAAMC,GAAgB,CAAEptL,MAAOgtL,GAAer6E,MAAOs6E,IAM/CI,GAAc,SAAAC,GAAAxyK,EAAAuyK,EAAAC,GAAA,IAAAC,EAAA9zK,EAAA4zK,GAEnB,SAAAA,EAAa/V,GAAa,IAAAkW,EAmDxB,OAnDwBjkL,EAAA,KAAA8jL,IAEzBG,EAAAD,EAAA5xL,KAAA,OAEK+H,KAAO,iBAEZ8pL,EAAKC,QAAU,CAAC,EAChBD,EAAKN,SAAW,CAAC,EAEjBM,EAAKE,aAfc,gGAgBnBF,EAAKG,eAdgB,iEAgBrBH,EAAKtN,UAAY,EAEjBsN,EAAKlN,WAAY,EACjBkN,EAAKjN,mBAAqB,EAE1BiN,EAAK/S,KAAM,EACX+S,EAAKI,QAAS,EACdJ,EAAKK,UAAW,EAEhBL,EAAKpiG,WAAa,CACjB0iG,aAAa,EACbC,WAAW,EACXC,aAAa,EACbC,kBAAkB,GAKnBT,EAAKU,uBAAyB,CAC7B,MAAS,CAAE,EAAG,EAAG,GACjB,GAAM,CAAE,EAAG,GACX,IAAO,CAAE,EAAG,IAGbV,EAAKW,yBAAsBjlL,EAC3BskL,EAAKY,oBAAqB,EAE1BZ,EAAKa,YAAc,UAECnlL,IAAfouK,SAE2BpuK,IAA1BouK,EAAWtmG,YAEfn+D,QAAQwN,MAAO,2FAIhBmtK,EAAKtM,UAAW5J,IAEhBkW,CAEF,CAqHC,OArHAnlL,EAAAglL,EAAA,EAAA/rL,IAAA,OAAA/D,MAED,SAAM+C,GAqBL,OAnBA0lI,GAAA5rH,EAAAizK,EAAA3xL,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK6uL,eAAiBrtL,EAAOqtL,eAC7B7uL,KAAK4uL,aAAeptL,EAAOotL,aAE3B5uL,KAAKouL,SAAWF,GAAe1sL,EAAO4sL,UAEtCpuL,KAAK2uL,QAAUpwL,OAAOmgB,OAAQ,CAAC,EAAGld,EAAOmtL,SAEzC3uL,KAAKwhL,UAAYhgL,EAAOggL,UACxBxhL,KAAKyhL,mBAAqBjgL,EAAOigL,mBAEjCzhL,KAAK8uL,OAASttL,EAAOstL,OACrB9uL,KAAK+uL,SAAWvtL,EAAOutL,SAEvB/uL,KAAKssF,WAAa/tF,OAAOmgB,OAAQ,CAAC,EAAGld,EAAO8qF,YAE5CtsF,KAAKuvL,YAAc/tL,EAAO+tL,YAEnBvvL,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAAizK,EAAA3xL,WAAA,eAAAC,KAAA,KAAiBy5B,GAK3B,IAAM,IAAMn9B,KAHZuqC,EAAK6rJ,YAAcvvL,KAAKuvL,YACxB7rJ,EAAK0qJ,SAAW,CAAC,EAEGpuL,KAAKouL,SAAW,CAEnC,IACM3vL,EADUuB,KAAKouL,SAAUj1L,GACTsF,MAEjBA,GAASA,EAAMkhK,UAEnBj8H,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,IACNnG,MAAOA,EAAM+gK,OAAQlpI,GAAOulF,MAGlBp9G,GAASA,EAAMg9J,QAE1B/3H,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,IACNnG,MAAOA,EAAM29J,UAGH39J,GAASA,EAAM83J,UAE1B7yH,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,KACNnG,MAAOA,EAAM8oF,WAGH9oF,GAASA,EAAMgrK,UAE1B/lI,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,KACNnG,MAAOA,EAAM8oF,WAGH9oF,GAASA,EAAMsiK,UAE1Br9H,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,KACNnG,MAAOA,EAAM8oF,WAGH9oF,GAASA,EAAMo7J,UAE1Bn2H,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,KACNnG,MAAOA,EAAM8oF,WAGH9oF,GAASA,EAAMs1K,UAE1BrwI,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,KACNnG,MAAOA,EAAM8oF,WAKd7jD,EAAK0qJ,SAAUj1L,GAAS,CACvBsF,MAAOA,EAOV,CAEKF,OAAOqD,KAAM5B,KAAK2uL,SAAU/2L,OAAS,IAAI8rC,EAAKirJ,QAAU3uL,KAAK2uL,SAElEjrJ,EAAKkrJ,aAAe5uL,KAAK4uL,aACzBlrJ,EAAKmrJ,eAAiB7uL,KAAK6uL,eAE3B,IAAMviG,EAAa,CAAC,EAEpB,IAAM,IAAM9pF,KAAOxC,KAAKssF,YAES,IAA3BtsF,KAAKssF,WAAY9pF,KAAiB8pF,EAAY9pF,IAAQ,GAM5D,OAFKjE,OAAOqD,KAAM0qF,GAAa10F,OAAS,IAAI8rC,EAAK4oD,WAAaA,GAEvD5oD,CAER,KAAC6qJ,CAAA,CA5KkB,CAAShT,IAgL7BgT,GAAe3xL,UAAU4yL,kBAAmB,EAAK,IAE3CC,GAAM,SAAAC,GAAA1zK,EAAAyzK,EAAAC,GAAA,IAAAC,EAAAh1K,EAAA80K,GAEX,SAAAA,IAAc,IAAAG,EASgC,OAThCnlL,EAAA,KAAAglL,IAEbG,EAAAD,EAAA9yL,KAAA,OAEK+H,KAAO,SAEZgrL,EAAK9nB,mBAAqB,IAAI6I,GAE9Bif,EAAK7nB,iBAAmB,IAAI4I,GAC5Bif,EAAK5nB,wBAA0B,IAAI2I,GAAUif,CAE9C,CA6CC,OA7CArmL,EAAAkmL,EAAA,EAAAjtL,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GASb,OAPA9xC,GAAA5rH,EAAAm0K,EAAA7yL,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAK8nK,mBAAmBpM,KAAMl6J,EAAOsmK,oBAErC9nK,KAAK+nK,iBAAiBrM,KAAMl6J,EAAOumK,kBACnC/nK,KAAKgoK,wBAAwBtM,KAAMl6J,EAAOwmK,yBAEnChoK,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmB8C,GAElBvB,KAAK6qK,mBAAmB,GAAM,GAE9B,IAAMvkK,EAAItG,KAAKioK,YAAYjiC,SAE3B,OAAOzkI,EAAO0tB,KAAO3oB,EAAG,IAAOA,EAAG,IAAOA,EAAG,KAAOu6G,WAEpD,GAAC,CAAAr+G,IAAA,oBAAA/D,MAED,SAAmB64K,GAElBpwC,GAAA5rH,EAAAm0K,EAAA7yL,WAAA,0BAAAC,KAAA,KAAyBy6K,GAEzBt3K,KAAK8nK,mBAAmBpM,KAAM17J,KAAKioK,aAAcn4B,QAElD,GAAC,CAAAttI,IAAA,oBAAA/D,MAED,SAAmB+4K,EAAeC,GAEjCvwC,GAAA5rH,EAAAm0K,EAAA7yL,WAAA,0BAAAC,KAAA,KAAyB26K,EAAeC,GAExCz3K,KAAK8nK,mBAAmBpM,KAAM17J,KAAKioK,aAAcn4B,QAElD,GAAC,CAAAttI,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACyvL,CAAA,CA1DU,CAASja,IA8DrBia,GAAO7yL,UAAUi6K,UAAW,EAAK,IAE3BgZ,GAAiB,SAAAC,GAAA9zK,EAAA6zK,EAAAC,GAAA,IAAAC,EAAAp1K,EAAAk1K,GAEtB,SAAAA,IAA4D,IAAAG,EAA/CC,EAAGhwL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAIiwL,EAAMjwL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG4zK,EAAI5zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAK6zK,EAAG7zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAmBtB,OAnB0BwK,EAAA,KAAAolL,IAExDG,EAAAD,EAAAlzL,KAAA,OAEK+H,KAAO,oBAEZorL,EAAKC,IAAMA,EACXD,EAAKn7J,KAAO,EAEZm7J,EAAKnc,KAAOA,EACZmc,EAAKlc,IAAMA,EACXkc,EAAKt2L,MAAQ,GAEbs2L,EAAKE,OAASA,EACdF,EAAKzuJ,KAAO,KAEZyuJ,EAAKG,UAAY,GACjBH,EAAKI,WAAa,EAElBJ,EAAKK,yBAAyBL,CAE/B,CAwMC,OAxMAzmL,EAAAsmL,EAAA,EAAArtL,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAiBb,OAfA9xC,GAAA5rH,EAAAu0K,EAAAjzL,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAKiwL,IAAMzuL,EAAOyuL,IAClBjwL,KAAK60B,KAAOrzB,EAAOqzB,KAEnB70B,KAAK6zK,KAAOryK,EAAOqyK,KACnB7zK,KAAK8zK,IAAMtyK,EAAOsyK,IAClB9zK,KAAKtG,MAAQ8H,EAAO9H,MAEpBsG,KAAKkwL,OAAS1uL,EAAO0uL,OACrBlwL,KAAKuhC,KAAuB,OAAhB//B,EAAO+/B,KAAgB,KAAOhjC,OAAOmgB,OAAQ,CAAC,EAAGld,EAAO+/B,MAEpEvhC,KAAKmwL,UAAY3uL,EAAO2uL,UACxBnwL,KAAKowL,WAAa5uL,EAAO4uL,WAElBpwL,IAER,GAEA,CAAAwC,IAAA,iBAAA/D,MAQA,SAAgB6xL,GAGf,IAAMC,EAAe,GAAMvwL,KAAKwwL,gBAAkBF,EAElDtwL,KAAKiwL,IAAgB,EAAVr+B,GAAc30J,KAAKwzL,KAAMF,GACpCvwL,KAAKqwL,wBAEN,GAEA,CAAA7tL,IAAA,iBAAA/D,MAGA,WAEC,IAAM8xL,EAAetzL,KAAKyzL,IAAe,GAAVh/B,GAAgB1xJ,KAAKiwL,KAEpD,MAAO,GAAMjwL,KAAKwwL,gBAAkBD,CAErC,GAAC,CAAA/tL,IAAA,kBAAA/D,MAED,WAEC,OAAiB,EAAVmzJ,GAAc30J,KAAKwzL,KACzBxzL,KAAKyzL,IAAe,GAAVh/B,GAAgB1xJ,KAAKiwL,KAAQjwL,KAAK60B,KAE9C,GAAC,CAAAryB,IAAA,eAAA/D,MAED,WAGC,OAAOuB,KAAKmwL,UAAYlzL,KAAKiuC,IAAKlrC,KAAKkwL,OAAQ,EAEhD,GAAC,CAAA1tL,IAAA,gBAAA/D,MAED,WAGC,OAAOuB,KAAKmwL,UAAYlzL,KAAKC,IAAK8C,KAAKkwL,OAAQ,EAEhD,GAEA,CAAA1tL,IAAA,gBAAA/D,MAmCA,SAAekyL,EAAWC,EAAY10L,EAAGmL,EAAG8G,EAAOC,GAElDpO,KAAKkwL,OAASS,EAAYC,EAEP,OAAd5wL,KAAKuhC,OAETvhC,KAAKuhC,KAAO,CACXsvJ,SAAS,EACTF,UAAW,EACXC,WAAY,EACZp3E,QAAS,EACTE,QAAS,EACTvrG,MAAO,EACPC,OAAQ,IAKVpO,KAAKuhC,KAAKsvJ,SAAU,EACpB7wL,KAAKuhC,KAAKovJ,UAAYA,EACtB3wL,KAAKuhC,KAAKqvJ,WAAaA,EACvB5wL,KAAKuhC,KAAKi4E,QAAUt9G,EACpB8D,KAAKuhC,KAAKm4E,QAAUryG,EACpBrH,KAAKuhC,KAAKpzB,MAAQA,EAClBnO,KAAKuhC,KAAKnzB,OAASA,EAEnBpO,KAAKqwL,wBAEN,GAAC,CAAA7tL,IAAA,kBAAA/D,MAED,WAEoB,OAAduB,KAAKuhC,OAETvhC,KAAKuhC,KAAKsvJ,SAAU,GAIrB7wL,KAAKqwL,wBAEN,GAAC,CAAA7tL,IAAA,yBAAA/D,MAED,WAEC,IAAMo1K,EAAO7zK,KAAK6zK,KACd3nI,EAAM2nI,EAAO52K,KAAKyzL,IAAe,GAAVh/B,GAAgB1xJ,KAAKiwL,KAAQjwL,KAAK60B,KACzDzmB,EAAS,EAAI89B,EACb/9B,EAAQnO,KAAKkwL,OAAS9hL,EACtB49B,GAAS,GAAM79B,EACbozB,EAAOvhC,KAAKuhC,KAElB,GAAmB,OAAdvhC,KAAKuhC,MAAiBvhC,KAAKuhC,KAAKsvJ,QAAU,CAE9C,IAAMF,EAAYpvJ,EAAKovJ,UACtBC,EAAarvJ,EAAKqvJ,WAEnB5kJ,GAAQzK,EAAKi4E,QAAUrrG,EAAQwiL,EAC/BzkJ,GAAO3K,EAAKm4E,QAAUtrG,EAASwiL,EAC/BziL,GAASozB,EAAKpzB,MAAQwiL,EACtBviL,GAAUmzB,EAAKnzB,OAASwiL,CAEzB,CAEA,IAAME,EAAO9wL,KAAKowL,WACJ,IAATU,IAAa9kJ,GAAQ6nI,EAAOid,EAAO9wL,KAAK+wL,gBAE7C/wL,KAAK+nK,iBAAiBipB,gBAAiBhlJ,EAAMA,EAAO79B,EAAO+9B,EAAKA,EAAM99B,EAAQylK,EAAM7zK,KAAK8zK,KAEzF9zK,KAAKgoK,wBAAwBtM,KAAM17J,KAAK+nK,kBAAmBj4B,QAE5D,GAAC,CAAAttI,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAAu0K,EAAAjzL,WAAA,eAAAC,KAAA,KAAiBy5B,GAgB3B,OAdAoN,EAAKvhC,OAAO8tL,IAAMjwL,KAAKiwL,IACvBvsJ,EAAKvhC,OAAO0yB,KAAO70B,KAAK60B,KAExB6O,EAAKvhC,OAAO0xK,KAAO7zK,KAAK6zK,KACxBnwI,EAAKvhC,OAAO2xK,IAAM9zK,KAAK8zK,IACvBpwI,EAAKvhC,OAAOzI,MAAQsG,KAAKtG,MAEzBgqC,EAAKvhC,OAAO+tL,OAASlwL,KAAKkwL,OAEP,OAAdlwL,KAAKuhC,OAAgBmC,EAAKvhC,OAAOo/B,KAAOhjC,OAAOmgB,OAAQ,CAAC,EAAG1e,KAAKuhC,OAErEmC,EAAKvhC,OAAOguL,UAAYnwL,KAAKmwL,UAC7BzsJ,EAAKvhC,OAAOiuL,WAAapwL,KAAKowL,WAEvB1sJ,CAER,KAACmsJ,CAAA,CA/NqB,CAASJ,IAmOhCI,GAAkBjzL,UAAUq0L,qBAAsB,EAElD,IAAMhB,GAAM,GAENiB,GAAU,SAAAC,GAAAn1K,EAAAk1K,EAAAC,GAAA,IAAAC,EAAAz2K,EAAAu2K,GAEf,SAAAA,EAAard,EAAMC,EAAKud,GAAe,IAAAC,EAMtC,GANsC7mL,EAAA,KAAAymL,IAEtCI,EAAAF,EAAAv0L,KAAA,OAEK+H,KAAO,cAEkC,IAAzCysL,EAAaE,wBAGjB,OADAx9K,QAAQwN,MAAO,0GACf9F,EAAA61K,GAIDA,EAAKD,aAAeA,EAEpB,IAAMG,EAAW,IAAI3B,GAAmBI,GAnBjB,EAmB8Bpc,EAAMC,GAC3D0d,EAAS7c,OAAS2c,EAAK3c,OACvB6c,EAAS7f,GAAG1iJ,IAAK,GAAK,EAAG,GACzBuiK,EAASza,OAAQ,IAAIjQ,GAAS,EAAG,EAAG,IACpCwqB,EAAKllK,IAAKolK,GAEV,IAAMC,EAAW,IAAI5B,GAAmBI,GAzBjB,EAyB8Bpc,EAAMC,GAC3D2d,EAAS9c,OAAS2c,EAAK3c,OACvB8c,EAAS9f,GAAG1iJ,IAAK,GAAK,EAAG,GACzBwiK,EAAS1a,OAAQ,IAAIjQ,IAAW,EAAG,EAAG,IACtCwqB,EAAKllK,IAAKqlK,GAEV,IAAMC,EAAW,IAAI7B,GAAmBI,GA/BjB,EA+B8Bpc,EAAMC,GAC3D4d,EAAS/c,OAAS2c,EAAK3c,OACvB+c,EAAS/f,GAAG1iJ,IAAK,EAAG,EAAG,GACvByiK,EAAS3a,OAAQ,IAAIjQ,GAAS,EAAG,EAAG,IACpCwqB,EAAKllK,IAAKslK,GAEV,IAAMC,EAAW,IAAI9B,GAAmBI,GArCjB,EAqC8Bpc,EAAMC,GAC3D6d,EAAShd,OAAS2c,EAAK3c,OACvBgd,EAAShgB,GAAG1iJ,IAAK,EAAG,GAAK,GACzB0iK,EAAS5a,OAAQ,IAAIjQ,GAAS,GAAK,EAAG,IACtCwqB,EAAKllK,IAAKulK,GAEV,IAAMC,EAAW,IAAI/B,GAAmBI,GA3CjB,EA2C8Bpc,EAAMC,GAC3D8d,EAASjd,OAAS2c,EAAK3c,OACvBid,EAASjgB,GAAG1iJ,IAAK,GAAK,EAAG,GACzB2iK,EAAS7a,OAAQ,IAAIjQ,GAAS,EAAG,EAAG,IACpCwqB,EAAKllK,IAAKwlK,GAEV,IAAMC,EAAW,IAAIhC,GAAmBI,GAjDjB,EAiD8Bpc,EAAMC,GAItC,OAHrB+d,EAASld,OAAS2c,EAAK3c,OACvBkd,EAASlgB,GAAG1iJ,IAAK,GAAK,EAAG,GACzB4iK,EAAS9a,OAAQ,IAAIjQ,GAAS,EAAG,GAAK,IACtCwqB,EAAKllK,IAAKylK,GAAWP,CAEtB,CAoDC,OApDA/nL,EAAA2nL,EAAA,EAAA1uL,IAAA,SAAA/D,MAED,SAAQqzL,EAAUC,GAEI,OAAhB/xL,KAAKk9D,QAAkBl9D,KAAKu3K,oBAEjC,IAAM8Z,EAAerxL,KAAKqxL,aAE1BW,EAAAtwK,EAAuE1hB,KAAK4d,SAAQ,GAA5E4zK,EAAQQ,EAAA,GAAEP,EAAQO,EAAA,GAAEN,EAAQM,EAAA,GAAEL,EAAQK,EAAA,GAAEJ,EAAQI,EAAA,GAAEH,EAAQG,EAAA,GAE5DC,EAAsBH,EAASI,kBAE/BC,EAAwBL,EAASM,eACjCC,EAAqBP,EAASQ,YAC9BC,EAAmBT,EAASU,GAAG3B,QAErCiB,EAASM,eAAiBnjC,GAC1B6iC,EAASQ,YAAc7oC,GACvBqoC,EAASU,GAAG3B,SAAU,EAEtB,IAAMhyB,EAAkBwyB,EAAahwB,QAAQxC,gBAE7CwyB,EAAahwB,QAAQxC,iBAAkB,EAEvCizB,EAASW,gBAAiBpB,EAAc,GACxCS,EAAStsL,OAAQusL,EAAOP,GAExBM,EAASW,gBAAiBpB,EAAc,GACxCS,EAAStsL,OAAQusL,EAAON,GAExBK,EAASW,gBAAiBpB,EAAc,GACxCS,EAAStsL,OAAQusL,EAAOL,GAExBI,EAASW,gBAAiBpB,EAAc,GACxCS,EAAStsL,OAAQusL,EAAOJ,GAExBG,EAASW,gBAAiBpB,EAAc,GACxCS,EAAStsL,OAAQusL,EAAOH,GAExBP,EAAahwB,QAAQxC,gBAAkBA,EAEvCizB,EAASW,gBAAiBpB,EAAc,GACxCS,EAAStsL,OAAQusL,EAAOF,GAExBC,EAASW,gBAAiBR,GAE1BH,EAASM,eAAiBD,EAC1BL,EAASQ,YAAcD,EACvBP,EAASU,GAAG3B,QAAU0B,EAEtBlB,EAAahwB,QAAQjC,kBAAmB,CAEzC,KAAC8xB,CAAA,CAzGc,CAAS1b,IA6GnBkd,GAAW,SAAAC,GAAA32K,EAAA02K,EAAAC,GAAA,IAAAC,EAAAj4K,EAAA+3K,GAEhB,SAAAA,EAAaj1B,EAAQnZ,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,EAAYC,GAAW,IAAAo0B,EAOnF,OAPmFpoL,EAAA,KAAAioL,GAEtGj1B,OAAoBrzJ,IAAXqzJ,EAAuBA,EAAS,GACzCnZ,OAAsBl6I,IAAZk6I,EAAwBA,EAAU0F,IAE5C6oC,EAAAD,EAAA/1L,KAAA,KAAO4gK,EAAQnZ,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,EAAYC,IAEjFM,OAAQ,EAAM8zB,CAEpB,CAYC,OAZAtpL,EAAAmpL,EAAA,EAAAlwL,IAAA,SAAAutB,IAED,WAEC,OAAO/vB,KAAKm5I,KAEb,EAAClqH,IAED,SAAYxwB,GAEXuB,KAAKm5I,MAAQ16I,CAEd,KAACi0L,CAAA,CAvBe,CAAS30B,IA2B1B20B,GAAY91L,UAAUk2L,eAAgB,EAAK,IAErCC,GAAqB,SAAAC,GAAAh3K,EAAA+2K,EAAAC,GAAA,IAAAC,EAAAt4K,EAAAo4K,GAE1B,SAAAA,EAAaxtI,GAAqB,IAAA2tI,EAAfjyL,EAAOhB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAACwK,EAAA,KAAAsoL,GAI9B,IAAM55C,EAAQ,CAAEhrI,MAAOo3C,EAAMn3C,OAAQm3C,EAAMgpD,MAAO,GAC5CkvD,EAAS,CAAEtkB,EAAOA,EAAOA,EAAOA,EAAOA,EAAOA,GAewC,OAlB5F+5C,EAAAD,EAAAp2L,KAAA,KAAO0oD,EAAMA,EAAMtkD,IAKdogK,QAAU,IAAIqxB,GAAaj1B,EAAQx8J,EAAQqjJ,QAASrjJ,EAAQk9J,MAAOl9J,EAAQm9J,MAAOn9J,EAAQo9J,UAAWp9J,EAAQq9J,UAAWr9J,EAAQs9J,OAAQt9J,EAAQ2D,KAAM3D,EAAQu9J,WAAYv9J,EAAQw9J,UAUvLy0B,EAAK7xB,QAAQlC,uBAAwB,EAErC+zB,EAAK7xB,QAAQxC,qBAA8Cz0J,IAA5BnJ,EAAQ49J,iBAAgC59J,EAAQ49J,gBAC/Eq0B,EAAK7xB,QAAQ/C,eAAkCl0J,IAAtBnJ,EAAQq9J,UAA0Br9J,EAAQq9J,UAAYzT,GAAaqoC,CAE7F,CA0GC,OA1GA3pL,EAAAwpL,EAAA,EAAAvwL,IAAA,6BAAA/D,MAED,SAA4BqzL,EAAUzwB,GAErCrhK,KAAKqhK,QAAQz8J,KAAOy8J,EAAQz8J,KAC5B5E,KAAKqhK,QAAQ5C,SAAW4C,EAAQ5C,SAEhCz+J,KAAKqhK,QAAQxC,gBAAkBwC,EAAQxC,gBACvC7+J,KAAKqhK,QAAQ/C,UAAY+C,EAAQ/C,UACjCt+J,KAAKqhK,QAAQhD,UAAYgD,EAAQhD,UAEjC,IAAM80B,EAEK,CACTC,UAAW,CAAE30L,MAAO,OAHhB00L,EAMmB,qYANnBA,EA0BqB,+UAoBrBroB,EAAW,IAAI2hB,GAAa,EAAG,EAAG,GAElC5T,EAAW,IAAI0V,GAAgB,CAEpCp1L,KAAM,sBAENi1L,SAAUF,GAAeiF,GACzBvE,aAAcuE,EACdtE,eAAgBsE,EAChBtX,KAAMz0B,GACNw0B,SAAUp0B,KAIXqxB,EAASuV,SAASgF,UAAU30L,MAAQ4iK,EAEpC,IAAMgyB,EAAO,IAAInI,GAAMpgB,EAAU+N,GAE3Bya,EAAmBjyB,EAAQ/C,UAajC,OAVK+C,EAAQ/C,YAActT,KAA2BqW,EAAQ/C,UAAYzT,IAE3D,IAAIqmC,GAAY,EAAG,GAAIlxL,MAC/BsjK,OAAQwuB,EAAUuB,GAEzBhyB,EAAQ/C,UAAYg1B,EAEpBD,EAAKvoB,SAASpJ,UACd2xB,EAAKxa,SAASnX,UAEP1hK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOqzL,EAAUtqJ,EAAO+mE,EAAOglF,GAI9B,IAFA,IAAMtB,EAAsBH,EAASI,kBAE3Bx1L,EAAI,EAAGA,EAAI,EAAGA,IAEvBo1L,EAASW,gBAAiBzyL,KAAMtD,GAEhCo1L,EAAS3xL,MAAOqnC,EAAO+mE,EAAOglF,GAI/BzB,EAASW,gBAAiBR,EAE3B,KAACc,CAAA,CAlIyB,CAAS/xB,IAsIpC+xB,GAAsBn2L,UAAU20L,yBAA0B,EAE1D,IAAMiC,GAAyB,IAAI1sB,GAC7B2sB,GAAyB,IAAI3sB,GAC7B4sB,GAA8B,IAAIl9B,GAElCm9B,GAAK,WAEV,SAAAA,IAA6D,IAAhD5qB,EAAM9oK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAS,EAAG,EAAG,GAAKyE,EAAQtrK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAkpL,GAIzD3zL,KAAK+oK,OAASA,EACd/oK,KAAKurK,SAAWA,CAEjB,CAsLC,OAtLAhiK,EAAAoqL,EAAA,EAAAnxL,IAAA,MAAA/D,MAED,SAAKsqK,EAAQwC,GAKZ,OAHAvrK,KAAK+oK,OAAOrN,KAAMqN,GAClB/oK,KAAKurK,SAAWA,EAETvrK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAevC,EAAGmL,EAAGC,EAAGF,GAKvB,OAHApH,KAAK+oK,OAAO95I,IAAK/yB,EAAGmL,EAAGC,GACvBtH,KAAKurK,SAAWnkK,EAETpH,IAER,GAAC,CAAAwC,IAAA,gCAAA/D,MAED,SAA+BsqK,EAAQ2B,GAKtC,OAHA1qK,KAAK+oK,OAAOrN,KAAMqN,GAClB/oK,KAAKurK,UAAab,EAAMzG,IAAKjkK,KAAK+oK,QAE3B/oK,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuBzC,EAAGuK,EAAGtK,GAE5B,IAAM8sK,EAASyqB,GAASl+B,WAAYr5J,EAAGsK,GAAIiqK,MAAOijB,GAASn+B,WAAYt5J,EAAGuK,IAAMs6G,YAMhF,OAFA7gH,KAAK4zL,8BAA+B7qB,EAAQ/sK,GAErCgE,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM6sK,GAKL,OAHAtrK,KAAK+oK,OAAOrN,KAAM4P,EAAMvC,QACxB/oK,KAAKurK,SAAWD,EAAMC,SAEfvrK,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,WAIC,IAAMo1L,EAAsB,EAAM7zL,KAAK+oK,OAAOnxK,SAI9C,OAHAoI,KAAK+oK,OAAOxT,eAAgBs+B,GAC5B7zL,KAAKurK,UAAYsoB,EAEV7zL,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAKC,OAHAuB,KAAKurK,WAAc,EACnBvrK,KAAK+oK,OAAO6d,SAEL5mL,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBisK,GAEhB,OAAO1qK,KAAK+oK,OAAO9E,IAAKyG,GAAU1qK,KAAKurK,QAExC,GAAC,CAAA/oK,IAAA,mBAAA/D,MAED,SAAkB2sK,GAEjB,OAAOprK,KAAKwtK,gBAAiBpC,EAAO/U,QAAW+U,EAAOlC,MAEvD,GAAC,CAAA1mK,IAAA,eAAA/D,MAED,SAAcisK,EAAOnpK,GAEpB,OAAOA,EAAOm6J,KAAM17J,KAAK+oK,QAASxT,gBAAkBv1J,KAAKwtK,gBAAiB9C,IAAUt+I,IAAKs+I,EAE1F,GAAC,CAAAloK,IAAA,gBAAA/D,MAED,SAAe4vG,EAAM9sG,GAEpB,IAAM8sK,EAAYhgE,EAAKjxG,MAAOo2L,IAExB/qB,EAAczoK,KAAK+oK,OAAO9E,IAAKoK,GAErC,GAAqB,IAAhB5F,EAGJ,OAA4C,IAAvCzoK,KAAKwtK,gBAAiBn/D,EAAKvjE,OAExBvpC,EAAOm6J,KAAMrtD,EAAKvjE,OAKnB,KAIR,IAAMxzC,IAAQ+2G,EAAKvjE,MAAMm5H,IAAKjkK,KAAK+oK,QAAW/oK,KAAKurK,UAAa9C,EAEhE,OAAKnxK,EAAI,GAAKA,EAAI,EAEV,KAIDiK,EAAOm6J,KAAM2S,GAAY9Y,eAAgBj+J,GAAI80B,IAAKiiF,EAAKvjE,MAE/D,GAAC,CAAAtoC,IAAA,iBAAA/D,MAED,SAAgB4vG,GAIf,IAAMylF,EAAY9zL,KAAKwtK,gBAAiBn/D,EAAKvjE,OACvCipJ,EAAU/zL,KAAKwtK,gBAAiBn/D,EAAKtjE,KAE3C,OAAS+oJ,EAAY,GAAKC,EAAU,GAASA,EAAU,GAAKD,EAAY,CAEzE,GAAC,CAAAtxL,IAAA,gBAAA/D,MAED,SAAe+rK,GAEd,OAAOA,EAAIwpB,gBAAiBh0L,KAE7B,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB2sK,GAEjB,OAAOA,EAAO4oB,gBAAiBh0L,KAEhC,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAe8C,GAEd,OAAOA,EAAOm6J,KAAM17J,KAAK+oK,QAASxT,gBAAkBv1J,KAAKurK,SAE1D,GAAC,CAAA/oK,IAAA,eAAA/D,MAED,SAAci7J,EAAQu6B,GAErB,IAAMpe,EAAeoe,GAAwBP,GAActN,gBAAiB1sB,GAEtEw6B,EAAiBl0L,KAAKm0L,cAAeX,IAAW3rB,aAAcnO,GAE9DqP,EAAS/oK,KAAK+oK,OAAOrJ,aAAcmW,GAAeh1D,YAIxD,OAFA7gH,KAAKurK,UAAa2oB,EAAejwB,IAAK8E,GAE/B/oK,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsrC,GAIV,OAFA/pC,KAAKurK,UAAYxhI,EAAOk6H,IAAKjkK,KAAK+oK,QAE3B/oK,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ6sK,GAEP,OAAOA,EAAMvC,OAAOyD,OAAQxsK,KAAK+oK,SAAcuC,EAAMC,WAAavrK,KAAKurK,QAExE,GAAC,CAAA/oK,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAAC2zL,CAAA,CA/LS,GAmMXA,GAAM/2L,UAAUw3L,SAAU,EAE1B,IAAMC,GAA0B,IAAInnB,GAC9BonB,GAA0B,IAAIxtB,GAE9BytB,GAAO,WAEZ,SAAAA,IAA0H,IAA7G1nB,EAAE5sK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAASr8D,EAAEr3H,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAASp8D,EAAEt3H,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAAStY,EAAEp7K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAASa,EAAEv0L,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAASc,EAAEx0L,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAAOlpL,EAAA,KAAA8pL,GAEtHv0L,KAAK00L,OAAS,CAAE7nB,EAAIv1C,EAAIC,EAAI8jD,EAAImZ,EAAIC,EAErC,CA+IC,OA/IAlrL,EAAAgrL,EAAA,EAAA/xL,IAAA,MAAA/D,MAED,SAAKouK,EAAIv1C,EAAIC,EAAI8jD,EAAImZ,EAAIC,GAExB,IAAMC,EAAS10L,KAAK00L,OASpB,OAPAA,EAAQ,GAAIh5B,KAAMmR,GAClB6nB,EAAQ,GAAIh5B,KAAMpkC,GAClBo9D,EAAQ,GAAIh5B,KAAMnkC,GAClBm9D,EAAQ,GAAIh5B,KAAM2f,GAClBqZ,EAAQ,GAAIh5B,KAAM84B,GAClBE,EAAQ,GAAIh5B,KAAM+4B,GAEXz0L,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMk2L,GAIL,IAFA,IAAMD,EAAS10L,KAAK00L,OAEVh4L,EAAI,EAAGA,EAAI,EAAGA,IAEvBg4L,EAAQh4L,GAAIg/J,KAAMi5B,EAAQD,OAAQh4L,IAInC,OAAOsD,IAER,GAAC,CAAAwC,IAAA,0BAAA/D,MAED,SAAyBqI,GAExB,IAAM4tL,EAAS10L,KAAK00L,OACdtsJ,EAAKthC,EAAEk/H,SACP4uD,EAAMxsJ,EAAI,GAAKysJ,EAAMzsJ,EAAI,GAAK0sJ,EAAM1sJ,EAAI,GAAK2sJ,EAAM3sJ,EAAI,GACvD4sJ,EAAM5sJ,EAAI,GAAK6sJ,EAAM7sJ,EAAI,GAAK8sJ,EAAM9sJ,EAAI,GAAK+sJ,EAAM/sJ,EAAI,GACvDgtJ,EAAMhtJ,EAAI,GAAKitJ,EAAMjtJ,EAAI,GAAKktJ,EAAOltJ,EAAI,IAAMmtJ,EAAOntJ,EAAI,IAC1DotJ,EAAOptJ,EAAI,IAAMqtJ,EAAOrtJ,EAAI,IAAMstJ,EAAOttJ,EAAI,IAAMutJ,EAAOvtJ,EAAI,IASpE,OAPAssJ,EAAQ,GAAIkB,cAAeb,EAAMH,EAAKO,EAAMH,EAAKO,EAAOH,EAAKO,EAAOH,GAAO30E,YAC3E6zE,EAAQ,GAAIkB,cAAeb,EAAMH,EAAKO,EAAMH,EAAKO,EAAOH,EAAKO,EAAOH,GAAO30E,YAC3E6zE,EAAQ,GAAIkB,cAAeb,EAAMF,EAAKM,EAAMF,EAAKM,EAAOF,EAAKM,EAAOF,GAAO50E,YAC3E6zE,EAAQ,GAAIkB,cAAeb,EAAMF,EAAKM,EAAMF,EAAKM,EAAOF,EAAKM,EAAOF,GAAO50E,YAC3E6zE,EAAQ,GAAIkB,cAAeb,EAAMD,EAAKK,EAAMD,EAAKK,EAAOD,EAAMK,EAAOD,GAAO70E,YAC5E6zE,EAAQ,GAAIkB,cAAeb,EAAMD,EAAKK,EAAMD,EAAKK,EAAOD,EAAMK,EAAOD,GAAO70E,YAErE7gH,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB0D,GAEjB,IAAM2oK,EAAW3oK,EAAO2oK,SAMxB,OAJiC,OAA5BA,EAASmb,gBAA0Bnb,EAASwb,wBAEjD+N,GAAU34B,KAAMoP,EAASmb,gBAAiBpe,aAAc1lK,EAAO8lK,aAExDjoK,KAAKutK,iBAAkB8mB,GAE/B,GAAC,CAAA7xL,IAAA,mBAAA/D,MAED,SAAkBo3L,GAMjB,OAJAxB,GAAUh+B,OAAOpnI,IAAK,EAAG,EAAG,GAC5BolK,GAAUnrB,OAAS,kBACnBmrB,GAAUxsB,aAAcguB,EAAO5tB,aAExBjoK,KAAKutK,iBAAkB8mB,GAE/B,GAAC,CAAA7xL,IAAA,mBAAA/D,MAED,SAAkB2sK,GAMjB,IAJA,IAAMspB,EAAS10L,KAAK00L,OACdr+B,EAAS+U,EAAO/U,OAChBy/B,GAAc1qB,EAAOlC,OAEjBxsK,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAI9B,GAFiBg4L,EAAQh4L,GAAI8wK,gBAAiBnX,GAE9By/B,EAEf,OAAO,CAIT,CAEA,OAAO,CAER,GAAC,CAAAtzL,IAAA,gBAAA/D,MAED,SAAe+rK,GAId,IAFA,IAAMkqB,EAAS10L,KAAK00L,OAEVh4L,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAM4uK,EAAQopB,EAAQh4L,GAQtB,GAJA43L,GAAUp4L,EAAIovK,EAAMvC,OAAO7sK,EAAI,EAAIsuK,EAAIttK,IAAIhB,EAAIsuK,EAAIt/H,IAAIhvC,EACvDo4L,GAAUjtL,EAAIikK,EAAMvC,OAAO1hK,EAAI,EAAImjK,EAAIttK,IAAImK,EAAImjK,EAAIt/H,IAAI7jC,EACvDitL,GAAUhtL,EAAIgkK,EAAMvC,OAAOzhK,EAAI,EAAIkjK,EAAIttK,IAAIoK,EAAIkjK,EAAIt/H,IAAI5jC,EAElDgkK,EAAMkC,gBAAiB8mB,IAAc,EAEzC,OAAO,CAIT,CAEA,OAAO,CAER,GAAC,CAAA9xL,IAAA,gBAAA/D,MAED,SAAeisK,GAId,IAFA,IAAMgqB,EAAS10L,KAAK00L,OAEVh4L,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAKg4L,EAAQh4L,GAAI8wK,gBAAiB9C,GAAU,EAE3C,OAAO,EAMT,OAAO,CAER,GAAC,CAAAloK,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACu0L,CAAA,CArJW,GAyJb,SAASwB,KAER,IAAIx2L,EAAU,KACVy2L,GAAc,EACdC,EAAgB,KAChBC,EAAY,KAEhB,SAASC,EAAkBluJ,EAAMmuJ,GAEhCH,EAAehuJ,EAAMmuJ,GAErBF,EAAY32L,EAAQkiE,sBAAuB00H,EAE5C,CAEA,MAAO,CAENrrJ,MAAO,YAEe,IAAhBkrJ,GACkB,OAAlBC,IAELC,EAAY32L,EAAQkiE,sBAAuB00H,GAE3CH,GAAc,EAEf,EAEAvnH,KAAM,WAELlvE,EAAQ2jE,qBAAsBgzH,GAE9BF,GAAc,CAEf,EAEAK,iBAAkB,SAAWl+I,GAE5B89I,EAAgB99I,CAEjB,EAEAm+I,WAAY,SAAW73L,GAEtBc,EAAUd,CAEX,EAIF,CAEA,SAAS83L,GAAiB3pI,EAAI4pI,GAE7B,IAAMC,EAAWD,EAAaC,SAExBC,EAAU,IAAI31I,QAiLpB,MAAO,CAENhxB,IAjED,SAAcmmI,GAIb,OAFKA,EAAUszB,+BAA+BtzB,EAAYA,EAAUxyH,MAE7DgzJ,EAAQ3mK,IAAKmmI,EAErB,EA4DCt1F,OA1DD,SAAiBs1F,GAEXA,EAAUszB,+BAA+BtzB,EAAYA,EAAUxyH,MAEpE,IAAMA,EAAOgzJ,EAAQ3mK,IAAKmmI,GAErBxyH,IAEJkpB,EAAG+pI,aAAcjzJ,EAAKy2H,QAEtBu8B,EAAQl5J,OAAQ04H,GAIlB,EA6CCoN,OA3CD,SAAiBpN,EAAW0gC,GAE3B,GAAK1gC,EAAU6wB,oBAAf,CAEC,IAAM8P,EAASH,EAAQ3mK,IAAKmmI,KAErB2gC,GAAUA,EAAOx9L,QAAU68J,EAAU78J,UAE3Cq9L,EAAQznK,IAAKinI,EAAW,CACvBiE,OAAQjE,EAAUiE,OAClBv1J,KAAMsxJ,EAAUtxJ,KAChBkyL,gBAAiB5gC,EAAU6gC,YAC3B19L,QAAS68J,EAAU78J,SAOtB,KAjBA,CAmBK68J,EAAUszB,+BAA+BtzB,EAAYA,EAAUxyH,MAEpE,IAAMA,EAAOgzJ,EAAQ3mK,IAAKmmI,QAEZ9rJ,IAATs5B,EAEJgzJ,EAAQznK,IAAKinI,EAnKf,SAAuBA,EAAW0gC,GAEjC,IAUIhyL,EAVE7B,EAAQmzJ,EAAUnzJ,MAClB2/K,EAAQxsB,EAAUwsB,MAElBvoB,EAASvtG,EAAGoqI,eASlB,GAPApqI,EAAGqqI,WAAYL,EAAYz8B,GAC3BvtG,EAAGsqI,WAAYN,EAAY7zL,EAAO2/K,GAElCxsB,EAAUgtB,mBAILngL,aAAiB8xJ,aAErBjwJ,EAAO,UAED,GAAK7B,aAAiB+xJ,YAE5B,GAAKoB,EAAU0uB,yBAA2B,CAEzC,IAAK6R,EAMJ,MAAM,IAAI34L,MAAO,2EAJjB8G,EAAO,IAQT,MAECA,EAAO,UAIF,GAAK7B,aAAiBiyJ,WAE5BpwJ,EAAO,UAED,GAAK7B,aAAiBwkG,YAE5B3iG,EAAO,UAED,GAAK7B,aAAiBi3J,WAE5Bp1J,EAAO,UAED,GAAK7B,aAAiBkyJ,UAE5BrwJ,EAAO,UAED,GAAK7B,aAAiBwyG,WAE5B3wG,EAAO,SAED,MAAK7B,aAAiBg3J,mBAM5B,MAAM,IAAIj8J,MAAO,0DAA4DiF,GAJ7E6B,EAAO,IAMR,CAEA,MAAO,CACNu1J,OAAQA,EACRv1J,KAAMA,EACNkyL,gBAAiB/zL,EAAMo0L,kBACvB99L,QAAS68J,EAAU78J,QAGrB,CAwF0B29L,CAAc9gC,EAAW0gC,IAEtClzJ,EAAKrqC,QAAU68J,EAAU78J,WAxFtC,SAAuB8gK,EAAQjE,EAAW0gC,GAEzC,IAAM7zL,EAAQmzJ,EAAUnzJ,MAClB4/K,EAAczsB,EAAUysB,YAE9B/1H,EAAGqqI,WAAYL,EAAYz8B,IAEE,IAAxBwoB,EAAYhlG,MAIhB/wB,EAAGwqI,cAAeR,EAAY,EAAG7zL,IAI5B0zL,EAEJ7pI,EAAGwqI,cAAeR,EAAYjU,EAAY54I,OAAShnC,EAAMo0L,kBACxDp0L,EAAO4/K,EAAY54I,OAAQ44I,EAAYhlG,OAIxC/wB,EAAGwqI,cAAeR,EAAYjU,EAAY54I,OAAShnC,EAAMo0L,kBACxDp0L,EAAMs0L,SAAU1U,EAAY54I,OAAQ44I,EAAY54I,OAAS44I,EAAYhlG,QAIvEglG,EAAYhlG,OAAU,EAIxB,CA2DE25G,CAAc5zJ,EAAKy2H,OAAQjE,EAAW0gC,GAEtClzJ,EAAKrqC,QAAU68J,EAAU78J,QAd1B,CAkBD,EAUD,CAAC,IAEKk+L,GAAa,SAAAC,GAAAx7K,EAAAu7K,EAAAC,GAAA,IAAAC,EAAA98K,EAAA48K,GAElB,SAAAA,IAA4E,IAAAG,EAA/DvpL,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG4sL,EAAa5sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG6sL,EAAc7sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAA8sL,IAExEG,EAAAD,EAAA56L,KAAA,OACK+H,KAAO,gBAEZ8yL,EAAKlf,WAAa,CACjBrqK,MAAOA,EACPC,OAAQA,EACRy+K,cAAeA,EACfC,eAAgBA,GAsBjB,IAnBA,IAAM6K,EAAaxpL,EAAQ,EACrBypL,EAAcxpL,EAAS,EAEvBm/K,EAAQtwL,KAAKwf,MAAOowK,GACpBW,EAAQvwL,KAAKwf,MAAOqwK,GAEpBgB,EAASP,EAAQ,EACjBQ,EAASP,EAAQ,EAEjBqK,EAAgB1pL,EAAQo/K,EACxBuK,EAAiB1pL,EAASo/K,EAI1BrG,EAAU,GACV8F,EAAW,GACX5F,EAAU,GACVC,EAAM,GAEF7f,EAAK,EAAGA,EAAKsmB,EAAQtmB,IAI9B,IAFA,IAAMpgK,EAAIogK,EAAKqwB,EAAiBF,EAEtBpwB,EAAK,EAAGA,EAAKsmB,EAAQtmB,IAAQ,CAEtC,IAAMtrK,EAAIsrK,EAAKqwB,EAAgBF,EAE/B1K,EAASnwL,KAAMZ,GAAKmL,EAAG,GAEvBggL,EAAQvqL,KAAM,EAAG,EAAG,GAEpBwqL,EAAIxqL,KAAM0qK,EAAK+lB,GACfjG,EAAIxqL,KAAM,EAAM2qK,EAAK+lB,EAEtB,CAID,IAAM,IAAI/lB,EAAK,EAAGA,EAAK+lB,EAAO/lB,IAE7B,IAAM,IAAID,EAAK,EAAGA,EAAK+lB,EAAO/lB,IAAQ,CAErC,IAAMxrK,EAAIwrK,EAAKsmB,EAASrmB,EAClBlhK,EAAIihK,EAAKsmB,GAAWrmB,EAAK,GACzBxrK,EAAMurK,EAAK,EAAMsmB,GAAWrmB,EAAK,GACjCjhK,EAAMghK,EAAK,EAAMsmB,EAASrmB,EAEhC0f,EAAQrqL,KAAMd,EAAGuK,EAAGC,GACpB2gL,EAAQrqL,KAAMyJ,EAAGtK,EAAGuK,EAErB,CAO+D,OAHhEkxL,EAAK1N,SAAU7C,GACfuQ,EAAK5kL,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACrEyK,EAAK5kL,aAAc,SAAU,IAAI+xK,GAAwBwC,EAAS,IAClEqQ,EAAK5kL,aAAc,KAAM,IAAI+xK,GAAwByC,EAAK,IAAMoQ,CAEjE,CAMC,OANAnuL,EAAAguL,EAAA,OAAA/0L,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAI6zJ,EAAe7zJ,EAAKv1B,MAAOu1B,EAAKt1B,OAAQs1B,EAAKmpJ,cAAenpJ,EAAKopJ,eAE7E,KAACyK,CAAA,CA/EiB,CAAS7R,IAiWtBqS,GAAc,CACnBC,kBA/QuB,iFAgRvBC,uBA9Q4B,6DA+Q5BC,mBA7QwB,6EA8QxBC,wBA5Q6B,2DA6Q7BC,eA3QoB,maA4QpBC,oBA1QyB,wFA2QzBC,aAzQkB,uCA0QlBC,mBAxQwB,+GAyQxBC,MAvQW,0kKAwQXC,sBAtQ2B,g8BAuQ3BC,yBArQ8B,6nBAsQ9BC,8BApQmC,4HAqQnCC,4BAnQiC,qEAoQjCC,uBAlQ4B,2EAmQ5BC,eAjQoB,+HAkQpBC,oBAhQyB,qHAiQzBC,kBA/PuB,wJAgQvBC,aA9PkB,iRA+PlBC,OA7PY,mxEA8PZC,4BA5PiC,u2GA6PjCC,qBA3P0B,2jBA4P1BC,4BA1PiC,kJA2PjCC,uBAzP4B,mKA0P5BC,qBAxP0B,uIAyP1BC,0BAvP+B,mEAwP/BC,mBAtPwB,sDAuPxBC,wBArP6B,6QAsP7BC,gBApPqB,sxCAqPrBC,4BAnPiC,6MAoPjCC,qBAlP0B,yTAmP1BC,mBAjPwB,+RAkPxBC,8BA5NmC,04BA6NnCC,cAjPmB,4oBAkPnBC,WAhPgB,wDAiPhBC,gBA/OqB,qDAgPrBC,aA9OkB,2RA+OlBC,kBA7OuB,2MA8OvBC,0BA5O+B,uYA6O/BC,kBA3OuB,gNA4OvBC,uBA1O4B,iGA2O5BC,sBAzO2B,ovFA0O3BC,kBAxOuB,iwJAyOvBC,qBArO0B,oEAsO1BC,0BApO+B,20BAqO/BC,sBAnO2B,sMAoO3BC,2BAlOgC,mqCAmOhCC,yBAjO8B,qwEAkO9BC,8BAhOmC,glNAiOnCC,sBA/N2B,21HAgO3BC,qBA9N0B,gsBA+N1BC,oBA7NyB,2QA8NzBC,qBA5N0B,mLA6N1BC,0BA3N+B,yKA4N/BC,wBA1N6B,sLA2N7BC,mBAzNwB,+XA0NxBC,aAxNkB,8ZAyNlBC,kBAvNuB,mDAwNvBC,sBAtN2B,iSAuN3BC,2BArNgC,uMAsNhCC,sBApN2B,uKAqN3BC,2BAnNgC,qEAoNhCC,kBAlNuB,6eAmNvBC,mBAjNwB,+jBAkNxBC,wBAhN6B,k1BAiN7BC,mBA/MwB,u2BAgNxBC,sBA9M2B,o2BA+M3BC,qBA7M0B,mqBA8M1BC,qBA5M0B,iJA6M1BC,mBA3MwB,iJA4MxBC,cA1MmB,mOA2MnBC,wBAzM6B,6+BA0M7BC,gCAxMqC,yEAyMrCC,+BAvMoC,mXAwMpCC,wBAtM6B,mRAuM7BC,gBArMqB,mLAsMrBC,QApMa,4jDAqMbC,6BAnMkC,4EAoMlCC,eAlMoB,oNAmMpBC,mBAjMwB,gFAkMxBC,wBAhM6B,2UAiM7BC,sBA/L2B,uKAgM3BC,2BA9LgC,qEA+LhCC,wBA7L6B,26RA8L7BC,sBA5L2B,mxCA6L3BC,iBA3LsB,kzCA4LtBC,yBA1L8B,k5CA2L9BC,gBAzLqB,kOA0LrBC,qBAxL0B,ghCAyL1BC,gBAvLqB,+XAwLrBC,kBAtLuB,qdAuLvBC,qBArL0B,0LAsL1BC,0BApL+B,mEAqL/BC,qBAnL0B,6FAoL1BC,0BAlL+B,oyCAmL/BC,sBAjL2B,k5BAkL3BC,2BAhLgC,umGAiLhCC,iBA/KsB,yFAgLtBC,eA9KoB,wIA+KpBC,UA7Ke,qEA8KfC,kBA5KuB,oFA6KvBC,gBA3KqB,yIA4KrBC,WA1KgB,8GA2KhBC,gBAzKqB,kTA2KrBC,gBAzKgB,8JA0KhBC,gBAxKkB,gbAyKlBC,UAvKgB,iOAwKhBC,UAtKkB,0VAuKlBC,WArKgB,wuBAsKhBC,WApKkB,83BAqKlBC,kBAnKgB,ktBAoKhBC,kBAlKkB,iuBAmKlBC,cAjKgB,+LAkKhBC,cAhKkB,yTAiKlBC,gBA/JgB,+jBAgKhBC,gBA9JkB,wwBA+JlBC,eA7JgB,o7BA8JhBC,eA5JkB,6pDA6JlBC,iBA3JgB,6pCA4JhBC,iBA1JkB,s0EA2JlBC,gBAzJgB,k7BA0JhBC,gBAxJkB,y+CAyJlBC,gBAvJgB,4+BAwJhBC,gBAtJkB,0qBAuJlBC,eArJgB,goCAsJhBC,eApJkB,4kEAqJlBC,kBAnJgB,itCAoJhBC,kBAlJkB,6mHAmJlBC,cAjJgB,okCAkJhBC,cAhJkB,myDAiJlBC,YA/IgB,qtBAgJhBC,YA9IkB,6vBA+IlBC,YA7IgB,yhBA8IhBC,YA5IkB,maA6IlBC,YA3IgB,snCA4IhBC,YA1IkB,ouBAiJbC,GAAc,CAEnBrH,OAAQ,CAEPsH,QAAS,CAAE/hM,MAAO,IAAI88J,GAAO,WAC7B/mI,QAAS,CAAE/1B,MAAO,GAElBlC,IAAK,CAAEkC,MAAO,MACdgiM,YAAa,CAAEhiM,MAAO,IAAI+3J,IAC1BkqC,aAAc,CAAEjiM,MAAO,IAAI+3J,IAE3B4oB,SAAU,CAAE3gL,MAAO,MACnB8iL,UAAW,CAAE9iL,MAAO,IAIrBkiM,YAAa,CAEZvgB,YAAa,CAAE3hL,MAAO,OAIvBmiM,OAAQ,CAEPrgB,OAAQ,CAAE9hL,MAAO,MACjBoiM,WAAY,CAAEpiM,OAAS,GACvBiiL,aAAc,CAAEjiL,MAAO,GACvBqiM,IAAK,CAAEriM,MAAO,KACdkiL,gBAAiB,CAAEliL,MAAO,MAI3BsiM,MAAO,CAENxhB,MAAO,CAAE9gL,MAAO,MAChB+gL,eAAgB,CAAE/gL,MAAO,IAI1BuiM,SAAU,CAET3hB,SAAU,CAAE5gL,MAAO,MACnB6gL,kBAAmB,CAAE7gL,MAAO,IAI7BwiM,YAAa,CAEZ9gB,YAAa,CAAE1hL,MAAO,OAIvByiM,QAAS,CAERzhB,QAAS,CAAEhhL,MAAO,MAClBihL,UAAW,CAAEjhL,MAAO,IAIrB0iM,UAAW,CAEVxhB,UAAW,CAAElhL,MAAO,MACpBohL,YAAa,CAAEphL,MAAO,IAAI02J,GAAS,EAAG,KAIvCisC,gBAAiB,CAEhBthB,gBAAiB,CAAErhL,MAAO,MAC1BshL,kBAAmB,CAAEthL,MAAO,GAC5BuhL,iBAAkB,CAAEvhL,MAAO,IAI5B4iM,aAAc,CAEbphB,aAAc,CAAExhL,MAAO,OAIxB6iM,aAAc,CAEbphB,aAAc,CAAEzhL,MAAO,OAIxB8iM,YAAa,CAEZ3gB,YAAa,CAAEniL,MAAO,OAIvBk9K,IAAK,CAEJ6lB,WAAY,CAAE/iM,MAAO,OACrBgjM,QAAS,CAAEhjM,MAAO,GAClBijM,OAAQ,CAAEjjM,MAAO,KACjBkjM,SAAU,CAAEljM,MAAO,IAAI88J,GAAO,YAI/BuzB,OAAQ,CAEP8S,kBAAmB,CAAEnjM,MAAO,IAE5BojM,WAAY,CAAEpjM,MAAO,IAErBqjM,kBAAmB,CAAErjM,MAAO,GAAIkP,WAAY,CAC3C0gK,UAAW,CAAC,EACZ7mI,MAAO,CAAC,IAGTu6J,wBAAyB,CAAEtjM,MAAO,GAAIkP,WAAY,CACjDq0L,WAAY,CAAC,EACbC,iBAAkB,CAAC,EACnBC,aAAc,CAAC,EACfC,cAAe,CAAC,IAGjBC,qBAAsB,CAAE3jM,MAAO,IAC/B4jM,wBAAyB,CAAE5jM,MAAO,IAElC6jM,WAAY,CAAE7jM,MAAO,GAAIkP,WAAY,CACpC65B,MAAO,CAAC,EACR+3B,SAAU,CAAC,EACX8uG,UAAW,CAAC,EACZqI,SAAU,CAAC,EACX6rB,QAAS,CAAC,EACVC,YAAa,CAAC,EACdC,MAAO,CAAC,IAGTC,iBAAkB,CAAEjkM,MAAO,GAAIkP,WAAY,CAC1Cq0L,WAAY,CAAC,EACbC,iBAAkB,CAAC,EACnBC,aAAc,CAAC,EACfC,cAAe,CAAC,IAGjBQ,cAAe,CAAElkM,MAAO,IACxBmkM,iBAAkB,CAAEnkM,MAAO,IAE3BokM,YAAa,CAAEpkM,MAAO,GAAIkP,WAAY,CACrC65B,MAAO,CAAC,EACR+3B,SAAU,CAAC,EACXkjI,MAAO,CAAC,EACR/rB,SAAU,CAAC,IAGZosB,kBAAmB,CAAErkM,MAAO,GAAIkP,WAAY,CAC3Cq0L,WAAY,CAAC,EACbC,iBAAkB,CAAC,EACnBC,aAAc,CAAC,EACfC,cAAe,CAAC,EAChBY,iBAAkB,CAAC,EACnBC,gBAAiB,CAAC,IAGnBC,eAAgB,CAAExkM,MAAO,IACzBykM,kBAAmB,CAAEzkM,MAAO,IAE5B0kM,iBAAkB,CAAE1kM,MAAO,GAAIkP,WAAY,CAC1C0gK,UAAW,CAAC,EACZ+0B,SAAU,CAAC,EACXC,YAAa,CAAC,IAIfC,eAAgB,CAAE7kM,MAAO,GAAIkP,WAAY,CACxC65B,MAAO,CAAC,EACR+3B,SAAU,CAAC,EACXpxD,MAAO,CAAC,EACRC,OAAQ,CAAC,IAGVm1L,MAAO,CAAE9kM,MAAO,MAChB+kM,MAAO,CAAE/kM,MAAO,OAIjBwrK,OAAQ,CAEPu2B,QAAS,CAAE/hM,MAAO,IAAI88J,GAAO,WAC7B/mI,QAAS,CAAE/1B,MAAO,GAClB8mD,KAAM,CAAE9mD,MAAO,GACf44I,MAAO,CAAE54I,MAAO,GAChBlC,IAAK,CAAEkC,MAAO,MACd2gL,SAAU,CAAE3gL,MAAO,MACnB8iL,UAAW,CAAE9iL,MAAO,GACpBgiM,YAAa,CAAEhiM,MAAO,IAAI+3J,KAI3Bq/B,OAAQ,CAEP2K,QAAS,CAAE/hM,MAAO,IAAI88J,GAAO,WAC7B/mI,QAAS,CAAE/1B,MAAO,GAClB43J,OAAQ,CAAE53J,MAAO,IAAI02J,GAAS,GAAK,KACnCmE,SAAU,CAAE76J,MAAO,GACnBlC,IAAK,CAAEkC,MAAO,MACd2gL,SAAU,CAAE3gL,MAAO,MACnB8iL,UAAW,CAAE9iL,MAAO,GACpBgiM,YAAa,CAAEhiM,MAAO,IAAI+3J,MAMtBitC,GAAY,CAEjBC,MAAO,CAENtV,SAAUD,GAAe,CACxBoS,GAAYrH,OACZqH,GAAYI,YACZJ,GAAYK,OACZL,GAAYQ,MACZR,GAAYS,SACZT,GAAY5kB,MAGbiT,aAAcmJ,GAAYoH,eAC1BtQ,eAAgBkJ,GAAYqH,gBAI7BuE,QAAS,CAERvV,SAAUD,GAAe,CACxBoS,GAAYrH,OACZqH,GAAYI,YACZJ,GAAYK,OACZL,GAAYQ,MACZR,GAAYS,SACZT,GAAYU,YACZV,GAAY5kB,IACZ4kB,GAAYzR,OACZ,CACCvQ,SAAU,CAAE9/K,MAAO,IAAI88J,GAAO,OAIhCqzB,aAAcmJ,GAAYsH,iBAC1BxQ,eAAgBkJ,GAAYuH,kBAI7BsE,MAAO,CAENxV,SAAUD,GAAe,CACxBoS,GAAYrH,OACZqH,GAAYI,YACZJ,GAAYK,OACZL,GAAYQ,MACZR,GAAYS,SACZT,GAAYU,YACZV,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZb,GAAY5kB,IACZ4kB,GAAYzR,OACZ,CACCvQ,SAAU,CAAE9/K,MAAO,IAAI88J,GAAO,IAC9BkjB,SAAU,CAAEhgL,MAAO,IAAI88J,GAAO,UAC9BqjB,UAAW,CAAEngL,MAAO,OAItBmwL,aAAcmJ,GAAY4H,eAC1B9Q,eAAgBkJ,GAAY6H,gBAI7BiE,SAAU,CAETzV,SAAUD,GAAe,CACxBoS,GAAYrH,OACZqH,GAAYK,OACZL,GAAYQ,MACZR,GAAYS,SACZT,GAAYU,YACZV,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZb,GAAYc,aACZd,GAAYe,aACZf,GAAY5kB,IACZ4kB,GAAYzR,OACZ,CACCvQ,SAAU,CAAE9/K,MAAO,IAAI88J,GAAO,IAC9B2iB,UAAW,CAAEz/K,MAAO,GACpB0/K,UAAW,CAAE1/K,MAAO,GACpBgiL,gBAAiB,CAAEhiL,MAAO,MAI5BmwL,aAAcmJ,GAAY8H,kBAC1BhR,eAAgBkJ,GAAY+H,mBAI7BgE,KAAM,CAEL1V,SAAUD,GAAe,CACxBoS,GAAYrH,OACZqH,GAAYQ,MACZR,GAAYS,SACZT,GAAYU,YACZV,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZb,GAAYgB,YACZhB,GAAY5kB,IACZ4kB,GAAYzR,OACZ,CACCvQ,SAAU,CAAE9/K,MAAO,IAAI88J,GAAO,OAIhCqzB,aAAcmJ,GAAYgI,cAC1BlR,eAAgBkJ,GAAYiI,eAI7B7gB,OAAQ,CAEPiP,SAAUD,GAAe,CACxBoS,GAAYrH,OACZqH,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZb,GAAY5kB,IACZ,CACCwD,OAAQ,CAAE1gL,MAAO,SAInBmwL,aAAcmJ,GAAYwH,gBAC1B1Q,eAAgBkJ,GAAYyH,iBAI7Bv1B,OAAQ,CAEPmkB,SAAUD,GAAe,CACxBoS,GAAYt2B,OACZs2B,GAAY5kB,MAGbiT,aAAcmJ,GAAYkI,YAC1BpR,eAAgBkJ,GAAYmI,aAI7B6D,OAAQ,CAEP3V,SAAUD,GAAe,CACxBoS,GAAYrH,OACZqH,GAAY5kB,IACZ,CACCtkC,MAAO,CAAE54I,MAAO,GAChB4iL,SAAU,CAAE5iL,MAAO,GACnBulM,UAAW,CAAEvlM,MAAO,MAItBmwL,aAAcmJ,GAAYkH,gBAC1BpQ,eAAgBkJ,GAAYmH,iBAI7B3wF,MAAO,CAEN6/E,SAAUD,GAAe,CACxBoS,GAAYrH,OACZqH,GAAYa,kBAGbxS,aAAcmJ,GAAY4G,WAC1B9P,eAAgBkJ,GAAY6G,YAI7B71B,OAAQ,CAEPqlB,SAAUD,GAAe,CACxBoS,GAAYrH,OACZqH,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZ,CACC5sK,QAAS,CAAE/1B,MAAO,MAIpBmwL,aAAcmJ,GAAY0H,gBAC1B5Q,eAAgBkJ,GAAY2H,iBAI7B7J,OAAQ,CAEPzH,SAAUD,GAAe,CACxBoS,GAAY1K,OACZ0K,GAAY5kB,MAGbiT,aAAcmJ,GAAYsI,YAC1BxR,eAAgBkJ,GAAYuI,aAI7B1gI,WAAY,CAEXwuH,SAAU,CACTqS,YAAa,CAAEhiM,MAAO,IAAI+3J,IAC1BytC,IAAK,CAAExlM,MAAO,OAGfmwL,aAAcmJ,GAAYwG,gBAC1B1P,eAAgBkJ,GAAYyG,iBAO7B0F,KAAM,CAEL9V,SAAUD,GAAe,CACxBoS,GAAYK,OACZ,CACCpsK,QAAS,CAAE/1B,MAAO,MAIpBmwL,aAAcmJ,GAAY0G,UAC1B5P,eAAgBkJ,GAAY2G,WAI7ByF,SAAU,CAET/V,SAAU,CACTgF,UAAW,CAAE30L,MAAO,OAGrBmwL,aAAcmJ,GAAYgH,cAC1BlQ,eAAgBkJ,GAAYiH,eAI7BoF,aAAc,CAEbhW,SAAUD,GAAe,CACxBoS,GAAYrH,OACZqH,GAAYa,gBACZ,CACCiD,kBAAmB,CAAE5lM,MAAO,IAAIqoK,IAChCw9B,aAAc,CAAE7lM,MAAO,GACvB8lM,YAAa,CAAE9lM,MAAO,QAIxBmwL,aAAcmJ,GAAY8G,kBAC1BhQ,eAAgBkJ,GAAY+G,mBAI7Br7C,OAAQ,CAEP2qC,SAAUD,GAAe,CACxBoS,GAAYzR,OACZyR,GAAY5kB,IACZ,CACCn0I,MAAO,CAAE/oC,MAAO,IAAI88J,GAAO,IAC3B/mI,QAAS,CAAE/1B,MAAO,MAIpBmwL,aAAcmJ,GAAYoI,YAC1BtR,eAAgBkJ,GAAYqI,cA0C9B,SAASoE,GAAiB1S,EAAU2S,EAAU7kL,EAAO8kL,EAAS3uC,EAAO4nB,GAEpE,IAGIgnB,EACAC,EAJEC,EAAa,IAAItpC,GAAO,GAC1BupC,GAAuB,IAAV/uC,EAAiB,EAAI,EAKlCgvC,EAAoB,KACpBC,EAA2B,EAC3BC,EAAqB,KAuKzB,SAASC,EAAU19J,EAAOuuH,GAEzBn2I,EAAM82K,QAAQlvJ,MAAM09J,SAAU19J,EAAMtgC,EAAGsgC,EAAM9gC,EAAG8gC,EAAMjhC,EAAGwvJ,EAAO4nB,EAEjE,CAEA,MAAO,CAENwnB,cAAe,WAEd,OAAON,CAER,EACAO,cAAe,SAAW59J,GAAmB,IAAZuuH,EAAK91J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAExC4kM,EAAW51K,IAAKuY,GAEhB09J,EAAUL,EADVC,EAAa/uC,EAGd,EACAsvC,cAAe,WAEd,OAAOP,CAER,EACAQ,cAAe,SAAWvvC,GAGzBmvC,EAAUL,EADVC,EAAa/uC,EAGd,EACAvwJ,OApMD,SAAiB+/L,EAAYxT,GAE5B,IAAIyT,GAAa,EACb5lI,GAA+B,IAAlBmyH,EAAM5Z,QAAmB4Z,EAAMnyH,WAAa,KAExDA,GAAcA,EAAW+/F,YAE7B//F,EAAa6kI,EAAS10K,IAAK6vC,IAO5B,IAAM4yH,EAAKV,EAASU,GACdiT,EAAUjT,EAAGkT,YAAclT,EAAGkT,aAE/BD,GAA4C,aAAjCA,EAAQE,uBAEvB/lI,EAAa,MAIM,OAAfA,EAEJslI,EAAUL,EAAYC,GAEXllI,GAAcA,EAAW67F,UAEpCypC,EAAUtlI,EAAY,GACtB4lI,GAAa,IAIT1T,EAAS8T,WAAaJ,IAE1B1T,EAAS3xL,MAAO2xL,EAAS+T,eAAgB/T,EAASgU,eAAgBhU,EAASiU,kBAIvEnmI,IAAgBA,EAAWkzH,eAAiBlzH,EAAW0kF,UAAY8F,UAEtDhgJ,IAAZw6L,KAEJA,EAAU,IAAI1Z,GACb,IAAIuB,GAAa,EAAG,EAAG,GACvB,IAAI8B,GAAgB,CACnBp1L,KAAM,yBACNi1L,SAAUF,GAAeuV,GAAUS,KAAK9V,UACxCQ,aAAc6U,GAAUS,KAAKtV,aAC7BC,eAAgB4U,GAAUS,KAAKrV,eAC/BhT,KAAMz0B,GACNm1B,WAAW,EACXC,YAAY,EACZb,KAAK,MAIC7Q,SAASk7B,gBAAiB,UAClCpB,EAAQ95B,SAASk7B,gBAAiB,MAElCpB,EAAQqB,eAAiB,SAAWnU,EAAUC,EAAOnqB,GAEpD5nK,KAAKioK,YAAYi+B,aAAct+B,EAAOK,YAEvC,EAGA1pK,OAAOC,eAAgBomM,EAAQ/rB,SAAU,SAAU,CAElD9oJ,IAAK,WAEJ,OAAO/vB,KAAKouL,SAAS7N,OAAO9hL,KAE7B,IAIDimM,EAAQphC,OAAQshC,IAIjBA,EAAQ/rB,SAASuV,SAAS7N,OAAO9hL,MAAQmhE,EACzCglI,EAAQ/rB,SAASuV,SAASyS,WAAWpiM,MAAUmhE,EAAWkzH,gBAAsD,IAArClzH,EAAWu/F,uBAAsC,EAAI,EAE3H4lC,IAAsBnlI,GAC1BolI,IAA6BplI,EAAWvmE,SACxC4rM,IAAuBnT,EAASQ,cAEhCsS,EAAQ/rB,SAASvZ,aAAc,EAE/BylC,EAAoBnlI,EACpBolI,EAA2BplI,EAAWvmE,QACtC4rM,EAAqBnT,EAASQ,aAK/BiT,EAAWx1L,QAAS60L,EAASA,EAAQ95B,SAAU85B,EAAQ/rB,SAAU,EAAG,EAAG,OAE5Dj5G,GAAcA,EAAW+/F,iBAEjBv1J,IAAdu6L,KAEJA,EAAY,IAAIzZ,GACf,IAAIqM,GAAe,EAAG,GACtB,IAAIhJ,GAAgB,CACnBp1L,KAAM,qBACNi1L,SAAUF,GAAeuV,GAAU7jI,WAAWwuH,UAC9CQ,aAAc6U,GAAU7jI,WAAWgvH,aACnCC,eAAgB4U,GAAU7jI,WAAWivH,eACrChT,KAAM10B,GACNo1B,WAAW,EACXC,YAAY,EACZb,KAAK,MAIG7Q,SAASk7B,gBAAiB,UAGpCznM,OAAOC,eAAgBmmM,EAAU9rB,SAAU,MAAO,CAEjD9oJ,IAAK,WAEJ,OAAO/vB,KAAKouL,SAAS6V,IAAIxlM,KAE1B,IAIDimM,EAAQphC,OAAQqhC,IAIjBA,EAAU9rB,SAASuV,SAAS6V,IAAIxlM,MAAQmhE,GAEH,IAAhCA,EAAWg/F,kBAEfh/F,EAAWy2G,eAIZsuB,EAAU9rB,SAASuV,SAASqS,YAAYhiM,MAAMi9J,KAAM97F,EAAW85F,QAE1DqrC,IAAsBnlI,GAC1BolI,IAA6BplI,EAAWvmE,SACxC4rM,IAAuBnT,EAASQ,cAEhCqS,EAAU9rB,SAASvZ,aAAc,EAEjCylC,EAAoBnlI,EACpBolI,EAA2BplI,EAAWvmE,QACtC4rM,EAAqBnT,EAASQ,aAM/BiT,EAAWx1L,QAAS40L,EAAWA,EAAU75B,SAAU65B,EAAU9rB,SAAU,EAAG,EAAG,MAI/E,EAqCD,CAEA,SAASstB,GAAoBv5I,EAAI0/B,EAAYpa,EAAYskH,GAExD,IAAM4P,EAAsBx5I,EAAGy5I,aAAc,OAEvCC,EAAY9P,EAAaC,SAAW,KAAOnqG,EAAWv8D,IAAK,2BAC3Dw2K,EAAe/P,EAAaC,UAA0B,OAAd6P,EAExCE,EAAgB,CAAC,EAEjBC,EAAeC,EAAoB,MACrCC,EAAeF,EACfv/G,GAAc,EA2ElB,SAAS0/G,EAAuBC,GAE/B,OAAKrQ,EAAaC,SAAkB7pI,EAAGk6I,gBAAiBD,GAEjDP,EAAUS,mBAAoBF,EAEtC,CAEA,SAASG,EAAyBH,GAEjC,OAAKrQ,EAAaC,SAAkB7pI,EAAGq6I,kBAAmBJ,GAEnDP,EAAUY,qBAAsBL,EAExC,CAqCA,SAASH,EAAoBG,GAM5B,IAJA,IAAMM,EAAgB,GAChBC,EAAoB,GACpBC,EAAoB,GAEhB3qM,EAAI,EAAGA,EAAI0pM,EAAqB1pM,IAEzCyqM,EAAezqM,GAAM,EACrB0qM,EAAmB1qM,GAAM,EACzB2qM,EAAmB3qM,GAAM,EAI1B,MAAO,CAGNouK,SAAU,KACVw8B,QAAS,KACT9lB,WAAW,EAEX2lB,cAAeA,EACfC,kBAAmBA,EACnBC,kBAAmBA,EACnBllM,OAAQ0kM,EACR30H,WAAY,CAAC,EACbtjE,MAAO,KAIT,CAgEA,SAAS24L,IAIR,IAFA,IAAMJ,EAAgBR,EAAaQ,cAEzBzqM,EAAI,EAAGowD,EAAKq6I,EAAcvvM,OAAQ8E,EAAIowD,EAAIpwD,IAEnDyqM,EAAezqM,GAAM,CAIvB,CAEA,SAAS8qM,EAAiBtxC,GAEzBuxC,EAA2BvxC,EAAW,EAEvC,CAEA,SAASuxC,EAA2BvxC,EAAWwxC,GAE9C,IAAMP,EAAgBR,EAAaQ,cAC7BC,EAAoBT,EAAaS,kBACjCC,EAAoBV,EAAaU,mBAEvCF,EAAejxC,GAAc,EAEW,IAAnCkxC,EAAmBlxC,KAEvBtpG,EAAG+6I,wBAAyBzxC,GAC5BkxC,EAAmBlxC,GAAc,GAI7BmxC,EAAmBnxC,KAAgBwxC,MAErBlR,EAAaC,SAAW7pI,EAAK0/B,EAAWv8D,IAAK,2BAEpDymK,EAAaC,SAAW,sBAAwB,4BAA8BvgC,EAAWwxC,GACpGL,EAAmBnxC,GAAcwxC,EAInC,CAEA,SAASE,IAKR,IAHA,IAAMT,EAAgBR,EAAaQ,cAC7BC,EAAoBT,EAAaS,kBAE7B1qM,EAAI,EAAGowD,EAAKs6I,EAAkBxvM,OAAQ8E,EAAIowD,EAAIpwD,IAElD0qM,EAAmB1qM,KAAQyqM,EAAezqM,KAE9CkwD,EAAGi7I,yBAA0BnrM,GAC7B0qM,EAAmB1qM,GAAM,EAM5B,CAEA,SAASorM,EAAqBl5L,EAAO22C,EAAM3gD,EAAMg4J,EAAY6sB,EAAQ1/I,IAErC,IAA1BysJ,EAAaC,UAAgC,OAAT7xL,GAA0B,OAATA,EAMzDgoD,EAAGk7I,oBAAqBl5L,EAAO22C,EAAM3gD,EAAMg4J,EAAY6sB,EAAQ1/I,GAJ/D6iB,EAAGm7I,qBAAsBn5L,EAAO22C,EAAM3gD,EAAM6kL,EAAQ1/I,EAQtD,CA6PA,SAASwwB,IAERytI,IACA9gH,GAAc,EAETy/G,IAAiBF,GAGtBG,GADAD,EAAeF,GACqBtkM,OAErC,CAIA,SAAS6lM,IAERvB,EAAa37B,SAAW,KACxB27B,EAAaa,QAAU,KACvBb,EAAajlB,WAAY,CAE1B,CAEA,MAAO,CAENymB,MAzjBD,SAAgB9lM,EAAQ02K,EAAUyuB,EAASx8B,EAAUl8J,GAEpD,IAAIs5L,GAAgB,EAEpB,GAAK3B,EAAe,CAEnB,IAAM3mL,EAmFR,SAA0BkrJ,EAAUw8B,EAASzuB,GAE5C,IAAM2I,GAAqC,IAAvB3I,EAAS2I,UAEzB2mB,EAAa3B,EAAe17B,EAAS1rI,SAErBh1B,IAAf+9L,IAEJA,EAAa,CAAC,EACd3B,EAAe17B,EAAS1rI,IAAO+oK,GAIhC,IAAIC,EAAWD,EAAYb,EAAQloK,SAEjBh1B,IAAbg+L,IAEJA,EAAW,CAAC,EACZD,EAAYb,EAAQloK,IAAOgpK,GAI5B,IAAIxoL,EAAQwoL,EAAU5mB,QAEPp3K,IAAVwV,IAEJA,EAAQ8mL,EAhDJlQ,EAAaC,SAAkB7pI,EAAGy7I,oBAEhC/B,EAAUgC,wBA+ChBF,EAAU5mB,GAAc5hK,GAIzB,OAAOA,CAER,CApHgB2oL,CAAiBz9B,EAAUw8B,EAASzuB,GAE7C8tB,IAAiB/mL,GAGrBgnL,GADAD,EAAe/mL,GACqBzd,QAIrC+lM,EA6IF,SAAsBp9B,EAAUl8J,GAE/B,IAAM45L,EAAmB7B,EAAaz0H,WAChCu2H,EAAqB39B,EAAS54F,WAEhCw2H,EAAgB,EAEpB,IAAM,IAAMlmM,KAAOimM,EAAqB,CAEvC,IAAME,EAAkBH,EAAkBhmM,GACpComM,EAAoBH,EAAoBjmM,GAE9C,QAAyB4H,IAApBu+L,EAAgC,OAAO,EAE5C,GAAKA,EAAgBzyC,YAAc0yC,EAAoB,OAAO,EAE9D,GAAKD,EAAgBjlK,OAASklK,EAAkBllK,KAAO,OAAO,EAE9DglK,GAED,CAEA,OAAK/B,EAAa+B,gBAAkBA,GAE/B/B,EAAa/3L,QAAUA,CAI7B,CAzKkB0wJ,CAAawL,EAAUl8J,GAElCs5L,GAyKP,SAAoBp9B,EAAUl8J,GAE7B,IAAMxF,EAAQ,CAAC,EACT8oE,EAAa44F,EAAS54F,WACxBw2H,EAAgB,EAEpB,IAAM,IAAMlmM,KAAO0vE,EAAa,CAE/B,IAAMgkF,EAAYhkF,EAAY1vE,GAExBkhC,EAAO,CAAC,EACdA,EAAKwyH,UAAYA,EAEZA,EAAUxyH,OAEdA,EAAKA,KAAOwyH,EAAUxyH,MAIvBt6B,EAAO5G,GAAQkhC,EAEfglK,GAED,CAEA/B,EAAaz0H,WAAa9oE,EAC1Bu9L,EAAa+B,cAAgBA,EAE7B/B,EAAa/3L,MAAQA,CAEtB,CAvMuBi6L,CAAW/9B,EAAUl8J,EAE3C,KAAO,CAEN,IAAM4yK,GAAqC,IAAvB3I,EAAS2I,UAExBmlB,EAAa77B,WAAaA,EAAS1rI,IACvCunK,EAAaW,UAAYA,EAAQloK,IACjCunK,EAAanlB,YAAcA,IAE3BmlB,EAAa77B,SAAWA,EAAS1rI,GACjCunK,EAAaW,QAAUA,EAAQloK,GAC/BunK,EAAanlB,UAAYA,EAEzB0mB,GAAgB,EAIlB,EAEgC,IAA3B/lM,EAAO61K,kBAEXkwB,GAAgB,GAIF,OAAVt5L,GAEJsjE,EAAWoxF,OAAQ10J,EAAO,QAItBs5L,GAAiBhhH,KAErBA,GAAc,EAmPhB,SAAgC/kF,EAAQ02K,EAAUyuB,EAASx8B,GAE1D,IAA+B,IAA1B0rB,EAAaC,WAAwBt0L,EAAO61K,iBAAmBlN,EAASg+B,4BAExB,OAA/Cx8G,EAAWv8D,IAAK,0BAAsC,OAI5Dw3K,IAEA,IAAMkB,EAAqB39B,EAAS54F,WAE9B62H,EAAoBzB,EAAQn1H,gBAE5B62H,EAAiCnwB,EAASuW,uBAEhD,IAAM,IAAMj2L,KAAQ4vM,EAAoB,CAEvC,IAAME,EAAmBF,EAAmB5vM,GAE5C,GAAK8vM,EAAiBlzL,UAAY,EAAI,CAErC,IAAI6yL,EAAoBH,EAAoBtvM,GAS5C,QAP2BiR,IAAtBw+L,IAEU,mBAATzvM,GAA6BgJ,EAAO81K,iBAAiB2wB,EAAoBzmM,EAAO81K,gBACvE,kBAAT9+K,GAA4BgJ,EAAO+1K,gBAAgB0wB,EAAoBzmM,EAAO+1K,qBAIzD9tK,IAAtBw+L,EAAkC,CAEtC,IAAMhsC,EAAagsC,EAAkBhsC,WAC/Br3G,EAAOqjJ,EAAkBnmB,SAEzBvsB,EAAYhkF,EAAWniD,IAAK64K,GAIlC,QAAmBx+L,IAAd8rJ,EAA0B,SAE/B,IAAMiE,EAASjE,EAAUiE,OACnBv1J,EAAOsxJ,EAAUtxJ,KACjBkyL,EAAkB5gC,EAAU4gC,gBAElC,GAAK8R,EAAkBpf,6BAA+B,CAErD,IAAM9lJ,EAAOklK,EAAkBllK,KACzB+lJ,EAAS/lJ,EAAK+lJ,OACd1/I,EAAS6+J,EAAkB7+J,OAEjC,GAAKrG,EAAKwlK,6BAA+B,CAExC,IAAM,IAAIxsM,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnD+qM,EAA2BwB,EAAiBlzL,SAAWrZ,EAAGgnC,EAAKgkK,mBAIhC,IAA3BvlM,EAAO61K,sBAA2D5tK,IAA/B0gK,EAASs+B,oBAEhDt+B,EAASs+B,kBAAoB1lK,EAAKgkK,iBAAmBhkK,EAAKi6C,MAI5D,MAEC,IAAM,IAAIjhF,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnD8qM,EAAiByB,EAAiBlzL,SAAWrZ,GAM/CkwD,EAAGqqI,WAAY,MAAO98B,GAEtB,IAAM,IAAIz9J,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnDorM,EACCmB,EAAiBlzL,SAAWrZ,EAC5B6oD,EAAO0jJ,EAAiBE,aACxBvkM,EACAg4J,EACA6sB,EAASqN,GACP/sJ,EAAWwb,EAAO0jJ,EAAiBE,aAAiBzsM,GAAMo6L,EAK/D,KAAO,CAEN,GAAK8R,EAAkBS,2BAA6B,CAEnD,IAAM,IAAI3sM,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnD+qM,EAA2BwB,EAAiBlzL,SAAWrZ,EAAGksM,EAAkBlB,mBAI7C,IAA3BvlM,EAAO61K,sBAA2D5tK,IAA/B0gK,EAASs+B,oBAEhDt+B,EAASs+B,kBAAoBR,EAAkBlB,iBAAmBkB,EAAkBjrH,MAItF,MAEC,IAAM,IAAIjhF,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnD8qM,EAAiByB,EAAiBlzL,SAAWrZ,GAM/CkwD,EAAGqqI,WAAY,MAAO98B,GAEtB,IAAM,IAAIz9J,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnDorM,EACCmB,EAAiBlzL,SAAWrZ,EAC5B6oD,EAAO0jJ,EAAiBE,aACxBvkM,EACAg4J,EACAr3G,EAAOuxI,EACLvxI,EAAO0jJ,EAAiBE,aAAiBzsM,EAAIo6L,EAKlD,CAED,MAAO,QAAwC1sL,IAAnC4+L,EAA+C,CAE1D,IAAMvqM,EAAQuqM,EAAgC7vM,GAE9C,QAAeiR,IAAV3L,EAEJ,OAASA,EAAM7G,QAEd,KAAK,EACJg1D,EAAG08I,gBAAiBL,EAAiBlzL,SAAUtX,GAC/C,MAED,KAAK,EACJmuD,EAAG28I,gBAAiBN,EAAiBlzL,SAAUtX,GAC/C,MAED,KAAK,EACJmuD,EAAG48I,gBAAiBP,EAAiBlzL,SAAUtX,GAC/C,MAED,QACCmuD,EAAG68I,gBAAiBR,EAAiBlzL,SAAUtX,GAMnD,CAED,CAED,CAEAmpM,GAED,CA1ZE8B,CAAuBvnM,EAAQ02K,EAAUyuB,EAASx8B,GAEnC,OAAVl8J,GAEJg+C,EAAGqqI,WAAY,MAAO/kH,EAAWniD,IAAKnhB,GAAQurJ,QAMjD,EA2fC5/F,MAAOA,EACPytI,kBAAmBA,EACnBtmC,QA3GD,WAIC,IAAM,IAAMioC,KAFZpvI,IAE0BisI,EAAgB,CAEzC,IAAM2B,EAAa3B,EAAemD,GAElC,IAAM,IAAMC,KAAazB,EAAa,CAErC,IAAMC,EAAWD,EAAYyB,GAE7B,IAAM,IAAMpoB,KAAa4mB,EAExBpB,EAAyBoB,EAAU5mB,GAAYr/K,eAExCimM,EAAU5mB,UAIX2mB,EAAYyB,EAEpB,QAEOpD,EAAemD,EAEvB,CAED,EAgFCE,wBA9ED,SAAkC/+B,GAEjC,QAAsC1gK,IAAjCo8L,EAAe17B,EAAS1rI,IAA7B,CAEA,IAAM+oK,EAAa3B,EAAe17B,EAAS1rI,IAE3C,IAAM,IAAMwqK,KAAazB,EAAa,CAErC,IAAMC,EAAWD,EAAYyB,GAE7B,IAAM,IAAMpoB,KAAa4mB,EAExBpB,EAAyBoB,EAAU5mB,GAAYr/K,eAExCimM,EAAU5mB,UAIX2mB,EAAYyB,EAEpB,QAEOpD,EAAe17B,EAAS1rI,GApByB,CAsBzD,EAuDC0qK,uBArDD,SAAiCxC,GAEhC,IAAM,IAAMqC,KAAcnD,EAAgB,CAEzC,IAAM2B,EAAa3B,EAAemD,GAElC,QAAkCv/L,IAA7B+9L,EAAYb,EAAQloK,IAAzB,CAEA,IAAMgpK,EAAWD,EAAYb,EAAQloK,IAErC,IAAM,IAAMoiJ,KAAa4mB,EAExBpB,EAAyBoB,EAAU5mB,GAAYr/K,eAExCimM,EAAU5mB,UAIX2mB,EAAYb,EAAQloK,GAZ2B,CAcvD,CAED,EAiCCmoK,eAAgBA,EAChBC,gBAAiBA,EACjBI,wBAAyBA,EAI3B,CAEA,SAASmC,GAAqBn9I,EAAI0/B,EAAY+B,EAAMmoG,GAEnD,IAEIhiJ,EAFEiiJ,EAAWD,EAAaC,SAmD9Bz2L,KAAKgqM,QA/CL,SAAkBvrM,GAEjB+1C,EAAO/1C,CAER,EA4CAuB,KAAKwF,OA1CL,SAAiBslC,EAAO6yC,GAEvB/wB,EAAGq9I,WAAYz1J,EAAM1J,EAAO6yC,GAE5B0Q,EAAKi1E,OAAQ3lF,EAAOnpC,EAAM,EAE3B,EAqCAx0C,KAAKkqM,gBAnCL,SAA0Bp/J,EAAO6yC,EAAOwsH,GAEvC,GAAmB,IAAdA,EAAL,CAEA,IAAI7D,EAAW5yL,EAEf,GAAK+iL,EAEJ6P,EAAY15I,EACZl5C,EAAa,2BAOb,GAFAA,EAAa,2BAEM,QAHnB4yL,EAAYh6G,EAAWv8D,IAAK,2BAM3B,YADAhc,QAAQwN,MAAO,kIAOjB+kL,EAAW5yL,GAAc8gC,EAAM1J,EAAO6yC,EAAOwsH,GAE7C97G,EAAKi1E,OAAQ3lF,EAAOnpC,EAAM21J,EAzBG,CA2B9B,CAQD,CAEA,SAASC,GAAmBx9I,EAAI0/B,EAAYksF,GAE3C,IAAI6xB,EAsBJ,SAASC,EAAiBttM,GAEzB,GAAmB,UAAdA,EAAwB,CAE5B,GAAK4vD,EAAG29I,yBAA0B,MAAO,OAAQvtM,UAAY,GAC5D4vD,EAAG29I,yBAA0B,MAAO,OAAQvtM,UAAY,EAExD,MAAO,QAIRA,EAAY,SAEb,CAEA,MAAmB,YAAdA,GAEC4vD,EAAG29I,yBAA0B,MAAO,OAAQvtM,UAAY,GAC5D4vD,EAAG29I,yBAA0B,MAAO,OAAQvtM,UAAY,EAEjD,UAMF,MAER,CAEA,IAAMy5L,EAA+C,qBAA3B+T,wBAA0C59I,aAAc49I,wBACtC,qBAAlCC,+BAAiD79I,aAAc69I,8BAErEztM,OAAqCoN,IAAzBouK,EAAWx7K,UAA0Bw7K,EAAWx7K,UAAY,QACtE0tM,EAAeJ,EAAiBttM,GAEjC0tM,IAAiB1tM,IAErB+W,QAAQk/C,KAAM,uBAAwBj2D,EAAW,uBAAwB0tM,EAAc,YACvF1tM,EAAY0tM,GAIb,IAAMxb,EAAcuH,GAAYnqG,EAAWl+C,IAAK,sBAE1Cu8J,GAA+D,IAAtCnyB,EAAWmyB,uBAEpCC,EAAch+I,EAAGy5I,aAAc,OAC/BwE,EAAoBj+I,EAAGy5I,aAAc,OACrCyE,EAAiBl+I,EAAGy5I,aAAc,MAClC0E,EAAiBn+I,EAAGy5I,aAAc,OAElC2E,EAAgBp+I,EAAGy5I,aAAc,OACjC4E,EAAoBr+I,EAAGy5I,aAAc,OACrC6E,EAAct+I,EAAGy5I,aAAc,OAC/B8E,EAAsBv+I,EAAGy5I,aAAc,OAEvC+E,EAAiBP,EAAoB,EACrCQ,EAAwB5U,GAAYnqG,EAAWl+C,IAAK,qBAK1D,MAAO,CAENqoJ,SAAUA,EAEVvH,YAAaA,EAEboc,iBAzFD,WAEC,QAAuBlhM,IAAlBigM,EAA8B,OAAOA,EAE1C,IAA4D,IAAvD/9G,EAAWl+C,IAAK,kCAA8C,CAElE,IAAMk4J,EAAYh6G,EAAWv8D,IAAK,kCAElCs6K,EAAgBz9I,EAAGy5I,aAAcC,EAAUiF,+BAE5C,MAEClB,EAAgB,EAIjB,OAAOA,CAER,EAwECC,gBAAiBA,EAEjBttM,UAAWA,EACX2tM,uBAAwBA,EAExBC,YAAaA,EACbC,kBAAmBA,EACnBC,eAAgBA,EAChBC,eAAgBA,EAEhBC,cAAeA,EACfC,kBAAmBA,EACnBC,YAAaA,EACbC,oBAAqBA,EAErBC,eAAgBA,EAChBC,sBAAuBA,EACvBG,oBA5B2BJ,GAAkBC,EA8B7CI,WA5BkBhV,EAAW7pI,EAAGy5I,aAAc,OAAU,EAgC1D,CAEA,SAASqF,GAAe/9L,GAEvB,IAAMq/K,EAAQhtL,KAEVytH,EAAc,KACjBk+E,EAAkB,EAClBC,GAAuB,EACvBC,GAAmB,EAEdvgC,EAAQ,IAAIqoB,GACjBmY,EAAmB,IAAIt1C,GAEvBu1C,EAAU,CAAEttM,MAAO,KAAM6gK,aAAa,GAyFvC,SAAS0sC,IAEHD,EAAQttM,QAAUgvH,IAEtBs+E,EAAQttM,MAAQgvH,EAChBs+E,EAAQzsC,YAAcqsC,EAAkB,GAIzC3e,EAAMif,UAAYN,EAClB3e,EAAMkf,gBAAkB,CAEzB,CAEA,SAASC,EAAezX,EAAQ9sB,EAAQ/B,EAAWumC,GAElD,IAAMC,EAAqB,OAAX3X,EAAkBA,EAAO98L,OAAS,EAC9C00M,EAAW,KAEf,GAAiB,IAAZD,EAAgB,CAIpB,GAFAC,EAAWP,EAAQttM,OAEI,IAAlB2tM,GAAuC,OAAbE,EAAoB,CAElD,IAAMC,EAAW1mC,EAAsB,EAAVwmC,EAC5BG,EAAa5kC,EAAOE,mBAErBgkC,EAAiB1lB,gBAAiBomB,IAEhB,OAAbF,GAAqBA,EAAS10M,OAAS20M,KAE3CD,EAAW,IAAIz3C,aAAc03C,IAI9B,IAAM,IAAI7vM,EAAI,EAAG+vM,EAAK5mC,EAAWnpK,IAAM2vM,IAAY3vM,EAAG+vM,GAAM,EAE3DnhC,EAAM5P,KAAMg5B,EAAQh4L,IAAMmrK,aAAc2kC,EAAYV,GAEpDxgC,EAAMvC,OAAOxhF,QAAS+kH,EAAUG,GAChCH,EAAUG,EAAK,GAAMnhC,EAAMC,QAI7B,CAEAwgC,EAAQttM,MAAQ6tM,EAChBP,EAAQzsC,aAAc,CAEvB,CAKA,OAHA0tB,EAAMif,UAAYI,EAClBrf,EAAMkf,gBAAkB,EAEjBI,CAER,CAhJAtsM,KAAK+rM,QAAUA,EACf/rM,KAAKisM,UAAY,EACjBjsM,KAAKksM,gBAAkB,EAEvBlsM,KAAKu0H,KAAO,SAAWmgE,EAAQgY,EAAqB9kC,GAEnD,IAAMipB,EACa,IAAlB6D,EAAO98L,QACP80M,GAGoB,IAApBf,GACAC,EAOD,OALAA,EAAuBc,EAEvBj/E,EAAc0+E,EAAezX,EAAQ9sB,EAAQ,GAC7C+jC,EAAkBjX,EAAO98L,OAElBi5L,CAER,EAEA7wL,KAAK2sM,aAAe,WAEnBd,GAAmB,EACnBM,EAAe,KAEhB,EAEAnsM,KAAK4sM,WAAa,WAEjBf,GAAmB,EACnBG,GAED,EAEAhsM,KAAKwf,SAAW,SAAWq5J,EAAUjR,EAAQilC,GAE5C,IAAMnY,EAAS7b,EAASoE,eACvBC,EAAmBrE,EAASqE,iBAC5BC,EAActE,EAASsE,YAElB2vB,EAAqBn/L,EAAWoiB,IAAK8oJ,GAE3C,IAAO+yB,GAAmC,OAAXlX,GAAqC,IAAlBA,EAAO98L,QAAgBi0M,IAAsB1uB,EAIzF0uB,EAIJM,EAAe,MAIfH,QAIK,CAEN,IAAMe,EAAUlB,EAAmB,EAAIF,EACtCqB,EAAoB,EAAVD,EAEPT,EAAWQ,EAAmBG,eAAiB,KAEnDlB,EAAQttM,MAAQ6tM,EAEhBA,EAAWH,EAAezX,EAAQ9sB,EAAQolC,EAASH,GAEnD,IAAM,IAAInwM,EAAI,EAAGA,IAAMswM,IAAYtwM,EAElC4vM,EAAU5vM,GAAM+wH,EAAa/wH,GAI9BowM,EAAmBG,cAAgBX,EACnCtsM,KAAKksM,gBAAkBhvB,EAAmBl9K,KAAKisM,UAAY,EAC3DjsM,KAAKisM,WAAac,CAEnB,CAGD,CA6DD,CAEA,SAASG,GAAepb,GAEvB,IAAI2S,EAAW,IAAI1jJ,QAEnB,SAASosJ,EAAmB9rC,EAAS/c,GAYpC,OAVKA,IAAY4F,GAEhBmX,EAAQ/c,QAAU0F,GAEP1F,IAAY6F,KAEvBkX,EAAQ/c,QAAU2F,IAIZoX,CAER,CA+CA,SAAS+rC,EAAkB7kK,GAE1B,IAAM84H,EAAU94H,EAAMhnC,OAEtB8/J,EAAQnpI,oBAAqB,UAAWk1K,GAExC,IAAMC,EAAU5I,EAAS10K,IAAKsxI,QAEbj3J,IAAZijM,IAEJ5I,EAASjnK,OAAQ6jI,GACjBgsC,EAAQ3rC,UAIV,CAQA,MAAO,CACN3xI,IArED,SAAcsxI,GAEb,GAAKA,GAAWA,EAAQ1B,YAA+C,IAAlC0B,EAAQlC,sBAAkC,CAE9E,IAAM7a,EAAU+c,EAAQ/c,QAExB,GAAKA,IAAY4F,IAAoC5F,IAAY6F,GAAmC,CAEnG,GAAKs6C,EAASr2J,IAAKizH,GAGlB,OAAO8rC,EADS1I,EAAS10K,IAAKsxI,GAAUA,QACLA,EAAQ/c,SAI3C,IAAMnL,EAAQkoB,EAAQloB,MAEtB,GAAKA,GAASA,EAAM/qI,OAAS,EAAI,CAEhC,IAAMijL,EAAe,IAAI0B,GAAuB55C,EAAM/qI,OAAS,GAM/D,OALAijL,EAAaic,2BAA4Bxb,EAAUzwB,GACnDojC,EAASx1K,IAAKoyI,EAASgwB,GAEvBhwB,EAAQz9J,iBAAkB,UAAWwpM,GAE9BD,EAAmB9b,EAAahwB,QAASA,EAAQ/c,QAEzD,CAIC,OAAO,IAMV,CAED,CAEA,OAAO+c,CAER,EA2BCK,QARD,WAEC+iC,EAAW,IAAI1jJ,OAEhB,EAOD,CAhwCA0iJ,GAAU8J,SAAW,CAEpBnf,SAAUD,GAAe,CACxBsV,GAAUI,SAASzV,SACnB,CACCvP,UAAW,CAAEpgL,MAAO,GACpBsgL,aAAc,CAAEtgL,MAAO,MACvBqgL,mBAAoB,CAAErgL,MAAO,GAC7BugL,sBAAuB,CAAEvgL,MAAO,MAChCygL,qBAAsB,CAAEzgL,MAAO,IAAI02J,GAAS,EAAG,IAC/C8pB,mBAAoB,CAAExgL,MAAO,MAC7B2/K,MAAO,CAAE3/K,MAAO,GAChB4/K,WAAY,CAAE5/K,MAAO,IAAI88J,GAAO,IAChCiyC,cAAe,CAAE/uM,MAAO,MACxB6/K,eAAgB,CAAE7/K,MAAO,GACzBgvM,kBAAmB,CAAEhvM,MAAO,MAC5BoiL,aAAc,CAAEpiL,MAAO,GACvBqiL,gBAAiB,CAAEriL,MAAO,MAC1BivM,wBAAyB,CAAEjvM,MAAO,IAAI02J,IACtCw4C,uBAAwB,CAAElvM,MAAO,MACjCsiL,UAAW,CAAEtiL,MAAO,GACpBuiL,aAAc,CAAEviL,MAAO,MACvBwiL,oBAAqB,CAAExiL,MAAO,GAC9ByiL,iBAAkB,CAAEziL,MAAO,IAAI88J,GAAO,IACtCmjB,kBAAmB,CAAEjgL,MAAO,GAC5B4hL,qBAAsB,CAAE5hL,MAAO,MAC/BkgL,cAAe,CAAElgL,MAAO,IAAI88J,GAAO,EAAG,EAAG,IACzC+kB,iBAAkB,CAAE7hL,MAAO,SAI7BmwL,aAAcmJ,GAAY8H,kBAC1BhR,eAAgBkJ,GAAY+H,mBAguC5B,IAEK8N,GAAkB,SAAAC,GAAA7xL,EAAA4xL,EAAAC,GAAA,IAAAC,EAAAnzL,EAAAizL,GAEvB,SAAAA,IAAoF,IAAAG,EAAvE/hK,EAAI/rC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,IAAK,EAAGu/D,EAAKv/D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGisC,EAAGjsC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGw/D,EAAMx/D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,IAAK,EAAG4zK,EAAI5zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAK6zK,EAAG7zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAiB9C,OAjBkDwK,EAAA,KAAAmjM,IAEhFG,EAAAD,EAAAjxM,KAAA,OAEK+H,KAAO,qBAEZmpM,EAAKl5K,KAAO,EACZk5K,EAAKxsK,KAAO,KAEZwsK,EAAK/hK,KAAOA,EACZ+hK,EAAKvuI,MAAQA,EACbuuI,EAAK7hK,IAAMA,EACX6hK,EAAKtuI,OAASA,EAEdsuI,EAAKl6B,KAAOA,EACZk6B,EAAKj6B,IAAMA,EAEXi6B,EAAK1d,yBAAyB0d,CAE/B,CA0GC,OA1GAxkM,EAAAqkM,EAAA,EAAAprM,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAcb,OAZA9xC,GAAA5rH,EAAAsyL,EAAAhxM,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAKgsC,KAAOxqC,EAAOwqC,KACnBhsC,KAAKw/D,MAAQh+D,EAAOg+D,MACpBx/D,KAAKksC,IAAM1qC,EAAO0qC,IAClBlsC,KAAKy/D,OAASj+D,EAAOi+D,OACrBz/D,KAAK6zK,KAAOryK,EAAOqyK,KACnB7zK,KAAK8zK,IAAMtyK,EAAOsyK,IAElB9zK,KAAK60B,KAAOrzB,EAAOqzB,KACnB70B,KAAKuhC,KAAuB,OAAhB//B,EAAO+/B,KAAgB,KAAOhjC,OAAOmgB,OAAQ,CAAC,EAAGld,EAAO+/B,MAE7DvhC,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAekyL,EAAWC,EAAY10L,EAAGmL,EAAG8G,EAAOC,GAE/B,OAAdpO,KAAKuhC,OAETvhC,KAAKuhC,KAAO,CACXsvJ,SAAS,EACTF,UAAW,EACXC,WAAY,EACZp3E,QAAS,EACTE,QAAS,EACTvrG,MAAO,EACPC,OAAQ,IAKVpO,KAAKuhC,KAAKsvJ,SAAU,EACpB7wL,KAAKuhC,KAAKovJ,UAAYA,EACtB3wL,KAAKuhC,KAAKqvJ,WAAaA,EACvB5wL,KAAKuhC,KAAKi4E,QAAUt9G,EACpB8D,KAAKuhC,KAAKm4E,QAAUryG,EACpBrH,KAAKuhC,KAAKpzB,MAAQA,EAClBnO,KAAKuhC,KAAKnzB,OAASA,EAEnBpO,KAAKqwL,wBAEN,GAAC,CAAA7tL,IAAA,kBAAA/D,MAED,WAEoB,OAAduB,KAAKuhC,OAETvhC,KAAKuhC,KAAKsvJ,SAAU,GAIrB7wL,KAAKqwL,wBAEN,GAAC,CAAA7tL,IAAA,yBAAA/D,MAED,WAEC,IAAM6vI,GAAOtuI,KAAKw/D,MAAQx/D,KAAKgsC,OAAW,EAAIhsC,KAAK60B,MAC7Cw5G,GAAOruI,KAAKksC,IAAMlsC,KAAKy/D,SAAa,EAAIz/D,KAAK60B,MAC7C0kI,GAAOv5J,KAAKw/D,MAAQx/D,KAAKgsC,MAAS,EAClCwtH,GAAOx5J,KAAKksC,IAAMlsC,KAAKy/D,QAAW,EAEpCzzB,EAAOutH,EAAKjrB,EACZ9uE,EAAQ+5F,EAAKjrB,EACbpiG,EAAMstH,EAAKnrB,EACX5uE,EAAS+5F,EAAKnrB,EAElB,GAAmB,OAAdruI,KAAKuhC,MAAiBvhC,KAAKuhC,KAAKsvJ,QAAU,CAE9C,IAAMmd,GAAWhuM,KAAKw/D,MAAQx/D,KAAKgsC,MAAShsC,KAAKuhC,KAAKovJ,UAAY3wL,KAAK60B,KACjEo5K,GAAWjuM,KAAKksC,IAAMlsC,KAAKy/D,QAAWz/D,KAAKuhC,KAAKqvJ,WAAa5wL,KAAK60B,KAGxE2qC,GADAxzB,GAAQgiK,EAAShuM,KAAKuhC,KAAKi4E,SACZw0F,EAAShuM,KAAKuhC,KAAKpzB,MAElCsxD,GADAvzB,GAAO+hK,EAASjuM,KAAKuhC,KAAKm4E,SACXu0F,EAASjuM,KAAKuhC,KAAKnzB,MAEnC,CAEApO,KAAK+nK,iBAAiBmmC,iBAAkBliK,EAAMwzB,EAAOtzB,EAAKuzB,EAAQz/D,KAAK6zK,KAAM7zK,KAAK8zK,KAElF9zK,KAAKgoK,wBAAwBtM,KAAM17J,KAAK+nK,kBAAmBj4B,QAE5D,GAAC,CAAAttI,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAAsyL,EAAAhxM,WAAA,eAAAC,KAAA,KAAiBy5B,GAY3B,OAVAoN,EAAKvhC,OAAO0yB,KAAO70B,KAAK60B,KACxB6O,EAAKvhC,OAAO6pC,KAAOhsC,KAAKgsC,KACxBtI,EAAKvhC,OAAOq9D,MAAQx/D,KAAKw/D,MACzB97B,EAAKvhC,OAAO+pC,IAAMlsC,KAAKksC,IACvBxI,EAAKvhC,OAAOs9D,OAASz/D,KAAKy/D,OAC1B/7B,EAAKvhC,OAAO0xK,KAAO7zK,KAAK6zK,KACxBnwI,EAAKvhC,OAAO2xK,IAAM9zK,KAAK8zK,IAEJ,OAAd9zK,KAAKuhC,OAAgBmC,EAAKvhC,OAAOo/B,KAAOhjC,OAAOmgB,OAAQ,CAAC,EAAG1e,KAAKuhC,OAE9DmC,CAER,KAACkqK,CAAA,CA/HsB,CAASne,IAmIjCme,GAAmBhxM,UAAUuxM,sBAAuB,EAEpD,IAMMC,GAAkB,CAAE,KAAO,KAAO,IAAM,KAAO,KAAO,MAItDC,GAAc,GAEdC,GAA4B,IAAIV,GAChCW,GAA4B,IAAIhzC,GAClCizC,GAAa,KAGXC,IAAQ,EAAIxxM,KAAK04J,KAAM,IAAQ,EAC/B+4C,GAAU,EAAID,GAIdE,GAAkB,CACT,IAAI7nC,GAAS,EAAG,EAAG,GACnB,IAAIA,IAAW,EAAG,EAAG,GACrB,IAAIA,GAAS,EAAG,GAAK,GACrB,IAAIA,IAAW,EAAG,GAAK,GACvB,IAAIA,GAAS,EAAG2nC,GAAKC,IACrB,IAAI5nC,GAAS,EAAG2nC,IAAOC,IACvB,IAAI5nC,GAAS4nC,GAAS,EAAGD,IACzB,IAAI3nC,IAAW4nC,GAAS,EAAGD,IAC3B,IAAI3nC,GAAS2nC,GAAKC,GAAS,GAC3B,IAAI5nC,IAAW2nC,GAAKC,GAAS,IAiBtCE,GAAc,WAEnB,SAAAA,EAAa9c,GAAWrnL,EAAA,KAAAmkM,GAEvB5uM,KAAK6uM,UAAY/c,EACjB9xL,KAAK8uM,sBAAwB,KAE7B9uM,KAAK+uM,QAAU,EACf/uM,KAAKgvM,UAAY,EACjBhvM,KAAKivM,WAAa,GAClBjvM,KAAKkvM,UAAY,GACjBlvM,KAAKmvM,QAAU,GAEfnvM,KAAKovM,cAAgB,KACrBpvM,KAAKqvM,iBAAmB,KACxBrvM,KAAKsvM,kBAAoB,KAEzBtvM,KAAKuvM,iBAAkBvvM,KAAKovM,cAE7B,CA+cC,OA7cD7lM,EAAAqlM,EAAA,EAAApsM,IAAA,YAAA/D,MAOA,SAAWszL,GAA0C,IAAnCyd,EAAKvvM,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG4zK,EAAI5zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAK6zK,EAAG7zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAE9CuuM,GAAaxuM,KAAK6uM,UAAU3c,kBAE5BlyL,KAAKyvM,SAAU,KAEf,IAAMC,EAAqB1vM,KAAK2vM,mBAchC,OAbAD,EAAmBpuC,aAAc,EAEjCthK,KAAK4vM,eAAgB7d,EAAOle,EAAMC,EAAK47B,GAElCF,EAAQ,GAEZxvM,KAAK6vM,MAAOH,EAAoB,EAAG,EAAGF,GAIvCxvM,KAAK8vM,YAAaJ,GAClB1vM,KAAK+vM,SAAUL,GAERA,CAER,GAEA,CAAAltM,IAAA,sBAAA/D,MAKA,SAAqBuxM,GAAuC,IAAtB3e,EAAYpxL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAEpD,OAAOD,KAAKiwM,aAAcD,EAAiB3e,EAE5C,GAEA,CAAA7uL,IAAA,cAAA/D,MAKA,SAAa4uM,GAA+B,IAAtBhc,EAAYpxL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAEpC,OAAOD,KAAKiwM,aAAc5C,EAAShc,EAEpC,GAEA,CAAA7uL,IAAA,uBAAA/D,MAIA,WAEgC,OAA1BuB,KAAKqvM,mBAETrvM,KAAKqvM,iBAAmBa,KACxBlwM,KAAKuvM,iBAAkBvvM,KAAKqvM,kBAI9B,GAEA,CAAA7sM,IAAA,+BAAA/D,MAIA,WAEiC,OAA3BuB,KAAKsvM,oBAETtvM,KAAKsvM,kBAAoBa,KACzBnwM,KAAKuvM,iBAAkBvvM,KAAKsvM,mBAI9B,GAEA,CAAA9sM,IAAA,UAAA/D,MAKA,WAECuB,KAAKowM,WAE0B,OAA1BpwM,KAAKqvM,kBAA4BrvM,KAAKqvM,iBAAiB3tC,UAC5B,OAA3B1hK,KAAKsvM,mBAA6BtvM,KAAKsvM,kBAAkB5tC,SAE/D,GAEA,CAAAl/J,IAAA,WAAA/D,MAEA,SAAU4xM,GAETrwM,KAAK+uM,QAAU9xM,KAAKwf,MAAOxf,KAAKqzM,KAAMD,IACtCrwM,KAAKgvM,UAAY/xM,KAAKs1J,IAAK,EAAGvyJ,KAAK+uM,QAEpC,GAAC,CAAAvsM,IAAA,WAAA/D,MAED,WAE6B,OAAvBuB,KAAKovM,eAAyBpvM,KAAKovM,cAAc1tC,UAElB,OAA/B1hK,KAAK8uM,uBAAiC9uM,KAAK8uM,sBAAsBptC,UAEtE,IAAM,IAAIhlK,EAAI,EAAGA,EAAIsD,KAAKivM,WAAWr3M,OAAQ8E,IAE5CsD,KAAKivM,WAAYvyM,GAAIglK,SAIvB,GAAC,CAAAl/J,IAAA,WAAA/D,MAED,SAAU8xM,GAETvwM,KAAK6uM,UAAUpc,gBAAiB+b,IAChC+B,EAAapvC,aAAc,EAC3BqvC,GAAcD,EAAc,EAAG,EAAGA,EAAapiM,MAAOoiM,EAAaniM,OAEpE,GAAC,CAAA5L,IAAA,eAAA/D,MAED,SAAc4iK,EAASgwB,GAEjBhwB,EAAQ/c,UAAY0F,IAAyBqX,EAAQ/c,UAAY2F,GAErEjqJ,KAAKyvM,SAAmC,IAAzBpuC,EAAQloB,MAAMvhJ,OAAe,GAAOypK,EAAQloB,MAAO,GAAIhrI,OAASkzJ,EAAQloB,MAAO,GAAIA,MAAMhrI,OAIxGnO,KAAKyvM,SAAUpuC,EAAQloB,MAAMhrI,MAAQ,GAItCqgM,GAAaxuM,KAAK6uM,UAAU3c,kBAE5B,IAAMwd,EAAqBre,GAAgBrxL,KAAK2vM,mBAKhD,OAJA3vM,KAAKywM,iBAAkBpvC,EAASquC,GAChC1vM,KAAK8vM,YAAaJ,GAClB1vM,KAAK+vM,SAAUL,GAERA,CAER,GAAC,CAAAltM,IAAA,mBAAA/D,MAED,WAEC,IAAM0P,EAAQ,EAAIlR,KAAKC,IAAK8C,KAAKgvM,UAAW,KACtC5gM,EAAS,EAAIpO,KAAKgvM,UAAY,GAE9B90I,EAAS,CACdmkG,UAAWxT,GACXyT,UAAWzT,GACXgU,iBAAiB,EACjBj6J,KAAM6mJ,GACN8S,OAAQxS,GACR0S,SAAUxP,GACVqS,aAAa,GAGRouC,EAAqBgB,GAAqBviM,EAAOC,EAAQ8rD,GAE/D,GAAoC,OAA/Bl6D,KAAK8uM,uBAAkC9uM,KAAK8uM,sBAAsB3gM,QAAUA,EAAQ,CAEpD,OAA/BnO,KAAK8uM,uBAET9uM,KAAKowM,WAINpwM,KAAK8uM,sBAAwB4B,GAAqBviM,EAAOC,EAAQ8rD,GAEjE,IAAQ60I,EAAY/uM,KAAZ+uM,QAAiB4B,EAiS5B,SAAwBC,GAUvB,IARA,IAAMC,EAAY,GACZC,EAAW,GACXC,EAAS,GAEXC,EAAMJ,EAEJK,EAAYL,EAjiBH,EAiiBsB,EAAIxC,GAAgBx2M,OAE/C8E,EAAI,EAAGA,EAAIu0M,EAAWv0M,IAAO,CAEtC,IAAMw0M,EAAUj0M,KAAKs1J,IAAK,EAAGy+C,GAC7BF,EAASh0M,KAAMo0M,GACf,IAAI1B,EAAQ,EAAM0B,EAEbx0M,EAAIk0M,EAziBK,EA2iBbpB,EAAQpB,GAAiB1xM,EAAIk0M,EA3iBhB,EA2iBmC,GAE/B,IAANl0M,IAEX8yM,EAAQ,GAITuB,EAAOj0M,KAAM0yM,GAiBb,IAfA,IAAM2B,EAAY,GAAQD,EAAU,GAC9BhmK,GAAQimK,EAAY,EACpBj0M,EAAM,EAAIi0M,EAAY,EACtBj3B,EAAM,CAAEhvI,EAAKA,EAAKhuC,EAAKguC,EAAKhuC,EAAKA,EAAKguC,EAAKA,EAAKhuC,EAAKA,EAAKguC,EAAKhuC,GAE/Dk0M,EAAY,EACZnkB,EAAW,EACXokB,EAAe,EACfC,EAAS,EACTC,EAAgB,EAEhBhyI,EAAW,IAAIs1F,aAAcw8C,EAAepkB,EAAWmkB,GACvD3xC,EAAK,IAAI5K,aAAcy8C,EAASrkB,EAAWmkB,GAC3CnlB,EAAY,IAAIp3B,aAAc08C,EAAgBtkB,EAAWmkB,GAErDllB,EAAO,EAAGA,EAAOklB,EAAWllB,IAAU,CAE/C,IAAMhwL,EAAMgwL,EAAO,EAAM,EAAI,EAAI,EAC3B7kL,EAAI6kL,EAAO,EAAI,GAAM,EACrBslB,EAAc,CACnBt1M,EAAGmL,EAAG,EACNnL,EAAI,EAAI,EAAGmL,EAAG,EACdnL,EAAI,EAAI,EAAGmL,EAAI,EAAG,EAClBnL,EAAGmL,EAAG,EACNnL,EAAI,EAAI,EAAGmL,EAAI,EAAG,EAClBnL,EAAGmL,EAAI,EAAG,GAEXk4D,EAAStwC,IAAKuiL,EAAaH,EAAepkB,EAAWf,GACrDzsB,EAAGxwI,IAAKirJ,EAAKo3B,EAASrkB,EAAWf,GACjC,IAAM3wE,EAAO,CAAE2wE,EAAMA,EAAMA,EAAMA,EAAMA,EAAMA,GAC7CD,EAAUh9J,IAAKssF,EAAMg2F,EAAgBtkB,EAAWf,EAEjD,CAEA,IAAMwI,EAAS,IAAIhP,GACnBgP,EAAO5hL,aAAc,WAAY,IAAI0vK,GAAiBjjH,EAAU8xI,IAChE3c,EAAO5hL,aAAc,KAAM,IAAI0vK,GAAiB/iB,EAAI6xC,IACpD5c,EAAO5hL,aAAc,YAAa,IAAI0vK,GAAiByJ,EAAWslB,IAClEV,EAAU/zM,KAAM43L,GAEXsc,EA7lBS,GA+lBbA,GAIF,CAEA,MAAO,CAAEH,UAAAA,EAAWC,SAAAA,EAAUC,OAAAA,EAE/B,CA9WsFU,CAAe1C,GAApF/uM,KAAKkvM,UAASyB,EAAxBG,SAAqC9wM,KAAKivM,WAAU0B,EAA1BE,UAAoC7wM,KAAKmvM,QAAOwB,EAApBI,OAE1D/wM,KAAKovM,cA+XR,SAAyBwB,EAAQziM,EAAOC,GAEvC,IAAMsjM,EAAU,IAAI78C,aAAcw5C,IAC5BsD,EAAW,IAAI7qC,GAAS,EAAG,EAAG,GAC9B8qC,EAAiB,IAAIrjB,GAAgB,CAE1Cp1L,KAAM,wBAENw1L,QAAS,CACR,EAAK0f,GACL,mBAAsB,EAAMlgM,EAC5B,oBAAuB,EAAMC,EAC7B,eAAkB,GAAF3M,OAAKmvM,EAAM,OAG5BxiB,SAAU,CACT,OAAU,CAAE3vL,MAAO,MACnB,QAAW,CAAEA,MAAO,GACpB,QAAW,CAAEA,MAAOizM,GACpB,YAAe,CAAEjzM,OAAO,GACxB,OAAU,CAAEA,MAAO,GACnB,OAAU,CAAEA,MAAO,GACnB,SAAY,CAAEA,MAAOkzM,IAGtB/iB,aA4JgB,yoCA1JhBC,eAA0B,miDA8D1BjT,SAAUp0B,GACV+0B,WAAW,EACXC,YAAY,IAIb,OAAOo1B,CAER,CAhewBC,CAAgB9C,EAAS5gM,EAAOC,EAEtD,CAEA,OAAOshM,CAER,GAAC,CAAAltM,IAAA,mBAAA/D,MAED,SAAkBo6K,GAEjB,IAAMi5B,EAAU,IAAI5mB,GAAMlrL,KAAKivM,WAAY,GAAKp2B,GAChD74K,KAAK6uM,UAAUkD,QAASD,EAASxD,GAElC,GAAC,CAAA9rM,IAAA,iBAAA/D,MAED,SAAgBszL,EAAOle,EAAMC,EAAK47B,GAEjC,IAEMsC,EAAa,IAAIniB,GAFX,GACG,EACwChc,EAAMC,GACvDm+B,EAAS,CAAE,GAAK,EAAG,EAAG,EAAG,EAAG,GAC5BC,EAAc,CAAE,EAAG,EAAG,GAAK,GAAK,GAAK,GACrCpgB,EAAW9xL,KAAK6uM,UAEhBsD,EAAoBrgB,EAAS8T,UAC7BtT,EAAcR,EAASQ,YAC7BR,EAASqT,cAAeoJ,IAExBzc,EAASQ,YAAc7oC,GACvBqoC,EAAS8T,WAAY,EAErB,IAAMwM,EAAqB,IAAIpwB,GAAmB,CACjD7oL,KAAM,mBACN0iL,KAAMz0B,GACNo1B,YAAY,EACZD,WAAW,IAGN81B,EAAgB,IAAInnB,GAAM,IAAIuB,GAAe2lB,GAE/CE,GAAgB,EACd1yI,EAAamyH,EAAMnyH,WAEpBA,EAECA,EAAW67F,UAEf22C,EAAmB5qK,MAAMk0H,KAAM97F,GAC/BmyH,EAAMnyH,WAAa,KACnB0yI,GAAgB,IAMjBF,EAAmB5qK,MAAMk0H,KAAM6yC,IAC/B+D,GAAgB,GAIjB,IAAM,IAAI51M,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAMs5B,EAAMt5B,EAAI,EAEH,IAARs5B,GAEJg8K,EAAWrgC,GAAG1iJ,IAAK,EAAGgjL,EAAQv1M,GAAK,GACnCs1M,EAAWj7B,OAAQm7B,EAAax1M,GAAK,EAAG,IAErB,IAARs5B,GAEXg8K,EAAWrgC,GAAG1iJ,IAAK,EAAG,EAAGgjL,EAAQv1M,IACjCs1M,EAAWj7B,OAAQ,EAAGm7B,EAAax1M,GAAK,KAIxCs1M,EAAWrgC,GAAG1iJ,IAAK,EAAGgjL,EAAQv1M,GAAK,GACnCs1M,EAAWj7B,OAAQ,EAAG,EAAGm7B,EAAax1M,KAIvC,IAAM6oD,EAAOvlD,KAAKgvM,UAElBwB,GAAcd,EAAoB15K,EAAMuvB,EAAM7oD,EAAI,EAAI6oD,EAAO,EAAGA,EAAMA,GAEtEusI,EAASW,gBAAiBid,GAErB4C,GAEJxgB,EAAStsL,OAAQ6sM,EAAeL,GAIjClgB,EAAStsL,OAAQusL,EAAOigB,EAEzB,CAEAK,EAAcvnC,SAASpJ,UACvB2wC,EAAcx5B,SAASnX,UAEvBowB,EAASQ,YAAcA,EACvBR,EAAS8T,UAAYuM,EACrBpgB,EAAMnyH,WAAaA,CAEpB,GAAC,CAAAp9D,IAAA,mBAAA/D,MAED,SAAkB4iK,EAASquC,GAE1B,IAAM5d,EAAW9xL,KAAK6uM,UAEhB/b,EAAkBzxB,EAAQ/c,UAAY0F,IAAyBqX,EAAQ/c,UAAY2F,GAEpF6oC,GAE2B,OAA1B9yL,KAAKqvM,mBAETrvM,KAAKqvM,iBAAmBa,MAIzBlwM,KAAKqvM,iBAAiBjhB,SAASyS,WAAWpiM,OAA4C,IAAlC4iK,EAAQlC,uBAAsC,EAAI,GAItE,OAA3Bn/J,KAAKsvM,oBAETtvM,KAAKsvM,kBAAoBa,MAM3B,IAAMt3B,EAAWia,EAAgB9yL,KAAKqvM,iBAAmBrvM,KAAKsvM,kBACxDjc,EAAO,IAAInI,GAAMlrL,KAAKivM,WAAY,GAAKp2B,GAE5BA,EAASuV,SAER,OAAG3vL,MAAQ4iK,EAE7B,IAAM97G,EAAOvlD,KAAKgvM,UAElBwB,GAAcd,EAAoB,EAAG,EAAG,EAAInqJ,EAAM,EAAIA,GAEtDusI,EAASW,gBAAiBid,GAC1B5d,EAAStsL,OAAQ6tL,EAAMib,GAExB,GAAC,CAAA9rM,IAAA,cAAA/D,MAED,SAAaixM,GAEZ,IAAM5d,EAAW9xL,KAAK6uM,UAChBjJ,EAAY9T,EAAS8T,UAC3B9T,EAAS8T,WAAY,EAErB,IAAM,IAAIlpM,EAAI,EAAGA,EAAIsD,KAAKivM,WAAWr3M,OAAQ8E,IAAO,CAEnD,IAAM8yM,EAAQvyM,KAAK04J,KAAM31J,KAAKmvM,QAASzyM,GAAMsD,KAAKmvM,QAASzyM,GAAMsD,KAAKmvM,QAASzyM,EAAI,GAAMsD,KAAKmvM,QAASzyM,EAAI,IAErGi1M,EAAWhD,IAAmBjyM,EAAI,GAAMiyM,GAAgB/2M,QAE9DoI,KAAK6vM,MAAOH,EAAoBhzM,EAAI,EAAGA,EAAG8yM,EAAOmC,EAElD,CAEA7f,EAAS8T,UAAYA,CAEtB,GAEA,CAAApjM,IAAA,QAAA/D,MAOA,SAAOixM,EAAoB6C,EAAOC,EAAQhD,EAAOmC,GAEhD,IAAMc,EAAuBzyM,KAAK8uM,sBAElC9uM,KAAK0yM,UACJhD,EACA+C,EACAF,EACAC,EACAhD,EACA,cACAmC,GAED3xM,KAAK0yM,UACJD,EACA/C,EACA8C,EACAA,EACAhD,EACA,eACAmC,EAEF,GAAC,CAAAnvM,IAAA,YAAA/D,MAED,SAAWk0M,EAAUC,EAAWL,EAAOC,EAAQK,EAAcxkC,EAAWsjC,GAEvE,IAAM7f,EAAW9xL,KAAK6uM,UAChBiE,EAAe9yM,KAAKovM,cAEP,gBAAd/gC,GAA6C,iBAAdA,GAEnCt6J,QAAQwN,MACP,8DAKF,IAEMwxL,EAAW,IAAI7nB,GAAMlrL,KAAKivM,WAAYuD,GAAUM,GAChDE,EAAeF,EAAa1kB,SAE5B6kB,EAASjzM,KAAKkvM,UAAWqD,GAAU,EACnCW,EAAkB3qB,SAAUsqB,GAAiB51M,KAAK00J,IAAO,EAAIshD,GAAW,EAAIh2M,KAAK00J,GAAK,GACtFwhD,EAAcN,EAAeK,EAC7BzxC,EAAU8mB,SAAUsqB,GAAiB,EAAI51M,KAAKwf,MARxB,EAQqD02L,GAAgB9E,GAE5F5sC,EAAU4sC,IAEdt6L,QAAQk/C,KAAK,iBAADxxD,OACXoxM,EAAY,kDAAApxM,OACZggK,EAAO,wCAAAhgK,OAAuC4sM,KAOhD,IAHA,IAAMqD,EAAU,GACZ/gE,EAAM,EAEAj0I,EAAI,EAAGA,EAAI2xM,KAAgB3xM,EAAI,CAExC,IAAMR,EAAIQ,EAAIy2M,EACRC,EAASn2M,KAAKk2J,KAAOj3J,EAAIA,EAAI,GACnCw1M,EAAQ50M,KAAMs2M,GAEH,IAAN12M,EAEJi0I,GAAOyiE,EAEI12M,EAAI+kK,IAEf9wB,GAAO,EAAIyiE,EAIb,CAEA,IAAM,IAAI12M,EAAI,EAAGA,EAAIg1M,EAAQ95M,OAAQ8E,IAEpCg1M,EAASh1M,GAAMg1M,EAASh1M,GAAMi0I,EAI/BqiE,EAAsB,OAAGv0M,MAAQk0M,EAAStxC,QAC1C2xC,EAAuB,QAAGv0M,MAAQgjK,EAClCuxC,EAAuB,QAAGv0M,MAAQizM,EAClCsB,EAA2B,YAAGv0M,MAAsB,gBAAd4vK,EAEjCsjC,IAEJqB,EAAwB,SAAGv0M,MAAQkzM,GAIpC,IAAQ5C,EAAY/uM,KAAZ+uM,QACRiE,EAAsB,OAAGv0M,MAAQy0M,EACjCF,EAAsB,OAAGv0M,MAAQswM,EAAUwD,EAE3C,IAAMc,EAAarzM,KAAKkvM,UAAWsD,GAInChC,GAAcoC,EAHJ,EAAIS,GAAeb,EAASzD,EA5gBxB,EA4gB4CyD,EAASzD,EA5gBrD,EA4gByE,GAC7E,GAAM/uM,KAAKgvM,UAAYqE,GAEF,EAAIA,EAAY,EAAIA,GACnDvhB,EAASW,gBAAiBmgB,GAC1B9gB,EAAStsL,OAAQutM,EAAUzE,GAE5B,KAACM,CAAA,CAlekB,GAwjBpB,SAAS8B,GAAqBviM,EAAOC,EAAQ8rD,GAE5C,IAAMw1I,EAAqB,IAAI1uC,GAAmB7yJ,EAAOC,EAAQ8rD,GAIjE,OAHAw1I,EAAmBruC,QAAQ/c,QAAU8F,GACrCslD,EAAmBruC,QAAQloK,KAAO,eAClCu2M,EAAmBvuC,aAAc,EAC1BuuC,CAER,CAEA,SAASc,GAAcjvM,EAAQrF,EAAGmL,EAAG8G,EAAOC,GAE3C7M,EAAO6/J,SAASnyI,IAAK/yB,EAAGmL,EAAG8G,EAAOC,GAClC7M,EAAO2/J,QAAQjyI,IAAK/yB,EAAGmL,EAAG8G,EAAOC,EAElC,CAqGA,SAAS+hM,KAER,OAAO,IAAI5hB,GAAgB,CAE1Bp1L,KAAM,0BAENi1L,SAAU,CACT,OAAU,CAAE3vL,MAAO,OAGpBmwL,aAwEgB,yoCAtEhBC,eAA0B,yYAqB1BjT,SAAUp0B,GACV+0B,WAAW,EACXC,YAAY,GAId,CAEA,SAAS0zB,KAER,OAAO,IAAI3hB,GAAgB,CAE1Bp1L,KAAM,kBAENi1L,SAAU,CACT,OAAU,CAAE3vL,MAAO,MACnB,WAAc,CAAEA,OAAS,IAG1BmwL,aA8BgB,yoCA5BhBC,eAA0B,0UAkB1BjT,SAAUp0B,GACV+0B,WAAW,EACXC,YAAY,GAId,CA+DA,SAAS82B,GAAiBxhB,GAEzB,IAAIyhB,EAAa,IAAIxyJ,QAEjByyJ,EAAiB,KAqFrB,SAASpG,EAAkB7kK,GAE1B,IAAM84H,EAAU94H,EAAMhnC,OAEtB8/J,EAAQnpI,oBAAqB,UAAWk1K,GAExC,IAAMqG,EAAYF,EAAWxjL,IAAKsxI,QAEfj3J,IAAdqpM,IAEJF,EAAW/1K,OAAQ6jI,GACnBoyC,EAAU/xC,UAIZ,CAeA,MAAO,CACN3xI,IAlHD,SAAcsxI,GAEb,GAAKA,GAAWA,EAAQ1B,UAAY,CAEnC,IAAMrb,EAAU+c,EAAQ/c,QAElBovD,EAAkBpvD,IAAY4F,IAAoC5F,IAAY6F,GAC9EwpD,EAAcrvD,IAAY0F,IAAyB1F,IAAY2F,GAIrE,GAAKypD,GAAiBC,EAAY,CAEjC,GAAKtyC,EAAQlC,wBAAsD,IAA7BkC,EAAQjC,iBAA4B,CAEzEiC,EAAQjC,kBAAmB,EAE3B,IAAIiyB,EAAekiB,EAAWxjL,IAAKsxI,GAOnC,OALwB,OAAnBmyC,IAA0BA,EAAiB,IAAI5E,GAAgB9c,IAEpET,EAAeqiB,EAAgBF,EAAeI,oBAAqBvyC,EAASgwB,GAAiBmiB,EAAeK,YAAaxyC,EAASgwB,GAClIkiB,EAAWtkL,IAAKoyI,EAASgwB,GAElBA,EAAahwB,OAErB,CAEC,GAAKkyC,EAAWnlK,IAAKizH,GAEpB,OAAOkyC,EAAWxjL,IAAKsxI,GAAUA,QAIjC,IAAMloB,EAAQkoB,EAAQloB,MAEtB,GAAOu6D,GAAiBv6D,GAASA,EAAM/qI,OAAS,GAASulM,GAAax6D,GA+B3E,SAAgCA,GAK/B,IAHA,IAAIx7D,EAAQ,EACN/lF,EAAS,EAEL8E,EAAI,EAAGA,EAAI9E,EAAQ8E,SAER0N,IAAf+uI,EAAOz8I,IAAoBihF,IAIjC,OAAOA,IAAU/lF,CAGlB,CA7CoFk8M,CAAuB36D,GAAY,CAEzF,OAAnBq6D,IAA0BA,EAAiB,IAAI5E,GAAgB9c,IAEpE,IAAMT,EAAeqiB,EAAgBF,EAAeI,oBAAqBvyC,GAAYmyC,EAAeK,YAAaxyC,GAKjH,OAJAkyC,EAAWtkL,IAAKoyI,EAASgwB,GAEzBhwB,EAAQz9J,iBAAkB,UAAWwpM,GAE9B/b,EAAahwB,OAErB,CAIC,OAAO,IAQX,CAED,CAEA,OAAOA,CAER,EAkDCK,QAfD,WAEC6xC,EAAa,IAAIxyJ,QAEO,OAAnByyJ,IAEJA,EAAe9xC,UACf8xC,EAAiB,KAInB,EAOD,CAEA,SAASO,GAAiBnnJ,GAEzB,IAAM0/B,EAAa,CAAC,EAEpB,SAAS0nH,EAAc76M,GAEtB,QAA4BiR,IAAvBkiF,EAAYnzF,GAEhB,OAAOmzF,EAAYnzF,GAIpB,IAAImtM,EAEJ,OAASntM,GAER,IAAK,sBACJmtM,EAAY15I,EAAGonJ,aAAc,wBAA2BpnJ,EAAGonJ,aAAc,4BAA+BpnJ,EAAGonJ,aAAc,8BACzH,MAED,IAAK,iCACJ1N,EAAY15I,EAAGonJ,aAAc,mCAAsCpnJ,EAAGonJ,aAAc,uCAA0CpnJ,EAAGonJ,aAAc,yCAC/I,MAED,IAAK,gCACJ1N,EAAY15I,EAAGonJ,aAAc,kCAAqCpnJ,EAAGonJ,aAAc,sCAAyCpnJ,EAAGonJ,aAAc,wCAC7I,MAED,IAAK,iCACJ1N,EAAY15I,EAAGonJ,aAAc,mCAAsCpnJ,EAAGonJ,aAAc,yCACpF,MAED,QACC1N,EAAY15I,EAAGonJ,aAAc76M,GAM/B,OAFAmzF,EAAYnzF,GAASmtM,EAEdA,CAER,CAEA,MAAO,CAENl4J,IAAK,SAAWj1C,GAEf,OAAgC,OAAzB66M,EAAc76M,EAEtB,EAEAo7H,KAAM,SAAWiiE,GAEXA,EAAaC,SAEjBud,EAAc,2BAIdA,EAAc,uBACdA,EAAc,qBACdA,EAAc,0BACdA,EAAc,iCACdA,EAAc,4BACdA,EAAc,0BACdA,EAAc,2BACdA,EAAc,2BAIfA,EAAc,4BACdA,EAAc,+BACdA,EAAc,uCAEf,EAEAjkL,IAAK,SAAW52B,GAEf,IAAMmtM,EAAY0N,EAAc76M,GAQhC,OANmB,OAAdmtM,GAEJvyL,QAAQk/C,KAAM,wBAA0B95D,EAAO,6BAIzCmtM,CAER,EAIF,CAEA,SAAS2N,GAAiBrnJ,EAAIslB,EAAYmc,EAAMm4G,GAE/C,IAAM9uB,EAAa,CAAC,EACdw8B,EAAsB,IAAInzJ,QAEhC,SAASozJ,EAAmB5rK,GAE3B,IAAMuiI,EAAWviI,EAAMhnC,OAQvB,IAAM,IAAMpI,KANY,OAAnB2xK,EAASl8J,OAEbsjE,EAAWtR,OAAQkqG,EAASl8J,OAITk8J,EAAS54F,WAE5BA,EAAWtR,OAAQkqG,EAAS54F,WAAY/4E,IAIzC2xK,EAAS5yI,oBAAqB,UAAWi8K,UAElCz8B,EAAY5M,EAAS1rI,IAE5B,IAAM82H,EAAYg+C,EAAoBnkL,IAAK+6I,GAEtC5U,IAEJhkF,EAAWtR,OAAQs1F,GACnBg+C,EAAoB12K,OAAQstI,IAI7B07B,EAAcqD,wBAAyB/+B,IAEK,IAAvCA,EAASg+B,kCAENh+B,EAASs+B,kBAMjB/6G,EAAK+lH,OAAO18B,YAEb,CA8CA,SAAS28B,EAA0BvpC,GAElC,IAAMqc,EAAU,GAEVmtB,EAAgBxpC,EAASl8J,MACzB2lM,EAAmBzpC,EAAS54F,WAAW3S,SACzClmE,EAAU,EAEd,GAAuB,OAAlBi7M,EAAyB,CAE7B,IAAMvxM,EAAQuxM,EAAcvxM,MAC5B1J,EAAUi7M,EAAcj7M,QAExB,IAAM,IAAIqD,EAAI,EAAGmK,EAAI9D,EAAMnL,OAAQ8E,EAAImK,EAAGnK,GAAK,EAAI,CAElD,IAAMV,EAAI+G,EAAOrG,EAAI,GACf6J,EAAIxD,EAAOrG,EAAI,GACfT,EAAI8G,EAAOrG,EAAI,GAErByqL,EAAQrqL,KAAMd,EAAGuK,EAAGA,EAAGtK,EAAGA,EAAGD,EAE9B,CAED,KAAO,CAEN,IAAM+G,EAAQwxM,EAAiBxxM,MAC/B1J,EAAUk7M,EAAiBl7M,QAE3B,IAAM,IAAIqD,EAAI,EAAGmK,EAAM9D,EAAMnL,OAAS,EAAM,EAAG8E,EAAImK,EAAGnK,GAAK,EAAI,CAE9D,IAAMV,EAAIU,EAAI,EACR6J,EAAI7J,EAAI,EACRT,EAAIS,EAAI,EAEdyqL,EAAQrqL,KAAMd,EAAGuK,EAAGA,EAAGtK,EAAGA,EAAGD,EAE9B,CAED,CAEA,IAAMk6J,EAAY,IAAM0D,GAAkButB,GAAY7C,GAAwBN,IAAyBmD,EAAS,GAChHjxB,EAAU78J,QAAUA,EAMpB,IAAMm7M,EAAoBN,EAAoBnkL,IAAK+6I,GAE9C0pC,GAAoBtiI,EAAWtR,OAAQ4zI,GAI5CN,EAAoBjlL,IAAK67I,EAAU5U,EAEpC,CAgCA,MAAO,CAENnmI,IArID,SAAc5tB,EAAQ2oK,GAErB,OAAmC,IAA9B4M,EAAY5M,EAAS1rI,MAE1B0rI,EAASlnK,iBAAkB,UAAWuwM,GAEtCz8B,EAAY5M,EAAS1rI,KAAO,EAE5BivD,EAAK+lH,OAAO18B,cANqC5M,CAUlD,EA0HCxH,OAxHD,SAAiBwH,GAEhB,IAAM29B,EAAqB39B,EAAS54F,WAIpC,IAAM,IAAM/4E,KAAQsvM,EAEnBv2H,EAAWoxF,OAAQmlC,EAAoBtvM,GAAQ,OAMhD,IAAM2sL,EAAkBhb,EAASgb,gBAEjC,IAAM,IAAM3sL,KAAQ2sL,EAInB,IAFA,IAAM/iL,EAAQ+iL,EAAiB3sL,GAErBuD,EAAI,EAAGmK,EAAI9D,EAAMnL,OAAQ8E,EAAImK,EAAGnK,IAEzCw1E,EAAWoxF,OAAQvgK,EAAOrG,GAAK,MAMlC,EA8FC+3M,sBAnCD,SAAgC3pC,GAE/B,IAAM4pC,EAAmBR,EAAoBnkL,IAAK+6I,GAElD,GAAK4pC,EAAmB,CAEvB,IAAMJ,EAAgBxpC,EAASl8J,MAER,OAAlB0lM,GAICI,EAAiBr7M,QAAUi7M,EAAcj7M,SAE7Cg7M,EAA0BvpC,EAM7B,MAECupC,EAA0BvpC,GAI3B,OAAOopC,EAAoBnkL,IAAK+6I,EAEjC,EAWD,CAEA,SAAS6pC,GAA4B/nJ,EAAI0/B,EAAY+B,EAAMmoG,GAE1D,IAEIhiJ,EAQA5vC,EAAMkyL,EAVJL,EAAWD,EAAaC,SA4D9Bz2L,KAAKgqM,QAxDL,SAAkBvrM,GAEjB+1C,EAAO/1C,CAER,EAqDAuB,KAAKgqL,SAjDL,SAAmBvrL,GAElBmG,EAAOnG,EAAMmG,KACbkyL,EAAkBr4L,EAAMq4L,eAEzB,EA6CA92L,KAAKwF,OA3CL,SAAiBslC,EAAO6yC,GAEvB/wB,EAAGgoJ,aAAcpgK,EAAMmpC,EAAO/4E,EAAMkmC,EAAQgsJ,GAE5CzoG,EAAKi1E,OAAQ3lF,EAAOnpC,EAAM,EAE3B,EAsCAx0C,KAAKkqM,gBApCL,SAA0Bp/J,EAAO6yC,EAAOwsH,GAEvC,GAAmB,IAAdA,EAAL,CAEA,IAAI7D,EAAW5yL,EAEf,GAAK+iL,EAEJ6P,EAAY15I,EACZl5C,EAAa,6BAOb,GAFAA,EAAa,6BAEM,QAHnB4yL,EAAYh6G,EAAWv8D,IAAK,2BAM3B,YADAhc,QAAQwN,MAAO,yIAOjB+kL,EAAW5yL,GAAc8gC,EAAMmpC,EAAO/4E,EAAMkmC,EAAQgsJ,EAAiBqT,GAErE97G,EAAKi1E,OAAQ3lF,EAAOnpC,EAAM21J,EAzBG,CA2B9B,CASD,CAEA,SAAS0K,GAAWjoJ,GAEnB,IAKMpnD,EAAS,CACd4wL,MAAO,EACP0e,MAAO,EACPC,UAAW,EACX9qC,OAAQ,EACR+qC,MAAO,GA+CR,MAAO,CACNZ,OA1Dc,CACd18B,WAAY,EACZnY,SAAU,GAyDV/5J,OAAQA,EACRyvM,SAAU,KACVC,WAAW,EACX36I,MAfD,WAEC/0D,EAAO4wL,QACP5wL,EAAOsvM,MAAQ,EACftvM,EAAOuvM,UAAY,EACnBvvM,EAAOykK,OAAS,EAChBzkK,EAAOwvM,MAAQ,CAEhB,EAQC1xC,OAlDD,SAAiB3lF,EAAOnpC,EAAM2gK,GAI7B,OAFA3vM,EAAOsvM,QAEEtgK,GAER,KAAK,EACJhvC,EAAOuvM,WAAaI,GAAkBx3H,EAAQ,GAC9C,MAED,KAAK,EACJn4E,EAAOwvM,OAASG,GAAkBx3H,EAAQ,GAC1C,MAED,KAAK,EACJn4E,EAAOwvM,OAASG,GAAkBx3H,EAAQ,GAC1C,MAED,KAAK,EACJn4E,EAAOwvM,OAASG,EAAgBx3H,EAChC,MAED,KAAK,EACJn4E,EAAOykK,QAAUkrC,EAAgBx3H,EACjC,MAED,QACC5pE,QAAQwN,MAAO,sCAAuCizB,GAKzD,EAqBD,CAEA,SAAS4gK,GAAep5M,EAAGuK,GAE1B,OAAOvK,EAAG,GAAMuK,EAAG,EAEpB,CAEA,SAAS8uM,GAAkBr5M,EAAGuK,GAE7B,OAAOtJ,KAAK4f,IAAKtW,EAAG,IAAQtJ,KAAK4f,IAAK7gB,EAAG,GAE1C,CAEA,SAASk5J,GAAaogD,EAAOp/C,GAE5B,IAAIuS,EAAc,EACZ1lK,EAAQmzJ,EAAUszB,6BAA+BtzB,EAAUxyH,KAAK3gC,MAAQmzJ,EAAUnzJ,MAEnFA,aAAiBkyJ,UAAYwT,EAAc,IACtC1lK,aAAiBiyJ,WAAayT,EAAc,MAC5C1lK,aAAiBi3J,WAAayO,EAAc,WACjD10J,QAAQwN,MAAO,mEAAoExe,GAExFuyM,EAAM5/C,aAAc+S,EAErB,CAEA,SAAS8sC,GAAmB3oJ,EAAI4pI,EAAcj3B,GAS7C,IAPA,IAAMi2C,EAAiB,CAAC,EAClBppB,EAAkB,IAAIv3B,aAAc,GACpC4gD,EAAgB,IAAI10J,QACpBu0J,EAAQ,IAAI11C,GAEZ81C,EAAiB,GAEbh5M,EAAI,EAAGA,EAAI,EAAGA,IAEvBg5M,EAAgBh5M,GAAM,CAAEA,EAAG,GA4Q5B,MAAO,CAEN4mK,OA1QD,SAAiBnhK,EAAQ2oK,EAAU+N,EAAUyuB,GAE5C,IAAMqO,EAAmBxzM,EAAOopL,sBAEhC,IAA+B,IAA1BiL,EAAaC,SAAoB,CAKrC,IAAMxP,EAAiBnc,EAASgb,gBAAgBvmH,UAAYurG,EAASgb,gBAAgB/c,QAAU+B,EAASgb,gBAAgBt+I,MAClHouK,OAAyCxrM,IAAnB68K,EAAiCA,EAAervL,OAAS,EAEjF+5F,EAAQ8jH,EAAc1lL,IAAK+6I,GAE/B,QAAe1gK,IAAVunF,GAAuBA,EAAMhU,QAAUi4H,EAAoB,MAEhDxrM,IAAVunF,GAAsBA,EAAM0vE,QAAQK,UAEzC,IAAMm0C,OAAyDzrM,IAAtC0gK,EAASgb,gBAAgBvmH,SAC5Cu2I,OAAsD1rM,IAApC0gK,EAASgb,gBAAgB/c,OAC3CgtC,OAAoD3rM,IAAnC0gK,EAASgb,gBAAgBt+I,MAE1CikJ,EAAe3gB,EAASgb,gBAAgBvmH,UAAY,GACpDy2I,EAAelrC,EAASgb,gBAAgB/c,QAAU,GAClDktC,EAAcnrC,EAASgb,gBAAgBt+I,OAAS,GAElD0uK,EAAkB,GAEI,IAArBL,IAA4BK,EAAkB,IAC1B,IAApBJ,IAA2BI,EAAkB,IAC1B,IAAnBH,IAA0BG,EAAkB,GAEjD,IAAI/nM,EAAQ28J,EAAS54F,WAAW3S,SAASoe,MAAQu4H,EAC7C9nM,EAAS,EAERD,EAAQqoL,EAAasU,iBAEzB18L,EAASnR,KAAKurD,KAAMr6C,EAAQqoL,EAAasU,gBACzC38L,EAAQqoL,EAAasU,gBAItB,IAAM3wC,EAAS,IAAItF,aAAc1mJ,EAAQC,EAAS,EAAIwnM,GAEhDv0C,EAAU,IAAIO,GAAkBzH,EAAQhsJ,EAAOC,EAAQwnM,GAC7Dv0C,EAAQz8J,KAAO4mJ,GACf6V,EAAQ/B,aAAc,EAMtB,IAFA,IAAM62C,EAAqC,EAAlBD,EAEfx5M,EAAI,EAAGA,EAAIk5M,EAAmBl5M,IAQvC,IANA,IAAM05M,EAAc3qB,EAAc/uL,GAC5B25M,EAAcL,EAAct5M,GAC5B45M,EAAaL,EAAav5M,GAE1BqtC,EAAS57B,EAAQC,EAAS,EAAI1R,EAE1BmT,EAAI,EAAGA,EAAIumM,EAAYz4H,MAAO9tE,IAAO,CAE9C,IAAM45K,EAAS55K,EAAIsmM,GAEO,IAArBN,IAEJP,EAAMvqC,oBAAqBqrC,EAAavmM,IAER,IAA3BumM,EAAYx5C,YAAsB1H,GAAaogD,EAAOc,GAE3Dj8C,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMp5M,EACtCi+J,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMjuM,EACtC8yJ,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMhuM,EACtC6yJ,EAAQpwH,EAAS0/I,EAAS,GAAM,IAIR,IAApBqsB,IAEJR,EAAMvqC,oBAAqBsrC,EAAaxmM,IAER,IAA3BwmM,EAAYz5C,YAAsB1H,GAAaogD,EAAOe,GAE3Dl8C,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMp5M,EACtCi+J,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMjuM,EACtC8yJ,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMhuM,EACtC6yJ,EAAQpwH,EAAS0/I,EAAS,GAAM,IAIT,IAAnBssB,IAEJT,EAAMvqC,oBAAqBurC,EAAYzmM,IAER,IAA1BymM,EAAW15C,YAAsB1H,GAAaogD,EAAOgB,GAE1Dn8C,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMp5M,EACtCi+J,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMjuM,EACtC8yJ,EAAQpwH,EAAS0/I,EAAS,IAAO6rB,EAAMhuM,EACvC6yJ,EAAQpwH,EAAS0/I,EAAS,IAAiC,IAAxB6sB,EAAW7zB,SAAmB6yB,EAAMluM,EAAI,EAI7E,CAIDuqF,EAAQ,CACPhU,MAAOi4H,EACPv0C,QAASA,EACT97G,KAAM,IAAI4vG,GAAShnJ,EAAOC,IAG3BqnM,EAAcxmL,IAAK67I,EAAUn5E,GAY7Bm5E,EAASlnK,iBAAkB,WAV3B,SAAS2yM,IAERl1C,EAAQK,UAER+zC,EAAcj4K,OAAQstI,GAEtBA,EAAS5yI,oBAAqB,UAAWq+K,EAE1C,GAID,CAMA,IAFA,IAAIC,EAAqB,EAEf95M,EAAI,EAAGA,EAAIi5M,EAAiB/9M,OAAQ8E,IAE7C85M,GAAsBb,EAAkBj5M,GAIzC,IAAM+5M,EAAqB3rC,EAASib,qBAAuB,EAAI,EAAIywB,EAEnElP,EAAQoP,cAAczmL,SAAU28B,EAAI,2BAA4B6pJ,GAChEnP,EAAQoP,cAAczmL,SAAU28B,EAAI,wBAAyB+oJ,GAE7DrO,EAAQoP,cAAczmL,SAAU28B,EAAI,sBAAuB+kC,EAAM0vE,QAAS9B,GAC1E+nC,EAAQoP,cAAczmL,SAAU28B,EAAI,0BAA2B+kC,EAAMpsC,KAGtE,KAAO,CAKN,IAAM3tD,OAA8BwS,IAArBurM,EAAiC,EAAIA,EAAiB/9M,OAEjE++M,EAAanB,EAAgB1qC,EAAS1rI,IAE1C,QAAoBh1B,IAAfusM,GAA4BA,EAAW/+M,SAAWA,EAAS,CAI/D++M,EAAa,GAEb,IAAM,IAAIj6M,EAAI,EAAGA,EAAI9E,EAAQ8E,IAE5Bi6M,EAAYj6M,GAAM,CAAEA,EAAG,GAIxB84M,EAAgB1qC,EAAS1rI,IAAOu3K,CAEjC,CAIA,IAAM,IAAIj6M,EAAI,EAAGA,EAAI9E,EAAQ8E,IAAO,CAEnC,IAAM2vL,EAAYsqB,EAAYj6M,GAE9B2vL,EAAW,GAAM3vL,EACjB2vL,EAAW,GAAMspB,EAAkBj5M,EAEpC,CAEAi6M,EAAWn9G,KAAM67G,IAEjB,IAAM,IAAI34M,EAAI,EAAGA,EAAI,EAAGA,IAElBA,EAAI9E,GAAU++M,EAAYj6M,GAAK,IAEnCg5M,EAAgBh5M,GAAK,GAAMi6M,EAAYj6M,GAAK,GAC5Cg5M,EAAgBh5M,GAAK,GAAMi6M,EAAYj6M,GAAK,KAI5Cg5M,EAAgBh5M,GAAK,GAAM2a,OAAOu/L,iBAClClB,EAAgBh5M,GAAK,GAAM,GAM7Bg5M,EAAel8G,KAAM47G,IAOrB,IALA,IAAM3pB,EAAe3gB,EAASgb,gBAAgBvmH,SACxCy2I,EAAelrC,EAASgb,gBAAgB/c,OAE1CytC,EAAqB,EAEf95M,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAM2vL,EAAYqpB,EAAgBh5M,GAC5BkS,EAAQy9K,EAAW,GACnB5tL,EAAQ4tL,EAAW,GAEpBz9K,IAAUyI,OAAOu/L,kBAAoBn4M,GAEpCgtL,GAAgB3gB,EAASlhG,aAAc,cAAgBltE,KAAQ+uL,EAAc78K,IAEjFk8J,EAASh4J,aAAc,cAAgBpW,EAAG+uL,EAAc78K,IAIpDonM,GAAgBlrC,EAASlhG,aAAc,cAAgBltE,KAAQs5M,EAAcpnM,IAEjFk8J,EAASh4J,aAAc,cAAgBpW,EAAGs5M,EAAcpnM,IAIzDw9K,EAAiB1vL,GAAM+B,EACvB+3M,GAAsB/3M,IAIjBgtL,IAA+D,IAA/C3gB,EAAShhE,aAAc,cAAgBptG,IAE3DouK,EAASk7B,gBAAiB,cAAgBtpM,GAItCs5M,IAA+D,IAA/ClrC,EAAShhE,aAAc,cAAgBptG,IAE3DouK,EAASk7B,gBAAiB,cAAgBtpM,GAI3C0vL,EAAiB1vL,GAAM,EAIzB,CAKA,IAAM+5M,EAAqB3rC,EAASib,qBAAuB,EAAI,EAAIywB,EAEnElP,EAAQoP,cAAczmL,SAAU28B,EAAI,2BAA4B6pJ,GAChEnP,EAAQoP,cAAczmL,SAAU28B,EAAI,wBAAyBw/H,EAE9D,CAED,EAQD,CAEA,SAASyqB,GAAcjqJ,EAAI8qH,EAAYxlG,EAAYmc,GAElD,IAAIyoH,EAAY,IAAI/1J,QA+CpB,SAASg2J,EAAwBxuK,GAEhC,IAAMyuK,EAAgBzuK,EAAMhnC,OAE5By1M,EAAc9+K,oBAAqB,UAAW6+K,GAE9C7kI,EAAWtR,OAAQo2I,EAAc/+B,gBAEI,OAAhC++B,EAAc9+B,eAAyBhmG,EAAWtR,OAAQo2I,EAAc9+B,cAE9E,CAEA,MAAO,CAEN5U,OA3DD,SAAiBnhK,GAEhB,IAAMi0L,EAAQ/nG,EAAK7oF,OAAO4wL,MAEpBtrB,EAAW3oK,EAAO2oK,SAClBmsC,EAAiBv/B,EAAW3nJ,IAAK5tB,EAAQ2oK,GA8B/C,OA1BKgsC,EAAU/mL,IAAKknL,KAAqB7gB,IAExC1e,EAAWpU,OAAQ2zC,GAEnBH,EAAU7nL,IAAKgoL,EAAgB7gB,IAI3Bj0L,EAAO61K,mBAE2D,IAAjE71K,EAAO+0M,iBAAkB,UAAWH,IAExC50M,EAAOyB,iBAAkB,UAAWmzM,GAIrC7kI,EAAWoxF,OAAQnhK,EAAO81K,eAAgB,OAEZ,OAAzB91K,EAAO+1K,eAEXhmG,EAAWoxF,OAAQnhK,EAAO+1K,cAAe,QAMpC++B,CAER,EAuBCv1C,QArBD,WAECo1C,EAAY,IAAI/1J,OAEjB,EAqBD,CA6CA,IAAMo2J,GAAe,IAAIp5C,GACnBq5C,GAAoB,IAAIx1C,GACxBy1C,GAAiB,IAAIl1C,GACrBm1C,GAAmB,IAAI5kB,GAMvB6kB,GAAgB,GAChBC,GAAgB,GAIhBC,GAAY,IAAI5iD,aAAc,IAC9B6iD,GAAY,IAAI7iD,aAAc,GAC9B8iD,GAAY,IAAI9iD,aAAc,GAIpC,SAAS9nD,GAAShqG,EAAO60M,EAASC,GAEjC,IAAMC,EAAY/0M,EAAO,GAEzB,GAAK+0M,GAAa,GAAKA,EAAY,EAAI,OAAO/0M,EAI9C,IAAMgE,EAAI6wM,EAAUC,EAChB3wM,EAAIqwM,GAAexwM,GASvB,QAPWqD,IAANlD,IAEJA,EAAI,IAAI2tJ,aAAc9tJ,GACtBwwM,GAAexwM,GAAMG,GAIL,IAAZ0wM,EAAgB,CAEpBE,EAAUvwH,QAASrgF,EAAG,GAEtB,IAAM,IAAIxK,EAAI,EAAGqtC,EAAS,EAAGrtC,IAAMk7M,IAAYl7M,EAE9CqtC,GAAU8tK,EACV90M,EAAOrG,GAAI6qF,QAASrgF,EAAG6iC,EAIzB,CAEA,OAAO7iC,CAER,CAEA,SAAS6wM,GAAa/7M,EAAGuK,GAExB,GAAKvK,EAAEpE,SAAW2O,EAAE3O,OAAS,OAAO,EAEpC,IAAM,IAAI8E,EAAI,EAAGmK,EAAI7K,EAAEpE,OAAQ8E,EAAImK,EAAGnK,IAErC,GAAKV,EAAGU,KAAQ6J,EAAG7J,GAAM,OAAO,EAIjC,OAAO,CAER,CAEA,SAASs7M,GAAWh8M,EAAGuK,GAEtB,IAAM,IAAI7J,EAAI,EAAGmK,EAAIN,EAAE3O,OAAQ8E,EAAImK,EAAGnK,IAErCV,EAAGU,GAAM6J,EAAG7J,EAId,CAIA,SAASu7M,GAAe14C,EAAUx4J,GAEjC,IAAIG,EAAIswM,GAAezwM,QAEZqD,IAANlD,IAEJA,EAAI,IAAI8yJ,WAAYjzJ,GACpBywM,GAAezwM,GAAMG,GAItB,IAAM,IAAIxK,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5BwK,EAAGxK,GAAM6iK,EAAS24C,sBAInB,OAAOhxM,CAER,CASA,SAASixM,GAAavrJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEdA,EAAO,KAAQjC,IAEpBylD,EAAGwrJ,UAAWp4M,KAAKq4M,KAAMlxM,GAEzBiC,EAAO,GAAMjC,EAEd,CAIA,SAASmxM,GAAa1rJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,IAE3CulD,EAAG2rJ,UAAWv4M,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,GAEhC+B,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,OAIV,CAEN,GAAK0wM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAG4rJ,WAAYx4M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAEA,SAASsxM,GAAa7rJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,GAAK+B,EAAO,KAAQjC,EAAEG,IAEjEslD,EAAG8rJ,UAAW14M,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,GAErC8B,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,EACf+B,EAAO,GAAMjC,EAAEG,QAIV,QAAa8C,IAARjD,EAAED,EAERkC,EAAO,KAAQjC,EAAED,GAAKkC,EAAO,KAAQjC,EAAET,GAAK0C,EAAO,KAAQjC,EAAEZ,IAEjEqmD,EAAG8rJ,UAAW14M,KAAKq4M,KAAMlxM,EAAED,EAAGC,EAAET,EAAGS,EAAEZ,GAErC6C,EAAO,GAAMjC,EAAED,EACfkC,EAAO,GAAMjC,EAAET,EACf0C,EAAO,GAAMjC,EAAEZ,OAIV,CAEN,GAAKwxM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAG+rJ,WAAY34M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAEA,SAASyxM,GAAahsJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,GAAK+B,EAAO,KAAQjC,EAAEG,GAAK8B,EAAO,KAAQjC,EAAEC,IAEvFwlD,EAAGisJ,UAAW74M,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,EAAGH,EAAEC,GAE1CgC,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,EACf+B,EAAO,GAAMjC,EAAEG,EACf8B,EAAO,GAAMjC,EAAEC,OAIV,CAEN,GAAK2wM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGksJ,WAAY94M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAIA,SAAS4xM,GAAYnsJ,EAAIzlD,GAExB,IAAMiC,EAAQpJ,KAAKoJ,MACb48H,EAAW7+H,EAAE6+H,SAEnB,QAAkB57H,IAAb47H,EAAyB,CAE7B,GAAK+xE,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGosJ,iBAAkBh5M,KAAKq4M,MAAM,EAAOlxM,GAEvC6wM,GAAW5uM,EAAOjC,EAEnB,KAAO,CAEN,GAAK4wM,GAAa3uM,EAAO48H,GAAa,OAEtC2xE,GAAU1oL,IAAK+2G,GAEfp5E,EAAGosJ,iBAAkBh5M,KAAKq4M,MAAM,EAAOV,IAEvCK,GAAW5uM,EAAO48H,EAEnB,CAED,CAEA,SAASizE,GAAYrsJ,EAAIzlD,GAExB,IAAMiC,EAAQpJ,KAAKoJ,MACb48H,EAAW7+H,EAAE6+H,SAEnB,QAAkB57H,IAAb47H,EAAyB,CAE7B,GAAK+xE,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGssJ,iBAAkBl5M,KAAKq4M,MAAM,EAAOlxM,GAEvC6wM,GAAW5uM,EAAOjC,EAEnB,KAAO,CAEN,GAAK4wM,GAAa3uM,EAAO48H,GAAa,OAEtC0xE,GAAUzoL,IAAK+2G,GAEfp5E,EAAGssJ,iBAAkBl5M,KAAKq4M,MAAM,EAAOX,IAEvCM,GAAW5uM,EAAO48H,EAEnB,CAED,CAEA,SAASmzE,GAAYvsJ,EAAIzlD,GAExB,IAAMiC,EAAQpJ,KAAKoJ,MACb48H,EAAW7+H,EAAE6+H,SAEnB,QAAkB57H,IAAb47H,EAAyB,CAE7B,GAAK+xE,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGwsJ,iBAAkBp5M,KAAKq4M,MAAM,EAAOlxM,GAEvC6wM,GAAW5uM,EAAOjC,EAEnB,KAAO,CAEN,GAAK4wM,GAAa3uM,EAAO48H,GAAa,OAEtCyxE,GAAUxoL,IAAK+2G,GAEfp5E,EAAGwsJ,iBAAkBp5M,KAAKq4M,MAAM,EAAOZ,IAEvCO,GAAW5uM,EAAO48H,EAEnB,CAED,CAIA,SAASqzE,GAAazsJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEdA,EAAO,KAAQjC,IAEpBylD,EAAG0sJ,UAAWt5M,KAAKq4M,KAAMlxM,GAEzBiC,EAAO,GAAMjC,EAEd,CAIA,SAASoyM,GAAa3sJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEd2uM,GAAa3uM,EAAOjC,KAEzBylD,EAAG4sJ,WAAYx5M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,GAEnB,CAEA,SAASsyM,GAAa7sJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEd2uM,GAAa3uM,EAAOjC,KAEzBylD,EAAG8sJ,WAAY15M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,GAEnB,CAEA,SAASwyM,GAAa/sJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEd2uM,GAAa3uM,EAAOjC,KAEzBylD,EAAGgtJ,WAAY55M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,GAEnB,CAIA,SAAS0yM,GAAcjtJ,EAAIzlD,GAE1B,IAAMiC,EAAQpJ,KAAKoJ,MAEdA,EAAO,KAAQjC,IAEpBylD,EAAGktJ,WAAY95M,KAAKq4M,KAAMlxM,GAE1BiC,EAAO,GAAMjC,EAEd,CAIA,SAAS4yM,GAAcntJ,EAAIzlD,GAE1B,IAAMiC,EAAQpJ,KAAKoJ,MAEd2uM,GAAa3uM,EAAOjC,KAEzBylD,EAAGotJ,YAAah6M,KAAKq4M,KAAMlxM,GAE3B6wM,GAAW5uM,EAAOjC,GAEnB,CAEA,SAAS8yM,GAAcrtJ,EAAIzlD,GAE1B,IAAMiC,EAAQpJ,KAAKoJ,MAEd2uM,GAAa3uM,EAAOjC,KAEzBylD,EAAGstJ,YAAal6M,KAAKq4M,KAAMlxM,GAE3B6wM,GAAW5uM,EAAOjC,GAEnB,CAEA,SAASgzM,GAAcvtJ,EAAIzlD,GAE1B,IAAMiC,EAAQpJ,KAAKoJ,MAEd2uM,GAAa3uM,EAAOjC,KAEzBylD,EAAGwtJ,YAAap6M,KAAKq4M,KAAMlxM,GAE3B6wM,GAAW5uM,EAAOjC,GAEnB,CAKA,SAASkzM,GAAYztJ,EAAIzlD,EAAGo4J,GAE3B,IAAMn2J,EAAQpJ,KAAKoJ,MACbkxM,EAAO/6C,EAAS24C,sBAEjB9uM,EAAO,KAAQkxM,IAEnB1tJ,EAAG0sJ,UAAWt5M,KAAKq4M,KAAMiC,GACzBlxM,EAAO,GAAMkxM,GAId/6C,EAASg7C,aAAcpzM,GAAKgwM,GAAcmD,EAE3C,CAEA,SAASE,GAAc5tJ,EAAIzlD,EAAGo4J,GAE7B,IAAMn2J,EAAQpJ,KAAKoJ,MACbkxM,EAAO/6C,EAAS24C,sBAEjB9uM,EAAO,KAAQkxM,IAEnB1tJ,EAAG0sJ,UAAWt5M,KAAKq4M,KAAMiC,GACzBlxM,EAAO,GAAMkxM,GAId/6C,EAASk7C,aAActzM,GAAKkwM,GAAgBiD,EAE7C,CAEA,SAASI,GAAY9tJ,EAAIzlD,EAAGo4J,GAE3B,IAAMn2J,EAAQpJ,KAAKoJ,MACbkxM,EAAO/6C,EAAS24C,sBAEjB9uM,EAAO,KAAQkxM,IAEnB1tJ,EAAG0sJ,UAAWt5M,KAAKq4M,KAAMiC,GACzBlxM,EAAO,GAAMkxM,GAId/6C,EAASo7C,eAAgBxzM,GAAKmwM,GAAkBgD,EAEjD,CAEA,SAASM,GAAmBhuJ,EAAIzlD,EAAGo4J,GAElC,IAAMn2J,EAAQpJ,KAAKoJ,MACbkxM,EAAO/6C,EAAS24C,sBAEjB9uM,EAAO,KAAQkxM,IAEnB1tJ,EAAG0sJ,UAAWt5M,KAAKq4M,KAAMiC,GACzBlxM,EAAO,GAAMkxM,GAId/6C,EAASs7C,kBAAmB1zM,GAAKiwM,GAAmBkD,EAErD,CA0DA,SAASQ,GAAkBluJ,EAAIzlD,GAE9BylD,EAAGmuJ,WAAY/6M,KAAKq4M,KAAMlxM,EAE3B,CAIA,SAAS6zM,GAAkBpuJ,EAAIzlD,GAE9B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,GAEpCqH,EAAG4rJ,WAAYx4M,KAAKq4M,KAAM30K,EAE3B,CAEA,SAASu3K,GAAkBruJ,EAAIzlD,GAE9B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,GAEpCqH,EAAG+rJ,WAAY34M,KAAKq4M,KAAM30K,EAE3B,CAEA,SAASw3K,GAAkBtuJ,EAAIzlD,GAE9B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,GAEpCqH,EAAGksJ,WAAY94M,KAAKq4M,KAAM30K,EAE3B,CAIA,SAASy3K,GAAiBvuJ,EAAIzlD,GAE7B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,GAEpCqH,EAAGosJ,iBAAkBh5M,KAAKq4M,MAAM,EAAO30K,EAExC,CAEA,SAAS03K,GAAiBxuJ,EAAIzlD,GAE7B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,GAEpCqH,EAAGssJ,iBAAkBl5M,KAAKq4M,MAAM,EAAO30K,EAExC,CAEA,SAAS23K,GAAiBzuJ,EAAIzlD,GAE7B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,IAEpCqH,EAAGwsJ,iBAAkBp5M,KAAKq4M,MAAM,EAAO30K,EAExC,CAIA,SAAS43K,GAAkB1uJ,EAAIzlD,GAE9BylD,EAAG2uJ,WAAYv7M,KAAKq4M,KAAMlxM,EAE3B,CAIA,SAASq0M,GAAkB5uJ,EAAIzlD,GAE9BylD,EAAG4sJ,WAAYx5M,KAAKq4M,KAAMlxM,EAE3B,CAEA,SAASs0M,GAAkB7uJ,EAAIzlD,GAE9BylD,EAAG8sJ,WAAY15M,KAAKq4M,KAAMlxM,EAE3B,CAEA,SAASu0M,GAAkB9uJ,EAAIzlD,GAE9BylD,EAAGgtJ,WAAY55M,KAAKq4M,KAAMlxM,EAE3B,CAIA,SAASw0M,GAAmB/uJ,EAAIzlD,GAE/BylD,EAAGgvJ,YAAa57M,KAAKq4M,KAAMlxM,EAE5B,CAIA,SAAS00M,GAAmBjvJ,EAAIzlD,GAE/BylD,EAAGotJ,YAAah6M,KAAKq4M,KAAMlxM,EAE5B,CAEA,SAAS20M,GAAmBlvJ,EAAIzlD,GAE/BylD,EAAGstJ,YAAal6M,KAAKq4M,KAAMlxM,EAE5B,CAEA,SAAS40M,GAAmBnvJ,EAAIzlD,GAE/BylD,EAAGwtJ,YAAap6M,KAAKq4M,KAAMlxM,EAE5B,CAKA,SAAS60M,GAAiBpvJ,EAAIzlD,EAAGo4J,GAEhC,IAAMx4J,EAAII,EAAEvP,OAENqkN,EAAQhE,GAAe14C,EAAUx4J,GAEvC6lD,EAAG2uJ,WAAYv7M,KAAKq4M,KAAM4D,GAE1B,IAAM,IAAIv/M,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5B6iK,EAASg7C,aAAcpzM,EAAGzK,IAAOy6M,GAAc8E,EAAOv/M,GAIxD,CAEA,SAASw/M,GAAkBtvJ,EAAIzlD,EAAGo4J,GAEjC,IAAMx4J,EAAII,EAAEvP,OAENqkN,EAAQhE,GAAe14C,EAAUx4J,GAEvC6lD,EAAG2uJ,WAAYv7M,KAAKq4M,KAAM4D,GAE1B,IAAM,IAAIv/M,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5B6iK,EAASk7C,aAActzM,EAAGzK,IAAO26M,GAAgB4E,EAAOv/M,GAI1D,CAEA,SAASy/M,GAAiBvvJ,EAAIzlD,EAAGo4J,GAEhC,IAAMx4J,EAAII,EAAEvP,OAENqkN,EAAQhE,GAAe14C,EAAUx4J,GAEvC6lD,EAAG2uJ,WAAYv7M,KAAKq4M,KAAM4D,GAE1B,IAAM,IAAIv/M,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5B6iK,EAASo7C,eAAgBxzM,EAAGzK,IAAO46M,GAAkB2E,EAAOv/M,GAI9D,CAEA,SAAS0/M,GAAuBxvJ,EAAIzlD,EAAGo4J,GAEtC,IAAMx4J,EAAII,EAAEvP,OAENqkN,EAAQhE,GAAe14C,EAAUx4J,GAEvC6lD,EAAG2uJ,WAAYv7M,KAAKq4M,KAAM4D,GAE1B,IAAM,IAAIv/M,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5B6iK,EAASs7C,kBAAmB1zM,EAAGzK,IAAO06M,GAAmB6E,EAAOv/M,GAIlE,CA0DA,SAAS2/M,GAAej9K,EAAIk9K,EAAYjE,GAEvCr4M,KAAKo/B,GAAKA,EACVp/B,KAAKq4M,KAAOA,EACZr4M,KAAKoJ,MAAQ,GACbpJ,KAAKiwB,SAxSN,SAA4BrrB,GAE3B,OAASA,GAER,KAAK,KAAQ,OAAOuzM,GACpB,KAAK,MAAQ,OAAOG,GACpB,KAAK,MAAQ,OAAOG,GACpB,KAAK,MAAQ,OAAOG,GAEpB,KAAK,MAAQ,OAAOG,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GAEpB,KAAK,KAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GAEjC,KAAK,KAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GAEpB,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOG,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,GAIV,CAuPiB2B,CAAmBD,EAAW13M,KAI/C,CAEA,SAAS43M,GAAkBp9K,EAAIk9K,EAAYjE,GAE1Cr4M,KAAKo/B,GAAKA,EACVp/B,KAAKq4M,KAAOA,EACZr4M,KAAKoJ,MAAQ,GACbpJ,KAAKulD,KAAO+2J,EAAW/2J,KACvBvlD,KAAKiwB,SAtEN,SAA6BrrB,GAE5B,OAASA,GAER,KAAK,KAAQ,OAAOk2M,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GAEpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GAEpB,KAAK,KAAQ,KAAK,MAAQ,OAAOC,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOC,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOC,GAEjC,KAAK,KAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GAEpB,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOC,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOC,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOC,GAIV,CAqBiBK,CAAoBH,EAAW13M,KAIhD,CAgBA,SAAS83M,GAAmBt9K,GAE3Bp/B,KAAKo/B,GAAKA,EAEVp/B,KAAK28M,IAAM,GACX38M,KAAKzD,IAAM,CAAC,CAEb,CArBAigN,GAAiB5/M,UAAUggN,YAAc,SAAWl5K,GAEnD,IAAMt6B,EAAQpJ,KAAKoJ,MAEds6B,aAAgBmxH,cAAgBzrJ,EAAMxR,SAAW8rC,EAAK9rC,SAE1DoI,KAAKoJ,MAAQ,IAAIyrJ,aAAcnxH,EAAK9rC,SAIrCogN,GAAW5uM,EAAOs6B,EAEnB,EAWAg5K,GAAkB9/M,UAAUqzB,SAAW,SAAW28B,EAAInuD,EAAO8gK,GAI5D,IAFA,IAAMo9C,EAAM38M,KAAK28M,IAEPjgN,EAAI,EAAGqK,EAAI41M,EAAI/kN,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEhD,IAAM6K,EAAIo1M,EAAKjgN,GACf6K,EAAE0oB,SAAU28B,EAAInuD,EAAO8I,EAAE63B,IAAMmgI,EAEhC,CAED,EAMA,IAAMs9C,GAAa,sBAWnB,SAASC,GAAY3gM,EAAW4gM,GAE/B5gM,EAAUwgM,IAAI7/M,KAAMigN,GACpB5gM,EAAU5f,IAAKwgN,EAAc39K,IAAO29K,CAErC,CAEA,SAASC,GAAcV,EAAYjE,EAAMl8L,GAExC,IAAM+6E,EAAOolH,EAAWnjN,KACvB8jN,EAAa/lH,EAAKt/F,OAKnB,IAFAilN,GAAWK,UAAY,IAER,CAEd,IAAMvlN,EAAQklN,GAAW7mM,KAAMkhF,GAC9BimH,EAAWN,GAAWK,UAEnB99K,EAAKznC,EAAO,GACVylN,EAA2B,MAAfzlN,EAAO,GACxB0lN,EAAY1lN,EAAO,GAIpB,GAFKylN,IAAYh+K,GAAU,QAERh1B,IAAdizM,GAAyC,MAAdA,GAAqBF,EAAW,IAAMF,EAAa,CAIlFH,GAAY3gM,OAAyB/R,IAAdizM,EACtB,IAAIhB,GAAej9K,EAAIk9K,EAAYjE,GACnC,IAAImE,GAAkBp9K,EAAIk9K,EAAYjE,IAEvC,KAED,CAIC,IACIn1M,EADQiZ,EAAU5f,IACN6iC,QAEFh1B,IAATlH,GAGJ45M,GAAY3gM,EADZjZ,EAAO,IAAIw5M,GAAmBt9K,IAK/BjjB,EAAYjZ,CAId,CAED,CAIA,SAASo6M,GAAe1wJ,EAAI06I,GAE3BtnM,KAAK28M,IAAM,GACX38M,KAAKzD,IAAM,CAAC,EAIZ,IAFA,IAAMwK,EAAI6lD,EAAG2wJ,oBAAqBjW,EAAS,OAEjC5qM,EAAI,EAAGA,EAAIqK,IAAMrK,EAAI,CAE9B,IAAM2xF,EAAOzhC,EAAG4wJ,iBAAkBlW,EAAS5qM,GAG3CsgN,GAAc3uH,EAFNzhC,EAAG6wJ,mBAAoBnW,EAASj5G,EAAKl1F,MAEnB6G,KAE3B,CAED,CAsDA,SAAS09M,GAAa9wJ,EAAIhoD,EAAMwU,GAE/B,IAAM+5K,EAASvmI,EAAG+wJ,aAAc/4M,GAKhC,OAHAgoD,EAAGgxJ,aAAczqB,EAAQ/5K,GACzBwzC,EAAGixJ,cAAe1qB,GAEXA,CAER,CA7DAmqB,GAAc1gN,UAAUqzB,SAAW,SAAW28B,EAAIzzD,EAAMsF,EAAO8gK,GAE9D,IAAMh4J,EAAIvH,KAAKzD,IAAKpD,QAETiR,IAAN7C,GAAkBA,EAAE0oB,SAAU28B,EAAInuD,EAAO8gK,EAE/C,EAEA+9C,GAAc1gN,UAAUkhN,YAAc,SAAWlxJ,EAAIzqD,EAAQhJ,GAE5D,IAAMgO,EAAIhF,EAAQhJ,QAEPiR,IAANjD,GAAkBnH,KAAKiwB,SAAU28B,EAAIzzD,EAAMgO,EAEjD,EAKAm2M,GAAcS,OAAS,SAAWnxJ,EAAI+vJ,EAAK5vM,EAAQwyJ,GAElD,IAAM,IAAI7iK,EAAI,EAAGqK,EAAI41M,EAAI/kN,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEhD,IAAM6K,EAAIo1M,EAAKjgN,GACdyK,EAAI4F,EAAQxF,EAAE63B,KAEQ,IAAlBj4B,EAAEm4J,aAGN/3J,EAAE0oB,SAAU28B,EAAIzlD,EAAE1I,MAAO8gK,EAI3B,CAED,EAEA+9C,GAAcU,aAAe,SAAWrB,EAAK5vM,GAI5C,IAFA,IAAM7F,EAAI,GAEAxK,EAAI,EAAGqK,EAAI41M,EAAI/kN,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEhD,IAAM6K,EAAIo1M,EAAKjgN,GACV6K,EAAE63B,MAAMryB,GAAS7F,EAAEpK,KAAMyK,EAE/B,CAEA,OAAOL,CAER,EAaA,IAAI+2M,GAAiB,EAoCrB,SAASC,GAAiBtxJ,EAAIumI,EAAQvuL,GAErC,IAAM+5F,EAAS/xC,EAAGuxJ,mBAAoBhrB,EAAQ,OACxC/wF,EAASx1C,EAAGwxJ,iBAAkBjrB,GAAStkK,OAE7C,GAAK8vE,GAAqB,KAAXyD,EAAgB,MAAO,GAEtC,IAAMi8G,EAAYltM,SAAU,iBAAiB6E,KAAMosF,GAAU,IAK7D,OAAOx9F,EAAK+L,cAAgB,OAASyxF,EAAS,OA9C/C,SAAuBhpF,EAAQilM,GAQ9B,IANA,IAAMrJ,EAAQ57L,EAAOtd,MAAO,MACtBwiN,EAAS,GAETj8L,EAAOplB,KAAKC,IAAKmhN,EAAY,EAAG,GAChCzzI,EAAK3tE,KAAKiuC,IAAKmzK,EAAY,EAAGrJ,EAAMp9M,QAEhC8E,EAAI2lB,EAAM3lB,EAAIkuE,EAAIluE,IAE3B4hN,EAAOxhN,KAAQJ,EAAI,EAAM,KAAOs4M,EAAOt4M,IAIxC,OAAO4hN,EAAOjhN,KAAM,KAErB,CA8BwDkhN,CAAc3xJ,EAAG4xJ,gBAAiBrrB,GAAUkrB,EAEpG,CAEA,SAASI,GAA0BC,EAAcjgD,GAEhD,IAAM1C,EAlCP,SAAgC0C,GAE/B,OAASA,GAER,KAAKxP,GACJ,MAAO,CAAE,SAAU,aACpB,KAAKC,GACJ,MAAO,CAAE,OAAQ,aAClB,QAEC,OADAn7I,QAAQk/C,KAAM,4CAA6CwrG,GACpD,CAAE,SAAU,aAItB,CAoBoBkgD,CAAuBlgD,GAC1C,MAAO,QAAUigD,EAAe,mCAAqC3iD,EAAY,GAAMA,EAAY,GAAM,KAE1G,CAEA,SAAS6iD,GAAwBF,EAAcpsB,GAE9C,IAAIusB,EAEJ,OAASvsB,GAER,KAAK5oC,GACJm1D,EAAkB,SAClB,MAED,KAAKl1D,GACJk1D,EAAkB,WAClB,MAED,KAAKj1D,GACJi1D,EAAkB,kBAClB,MAED,KAAKh1D,GACJg1D,EAAkB,aAClB,MAED,KAAK/0D,GACJ+0D,EAAkB,SAClB,MAED,QACC9qM,QAAQk/C,KAAM,+CAAgDq/H,GAC9DusB,EAAkB,SAIpB,MAAO,QAAUH,EAAe,2BAA6BG,EAAkB,yBAEhF,CA+DA,SAASC,GAAiB1lM,GAEzB,MAAkB,KAAXA,CAER,CAEA,SAAS2lM,GAAkB3lM,EAAQo/J,GAElC,OAAOp/J,EACLzd,QAAS,kBAAmB68K,EAAWwmC,cACvCrjN,QAAS,mBAAoB68K,EAAWymC,eACxCtjN,QAAS,wBAAyB68K,EAAW0mC,mBAC7CvjN,QAAS,oBAAqB68K,EAAW2mC,gBACzCxjN,QAAS,mBAAoB68K,EAAW4mC,eACxCzjN,QAAS,yBAA0B68K,EAAW6mC,oBAC9C1jN,QAAS,0BAA2B68K,EAAW8mC,qBAC/C3jN,QAAS,2BAA4B68K,EAAW+mC,qBAEnD,CAEA,SAASC,GAA0BpmM,EAAQo/J,GAE1C,OAAOp/J,EACLzd,QAAS,uBAAwB68K,EAAWinC,mBAC5C9jN,QAAS,yBAA4B68K,EAAWinC,kBAAoBjnC,EAAWknC,oBAElF,CAIA,IAAMC,GAAiB,mCAEvB,SAASC,GAAiBxmM,GAEzB,OAAOA,EAAOzd,QAASgkN,GAAgBE,GAExC,CAEA,SAASA,GAAiBloN,EAAOmoN,GAEhC,IAAM1mM,EAAS2+K,GAAa+nB,GAE5B,QAAgB11M,IAAXgP,EAEJ,MAAM,IAAItb,MAAO,6BAA+BgiN,EAAU,KAI3D,OAAOF,GAAiBxmM,EAEzB,CAIA,IAAM2mM,GAA8B,+FAC9BC,GAAoB,+IAE1B,SAASC,GAAa7mM,GAErB,OAAOA,EACLzd,QAASqkN,GAAmBE,IAC5BvkN,QAASokN,GAA6BI,GAEzC,CAEA,SAASA,GAAwBxoN,EAAOmzC,EAAOC,EAAKq1K,GAGnD,OADArsM,QAAQk/C,KAAM,uHACPitJ,GAAcvoN,EAAOmzC,EAAOC,EAAKq1K,EAEzC,CAEA,SAASF,GAAcvoN,EAAOmzC,EAAOC,EAAKq1K,GAIzC,IAFA,IAAIhnM,EAAS,GAEH1c,EAAIyU,SAAU25B,GAASpuC,EAAIyU,SAAU45B,GAAOruC,IAErD0c,GAAUgnM,EACRzkN,QAAS,eAAgB,KAAOe,EAAI,MACpCf,QAAS,uBAAwBe,GAIpC,OAAO0c,CAER,CAIA,SAASinM,GAAmB7nC,GAE3B,IAAI8nC,EAAkB,aAAe9nC,EAAWx7K,UAAY,sBAAwBw7K,EAAWx7K,UAAY,QAgB3G,MAd8B,UAAzBw7K,EAAWx7K,UAEfsjN,GAAmB,2BAEiB,YAAzB9nC,EAAWx7K,UAEtBsjN,GAAmB,6BAEiB,SAAzB9nC,EAAWx7K,YAEtBsjN,GAAmB,2BAIbA,CAER,CAkHA,SAASC,GAAczuB,EAAU0uB,EAAUhoC,EAAYguB,GAKtD,IAmBIia,EAAcC,EAnBZ9zJ,EAAKklI,EAAS74C,aAEd01C,EAAUnW,EAAWmW,QAEvBC,EAAepW,EAAWoW,aAC1BC,EAAiBrW,EAAWqW,eAE1B8xB,EA5HP,SAAsCnoC,GAErC,IAAImoC,EAAsB,uBAgB1B,OAdKnoC,EAAWooC,gBAAkB55D,GAEjC25D,EAAsB,qBAEXnoC,EAAWooC,gBAAkB35D,GAExC05D,EAAsB,0BAEXnoC,EAAWooC,gBAAkB15D,KAExCy5D,EAAsB,sBAIhBA,CAER,CAwG6BE,CAA6BroC,GACnDsoC,EAvGP,SAAmCtoC,GAElC,IAAIsoC,EAAmB,mBAEvB,GAAKtoC,EAAW+H,OAEf,OAAS/H,EAAWuoC,YAEnB,KAAK/2D,GACL,KAAKC,GACJ62D,EAAmB,mBACnB,MAED,KAAK12D,GACJ02D,EAAmB,sBAOtB,OAAOA,CAER,CAgF0BE,CAA0BxoC,GAC7CyoC,EA/EP,SAAmCzoC,GAElC,IAAIyoC,EAAmB,yBAElBzoC,EAAW+H,QAEN/H,EAAWuoC,aAEd92D,KAEJg3D,EAAmB,0BAOtB,OAAOA,CAER,CA4D0BC,CAA0B1oC,GAC7C2oC,EA3DP,SAAuC3oC,GAEtC,IAAI2oC,EAAuB,uBAE3B,GAAK3oC,EAAW+H,OAEf,OAAS/H,EAAWgI,SAEnB,KAAKl3B,GACJ63D,EAAuB,2BACvB,MAED,KAAK53D,GACJ43D,EAAuB,sBACvB,MAED,KAAK33D,GACJ23D,EAAuB,sBAO1B,OAAOA,CAER,CAiC8BC,CAA8B5oC,GACrD6oC,EAhCP,SAA6B7oC,GAE5B,IAAM8oC,EAAc9oC,EAAW+oC,mBAE/B,GAAqB,OAAhBD,EAAuB,OAAO,KAEnC,IAAME,EAASvkN,KAAKqzM,KAAMgR,EAAc,GAAK,GAAM,EAE7CG,EAAc,EAAMH,EAI1B,MAAO,CAAEI,WAFU,GAAQ,EAAIzkN,KAAKC,IAAKD,KAAKs1J,IAAK,EAAGivD,GAAU,MAE3CC,YAAAA,EAAaD,OAAAA,EAEnC,CAkB0BG,CAAoBnpC,GAEvCopC,EAAmBppC,EAAWie,SAAW,GA/ShD,SAA6Bje,GAS5B,MAPe,CACZA,EAAWqpC,sBAA2BrpC,EAAW+oC,oBAAsB/oC,EAAWiH,SAAWjH,EAAWspC,uBAAyBtpC,EAAWyG,oBAAsBzG,EAAWyF,aAAuC,aAAxBzF,EAAWupC,SAA4B,kDAAoD,IACvRvpC,EAAWwpC,oBAAsBxpC,EAAWmyB,yBAA4BnyB,EAAWypC,2BAA6B,wCAA0C,GAC1JzpC,EAAW0pC,sBAAwB1pC,EAAW2pC,6BAAiC,2CAA6C,IAC5H3pC,EAAW4pC,2BAA6B5pC,EAAW+H,QAAU/H,EAAWqI,eAAkBrI,EAAW6pC,kCAAoC,gDAAkD,IAGhLvgN,OAAQg9M,IAAkBzhN,KAAM,KAE/C,CAoSqDilN,CAAoB9pC,GAElE+pC,EApSP,SAA0B5zB,GAEzB,IAAMxxL,EAAS,GAEf,IAAM,IAAMhE,KAAQw1L,EAAU,CAE7B,IAAMlwL,EAAQkwL,EAASx1L,IAER,IAAVsF,GAELtB,EAAOL,KAAM,WAAa3D,EAAO,IAAMsF,EAExC,CAEA,OAAOtB,EAAOE,KAAM,KAErB,CAoRuBmlN,CAAiB7zB,GAEjC2Y,EAAU16I,EAAG61J,gBAGfC,EAAgBlqC,EAAW+W,YAAc,YAAc/W,EAAW+W,YAAc,KAAO,GAEtF/W,EAAWmqC,sBAEflC,EAAe,CAEd8B,GAECzgN,OAAQg9M,IAAkBzhN,KAAM,OAEhBzF,OAAS,IAE1B6oN,GAAgB,OAIjBC,EAAiB,CAEhBkB,EACAW,GAECzgN,OAAQg9M,IAAkBzhN,KAAM,OAEdzF,OAAS,IAE5B8oN,GAAkB,QAMnBD,EAAe,CAEdJ,GAAmB7nC,GAEnB,uBAAyBA,EAAWoqC,WAEpCL,EAEA/pC,EAAWqqC,WAAa,yBAA2B,GACnDrqC,EAAWsqC,gBAAkB,+BAAiC,GAE9DtqC,EAAWuqC,uBAAyB,0BAA4B,GAEhE,qBAAuBvqC,EAAWwqC,SAChCxqC,EAAWyqC,QAAUzqC,EAAWmD,IAAQ,kBAAoB,GAC5DnD,EAAWyqC,QAAUzqC,EAAW0qC,QAAY,mBAAqB,GAEnE1qC,EAAWj8K,IAAM,kBAAoB,GACrCi8K,EAAW+H,OAAS,qBAAuB,GAC3C/H,EAAW+H,OAAS,WAAa0gC,EAAmB,GACpDzoC,EAAW6G,SAAW,uBAAyB,GAC/C7G,EAAW+G,MAAQ,oBAAsB,GACzC/G,EAAW2H,YAAc,0BAA4B,GACrD3H,EAAWiH,QAAU,sBAAwB,GAC7CjH,EAAWmH,UAAY,wBAA0B,GAC/CnH,EAAWmH,WAAanH,EAAW2qC,qBAAyB,gCAAkC,GAC9F3qC,EAAWmH,WAAanH,EAAWspC,sBAA0B,iCAAmC,GAElGtpC,EAAWuG,aAAe,2BAA6B,GACvDvG,EAAWwG,sBAAwB,qCAAuC,GAC1ExG,EAAWyG,mBAAqB,kCAAoC,GAEpEzG,EAAWsH,iBAAmBtH,EAAWuqC,uBAAyB,8BAAgC,GAElGvqC,EAAW4H,YAAc,0BAA4B,GACrD5H,EAAW6H,qBAAuB,mCAAqC,GACvE7H,EAAW8H,iBAAmB,+BAAiC,GAE/D9H,EAAWyH,aAAe,2BAA6B,GACvDzH,EAAW0H,aAAe,2BAA6B,GACvD1H,EAAW4G,SAAW,uBAAyB,GAE/C5G,EAAWqI,aAAe,2BAA6B,GACvDrI,EAAWsI,gBAAkB,8BAAgC,GAC7DtI,EAAWwI,aAAe,2BAA6B,GAEvDxI,EAAWg1B,cAAgB,4BAA8B,GACzDh1B,EAAWi1B,kBAAoB,gCAAkC,GAEjEj1B,EAAW4qC,eAAiB,sBAAwB,GACpD5qC,EAAWsD,aAAe,oBAAsB,GAChDtD,EAAW6qC,aAAe,0BAA4B,GACtD7qC,EAAW8qC,UAAY,iBAAmB,GAC1C9qC,EAAW+qC,cAAgB,0BAA4B,GAEvD/qC,EAAWyF,YAAc,sBAAwB,GAEjDzF,EAAWgrC,SAAW,uBAAyB,GAC/ChrC,EAAWirC,iBAAmB,uBAAyB,GAEvDjrC,EAAWiT,aAAe,2BAA6B,GACvDjT,EAAWw9B,eAA2C,IAA3Bx9B,EAAWyF,YAAwB,2BAA6B,GACzFzF,EAAWy9B,aAAez9B,EAAWie,SAAa,0BAA4B,GAC9Eje,EAAWo9B,kBAAoB,GAAKp9B,EAAWie,SAAa,+BAAiC,GAC7Fje,EAAWo9B,kBAAoB,GAAKp9B,EAAWie,SAAa,uCAAyCje,EAAWkrC,mBAAqB,GACrIlrC,EAAWo9B,kBAAoB,GAAKp9B,EAAWie,SAAa,8BAAgCje,EAAWo9B,kBAAoB,GAC7Hp9B,EAAWmrC,YAAc,uBAAyB,GAClDnrC,EAAWorC,UAAY,qBAAuB,GAE9CprC,EAAWqrC,iBAAmB,wBAA0B,GACxDrrC,EAAWqrC,iBAAmB,WAAalD,EAAsB,GAEjEnoC,EAAW2I,gBAAkB,8BAAgC,GAE7D3I,EAAWmyB,uBAAyB,0BAA4B,GAC9DnyB,EAAWmyB,wBAA0BnyB,EAAWypC,2BAA+B,8BAAgC,GAEjH,4BACA,gCACA,iCACA,2BACA,6BACA,+BACA,+BAEA,wBAEA,mCAEA,SAEA,8BAEA,kCAEA,SAEA,2BACA,yBACA,qBAEA,qBAEA,4BAEA,SAEA,iCAEA,0BAEA,6BAEA,0BAEA,SAEA,2EAEA,iCACA,iCACA,iCACA,iCAEA,4BAEA,mCACA,mCACA,mCACA,mCAEA,UAEA,mCACA,mCACA,mCACA,mCAEA,WAEA,SAEA,sBAEA,8BACA,+BAEA,SAEA,MAECngN,OAAQg9M,IAAkBzhN,KAAM,MAElCqjN,EAAiB,CAEhBkB,EAEAvB,GAAmB7nC,GAEnB,uBAAyBA,EAAWoqC,WAEpCL,EAEE/pC,EAAWyqC,QAAUzqC,EAAWmD,IAAQ,kBAAoB,GAC5DnD,EAAWyqC,QAAUzqC,EAAW0qC,QAAY,mBAAqB,GAEnE1qC,EAAWj8K,IAAM,kBAAoB,GACrCi8K,EAAW2G,OAAS,qBAAuB,GAC3C3G,EAAW+H,OAAS,qBAAuB,GAC3C/H,EAAW+H,OAAS,WAAaugC,EAAmB,GACpDtoC,EAAW+H,OAAS,WAAa0gC,EAAmB,GACpDzoC,EAAW+H,OAAS,WAAa4gC,EAAuB,GACxDE,EAAmB,8BAAgCA,EAAiBK,WAAa,GACjFL,EAAmB,+BAAiCA,EAAiBI,YAAc,GACnFJ,EAAmB,0BAA4BA,EAAiBG,OAAS,KAAO,GAChFhpC,EAAW6G,SAAW,uBAAyB,GAC/C7G,EAAW+G,MAAQ,oBAAsB,GACzC/G,EAAW2H,YAAc,0BAA4B,GACrD3H,EAAWiH,QAAU,sBAAwB,GAC7CjH,EAAWmH,UAAY,wBAA0B,GAC/CnH,EAAWmH,WAAanH,EAAW2qC,qBAAyB,gCAAkC,GAC9F3qC,EAAWmH,WAAanH,EAAWspC,sBAA0B,iCAAmC,GAElGtpC,EAAWqG,UAAY,wBAA0B,GACjDrG,EAAWuG,aAAe,2BAA6B,GACvDvG,EAAWwG,sBAAwB,qCAAuC,GAC1ExG,EAAWyG,mBAAqB,kCAAoC,GAEpEzG,EAAW4H,YAAc,0BAA4B,GACrD5H,EAAW6H,qBAAuB,mCAAqC,GACvE7H,EAAW8H,iBAAmB,+BAAiC,GAC/D9H,EAAWyH,aAAe,2BAA6B,GACvDzH,EAAW0H,aAAe,2BAA6B,GAEvD1H,EAAW4G,SAAW,uBAAyB,GAC/C5G,EAAW+I,UAAY,wBAA0B,GAEjD/I,EAAW4F,MAAQ,oBAAsB,GACzC5F,EAAWg1B,cAAgB,4BAA8B,GACzDh1B,EAAWi1B,kBAAoB,gCAAkC,GAEjEj1B,EAAWqI,aAAe,2BAA6B,GACvDrI,EAAWsI,gBAAkB,8BAAgC,GAC7DtI,EAAWwI,aAAe,2BAA6B,GAEvDxI,EAAWsrC,mBAAqB,+BAAiC,GAEjEtrC,EAAW4qC,eAAiB,sBAAwB,GACpD5qC,EAAWsD,cAAgBtD,EAAWsqC,gBAAkB,oBAAsB,GAC9EtqC,EAAW6qC,aAAe,0BAA4B,GACtD7qC,EAAW8qC,UAAY,iBAAmB,GAC1C9qC,EAAW+qC,cAAgB,0BAA4B,GAEvD/qC,EAAWoI,YAAc,0BAA4B,GAErDpI,EAAWyF,YAAc,sBAAwB,GAEjDzF,EAAWmrC,YAAc,uBAAyB,GAClDnrC,EAAWorC,UAAY,qBAAuB,GAE9CprC,EAAWqrC,iBAAmB,wBAA0B,GACxDrrC,EAAWqrC,iBAAmB,WAAalD,EAAsB,GAEjEnoC,EAAWmF,mBAAqB,8BAAgC,GAEhEnF,EAAWurC,wBAA0B,oCAAsC,GAE3EvrC,EAAWmyB,uBAAyB,0BAA4B,GAC9DnyB,EAAWmyB,wBAA0BnyB,EAAWypC,2BAA+B,8BAAgC,GAEjH,2BACA,+BACA,+BAEEzpC,EAAW8Z,cAAgB7oC,GAAkB,uBAAyB,GACtE+uB,EAAW8Z,cAAgB7oC,GAAkBsuC,GAAwC,0BAAK,GAC1Fvf,EAAW8Z,cAAgB7oC,GAAkBm1D,GAAwB,cAAepmC,EAAW8Z,aAAgB,GAEjH9Z,EAAWiF,UAAY,oBAAsB,GAC7CjF,EAAWwrC,OAAS,iBAAmB,GAEvCjsB,GAAsC,wBACtC0mB,GAA0B,sBAAuBjmC,EAAW4Z,gBAE5D5Z,EAAWyrC,aAAe,yBAA2BzrC,EAAWyrC,aAAe,GAE/E,MAECniN,OAAQg9M,IAAkBzhN,KAAM,OAMnCuxL,EAAe4wB,GADf5wB,EAAemwB,GADfnwB,EAAegxB,GAAiBhxB,GACepW,GACQA,GAIvDqW,EAAiB2wB,GADjB3wB,EAAiBkwB,GADjBlwB,EAAiB+wB,GAAiB/wB,GACiBrW,GACQA,GAE3DoW,EAAeqxB,GAAarxB,GAC5BC,EAAiBoxB,GAAapxB,GAEzBrW,EAAWie,WAA+C,IAAnCje,EAAWmqC,sBAItCD,EAAgB,oBAEhBjC,EAAe,CACd,oCACA,uBACA,sBACA,6BACCpjN,KAAM,MAAS,KAAOojN,EAExBC,EAAiB,CAChB,qBACEloC,EAAW+W,cAAgBn+B,GAAU,GAAK,oDAC1ConB,EAAW+W,cAAgBn+B,GAAU,GAAK,oCAC5C,uCACA,4BACA,8BACA,oCACA,qCACA,6CACA,uCACA,uCACA,+CACA,0CACC/zJ,KAAM,MAAS,KAAOqjN,GAIzB,IAqGIwD,EAgBA1b,EApHE2b,EAAezB,EAAgBhC,EAAiB7xB,EAKhDu1B,EAAiB1G,GAAa9wJ,EAAI,MANrB81J,EAAgBjC,EAAe7xB,GAO5Cy1B,EAAmB3G,GAAa9wJ,EAAI,MAAOu3J,GAqBjD,GAnBAv3J,EAAG03J,aAAchd,EAAS8c,GAC1Bx3J,EAAG03J,aAAchd,EAAS+c,QAIcj6M,IAAnCouK,EAAW6W,oBAEfziI,EAAG23J,mBAAoBjd,EAAS,EAAG9uB,EAAW6W,sBAEP,IAA5B7W,EAAWiT,cAGtB7+H,EAAG23J,mBAAoBjd,EAAS,EAAG,YAIpC16I,EAAG43J,YAAald,GAGXxV,EAASv9K,MAAMkwM,kBAAoB,CAEvC,IAAMC,EAAa93J,EAAG+3J,kBAAmBrd,GAAUz4K,OAC7C+1L,EAAYh4J,EAAGwxJ,iBAAkBgG,GAAiBv1L,OAClDg2L,EAAcj4J,EAAGwxJ,iBAAkBiG,GAAmBx1L,OAExDi2L,GAAW,EACXC,GAAkB,EAEtB,IAAkD,IAA7Cn4J,EAAG2wJ,oBAAqBjW,EAAS,OAAoB,CAEzDwd,GAAW,EAEX,IAAME,EAAe9G,GAAiBtxJ,EAAIw3J,EAAgB,UACpDa,EAAiB/G,GAAiBtxJ,EAAIy3J,EAAkB,YAE9DtwM,QAAQwN,MACP,oCAAsCqrC,EAAGs4J,WAAzC,sBACqBt4J,EAAG2wJ,oBAAqBjW,EAAS,OADtD,yBAEuBod,EAAa,KACpCM,EAAe,KACfC,EAGF,KAA2B,KAAfP,EAEX3wM,QAAQk/C,KAAM,wCAAyCyxJ,GAE9B,KAAdE,GAAoC,KAAhBC,IAE/BE,GAAkB,GAIdA,IAEJ/kN,KAAKmlN,YAAc,CAElBL,SAAUA,EAEVJ,WAAYA,EAEZ91B,aAAc,CAEb56K,IAAK4wM,EACL94M,OAAQ20M,GAIT5xB,eAAgB,CAEf76K,IAAK6wM,EACL/4M,OAAQ40M,IAQZ,CAgEA,OAxDA9zJ,EAAGw4J,aAAchB,GACjBx3J,EAAGw4J,aAAcf,GAMjBrkN,KAAK02M,YAAc,WAQlB,YANwBtsM,IAAnB85M,IAEJA,EAAiB,IAAI5G,GAAe1wJ,EAAI06I,IAIlC4c,CAER,EAMAlkN,KAAKmyE,cAAgB,WAQpB,YAN0B/nE,IAArBo+L,IAEJA,EAvtBH,SAAkC57I,EAAI06I,GAMrC,IAJA,IAAMp1H,EAAa,CAAC,EAEdnrE,EAAI6lD,EAAG2wJ,oBAAqBjW,EAAS,OAEjC5qM,EAAI,EAAGA,EAAIqK,EAAGrK,IAAO,CAE9B,IAAM2xF,EAAOzhC,EAAGy4J,gBAAiB/d,EAAS5qM,GACpCvD,EAAOk1F,EAAKl1F,KAEdgwM,EAAe,EACA,QAAd96G,EAAKzpF,OAAiBukM,EAAe,GACvB,QAAd96G,EAAKzpF,OAAiBukM,EAAe,GACvB,QAAd96G,EAAKzpF,OAAiBukM,EAAe,GAI1Cj3H,EAAY/4E,GAAS,CACpByL,KAAMypF,EAAKzpF,KACXmR,SAAU62C,EAAG04J,kBAAmBhe,EAASnuM,GACzCgwM,aAAcA,EAGhB,CAEA,OAAOj3H,CAER,CA2rBsBqzI,CAAyB34J,EAAI06I,IAI1CkB,CAER,EAIAxoM,KAAK28C,QAAU,WAEd6pJ,EAAcsD,uBAAwB9pM,MAEtC4sD,EAAG44J,cAAele,GAClBtnM,KAAKsnM,aAAUl9L,CAEhB,EAIApK,KAAK7G,KAAOq/K,EAAWoqC,WACvB5iN,KAAKo/B,GAAK6+K,KACVj+M,KAAKwgN,SAAWA,EAChBxgN,KAAKylN,UAAY,EACjBzlN,KAAKsnM,QAAUA,EACftnM,KAAK4uL,aAAew1B,EACpBpkN,KAAK6uL,eAAiBw1B,EAEfrkN,IAER,CAEA,IAAI0lN,GAAM,EAEJC,GAAgB,WAErB,SAAAA,IAAcl7M,EAAA,KAAAk7M,GAEb3lN,KAAK4lN,YAAc,IAAIzoL,IACvBn9B,KAAK6lN,cAAgB,IAAI1oL,GAE1B,CA8FC,OA9FA5zB,EAAAo8M,EAAA,EAAAnjN,IAAA,SAAA/D,MAED,SAAQo6K,GAEP,IAAM+V,EAAe/V,EAAS+V,aACxBC,EAAiBhW,EAASgW,eAE1Bi3B,EAAoB9lN,KAAK+lN,gBAAiBn3B,GAC1Co3B,EAAsBhmN,KAAK+lN,gBAAiBl3B,GAE5Co3B,EAAkBjmN,KAAKkmN,2BAA4BrtC,GAgBzD,OAdkD,IAA7CotC,EAAgB73K,IAAK03K,KAEzBG,EAAgB75L,IAAK05L,GACrBA,EAAkBL,cAIiC,IAA/CQ,EAAgB73K,IAAK43K,KAEzBC,EAAgB75L,IAAK45L,GACrBA,EAAoBP,aAIdzlN,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQo6K,GAEP,IAE0Cp0G,EAFiBC,EAAAoG,EAAnC9qE,KAAK6lN,cAAc91L,IAAK8oJ,IAEN,IAA1C,IAAAn0G,EAAAjpE,MAAAgpE,EAAAC,EAAA39D,KAAAkb,MAA6C,KAAjCkkM,EAAW1hJ,EAAAhmE,MAEtB0nN,EAAYV,YAEmB,IAA1BU,EAAYV,WAAkBzlN,KAAK4lN,YAAYpoL,OAAQ2oL,EAAYlhL,KAEzE,CAAC,OAAApsB,GAAA6rD,EAAAp+D,EAAAuS,EAAA,SAAA6rD,EAAAj+D,GAAA,CAID,OAFAzG,KAAK6lN,cAAcroL,OAAQq7I,GAEpB74K,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBo6K,GAElB,OAAO74K,KAAK+lN,gBAAiBltC,EAAS+V,cAAexvJ,EAEtD,GAAC,CAAA58B,IAAA,sBAAA/D,MAED,SAAqBo6K,GAEpB,OAAO74K,KAAK+lN,gBAAiBltC,EAASgW,gBAAiBzvJ,EAExD,GAAC,CAAA58B,IAAA,UAAA/D,MAED,WAECuB,KAAK4lN,YAAYzlN,QACjBH,KAAK6lN,cAAc1lN,OAEpB,GAAC,CAAAqC,IAAA,6BAAA/D,MAED,SAA4Bo6K,GAE3B,IAAMzvK,EAAQpJ,KAAK6lN,cAQnB,OAN+B,IAA1Bz8M,EAAMglC,IAAKyqI,IAEfzvK,EAAM6lB,IAAK4pJ,EAAU,IAAI7sJ,KAInB5iB,EAAM2mB,IAAK8oJ,EAEnB,GAAC,CAAAr2K,IAAA,kBAAA/D,MAED,SAAiBwmC,GAEhB,IAAM77B,EAAQpJ,KAAK4lN,YAEnB,IAA2B,IAAtBx8M,EAAMglC,IAAKnJ,GAAmB,CAElC,IAAMmhL,EAAQ,IAAIC,GAAkBphL,GACpC77B,EAAM6lB,IAAKgW,EAAMmhL,EAElB,CAEA,OAAOh9M,EAAM2mB,IAAKkV,EAEnB,KAAC0gL,CAAA,CArGoB,GAyGhBU,GAAgB98M,GAErB,SAAA88M,EAAaphL,GAAOx6B,EAAA,KAAA47M,GAEnBrmN,KAAKo/B,GAAKsmL,KAEV1lN,KAAKilC,KAAOA,EACZjlC,KAAKylN,UAAY,CAElB,IAID,SAASa,GAAex0B,EAAU2S,EAAU8hB,EAAYj6H,EAAYkqG,EAAcgQ,EAAezX,GAEhG,IAAMy3B,EAAiB,IAAI/xC,GACrBgyC,EAAiB,IAAId,GACrB1Q,EAAW,GAEXxe,EAAWD,EAAaC,SACxBkU,EAAyBnU,EAAamU,uBACtCa,EAAsBhV,EAAagV,oBACnCP,EAAoBzU,EAAayU,kBACjCG,EAAiB5U,EAAa4U,eAChCpuM,EAAYw5L,EAAax5L,UAEvB0pN,EAAY,CACjBC,kBAAmB,QACnBC,qBAAsB,eACtBC,mBAAoB,SACpB7kC,kBAAmB,QACnB8kC,oBAAqB,UACrBC,kBAAmB,QACnBC,iBAAkB,OAClBC,qBAAsB,WACtBC,qBAAsB,WACtBC,mBAAoB,SACpBC,kBAAmB,QACnBC,mBAAoB,SACpBC,eAAgB,SAChBC,eAAgB,SAChBC,eAAgB,UAugBjB,MAAO,CACNC,cAjeD,SAAwB5uC,EAAUiW,EAAQ44B,EAAS31B,EAAO5vL,GAEzD,IAAMw5K,EAAMoW,EAAMpW,IACZ7Q,EAAW3oK,EAAO2oK,SAClBsN,EAAcS,EAAS8uC,uBAAyB51B,EAAM3Z,YAAc,KAEpEmI,GAAW1H,EAAS8uC,uBAAyBpB,EAAa9hB,GAAW10K,IAAK8oJ,EAAS0H,QAAUnI,GAC7FmpC,EAA0BhhC,GAAcA,EAAOj8B,UAAY8F,GAA4Bm2B,EAAOpnC,MAAM/qI,OAAS,KAE7G2zM,EAAW2E,EAAW7tC,EAASj0K,MAK/Bo+M,EAAW7gN,EAAOs2K,cAlDzB,SAAsBt2K,GAErB,IACMylN,EADWzlN,EAAOy2K,SACDgvC,MAEvB,GAAKpc,EAEJ,OAAO,KAWP,IAAMqc,EAAkB5c,EAClB6c,EAAkB7qN,KAAKwf,OAASorM,EAAkB,IAAO,GAEzD7E,EAAW/lN,KAAKiuC,IAAK48K,EAAiBF,EAAMhwN,QAElD,OAAKorN,EAAW4E,EAAMhwN,QAErBmc,QAAQk/C,KAAM,qCAAuC20J,EAAMhwN,OAAS,6BAA+BorN,EAAW,KACvG,GAIDA,CAIT,CAgByC+E,CAAa5lN,GAAW,EAEpC,OAAvB02K,EAAS77K,YAEbA,EAAYw5L,EAAa8T,gBAAiBzxB,EAAS77K,cAEhC67K,EAAS77K,WAE3B+W,QAAQk/C,KAAM,oCAAqC4lH,EAAS77K,UAAW,uBAAwBA,EAAW,YAQ5G,IAWI4xL,EAAcC,EACdm5B,EAAsBC,EAZpBhhC,EAAiBnc,EAASgb,gBAAgBvmH,UAAYurG,EAASgb,gBAAgB/c,QAAU+B,EAASgb,gBAAgBt+I,MAClHouK,OAAyCxrM,IAAnB68K,EAAiCA,EAAervL,OAAS,EAEjF8rN,EAAqB,EAWzB,QAT2Ct5M,IAAtC0gK,EAASgb,gBAAgBvmH,WAAyBmkJ,EAAqB,QACnCt5M,IAApC0gK,EAASgb,gBAAgB/c,SAAuB26C,EAAqB,QAClCt5M,IAAnC0gK,EAASgb,gBAAgBt+I,QAAsBk8K,EAAqB,GAOpE3B,EAAW,CAEf,IAAM5uB,EAASsQ,GAAWse,GAE1BnzB,EAAeuE,EAAOvE,aACtBC,EAAiBsE,EAAOtE,cAEzB,MAECD,EAAe/V,EAAS+V,aACxBC,EAAiBhW,EAASgW,eAE1B43B,EAAenjD,OAAQuV,GAEvBmvC,EAAuBvB,EAAeyB,kBAAmBrvC,GACzDovC,EAAyBxB,EAAe0B,oBAAqBtvC,GAI9D,IAAMoZ,EAAsBH,EAASI,kBAE/Bk2B,EAAevvC,EAAS0I,UAAY,EACpC8mC,EAAexvC,EAASgG,UAAY,EA0I1C,MAxImB,CAElB4X,SAAUA,EAEVsrB,SAAUA,EACVa,WAAY/pC,EAASj0K,KAErBgqL,aAAcA,EACdC,eAAgBA,EAChBF,QAAS9V,EAAS8V,QAElBq5B,qBAAsBA,EACtBC,uBAAwBA,EAExBtF,qBAAsD,IAAjC9pC,EAAS8pC,oBAC9BpzB,YAAa1W,EAAS0W,YAEtBvyL,UAAWA,EAEX6lN,YAAuC,IAA3B1gN,EAAO61K,gBACnB8qC,iBAA4C,IAA3B3gN,EAAO61K,iBAAqD,OAAzB71K,EAAO+1K,cAE3D6qC,uBAAwB3X,EACxBhZ,eAA0C,OAAxBH,EAAiCH,EAASM,gBAA4D,IAAzCH,EAAoBq2B,iBAA4Br2B,EAAoB5wB,QAAQ5C,SAAWxP,GACtK1yJ,MAAQs8K,EAASt8K,IACjB4iL,SAAWtG,EAASsG,OACpBoB,SAAWA,EACXwgC,WAAYxgC,GAAUA,EAAOj8B,QAC7Bi9D,mBAAoBA,EACpBliC,WAAaxG,EAASwG,SACtBE,QAAU1G,EAAS0G,MACnBY,cAAgBtH,EAASsH,YACzBV,UAAY5G,EAAS4G,QACrBE,YAAc9G,EAAS8G,UACvBwjC,qBAAsBtqC,EAAS+G,gBAAkBtwB,GACjDwyD,sBAAuBjpC,EAAS+G,gBAAkBvwB,GAElDy0D,qBAAuBjrC,EAASt8K,MAAyC,IAAhCs8K,EAASt8K,IAAIgsN,gBAA+B1vC,EAASt8K,IAAIkiK,WAAavP,GAE/G2vB,UAAWwpC,EACXtpC,aAAcspC,KAAmBxvC,EAASkG,aAC1CC,sBAAuBqpC,KAAmBxvC,EAASmG,sBACnDC,mBAAoBopC,KAAmBxvC,EAASoG,mBAEhDa,kBAAoBjH,EAASiH,gBAC7BG,eAAiBpH,EAASoH,aAC1BC,eAAiBrH,EAASqH,aAC1BE,cAAgBvH,EAASuH,YACzBC,uBAAyBxH,EAASwH,qBAClCC,mBAAqBzH,EAASyH,iBAE9B0jC,QAAiC,IAAzBnrC,EAASkD,aAAyBlD,EAAS+C,WAAan0B,GAEhE23B,WAAavG,EAASuG,SACtBmC,UAAW6mC,EAEXxnC,cAAgB/H,EAAS+H,YAEzBxC,MAAOvF,EAASuF,MAAQ,EACxBovB,gBAAkB30B,EAAS20B,cAC3BC,oBAAsB50B,EAAS40B,kBAE/B5sB,aAAchI,EAASgI,aAAe,EACtCC,kBAAoBjI,EAASiI,gBAC7BE,eAAiBnI,EAASmI,aAE1BR,QAAS3H,EAAS2H,QAElB4iC,iBAAqBvqC,EAAS8G,aAAgB7U,EAAS54F,WAAWm0G,QAClEvK,aAAcjD,EAASiD,aACvBunC,cAAwC,IAA1BxqC,EAASiD,gBAA4BhR,EAAS54F,WAAW1qC,OAAgD,IAAvCsjI,EAAS54F,WAAW1qC,MAAMi7I,SAC1G6gC,YAAczqC,EAASt8K,OAAUs8K,EAAS4G,WAAc5G,EAAS8G,aAAgB9G,EAASuH,eAAkBvH,EAASuG,YAAevG,EAASsH,eAAkBtH,EAASoH,gBAAmBpH,EAASqH,gBAAmBrH,EAASkG,gBAAmBlG,EAASmG,yBAA4BnG,EAASoG,sBAAyBpG,EAASiH,mBAAsBjH,EAASiI,mBAAsBjI,EAASmI,gBAAmBnI,EAASwH,wBAA2BxH,EAASyH,oBAAuBzH,EAAS20B,iBAAoB30B,EAAS40B,kBAC9f8V,gBAAsB1qC,EAASt8K,KAAUs8K,EAAS4G,SAAc5G,EAAS8G,WAAgB9G,EAASuH,aAAkBvH,EAASuG,UAAevG,EAASsH,aAAkBtH,EAASoH,cAAmBpH,EAASqH,cAAmBrH,EAASoG,oBAAsBpG,EAASgI,aAAe,GAAQhI,EAASiI,iBAAsBjI,EAASmI,cAAmBnI,EAASwH,sBAA2BxH,EAASyH,kBAAoBzH,EAASuF,MAAQ,GAAQvF,EAAS20B,eAAoB30B,EAAS40B,sBAA0B50B,EAASiH,gBAE5fnE,MAAQA,EACRsnC,OAAQpqC,EAAS8C,IACjBunC,QAAWvnC,GAAOA,EAAI6sC,UAEtBvqC,cAAgBpF,EAASoF,YAEzBkD,gBAAiBtI,EAASsI,gBAC1BwpB,uBAAwBA,EAExB6Y,UAAmC,IAAzBrhN,EAAOs2K,eAA0BuqC,EAAW,EACtDA,SAAUA,EACVS,iBAAkBjY,EAElB/f,kBAAoDrhL,IAAtC0gK,EAASgb,gBAAgBvmH,SACvCy2I,kBAAkD5rM,IAApC0gK,EAASgb,gBAAgB/c,OACvCktC,iBAAgD7rM,IAAnC0gK,EAASgb,gBAAgBt+I,MACtCouK,kBAAmBA,EACnB8N,mBAAoBA,EAEpB1E,aAAclwB,EAAO25B,YAAY7wN,OACjCunN,eAAgBrwB,EAAOpkB,MAAM9yK,OAC7BqnN,cAAenwB,EAAO45B,KAAK9wN,OAC3BsnN,kBAAmBpwB,EAAO65B,SAAS/wN,OACnCwnN,cAAetwB,EAAO85B,KAAKhxN,OAE3BynN,mBAAoBvwB,EAAOsT,qBAAqBxqM,OAChD2nN,qBAAsBzwB,EAAOmU,eAAerrM,OAC5C0nN,oBAAqBxwB,EAAO6T,cAAc/qM,OAE1C6nN,kBAAmB1wB,EAASkd,UAC5ByT,oBAAqB3wB,EAASmd,gBAE9BzuB,UAAW5E,EAAS4E,UAEpBomC,iBAAkB/xB,EAAS+2B,UAAUh4B,SAAW62B,EAAQ9vN,OAAS,EACjEgpN,cAAe9uB,EAAS+2B,UAAUjkN,KAElC0tL,YAAazZ,EAAS+E,WAAakU,EAASQ,YAAc7oC,GAC1Ds6D,wBAAyBjyB,EAASiyB,wBAElCpmC,mBAAoB9E,EAAS8E,mBAE7BgmC,YAAa9qC,EAASgD,OAASx0B,GAC/Bu8D,UAAW/qC,EAASgD,OAASz0B,GAE7B68D,kBAA0C75M,IAA1ByuK,EAASorC,cAA+BprC,EAASorC,aAEjE50B,oBAAqBxW,EAASwW,oBAE9BwyB,qBAAsBhpC,EAASvsF,YAAcusF,EAASvsF,WAAW0iG,YACjEgzB,mBAAoBnpC,EAASvsF,YAAcusF,EAASvsF,WAAW2iG,UAC/DizB,qBAAsBrpC,EAASvsF,YAAcusF,EAASvsF,WAAW4iG,YACjEkzB,0BAA2BvpC,EAASvsF,YAAcusF,EAASvsF,WAAW6iG,iBAEtE8yB,2BAA4BxrB,GAAYnqG,EAAWl+C,IAAK,kBACxD+zK,6BAA8B1rB,GAAYnqG,EAAWl+C,IAAK,sBAC1Di0K,kCAAmC5rB,GAAYnqG,EAAWl+C,IAAK,0BAE/D06K,sBAAuBjwC,EAASiwC,wBAMlC,EAoRCC,mBAlRD,SAA6BvwC,GAE5B,IAAMz1K,EAAQ,GAad,GAXKy1K,EAAWupC,SAEfh/M,EAAMjG,KAAM07K,EAAWupC,WAIvBh/M,EAAMjG,KAAM07K,EAAWwvC,sBACvBjlN,EAAMjG,KAAM07K,EAAWyvC,8BAII79M,IAAvBouK,EAAWmW,QAEf,IAAM,IAAMx1L,KAAQq/K,EAAWmW,QAE9B5rL,EAAMjG,KAAM3D,GACZ4J,EAAMjG,KAAM07K,EAAWmW,QAASx1L,IAgBlC,OAVwC,IAAnCq/K,EAAWmqC,uBAcjB,SAAuC5/M,EAAOy1K,GAE7Cz1K,EAAMjG,KAAM07K,EAAWx7K,WACvB+F,EAAMjG,KAAM07K,EAAW4Z,gBACvBrvL,EAAMjG,KAAM07K,EAAWuoC,YACvBh+M,EAAMjG,KAAM07K,EAAW+oC,oBACvBx+M,EAAMjG,KAAM07K,EAAWgI,SACvBz9K,EAAMjG,KAAM07K,EAAW8qC,WACvBvgN,EAAMjG,KAAM07K,EAAW0qC,SACvBngN,EAAMjG,KAAM07K,EAAW2I,iBACvBp+K,EAAMjG,KAAM07K,EAAWwqC,UACvBjgN,EAAMjG,KAAM07K,EAAWo9B,mBACvB7yM,EAAMjG,KAAM07K,EAAWwwC,qBACvBjmN,EAAMjG,KAAM07K,EAAWwmC,cACvBj8M,EAAMjG,KAAM07K,EAAW2mC,gBACvBp8M,EAAMjG,KAAM07K,EAAWymC,eACvBl8M,EAAMjG,KAAM07K,EAAW4mC,eACvBr8M,EAAMjG,KAAM07K,EAAW0mC,mBACvBn8M,EAAMjG,KAAM07K,EAAW6mC,oBACvBt8M,EAAMjG,KAAM07K,EAAW+mC,sBACvBx8M,EAAMjG,KAAM07K,EAAW8mC,qBACvBv8M,EAAMjG,KAAM07K,EAAWooC,eACvB79M,EAAMjG,KAAM07K,EAAW8Z,aACvBvvL,EAAMjG,KAAM07K,EAAWinC,mBACvB18M,EAAMjG,KAAM07K,EAAWknC,oBAExB,CAtCEuJ,CAA8BlmN,EAAOy1K,GAwCvC,SAAqCz1K,EAAOy1K,GAE3CguC,EAAe7vM,aAEV6hK,EAAWie,UACf+vB,EAAe0C,OAAQ,GACnB1wC,EAAWuqC,wBACfyD,EAAe0C,OAAQ,GACnB1wC,EAAWqqC,YACf2D,EAAe0C,OAAQ,GACnB1wC,EAAWsqC,iBACf0D,EAAe0C,OAAQ,GACnB1wC,EAAWj8K,KACfiqN,EAAe0C,OAAQ,GACnB1wC,EAAW2G,QACfqnC,EAAe0C,OAAQ,GACnB1wC,EAAW+H,QACfimC,EAAe0C,OAAQ,GACnB1wC,EAAW6G,UACfmnC,EAAe0C,OAAQ,GACnB1wC,EAAW+G,OACfinC,EAAe0C,OAAQ,GACnB1wC,EAAW2H,aACfqmC,EAAe0C,OAAQ,GACnB1wC,EAAWiH,SACf+mC,EAAe0C,OAAQ,IACnB1wC,EAAWmH,WACf6mC,EAAe0C,OAAQ,IACnB1wC,EAAW2qC,sBACfqD,EAAe0C,OAAQ,IACnB1wC,EAAWspC,uBACf0E,EAAe0C,OAAQ,IACnB1wC,EAAWqG,WACf2nC,EAAe0C,OAAQ,IACnB1wC,EAAWuG,cACfynC,EAAe0C,OAAQ,IACnB1wC,EAAWwG,uBACfwnC,EAAe0C,OAAQ,IACnB1wC,EAAWyG,oBACfunC,EAAe0C,OAAQ,IACnB1wC,EAAWsH,iBACf0mC,EAAe0C,OAAQ,IACnB1wC,EAAW4H,aACfomC,EAAe0C,OAAQ,IACnB1wC,EAAWyH,cACfumC,EAAe0C,OAAQ,IACnB1wC,EAAW0H,cACfsmC,EAAe0C,OAAQ,IACnB1wC,EAAWoI,aACf4lC,EAAe0C,OAAQ,IACnB1wC,EAAW4G,UACfonC,EAAe0C,OAAQ,IACnB1wC,EAAW+I,WACfilC,EAAe0C,OAAQ,IACnB1wC,EAAWsD,cACf0qC,EAAe0C,OAAQ,IACnB1wC,EAAW6qC,cACfmD,EAAe0C,OAAQ,IACnB1wC,EAAW8qC,WACfkD,EAAe0C,OAAQ,IACnB1wC,EAAW4qC,gBACfoD,EAAe0C,OAAQ,IACnB1wC,EAAW+qC,eACfiD,EAAe0C,OAAQ,IACnB1wC,EAAWmD,KACf6qC,EAAe0C,OAAQ,IAExBnmN,EAAMjG,KAAM0pN,EAAelsF,MAC3BksF,EAAe7vM,aAEV6hK,EAAWyqC,QACfuD,EAAe0C,OAAQ,GACnB1wC,EAAWyF,aACfuoC,EAAe0C,OAAQ,GACnB1wC,EAAWmyB,wBACf6b,EAAe0C,OAAQ,GACnB1wC,EAAWgrC,UACfgD,EAAe0C,OAAQ,GACnB1wC,EAAWirC,kBACf+C,EAAe0C,OAAQ,GACnB1wC,EAAWiT,cACf+6B,EAAe0C,OAAQ,GACnB1wC,EAAWw9B,cACfwQ,EAAe0C,OAAQ,GACnB1wC,EAAWy9B,aACfuQ,EAAe0C,OAAQ,GACnB1wC,EAAWmF,oBACf6oC,EAAe0C,OAAQ,GACnB1wC,EAAWqrC,kBACf2C,EAAe0C,OAAQ,GACnB1wC,EAAWurC,yBACfyC,EAAe0C,OAAQ,IACnB1wC,EAAWmrC,aACf6C,EAAe0C,OAAQ,IACnB1wC,EAAWorC,WACf4C,EAAe0C,OAAQ,IACnB1wC,EAAWyrC,cACfuC,EAAe0C,OAAQ,IACnB1wC,EAAWiF,WACf+oC,EAAe0C,OAAQ,IACnB1wC,EAAW6H,sBACfmmC,EAAe0C,OAAQ,IACnB1wC,EAAW8H,kBACfkmC,EAAe0C,OAAQ,IACnB1wC,EAAWqI,cACf2lC,EAAe0C,OAAQ,IACnB1wC,EAAWsI,iBACf0lC,EAAe0C,OAAQ,IACnB1wC,EAAWwI,cACfwlC,EAAe0C,OAAQ,IACnB1wC,EAAW4F,OACfooC,EAAe0C,OAAQ,IACnB1wC,EAAWg1B,eACfgZ,EAAe0C,OAAQ,IACnB1wC,EAAWi1B,mBACf+Y,EAAe0C,OAAQ,IACnB1wC,EAAWsrC,oBACf0C,EAAe0C,OAAQ,IACnB1wC,EAAWwrC,QACfwC,EAAe0C,OAAQ,IAExBnmN,EAAMjG,KAAM0pN,EAAelsF,KAE5B,CAlKE6uF,CAA4BpmN,EAAOy1K,GACnCz1K,EAAMjG,KAAMg1L,EAASM,iBAItBrvL,EAAMjG,KAAM07K,EAAWswC,uBAEhB/lN,EAAM1F,MAEd,EA6OCq5M,YAlFD,SAAsB79B,GAErB,IACIuV,EADE2zB,EAAW2E,EAAW7tC,EAASj0K,MAGrC,GAAKm9M,EAAW,CAEf,IAAM5uB,EAASsQ,GAAWse,GAC1B3zB,EAAWE,GAAcptL,MAAOiyL,EAAO/E,SAExC,MAECA,EAAWvV,EAASuV,SAIrB,OAAOA,CAER,EAiECg7B,eA/DD,SAAyB5wC,EAAYgoC,GAKpC,IAHA,IAAIlZ,EAGMtgM,EAAI,EAAGwmD,EAAKynJ,EAASr9M,OAAQoP,EAAIwmD,EAAIxmD,IAAO,CAErD,IAAMqiN,EAAqBpU,EAAUjuM,GAErC,GAAKqiN,EAAmB7I,WAAaA,EAAW,IAE/ClZ,EAAU+hB,GACC5D,UAEX,KAED,CAED,CASA,YAPiBr7M,IAAZk9L,IAEJA,EAAU,IAAIiZ,GAAczuB,EAAU0uB,EAAUhoC,EAAYguB,GAC5DyO,EAASn4M,KAAMwqM,IAITA,CAER,EAmCCgiB,eAjCD,SAAyBhiB,GAExB,GAA8B,MAAtBA,EAAQme,UAAkB,CAGjC,IAAM/oN,EAAIu4M,EAASzoM,QAAS86L,GAC5B2N,EAAUv4M,GAAMu4M,EAAUA,EAASr9M,OAAS,GAC5Cq9M,EAASjkJ,MAGTs2I,EAAQ3qJ,SAET,CAED,EAoBC4sK,mBAlBD,SAA6B1wC,GAE5B4tC,EAAe7lJ,OAAQi4G,EAExB,EAgBCo8B,SAAUA,EACVvzC,QAfD,WAEC+kD,EAAe/kD,SAEhB,EAcD,CAEA,SAAS8nD,KAER,IAAI77M,EAAa,IAAIozC,QAmCrB,MAAO,CACNhxB,IAlCD,SAAc5tB,GAEb,IAAI5F,EAAMoR,EAAWoiB,IAAK5tB,GAS1B,YAPaiI,IAAR7N,IAEJA,EAAM,CAAC,EACPoR,EAAWshB,IAAK9sB,EAAQ5F,IAIlBA,CAER,EAsBCqkE,OApBD,SAAiBz+D,GAEhBwL,EAAW6vB,OAAQr7B,EAEpB,EAiBCmhK,OAfD,SAAiBnhK,EAAQK,EAAK/D,GAE7BkP,EAAWoiB,IAAK5tB,GAAUK,GAAQ/D,CAEnC,EAYCijK,QAVD,WAEC/zJ,EAAa,IAAIozC,OAElB,EASD,CAEA,SAAS0oK,GAAmBztN,EAAGuK,GAE9B,OAAKvK,EAAE0tN,aAAenjN,EAAEmjN,WAEhB1tN,EAAE0tN,WAAanjN,EAAEmjN,WAEb1tN,EAAEm6K,cAAgB5vK,EAAE4vK,YAExBn6K,EAAEm6K,YAAc5vK,EAAE4vK,YAEdn6K,EAAE68K,SAASz5I,KAAO74B,EAAEsyK,SAASz5I,GAEjCpjC,EAAE68K,SAASz5I,GAAK74B,EAAEsyK,SAASz5I,GAEvBpjC,EAAEsL,IAAMf,EAAEe,EAEdtL,EAAEsL,EAAIf,EAAEe,EAIRtL,EAAEojC,GAAK74B,EAAE64B,EAIlB,CAEA,SAASuqL,GAA0B3tN,EAAGuK,GAErC,OAAKvK,EAAE0tN,aAAenjN,EAAEmjN,WAEhB1tN,EAAE0tN,WAAanjN,EAAEmjN,WAEb1tN,EAAEm6K,cAAgB5vK,EAAE4vK,YAExBn6K,EAAEm6K,YAAc5vK,EAAE4vK,YAEdn6K,EAAEsL,IAAMf,EAAEe,EAEdf,EAAEe,EAAItL,EAAEsL,EAIRtL,EAAEojC,GAAK74B,EAAE64B,EAIlB,CAGA,SAASwqL,KAER,IAAMC,EAAc,GAChBC,EAAmB,EAEjB9F,EAAS,GACT+F,EAAe,GACfhuC,EAAc,GAYpB,SAASiuC,EAAmB7nN,EAAQ2oK,EAAU+N,EAAU6wC,EAAYpiN,EAAGmgG,GAEtE,IAAIwiH,EAAaJ,EAAaC,GAgC9B,YA9BoB1/M,IAAf6/M,GAEJA,EAAa,CACZ7qL,GAAIj9B,EAAOi9B,GACXj9B,OAAQA,EACR2oK,SAAUA,EACV+N,SAAUA,EACV6wC,WAAYA,EACZvzC,YAAah0K,EAAOg0K,YACpB7uK,EAAGA,EACHmgG,MAAOA,GAGRoiH,EAAaC,GAAqBG,IAIlCA,EAAW7qL,GAAKj9B,EAAOi9B,GACvB6qL,EAAW9nN,OAASA,EACpB8nN,EAAWn/C,SAAWA,EACtBm/C,EAAWpxC,SAAWA,EACtBoxC,EAAWP,WAAaA,EACxBO,EAAW9zC,YAAch0K,EAAOg0K,YAChC8zC,EAAW3iN,EAAIA,EACf2iN,EAAWxiH,MAAQA,GAIpBqiH,IAEOG,CAER,CAsEA,MAAO,CAENjG,OAAQA,EACR+F,aAAcA,EACdhuC,YAAaA,EAEbxnD,KA1HD,WAECu1F,EAAmB,EAEnB9F,EAAOpsN,OAAS,EAChBmyN,EAAanyN,OAAS,EACtBmkL,EAAYnkL,OAAS,CAEtB,EAmHCkF,KA3ED,SAAeqF,EAAQ2oK,EAAU+N,EAAU6wC,EAAYpiN,EAAGmgG,GAEzD,IAAMwiH,EAAaD,EAAmB7nN,EAAQ2oK,EAAU+N,EAAU6wC,EAAYpiN,EAAGmgG,GAE5EoxE,EAASgI,aAAe,EAE5BkpC,EAAajtN,KAAMmtN,IAEiB,IAAzBpxC,EAASkD,YAEpBA,EAAYj/K,KAAMmtN,GAIlBjG,EAAOlnN,KAAMmtN,EAIf,EA0DCl6M,QAxDD,SAAkB5N,EAAQ2oK,EAAU+N,EAAU6wC,EAAYpiN,EAAGmgG,GAE5D,IAAMwiH,EAAaD,EAAmB7nN,EAAQ2oK,EAAU+N,EAAU6wC,EAAYpiN,EAAGmgG,GAE5EoxE,EAASgI,aAAe,EAE5BkpC,EAAah6M,QAASk6M,IAEc,IAAzBpxC,EAASkD,YAEpBA,EAAYhsK,QAASk6M,GAIrBjG,EAAOj0M,QAASk6M,EAIlB,EAuCC92H,OA7BD,WAIC,IAAM,IAAIz2F,EAAIotN,EAAkBh9J,EAAK+8J,EAAYjyN,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvE,IAAMutN,EAAaJ,EAAantN,GAEhC,GAAuB,OAAlButN,EAAW7qL,GAAc,MAE9B6qL,EAAW7qL,GAAK,KAChB6qL,EAAW9nN,OAAS,KACpB8nN,EAAWn/C,SAAW,KACtBm/C,EAAWpxC,SAAW,KACtBoxC,EAAWxiH,MAAQ,IAEpB,CAED,EAaCjO,KAvCD,SAAe0wH,EAAkBC,GAE3BnG,EAAOpsN,OAAS,GAAIosN,EAAOxqH,KAAM0wH,GAAoBT,IACrDM,EAAanyN,OAAS,GAAImyN,EAAavwH,KAAM2wH,GAAyBR,IACtE5tC,EAAYnkL,OAAS,GAAImkL,EAAYviF,KAAM2wH,GAAyBR,GAE1E,EAoCD,CAEA,SAASS,KAER,IAAIC,EAAQ,IAAItpK,QAoChB,MAAO,CACNhxB,IAnCD,SAAcgiK,EAAOu4B,GAEpB,IAAI95M,EAsBJ,OApB4B,IAAvB65M,EAAMj8K,IAAK2jJ,IAEfvhL,EAAO,IAAIo5M,GACXS,EAAMp7L,IAAK8iK,EAAO,CAAEvhL,KAIf85M,GAAmBD,EAAMt6L,IAAKgiK,GAAQn6L,QAE1C4Y,EAAO,IAAIo5M,GACXS,EAAMt6L,IAAKgiK,GAAQj1L,KAAM0T,IAIzBA,EAAO65M,EAAMt6L,IAAKgiK,GAASu4B,GAMtB95M,CAER,EAUCkxJ,QARD,WAEC2oD,EAAQ,IAAItpK,OAEb,EAOD,CAEA,SAASwpK,KAER,IAAMz7B,EAAS,CAAC,EAEhB,MAAO,CAEN/+J,IAAK,SAAWmhD,GAEf,QAA4B9mE,IAAvB0kL,EAAQ59G,EAAM9xC,IAElB,OAAO0vJ,EAAQ59G,EAAM9xC,IAItB,IAAIgvJ,EAEJ,OAASl9G,EAAMtsE,MAEd,IAAK,mBACJwpL,EAAW,CACV/f,UAAW,IAAIvH,GACft/H,MAAO,IAAI+zH,IAEZ,MAED,IAAK,YACJ6yB,EAAW,CACV7uH,SAAU,IAAIunG,GACduH,UAAW,IAAIvH,GACft/H,MAAO,IAAI+zH,GACXmb,SAAU,EACV6rB,QAAS,EACTC,YAAa,EACbC,MAAO,GAER,MAED,IAAK,aACJrU,EAAW,CACV7uH,SAAU,IAAIunG,GACdt/H,MAAO,IAAI+zH,GACXmb,SAAU,EACV+rB,MAAO,GAER,MAED,IAAK,kBACJrU,EAAW,CACV/f,UAAW,IAAIvH,GACfs8B,SAAU,IAAI7nC,GACd8nC,YAAa,IAAI9nC,IAElB,MAED,IAAK,gBACJ6yB,EAAW,CACV5mJ,MAAO,IAAI+zH,GACXh8F,SAAU,IAAIunG,GACd0jD,UAAW,IAAI1jD,GACf2jD,WAAY,IAAI3jD,IAQnB,OAFAgoB,EAAQ59G,EAAM9xC,IAAOgvJ,EAEdA,CAER,EAIF,CAiEA,IAAIs8B,GAAc,EAElB,SAASC,GAA0BC,EAAQC,GAE1C,OAASA,EAAO70C,WAAa,EAAI,IAAQ40C,EAAO50C,WAAa,EAAI,EAElE,CAEA,SAAS80C,GAAax+H,EAAYkqG,GA2CjC,IAzCA,IAAMptL,EAAQ,IAAImhN,GAEZQ,EA3EP,WAEC,IAAMj8B,EAAS,CAAC,EAEhB,MAAO,CAEN/+J,IAAK,SAAWmhD,GAEf,QAA4B9mE,IAAvB0kL,EAAQ59G,EAAM9xC,IAElB,OAAO0vJ,EAAQ59G,EAAM9xC,IAItB,IAAIgvJ,EAEJ,OAASl9G,EAAMtsE,MAEd,IAAK,mBASL,IAAK,YACJwpL,EAAW,CACV4T,WAAY,EACZC,iBAAkB,EAClBC,aAAc,EACdC,cAAe,IAAIhtC,IAEpB,MAED,IAAK,aACJi5B,EAAW,CACV4T,WAAY,EACZC,iBAAkB,EAClBC,aAAc,EACdC,cAAe,IAAIhtC,GACnB4tC,iBAAkB,EAClBC,gBAAiB,KAUpB,OAFAlU,EAAQ59G,EAAM9xC,IAAOgvJ,EAEdA,CAER,EAIF,CAgBqB48B,GAEdprM,EAAQ,CAEbvmB,QAAS,EAETy9F,KAAM,CACLm0H,mBAAqB,EACrBC,aAAe,EACfC,YAAc,EACdC,gBAAkB,EAClBC,YAAc,EAEdC,uBAAyB,EACzBC,iBAAmB,EACnBC,gBAAkB,GAGnBC,QAAS,CAAE,EAAG,EAAG,GACjBC,MAAO,GACPjD,YAAa,GACbkD,kBAAmB,GACnBvpB,qBAAsB,GACtBC,wBAAyB,GACzBqmB,KAAM,GACNkD,WAAY,GACZjpB,cAAe,GACfC,iBAAkB,GAClB+lB,SAAU,GACVkD,aAAc,KACdC,aAAc,KACdphD,MAAO,GACPqhD,YAAa,GACb9oB,eAAgB,GAChBC,kBAAmB,GACnB0lB,KAAM,IAIGlsN,EAAI,EAAGA,EAAI,EAAGA,IAAOkjB,EAAM8rM,MAAM5uN,KAAM,IAAIgqK,IAErD,IAAMklD,EAAU,IAAIllD,GACd/N,EAAU,IAAI4X,GACds7C,EAAW,IAAIt7C,GAsVrB,MAAO,CACNs3B,MArVD,SAAgBnZ,EAAQi1B,GAIvB,IAFA,IAAI78M,EAAI,EAAGR,EAAI,EAAGH,EAAI,EAEZ7J,EAAI,EAAGA,EAAI,EAAGA,IAAOkjB,EAAM8rM,MAAOhvN,GAAIuyB,IAAK,EAAG,EAAG,GAE3D,IAAIg8L,EAAoB,EACpBC,EAAc,EACdC,EAAa,EACbC,EAAiB,EACjBC,EAAa,EAEbC,EAAwB,EACxBC,EAAkB,EAClBC,EAAiB,EAErB18B,EAAOt1F,KAAMmxH,IAKb,IAFA,IAAMuB,GAA4C,IAA5BnI,EAAqC9mN,KAAK00J,GAAK,EAE3Dj1J,EAAI,EAAGmK,EAAIioL,EAAOl3L,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAMw0E,EAAQ49G,EAAQpyL,GAEhB8qC,EAAQ0pC,EAAM1pC,MACd2kL,EAAYj7I,EAAMi7I,UAClBz1C,EAAWxlG,EAAMwlG,SAEjBmyC,EAAc33I,EAAMuyE,QAAUvyE,EAAMuyE,OAAOlnJ,IAAQ20E,EAAMuyE,OAAOlnJ,IAAI8kK,QAAU,KAEpF,GAAKnwF,EAAMk7I,eAEVllN,GAAKsgC,EAAMtgC,EAAIilN,EAAYD,EAC3BxlN,GAAK8gC,EAAM9gC,EAAIylN,EAAYD,EAC3B3lN,GAAKihC,EAAMjhC,EAAI4lN,EAAYD,OAErB,GAAKh7I,EAAMm7I,aAEjB,IAAM,IAAIx8M,EAAI,EAAGA,EAAI,EAAGA,IAEvB+P,EAAM8rM,MAAO77M,GAAI6qK,gBAAiBxpG,EAAMx4B,GAAG4zK,aAAcz8M,GAAKs8M,QAIzD,GAAKj7I,EAAMq7I,mBAAqB,CAEtC,IAAMn+B,EAAWhlL,EAAM2mB,IAAKmhD,GAI5B,GAFAk9G,EAAS5mJ,MAAMk0H,KAAMxqF,EAAM1pC,OAAQ+tH,eAAgBrkF,EAAMi7I,UAAYD,GAEhEh7I,EAAM8kG,WAAa,CAEvB,IAAMvyB,EAASvyE,EAAMuyE,OAEf+oE,EAAiBzB,EAAYh7L,IAAKmhD,GAExCs7I,EAAexqB,WAAav+C,EAAOgpE,KACnCD,EAAevqB,iBAAmBx+C,EAAOipE,WACzCF,EAAetqB,aAAez+C,EAAOylB,OACrCsjD,EAAerqB,cAAgB1+C,EAAOkpE,QAEtC/sM,EAAM+rM,kBAAmBV,GAAsBuB,EAC/C5sM,EAAMwiL,qBAAsB6oB,GAAsBpC,EAClDjpM,EAAMyiL,wBAAyB4oB,GAAsB/5I,EAAMuyE,OAAOiW,OAElE4xD,GAED,CAEA1rM,EAAM6oM,YAAawC,GAAsB78B,EAEzC68B,GAED,MAAO,GAAK/5I,EAAM07I,YAAc,CAE/B,IAAMx+B,EAAWhlL,EAAM2mB,IAAKmhD,GAW5B,GATAk9G,EAAS7uH,SAASq3G,sBAAuB1lG,EAAM+2F,aAE/CmmB,EAAS5mJ,MAAMk0H,KAAMl0H,GAAQ+tH,eAAgB42D,EAAYD,GACzD99B,EAAS1X,SAAWA,EAEpB0X,EAASmU,QAAUtlM,KAAKk3J,IAAKjjF,EAAM0kF,OACnCw4B,EAASoU,YAAcvlM,KAAKk3J,IAAKjjF,EAAM0kF,OAAU,EAAI1kF,EAAM27I,WAC3Dz+B,EAASqU,MAAQvxH,EAAMuxH,MAElBvxH,EAAM8kG,WAAa,CAEvB,IAAMvyB,EAASvyE,EAAMuyE,OAEf+oE,EAAiBzB,EAAYh7L,IAAKmhD,GAExCs7I,EAAexqB,WAAav+C,EAAOgpE,KACnCD,EAAevqB,iBAAmBx+C,EAAOipE,WACzCF,EAAetqB,aAAez+C,EAAOylB,OACrCsjD,EAAerqB,cAAgB1+C,EAAOkpE,QAEtC/sM,EAAMgsM,WAAYT,GAAeqB,EACjC5sM,EAAM+iL,cAAewoB,GAAetC,EACpCjpM,EAAMgjL,iBAAkBuoB,GAAej6I,EAAMuyE,OAAOiW,OAEpD8xD,GAED,CAEA5rM,EAAM8oM,KAAMyC,GAAe/8B,EAE3B+8B,GAED,MAAO,GAAKj6I,EAAM47I,gBAAkB,CAEnC,IAAM1+B,EAAWhlL,EAAM2mB,IAAKmhD,GAM5Bk9G,EAAS5mJ,MAAMk0H,KAAMl0H,GAAQ+tH,eAAgB42D,GAE7C/9B,EAASo8B,UAAUv7L,IAAmB,GAAdiiD,EAAM/iE,MAAa,EAAK,GAChDigL,EAASq8B,WAAWx7L,IAAK,EAAoB,GAAfiiD,EAAM9iE,OAAc,GAElDwR,EAAM+oM,SAAUyC,GAAmBh9B,EAEnCg9B,GAED,MAAO,GAAKl6I,EAAM67I,aAAe,CAEhC,IAAM3+B,EAAWhlL,EAAM2mB,IAAKmhD,GAM5B,GAJAk9G,EAAS5mJ,MAAMk0H,KAAMxqF,EAAM1pC,OAAQ+tH,eAAgBrkF,EAAMi7I,UAAYD,GACrE99B,EAAS1X,SAAWxlG,EAAMwlG,SAC1B0X,EAASqU,MAAQvxH,EAAMuxH,MAElBvxH,EAAM8kG,WAAa,CAEvB,IAAMvyB,EAASvyE,EAAMuyE,OAEf+oE,EAAiBzB,EAAYh7L,IAAKmhD,GAExCs7I,EAAexqB,WAAav+C,EAAOgpE,KACnCD,EAAevqB,iBAAmBx+C,EAAOipE,WACzCF,EAAetqB,aAAez+C,EAAOylB,OACrCsjD,EAAerqB,cAAgB1+C,EAAOkpE,QACtCH,EAAezpB,iBAAmBt/C,EAAOmkB,OAAOiM,KAChD24C,EAAexpB,gBAAkBv/C,EAAOmkB,OAAOkM,IAE/Cl0J,EAAMmsM,YAAab,GAAgBsB,EACnC5sM,EAAMqjL,eAAgBioB,GAAgBrC,EACtCjpM,EAAMsjL,kBAAmBgoB,GAAgBh6I,EAAMuyE,OAAOiW,OAEtD6xD,GAED,CAEA3rM,EAAM8qJ,MAAOwgD,GAAgB98B,EAE7B88B,GAED,MAAO,GAAKh6I,EAAM87I,kBAAoB,CAErC,IAAM5+B,EAAWhlL,EAAM2mB,IAAKmhD,GAE5Bk9G,EAASgV,SAAS1nC,KAAMxqF,EAAM1pC,OAAQ+tH,eAAgB42D,EAAYD,GAClE99B,EAASiV,YAAY3nC,KAAMxqF,EAAMmyH,aAAc9tC,eAAgB42D,EAAYD,GAE3EtsM,EAAMgpM,KAAMyC,GAAej9B,EAE3Bi9B,GAED,CAED,CAEKD,EAAiB,IAEhB50B,EAAaC,WAWqC,IAAjDnqG,EAAWl+C,IAAK,6BAPrBxuB,EAAMisM,aAAetrB,GAAY0sB,YACjCrtM,EAAMksM,aAAevrB,GAAY2sB,cAWiC,IAAtD5gI,EAAWl+C,IAAK,kCAE3BxuB,EAAMisM,aAAetrB,GAAY4sB,WACjCvtM,EAAMksM,aAAevrB,GAAY6sB,YAIjCr5M,QAAQwN,MAAO,gFAQlB3B,EAAM6rM,QAAS,GAAMvkN,EACrB0Y,EAAM6rM,QAAS,GAAM/kN,EACrBkZ,EAAM6rM,QAAS,GAAMllN,EAErB,IAAMuwF,EAAOl3E,EAAMk3E,KAEdA,EAAKm0H,oBAAsBA,GAC/Bn0H,EAAKo0H,cAAgBA,GACrBp0H,EAAKq0H,aAAeA,GACpBr0H,EAAKs0H,iBAAmBA,GACxBt0H,EAAKu0H,aAAeA,GACpBv0H,EAAKw0H,wBAA0BA,GAC/Bx0H,EAAKy0H,kBAAoBA,GACzBz0H,EAAK00H,iBAAmBA,IAExB5rM,EAAM6oM,YAAY7wN,OAASqzN,EAC3BrrM,EAAM8oM,KAAK9wN,OAASuzN,EACpBvrM,EAAM+oM,SAAS/wN,OAASwzN,EACxBxrM,EAAM8qJ,MAAM9yK,OAASszN,EACrBtrM,EAAMgpM,KAAKhxN,OAASyzN,EAEpBzrM,EAAM+rM,kBAAkB/zN,OAAS0zN,EACjC1rM,EAAMwiL,qBAAqBxqM,OAAS0zN,EACpC1rM,EAAMmsM,YAAYn0N,OAAS2zN,EAC3B3rM,EAAMqjL,eAAerrM,OAAS2zN,EAC9B3rM,EAAMgsM,WAAWh0N,OAAS4zN,EAC1B5rM,EAAM+iL,cAAc/qM,OAAS4zN,EAC7B5rM,EAAMyiL,wBAAwBzqM,OAAS0zN,EACvC1rM,EAAMsjL,kBAAkBtrM,OAAS2zN,EACjC3rM,EAAMgjL,iBAAiBhrM,OAAS4zN,EAEhC10H,EAAKm0H,kBAAoBA,EACzBn0H,EAAKo0H,YAAcA,EACnBp0H,EAAKq0H,WAAaA,EAClBr0H,EAAKs0H,eAAiBA,EACtBt0H,EAAKu0H,WAAaA,EAElBv0H,EAAKw0H,sBAAwBA,EAC7Bx0H,EAAKy0H,gBAAkBA,EACvBz0H,EAAK00H,eAAiBA,EAEtB5rM,EAAMvmB,QAAUqxN,KAIlB,EAyFC2C,UAvFD,SAAoBv+B,EAAQlnB,GAU3B,IARA,IAAIqjD,EAAoB,EACpBC,EAAc,EACdC,EAAa,EACbC,EAAiB,EACjBC,EAAa,EAEX7e,EAAa5kC,EAAOE,mBAEhBprK,EAAI,EAAGmK,EAAIioL,EAAOl3L,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAMw0E,EAAQ49G,EAAQpyL,GAEtB,GAAKw0E,EAAMq7I,mBAAqB,CAE/B,IAAMn+B,EAAWxuK,EAAM6oM,YAAawC,GAEpC78B,EAAS/f,UAAUuI,sBAAuB1lG,EAAM+2F,aAChD+jD,EAAQp1C,sBAAuB1lG,EAAM3vE,OAAO0mK,aAC5CmmB,EAAS/f,UAAUvF,IAAKkjD,GACxB59B,EAAS/f,UAAUqC,mBAAoB87B,GAEvCye,GAED,MAAO,GAAK/5I,EAAM07I,YAAc,CAE/B,IAAMx+B,EAAWxuK,EAAM8oM,KAAMyC,GAE7B/8B,EAAS7uH,SAASq3G,sBAAuB1lG,EAAM+2F,aAC/CmmB,EAAS7uH,SAASsoG,aAAc2kC,GAEhCpe,EAAS/f,UAAUuI,sBAAuB1lG,EAAM+2F,aAChD+jD,EAAQp1C,sBAAuB1lG,EAAM3vE,OAAO0mK,aAC5CmmB,EAAS/f,UAAUvF,IAAKkjD,GACxB59B,EAAS/f,UAAUqC,mBAAoB87B,GAEvC2e,GAED,MAAO,GAAKj6I,EAAM47I,gBAAkB,CAEnC,IAAM1+B,EAAWxuK,EAAM+oM,SAAUyC,GAEjCh9B,EAAS7uH,SAASq3G,sBAAuB1lG,EAAM+2F,aAC/CmmB,EAAS7uH,SAASsoG,aAAc2kC,GAGhCyf,EAASqB,WACTv0D,EAAQ2C,KAAMxqF,EAAM+2F,aACpBlP,EAAQud,YAAak2B,GACrByf,EAASj1C,gBAAiBje,GAE1Bq1B,EAASo8B,UAAUv7L,IAAmB,GAAdiiD,EAAM/iE,MAAa,EAAK,GAChDigL,EAASq8B,WAAWx7L,IAAK,EAAoB,GAAfiiD,EAAM9iE,OAAc,GAElDggL,EAASo8B,UAAU3iD,aAAcokD,GACjC79B,EAASq8B,WAAW5iD,aAAcokD,GAElCb,GAED,MAAO,GAAKl6I,EAAM67I,aAAe,CAEhC,IAAM3+B,EAAWxuK,EAAM8qJ,MAAOwgD,GAE9B98B,EAAS7uH,SAASq3G,sBAAuB1lG,EAAM+2F,aAC/CmmB,EAAS7uH,SAASsoG,aAAc2kC,GAEhC0e,GAED,MAAO,GAAKh6I,EAAM87I,kBAAoB,CAErC,IAAM5+B,EAAWxuK,EAAMgpM,KAAMyC,GAE7Bj9B,EAAS/f,UAAUuI,sBAAuB1lG,EAAM+2F,aAChDmmB,EAAS/f,UAAUqC,mBAAoB87B,GACvCpe,EAAS/f,UAAUxtD,YAEnBwqG,GAED,CAED,CAED,EAKCzrM,MAAOA,EAGT,CAEA,SAAS2tM,GAAkBjhI,EAAYkqG,GAEtC,IAAM1H,EAAS,IAAIg8B,GAAax+H,EAAYkqG,GAEtCg3B,EAAc,GACdC,EAAe,GAwCrB,MAAO,CACNl5F,KAvCD,WAECi5F,EAAY51N,OAAS,EACrB61N,EAAa71N,OAAS,CAEvB,EAmCCgoB,MATa,CACb4tM,YAAaA,EACbC,aAAcA,EAEd3+B,OAAQA,GAMR4+B,YAtBD,SAAsB3J,GAErBj1B,EAAOmZ,MAAOulB,EAAazJ,EAE5B,EAmBC4J,gBAjBD,SAA0B/lD,GAEzBknB,EAAOu+B,UAAWG,EAAa5lD,EAEhC,EAeCgmD,UArCD,SAAoB18I,GAEnBs8I,EAAY1wN,KAAMo0E,EAEnB,EAkCC28I,WAhCD,SAAqBC,GAEpBL,EAAa3wN,KAAMgxN,EAEpB,EA+BD,CAEA,SAASC,GAAmBzhI,EAAYkqG,GAEvC,IAAIw3B,EAAe,IAAIjtK,QAoCvB,MAAO,CACNhxB,IAnCD,SAAcgiK,GAA6B,IAEtCk8B,EAFgB3D,EAAerqN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAwBtC,OApBmC,IAA9B+tN,EAAa5/K,IAAK2jJ,IAEtBk8B,EAAc,IAAIV,GAAkBjhI,EAAYkqG,GAChDw3B,EAAa/+L,IAAK8iK,EAAO,CAAEk8B,KAItB3D,GAAmB0D,EAAaj+L,IAAKgiK,GAAQn6L,QAEjDq2N,EAAc,IAAIV,GAAkBjhI,EAAYkqG,GAChDw3B,EAAaj+L,IAAKgiK,GAAQj1L,KAAMmxN,IAIhCA,EAAcD,EAAaj+L,IAAKgiK,GAASu4B,GAMpC2D,CAER,EAUCvsD,QARD,WAECssD,EAAe,IAAIjtK,OAEpB,EAOD,CAAC,IAEK4lK,GAAiB,SAAAuH,GAAAlyM,EAAA2qM,EAAAuH,GAAA,IAAAC,EAAAxzM,EAAAgsM,GAEtB,SAAAA,EAAanuC,GAAa,IAAA41C,EAqBI,OArBJ3jN,EAAA,KAAAk8M,IAEzByH,EAAAD,EAAAtxN,KAAA,OAEK+H,KAAO,oBAEZwpN,EAAKnK,aAAe90D,GAEpBi/D,EAAK7xN,IAAM,KAEX6xN,EAAKhvC,SAAW,KAEhBgvC,EAAKtuC,gBAAkB,KACvBsuC,EAAKruC,kBAAoB,EACzBquC,EAAKpuC,iBAAmB,EAExBouC,EAAK5sC,WAAY,EACjB4sC,EAAK3sC,mBAAqB,EAE1B2sC,EAAKzyC,KAAM,EAEXyyC,EAAKhsC,UAAW5J,GAAa41C,CAE9B,CAqBC,OArBA7kN,EAAAo9M,EAAA,EAAAnkN,IAAA,OAAA/D,MAED,SAAM+C,GAiBL,OAfA0lI,GAAA5rH,EAAAqrM,EAAA/pN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKikN,aAAeziN,EAAOyiN,aAE3BjkN,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAK8/K,gBAAkBt+K,EAAOs+K,gBAC9B9/K,KAAK+/K,kBAAoBv+K,EAAOu+K,kBAChC//K,KAAKggL,iBAAmBx+K,EAAOw+K,iBAE/BhgL,KAAKwhL,UAAYhgL,EAAOggL,UACxBxhL,KAAKyhL,mBAAqBjgL,EAAOigL,mBAE1BzhL,IAER,KAAC2mN,CAAA,CA9CqB,CAASprC,IAkDhCorC,GAAkB/pN,UAAUyxN,qBAAsB,EAAK,IAEjDzH,GAAoB,SAAA0H,GAAAtyM,EAAA4qM,EAAA0H,GAAA,IAAAC,EAAA5zM,EAAAisM,GAEzB,SAAAA,EAAapuC,GAAa,IAAAg2C,EAoBI,OApBJ/jN,EAAA,KAAAm8M,IAEzB4H,EAAAD,EAAA1xN,KAAA,OAEK+H,KAAO,uBAEZ4pN,EAAKnqB,kBAAoB,IAAIv9B,GAC7B0nD,EAAKlqB,aAAe,EACpBkqB,EAAKjqB,YAAc,IAEnBiqB,EAAKjyN,IAAM,KAEXiyN,EAAKpvC,SAAW,KAEhBovC,EAAK1uC,gBAAkB,KACvB0uC,EAAKzuC,kBAAoB,EACzByuC,EAAKxuC,iBAAmB,EAExBwuC,EAAK7yC,KAAM,EAEX6yC,EAAKpsC,UAAW5J,GAAag2C,CAE9B,CAoBC,OApBAjlN,EAAAq9M,EAAA,EAAApkN,IAAA,OAAA/D,MAED,SAAM+C,GAgBL,OAdA0lI,GAAA5rH,EAAAsrM,EAAAhqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKqkM,kBAAkB3oC,KAAMl6J,EAAO6iM,mBACpCrkM,KAAKskM,aAAe9iM,EAAO8iM,aAC3BtkM,KAAKukM,YAAc/iM,EAAO+iM,YAE1BvkM,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAK8/K,gBAAkBt+K,EAAOs+K,gBAC9B9/K,KAAK+/K,kBAAoBv+K,EAAOu+K,kBAChC//K,KAAKggL,iBAAmBx+K,EAAOw+K,iBAExBhgL,IAER,KAAC4mN,CAAA,CA5CwB,CAASrrC,IAgDnCqrC,GAAqBhqN,UAAU6xN,wBAAyB,EAExD,IAAMC,GAAS,2DAETC,GAAW,kmCAEjB,SAASC,GAAgB/f,EAAWggB,EAAUC,GAE7C,IAAIC,EAAW,IAAIx6B,GAEby6B,EAAiB,IAAI75D,GAC1B85D,EAAgB,IAAI95D,GAEpB+5D,EAAY,IAAItvD,GAEhBuvD,EAAiB,IAAIxI,GAAmB,CAAE1C,aAAc70D,KACxDggE,EAAoB,IAAIxI,GAExByI,EAAiB,CAAC,EAElBC,EAAkBR,EAAchkB,eAE3B1tB,EAAa,CAAE,EAAGh2B,GAAU,EAAGD,GAAW,EAAGE,IAE7CkoE,EAAyB,IAAIhhC,GAAgB,CAClDI,QAAS,CACR6gC,YAAa,GAEdphC,SAAU,CACTqhC,YAAa,CAAEhxN,MAAO,MACtBixN,WAAY,CAAEjxN,MAAO,IAAI02J,IACzB+T,OAAQ,CAAEzqK,MAAO,IAGlBmwL,aAAc8/B,GACd7/B,eAAgB8/B,KAIXgB,EAA2BJ,EAAuBruN,QACxDyuN,EAAyBhhC,QAAQihC,gBAAkB,EAEnD,IAAMC,EAAgB,IAAInqC,GAC1BmqC,EAAc/8M,aACb,WACA,IAAI0vK,GACH,IAAI3tB,aAAc,EAAI,GAAK,EAAG,GAAK,GAAK,EAAG,IAAO,EAAG,EAAG,KACxD,IAIF,IAAMi7D,EAAiB,IAAI5kC,GAAM2kC,EAAeN,GAE1CviC,EAAQhtL,KA0Id,SAAS+vN,EAAStsE,EAAQmkB,GAEzB,IAAMkD,EAAW+jD,EAASvrD,OAAQwsD,GAE7BP,EAAuB5gC,QAAQ6gC,cAAgB/rE,EAAOusE,cAE1DT,EAAuB5gC,QAAQ6gC,YAAc/rE,EAAOusE,YACpDL,EAAyBhhC,QAAQ6gC,YAAc/rE,EAAOusE,YAEtDT,EAAuBjwD,aAAc,EACrCqwD,EAAyBrwD,aAAc,GAMxCiwD,EAAuBnhC,SAASqhC,YAAYhxN,MAAQglJ,EAAOlnJ,IAAI8kK,QAC/DkuD,EAAuBnhC,SAASshC,WAAWjxN,MAAQglJ,EAAOkpE,QAC1D4C,EAAuBnhC,SAASllB,OAAOzqK,MAAQglJ,EAAOylB,OACtD2lC,EAAUpc,gBAAiBhvC,EAAOwsE,SAClCphB,EAAU1uM,QACV0uM,EAAUqhB,mBAAoBtoD,EAAQ,KAAMkD,EAAUykD,EAAwBO,EAAgB,MAI9FH,EAAyBvhC,SAASqhC,YAAYhxN,MAAQglJ,EAAOwsE,QAAQ5uD,QACrEsuD,EAAyBvhC,SAASshC,WAAWjxN,MAAQglJ,EAAOkpE,QAC5DgD,EAAyBvhC,SAASllB,OAAOzqK,MAAQglJ,EAAOylB,OACxD2lC,EAAUpc,gBAAiBhvC,EAAOlnJ,KAClCsyM,EAAU1uM,QACV0uM,EAAUqhB,mBAAoBtoD,EAAQ,KAAMkD,EAAU6kD,EAA0BG,EAAgB,KAEjG,CAEA,SAASK,EAAkBhuN,EAAQ02K,EAAU3nG,EAAO6xH,EAAkBC,EAAiBp+L,GAEtF,IAAI9M,EAAS,KAEPs4N,GAA0C,IAAvBl/I,EAAM67I,aAA0B5qN,EAAOkuN,uBAAyBluN,EAAOmuN,oBAYhG,GARCx4N,OAFuBsS,IAAnBgmN,EAEKA,GAIyB,IAAvBl/I,EAAM67I,aAA0BqC,EAAoBD,EAIzDtgB,EAAUjD,uBAAiD,IAAzB/yB,EAASsE,aAA2D,IAAnCtE,EAASoE,eAAerlL,QAC/FihL,EAASiH,iBAAkD,IAA/BjH,EAASkH,mBACrClH,EAASuG,UAAYvG,EAAS0I,UAAY,EAAM,CAKlD,IAAMgvC,EAAOz4N,EAAO+jH,KAAM20G,EAAO33C,EAASh9D,KAEtC40G,EAAsBpB,EAAgBkB,QAEbnmN,IAAxBqmN,IAEJA,EAAsB,CAAC,EACvBpB,EAAgBkB,GAASE,GAI1B,IAAIC,EAAiBD,EAAqBD,QAElBpmN,IAAnBsmN,IAEJA,EAAiB54N,EAAOoJ,QACxBuvN,EAAqBD,GAASE,GAI/B54N,EAAS44N,CAEV,CAqCA,OAnCA54N,EAAO6xE,QAAUkvG,EAASlvG,QAC1B7xE,EAAO0pL,UAAY3I,EAAS2I,UAI3B1pL,EAAO+jL,KAFHj3K,IAASsiJ,GAE2B,OAAxB2xB,EAASuE,WAAwBvE,EAASuE,WAAavE,EAASgD,KAIxC,OAAxBhD,EAASuE,WAAwBvE,EAASuE,WAAaA,EAAYvE,EAASgD,MAI7F/jL,EAAOsnL,SAAWvG,EAASuG,SAC3BtnL,EAAOypL,UAAY1I,EAAS0I,UAE5BzpL,EAAOqlL,YAActE,EAASsE,YAC9BrlL,EAAOmlL,eAAiBpE,EAASoE,eACjCnlL,EAAOolL,iBAAmBrE,EAASqE,iBAEnCplL,EAAOgoL,gBAAkBjH,EAASiH,gBAClChoL,EAAOioL,kBAAoBlH,EAASkH,kBACpCjoL,EAAOkoL,iBAAmBnH,EAASmH,iBAEnCloL,EAAO2pL,mBAAqB5I,EAAS4I,mBACrC3pL,EAAOspL,UAAYvI,EAASuI,WAEA,IAAvBlwG,EAAM67I,eAA2D,IAAlCj1N,EAAO22N,yBAE1C32N,EAAOusM,kBAAkBztB,sBAAuB1lG,EAAM+2F,aACtDnwK,EAAOwsM,aAAevB,EACtBjrM,EAAOysM,YAAcvB,GAIflrM,CAER,CAEA,SAAS64N,EAAcxuN,EAAQylK,EAAQgpD,EAAc1/I,EAAOtsE,GAE3D,IAAwB,IAAnBzC,EAAOwnE,QAAZ,CAIA,GAFgBxnE,EAAOwyK,OAAOz8K,KAAM0vK,EAAO+M,UAEzBxyK,EAAOk2K,QAAUl2K,EAAOm2K,QAAUn2K,EAAOo2K,YAEnDp2K,EAAO6zK,YAAgB7zK,EAAO8zK,eAAiBrxK,IAASsiJ,OAAwB/kJ,EAAO+zK,eAAiB64C,EAAS8B,iBAAkB1uN,IAAa,CAEtJA,EAAOyzK,gBAAgBte,iBAAkBs5D,EAAa9oD,mBAAoB3lK,EAAO8lK,aAEjF,IAAM6C,EAAW+jD,EAASvrD,OAAQnhK,GAC5B02K,EAAW12K,EAAO02K,SAExB,GAAKl8K,MAAM0E,QAASw3K,GAInB,IAFA,IAAMmN,EAASlb,EAASkb,OAEdp/K,EAAI,EAAGqmD,EAAK+4H,EAAOpuL,OAAQgP,EAAIqmD,EAAIrmD,IAAO,CAEnD,IAAM6gG,EAAQu+E,EAAQp/K,GAChBmlL,EAAgBlT,EAAUpxE,EAAM0+E,eAEtC,GAAK4F,GAAiBA,EAAcpiH,QAAU,CAE7C,IAAMmnJ,EAAgBX,EAAkBhuN,EAAQ4pL,EAAe76G,EAAO0/I,EAAa/8C,KAAM+8C,EAAa98C,IAAKlvK,GAE3GiqM,EAAUqhB,mBAAoBU,EAAc,KAAM9lD,EAAUgmD,EAAe3uN,EAAQslG,EAEpF,CAED,MAEM,GAAKoxE,EAASlvG,QAAU,CAE9B,IAAMmnJ,EAAgBX,EAAkBhuN,EAAQ02K,EAAU3nG,EAAO0/I,EAAa/8C,KAAM+8C,EAAa98C,IAAKlvK,GAEtGiqM,EAAUqhB,mBAAoBU,EAAc,KAAM9lD,EAAUgmD,EAAe3uN,EAAQ,KAEpF,CAED,CAMD,IAFA,IAAMyb,EAAWzb,EAAOyb,SAEdlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5Ci0N,EAAc/yM,EAAUlhB,GAAKkrK,EAAQgpD,EAAc1/I,EAAOtsE,EAhDrB,CAoDvC,CAtTA5E,KAAK6wL,SAAU,EAEf7wL,KAAK+wN,YAAa,EAClB/wN,KAAKs/J,aAAc,EAEnBt/J,KAAK4E,KAAOoiJ,GAEZhnJ,KAAKwF,OAAS,SAAWspL,EAAQiD,EAAOnqB,GAEvC,IAAuB,IAAlBolB,EAAM6D,WACe,IAArB7D,EAAM+jC,aAA8C,IAAtB/jC,EAAM1tB,cAElB,IAAlBwvB,EAAOl3L,OAAZ,CAEA,IAAMq6L,EAAsB4c,EAAU3c,kBAChC8+B,EAAiBniB,EAAUoiB,oBAC3BC,EAAoBriB,EAAUsiB,uBAE9BC,EAASviB,EAAUjvL,MAGzBwxM,EAAOC,YAAa7pE,IACpB4pE,EAAO16B,QAAQlvJ,MAAM09J,SAAU,EAAG,EAAG,EAAG,GACxCksB,EAAO16B,QAAQnoF,MAAM+iH,SAAS,GAC9BF,EAAOG,gBAAgB,GAIvB,IAAM,IAAI70N,EAAI,EAAGowD,EAAKgiI,EAAOl3L,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEnD,IAAMw0E,EAAQ49G,EAAQpyL,GAChB+mJ,EAASvyE,EAAMuyE,OAErB,QAAgBr5I,IAAXq5I,GAOL,IAA2B,IAAtBA,EAAOstE,aAA+C,IAAvBttE,EAAO6b,YAA3C,CAEA0vD,EAAetzD,KAAMjY,EAAOkpE,SAE5B,IAAM6E,EAAqB/tE,EAAOguE,kBAqClC,GAnCAzC,EAAex4C,SAAUg7C,GAEzBvC,EAAcvzD,KAAMjY,EAAOkpE,UAEtBqC,EAAe9yN,EAAIozN,GAAmBN,EAAe3nN,EAAIioN,KAExDN,EAAe9yN,EAAIozN,IAEvBL,EAAc/yN,EAAIe,KAAKwf,MAAO6yM,EAAkBkC,EAAmBt1N,GACnE8yN,EAAe9yN,EAAI+yN,EAAc/yN,EAAIs1N,EAAmBt1N,EACxDunJ,EAAOkpE,QAAQzwN,EAAI+yN,EAAc/yN,GAI7B8yN,EAAe3nN,EAAIioN,IAEvBL,EAAc5nN,EAAIpK,KAAKwf,MAAO6yM,EAAkBkC,EAAmBnqN,GACnE2nN,EAAe3nN,EAAI4nN,EAAc5nN,EAAImqN,EAAmBnqN,EACxDo8I,EAAOkpE,QAAQtlN,EAAI4nN,EAAc5nN,IAMf,OAAfo8I,EAAOlnJ,KAAkBknJ,EAAOiuE,oBAAsB1xN,KAAK4E,OAASsiJ,KAExEzD,EAAOlnJ,IAAM,IAAIykK,GAAmBguD,EAAe9yN,EAAG8yN,EAAe3nN,GACrEo8I,EAAOlnJ,IAAI8kK,QAAQloK,KAAO+3E,EAAM/3E,KAAO,aAEvCsqJ,EAAOwsE,QAAU,IAAIjvD,GAAmBguD,EAAe9yN,EAAG8yN,EAAe3nN,GAEzEo8I,EAAOmkB,OAAOyoB,0BAIK,OAAf5sC,EAAOlnJ,IAAe,CAE1B,IAAMo1N,EAAO,CAAErzD,UAAW9T,GAAe6T,UAAW7T,GAAe+T,OAAQxS,IAE3EtI,EAAOlnJ,IAAM,IAAIykK,GAAmBguD,EAAe9yN,EAAG8yN,EAAe3nN,EAAGsqN,GACxEluE,EAAOlnJ,IAAI8kK,QAAQloK,KAAO+3E,EAAM/3E,KAAO,aAEvCsqJ,EAAOmkB,OAAOyoB,wBAEf,CAEAwe,EAAUpc,gBAAiBhvC,EAAOlnJ,KAClCsyM,EAAU1uM,QAIV,IAFA,IAAMyxN,EAAgBnuE,EAAOouE,mBAEnBC,EAAK,EAAGA,EAAKF,EAAeE,IAAQ,CAE7C,IAAM1wD,EAAW3d,EAAOsuE,YAAaD,GAErC5C,EAAUjgM,IACTggM,EAAc/yN,EAAIklK,EAASllK,EAC3B+yN,EAAc5nN,EAAI+5J,EAAS/5J,EAC3B4nN,EAAc/yN,EAAIklK,EAAS95J,EAC3B2nN,EAAc5nN,EAAI+5J,EAASh6J,GAG5BgqN,EAAOhwD,SAAU8tD,GAEjBzrE,EAAOuuE,eAAgB9gJ,EAAO4gJ,GAE9B/C,EAAWtrE,EAAOwuE,aAElBtB,EAAc5+B,EAAOnqB,EAAQnkB,EAAOmkB,OAAQ12F,EAAOlxE,KAAK4E,KAEzD,CAIO6+I,EAAOiuE,oBAAsB1xN,KAAK4E,OAASsiJ,IAEjD6oE,EAAStsE,EAAQmkB,GAIlBnkB,EAAO6b,aAAc,CAtFsD,OAL1EvrJ,QAAQk/C,KAAM,wBAAyBie,EAAO,iBA6FhD,CAEA87G,EAAM1tB,aAAc,EAEpBuvC,EAAUpc,gBAAiBR,EAAqB++B,EAAgBE,EAxH/B,CA0HlC,CAkLD,CAEA,SAASgB,GAAYtlK,EAAI0/B,EAAYkqG,GAAe,IAAA27B,EAAAC,EAE7C37B,EAAWD,EAAaC,SAmT9B,IAAM47B,EAAc,IAjTpB,WAEC,IAAIC,GAAS,EAEP9qL,EAAQ,IAAIo4H,GACd2yD,EAAmB,KACjBC,EAAoB,IAAI5yD,GAAS,EAAG,EAAG,EAAG,GAEhD,MAAO,CAEN6yD,QAAS,SAAWC,GAEdH,IAAqBG,GAAeJ,IAExC1lK,EAAG8lK,UAAWA,EAAWA,EAAWA,EAAWA,GAC/CH,EAAmBG,EAIrB,EAEAC,UAAW,SAAWC,GAErBN,EAASM,CAEV,EAEA1tB,SAAU,SAAWh+L,EAAGR,EAAGH,EAAGvK,EAAG2hL,IAEJ,IAAvBA,IAEJz2K,GAAKlL,EAAG0K,GAAK1K,EAAGuK,GAAKvK,GAItBwrC,EAAMvY,IAAK/nB,EAAGR,EAAGH,EAAGvK,IAEuB,IAAtCw2N,EAAkBhmD,OAAQhlI,KAE9BolB,EAAGi4I,WAAY39L,EAAGR,EAAGH,EAAGvK,GACxBw2N,EAAkB92D,KAAMl0H,GAI1B,EAEA+yB,MAAO,WAEN+3J,GAAS,EAETC,EAAmB,KACnBC,EAAkBvjM,KAAO,EAAG,EAAG,EAAG,EAEnC,EAIF,EAyPMqyI,EAAc,IAvPpB,WAEC,IAAIgxD,GAAS,EAETO,EAAmB,KACnBC,EAAmB,KACnBC,EAAoB,KAExB,MAAO,CAENzB,QAAS,SAAW/0C,GAEdA,EAEJ2sC,EAAQ,MAIR1gG,EAAS,KAIX,EAEAiqG,QAAS,SAAWO,GAEdH,IAAqBG,GAAeV,IAExC1lK,EAAGomK,UAAWA,GACdH,EAAmBG,EAIrB,EAEAC,QAAS,SAAW32C,GAEnB,GAAKw2C,IAAqBx2C,EAAY,CAErC,GAAKA,EAEJ,OAASA,GAER,KAAKxzB,GAEJl8F,EAAG0vH,UAAW,KACd,MAED,KAAKvzB,GAEJn8F,EAAG0vH,UAAW,KACd,MAED,KAAKtzB,GAEJp8F,EAAG0vH,UAAW,KACd,MAED,KAAKrzB,GAEJr8F,EAAG0vH,UAAW,KACd,MAED,KAAKpzB,GAEJt8F,EAAG0vH,UAAW,KACd,MAED,KAAKnzB,GAEJv8F,EAAG0vH,UAAW,KACd,MAED,KAAKlzB,GAEJx8F,EAAG0vH,UAAW,KACd,MAED,KAAKjzB,GAEJz8F,EAAG0vH,UAAW,KACd,MAED,QAEC1vH,EAAG0vH,UAAW,UAMhB1vH,EAAG0vH,UAAW,KAIfw2C,EAAmBx2C,CAEpB,CAED,EAEAq2C,UAAW,SAAWC,GAErBN,EAASM,CAEV,EAEA1tB,SAAU,SAAW32F,GAEfwkH,IAAsBxkH,IAE1B3hD,EAAGsmK,WAAY3kH,GACfwkH,EAAoBxkH,EAItB,EAEAh0C,MAAO,WAEN+3J,GAAS,EAETO,EAAmB,KACnBC,EAAmB,KACnBC,EAAoB,IAErB,EAIF,EAsHMxxD,EAAgB,IApHtB,WAEC,IAAI+wD,GAAS,EAETa,EAAqB,KACrBC,EAAqB,KACrBC,EAAoB,KACpBC,EAAyB,KACzBC,EAAqB,KACrBC,EAAsB,KACtBC,EAAsB,KACtBC,EAAsB,KAE1B,MAAO,CAENpC,QAAS,SAAWqC,GAEZrB,IAEDqB,EAEJzK,EAAQ,MAIR1gG,EAAS,MAMZ,EAEAiqG,QAAS,SAAWmB,GAEdT,IAAuBS,GAAiBtB,IAE5C1lK,EAAGgnK,YAAaA,GAChBT,EAAqBS,EAIvB,EAEAX,QAAS,SAAWv2C,EAAaC,EAAYi3C,GAEvCR,IAAuB12C,GACvB22C,IAAsB12C,GACtB22C,IAA2BM,IAE/BhnK,EAAG8vH,YAAaA,EAAaC,EAAYi3C,GAEzCR,EAAqB12C,EACrB22C,EAAoB12C,EACpB22C,EAAyBM,EAI3B,EAEAC,MAAO,SAAWh3C,EAAaC,EAAcC,GAEvCw2C,IAAuB12C,GACvB22C,IAAwB12C,GACxB22C,IAAwB12C,IAE5BnwH,EAAGknK,UAAWj3C,EAAaC,EAAcC,GAEzCw2C,EAAqB12C,EACrB22C,EAAsB12C,EACtB22C,EAAsB12C,EAIxB,EAEA41C,UAAW,SAAWC,GAErBN,EAASM,CAEV,EAEA1tB,SAAU,SAAW3R,GAEfmgC,IAAwBngC,IAE5B3mI,EAAGmnK,aAAcxgC,GACjBmgC,EAAsBngC,EAIxB,EAEAh5H,MAAO,WAEN+3J,GAAS,EAETa,EAAqB,KACrBC,EAAqB,KACrBC,EAAoB,KACpBC,EAAyB,KACzBC,EAAqB,KACrBC,EAAsB,KACtBC,EAAsB,KACtBC,EAAsB,IAEvB,EAIF,EAQIM,EAAsB,CAAC,EAEvBC,EAA2B,CAAC,EAC5BC,EAAqB,IAAInzK,QACzBozK,EAAqB,GAErBC,EAAiB,KAEjBC,GAAyB,EACzBC,EAAkB,KAClBC,EAAuB,KACvBC,EAAkB,KAClBC,EAAkB,KAClBC,EAA4B,KAC5BC,EAAuB,KACvBC,EAAuB,KACvBC,GAA2B,EAE3BC,EAAmB,KACnBC,EAAkB,KAElBC,EAAmB,KAEnBC,EAA6B,KAC7BC,EAA4B,KAE1BtqB,EAAch+I,EAAGy5I,aAAc,OAEjC8uB,GAAqB,EACrB97N,EAAU,EACR+7N,EAAYxoK,EAAGy5I,aAAc,OAEK,IAAnC+uB,EAAU5oN,QAAS,UAEvBnT,EAAU6X,WAAY,cAAc8E,KAAMo/M,GAAa,IACvDD,EAAuB97N,GAAW,IAEgB,IAAvC+7N,EAAU5oN,QAAS,eAE9BnT,EAAU6X,WAAY,kBAAkB8E,KAAMo/M,GAAa,IAC3DD,EAAuB97N,GAAW,GAInC,IAAIg8N,EAAqB,KACrBC,EAAuB,CAAC,EAEtBC,EAAe3oK,EAAGy5I,aAAc,MAChCmvB,EAAgB5oK,EAAGy5I,aAAc,MAEjCovB,GAAiB,IAAI71D,IAAUjG,UAAW47D,GAC1CG,GAAkB,IAAI91D,IAAUjG,UAAW67D,GAEjD,SAASG,EAAe/wN,EAAMrD,EAAQo8E,GAErC,IAAMj6C,EAAO,IAAI6xE,WAAY,GACvB8rD,EAAUz0G,EAAG+oK,gBAEnB/oK,EAAGgpK,YAAahxN,EAAMy8J,GACtBz0G,EAAGipK,cAAejxN,EAAM,MAAO,MAC/BgoD,EAAGipK,cAAejxN,EAAM,MAAO,MAE/B,IAAM,IAAIlI,EAAI,EAAGA,EAAIihF,EAAOjhF,IAE3BkwD,EAAGkpK,WAAYv0N,EAAS7E,EAAG,EAAG,KAAM,EAAG,EAAG,EAAG,KAAM,KAAMgnC,GAI1D,OAAO29H,CAER,CAEA,IAAM00D,EAAgB,CAAC,EAqBvB,SAAS7M,EAAQ9pL,IAEmB,IAA9B40L,EAAqB50L,KAEzBwtB,EAAGs8J,OAAQ9pL,GACX40L,EAAqB50L,IAAO,EAI9B,CAEA,SAASopF,EAASppF,IAEkB,IAA9B40L,EAAqB50L,KAEzBwtB,EAAG47D,QAASppF,GACZ40L,EAAqB50L,IAAO,EAI9B,CAxCA22L,EAAe,MAASJ,EAAe,KAAM,KAAM,GACnDI,EAAe,OAAUJ,EAAe,MAAO,MAAO,GAItDtD,EAAYntB,SAAU,EAAG,EAAG,EAAG,GAC/B5jC,EAAY4jC,SAAU,GACtB3jC,EAAc2jC,SAAU,GAExBgkB,EAAQ,MACR5nD,EAAY2xD,QAAShqE,IAErB+sE,GAAc,GACdC,EAAarvE,IACbsiE,EAAQ,MAERmI,EAAa7pE,IAwJb,IAAM0uE,GAAYv6M,EAAAw2M,EAAG,CAAC,EACnBrqE,GAAe,OAAKnsI,EAAAw2M,EACpBpqE,GAAoB,OAAKpsI,EAAAw2M,EACzBnqE,GAA2B,OAAKmqE,GAGnC,GAAK17B,EAEJy/B,EAAcjuE,IAAgB,MAC9BiuE,EAAchuE,IAAgB,UAExB,CAEN,IAAMo+C,EAAYh6G,EAAWv8D,IAAK,oBAEf,OAAdu2K,IAEJ4vB,EAAcjuE,IAAgBq+C,EAAU6vB,QACxCD,EAAchuE,IAAgBo+C,EAAU8vB,QAI1C,CAEA,IAAMC,GAAU16M,EAAAy2M,EAAG,CAAC,EACjBjqE,GAAc,GAACxsI,EAAAy2M,EACfhqE,GAAa,GAACzsI,EAAAy2M,EACd/pE,GAAkB,KAAG1sI,EAAAy2M,EACrB7pE,GAAkB,KAAG5sI,EAAAy2M,EACrBvpE,GAA0B,KAAGltI,EAAAy2M,EAC7BzpE,GAAkB,KAAGhtI,EAAAy2M,EACrB3pE,GAAkB,KAAG9sI,EAAAy2M,EACrB9pE,GAA0B,KAAG3sI,EAAAy2M,EAC7B5pE,GAA0B,KAAG7sI,EAAAy2M,EAC7BxpE,GAA0B,KAAGjtI,EAAAy2M,EAC7B1pE,GAA0B,KAAG0pE,GAGhC,SAASf,EAAaz1C,EAAUM,EAAeF,EAAUC,EAAUI,EAAoBF,EAAeC,EAAeuB,GAEpH,GAAK/B,IAAap0B,IAoBlB,IAPgC,IAA3B6sE,IAEJnL,EAAQ,MACRmL,GAAyB,GAIrBz4C,IAAa/zB,GAmFlBw0B,EAAqBA,GAAsBH,EAC3CC,EAAgBA,GAAiBH,EACjCI,EAAgBA,GAAiBH,EAE5BC,IAAkBq4C,GAAwBl4C,IAAuBq4C,IAErE9nK,EAAG0pK,sBAAuBJ,EAAch6C,GAAiBg6C,EAAc75C,IAEvEk4C,EAAuBr4C,EACvBw4C,EAA4Br4C,GAIxBL,IAAaw4C,GAAmBv4C,IAAaw4C,GAAmBt4C,IAAkBw4C,GAAwBv4C,IAAkBw4C,IAEhIhoK,EAAG2pK,kBAAmBF,EAAYr6C,GAAYq6C,EAAYp6C,GAAYo6C,EAAYl6C,GAAiBk6C,EAAYj6C,IAE/Go4C,EAAkBx4C,EAClBy4C,EAAkBx4C,EAClB04C,EAAuBx4C,EACvBy4C,EAAuBx4C,GAIxBk4C,EAAkB14C,EAClBi5C,EAA2B,UA1G1B,GAAKj5C,IAAa04C,GAAmB32C,IAAuBk3C,EAA2B,CAWtF,GATKN,IAAyBzsE,IAAe4sE,IAA8B5sE,KAE1El7F,EAAGsvH,cAAe,OAElBq4C,EAAuBzsE,GACvB4sE,EAA4B5sE,IAIxB61B,EAEJ,OAAS/B,GAER,KAAKn0B,GACJ76F,EAAG2pK,kBAAmB,EAAG,IAAK,EAAG,KACjC,MAED,KAAK7uE,GACJ96F,EAAG4pK,UAAW,EAAG,GACjB,MAED,KAAK7uE,GACJ/6F,EAAG2pK,kBAAmB,EAAG,IAAK,EAAG,GACjC,MAED,KAAK3uE,GACJh7F,EAAG2pK,kBAAmB,EAAG,IAAK,EAAG,KACjC,MAED,QACCxiN,QAAQwN,MAAO,uCAAwCq6J,QAOzD,OAASA,GAER,KAAKn0B,GACJ76F,EAAG2pK,kBAAmB,IAAK,IAAK,EAAG,KACnC,MAED,KAAK7uE,GACJ96F,EAAG4pK,UAAW,IAAK,GACnB,MAED,KAAK7uE,GACJ/6F,EAAG2pK,kBAAmB,EAAG,IAAK,EAAG,GACjC,MAED,KAAK3uE,GACJh7F,EAAG4pK,UAAW,EAAG,KACjB,MAED,QACCziN,QAAQwN,MAAO,uCAAwCq6J,GAO1D44C,EAAkB,KAClBC,EAAkB,KAClBE,EAAuB,KACvBC,EAAuB,KAEvBN,EAAkB14C,EAClBi5C,EAA2Bl3C,CAE5B,OA7FgC,IAA3B02C,IAEJ7rG,EAAS,MACT6rG,GAAyB,EA6H5B,CA0CA,SAAS2B,EAAcpS,GAEjBkR,IAAqBlR,IAEpBA,EAEJh3J,EAAG6pK,UAAW,MAId7pK,EAAG6pK,UAAW,MAIf3B,EAAmBlR,EAIrB,CAEA,SAASqS,EAAaS,GAEhBA,IAAa/vE,IAEjBuiE,EAAQ,MAEHwN,IAAa3B,IAEZ2B,IAAa9vE,GAEjBh6F,EAAG8pK,SAAU,MAEFA,IAAa7vE,GAExBj6F,EAAG8pK,SAAU,MAIb9pK,EAAG8pK,SAAU,QAQfluG,EAAS,MAIVusG,EAAkB2B,CAEnB,CAcA,SAASC,EAAkBr5C,EAAehqC,EAAQ2oE,GAE5C3+B,GAEJ4rC,EAAQ,OAEH+L,IAA+B3hF,GAAU4hF,IAA8BjZ,IAE3ErvJ,EAAG0wH,cAAehqC,EAAQ2oE,GAE1BgZ,EAA6B3hF,EAC7B4hF,EAA4BjZ,IAM7BzzF,EAAS,MAIX,CAkBA,SAASouG,EAAeC,QAEJzsN,IAAdysN,IAA0BA,EAAY,MAAQjsB,EAAc,GAE5DyqB,IAAuBwB,IAE3BjqK,EAAGgqK,cAAeC,GAClBxB,EAAqBwB,EAIvB,CAkRA,MAAO,CAENngC,QAAS,CACRlvJ,MAAO6qL,EACP9jH,MAAO+yD,EACPiyB,QAAShyB,GAGV2nD,OAAQA,EACR1gG,QAASA,EAETsuG,gBAnuBD,SAA0Bv1N,EAAQw1N,GAEjC,OAAK9C,EAA0B1yN,KAAaw1N,IAE3CnqK,EAAGkqK,gBAAiBv1N,EAAQw1N,GAE5B9C,EAA0B1yN,GAAWw1N,EAEhCtgC,IAIY,QAAXl1L,IAEJ0yN,EAA0B,OAAU8C,GAIrB,QAAXx1N,IAEJ0yN,EAA0B,OAAU8C,KAM/B,EAMT,EAosBC7nC,YAlsBD,SAAsBmC,EAAc0lC,GAEnC,IAAI7nC,EAAcilC,EAEd70D,GAAc,EAElB,GAAK+xB,EAWJ,QAPqBjnL,KAFrB8kL,EAAcglC,EAAmBnkM,IAAKgnM,MAIrC7nC,EAAc,GACdglC,EAAmBjlM,IAAK8nM,EAAa7nC,IAIjCmC,EAAavuB,6BAA+B,CAEhD,IAAMvD,EAAW8xB,EAAahwB,QAE9B,GAAK6tB,EAAYt3L,SAAW2nK,EAAS3nK,QAA+B,QAArBs3L,EAAa,GAAgB,CAE3E,IAAM,IAAIxyL,EAAI,EAAGowD,EAAKyyG,EAAS3nK,OAAQ8E,EAAIowD,EAAIpwD,IAE9CwyL,EAAaxyL,GAAM,MAAQA,EAI5BwyL,EAAYt3L,OAAS2nK,EAAS3nK,OAE9B0nK,GAAc,CAEf,CAED,MAE2B,QAArB4vB,EAAa,KAEjBA,EAAa,GAAM,MAEnB5vB,GAAc,QAQU,OAArB4vB,EAAa,KAEjBA,EAAa,GAAM,KAEnB5vB,GAAc,GAMXA,IAECk3B,EAAaC,SAEjB7pI,EAAGsiI,YAAaA,GAIhB5iG,EAAWv8D,IAAK,sBAAuBinM,iBAAkB9nC,GAO5D,EA0nBC+nC,WAxnBD,SAAqB3vB,GAEpB,OAAK8sB,IAAmB9sB,IAEvB16I,EAAGqqK,WAAY3vB,GAEf8sB,EAAiB9sB,GAEV,EAMT,EA4mBC+pB,YAAaA,EACb6F,YA/bD,SAAsBr+C,EAAUs+C,GAE/Bt+C,EAASgD,OAASx0B,GACf7+B,EAAS,MACT0gG,EAAQ,MAEX,IAAItF,EAAc/qC,EAASgD,OAASz0B,GAC/B+vE,IAAcvT,GAAcA,GAEjCoS,EAAcpS,GAEZ/qC,EAAS+C,WAAan0B,KAA2C,IAAzBoxB,EAASkD,YAChDs1C,EAAa7pE,IACb6pE,EAAax4C,EAAS+C,SAAU/C,EAASqD,cAAerD,EAASmD,SAAUnD,EAASoD,SAAUpD,EAASwD,mBAAoBxD,EAASsD,cAAetD,EAASuD,cAAevD,EAAS8E,oBAEvLrc,EAAY2xD,QAASp6C,EAASyD,WAC9Bhb,EAAYgwD,QAASz4C,EAAS0D,WAC9Bjb,EAAYmxD,QAAS55C,EAAS2D,YAC9B61C,EAAYI,QAAS55C,EAASwE,YAE9B,IAAML,EAAenE,EAASmE,aAC9Bzb,EAAc+vD,QAASt0C,GAClBA,IAEJzb,EAAckxD,QAAS55C,EAAS4D,kBAChClb,EAAc0xD,QAASp6C,EAAS6D,YAAa7D,EAAS8D,WAAY9D,EAAS+D,iBAC3Erb,EAAcsyD,MAAOh7C,EAASgE,YAAahE,EAASiE,aAAcjE,EAASkE,eAI5E45C,EAAkB99C,EAASyE,cAAezE,EAAS0E,oBAAqB1E,EAAS2E,qBAEpD,IAA7B3E,EAAS6E,gBACNwrC,EAAQ,OACR1gG,EAAS,MAEb,EA6ZCwtG,aAAcA,EACdC,YAAaA,EAEbmB,aAtWD,SAAuBjpN,GAEjBA,IAAU6mN,IAETG,GAAqBvoK,EAAGyqK,UAAWlpN,GAExC6mN,EAAmB7mN,EAIrB,EA6VCwoN,iBAAkBA,EAElBpF,eAtUD,SAAyBpwD,GAEnBA,EAEJ+nD,EAAQ,MAIR1gG,EAAS,KAIX,EA4TCouG,cAAeA,EACfhB,YA5SD,SAAsB0B,EAAWC,GAEJ,OAAvBlC,GAEJuB,IAID,IAAIY,EAAelC,EAAsBD,QAEnBjrN,IAAjBotN,IAEJA,EAAe,CAAE5yN,UAAMwF,EAAWi3J,aAASj3J,GAC3CkrN,EAAsBD,GAAuBmC,GAIzCA,EAAa5yN,OAAS0yN,GAAaE,EAAan2D,UAAYk2D,IAEhE3qK,EAAGgpK,YAAa0B,EAAWC,GAAgBxB,EAAeuB,IAE1DE,EAAa5yN,KAAO0yN,EACpBE,EAAan2D,QAAUk2D,EAIzB,EAmRCE,cAjRD,WAEC,IAAMD,EAAelC,EAAsBD,QAErBjrN,IAAjBotN,QAAoDptN,IAAtBotN,EAAa5yN,OAE/CgoD,EAAGgpK,YAAa4B,EAAa5yN,KAAM,MAEnC4yN,EAAa5yN,UAAOwF,EACpBotN,EAAan2D,aAAUj3J,EAIzB,EAqQCstN,qBAnQD,WAEC,IAEC9qK,EAAG8qK,qBAAqB53N,MAAO8sD,EAAI3sD,UAEpC,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAwPCu0M,WAhLD,WAEC,IAEClpK,EAAGkpK,WAAWh2N,MAAO8sD,EAAI3sD,UAE1B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAqKCo2M,WAnKD,WAEC,IAEC/qK,EAAG+qK,WAAW73N,MAAO8sD,EAAI3sD,UAE1B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAyJCq2M,aA/MD,WAEC,IAEChrK,EAAGgrK,aAAa93N,MAAO8sD,EAAI3sD,UAE5B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAoMCs2M,aAlMD,WAEC,IAECjrK,EAAGirK,aAAa/3N,MAAO8sD,EAAI3sD,UAE5B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAuLCu2M,cA3PD,WAEC,IAEClrK,EAAGkrK,cAAch4N,MAAO8sD,EAAI3sD,UAE7B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAgPCw2M,cA9OD,WAEC,IAECnrK,EAAGmrK,cAAcj4N,MAAO8sD,EAAI3sD,UAE7B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAmOCy2M,wBAjOD,WAEC,IAECprK,EAAGorK,wBAAwBl4N,MAAO8sD,EAAI3sD,UAEvC,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAuNC2/I,QA3JD,SAAkBA,IAEyB,IAArCu0D,EAAejpD,OAAQtL,KAE3Bt0G,EAAGs0G,QAASA,EAAQhlK,EAAGglK,EAAQ75J,EAAG65J,EAAQ55J,EAAG45J,EAAQ95J,GACrDquN,EAAe/5D,KAAMwF,GAIvB,EAmJCE,SAjJD,SAAmBA,IAE0B,IAAvCs0D,EAAgBlpD,OAAQpL,KAE5Bx0G,EAAGw0G,SAAUA,EAASllK,EAAGklK,EAAS/5J,EAAG+5J,EAAS95J,EAAG85J,EAASh6J,GAC1DsuN,EAAgBh6D,KAAM0F,GAIxB,EA0IC7mG,MAtID,WAIC3N,EAAG47D,QAAS,MACZ57D,EAAG47D,QAAS,MACZ57D,EAAG47D,QAAS,MACZ57D,EAAG47D,QAAS,OACZ57D,EAAG47D,QAAS,MACZ57D,EAAG47D,QAAS,MACZ57D,EAAG47D,QAAS,OAEZ57D,EAAGsvH,cAAe,OAClBtvH,EAAG4pK,UAAW,EAAG,GACjB5pK,EAAG2pK,kBAAmB,EAAG,EAAG,EAAG,GAE/B3pK,EAAG8lK,WAAW,GAAM,GAAM,GAAM,GAChC9lK,EAAGi4I,WAAY,EAAG,EAAG,EAAG,GAExBj4I,EAAGomK,WAAW,GACdpmK,EAAG0vH,UAAW,KACd1vH,EAAGsmK,WAAY,GAEftmK,EAAGgnK,YAAa,YAChBhnK,EAAG8vH,YAAa,IAAK,EAAG,YACxB9vH,EAAGknK,UAAW,KAAM,KAAM,MAC1BlnK,EAAGmnK,aAAc,GAEjBnnK,EAAG8pK,SAAU,MACb9pK,EAAG6pK,UAAW,MAEd7pK,EAAG0wH,cAAe,EAAG,GAErB1wH,EAAGgqK,cAAe,OAElBhqK,EAAGkqK,gBAAiB,MAAO,OAET,IAAbrgC,IAEJ7pI,EAAGkqK,gBAAiB,MAAO,MAC3BlqK,EAAGkqK,gBAAiB,MAAO,OAI5BlqK,EAAGqqK,WAAY,MAEfrqK,EAAGyqK,UAAW,GAEdzqK,EAAGs0G,QAAS,EAAG,EAAGt0G,EAAGosF,OAAO7qI,MAAOy+C,EAAGosF,OAAO5qI,QAC7Cw+C,EAAGw0G,SAAU,EAAG,EAAGx0G,EAAGosF,OAAO7qI,MAAOy+C,EAAGosF,OAAO5qI,QAI9C4lN,EAAsB,CAAC,EAEvBqB,EAAqB,KACrBC,EAAuB,CAAC,EAExBrB,EAA2B,CAAC,EAC5BC,EAAqB,IAAInzK,QACzBozK,EAAqB,GAErBC,EAAiB,KAEjBC,GAAyB,EACzBC,EAAkB,KAClBC,EAAuB,KACvBC,EAAkB,KAClBC,EAAkB,KAClBC,EAA4B,KAC5BC,EAAuB,KACvBC,EAAuB,KACvBC,GAA2B,EAE3BC,EAAmB,KACnBC,EAAkB,KAElBC,EAAmB,KAEnBC,EAA6B,KAC7BC,EAA4B,KAE5BO,EAAexmM,IAAK,EAAG,EAAG29B,EAAGosF,OAAO7qI,MAAOy+C,EAAGosF,OAAO5qI,QACrDsnN,EAAgBzmM,IAAK,EAAG,EAAG29B,EAAGosF,OAAO7qI,MAAOy+C,EAAGosF,OAAO5qI,QAEtDikN,EAAY93J,QACZ+mG,EAAY/mG,QACZgnG,EAAchnG,OAEf,EAiDD,CAEA,SAAS09J,GAAeC,EAAK5rI,EAAY1sE,EAAOjS,EAAY6oL,EAAc2hC,EAAO9pI,GAAO,IAAA+pI,EAAAC,EAWnF3/E,EATE+9C,EAAWD,EAAaC,SACxBmU,EAAcpU,EAAaoU,YAC3BG,EAAiBvU,EAAauU,eAC9BD,EAAiBtU,EAAasU,eAC9BW,EAAajV,EAAaiV,WAC1B6sB,EAAqBhsI,EAAWl+C,IAAK,wCAA2Ck+C,EAAWv8D,IAAK,wCAA2C,KAC3IwoM,EAAgC,iBAAiBrgO,KAAMkE,UAAUC,WAEjEm8N,EAAiB,IAAIz3K,QAGrB03K,EAAW,IAAI13K,QAMjB23K,GAAqB,EAEzB,IAECA,EAAgD,qBAApBC,iBAE+B,OAArD,IAAIA,gBAAiB,EAAG,GAAI1/E,WAAY,KAE/C,CAAE,MAAQpgI,GAET,CAID,SAAS+/M,EAAczqN,EAAOC,GAI7B,OAAOsqN,EAEN,IAAIC,gBAAiBxqN,EAAOC,GAAWo3C,GAAiB,SAE1D,CAEA,SAASqzK,EAAa1/E,EAAO2/E,EAAiBC,EAAgBC,GAE7D,IAAI3hF,EAAQ,EAYZ,IARK8B,EAAMhrI,MAAQ6qN,GAAW7/E,EAAM/qI,OAAS4qN,KAE5C3hF,EAAQ2hF,EAAU/7N,KAAKC,IAAKi8I,EAAMhrI,MAAOgrI,EAAM/qI,SAM3CipI,EAAQ,IAAyB,IAApByhF,EAA2B,CAI5C,GAAmC,qBAArB37D,kBAAoChkB,aAAiBgkB,kBACnC,qBAAtBJ,mBAAqC5jB,aAAiB4jB,mBACtC,qBAAhBK,aAA+BjkB,aAAiBikB,YAAgB,CAEzE,IAAM3gJ,EAAQq8M,EAAkBtmE,GAAkBv1J,KAAKwf,MAEjDtO,EAAQsO,EAAO46H,EAAQ8B,EAAMhrI,OAC7BC,EAASqO,EAAO46H,EAAQ8B,EAAM/qI,aAEnBhE,IAAZsuI,IAAwBA,EAAUkgF,EAAczqN,EAAOC,IAI5D,IAAM4qI,EAAS+/E,EAAiBH,EAAczqN,EAAOC,GAAWsqI,EAUhE,OARAM,EAAO7qI,MAAQA,EACf6qI,EAAO5qI,OAASA,EAEA4qI,EAAOC,WAAY,MAC3Ba,UAAWX,EAAO,EAAG,EAAGhrI,EAAOC,GAEvC2F,QAAQk/C,KAAM,uDAAyDkmF,EAAMhrI,MAAQ,IAAMgrI,EAAM/qI,OAAS,SAAWD,EAAQ,IAAMC,EAAS,MAErI4qI,CAER,CAQC,MANK,SAAUG,GAEdplI,QAAQk/C,KAAM,yDAA2DkmF,EAAMhrI,MAAQ,IAAMgrI,EAAM/qI,OAAS,MAItG+qI,CAIT,CAEA,OAAOA,CAER,CAEA,SAAS8/E,EAAgB9/E,GAExB,OAAOkZ,GAAclZ,EAAMhrI,QAAWkkJ,GAAclZ,EAAM/qI,OAE3D,CAWA,SAAS8qN,EAA6B73D,EAAS83D,GAE9C,OAAO93D,EAAQxC,iBAAmBs6D,GACjC93D,EAAQ/C,YAAc9T,IAAiB6W,EAAQ/C,YAAczT,EAE/D,CAEA,SAASuuE,EAAgB73N,GAExB22N,EAAIkB,eAAgB73N,EAErB,CAEA,SAAS83N,EAAmBC,EAAoBC,EAAUC,EAAQ/6D,GAAmC,IAAzB8pD,EAActoN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAEzF,IAAkB,IAAbw2L,EAAqB,OAAO8iC,EAEjC,GAA4B,OAAvBD,EAA8B,CAElC,QAAmClvN,IAA9B8tN,EAAKoB,GAAqC,OAAOpB,EAAKoB,GAE3DvlN,QAAQk/C,KAAM,2EAA8EqmK,EAAqB,IAElH,CAEA,IAAI36D,EAAiB46D,EAoCrB,OAlCkB,OAAbA,IAEY,OAAXC,IAAkB76D,EAAiB,OACxB,OAAX66D,IAAkB76D,EAAiB,OACxB,OAAX66D,IAAkB76D,EAAiB,QAIvB,QAAb46D,IAEY,OAAXC,IAAkB76D,EAAiB,OACxB,OAAX66D,IAAkB76D,EAAiB,OACxB,OAAX66D,IAAkB76D,EAAiB,QAIvB,OAAb46D,IAEY,OAAXC,IAAkB76D,EAAiB,OACxB,OAAX66D,IAAkB76D,EAAiB,OACxB,OAAX66D,IAAkB76D,EAAmBF,IAAavP,KAAmC,IAAnBq5D,EAA6B,MAAQ,OAC5F,QAAXiR,IAAmB76D,EAAiB,OACzB,QAAX66D,IAAmB76D,EAAiB,QAIlB,QAAnBA,GAA+C,QAAnBA,GACb,QAAnBA,GAA+C,QAAnBA,GACT,QAAnBA,GAA+C,QAAnBA,GAE5BryE,EAAWv8D,IAAK,0BAIV4uI,CAER,CAEA,SAAS86D,EAAcp4D,EAASloB,EAAOggF,GAEtC,OAA8D,IAAzDD,EAA6B73D,EAAS83D,IAA6B93D,EAAQq4D,sBAAwBr4D,EAAQ/C,YAAc9T,IAAiB6W,EAAQ/C,YAAczT,GAE7J5tJ,KAAKqzM,KAAMrzM,KAAKC,IAAKi8I,EAAMhrI,MAAOgrI,EAAM/qI,SAAa,OAE7BhE,IAApBi3J,EAAQ3C,SAAyB2C,EAAQ3C,QAAQ9mK,OAAS,EAI9DypK,EAAQ3C,QAAQ9mK,OAEZypK,EAAQs4D,qBAAuBh9N,MAAM0E,QAASggK,EAAQloB,OAE1DA,EAAMulB,QAAQ9mK,OAMd,CAIT,CAIA,SAASgiO,EAAgBnzN,GAExB,OAAKA,IAAM+jJ,IAAiB/jJ,IAAMgkJ,IAA8BhkJ,IAAMkkJ,GAE9D,KAID,IAER,CAIA,SAASyiD,EAAkB7kK,GAE1B,IAAM84H,EAAU94H,EAAMhnC,OAEtB8/J,EAAQnpI,oBAAqB,UAAWk1K,GAwBzC,SAA4B/rC,GAE3B,IAAMw4D,EAAoBlsN,EAAWoiB,IAAKsxI,GAE1C,QAAuCj3J,IAAlCyvN,EAAkBC,YAA4B,OAInD,IAAMt4N,EAAS6/J,EAAQ7/J,OACjBu4N,EAAgBtB,EAAS1oM,IAAKvuB,GAEpC,GAAKu4N,EAAgB,CAEpB,IAAMxC,EAAewC,EAAeF,EAAkBG,YACtDzC,EAAa9R,YAImB,IAA3B8R,EAAa9R,WAEjBwU,EAAe54D,GAM6B,IAAxC9iK,OAAOqD,KAAMm4N,GAAgBniO,QAEjC6gO,EAASj7L,OAAQh8B,EAInB,CAEAmM,EAAWizD,OAAQygG,EAEpB,CA1DC64D,CAAmB74D,GAEdA,EAAQknD,gBAEZiQ,EAAeh7L,OAAQ6jI,EAIzB,CAEA,SAAS84D,EAAuB5xL,GAE/B,IAAM8oJ,EAAe9oJ,EAAMhnC,OAE3B8vL,EAAan5J,oBAAqB,UAAWiiM,GA2D9C,SAAiC9oC,GAEhC,IAAMhwB,EAAUgwB,EAAahwB,QAEvB+4D,EAAyBzsN,EAAWoiB,IAAKshK,GACzCwoC,EAAoBlsN,EAAWoiB,IAAKsxI,QAEAj3J,IAArCyvN,EAAkBQ,iBAEtBnC,EAAI+B,cAAeJ,EAAkBQ,gBAErChsI,EAAK+lH,OAAO70C,YAIR8xB,EAAa7vB,cAEjB6vB,EAAa7vB,aAAaE,UAI3B,GAAK2vB,EAAaE,wBAEjB,IAAM,IAAI70L,EAAI,EAAGA,EAAI,EAAGA,IAEvBw7N,EAAIoC,kBAAmBF,EAAuBG,mBAAoB79N,IAC7D09N,EAAuBI,oBAAqBtC,EAAIuC,mBAAoBL,EAAuBI,mBAAoB99N,SAMrHw7N,EAAIoC,kBAAmBF,EAAuBG,oBACzCH,EAAuBI,oBAAqBtC,EAAIuC,mBAAoBL,EAAuBI,oBAC3FJ,EAAuBM,gCAAiCxC,EAAIoC,kBAAmBF,EAAuBM,gCACtGN,EAAuBO,0BAA2BzC,EAAIuC,mBAAoBL,EAAuBO,0BACjGP,EAAuBQ,0BAA2B1C,EAAIuC,mBAAoBL,EAAuBQ,0BAIvG,GAAKvpC,EAAavuB,6BAEjB,IAAM,IAAIpmK,EAAI,EAAGowD,EAAKu0G,EAAQzpK,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEpD,IAAMm+N,EAAuBltN,EAAWoiB,IAAKsxI,EAAS3kK,IAEjDm+N,EAAqBR,iBAEzBnC,EAAI+B,cAAeY,EAAqBR,gBAExChsI,EAAK+lH,OAAO70C,YAIb5xJ,EAAWizD,OAAQygG,EAAS3kK,GAE7B,CAIDiR,EAAWizD,OAAQygG,GACnB1zJ,EAAWizD,OAAQywH,EAEpB,CAxHCypC,CAAwBzpC,EAEzB,CA0CA,SAAS4oC,EAAe54D,GAEvB,IAAMw4D,EAAoBlsN,EAAWoiB,IAAKsxI,GAC1C62D,EAAI+B,cAAeJ,EAAkBQ,gBAErC,IAAM74N,EAAS6/J,EAAQ7/J,cACDi3N,EAAS1oM,IAAKvuB,GACdq4N,EAAkBG,YAExC3rI,EAAK+lH,OAAO70C,UAEb,CAqEA,IAAIw7D,EAAe,EAgDnB,SAASxgB,EAAcl5C,EAAS25D,GAE/B,IAAMnB,EAAoBlsN,EAAWoiB,IAAKsxI,GAI1C,GAFKA,EAAQknD,gBAsyCd,SAA6BlnD,GAE5B,IAAM+0B,EAAQ/nG,EAAK7oF,OAAO4wL,MAIrBoiC,EAAezoM,IAAKsxI,KAAc+0B,IAEtCoiC,EAAevpM,IAAKoyI,EAAS+0B,GAC7B/0B,EAAQiC,SAIV,CAnzC+B23D,CAAoB55D,IAEX,IAAlCA,EAAQlC,uBAAmCkC,EAAQhoK,QAAU,GAAKwgO,EAAkBqB,YAAc75D,EAAQhoK,QAAU,CAExH,IAAM8/I,EAAQkoB,EAAQloB,MAEtB,GAAe,OAAVA,EAEJplI,QAAQk/C,KAAM,+EAER,KAAwB,IAAnBkmF,EAAMjmD,SAOjB,YADAioI,EAAetB,EAAmBx4D,EAAS25D,GAJ3CjnN,QAAQk/C,KAAM,yEAOf,CAED,CAEArzC,EAAMg3M,cAAe,MAAQoE,GAC7Bp7M,EAAMg2M,YAAa,KAAMiE,EAAkBQ,eAE5C,CAkDA,IAAMe,GAAYz/M,EAAAy8M,EAAG,CAAC,EACnB/tE,GAAkB,OAAK1uI,EAAAy8M,EACvB9tE,GAAuB,OAAK3uI,EAAAy8M,EAC5B7tE,GAA0B,OAAK6tE,GAG5BiD,GAAU1/M,EAAA08M,EAAG,CAAC,EACjB7tE,GAAiB,MAAI7uI,EAAA08M,EACrB5tE,GAA8B,MAAI9uI,EAAA08M,EAClC1tE,GAA6B,MAAIhvI,EAAA08M,EAEjCxtE,GAAgB,MAAIlvI,EAAA08M,EACpBvtE,GAA6B,MAAInvI,EAAA08M,EACjCrtE,GAA4B,MAAIqtE,GAGnC,SAASiD,EAAsBC,EAAal6D,EAAS83D,GA4CpD,GA1CKA,GAEJjB,EAAIrC,cAAe0F,EAAa,MAAOH,EAAc/5D,EAAQlD,QAC7D+5D,EAAIrC,cAAe0F,EAAa,MAAOH,EAAc/5D,EAAQjD,QAExC,QAAhBm9D,GAAyC,QAAhBA,GAE7BrD,EAAIrC,cAAe0F,EAAa,MAAOH,EAAc/5D,EAAQS,QAI9Do2D,EAAIrC,cAAe0F,EAAa,MAAOF,EAAYh6D,EAAQhD,YAC3D65D,EAAIrC,cAAe0F,EAAa,MAAOF,EAAYh6D,EAAQ/C,cAI3D45D,EAAIrC,cAAe0F,EAAa,MAAO,OACvCrD,EAAIrC,cAAe0F,EAAa,MAAO,OAElB,QAAhBA,GAAyC,QAAhBA,GAE7BrD,EAAIrC,cAAe0F,EAAa,MAAO,OAInCl6D,EAAQlD,QAAU7T,IAAuB+W,EAAQjD,QAAU9T,IAE/Dv2I,QAAQk/C,KAAM,iIAIfilK,EAAIrC,cAAe0F,EAAa,MAAO3B,EAAgBv4D,EAAQhD,YAC/D65D,EAAIrC,cAAe0F,EAAa,MAAO3B,EAAgBv4D,EAAQ/C,YAE1D+C,EAAQ/C,YAAc9T,IAAiB6W,EAAQ/C,YAAczT,IAEjE92I,QAAQk/C,KAAM,qIAM4C,IAAvDq5B,EAAWl+C,IAAK,kCAA8C,CAElE,IAAMk4J,EAAYh6G,EAAWv8D,IAAK,kCAElC,GAAKsxI,EAAQz8J,OAAS4mJ,KAA8D,IAAjDl/D,EAAWl+C,IAAK,4BAAyC,OAC5F,IAAkB,IAAbqoJ,GAAwBp1B,EAAQz8J,OAAS6mJ,KAAuE,IAAtDn/D,EAAWl+C,IAAK,iCAAgD,QAE1HizH,EAAQ7C,WAAa,GAAK7wJ,EAAWoiB,IAAKsxI,GAAUm6D,uBAExDtD,EAAIuD,cAAeF,EAAaj1B,EAAUo1B,2BAA4Bz+N,KAAKiuC,IAAKm2H,EAAQ7C,WAAYg4B,EAAa8U,qBACjH39L,EAAWoiB,IAAKsxI,GAAUm6D,oBAAsBn6D,EAAQ7C,WAI1D,CAED,CAEA,SAASm9D,EAAa9B,EAAmBx4D,GAExC,IAAIu6D,GAAc,OAEqBxxN,IAAlCyvN,EAAkBC,cAEtBD,EAAkBC,aAAc,EAEhCz4D,EAAQz9J,iBAAkB,UAAWwpM,IAMtC,IAAM5rM,EAAS6/J,EAAQ7/J,OACnBu4N,EAAgBtB,EAAS1oM,IAAKvuB,QAEX4I,IAAlB2vN,IAEJA,EAAgB,CAAC,EACjBtB,EAASxpM,IAAKztB,EAAQu4N,IAMvB,IAAM8B,EAhNP,SAA6Bx6D,GAE5B,IAAMt+J,EAAQ,GAgBd,OAdAA,EAAMjG,KAAMukK,EAAQlD,OACpBp7J,EAAMjG,KAAMukK,EAAQjD,OACpBr7J,EAAMjG,KAAMukK,EAAQhD,WACpBt7J,EAAMjG,KAAMukK,EAAQ/C,WACpBv7J,EAAMjG,KAAMukK,EAAQ7C,YACpBz7J,EAAMjG,KAAMukK,EAAQ1C,gBACpB57J,EAAMjG,KAAMukK,EAAQ9C,QACpBx7J,EAAMjG,KAAMukK,EAAQz8J,MACpB7B,EAAMjG,KAAMukK,EAAQxC,iBACpB97J,EAAMjG,KAAMukK,EAAQvC,kBACpB/7J,EAAMjG,KAAMukK,EAAQtC,OACpBh8J,EAAMjG,KAAMukK,EAAQrC,iBACpBj8J,EAAMjG,KAAMukK,EAAQ5C,UAEb17J,EAAM1F,MAEd,CA4LyBy+N,CAAoBz6D,GAE5C,GAAKw6D,IAAoBhC,EAAkBG,WAAa,MAIb5vN,IAArC2vN,EAAe8B,KAInB9B,EAAe8B,GAAoB,CAClCx6D,QAAS62D,EAAIvC,gBACblQ,UAAW,GAGZp3H,EAAK+lH,OAAO70C,WAKZq8D,GAAc,GAIf7B,EAAe8B,GAAkBpW,YAKjC,IAAM8R,EAAewC,EAAeF,EAAkBG,iBAEhC5vN,IAAjBmtN,IAEJwC,EAAeF,EAAkBG,YAAavU,YAEd,IAA3B8R,EAAa9R,WAEjBwU,EAAe54D,IAQjBw4D,EAAkBG,WAAa6B,EAC/BhC,EAAkBQ,eAAiBN,EAAe8B,GAAkBx6D,OAErE,CAEA,OAAOu6D,CAER,CAEA,SAAST,EAAetB,EAAmBx4D,EAAS25D,GAEnD,IAAIO,EAAc,KAEbl6D,EAAQU,qBAAqBw5D,EAAc,OAC3Cl6D,EAAQiB,kBAAkBi5D,EAAc,OAE7C,IAAMK,EAAcD,EAAa9B,EAAmBx4D,GAC9C7/J,EAAS6/J,EAAQ7/J,OAKvB,GAHAoe,EAAMg3M,cAAe,MAAQoE,GAC7Bp7M,EAAMg2M,YAAa2F,EAAa1B,EAAkBQ,gBAE7C74N,EAAOnI,UAAYmI,EAAOu6N,mBAAoC,IAAhBH,EAAuB,CAEzE1D,EAAI8D,YAAa,MAAO36D,EAAQtC,OAChCm5D,EAAI8D,YAAa,MAAO36D,EAAQvC,kBAChCo5D,EAAI8D,YAAa,KAAM36D,EAAQrC,iBAC/Bk5D,EAAI8D,YAAa,MAAO,GAExB,IAYIC,EAZEnD,EAxjBR,SAAiCz3D,GAEhC,OAAKo1B,IAEIp1B,EAAQlD,QAAU7T,IAAuB+W,EAAQjD,QAAU9T,IACjE+W,EAAQ/C,YAAc9T,IAAiB6W,EAAQ/C,YAAczT,GAEjE,CAijB0BqxE,CAAwB76D,KAAiD,IAApC43D,EAAgB53D,EAAQloB,OACjFA,EAAQ0/E,EAAax3D,EAAQloB,MAAO2/E,GAAiB,EAAOhuB,GAG1DquB,EAAeF,EAFrB9/E,EAAQgjF,EAAkB96D,EAASloB,KAEas9C,EAC/C8iC,EAAWpB,EAAMv9D,QAASyG,EAAQ9C,OAAQ8C,EAAQ5C,UAE/C+6D,EAASrB,EAAMv9D,QAASyG,EAAQz8J,MACnCw3N,EAAmB/C,EAAmBh4D,EAAQ1C,eAAgB46D,EAAUC,EAAQn4D,EAAQ5C,SAAU4C,EAAQknD,gBAE3G+S,EAAsBC,EAAal6D,EAAS83D,GAG5C,IAAMz6D,EAAU2C,EAAQ3C,QAElB29D,EAAkB5lC,IAAuC,IAA3Bp1B,EAAQknD,eACtC+T,OAAmDlyN,IAAhCyvN,EAAkBqB,UACrC1mN,EAASilN,EAAcp4D,EAASloB,EAAOggF,GAE7C,GAAK93D,EAAQk7D,eAIZH,EAAmB,KAEd3lC,EAIH2lC,EAFI/6D,EAAQz8J,OAAS4mJ,GAEF,MAER6V,EAAQz8J,OAAS2mJ,GAET,MAER8V,EAAQz8J,OAASgnJ,GAET,MAIA,MAMfyV,EAAQz8J,OAAS4mJ,IAErBz3I,QAAQwN,MAAO,gEAQZ8/I,EAAQ9C,SAAWrS,IAAoC,OAArBkwE,GAKjC/6D,EAAQz8J,OAASymJ,IAAqBgW,EAAQz8J,OAAS2mJ,KAE3Dx3I,QAAQk/C,KAAM,+FAEdouG,EAAQz8J,KAAOymJ,GACfmuE,EAASrB,EAAMv9D,QAASyG,EAAQz8J,OAM7By8J,EAAQ9C,SAAWpS,IAA2C,OAArBiwE,IAI7CA,EAAmB,MAKd/6D,EAAQz8J,OAASgnJ,KAErB73I,QAAQk/C,KAAM,oFAEdouG,EAAQz8J,KAAOgnJ,GACf4tE,EAASrB,EAAMv9D,QAASyG,EAAQz8J,QAQ7By3N,GAAiBC,EAErB18M,EAAMg4M,aAAc,KAAM,EAAGwE,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,QAIlEwR,EAAMk2M,WAAY,KAAM,EAAGsG,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ,EAAGmrN,EAAUC,EAAQ,WAIxF,GAAKn4D,EAAQ3D,cAMnB,GAAKgB,EAAQ9mK,OAAS,GAAKuhO,EAAe,CAEpCkD,GAAiBC,GAErB18M,EAAMg4M,aAAc,KAAMpjN,EAAQ4nN,EAAkB19D,EAAS,GAAIvwJ,MAAOuwJ,EAAS,GAAItwJ,QAItF,IAAM,IAAI1R,EAAI,EAAGowD,EAAK4xG,EAAQ9mK,OAAQ8E,EAAIowD,EAAIpwD,IAE7Cu/N,EAASv9D,EAAShiK,GAEb2/N,EAEJz8M,EAAMk4M,cAAe,KAAMp7N,EAAG,EAAG,EAAGu/N,EAAO9tN,MAAO8tN,EAAO7tN,OAAQmrN,EAAUC,EAAQyC,EAAOv4L,MAI1F9jB,EAAMk2M,WAAY,KAAMp5N,EAAG0/N,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ,EAAGmrN,EAAUC,EAAQyC,EAAOv4L,MAMxG29H,EAAQxC,iBAAkB,CAE3B,MAEMw9D,GAECC,GAEJ18M,EAAMg4M,aAAc,KAAMpjN,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,QAIxEwR,EAAMk4M,cAAe,KAAM,EAAG,EAAG,EAAG3+E,EAAMhrI,MAAOgrI,EAAM/qI,OAAQmrN,EAAUC,EAAQrgF,EAAMz1G,OAIvF9jB,EAAMk2M,WAAY,KAAM,EAAGsG,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ,EAAGmrN,EAAUC,EAAQrgF,EAAMz1G,WAM/F,GAAK29H,EAAQs4D,oBAAsB,CAEpC0C,GAAiBC,GAErB18M,EAAMg4M,aAAc,KAAMpjN,EAAQ4nN,EAAkB19D,EAAS,GAAIvwJ,MAAOuwJ,EAAS,GAAItwJ,QAItF,IAAM,IAAI1R,EAAI,EAAGowD,EAAK4xG,EAAQ9mK,OAAQ8E,EAAIowD,EAAIpwD,IAE7Cu/N,EAASv9D,EAAShiK,GAEb2kK,EAAQ9C,SAAWxS,GAEL,OAAbwtE,EAEC8C,EAEJz8M,EAAMo4M,wBAAyB,KAAMt7N,EAAG,EAAG,EAAGu/N,EAAO9tN,MAAO8tN,EAAO7tN,OAAQmrN,EAAU0C,EAAOv4L,MAI5F9jB,EAAM83M,qBAAsB,KAAMh7N,EAAG0/N,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ,EAAG6tN,EAAOv4L,MAM/F3vB,QAAQk/C,KAAM,kGAMVopK,EAEJz8M,EAAMk4M,cAAe,KAAMp7N,EAAG,EAAG,EAAGu/N,EAAO9tN,MAAO8tN,EAAO7tN,OAAQmrN,EAAUC,EAAQyC,EAAOv4L,MAI1F9jB,EAAMk2M,WAAY,KAAMp5N,EAAG0/N,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ,EAAGmrN,EAAUC,EAAQyC,EAAOv4L,KAQ1G,MAAO,GAAK29H,EAAQU,mBAEds6D,GAECC,GAEJ18M,EAAMi4M,aAAc,MAAOrjN,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,OAIvF3uF,EAAMm4M,cAAe,MAAO,EAAG,EAAG,EAAG,EAAG5+E,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,MAAOgrH,EAAUC,EAAQrgF,EAAMz1G,OAIxG9jB,EAAM+3M,WAAY,MAAO,EAAGyE,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,MAAO,EAAGgrH,EAAUC,EAAQrgF,EAAMz1G,WAI5G,GAAK29H,EAAQiB,gBAEd+5D,GAECC,GAEJ18M,EAAMi4M,aAAc,MAAOrjN,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,OAIvF3uF,EAAMm4M,cAAe,MAAO,EAAG,EAAG,EAAG,EAAG5+E,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,MAAOgrH,EAAUC,EAAQrgF,EAAMz1G,OAIxG9jB,EAAM+3M,WAAY,MAAO,EAAGyE,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,MAAO,EAAGgrH,EAAUC,EAAQrgF,EAAMz1G,WAI5G,GAAK29H,EAAQq4D,qBAEd2C,GAAiBC,EAErB18M,EAAMg4M,aAAc,KAAMpjN,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,QAIvEwR,EAAMk2M,WAAY,KAAM,EAAGsG,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ,EAAGmrN,EAAUC,EAAQ,WAY9F,GAAK96D,EAAQ9mK,OAAS,GAAKuhO,EAAe,CAEpCkD,GAAiBC,GAErB18M,EAAMg4M,aAAc,KAAMpjN,EAAQ4nN,EAAkB19D,EAAS,GAAIvwJ,MAAOuwJ,EAAS,GAAItwJ,QAItF,IAAM,IAAI1R,EAAI,EAAGowD,EAAK4xG,EAAQ9mK,OAAQ8E,EAAIowD,EAAIpwD,IAE7Cu/N,EAASv9D,EAAShiK,GAEb2/N,EAEJz8M,EAAMk4M,cAAe,KAAMp7N,EAAG,EAAG,EAAG68N,EAAUC,EAAQyC,GAItDr8M,EAAMk2M,WAAY,KAAMp5N,EAAG0/N,EAAkB7C,EAAUC,EAAQyC,GAMjE56D,EAAQxC,iBAAkB,CAE3B,MAEMw9D,GAECC,GAEJ18M,EAAMg4M,aAAc,KAAMpjN,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,QAIxEwR,EAAMk4M,cAAe,KAAM,EAAG,EAAG,EAAGyB,EAAUC,EAAQrgF,IAItDv5H,EAAMk2M,WAAY,KAAM,EAAGsG,EAAkB7C,EAAUC,EAAQrgF,GAQ7D+/E,EAA6B73D,EAAS83D,IAE1CC,EAAgBmC,GAIjB/5N,EAAOu6N,iBAAmBv6N,EAAOnI,QAE5BgoK,EAAQnC,UAAWmC,EAAQnC,SAAUmC,EAE3C,CAEAw4D,EAAkBqB,UAAY75D,EAAQhoK,OAEvC,CAiNA,SAASmjO,EAAyBzF,EAAa1lC,EAAchwB,EAASo7D,EAAYC,GAEjF,IAAMnD,EAAWpB,EAAMv9D,QAASyG,EAAQ9C,OAAQ8C,EAAQ5C,UAClD+6D,EAASrB,EAAMv9D,QAASyG,EAAQz8J,MAChCw3N,EAAmB/C,EAAmBh4D,EAAQ1C,eAAgB46D,EAAUC,EAAQn4D,EAAQ5C,UAC/D9wJ,EAAWoiB,IAAKshK,GAEjBsrC,wBAEN,QAAlBD,GAA6C,QAAlBA,EAE/B98M,EAAM+3M,WAAY+E,EAAe,EAAGN,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,OAAQijL,EAAa9iF,MAAO,EAAGgrH,EAAUC,EAAQ,MAIxI55M,EAAMk2M,WAAY4G,EAAe,EAAGN,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,OAAQ,EAAGmrN,EAAUC,EAAQ,OAMtH55M,EAAMk3M,gBAAiB,MAAOC,GAEzB6F,EAAoBvrC,GAExBinC,EAAmBuE,mCAAoC,MAAOJ,EAAYC,EAAe/uN,EAAWoiB,IAAKsxI,GAAUg5D,eAAgB,EAAGyC,EAAwBzrC,IAI9J6mC,EAAI6E,qBAAsB,MAAON,EAAYC,EAAe/uN,EAAWoiB,IAAKsxI,GAAUg5D,eAAgB,GAIvGz6M,EAAMk3M,gBAAiB,MAAO,KAE/B,CAIA,SAASkG,EAA0BC,EAAc5rC,EAAc6rC,GAI9D,GAFAhF,EAAIiF,iBAAkB,MAAOF,GAExB5rC,EAAa/vB,cAAiB+vB,EAAa9vB,cAAgB,CAE/D,IAAI66D,EAAmB,MAEvB,GAAKc,GAAiBN,EAAoBvrC,GAAiB,CAE1D,IAAM7vB,EAAe6vB,EAAa7vB,aAE7BA,GAAgBA,EAAa+6D,iBAE5B/6D,EAAa58J,OAAS4mJ,GAE1B4wE,EAAmB,MAER56D,EAAa58J,OAAS2mJ,KAEjC6wE,EAAmB,QAMrB,IAAM36D,EAAUq7D,EAAwBzrC,GAEnCurC,EAAoBvrC,GAExBinC,EAAmB8E,kCAAmC,MAAO37D,EAAS26D,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,QAIzH8pN,EAAImF,+BAAgC,MAAO57D,EAAS26D,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,OAIzG,MAEC8pN,EAAIoF,oBAAqB,MAAOlB,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,QAIpF8pN,EAAIqF,wBAAyB,MAAO,MAAO,MAAON,EAEnD,MAAO,GAAK5rC,EAAa/vB,aAAe+vB,EAAa9vB,cAAgB,CAEpE,IAAME,EAAUq7D,EAAwBzrC,GAEnC6rC,IAAwD,IAAvCN,EAAoBvrC,GAEzC6mC,EAAImF,+BAAgC,MAAO57D,EAAS,MAAO4vB,EAAaljL,MAAOkjL,EAAajjL,QAEjFwuN,EAAoBvrC,GAE/BinC,EAAmB8E,kCAAmC,MAAO37D,EAAS,MAAO4vB,EAAaljL,MAAOkjL,EAAajjL,QAI9G8pN,EAAIoF,oBAAqB,MAAO,MAAOjsC,EAAaljL,MAAOkjL,EAAajjL,QAKzE8pN,EAAIqF,wBAAyB,MAAO,MAAO,MAAON,EAEnD,KAAO,CAGN,IAAM57D,GAAwD,IAA9CgwB,EAAavuB,6BAAwCuuB,EAAahwB,QAAS,GAAMgwB,EAAahwB,QAExGk4D,EAAWpB,EAAMv9D,QAASyG,EAAQ9C,OAAQ8C,EAAQ5C,UAClD+6D,EAASrB,EAAMv9D,QAASyG,EAAQz8J,MAChCw3N,EAAmB/C,EAAmBh4D,EAAQ1C,eAAgB46D,EAAUC,EAAQn4D,EAAQ5C,UACxFgD,EAAUq7D,EAAwBzrC,GAEnC6rC,IAAwD,IAAvCN,EAAoBvrC,GAEzC6mC,EAAImF,+BAAgC,MAAO57D,EAAS26D,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,QAE5FwuN,EAAoBvrC,GAE/BinC,EAAmB8E,kCAAmC,MAAO37D,EAAS26D,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,QAIzH8pN,EAAIoF,oBAAqB,MAAOlB,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,OAIrF,CAEA8pN,EAAIiF,iBAAkB,MAAO,KAE9B,CAiEA,SAASK,EAAwBnsC,GAEhC,IAAM+oC,EAAyBzsN,EAAWoiB,IAAKshK,GACzCosC,GAAoD,IAAzCpsC,EAAaE,wBAE9B,GAAKF,EAAa7vB,eAAkB44D,EAAuBsD,0BAA4B,CAEtF,GAAKD,EAAS,MAAM,IAAI3/N,MAAO,6DArEjC,SAA4Bi5N,EAAa1lC,GAGxC,GADiBA,GAAgBA,EAAaE,wBAChC,MAAM,IAAIzzL,MAAO,2DAI/B,GAFA8hB,EAAMk3M,gBAAiB,MAAOC,IAErB1lC,EAAa7vB,eAAgB6vB,EAAa7vB,aAAa+6D,eAE/D,MAAM,IAAIz+N,MAAO,uEAKX6P,EAAWoiB,IAAKshK,EAAa7vB,cAAe64D,gBACjDhpC,EAAa7vB,aAAaroB,MAAMhrI,QAAUkjL,EAAaljL,OACvDkjL,EAAa7vB,aAAaroB,MAAM/qI,SAAWijL,EAAajjL,SAEzDijL,EAAa7vB,aAAaroB,MAAMhrI,MAAQkjL,EAAaljL,MACrDkjL,EAAa7vB,aAAaroB,MAAM/qI,OAASijL,EAAajjL,OACtDijL,EAAa7vB,aAAalC,aAAc,GAIzCi7C,EAAclpB,EAAa7vB,aAAc,GAEzC,IAAMm8D,EAAoBhwN,EAAWoiB,IAAKshK,EAAa7vB,cAAe64D,eAChE54D,EAAUq7D,EAAwBzrC,GAExC,GAAKA,EAAa7vB,aAAajD,SAAWrS,GAEpC0wE,EAAoBvrC,GAExBinC,EAAmBuE,mCAAoC,MAAO,MAAO,KAAMc,EAAmB,EAAGl8D,GAIjGy2D,EAAI6E,qBAAsB,MAAO,MAAO,KAAMY,EAAmB,OAI5D,IAAKtsC,EAAa7vB,aAAajD,SAAWpS,GAchD,MAAM,IAAIruJ,MAAO,+BAZZ8+N,EAAoBvrC,GAExBinC,EAAmBuE,mCAAoC,MAAO,MAAO,KAAMc,EAAmB,EAAGl8D,GAIjGy2D,EAAI6E,qBAAsB,MAAO,MAAO,KAAMY,EAAmB,EAQnE,CAED,CAYEC,CAAmBxD,EAAuBG,mBAAoBlpC,EAE/D,MAEC,GAAKosC,EAAS,CAEbrD,EAAuBI,mBAAqB,GAE5C,IAAM,IAAI99N,EAAI,EAAGA,EAAI,EAAGA,IAEvBkjB,EAAMk3M,gBAAiB,MAAOsD,EAAuBG,mBAAoB79N,IACzE09N,EAAuBI,mBAAoB99N,GAAMw7N,EAAI2F,qBACrDb,EAA0B5C,EAAuBI,mBAAoB99N,GAAK20L,GAAc,EAI1F,MAECzxK,EAAMk3M,gBAAiB,MAAOsD,EAAuBG,oBACrDH,EAAuBI,mBAAqBtC,EAAI2F,qBAChDb,EAA0B5C,EAAuBI,mBAAoBnpC,GAAc,GAMrFzxK,EAAMk3M,gBAAiB,MAAO,KAE/B,CA0RA,SAASgG,EAAwBzrC,GAEhC,OAAOp0L,KAAKiuC,IAAKugK,EAAYpa,EAAa5vB,QAE3C,CAEA,SAASm7D,EAAoBvrC,GAE5B,IAAM+oC,EAAyBzsN,EAAWoiB,IAAKshK,GAE/C,OAAOoF,GAAYpF,EAAa5vB,QAAU,IAAkE,IAA7Dn1E,EAAWl+C,IAAK,0CAAqG,IAAhDgsL,EAAuB0D,oBAE5I,CAiBA,SAAS3B,EAAkB96D,EAASloB,GAEnC,IAAMslB,EAAW4C,EAAQ5C,SACnBF,EAAS8C,EAAQ9C,OACjB35J,EAAOy8J,EAAQz8J,KAErB,OAAqC,IAAhCy8J,EAAQs4D,sBAA2D,IAA3Bt4D,EAAQknD,gBAA2BlnD,EAAQ9C,SAAWlN,IAE9FoN,IAAaxP,KAIZwP,IAAavP,IAEC,IAAbunC,GAIkC,IAAjCnqG,EAAWl+C,IAAK,aAAyBmwH,IAAWxS,IAExDsV,EAAQ9C,OAASlN,GAIjBgQ,EAAQ/C,UAAYzT,GACpBwW,EAAQxC,iBAAkB,GAM1B1lB,EAAQ2jB,GAAWihE,aAAc5kF,GAQ7BolB,IAAWxS,IAAcnnJ,IAASsmJ,IAEtCn3I,QAAQk/C,KAAM,2FAQhBl/C,QAAQwN,MAAO,qDAAsDk9I,IA3CkDtlB,CAmD1H,CAIAn5I,KAAKk4M,oBA95CL,WAEC,IAAM8lB,EAAcjD,EAUpB,OARKiD,GAAepzB,GAEnB72L,QAAQk/C,KAAM,sCAAwC+qK,EAAc,+CAAiDpzB,GAItHmwB,GAAgB,EAETiD,CAER,EAi5CAh+N,KAAKi+N,kBAr6CL,WAEClD,EAAe,CAEhB,EAm6CA/6N,KAAKu6M,aAAeA,EACpBv6M,KAAK66M,kBA11CL,SAA4Bx5C,EAAS25D,GAEpC,IAAMnB,EAAoBlsN,EAAWoiB,IAAKsxI,GAErCA,EAAQhoK,QAAU,GAAKwgO,EAAkBqB,YAAc75D,EAAQhoK,QAEnE8hO,EAAetB,EAAmBx4D,EAAS25D,IAK5Cp7M,EAAMg3M,cAAe,MAAQoE,GAC7Bp7M,EAAMg2M,YAAa,MAAOiE,EAAkBQ,gBAE7C,EA60CAr6N,KAAKy6M,aA30CL,SAAuBp5C,EAAS25D,GAE/B,IAAMnB,EAAoBlsN,EAAWoiB,IAAKsxI,GAErCA,EAAQhoK,QAAU,GAAKwgO,EAAkBqB,YAAc75D,EAAQhoK,QAEnE8hO,EAAetB,EAAmBx4D,EAAS25D,IAK5Cp7M,EAAMg3M,cAAe,MAAQoE,GAC7Bp7M,EAAMg2M,YAAa,MAAOiE,EAAkBQ,gBAE7C,EA8zCAr6N,KAAK26M,eA5zCL,SAAyBt5C,EAAS25D,GAEjC,IAAMnB,EAAoBlsN,EAAWoiB,IAAKsxI,GAErCA,EAAQhoK,QAAU,GAAKwgO,EAAkBqB,YAAc75D,EAAQhoK,QAmgBrE,SAA4BwgO,EAAmBx4D,EAAS25D,GAEvD,GAA8B,IAAzB35D,EAAQloB,MAAMvhJ,OAAe,OAElC,IAAMgkO,EAAcD,EAAa9B,EAAmBx4D,GAC9C7/J,EAAS6/J,EAAQ7/J,OAKvB,GAHAoe,EAAMg3M,cAAe,MAAQoE,GAC7Bp7M,EAAMg2M,YAAa,MAAOiE,EAAkBQ,gBAEvC74N,EAAOnI,UAAYmI,EAAOu6N,mBAAoC,IAAhBH,EAAuB,CAEzE1D,EAAI8D,YAAa,MAAO36D,EAAQtC,OAChCm5D,EAAI8D,YAAa,MAAO36D,EAAQvC,kBAChCo5D,EAAI8D,YAAa,KAAM36D,EAAQrC,iBAC/Bk5D,EAAI8D,YAAa,MAAO,GAOxB,IALA,IAAMkC,EAAiB78D,EAAQs4D,qBAAuBt4D,EAAQloB,MAAO,GAAIwgF,oBACnEj8D,EAAkB2D,EAAQloB,MAAO,IAAOkoB,EAAQloB,MAAO,GAAIukB,cAE3DygE,EAAY,GAERzhO,EAAI,EAAGA,EAAI,EAAGA,IAQtByhO,EAAWzhO,GANLwhO,GAAkBxgE,EAMPA,EAAgB2D,EAAQloB,MAAOz8I,GAAIy8I,MAAQkoB,EAAQloB,MAAOz8I,GAJ1Dm8N,EAAax3D,EAAQloB,MAAOz8I,IAAK,GAAO,EAAMquM,GAQhEozB,EAAWzhO,GAAMy/N,EAAkB96D,EAAS88D,EAAWzhO,IAIxD,IAYIgiK,EAZEvlB,EAAQglF,EAAW,GACxBhF,EAAeF,EAAgB9/E,IAAWs9C,EAC1C8iC,EAAWpB,EAAMv9D,QAASyG,EAAQ9C,OAAQ8C,EAAQ5C,UAClD+6D,EAASrB,EAAMv9D,QAASyG,EAAQz8J,MAChCw3N,EAAmB/C,EAAmBh4D,EAAQ1C,eAAgB46D,EAAUC,EAAQn4D,EAAQ5C,UAEnF49D,EAAkB5lC,IAAuC,IAA3Bp1B,EAAQknD,eACtC+T,OAAmDlyN,IAAhCyvN,EAAkBqB,UACvC1mN,EAASilN,EAAcp4D,EAASloB,EAAOggF,GAM3C,GAJAmC,EAAsB,MAAOj6D,EAAS83D,GAIjC+E,EAAe,CAEd7B,GAAiBC,GAErB18M,EAAMg4M,aAAc,MAAOpjN,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,QAIzE,IAAM,IAAI1R,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9BgiK,EAAUy/D,EAAWzhO,GAAIgiK,QAEzB,IAAM,IAAI7uJ,EAAI,EAAGA,EAAI6uJ,EAAQ9mK,OAAQiY,IAAO,CAE3C,IAAMosN,EAASv9D,EAAS7uJ,GAEnBwxJ,EAAQ9C,SAAWxS,GAEL,OAAbwtE,EAEC8C,EAEJz8M,EAAMo4M,wBAAyB,MAAQt7N,EAAGmT,EAAG,EAAG,EAAGosN,EAAO9tN,MAAO8tN,EAAO7tN,OAAQmrN,EAAU0C,EAAOv4L,MAIjG9jB,EAAM83M,qBAAsB,MAAQh7N,EAAGmT,EAAGusN,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ,EAAG6tN,EAAOv4L,MAMpG3vB,QAAQk/C,KAAM,mGAMVopK,EAEJz8M,EAAMk4M,cAAe,MAAQp7N,EAAGmT,EAAG,EAAG,EAAGosN,EAAO9tN,MAAO8tN,EAAO7tN,OAAQmrN,EAAUC,EAAQyC,EAAOv4L,MAI/F9jB,EAAMk2M,WAAY,MAAQp5N,EAAGmT,EAAGusN,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ,EAAGmrN,EAAUC,EAAQyC,EAAOv4L,KAM9G,CAED,CAED,KAAO,CAENg7H,EAAU2C,EAAQ3C,QAEb29D,GAAiBC,IAMhB59D,EAAQ9mK,OAAS,GAAI4c,IAE1BoL,EAAMg4M,aAAc,MAAOpjN,EAAQ4nN,EAAkB+B,EAAW,GAAIhwN,MAAOgwN,EAAW,GAAI/vN,SAI3F,IAAM,IAAI1R,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAKghK,EAAgB,CAEf2+D,EAEJz8M,EAAMk4M,cAAe,MAAQp7N,EAAG,EAAG,EAAG,EAAGyhO,EAAWzhO,GAAIyR,MAAOgwN,EAAWzhO,GAAI0R,OAAQmrN,EAAUC,EAAQ2E,EAAWzhO,GAAIgnC,MAIvH9jB,EAAMk2M,WAAY,MAAQp5N,EAAG,EAAG0/N,EAAkB+B,EAAWzhO,GAAIyR,MAAOgwN,EAAWzhO,GAAI0R,OAAQ,EAAGmrN,EAAUC,EAAQ2E,EAAWzhO,GAAIgnC,MAIpI,IAAM,IAAI7zB,EAAI,EAAGA,EAAI6uJ,EAAQ9mK,OAAQiY,IAAO,CAE3C,IACMuuN,EADS1/D,EAAS7uJ,GACGspI,MAAOz8I,GAAIy8I,MAEjCkjF,EAEJz8M,EAAMk4M,cAAe,MAAQp7N,EAAGmT,EAAI,EAAG,EAAG,EAAGuuN,EAAYjwN,MAAOiwN,EAAYhwN,OAAQmrN,EAAUC,EAAQ4E,EAAY16L,MAIlH9jB,EAAMk2M,WAAY,MAAQp5N,EAAGmT,EAAI,EAAGusN,EAAkBgC,EAAYjwN,MAAOiwN,EAAYhwN,OAAQ,EAAGmrN,EAAUC,EAAQ4E,EAAY16L,KAIhI,CAED,KAAO,CAED24L,EAEJz8M,EAAMk4M,cAAe,MAAQp7N,EAAG,EAAG,EAAG,EAAG68N,EAAUC,EAAQ2E,EAAWzhO,IAItEkjB,EAAMk2M,WAAY,MAAQp5N,EAAG,EAAG0/N,EAAkB7C,EAAUC,EAAQ2E,EAAWzhO,IAIhF,IAAM,IAAImT,EAAI,EAAGA,EAAI6uJ,EAAQ9mK,OAAQiY,IAAO,CAE3C,IAAMosN,EAASv9D,EAAS7uJ,GAEnBwsN,EAEJz8M,EAAMk4M,cAAe,MAAQp7N,EAAGmT,EAAI,EAAG,EAAG,EAAG0pN,EAAUC,EAAQyC,EAAO9iF,MAAOz8I,IAI7EkjB,EAAMk2M,WAAY,MAAQp5N,EAAGmT,EAAI,EAAGusN,EAAkB7C,EAAUC,EAAQyC,EAAO9iF,MAAOz8I,GAIxF,CAED,CAIF,CAEKw8N,EAA6B73D,EAAS83D,IAG1CC,EAAgB,OAIjB53N,EAAOu6N,iBAAmBv6N,EAAOnI,QAE5BgoK,EAAQnC,UAAWmC,EAAQnC,SAAUmC,EAE3C,CAEAw4D,EAAkBqB,UAAY75D,EAAQhoK,OAEvC,CA3sBEglO,CAAmBxE,EAAmBx4D,EAAS25D,IAKhDp7M,EAAMg3M,cAAe,MAAQoE,GAC7Bp7M,EAAMg2M,YAAa,MAAOiE,EAAkBQ,gBAE7C,EA+yCAr6N,KAAKs+N,eAxXL,SAAyBjtC,EAAcktC,EAAc/8D,GAEpD,IAAM44D,EAAyBzsN,EAAWoiB,IAAKshK,QAEzBjnL,IAAjBm0N,GAEJ/B,EAAyBpC,EAAuBG,mBAAoBlpC,EAAcA,EAAahwB,QAAS,MAAO,WAI1Fj3J,IAAjBo3J,GAEJg8D,EAAwBnsC,EAI1B,EAyWArxL,KAAKw+N,kBAtWL,SAA4BntC,GAE3B,IAAMhwB,EAAUgwB,EAAahwB,QAEvB+4D,EAAyBzsN,EAAWoiB,IAAKshK,GACzCwoC,EAAoBlsN,EAAWoiB,IAAKsxI,GAE1CgwB,EAAaztL,iBAAkB,UAAWu2N,IAES,IAA9C9oC,EAAavuB,oCAEyB14J,IAArCyvN,EAAkBQ,iBAEtBR,EAAkBQ,eAAiBnC,EAAIvC,iBAIxCkE,EAAkBqB,UAAY75D,EAAQhoK,QACtCg1F,EAAK+lH,OAAO70C,YAIb,IAAMk+D,GAAoD,IAAzCpsC,EAAaE,wBACxBktC,GAA0E,IAA9CptC,EAAavuB,6BACzCq2D,EAAeF,EAAgB5nC,IAAkBoF,EAIvD,GAAKgnC,EAAS,CAEbrD,EAAuBG,mBAAqB,GAE5C,IAAM,IAAI79N,EAAI,EAAGA,EAAI,EAAGA,IAEvB09N,EAAuBG,mBAAoB79N,GAAMw7N,EAAIwG,mBAIvD,MAIC,GAFAtE,EAAuBG,mBAAqBrC,EAAIwG,oBAE3CD,EAEJ,GAAKjoC,EAAatH,YAIjB,IAFA,IAAM3vB,EAAW8xB,EAAahwB,QAEpB3kK,EAAI,EAAGowD,EAAKyyG,EAAS3nK,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAErD,IAAMm+N,EAAuBltN,EAAWoiB,IAAKwvI,EAAU7iK,SAEV0N,IAAxCywN,EAAqBR,iBAEzBQ,EAAqBR,eAAiBnC,EAAIvC,gBAE1CtnI,EAAK+lH,OAAO70C,WAId,MAIAxrJ,QAAQk/C,KAAM,sHAIT,GAAOwjI,GAAYpF,EAAa5vB,QAAU,IAA8C,IAAvCm7D,EAAoBvrC,GAA2B,CAEtG+oC,EAAuBM,+BAAiCxC,EAAIwG,oBAC5DtE,EAAuBO,yBAA2BzC,EAAI2F,qBAEtD3F,EAAIiF,iBAAkB,MAAO/C,EAAuBO,0BAEpD,IAAMpB,EAAWpB,EAAMv9D,QAASyG,EAAQ9C,OAAQ8C,EAAQ5C,UAClD+6D,EAASrB,EAAMv9D,QAASyG,EAAQz8J,MAChCw3N,EAAmB/C,EAAmBh4D,EAAQ1C,eAAgB46D,EAAUC,EAAQn4D,EAAQ5C,UACxFgD,EAAUq7D,EAAwBzrC,GACxC6mC,EAAImF,+BAAgC,MAAO57D,EAAS26D,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,QAEvGwR,EAAMk3M,gBAAiB,MAAOsD,EAAuBM,gCACrDxC,EAAIqF,wBAAyB,MAAO,MAAO,MAAOnD,EAAuBO,0BACzEzC,EAAIiF,iBAAkB,MAAO,MAExB9rC,EAAa/vB,cAEjB84D,EAAuBQ,yBAA2B1C,EAAI2F,qBACtDb,EAA0B5C,EAAuBQ,yBAA0BvpC,GAAc,IAI1FzxK,EAAMk3M,gBAAiB,MAAO,KAE/B,CAMD,GAAK2G,EAAS,CAEb79M,EAAMg2M,YAAa,MAAOiE,EAAkBQ,gBAC5CiB,EAAsB,MAAOj6D,EAAS83D,GAEtC,IAAM,IAAIz8N,EAAI,EAAGA,EAAI,EAAGA,IAEvB8/N,EAAyBpC,EAAuBG,mBAAoB79N,GAAK20L,EAAchwB,EAAS,MAAO,MAAQ3kK,GAI3Gw8N,EAA6B73D,EAAS83D,IAE1CC,EAAgB,OAIjBx5M,EAAM63M,eAEP,MAAO,GAAKgH,EAA0B,CAIrC,IAFA,IAAMl/D,EAAW8xB,EAAahwB,QAEpB3kK,EAAI,EAAGowD,EAAKyyG,EAAS3nK,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAErD,IAAM+/N,EAAal9D,EAAU7iK,GACvBm+N,EAAuBltN,EAAWoiB,IAAK0sM,GAE7C78M,EAAMg2M,YAAa,KAAMiF,EAAqBR,gBAC9CiB,EAAsB,KAAMmB,EAAYtD,GACxCqD,EAAyBpC,EAAuBG,mBAAoBlpC,EAAcorC,EAAY,MAAQ//N,EAAG,MAEpGw8N,EAA6BuD,EAAYtD,IAE7CC,EAAgB,KAIlB,CAEAx5M,EAAM63M,eAEP,KAAO,CAEN,IAAIkH,EAAgB,MAEfttC,EAAa3uB,uBAAyB2uB,EAAanvB,4BAElDu0B,EAEJkoC,EAAgBttC,EAAa3uB,sBAAwB,MAAQ,MAI7D3uJ,QAAQwN,MAAO,oGAMjB3B,EAAMg2M,YAAa+I,EAAe9E,EAAkBQ,gBACpDiB,EAAsBqD,EAAet9D,EAAS83D,GAC9CqD,EAAyBpC,EAAuBG,mBAAoBlpC,EAAchwB,EAAS,MAAOs9D,GAE7FzF,EAA6B73D,EAAS83D,IAE1CC,EAAgBuF,GAIjB/+M,EAAM63M,eAEP,CAIKpmC,EAAa/vB,aAEjBk8D,EAAwBnsC,EAI1B,EAiLArxL,KAAK4+N,yBA/KL,SAAmCvtC,GAMlC,IAJA,IAAM8nC,EAAeF,EAAgB5nC,IAAkBoF,EAEjDl3B,GAAyD,IAA9C8xB,EAAavuB,6BAAwCuuB,EAAahwB,QAAU,CAAEgwB,EAAahwB,SAElG3kK,EAAI,EAAGowD,EAAKyyG,EAAS3nK,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAErD,IAAM2kK,EAAU9B,EAAU7iK,GAE1B,GAAKw8N,EAA6B73D,EAAS83D,GAAiB,CAE3D,IAAM53N,EAAS8vL,EAAaE,wBAA0B,MAAQ,KACxDgmC,EAAe5pN,EAAWoiB,IAAKsxI,GAAUg5D,eAE/Cz6M,EAAMg2M,YAAar0N,EAAQg2N,GAC3B6B,EAAgB73N,GAChBqe,EAAM63M,eAEP,CAED,CAED,EAyJAz3N,KAAK6+N,8BAvJL,SAAwCxtC,GAEvC,GAAOoF,GAAYpF,EAAa5vB,QAAU,IAA8C,IAAvCm7D,EAAoBvrC,GAA2B,CAE/F,IAAMljL,EAAQkjL,EAAaljL,MACrBC,EAASijL,EAAajjL,OACxBksH,EAAO,MACLwkG,EAAoB,CAAE,OACtBC,EAAa1tC,EAAa9vB,cAAgB,MAAQ,MAEnD8vB,EAAa/vB,aAEjBw9D,EAAkBhiO,KAAMiiO,GAIzB,IAAM3E,EAAyBzsN,EAAWoiB,IAAKshK,GACzC2tC,OAAqE50N,IAA/CgwN,EAAuB6E,qBAAsC7E,EAAuB6E,qBAErF,IAAtBD,IAEC3tC,EAAa/vB,cAAchnC,GAAQ,KACnC+2D,EAAa9vB,gBAAgBjnC,GAAQ,OAI3C16G,EAAMk3M,gBAAiB,MAAOsD,EAAuBM,gCACrD96M,EAAMk3M,gBAAiB,MAAOsD,EAAuBG,qBAE1B,IAAtByE,IAEJ9G,EAAIgH,sBAAuB,MAAO,CAAEH,IACpC7G,EAAIgH,sBAAuB,MAAO,CAAEH,KAIrC7G,EAAIiH,gBAAiB,EAAG,EAAGhxN,EAAOC,EAAQ,EAAG,EAAGD,EAAOC,EAAQksH,EAAM,MAEhEi+F,GAEJL,EAAIgH,sBAAuB,MAAOJ,GAInCl/M,EAAMk3M,gBAAiB,MAAO,MAC9Bl3M,EAAMk3M,gBAAiB,MAAOsD,EAAuBM,+BAEtD,CAED,EAuGA16N,KAAKw9N,uBAAyBA,EAC9Bx9N,KAAKw8N,wBAA0BA,EAC/Bx8N,KAAK48N,mBAAqBA,CAE3B,CAEA,SAASwC,GAAYxyK,EAAI0/B,EAAYkqG,GAEpC,IAAMC,EAAWD,EAAaC,SA0P9B,MAAO,CAAE77B,QAxPT,SAAkB5zJ,GAAqB,IAElCs/L,EAFgB7nC,EAAQx+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAI/B,GAAK+G,IAAMkkJ,GAAmB,OAAO,KACrC,GAAKlkJ,IAAM0kJ,GAAwB,OAAO,MAC1C,GAAK1kJ,IAAM2kJ,GAAwB,OAAO,MAE1C,GAAK3kJ,IAAMmkJ,GAAW,OAAO,KAC7B,GAAKnkJ,IAAMokJ,GAAY,OAAO,KAC9B,GAAKpkJ,IAAMqkJ,GAAoB,OAAO,KACtC,GAAKrkJ,IAAMskJ,GAAU,OAAO,KAC5B,GAAKtkJ,IAAMukJ,GAAkB,OAAO,KACpC,GAAKvkJ,IAAMwkJ,GAAY,OAAO,KAE9B,GAAKxkJ,IAAMykJ,GAEV,OAAKgrC,EAAkB,KAIJ,QAFnB6P,EAAYh6G,EAAWv8D,IAAK,2BAIpBu2K,EAAU+4B,eAIV,KAMT,GAAKr4N,IAAM6kJ,GAAc,OAAO,KAChC,GAAK7kJ,IAAM+kJ,GAAa,OAAO,KAC/B,GAAK/kJ,IAAMglJ,GAAkB,OAAO,KACpC,GAAKhlJ,IAAMilJ,GAAuB,OAAO,KACzC,GAAKjlJ,IAAMklJ,GAAc,OAAO,KAChC,GAAKllJ,IAAMmlJ,GAAqB,OAAO,MACvC,GAAKnlJ,IAAMolJ,GAAY,OAAO,KAE9B,GAAKplJ,IAAM8kJ,GAGV,OADA/3I,QAAQk/C,KAAM,sIACP,KAMR,GAAKjsD,IAAMqqJ,GAIV,OAAmB,QAFnBi1C,EAAYh6G,EAAWv8D,IAAK,aAIpBu2K,EAAUg5B,eAIV,KAQT,GAAKt4N,IAAMqlJ,GAAmB,OAAO,MACrC,GAAKrlJ,IAAMslJ,GAAW,OAAO,MAC7B,GAAKtlJ,IAAMulJ,GAAkB,OAAO,MACpC,GAAKvlJ,IAAMwlJ,GAAoB,OAAO,MAItC,GAAKxlJ,IAAMylJ,IAAwBzlJ,IAAM0lJ,IAAyB1lJ,IAAM2lJ,IAAyB3lJ,IAAM4lJ,GAEtG,GAAK6R,IAAavP,GAAe,CAIhC,GAAmB,QAFnBo3C,EAAYh6G,EAAWv8D,IAAK,uCAW3B,OAAO,KAPP,GAAK/oB,IAAMylJ,GAAuB,OAAO65C,EAAUi5B,8BACnD,GAAKv4N,IAAM0lJ,GAAwB,OAAO45C,EAAUk5B,oCACpD,GAAKx4N,IAAM2lJ,GAAwB,OAAO25C,EAAUm5B,oCACpD,GAAKz4N,IAAM4lJ,GAAwB,OAAO05C,EAAUo5B,mCAQtD,KAAO,CAIN,GAAmB,QAFnBp5B,EAAYh6G,EAAWv8D,IAAK,kCAW3B,OAAO,KAPP,GAAK/oB,IAAMylJ,GAAuB,OAAO65C,EAAUq5B,6BACnD,GAAK34N,IAAM0lJ,GAAwB,OAAO45C,EAAUs5B,8BACpD,GAAK54N,IAAM2lJ,GAAwB,OAAO25C,EAAUu5B,8BACpD,GAAK74N,IAAM4lJ,GAAwB,OAAO05C,EAAUw5B,6BAQtD,CAMD,GAAK94N,IAAM6lJ,IAA2B7lJ,IAAM8lJ,IAA2B9lJ,IAAM+lJ,IAA4B/lJ,IAAMgmJ,GAA2B,CAIzI,GAAmB,QAFnBs5C,EAAYh6G,EAAWv8D,IAAK,mCAW3B,OAAO,KAPP,GAAK/oB,IAAM6lJ,GAA0B,OAAOy5C,EAAUy5B,gCACtD,GAAK/4N,IAAM8lJ,GAA0B,OAAOw5C,EAAU05B,gCACtD,GAAKh5N,IAAM+lJ,GAA2B,OAAOu5C,EAAU25B,iCACvD,GAAKj5N,IAAMgmJ,GAA2B,OAAOs5C,EAAU45B,gCAQzD,CAIA,GAAKl5N,IAAMimJ,GAIV,OAAmB,QAFnBq5C,EAAYh6G,EAAWv8D,IAAK,kCAIpBu2K,EAAU65B,0BAIV,KAQT,GAAKn5N,IAAMkmJ,IAAmBlmJ,IAAMmmJ,GAAuB,CAI1D,GAAmB,QAFnBm5C,EAAYh6G,EAAWv8D,IAAK,iCAS3B,OAAO,KALP,GAAK/oB,IAAMkmJ,GAAkB,OAASuR,IAAavP,GAAiBo3C,EAAU85B,sBAAwB95B,EAAU+5B,qBAChH,GAAKr5N,IAAMmmJ,GAAuB,OAASsR,IAAavP,GAAiBo3C,EAAUg6B,iCAAmCh6B,EAAUi6B,yBAQlI,CAIA,GAAKv5N,IAAMomJ,IAAwBpmJ,IAAMqmJ,IAAwBrmJ,IAAMsmJ,IACtEtmJ,IAAMumJ,IAAwBvmJ,IAAMwmJ,IAAwBxmJ,IAAMymJ,IAClEzmJ,IAAM0mJ,IAAwB1mJ,IAAM2mJ,IAAwB3mJ,IAAM4mJ,IAClE5mJ,IAAM6mJ,IAAyB7mJ,IAAM8mJ,IAAyB9mJ,IAAM+mJ,IACpE/mJ,IAAMgnJ,IAA0BhnJ,IAAMinJ,GAAyB,CAI/D,GAAmB,QAFnBq4C,EAAYh6G,EAAWv8D,IAAK,kCAqB3B,OAAO,KAjBP,GAAK/oB,IAAMomJ,GAAuB,OAASqR,IAAavP,GAAiBo3C,EAAUk6B,qCAAuCl6B,EAAUm6B,6BACpI,GAAKz5N,IAAMqmJ,GAAuB,OAASoR,IAAavP,GAAiBo3C,EAAUo6B,qCAAuCp6B,EAAUq6B,6BACpI,GAAK35N,IAAMsmJ,GAAuB,OAASmR,IAAavP,GAAiBo3C,EAAUs6B,qCAAuCt6B,EAAUu6B,6BACpI,GAAK75N,IAAMumJ,GAAuB,OAASkR,IAAavP,GAAiBo3C,EAAUw6B,qCAAuCx6B,EAAUy6B,6BACpI,GAAK/5N,IAAMwmJ,GAAuB,OAASiR,IAAavP,GAAiBo3C,EAAU06B,qCAAuC16B,EAAU26B,6BACpI,GAAKj6N,IAAMymJ,GAAuB,OAASgR,IAAavP,GAAiBo3C,EAAU46B,qCAAuC56B,EAAU66B,6BACpI,GAAKn6N,IAAM0mJ,GAAuB,OAAS+Q,IAAavP,GAAiBo3C,EAAU86B,qCAAuC96B,EAAU+6B,6BACpI,GAAKr6N,IAAM2mJ,GAAuB,OAAS8Q,IAAavP,GAAiBo3C,EAAUg7B,qCAAuCh7B,EAAUi7B,6BACpI,GAAKv6N,IAAM4mJ,GAAwB,OAAS6Q,IAAavP,GAAiBo3C,EAAUk7B,sCAAwCl7B,EAAUm7B,8BACtI,GAAKz6N,IAAM6mJ,GAAwB,OAAS4Q,IAAavP,GAAiBo3C,EAAUo7B,sCAAwCp7B,EAAUq7B,8BACtI,GAAK36N,IAAM8mJ,GAAwB,OAAS2Q,IAAavP,GAAiBo3C,EAAUs7B,sCAAwCt7B,EAAUu7B,8BACtI,GAAK76N,IAAM+mJ,GAAyB,OAAS0Q,IAAavP,GAAiBo3C,EAAUw7B,uCAAyCx7B,EAAUy7B,+BACxI,GAAK/6N,IAAMgnJ,GAAyB,OAASyQ,IAAavP,GAAiBo3C,EAAU07B,uCAAyC17B,EAAU27B,+BACxI,GAAKj7N,IAAMinJ,GAAyB,OAASwQ,IAAavP,GAAiBo3C,EAAU47B,uCAAyC57B,EAAU67B,8BAQ1I,CAIA,GAAKn7N,IAAMknJ,GAAmB,CAI7B,GAAmB,QAFnBo4C,EAAYh6G,EAAWv8D,IAAK,iCAQ3B,OAAO,KAJP,GAAK/oB,IAAMknJ,GAAmB,OAASuQ,IAAavP,GAAiBo3C,EAAU87B,qCAAuC97B,EAAU+7B,8BAQlI,CAIA,OAAKr7N,IAAM4kJ,GAEL6qC,EAAkB,MAIJ,QAFnB6P,EAAYh6G,EAAWv8D,IAAK,wBAIpBu2K,EAAUg8B,wBAIV,UAZT,CAkBD,EAID,CAAC,IAEKC,GAAW,SAAAC,GAAAxmN,EAAAumN,EAAAC,GAAA,IAAAC,EAAA9nN,EAAA4nN,GAEhB,SAAAA,IAA0B,IAAAG,EAAb3/N,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAIC,OAJCwK,EAAA,KAAA83N,IAEtBG,EAAAD,EAAA5lO,KAAA,OAEK8lO,QAAU5/N,EAAM2/N,CAEtB,CAAC,OAAAn5N,EAAAg5N,EAAA,CARe,CAAS1yC,IAY1B0yC,GAAY3lO,UAAUgmO,eAAgB,EAAK,IAErCC,GAAK,SAAAC,GAAA9mN,EAAA6mN,EAAAC,GAAA,IAAAC,EAAApoN,EAAAkoN,GAEV,SAAAA,IAAc,IAAAG,EAIO,OAJPv4N,EAAA,KAAAo4N,IAEbG,EAAAD,EAAAlmO,KAAA,OAEK+H,KAAO,QAAQo+N,CAErB,CAAC,OAAAz5N,EAAAs5N,EAAA,CARS,CAASrtD,IAYpBqtD,GAAMjmO,UAAUqmO,SAAU,EAE1B,IAAMC,GAAa,CAAEt+N,KAAM,QAErBu+N,GAAe,WAEpB,SAAAA,IAAc14N,EAAA,KAAA04N,GAEbnjO,KAAKojO,WAAa,KAClBpjO,KAAKqjO,MAAQ,KACbrjO,KAAKsjO,MAAQ,IAEd,CAwRC,OAxRA/5N,EAAA45N,EAAA,EAAA3gO,IAAA,eAAA/D,MAED,WAaC,OAXoB,OAAfuB,KAAKsjO,QAETtjO,KAAKsjO,MAAQ,IAAIT,GACjB7iO,KAAKsjO,MAAM1kE,kBAAmB,EAC9B5+J,KAAKsjO,MAAM35J,SAAU,EAErB3pE,KAAKsjO,MAAMC,OAAS,CAAC,EACrBvjO,KAAKsjO,MAAME,WAAa,CAAEC,UAAU,IAI9BzjO,KAAKsjO,KAEb,GAAC,CAAA9gO,IAAA,oBAAA/D,MAED,WAcC,OAZyB,OAApBuB,KAAKojO,aAETpjO,KAAKojO,WAAa,IAAIP,GACtB7iO,KAAKojO,WAAWxkE,kBAAmB,EACnC5+J,KAAKojO,WAAWz5J,SAAU,EAC1B3pE,KAAKojO,WAAWM,mBAAoB,EACpC1jO,KAAKojO,WAAWO,eAAiB,IAAI78D,GACrC9mK,KAAKojO,WAAWQ,oBAAqB,EACrC5jO,KAAKojO,WAAWS,gBAAkB,IAAI/8D,IAIhC9mK,KAAKojO,UAEb,GAAC,CAAA5gO,IAAA,eAAA/D,MAED,WAcC,OAZoB,OAAfuB,KAAKqjO,QAETrjO,KAAKqjO,MAAQ,IAAIR,GACjB7iO,KAAKqjO,MAAMzkE,kBAAmB,EAC9B5+J,KAAKqjO,MAAM15J,SAAU,EACrB3pE,KAAKqjO,MAAMK,mBAAoB,EAC/B1jO,KAAKqjO,MAAMM,eAAiB,IAAI78D,GAChC9mK,KAAKqjO,MAAMO,oBAAqB,EAChC5jO,KAAKqjO,MAAMQ,gBAAkB,IAAI/8D,IAI3B9mK,KAAKqjO,KAEb,GAAC,CAAA7gO,IAAA,gBAAA/D,MAED,SAAe8pC,GAoBd,OAlByB,OAApBvoC,KAAKojO,YAETpjO,KAAKojO,WAAW7kM,cAAegK,GAIZ,OAAfvoC,KAAKqjO,OAETrjO,KAAKqjO,MAAM9kM,cAAegK,GAIP,OAAfvoC,KAAKsjO,OAETtjO,KAAKsjO,MAAM/kM,cAAegK,GAIpBvoC,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYqlO,GAsBX,OApBA9jO,KAAKu+B,cAAe,CAAE35B,KAAM,eAAgB8+B,KAAMogM,IAEzB,OAApB9jO,KAAKojO,aAETpjO,KAAKojO,WAAWz5J,SAAU,GAIP,OAAf3pE,KAAKqjO,QAETrjO,KAAKqjO,MAAM15J,SAAU,GAIF,OAAf3pE,KAAKsjO,QAETtjO,KAAKsjO,MAAM35J,SAAU,GAIf3pE,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQqlO,EAAa1tC,EAAO2tC,GAE3B,IAAIC,EAAY,KACZC,EAAW,KACXC,EAAW,KAETC,EAAYnkO,KAAKojO,WACjBgB,EAAOpkO,KAAKqjO,MACZgB,EAAOrkO,KAAKsjO,MAElB,GAAKQ,GAAiD,oBAAlC1tC,EAAMqP,QAAQ6+B,gBAuCjC,GArCmB,OAAdH,GAIe,QAFnBH,EAAY5tC,EAAMmuC,QAAST,EAAYU,eAAgBT,MAItDI,EAAUzqE,OAAOC,UAAWqqE,EAAU1rG,UAAUohC,QAChDyqE,EAAUzqE,OAAO6c,UAAW4tD,EAAU5kK,SAAU4kK,EAAU7qE,SAAU6qE,EAAU9sF,OAEzE2sF,EAAUL,gBAEdQ,EAAUT,mBAAoB,EAC9BS,EAAUR,eAAejoE,KAAMsoE,EAAUL,iBAIzCQ,EAAUT,mBAAoB,EAI1BM,EAAUH,iBAEdM,EAAUP,oBAAqB,EAC/BO,EAAUN,gBAAgBnoE,KAAMsoE,EAAUH,kBAI1CM,EAAUP,oBAAqB,EAIhC5jO,KAAKu+B,cAAe2kM,KAMjBmB,GAAQP,EAAYO,KAAO,CAE/BH,GAAW,EAAK,IAEmCp/J,EAFnCC,EAAA+F,EAEUg5J,EAAYO,KAAKt3N,UAAQ,IAAnD,IAAAg4D,EAAAtpE,MAAAqpE,EAAAC,EAAAh+D,KAAAkb,MAAsD,KAA1CwiN,EAAU3/J,EAAArmE,MAGfimO,EAAYtuC,EAAMuuC,aAAcF,EAAYV,GAElD,QAA6C35N,IAAxCi6N,EAAKd,OAAQkB,EAAWG,WAA4B,CAGxD,IAAMC,EAAQ,IAAIhC,GAClBgC,EAAMjmE,kBAAmB,EACzBimE,EAAMl7J,SAAU,EAChB06J,EAAKd,OAAQkB,EAAWG,WAAcC,EAEtCR,EAAKj4M,IAAKy4M,EAEX,CAEA,IAAMA,EAAQR,EAAKd,OAAQkB,EAAWG,WAEnB,OAAdF,IAEJG,EAAMnrE,OAAOC,UAAW+qE,EAAUpsG,UAAUohC,QAC5CmrE,EAAMnrE,OAAO6c,UAAWsuD,EAAMtlK,SAAUslK,EAAMvrE,SAAUurE,EAAMxtF,OAC9DwtF,EAAMC,YAAcJ,EAAUx7D,QAI/B27D,EAAMl7J,QAAwB,OAAd+6J,CAEjB,CAIA,OAAA7rN,GAAAksD,EAAAz+D,EAAAuS,EAAA,SAAAksD,EAAAt+D,GAAA,CACA,IAAMs+N,EAAWV,EAAKd,OAAQ,oBACxByB,EAAWX,EAAKd,OAAQ,aACxB7sD,EAAWquD,EAASxlK,SAAS8tG,WAAY23D,EAASzlK,UAKnD8kK,EAAKb,WAAWC,UAAY/sD,EAAWuuD,MAE3CZ,EAAKb,WAAWC,UAAW,EAC3BzjO,KAAKu+B,cAAe,CACnB35B,KAAM,WACNsgO,WAAYpB,EAAYoB,WACxB3jO,OAAQvB,SAGIqkO,EAAKb,WAAWC,UAAY/sD,GAAYuuD,OAErDZ,EAAKb,WAAWC,UAAW,EAC3BzjO,KAAKu+B,cAAe,CACnB35B,KAAM,aACNsgO,WAAYpB,EAAYoB,WACxB3jO,OAAQvB,OAKX,MAEe,OAATokO,GAAiBN,EAAYqB,WAIf,QAFlBlB,EAAW7tC,EAAMmuC,QAAST,EAAYqB,UAAWpB,MAIhDK,EAAK1qE,OAAOC,UAAWsqE,EAAS3rG,UAAUohC,QAC1C0qE,EAAK1qE,OAAO6c,UAAW6tD,EAAK7kK,SAAU6kK,EAAK9qE,SAAU8qE,EAAK/sF,OAErD4sF,EAASN,gBAEbS,EAAKV,mBAAoB,EACzBU,EAAKT,eAAejoE,KAAMuoE,EAASN,iBAInCS,EAAKV,mBAAoB,EAIrBO,EAASJ,iBAEbO,EAAKR,oBAAqB,EAC1BQ,EAAKP,gBAAgBnoE,KAAMuoE,EAASJ,kBAIpCO,EAAKR,oBAAqB,GA8B/B,OAlBmB,OAAdO,IAEJA,EAAUx6J,QAA0B,OAAdq6J,GAIT,OAATI,IAEJA,EAAKz6J,QAAyB,OAAbs6J,GAIJ,OAATI,IAEJA,EAAK16J,QAAyB,OAAbu6J,GAIXlkO,IAER,KAACmjO,CAAA,CAhSmB,GAoSfiC,GAAY,SAAAC,GAAArpN,EAAAopN,EAAAC,GAAA,IAAAC,EAAA3qN,EAAAyqN,GAEjB,SAAAA,EAAaj3N,EAAOC,EAAQxJ,EAAM0/I,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWE,EAAYD,GAAS,IAAAgnE,EAInG,GAJmG96N,EAAA,KAAA26N,IAEnG7mE,OAAoBn0J,IAAXm0J,EAAuBA,EAASrS,MAEzBA,IAAeqS,IAAWpS,GAEzC,MAAM,IAAIruJ,MAAO,oFAeW,YAXfsM,IAATxF,GAAsB25J,IAAWrS,KAActnJ,EAAOymJ,SAC7CjhJ,IAATxF,GAAsB25J,IAAWpS,KAAqBvnJ,EAAOgnJ,KAElE25E,EAAAD,EAAAzoO,KAAA,KAAO,KAAMynJ,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,IAEnErlB,MAAQ,CAAEhrI,MAAOA,EAAOC,OAAQA,GAErCm3N,EAAKlnE,eAA0Bj0J,IAAdi0J,EAA0BA,EAAY7T,GACvD+6E,EAAKjnE,eAA0Bl0J,IAAdk0J,EAA0BA,EAAY9T,GAEvD+6E,EAAKxmE,OAAQ,EACbwmE,EAAK1mE,iBAAkB,EAAM0mE,CAE9B,CAAC,OAAAh8N,EAAA67N,EAAA,CAzBgB,CAASrnE,IA8B3BqnE,GAAaxoO,UAAU2/N,gBAAiB,EAAK,IAEvCiJ,GAAY,SAAAC,GAAAzpN,EAAAwpN,EAAAC,GAAA,IAAAC,EAAA/qN,EAAA6qN,GAEjB,SAAAA,EAAa1zC,EAAUllI,GAAK,IAAA+4K,EAAAl7N,EAAA,KAAA+6N,GAI3B,IAAMx4C,EAAKxxK,EAFXmqN,EAAAD,EAAA7oO,KAAA,OAII4oM,EAAU,KACVmgC,EAAyB,EAEzB7B,EAAiB,KACjB8B,EAAqB,cAErBC,EAAO,KACPC,EAAY,KACZC,EAAc,KACdC,EAAc,KACdC,EAAU,KACRh0J,EAAatlB,EAAGu5K,uBAClBC,EAAsB,KACtBC,EAAkB,KAEhBC,EAAc,GACdC,EAAkB,IAAIppM,IAItBqpM,EAAU,IAAI32C,GACpB22C,EAAQ7xD,OAAOu0C,OAAQ,GACvBsd,EAAQplE,SAAW,IAAIxB,GAEvB,IAAM6mE,EAAU,IAAI52C,GACpB42C,EAAQ9xD,OAAOu0C,OAAQ,GACvBud,EAAQrlE,SAAW,IAAIxB,GAEvB,IAAM+iE,EAAU,CAAE6D,EAASC,GAErBC,EAAW,IAAInE,GACrBmE,EAAS/xD,OAAOu0C,OAAQ,GACxBwd,EAAS/xD,OAAOu0C,OAAQ,GAExB,IAAIyd,EAAoB,KACpBC,EAAmB,KAwDvB,SAASC,EAAgBt+L,GAExB,IAAMu+L,EAAaP,EAAgBx2M,IAAKwY,EAAMu7L,aAEzCgD,GAEJA,EAAWvoM,cAAe,CAAE35B,KAAM2jC,EAAM3jC,KAAM8+B,KAAM6E,EAAMu7L,aAI5D,CAEA,SAASiD,IAERR,EAAgBhkO,SAAS,SAAWukO,EAAYhD,GAE/CgD,EAAWtgJ,WAAYs9I,EAExB,IAEAyC,EAAgBpmO,QAEhBwmO,EAAoB,KACpBC,EAAmB,KAInB90C,EAASW,gBAAiB2zC,GAE1BH,EAAc,KACdD,EAAc,KACdD,EAAY,KACZtgC,EAAU,KACV4gC,EAAkB,KAIlBl5L,EAAUshC,OAEVu+G,EAAMg6C,cAAe,EAErBh6C,EAAMzuJ,cAAe,CAAE35B,KAAM,cAE9B,CAoKA,SAASqiO,EAAsB1+L,GAM9B,IAJA,IAAM2+L,EAAezhC,EAAQyhC,aAInBxqO,EAAI,EAAGA,EAAI4pO,EAAY1uO,OAAQ8E,IAExC6pO,EAAgBt3M,IAAKi4M,EAAcxqO,GAAK4pO,EAAa5pO,IAMtD,IAAM,IAAIA,EAAI,EAAGA,EAAI6rC,EAAM4+L,QAAQvvO,OAAQ8E,IAAO,CAEjD,IAAMonO,EAAcv7L,EAAM4+L,QAASzqO,GAC7BoqO,EAAaP,EAAgBx2M,IAAK+zM,GAEnCgD,IAEJA,EAAWvoM,cAAe,CAAE35B,KAAM,eAAgB8+B,KAAMogM,IACxDyC,EAAgB/oM,OAAQsmM,GAI1B,CAIA,IAAM,IAAIpnO,EAAI,EAAGA,EAAI6rC,EAAM6+L,MAAMxvO,OAAQ8E,IAAO,CAE/C,IAAMonO,EAAcv7L,EAAM6+L,MAAO1qO,GAC3BoqO,EAAaP,EAAgBx2M,IAAK+zM,GAEnCgD,GAEJA,EAAWvoM,cAAe,CAAE35B,KAAM,YAAa8+B,KAAMogM,GAIvD,CAED,CA9SA6B,EAAK0B,kBAAmB,EACxB1B,EAAK90C,SAAU,EAEf80C,EAAKqB,cAAe,EAEpBrB,EAAK2B,cAAgB,SAAW14N,GAE/B,IAAIk4N,EAAaR,EAAa13N,GAS9B,YAPoBxE,IAAf08N,IAEJA,EAAa,IAAI3D,GACjBmD,EAAa13N,GAAUk4N,GAIjBA,EAAWS,mBAEnB,EAEA5B,EAAK6B,kBAAoB,SAAW54N,GAEnC,IAAIk4N,EAAaR,EAAa13N,GAS9B,YAPoBxE,IAAf08N,IAEJA,EAAa,IAAI3D,GACjBmD,EAAa13N,GAAUk4N,GAIjBA,EAAWW,cAEnB,EAEA9B,EAAK+B,QAAU,SAAW94N,GAEzB,IAAIk4N,EAAaR,EAAa13N,GAS9B,YAPoBxE,IAAf08N,IAEJA,EAAa,IAAI3D,GACjBmD,EAAa13N,GAAUk4N,GAIjBA,EAAWa,cAEnB,EAiDAhC,EAAKiC,0BAA4B,SAAWnpO,GAE3CmnO,EAAyBnnO,GAEG,IAAvBuuL,EAAMg6C,cAEVjzN,QAAQk/C,KAAM,wEAIhB,EAEA0yK,EAAKkC,sBAAwB,SAAWppO,GAEvConO,EAAqBpnO,GAEO,IAAvBuuL,EAAMg6C,cAEVjzN,QAAQk/C,KAAM,2EAIhB,EAEA0yK,EAAKmC,kBAAoB,WAExB,OAAO/D,CAER,EAEA4B,EAAKoC,aAAe,WAEnB,OAAuB,OAAhB/B,EAAuBA,EAAcC,CAE7C,EAEAN,EAAKqC,WAAa,WAEjB,OAAOjC,CAER,EAEAJ,EAAKsC,SAAW,WAEf,OAAO/B,CAER,EAEAP,EAAKjgC,WAAa,WAEjB,OAAOD,CAER,EAEAkgC,EAAKuC,WAAU,eAAAl+N,EAAA6yE,GAAAC,EAAAA,MAAG,SAAAE,EAAiBv+E,GAAK,IAAA0pO,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAzrJ,EAAAA,MAAA,SAAA0rJ,GAAA,cAAAA,EAAAvlO,KAAAulO,EAAAtlO,MAAA,OAEvB,GAEC,QAFjBuiM,EAAUhnM,GAEW,CAAA+pO,EAAAtlO,KAAA,SAWmD,GATvEkjO,EAAsBt0C,EAASI,kBAE/BuT,EAAQ7hM,iBAAkB,SAAUijO,GACpCphC,EAAQ7hM,iBAAkB,cAAeijO,GACzCphC,EAAQ7hM,iBAAkB,YAAaijO,GACvCphC,EAAQ7hM,iBAAkB,UAAWijO,GACrCphC,EAAQ7hM,iBAAkB,eAAgBijO,GAC1CphC,EAAQ7hM,iBAAkB,aAAcijO,GACxCphC,EAAQ7hM,iBAAkB,MAAOmjO,GACjCthC,EAAQ7hM,iBAAkB,qBAAsBqjO,IAEf,IAA5B/0J,EAAWu2J,aAAqB,CAAAD,EAAAtlO,KAAA,gBAAAslO,EAAAtlO,KAAA,GAE9B0pD,EAAG87K,mBAAkB,QA0EH,YAtEat+N,IAA/Bq7L,EAAQwoB,YAAYt5C,SAA+D,IAAnCmd,EAAS0E,aAAaC,UAEtE0xC,EAAY,CACjBQ,eAA4Cv+N,IAA/Bq7L,EAAQwoB,YAAYt5C,QAAyBziG,EAAWy2J,UACrE5yE,MAAO7jF,EAAW6jF,MAClBxnD,MAAOr8B,EAAWq8B,MAClBglF,QAASrhH,EAAWqhH,QACpBqyC,uBAAwBA,GAGzBK,EAAc,IAAI2C,aAAcnjC,EAAS74I,EAAIu7K,GAE7C1iC,EAAQojC,kBAAmB,CAAEC,UAAW7C,IAExCI,EAAkB,IAAIrlE,GACrBilE,EAAY8C,iBACZ9C,EAAY+C,kBACZ,CACCzqE,OAAQxS,GACRnnJ,KAAMsmJ,GACNuT,SAAUqzB,EAASM,mBAMjBg2C,EAAc,KACdC,EAAY,KACZC,EAAgB,KAEfp2J,EAAWq8B,QAEf+5H,EAAgBp2J,EAAWqhH,QAAU,MAAQ,MAC7C60C,EAAcl2J,EAAWqhH,QAAUpnC,GAAqBD,GACxDm8E,EAAYn2J,EAAWqhH,QAAU3nC,GAAqBP,IAIjDk9E,EAAsB,CAC3BU,YAAen3C,EAASM,iBAAmBljC,GAAiB,MAAQ,MACpEk5E,YAAaE,EACbpc,YAAa0Z,GAGdG,EAAY,IAAImD,eAAgBzjC,EAAS74I,GAEzCo5K,EAAcD,EAAUoD,sBAAuBZ,GAE/C9iC,EAAQojC,kBAAmB,CAAEl0D,OAAQ,CAAEqxD,KAEvCK,EAAkB,IAAIrlE,GACrBglE,EAAYoD,aACZpD,EAAYqD,cACZ,CACC9qE,OAAQxS,GACRnnJ,KAAMsmJ,GACNsW,aAAc,IAAI4jE,GAAcY,EAAYoD,aAAcpD,EAAYqD,cAAehB,OAAWj+N,OAAWA,OAAWA,OAAWA,OAAWA,OAAWA,EAAWg+N,GAClK7mE,cAAervF,EAAWqhH,QAC1B90B,SAAUqzB,EAASM,eACnB3wB,QAASvvF,EAAWy2J,UAAY,EAAI,IAGP72C,EAASnkL,WAAWoiB,IAAKs2M,GACjCpH,oBAAsB+G,EAAYhH,mBAI1DqH,EAAgB/d,kBAAmB,EAGnCtoN,KAAKspO,aAAc,GAAMd,EAAAtlO,KAAA,GAEFuiM,EAAQ8jC,sBAAuB1D,GAAoB,QAA1E9B,EAAcyE,EAAAvrJ,KAEd9vC,EAAUmpJ,WAAYmP,GACtBt4J,EAAUrC,QAEVkiJ,EAAMg6C,cAAe,EAErBh6C,EAAMzuJ,cAAe,CAAE35B,KAAM,iBAAmB,yBAAA4jO,EAAA/5J,OAAA,GAAAuO,EAAA,UAIjD,gBAAAwsJ,GAAA,OAAAx/N,EAAAlK,MAAA,KAAAG,UAAA,EA1Gc,GA2Jf,IAAMwpO,EAAa,IAAI3iE,GACjB4iE,EAAa,IAAI5iE,GAyDvB,SAAS6iE,EAAc/hE,EAAQ1qG,GAEd,OAAXA,EAEJ0qG,EAAOK,YAAYvM,KAAMkM,EAAOlO,QAIhCkO,EAAOK,YAAY3Q,iBAAkBp6F,EAAO+qG,YAAaL,EAAOlO,QAIjEkO,EAAOE,mBAAmBpM,KAAMkM,EAAOK,aAAcn4B,QAEtD,CAEA61F,EAAKgE,aAAe,SAAW/hE,GAE9B,GAAiB,OAAZ69B,EAAL,CAEAihC,EAAS7yD,KAAO4yD,EAAQ5yD,KAAO2yD,EAAQ3yD,KAAOjM,EAAOiM,KACrD6yD,EAAS5yD,IAAM2yD,EAAQ3yD,IAAM0yD,EAAQ1yD,IAAMlM,EAAOkM,IAE7C6yD,IAAsBD,EAAS7yD,MAAQ+yD,IAAqBF,EAAS5yD,MAIzE2xB,EAAQojC,kBAAmB,CAC1Be,UAAWlD,EAAS7yD,KACpBg2D,SAAUnD,EAAS5yD,MAGpB6yD,EAAoBD,EAAS7yD,KAC7B+yD,EAAmBF,EAAS5yD,KAI7B,IAAM52G,EAAS0qG,EAAO1qG,OAChBylK,EAAU+D,EAAS/D,QAEzBgH,EAAcjD,EAAUxpK,GAExB,IAAM,IAAIxgE,EAAI,EAAGA,EAAIimO,EAAQ/qO,OAAQ8E,IAEpCitO,EAAchH,EAASjmO,GAAKwgE,GAI7BwpK,EAASz+D,YAAYsO,UAAWmwD,EAASnnK,SAAUmnK,EAAStjE,WAAYsjE,EAASrvF,OAIjFuwB,EAAOroG,SAASm8F,KAAMgrE,EAASnnK,UAC/BqoG,EAAOxE,WAAW1H,KAAMgrE,EAAStjE,YACjCwE,EAAOvwB,MAAMqkB,KAAMgrE,EAASrvF,OAC5BuwB,EAAOlO,OAAOgC,KAAMgrE,EAAShtE,QAC7BkO,EAAOK,YAAYvM,KAAMgrE,EAASz+D,aAIlC,IAFA,IAAMrqJ,EAAWgqJ,EAAOhqJ,SAEdlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5CkhB,EAAUlhB,GAAI66K,mBAAmB,GAMV,IAAnBorD,EAAQ/qO,OArHd,SAAiCgwK,EAAQ4+D,EAASC,GAEjDgD,EAAW7yD,sBAAuB4vD,EAAQv+D,aAC1CyhE,EAAW9yD,sBAAuB6vD,EAAQx+D,aAE1C,IAAM6hE,EAAML,EAAWp8D,WAAYq8D,GAE7BK,EAAQvD,EAAQz+D,iBAAiB/hC,SACjCgkG,EAAQvD,EAAQ1+D,iBAAiB/hC,SAKjC6tC,EAAOk2D,EAAO,KAASA,EAAO,IAAO,GACrCj2D,EAAMi2D,EAAO,KAASA,EAAO,IAAO,GACpCE,GAAWF,EAAO,GAAM,GAAMA,EAAO,GACrCG,GAAcH,EAAO,GAAM,GAAMA,EAAO,GAExCI,GAAYJ,EAAO,GAAM,GAAMA,EAAO,GACtCK,GAAaJ,EAAO,GAAM,GAAMA,EAAO,GACvCh+L,EAAO6nI,EAAOs2D,EACd3qK,EAAQq0G,EAAOu2D,EAIfC,EAAUP,IAAUK,EAAUC,GAC9BE,EAAUD,GAAYF,EAG5B3D,EAAQv+D,YAAYsO,UAAW3O,EAAOroG,SAAUqoG,EAAOxE,WAAYwE,EAAOvwB,OAC1EuwB,EAAO2iE,WAAYD,GACnB1iE,EAAO4iE,WAAYH,GACnBziE,EAAOK,YAAYsJ,QAAS3J,EAAOroG,SAAUqoG,EAAOxE,WAAYwE,EAAOvwB,OACvEuwB,EAAOE,mBAAmBpM,KAAMkM,EAAOK,aAAcn4B,SAKrD,IAAM26F,EAAQ52D,EAAOw2D,EACfK,EAAO52D,EAAMu2D,EACbM,EAAQ3+L,EAAOs+L,EACfM,EAASprK,GAAUsqK,EAAMQ,GACzBO,EAAOZ,EAASn2D,EAAM42D,EAAOD,EAC7BK,EAAUZ,EAAYp2D,EAAM42D,EAAOD,EAEzC7iE,EAAOG,iBAAiBipB,gBAAiB25C,EAAOC,EAAQC,EAAMC,EAASL,EAAOC,EAE/E,CAwEEK,CAAwBrE,EAAUF,EAASC,GAM3CC,EAAS3+D,iBAAiBrM,KAAM8qE,EAAQz+D,iBA1DX,CA8D/B,EAEA49D,EAAKqF,UAAY,WAEhB,OAAOtE,CAER,EAEAf,EAAKsF,aAAe,WAEnB,OAAqB,OAAhBjF,EAEGA,EAAYkF,eAIC,OAAhBjF,EAEGA,EAAYiF,oBAFpB,CAQD,EAEAvF,EAAK2D,aAAe,SAAW6B,GAKT,OAAhBnF,IAEJA,EAAYkF,eAAiBC,GAIT,OAAhBlF,QAAuD77N,IAA/B67N,EAAYiF,iBAExCjF,EAAYiF,eAAiBC,EAI/B,EAIA,IAAIC,EAA2B,KAmG/B,IAAMj+L,EAAY,IAAI4oJ,GAUQ,OAR9B5oJ,EAAUkpJ,kBAnGV,SAA2BpuJ,EAAMmuJ,GAKhC,GAHA0vC,EAAO1vC,EAAMi1C,cAAetH,GAC5BmC,EAAU9vC,EAEI,OAAT0vC,EAAgB,CAEpB,IAAMwF,EAAQxF,EAAKwF,MAEE,OAAhBrF,IAEJn0C,EAASy5C,2BAA4BlF,EAAiBJ,EAAYlP,aAClEjlC,EAASW,gBAAiB4zC,IAI3B,IAAImF,GAAsB,EAIrBF,EAAM1zO,SAAW8uO,EAAS/D,QAAQ/qO,SAEtC8uO,EAAS/D,QAAQ/qO,OAAS,EAC1B4zO,GAAsB,GAIvB,IAAM,IAAI9uO,EAAI,EAAGA,EAAI4uO,EAAM1zO,OAAQ8E,IAAO,CAEzC,IAAM6kC,EAAO+pM,EAAO5uO,GAEhB0kK,EAAW,KAEf,GAAqB,OAAhB6kE,EAEJ7kE,EAAW6kE,EAAYlU,YAAaxwL,OAE9B,CAEN,IAAMkqM,EAAa1F,EAAU2F,gBAAiB1F,EAAazkM,GAC3D6/H,EAAWqqE,EAAWrqE,SAGX,IAAN1kK,IAEJo1L,EAAS65C,wBACRtF,EACAoF,EAAWlN,aACXyH,EAAYhH,uBAAoB50N,EAAYqhO,EAAWG,qBAExD95C,EAASW,gBAAiB4zC,GAI5B,CAEA,IAAMz+D,EAAS+6D,EAASjmO,GAExBkrK,EAAOlO,OAAOC,UAAWp4H,EAAK+2F,UAAUohC,QACxCkO,EAAOG,iBAAiBpO,UAAWp4H,EAAKwmI,kBACxCH,EAAOxG,SAASnyI,IAAKmyI,EAASllK,EAAGklK,EAAS/5J,EAAG+5J,EAASjzJ,MAAOizJ,EAAShzJ,QAE3D,IAAN1R,GAEJgqO,EAAShtE,OAAOgC,KAAMkM,EAAOlO,SAID,IAAxB8xE,GAEJ9E,EAAS/D,QAAQ7lO,KAAM8qK,EAIzB,CAED,CAMA,IAFA,IAAMs/D,EAAezhC,EAAQyhC,aAEnBxqO,EAAI,EAAGA,EAAI4pO,EAAY1uO,OAAQ8E,IAAO,CAE/C,IAAMoqO,EAAaR,EAAa5pO,GAC1BonO,EAAcoD,EAAcxqO,GAElCoqO,EAAWxjE,OAAQwgE,EAAa1tC,EAAO2tC,EAExC,CAEKqH,GAA2BA,EAA0BnjM,EAAMmuJ,GAEhE8vC,EAAU,IAEX,IAMAP,EAAKtvC,iBAAmB,SAAWl+I,GAElCizL,EAA2BjzL,CAE5B,EAEAwtL,EAAKjkE,QAAU,WAAa,EAAEikE,CAE/B,CAAC,OAAAp8N,EAAAi8N,EAAA,CAzoBgB,CAASl0E,IA6oB3B,SAASu6E,GAAgB/5C,EAAUnkL,GAmGlC,SAASm+N,EAAuB19C,EAAUvV,GAEzCuV,EAAS55J,QAAQ/1B,MAAQo6K,EAASrkJ,QAE7BqkJ,EAASrxI,OAEb4mJ,EAASoS,QAAQ/hM,MAAMi9J,KAAMmd,EAASrxI,OAIlCqxI,EAAS0F,UAEb6P,EAAS7P,SAAS9/K,MAAMi9J,KAAMmd,EAAS0F,UAAWhpB,eAAgBsjB,EAAS2F,mBAIvE3F,EAASt8K,MAEb6xL,EAAS7xL,IAAIkC,MAAQo6K,EAASt8K,KAI1Bs8K,EAASuG,WAEbgP,EAAShP,SAAS3gL,MAAQo6K,EAASuG,UAI/BvG,EAAS4G,UAEb2O,EAAS3O,QAAQhhL,MAAQo6K,EAAS4G,QAClC2O,EAAS1O,UAAUjhL,MAAQo6K,EAAS6G,UAC/B7G,EAASgD,OAASz0B,KAAWgnC,EAAS1O,UAAUjhL,QAAW,IAI5Do6K,EAASiH,kBAEbsO,EAAStO,gBAAgBrhL,MAAQo6K,EAASiH,gBAC1CsO,EAASrO,kBAAkBthL,MAAQo6K,EAASkH,kBAC5CqO,EAASpO,iBAAiBvhL,MAAQo6K,EAASmH,kBAIvCnH,EAASsH,cAEbiO,EAASjO,YAAY1hL,MAAQo6K,EAASsH,aAIlCtH,EAAS8G,YAEbyO,EAASzO,UAAUlhL,MAAQo6K,EAAS8G,UACpCyO,EAASvO,YAAYphL,MAAMi9J,KAAMmd,EAASgH,aACrChH,EAASgD,OAASz0B,IAAWgnC,EAASvO,YAAYphL,MAAMmoL,UAIzD/N,EAASuH,cAEbgO,EAAShO,YAAY3hL,MAAQo6K,EAASuH,aAIlCvH,EAAS0I,UAAY,IAEzB6M,EAAS7M,UAAU9iL,MAAQo6K,EAAS0I,WAIrC,IAkDIwqD,EAmGAC,EArJEzrD,EAAS5yK,EAAWoiB,IAAK8oJ,GAAW0H,OAc1C,GAZKA,IAEJ6N,EAAS7N,OAAO9hL,MAAQ8hL,EAExB6N,EAASyS,WAAWpiM,MAAU8hL,EAAOuS,gBAAkD,IAAjCvS,EAAOphB,uBAAsC,EAAI,EAEvGivB,EAAS1N,aAAajiL,MAAQo6K,EAAS6H,aACvC0N,EAAS0S,IAAIriM,MAAQo6K,EAASioB,IAC9B1S,EAASzN,gBAAgBliL,MAAQo6K,EAAS8H,iBAItC9H,EAASwG,SAAW,CAExB+O,EAAS/O,SAAS5gL,MAAQo6K,EAASwG,SAGnC,IAAM6sC,GAAqD,IAArCp6B,EAASiyB,wBAAqC9mN,KAAK00J,GAAK,EAE9Ey8B,EAAS9O,kBAAkB7gL,MAAQo6K,EAASyG,kBAAoB4sC,CAEjE,CAEKrzC,EAAS0G,QAEb6O,EAAS7O,MAAM9gL,MAAQo6K,EAAS0G,MAChC6O,EAAS5O,eAAe/gL,MAAQo6K,EAAS2G,gBAwBrC3G,EAASt8K,IAEbwvO,EAAalzD,EAASt8K,IAEXs8K,EAASuH,YAEpB2rD,EAAalzD,EAASuH,YAEXvH,EAASiH,gBAEpBisD,EAAalzD,EAASiH,gBAEXjH,EAAS8G,UAEpBosD,EAAalzD,EAAS8G,UAEX9G,EAAS4G,QAEpBssD,EAAalzD,EAAS4G,QAEX5G,EAASoH,aAEpB8rD,EAAalzD,EAASoH,aAEXpH,EAASqH,aAEpB6rD,EAAalzD,EAASqH,aAEXrH,EAASuG,SAEpB2sD,EAAalzD,EAASuG,SAEXvG,EAASsH,YAEpB4rD,EAAalzD,EAASsH,YAEXtH,EAASkG,aAEpBgtD,EAAalzD,EAASkG,aAEXlG,EAASoG,mBAEpB8sD,EAAalzD,EAASoG,mBAEXpG,EAASmG,sBAEpB+sD,EAAalzD,EAASmG,sBAEXnG,EAASwH,qBAEpB0rD,EAAalzD,EAASwH,qBAEXxH,EAASyH,iBAEpByrD,EAAalzD,EAASyH,iBAEXzH,EAASiI,gBAEpBirD,EAAalzD,EAASiI,gBAEXjI,EAASmI,aAEpB+qD,EAAalzD,EAASmI,aAEXnI,EAAS20B,cAEpBu+B,EAAalzD,EAAS20B,cAEX30B,EAAS40B,oBAEpBs+B,EAAalzD,EAAS40B,wBAIHrjM,IAAf2hO,IAGCA,EAAWpqE,sBAEfoqE,EAAaA,EAAW1qE,UAIY,IAAhC0qE,EAAWntE,kBAEfmtE,EAAW11D,eAIZ+X,EAASqS,YAAYhiM,MAAMi9J,KAAMqwE,EAAWryE,SAUxCmf,EAAS0G,MAEbysD,EAAcnzD,EAAS0G,MAEZ1G,EAASwG,WAEpB2sD,EAAcnzD,EAASwG,eAIHj1K,IAAhB4hO,IAGCA,EAAYrqE,sBAEhBqqE,EAAcA,EAAY3qE,UAIW,IAAjC2qE,EAAYptE,kBAEhBotE,EAAY31D,eAIb+X,EAASsS,aAAajiM,MAAMi9J,KAAMswE,EAAYtyE,QAIhD,CA+RA,MAAO,CACNuyE,mBA3nBD,SAA6B79C,EAAUzS,GAEtCyS,EAASuT,SAASljM,MAAMi9J,KAAMigB,EAAIn0I,OAE7Bm0I,EAAIuwD,OAER99C,EAASqT,QAAQhjM,MAAQk9K,EAAI9H,KAC7Bua,EAASsT,OAAOjjM,MAAQk9K,EAAI7H,KAEjB6H,EAAI6sC,YAEfp6B,EAASoT,WAAW/iM,MAAQk9K,EAAIwwD,QAIlC,EA6mBCC,wBA3mBD,SAAkCh+C,EAAUvV,EAAUt/B,EAAYnrI,EAAQi+N,GAEpExzD,EAASwJ,qBAIFxJ,EAASyzD,sBAFpBR,EAAuB19C,EAAUvV,GAMtBA,EAAS0zD,oBAEpBT,EAAuB19C,EAAUvV,GAmcnC,SAA8BuV,EAAUvV,GAElCA,EAAS+H,cAEbwN,EAASxN,YAAYniL,MAAQo6K,EAAS+H,YAIxC,CA1cE4rD,CAAqBp+C,EAAUvV,IAEpBA,EAAS4zD,qBAEpBX,EAAuB19C,EAAUvV,GAubnC,SAA+BuV,EAAUvV,GAExCuV,EAAS3P,SAAShgL,MAAMi9J,KAAMmd,EAAS4F,UACvC2P,EAASxP,UAAUngL,MAAQxB,KAAKC,IAAK27K,EAAS+F,UAAW,KAE1D,CA3bE8tD,CAAsBt+C,EAAUvV,IAErBA,EAAS8uC,wBAEpBmkB,EAAuB19C,EAAUvV,GAmcnC,SAAkCuV,EAAUvV,GAE3CuV,EAASlQ,UAAUz/K,MAAQo6K,EAASqF,UACpCkQ,EAASjQ,UAAU1/K,MAAQo6K,EAASsF,UAE/BtF,EAASoH,eAEbmO,EAASnO,aAAaxhL,MAAQo6K,EAASoH,cAInCpH,EAASqH,eAEbkO,EAASlO,aAAazhL,MAAQo6K,EAASqH,cAIxC,IAAMK,EAAS5yK,EAAWoiB,IAAK8oJ,GAAW0H,OAErCA,IAGJ6N,EAAS3N,gBAAgBhiL,MAAQo6K,EAAS4H,gBAI5C,CA5dEksD,CAAyBv+C,EAAUvV,GAE9BA,EAAS+zD,wBA4dhB,SAAkCx+C,EAAUvV,EAAUwzD,GAErDj+C,EAAS0S,IAAIriM,MAAQo6K,EAASioB,IAEzBjoB,EAASuF,MAAQ,IAErBgQ,EAAS/P,WAAW5/K,MAAMi9J,KAAMmd,EAASwF,YAAa9oB,eAAgBsjB,EAASuF,OAE/EgQ,EAAS9P,eAAe7/K,MAAQo6K,EAASyF,eAEpCzF,EAAS20B,gBAEbpf,EAASof,cAAc/uM,MAAQo6K,EAAS20B,eAIpC30B,EAAS40B,oBAEbrf,EAASqf,kBAAkBhvM,MAAQo6K,EAAS40B,oBAMzC50B,EAASgG,UAAY,IAEzBuP,EAASvP,UAAUpgL,MAAQo6K,EAASgG,UACpCuP,EAAStP,mBAAmBrgL,MAAQo6K,EAASiG,mBAExCjG,EAASkG,eAEbqP,EAASrP,aAAatgL,MAAQo6K,EAASkG,cAInClG,EAASmG,wBAEboP,EAASpP,sBAAsBvgL,MAAQo6K,EAASmG,uBAI5CnG,EAASoG,qBAEbmP,EAASlP,qBAAqBzgL,MAAMi9J,KAAMmd,EAASqG,sBACnDkP,EAASnP,mBAAmBxgL,MAAQo6K,EAASoG,mBAExCpG,EAASgD,OAASz0B,IAEtBgnC,EAASlP,qBAAqBzgL,MAAMmoL,WAQlC/N,EAASgI,aAAe,IAE5BuN,EAASvN,aAAapiL,MAAQo6K,EAASgI,aACvCuN,EAASuf,uBAAuBlvM,MAAQ4tO,EAAyBhrE,QACjE+sB,EAASsf,wBAAwBjvM,MAAMwwB,IAAKo9M,EAAyBl+N,MAAOk+N,EAAyBj+N,QAEhGyqK,EAASiI,kBAEbsN,EAAStN,gBAAgBriL,MAAQo6K,EAASiI,iBAI3CsN,EAASrN,UAAUtiL,MAAQo6K,EAASkI,UAE/BlI,EAASmI,eAEboN,EAASpN,aAAaviL,MAAQo6K,EAASmI,cAIxCoN,EAASnN,oBAAoBxiL,MAAQo6K,EAASoI,oBAC9CmN,EAASlN,iBAAiBziL,MAAMi9J,KAAMmd,EAASqI,mBAIhDkN,EAAS1P,kBAAkBjgL,MAAQo6K,EAAS6F,kBAC5C0P,EAASzP,cAAclgL,MAAMi9J,KAAMmd,EAAS8F,eAEvC9F,EAASwH,uBAEb+N,EAAS/N,qBAAqB5hL,MAAQo6K,EAASwH,sBAI3CxH,EAASyH,mBAEb8N,EAAS9N,iBAAiB7hL,MAAQo6K,EAASyH,iBAI7C,CA1jBGusD,CAAyBz+C,EAAUvV,EAAUwzD,IAInCxzD,EAASi0D,sBAEpBhB,EAAuB19C,EAAUvV,GAsjBnC,SAAgCuV,EAAUvV,GAEpCA,EAASsG,SAEbiP,EAASjP,OAAO1gL,MAAQo6K,EAASsG,OAInC,CA7jBE4tD,CAAuB3+C,EAAUvV,IAEtBA,EAASw1C,oBAEpByd,EAAuB19C,EAAUvV,GAEtBA,EAAS41C,wBAEpBqd,EAAuB19C,EAAUvV,GAujBnC,SAAkCuV,EAAUvV,GAE3CuV,EAASiW,kBAAkB5lM,MAAMi9J,KAAMmd,EAASwrB,mBAChDjW,EAASkW,aAAa7lM,MAAQo6K,EAASyrB,aACvClW,EAASmW,YAAY9lM,MAAQo6K,EAAS0rB,WAEvC,CA5jBEyoC,CAAyB5+C,EAAUvV,IAExBA,EAASo0D,qBAEpBnB,EAAuB19C,EAAUvV,GAEtBA,EAASq0D,qBA2RtB,SAA8B9+C,EAAUvV,GAEvCuV,EAASoS,QAAQ/hM,MAAMi9J,KAAMmd,EAASrxI,OACtC4mJ,EAAS55J,QAAQ/1B,MAAQo6K,EAASrkJ,OAEnC,CA9RE24M,CAAqB/+C,EAAUvV,GAE1BA,EAASu0D,sBA8RhB,SAA8Bh/C,EAAUvV,GAEvCuV,EAAS/M,SAAS5iL,MAAQo6K,EAASwI,SACnC+M,EAAS4V,UAAUvlM,MAAQo6K,EAASwI,SAAWxI,EAASyI,QACxD8M,EAAS/2C,MAAM54I,MAAQo6K,EAASxhC,KAEjC,CAlSGg2F,CAAqBj/C,EAAUvV,IAIrBA,EAASy0D,iBAgStB,SAAgCl/C,EAAUvV,EAAUt/B,EAAYnrI,GAE/DggL,EAASoS,QAAQ/hM,MAAMi9J,KAAMmd,EAASrxI,OACtC4mJ,EAAS55J,QAAQ/1B,MAAQo6K,EAASrkJ,QAClC45J,EAAS7oI,KAAK9mD,MAAQo6K,EAAStzH,KAAOg0F,EACtC60C,EAAS/2C,MAAM54I,MAAiB,GAAT2P,EAElByqK,EAASt8K,MAEb6xL,EAAS7xL,IAAIkC,MAAQo6K,EAASt8K,KAI1Bs8K,EAASuG,WAEbgP,EAAShP,SAAS3gL,MAAQo6K,EAASuG,UAI/BvG,EAAS0I,UAAY,IAEzB6M,EAAS7M,UAAU9iL,MAAQo6K,EAAS0I,WAQrC,IAAIwqD,EAEClzD,EAASt8K,IAEbwvO,EAAalzD,EAASt8K,IAEXs8K,EAASuG,WAEpB2sD,EAAalzD,EAASuG,eAIHh1K,IAAf2hO,KAEiC,IAAhCA,EAAWntE,kBAEfmtE,EAAW11D,eAIZ+X,EAASqS,YAAYhiM,MAAMi9J,KAAMqwE,EAAWryE,QAI9C,CAnVE6zE,CAAuBn/C,EAAUvV,EAAUt/B,EAAYnrI,GAE5CyqK,EAAS20D,iBAmVtB,SAAiCp/C,EAAUvV,GAE1CuV,EAASoS,QAAQ/hM,MAAMi9J,KAAMmd,EAASrxI,OACtC4mJ,EAAS55J,QAAQ/1B,MAAQo6K,EAASrkJ,QAClC45J,EAAS90B,SAAS76J,MAAQo6K,EAASvf,SAE9Buf,EAASt8K,MAEb6xL,EAAS7xL,IAAIkC,MAAQo6K,EAASt8K,KAI1Bs8K,EAASuG,WAEbgP,EAAShP,SAAS3gL,MAAQo6K,EAASuG,UAI/BvG,EAAS0I,UAAY,IAEzB6M,EAAS7M,UAAU9iL,MAAQo6K,EAAS0I,WAQrC,IAAIwqD,EAEClzD,EAASt8K,IAEbwvO,EAAalzD,EAASt8K,IAEXs8K,EAASuG,WAEpB2sD,EAAalzD,EAASuG,eAIHh1K,IAAf2hO,KAEiC,IAAhCA,EAAWntE,kBAEfmtE,EAAW11D,eAIZ+X,EAASqS,YAAYhiM,MAAMi9J,KAAMqwE,EAAWryE,QAI9C,CArYE+zE,CAAwBr/C,EAAUvV,GAEvBA,EAAS60D,kBAEpBt/C,EAAS5mJ,MAAM/oC,MAAMi9J,KAAMmd,EAASrxI,OACpC4mJ,EAAS55J,QAAQ/1B,MAAQo6K,EAASrkJ,SAEvBqkJ,EAAS2W,mBAEpB3W,EAASyW,oBAAqB,EAIhC,EAgiBD,CAUA,SAASq+C,KAAiC,IAarCC,EAbmBp1D,EAAUv4K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAE/By4I,OAAgCtuI,IAAtBouK,EAAWx/B,OAAuBw/B,EAAWx/B,OAV9D,WAEC,IAAMA,EAASxzF,GAAiB,UAEhC,OADAwzF,EAAO3uI,MAAM29C,QAAU,QAChBgxF,CAER,CAIuE60F,GACrEv+M,OAAkCllB,IAAvBouK,EAAWj5K,QAAwBi5K,EAAWj5K,QAAU,KAEnEuuO,OAA8B1jO,IAArBouK,EAAWjqE,OAAsBiqE,EAAWjqE,MACrDw/H,OAAkC3jO,IAAvBouK,EAAW+a,SAAwB/a,EAAW+a,QACzDy6C,OAAsC5jO,IAAzBouK,EAAWmwD,WAA0BnwD,EAAWmwD,UAC7DsF,OAAwD7jO,IAAlCouK,EAAWmF,oBAAmCnF,EAAWmF,mBAC/EuwD,OAA8D9jO,IAArCouK,EAAW21D,uBAAsC31D,EAAW21D,sBACrFC,OAAkDhkO,IAA/BouK,EAAW61D,gBAAgC71D,EAAW61D,gBAAkB,UAC3FC,OAA4ElkO,IAA5CouK,EAAW+1D,8BAA6C/1D,EAAW+1D,6BAMnGX,OAF2BxjO,IAAvBouK,EAAWj5K,QAEN+vB,EAAS62M,uBAAuBpwE,WAIX3rJ,IAArBouK,EAAWziB,OAAsByiB,EAAWziB,MAItD,IAAIy4E,EAAoB,KACpBC,EAAqB,KAKnBC,EAAkB,GAClBC,EAAmB,GAIzB3uO,KAAKq0G,WAAaqkC,EAGlB14I,KAAKuU,MAAQ,CAMZkwM,mBAAmB,GAKpBzkN,KAAK4lM,WAAY,EACjB5lM,KAAK6lM,gBAAiB,EACtB7lM,KAAK8lM,gBAAiB,EACtB9lM,KAAK+lM,kBAAmB,EAIxB/lM,KAAK4uO,aAAc,EAInB5uO,KAAKi9K,eAAiB,GACtBj9K,KAAK4rM,sBAAuB,EAI5B5rM,KAAKoyL,eAAiBnjC,GAItBjvJ,KAAK+jN,yBAA0B,EAI/B/jN,KAAKsyL,YAAc7oC,GACnBzpJ,KAAK6uO,oBAAsB,EAI3B,IAAM3yN,EAAQlc,KAEV8uO,GAAiB,EAIjBC,EAAyB,EACzBC,EAA4B,EAC5BC,EAAuB,KACvBC,GAAuB,EAEvBC,EAAiB,KAEfC,EAAmB,IAAIxvE,GACvByvE,EAAkB,IAAIzvE,GACxB0vE,EAAsB,KAItBC,EAAS72F,EAAQvqI,MACjBqhO,EAAU92F,EAAQtqI,OAElBqhO,EAAc,EACdC,EAAc,KACdC,EAAmB,KAEjBzgB,EAAY,IAAItvD,GAAS,EAAG,EAAG2vE,EAAQC,GACvCI,EAAW,IAAIhwE,GAAS,EAAG,EAAG2vE,EAAQC,GACxCK,GAAe,EAIb9gB,EAAW,IAAIx6B,GAIjBu7C,GAAmB,EACnBC,GAAwB,EAIxBC,EAA4B,KAI1BC,EAAoB,IAAIt/D,GAExB8iB,EAAW,IAAIt+B,GACf+6E,EAAW,IAAIppE,GAEfqpE,EAAc,CAAEvwK,WAAY,KAAM+7G,IAAK,KAAMvD,YAAa,KAAMg4D,iBAAkB,KAAMj4D,SAAS,GAEvG,SAASk4D,IAER,OAAgC,OAAzBpB,EAAgCQ,EAAc,CAEtD,CAIA,IAmFInjJ,EAAYkqG,EAAc52K,EAAOyuE,EACjC1gF,EAAY4xJ,EAAUklC,EAAU8hB,EAAYr0I,EAAYwlG,EAAYgtB,EACpE4rC,EAAc34D,GAAW44D,GAAaviB,GAAcj/B,GAAU85B,GAE9DjpJ,GAAY4wK,GAAcC,GAAgBC,GAE1CvY,GAAO3xB,GAzFP0xB,GAAM5oM,EAEV,SAAS2pH,GAAY03F,EAAcC,GAElC,IAAM,IAAIl0O,EAAI,EAAGA,EAAIi0O,EAAa/4O,OAAQ8E,IAAO,CAEhD,IAAMm0O,EAAcF,EAAcj0O,GAC5B6C,EAAUm5I,EAAQO,WAAY43F,EAAaD,GACjD,GAAiB,OAAZrxO,EAAmB,OAAOA,CAEhC,CAEA,OAAO,IAER,CAEA,IAEC,IAAMqxO,GAAoB,CACzB76E,OAAO,EACPxnD,MAAOu/H,EACPv6C,QAASw6C,EACTpF,UAAWqF,EACXrwD,mBAAoBswD,EACpBE,sBAAuBD,EACvBG,gBAAiBD,EACjBG,6BAA8BD,GAU/B,GANK,iBAAkB51F,GAAUA,EAAQ5lI,aAAc,cAAe,aAAFrR,OAAeukJ,KAGnFtN,EAAQ90I,iBAAkB,mBAAoBktO,IAAe,GAC7Dp4F,EAAQ90I,iBAAkB,uBAAwBmtO,IAAkB,GAEvD,OAAR7Y,GAAe,CAEnB,IAAMyY,GAAe,CAAE,SAAU,QAAS,sBAU1C,IARgC,IAA3Bz0N,EAAM80N,kBAEVL,GAAanyM,QAMD,QAFb05L,GAAMj/E,GAAY03F,GAAcC,KAI/B,MAAK33F,GAAY03F,IAEV,IAAI7yO,MAAO,+DAIX,IAAIA,MAAO,gCAMpB,MAIsCsM,IAAjC8tN,GAAI3tB,2BAER2tB,GAAI3tB,yBAA2B,WAE9B,MAAO,CAAE,SAAY,EAAG,SAAY,EAAG,UAAa,EAErD,EAIF,CAAE,MAAQhpL,IAGT,MADAxN,QAAQwN,MAAO,wBAA0BA,GAAMm/B,SACzCn/B,EAEP,CAUA,SAAS0vN,KAER3kJ,EAAa,IAAIynH,GAAiBmkB,IAElC1hC,EAAe,IAAI4T,GAAmB8tB,GAAK5rI,EAAYksF,GAEvDlsF,EAAWioC,KAAMiiE,GAEjB2hC,GAAQ,IAAIiH,GAAYlH,GAAK5rI,EAAYkqG,GAEzC52K,EAAQ,IAAIsyM,GAAYgG,GAAK5rI,EAAYkqG,GAEzCnoG,EAAO,IAAIwmH,GAAWqjB,IACtBvqN,EAAa,IAAI67M,GACjBjqD,EAAW,IAAI04D,GAAeC,GAAK5rI,EAAY1sE,EAAOjS,EAAY6oL,EAAc2hC,GAAO9pI,GACvFo2G,EAAW,IAAIyI,GAAehxL,GAC9BqqM,EAAa,IAAIjT,GAAiBp3L,GAClCg2D,EAAa,IAAIqkH,GAAiB2hC,GAAK1hC,GACvCgQ,GAAgB,IAAIL,GAAoB+xB,GAAK5rI,EAAYpa,EAAYskH,GACrE9e,EAAa,IAAIu8B,GAAiBikB,GAAKhmJ,EAAYmc,EAAMm4G,IACzD9B,EAAU,IAAImS,GAAcqhB,GAAKxgD,EAAYxlG,EAAYmc,GACzDmiJ,GAAe,IAAIj7B,GAAmB2iB,GAAK1hC,EAAcj3B,GACzDwvB,GAAW,IAAI2c,GAAe/9L,GAC9B2iO,EAAe,IAAIhqB,GAAepqM,EAAOuoL,EAAU8hB,EAAYj6H,EAAYkqG,EAAcgQ,GAAezX,IACxGpX,GAAY,IAAIk0D,GAAgB3vN,EAAOvO,GACvC4iO,GAAc,IAAInmB,GAClB4D,GAAe,IAAID,GAAmBzhI,EAAYkqG,GAClD52H,GAAa,IAAI4kI,GAAiBtoL,EAAOuoL,EAAU7kL,EAAO8kL,EAASkpC,EAAQK,GAC3EplB,GAAY,IAAI+F,GAAgB1yM,EAAOwoL,EAASlO,GAEhDi6C,GAAiB,IAAI1mC,GAAqBmuB,GAAK5rI,EAAY+B,EAAMmoG,GACjEk6C,GAAwB,IAAI/7B,GAA4BujB,GAAK5rI,EAAY+B,EAAMmoG,GAE/EnoG,EAAK4mH,SAAWq7B,EAAar7B,SAE7B/4L,EAAMs6K,aAAeA,EACrBt6K,EAAMowE,WAAaA,EACnBpwE,EAAMvO,WAAaA,EACnBuO,EAAMq0N,YAAcA,GACpBr0N,EAAM2sM,UAAYA,GAClB3sM,EAAM0D,MAAQA,EACd1D,EAAMmyE,KAAOA,CAEd,CAEA4iJ,KAIA,IAAMz+C,GAAK,IAAIgzC,GAActpN,EAAOg8M,IAwQpC,SAAS4Y,GAAevoM,GAEvBA,EAAM9H,iBAEN1sB,QAAQC,IAAK,sCAEb86N,GAAiB,CAElB,CAEA,SAASiC,KAERh9N,QAAQC,IAAK,0CAEb86N,GAAiB,EAEjB,IAAMoC,EAAgB7iJ,EAAK6mH,UACrB2O,EAAmBgF,GAAUh4B,QAC7BsgD,EAAsBtoB,GAAUkI,WAChCqgB,EAAuBvoB,GAAUvpD,YACjCshD,EAAgBiI,GAAUjkN,KAEhCqsO,KAEA5iJ,EAAK6mH,UAAYg8B,EACjBroB,GAAUh4B,QAAUgzB,EACpBgF,GAAUkI,WAAaogB,EACvBtoB,GAAUvpD,YAAc8xE,EACxBvoB,GAAUjkN,KAAOg8M,CAElB,CAEA,SAASywB,GAAmB9oM,GAE3B,IAAMswI,EAAWtwI,EAAMhnC,OAEvBs3K,EAAS3gJ,oBAAqB,UAAWm5M,IAQ1C,SAA6Bx4D,IAS7B,SAA2CA,GAE1C,IAAMo8B,EAAWtnM,EAAWoiB,IAAK8oJ,GAAWo8B,cAE1B7qM,IAAb6qM,IAEJA,EAAS1yM,SAAS,SAAW+kM,GAE5BgpC,EAAahnB,eAAgBhiB,EAE9B,IAEKzuB,EAAS2W,kBAEb8gD,EAAa/mB,mBAAoB1wC,GAMpC,EA3BCy4D,CAAkCz4D,GAElClrK,EAAWizD,OAAQi4G,EAEpB,CAZC04D,CAAoB14D,EAErB,CA9SA74K,KAAKwyL,GAAKA,GAIVxyL,KAAKi5I,WAAa,WAEjB,OAAOi/E,EAER,EAEAl4N,KAAKmmO,qBAAuB,WAE3B,OAAOjO,GAAIiO,sBAEZ,EAEAnmO,KAAKwxO,iBAAmB,WAEvB,IAAMlrC,EAAYh6G,EAAWv8D,IAAK,sBAC7Bu2K,GAAYA,EAAUmrC,aAE5B,EAEAzxO,KAAK0xO,oBAAsB,WAE1B,IAAMprC,EAAYh6G,EAAWv8D,IAAK,sBAC7Bu2K,GAAYA,EAAUqrC,gBAE5B,EAEA3xO,KAAK4xO,cAAgB,WAEpB,OAAOnC,CAER,EAEAzvO,KAAK6xO,cAAgB,SAAWpzO,QAEhB2L,IAAV3L,IAELgxO,EAAchxO,EAEduB,KAAK8xO,QAASvC,EAAQC,GAAS,GAEhC,EAEAxvO,KAAKqsK,QAAU,SAAW9qK,GAEzB,OAAOA,EAAO0tB,IAAKsgN,EAAQC,EAE5B,EAEAxvO,KAAK8xO,QAAU,SAAW3jO,EAAOC,EAAQ2jO,GAEnCv/C,GAAGw0C,aAEPjzN,QAAQk/C,KAAM,0EAKfs8K,EAASphO,EACTqhO,EAAUphO,EAEVsqI,EAAQvqI,MAAQlR,KAAKwf,MAAOtO,EAAQshO,GACpC/2F,EAAQtqI,OAASnR,KAAKwf,MAAOrO,EAASqhO,IAEjB,IAAhBsC,IAEJr5F,EAAQruI,MAAM8D,MAAQA,EAAQ,KAC9BuqI,EAAQruI,MAAM+D,OAASA,EAAS,MAIjCpO,KAAKgyO,YAAa,EAAG,EAAG7jO,EAAOC,GAEhC,EAEApO,KAAKiyO,qBAAuB,SAAW1wO,GAEtC,OAAOA,EAAO0tB,IAAKsgN,EAASE,EAAaD,EAAUC,GAAchzN,OAElE,EAEAzc,KAAKkyO,qBAAuB,SAAW/jO,EAAOC,EAAQmrI,GAErDg2F,EAASphO,EACTqhO,EAAUphO,EAEVqhO,EAAcl2F,EAEdb,EAAQvqI,MAAQlR,KAAKwf,MAAOtO,EAAQorI,GACpCb,EAAQtqI,OAASnR,KAAKwf,MAAOrO,EAASmrI,GAEtCv5I,KAAKgyO,YAAa,EAAG,EAAG7jO,EAAOC,EAEhC,EAEApO,KAAKmyO,mBAAqB,SAAW5wO,GAEpC,OAAOA,EAAOm6J,KAAM0zE,EAErB,EAEApvO,KAAK+xN,YAAc,SAAWxwN,GAE7B,OAAOA,EAAOm6J,KAAMwzD,EAErB,EAEAlvN,KAAKgyO,YAAc,SAAW91O,EAAGmL,EAAG8G,EAAOC,GAErClS,EAAE6kK,UAENmuD,EAAUjgM,IAAK/yB,EAAEA,EAAGA,EAAEmL,EAAGnL,EAAEoL,EAAGpL,EAAEkL,GAIhC8nN,EAAUjgM,IAAK/yB,EAAGmL,EAAG8G,EAAOC,GAI7BwR,EAAMwhJ,SAAUguE,EAAiB1zE,KAAMwzD,GAAY35D,eAAgBk6E,GAAchzN,QAElF,EAEAzc,KAAKoyO,WAAa,SAAW7wO,GAE5B,OAAOA,EAAOm6J,KAAMk0E,EAErB,EAEA5vO,KAAKqyO,WAAa,SAAWn2O,EAAGmL,EAAG8G,EAAOC,GAEpClS,EAAE6kK,UAEN6uE,EAAS3gN,IAAK/yB,EAAEA,EAAGA,EAAEmL,EAAGnL,EAAEoL,EAAGpL,EAAEkL,GAI/BwoO,EAAS3gN,IAAK/yB,EAAGmL,EAAG8G,EAAOC,GAI5BwR,EAAMshJ,QAASmuE,EAAgB3zE,KAAMk0E,GAAWr6E,eAAgBk6E,GAAchzN,QAE/E,EAEAzc,KAAKsyO,eAAiB,WAErB,OAAOzC,CAER,EAEA7vO,KAAKuxN,eAAiB,SAAWghB,GAEhC3yN,EAAM2xM,eAAgBse,EAAe0C,EAEtC,EAEAvyO,KAAKwyO,cAAgB,SAAW7+N,GAE/B+7N,EAAc/7N,CAEf,EAEA3T,KAAKyyO,mBAAqB,SAAW9+N,GAEpCg8N,EAAmBh8N,CAEpB,EAIA3T,KAAKmlM,cAAgB,SAAW5jM,GAE/B,OAAOA,EAAOm6J,KAAM97F,GAAWulI,gBAEhC,EAEAnlM,KAAKolM,cAAgB,WAEpBxlI,GAAWwlI,cAActlM,MAAO8/D,GAAY3/D,UAE7C,EAEAD,KAAKqlM,cAAgB,WAEpB,OAAOzlI,GAAWylI,eAEnB,EAEArlM,KAAKslM,cAAgB,WAEpB1lI,GAAW0lI,cAAcxlM,MAAO8/D,GAAY3/D,UAE7C,EAEAD,KAAKG,MAAQ,WAAwD,IAEhEguI,EAAO,KAFiBluI,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,MAIfkuI,GAAQ,UAJqBluI,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,MAK7BkuI,GAAQ,QALqCluI,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,MAM3CkuI,GAAQ,MAEvB+pF,GAAI/3N,MAAOguI,EAEZ,EAEAnuI,KAAK6kM,WAAa,WAEjB7kM,KAAKG,OAAO,GAAM,GAAO,EAE1B,EAEAH,KAAKkzN,WAAa,WAEjBlzN,KAAKG,OAAO,GAAO,GAAM,EAE1B,EAEAH,KAAK+zN,aAAe,WAEnB/zN,KAAKG,OAAO,GAAO,GAAO,EAE3B,EAIAH,KAAK0hK,QAAU,WAEdhpB,EAAQxgH,oBAAqB,mBAAoB44M,IAAe,GAChEp4F,EAAQxgH,oBAAqB,uBAAwB64M,IAAkB,GAEvER,GAAY7uE,UACZssD,GAAatsD,UACb/zJ,EAAW+zJ,UACX+iC,EAAS/iC,UACT6kD,EAAW7kD,UACXgjC,EAAQhjC,UACR8kC,GAAc9kC,UACd4uE,EAAa5uE,UAEb8wB,GAAG9wB,UAEH8wB,GAAGt6J,oBAAqB,eAAgBw6M,IACxClgD,GAAGt6J,oBAAqB,aAAcy6M,IAEjC3C,IAEJA,EAA0BtuE,UAC1BsuE,EAA4B,MAI7B7iM,GAAUshC,MAEX,EAiFAzuE,KAAKkwN,mBAAqB,SAAWtoD,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,EAAQslG,GAEhE,OAAVsqF,IAAiBA,EAAQo+C,GAE9B,IAAMhZ,EAAgBh1N,EAAOk2K,QAAUl2K,EAAO8lK,YAAYsL,cAAgB,EAEpE+zB,EA6uBP,SAAqB1/B,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,IAEhC,IAAlB4vL,EAAM5Z,UAAmB4Z,EAAQo+C,GAEtC5wE,EAAS0+D,oBAET,IAAMtiD,EAAMoW,EAAMpW,IACZvD,EAAcS,EAAS8uC,uBAAyB51B,EAAM3Z,YAAc,KACpE3Z,EAAsC,OAAzBwwE,EAAkC/yN,EAAMk2K,gBAA6D,IAA1C68C,EAAqB3mB,iBAA4B2mB,EAAqB5tE,QAAQ5C,SAAWxP,GACjKsxB,GAAW1H,EAAS8uC,uBAAyBpB,EAAa9hB,GAAW10K,IAAK8oJ,EAAS0H,QAAUnI,GAC7FirC,GAAyC,IAA1BxqC,EAASiD,gBAA4BhR,EAAS54F,WAAW1qC,OAAgD,IAAvCsjI,EAAS54F,WAAW1qC,MAAMi7I,SAC3G2gC,IAAoBvqC,EAAS8G,aAAgB7U,EAAS54F,WAAWm0G,QACjEoF,IAAkB3gB,EAASgb,gBAAgBvmH,SAC3Cy2I,IAAkBlrC,EAASgb,gBAAgB/c,OAC3CktC,IAAiBnrC,EAASgb,gBAAgBt+I,MAC1C8qJ,EAAczZ,EAAS+E,WAAa1hK,EAAMo2K,YAAc7oC,GAExDw9B,EAAiBnc,EAASgb,gBAAgBvmH,UAAYurG,EAASgb,gBAAgB/c,QAAU+B,EAASgb,gBAAgBt+I,MAClHouK,OAAyCxrM,IAAnB68K,EAAiCA,EAAervL,OAAS,EAE/Ek1M,EAAqBn/L,EAAWoiB,IAAK8oJ,GACrCiW,EAAS2/C,EAAmB7uN,MAAMkvK,OAExC,IAA0B,IAArBghD,KAE2B,IAA1BC,GAAkCnoE,IAAWunE,GAAiB,CAElE,IAAMtiC,EACLjlC,IAAWunE,GACXt2D,EAASz5I,KAAO8vM,EAKjBngD,GAASvvK,SAAUq5J,EAAUjR,EAAQilC,EAEtC,CAMD,IAAI+lC,GAAqB,EAEpB/5D,EAASx/K,UAAYyzM,EAAmBouB,UAEvCpuB,EAAmB+lC,aAAiB/lC,EAAmBgmC,qBAAuBhkD,EAAOlvK,MAAMvmB,SAIpFyzM,EAAmB1a,iBAAmB3zB,GAItCt8J,EAAO61K,kBAAqD,IAAlC80B,EAAmB+V,WANxD+vB,GAAqB,EAURzwO,EAAO61K,kBAAqD,IAAlC80B,EAAmB+V,WAI/C1gN,EAAOs2K,gBAAiD,IAAhCq0B,EAAmB0W,SAEtDovB,GAAqB,EAERzwO,EAAOs2K,gBAAiD,IAAhCq0B,EAAmB0W,SAI7C1W,EAAmBvsB,SAAWA,GAI9B1H,EAAS8C,KAAOmxB,EAAmBnxB,MAAQA,EAFtDi3D,GAAqB,OAM+BxoO,IAAzC0iM,EAAmB2S,mBAC5B3S,EAAmB2S,oBAAsB1wB,GAASkd,WACpDa,EAAmBZ,kBAAoBnd,GAASmd,iBAIrCY,EAAmBuW,eAAiBA,GAIpCvW,EAAmBsW,iBAAmBA,GAItCtW,EAAmBrhB,eAAiBA,GAIpCqhB,EAAmBkJ,eAAiBA,GAIpClJ,EAAmBmJ,cAAgBA,GAInCnJ,EAAmBxa,cAAgBA,IAIT,IAA1BkE,EAAaC,UAAqBqW,EAAmB8I,oBAAsBA,KAtBtFg9B,GAAqB,GAJrBA,GAAqB,EAdrBA,GAAqB,EARrBA,GAAqB,GAwDtBA,GAAqB,EACrB9lC,EAAmBouB,UAAYriD,EAASx/K,SAMzC,IAAIiuM,EAAUwF,EAAmBsnB,gBAEL,IAAvBwe,IAEJtrC,EAAUyrC,GAAYl6D,EAAUkZ,EAAO5vL,IAIxC,IAAI6wO,GAAiB,EACjBC,GAAkB,EAClBC,GAAgB,EAEdC,EAAa7rC,EAAQoP,cAC1B08B,EAAatmC,EAAmB1e,SAE5BxuK,EAAMq3M,WAAY3vB,EAAQA,WAE9B0rC,GAAiB,EACjBC,GAAkB,EAClBC,GAAgB,GAIZr6D,EAASz5I,KAAO8vM,IAEpBA,EAAqBr2D,EAASz5I,GAE9B6zM,GAAkB,GAInB,GAAKD,GAAkB7D,IAAmBvnE,EAAS,CA2BlD,GAzBAurE,EAAWljN,SAAUioM,GAAK,mBAAoBtwD,EAAOG,kBAEhDyuB,EAAamU,wBAEjBwoC,EAAWljN,SAAUioM,GAAK,gBACzB,GAAQj7N,KAAK+W,IAAK4zJ,EAAOkM,IAAM,GAAQ72K,KAAKo+B,MAIzC8zM,IAAmBvnE,IAEvBunE,EAAiBvnE,EAMjBqrE,GAAkB,EAClBC,GAAgB,GAOZr6D,EAAS2W,kBACb3W,EAAS4zD,qBACT5zD,EAAS0zD,oBACT1zD,EAAS8uC,wBACT9uC,EAAS0H,OAAS,CAElB,IAAM8yD,EAAUF,EAAW52O,IAAI+2O,oBAEdlpO,IAAZipO,GAEJA,EAAQpjN,SAAUioM,GACjBgY,EAASt5D,sBAAuBhP,EAAOK,aAI1C,EAEK4Q,EAAS4zD,qBACb5zD,EAAS0zD,oBACT1zD,EAASyzD,uBACTzzD,EAASwJ,qBACTxJ,EAAS8uC,wBACT9uC,EAAS2W,mBAET2jD,EAAWljN,SAAUioM,GAAK,kBAAkD,IAAhCtwD,EAAOumC,uBAI/Ct1B,EAAS4zD,qBACb5zD,EAAS0zD,oBACT1zD,EAASyzD,uBACTzzD,EAASwJ,qBACTxJ,EAAS8uC,wBACT9uC,EAAS2W,kBACT3W,EAAS60D,kBACTvrO,EAAOs2K,gBAEP06D,EAAWljN,SAAUioM,GAAK,aAActwD,EAAOE,mBAIjD,CAMA,GAAK3lK,EAAOs2K,cAAgB,CAE3B06D,EAAWr1B,YAAaoa,GAAK/1N,EAAQ,cACrCgxO,EAAWr1B,YAAaoa,GAAK/1N,EAAQ,qBAErC,IAAMy2K,EAAWz2K,EAAOy2K,SAEnBA,IAEC4d,EAAagV,qBAEa,OAAzB5yB,EAAS26D,aAAuB36D,EAAS46D,qBAE9CL,EAAWljN,SAAUioM,GAAK,cAAet/C,EAAS26D,YAAah0E,GAC/D4zE,EAAWljN,SAAUioM,GAAK,kBAAmBt/C,EAAS66D,kBAItDN,EAAWr1B,YAAaoa,GAAKt/C,EAAU,gBAM1C,CAEA,IAAMkN,EAAkBhb,EAASgb,sBAEC17K,IAA7B07K,EAAgBvmH,eAAqDn1D,IAA3B07K,EAAgB/c,aAAoD3+J,IAA1B07K,EAAgBt+I,QAAiD,IAA1BgvJ,EAAaC,WAE5I+5C,GAAaltE,OAAQnhK,EAAQ2oK,EAAU+N,EAAUyuB,IAK7C2rC,GAAmBnmC,EAAmB72B,gBAAkB9zK,EAAO8zK,iBAEnE62B,EAAmB72B,cAAgB9zK,EAAO8zK,cAC1Ck9D,EAAWljN,SAAUioM,GAAK,gBAAiB/1N,EAAO8zK,gBAI9Cg9D,IAEJE,EAAWljN,SAAUioM,GAAK,sBAAuBh8M,EAAM2yN,qBAElD/hC,EAAmB+lC,cAsDwBp0O,EA3CJy0O,GA2CN9kD,EA3CNglD,GA6CxBxxC,kBAAkBtiC,YAAc7gK,EACzC2vL,EAASyT,WAAWviC,YAAc7gK,EAElC2vL,EAAS0T,kBAAkBxiC,YAAc7gK,EACzC2vL,EAAS2T,wBAAwBziC,YAAc7gK,EAC/C2vL,EAASyU,YAAYvjC,YAAc7gK,EACnC2vL,EAAS0U,kBAAkBxjC,YAAc7gK,EACzC2vL,EAASkU,WAAWhjC,YAAc7gK,EAClC2vL,EAASsU,iBAAiBpjC,YAAc7gK,EACxC2vL,EAASkV,eAAehkC,YAAc7gK,EACtC2vL,EAAS+U,iBAAiB7jC,YAAc7gK,GAjDlCk9K,GAAO9C,EAAS8C,KAEpBhE,GAAUs0D,mBAAoBmH,EAAYz3D,GAI3ChE,GAAUy0D,wBAAyBgH,EAAYv6D,EAAU42D,EAAaD,EAASQ,GAE/E1yB,GAAcS,OAAQma,GAAKprB,EAAmB4mC,aAAcN,EAAY7zE,IA6B1E,IAAwC6uB,EAAU3vL,EAzB5Co6K,EAAS2W,mBAAoD,IAAhC3W,EAASyW,qBAE1CguB,GAAcS,OAAQma,GAAKprB,EAAmB4mC,aAAcN,EAAY7zE,GACxEsZ,EAASyW,oBAAqB,GAI1BzW,EAAS20D,kBAEb2F,EAAWljN,SAAUioM,GAAK,SAAU/1N,EAAOk0J,QAU5C,OAJA88E,EAAWljN,SAAUioM,GAAK,kBAAmB/1N,EAAOyzK,iBACpDu9D,EAAWljN,SAAUioM,GAAK,eAAgB/1N,EAAO0zK,cACjDs9D,EAAWljN,SAAUioM,GAAK,cAAe/1N,EAAO8lK,aAEzCq/B,CAER,CAjjCiBqsC,CAAY/rE,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,GAE/Dyd,EAAMs3M,YAAar+C,EAAUs+C,GAI7B,IAAIvoN,EAAQk8J,EAASl8J,MACf2wD,EAAWurG,EAAS54F,WAAW3S,SAIrC,GAAe,OAAV3wD,GAEJ,QAAkBxE,IAAbm1D,GAA6C,IAAnBA,EAASoe,MAAc,YAEhD,GAAqB,IAAhB/uE,EAAM+uE,MAEjB,OAMD,IAWIu4E,EAXA09E,EAAc,GAEU,IAAvB/6D,EAAS2I,YAEb5yK,EAAQ8oK,EAAW+8B,sBAAuB3pC,GAC1C8oE,EAAc,GAIfptC,GAAcyB,MAAO9lM,EAAQ02K,EAAUyuB,EAASx8B,EAAUl8J,GAG1D,IAAIkjL,EAAW2+C,GAEA,OAAV7hO,IAEJsnJ,EAAYhkF,EAAWniD,IAAKnhB,IAE5BkjL,EAAW4+C,IACF1mD,SAAU9zB,IAMpB,IAAM29E,EAAwB,OAAVjlO,EAAmBA,EAAM+uE,MAAQpe,EAASoe,MAExDm2J,EAAahpE,EAASob,UAAUp7I,MAAQ8oM,EACxCtoM,EAAaw/H,EAASob,UAAUvoG,MAAQi2J,EAExCzmD,EAAuB,OAAV1lF,EAAiBA,EAAM38D,MAAQ8oM,EAAc,EAC1D3lD,EAAuB,OAAVxmF,EAAiBA,EAAM9pB,MAAQi2J,EAAczqL,IAE1D4qL,EAAY92O,KAAKC,IAAK42O,EAAY3mD,GAClC6mD,EAAU/2O,KAAKiuC,IAAK2oM,EAAWC,EAAaxoM,EAAY6hJ,EAAac,GAAe,EAEpFgmD,EAAYh3O,KAAKC,IAAK,EAAG82O,EAAUD,EAAY,GAErD,GAAmB,IAAdE,EAAL,CAIA,GAAK9xO,EAAOk2K,QAEiB,IAAvBQ,EAAS2I,WAEb5hK,EAAMw3M,aAAcv+C,EAAS4I,mBAAqB4uD,KAClDv+C,EAASkY,QAAS,IAIlBlY,EAASkY,QAAS,QAIb,GAAK7nM,EAAOm2K,OAAS,CAE3B,IAAI++C,EAAYx+C,EAASuI,eAENh3K,IAAditN,IAA0BA,EAAY,GAE3Cz3M,EAAMw3M,aAAcC,EAAYgZ,KAE3BluO,EAAO+xO,eAEXpiD,EAASkY,QAAS,GAEP7nM,EAAOgyO,WAElBriD,EAASkY,QAAS,GAIlBlY,EAASkY,QAAS,EAIpB,MAAY7nM,EAAOo2K,SAElBuZ,EAASkY,QAAS,GAEP7nM,EAAOiyO,UAElBtiD,EAASkY,QAAS,GAInB,GAAK7nM,EAAO61K,gBAEX8Z,EAASoY,gBAAiB6pC,EAAWE,EAAW9xO,EAAOw7E,YAEjD,GAAKmtF,EAASg+B,0BAA4B,CAEhD,IAAMqM,EAAgBl4M,KAAKiuC,IAAK4/H,EAASqqC,cAAerqC,EAASs+B,mBAEjEtX,EAASoY,gBAAiB6pC,EAAWE,EAAW9+B,EAEjD,MAECrjB,EAAStsL,OAAQuuO,EAAWE,EA7DA,CAiE9B,EAIAj0O,KAAK+xM,QAAU,SAAWhgB,EAAOnqB,IAEhC6mE,EAAqBzgB,GAAaj+L,IAAKgiK,IACpBx9D,OAEnBo6G,EAAiB7xO,KAAM2xO,GAEvB18C,EAAM3a,iBAAiB,SAAWj1K,GAE5BA,EAAO20K,SAAW30K,EAAOwyK,OAAOz8K,KAAM0vK,EAAO+M,UAEjD85D,EAAmB7gB,UAAWzrN,GAEzBA,EAAO6zK,YAEXy4D,EAAmB5gB,WAAY1rN,GAMlC,IAEAssO,EAAmB/gB,YAAaxxM,EAAM6nM,yBAEtChyB,EAAM5a,UAAU,SAAWh1K,GAE1B,IAAM02K,EAAW12K,EAAO02K,SAExB,GAAKA,EAEJ,GAAKl8K,MAAM0E,QAASw3K,GAEnB,IAAM,IAAIn8K,EAAI,EAAGA,EAAIm8K,EAASjhL,OAAQ8E,IAAO,CAI5Cq2O,GAFkBl6D,EAAUn8K,GAELq1L,EAAO5vL,EAE/B,MAIA4wO,GAAYl6D,EAAUkZ,EAAO5vL,EAMhC,IAEAwsO,EAAiB39K,MACjBy9K,EAAqB,IAEtB,EAIA,IAAIrD,GAA2B,KAQ/B,SAASsH,KAERvlM,GAAUshC,MAEX,CAEA,SAASkkK,KAERxlM,GAAUrC,OAEX,CAEA,IAAMqC,GAAY,IAAI4oJ,GAqKtB,SAASs+C,GAAelyO,EAAQylK,EAAQ8hD,EAAYklB,GAEnD,IAAwB,IAAnBzsO,EAAOwnE,QAAZ,CAIA,GAFgBxnE,EAAOwyK,OAAOz8K,KAAM0vK,EAAO+M,QAI1C,GAAKxyK,EAAO8gO,QAEXvZ,EAAavnN,EAAOg0K,iBAEd,GAAKh0K,EAAOmyO,OAES,IAAtBnyO,EAAO4uN,YAAsB5uN,EAAOmhK,OAAQsE,QAE3C,GAAKzlK,EAAO20K,QAElB23D,EAAmB7gB,UAAWzrN,GAEzBA,EAAO6zK,YAEXy4D,EAAmB5gB,WAAY1rN,QAI1B,GAAKA,EAAOiyO,UAElB,IAAOjyO,EAAO+zK,eAAiB64C,EAASwlB,iBAAkBpyO,GAAW,CAE/DysO,GAEJsB,EAASt5D,sBAAuBz0K,EAAO8lK,aACrCJ,aAAcooE,GAIjB,IAAMnlE,EAAW45B,EAAQphC,OAAQnhK,GAC3B02K,EAAW12K,EAAO02K,SAEnBA,EAASlvG,SAEb6kK,EAAkB1xO,KAAMqF,EAAQ2oK,EAAU+N,EAAU6wC,EAAYwmB,EAAS5oO,EAAG,KAI9E,OAEM,IAAKnF,EAAOk2K,QAAUl2K,EAAOm2K,QAAUn2K,EAAOo2K,YAE/Cp2K,EAAOs2K,eAINt2K,EAAOy2K,SAASwd,QAAU/nG,EAAK7oF,OAAO4wL,QAE1Cj0L,EAAOy2K,SAAStV,SAChBnhK,EAAOy2K,SAASwd,MAAQ/nG,EAAK7oF,OAAO4wL,QAM/Bj0L,EAAO+zK,eAAiB64C,EAAS8B,iBAAkB1uN,IAAW,CAE/DysO,GAEJsB,EAASt5D,sBAAuBz0K,EAAO8lK,aACrCJ,aAAcooE,GAIjB,IAAMnlE,EAAW45B,EAAQphC,OAAQnhK,GAC3B02K,EAAW12K,EAAO02K,SAExB,GAAKl8K,MAAM0E,QAASw3K,GAInB,IAFA,IAAMmN,EAASlb,EAASkb,OAEdtpL,EAAI,EAAGmK,EAAIm/K,EAAOpuL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAM+qG,EAAQu+E,EAAQtpL,GAChBqvL,EAAgBlT,EAAUpxE,EAAM0+E,eAEjC4F,GAAiBA,EAAcpiH,SAEnC6kK,EAAkB1xO,KAAMqF,EAAQ2oK,EAAUihB,EAAe29B,EAAYwmB,EAAS5oO,EAAGmgG,EAInF,MAEWoxE,EAASlvG,SAEpB6kK,EAAkB1xO,KAAMqF,EAAQ2oK,EAAU+N,EAAU6wC,EAAYwmB,EAAS5oO,EAAG,KAI9E,CAQF,IAFA,IAAMsW,EAAWzb,EAAOyb,SAEdlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5C23O,GAAez2N,EAAUlhB,GAAKkrK,EAAQ8hD,EAAYklB,EA1Gb,CA8GvC,CAEA,SAAS4F,GAAahG,EAAmBz8C,EAAOnqB,EAAQxG,GAEvD,IAAMqzE,EAAgBjG,EAAkBxqB,OAClC0wB,EAAsBlG,EAAkBzkB,aACxC4qB,EAAqBnG,EAAkBzyD,YAE7C0yD,EAAmB9gB,gBAAiB/lD,GAE/B8sE,EAAoB98O,OAAS,GAkBnC,SAAiC68O,EAAe1iD,EAAOnqB,GAEtD,IAAM6uB,EAAWD,EAAaC,SAEK,OAA9Bu5C,IAEJA,EAA4B,IAAIhvE,GAAmB,EAAG,EAAG,CACxDnC,iBAAiB,EACjBj6J,KAAyC,OAAnCuzN,GAAMv9D,QAASnP,IAA2BA,GAAgBP,GAChEoT,UAAWtT,GACXyW,QAAWg1B,IAA2B,IAAfu3C,EAAwB,EAAI,KAKrD9xN,EAAM+1N,qBAAsBx+C,GAEvBgD,EAEJu5C,EAA0B8B,QAASr+C,EAASv3L,EAAGu3L,EAASpsL,GAIxD2oO,EAA0B8B,QAASt/E,GAAiBihC,EAASv3L,GAAKs2J,GAAiBihC,EAASpsL,IAM7F,IAAM4qL,EAAsB/1K,EAAMg2K,kBAClCh2K,EAAMu2K,gBAAiBu9C,GACvB9zN,EAAM/b,QAIN,IAAMkyL,EAAqBn2K,EAAMo2K,YACjCp2K,EAAMo2K,YAAc7oC,GAEpBmrF,GAAeH,EAAe1iD,EAAOnqB,GAErC1rJ,EAAMo2K,YAAcD,EAEpB9yB,EAASs/D,8BAA+BmR,GACxCzwE,EAASq/D,yBAA0BoR,GAEnC9zN,EAAMu2K,gBAAiBR,EAExB,CAjEuC4iD,CAAwBJ,EAAe1iD,EAAOnqB,GAE/ExG,GAAWxhJ,EAAMwhJ,SAAUguE,EAAiB1zE,KAAM0F,IAElDqzE,EAAc78O,OAAS,GAAIg9O,GAAeH,EAAe1iD,EAAOnqB,GAChE8sE,EAAoB98O,OAAS,GAAIg9O,GAAeF,EAAqB3iD,EAAOnqB,GAC5E+sE,EAAmB/8O,OAAS,GAAIg9O,GAAeD,EAAoB5iD,EAAOnqB,GAI/EhoJ,EAAM82K,QAAQnoF,MAAM+iH,SAAS,GAC7B1xM,EAAM82K,QAAQnoF,MAAMkkH,SAAS,GAC7B7yM,EAAM82K,QAAQlvJ,MAAMirL,SAAS,GAE7B7yM,EAAM+2M,kBAAkB,EAEzB,CAmDA,SAASie,GAAervC,EAAYxT,EAAOnqB,GAI1C,IAFA,IAAMwoE,GAAqC,IAAlBr+C,EAAM5Z,QAAmB4Z,EAAMq+C,iBAAmB,KAEjE1zO,EAAI,EAAGmK,EAAI0+L,EAAW3tM,OAAQ8E,EAAImK,EAAGnK,IAAO,CAErD,IAAMutN,EAAa1kB,EAAY7oM,GAEzByF,EAAS8nN,EAAW9nN,OACpB2oK,EAAWm/C,EAAWn/C,SACtB+N,EAAgC,OAArBu3D,EAA4BnmB,EAAWpxC,SAAWu3D,EAC7D3oI,EAAQwiH,EAAWxiH,MAEpBtlG,EAAOwyK,OAAOz8K,KAAM0vK,EAAO+M,SAE/Bg8C,GAAcxuN,EAAQ4vL,EAAOnqB,EAAQkD,EAAU+N,EAAUpxE,EAI3D,CAED,CAEA,SAASkpH,GAAcxuN,EAAQ4vL,EAAOnqB,EAAQkD,EAAU+N,EAAUpxE,GAEjEtlG,EAAO8jM,eAAgB/pL,EAAO61K,EAAOnqB,EAAQkD,EAAU+N,EAAUpxE,GAEjEtlG,EAAOyzK,gBAAgBte,iBAAkBsQ,EAAOE,mBAAoB3lK,EAAO8lK,aAC3E9lK,EAAO0zK,aAAauQ,gBAAiBjkL,EAAOyzK,iBAE5CiD,EAASotB,eAAgB/pL,EAAO61K,EAAOnqB,EAAQkD,EAAU3oK,EAAQslG,IAEnC,IAAzBoxE,EAASkD,aAAwBlD,EAASgD,OAASx0B,IAEvDwxB,EAASgD,KAAOz0B,GAChByxB,EAASvZ,aAAc,EACvBpjJ,EAAMg0M,mBAAoBtoD,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,EAAQslG,GAErEoxE,EAASgD,KAAO10B,GAChB0xB,EAASvZ,aAAc,EACvBpjJ,EAAMg0M,mBAAoBtoD,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,EAAQslG,GAErEoxE,EAASgD,KAAOx0B,IAIhBnrI,EAAMg0M,mBAAoBtoD,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,EAAQslG,GAItEtlG,EAAO2yO,cAAe54N,EAAO61K,EAAOnqB,EAAQkD,EAAU+N,EAAUpxE,EAEjE,CAEA,SAASsrI,GAAYl6D,EAAUkZ,EAAO5vL,IAEd,IAAlB4vL,EAAM5Z,UAAmB4Z,EAAQo+C,GAEtC,IAAMrjC,EAAqBn/L,EAAWoiB,IAAK8oJ,GAErCiW,EAAS2/C,EAAmB7uN,MAAMkvK,OAClC2+B,EAAeghB,EAAmB7uN,MAAM6tM,aAExCqlB,EAAqBhkD,EAAOlvK,MAAMvmB,QAElCm/K,EAAa83D,EAAa7oB,cAAe5uC,EAAUiW,EAAOlvK,MAAO6tM,EAAc17B,EAAO5vL,GACtF4yO,EAAkBzE,EAAavnB,mBAAoBvwC,GAErDy8B,EAAWnI,EAAmBmI,SAIlCnI,EAAmB10B,YAAcS,EAAS8uC,uBAAyB51B,EAAM3Z,YAAc,KACvF00B,EAAmBnxB,IAAMoW,EAAMpW,IAC/BmxB,EAAmBvsB,QAAW1H,EAAS8uC,uBAAyBpB,EAAa9hB,GAAW10K,IAAK8oJ,EAAS0H,QAAUusB,EAAmB10B,kBAEjHhuK,IAAb6qM,IAIJp8B,EAASj1K,iBAAkB,UAAWytO,IAEtCp8B,EAAW,IAAI93K,IACf2vK,EAAmBmI,SAAWA,GAI/B,IAAI3N,EAAU2N,EAASllL,IAAKglN,GAE5B,QAAiB3qO,IAAZk9L,GAIJ,GAAKwF,EAAmBsnB,iBAAmB9sB,GAAWwF,EAAmBgmC,qBAAuBA,EAI/F,OAFAkC,GAAgCn8D,EAAUL,GAEnC8uB,OAMR9uB,EAAW4V,SAAWkiD,EAAa55B,YAAa79B,GAEhDA,EAASo8D,QAAS9yO,EAAQq2K,EAAYt8J,GAEtC28J,EAASiF,gBAAiBtF,EAAYt8J,GAEtCorL,EAAUgpC,EAAalnB,eAAgB5wC,EAAYu8D,GACnD9/B,EAAShmL,IAAK8lN,EAAiBztC,GAE/BwF,EAAmB1e,SAAW5V,EAAW4V,SAI1C,IAAMA,EAAW0e,EAAmB1e,UAE3BvV,EAAS2W,kBAAsB3W,EAAS8pC,uBAA+C,IAAtB9pC,EAASkW,WAElFX,EAASnR,eAAiB8R,GAASgd,SAIpCipC,GAAgCn8D,EAAUL,GAI1Cs0B,EAAmB+lC,YAmZpB,SAA8Bh6D,GAE7B,OAAOA,EAASyzD,uBAAyBzzD,EAAS0zD,oBAAsB1zD,EAAS4zD,qBAChF5zD,EAAS8uC,wBAA0B9uC,EAAS60D,kBAC1C70D,EAAS2W,mBAAwC,IAApB3W,EAASiW,MAE1C,CAzZkComD,CAAqBr8D,GACtDi0B,EAAmBgmC,mBAAqBA,EAEnChmC,EAAmB+lC,cAIvBzkD,EAASwT,kBAAkBnjM,MAAQqwL,EAAOlvK,MAAM6rM,QAChDr9B,EAASyT,WAAWpjM,MAAQqwL,EAAOlvK,MAAM8rM,MACzCt9B,EAAS0T,kBAAkBrjM,MAAQqwL,EAAOlvK,MAAM6oM,YAChDr6B,EAAS2T,wBAAwBtjM,MAAQqwL,EAAOlvK,MAAM+rM,kBACtDv9B,EAASkU,WAAW7jM,MAAQqwL,EAAOlvK,MAAM8oM,KACzCt6B,EAASsU,iBAAiBjkM,MAAQqwL,EAAOlvK,MAAMgsM,WAC/Cx9B,EAASkV,eAAe7kM,MAAQqwL,EAAOlvK,MAAM+oM,SAC7Cv6B,EAASmV,MAAM9kM,MAAQqwL,EAAOlvK,MAAMisM,aACpCz9B,EAASoV,MAAM/kM,MAAQqwL,EAAOlvK,MAAMksM,aACpC19B,EAASyU,YAAYpkM,MAAQqwL,EAAOlvK,MAAM8qJ,MAC1C0jB,EAAS0U,kBAAkBrkM,MAAQqwL,EAAOlvK,MAAMmsM,YAChD39B,EAAS+U,iBAAiB1kM,MAAQqwL,EAAOlvK,MAAMgpM,KAE/Cx6B,EAASgU,qBAAqB3jM,MAAQqwL,EAAOlvK,MAAMwiL,qBACnDhU,EAASiU,wBAAwB5jM,MAAQqwL,EAAOlvK,MAAMyiL,wBACtDjU,EAASuU,cAAclkM,MAAQqwL,EAAOlvK,MAAM+iL,cAC5CvU,EAASwU,iBAAiBnkM,MAAQqwL,EAAOlvK,MAAMgjL,iBAC/CxU,EAAS6U,eAAexkM,MAAQqwL,EAAOlvK,MAAMqjL,eAC7C7U,EAAS8U,kBAAkBzkM,MAAQqwL,EAAOlvK,MAAMsjL,mBAKjD,IAAMiyC,EAAe7tC,EAAQoP,cACvBg9B,EAAep2B,GAAcU,aAAcm3B,EAAax4B,IAAKvuB,GAKnE,OAHA0e,EAAmBsnB,eAAiB9sB,EACpCwF,EAAmB4mC,aAAeA,EAE3BpsC,CAER,CAEA,SAAS0tC,GAAgCn8D,EAAUL,GAElD,IAAMs0B,EAAqBn/L,EAAWoiB,IAAK8oJ,GAE3Ci0B,EAAmB1a,eAAiB5Z,EAAW4Z,eAC/C0a,EAAmB+V,WAAarqC,EAAWqqC,WAC3C/V,EAAmB0W,SAAWhrC,EAAWgrC,SACzC1W,EAAmBrhB,aAAejT,EAAWiT,aAC7CqhB,EAAmBkJ,aAAex9B,EAAWw9B,aAC7ClJ,EAAmBmJ,YAAcz9B,EAAWy9B,YAC5CnJ,EAAmB8I,kBAAoBp9B,EAAWo9B,kBAClD9I,EAAmB2S,kBAAoBjnC,EAAWinC,kBAClD3S,EAAmBZ,gBAAkB1zB,EAAWknC,oBAChD5S,EAAmBuW,aAAe7qC,EAAW6qC,aAC7CvW,EAAmBsW,eAAiB5qC,EAAW4qC,eAC/CtW,EAAmBxa,YAAc9Z,EAAW8Z,WAE7C,CA1hBAnlJ,GAAUkpJ,kBAnBV,SAA2BpuJ,GAErBmjM,IAA2BA,GAA0BnjM,EAE3D,IAiBqB,qBAAT9yB,MAAuBg4B,GAAUmpJ,WAAYnhL,MAEzDnV,KAAKq2L,iBAAmB,SAAWl+I,GAElCizL,GAA2BjzL,EAC3Bq6I,GAAG6D,iBAAkBl+I,GAEN,OAAbA,EAAsBhL,GAAUshC,OAASthC,GAAUrC,OAEtD,EAEA0nJ,GAAG5uL,iBAAkB,eAAgB8uO,IACrClgD,GAAG5uL,iBAAkB,aAAc+uO,IAInC3yO,KAAKwF,OAAS,SAAWusL,EAAOnqB,GAE/B,QAAgBx9J,IAAXw9J,IAA4C,IAApBA,EAAOiP,UAOpC,IAAwB,IAAnBi4D,EAAL,EAI0B,IAArB/8C,EAAMg/B,YAAsBh/B,EAAMxa,oBAIhB,OAAlB3P,EAAO1qG,QAAkB0qG,EAAO2P,qBAEjB,IAAfib,GAAG3B,UAAwC,IAApB2B,GAAGw0C,gBAED,IAAxBx0C,GAAG60C,kBAA4B70C,GAAGm3C,aAAc/hE,GAErDA,EAAS4qB,GAAGw4C,cAKU,IAAlBj5C,EAAM5Z,SAAmB4Z,EAAMkU,eAAgB/pL,EAAO61K,EAAOnqB,EAAQqnE,IAE1ER,EAAqBzgB,GAAaj+L,IAAKgiK,EAAO48C,EAAiB/2O,SAC5C28H,OAEnBo6G,EAAiB7xO,KAAM2xO,GAEvBwB,EAAkB34E,iBAAkBsQ,EAAOG,iBAAkBH,EAAOE,oBACpEinD,EAASqmB,wBAAyBnF,GAElCF,EAAwB/vO,KAAK4rM,qBAC7BkkC,EAAmB/gD,GAASx6D,KAAMv0H,KAAKi9K,eAAgB8yD,EAAuBnoE,IAE9E4mE,EAAoB+B,GAAYxgN,IAAKgiK,EAAO28C,EAAgB92O,SAC1C28H,OAElBm6G,EAAgB5xO,KAAM0xO,GAEtB6F,GAAetiD,EAAOnqB,EAAQ,EAAG1rJ,EAAM0yN,aAEvCJ,EAAkBr7I,UAES,IAAtBj3E,EAAM0yN,aAEVJ,EAAkBh1I,KAAMk2I,EAAaC,IAMZ,IAArBG,GAA4B/gD,GAAS4d,eAE1C,IAAM8gB,EAAeghB,EAAmB7uN,MAAM6tM,aAkB9C,GAhBA5E,GAAUrjN,OAAQioN,EAAc17B,EAAOnqB,IAEb,IAArBkoE,GAA4B/gD,GAAS6d,cAIb,IAAxB5sM,KAAKquF,KAAK6mH,WAAqBl1M,KAAKquF,KAAK9zB,QAI9CqF,GAAWp6D,OAAQgpO,EAAmBz8C,GAItC08C,EAAmB/gB,YAAaxxM,EAAM6nM,yBAEjCn8C,EAAOg7D,cAIX,IAFA,IAAMD,EAAU/6D,EAAO+6D,QAEbjmO,EAAI,EAAGmK,EAAI87N,EAAQ/qO,OAAQ8E,EAAImK,EAAGnK,IAAO,CAElD,IAAM24O,EAAU1S,EAASjmO,GAEzB83O,GAAahG,EAAmBz8C,EAAOsjD,EAASA,EAAQj0E,SAEzD,MAIAozE,GAAahG,EAAmBz8C,EAAOnqB,GAMV,OAAzBqnE,IAIJ1vE,EAASs/D,8BAA+BoQ,GAIxC1vE,EAASq/D,yBAA0BqQ,KAMb,IAAlBl9C,EAAM5Z,SAAmB4Z,EAAM+iD,cAAe54N,EAAO61K,EAAOnqB,GAIjE4+B,GAAcwB,oBACdknC,GAAuB,EACvBC,EAAiB,KAEjBR,EAAiB39K,MAIhBy9K,EAFIE,EAAiB/2O,OAAS,EAET+2O,EAAkBA,EAAiB/2O,OAAS,GAI5C,KAItB82O,EAAgB19K,MAIfw9K,EAFIE,EAAgB92O,OAAS,EAET82O,EAAiBA,EAAgB92O,OAAS,GAI1C,IAnIgB,OALpCmc,QAAQwN,MAAO,yEA4IjB,EA0tBAvhB,KAAKixN,kBAAoB,WAExB,OAAO8d,CAER,EAEA/uO,KAAKmxN,qBAAuB,WAE3B,OAAO6d,CAER,EAEAhvO,KAAKkyL,gBAAkB,WAEtB,OAAO+8C,CAER,EAEAjvO,KAAK2rO,wBAA0B,SAAWt6C,EAAcktC,EAAc/8D,GAErE7zJ,EAAWoiB,IAAKshK,EAAahwB,SAAUg5D,eAAiBkE,EACxD5wN,EAAWoiB,IAAKshK,EAAa7vB,cAAe64D,eAAiB74D,EAE7D,IAAM44D,EAAyBzsN,EAAWoiB,IAAKshK,GAC/C+oC,EAAuBuC,uBAAwB,EAE1CvC,EAAuBuC,wBAE3BvC,EAAuBsD,+BAA6CtzN,IAAjBo3J,EAE5C44D,EAAuBsD,4BAIqC,IAA7DpxI,EAAWl+C,IAAK,0CAEpBr6B,QAAQk/C,KAAM,0GACdmnK,EAAuB0D,sBAAuB,GAQlD,EAEA99N,KAAKurO,2BAA6B,SAAWl6C,EAAcikD,GAE1D,IAAMlb,EAAyBzsN,EAAWoiB,IAAKshK,GAC/C+oC,EAAuBG,mBAAqB+a,EAC5Clb,EAAuBmb,6BAAiDnrO,IAAvBkrO,CAElD,EAEAt1O,KAAKyyL,gBAAkB,SAAWpB,GAA0D,IAA5C2/B,EAAc/wN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGixN,EAAiBjxN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEvFgvO,EAAuB59C,EACvB09C,EAAyB/d,EACzBge,EAA4B9d,EAE5B,IAAIskB,GAAwB,EAE5B,GAAKnkD,EAAe,CAEnB,IAAM+oC,EAAyBzsN,EAAWoiB,IAAKshK,QAESjnL,IAAnDgwN,EAAuBmb,yBAG3B31N,EAAMk3M,gBAAiB,MAAO,MAC9B0e,GAAwB,QAEiCprO,IAA9CgwN,EAAuBG,mBAElCh7D,EAASi/D,kBAAmBntC,GAEjB+oC,EAAuBuC,uBAGlCp9D,EAAS++D,eAAgBjtC,EAAc1jL,EAAWoiB,IAAKshK,EAAahwB,SAAUg5D,eAAgB1sN,EAAWoiB,IAAKshK,EAAa7vB,cAAe64D,eAI5I,CAEA,IAAItD,EAAc,KACd0G,GAAS,EACTgY,GAAmB,EAEvB,GAAKpkD,EAAe,CAEnB,IAAMhwB,EAAUgwB,EAAahwB,SAExBA,EAAQiB,iBAAmBjB,EAAQU,sBAEvC0zE,GAAmB,GAIpB,IAAMlb,EAAqB5sN,EAAWoiB,IAAKshK,GAAekpC,mBAErDlpC,EAAaE,yBAEjBwlC,EAAcwD,EAAoBvJ,GAClCyM,GAAS,GAIT1G,EAFavgC,EAAaC,UAAYpF,EAAa5vB,QAAU,IAAuD,IAAhDlC,EAASq9D,mBAAoBvrC,GAEnF1jL,EAAWoiB,IAAKshK,GAAeqpC,+BAI/BH,EAIf6U,EAAiB1zE,KAAM21B,EAAajwB,UACpCiuE,EAAgB3zE,KAAM21B,EAAanwB,SACnCouE,EAAsBj+C,EAAalwB,WAEpC,MAECiuE,EAAiB1zE,KAAMwzD,GAAY35D,eAAgBk6E,GAAchzN,QACjE4yN,EAAgB3zE,KAAMk0E,GAAWr6E,eAAgBk6E,GAAchzN,QAC/D6yN,EAAsBO,EAgBvB,GAZyBjwN,EAAMk3M,gBAAiB,MAAOC,IAE9BvgC,EAAatH,aAAesmD,GAEpD51N,EAAMsvK,YAAamC,EAAc0lC,GAIlCn3M,EAAMwhJ,SAAUguE,GAChBxvN,EAAMshJ,QAASmuE,GACfzvN,EAAM2xM,eAAgB+d,GAEjB7R,EAAS,CAEb,IAAM5D,EAAoBlsN,EAAWoiB,IAAKshK,EAAahwB,SACvD62D,GAAI6E,qBAAsB,MAAO,MAAO,MAAQ/L,EAAgB6I,EAAkBQ,eAAgBnJ,EAEnG,MAAO,GAAKukB,EAAmB,CAE9B,IAAM5b,EAAoBlsN,EAAWoiB,IAAKshK,EAAahwB,SACjDq0E,EAAQ1kB,GAAkB,EAChCkH,GAAIyd,wBAAyB,MAAO,MAAO9b,EAAkBQ,eAAgBnJ,GAAqB,EAAGwkB,EAEtG,CAEAxG,GAAuB,CAExB,EAEAlvO,KAAK41O,uBAAyB,SAAWvkD,EAAcn1L,EAAGmL,EAAG8G,EAAOC,EAAQ+rJ,EAAQ07E,GAEnF,GAASxkD,GAAgBA,EAAa1vB,oBAAtC,CAOA,IAAIo1D,EAAcppN,EAAWoiB,IAAKshK,GAAekpC,mBAQjD,GANKlpC,EAAaE,8BAAmDnnL,IAAxByrO,IAE5C9e,EAAcA,EAAa8e,IAIvB9e,EAAc,CAElBn3M,EAAMk3M,gBAAiB,MAAOC,GAE9B,IAEC,IAAM11D,EAAUgwB,EAAahwB,QACvBy0E,EAAgBz0E,EAAQ9C,OACxBg9D,EAAcl6D,EAAQz8J,KAE5B,GAAKkxO,IAAkB/pF,IAAcosE,GAAMv9D,QAASk7E,KAAoB5d,GAAI7xB,aAAc,OAGzF,YADAtyL,QAAQwN,MAAO,6GAKhB,IAAMw0N,EAA4Bxa,IAAgB9vE,KAAqBn/D,EAAWl+C,IAAK,gCAAqCooJ,EAAaC,UAAYnqG,EAAWl+C,IAAK,2BAErK,GAAKmtL,IAAgBrwE,IAAoBitE,GAAMv9D,QAAS2gE,KAAkBrD,GAAI7xB,aAAc,SACvFk1B,IAAgB/vE,MAAegrC,EAAaC,UAAYnqG,EAAWl+C,IAAK,sBAAyBk+C,EAAWl+C,IAAK,gCACnH2nM,EAGF,YADAhiO,QAAQwN,MAAO,uHAOTrlB,GAAK,GAAKA,GAAOm1L,EAAaljL,MAAQA,GAAe9G,GAAK,GAAKA,GAAOgqL,EAAajjL,OAASA,GAElG8pN,GAAI8d,WAAY95O,EAAGmL,EAAG8G,EAAOC,EAAQ+pN,GAAMv9D,QAASk7E,GAAiB3d,GAAMv9D,QAAS2gE,GAAephE,EAIrG,CAAE,QAID,IAAM48D,EAAyC,OAAzBkY,EAAkCthO,EAAWoiB,IAAKk/M,GAAuB1U,mBAAqB,KACpH36M,EAAMk3M,gBAAiB,MAAOC,EAE/B,CAED,CAvDA,MAHChjN,QAAQwN,MAAO,2FA4DjB,EAEAvhB,KAAKi2O,yBAA2B,SAAW12K,EAAU8hG,GAAqB,IAAZjtJ,EAAKnU,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAErE,IAAsC,IAAjCohK,EAAQq4D,qBAAb,CAOA,IAAMwc,EAAaj5O,KAAKs1J,IAAK,GAAKn+I,GAC5BjG,EAAQlR,KAAKwf,MAAO4kJ,EAAQloB,MAAMhrI,MAAQ+nO,GAC1C9nO,EAASnR,KAAKwf,MAAO4kJ,EAAQloB,MAAM/qI,OAAS8nO,GAElD32E,EAASg7C,aAAcl5C,EAAS,GAEhC62D,GAAIie,kBAAmB,KAAM/hO,EAAO,EAAG,EAAGmrD,EAASrjE,EAAGqjE,EAASl4D,EAAG8G,EAAOC,GAEzEwR,EAAM63M,eAVN,MAHC1jN,QAAQwN,MAAO,4FAejB,EAEAvhB,KAAKo2O,qBAAuB,SAAW72K,EAAU82K,EAAYC,GAAwB,IAAZliO,EAAKnU,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE1EkO,EAAQkoO,EAAWl9F,MAAMhrI,MACzBC,EAASioO,EAAWl9F,MAAM/qI,OAC1BmrN,EAAWpB,GAAMv9D,QAAS07E,EAAW/3E,QACrCi7D,EAASrB,GAAMv9D,QAAS07E,EAAW1xO,MAEzC26J,EAASg7C,aAAc+7B,EAAY,GAInCpe,GAAI8D,YAAa,MAAOsa,EAAWv3E,OACnCm5D,GAAI8D,YAAa,MAAOsa,EAAWx3E,kBACnCo5D,GAAI8D,YAAa,KAAMsa,EAAWt3E,iBAE7Bq3E,EAAW34E,cAEfw6D,GAAIJ,cAAe,KAAM1jN,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAG8G,EAAOC,EAAQmrN,EAAUC,EAAQ6c,EAAWl9F,MAAMz1G,MAIrG2yM,EAAW1c,oBAEfzB,GAAIF,wBAAyB,KAAM5jN,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAGgvO,EAAW33E,QAAS,GAAIvwJ,MAAOkoO,EAAW33E,QAAS,GAAItwJ,OAAQmrN,EAAU8c,EAAW33E,QAAS,GAAIh7H,MAInKw0L,GAAIJ,cAAe,KAAM1jN,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAGkyN,EAAUC,EAAQ6c,EAAWl9F,OAOxE,IAAV/kI,GAAekiO,EAAWz3E,iBAAkBq5D,GAAIkB,eAAgB,MAErEx5M,EAAM63M,eAEP,EAEAz3N,KAAKu2O,uBAAyB,SAAWC,EAAWj3K,EAAU82K,EAAYC,GAAwB,IAAZliO,EAAKnU,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE7F,GAAKic,EAAM80N,iBAEVj9N,QAAQk/C,KAAM,iFAFf,CAOA,IAKIwjL,EALEtoO,EAAQqoO,EAAUt5O,IAAIhB,EAAIs6O,EAAUtrM,IAAIhvC,EAAI,EAC5CkS,EAASooO,EAAUt5O,IAAImK,EAAImvO,EAAUtrM,IAAI7jC,EAAI,EAC7CknG,EAAQioI,EAAUt5O,IAAIoK,EAAIkvO,EAAUtrM,IAAI5jC,EAAI,EAC5CiyN,EAAWpB,GAAMv9D,QAAS07E,EAAW/3E,QACrCi7D,EAASrB,GAAMv9D,QAAS07E,EAAW1xO,MAGzC,GAAK0xO,EAAWh0E,gBAEf/C,EAASk7C,aAAc67B,EAAY,GACnCG,EAAW,UAEL,KAAKH,EAAWv0E,mBAQtB,YADAhuJ,QAAQk/C,KAAM,+GALdssG,EAASs7C,kBAAmBy7B,EAAY,GACxCG,EAAW,KAOZ,CAEAve,GAAI8D,YAAa,MAAOsa,EAAWv3E,OACnCm5D,GAAI8D,YAAa,MAAOsa,EAAWx3E,kBACnCo5D,GAAI8D,YAAa,KAAMsa,EAAWt3E,iBAElC,IAAM03E,EAAexe,GAAI7xB,aAAc,MACjCswC,EAAoBze,GAAI7xB,aAAc,OACtCuwC,EAAmB1e,GAAI7xB,aAAc,MACrCwwC,EAAiB3e,GAAI7xB,aAAc,MACnCywC,EAAmB5e,GAAI7xB,aAAc,OAErCltD,EAAQk9F,EAAW1c,oBAAsB0c,EAAW33E,QAAS,GAAM23E,EAAWl9F,MAEpF++E,GAAI8D,YAAa,KAAM7iF,EAAMhrI,OAC7B+pN,GAAI8D,YAAa,MAAO7iF,EAAM/qI,QAC9B8pN,GAAI8D,YAAa,KAAMwa,EAAUtrM,IAAIhvC,GACrCg8N,GAAI8D,YAAa,KAAMwa,EAAUtrM,IAAI7jC,GACrC6wN,GAAI8D,YAAa,MAAOwa,EAAUtrM,IAAI5jC,GAEjC+uO,EAAW34E,eAAiB24E,EAAW/zE,gBAE3C41D,GAAIH,cAAe0e,EAAUriO,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAGk4D,EAASj4D,EAAG6G,EAAOC,EAAQmgG,EAAOgrH,EAAUC,EAAQrgF,EAAMz1G,MAIjH2yM,EAAW1c,qBAEf5lN,QAAQk/C,KAAM,2FACdilK,GAAI6e,wBAAyBN,EAAUriO,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAGk4D,EAASj4D,EAAG6G,EAAOC,EAAQmgG,EAAOgrH,EAAUpgF,EAAMz1G,OAIxHw0L,GAAIH,cAAe0e,EAAUriO,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAGk4D,EAASj4D,EAAG6G,EAAOC,EAAQmgG,EAAOgrH,EAAUC,EAAQrgF,GAMlH++E,GAAI8D,YAAa,KAAM0a,GACvBxe,GAAI8D,YAAa,MAAO2a,GACxBze,GAAI8D,YAAa,KAAM4a,GACvB1e,GAAI8D,YAAa,KAAM6a,GACvB3e,GAAI8D,YAAa,MAAO8a,GAGT,IAAV1iO,GAAekiO,EAAWz3E,iBAAkBq5D,GAAIkB,eAAgBqd,GAErE72N,EAAM63M,eAxEN,CA0ED,EAEAz3N,KAAK27N,YAAc,SAAWt6D,GAE7B9B,EAASg7C,aAAcl5C,EAAS,GAEhCzhJ,EAAM63M,eAEP,EAEAz3N,KAAKgkE,WAAa,WAEjB+qK,EAAyB,EACzBC,EAA4B,EAC5BC,EAAuB,KAEvBrvN,EAAM26C,QACNisI,GAAcjsI,OAEf,EAEmC,qBAAvBy8K,oBAEXA,mBAAmBz4M,cAAe,IAAI43E,YAAa,UAAW,CAAE30E,OAAQxhC,OAI1E,CAEA2tO,GAAc/wO,UAAUq6O,iBAAkB,EAAK,IAEzCC,GAAc,SAAAC,GAAAn7N,EAAAk7N,EAAAC,GAAA,IAAAC,EAAAz8N,EAAAu8N,GAAA,SAAAA,IAAA,OAAAzsO,EAAA,KAAAysO,GAAAE,EAAAt3O,MAAA,KAAAG,UAAA,QAAAsJ,EAAA2tO,EAAA,EAASvJ,IAE7BuJ,GAAet6O,UAAUo0O,kBAAmB,EAAK,IAE3CqG,GAAO,WAEZ,SAAAA,EAAa7vM,GAA2B,IAApB2kM,EAAOlsO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,MAAOwK,EAAA,KAAA4sO,GAEpCr3O,KAAK7G,KAAO,GAEZ6G,KAAKwnC,MAAQ,IAAI+zH,GAAO/zH,GACxBxnC,KAAKmsO,QAAUA,CAEhB,CAgBC,OAhBA5iO,EAAA8tO,EAAA,EAAA70O,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAI44O,EAASr3O,KAAKwnC,MAAOxnC,KAAKmsO,QAEtC,GAAC,CAAA3pO,IAAA,SAAA/D,MAED,WAEC,MAAO,CACNmG,KAAM,UACN4iC,MAAOxnC,KAAKwnC,MAAM40H,SAClB+vE,QAASnsO,KAAKmsO,QAGhB,KAACkL,CAAA,CAzBW,GA6BbA,GAAQz6O,UAAU4rN,WAAY,EAAK,IAE7B8uB,GAAG,WAER,SAAAA,EAAa9vM,GAA8B,IAAvBqsI,EAAI5zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG6zK,EAAG7zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIwK,EAAA,KAAA6sO,GAEvCt3O,KAAK7G,KAAO,GAEZ6G,KAAKwnC,MAAQ,IAAI+zH,GAAO/zH,GAExBxnC,KAAK6zK,KAAOA,EACZ7zK,KAAK8zK,IAAMA,CAEZ,CAiBC,OAjBAvqK,EAAA+tO,EAAA,EAAA90O,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAI64O,EAAKt3O,KAAKwnC,MAAOxnC,KAAK6zK,KAAM7zK,KAAK8zK,IAE7C,GAAC,CAAAtxK,IAAA,SAAA/D,MAED,WAEC,MAAO,CACNmG,KAAM,MACN4iC,MAAOxnC,KAAKwnC,MAAM40H,SAClByX,KAAM7zK,KAAK6zK,KACXC,IAAK9zK,KAAK8zK,IAGZ,KAACwjE,CAAA,CA5BO,GAgCTA,GAAI16O,UAAUsvO,OAAQ,EAAK,IAErBqL,GAAK,SAAAC,GAAAx7N,EAAAu7N,EAAAC,GAAA,IAAAC,EAAA98N,EAAA48N,GAEV,SAAAA,IAAc,IAAAG,EAkBZ,OAlBYjtO,EAAA,KAAA8sO,IAEbG,EAAAD,EAAA56O,KAAA,OAEK+H,KAAO,QAEZ8yO,EAAK93K,WAAa,KAClB83K,EAAKt/D,YAAc,KACnBs/D,EAAK/7D,IAAM,KAEX+7D,EAAKtH,iBAAmB,KAExBsH,EAAK3mB,YAAa,EAEiB,qBAAvBimB,oBAEXA,mBAAmBz4M,cAAe,IAAI43E,YAAa,UAAW,CAAE30E,OAAMhmB,EAAAk8N,MAEtEA,CAEF,CA2BC,OA3BAnuO,EAAAguO,EAAA,EAAA/0O,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAab,OAXA9xC,GAAA5rH,EAAAi8N,EAAA36O,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEO,OAAtBx3K,EAAOo+D,aAAsB5/D,KAAK4/D,WAAap+D,EAAOo+D,WAAW1+D,SAC1C,OAAvBM,EAAO42K,cAAuBp4K,KAAKo4K,YAAc52K,EAAO42K,YAAYl3K,SACrD,OAAfM,EAAOm6K,MAAe37K,KAAK27K,IAAMn6K,EAAOm6K,IAAIz6K,SAEhB,OAA5BM,EAAO4uO,mBAA4BpwO,KAAKowO,iBAAmB5uO,EAAO4uO,iBAAiBlvO,SAExFlB,KAAK+wN,WAAavvN,EAAOuvN,WACzB/wN,KAAK4+J,iBAAmBp9J,EAAOo9J,iBAExB5+J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAAi8N,EAAA36O,WAAA,eAAAC,KAAA,KAAiBy5B,GAI3B,OAFkB,OAAbt2B,KAAK27K,MAAej4I,EAAKvhC,OAAOw5K,IAAM37K,KAAK27K,IAAInc,UAE7C97H,CAER,KAAC6zM,CAAA,CAjDS,CAAS/hE,IAqDpB+hE,GAAM36O,UAAUu7K,SAAU,EAAK,IAEzBw/D,GAAiB,WAEtB,SAAAA,EAAa50O,EAAO0mL,GAASh/K,EAAA,KAAAktO,GAE5B33O,KAAK+C,MAAQA,EACb/C,KAAKypL,OAASA,EACdzpL,KAAK29E,WAAkBvzE,IAAVrH,EAAsBA,EAAMnL,OAAS6xL,EAAS,EAE3DzpL,KAAK0iL,MAAQhyB,GACb1wJ,KAAK2iL,YAAc,CAAE54I,OAAQ,EAAG4zC,OAAS,GAEzC39E,KAAK3G,QAAU,EAEf2G,KAAK67G,KAAOg2C,IAEb,CAwHC,OAxHAtoJ,EAAAouO,EAAA,EAAAn1O,IAAA,mBAAA/D,MAED,WAAoB,GAAC,CAAA+D,IAAA,cAAAysB,IAErB,SAAiBxwB,IAED,IAAVA,GAAiBuB,KAAK3G,SAE5B,GAAC,CAAAmJ,IAAA,WAAA/D,MAED,SAAUA,GAIT,OAFAuB,KAAK0iL,MAAQjkL,EAENuB,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAOL,OALAxB,KAAK+C,MAAQ,IAAIvB,EAAOuB,MAAMoX,YAAa3Y,EAAOuB,OAClD/C,KAAK29E,MAAQn8E,EAAOm8E,MACpB39E,KAAKypL,OAASjoL,EAAOioL,OACrBzpL,KAAK0iL,MAAQlhL,EAAOkhL,MAEb1iL,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQmkL,EAAQ1sB,EAAW2sB,GAE1BD,GAAU5iL,KAAKypL,OACf5G,GAAU3sB,EAAUuzB,OAEpB,IAAM,IAAI/sL,EAAI,EAAGmK,EAAI7G,KAAKypL,OAAQ/sL,EAAImK,EAAGnK,IAExCsD,KAAK+C,MAAO6/K,EAASlmL,GAAMw5J,EAAUnzJ,MAAO8/K,EAASnmL,GAItD,OAAOsD,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAKA,GAAoB,IAAbsrC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAIpB,OAFAD,KAAK+C,MAAMksB,IAAKxwB,EAAOsrC,GAEhB/pC,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOilC,QAEqBt5B,IAAtBs5B,EAAKk0M,eAETl0M,EAAKk0M,aAAe,CAAC,QAIWxtO,IAA5BpK,KAAK+C,MAAMo3J,OAAO09E,QAEtB73O,KAAK+C,MAAMo3J,OAAO09E,MAAQhmF,WAI2BznJ,IAAjDs5B,EAAKk0M,aAAc53O,KAAK+C,MAAMo3J,OAAO09E,SAEzCn0M,EAAKk0M,aAAc53O,KAAK+C,MAAMo3J,OAAO09E,OAAU73O,KAAK+C,MAAM6N,MAAO,GAAIupJ,QAItE,IAAMp3J,EAAQ,IAAI/C,KAAK+C,MAAMoX,YAAaupB,EAAKk0M,aAAc53O,KAAK+C,MAAMo3J,OAAO09E,QAEzEhmN,EAAK,IAAI7xB,KAAKma,YAAapX,EAAO/C,KAAKypL,QAG7C,OAFA53J,EAAGimN,SAAU93O,KAAK0iL,OAEX7wJ,CAER,GAAC,CAAArvB,IAAA,WAAA/D,MAED,SAAU05C,GAIT,OAFAn4C,KAAKkjL,iBAAmB/qI,EAEjBn4C,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQilC,GAwBP,YAtB2Bt5B,IAAtBs5B,EAAKk0M,eAETl0M,EAAKk0M,aAAe,CAAC,QAMWxtO,IAA5BpK,KAAK+C,MAAMo3J,OAAO09E,QAEtB73O,KAAK+C,MAAMo3J,OAAO09E,MAAQhmF,WAI2BznJ,IAAjDs5B,EAAKk0M,aAAc53O,KAAK+C,MAAMo3J,OAAO09E,SAEzCn0M,EAAKk0M,aAAc53O,KAAK+C,MAAMo3J,OAAO09E,OAAUl7O,MAAMC,UAAUgU,MAAM/T,KAAM,IAAI0qG,YAAavnG,KAAK+C,MAAMo3J,UAMjG,CACNt+C,KAAM77G,KAAK67G,KACXs+C,OAAQn6J,KAAK+C,MAAMo3J,OAAO09E,MAC1BjzO,KAAM5E,KAAK+C,MAAMoX,YAAYhhB,KAC7BswL,OAAQzpL,KAAKypL,OAGf,KAACkuD,CAAA,CAvIqB,GA2IvBA,GAAkB/6O,UAAUm7O,qBAAsB,EAElD,IAAMC,GAA0B,IAAIlxE,GAE9BmxE,GAA0B,WAE/B,SAAAA,EAAaC,EAAmBz1D,EAAU14I,GAA6B,IAArB6yH,EAAU38J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAAQwK,EAAA,KAAAwtO,GAEnEj4O,KAAK7G,KAAO,GAEZ6G,KAAK0jC,KAAOw0M,EACZl4O,KAAKyiL,SAAWA,EAChBziL,KAAK+pC,OAASA,EAEd/pC,KAAK48J,YAA4B,IAAfA,CAEnB,CAiQC,OAjQArzJ,EAAA0uO,EAAA,EAAAz1O,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAK0jC,KAAKi6C,KAElB,GAAC,CAAAn7E,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAK0jC,KAAK3gC,KAElB,GAAC,CAAAP,IAAA,cAAAysB,IAED,SAAiBxwB,GAEhBuB,KAAK0jC,KAAK47H,YAAc7gK,CAEzB,GAAC,CAAA+D,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK0jC,KAAKi6C,MAAOjhF,EAAImK,EAAGnK,IAE5Cs7O,GAAUjtE,oBAAqB/qK,KAAMtD,GAErCs7O,GAAUnwE,aAAc/gK,GAExB9G,KAAKgjL,OAAQtmL,EAAGs7O,GAAU97O,EAAG87O,GAAU3wO,EAAG2wO,GAAU1wO,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBqI,GAElB,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvCs7O,GAAUjtE,oBAAqB/qK,KAAMtD,GAErCs7O,GAAU/0D,kBAAmBn8K,GAE7B9G,KAAKgjL,OAAQtmL,EAAGs7O,GAAU97O,EAAG87O,GAAU3wO,EAAG2wO,GAAU1wO,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBqI,GAEnB,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvCs7O,GAAUjtE,oBAAqB/qK,KAAMtD,GAErCs7O,GAAUtnE,mBAAoB5pK,GAE9B9G,KAAKgjL,OAAQtmL,EAAGs7O,GAAU97O,EAAG87O,GAAU3wO,EAAG2wO,GAAU1wO,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,EAAO1S,GAIZ,OAFA8D,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,QAAW7tC,EAErD8D,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,EAAOvH,GAIZ,OAFArH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,GAAM1iC,EAEzDrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,EAAOtH,GAIZ,OAFAtH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,GAAMziC,EAEzDtH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,EAAOxH,GAIZ,OAFApH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,GAAM3iC,EAEzDpH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,OAAO5O,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAEzD,GAAC,CAAAvnC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,OAAO5O,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,EAElE,GAAC,CAAAvnC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,OAAO5O,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,EAElE,GAAC,CAAAvnC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,OAAO5O,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,EAElE,GAAC,CAAAvnC,IAAA,QAAA/D,MAED,SAAOmQ,EAAO1S,EAAGmL,GAOhB,OALAuH,EAAQA,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAExC/pC,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAM1S,EAC/B8D,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMvH,EAExBrH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQmQ,EAAO1S,EAAGmL,EAAGC,GAQpB,OANAsH,EAAQA,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAExC/pC,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAM1S,EAC/B8D,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMvH,EAC/BrH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMtH,EAExBtH,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASmQ,EAAO1S,EAAGmL,EAAGC,EAAGF,GASxB,OAPAwH,EAAQA,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAExC/pC,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAM1S,EAC/B8D,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMvH,EAC/BrH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMtH,EAC/BtH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMxH,EAExBpH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOilC,GAEN,QAAct5B,IAATs5B,EAAqB,CAEzB3vB,QAAQC,IAAK,mHAIb,IAFA,IAAMjR,EAAQ,GAEJrG,EAAI,EAAGA,EAAIsD,KAAK29E,MAAOjhF,IAIhC,IAFA,IAAMkS,EAAQlS,EAAIsD,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAEhCl6B,EAAI,EAAGA,EAAI7P,KAAKyiL,SAAU5yK,IAEnC9M,EAAMjG,KAAMkD,KAAK0jC,KAAK3gC,MAAO6L,EAAQiB,IAMvC,OAAO,IAAI2yK,GAAiB,IAAIxiL,KAAK+C,MAAMoX,YAAapX,GAAS/C,KAAKyiL,SAAUziL,KAAK48J,WAEtF,CAcC,YAZiCxyJ,IAA5Bs5B,EAAKy0M,qBAETz0M,EAAKy0M,mBAAqB,CAAC,QAIuB/tO,IAA9Cs5B,EAAKy0M,mBAAoBn4O,KAAK0jC,KAAKm4E,QAEvCn4E,EAAKy0M,mBAAoBn4O,KAAK0jC,KAAKm4E,MAAS77G,KAAK0jC,KAAKxiC,MAAOwiC,IAIvD,IAAIu0M,EAA4Bv0M,EAAKy0M,mBAAoBn4O,KAAK0jC,KAAKm4E,MAAQ77G,KAAKyiL,SAAUziL,KAAK+pC,OAAQ/pC,KAAK48J,WAIrH,GAAC,CAAAp6J,IAAA,SAAA/D,MAED,SAAQilC,GAEP,QAAct5B,IAATs5B,EAAqB,CAEzB3vB,QAAQC,IAAK,wHAIb,IAFA,IAAMjR,EAAQ,GAEJrG,EAAI,EAAGA,EAAIsD,KAAK29E,MAAOjhF,IAIhC,IAFA,IAAMkS,EAAQlS,EAAIsD,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAEhCl6B,EAAI,EAAGA,EAAI7P,KAAKyiL,SAAU5yK,IAEnC9M,EAAMjG,KAAMkD,KAAK0jC,KAAK3gC,MAAO6L,EAAQiB,IAQvC,MAAO,CACN4yK,SAAUziL,KAAKyiL,SACf79K,KAAM5E,KAAK+C,MAAMoX,YAAYhhB,KAC7B4J,MAAOA,EACP65J,WAAY58J,KAAK48J,WAGnB,CAgBC,YAZiCxyJ,IAA5Bs5B,EAAKy0M,qBAETz0M,EAAKy0M,mBAAqB,CAAC,QAIuB/tO,IAA9Cs5B,EAAKy0M,mBAAoBn4O,KAAK0jC,KAAKm4E,QAEvCn4E,EAAKy0M,mBAAoBn4O,KAAK0jC,KAAKm4E,MAAS77G,KAAK0jC,KAAK87H,OAAQ97H,IAIxD,CACN8lJ,8BAA8B,EAC9B/G,SAAUziL,KAAKyiL,SACf/+I,KAAM1jC,KAAK0jC,KAAKm4E,KAChB9xE,OAAQ/pC,KAAK+pC,OACb6yH,WAAY58J,KAAK48J,WAKpB,KAACq7E,CAAA,CA7Q8B,GAiRhCA,GAA2Br7O,UAAU4sL,8BAA+B,EAAK,IAgDrE4uD,GA9CE5wB,GAAc,SAAA6wB,GAAAr8N,EAAAwrM,EAAA6wB,GAAA,IAAAC,EAAA39N,EAAA6sM,GAEnB,SAAAA,EAAahvC,GAAa,IAAA+/D,EAkBI,OAlBJ9tO,EAAA,KAAA+8M,IAEzB+wB,EAAAD,EAAAz7O,KAAA,OAEK+H,KAAO,iBAEZ2zO,EAAK/wM,MAAQ,IAAI+zH,GAAO,UAExBg9E,EAAKh8O,IAAM,KAEXg8O,EAAKn5D,SAAW,KAEhBm5D,EAAKj/E,SAAW,EAEhBi/E,EAAKp3D,iBAAkB,EAEvBo3D,EAAKx8D,aAAc,EAEnBw8D,EAAKn2D,UAAW5J,GAAa+/D,CAE9B,CAkBC,OAlBAhvO,EAAAi+M,EAAA,EAAAhlN,IAAA,OAAA/D,MAED,SAAM+C,GAcL,OAZA0lI,GAAA5rH,EAAAksM,EAAA5qN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OAExBxnC,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAKs5J,SAAW93J,EAAO83J,SAEvBt5J,KAAKmhL,gBAAkB3/K,EAAO2/K,gBAEvBnhL,IAER,KAACwnN,CAAA,CAxCkB,CAASjsC,IA4C7BisC,GAAe5qN,UAAU4wO,kBAAmB,EAI5C,IAAMgL,GAAgC,IAAI1xE,GACpC2xE,GAA4B,IAAI3xE,GAChC4xE,GAA4B,IAAI5xE,GAEhC6xE,GAAiC,IAAIxjF,GACrCyjF,GAAiC,IAAIzjF,GACrC0jF,GAAiC,IAAIloE,GAErCmoE,GAAoB,IAAIhyE,GACxBiyE,GAAoB,IAAIjyE,GACxBkyE,GAAoB,IAAIlyE,GAExBmyE,GAAqB,IAAI9jF,GACzB+jF,GAAqB,IAAI/jF,GACzBgkF,GAAqB,IAAIhkF,GAEzBikF,GAAM,SAAAC,GAAAr9N,EAAAo9N,EAAAC,GAAA,IAAAC,EAAA3+N,EAAAy+N,GAEX,SAAAA,EAAavgE,GAAW,IAAA0gE,EAMvB,GANuB9uO,EAAA,KAAA2uO,IAEvBG,EAAAD,EAAAz8O,KAAA,OAEK+H,KAAO,cAEOwF,IAAdguO,GAA0B,CAE9BA,GAAY,IAAI1yD,GAEhB,IAAM8zD,EAAe,IAAI3kF,aAAc,EACpC,IAAO,GAAK,EAAG,EAAG,EACpB,IAAO,GAAK,EAAG,EAAG,EAClB,GAAK,GAAK,EAAG,EAAG,GACd,GAAK,GAAK,EAAG,EAAG,IAGbqjF,EAAoB,IAAIP,GAAmB6B,EAAc,GAE/DpB,GAAUpuD,SAAU,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,IACrCouD,GAAUtlO,aAAc,WAAY,IAAImlO,GAA4BC,EAAmB,EAAG,GAAG,IAC7FE,GAAUtlO,aAAc,KAAM,IAAImlO,GAA4BC,EAAmB,EAAG,GAAG,GAExF,CAKsC,OAHtCqB,EAAKzuE,SAAWstE,GAChBmB,EAAK1gE,cAA0BzuK,IAAbyuK,EAA2BA,EAAW,IAAI2uC,GAE5D+xB,EAAKljF,OAAS,IAAIlB,GAAS,GAAK,IAAMokF,CAEvC,CAuFC,OAvFAhwO,EAAA6vO,EAAA,EAAA52O,IAAA,UAAA/D,MAED,SAASitL,EAAWC,GAEO,OAArBD,EAAU9jB,QAEd7zJ,QAAQwN,MAAO,yFAIhBk3N,GAAYgB,mBAAoBz5O,KAAKioK,aAErC4wE,GAAiBn9E,KAAMgwB,EAAU9jB,OAAOK,aACxCjoK,KAAK41K,gBAAgBte,iBAAkBo0B,EAAU9jB,OAAOE,mBAAoB9nK,KAAKioK,aAEjFywE,GAAY9hE,sBAAuB52K,KAAK41K,iBAEnC8V,EAAU9jB,OAAOqpB,sBAAyD,IAAlCjxL,KAAK64K,SAASsI,iBAE1Ds3D,GAAYljF,gBAAkBmjF,GAAYpxO,GAI3C,IACI8sJ,EAAKD,EADHmF,EAAWt5J,KAAK64K,SAASvf,SAGb,IAAbA,IAEJnF,EAAMl3J,KAAKk3J,IAAKmF,GAChBlF,EAAMn3J,KAAKm3J,IAAKkF,IAIjB,IAAMjD,EAASr2J,KAAKq2J,OAEpBqjF,GAAiBZ,GAAI7pN,KAAO,IAAO,GAAK,GAAKypN,GAAariF,EAAQoiF,GAAarkF,EAAKD,GACpFulF,GAAiBX,GAAI9pN,IAAK,IAAO,GAAK,GAAKypN,GAAariF,EAAQoiF,GAAarkF,EAAKD,GAClFulF,GAAiBV,GAAI/pN,IAAK,GAAK,GAAK,GAAKypN,GAAariF,EAAQoiF,GAAarkF,EAAKD,GAEhF8kF,GAAKhqN,IAAK,EAAG,GACbiqN,GAAKjqN,IAAK,EAAG,GACbkqN,GAAKlqN,IAAK,EAAG,GAGb,IAAI0qN,EAAYjuD,EAAUpd,IAAIie,kBAAmBusD,GAAKC,GAAKC,IAAK,EAAOR,IAEvE,GAAmB,OAAdmB,IAGJD,GAAiBX,GAAI9pN,KAAO,GAAK,GAAK,GAAKypN,GAAariF,EAAQoiF,GAAarkF,EAAKD,GAClF+kF,GAAKjqN,IAAK,EAAG,GAGM,QADnB0qN,EAAYjuD,EAAUpd,IAAIie,kBAAmBusD,GAAKE,GAAKD,IAAK,EAAOP,MANpE,CAeA,IAAM9hE,EAAWgV,EAAUpd,IAAIl2E,OAAOi1E,WAAYmrE,IAE7C9hE,EAAWgV,EAAU7X,MAAQ6C,EAAWgV,EAAU5X,KAEvD6X,EAAW7uL,KAAM,CAEhB45K,SAAUA,EACVhM,MAAO8tE,GAAgBt3O,QACvBu+J,GAAIka,GAASU,MAAOm+D,GAAiBM,GAAKC,GAAKC,GAAKC,GAAMC,GAAMC,GAAM,IAAIhkF,IAC1E+2B,KAAM,KACN/pL,OAAQnC,MAZT,CAgBD,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAQL,OANA0lI,GAAA5rH,EAAA89N,EAAAx8O,WAAA,aAAAC,KAAA,KAAY2E,QAEW4I,IAAlB5I,EAAO60J,QAAuBr2J,KAAKq2J,OAAOqF,KAAMl6J,EAAO60J,QAE5Dr2J,KAAK64K,SAAWr3K,EAAOq3K,SAEhB74K,IAER,KAACo5O,CAAA,CAvHU,CAAS5jE,IA6HrB,SAASkkE,GAAiBE,EAAgBC,EAAYxjF,EAAQhf,EAAO+c,EAAKD,GAGzEwkF,GAAiBrjF,WAAYskF,EAAgBvjF,GAASuU,UAAW,IAAM4L,SAAUn/B,QAGpEjtI,IAARgqJ,GAEJwkF,GAAiB18O,EAAMi4J,EAAMwkF,GAAiBz8O,EAAQk4J,EAAMukF,GAAiBtxO,EAC7EuxO,GAAiBvxO,EAAM+sJ,EAAMukF,GAAiBz8O,EAAQi4J,EAAMwkF,GAAiBtxO,GAI7EuxO,GAAiBl9E,KAAMi9E,IAKxBiB,EAAel+E,KAAMm+E,GACrBD,EAAe19O,GAAK08O,GAAiB18O,EACrC09O,EAAevyO,GAAKuxO,GAAiBvxO,EAGrCuyO,EAAe/xE,aAAcgxE,GAE9B,CA3BAO,GAAOx8O,UAAUw3O,UAAW,EA6B5B,IAAM0F,GAAsB,IAAIhzE,GAC1BizE,GAAsB,IAAIjzE,GAE1BkzE,GAAG,SAAAC,GAAAj+N,EAAAg+N,EAAAC,GAAA,IAAAC,EAAAv/N,EAAAq/N,GAER,SAAAA,IAAc,IAAAG,EAkBU,OAlBV1vO,EAAA,KAAAuvO,IAEbG,EAAAD,EAAAr9O,KAAA,OAEKu9O,cAAgB,EAErBD,EAAKv1O,KAAO,MAEZrG,OAAOiL,iBAAgBgS,EAAA2+N,GAAQ,CAC9B3lO,OAAQ,CACP9K,YAAY,EACZjL,MAAO,IAER61O,MAAO,CACN71O,OAAO,KAIT07O,EAAKppB,YAAa,EAAKopB,CAExB,CAiKC,OAjKA5wO,EAAAywO,EAAA,EAAAx3O,IAAA,OAAA/D,MAED,SAAM+C,GAEL0lI,GAAA5rH,EAAA0+N,EAAAp9O,WAAA,aAAAC,KAAA,KAAY2E,GAAQ,GAIpB,IAFA,IAAMgT,EAAShT,EAAOgT,OAEZ9X,EAAI,EAAGmK,EAAI2N,EAAO5c,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAM0X,EAAQI,EAAQ9X,GAEtBsD,KAAKq6O,SAAUjmO,EAAMjS,OAAOjB,QAASkT,EAAMsiK,SAE5C,CAIA,OAFA12K,KAAK+wN,WAAavvN,EAAOuvN,WAElB/wN,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU0D,GAAuB,IAAfu0K,EAAQz2K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE5By2K,EAAWz5K,KAAK4f,IAAK65J,GAErB,IAEI7vK,EAFE2N,EAASxU,KAAKwU,OAIpB,IAAM3N,EAAI,EAAGA,EAAI2N,EAAO5c,UAElB8+K,EAAWliK,EAAQ3N,GAAI6vK,UAFG7vK,KAchC,OAJA2N,EAAOq5C,OAAQhnD,EAAG,EAAG,CAAE6vK,SAAUA,EAAUv0K,OAAQA,IAEnDnC,KAAKosB,IAAKjqB,GAEHnC,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,WAEC,OAAOuB,KAAKo6O,aAEb,GAAC,CAAA53O,IAAA,uBAAA/D,MAED,SAAsBi4K,GAErB,IAAMliK,EAASxU,KAAKwU,OAEpB,GAAKA,EAAO5c,OAAS,EAAI,CAExB,IAAI8E,EAAGmK,EAEP,IAAMnK,EAAI,EAAGmK,EAAI2N,EAAO5c,OAAQ8E,EAAImK,KAE9B6vK,EAAWliK,EAAQ9X,GAAIg6K,UAFUh6K,KAUvC,OAAO8X,EAAQ9X,EAAI,GAAIyF,MAExB,CAEA,OAAO,IAER,GAAC,CAAAK,IAAA,UAAA/D,MAED,SAASitL,EAAWC,GAInB,GAFe3rL,KAAKwU,OAER5c,OAAS,EAAI,CAExBkiP,GAAMljE,sBAAuB52K,KAAKioK,aAElC,IAAMyO,EAAWgV,EAAUpd,IAAIl2E,OAAOi1E,WAAYysE,IAElD95O,KAAKs6O,qBAAsB5jE,GAAW6jE,QAAS7uD,EAAWC,EAE3D,CAED,GAAC,CAAAnpL,IAAA,SAAA/D,MAED,SAAQmpK,GAEP,IAAMpzJ,EAASxU,KAAKwU,OAEpB,GAAKA,EAAO5c,OAAS,EAAI,CAExBkiP,GAAMljE,sBAAuBhP,EAAOK,aACpC8xE,GAAMnjE,sBAAuB52K,KAAKioK,aAElC,IAIIvrK,EAAGmK,EAJD6vK,EAAWojE,GAAMzsE,WAAY0sE,IAAUnyE,EAAO/yI,KAMpD,IAJArgB,EAAQ,GAAIrS,OAAOwnE,SAAU,EAIvBjtE,EAAI,EAAGmK,EAAI2N,EAAO5c,OAAQ8E,EAAImK,GAE9B6vK,GAAYliK,EAAQ9X,GAAIg6K,SAFSh6K,IAIrC8X,EAAQ9X,EAAI,GAAIyF,OAAOwnE,SAAU,EACjCn1D,EAAQ9X,GAAIyF,OAAOwnE,SAAU,EAY/B,IAFA3pE,KAAKo6O,cAAgB19O,EAAI,EAEjBA,EAAImK,EAAGnK,IAEd8X,EAAQ9X,GAAIyF,OAAOwnE,SAAU,CAI/B,CAED,GAAC,CAAAnnE,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAA0+N,EAAAp9O,WAAA,eAAAC,KAAA,KAAiBy5B,IAEF,IAApBt2B,KAAK+wN,aAAuBrtL,EAAKvhC,OAAO4uN,YAAa,GAE1DrtL,EAAKvhC,OAAOqS,OAAS,GAIrB,IAFA,IAAMA,EAASxU,KAAKwU,OAEV9X,EAAI,EAAGmK,EAAI2N,EAAO5c,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAM0X,EAAQI,EAAQ9X,GAEtBgnC,EAAKvhC,OAAOqS,OAAO1X,KAAM,CACxBqF,OAAQiS,EAAMjS,OAAO05G,KACrB66D,SAAUtiK,EAAMsiK,UAGlB,CAEA,OAAOhzI,CAER,KAACs2M,CAAA,CAvLO,CAASxkE,IA2LZglE,GAA8B,IAAI1zE,GAElC2zE,GAA2B,IAAI76E,GAC/B86E,GAA4B,IAAI96E,GAEhC+6E,GAA0B,IAAI7zE,GAC9B8zE,GAAwB,IAAIjqE,GAE5BkqE,GAAW,SAAAC,GAAA9+N,EAAA6+N,EAAAC,GAAA,IAAAC,EAAApgO,EAAAkgO,GAEhB,SAAAA,EAAa/vE,EAAU+N,GAAW,IAAAmiE,EAQM,OARNvwO,EAAA,KAAAowO,IAEjCG,EAAAD,EAAAl+O,KAAA,KAAOiuK,EAAU+N,IAEZj0K,KAAO,cAEZo2O,EAAKtiE,SAAW,WAChBsiE,EAAKriE,WAAa,IAAIhI,GACtBqqE,EAAKC,kBAAoB,IAAItqE,GAAUqqE,CAExC,CAuHC,OAvHAzxO,EAAAsxO,EAAA,EAAAr4O,IAAA,OAAA/D,MAED,SAAM+C,GAUL,OARA0lI,GAAA5rH,EAAAu/N,EAAAj+O,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK04K,SAAWl3K,EAAOk3K,SACvB14K,KAAK24K,WAAWjd,KAAMl6J,EAAOm3K,YAC7B34K,KAAKi7O,kBAAkBv/E,KAAMl6J,EAAOy5O,mBAEpCj7O,KAAK44K,SAAWp3K,EAAOo3K,SAEhB54K,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMm6K,EAAUD,GAEf34K,KAAK44K,SAAWA,OAEIxuK,IAAfuuK,IAEJ34K,KAAKu3K,mBAAmB,GAExBv3K,KAAK44K,SAASsiE,oBAEdviE,EAAa34K,KAAKioK,aAInBjoK,KAAK24K,WAAWjd,KAAMid,GACtB34K,KAAKi7O,kBAAkBv/E,KAAMid,GAAa7oC,QAE3C,GAAC,CAAAttI,IAAA,OAAA/D,MAED,WAECuB,KAAK44K,SAASktD,MAEf,GAAC,CAAAtjO,IAAA,uBAAA/D,MAED,WAMC,IAJA,IAAMksK,EAAS,IAAI/K,GAEbu7E,EAAan7O,KAAK8qK,SAAS54F,WAAWipK,WAElCz+O,EAAI,EAAGmK,EAAIs0O,EAAWx9J,MAAOjhF,EAAImK,EAAGnK,IAAO,CAEpDiuK,EAAOI,oBAAqBowE,EAAYz+O,GAExC,IAAM26I,EAAQ,EAAMszB,EAAOywE,kBAEtB/jG,IAAUluF,IAEdwhH,EAAOpV,eAAgBle,GAIvBszB,EAAO17I,IAAK,EAAG,EAAG,EAAG,GAItBksN,EAAWE,QAAS3+O,EAAGiuK,EAAOzuK,EAAGyuK,EAAOtjK,EAAGsjK,EAAOrjK,EAAGqjK,EAAOvjK,EAE7D,CAED,GAAC,CAAA5E,IAAA,oBAAA/D,MAED,SAAmB64K,GAElBpwC,GAAA5rH,EAAAu/N,EAAAj+O,WAAA,0BAAAC,KAAA,KAAyBy6K,GAEF,aAAlBt3K,KAAK04K,SAET14K,KAAKi7O,kBAAkBv/E,KAAM17J,KAAKioK,aAAcn4B,SAEnB,aAAlB9vI,KAAK04K,SAEhB14K,KAAKi7O,kBAAkBv/E,KAAM17J,KAAK24K,YAAa7oC,SAI/C/7H,QAAQk/C,KAAM,6CAA+CjzD,KAAK04K,SAIpE,GAAC,CAAAl2K,IAAA,gBAAA/D,MAED,SAAemQ,EAAOrN,GAErB,IAAMq3K,EAAW54K,KAAK44K,SAChB9N,EAAW9qK,KAAK8qK,SAEtB2vE,GAAW1vE,oBAAqBD,EAAS54F,WAAWopK,UAAW1sO,GAC/D8rO,GAAY3vE,oBAAqBD,EAAS54F,WAAWipK,WAAYvsO,GAEjE4rO,GAAc9+E,KAAMn6J,GAASsmK,aAAc7nK,KAAK24K,YAEhDp3K,EAAO0tB,IAAK,EAAG,EAAG,GAElB,IAAM,IAAIvyB,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAM02M,EAASsnC,GAAYa,aAAc7+O,GAEzC,GAAgB,IAAX02M,EAAe,CAEnB,IAAMooC,EAAYf,GAAWc,aAAc7+O,GAE3Ck+O,GAAQtjF,iBAAkBshB,EAASgvC,MAAO4zB,GAAYvzE,YAAa2Q,EAAS6iE,aAAcD,IAE1Fj6O,EAAOm5K,gBAAiBigE,GAAUj/E,KAAM8+E,IAAgB3yE,aAAc+yE,IAAWxnC,EAElF,CAED,CAEA,OAAO7xM,EAAOsmK,aAAc7nK,KAAKi7O,kBAElC,KAACJ,CAAA,CAnIe,CAAS3vD,IAuI1B2vD,GAAYj+O,UAAU67K,eAAgB,EAAK,IAErCijE,GAAI,SAAAC,GAAA3/N,EAAA0/N,EAAAC,GAAA,IAAAC,EAAAjhO,EAAA+gO,GAET,SAAAA,IAAc,IAAAG,EAIM,OAJNpxO,EAAA,KAAAixO,IAEbG,EAAAD,EAAA/+O,KAAA,OAEK+H,KAAO,OAAOi3O,CAEpB,CAAC,OAAAtyO,EAAAmyO,EAAA,CARQ,CAASlmE,IAYnBkmE,GAAK9+O,UAAUk/O,QAAS,EAAK,IAEvBC,GAAW,SAAAC,GAAAhgO,EAAA+/N,EAAAC,GAAA,IAAAC,EAAAthO,EAAAohO,GAEhB,SAAAA,IAAmK,IAAAG,EAAtJx4M,EAAIzjC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAMkO,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGs+J,EAAMt+J,UAAArI,OAAA,EAAAqI,UAAA,QAAAmK,EAAExF,EAAI3E,UAAArI,OAAA,EAAAqI,UAAA,QAAAmK,EAAEk6I,EAAOrkJ,UAAArI,OAAA,EAAAqI,UAAA,QAAAmK,EAAE+zJ,EAAKl+J,UAAArI,OAAA,EAAAqI,UAAA,QAAAmK,EAAEg0J,EAAKn+J,UAAArI,OAAA,EAAAqI,UAAA,QAAAmK,EAAEi0J,EAASp+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuqJ,GAAe8T,EAASr+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuqJ,GAAegU,EAAUv+J,UAAArI,OAAA,GAAAqI,UAAA,SAAAmK,EAAEq0J,EAAQx+J,UAAArI,OAAA,GAAAqI,UAAA,SAAAmK,EAQtI,OARsIK,EAAA,KAAAsxO,IAE/JG,EAAAD,EAAAp/O,KAAA,KAAO,KAAMynJ,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,EAAYC,IAE/EtlB,MAAQ,CAAEz1G,KAAMA,EAAMv1B,MAAOA,EAAOC,OAAQA,GAEjD8tO,EAAKr9E,iBAAkB,EACvBq9E,EAAKn9E,OAAQ,EACbm9E,EAAKl9E,gBAAkB,EAAEk9E,CAE1B,CAAC,OAAA3yO,EAAAwyO,EAAA,CAZe,CAASh+E,IAgB1Bg+E,GAAYn/O,UAAU8gK,eAAgB,EAEtC,IAAMy+E,GAA8B,IAAIxrE,GAClCyrE,GAAgC,IAAIzrE,GAEpC0rE,GAAQ,WAEb,SAAAA,IAA6C,IAAhCz0B,EAAK3nN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAIw7O,EAAYx7O,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAEwK,EAAA,KAAA4xO,GAEzCr8O,KAAK67G,KAAOg2C,KAEZ7xJ,KAAK4nN,MAAQA,EAAMh3M,MAAO,GAC1B5Q,KAAKy7O,aAAeA,EACpBz7O,KAAKs8O,aAAe,KAEpBt8O,KAAKuzO,YAAc,KACnBvzO,KAAKyzO,gBAAkB,EAEvBzzO,KAAKo2L,OAAU,EAEfp2L,KAAKu0H,MAEN,CAuPC,OAvPAhrH,EAAA8yO,EAAA,EAAA75O,IAAA,OAAA/D,MAED,WAEC,IAAMmpN,EAAQ5nN,KAAK4nN,MACb6zB,EAAez7O,KAAKy7O,aAM1B,GAJAz7O,KAAKs8O,aAAe,IAAIznF,aAA6B,GAAf+yD,EAAMhwN,QAIf,IAAxB6jP,EAAa7jP,OAEjBoI,KAAKk7O,yBAML,GAAKtzB,EAAMhwN,SAAW6jP,EAAa7jP,OAAS,CAE3Cmc,QAAQk/C,KAAM,mFAEdjzD,KAAKy7O,aAAe,GAEpB,IAAM,IAAI/+O,EAAI,EAAGowD,EAAK9sD,KAAK4nN,MAAMhwN,OAAQ8E,EAAIowD,EAAIpwD,IAEhDsD,KAAKy7O,aAAa3+O,KAAM,IAAI6zK,GAI9B,CAIF,GAAC,CAAAnuK,IAAA,oBAAA/D,MAED,WAECuB,KAAKy7O,aAAa7jP,OAAS,EAE3B,IAAM,IAAI8E,EAAI,EAAGowD,EAAK9sD,KAAK4nN,MAAMhwN,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvD,IAAM6/O,EAAU,IAAI5rE,GAEf3wK,KAAK4nN,MAAOlrN,IAEhB6/O,EAAQ7gF,KAAM17J,KAAK4nN,MAAOlrN,GAAIurK,aAAcn4B,SAI7C9vI,KAAKy7O,aAAa3+O,KAAMy/O,EAEzB,CAED,GAAC,CAAA/5O,IAAA,OAAA/D,MAED,WAIC,IAAM,IAAI/B,EAAI,EAAGowD,EAAK9sD,KAAK4nN,MAAMhwN,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvD,IAAM8/O,EAAOx8O,KAAK4nN,MAAOlrN,GAEpB8/O,GAEJA,EAAKv0E,YAAYvM,KAAM17J,KAAKy7O,aAAc/+O,IAAMozI,QAIlD,CAIA,IAAM,IAAIpzI,EAAI,EAAGowD,EAAK9sD,KAAK4nN,MAAMhwN,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvD,IAAM8/O,EAAOx8O,KAAK4nN,MAAOlrN,GAEpB8/O,IAECA,EAAKt/K,QAAUs/K,EAAKt/K,OAAO4+K,QAE/BU,EAAK9iF,OAAOgC,KAAM8gF,EAAKt/K,OAAO+qG,aAAcn4B,SAC5C0sG,EAAK9iF,OAAO8c,SAAUgmE,EAAKv0E,cAI3Bu0E,EAAK9iF,OAAOgC,KAAM8gF,EAAKv0E,aAIxBu0E,EAAK9iF,OAAO6c,UAAWimE,EAAKj9K,SAAUi9K,EAAKp5E,WAAYo5E,EAAKnlG,OAI9D,CAED,GAAC,CAAA70I,IAAA,SAAA/D,MAED,WASC,IAPA,IAAMmpN,EAAQ5nN,KAAK4nN,MACb6zB,EAAez7O,KAAKy7O,aACpBa,EAAet8O,KAAKs8O,aACpB/I,EAAcvzO,KAAKuzO,YAIf72O,EAAI,EAAGowD,EAAK86J,EAAMhwN,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAIlD,IAAMg9J,EAASkuD,EAAOlrN,GAAMkrN,EAAOlrN,GAAIurK,YAAcm0E,GAErDD,GAAc7kF,iBAAkBoC,EAAQ+hF,EAAc/+O,IACtDy/O,GAAc50J,QAAS+0J,EAAkB,GAAJ5/O,EAEtC,CAEqB,OAAhB62O,IAEJA,EAAYj0E,aAAc,EAI5B,GAAC,CAAA98J,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAI49O,EAAUr8O,KAAK4nN,MAAO5nN,KAAKy7O,aAEvC,GAAC,CAAAj5O,IAAA,qBAAA/D,MAED,WASC,IAAI8mD,EAAOtoD,KAAK04J,KAA0B,EAApB31J,KAAK4nN,MAAMhwN,QACjC2tD,EAAO+sG,GAAgB/sG,GACvBA,EAAOtoD,KAAKC,IAAKqoD,EAAM,GAEvB,IAAM+2L,EAAe,IAAIznF,aAActvG,EAAOA,EAAO,GACrD+2L,EAAartN,IAAKjvB,KAAKs8O,cAEvB,IAAM/I,EAAc,IAAIwI,GAAaO,EAAc/2L,EAAMA,EAAMwmG,GAAYP,IAO3E,OANA+nF,EAAYj0E,aAAc,EAE1Bt/J,KAAKs8O,aAAeA,EACpBt8O,KAAKuzO,YAAcA,EACnBvzO,KAAKyzO,gBAAkBluL,EAEhBvlD,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAetF,GAEd,IAAM,IAAIuD,EAAI,EAAGowD,EAAK9sD,KAAK4nN,MAAMhwN,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvD,IAAM8/O,EAAOx8O,KAAK4nN,MAAOlrN,GAEzB,GAAK8/O,EAAKrjP,OAASA,EAElB,OAAOqjP,CAIT,CAID,GAAC,CAAAh6O,IAAA,UAAA/D,MAED,WAE2B,OAArBuB,KAAKuzO,cAETvzO,KAAKuzO,YAAY7xE,UAEjB1hK,KAAKuzO,YAAc,KAIrB,GAAC,CAAA/wO,IAAA,WAAA/D,MAED,SAAUg+O,EAAM70B,GAEf5nN,KAAK67G,KAAO4gI,EAAK5gI,KAEjB,IAAM,IAAIn/G,EAAI,EAAGmK,EAAI41O,EAAK70B,MAAMhwN,OAAQ8E,EAAImK,EAAGnK,IAAO,CAErD,IAAMm/G,EAAO4gI,EAAK70B,MAAOlrN,GACrB8/O,EAAO50B,EAAO/rG,QAEJzxG,IAAToyO,IAEJzoO,QAAQk/C,KAAM,2CAA4C4oD,GAC1D2gI,EAAO,IAAId,IAIZ17O,KAAK4nN,MAAM9qN,KAAM0/O,GACjBx8O,KAAKy7O,aAAa3+O,MAAM,IAAI6zK,IAAUhX,UAAW8iF,EAAKhB,aAAc/+O,IAErE,CAIA,OAFAsD,KAAKu0H,OAEEv0H,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAO,CACZ+6E,SAAU,CACTplH,QAAS,IACTuL,KAAM,WACNgrF,UAAW,mBAEZg4H,MAAO,GACP6zB,aAAc,IAGf/3M,EAAKm4E,KAAO77G,KAAK67G,KAKjB,IAHA,IAAM+rG,EAAQ5nN,KAAK4nN,MACb6zB,EAAez7O,KAAKy7O,aAEhB/+O,EAAI,EAAGmK,EAAI+gN,EAAMhwN,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEhD,IAAM8/O,EAAO50B,EAAOlrN,GACpBgnC,EAAKkkL,MAAM9qN,KAAM0/O,EAAK3gI,MAEtB,IAAM6gI,EAAcjB,EAAc/+O,GAClCgnC,EAAK+3M,aAAa3+O,KAAM4/O,EAAYn1J,UAErC,CAEA,OAAO7jD,CAER,KAAC24M,CAAA,CAxQY,GA4QRM,GAAwB,SAAAC,GAAA5gO,EAAA2gO,EAAAC,GAAA,IAAAC,EAAAliO,EAAAgiO,GAE7B,SAAAA,EAAa55O,EAAO0/K,EAAU7lB,GAAmC,IAAAkgF,EAAvBp1C,EAAgBznM,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAcnB,OAdoBwK,EAAA,KAAAkyO,GAElC,kBAAf//E,IAEX8qC,EAAmB9qC,EAEnBA,GAAa,EAEb7oJ,QAAQwN,MAAO,mGAIhBu7N,EAAAD,EAAAhgP,KAAA,KAAOkG,EAAO0/K,EAAU7lB,IAEnB8qC,iBAAmBA,EAAiBo1C,CAE1C,CAsBC,OAtBAvzO,EAAAozO,EAAA,EAAAn6O,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAAqhO,EAAA//O,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK0nM,iBAAmBlmM,EAAOkmM,iBAExB1nM,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAAqhO,EAAA//O,WAAA,eAAAC,KAAA,MAMV,OAJA6mC,EAAKgkK,iBAAmB1nM,KAAK0nM,iBAE7BhkK,EAAK2lK,4BAA6B,EAE3B3lK,CAER,KAACi5M,CAAA,CAxC4B,CAASn6D,IA4CvCm6D,GAAyB//O,UAAUysM,4BAA6B,EAEhE,IAAM0zC,GAAqC,IAAIpsE,GACzCqsE,GAAqC,IAAIrsE,GAEzCssE,GAAsB,GAEtBC,GAAsB,IAAIhyD,GAE1BiyD,GAAa,SAAAC,GAAAphO,EAAAmhO,EAAAC,GAAA,IAAAC,EAAA1iO,EAAAwiO,GAElB,SAAAA,EAAaryE,EAAU+N,EAAUl7F,GAAQ,IAAA2/J,EASb,OATa7yO,EAAA,KAAA0yO,IAExCG,EAAAD,EAAAxgP,KAAA,KAAOiuK,EAAU+N,IAEZZ,eAAiB,IAAI0kE,GAA0B,IAAI9nF,aAAsB,GAARl3E,GAAc,IACpF2/J,EAAKplE,cAAgB,KAErBolE,EAAK3/J,MAAQA,EAEb2/J,EAAKpnE,eAAgB,EAAMonE,CAE5B,CA+FC,OA/FA/zO,EAAA4zO,EAAA,EAAA36O,IAAA,OAAA/D,MAED,SAAM+C,GAUL,OARA0lI,GAAA5rH,EAAA6hO,EAAAvgP,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKi4K,eAAevc,KAAMl6J,EAAOy2K,gBAEH,OAAzBz2K,EAAO02K,gBAAyBl4K,KAAKk4K,cAAgB12K,EAAO02K,cAAch3K,SAE/ElB,KAAK29E,MAAQn8E,EAAOm8E,MAEb39E,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYmQ,EAAO44B,GAElBA,EAAMmyH,UAAW35J,KAAKk4K,cAAcn1K,MAAe,EAAR6L,EAE5C,GAAC,CAAApM,IAAA,cAAA/D,MAED,SAAamQ,EAAO8qJ,GAEnBA,EAAOC,UAAW35J,KAAKi4K,eAAel1K,MAAe,GAAR6L,EAE9C,GAAC,CAAApM,IAAA,UAAA/D,MAED,SAASitL,EAAWC,GAEnB,IAAM1jB,EAAcjoK,KAAKioK,YACnBs1E,EAAev9O,KAAK29E,MAK1B,GAHAu/J,GAAMpyE,SAAW9qK,KAAK8qK,SACtBoyE,GAAMrkE,SAAW74K,KAAK64K,cAEEzuK,IAAnB8yO,GAAMrkE,SAEX,IAAM,IAAI2kE,EAAa,EAAGA,EAAaD,EAAcC,IAAgB,CAIpEx9O,KAAKy9O,YAAaD,EAAYT,IAE9BC,GAAqB1lF,iBAAkB2Q,EAAa80E,IAIpDG,GAAMj1E,YAAc+0E,GAEpBE,GAAM3C,QAAS7uD,EAAWuxD,IAI1B,IAAM,IAAIvgP,EAAI,EAAGmK,EAAIo2O,GAAoBrlP,OAAQ8E,EAAImK,EAAGnK,IAAO,CAE9D,IAAMi9O,EAAYsD,GAAqBvgP,GACvCi9O,EAAU6D,WAAaA,EACvB7D,EAAUx3O,OAASnC,KACnB2rL,EAAW7uL,KAAM68O,EAElB,CAEAsD,GAAoBrlP,OAAS,CAE9B,CAED,GAAC,CAAA4K,IAAA,aAAA/D,MAED,SAAYmQ,EAAO44B,GAEU,OAAvBxnC,KAAKk4K,gBAETl4K,KAAKk4K,cAAgB,IAAIykE,GAA0B,IAAI9nF,aAA0C,EAA5B70J,KAAKi4K,eAAet6F,OAAa,IAIvGn2C,EAAM+/C,QAASvnF,KAAKk4K,cAAcn1K,MAAe,EAAR6L,EAE1C,GAAC,CAAApM,IAAA,cAAA/D,MAED,SAAamQ,EAAO8qJ,GAEnBA,EAAOnyE,QAASvnF,KAAKi4K,eAAel1K,MAAe,GAAR6L,EAE5C,GAAC,CAAApM,IAAA,qBAAA/D,MAED,WAEA,GAAC,CAAA+D,IAAA,UAAA/D,MAED,WAECuB,KAAKu+B,cAAe,CAAE35B,KAAM,WAE7B,KAACu4O,CAAA,CA5GiB,CAASjyD,IAgH5BiyD,GAAcvgP,UAAUo7K,iBAAkB,EAAK,IAEzCovC,GAAiB,SAAAs2B,GAAA1hO,EAAAorM,EAAAs2B,GAAA,IAAAC,EAAAhjO,EAAAysM,GAEtB,SAAAA,EAAa5uC,GAAa,IAAAolE,EAYI,OAZJnzO,EAAA,KAAA28M,IAEzBw2B,EAAAD,EAAA9gP,KAAA,OAEK+H,KAAO,oBAEZg5O,EAAKp2M,MAAQ,IAAI+zH,GAAO,UAExBqiF,EAAKx8D,UAAY,EACjBw8D,EAAKC,QAAU,QACfD,EAAKE,SAAW,QAEhBF,EAAKx7D,UAAW5J,GAAaolE,CAE9B,CAeC,OAfAr0O,EAAA69M,EAAA,EAAA5kN,IAAA,OAAA/D,MAGD,SAAM+C,GAUL,OARA0lI,GAAA5rH,EAAA8rM,EAAAxqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OAExBxnC,KAAKohL,UAAY5/K,EAAO4/K,UACxBphL,KAAK69O,QAAUr8O,EAAOq8O,QACtB79O,KAAK89O,SAAWt8O,EAAOs8O,SAEhB99O,IAER,KAAConN,CAAA,CA/BqB,CAAS7rC,IAmChC6rC,GAAkBxqN,UAAUswO,qBAAsB,EAElD,IAAM6Q,GAAyB,IAAIj3E,GAC7Bk3E,GAAuB,IAAIl3E,GAC3Bm3E,GAAiC,IAAIttE,GACrCutE,GAAuB,IAAI9vE,GAC3B+vE,GAA0B,IAAIjxE,GAE9BkxE,GAAI,SAAAC,GAAAriO,EAAAoiO,EAAAC,GAAA,IAAAC,EAAA3jO,EAAAyjO,GAET,SAAAA,IAAmF,IAAAG,EAAtEzzE,EAAQ7qK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIylL,GAAkB7M,EAAQ54K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAImnN,GASlC,OATqD38M,EAAA,KAAA2zO,IAE/EG,EAAAD,EAAAzhP,KAAA,OAEK+H,KAAO,OAEZ25O,EAAKzzE,SAAWA,EAChByzE,EAAK1lE,SAAWA,EAEhB0lE,EAAKjzD,qBAAqBizD,CAE3B,CAyNC,OAzNAh1O,EAAA60O,EAAA,EAAA57O,IAAA,OAAA/D,MAED,SAAM+C,GAOL,OALA0lI,GAAA5rH,EAAA8iO,EAAAxhP,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK64K,SAAWr3K,EAAOq3K,SACvB74K,KAAK8qK,SAAWtpK,EAAOspK,SAEhB9qK,IAER,GAAC,CAAAwC,IAAA,uBAAA/D,MAED,WAEC,IAAMqsK,EAAW9qK,KAAK8qK,SAEtB,GAAKA,EAASme,iBAIb,GAAwB,OAAnBne,EAASl8J,MAAiB,CAK9B,IAHA,IAAM45K,EAAoB1d,EAAS54F,WAAW3S,SACxCi/K,EAAgB,CAAE,GAEd9hP,EAAI,EAAGmK,EAAI2hL,EAAkB7qG,MAAOjhF,EAAImK,EAAGnK,IAEpDqhP,GAAShzE,oBAAqByd,EAAmB9rL,EAAI,GACrDshP,GAAOjzE,oBAAqByd,EAAmB9rL,GAE/C8hP,EAAe9hP,GAAM8hP,EAAe9hP,EAAI,GACxC8hP,EAAe9hP,IAAOqhP,GAAS1wE,WAAY2wE,IAI5ClzE,EAASh4J,aAAc,eAAgB,IAAI+xK,GAAwB25D,EAAe,GAEnF,MAECzqO,QAAQk/C,KAAM,sGAIJ63G,EAASqhB,YAEpBp4K,QAAQwN,MAAO,0GAIhB,OAAOvhB,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASitL,EAAWC,GAEnB,IAAM7gB,EAAW9qK,KAAK8qK,SAChB7C,EAAcjoK,KAAKioK,YACnBw2E,EAAY/yD,EAAUxxH,OAAOkkL,KAAKK,UAClCv4D,EAAYpb,EAASob,UAU3B,GANiC,OAA5Bpb,EAASmb,gBAA0Bnb,EAASwb,wBAEjD63D,GAAUziF,KAAMoP,EAASmb,gBACzBk4D,GAAUt2E,aAAcI,GACxBk2E,GAAUj1E,QAAUu1E,GAEiC,IAAhD/yD,EAAUpd,IAAIf,iBAAkB4wE,IAArC,CAIAF,GAAiBviF,KAAMuM,GAAcn4B,SACrCouG,GAAOxiF,KAAMgwB,EAAUpd,KAAMzG,aAAco2E,IAE3C,IAAMS,EAAiBD,IAAgBz+O,KAAKq3I,MAAMn7I,EAAI8D,KAAKq3I,MAAMhwI,EAAIrH,KAAKq3I,MAAM/vI,GAAM,GAChFq3O,EAAmBD,EAAiBA,EAEpCE,EAAS,IAAI93E,GACb+3E,EAAO,IAAI/3E,GACXg4E,EAAe,IAAIh4E,GACnBi4E,EAAW,IAAIj4E,GACfp4E,EAAO1uF,KAAKk0O,eAAiB,EAAI,EAEvC,GAAKppE,EAASme,iBAAmB,CAEhC,IAAMr6K,EAAQk8J,EAASl8J,MAEjB45K,EADa1d,EAAS54F,WACS3S,SAErC,GAAe,OAAV3wD,EAKJ,IAHA,IAGUlS,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBjkC,EAFT5J,KAAKiuC,IAAKt8B,EAAM+uE,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAElC,EAAGjhF,EAAImK,EAAGnK,GAAKgyF,EAAO,CAEpD,IAAM1yF,EAAI4S,EAAMunJ,KAAMz5J,GAChB6J,EAAIqI,EAAMunJ,KAAMz5J,EAAI,GAO1B,GALAkiP,EAAO7zE,oBAAqByd,EAAmBxsL,GAC/C6iP,EAAK9zE,oBAAqByd,EAAmBjiL,KAE9B23O,GAAOc,oBAAqBJ,EAAQC,EAAME,EAAUD,GAErDH,GAAd,CAEAI,EAASl3E,aAAc7nK,KAAKioK,aAE5B,IAAMyO,EAAWgV,EAAUpd,IAAIl2E,OAAOi1E,WAAY0xE,GAE7CroE,EAAWgV,EAAU7X,MAAQ6C,EAAWgV,EAAU5X,KAEvD6X,EAAW7uL,KAAM,CAEhB45K,SAAUA,EAGVhM,MAAOo0E,EAAa59O,QAAQ2mK,aAAc7nK,KAAKioK,aAC/Cr5J,MAAOlS,EACPwvL,KAAM,KACND,UAAW,KACX9pL,OAAQnC,MAjBgC,CAqB1C,MAOA,IAHA,IAGUtD,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBjkC,EAFT5J,KAAKiuC,IAAKs9I,EAAkB7qG,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAE9C,EAAGjhF,EAAImK,EAAGnK,GAAKgyF,EAAO,CAOpD,GALAkwJ,EAAO7zE,oBAAqByd,EAAmB9rL,GAC/CmiP,EAAK9zE,oBAAqByd,EAAmB9rL,EAAI,KAElCwhP,GAAOc,oBAAqBJ,EAAQC,EAAME,EAAUD,GAErDH,GAAd,CAEAI,EAASl3E,aAAc7nK,KAAKioK,aAE5B,IAAMyO,EAAWgV,EAAUpd,IAAIl2E,OAAOi1E,WAAY0xE,GAE7CroE,EAAWgV,EAAU7X,MAAQ6C,EAAWgV,EAAU5X,KAEvD6X,EAAW7uL,KAAM,CAEhB45K,SAAUA,EAGVhM,MAAOo0E,EAAa59O,QAAQ2mK,aAAc7nK,KAAKioK,aAC/Cr5J,MAAOlS,EACPwvL,KAAM,KACND,UAAW,KACX9pL,OAAQnC,MAjBgC,CAqB1C,CAIF,MAAY8qK,EAASqhB,YAEpBp4K,QAAQwN,MAAO,4FAnGmD,CAuGpE,GAAC,CAAA/e,IAAA,qBAAA/D,MAED,WAEC,IAAMqsK,EAAW9qK,KAAK8qK,SAEtB,GAAKA,EAASme,iBAAmB,CAEhC,IAAMnD,EAAkBhb,EAASgb,gBAC3BlkL,EAAOrD,OAAOqD,KAAMkkL,GAE1B,GAAKlkL,EAAKhK,OAAS,EAAI,CAEtB,IAAMqvL,EAAiBnB,EAAiBlkL,EAAM,IAE9C,QAAwBwI,IAAnB68K,EAA+B,CAEnCjnL,KAAKurL,sBAAwB,GAC7BvrL,KAAKwrL,sBAAwB,CAAC,EAE9B,IAAM,IAAI1kL,EAAI,EAAGumD,EAAK45H,EAAervL,OAAQkP,EAAIumD,EAAIvmD,IAAO,CAE3D,IAAM3N,EAAO8tL,EAAgBngL,GAAI3N,MAAQ4E,OAAQ+I,GAEjD9G,KAAKurL,sBAAsBzuL,KAAM,GACjCkD,KAAKwrL,sBAAuBryL,GAAS2N,CAEtC,CAED,CAED,CAED,KAAO,CAEN,IAAM2kL,EAAe3gB,EAAS2gB,kBAERrhL,IAAjBqhL,GAA8BA,EAAa7zL,OAAS,GAExDmc,QAAQwN,MAAO,qGAIjB,CAED,KAAC68N,CAAA,CAtOQ,CAAS5oE,IA0OnB4oE,GAAKxhP,UAAU07K,QAAS,EAExB,IAAM2mE,GAAuB,IAAIn4E,GAC3Bo4E,GAAqB,IAAIp4E,GAEzBq4E,GAAY,SAAAC,GAAApjO,EAAAmjO,EAAAC,GAAA,IAAAC,EAAA1kO,EAAAwkO,GAEjB,SAAAA,EAAar0E,EAAU+N,GAAW,IAAAymE,EAIN,OAJM70O,EAAA,KAAA00O,IAEjCG,EAAAD,EAAAxiP,KAAA,KAAOiuK,EAAU+N,IAEZj0K,KAAO,eAAe06O,CAE5B,CAyCC,OAzCA/1O,EAAA41O,EAAA,EAAA38O,IAAA,uBAAA/D,MAED,WAEC,IAAMqsK,EAAW9qK,KAAK8qK,SAEtB,GAAKA,EAASme,iBAIb,GAAwB,OAAnBne,EAASl8J,MAAiB,CAK9B,IAHA,IAAM45K,EAAoB1d,EAAS54F,WAAW3S,SACxCi/K,EAAgB,GAEZ9hP,EAAI,EAAGmK,EAAI2hL,EAAkB7qG,MAAOjhF,EAAImK,EAAGnK,GAAK,EAEzDuiP,GAAOl0E,oBAAqByd,EAAmB9rL,GAC/CwiP,GAAKn0E,oBAAqByd,EAAmB9rL,EAAI,GAEjD8hP,EAAe9hP,GAAc,IAANA,EAAY,EAAI8hP,EAAe9hP,EAAI,GAC1D8hP,EAAe9hP,EAAI,GAAM8hP,EAAe9hP,GAAMuiP,GAAO5xE,WAAY6xE,IAIlEp0E,EAASh4J,aAAc,eAAgB,IAAI+xK,GAAwB25D,EAAe,GAEnF,MAECzqO,QAAQk/C,KAAM,8GAIJ63G,EAASqhB,YAEpBp4K,QAAQwN,MAAO,kHAIhB,OAAOvhB,IAER,KAACm/O,CAAA,CAjDgB,CAASf,IAqD3Be,GAAaviP,UAAUs3O,gBAAiB,EAAK,IAEvCqL,GAAQ,SAAAC,GAAAxjO,EAAAujO,EAAAC,GAAA,IAAAC,EAAA9kO,EAAA4kO,GAEb,SAAAA,EAAaz0E,EAAU+N,GAAW,IAAA6mE,EAIV,OAJUj1O,EAAA,KAAA80O,IAEjCG,EAAAD,EAAA5iP,KAAA,KAAOiuK,EAAU+N,IAEZj0K,KAAO,WAAW86O,CAExB,CAAC,OAAAn2O,EAAAg2O,EAAA,CARY,CAASnB,IAYvBmB,GAAS3iP,UAAUu3O,YAAa,EAAK,IAE/B7sB,GAAc,SAAAq4B,GAAA3jO,EAAAsrM,EAAAq4B,GAAA,IAAAC,EAAAjlO,EAAA2sM,GAEnB,SAAAA,EAAa9uC,GAAa,IAAAqnE,EAeI,OAfJp1O,EAAA,KAAA68M,IAEzBu4B,EAAAD,EAAA/iP,KAAA,OAEK+H,KAAO,iBAEZi7O,EAAKr4M,MAAQ,IAAI+zH,GAAO,UAExBskF,EAAKtjP,IAAM,KAEXsjP,EAAKzgE,SAAW,KAEhBygE,EAAKt6L,KAAO,EACZs6L,EAAK1+D,iBAAkB,EAEvB0+D,EAAKz9D,UAAW5J,GAAaqnE,CAE9B,CAiBC,OAjBAt2O,EAAA+9M,EAAA,EAAA9kN,IAAA,OAAA/D,MAED,SAAM+C,GAaL,OAXA0lI,GAAA5rH,EAAAgsM,EAAA1qN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OAExBxnC,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAKulD,KAAO/jD,EAAO+jD,KACnBvlD,KAAKmhL,gBAAkB3/K,EAAO2/K,gBAEvBnhL,IAER,KAACsnN,CAAA,CApCkB,CAAS/rC,IAwC7B+rC,GAAe1qN,UAAU0wO,kBAAmB,EAE5C,IAAMwS,GAA+B,IAAInvE,GACnCovE,GAAqB,IAAI3xE,GACzB4xE,GAAwB,IAAI9yE,GAC5B+yE,GAA4B,IAAIn5E,GAEhCo5E,GAAM,SAAAC,GAAAnkO,EAAAkkO,EAAAC,GAAA,IAAAC,EAAAzlO,EAAAulO,GAEX,SAAAA,IAAgF,IAAAG,EAAnEv1E,EAAQ7qK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIylL,GAAkB7M,EAAQ54K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIqnN,GASlC,OATkD78M,EAAA,KAAAy1O,IAE5EG,EAAAD,EAAAvjP,KAAA,OAEK+H,KAAO,SAEZy7O,EAAKv1E,SAAWA,EAChBu1E,EAAKxnE,SAAWA,EAEhBwnE,EAAK/0D,qBAAqB+0D,CAE3B,CA6HC,OA7HA92O,EAAA22O,EAAA,EAAA19O,IAAA,OAAA/D,MAED,SAAM+C,GAOL,OALA0lI,GAAA5rH,EAAA4kO,EAAAtjP,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK64K,SAAWr3K,EAAOq3K,SACvB74K,KAAK8qK,SAAWtpK,EAAOspK,SAEhB9qK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASitL,EAAWC,GAEnB,IAAM7gB,EAAW9qK,KAAK8qK,SAChB7C,EAAcjoK,KAAKioK,YACnBw2E,EAAY/yD,EAAUxxH,OAAOgmL,OAAOzB,UACpCv4D,EAAYpb,EAASob,UAU3B,GANiC,OAA5Bpb,EAASmb,gBAA0Bnb,EAASwb,wBAEjD05D,GAAQtkF,KAAMoP,EAASmb,gBACvB+5D,GAAQn4E,aAAcI,GACtB+3E,GAAQ92E,QAAUu1E,GAEiC,IAA9C/yD,EAAUpd,IAAIf,iBAAkByyE,IAArC,CAIAF,GAAepkF,KAAMuM,GAAcn4B,SACnCiwG,GAAKrkF,KAAMgwB,EAAUpd,KAAMzG,aAAci4E,IAEzC,IAAMpB,EAAiBD,IAAgBz+O,KAAKq3I,MAAMn7I,EAAI8D,KAAKq3I,MAAMhwI,EAAIrH,KAAKq3I,MAAM/vI,GAAM,GAChFq3O,EAAmBD,EAAiBA,EAE1C,GAAK5zE,EAASme,iBAAmB,CAEhC,IAAMr6K,EAAQk8J,EAASl8J,MAEjB45K,EADa1d,EAAS54F,WACS3S,SAErC,GAAe,OAAV3wD,EAKJ,IAHA,IAGUlS,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBgiB,EAFT7vD,KAAKiuC,IAAKt8B,EAAM+uE,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAElCjhF,EAAIowD,EAAIpwD,IAAO,CAE7C,IAAMV,EAAI4S,EAAMunJ,KAAMz5J,GAEtBujP,GAAYl1E,oBAAqByd,EAAmBxsL,GAEpDskP,GAAWL,GAAajkP,EAAG2iP,EAAkB12E,EAAayjB,EAAWC,EAAY3rL,KAElF,MAOA,IAHA,IAGUtD,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBjkC,EAFT5J,KAAKiuC,IAAKs9I,EAAkB7qG,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAE/CjhF,EAAImK,EAAGnK,IAEpCujP,GAAYl1E,oBAAqByd,EAAmB9rL,GAEpD4jP,GAAWL,GAAavjP,EAAGiiP,EAAkB12E,EAAayjB,EAAWC,EAAY3rL,KAMpF,MAEC+T,QAAQwN,MAAO,8FAhDiD,CAoDlE,GAAC,CAAA/e,IAAA,qBAAA/D,MAED,WAEC,IAAMqsK,EAAW9qK,KAAK8qK,SAEtB,GAAKA,EAASme,iBAAmB,CAEhC,IAAMnD,EAAkBhb,EAASgb,gBAC3BlkL,EAAOrD,OAAOqD,KAAMkkL,GAE1B,GAAKlkL,EAAKhK,OAAS,EAAI,CAEtB,IAAMqvL,EAAiBnB,EAAiBlkL,EAAM,IAE9C,QAAwBwI,IAAnB68K,EAA+B,CAEnCjnL,KAAKurL,sBAAwB,GAC7BvrL,KAAKwrL,sBAAwB,CAAC,EAE9B,IAAM,IAAI1kL,EAAI,EAAGumD,EAAK45H,EAAervL,OAAQkP,EAAIumD,EAAIvmD,IAAO,CAE3D,IAAM3N,EAAO8tL,EAAgBngL,GAAI3N,MAAQ4E,OAAQ+I,GAEjD9G,KAAKurL,sBAAsBzuL,KAAM,GACjCkD,KAAKwrL,sBAAuBryL,GAAS2N,CAEtC,CAED,CAED,CAED,KAAO,CAEN,IAAM2kL,EAAe3gB,EAAS2gB,kBAERrhL,IAAjBqhL,GAA8BA,EAAa7zL,OAAS,GAExDmc,QAAQwN,MAAO,uGAIjB,CAED,KAAC2+N,CAAA,CA1IU,CAAS1qE,IAgJrB,SAAS8qE,GAAW51E,EAAO97J,EAAO+vO,EAAkB12E,EAAayjB,EAAWC,EAAYxpL,GAEvF,IAAMo+O,EAAqBR,GAAKvxE,kBAAmB9D,GAEnD,GAAK61E,EAAqB5B,EAAmB,CAE5C,IAAM6B,EAAiB,IAAI15E,GAE3Bi5E,GAAKU,oBAAqB/1E,EAAO81E,GACjCA,EAAe34E,aAAcI,GAE7B,IAAMyO,EAAWgV,EAAUpd,IAAIl2E,OAAOi1E,WAAYmzE,GAElD,GAAK9pE,EAAWgV,EAAU7X,MAAQ6C,EAAWgV,EAAU5X,IAAM,OAE7D6X,EAAW7uL,KAAM,CAEhB45K,SAAUA,EACVgqE,cAAezjP,KAAK04J,KAAM4qF,GAC1B71E,MAAO81E,EACP5xO,MAAOA,EACPs9K,KAAM,KACN/pL,OAAQA,GAIV,CAED,CA9BA+9O,GAAOtjP,UAAU27K,UAAW,EA8B3B,IAEKooE,GAAY,SAAAC,GAAA5kO,EAAA2kO,EAAAC,GAAA,IAAAC,EAAAlmO,EAAAgmO,GAEjB,SAAAA,EAAa3hK,EAAOslE,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,GAAa,IAAAsiF,EAAAr2O,EAAA,KAAAk2O,IAE3FG,EAAAD,EAAAhkP,KAAA,KAAOmiF,EAAOslE,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,IAEpEF,eAA0Bl0J,IAAdk0J,EAA0BA,EAAYzT,GACvDi2F,EAAKziF,eAA0Bj0J,IAAdi0J,EAA0BA,EAAYxT,GAEvDi2F,EAAKjiF,iBAAkB,EAEvB,IAAMmuB,EAAKxxK,EAAAslO,GAaV,MAJI,8BAA+B9hK,GAEnCA,EAAM+hK,2BATP,SAASC,IAERh0D,EAAM1tB,aAAc,EACpBtgF,EAAM+hK,0BAA2BC,EAElC,IAMCF,CAEF,CAmBC,OAnBAv3O,EAAAo3O,EAAA,EAAAn+O,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAKm5I,OAAQuiB,KAAM17J,KAEjD,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMugF,EAAQh/E,KAAKm5I,OAGY,IAFD,8BAA+Bn6D,GAErBA,EAAM1sE,YAAc0sE,EAAMiiK,oBAEjEjhP,KAAKs/J,aAAc,EAIrB,KAACqhF,CAAA,CA7CgB,CAAS5iF,IAiD3B4iF,GAAa/jP,UAAU2rN,gBAAiB,EAAK,IAEvC24B,GAAkB,SAAAC,GAAAnlO,EAAAklO,EAAAC,GAAA,IAAAC,EAAAzmO,EAAAumO,GAEvB,SAAAA,EAAa/yO,EAAOC,EAAQmwJ,GAAS,IAAA8iF,EAWZ,OAXY52O,EAAA,KAAAy2O,IAEpCG,EAAAD,EAAAvkP,KAAA,KAAO,CAAEsR,MAAAA,EAAOC,OAAAA,KAEXmwJ,OAASA,EAEd8iF,EAAKhjF,UAAY7T,GACjB62F,EAAK/iF,UAAY9T,GAEjB62F,EAAKxiF,iBAAkB,EAEvBwiF,EAAK/hF,aAAc,EAAK+hF,CAEzB,CAAC,OAAA93O,EAAA23O,EAAA,CAfsB,CAASnjF,IAmBjCmjF,GAAmBtkP,UAAU88N,sBAAuB,EAAK,IAEnD4nB,GAAiB,SAAAC,GAAAvlO,EAAAslO,EAAAC,GAAA,IAAAC,EAAA7mO,EAAA2mO,GAEtB,SAAAA,EAAa5iF,EAASvwJ,EAAOC,EAAQmwJ,EAAQ35J,EAAM0/I,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWE,EAAYC,GAAW,IAAAgjF,EAezF,OAfyFh3O,EAAA,KAAA62O,IAEtHG,EAAAD,EAAA3kP,KAAA,KAAO,KAAMynJ,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,EAAYC,IAE/EtlB,MAAQ,CAAEhrI,MAAOA,EAAOC,OAAQA,GACrCqzO,EAAK/iF,QAAUA,EAKf+iF,EAAK1iF,OAAQ,EAKb0iF,EAAK5iF,iBAAkB,EAAM4iF,CAE9B,CAAC,OAAAl4O,EAAA+3O,EAAA,CAnBqB,CAASvjF,IAuBhCujF,GAAkB1kP,UAAU+8N,qBAAsB,EAAK,IAEjD+nB,GAAa,SAAAC,GAAA3lO,EAAA0lO,EAAAC,GAAA,IAAAC,EAAAjnO,EAAA+mO,GAElB,SAAAA,EAAa1oG,EAAQsL,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,GAAa,IAAAqjF,EAIpE,OAJoEp3O,EAAA,KAAAi3O,IAE5FG,EAAAD,EAAA/kP,KAAA,KAAOm8I,EAAQsL,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,IAErEc,aAAc,EAAKuiF,CAEzB,CAAC,OAAAt4O,EAAAm4O,EAAA,CARiB,CAAS3jF,IAY5B2jF,GAAc9kP,UAAUklP,iBAAkB,EAE1C,IA8BMC,GAAK,WAEV,SAAAA,IAAct3O,EAAA,KAAAs3O,GAEb/hP,KAAK4E,KAAO,QAEZ5E,KAAKgiP,mBAAqB,GAE3B,CA+WC,OA5WDz4O,EAAAw4O,EAAA,EAAAv/O,IAAA,WAAA/D,MAEA,WAGC,OADAsV,QAAQk/C,KAAM,6CACP,IAER,GAGA,CAAAzwD,IAAA,aAAA/D,MAEA,SAAY8I,EAAG06O,GAEd,IAAM3qP,EAAI0I,KAAKkiP,eAAgB36O,GAC/B,OAAOvH,KAAKmiP,SAAU7qP,EAAG2qP,EAE1B,GAEA,CAAAz/O,IAAA,YAAA/D,MAEA,WAIC,IAJ0B,IAAhB2jP,EAASniP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEhBgqK,EAAS,GAELzjK,EAAI,EAAGA,GAAK47O,EAAW57O,IAEhCyjK,EAAOntK,KAAMkD,KAAKmiP,SAAU37O,EAAI47O,IAIjC,OAAOn4E,CAER,GAEA,CAAAznK,IAAA,kBAAA/D,MAEA,WAIC,IAJgC,IAAhB2jP,EAASniP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEtBgqK,EAAS,GAELzjK,EAAI,EAAGA,GAAK47O,EAAW57O,IAEhCyjK,EAAOntK,KAAMkD,KAAKqiP,WAAY77O,EAAI47O,IAInC,OAAOn4E,CAER,GAEA,CAAAznK,IAAA,YAAA/D,MAEA,WAEC,IAAM6jP,EAAUtiP,KAAKuiP,aACrB,OAAOD,EAASA,EAAQ1qP,OAAS,EAElC,GAEA,CAAA4K,IAAA,aAAA/D,MAEA,WAAkD,IAAtC2jP,EAASniP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGD,KAAKgiP,mBAE5B,GAAKhiP,KAAKwiP,iBACPxiP,KAAKwiP,gBAAgB5qP,SAAWwqP,EAAY,IAC5CpiP,KAAKs/J,YAEP,OAAOt/J,KAAKwiP,gBAIbxiP,KAAKs/J,aAAc,EAEnB,IACIhmI,EADElwB,EAAQ,GACD1J,EAAOM,KAAKmiP,SAAU,GAC/BxxG,EAAM,EAEVvnI,EAAMtM,KAAM,GAEZ,IAAM,IAAIkK,EAAI,EAAGA,GAAKo7O,EAAWp7O,IAGhC2pI,IADAr3G,EAAUt5B,KAAKmiP,SAAUn7O,EAAIo7O,IACd/0E,WAAY3tK,GAC3B0J,EAAMtM,KAAM6zI,GACZjxI,EAAO45B,EAMR,OAFAt5B,KAAKwiP,gBAAkBp5O,EAEhBA,CAER,GAAC,CAAA5G,IAAA,mBAAA/D,MAED,WAECuB,KAAKs/J,aAAc,EACnBt/J,KAAKuiP,YAEN,GAEA,CAAA//O,IAAA,iBAAA/D,MAEA,SAAgB8I,EAAGmvK,GAElB,IAKI+rE,EALEC,EAAa1iP,KAAKuiP,aAEpB7lP,EAAI,EACFowD,EAAK41L,EAAW9qP,OAMrB6qP,EAFI/rE,GAMcnvK,EAAIm7O,EAAY51L,EAAK,GAQxC,IAFA,IAA4B61L,EAAxBnvF,EAAM,EAAGC,EAAO3mG,EAAK,EAEjB0mG,GAAOC,GAMd,IAFAkvF,EAAaD,EAFbhmP,EAAIO,KAAKwf,MAAO+2I,GAAQC,EAAOD,GAAQ,IAERivF,GAEb,EAEjBjvF,EAAM92J,EAAI,MAEJ,MAAKimP,EAAa,GAIlB,CAENlvF,EAAO/2J,EACP,KAID,CATC+2J,EAAO/2J,EAAI,CASZ,CAMD,GAAKgmP,EAFLhmP,EAAI+2J,KAEqBgvF,EAExB,OAAO/lP,GAAMowD,EAAK,GAMnB,IAAM81L,EAAeF,EAAYhmP,GAajC,OAFYA,GAJc+lP,EAAkBG,IANxBF,EAAYhmP,EAAI,GAEAkmP,KAQE91L,EAAK,EAI5C,GAKA,CAAAtqD,IAAA,aAAA/D,MAEA,SAAYnH,EAAG2qP,GAEd,IAAM7kP,EAAQ,KACVkyK,EAAKh4K,EAAI8F,EACTylP,EAAKvrP,EAAI8F,EAIRkyK,EAAK,IAAIA,EAAK,GACduzE,EAAK,IAAIA,EAAK,GAEnB,IAAMC,EAAM9iP,KAAKmiP,SAAU7yE,GACrByzE,EAAM/iP,KAAKmiP,SAAUU,GAErBx8D,EAAU47D,IAAsBa,EAAIvsF,UAAc,IAAIpB,GAAY,IAAI2R,IAI5E,OAFAuf,EAAQ3qB,KAAMqnF,GAAMj6E,IAAKg6E,GAAMjiI,YAExBwlE,CAER,GAAC,CAAA7jL,IAAA,eAAA/D,MAED,SAAc8I,EAAG06O,GAEhB,IAAM3qP,EAAI0I,KAAKkiP,eAAgB36O,GAC/B,OAAOvH,KAAKgjP,WAAY1rP,EAAG2qP,EAE5B,GAAC,CAAAz/O,IAAA,sBAAA/D,MAED,SAAqBq8F,EAAUmoJ,GAe9B,IAXA,IAAMl6E,EAAS,IAAIjC,GAEb0gB,EAAW,GACXH,EAAU,GACV67D,EAAY,GAEZC,EAAM,IAAIr8E,GACVs8E,EAAM,IAAIzyE,GAINj0K,EAAI,EAAGA,GAAKo+F,EAAUp+F,IAAO,CAEtC,IAAM6K,EAAI7K,EAAIo+F,EAEd0sF,EAAU9qL,GAAMsD,KAAKqjP,aAAc97O,EAAG,IAAIu/J,GAE3C,CAKAugB,EAAS,GAAM,IAAIvgB,GACnBo8E,EAAW,GAAM,IAAIp8E,GACrB,IAAI57H,EAAM7zB,OAAOisO,UACXpqF,EAAKj8J,KAAK4f,IAAK2qK,EAAU,GAAItrL,GAC7Bi9J,EAAKl8J,KAAK4f,IAAK2qK,EAAU,GAAIngL,GAC7Bk8O,EAAKtmP,KAAK4f,IAAK2qK,EAAU,GAAIlgL,GAE9B4xJ,GAAMhuH,IAEVA,EAAMguH,EACN6P,EAAO95I,IAAK,EAAG,EAAG,IAIdkqI,GAAMjuH,IAEVA,EAAMiuH,EACN4P,EAAO95I,IAAK,EAAG,EAAG,IAIds0N,GAAMr4M,GAEV69H,EAAO95I,IAAK,EAAG,EAAG,GAInBk0N,EAAIj7E,aAAcsf,EAAU,GAAKze,GAASloD,YAE1CwmE,EAAS,GAAInf,aAAcsf,EAAU,GAAK27D,GAC1CD,EAAW,GAAIh7E,aAAcsf,EAAU,GAAKH,EAAS,IAKrD,IAAM,IAAI3qL,EAAI,EAAGA,GAAKo+F,EAAUp+F,IAAO,CAQtC,GANA2qL,EAAS3qL,GAAM2qL,EAAS3qL,EAAI,GAAIwE,QAEhCgiP,EAAWxmP,GAAMwmP,EAAWxmP,EAAI,GAAIwE,QAEpCiiP,EAAIj7E,aAAcsf,EAAU9qL,EAAI,GAAK8qL,EAAU9qL,IAE1CymP,EAAIvrP,SAAWyf,OAAO6sJ,QAAU,CAEpCi/E,EAAItiI,YAEJ,IAAM44C,EAAQx8J,KAAK4iK,KAAM3N,GAAOs1B,EAAU9qL,EAAI,GAAIunK,IAAKujB,EAAU9qL,KAAS,EAAG,IAE7E2qL,EAAS3qL,GAAImrK,aAAcu7E,EAAII,iBAAkBL,EAAK1pF,GAEvD,CAEAypF,EAAWxmP,GAAIwrK,aAAcsf,EAAU9qL,GAAK2qL,EAAS3qL,GAEtD,CAIA,IAAgB,IAAXumP,EAAkB,CAEtB,IAAIxpF,EAAQx8J,KAAK4iK,KAAM3N,GAAOm1B,EAAS,GAAIpjB,IAAKojB,EAASvsF,KAAgB,EAAG,IAC5E2+D,GAAS3+D,EAEJ0sF,EAAU,GAAIvjB,IAAKk/E,EAAIj7E,aAAcmf,EAAS,GAAKA,EAASvsF,KAAiB,IAEjF2+D,GAAUA,GAIX,IAAM,IAAI/8J,EAAI,EAAGA,GAAKo+F,EAAUp+F,IAG/B2qL,EAAS3qL,GAAImrK,aAAcu7E,EAAII,iBAAkBh8D,EAAU9qL,GAAK+8J,EAAQ/8J,IACxEwmP,EAAWxmP,GAAIwrK,aAAcsf,EAAU9qL,GAAK2qL,EAAS3qL,GAIvD,CAEA,MAAO,CACN8qL,SAAUA,EACVH,QAASA,EACT67D,UAAWA,EAGb,GAAC,CAAA1gP,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAIL,OAFAxB,KAAKgiP,mBAAqBxgP,EAAOwgP,mBAE1BhiP,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAO,CACZ+6E,SAAU,CACTplH,QAAS,IACTuL,KAAM,QACNgrF,UAAW,iBAOb,OAHAlsD,EAAKs+M,mBAAqBhiP,KAAKgiP,mBAC/Bt+M,EAAK9+B,KAAO5E,KAAK4E,KAEV8+B,CAER,GAAC,CAAAlhC,IAAA,WAAA/D,MAED,SAAUg+O,GAIT,OAFAz8O,KAAKgiP,mBAAqBvF,EAAKuF,mBAExBhiP,IAER,KAAC+hP,CAAA,CAvXS,GA2XL0B,GAAY,SAAAC,GAAA1nO,EAAAynO,EAAAC,GAAA,IAAAC,EAAAhpO,EAAA8oO,GAEjB,SAAAA,IAAqI,IAAAG,EAAxHC,EAAE5jP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG6jP,EAAE7jP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG8jP,EAAO9jP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG+jP,EAAO/jP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGgkP,EAAWhkP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGikP,EAASjkP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAa,EAAVhD,KAAK00J,GAAQwyF,EAAUlkP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAAUmkP,EAASnkP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAiBrG,OAjBsGwK,EAAA,KAAAg5O,IAEjIG,EAAAD,EAAA9mP,KAAA,OAEK+H,KAAO,eAEZg/O,EAAKC,GAAKA,EACVD,EAAKE,GAAKA,EAEVF,EAAKG,QAAUA,EACfH,EAAKI,QAAUA,EAEfJ,EAAKK,YAAcA,EACnBL,EAAKM,UAAYA,EAEjBN,EAAKO,WAAaA,EAElBP,EAAKQ,UAAYA,EAAUR,CAE5B,CA6HC,OA7HAr6O,EAAAk6O,EAAA,EAAAjhP,IAAA,WAAA/D,MAED,SAAUnH,EAAG2qP,GASZ,IAPA,IAAMv3E,EAAQu3E,GAAkB,IAAI9sF,GAE9BkvF,EAAkB,EAAVpnP,KAAK00J,GACf2yF,EAAatkP,KAAKkkP,UAAYlkP,KAAKikP,YACjCM,EAAatnP,KAAK4f,IAAKynO,GAAejtO,OAAO6sJ,QAG3CogF,EAAa,GAAIA,GAAcD,EACvC,KAAQC,EAAaD,GAAQC,GAAcD,EAEtCC,EAAajtO,OAAO6sJ,UAIvBogF,EAFIC,EAES,EAIAF,IAMU,IAApBrkP,KAAKmkP,YAAyBI,IAE7BD,IAAeD,EAEnBC,GAAeD,EAIfC,GAA0BD,GAM5B,IAAMzuF,EAAQ51J,KAAKikP,YAAc3sP,EAAIgtP,EACjCpoP,EAAI8D,KAAK6jP,GAAK7jP,KAAK+jP,QAAU9mP,KAAKk3J,IAAKyB,GACvCvuJ,EAAIrH,KAAK8jP,GAAK9jP,KAAKgkP,QAAU/mP,KAAKm3J,IAAKwB,GAE3C,GAAwB,IAAnB51J,KAAKokP,UAAkB,CAE3B,IAAMjwF,EAAMl3J,KAAKk3J,IAAKn0J,KAAKokP,WACrBhwF,EAAMn3J,KAAKm3J,IAAKp0J,KAAKokP,WAErBlrF,EAAKh9J,EAAI8D,KAAK6jP,GACd1qF,EAAK9xJ,EAAIrH,KAAK8jP,GAGpB5nP,EAAIg9J,EAAK/E,EAAMgF,EAAK/E,EAAMp0J,KAAK6jP,GAC/Bx8O,EAAI6xJ,EAAK9E,EAAM+E,EAAKhF,EAAMn0J,KAAK8jP,EAEhC,CAEA,OAAOp5E,EAAMz7I,IAAK/yB,EAAGmL,EAEtB,GAAC,CAAA7E,IAAA,OAAA/D,MAED,SAAM+C,GAiBL,OAfA0lI,GAAA5rH,EAAAmoO,EAAA7mP,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK6jP,GAAKriP,EAAOqiP,GACjB7jP,KAAK8jP,GAAKtiP,EAAOsiP,GAEjB9jP,KAAK+jP,QAAUviP,EAAOuiP,QACtB/jP,KAAKgkP,QAAUxiP,EAAOwiP,QAEtBhkP,KAAKikP,YAAcziP,EAAOyiP,YAC1BjkP,KAAKkkP,UAAY1iP,EAAO0iP,UAExBlkP,KAAKmkP,WAAa3iP,EAAO2iP,WAEzBnkP,KAAKokP,UAAY5iP,EAAO4iP,UAEjBpkP,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAAmoO,EAAA7mP,WAAA,eAAAC,KAAA,MAeV,OAbA6mC,EAAKmgN,GAAK7jP,KAAK6jP,GACfngN,EAAKogN,GAAK9jP,KAAK8jP,GAEfpgN,EAAKqgN,QAAU/jP,KAAK+jP,QACpBrgN,EAAKsgN,QAAUhkP,KAAKgkP,QAEpBtgN,EAAKugN,YAAcjkP,KAAKikP,YACxBvgN,EAAKwgN,UAAYlkP,KAAKkkP,UAEtBxgN,EAAKygN,WAAankP,KAAKmkP,WAEvBzgN,EAAK0gN,UAAYpkP,KAAKokP,UAEf1gN,CAER,GAAC,CAAAlhC,IAAA,WAAA/D,MAED,SAAUg+O,GAiBT,OAfAv1G,GAAA5rH,EAAAmoO,EAAA7mP,WAAA,iBAAAC,KAAA,KAAgB4/O,GAEhBz8O,KAAK6jP,GAAKpH,EAAKoH,GACf7jP,KAAK8jP,GAAKrH,EAAKqH,GAEf9jP,KAAK+jP,QAAUtH,EAAKsH,QACpB/jP,KAAKgkP,QAAUvH,EAAKuH,QAEpBhkP,KAAKikP,YAAcxH,EAAKwH,YACxBjkP,KAAKkkP,UAAYzH,EAAKyH,UAEtBlkP,KAAKmkP,WAAa1H,EAAK0H,WAEvBnkP,KAAKokP,UAAY3H,EAAK2H,UAEfpkP,IAER,KAACyjP,CAAA,CAlJgB,CAAS1B,IAsJ3B0B,GAAa7mP,UAAU4nP,gBAAiB,EAAK,IAEvCC,GAAQ,SAAAC,GAAA1oO,EAAAyoO,EAAAC,GAAA,IAAAC,EAAAhqO,EAAA8pO,GAEb,SAAAA,EAAaZ,EAAIC,EAAIc,EAASX,EAAaC,EAAWC,GAAa,IAAAU,EAI3C,OAJ2Cp6O,EAAA,KAAAg6O,IAElEI,EAAAF,EAAA9nP,KAAA,KAAOgnP,EAAIC,EAAIc,EAASA,EAASX,EAAaC,EAAWC,IAEpDv/O,KAAO,WAAWigP,CAExB,CAAC,OAAAt7O,EAAAk7O,EAAA,CARY,CAAShB,IAkCvB,SAASqB,KAER,IAAIC,EAAK,EAAGthF,EAAK,EAAGpP,EAAK,EAAGqP,EAAK,EAUjC,SAASnvC,EAAM2xC,EAAII,EAAI+I,EAAIC,GAE1By1E,EAAK7+E,EACLzC,EAAK4L,EACLhb,GAAO,EAAI6R,EAAK,EAAII,EAAK,EAAI+I,EAAKC,EAClC5L,EAAK,EAAIwC,EAAK,EAAII,EAAK+I,EAAKC,CAE7B,CAEA,MAAO,CAEN01E,eAAgB,SAAW9+E,EAAII,EAAI2M,EAAIgyE,EAAIC,GAE1C3wH,EAAM+xC,EAAI2M,EAAIiyE,GAAYjyE,EAAK/M,GAAMg/E,GAAYD,EAAK3+E,GAEvD,EAEA6+E,yBAA0B,SAAWj/E,EAAII,EAAI2M,EAAIgyE,EAAIG,EAAKC,EAAKC,GAG9D,IAAIh2E,GAAOhJ,EAAKJ,GAAOk/E,GAAQnyE,EAAK/M,IAASk/E,EAAMC,IAAUpyE,EAAK3M,GAAO++E,EACrExC,GAAO5vE,EAAK3M,GAAO++E,GAAQJ,EAAK3+E,IAAS++E,EAAMC,IAAUL,EAAKhyE,GAAOqyE,EAMzE/wH,EAAM+xC,EAAI2M,EAHV3D,GAAM+1E,EACNxC,GAAMwC,EAIP,EAEAvtH,KAAM,SAAWxgI,GAEhB,IAAMurP,EAAKvrP,EAAIA,EAEf,OAAOytP,EAAKthF,EAAKnsK,EAAI+8J,EAAKwuF,EAAKn/E,GADpBm/E,EAAKvrP,EAGjB,EAIF,CA3EAmtP,GAAS7nP,UAAU2oP,YAAa,EA+EhC,IAAMzsF,GAAM,IAAIgO,GACV0+E,GAAK,IAAIV,GAAaW,GAAK,IAAIX,GAAaY,GAAK,IAAIZ,GAErDa,GAAgB,SAAAC,GAAA5pO,EAAA2pO,EAAAC,GAAA,IAAAC,EAAAlrO,EAAAgrO,GAErB,SAAAA,IAAqF,IAAAG,EAAxE77E,EAAMhqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAIgjP,EAAMhjP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAAU8lP,EAAS9lP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,cAAeilP,EAAOjlP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GASvD,OAT0DwK,EAAA,KAAAk7O,IAEjFG,EAAAD,EAAAhpP,KAAA,OAEK+H,KAAO,mBAEZkhP,EAAK77E,OAASA,EACd67E,EAAK7C,OAASA,EACd6C,EAAKC,UAAYA,EACjBD,EAAKZ,QAAUA,EAAQY,CAExB,CAsJC,OAtJAv8O,EAAAo8O,EAAA,EAAAnjP,IAAA,WAAA/D,MAED,SAAUnH,GAAoC,IAsBzCu1K,EAAIwO,EApBF3Q,EAFoBzqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAI3BmD,EAASjqK,KAAKiqK,OACdpjK,EAAIojK,EAAOryK,OAEXoP,GAAMH,GAAM7G,KAAKijP,OAAS,EAAI,IAAQ3rP,EACxC0uP,EAAW/oP,KAAKwf,MAAOzV,GACvBosM,EAASpsM,EAAIg/O,EAEZhmP,KAAKijP,OAET+C,GAAYA,EAAW,EAAI,GAAM/oP,KAAKwf,MAAOxf,KAAK4f,IAAKmpO,GAAan/O,GAAM,GAAMA,EAE1D,IAAXusM,GAAgB4yC,IAAan/O,EAAI,IAE5Cm/O,EAAWn/O,EAAI,EACfusM,EAAS,GAMLpzM,KAAKijP,QAAU+C,EAAW,EAE9Bn5E,EAAK5C,GAAU+7E,EAAW,GAAMn/O,IAKhCiyJ,GAAIxD,WAAY2U,EAAQ,GAAKA,EAAQ,IAAM79I,IAAK69I,EAAQ,IACxD4C,EAAK/T,IAIN,IAAMxhC,EAAK2yC,EAAQ+7E,EAAWn/O,GACxB0wH,EAAK0yC,GAAU+7E,EAAW,GAAMn/O,GActC,GAZK7G,KAAKijP,QAAU+C,EAAW,EAAIn/O,EAElCw0K,EAAKpR,GAAU+7E,EAAW,GAAMn/O,IAKhCiyJ,GAAIxD,WAAY2U,EAAQpjK,EAAI,GAAKojK,EAAQpjK,EAAI,IAAMulB,IAAK69I,EAAQpjK,EAAI,IACpEw0K,EAAKviB,IAIkB,gBAAnB94J,KAAK+lP,WAAkD,YAAnB/lP,KAAK+lP,UAA0B,CAGvE,IAAMxzF,EAAyB,YAAnBvyJ,KAAK+lP,UAA0B,GAAM,IAC7CX,EAAMnoP,KAAKs1J,IAAKsa,EAAG/W,kBAAmBx+B,GAAMi7B,GAC5C8yF,EAAMpoP,KAAKs1J,IAAKj7B,EAAGw+B,kBAAmBv+B,GAAMg7B,GAC5C+yF,EAAMroP,KAAKs1J,IAAKh7B,EAAGu+B,kBAAmBulB,GAAM9oB,GAG3C8yF,EAAM,OAAOA,EAAM,GACnBD,EAAM,OAAOA,EAAMC,GACnBC,EAAM,OAAOA,EAAMD,GAExBG,GAAGL,yBAA0Bt4E,EAAG3wK,EAAGo7H,EAAGp7H,EAAGq7H,EAAGr7H,EAAGm/K,EAAGn/K,EAAGkpP,EAAKC,EAAKC,GAC/DG,GAAGN,yBAA0Bt4E,EAAGxlK,EAAGiwH,EAAGjwH,EAAGkwH,EAAGlwH,EAAGg0K,EAAGh0K,EAAG+9O,EAAKC,EAAKC,GAC/DI,GAAGP,yBAA0Bt4E,EAAGvlK,EAAGgwH,EAAGhwH,EAAGiwH,EAAGjwH,EAAG+zK,EAAG/zK,EAAG89O,EAAKC,EAAKC,EAEhE,KAA+B,eAAnBtlP,KAAK+lP,YAEhBP,GAAGR,eAAgBn4E,EAAG3wK,EAAGo7H,EAAGp7H,EAAGq7H,EAAGr7H,EAAGm/K,EAAGn/K,EAAG8D,KAAKklP,SAChDO,GAAGT,eAAgBn4E,EAAGxlK,EAAGiwH,EAAGjwH,EAAGkwH,EAAGlwH,EAAGg0K,EAAGh0K,EAAGrH,KAAKklP,SAChDQ,GAAGV,eAAgBn4E,EAAGvlK,EAAGgwH,EAAGhwH,EAAGiwH,EAAGjwH,EAAG+zK,EAAG/zK,EAAGtH,KAAKklP,UAUjD,OANAx6E,EAAMz7I,IACLu2N,GAAG1tH,KAAMs7E,GACTqyC,GAAG3tH,KAAMs7E,GACTsyC,GAAG5tH,KAAMs7E,IAGH1oC,CAER,GAAC,CAAAloK,IAAA,OAAA/D,MAED,SAAM+C,GAEL0lI,GAAA5rH,EAAAqqO,EAAA/oP,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKiqK,OAAS,GAEd,IAAM,IAAIvtK,EAAI,EAAGmK,EAAIrF,EAAOyoK,OAAOryK,OAAQ8E,EAAImK,EAAGnK,IAAO,CAExD,IAAMguK,EAAQlpK,EAAOyoK,OAAQvtK,GAE7BsD,KAAKiqK,OAAOntK,KAAM4tK,EAAMxpK,QAEzB,CAMA,OAJAlB,KAAKijP,OAASzhP,EAAOyhP,OACrBjjP,KAAK+lP,UAAYvkP,EAAOukP,UACxB/lP,KAAKklP,QAAU1jP,EAAO0jP,QAEfllP,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAAqqO,EAAA/oP,WAAA,eAAAC,KAAA,MAEV6mC,EAAKumI,OAAS,GAEd,IAAM,IAAIvtK,EAAI,EAAGmK,EAAI7G,KAAKiqK,OAAOryK,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEtD,IAAMguK,EAAQ1qK,KAAKiqK,OAAQvtK,GAC3BgnC,EAAKumI,OAAOntK,KAAM4tK,EAAMnjF,UAEzB,CAMA,OAJA7jD,EAAKu/M,OAASjjP,KAAKijP,OACnBv/M,EAAKqiN,UAAY/lP,KAAK+lP,UACtBriN,EAAKwhN,QAAUllP,KAAKklP,QAEbxhN,CAER,GAAC,CAAAlhC,IAAA,WAAA/D,MAED,SAAUg+O,GAETv1G,GAAA5rH,EAAAqqO,EAAA/oP,WAAA,iBAAAC,KAAA,KAAgB4/O,GAEhBz8O,KAAKiqK,OAAS,GAEd,IAAM,IAAIvtK,EAAI,EAAGmK,EAAI41O,EAAKxyE,OAAOryK,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEtD,IAAMguK,EAAQ+xE,EAAKxyE,OAAQvtK,GAC3BsD,KAAKiqK,OAAOntK,MAAM,IAAIgqK,IAAUnN,UAAW+Q,GAE5C,CAMA,OAJA1qK,KAAKijP,OAASxG,EAAKwG,OACnBjjP,KAAK+lP,UAAYtJ,EAAKsJ,UACtB/lP,KAAKklP,QAAUzI,EAAKyI,QAEbllP,IAER,KAAC2lP,CAAA,CAnKoB,CAAS5D,IA8K/B,SAASkE,GAAY3uP,EAAGu1K,EAAIv1C,EAAIC,EAAI8jD,GAEnC,IAAM1O,EAAmB,IAAZp1C,EAAKs1C,GACZ7W,EAAmB,IAAZqlB,EAAK/jD,GACZurH,EAAKvrP,EAAIA,EAEf,OAAS,EAAIggI,EAAK,EAAIC,EAAKo1C,EAAK3W,IADrB1+J,EAAIurP,KACiC,EAAIvrH,EAAK,EAAIC,EAAK,EAAIo1C,EAAK3W,GAAO6sF,EAAKl2E,EAAKr1K,EAAIggI,CAEjG,CAuBA,SAAS4uH,GAAiB5uP,EAAGu1K,EAAIv1C,EAAIC,GAEpC,OArBD,SAA4BjgI,EAAG0P,GAE9B,IAAMJ,EAAI,EAAItP,EACd,OAAOsP,EAAIA,EAAII,CAEhB,CAgBQm/O,CAAmB7uP,EAAGu1K,GAd9B,SAA4Bv1K,EAAG0P,GAE9B,OAAO,GAAM,EAAI1P,GAAMA,EAAI0P,CAE5B,CAUqCo/O,CAAmB9uP,EAAGggI,GAR3D,SAA4BhgI,EAAG0P,GAE9B,OAAO1P,EAAIA,EAAI0P,CAEhB,CAKEq/O,CAAmB/uP,EAAGigI,EAExB,CA8BA,SAAS+uH,GAAahvP,EAAGu1K,EAAIv1C,EAAIC,EAAI8jD,GAEpC,OA5BD,SAAwB/jL,EAAG0P,GAE1B,IAAMJ,EAAI,EAAItP,EACd,OAAOsP,EAAIA,EAAIA,EAAII,CAEpB,CAuBQu/O,CAAejvP,EAAGu1K,GArB1B,SAAwBv1K,EAAG0P,GAE1B,IAAMJ,EAAI,EAAItP,EACd,OAAO,EAAIsP,EAAIA,EAAItP,EAAI0P,CAExB,CAgBiCw/O,CAAelvP,EAAGggI,GAdnD,SAAwBhgI,EAAG0P,GAE1B,OAAO,GAAM,EAAI1P,GAAMA,EAAIA,EAAI0P,CAEhC,CAU0Dy/O,CAAenvP,EAAGigI,GAR5E,SAAwBjgI,EAAG0P,GAE1B,OAAO1P,EAAIA,EAAIA,EAAI0P,CAEpB,CAKE0/O,CAAepvP,EAAG+jL,EAEpB,CA9EAsqE,GAAiB/oP,UAAU+pP,oBAAqB,EA8E/C,IAEKC,GAAgB,SAAAC,GAAA7qO,EAAA4qO,EAAAC,GAAA,IAAAC,EAAAnsO,EAAAisO,GAErB,SAAAA,IAA8F,IAAAG,EAAjFp6E,EAAE1sK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAAWa,EAAE/1J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAAWc,EAAEh2J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAAW6xF,EAAE/mP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GASpE,OAT6E1qJ,EAAA,KAAAm8O,IAE1FG,EAAAD,EAAAjqP,KAAA,OAEK+H,KAAO,mBAEZmiP,EAAKp6E,GAAKA,EACVo6E,EAAK/wF,GAAKA,EACV+wF,EAAK9wF,GAAKA,EACV8wF,EAAKC,GAAKA,EAAGD,CAEd,CAsDC,OAtDAx9O,EAAAq9O,EAAA,EAAApkP,IAAA,WAAA/D,MAED,SAAUnH,GAAoC,IAEvCozK,EAFoBzqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAI3BwX,EAAK3sK,KAAK2sK,GAAI3W,EAAKh2J,KAAKg2J,GAAIC,EAAKj2J,KAAKi2J,GAAI+wF,EAAKhnP,KAAKgnP,GAO1D,OALAt8E,EAAMz7I,IACLq3N,GAAahvP,EAAGq1K,EAAGzwK,EAAG85J,EAAG95J,EAAG+5J,EAAG/5J,EAAG8qP,EAAG9qP,GACrCoqP,GAAahvP,EAAGq1K,EAAGtlK,EAAG2uJ,EAAG3uJ,EAAG4uJ,EAAG5uJ,EAAG2/O,EAAG3/O,IAG/BqjK,CAER,GAAC,CAAAloK,IAAA,OAAA/D,MAED,SAAM+C,GASL,OAPA0lI,GAAA5rH,EAAAsrO,EAAAhqP,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK2sK,GAAGjR,KAAMl6J,EAAOmrK,IACrB3sK,KAAKg2J,GAAG0F,KAAMl6J,EAAOw0J,IACrBh2J,KAAKi2J,GAAGyF,KAAMl6J,EAAOy0J,IACrBj2J,KAAKgnP,GAAGtrF,KAAMl6J,EAAOwlP,IAEdhnP,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAAsrO,EAAAhqP,WAAA,eAAAC,KAAA,MAOV,OALA6mC,EAAKipI,GAAK3sK,KAAK2sK,GAAGplF,UAClB7jD,EAAKsyH,GAAKh2J,KAAKg2J,GAAGzuE,UAClB7jD,EAAKuyH,GAAKj2J,KAAKi2J,GAAG1uE,UAClB7jD,EAAKsjN,GAAKhnP,KAAKgnP,GAAGz/J,UAEX7jD,CAER,GAAC,CAAAlhC,IAAA,WAAA/D,MAED,SAAUg+O,GAST,OAPAv1G,GAAA5rH,EAAAsrO,EAAAhqP,WAAA,iBAAAC,KAAA,KAAgB4/O,GAEhBz8O,KAAK2sK,GAAGhT,UAAW8iF,EAAK9vE,IACxB3sK,KAAKg2J,GAAG2D,UAAW8iF,EAAKzmF,IACxBh2J,KAAKi2J,GAAG0D,UAAW8iF,EAAKxmF,IACxBj2J,KAAKgnP,GAAGrtF,UAAW8iF,EAAKuK,IAEjBhnP,IAER,KAAC4mP,CAAA,CAnEoB,CAAS7E,IAuE/B6E,GAAiBhqP,UAAUqqP,oBAAqB,EAAK,IAE/CC,GAAiB,SAAAC,GAAAnrO,EAAAkrO,EAAAC,GAAA,IAAAC,EAAAzsO,EAAAusO,GAEtB,SAAAA,IAA8F,IAAAG,EAAjF16E,EAAE1sK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAW9Q,EAAE/1J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAW7Q,EAAEh2J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAWkgF,EAAE/mP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GASpE,OAT6Er8J,EAAA,KAAAy8O,IAE1FG,EAAAD,EAAAvqP,KAAA,OAEK+H,KAAO,oBAEZyiP,EAAK16E,GAAKA,EACV06E,EAAKrxF,GAAKA,EACVqxF,EAAKpxF,GAAKA,EACVoxF,EAAKL,GAAKA,EAAGK,CAEd,CAuDC,OAvDA99O,EAAA29O,EAAA,EAAA1kP,IAAA,WAAA/D,MAED,SAAUnH,GAAoC,IAEvCozK,EAFoBzqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAI3B6F,EAAK3sK,KAAK2sK,GAAI3W,EAAKh2J,KAAKg2J,GAAIC,EAAKj2J,KAAKi2J,GAAI+wF,EAAKhnP,KAAKgnP,GAQ1D,OANAt8E,EAAMz7I,IACLq3N,GAAahvP,EAAGq1K,EAAGzwK,EAAG85J,EAAG95J,EAAG+5J,EAAG/5J,EAAG8qP,EAAG9qP,GACrCoqP,GAAahvP,EAAGq1K,EAAGtlK,EAAG2uJ,EAAG3uJ,EAAG4uJ,EAAG5uJ,EAAG2/O,EAAG3/O,GACrCi/O,GAAahvP,EAAGq1K,EAAGrlK,EAAG0uJ,EAAG1uJ,EAAG2uJ,EAAG3uJ,EAAG0/O,EAAG1/O,IAG/BojK,CAER,GAAC,CAAAloK,IAAA,OAAA/D,MAED,SAAM+C,GASL,OAPA0lI,GAAA5rH,EAAA4rO,EAAAtqP,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK2sK,GAAGjR,KAAMl6J,EAAOmrK,IACrB3sK,KAAKg2J,GAAG0F,KAAMl6J,EAAOw0J,IACrBh2J,KAAKi2J,GAAGyF,KAAMl6J,EAAOy0J,IACrBj2J,KAAKgnP,GAAGtrF,KAAMl6J,EAAOwlP,IAEdhnP,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAA4rO,EAAAtqP,WAAA,eAAAC,KAAA,MAOV,OALA6mC,EAAKipI,GAAK3sK,KAAK2sK,GAAGplF,UAClB7jD,EAAKsyH,GAAKh2J,KAAKg2J,GAAGzuE,UAClB7jD,EAAKuyH,GAAKj2J,KAAKi2J,GAAG1uE,UAClB7jD,EAAKsjN,GAAKhnP,KAAKgnP,GAAGz/J,UAEX7jD,CAER,GAAC,CAAAlhC,IAAA,WAAA/D,MAED,SAAUg+O,GAST,OAPAv1G,GAAA5rH,EAAA4rO,EAAAtqP,WAAA,iBAAAC,KAAA,KAAgB4/O,GAEhBz8O,KAAK2sK,GAAGhT,UAAW8iF,EAAK9vE,IACxB3sK,KAAKg2J,GAAG2D,UAAW8iF,EAAKzmF,IACxBh2J,KAAKi2J,GAAG0D,UAAW8iF,EAAKxmF,IACxBj2J,KAAKgnP,GAAGrtF,UAAW8iF,EAAKuK,IAEjBhnP,IAER,KAACknP,CAAA,CApEqB,CAASnF,IAwEhCmF,GAAkBtqP,UAAU0qP,qBAAsB,EAAK,IAEjDC,GAAS,SAAAC,GAAAxrO,EAAAurO,EAAAC,GAAA,IAAAC,EAAA9sO,EAAA4sO,GAEd,SAAAA,IAAsD,IAAAG,EAAzC1xF,EAAE/1J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAAWc,EAAEh2J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAO5B,OAPqC1qJ,EAAA,KAAA88O,IAElDG,EAAAD,EAAA5qP,KAAA,OAEK+H,KAAO,YAEZ8iP,EAAK1xF,GAAKA,EACV0xF,EAAKzxF,GAAKA,EAAGyxF,CAEd,CAqEC,OArEAn+O,EAAAg+O,EAAA,EAAA/kP,IAAA,WAAA/D,MAED,SAAUnH,GAAoC,IAEvCozK,EAFoBzqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAejC,OAXW,IAAN79J,EAEJozK,EAAMhP,KAAM17J,KAAKi2J,KAIjByU,EAAMhP,KAAM17J,KAAKi2J,IAAK6S,IAAK9oK,KAAKg2J,IAChC0U,EAAMnV,eAAgBj+J,GAAI80B,IAAKpsB,KAAKg2J,KAI9B0U,CAER,GAEA,CAAAloK,IAAA,aAAA/D,MACA,SAAY8I,EAAG06O,GAEd,OAAOjiP,KAAKmiP,SAAU56O,EAAG06O,EAE1B,GAAC,CAAAz/O,IAAA,aAAA/D,MAED,SAAYnH,EAAG2qP,GAEd,IAAM57D,EAAU47D,GAAkB,IAAI9sF,GAItC,OAFAkxB,EAAQ3qB,KAAM17J,KAAKi2J,IAAK6S,IAAK9oK,KAAKg2J,IAAKn1C,YAEhCwlE,CAER,GAAC,CAAA7jL,IAAA,OAAA/D,MAED,SAAM+C,GAOL,OALA0lI,GAAA5rH,EAAAisO,EAAA3qP,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKg2J,GAAG0F,KAAMl6J,EAAOw0J,IACrBh2J,KAAKi2J,GAAGyF,KAAMl6J,EAAOy0J,IAEdj2J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAAisO,EAAA3qP,WAAA,eAAAC,KAAA,MAKV,OAHA6mC,EAAKsyH,GAAKh2J,KAAKg2J,GAAGzuE,UAClB7jD,EAAKuyH,GAAKj2J,KAAKi2J,GAAG1uE,UAEX7jD,CAER,GAAC,CAAAlhC,IAAA,WAAA/D,MAED,SAAUg+O,GAOT,OALAv1G,GAAA5rH,EAAAisO,EAAA3qP,WAAA,iBAAAC,KAAA,KAAgB4/O,GAEhBz8O,KAAKg2J,GAAG2D,UAAW8iF,EAAKzmF,IACxBh2J,KAAKi2J,GAAG0D,UAAW8iF,EAAKxmF,IAEjBj2J,IAER,KAACunP,CAAA,CAhFa,CAASxF,IAoFxBwF,GAAU3qP,UAAU+qP,aAAc,EAAK,IAEjCC,GAAU,SAAAC,GAAA7rO,EAAA4rO,EAAAC,GAAA,IAAAC,EAAAntO,EAAAitO,GAEf,SAAAA,IAAsD,IAAAG,EAAzC/xF,EAAE/1J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAW7Q,EAAEh2J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAQ5B,OARqCr8J,EAAA,KAAAm9O,IAElDG,EAAAD,EAAAjrP,KAAA,OAEK+H,KAAO,aACZmjP,EAAKC,cAAe,EAEpBD,EAAK/xF,GAAKA,EACV+xF,EAAK9xF,GAAKA,EAAG8xF,CAEd,CAsDC,OAtDAx+O,EAAAq+O,EAAA,EAAAplP,IAAA,WAAA/D,MACD,SAAUnH,GAAoC,IAEvCozK,EAFoBzqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAejC,OAXW,IAANxvK,EAEJozK,EAAMhP,KAAM17J,KAAKi2J,KAIjByU,EAAMhP,KAAM17J,KAAKi2J,IAAK6S,IAAK9oK,KAAKg2J,IAChC0U,EAAMnV,eAAgBj+J,GAAI80B,IAAKpsB,KAAKg2J,KAI9B0U,CAER,GACA,CAAAloK,IAAA,aAAA/D,MACA,SAAY8I,EAAG06O,GAEd,OAAOjiP,KAAKmiP,SAAU56O,EAAG06O,EAE1B,GAAC,CAAAz/O,IAAA,OAAA/D,MACD,SAAM+C,GAOL,OALA0lI,GAAA5rH,EAAAssO,EAAAhrP,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKg2J,GAAG0F,KAAMl6J,EAAOw0J,IACrBh2J,KAAKi2J,GAAGyF,KAAMl6J,EAAOy0J,IAEdj2J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MACD,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAAssO,EAAAhrP,WAAA,eAAAC,KAAA,MAKV,OAHA6mC,EAAKsyH,GAAKh2J,KAAKg2J,GAAGzuE,UAClB7jD,EAAKuyH,GAAKj2J,KAAKi2J,GAAG1uE,UAEX7jD,CAER,GAAC,CAAAlhC,IAAA,WAAA/D,MACD,SAAUg+O,GAOT,OALAv1G,GAAA5rH,EAAAssO,EAAAhrP,WAAA,iBAAAC,KAAA,KAAgB4/O,GAEhBz8O,KAAKg2J,GAAG2D,UAAW8iF,EAAKzmF,IACxBh2J,KAAKi2J,GAAG0D,UAAW8iF,EAAKxmF,IAEjBj2J,IAER,KAAC4nP,CAAA,CAlEc,CAAS7F,IAsEnBkG,GAAoB,SAAAC,GAAAlsO,EAAAisO,EAAAC,GAAA,IAAAC,EAAAxtO,EAAAstO,GAEzB,SAAAA,IAA0E,IAAAG,EAA7Dz7E,EAAE1sK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAAWa,EAAE/1J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAAWc,EAAEh2J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAQhD,OARyD1qJ,EAAA,KAAAw9O,IAEtEG,EAAAD,EAAAtrP,KAAA,OAEK+H,KAAO,uBAEZwjP,EAAKz7E,GAAKA,EACVy7E,EAAKpyF,GAAKA,EACVoyF,EAAKnyF,GAAKA,EAAGmyF,CAEd,CAmDC,OAnDA7+O,EAAA0+O,EAAA,EAAAzlP,IAAA,WAAA/D,MAED,SAAUnH,GAAoC,IAEvCozK,EAFoBzqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAI3BwX,EAAK3sK,KAAK2sK,GAAI3W,EAAKh2J,KAAKg2J,GAAIC,EAAKj2J,KAAKi2J,GAO5C,OALAyU,EAAMz7I,IACLi3N,GAAiB5uP,EAAGq1K,EAAGzwK,EAAG85J,EAAG95J,EAAG+5J,EAAG/5J,GACnCgqP,GAAiB5uP,EAAGq1K,EAAGtlK,EAAG2uJ,EAAG3uJ,EAAG4uJ,EAAG5uJ,IAG7BqjK,CAER,GAAC,CAAAloK,IAAA,OAAA/D,MAED,SAAM+C,GAQL,OANA0lI,GAAA5rH,EAAA2sO,EAAArrP,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK2sK,GAAGjR,KAAMl6J,EAAOmrK,IACrB3sK,KAAKg2J,GAAG0F,KAAMl6J,EAAOw0J,IACrBh2J,KAAKi2J,GAAGyF,KAAMl6J,EAAOy0J,IAEdj2J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAA2sO,EAAArrP,WAAA,eAAAC,KAAA,MAMV,OAJA6mC,EAAKipI,GAAK3sK,KAAK2sK,GAAGplF,UAClB7jD,EAAKsyH,GAAKh2J,KAAKg2J,GAAGzuE,UAClB7jD,EAAKuyH,GAAKj2J,KAAKi2J,GAAG1uE,UAEX7jD,CAER,GAAC,CAAAlhC,IAAA,WAAA/D,MAED,SAAUg+O,GAQT,OANAv1G,GAAA5rH,EAAA2sO,EAAArrP,WAAA,iBAAAC,KAAA,KAAgB4/O,GAEhBz8O,KAAK2sK,GAAGhT,UAAW8iF,EAAK9vE,IACxB3sK,KAAKg2J,GAAG2D,UAAW8iF,EAAKzmF,IACxBh2J,KAAKi2J,GAAG0D,UAAW8iF,EAAKxmF,IAEjBj2J,IAER,KAACioP,CAAA,CA/DwB,CAASlG,IAmEnCkG,GAAqBrrP,UAAUyrP,wBAAyB,EAAK,IAEvDC,GAAqB,SAAAC,GAAAvsO,EAAAssO,EAAAC,GAAA,IAAAC,EAAA7tO,EAAA2tO,GAE1B,SAAAA,IAA0E,IAAAG,EAA7D97E,EAAE1sK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAW9Q,EAAE/1J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAW7Q,EAAEh2J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAQhD,OARyDr8J,EAAA,KAAA69O,IAEtEG,EAAAD,EAAA3rP,KAAA,OAEK+H,KAAO,wBAEZ6jP,EAAK97E,GAAKA,EACV87E,EAAKzyF,GAAKA,EACVyyF,EAAKxyF,GAAKA,EAAGwyF,CAEd,CAoDC,OApDAl/O,EAAA++O,EAAA,EAAA9lP,IAAA,WAAA/D,MAED,SAAUnH,GAAoC,IAEvCozK,EAFoBzqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAI3B6F,EAAK3sK,KAAK2sK,GAAI3W,EAAKh2J,KAAKg2J,GAAIC,EAAKj2J,KAAKi2J,GAQ5C,OANAyU,EAAMz7I,IACLi3N,GAAiB5uP,EAAGq1K,EAAGzwK,EAAG85J,EAAG95J,EAAG+5J,EAAG/5J,GACnCgqP,GAAiB5uP,EAAGq1K,EAAGtlK,EAAG2uJ,EAAG3uJ,EAAG4uJ,EAAG5uJ,GACnC6+O,GAAiB5uP,EAAGq1K,EAAGrlK,EAAG0uJ,EAAG1uJ,EAAG2uJ,EAAG3uJ,IAG7BojK,CAER,GAAC,CAAAloK,IAAA,OAAA/D,MAED,SAAM+C,GAQL,OANA0lI,GAAA5rH,EAAAgtO,EAAA1rP,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK2sK,GAAGjR,KAAMl6J,EAAOmrK,IACrB3sK,KAAKg2J,GAAG0F,KAAMl6J,EAAOw0J,IACrBh2J,KAAKi2J,GAAGyF,KAAMl6J,EAAOy0J,IAEdj2J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAAgtO,EAAA1rP,WAAA,eAAAC,KAAA,MAMV,OAJA6mC,EAAKipI,GAAK3sK,KAAK2sK,GAAGplF,UAClB7jD,EAAKsyH,GAAKh2J,KAAKg2J,GAAGzuE,UAClB7jD,EAAKuyH,GAAKj2J,KAAKi2J,GAAG1uE,UAEX7jD,CAER,GAAC,CAAAlhC,IAAA,WAAA/D,MAED,SAAUg+O,GAQT,OANAv1G,GAAA5rH,EAAAgtO,EAAA1rP,WAAA,iBAAAC,KAAA,KAAgB4/O,GAEhBz8O,KAAK2sK,GAAGhT,UAAW8iF,EAAK9vE,IACxB3sK,KAAKg2J,GAAG2D,UAAW8iF,EAAKzmF,IACxBh2J,KAAKi2J,GAAG0D,UAAW8iF,EAAKxmF,IAEjBj2J,IAER,KAACsoP,CAAA,CAhEyB,CAASvG,IAoEpCuG,GAAsB1rP,UAAU8rP,yBAA0B,EAAK,IAEzDC,GAAW,SAAAC,GAAA5sO,EAAA2sO,EAAAC,GAAA,IAAAC,EAAAluO,EAAAguO,GAEhB,SAAAA,IAA2B,IAAAG,EAAd7+E,EAAMhqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAMA,OANEwK,EAAA,KAAAk+O,IAEvBG,EAAAD,EAAAhsP,KAAA,OAEK+H,KAAO,cAEZkkP,EAAK7+E,OAASA,EAAO6+E,CAEtB,CA4EC,OA5EAv/O,EAAAo/O,EAAA,EAAAnmP,IAAA,WAAA/D,MAED,SAAUnH,GAAoC,IAEvCozK,EAFoBzqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAI3B8U,EAASjqK,KAAKiqK,OACdjjK,GAAMijK,EAAOryK,OAAS,GAAMN,EAE5B0uP,EAAW/oP,KAAKwf,MAAOzV,GACvBosM,EAASpsM,EAAIg/O,EAEbn5E,EAAK5C,EAAqB,IAAb+7E,EAAiBA,EAAWA,EAAW,GACpD1uH,EAAK2yC,EAAQ+7E,GACbzuH,EAAK0yC,EAAQ+7E,EAAW/7E,EAAOryK,OAAS,EAAIqyK,EAAOryK,OAAS,EAAIouP,EAAW,GAC3E3qE,EAAKpR,EAAQ+7E,EAAW/7E,EAAOryK,OAAS,EAAIqyK,EAAOryK,OAAS,EAAIouP,EAAW,GAOjF,OALAt7E,EAAMz7I,IACLg3N,GAAY7yC,EAAQvmC,EAAG3wK,EAAGo7H,EAAGp7H,EAAGq7H,EAAGr7H,EAAGm/K,EAAGn/K,GACzC+pP,GAAY7yC,EAAQvmC,EAAGxlK,EAAGiwH,EAAGjwH,EAAGkwH,EAAGlwH,EAAGg0K,EAAGh0K,IAGnCqjK,CAER,GAAC,CAAAloK,IAAA,OAAA/D,MAED,SAAM+C,GAEL0lI,GAAA5rH,EAAAqtO,EAAA/rP,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKiqK,OAAS,GAEd,IAAM,IAAIvtK,EAAI,EAAGmK,EAAIrF,EAAOyoK,OAAOryK,OAAQ8E,EAAImK,EAAGnK,IAAO,CAExD,IAAMguK,EAAQlpK,EAAOyoK,OAAQvtK,GAE7BsD,KAAKiqK,OAAOntK,KAAM4tK,EAAMxpK,QAEzB,CAEA,OAAOlB,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAAqtO,EAAA/rP,WAAA,eAAAC,KAAA,MAEV6mC,EAAKumI,OAAS,GAEd,IAAM,IAAIvtK,EAAI,EAAGmK,EAAI7G,KAAKiqK,OAAOryK,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEtD,IAAMguK,EAAQ1qK,KAAKiqK,OAAQvtK,GAC3BgnC,EAAKumI,OAAOntK,KAAM4tK,EAAMnjF,UAEzB,CAEA,OAAO7jD,CAER,GAAC,CAAAlhC,IAAA,WAAA/D,MAED,SAAUg+O,GAETv1G,GAAA5rH,EAAAqtO,EAAA/rP,WAAA,iBAAAC,KAAA,KAAgB4/O,GAEhBz8O,KAAKiqK,OAAS,GAEd,IAAM,IAAIvtK,EAAI,EAAGmK,EAAI41O,EAAKxyE,OAAOryK,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEtD,IAAMguK,EAAQ+xE,EAAKxyE,OAAQvtK,GAC3BsD,KAAKiqK,OAAOntK,MAAM,IAAIq4J,IAAUwE,UAAW+Q,GAE5C,CAEA,OAAO1qK,IAER,KAAC2oP,CAAA,CAtFe,CAAS5G,IA0F1B4G,GAAY/rP,UAAUmsP,eAAgB,EAEtC,IAAIC,GAAsBzqP,OAAOkjB,OAAO,CACvC/G,UAAW,KACX+pO,SAAUA,GACVkB,iBAAkBA,GAClBiB,iBAAkBA,GAClBM,kBAAmBA,GACnBzD,aAAcA,GACd8D,UAAWA,GACXK,WAAYA,GACZK,qBAAsBA,GACtBK,sBAAuBA,GACvBK,YAAaA,KAQRM,GAAS,SAAAC,GAAAltO,EAAAitO,EAAAC,GAAA,IAAAC,EAAAxuO,EAAAsuO,GAEd,SAAAA,IAAc,IAAAG,EAOW,OAPX3+O,EAAA,KAAAw+O,IAEbG,EAAAD,EAAAtsP,KAAA,OAEK+H,KAAO,YAEZwkP,EAAKC,OAAS,GACdD,EAAKE,WAAY,EAAOF,CAEzB,CAmOC,OAnOA7/O,EAAA0/O,EAAA,EAAAzmP,IAAA,MAAA/D,MAED,SAAK8qP,GAEJvpP,KAAKqpP,OAAOvsP,KAAMysP,EAEnB,GAAC,CAAA/mP,IAAA,YAAA/D,MAED,WAGC,IAAM+qP,EAAaxpP,KAAKqpP,OAAQ,GAAIlH,SAAU,GACxCsH,EAAWzpP,KAAKqpP,OAAQrpP,KAAKqpP,OAAOzxP,OAAS,GAAIuqP,SAAU,GAE1DqH,EAAWh9E,OAAQi9E,IAEzBzpP,KAAKqpP,OAAOvsP,KAAM,IAAIyqP,GAAWkC,EAAUD,GAI7C,GASA,CAAAhnP,IAAA,WAAA/D,MAEA,SAAUnH,EAAG2qP,GAQZ,IANA,IAAMz7O,EAAIlP,EAAI0I,KAAK0pP,YACbC,EAAe3pP,KAAK4pP,kBACtBltP,EAAI,EAIAA,EAAIitP,EAAa/xP,QAAS,CAEjC,GAAK+xP,EAAcjtP,IAAO8J,EAAI,CAE7B,IAAMqjP,EAAOF,EAAcjtP,GAAM8J,EAC3B+iP,EAAQvpP,KAAKqpP,OAAQ3sP,GAErBotP,EAAgBP,EAAMG,YACtBniP,EAAsB,IAAlBuiP,EAAsB,EAAI,EAAID,EAAOC,EAE/C,OAAOP,EAAMlH,WAAY96O,EAAG06O,EAE7B,CAEAvlP,GAED,CAEA,OAAO,IAIR,GAIA,CAAA8F,IAAA,YAAA/D,MAEA,WAEC,IAAMsrP,EAAO/pP,KAAK4pP,kBAClB,OAAOG,EAAMA,EAAKnyP,OAAS,EAE5B,GAEA,CAAA4K,IAAA,mBAAA/D,MACA,WAECuB,KAAKs/J,aAAc,EACnBt/J,KAAKgqP,aAAe,KACpBhqP,KAAK4pP,iBAEN,GAGA,CAAApnP,IAAA,kBAAA/D,MAEA,WAIC,GAAKuB,KAAKgqP,cAAgBhqP,KAAKgqP,aAAapyP,SAAWoI,KAAKqpP,OAAOzxP,OAElE,OAAOoI,KAAKgqP,aAUb,IAHA,IAAM1H,EAAU,GACZ2H,EAAO,EAEDvtP,EAAI,EAAGmK,EAAI7G,KAAKqpP,OAAOzxP,OAAQ8E,EAAImK,EAAGnK,IAE/CutP,GAAQjqP,KAAKqpP,OAAQ3sP,GAAIgtP,YACzBpH,EAAQxlP,KAAMmtP,GAMf,OAFAjqP,KAAKgqP,aAAe1H,EAEbA,CAER,GAAC,CAAA9/O,IAAA,kBAAA/D,MAED,WAIC,IAJiC,IAAjB2jP,EAASniP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAEtBgqK,EAAS,GAELvtK,EAAI,EAAGA,GAAK0lP,EAAW1lP,IAEhCutK,EAAOntK,KAAMkD,KAAKmiP,SAAUzlP,EAAI0lP,IAUjC,OANKpiP,KAAKspP,WAETr/E,EAAOntK,KAAMmtK,EAAQ,IAIfA,CAER,GAAC,CAAAznK,IAAA,YAAA/D,MAED,WAKC,IAL2B,IAGvBiB,EAHM0iP,EAASniP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAEhBgqK,EAAS,GAGLvtK,EAAI,EAAG2sP,EAASrpP,KAAKqpP,OAAQ3sP,EAAI2sP,EAAOzxP,OAAQ8E,IAUzD,IARA,IAAM6sP,EAAQF,EAAQ3sP,GAChBgzN,EAAa65B,EAAM/E,eAA6B,EAAZpC,EACrCmH,EAAM5B,aAAe4B,EAAMvB,aAAiB,EAC7CuB,EAAMR,cAAgB3G,EAAYmH,EAAMt/E,OAAOryK,OAC9CwqP,EAEC8H,EAAMX,EAAMY,UAAWz6B,GAEnB7/M,EAAI,EAAGA,EAAIq6O,EAAItyP,OAAQiY,IAAO,CAEvC,IAAM66J,EAAQw/E,EAAKr6O,GAEdnQ,GAAQA,EAAK8sK,OAAQ9B,KAE1BT,EAAOntK,KAAM4tK,GACbhrK,EAAOgrK,EAER,CAUD,OANK1qK,KAAKspP,WAAar/E,EAAOryK,OAAS,IAAOqyK,EAAQA,EAAOryK,OAAS,GAAI40K,OAAQvC,EAAQ,KAEzFA,EAAOntK,KAAMmtK,EAAQ,IAIfA,CAER,GAAC,CAAAznK,IAAA,OAAA/D,MAED,SAAM+C,GAEL0lI,GAAA5rH,EAAA2tO,EAAArsP,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKqpP,OAAS,GAEd,IAAM,IAAI3sP,EAAI,EAAGmK,EAAIrF,EAAO6nP,OAAOzxP,OAAQ8E,EAAImK,EAAGnK,IAAO,CAExD,IAAM6sP,EAAQ/nP,EAAO6nP,OAAQ3sP,GAE7BsD,KAAKqpP,OAAOvsP,KAAMysP,EAAMroP,QAEzB,CAIA,OAFAlB,KAAKspP,UAAY9nP,EAAO8nP,UAEjBtpP,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAA2tO,EAAArsP,WAAA,eAAAC,KAAA,MAEV6mC,EAAK4lN,UAAYtpP,KAAKspP,UACtB5lN,EAAK2lN,OAAS,GAEd,IAAM,IAAI3sP,EAAI,EAAGmK,EAAI7G,KAAKqpP,OAAOzxP,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEtD,IAAM6sP,EAAQvpP,KAAKqpP,OAAQ3sP,GAC3BgnC,EAAK2lN,OAAOvsP,KAAMysP,EAAM/pF,SAEzB,CAEA,OAAO97H,CAER,GAAC,CAAAlhC,IAAA,WAAA/D,MAED,SAAUg+O,GAETv1G,GAAA5rH,EAAA2tO,EAAArsP,WAAA,iBAAAC,KAAA,KAAgB4/O,GAEhBz8O,KAAKspP,UAAY7M,EAAK6M,UACtBtpP,KAAKqpP,OAAS,GAEd,IAAM,IAAI3sP,EAAI,EAAGmK,EAAI41O,EAAK4M,OAAOzxP,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEtD,IAAM6sP,EAAQ9M,EAAK4M,OAAQ3sP,GAC3BsD,KAAKqpP,OAAOvsP,MAAM,IAAIksP,GAAQO,EAAM3kP,OAASwlP,SAAUb,GAExD,CAEA,OAAOvpP,IAER,KAACipP,CAAA,CA9Oa,CAASlH,IAkPlBsI,GAAI,SAAAC,GAAAtuO,EAAAquO,EAAAC,GAAA,IAAAC,EAAA5vO,EAAA0vO,GAET,SAAAA,EAAapgF,GAAS,IAAAugF,EAWpB,OAXoB//O,EAAA,KAAA4/O,IAErBG,EAAAD,EAAA1tP,KAAA,OACK+H,KAAO,OAEZ4lP,EAAKC,aAAe,IAAIt1F,GAEnB8U,GAEJugF,EAAKj+E,cAAetC,GAEpBugF,CAEF,CAsKC,OAtKAjhP,EAAA8gP,EAAA,EAAA7nP,IAAA,gBAAA/D,MAED,SAAewrK,GAEdjqK,KAAK0qP,OAAQzgF,EAAQ,GAAI/tK,EAAG+tK,EAAQ,GAAI5iK,GAExC,IAAM,IAAI3K,EAAI,EAAGmK,EAAIojK,EAAOryK,OAAQ8E,EAAImK,EAAGnK,IAE1CsD,KAAK2qP,OAAQ1gF,EAAQvtK,GAAIR,EAAG+tK,EAAQvtK,GAAI2K,GAIzC,OAAOrH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQvC,EAAGmL,GAIV,OAFArH,KAAKyqP,aAAax7N,IAAK/yB,EAAGmL,GAEnBrH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQvC,EAAGmL,GAEV,IAAMkiP,EAAQ,IAAIhC,GAAWvnP,KAAKyqP,aAAavpP,QAAS,IAAIi0J,GAASj5J,EAAGmL,IAKxE,OAJArH,KAAKqpP,OAAOvsP,KAAMysP,GAElBvpP,KAAKyqP,aAAax7N,IAAK/yB,EAAGmL,GAEnBrH,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBmsP,EAAMC,EAAMhH,EAAIC,GAEjC,IAAMyF,EAAQ,IAAItB,GACjBjoP,KAAKyqP,aAAavpP,QAClB,IAAIi0J,GAASy1F,EAAMC,GACnB,IAAI11F,GAAS0uF,EAAIC,IAOlB,OAJA9jP,KAAKqpP,OAAOvsP,KAAMysP,GAElBvpP,KAAKyqP,aAAax7N,IAAK40N,EAAIC,GAEpB9jP,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeqsP,EAAOC,EAAOC,EAAOC,EAAOpH,EAAIC,GAE9C,IAAMyF,EAAQ,IAAI3C,GACjB5mP,KAAKyqP,aAAavpP,QAClB,IAAIi0J,GAAS21F,EAAOC,GACpB,IAAI51F,GAAS61F,EAAOC,GACpB,IAAI91F,GAAS0uF,EAAIC,IAOlB,OAJA9jP,KAAKqpP,OAAOvsP,KAAMysP,GAElBvpP,KAAKyqP,aAAax7N,IAAK40N,EAAIC,GAEpB9jP,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYyrP,GAEX,IAAMgB,EAAO,CAAElrP,KAAKyqP,aAAavpP,SAAUO,OAAQyoP,GAE7CX,EAAQ,IAAIZ,GAAauC,GAK/B,OAJAlrP,KAAKqpP,OAAOvsP,KAAMysP,GAElBvpP,KAAKyqP,aAAa/uF,KAAMwuF,EAAKA,EAAItyP,OAAS,IAEnCoI,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAKolP,EAAIC,EAAIc,EAASX,EAAaC,EAAWC,GAE7C,IAAMj+E,EAAKlmK,KAAKyqP,aAAavuP,EACvBiqK,EAAKnmK,KAAKyqP,aAAapjP,EAK7B,OAHArH,KAAKmrP,OAAQtH,EAAK39E,EAAI49E,EAAK39E,EAAIy+E,EAC9BX,EAAaC,EAAWC,GAElBnkP,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQolP,EAAIC,EAAIc,EAASX,EAAaC,EAAWC,GAIhD,OAFAnkP,KAAKorP,WAAYvH,EAAIC,EAAIc,EAASA,EAASX,EAAaC,EAAWC,GAE5DnkP,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASolP,EAAIC,EAAIC,EAASC,EAASC,EAAaC,EAAWC,EAAYC,GAEtE,IAAMl+E,EAAKlmK,KAAKyqP,aAAavuP,EACvBiqK,EAAKnmK,KAAKyqP,aAAapjP,EAI7B,OAFArH,KAAKorP,WAAYvH,EAAK39E,EAAI49E,EAAK39E,EAAI49E,EAASC,EAASC,EAAaC,EAAWC,EAAYC,GAElFpkP,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYolP,EAAIC,EAAIC,EAASC,EAASC,EAAaC,EAAWC,EAAYC,GAEzE,IAAMmF,EAAQ,IAAI9F,GAAcI,EAAIC,EAAIC,EAASC,EAASC,EAAaC,EAAWC,EAAYC,GAE9F,GAAKpkP,KAAKqpP,OAAOzxP,OAAS,EAAI,CAG7B,IAAMyzP,EAAa9B,EAAMpH,SAAU,GAE5BkJ,EAAW7+E,OAAQxsK,KAAKyqP,eAE9BzqP,KAAK2qP,OAAQU,EAAWnvP,EAAGmvP,EAAWhkP,EAIxC,CAEArH,KAAKqpP,OAAOvsP,KAAMysP,GAElB,IAAM+B,EAAY/B,EAAMpH,SAAU,GAGlC,OAFAniP,KAAKyqP,aAAa/uF,KAAM4vF,GAEjBtrP,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAA+uO,EAAAztP,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKyqP,aAAa/uF,KAAMl6J,EAAOipP,cAExBzqP,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAA+uO,EAAAztP,WAAA,eAAAC,KAAA,MAIV,OAFA6mC,EAAK+mN,aAAezqP,KAAKyqP,aAAaljK,UAE/B7jD,CAER,GAAC,CAAAlhC,IAAA,WAAA/D,MAED,SAAUg+O,GAMT,OAJAv1G,GAAA5rH,EAAA+uO,EAAAztP,WAAA,iBAAAC,KAAA,KAAgB4/O,GAEhBz8O,KAAKyqP,aAAa9wF,UAAW8iF,EAAKgO,cAE3BzqP,IAER,KAACqqP,CAAA,CArLQ,CAASpB,IAyLbsC,GAAa,SAAAC,GAAAxvO,EAAAuvO,EAAAC,GAAA,IAAAC,EAAA9wO,EAAA4wO,GAElB,SAAAA,IAAwJ,IAAAG,EAA3IzhF,EAAMhqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAE,IAAIk1J,GAAS,EAAG,IAAO,IAAIA,GAAS,GAAK,GAAK,IAAIA,GAAS,GAAK,KAASr6D,EAAQ76F,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI0rP,EAAQ1rP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG2rP,EAAS3rP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAa,EAAVhD,KAAK00J,GAAMlnJ,EAAA,KAAA8gP,IAEpJG,EAAAD,EAAA5uP,KAAA,OAEK+H,KAAO,gBAEZ8mP,EAAKlzE,WAAa,CACjBvO,OAAQA,EACRnvE,SAAUA,EACV6wJ,SAAUA,EACVC,UAAWA,GAGZ9wJ,EAAW79F,KAAKwf,MAAOq+E,GAIvB8wJ,EAAY15F,GAAO05F,EAAW,EAAa,EAAV3uP,KAAK00J,IAuBtC,IAnBA,IAAMw1B,EAAU,GACV8F,EAAW,GACX3F,EAAM,GACNukE,EAAc,GACdxkE,EAAU,GAIVykE,EAAkB,EAAMhxJ,EACxB4zH,EAAS,IAAI5nD,GACbrH,EAAK,IAAItK,GACT4T,EAAS,IAAIjC,GACbilF,EAAY,IAAIjlF,GAChBklF,EAAa,IAAIllF,GACnBx4B,EAAK,EACLD,EAAK,EAICx+H,EAAI,EAAGA,GAAOo6J,EAAOryK,OAAS,EAAKiY,IAE5C,OAASA,GAER,KAAK,EAEJy+H,EAAK27B,EAAQp6J,EAAI,GAAI3T,EAAI+tK,EAAQp6J,GAAI3T,EACrCmyI,EAAK47B,EAAQp6J,EAAI,GAAIxI,EAAI4iK,EAAQp6J,GAAIxI,EAErC0hK,EAAO7sK,EAAS,EAALmyI,EACX06B,EAAO1hK,GAAMinI,EACby6B,EAAOzhK,EAAS,EAAL+mI,EAEX29G,EAAWtwF,KAAMqN,GAEjBA,EAAOloD,YAEPgrI,EAAY/uP,KAAMisK,EAAO7sK,EAAG6sK,EAAO1hK,EAAG0hK,EAAOzhK,GAE7C,MAED,KAAO2iK,EAAOryK,OAAS,EAEtBi0P,EAAY/uP,KAAMkvP,EAAW9vP,EAAG8vP,EAAW3kP,EAAG2kP,EAAW1kP,GAEzD,MAED,QAECgnI,EAAK27B,EAAQp6J,EAAI,GAAI3T,EAAI+tK,EAAQp6J,GAAI3T,EACrCmyI,EAAK47B,EAAQp6J,EAAI,GAAIxI,EAAI4iK,EAAQp6J,GAAIxI,EAErC0hK,EAAO7sK,EAAS,EAALmyI,EACX06B,EAAO1hK,GAAMinI,EACby6B,EAAOzhK,EAAS,EAAL+mI,EAEX09G,EAAUrwF,KAAMqN,GAEhBA,EAAO7sK,GAAK8vP,EAAW9vP,EACvB6sK,EAAO1hK,GAAK2kP,EAAW3kP,EACvB0hK,EAAOzhK,GAAK0kP,EAAW1kP,EAEvByhK,EAAOloD,YAEPgrI,EAAY/uP,KAAMisK,EAAO7sK,EAAG6sK,EAAO1hK,EAAG0hK,EAAOzhK,GAE7C0kP,EAAWtwF,KAAMqwF,GAQpB,IAAM,IAAIrvP,EAAI,EAAGA,GAAKo+F,EAAUp+F,IAO/B,IALA,IAAMysK,EAAMwiF,EAAWjvP,EAAIovP,EAAkBF,EAEvCx3F,EAAMn3J,KAAKm3J,IAAK+U,GAChBhV,EAAMl3J,KAAKk3J,IAAKgV,GAEZt5J,EAAI,EAAGA,GAAOo6J,EAAOryK,OAAS,EAAKiY,IAAO,CAInD6+M,EAAOxyN,EAAI+tK,EAAQp6J,GAAI3T,EAAIk4J,EAC3Bs6D,EAAOrnN,EAAI4iK,EAAQp6J,GAAIxI,EACvBqnN,EAAOpnN,EAAI2iK,EAAQp6J,GAAI3T,EAAIi4J,EAE3B84B,EAASnwL,KAAM4xN,EAAOxyN,EAAGwyN,EAAOrnN,EAAGqnN,EAAOpnN,GAI1Cm4J,EAAGvjK,EAAIQ,EAAIo+F,EACX2kE,EAAGp4J,EAAIwI,GAAMo6J,EAAOryK,OAAS,GAE7B0vL,EAAIxqL,KAAM2iK,EAAGvjK,EAAGujK,EAAGp4J,GAInB,IAAMnL,EAAI2vP,EAAa,EAAIh8O,EAAI,GAAMukJ,EAC/B/sJ,EAAIwkP,EAAa,EAAIh8O,EAAI,GACzBvI,EAAIukP,EAAa,EAAIh8O,EAAI,GAAMskJ,EAErCkzB,EAAQvqL,KAAMZ,EAAGmL,EAAGC,EAErB,CAMD,IAAM,IAAI5K,EAAI,EAAGA,EAAIo+F,EAAUp+F,IAE9B,IAAM,IAAImT,EAAI,EAAGA,EAAMo6J,EAAOryK,OAAS,EAAKiY,IAAO,CAElD,IAAMimB,EAAOjmB,EAAInT,EAAIutK,EAAOryK,OAEtBoE,EAAI85B,EACJvvB,EAAIuvB,EAAOm0I,EAAOryK,OAClBqE,EAAI65B,EAAOm0I,EAAOryK,OAAS,EAC3B4O,EAAIsvB,EAAO,EAIjBqxJ,EAAQrqL,KAAMd,EAAGuK,EAAGC,GACpB2gL,EAAQrqL,KAAMb,EAAGuK,EAAGD,EAErB,CASuE,OAHxEmlP,EAAK1hE,SAAU7C,GACfukE,EAAK54O,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACrEy+D,EAAK54O,aAAc,KAAM,IAAI+xK,GAAwByC,EAAK,IAC1DokE,EAAK54O,aAAc,SAAU,IAAI+xK,GAAwBwC,EAAS,IAAMqkE,CAEzE,CAMC,OANAniP,EAAAgiP,EAAA,OAAA/oP,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAI6nN,EAAe7nN,EAAKumI,OAAQvmI,EAAKo3D,SAAUp3D,EAAKioN,SAAUjoN,EAAKkoN,UAE3E,KAACL,CAAA,CAvKiB,CAAS7lE,IA2KtBumE,GAAe,SAAAC,GAAAlwO,EAAAiwO,EAAAC,GAAA,IAAAC,EAAAxxO,EAAAsxO,GAEpB,SAAAA,IAA2E,IAAAG,EAA9DljF,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGrI,EAAMqI,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGosP,EAAWpsP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqsP,EAAcrsP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAwhP,GAEvE,IAAM/0J,EAAO,IAAImzJ,GAaf,OAZFnzJ,EAAKi0J,OAAQ,GAAKvzP,EAAS,EAAGsxK,EAAkB,IAAVjsK,KAAK00J,GAAU,GACrDz6D,EAAKi0J,OAAQ,EAAGvzP,EAAS,EAAGsxK,EAAQ,EAAa,GAAVjsK,KAAK00J,KAE5Cy6F,EAAAD,EAAAtvP,KAAA,KAAOq6F,EAAKizJ,UAAWkC,GAAeC,IAEjC1nP,KAAO,kBAEZwnP,EAAK5zE,WAAa,CACjBtP,OAAQA,EACR96J,OAAQxW,EACRy0P,YAAaA,EACbC,eAAgBA,GACfF,CAEH,CAMC,OANA7iP,EAAA0iP,EAAA,OAAAzpP,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAIuoN,EAAiBvoN,EAAKwlI,OAAQxlI,EAAK9rC,OAAQ8rC,EAAK2oN,YAAa3oN,EAAK4oN,eAE9E,KAACL,CAAA,CAzBmB,CAASV,IA6BxBgB,GAAc,SAAAC,GAAAxwO,EAAAuwO,EAAAC,GAAA,IAAAC,EAAA9xO,EAAA4xO,GAEnB,SAAAA,IAAmF,IAAAG,EAAtExjF,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG66F,EAAQ76F,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG0sP,EAAU1sP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG2sP,EAAW3sP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAa,EAAVhD,KAAK00J,GAAMlnJ,EAAA,KAAA8hP,IAE/EG,EAAAD,EAAA5vP,KAAA,OAEK+H,KAAO,iBAEZ8nP,EAAKl0E,WAAa,CACjBtP,OAAQA,EACRpuE,SAAUA,EACV6xJ,WAAYA,EACZC,YAAaA,GAGd9xJ,EAAW79F,KAAKC,IAAK,EAAG49F,GAIxB,IAAMqsF,EAAU,GACV8F,EAAW,GACX5F,EAAU,GACVC,EAAM,GAINonC,EAAS,IAAI5nD,GACbrH,EAAK,IAAItK,GAIf83B,EAASnwL,KAAM,EAAG,EAAG,GACrBuqL,EAAQvqL,KAAM,EAAG,EAAG,GACpBwqL,EAAIxqL,KAAM,GAAK,IAEf,IAAM,IAAIrB,EAAI,EAAGiB,EAAI,EAAGjB,GAAKq/F,EAAUr/F,IAAMiB,GAAK,EAAI,CAErD,IAAMk/F,EAAU+wJ,EAAalxP,EAAIq/F,EAAW8xJ,EAI5Cl+B,EAAOxyN,EAAIgtK,EAASjsK,KAAKk3J,IAAKv4D,GAC9B8yH,EAAOrnN,EAAI6hK,EAASjsK,KAAKm3J,IAAKx4D,GAE9BqxF,EAASnwL,KAAM4xN,EAAOxyN,EAAGwyN,EAAOrnN,EAAGqnN,EAAOpnN,GAI1C+/K,EAAQvqL,KAAM,EAAG,EAAG,GAIpB2iK,EAAGvjK,GAAM+wL,EAAUvwL,GAAMwsK,EAAS,GAAM,EACxCzJ,EAAGp4J,GAAM4lL,EAAUvwL,EAAI,GAAMwsK,EAAS,GAAM,EAE5Coe,EAAIxqL,KAAM2iK,EAAGvjK,EAAGujK,EAAGp4J,EAEpB,CAIA,IAAM,IAAI3K,EAAI,EAAGA,GAAKo+F,EAAUp+F,IAE/ByqL,EAAQrqL,KAAMJ,EAAGA,EAAI,EAAG,GASuC,OAHhEgwP,EAAK1iE,SAAU7C,GACfulE,EAAK55O,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACrEy/D,EAAK55O,aAAc,SAAU,IAAI+xK,GAAwBwC,EAAS,IAClEqlE,EAAK55O,aAAc,KAAM,IAAI+xK,GAAwByC,EAAK,IAAMolE,CAEjE,CAMC,OANAnjP,EAAAgjP,EAAA,OAAA/pP,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAI6oN,EAAgB7oN,EAAKwlI,OAAQxlI,EAAKo3D,SAAUp3D,EAAKipN,WAAYjpN,EAAKkpN,YAE9E,KAACL,CAAA,CAhFkB,CAAS7mE,IAoFvBmnE,GAAgB,SAAAC,GAAA9wO,EAAA6wO,EAAAC,GAAA,IAAAC,EAAApyO,EAAAkyO,GAErB,SAAAA,IAAiK,IAAAG,EAApJC,EAAShtP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGitP,EAAYjtP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqsP,EAAcrsP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG6sL,EAAc7sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGktP,EAASltP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAAU0sP,EAAU1sP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG2sP,EAAW3sP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAa,EAAVhD,KAAK00J,GAAMlnJ,EAAA,KAAAoiP,IAE7JG,EAAAD,EAAAlwP,KAAA,OACK+H,KAAO,mBAEZooP,EAAKx0E,WAAa,CACjBy0E,UAAWA,EACXC,aAAcA,EACd9+O,OAAQA,EACRk+O,eAAgBA,EAChBx/D,eAAgBA,EAChBqgE,UAAWA,EACXR,WAAYA,EACZC,YAAaA,GAGd,IAAM5/D,EAAKxxK,EAAAwxO,GAEXV,EAAiBrvP,KAAKwf,MAAO6vO,GAC7Bx/D,EAAiB7vL,KAAKwf,MAAOqwK,GAI7B,IAAM3F,EAAU,GACV8F,EAAW,GACX5F,EAAU,GACVC,EAAM,GAIR14K,EAAQ,EACNw+O,EAAa,GACb3iC,EAAar8M,EAAS,EACxB++K,EAAa,EAmHjB,SAASkgE,EAAanhN,GAiBrB,IAdA,IAAMohN,EAAmB1+O,EAEnB6wJ,EAAK,IAAItK,GACTu5D,EAAS,IAAI5nD,GAEfmnB,EAAa,EAEX/kB,GAAmB,IAARh9H,EAAiB+gN,EAAYC,EACxC98E,GAAiB,IAARlkI,EAAiB,GAAM,EAM5BhwC,EAAI,EAAGA,GAAKowP,EAAgBpwP,IAIrC+wL,EAASnwL,KAAM,EAAG2tN,EAAar6C,EAAM,GAIrCiX,EAAQvqL,KAAM,EAAGszK,EAAM,GAIvBkX,EAAIxqL,KAAM,GAAK,IAIf8R,IASD,IAJA,IAAM2+O,EAAiB3+O,EAIb1S,EAAI,EAAGA,GAAKowP,EAAgBpwP,IAAO,CAE5C,IACMu9J,EADIv9J,EAAIowP,EACIM,EAAcD,EAE1Ba,EAAWvwP,KAAKk3J,IAAKsF,GACrBg0F,EAAWxwP,KAAKm3J,IAAKqF,GAI3Bi1D,EAAOxyN,EAAIgtK,EAASukF,EACpB/+B,EAAOrnN,EAAIojN,EAAar6C,EACxBs+C,EAAOpnN,EAAI4hK,EAASskF,EACpBvgE,EAASnwL,KAAM4xN,EAAOxyN,EAAGwyN,EAAOrnN,EAAGqnN,EAAOpnN,GAI1C+/K,EAAQvqL,KAAM,EAAGszK,EAAM,GAIvB3Q,EAAGvjK,EAAiB,GAAXsxP,EAAmB,GAC5B/tF,EAAGp4J,EAAiB,GAAXomP,EAAiBr9E,EAAS,GACnCkX,EAAIxqL,KAAM2iK,EAAGvjK,EAAGujK,EAAGp4J,GAInBuH,GAED,CAIA,IAAM,IAAI1S,EAAI,EAAGA,EAAIowP,EAAgBpwP,IAAO,CAE3C,IAAMD,EAAIqxP,EAAmBpxP,EACvBQ,EAAI6wP,EAAiBrxP,GAEd,IAARgwC,EAIJi7I,EAAQrqL,KAAMJ,EAAGA,EAAI,EAAGT,GAMxBkrL,EAAQrqL,KAAMJ,EAAI,EAAGA,EAAGT,GAIzBgyL,GAAc,CAEf,CAIAjB,EAAMnD,SAAUsD,EAAYc,GAAoB,IAAR/hJ,EAAe,EAAI,GAI3DihJ,GAAcc,CAEf,CAAC,OAzMD,WAYC,IAVA,IAAMllB,EAAS,IAAIjC,GACb4nD,EAAS,IAAI5nD,GAEfmnB,EAAa,EAGXy/D,GAAUR,EAAeD,GAAc7+O,EAInC/G,EAAI,EAAGA,GAAKylL,EAAgBzlL,IAAO,CAU5C,IARA,IAAMsmP,EAAW,GAEXxmP,EAAIE,EAAIylL,EAIR5jB,EAAS/hK,GAAM+lP,EAAeD,GAAcA,EAExC/wP,EAAI,EAAGA,GAAKowP,EAAgBpwP,IAAO,CAE5C,IAAMqL,EAAIrL,EAAIowP,EAER7yF,EAAQlyJ,EAAIqlP,EAAcD,EAE1Bc,EAAWxwP,KAAKm3J,IAAKqF,GACrB+zF,EAAWvwP,KAAKk3J,IAAKsF,GAI3Bi1D,EAAOxyN,EAAIgtK,EAASukF,EACpB/+B,EAAOrnN,GAAMF,EAAIiH,EAASq8M,EAC1BiE,EAAOpnN,EAAI4hK,EAASskF,EACpBvgE,EAASnwL,KAAM4xN,EAAOxyN,EAAGwyN,EAAOrnN,EAAGqnN,EAAOpnN,GAI1CyhK,EAAO95I,IAAKw+N,EAAUC,EAAOF,GAAW3sI,YACxCwmE,EAAQvqL,KAAMisK,EAAO7sK,EAAG6sK,EAAO1hK,EAAG0hK,EAAOzhK,GAIzCggL,EAAIxqL,KAAMyK,EAAG,EAAIJ,GAIjBwmP,EAAS7wP,KAAM8R,IAEhB,CAIAw+O,EAAWtwP,KAAM6wP,EAElB,CAIA,IAAM,IAAIzxP,EAAI,EAAGA,EAAIowP,EAAgBpwP,IAEpC,IAAM,IAAImL,EAAI,EAAGA,EAAIylL,EAAgBzlL,IAAO,CAI3C,IAAMrL,EAAIoxP,EAAY/lP,GAAKnL,GACrBqK,EAAI6mP,EAAY/lP,EAAI,GAAKnL,GACzBD,EAAImxP,EAAY/lP,EAAI,GAAKnL,EAAI,GAC7BsK,EAAI4mP,EAAY/lP,GAAKnL,EAAI,GAI/BirL,EAAQrqL,KAAMd,EAAGuK,EAAGC,GACpB2gL,EAAQrqL,KAAMyJ,EAAGtK,EAAGuK,GAIpBynL,GAAc,CAEf,CAMDjB,EAAMnD,SAAUsD,EAAYc,EAAY,GAIxCd,GAAcc,CAEf,CA7GA2/D,IAEmB,IAAdT,IAECF,EAAY,GAAII,GAAa,GAC7BH,EAAe,GAAIG,GAAa,IAMtCL,EAAKhjE,SAAU7C,GACf6lE,EAAKl6O,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACrE+/D,EAAKl6O,aAAc,SAAU,IAAI+xK,GAAwBwC,EAAS,IAClE2lE,EAAKl6O,aAAc,KAAM,IAAI+xK,GAAwByC,EAAK,IA2MzD0lE,CAEF,CAMC,OANAzjP,EAAAsjP,EAAA,OAAArqP,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAImpN,EAAkBnpN,EAAKupN,UAAWvpN,EAAKwpN,aAAcxpN,EAAKt1B,OAAQs1B,EAAK4oN,eAAgB5oN,EAAKopJ,eAAgBppJ,EAAKypN,UAAWzpN,EAAKipN,WAAYjpN,EAAKkpN,YAE9J,KAACC,CAAA,CAxQoB,CAASnnE,IA4QzBmoE,GAAY,SAAAC,GAAA9xO,EAAA6xO,EAAAC,GAAA,IAAAC,EAAApzO,EAAAkzO,GAEjB,SAAAA,IAA4I,IAAAG,EAA/H9kF,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqsP,EAAcrsP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG6sL,EAAc7sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGktP,EAASltP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAAU0sP,EAAU1sP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG2sP,EAAW3sP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAa,EAAVhD,KAAK00J,GAchI,OAdsIlnJ,EAAA,KAAAojP,IAExIG,EAAAD,EAAAlxP,KAAA,KAAO,EAAGqsK,EAAQ96J,EAAQk+O,EAAgBx/D,EAAgBqgE,EAAWR,EAAYC,IAE5EhoP,KAAO,eAEZopP,EAAKx1E,WAAa,CACjBtP,OAAQA,EACR96J,OAAQA,EACRk+O,eAAgBA,EAChBx/D,eAAgBA,EAChBqgE,UAAWA,EACXR,WAAYA,EACZC,YAAaA,GACZoB,CAEH,CAMC,OANAzkP,EAAAskP,EAAA,OAAArrP,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAImqN,EAAcnqN,EAAKwlI,OAAQxlI,EAAKt1B,OAAQs1B,EAAK4oN,eAAgB5oN,EAAKopJ,eAAgBppJ,EAAKypN,UAAWzpN,EAAKipN,WAAYjpN,EAAKkpN,YAEpI,KAACiB,CAAA,CAxBgB,CAAShB,IA4BrBoB,GAAkB,SAAAC,GAAAlyO,EAAAiyO,EAAAC,GAAA,IAAAC,EAAAxzO,EAAAszO,GAEvB,SAAAA,IAAmE,IAAAG,EAAtDnhE,EAAQhtL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAIknL,EAAOlnL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAIipK,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGuhC,EAAMvhC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAwjP,IAE/DG,EAAAD,EAAAtxP,KAAA,OAEK+H,KAAO,qBAEZwpP,EAAK51E,WAAa,CACjByU,SAAUA,EACV9F,QAASA,EACTje,OAAQA,EACR1nI,OAAQA,GAKT,IAAM6sN,EAAe,GACfC,EAAW,GAwDjB,SAASC,EAAevyP,EAAGuK,EAAGtK,EAAGulC,GAUhC,IARA,IAAMgtN,EAAOhtN,EAAS,EAIhBr6B,EAAI,GAIAzK,EAAI,EAAGA,GAAK8xP,EAAM9xP,IAAO,CAElCyK,EAAGzK,GAAM,GAOT,IALA,IAAMwlD,EAAKlmD,EAAEkF,QAAQkxJ,KAAMn2J,EAAGS,EAAI8xP,GAC5BrsM,EAAK57C,EAAErF,QAAQkxJ,KAAMn2J,EAAGS,EAAI8xP,GAE5BC,EAAOD,EAAO9xP,EAEVmT,EAAI,EAAGA,GAAK4+O,EAAM5+O,IAI1B1I,EAAGzK,GAAKmT,GAFE,IAANA,GAAWnT,IAAM8xP,EAEPtsM,EAIAA,EAAGhhD,QAAQkxJ,KAAMjwG,EAAItyC,EAAI4+O,EAM1C,CAIA,IAAM,IAAI/xP,EAAI,EAAGA,EAAI8xP,EAAM9xP,IAE1B,IAAM,IAAImT,EAAI,EAAGA,EAAI,GAAM2+O,EAAO9xP,GAAM,EAAGmT,IAAO,CAEjD,IAAMjJ,EAAI3J,KAAKwf,MAAO5M,EAAI,GAErBA,EAAI,IAAM,GAEd6+O,EAAYvnP,EAAGzK,GAAKkK,EAAI,IACxB8nP,EAAYvnP,EAAGzK,EAAI,GAAKkK,IACxB8nP,EAAYvnP,EAAGzK,GAAKkK,MAIpB8nP,EAAYvnP,EAAGzK,GAAKkK,EAAI,IACxB8nP,EAAYvnP,EAAGzK,EAAI,GAAKkK,EAAI,IAC5B8nP,EAAYvnP,EAAGzK,EAAI,GAAKkK,IAI1B,CAIF,CA2EA,SAAS8nP,EAAYhgC,GAEpB2/B,EAAavxP,KAAM4xN,EAAOxyN,EAAGwyN,EAAOrnN,EAAGqnN,EAAOpnN,EAE/C,CAEA,SAASqnP,EAAkB//O,EAAO8/M,GAEjC,IAAMjlC,EAAiB,EAAR76K,EAEf8/M,EAAOxyN,EAAI+wL,EAAUxD,EAAS,GAC9BilC,EAAOrnN,EAAI4lL,EAAUxD,EAAS,GAC9BilC,EAAOpnN,EAAI2lL,EAAUxD,EAAS,EAE/B,CAoCA,SAASmlE,EAAWnvF,EAAIgqB,EAAQ9e,EAAQkkF,GAEhCA,EAAU,GAAkB,IAATpvF,EAAGvjK,IAE5BoyP,EAAU7kE,GAAWhqB,EAAGvjK,EAAI,GAIT,IAAbyuK,EAAOzuK,GAA4B,IAAbyuK,EAAOrjK,IAEnCgnP,EAAU7kE,GAAWolE,EAAU,EAAI5xP,KAAK00J,GAAK,GAI/C,CAIA,SAASk9F,EAASlkF,GAEjB,OAAO1tK,KAAK44J,MAAO8U,EAAOrjK,GAAKqjK,EAAOzuK,EAEvC,CASC,OAjPD,SAAoBslC,GAQnB,IANA,IAAMxlC,EAAI,IAAI8qK,GACRvgK,EAAI,IAAIugK,GACR7qK,EAAI,IAAI6qK,GAIJpqK,EAAI,EAAGA,EAAIyqL,EAAQvvL,OAAQ8E,GAAK,EAIzCiyP,EAAkBxnE,EAASzqL,EAAI,GAAKV,GACpC2yP,EAAkBxnE,EAASzqL,EAAI,GAAK6J,GACpCooP,EAAkBxnE,EAASzqL,EAAI,GAAKT,GAIpCsyP,EAAevyP,EAAGuK,EAAGtK,EAAGulC,EAI1B,CAlDAstN,CAAWttN,GAmHX,SAAsB0nI,GAMrB,IAJA,IAAMwlD,EAAS,IAAI5nD,GAITpqK,EAAI,EAAGA,EAAI2xP,EAAaz2P,OAAQ8E,GAAK,EAE9CgyN,EAAOxyN,EAAImyP,EAAc3xP,EAAI,GAC7BgyN,EAAOrnN,EAAIgnP,EAAc3xP,EAAI,GAC7BgyN,EAAOpnN,EAAI+mP,EAAc3xP,EAAI,GAE7BgyN,EAAO7tG,YAAY00C,eAAgB2T,GAEnCmlF,EAAc3xP,EAAI,GAAMgyN,EAAOxyN,EAC/BmyP,EAAc3xP,EAAI,GAAMgyN,EAAOrnN,EAC/BgnP,EAAc3xP,EAAI,GAAMgyN,EAAOpnN,CAIjC,CAnIAynP,CAAa7lF,GAqIb,WAIC,IAFA,IAAMwlD,EAAS,IAAI5nD,GAETpqK,EAAI,EAAGA,EAAI2xP,EAAaz2P,OAAQ8E,GAAK,EAAI,CAElDgyN,EAAOxyN,EAAImyP,EAAc3xP,EAAI,GAC7BgyN,EAAOrnN,EAAIgnP,EAAc3xP,EAAI,GAC7BgyN,EAAOpnN,EAAI+mP,EAAc3xP,EAAI,GAE7B,IAAM6K,EAAIsnP,EAASngC,GAAW,EAAIzxN,KAAK00J,GAAK,GACtCxqJ,GAqHcwjK,EArHG+jD,EAuHjBzxN,KAAK44J,OAAS8U,EAAOtjK,EAAGpK,KAAK04J,KAAQgV,EAAOzuK,EAAIyuK,EAAOzuK,EAAQyuK,EAAOrjK,EAAIqjK,EAAOrjK,IAvHrDrK,KAAK00J,GAAK,IAC5C28F,EAASxxP,KAAMyK,EAAG,EAAIJ,EAEvB,CAkHD,IAAsBwjK,GA7DtB,WAYC,IAVA,IAAM3uK,EAAI,IAAI8qK,GACRvgK,EAAI,IAAIugK,GACR7qK,EAAI,IAAI6qK,GAERkoF,EAAW,IAAIloF,GAEfghB,EAAM,IAAI3yB,GACV4yB,EAAM,IAAI5yB,GACV6yB,EAAM,IAAI7yB,GAENz4J,EAAI,EAAGmT,EAAI,EAAGnT,EAAI2xP,EAAaz2P,OAAQ8E,GAAK,EAAGmT,GAAK,EAAI,CAEjE7T,EAAEizB,IAAKo/N,EAAc3xP,EAAI,GAAK2xP,EAAc3xP,EAAI,GAAK2xP,EAAc3xP,EAAI,IACvE6J,EAAE0oB,IAAKo/N,EAAc3xP,EAAI,GAAK2xP,EAAc3xP,EAAI,GAAK2xP,EAAc3xP,EAAI,IACvET,EAAEgzB,IAAKo/N,EAAc3xP,EAAI,GAAK2xP,EAAc3xP,EAAI,GAAK2xP,EAAc3xP,EAAI,IAEvEorL,EAAI74J,IAAKq/N,EAAUz+O,EAAI,GAAKy+O,EAAUz+O,EAAI,IAC1Ck4K,EAAI94J,IAAKq/N,EAAUz+O,EAAI,GAAKy+O,EAAUz+O,EAAI,IAC1Cm4K,EAAI/4J,IAAKq/N,EAAUz+O,EAAI,GAAKy+O,EAAUz+O,EAAI,IAE1Cm/O,EAAStzF,KAAM1/J,GAAIowB,IAAK7lB,GAAI6lB,IAAKnwB,GAAIy5J,aAAc,GAEnD,IAAMu5F,EAAMJ,EAASG,GAErBJ,EAAW9mE,EAAKj4K,EAAI,EAAG7T,EAAGizP,GAC1BL,EAAW7mE,EAAKl4K,EAAI,EAAGtJ,EAAG0oP,GAC1BL,EAAW5mE,EAAKn4K,EAAI,EAAG5T,EAAGgzP,EAE3B,CAED,EAnFCC,GAMD,WAIC,IAAM,IAAIxyP,EAAI,EAAGA,EAAI4xP,EAAS12P,OAAQ8E,GAAK,EAAI,CAI9C,IAAMwpK,EAAKooF,EAAU5xP,EAAI,GACnB4pK,EAAKgoF,EAAU5xP,EAAI,GACnBu2K,EAAKq7E,EAAU5xP,EAAI,GAEnBQ,EAAMD,KAAKC,IAAKgpK,EAAII,EAAI2M,GACxB/nI,EAAMjuC,KAAKiuC,IAAKg7H,EAAII,EAAI2M,GAIzB/1K,EAAM,IAAOguC,EAAM,KAElBg7H,EAAK,KAAMooF,EAAU5xP,EAAI,IAAO,GAChC4pK,EAAK,KAAMgoF,EAAU5xP,EAAI,IAAO,GAChCu2K,EAAK,KAAMq7E,EAAU5xP,EAAI,IAAO,GAIvC,CAED,CA/BCyyP,EAED,CArJAC,GAIAhB,EAAKt7O,aAAc,WAAY,IAAI+xK,GAAwBwpE,EAAc,IACzED,EAAKt7O,aAAc,SAAU,IAAI+xK,GAAwBwpE,EAAaz9O,QAAS,IAC/Ew9O,EAAKt7O,aAAc,KAAM,IAAI+xK,GAAwBypE,EAAU,IAE/C,IAAX9sN,EAEJ4sN,EAAKiB,uBAILjB,EAAKplE,mBAuPLolE,CAEF,CAMC,OANA7kP,EAAA0kP,EAAA,OAAAzrP,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAIuqN,EAAoBvqN,EAAKupJ,SAAUvpJ,EAAKyjJ,QAASzjJ,EAAKwlI,OAAQxlI,EAAK4rN,QAE/E,KAACrB,CAAA,CA3SsB,CAASvoE,IA+S3B6pE,GAAoB,SAAAC,GAAAxzO,EAAAuzO,EAAAC,GAAA,IAAAC,EAAA90O,EAAA40O,GAEzB,SAAAA,IAAsC,IAAAG,EAAzBxmF,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGuhC,EAAMvhC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAA8kP,GAElC,IAAMj4P,GAAM,EAAI2F,KAAK04J,KAAM,IAAQ,EAC7BzuJ,EAAI,EAAI5P,EAER21L,EAAW,EAGd,GAAK,GAAK,GAAK,GAAK,EAAG,GACvB,EAAG,GAAK,GAAK,EAAG,EAAG,EACrB,GAAK,GAAK,EAAG,GAAK,EAAG,EACrB,EAAG,GAAK,EAAG,EAAG,EAAG,EAGjB,GAAK/lL,GAAK5P,EAAG,GAAK4P,EAAG5P,EACrB,EAAG4P,GAAK5P,EAAG,EAAG4P,EAAG5P,GAGf4P,GAAK5P,EAAG,GAAK4P,EAAG5P,EAAG,EACrB4P,GAAK5P,EAAG,EAAG4P,EAAG5P,EAAG,GAGfA,EAAG,GAAK4P,EAAG5P,EAAG,GAAK4P,GACnB5P,EAAG,EAAG4P,EAAG5P,EAAG,EAAG4P,GAyBhB,OAPFwoP,EAAAD,EAAA5yP,KAAA,KAAOowL,EAfS,CACf,EAAG,GAAI,EAAI,EAAG,EAAG,GAAK,EAAG,GAAI,GAC7B,EAAG,GAAI,GAAK,EAAG,GAAI,EAAI,EAAG,EAAG,GAC7B,GAAI,EAAG,EAAI,GAAI,EAAG,GAAK,GAAI,GAAI,EAC/B,EAAG,EAAG,GAAK,EAAG,GAAI,EAAI,EAAG,EAAG,GAC5B,EAAG,GAAI,EAAI,EAAG,EAAG,GAAK,EAAG,GAAI,GAC7B,EAAG,GAAI,EAAI,EAAG,EAAG,GAAK,EAAG,GAAI,GAC7B,EAAG,GAAI,GAAK,EAAG,GAAI,EAAI,EAAG,EAAG,GAC7B,GAAI,EAAG,EAAI,GAAI,EAAG,GAAK,GAAI,GAAI,EAC/B,EAAG,GAAI,GAAK,EAAG,GAAI,EAAI,EAAG,EAAG,EAC7B,GAAI,EAAG,EAAI,GAAI,EAAG,GAAK,GAAI,GAAI,EAC/B,GAAI,EAAG,GAAK,GAAI,GAAI,EAAI,GAAI,EAAG,GAC/B,EAAG,GAAI,GAAK,EAAG,GAAI,EAAI,EAAG,EAAG,GAGJ/jB,EAAQ1nI,IAE7B58B,KAAO,uBAEZ8qP,EAAKl3E,WAAa,CACjBtP,OAAQA,EACR1nI,OAAQA,GACPkuN,CAEH,CAMC,OANAnmP,EAAAgmP,EAAA,OAAA/sP,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAI6rN,EAAsB7rN,EAAKwlI,OAAQxlI,EAAKlC,OAEpD,KAAC+tN,CAAA,CA1DwB,CAAStB,IA8D7B0B,GAAM,IAAI7oF,GACV8oF,GAAQ,IAAI9oF,GACZ+oF,GAAU,IAAI/oF,GACdgpF,GAAY,IAAIn2E,GAEhBo2E,GAAa,SAAAC,GAAAh0O,EAAA+zO,EAAAC,GAAA,IAAAC,EAAAt1O,EAAAo1O,GAElB,SAAAA,IAAmD,IAAAG,EAAtCplF,EAAQ7qK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAMkwP,EAAclwP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAU9C,GAV+CwK,EAAA,KAAAslP,IAE/CG,EAAAD,EAAApzP,KAAA,OACK+H,KAAO,gBAEZsrP,EAAK13E,WAAa,CACjB1N,SAAUA,EACVqlF,eAAgBA,GAGC,OAAbrlF,EAAoB,CAgBxB,IAdA,IACM9tK,EAAYC,KAAKs1J,IAAK,GADJ,GAElB69F,EAAenzP,KAAKk3J,IAAKzC,GAAUy+F,GAEnCE,EAAYvlF,EAAS9yE,WACrBs4J,EAAexlF,EAASlhG,aAAc,YACtC2mL,EAAaF,EAAYA,EAAU1yK,MAAQ2yK,EAAa3yK,MAExD6yK,EAAW,CAAE,EAAG,EAAG,GACnBC,EAAW,CAAE,IAAK,IAAK,KACvBC,EAAS,IAAI/zP,MAAO,GAEpBg0P,EAAW,CAAC,EACZ1jE,EAAW,GACPvwL,EAAI,EAAGA,EAAI6zP,EAAY7zP,GAAK,EAAI,CAEpC2zP,GAEJG,EAAU,GAAMH,EAAUl6F,KAAMz5J,GAChC8zP,EAAU,GAAMH,EAAUl6F,KAAMz5J,EAAI,GACpC8zP,EAAU,GAAMH,EAAUl6F,KAAMz5J,EAAI,KAIpC8zP,EAAU,GAAM9zP,EAChB8zP,EAAU,GAAM9zP,EAAI,EACpB8zP,EAAU,GAAM9zP,EAAI,GAIrB,IAAQV,EAAY8zP,GAAZ9zP,EAAGuK,EAASupP,GAATvpP,EAAGtK,EAAM6zP,GAAN7zP,EAYd,GAXAD,EAAE+uK,oBAAqBulF,EAAcE,EAAU,IAC/CjqP,EAAEwkK,oBAAqBulF,EAAcE,EAAU,IAC/Cv0P,EAAE8uK,oBAAqBulF,EAAcE,EAAU,IAC/CV,GAAU/1E,UAAW81E,IAGrBa,EAAQ,GAAM,GAAHjvP,OAAOxE,KAAK83J,MAAO/4J,EAAEE,EAAIc,GAAW,KAAAyE,OAAMxE,KAAK83J,MAAO/4J,EAAEqL,EAAIrK,GAAW,KAAAyE,OAAMxE,KAAK83J,MAAO/4J,EAAEsL,EAAItK,IAC1G0zP,EAAQ,GAAM,GAAHjvP,OAAOxE,KAAK83J,MAAOxuJ,EAAErK,EAAIc,GAAW,KAAAyE,OAAMxE,KAAK83J,MAAOxuJ,EAAEc,EAAIrK,GAAW,KAAAyE,OAAMxE,KAAK83J,MAAOxuJ,EAAEe,EAAItK,IAC1G0zP,EAAQ,GAAM,GAAHjvP,OAAOxE,KAAK83J,MAAO94J,EAAEC,EAAIc,GAAW,KAAAyE,OAAMxE,KAAK83J,MAAO94J,EAAEoL,EAAIrK,GAAW,KAAAyE,OAAMxE,KAAK83J,MAAO94J,EAAEqL,EAAItK,IAGrG0zP,EAAQ,KAAQA,EAAQ,IAAOA,EAAQ,KAAQA,EAAQ,IAAOA,EAAQ,KAAQA,EAAQ,GAO3F,IAAM,IAAI7gP,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAG9B,IAAM+gP,GAAU/gP,EAAI,GAAM,EACpBghP,EAAWH,EAAQ7gP,GACnBihP,EAAWJ,EAAQE,GACnBjkF,EAAKmjF,GAAWW,EAAU5gP,IAC1BmmJ,EAAK85F,GAAWW,EAAUG,IAE1B95J,EAAO,GAAHr1F,OAAOovP,EAAQ,KAAApvP,OAAMqvP,GACzBC,EAAc,GAAHtvP,OAAOqvP,EAAQ,KAAArvP,OAAMovP,GAEjCE,KAAeJ,GAAYA,EAAUI,IAIpClB,GAAQ5rF,IAAK0sF,EAAUI,GAAchoF,SAAYqnF,IAErDnjE,EAASnwL,KAAM6vK,EAAGzwK,EAAGywK,EAAGtlK,EAAGslK,EAAGrlK,GAC9B2lL,EAASnwL,KAAMk5J,EAAG95J,EAAG85J,EAAG3uJ,EAAG2uJ,EAAG1uJ,IAI/BqpP,EAAUI,GAAgB,MAEXj6J,KAAQ65J,IAGvBA,EAAU75J,GAAS,CAElBk6J,OAAQR,EAAU3gP,GAClB+yK,OAAQ4tE,EAAUI,GAClB7nF,OAAQ8mF,GAAQ3uP,SAMnB,CAED,CAGA,IAAM,IAAMsB,KAAOmuP,EAElB,GAAKA,EAAUnuP,GAAQ,CAEtB,IAAAyuP,EAA2BN,EAAUnuP,GAA7BwuP,EAAMC,EAAND,OAAQpuE,EAAMquE,EAANruE,OAChB+sE,GAAI5kF,oBAAqBulF,EAAcU,GACvCpB,GAAM7kF,oBAAqBulF,EAAc1tE,GAEzCqK,EAASnwL,KAAM6yP,GAAIzzP,EAAGyzP,GAAItoP,EAAGsoP,GAAIroP,GACjC2lL,EAASnwL,KAAM8yP,GAAM1zP,EAAG0zP,GAAMvoP,EAAGuoP,GAAMtoP,EAExC,CAID4oP,EAAKp9O,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,GAEtE,CAAC,OAAAijE,CAEF,CAAC,OAAA3mP,EAAAwmP,EAAA,CA7HiB,CAASrqE,IAiItBwrE,GAAK,SAAAC,GAAAn1O,EAAAk1O,EAAAC,GAAA,IAAAC,EAAAz2O,EAAAu2O,GAEV,SAAAA,EAAajnF,GAAS,IAAAonF,EAQL,OARK5mP,EAAA,KAAAymP,IAErBG,EAAAD,EAAAv0P,KAAA,KAAOotK,IAEFpuD,KAAOg2C,KAEZw/F,EAAKzsP,KAAO,QAEZysP,EAAKC,MAAQ,GAAGD,CAEjB,CAiFC,OAjFA9nP,EAAA2nP,EAAA,EAAA1uP,IAAA,iBAAA/D,MAED,SAAgB2jP,GAIf,IAFA,IAAMmP,EAAW,GAEP70P,EAAI,EAAGmK,EAAI7G,KAAKsxP,MAAM15P,OAAQ8E,EAAImK,EAAGnK,IAE9C60P,EAAU70P,GAAMsD,KAAKsxP,MAAO50P,GAAIytP,UAAW/H,GAI5C,OAAOmP,CAER,GAEA,CAAA/uP,IAAA,gBAAA/D,MAEA,SAAe2jP,GAEd,MAAO,CAENvoO,MAAO7Z,KAAKmqP,UAAW/H,GACvBkP,MAAOtxP,KAAKwxP,eAAgBpP,GAI9B,GAAC,CAAA5/O,IAAA,OAAA/D,MAED,SAAM+C,GAEL0lI,GAAA5rH,EAAA41O,EAAAt0P,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKsxP,MAAQ,GAEb,IAAM,IAAI50P,EAAI,EAAGmK,EAAIrF,EAAO8vP,MAAM15P,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEvD,IAAM+0P,EAAOjwP,EAAO8vP,MAAO50P,GAE3BsD,KAAKsxP,MAAMx0P,KAAM20P,EAAKvwP,QAEvB,CAEA,OAAOlB,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAA41O,EAAAt0P,WAAA,eAAAC,KAAA,MAEV6mC,EAAKm4E,KAAO77G,KAAK67G,KACjBn4E,EAAK4tN,MAAQ,GAEb,IAAM,IAAI50P,EAAI,EAAGmK,EAAI7G,KAAKsxP,MAAM15P,OAAQ8E,EAAImK,EAAGnK,IAAO,CAErD,IAAM+0P,EAAOzxP,KAAKsxP,MAAO50P,GACzBgnC,EAAK4tN,MAAMx0P,KAAM20P,EAAKjyF,SAEvB,CAEA,OAAO97H,CAER,GAAC,CAAAlhC,IAAA,WAAA/D,MAED,SAAUg+O,GAETv1G,GAAA5rH,EAAA41O,EAAAt0P,WAAA,iBAAAC,KAAA,KAAgB4/O,GAEhBz8O,KAAK67G,KAAO4gI,EAAK5gI,KACjB77G,KAAKsxP,MAAQ,GAEb,IAAM,IAAI50P,EAAI,EAAGmK,EAAI41O,EAAK6U,MAAM15P,OAAQ8E,EAAImK,EAAGnK,IAAO,CAErD,IAAM+0P,EAAOhV,EAAK6U,MAAO50P,GACzBsD,KAAKsxP,MAAMx0P,MAAM,IAAIutP,IAAOD,SAAUqH,GAEvC,CAEA,OAAOzxP,IAER,KAACkxP,CAAA,CA7FS,CAAS7G,IAqGdqH,GAEQ,SAAWhuN,EAAMiuN,GAAuB,IAShDhoF,EAAMC,EAAME,EAAMC,EAAM7tK,EAAGmL,EAAGuqP,EATQC,EAAG5xP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE1C6xP,EAAWH,GAAeA,EAAY/5P,OACtCm6P,EAAWD,EAAWH,EAAa,GAAME,EAAMnuN,EAAK9rC,OACtDo6P,EAAYC,GAAYvuN,EAAM,EAAGquN,EAAUF,GAAK,GAC9C98C,EAAY,GAElB,IAAOi9C,GAAaA,EAAU9uP,OAAS8uP,EAAU/uP,KAAO,OAAO8xM,EAO/D,GAHK+8C,IAAWE,EAqTlB,SAAyBtuN,EAAMiuN,EAAaK,EAAWH,GAEtD,IACIn1P,EAAGsP,EAAiBwE,EADlBwqC,EAAQ,GAGd,IAAMt+C,EAAI,EAAGsP,EAAM2lP,EAAY/5P,OAAQ8E,EAAIsP,EAAKtP,KAI/C8T,EAAOyhP,GAAYvuN,EAFXiuN,EAAaj1P,GAAMm1P,EACrBn1P,EAAIsP,EAAM,EAAI2lP,EAAaj1P,EAAI,GAAMm1P,EAAMnuN,EAAK9rC,OACjBi6P,GAAK,MAC5BrhP,EAAKtN,OAAOsN,EAAK0hP,SAAU,GACzCl3M,EAAMl+C,KAAMq1P,GAAa3hP,IAO1B,IAHAwqC,EAAMw+C,KAAM44J,IAGN11P,EAAI,EAAGA,EAAIs+C,EAAMpjD,OAAQ8E,IAE9B21P,GAAer3M,EAAOt+C,GAAKs1P,GAC3BA,EAAYM,GAAcN,EAAWA,EAAU9uP,MAIhD,OAAO8uP,CAER,CAhV8BO,CAAgB7uN,EAAMiuN,EAAaK,EAAWH,IAGrEnuN,EAAK9rC,OAAS,GAAKi6P,EAAM,CAE7BloF,EAAOG,EAAOpmI,EAAM,GACpBkmI,EAAOG,EAAOrmI,EAAM,GAEpB,IAAM,IAAIhnC,EAAIm1P,EAAKn1P,EAAIq1P,EAAUr1P,GAAKm1P,GAErC31P,EAAIwnC,EAAMhnC,IAEDitK,IAAOA,EAAOztK,IADvBmL,EAAIq8B,EAAMhnC,EAAI,IAELktK,IAAOA,EAAOviK,GAClBnL,EAAI4tK,IAAOA,EAAO5tK,GAClBmL,EAAI0iK,IAAOA,EAAO1iK,GAMxBuqP,EAAsB,KADtBA,EAAU30P,KAAKC,IAAK4sK,EAAOH,EAAMI,EAAOH,IACd,EAAIgoF,EAAU,CAEzC,CAIA,OAFAY,GAAcR,EAAWj9C,EAAW88C,EAAKloF,EAAMC,EAAMgoF,GAE9C78C,CAER,EAKD,SAASk9C,GAAYvuN,EAAMoH,EAAOC,EAAK8mN,EAAKY,GAE3C,IAAI/1P,EAAGgD,EAEP,GAAK+yP,IA+sBN,SAAqB/uN,EAAMoH,EAAOC,EAAK8mN,GAGtC,IADA,IAAIlhH,EAAM,EACAj0I,EAAIouC,EAAOj7B,EAAIk7B,EAAM8mN,EAAKn1P,EAAIquC,EAAKruC,GAAKm1P,EAEjDlhH,IAASjtG,EAAM7zB,GAAM6zB,EAAMhnC,KAAUgnC,EAAMhnC,EAAI,GAAMgnC,EAAM7zB,EAAI,IAC/DA,EAAInT,EAIL,OAAOi0I,CAER,CA3tBsB+hH,CAAYhvN,EAAMoH,EAAOC,EAAK8mN,GAAQ,EAE1D,IAAMn1P,EAAIouC,EAAOpuC,EAAIquC,EAAKruC,GAAKm1P,EAAMnyP,EAAOizP,GAAYj2P,EAAGgnC,EAAMhnC,GAAKgnC,EAAMhnC,EAAI,GAAKgD,QAIrF,IAAMhD,EAAIquC,EAAM8mN,EAAKn1P,GAAKouC,EAAOpuC,GAAKm1P,EAAMnyP,EAAOizP,GAAYj2P,EAAGgnC,EAAMhnC,GAAKgnC,EAAMhnC,EAAI,GAAKgD,GAW7F,OAPKA,GAAQ8sK,GAAQ9sK,EAAMA,EAAKwD,QAE/B0vP,GAAYlzP,GACZA,EAAOA,EAAKwD,MAINxD,CAER,CAGA,SAAS4yP,GAAcxnN,EAAOC,GAE7B,IAAOD,EAAQ,OAAOA,EACfC,IAAMA,EAAMD,GAEnB,IACC+nN,EADG7rP,EAAI8jC,EAER,GAIC,GAFA+nN,GAAQ,EAED7rP,EAAEkrP,UAAa1lF,GAAQxlK,EAAGA,EAAE9D,OAAwC,IAA9B2yB,GAAM7uB,EAAE/D,KAAM+D,EAAGA,EAAE9D,MAS/D8D,EAAIA,EAAE9D,SAT0E,CAIhF,GAFA0vP,GAAY5rP,IACZA,EAAI+jC,EAAM/jC,EAAE/D,QACD+D,EAAE9D,KAAO,MACpB2vP,GAAQ,CAET,QAMSA,GAAS7rP,IAAM+jC,GAEzB,OAAOA,CAER,CAGA,SAASynN,GAAcM,EAAK/9C,EAAW88C,EAAKloF,EAAMC,EAAMgoF,EAASmB,GAEhE,GAAOD,EAAP,EAGOC,GAAQnB,GA0VhB,SAAqB9mN,EAAO6+H,EAAMC,EAAMgoF,GAEvC,IAAI5qP,EAAI8jC,EACR,GAEc,OAAR9jC,EAAEM,IAAaN,EAAEM,EAAI0rP,GAAQhsP,EAAE9K,EAAG8K,EAAEK,EAAGsiK,EAAMC,EAAMgoF,IACxD5qP,EAAEisP,MAAQjsP,EAAE/D,KACZ+D,EAAEksP,MAAQlsP,EAAE9D,KACZ8D,EAAIA,EAAE9D,WAEG8D,IAAM8jC,GAEhB9jC,EAAEisP,MAAMC,MAAQ,KAChBlsP,EAAEisP,MAAQ,KAQX,SAAqBziP,GAEpB,IAAI9T,EAAGsK,EAAGC,EAAGX,EAAGq+C,EAAMwuM,EAAWC,EAAOC,EACvCC,EAAS,EAEV,EAAG,CAOF,IALAtsP,EAAIwJ,EACJA,EAAO,KACPm0C,EAAO,KACPwuM,EAAY,EAEJnsP,GAAI,CAKX,IAHAmsP,IACAlsP,EAAID,EACJosP,EAAQ,EACF12P,EAAI,EAAGA,EAAI42P,IAEhBF,IACAnsP,EAAIA,EAAEisP,OAHkBx2P,KAUzB,IAFA22P,EAAQC,EAEAF,EAAQ,GAAOC,EAAQ,GAAKpsP,GAEpB,IAAVmsP,IAA2B,IAAVC,IAAiBpsP,GAAKD,EAAEM,GAAKL,EAAEK,IAEpDhB,EAAIU,EACJA,EAAIA,EAAEksP,MACNE,MAIA9sP,EAAIW,EACJA,EAAIA,EAAEisP,MACNG,KAII1uM,EAAOA,EAAKuuM,MAAQ5sP,EACpBkK,EAAOlK,EAEZA,EAAE2sP,MAAQtuM,EACVA,EAAOr+C,EAIRU,EAAIC,CAEL,CAEA09C,EAAKuuM,MAAQ,KACbI,GAAU,CAEX,OAAUH,EAAY,EAIvB,CApECI,CAAYvsP,EAEb,CA3W0BwsP,CAAYV,EAAKnpF,EAAMC,EAAMgoF,GAMtD,IAJA,IACC3uP,EAAMC,EADHurE,EAAOqkL,EAIHA,EAAI7vP,OAAS6vP,EAAI5vP,MAKxB,GAHAD,EAAO6vP,EAAI7vP,KACXC,EAAO4vP,EAAI5vP,KAEN0uP,EAAU6B,GAAaX,EAAKnpF,EAAMC,EAAMgoF,GAAY8B,GAAOZ,GAG/D/9C,EAAUj4M,KAAMmG,EAAKvG,EAAIm1P,GACzB98C,EAAUj4M,KAAMg2P,EAAIp2P,EAAIm1P,GACxB98C,EAAUj4M,KAAMoG,EAAKxG,EAAIm1P,GAEzBe,GAAYE,GAGZA,EAAM5vP,EAAKA,KACXurE,EAAOvrE,EAAKA,UASb,IAHA4vP,EAAM5vP,KAGOurE,EAAO,CAGZskL,EAMc,IAATA,EAGXP,GADAM,EAAMa,GAAwBrB,GAAcQ,GAAO/9C,EAAW88C,GAC3C98C,EAAW88C,EAAKloF,EAAMC,EAAMgoF,EAAS,GAIpC,IAATmB,GAEXa,GAAad,EAAK/9C,EAAW88C,EAAKloF,EAAMC,EAAMgoF,GAb9CY,GAAcF,GAAcQ,GAAO/9C,EAAW88C,EAAKloF,EAAMC,EAAMgoF,EAAS,GAiBzE,KAED,CA1DkB,CA8DpB,CAGA,SAAS8B,GAAOZ,GAEf,IAAM92P,EAAI82P,EAAI7vP,KACbsD,EAAIusP,EACJ72P,EAAI62P,EAAI5vP,KAET,GAAK2yB,GAAM75B,EAAGuK,EAAGtK,IAAO,EAAI,OAAO,EAKnC,IAFA,IAAI+K,EAAI8rP,EAAI5vP,KAAKA,KAET8D,IAAM8rP,EAAI7vP,MAAO,CAExB,GAAK4wP,GAAiB73P,EAAEE,EAAGF,EAAEqL,EAAGd,EAAErK,EAAGqK,EAAEc,EAAGpL,EAAEC,EAAGD,EAAEoL,EAAGL,EAAE9K,EAAG8K,EAAEK,IAC1DwuB,GAAM7uB,EAAE/D,KAAM+D,EAAGA,EAAE9D,OAAU,EAAI,OAAO,EACzC8D,EAAIA,EAAE9D,IAEP,CAEA,OAAO,CAER,CAEA,SAASuwP,GAAaX,EAAKnpF,EAAMC,EAAMgoF,GAEtC,IAAM51P,EAAI82P,EAAI7vP,KACbsD,EAAIusP,EACJ72P,EAAI62P,EAAI5vP,KAET,GAAK2yB,GAAM75B,EAAGuK,EAAGtK,IAAO,EAAI,OAAO,EAgBnC,IAbA,IAAM63P,EAAQ93P,EAAEE,EAAIqK,EAAErK,EAAMF,EAAEE,EAAID,EAAEC,EAAIF,EAAEE,EAAID,EAAEC,EAAQqK,EAAErK,EAAID,EAAEC,EAAIqK,EAAErK,EAAID,EAAEC,EAC3E63P,EAAQ/3P,EAAEqL,EAAId,EAAEc,EAAMrL,EAAEqL,EAAIpL,EAAEoL,EAAIrL,EAAEqL,EAAIpL,EAAEoL,EAAQd,EAAEc,EAAIpL,EAAEoL,EAAId,EAAEc,EAAIpL,EAAEoL,EACtE2sP,EAAQh4P,EAAEE,EAAIqK,EAAErK,EAAMF,EAAEE,EAAID,EAAEC,EAAIF,EAAEE,EAAID,EAAEC,EAAQqK,EAAErK,EAAID,EAAEC,EAAIqK,EAAErK,EAAID,EAAEC,EACtE+3P,EAAQj4P,EAAEqL,EAAId,EAAEc,EAAMrL,EAAEqL,EAAIpL,EAAEoL,EAAIrL,EAAEqL,EAAIpL,EAAEoL,EAAQd,EAAEc,EAAIpL,EAAEoL,EAAId,EAAEc,EAAIpL,EAAEoL,EAGjEwiK,EAAOmpF,GAAQc,EAAOC,EAAOpqF,EAAMC,EAAMgoF,GAC9C5nF,EAAOgpF,GAAQgB,EAAOC,EAAOtqF,EAAMC,EAAMgoF,GAEtC5qP,EAAI8rP,EAAIG,MACXlsP,EAAI+rP,EAAII,MAGDlsP,GAAKA,EAAEM,GAAKuiK,GAAQ9iK,GAAKA,EAAEO,GAAK0iK,GAAO,CAE9C,GAAKhjK,IAAM8rP,EAAI7vP,MAAQ+D,IAAM8rP,EAAI5vP,MAChC2wP,GAAiB73P,EAAEE,EAAGF,EAAEqL,EAAGd,EAAErK,EAAGqK,EAAEc,EAAGpL,EAAEC,EAAGD,EAAEoL,EAAGL,EAAE9K,EAAG8K,EAAEK,IACtDwuB,GAAM7uB,EAAE/D,KAAM+D,EAAGA,EAAE9D,OAAU,EAAI,OAAO,EAGzC,GAFA8D,EAAIA,EAAEisP,MAEDlsP,IAAM+rP,EAAI7vP,MAAQ8D,IAAM+rP,EAAI5vP,MAChC2wP,GAAiB73P,EAAEE,EAAGF,EAAEqL,EAAGd,EAAErK,EAAGqK,EAAEc,EAAGpL,EAAEC,EAAGD,EAAEoL,EAAGN,EAAE7K,EAAG6K,EAAEM,IACtDwuB,GAAM9uB,EAAE9D,KAAM8D,EAAGA,EAAE7D,OAAU,EAAI,OAAO,EACzC6D,EAAIA,EAAEmsP,KAEP,CAGA,KAAQlsP,GAAKA,EAAEM,GAAKuiK,GAAO,CAE1B,GAAK7iK,IAAM8rP,EAAI7vP,MAAQ+D,IAAM8rP,EAAI5vP,MAChC2wP,GAAiB73P,EAAEE,EAAGF,EAAEqL,EAAGd,EAAErK,EAAGqK,EAAEc,EAAGpL,EAAEC,EAAGD,EAAEoL,EAAGL,EAAE9K,EAAG8K,EAAEK,IACtDwuB,GAAM7uB,EAAE/D,KAAM+D,EAAGA,EAAE9D,OAAU,EAAI,OAAO,EACzC8D,EAAIA,EAAEisP,KAEP,CAGA,KAAQlsP,GAAKA,EAAEO,GAAK0iK,GAAO,CAE1B,GAAKjjK,IAAM+rP,EAAI7vP,MAAQ8D,IAAM+rP,EAAI5vP,MAChC2wP,GAAiB73P,EAAEE,EAAGF,EAAEqL,EAAGd,EAAErK,EAAGqK,EAAEc,EAAGpL,EAAEC,EAAGD,EAAEoL,EAAGN,EAAE7K,EAAG6K,EAAEM,IACtDwuB,GAAM9uB,EAAE9D,KAAM8D,EAAGA,EAAE7D,OAAU,EAAI,OAAO,EACzC6D,EAAIA,EAAEmsP,KAEP,CAEA,OAAO,CAER,CAGA,SAASS,GAAwB7oN,EAAOiqK,EAAW88C,GAElD,IAAI7qP,EAAI8jC,EACR,EAAG,CAEF,IAAM9uC,EAAIgL,EAAE/D,KACXsD,EAAIS,EAAE9D,KAAKA,MAELspK,GAAQxwK,EAAGuK,IAAOolL,GAAY3vL,EAAGgL,EAAGA,EAAE9D,KAAMqD,IAAO2tP,GAAel4P,EAAGuK,IAAO2tP,GAAe3tP,EAAGvK,KAEpG+4M,EAAUj4M,KAAMd,EAAEU,EAAIm1P,GACtB98C,EAAUj4M,KAAMkK,EAAEtK,EAAIm1P,GACtB98C,EAAUj4M,KAAMyJ,EAAE7J,EAAIm1P,GAGtBe,GAAY5rP,GACZ4rP,GAAY5rP,EAAE9D,MAEd8D,EAAI8jC,EAAQvkC,GAIbS,EAAIA,EAAE9D,IAEP,OAAU8D,IAAM8jC,GAEhB,OAAOwnN,GAActrP,EAEtB,CAGA,SAAS4sP,GAAa9oN,EAAOiqK,EAAW88C,EAAKloF,EAAMC,EAAMgoF,GAGxD,IAAI51P,EAAI8uC,EACR,EAAG,CAGF,IADA,IAAIvkC,EAAIvK,EAAEkH,KAAKA,KACPqD,IAAMvK,EAAEiH,MAAO,CAEtB,GAAKjH,EAAEU,IAAM6J,EAAE7J,GAAKy3P,GAAiBn4P,EAAGuK,GAAM,CAG7C,IAAItK,EAAIm4P,GAAcp4P,EAAGuK,GASzB,OANAvK,EAAIs2P,GAAct2P,EAAGA,EAAEkH,MACvBjH,EAAIq2P,GAAcr2P,EAAGA,EAAEiH,MAGvBsvP,GAAcx2P,EAAG+4M,EAAW88C,EAAKloF,EAAMC,EAAMgoF,QAC7CY,GAAcv2P,EAAG84M,EAAW88C,EAAKloF,EAAMC,EAAMgoF,EAG9C,CAEArrP,EAAIA,EAAErD,IAEP,CAEAlH,EAAIA,EAAEkH,IAEP,OAAUlH,IAAM8uC,EAEjB,CAgCA,SAASsnN,GAAUp2P,EAAGuK,GAErB,OAAOvK,EAAEE,EAAIqK,EAAErK,CAEhB,CAGA,SAASm2P,GAAeZ,EAAMO,GAG7B,GADAA,EAcD,SAAyBP,EAAMO,GAE9B,IAGqBlrP,EAHjBE,EAAIgrP,EACFqC,EAAK5C,EAAKv1P,EACVo4P,EAAK7C,EAAKpqP,EACZ+/J,GAAOj+G,IAIX,EAAG,CAEF,GAAKmrM,GAAMttP,EAAEK,GAAKitP,GAAMttP,EAAE9D,KAAKmE,GAAKL,EAAE9D,KAAKmE,IAAML,EAAEK,EAAI,CAEtD,IAAMnL,EAAI8K,EAAE9K,GAAMo4P,EAAKttP,EAAEK,IAAQL,EAAE9D,KAAKhH,EAAI8K,EAAE9K,IAAQ8K,EAAE9D,KAAKmE,EAAIL,EAAEK,GACnE,GAAKnL,GAAKm4P,GAAMn4P,EAAIkrK,EAAK,CAGxB,GADAA,EAAKlrK,EACAA,IAAMm4P,EAAK,CAEf,GAAKC,IAAOttP,EAAEK,EAAI,OAAOL,EACzB,GAAKstP,IAAOttP,EAAE9D,KAAKmE,EAAI,OAAOL,EAAE9D,IAEjC,CAEA4D,EAAIE,EAAE9K,EAAI8K,EAAE9D,KAAKhH,EAAI8K,EAAIA,EAAE9D,IAE5B,CAED,CAEA8D,EAAIA,EAAE9D,IAEP,OAAU8D,IAAMgrP,GAEhB,IAAOlrP,EAAI,OAAO,KAElB,GAAKutP,IAAOjtF,EAAK,OAAOtgK,EAMxB,IAGuB4pL,EAHjBjiH,EAAO3nE,EACZytP,EAAKztP,EAAE5K,EACPs4P,EAAK1tP,EAAEO,EACJotP,EAAStrM,IAEbniD,EAAIF,EAEJ,GAEMutP,GAAMrtP,EAAE9K,GAAK8K,EAAE9K,GAAKq4P,GAAMF,IAAOrtP,EAAE9K,GACtC23P,GAAiBS,EAAKE,EAAKH,EAAKjtF,EAAIktF,EAAIC,EAAIC,EAAIF,EAAKE,EAAKptF,EAAKitF,EAAIC,EAAIttP,EAAE9K,EAAG8K,EAAEK,KAE/EqpL,EAAMzzL,KAAK4f,IAAKy3O,EAAKttP,EAAEK,IAAQgtP,EAAKrtP,EAAE9K,GAEjCg4P,GAAeltP,EAAGyqP,KAAY/gE,EAAM+jE,GAAY/jE,IAAQ+jE,IAAYztP,EAAE9K,EAAI4K,EAAE5K,GAAO8K,EAAE9K,IAAM4K,EAAE5K,GAAKw4P,GAAsB5tP,EAAGE,OAE/HF,EAAIE,EACJytP,EAAS/jE,IAMX1pL,EAAIA,EAAE9D,WAEG8D,IAAMynE,GAEhB,OAAO3nE,CAER,CArFa6tP,CAAgBlD,EAAMO,GAC7BA,EAAY,CAEhB,IAAMzrP,EAAI6tP,GAAcpC,EAAWP,GAGnCa,GAAcN,EAAWA,EAAU9uP,MACnCovP,GAAc/rP,EAAGA,EAAErD,KAEpB,CAED,CA6EA,SAASwxP,GAAsB5tP,EAAGE,GAEjC,OAAO6uB,GAAM/uB,EAAE7D,KAAM6D,EAAGE,EAAE/D,MAAS,GAAK4yB,GAAM7uB,EAAE9D,KAAM4D,EAAGA,EAAE5D,MAAS,CAErE,CAyFA,SAAS8vP,GAAQ92P,EAAGmL,EAAGsiK,EAAMC,EAAMgoF,GAgBlC,OAPA11P,EAAyB,aADzBA,EAAyB,YADzBA,EAAyB,YADzBA,EAAyB,WAHzBA,EAAI,OAAUA,EAAIytK,GAASioF,GAGf11P,GAAK,IACLA,GAAK,IACLA,GAAK,IACLA,GAAK,KAKjBmL,EAAyB,aADzBA,EAAyB,YADzBA,EAAyB,YADzBA,EAAyB,WAPzBA,EAAI,OAAUA,EAAIuiK,GAASgoF,GAOfvqP,GAAK,IACLA,GAAK,IACLA,GAAK,IACLA,GAAK,KAEC,CAEnB,CAGA,SAAS8qP,GAAarnN,GAErB,IAAI9jC,EAAI8jC,EACP8pN,EAAW9pN,EACZ,IAEM9jC,EAAE9K,EAAI04P,EAAS14P,GAAO8K,EAAE9K,IAAM04P,EAAS14P,GAAK8K,EAAEK,EAAIutP,EAASvtP,KAAMutP,EAAW5tP,GACjFA,EAAIA,EAAE9D,WAEG8D,IAAM8jC,GAEhB,OAAO8pN,CAER,CAGA,SAASf,GAAiB1rF,EAAIC,EAAIE,EAAIC,EAAIhP,EAAIC,EAAIgsF,EAAIC,GAErD,OAASlsF,EAAKisF,IAASp9E,EAAKq9E,IAASt9E,EAAKq9E,IAAShsF,EAAKisF,IAAQ,IAC5Dt9E,EAAKq9E,IAASj9E,EAAKk9E,IAASn9E,EAAKk9E,IAASp9E,EAAKq9E,IAAQ,IACvDn9E,EAAKk9E,IAAShsF,EAAKisF,IAASlsF,EAAKisF,IAASj9E,EAAKk9E,IAAQ,CAE5D,CAGA,SAAS0O,GAAiBn4P,EAAGuK,GAE5B,OAAOvK,EAAEkH,KAAKxG,IAAM6J,EAAE7J,GAAKV,EAAEiH,KAAKvG,IAAM6J,EAAE7J,IAsD3C,SAA4BV,EAAGuK,GAE9B,IAAIS,EAAIhL,EACR,EAAG,CAEF,GAAKgL,EAAEtK,IAAMV,EAAEU,GAAKsK,EAAE9D,KAAKxG,IAAMV,EAAEU,GAAKsK,EAAEtK,IAAM6J,EAAE7J,GAAKsK,EAAE9D,KAAKxG,IAAM6J,EAAE7J,GACpEivL,GAAY3kL,EAAGA,EAAE9D,KAAMlH,EAAGuK,GAAM,OAAO,EACzCS,EAAIA,EAAE9D,IAEP,OAAU8D,IAAMhL,GAEhB,OAAO,CAER,CAnEkD64P,CAAmB74P,EAAGuK,KACpE2tP,GAAel4P,EAAGuK,IAAO2tP,GAAe3tP,EAAGvK,IA8E/C,SAAuBA,EAAGuK,GAEzB,IAAIS,EAAIhL,EACPk+G,GAAS,EACJsrI,GAAOxpP,EAAEE,EAAIqK,EAAErK,GAAM,EAC1BupP,GAAOzpP,EAAEqL,EAAId,EAAEc,GAAM,EACtB,GAEUL,EAAEK,EAAIo+O,IAAWz+O,EAAE9D,KAAKmE,EAAIo+O,GAAUz+O,EAAE9D,KAAKmE,IAAML,EAAEK,GAC1Dm+O,GAAOx+O,EAAE9D,KAAKhH,EAAI8K,EAAE9K,IAAQupP,EAAKz+O,EAAEK,IAAQL,EAAE9D,KAAKmE,EAAIL,EAAEK,GAAML,EAAE9K,IACnEg+G,GAAWA,GACZlzG,EAAIA,EAAE9D,WAEG8D,IAAMhL,GAEhB,OAAOk+G,CAER,CA/FsD46I,CAAc94P,EAAGuK,KACnEsvB,GAAM75B,EAAEiH,KAAMjH,EAAGuK,EAAEtD,OAAU4yB,GAAM75B,EAAGuK,EAAEtD,KAAMsD,KAChDimK,GAAQxwK,EAAGuK,IAAOsvB,GAAM75B,EAAEiH,KAAMjH,EAAGA,EAAEkH,MAAS,GAAK2yB,GAAMtvB,EAAEtD,KAAMsD,EAAGA,EAAErD,MAAS,EAEjF,CAGA,SAAS2yB,GAAM7uB,EAAGC,EAAGC,GAEpB,OAASD,EAAEI,EAAIL,EAAEK,IAAQH,EAAEhL,EAAI+K,EAAE/K,IAAQ+K,EAAE/K,EAAI8K,EAAE9K,IAAQgL,EAAEG,EAAIJ,EAAEI,EAElE,CAGA,SAASmlK,GAAQl1C,EAAIC,GAEpB,OAAOD,EAAGp7H,IAAMq7H,EAAGr7H,GAAKo7H,EAAGjwH,IAAMkwH,EAAGlwH,CAErC,CAGA,SAASskL,GAAYr0D,EAAIy9H,EAAIx9H,EAAIy9H,GAEhC,IAAMC,EAAK7kF,GAAMv6I,GAAMyhG,EAAIy9H,EAAIx9H,IACzB29H,EAAK9kF,GAAMv6I,GAAMyhG,EAAIy9H,EAAIC,IACzBG,EAAK/kF,GAAMv6I,GAAM0hG,EAAIy9H,EAAI19H,IACzB89H,EAAKhlF,GAAMv6I,GAAM0hG,EAAIy9H,EAAID,IAE/B,OAAKE,IAAOC,GAAMC,IAAOC,MAEb,IAAPH,IAAYI,GAAW/9H,EAAIC,EAAIw9H,QACxB,IAAPG,IAAYG,GAAW/9H,EAAI09H,EAAID,QACxB,IAAPI,IAAYE,GAAW99H,EAAID,EAAI09H,OACxB,IAAPI,IAAYC,GAAW99H,EAAIw9H,EAAIC,MAIrC,CAGA,SAASK,GAAWruP,EAAGC,EAAGC,GAEzB,OAAOD,EAAE/K,GAAKe,KAAKC,IAAK8J,EAAE9K,EAAGgL,EAAEhL,IAAO+K,EAAE/K,GAAKe,KAAKiuC,IAAKlkC,EAAE9K,EAAGgL,EAAEhL,IAAO+K,EAAEI,GAAKpK,KAAKC,IAAK8J,EAAEK,EAAGH,EAAEG,IAAOJ,EAAEI,GAAKpK,KAAKiuC,IAAKlkC,EAAEK,EAAGH,EAAEG,EAE7H,CAEA,SAAS+oK,GAAMklF,GAEd,OAAOA,EAAM,EAAI,EAAIA,EAAM,GAAM,EAAI,CAEtC,CAmBA,SAASpB,GAAel4P,EAAGuK,GAE1B,OAAOsvB,GAAM75B,EAAEiH,KAAMjH,EAAGA,EAAEkH,MAAS,EAClC2yB,GAAM75B,EAAGuK,EAAGvK,EAAEkH,OAAU,GAAK2yB,GAAM75B,EAAGA,EAAEiH,KAAMsD,IAAO,EACrDsvB,GAAM75B,EAAGuK,EAAGvK,EAAEiH,MAAS,GAAK4yB,GAAM75B,EAAGA,EAAEkH,KAAMqD,GAAM,CAErD,CAwBA,SAAS6tP,GAAcp4P,EAAGuK,GAEzB,IAAMqsJ,EAAK,IAAI2iG,GAAMv5P,EAAEU,EAAGV,EAAEE,EAAGF,EAAEqL,GAChCyrJ,EAAK,IAAIyiG,GAAMhvP,EAAE7J,EAAG6J,EAAErK,EAAGqK,EAAEc,GAC3BmuP,EAAKx5P,EAAEkH,KACPuyP,EAAKlvP,EAAEtD,KAcR,OAZAjH,EAAEkH,KAAOqD,EACTA,EAAEtD,KAAOjH,EAET42J,EAAG1vJ,KAAOsyP,EACVA,EAAGvyP,KAAO2vJ,EAEVE,EAAG5vJ,KAAO0vJ,EACVA,EAAG3vJ,KAAO6vJ,EAEV2iG,EAAGvyP,KAAO4vJ,EACVA,EAAG7vJ,KAAOwyP,EAEH3iG,CAER,CAGA,SAAS6/F,GAAYj2P,EAAGR,EAAGmL,EAAG3H,GAE7B,IAAMsH,EAAI,IAAIuuP,GAAM74P,EAAGR,EAAGmL,GAgB1B,OAdO3H,GAONsH,EAAE9D,KAAOxD,EAAKwD,KACd8D,EAAE/D,KAAOvD,EACTA,EAAKwD,KAAKD,KAAO+D,EACjBtH,EAAKwD,KAAO8D,IARZA,EAAE/D,KAAO+D,EACTA,EAAE9D,KAAO8D,GAWHA,CAER,CAEA,SAAS4rP,GAAY5rP,GAEpBA,EAAE9D,KAAKD,KAAO+D,EAAE/D,KAChB+D,EAAE/D,KAAKC,KAAO8D,EAAE9D,KAEX8D,EAAEisP,QAAQjsP,EAAEisP,MAAMC,MAAQlsP,EAAEksP,OAC5BlsP,EAAEksP,QAAQlsP,EAAEksP,MAAMD,MAAQjsP,EAAEisP,MAElC,CAEA,SAASsC,GAAM74P,EAAGR,EAAGmL,GAGpBrH,KAAKtD,EAAIA,EAGTsD,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EAGTrH,KAAKiD,KAAO,KACZjD,KAAKkD,KAAO,KAGZlD,KAAKsH,EAAI,KAGTtH,KAAKizP,MAAQ,KACbjzP,KAAKkzP,MAAQ,KAGblzP,KAAKkyP,SAAU,CAEhB,CAcC,IAEKwD,GAAU,oBAAAA,IAAAjrP,EAAA,KAAAirP,EAAA,CA8Dd,OA9DcnsP,EAAAmsP,EAAA,OAAAlzP,IAAA,OAAA/D,MAIf,SAAak3P,GAKZ,IAHA,IAAM5uP,EAAI4uP,EAAQ/9P,OACdoE,EAAI,EAEEgL,EAAID,EAAI,EAAGE,EAAI,EAAGA,EAAIF,EAAGC,EAAIC,IAEtCjL,GAAK25P,EAAS3uP,GAAI9K,EAAIy5P,EAAS1uP,GAAII,EAAIsuP,EAAS1uP,GAAI/K,EAAIy5P,EAAS3uP,GAAIK,EAItE,MAAW,GAAJrL,CAER,GAAC,CAAAwG,IAAA,cAAA/D,MAED,SAAoByrP,GAEnB,OAAOwL,EAAW7/N,KAAMq0N,GAAQ,CAEjC,GAAC,CAAA1nP,IAAA,mBAAA/D,MAED,SAAyBk3P,EAASrE,GAEjC,IAAMrkE,EAAW,GACX0kE,EAAc,GACdiE,EAAQ,GAEdC,GAAiBF,GACjBG,GAAY7oE,EAAU0oE,GAItB,IAAII,EAAYJ,EAAQ/9P,OAExB05P,EAAM/uP,QAASszP,IAEf,IAAM,IAAIn5P,EAAI,EAAGA,EAAI40P,EAAM15P,OAAQ8E,IAElCi1P,EAAY70P,KAAMi5P,GAClBA,GAAazE,EAAO50P,GAAI9E,OACxBk+P,GAAY7oE,EAAUqkE,EAAO50P,IAU9B,IAJA,IAAMq4M,EAAY28C,GAAoBzkE,EAAU0kE,GAItCj1P,EAAI,EAAGA,EAAIq4M,EAAUn9M,OAAQ8E,GAAK,EAE3Ck5P,EAAM94P,KAAMi4M,EAAUnkM,MAAOlU,EAAGA,EAAI,IAIrC,OAAOk5P,CAER,KAACF,CAAA,CA9Dc,GAkEhB,SAASG,GAAiB5rF,GAEzB,IAAMpjK,EAAIojK,EAAOryK,OAEZiP,EAAI,GAAKojK,EAAQpjK,EAAI,GAAI2lK,OAAQvC,EAAQ,KAE7CA,EAAOj5G,KAIT,CAEA,SAAS8kM,GAAY7oE,EAAU0oE,GAE9B,IAAM,IAAIj5P,EAAI,EAAGA,EAAIi5P,EAAQ/9P,OAAQ8E,IAEpCuwL,EAASnwL,KAAM64P,EAASj5P,GAAIR,GAC5B+wL,EAASnwL,KAAM64P,EAASj5P,GAAI2K,EAI9B,CAEA,IAsBM2uP,GAAe,SAAAC,GAAAj6O,EAAAg6O,EAAAC,GAAA,IAAAC,EAAAv7O,EAAAq7O,GAEpB,SAAAA,IAAkK,IAAAG,EAArJv+E,EAAM33K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIixP,GAAO,CAAE,IAAI/7F,GAAS,GAAK,IAAO,IAAIA,IAAW,GAAK,IAAO,IAAIA,IAAW,IAAO,IAAO,IAAIA,GAAS,IAAO,MAAWl0J,EAAOhB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAACwK,EAAA,KAAAurP,IAE9JG,EAAAD,EAAAr5P,KAAA,OAEK+H,KAAO,kBAEZuxP,EAAK39E,WAAa,CACjBZ,OAAQA,EACR32K,QAASA,GAGV22K,EAASj7K,MAAM0E,QAASu2K,GAAWA,EAAS,CAAEA,GAO9C,IALA,IAAMoV,EAAKxxK,EAAA26O,GAELC,EAAgB,GAChBC,EAAU,GAEN35P,EAAI,EAAGmK,EAAI+wK,EAAOhgL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAGjD45P,EADc1+E,EAAQl7K,GAGvB,CAWA,SAAS45P,EAAUz8O,GAElB,IAAMwwG,EAAc,GAIdksI,OAA0CnsP,IAA1BnJ,EAAQs1P,cAA8Bt1P,EAAQs1P,cAAgB,GAC9EC,OAA0BpsP,IAAlBnJ,EAAQu1P,MAAsBv1P,EAAQu1P,MAAQ,EACxDjoJ,OAA0BnkG,IAAlBnJ,EAAQstG,MAAsBttG,EAAQstG,MAAQ,EAEtDkoJ,OAAwCrsP,IAAzBnJ,EAAQw1P,cAA6Bx1P,EAAQw1P,aAC5DC,OAA4CtsP,IAA3BnJ,EAAQy1P,eAA+Bz1P,EAAQy1P,eAAiB,GACjFC,OAAkCvsP,IAAtBnJ,EAAQ01P,UAA0B11P,EAAQ01P,UAAYD,EAAiB,GACnFE,OAAsCxsP,IAAxBnJ,EAAQ21P,YAA4B31P,EAAQ21P,YAAc,EACxEC,OAA0CzsP,IAA1BnJ,EAAQ41P,cAA8B51P,EAAQ41P,cAAgB,EAE5EC,EAAc71P,EAAQ61P,YAEtBC,OAAgC3sP,IAAxBnJ,EAAQ+1P,YAA4B/1P,EAAQ+1P,YAAcC,QAIhD7sP,IAAnBnJ,EAAQquE,SAEZv7D,QAAQk/C,KAAM,kEACds7C,EAAQttG,EAAQquE,QAMjB,IAAI4nL,EACAC,EAAYC,EAAUruF,EAAQsuF,EADlBC,GAAgB,EAG3BR,IAEJI,EAAaJ,EAAYS,gBAAiBf,GAE1Cc,GAAgB,EAChBb,GAAe,EAMfU,EAAaL,EAAYU,oBAAqBhB,GAAO,GAIrDY,EAAW,IAAItwF,GACfiC,EAAS,IAAIjC,GACbuwF,EAAY,IAAIvwF,IAMV2vF,IAENI,EAAgB,EAChBH,EAAiB,EACjBC,EAAY,EACZC,EAAc,GAMf,IAAMa,EAAc59O,EAAM69O,cAAenB,GAErCtpE,EAAWwqE,EAAY59O,MACrBy3O,EAAQmG,EAAYnG,MAI1B,IAFkBoE,GAAWiC,YAAa1qE,GAE3B,CAEdA,EAAWA,EAAS1vL,UAIpB,IAAM,IAAIoJ,EAAI,EAAGkmD,EAAKykM,EAAM15P,OAAQ+O,EAAIkmD,EAAIlmD,IAAO,CAElD,IAAMixP,EAAQtG,EAAO3qP,GAEhB+uP,GAAWiC,YAAaC,KAE5BtG,EAAO3qP,GAAMixP,EAAMr6P,UAIrB,CAED,CASA,IANA,IAAMq4P,EAAQF,GAAWmC,iBAAkB5qE,EAAUqkE,GAI/CqE,EAAU1oE,EAENtmL,EAAI,EAAGkmD,EAAKykM,EAAM15P,OAAQ+O,EAAIkmD,EAAIlmD,IAAO,CAElD,IAAMixP,EAAQtG,EAAO3qP,GAErBsmL,EAAWA,EAASxrL,OAAQm2P,EAE7B,CAGA,SAASE,EAAUC,EAAI5U,EAAK59L,GAI3B,OAFO49L,GAAMpvO,QAAQwN,MAAO,6CAErB4hO,EAAIjiP,QAAQq0J,eAAgBhwG,GAAOn5B,IAAK2rO,EAEhD,CAEA,IAAMC,EAAO/qE,EAASr1L,OAAQqgQ,EAAOrC,EAAMh+P,OAM3C,SAASsgQ,EAAaC,EAAMC,EAAQC,GASnC,IAAIC,EAAWC,EAAWC,EAKpBC,EAAWN,EAAKj8P,EAAIk8P,EAAOl8P,EAChCw8P,EAAWP,EAAK9wP,EAAI+wP,EAAO/wP,EACtBsxP,EAAWN,EAAOn8P,EAAIi8P,EAAKj8P,EAChC08P,EAAWP,EAAOhxP,EAAI8wP,EAAK9wP,EAEtBwxP,EAAiBJ,EAAWA,EAAWC,EAAWA,EAGlDI,EAAeL,EAAWG,EAAWF,EAAWC,EAEtD,GAAK17P,KAAK4f,IAAKi8O,GAAezhP,OAAO6sJ,QAAU,CAM9C,IAAM60F,EAAa97P,KAAK04J,KAAMkjG,GACxBG,EAAa/7P,KAAK04J,KAAMgjG,EAAWA,EAAWC,EAAWA,GAIzDK,EAAkBb,EAAOl8P,EAAIw8P,EAAWK,EACxCG,EAAkBd,EAAO/wP,EAAIoxP,EAAWM,EAOxCtqN,IALkB4pN,EAAOn8P,EAAI08P,EAAWI,EAKfC,GAAkBL,GAJzBP,EAAOhxP,EAAIsxP,EAAWK,EAK1BE,GAAkBP,IACnCF,EAAWG,EAAWF,EAAWC,GAS9BQ,GALNb,EAAcW,EAAgBR,EAAWhqN,EAAK0pN,EAAKj8P,GAKfo8P,GAJpCC,EAAcW,EAAgBR,EAAWjqN,EAAK0pN,EAAK9wP,GAISkxP,EAC5D,GAAKY,GAAiB,EAErB,OAAO,IAAIhkG,GAASmjG,EAAWC,GAI/BC,EAAYv7P,KAAK04J,KAAMwjG,EAAgB,EAIzC,KAAO,CAIN,IAAIC,GAAe,EAEdX,EAAWphP,OAAO6sJ,QAEjBy0F,EAAWthP,OAAO6sJ,UAEtBk1F,GAAe,GAMXX,GAAaphP,OAAO6sJ,QAEnBy0F,GAAathP,OAAO6sJ,UAExBk1F,GAAe,GAMXn8P,KAAKmzK,KAAMsoF,KAAez7P,KAAKmzK,KAAMwoF,KAEzCQ,GAAe,GAQbA,GAGJd,GAAcI,EACdH,EAAYE,EACZD,EAAYv7P,KAAK04J,KAAMkjG,KAKvBP,EAAYG,EACZF,EAAYG,EACZF,EAAYv7P,KAAK04J,KAAMkjG,EAAe,GAIxC,CAEA,OAAO,IAAI1jG,GAASmjG,EAAYE,EAAWD,EAAYC,EAExD,CAKA,IAFA,IAAMa,EAAmB,GAEf38P,EAAI,EAAGowD,EAAK6oM,EAAQ/9P,OAAQiY,EAAIi9C,EAAK,EAAGlmD,EAAIlK,EAAI,EAAGA,EAAIowD,EAAIpwD,IAAMmT,IAAMjJ,IAE3EiJ,IAAMi9C,IAAKj9C,EAAI,GACfjJ,IAAMkmD,IAAKlmD,EAAI,GAKpByyP,EAAkB38P,GAAMw7P,EAAavC,EAASj5P,GAAKi5P,EAAS9lP,GAAK8lP,EAAS/uP,IAO3E,IAHA,IACI0yP,EADEC,EAAiB,GACDC,EAAoBH,EAAiB53P,SAEjDkF,EAAI,EAAGkmD,EAAKykM,EAAM15P,OAAQ+O,EAAIkmD,EAAIlmD,IAAO,CAElD,IAAMixP,EAAQtG,EAAO3qP,GAErB2yP,EAAmB,GAEnB,IAAM,IAAI58P,EAAI,EAAGowD,EAAK8qM,EAAMhgQ,OAAQiY,EAAIi9C,EAAK,EAAGlmD,EAAIlK,EAAI,EAAGA,EAAIowD,EAAIpwD,IAAMmT,IAAMjJ,IAEzEiJ,IAAMi9C,IAAKj9C,EAAI,GACfjJ,IAAMkmD,IAAKlmD,EAAI,GAGpB0yP,EAAkB58P,GAAMw7P,EAAaN,EAAOl7P,GAAKk7P,EAAO/nP,GAAK+nP,EAAOhxP,IAIrE2yP,EAAez8P,KAAMw8P,GACrBE,EAAoBA,EAAkB/3P,OAAQ63P,EAE/C,CAKA,IAAM,IAAI/yP,EAAI,EAAGA,EAAIswP,EAAetwP,IAAO,CAU1C,IANA,IAAMjP,EAAIiP,EAAIswP,EACRvvP,GAAIovP,EAAiBz5P,KAAKk3J,IAAK78J,EAAI2F,KAAK00J,GAAK,GAC7C8nG,GAAK9C,EAAY15P,KAAKm3J,IAAK98J,EAAI2F,KAAK00J,GAAK,GAAMilG,EAI3Cl6P,GAAI,EAAGowD,GAAK6oM,EAAQ/9P,OAAQ8E,GAAIowD,GAAIpwD,KAAO,CAEpD,IAAMmzI,GAAOioH,EAAUnC,EAASj5P,IAAK28P,EAAkB38P,IAAK+8P,IAE5DtyP,GAAG0oI,GAAK3zI,EAAG2zI,GAAKxoI,GAAKC,GAEtB,CAIA,IAAM,IAAIX,GAAI,EAAGkmD,GAAKykM,EAAM15P,OAAQ+O,GAAIkmD,GAAIlmD,KAAO,CAElD,IAAMixP,GAAQtG,EAAO3qP,IACrB2yP,EAAmBC,EAAgB5yP,IAEnC,IAAM,IAAIjK,GAAI,EAAGowD,GAAK8qM,GAAMhgQ,OAAQ8E,GAAIowD,GAAIpwD,KAAO,CAElD,IAAMmzI,GAAOioH,EAAUF,GAAOl7P,IAAK48P,EAAkB58P,IAAK+8P,IAE1DtyP,GAAG0oI,GAAK3zI,EAAG2zI,GAAKxoI,GAAKC,GAEtB,CAED,CAED,CAMA,IAJA,IAAMmyP,GAAK9C,EAAYC,EAIbl6P,GAAI,EAAGA,GAAIs7P,EAAMt7P,KAAO,CAEjC,IAAMmzI,GAAO4mH,EAAeqB,EAAU7qE,EAAUvwL,IAAK88P,EAAmB98P,IAAK+8P,IAAOxsE,EAAUvwL,IAEvF46P,GAQNvuF,EAAOrN,KAAMy7F,EAAW9vE,QAAS,IAAM9xB,eAAgB1lB,GAAK3zI,GAC5Dk7P,EAAS17F,KAAMy7F,EAAWjU,UAAW,IAAM3tF,eAAgB1lB,GAAKxoI,GAEhEgwP,EAAU37F,KAAMw7F,EAAY,IAAM9qO,IAAK28I,GAAS38I,IAAKgrO,GAErDjwP,GAAGkwP,EAAUn7P,EAAGm7P,EAAUhwP,EAAGgwP,EAAU/vP,IAXvCH,GAAG0oI,GAAK3zI,EAAG2zI,GAAKxoI,EAAG,EAerB,CAKA,IAAM,IAAI5L,GAAI,EAAGA,IAAK+6P,EAAO/6P,KAE5B,IAAM,IAAIiB,GAAI,EAAGA,GAAIs7P,EAAMt7P,KAAO,CAEjC,IAAMmzI,GAAO4mH,EAAeqB,EAAU7qE,EAAUvwL,IAAK88P,EAAmB98P,IAAK+8P,IAAOxsE,EAAUvwL,IAEvF46P,GAQNvuF,EAAOrN,KAAMy7F,EAAW9vE,QAAS5rL,KAAM85J,eAAgB1lB,GAAK3zI,GAC5Dk7P,EAAS17F,KAAMy7F,EAAWjU,UAAWznP,KAAM85J,eAAgB1lB,GAAKxoI,GAEhEgwP,EAAU37F,KAAMw7F,EAAYz7P,KAAM2wB,IAAK28I,GAAS38I,IAAKgrO,GAErDjwP,GAAGkwP,EAAUn7P,EAAGm7P,EAAUhwP,EAAGgwP,EAAU/vP,IAXvCH,GAAG0oI,GAAK3zI,EAAG2zI,GAAKxoI,EAAGknG,EAAQioJ,EAAQ/6P,GAerC,CAQD,IAAM,IAAI8K,GAAIswP,EAAgB,EAAGtwP,IAAK,EAAGA,KAAO,CAQ/C,IANA,IAAMjP,GAAIiP,GAAIswP,EACRvvP,GAAIovP,EAAiBz5P,KAAKk3J,IAAK78J,GAAI2F,KAAK00J,GAAK,GAC7C8nG,GAAK9C,EAAY15P,KAAKm3J,IAAK98J,GAAI2F,KAAK00J,GAAK,GAAMilG,EAI3Cl6P,GAAI,EAAGowD,GAAK6oM,EAAQ/9P,OAAQ8E,GAAIowD,GAAIpwD,KAAO,CAEpD,IAAMmzI,GAAOioH,EAAUnC,EAASj5P,IAAK28P,EAAkB38P,IAAK+8P,IAC5DtyP,GAAG0oI,GAAK3zI,EAAG2zI,GAAKxoI,EAAGknG,EAAQjnG,GAE5B,CAIA,IAAM,IAAIX,GAAI,EAAGkmD,GAAKykM,EAAM15P,OAAQ+O,GAAIkmD,GAAIlmD,KAAO,CAElD,IAAMixP,GAAQtG,EAAO3qP,IACrB2yP,EAAmBC,EAAgB5yP,IAEnC,IAAM,IAAIjK,GAAI,EAAGowD,GAAK8qM,GAAMhgQ,OAAQ8E,GAAIowD,GAAIpwD,KAAO,CAElD,IAAMmzI,GAAOioH,EAAUF,GAAOl7P,IAAK48P,EAAkB58P,IAAK+8P,IAEnDnC,EAMNnwP,GAAG0oI,GAAK3zI,EAAG2zI,GAAKxoI,EAAI6vP,EAAYV,EAAQ,GAAInvP,EAAG6vP,EAAYV,EAAQ,GAAIt6P,EAAIoL,IAJ3EH,GAAG0oI,GAAK3zI,EAAG2zI,GAAKxoI,EAAGknG,EAAQjnG,GAQ7B,CAED,CAED,CAgGA,SAASoyP,GAAW/D,EAASgE,GAI5B,IAFA,IAAIj9P,EAAIi5P,EAAQ/9P,SAEL8E,GAAK,GAAI,CAEnB,IAAMmT,EAAInT,EACNkK,EAAIlK,EAAI,EACPkK,EAAI,IAAIA,EAAI+uP,EAAQ/9P,OAAS,GAIlC,IAAM,IAAI6D,EAAI,EAAGyyD,EAAOsoM,EAAwB,EAAhBK,EAAqBp7P,EAAIyyD,EAAIzyD,IAAO,CAEnE,IAAMm+P,EAAQ5B,EAAOv8P,EACfo+P,EAAQ7B,GAASv8P,EAAI,GAO3Bq+P,GALUH,EAAc9pP,EAAI+pP,EACvBD,EAAc/yP,EAAIgzP,EAClBD,EAAc/yP,EAAIizP,EAClBF,EAAc9pP,EAAIgqP,EAIxB,CAED,CAED,CAEA,SAAS1yP,GAAGjL,EAAGmL,EAAGC,GAEjB+iH,EAAYvtH,KAAMZ,GAClBmuH,EAAYvtH,KAAMuK,GAClBgjH,EAAYvtH,KAAMwK,EAEnB,CAGA,SAASyyP,GAAI/9P,EAAGuK,EAAGtK,GAElB+9P,GAAWh+P,GACXg+P,GAAWzzP,GACXyzP,GAAW/9P,GAEX,IAAMi8F,EAAYk+J,EAAcx+P,OAAS,EACnC0vL,EAAMyvE,EAAMkD,cAAejtE,EAAOopE,EAAel+J,EAAY,EAAGA,EAAY,EAAGA,EAAY,GAEjGgiK,GAAO5yE,EAAK,IACZ4yE,GAAO5yE,EAAK,IACZ4yE,GAAO5yE,EAAK,GAEb,CAEA,SAASwyE,GAAI99P,EAAGuK,EAAGtK,EAAGuK,GAErBwzP,GAAWh+P,GACXg+P,GAAWzzP,GACXyzP,GAAWxzP,GAEXwzP,GAAWzzP,GACXyzP,GAAW/9P,GACX+9P,GAAWxzP,GAGX,IAAM0xF,EAAYk+J,EAAcx+P,OAAS,EACnC0vL,EAAMyvE,EAAMoD,mBAAoBntE,EAAOopE,EAAel+J,EAAY,EAAGA,EAAY,EAAGA,EAAY,EAAGA,EAAY,GAErHgiK,GAAO5yE,EAAK,IACZ4yE,GAAO5yE,EAAK,IACZ4yE,GAAO5yE,EAAK,IAEZ4yE,GAAO5yE,EAAK,IACZ4yE,GAAO5yE,EAAK,IACZ4yE,GAAO5yE,EAAK,GAEb,CAEA,SAAS0yE,GAAWprP,GAEnBwnP,EAAct5P,KAAMutH,EAAqB,EAARz7G,EAAY,IAC7CwnP,EAAct5P,KAAMutH,EAAqB,EAARz7G,EAAY,IAC7CwnP,EAAct5P,KAAMutH,EAAqB,EAARz7G,EAAY,GAE9C,CAGA,SAASsrP,GAAOE,GAEf/D,EAAQv5P,KAAMs9P,EAAQl+P,GACtBm6P,EAAQv5P,KAAMs9P,EAAQ/yP,EAEvB,EA7KA,WAEC,IAAMyjC,EAAQsrN,EAAcx+P,OAAS,EAErC,GAAK6+P,EAAe,CAOnB,IALA,IAAI/gB,EAAQ,EACR3rM,EAASiuN,EAAOtiB,EAIVh5O,EAAI,EAAGA,EAAIu7P,EAAMv7P,IAAO,CAEjC,IAAMwvL,EAAO0pE,EAAOl5P,GACpBq9P,GAAI7tE,EAAM,GAAMniJ,EAAQmiJ,EAAM,GAAMniJ,EAAQmiJ,EAAM,GAAMniJ,EAEzD,CAGAA,EAASiuN,GADTtiB,EAAQ8gB,EAAwB,EAAhBK,GAKhB,IAAM,IAAIn6P,EAAI,EAAGA,EAAIu7P,EAAMv7P,IAAO,CAEjC,IAAMwvL,EAAO0pE,EAAOl5P,GACpBq9P,GAAI7tE,EAAM,GAAMniJ,EAAQmiJ,EAAM,GAAMniJ,EAAQmiJ,EAAM,GAAMniJ,EAEzD,CAED,KAAO,CAIN,IAAM,IAAIrtC,EAAI,EAAGA,EAAIu7P,EAAMv7P,IAAO,CAEjC,IAAMwvL,EAAO0pE,EAAOl5P,GACpBq9P,GAAI7tE,EAAM,GAAKA,EAAM,GAAKA,EAAM,GAEjC,CAIA,IAAM,IAAIxvL,EAAI,EAAGA,EAAIu7P,EAAMv7P,IAAO,CAEjC,IAAMwvL,EAAO0pE,EAAOl5P,GACpBq9P,GAAI7tE,EAAM,GAAM8rE,EAAOxB,EAAOtqE,EAAM,GAAM8rE,EAAOxB,EAAOtqE,EAAM,GAAM8rE,EAAOxB,EAE5E,CAED,CAEAxpE,EAAMnD,SAAU/+I,EAAOsrN,EAAcx+P,OAAS,EAAIkzC,EAAO,EAE1D,CA/DAuvN,GAmEA,WAEC,IAAMvvN,EAAQsrN,EAAcx+P,OAAS,EACjC+hQ,EAAc,EAClBD,GAAW/D,EAASgE,GACpBA,GAAehE,EAAQ/9P,OAEvB,IAAM,IAAI+O,EAAI,EAAGkmD,EAAKykM,EAAM15P,OAAQ+O,EAAIkmD,EAAIlmD,IAAO,CAElD,IAAMixP,EAAQtG,EAAO3qP,GACrB+yP,GAAW9B,EAAO+B,GAGlBA,GAAe/B,EAAMhgQ,MAEtB,CAGAo1L,EAAMnD,SAAU/+I,EAAOsrN,EAAcx+P,OAAS,EAAIkzC,EAAO,EAG1D,CApFAwvN,EAoLD,CAAC,OAjnBDnE,EAAKrjP,aAAc,WAAY,IAAI+xK,GAAwBuxE,EAAe,IAC1ED,EAAKrjP,aAAc,KAAM,IAAI+xK,GAAwBwxE,EAAS,IAE9DF,EAAK9G,uBA8mBJ8G,CAEF,CAmCC,OAnCA5sP,EAAAysP,EAAA,EAAAxzP,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAA06O,EAAAp5P,WAAA,eAAAC,KAAA,MAKV,OAwFF,SAAmB+6K,EAAQ32K,EAASyiC,GAInC,GAFAA,EAAKk0I,OAAS,GAETj7K,MAAM0E,QAASu2K,GAEnB,IAAM,IAAIl7K,EAAI,EAAGmK,EAAI+wK,EAAOhgL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAMmd,EAAQ+9J,EAAQl7K,GAEtBgnC,EAAKk0I,OAAO96K,KAAM+c,EAAMgiG,KAEzB,MAIAn4E,EAAKk0I,OAAO96K,KAAM86K,EAAO/7D,WAIGzxG,IAAxBnJ,EAAQ61P,cAA4BpzN,EAAKziC,QAAQ61P,YAAc71P,EAAQ61P,YAAYt3F,UAExF,OAAO97H,CAER,CAhHS62N,CAHQv6P,KAAKw4K,WAAWZ,OACf53K,KAAKw4K,WAAWv3K,QAEEyiC,EAEnC,IAAC,EAAAlhC,IAAA,WAAA/D,MAED,SAAiBilC,EAAMk0I,GAItB,IAFA,IAAM4iF,EAAiB,GAEb3qP,EAAI,EAAGq3K,EAAKxjJ,EAAKk0I,OAAOhgL,OAAQiY,EAAIq3K,EAAIr3K,IAAO,CAExD,IAAMgK,EAAQ+9J,EAAQl0I,EAAKk0I,OAAQ/nK,IAEnC2qP,EAAe19P,KAAM+c,EAEtB,CAEA,IAAMi9O,EAAcpzN,EAAKziC,QAAQ61P,YAQjC,YANqB1sP,IAAhB0sP,IAEJpzN,EAAKziC,QAAQ61P,aAAc,IAAI9N,GAAQ8N,EAAYlyP,OAASwlP,SAAU0M,IAIhE,IAAId,EAAiBwE,EAAgB92N,EAAKziC,QAElD,KAAC+0P,CAAA,CAnrBmB,CAAStwE,IAurBxBuxE,GAAmB,CAExBgD,cAAe,SAAWnvF,EAAUmiB,EAAUwtE,EAAQC,EAAQC,GAE7D,IAAMC,EAAM3tE,EAAmB,EAATwtE,GAChBI,EAAM5tE,EAAmB,EAATwtE,EAAa,GAC7BK,EAAM7tE,EAAmB,EAATytE,GAChBK,EAAM9tE,EAAmB,EAATytE,EAAa,GAC7BM,EAAM/tE,EAAmB,EAAT0tE,GAChBM,EAAMhuE,EAAmB,EAAT0tE,EAAa,GAEnC,MAAO,CACN,IAAIxlG,GAASylG,EAAKC,GAClB,IAAI1lG,GAAS2lG,EAAKC,GAClB,IAAI5lG,GAAS6lG,EAAKC,GAGpB,EAEAd,mBAAoB,SAAWrvF,EAAUmiB,EAAUwtE,EAAQC,EAAQC,EAAQO,GAE1E,IAAMN,EAAM3tE,EAAmB,EAATwtE,GAChBI,EAAM5tE,EAAmB,EAATwtE,EAAa,GAC7BU,EAAMluE,EAAmB,EAATwtE,EAAa,GAC7BK,EAAM7tE,EAAmB,EAATytE,GAChBK,EAAM9tE,EAAmB,EAATytE,EAAa,GAC7BU,EAAMnuE,EAAmB,EAATytE,EAAa,GAC7BM,EAAM/tE,EAAmB,EAAT0tE,GAChBM,EAAMhuE,EAAmB,EAAT0tE,EAAa,GAC7BU,EAAMpuE,EAAmB,EAAT0tE,EAAa,GAC7BW,EAAMruE,EAAmB,EAATiuE,GAChBK,EAAMtuE,EAAmB,EAATiuE,EAAa,GAC7BM,EAAMvuE,EAAmB,EAATiuE,EAAa,GAEnC,OAAKj+P,KAAK4f,IAAKg+O,EAAME,GAAQ99P,KAAK4f,IAAK+9O,EAAME,GAErC,CACN,IAAI3lG,GAASylG,EAAK,EAAIO,GACtB,IAAIhmG,GAAS2lG,EAAK,EAAIM,GACtB,IAAIjmG,GAAS6lG,EAAK,EAAIK,GACtB,IAAIlmG,GAASmmG,EAAK,EAAIE,IAKhB,CACN,IAAIrmG,GAAS0lG,EAAK,EAAIM,GACtB,IAAIhmG,GAAS4lG,EAAK,EAAIK,GACtB,IAAIjmG,GAAS8lG,EAAK,EAAII,GACtB,IAAIlmG,GAASomG,EAAK,EAAIC,GAKzB,GA4BA,IAEKC,GAAmB,SAAAC,GAAA1/O,EAAAy/O,EAAAC,GAAA,IAAAC,EAAAhhP,EAAA8gP,GAExB,SAAAA,IAAsC,IAAAG,EAAzB1yF,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGuhC,EAAMvhC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAgxP,GAElC,IAAMnkQ,GAAM,EAAI2F,KAAK04J,KAAM,IAAQ,EAE7Bs3B,EAAW,EACd,EAAG31L,EAAG,EAAI,EAAGA,EAAG,GAAM,GAAKA,EAAG,EAAI,GAAKA,EAAG,EAC5C,GAAK,EAAGA,EAAI,EAAG,EAAGA,EAAG,GAAK,GAAKA,EAAI,EAAG,GAAKA,EAC3CA,EAAG,GAAK,EAAIA,EAAG,EAAG,GAAMA,EAAG,GAAK,GAAMA,EAAG,EAAG,GAiB3C,OAPFskQ,EAAAD,EAAA9+P,KAAA,KAAOowL,EAPS,CACf,EAAG,GAAI,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,GAAK,EAAG,GAAI,GACjD,EAAG,EAAG,EAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAC/C,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3C,EAAG,EAAG,EAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAGpB/jB,EAAQ1nI,IAE7B58B,KAAO,sBAEZg3P,EAAKpjF,WAAa,CACjBtP,OAAQA,EACR1nI,OAAQA,GACPo6N,CAEH,CAMC,OANAryP,EAAAkyP,EAAA,OAAAj5P,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAI+3N,EAAqB/3N,EAAKwlI,OAAQxlI,EAAKlC,OAEnD,KAACi6N,CAAA,CAlCuB,CAASxN,IAsC5B4N,GAAkB,SAAAC,GAAA9/O,EAAA6/O,EAAAC,GAAA,IAAAC,EAAAphP,EAAAkhP,GAEvB,SAAAA,IAAsC,IAAAG,EAAzB9yF,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGuhC,EAAMvhC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAoxP,GAoBhC,OAPFG,EAAAD,EAAAl/P,KAAA,KAXiB,CAChB,EAAG,EAAG,GAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3B,GAAK,EAAG,EAAI,EAAG,EAAG,EAAG,EAAG,GAAK,GAGd,CACf,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EACxB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EACxB,EAAG,EAAG,EAAG,EAAG,EAAG,GAGUqsK,EAAQ1nI,IAE7B58B,KAAO,qBAEZo3P,EAAKxjF,WAAa,CACjBtP,OAAQA,EACR1nI,OAAQA,GACPw6N,CAEH,CAMC,OANAzyP,EAAAsyP,EAAA,OAAAr5P,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAIm4N,EAAoBn4N,EAAKwlI,OAAQxlI,EAAKlC,OAElD,KAACq6N,CAAA,CA9BsB,CAAS5N,IAkC3BgO,GAAY,SAAAC,GAAAlgP,EAAAigP,EAAAC,GAAA,IAAAC,EAAAxhP,EAAAshP,GAEjB,SAAAA,IAAiI,IAAAG,EAApHC,EAAWp8P,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAKq8P,EAAWr8P,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGs8P,EAAat8P,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGu8P,EAAWv8P,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG0sP,EAAU1sP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG2sP,EAAW3sP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAa,EAAVhD,KAAK00J,GAAMlnJ,EAAA,KAAAwxP,IAE7HG,EAAAD,EAAAt/P,KAAA,OAEK+H,KAAO,eAEZw3P,EAAK5jF,WAAa,CACjB6jF,YAAaA,EACbC,YAAaA,EACbC,cAAeA,EACfC,YAAaA,EACb7P,WAAYA,EACZC,YAAaA,GAGd2P,EAAgBt/P,KAAKC,IAAK,EAAGq/P,GAmB7B,IAdA,IAAMp1E,EAAU,GACV8F,EAAW,GACX5F,EAAU,GACVC,EAAM,GAIRpe,EAASmzF,EACPI,GAAiBH,EAAcD,IAZrCG,EAAcv/P,KAAKC,IAAK,EAAGs/P,IAarB9tC,EAAS,IAAI5nD,GACbrH,EAAK,IAAItK,GAILtlJ,EAAI,EAAGA,GAAK2sP,EAAa3sP,IAAO,CAEzC,IAAM,IAAInT,EAAI,EAAGA,GAAK6/P,EAAe7/P,IAAO,CAI3C,IAAMk/F,EAAU+wJ,EAAajwP,EAAI6/P,EAAgB3P,EAIjDl+B,EAAOxyN,EAAIgtK,EAASjsK,KAAKk3J,IAAKv4D,GAC9B8yH,EAAOrnN,EAAI6hK,EAASjsK,KAAKm3J,IAAKx4D,GAE9BqxF,EAASnwL,KAAM4xN,EAAOxyN,EAAGwyN,EAAOrnN,EAAGqnN,EAAOpnN,GAI1C+/K,EAAQvqL,KAAM,EAAG,EAAG,GAIpB2iK,EAAGvjK,GAAMwyN,EAAOxyN,EAAIogQ,EAAc,GAAM,EACxC78F,EAAGp4J,GAAMqnN,EAAOrnN,EAAIi1P,EAAc,GAAM,EAExCh1E,EAAIxqL,KAAM2iK,EAAGvjK,EAAGujK,EAAGp4J,EAEpB,CAIA6hK,GAAUuzF,CAEX,CAIA,IAAM,IAAI5sP,EAAI,EAAGA,EAAI2sP,EAAa3sP,IAIjC,IAFA,IAAM6sP,EAAoB7sP,GAAM0sP,EAAgB,GAEtC7/P,EAAI,EAAGA,EAAI6/P,EAAe7/P,IAAO,CAE1C,IAAMk/F,EAAUl/F,EAAIggQ,EAEd1gQ,EAAI4/F,EACJr1F,EAAIq1F,EAAU2gK,EAAgB,EAC9BtgQ,EAAI2/F,EAAU2gK,EAAgB,EAC9B/1P,EAAIo1F,EAAU,EAIpBurF,EAAQrqL,KAAMd,EAAGuK,EAAGC,GACpB2gL,EAAQrqL,KAAMyJ,EAAGtK,EAAGuK,EAErB,CAS+D,OAHhE41P,EAAKpyE,SAAU7C,GACfi1E,EAAKtpP,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACrEmvE,EAAKtpP,aAAc,SAAU,IAAI+xK,GAAwBwC,EAAS,IAClE+0E,EAAKtpP,aAAc,KAAM,IAAI+xK,GAAwByC,EAAK,IAAM80E,CAEjE,CAMC,OANA7yP,EAAA0yP,EAAA,OAAAz5P,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAIu4N,EAAcv4N,EAAK24N,YAAa34N,EAAK44N,YAAa54N,EAAK64N,cAAe74N,EAAK84N,YAAa94N,EAAKipN,WAAYjpN,EAAKkpN,YAE1H,KAACqP,CAAA,CA3GgB,CAASv2E,IA+GrBi3E,GAAa,SAAAC,GAAA5gP,EAAA2gP,EAAAC,GAAA,IAAAC,EAAAliP,EAAAgiP,GAElB,SAAAA,IAA2I,IAAAG,EAA9HllF,EAAM33K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIixP,GAAO,CAAE,IAAI/7F,GAAS,EAAG,IAAO,IAAIA,IAAW,IAAO,IAAO,IAAIA,GAAS,IAAO,MAAWohG,EAAat2P,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAEwK,EAAA,KAAAkyP,IAEvIG,EAAAD,EAAAhgQ,KAAA,OACK+H,KAAO,gBAEZk4P,EAAKtkF,WAAa,CACjBZ,OAAQA,EACR2+E,cAAeA,GAKhB,IAAMpvE,EAAU,GACV8F,EAAW,GACX5F,EAAU,GACVC,EAAM,GAIR6F,EAAa,EACbc,EAAa,EAIjB,IAAiC,IAA5BtxL,MAAM0E,QAASu2K,GAEnB0+E,EAAU1+E,QAIV,IAAM,IAAIl7K,EAAI,EAAGA,EAAIk7K,EAAOhgL,OAAQ8E,IAEnC45P,EAAU1+E,EAAQl7K,IAElBogQ,EAAKjzE,SAAUsD,EAAYc,EAAYvxL,GAEvCywL,GAAcc,EACdA,EAAa,EAgBf,SAASqoE,EAAUz8O,GAElB,IAAMkjP,EAAc9vE,EAASr1L,OAAS,EAChCqyK,EAASpwJ,EAAM69O,cAAenB,GAEhCyG,EAAgB/yF,EAAOpwJ,MACrBojP,EAAahzF,EAAOqnF,OAIuB,IAA5CoE,GAAWiC,YAAaqF,KAE5BA,EAAgBA,EAAcz/P,WAI/B,IAAM,IAAIb,EAAI,EAAGmK,EAAIo2P,EAAWrlQ,OAAQ8E,EAAImK,EAAGnK,IAAO,CAErD,IAAMwgQ,EAAYD,EAAYvgQ,IAEe,IAAxCg5P,GAAWiC,YAAauF,KAE5BD,EAAYvgQ,GAAMwgQ,EAAU3/P,UAI9B,CAMA,IAJA,IAAMq4P,EAAQF,GAAWmC,iBAAkBmF,EAAeC,GAIhDvgQ,EAAI,EAAGmK,EAAIo2P,EAAWrlQ,OAAQ8E,EAAImK,EAAGnK,IAAO,CAErD,IAAMwgQ,EAAYD,EAAYvgQ,GAC9BsgQ,EAAgBA,EAAcv7P,OAAQy7P,EAEvC,CAIA,IAAM,IAAIxgQ,EAAI,EAAGmK,EAAIm2P,EAAcplQ,OAAQ8E,EAAImK,EAAGnK,IAAO,CAExD,IAAMgyN,EAASsuC,EAAetgQ,GAE9BuwL,EAASnwL,KAAM4xN,EAAOxyN,EAAGwyN,EAAOrnN,EAAG,GACnCggL,EAAQvqL,KAAM,EAAG,EAAG,GACpBwqL,EAAIxqL,KAAM4xN,EAAOxyN,EAAGwyN,EAAOrnN,EAE5B,CAIA,IAAM,IAAI3K,EAAI,EAAGmK,EAAI+uP,EAAMh+P,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEhD,IAAMwvL,EAAO0pE,EAAOl5P,GAEdV,EAAIkwL,EAAM,GAAM6wE,EAChBx2P,EAAI2lL,EAAM,GAAM6wE,EAChB9gQ,EAAIiwL,EAAM,GAAM6wE,EAEtB51E,EAAQrqL,KAAMd,EAAGuK,EAAGtK,GACpBgyL,GAAc,CAEf,CAED,CAAC,OA1ED6uE,EAAK9yE,SAAU7C,GACf21E,EAAKhqP,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACrE6vE,EAAKhqP,aAAc,SAAU,IAAI+xK,GAAwBwC,EAAS,IAClEy1E,EAAKhqP,aAAc,KAAM,IAAI+xK,GAAwByC,EAAK,IAuEzDw1E,CAEF,CA0BC,OA1BAvzP,EAAAozP,EAAA,EAAAn6P,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAAqhP,EAAA//P,WAAA,eAAAC,KAAA,MAIV,OAsBF,SAAiB+6K,EAAQl0I,GAIxB,GAFAA,EAAKk0I,OAAS,GAETj7K,MAAM0E,QAASu2K,GAEnB,IAAM,IAAIl7K,EAAI,EAAGmK,EAAI+wK,EAAOhgL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAMmd,EAAQ+9J,EAAQl7K,GAEtBgnC,EAAKk0I,OAAO96K,KAAM+c,EAAMgiG,KAEzB,MAIAn4E,EAAKk0I,OAAO96K,KAAM86K,EAAO/7D,MAI1B,OAAOn4E,CAER,CA5CS87H,CAFQx/J,KAAKw4K,WAAWZ,OAERl0I,EAExB,IAAC,EAAAlhC,IAAA,WAAA/D,MAED,SAAiBilC,EAAMk0I,GAItB,IAFA,IAAM4iF,EAAiB,GAEb3qP,EAAI,EAAGq3K,EAAKxjJ,EAAKk0I,OAAOhgL,OAAQiY,EAAIq3K,EAAIr3K,IAAO,CAExD,IAAMgK,EAAQ+9J,EAAQl0I,EAAKk0I,OAAQ/nK,IAEnC2qP,EAAe19P,KAAM+c,EAEtB,CAEA,OAAO,IAAI8iP,EAAenC,EAAgB92N,EAAK6yN,cAEhD,KAACoG,CAAA,CArJiB,CAASj3E,IA+K3B,IAEKy3E,GAAc,SAAAC,GAAAphP,EAAAmhP,EAAAC,GAAA,IAAAC,EAAA1iP,EAAAwiP,GAEnB,SAAAA,IAAiJ,IAAAG,EAApIp0F,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG4sL,EAAa5sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI6sL,EAAc7sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI0rP,EAAQ1rP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG2rP,EAAS3rP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAa,EAAVhD,KAAK00J,GAAQg7F,EAAU1sP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG2sP,EAAW3sP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGhD,KAAK00J,GAAElnJ,EAAA,KAAA0yP,IAE7IG,EAAAD,EAAAxgQ,KAAA,OACK+H,KAAO,iBAEZ04P,EAAK9kF,WAAa,CACjBtP,OAAQA,EACR2jB,cAAeA,EACfC,eAAgBA,EAChB6+D,SAAUA,EACVC,UAAWA,EACXe,WAAYA,EACZC,YAAaA,GAGd//D,EAAgB5vL,KAAKC,IAAK,EAAGD,KAAKwf,MAAOowK,IACzCC,EAAiB7vL,KAAKC,IAAK,EAAGD,KAAKwf,MAAOqwK,IAmB1C,IAjBA,IAAMywE,EAAWtgQ,KAAKiuC,IAAKyhN,EAAaC,EAAa3vP,KAAK00J,IAEtD/iJ,EAAQ,EACNkvH,EAAO,GAEP4wF,EAAS,IAAI5nD,GACbiC,EAAS,IAAIjC,GAIbqgB,EAAU,GACV8F,EAAW,GACX5F,EAAU,GACVC,EAAM,GAIF7f,EAAK,EAAGA,GAAMqlB,EAAgBrlB,IAAQ,CAE/C,IAAM+1F,EAAc,GAEdr2P,EAAIsgK,EAAKqlB,EAIX2wE,EAAU,EAEH,GAANh2F,GAAyB,GAAdklF,EAEf8Q,EAAU,GAAM5wE,EAELplB,GAAMqlB,GAAkBywE,GAAYtgQ,KAAK00J,KAEpD8rG,GAAY,GAAM5wE,GAInB,IAAM,IAAIrlB,EAAK,EAAGA,GAAMqlB,EAAerlB,IAAQ,CAE9C,IAAMjgK,EAAIigK,EAAKqlB,EAIf6hC,EAAOxyN,GAAMgtK,EAASjsK,KAAKk3J,IAAKw3F,EAAWpkP,EAAIqkP,GAAc3uP,KAAKm3J,IAAKu4F,EAAaxlP,EAAIylP,GACxFl+B,EAAOrnN,EAAI6hK,EAASjsK,KAAKk3J,IAAKw4F,EAAaxlP,EAAIylP,GAC/Cl+B,EAAOpnN,EAAI4hK,EAASjsK,KAAKm3J,IAAKu3F,EAAWpkP,EAAIqkP,GAAc3uP,KAAKm3J,IAAKu4F,EAAaxlP,EAAIylP,GAEtF3/D,EAASnwL,KAAM4xN,EAAOxyN,EAAGwyN,EAAOrnN,EAAGqnN,EAAOpnN,GAI1CyhK,EAAOrN,KAAMgzD,GAAS7tG,YACtBwmE,EAAQvqL,KAAMisK,EAAO7sK,EAAG6sK,EAAO1hK,EAAG0hK,EAAOzhK,GAIzCggL,EAAIxqL,KAAMyK,EAAIk2P,EAAS,EAAIt2P,GAE3Bq2P,EAAY1gQ,KAAM8R,IAEnB,CAEAkvH,EAAKhhI,KAAM0gQ,EAEZ,CAIA,IAAM,IAAI/1F,EAAK,EAAGA,EAAKqlB,EAAgBrlB,IAEtC,IAAM,IAAID,EAAK,EAAGA,EAAKqlB,EAAerlB,IAAQ,CAE7C,IAAMxrK,EAAI8hI,EAAM2pC,GAAMD,EAAK,GACrBjhK,EAAIu3H,EAAM2pC,GAAMD,GAChBvrK,EAAI6hI,EAAM2pC,EAAK,GAAKD,GACpBhhK,EAAIs3H,EAAM2pC,EAAK,GAAKD,EAAK,IAEnB,IAAPC,GAAYklF,EAAa,IAAIxlE,EAAQrqL,KAAMd,EAAGuK,EAAGC,IACjDihK,IAAOqlB,EAAiB,GAAKywE,EAAWtgQ,KAAK00J,KAAKw1B,EAAQrqL,KAAMyJ,EAAGtK,EAAGuK,EAE5E,CAS+D,OAHhE82P,EAAKtzE,SAAU7C,GACfm2E,EAAKxqP,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACrEqwE,EAAKxqP,aAAc,SAAU,IAAI+xK,GAAwBwC,EAAS,IAClEi2E,EAAKxqP,aAAc,KAAM,IAAI+xK,GAAwByC,EAAK,IAAMg2E,CAEjE,CAMC,OANA/zP,EAAA4zP,EAAA,OAAA36P,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAIy5N,EAAgBz5N,EAAKwlI,OAAQxlI,EAAKmpJ,cAAenpJ,EAAKopJ,eAAgBppJ,EAAKioN,SAAUjoN,EAAKkoN,UAAWloN,EAAKipN,WAAYjpN,EAAKkpN,YAEvI,KAACuQ,CAAA,CArHkB,CAASz3E,IAyHvBg4E,GAAmB,SAAAC,GAAA3hP,EAAA0hP,EAAAC,GAAA,IAAAC,EAAAjjP,EAAA+iP,GAExB,SAAAA,IAAsC,IAAAG,EAAzB30F,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGuhC,EAAMvhC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAizP,GAiBhC,OAPFG,EAAAD,EAAA/gQ,KAAA,KARiB,CAChB,EAAG,EAAG,GAAM,GAAK,EAAG,GAAM,EAAG,GAAK,EAAI,GAAK,GAAK,GAGjC,CACf,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGTqsK,EAAQ1nI,IAE7B58B,KAAO,sBAEZi5P,EAAKrlF,WAAa,CACjBtP,OAAQA,EACR1nI,OAAQA,GACPq8N,CAEH,CAMC,OANAt0P,EAAAm0P,EAAA,OAAAl7P,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAIg6N,EAAqBh6N,EAAKwlI,OAAQxlI,EAAKlC,OAEnD,KAACk8N,CAAA,CA3BuB,CAASzP,IA+B5B6P,GAAa,SAAAC,GAAA/hP,EAAA8hP,EAAAC,GAAA,IAAAC,EAAArjP,EAAAmjP,GAElB,SAAAA,IAAkG,IAAAG,EAArF/0F,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGi+P,EAAIj+P,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAKqsP,EAAcrsP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGk+P,EAAel+P,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGm+P,EAAGn+P,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAa,EAAVhD,KAAK00J,GAAMlnJ,EAAA,KAAAqzP,IAE9FG,EAAAD,EAAAnhQ,KAAA,OACK+H,KAAO,gBAEZq5P,EAAKzlF,WAAa,CACjBtP,OAAQA,EACRg1F,KAAMA,EACN5R,eAAgBA,EAChB6R,gBAAiBA,EACjBC,IAAKA,GAGN9R,EAAiBrvP,KAAKwf,MAAO6vO,GAC7B6R,EAAkBlhQ,KAAKwf,MAAO0hP,GAiB9B,IAbA,IAAMh3E,EAAU,GACV8F,EAAW,GACX5F,EAAU,GACVC,EAAM,GAINjxB,EAAS,IAAIyQ,GACb4nD,EAAS,IAAI5nD,GACbiC,EAAS,IAAIjC,GAITj3J,EAAI,EAAGA,GAAKy8O,EAAgBz8O,IAErC,IAAM,IAAInT,EAAI,EAAGA,GAAKyhQ,EAAiBzhQ,IAAO,CAE7C,IAAM6K,EAAI7K,EAAIyhQ,EAAkBC,EAC1Bj3P,EAAI0I,EAAIy8O,EAAiBrvP,KAAK00J,GAAK,EAIzC+8D,EAAOxyN,GAAMgtK,EAASg1F,EAAOjhQ,KAAKk3J,IAAKhtJ,IAAQlK,KAAKk3J,IAAK5sJ,GACzDmnN,EAAOrnN,GAAM6hK,EAASg1F,EAAOjhQ,KAAKk3J,IAAKhtJ,IAAQlK,KAAKm3J,IAAK7sJ,GACzDmnN,EAAOpnN,EAAI42P,EAAOjhQ,KAAKm3J,IAAKjtJ,GAE5B8lL,EAASnwL,KAAM4xN,EAAOxyN,EAAGwyN,EAAOrnN,EAAGqnN,EAAOpnN,GAI1C+uJ,EAAOn6J,EAAIgtK,EAASjsK,KAAKk3J,IAAK5sJ,GAC9B8uJ,EAAOhvJ,EAAI6hK,EAASjsK,KAAKm3J,IAAK7sJ,GAC9BwhK,EAAOzT,WAAYo5D,EAAQr4D,GAASx1C,YAEpCwmE,EAAQvqL,KAAMisK,EAAO7sK,EAAG6sK,EAAO1hK,EAAG0hK,EAAOzhK,GAIzCggL,EAAIxqL,KAAMJ,EAAIyhQ,GACd72E,EAAIxqL,KAAM+S,EAAIy8O,EAEf,CAMD,IAAM,IAAIz8O,EAAI,EAAGA,GAAKy8O,EAAgBz8O,IAErC,IAAM,IAAInT,EAAI,EAAGA,GAAKyhQ,EAAiBzhQ,IAAO,CAI7C,IAAMV,GAAMmiQ,EAAkB,GAAMtuP,EAAInT,EAAI,EACtC6J,GAAM43P,EAAkB,IAAQtuP,EAAI,GAAMnT,EAAI,EAC9CT,GAAMkiQ,EAAkB,IAAQtuP,EAAI,GAAMnT,EAC1C8J,GAAM23P,EAAkB,GAAMtuP,EAAInT,EAIxCyqL,EAAQrqL,KAAMd,EAAGuK,EAAGC,GACpB2gL,EAAQrqL,KAAMyJ,EAAGtK,EAAGuK,EAErB,CAS+D,OAHhEy3P,EAAKj0E,SAAU7C,GACf82E,EAAKnrP,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACrEgxE,EAAKnrP,aAAc,SAAU,IAAI+xK,GAAwBwC,EAAS,IAClE42E,EAAKnrP,aAAc,KAAM,IAAI+xK,GAAwByC,EAAK,IAAM22E,CAEjE,CAMC,OANA10P,EAAAu0P,EAAA,OAAAt7P,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAIo6N,EAAep6N,EAAKwlI,OAAQxlI,EAAKw6N,KAAMx6N,EAAK4oN,eAAgB5oN,EAAKy6N,gBAAiBz6N,EAAK06N,IAEnG,KAACN,CAAA,CApGiB,CAASp4E,IAwGtB24E,GAAiB,SAAAC,GAAAtiP,EAAAqiP,EAAAC,GAAA,IAAAC,EAAA5jP,EAAA0jP,GAEtB,SAAAA,IAA8F,IAAAG,EAAjFt1F,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGi+P,EAAIj+P,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAKk+P,EAAel+P,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAIqsP,EAAcrsP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG+G,EAAC/G,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGgH,EAAChH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAA4zP,IAE1FG,EAAAD,EAAA1hQ,KAAA,OACK+H,KAAO,oBAEZ45P,EAAKhmF,WAAa,CACjBtP,OAAQA,EACRg1F,KAAMA,EACNC,gBAAiBA,EACjB7R,eAAgBA,EAChBtlP,EAAGA,EACHC,EAAGA,GAGJk3P,EAAkBlhQ,KAAKwf,MAAO0hP,GAC9B7R,EAAiBrvP,KAAKwf,MAAO6vO,GAuB7B,IAnBA,IAAMnlE,EAAU,GACV8F,EAAW,GACX5F,EAAU,GACVC,EAAM,GAINonC,EAAS,IAAI5nD,GACbiC,EAAS,IAAIjC,GAEb23F,EAAK,IAAI33F,GACT43F,EAAK,IAAI53F,GAET7sI,EAAI,IAAI6sI,GACRnhH,EAAI,IAAImhH,GACR9sH,EAAI,IAAI8sH,GAIJpqK,EAAI,EAAGA,GAAKyhQ,IAAoBzhQ,EAAI,CAI7C,IAAM6K,EAAI7K,EAAIyhQ,EAAkBn3P,EAAI/J,KAAK00J,GAAK,EAK9CgtG,EAA0Bp3P,EAAGP,EAAGC,EAAGiiK,EAAQu1F,GAC3CE,EAA0Bp3P,EAAI,IAAMP,EAAGC,EAAGiiK,EAAQw1F,GAIlD/4M,EAAE2vG,WAAYopG,EAAID,GAClBzkN,EAAEq7G,WAAYqpG,EAAID,GAClBxkO,EAAEiuI,aAAcviH,EAAG3L,GACnBA,EAAEkuH,aAAcjuI,EAAG0rB,GAInB1rB,EAAE4mF,YACF7mE,EAAE6mE,YAEF,IAAM,IAAIhxG,EAAI,EAAGA,GAAKy8O,IAAmBz8O,EAAI,CAK5C,IAAM1I,EAAI0I,EAAIy8O,EAAiBrvP,KAAK00J,GAAK,EACnC4H,GAAO2kG,EAAOjhQ,KAAKk3J,IAAKhtJ,GACxBqyJ,EAAK0kG,EAAOjhQ,KAAKm3J,IAAKjtJ,GAK5BunN,EAAOxyN,EAAIuiQ,EAAGviQ,GAAMq9J,EAAKv/G,EAAE99C,EAAIs9J,EAAKv/H,EAAE/9B,GACtCwyN,EAAOrnN,EAAIo3P,EAAGp3P,GAAMkyJ,EAAKv/G,EAAE3yC,EAAImyJ,EAAKv/H,EAAE5yB,GACtCqnN,EAAOpnN,EAAIm3P,EAAGn3P,GAAMiyJ,EAAKv/G,EAAE1yC,EAAIkyJ,EAAKv/H,EAAE3yB,GAEtC2lL,EAASnwL,KAAM4xN,EAAOxyN,EAAGwyN,EAAOrnN,EAAGqnN,EAAOpnN,GAI1CyhK,EAAOzT,WAAYo5D,EAAQ+vC,GAAK59I,YAEhCwmE,EAAQvqL,KAAMisK,EAAO7sK,EAAG6sK,EAAO1hK,EAAG0hK,EAAOzhK,GAIzCggL,EAAIxqL,KAAMJ,EAAIyhQ,GACd72E,EAAIxqL,KAAM+S,EAAIy8O,EAEf,CAED,CAIA,IAAM,IAAIz8O,EAAI,EAAGA,GAAKsuP,EAAiBtuP,IAEtC,IAAM,IAAInT,EAAI,EAAGA,GAAK4vP,EAAgB5vP,IAAO,CAI5C,IAAMV,GAAMswP,EAAiB,IAAQz8O,EAAI,IAAQnT,EAAI,GAC/C6J,GAAM+lP,EAAiB,GAAMz8O,GAAMnT,EAAI,GACvCT,GAAMqwP,EAAiB,GAAMz8O,EAAInT,EACjC8J,GAAM8lP,EAAiB,IAAQz8O,EAAI,GAAMnT,EAI/CyqL,EAAQrqL,KAAMd,EAAGuK,EAAGC,GACpB2gL,EAAQrqL,KAAMyJ,EAAGtK,EAAGuK,EAErB,CAaD,SAASm4P,EAA0Bp3P,EAAGP,EAAGC,EAAGiiK,EAAQ3pG,GAEnD,IAAMq/L,EAAK3hQ,KAAKk3J,IAAK5sJ,GACfs3P,EAAK5hQ,KAAKm3J,IAAK7sJ,GACfu3P,EAAU73P,EAAID,EAAIO,EAClBw3P,EAAK9hQ,KAAKk3J,IAAK2qG,GAErBv/L,EAASrjE,EAAIgtK,GAAW,EAAI61F,GAAO,GAAMH,EACzCr/L,EAASl4D,EAAI6hK,GAAW,EAAI61F,GAAOF,EAAK,GACxCt/L,EAASj4D,EAAI4hK,EAASjsK,KAAKm3J,IAAK0qG,GAAY,EAE7C,CAAC,OAlBDN,EAAKx0E,SAAU7C,GACfq3E,EAAK1rP,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACrEuxE,EAAK1rP,aAAc,SAAU,IAAI+xK,GAAwBwC,EAAS,IAClEm3E,EAAK1rP,aAAc,KAAM,IAAI+xK,GAAwByC,EAAK,IAezDk3E,CAEF,CAMC,OANAj1P,EAAA80P,EAAA,OAAA77P,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAI26N,EAAmB36N,EAAKwlI,OAAQxlI,EAAKw6N,KAAMx6N,EAAKy6N,gBAAiBz6N,EAAK4oN,eAAgB5oN,EAAK18B,EAAG08B,EAAKz8B,EAE/G,KAACo3P,CAAA,CAnJqB,CAAS34E,IAuJ1Bs5E,GAAY,SAAAC,GAAAjjP,EAAAgjP,EAAAC,GAAA,IAAAC,EAAAvkP,EAAAqkP,GAEjB,SAAAA,IAAsM,IAAAG,EAAzLjoK,EAAIj3F,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIqoP,GAAuB,IAAIxhF,IAAW,GAAK,EAAG,GAAK,IAAIA,IAAW,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,EAAG,IAAOq3F,EAAel+P,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAIipK,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqsP,EAAcrsP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGgjP,EAAMhjP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAAQwK,EAAA,KAAAu0P,IAElMG,EAAAD,EAAAriQ,KAAA,OACK+H,KAAO,eAEZu6P,EAAK3mF,WAAa,CACjBthF,KAAMA,EACNinK,gBAAiBA,EACjBj1F,OAAQA,EACRojF,eAAgBA,EAChBrJ,OAAQA,GAGT,IAAMmc,EAASloK,EAAKsgK,oBAAqB2G,EAAiBlb,GAI1Dkc,EAAK33E,SAAW43E,EAAO53E,SACvB23E,EAAK93E,QAAU+3E,EAAO/3E,QACtB83E,EAAKjc,UAAYkc,EAAOlc,UAIxB,IAAMx0B,EAAS,IAAI5nD,GACbiC,EAAS,IAAIjC,GACbrH,EAAK,IAAItK,GACX76G,EAAI,IAAIwsH,GAINmmB,EAAW,GACX5F,EAAU,GACVC,EAAM,GACNH,EAAU,GAyChB,SAASk4E,EAAiB3iQ,GAIzB49C,EAAI48C,EAAKmrJ,WAAY3lP,EAAIyhQ,EAAiB7jN,GAS1C,IALA,IAAMN,EAAIolN,EAAO/3E,QAAS3qL,GACpBu9B,EAAImlO,EAAOlc,UAAWxmP,GAIlBmT,EAAI,EAAGA,GAAKy8O,EAAgBz8O,IAAO,CAE5C,IAAM1I,EAAI0I,EAAIy8O,EAAiBrvP,KAAK00J,GAAK,EAEnCyC,EAAMn3J,KAAKm3J,IAAKjtJ,GAChBgtJ,GAAQl3J,KAAKk3J,IAAKhtJ,GAIxB4hK,EAAO7sK,EAAMi4J,EAAMn6G,EAAE99C,EAAIk4J,EAAMn6H,EAAE/9B,EACjC6sK,EAAO1hK,EAAM8sJ,EAAMn6G,EAAE3yC,EAAI+sJ,EAAMn6H,EAAE5yB,EACjC0hK,EAAOzhK,EAAM6sJ,EAAMn6G,EAAE1yC,EAAI8sJ,EAAMn6H,EAAE3yB,EACjCyhK,EAAOloD,YAEPwmE,EAAQvqL,KAAMisK,EAAO7sK,EAAG6sK,EAAO1hK,EAAG0hK,EAAOzhK,GAIzConN,EAAOxyN,EAAIo+C,EAAEp+C,EAAIgtK,EAASH,EAAO7sK,EACjCwyN,EAAOrnN,EAAIizC,EAAEjzC,EAAI6hK,EAASH,EAAO1hK,EACjCqnN,EAAOpnN,EAAIgzC,EAAEhzC,EAAI4hK,EAASH,EAAOzhK,EAEjC2lL,EAASnwL,KAAM4xN,EAAOxyN,EAAGwyN,EAAOrnN,EAAGqnN,EAAOpnN,EAE3C,CAED,CAuCC,OAxGD,WAEC,IAAM,IAAI5K,EAAI,EAAGA,EAAIyhQ,EAAiBzhQ,IAErC2iQ,EAAiB3iQ,GASlB2iQ,GAA8B,IAAXpc,EAAqBkb,EAAkB,GA4E3D,WAEC,IAAM,IAAIzhQ,EAAI,EAAGA,GAAKyhQ,EAAiBzhQ,IAEtC,IAAM,IAAImT,EAAI,EAAGA,GAAKy8O,EAAgBz8O,IAErC4vJ,EAAGvjK,EAAIQ,EAAIyhQ,EACX1+F,EAAGp4J,EAAIwI,EAAIy8O,EAEXhlE,EAAIxqL,KAAM2iK,EAAGvjK,EAAGujK,EAAGp4J,EAMtB,CAtFC+nP,GAiDD,WAEC,IAAM,IAAIv/O,EAAI,EAAGA,GAAKsuP,EAAiBtuP,IAEtC,IAAM,IAAInT,EAAI,EAAGA,GAAK4vP,EAAgB5vP,IAAO,CAE5C,IAAMV,GAAMswP,EAAiB,IAAQz8O,EAAI,IAAQnT,EAAI,GAC/C6J,GAAM+lP,EAAiB,GAAMz8O,GAAMnT,EAAI,GACvCT,GAAMqwP,EAAiB,GAAMz8O,EAAInT,EACjC8J,GAAM8lP,EAAiB,IAAQz8O,EAAI,GAAMnT,EAI/CyqL,EAAQrqL,KAAMd,EAAGuK,EAAGC,GACpB2gL,EAAQrqL,KAAMyJ,EAAGtK,EAAGuK,EAErB,CAIF,CAjEC84P,EAED,CAnCAC,GAIAJ,EAAKn1E,SAAU7C,GACfg4E,EAAKrsP,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACrEkyE,EAAKrsP,aAAc,SAAU,IAAI+xK,GAAwBwC,EAAS,IAClE83E,EAAKrsP,aAAc,KAAM,IAAI+xK,GAAwByC,EAAK,IA4GzD63E,CAEF,CAwBC,OAxBA51P,EAAAy1P,EAAA,EAAAx8P,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAA0jP,EAAApiQ,WAAA,eAAAC,KAAA,MAIV,OAFA6mC,EAAKwzD,KAAOl3F,KAAKw4K,WAAWthF,KAAKsoE,SAE1B97H,CAER,IAAC,EAAAlhC,IAAA,WAAA/D,MAED,SAAiBilC,GAIhB,OAAO,IAAIs7N,GACV,IAAIhW,GAAQtlN,EAAKwzD,KAAKtyF,OAASwlP,SAAU1mN,EAAKwzD,MAC9CxzD,EAAKy6N,gBACLz6N,EAAKwlI,OACLxlI,EAAK4oN,eACL5oN,EAAKu/M,OAGP,KAAC+b,CAAA,CApLgB,CAASt5E,IAwLrB85E,GAAiB,SAAAC,GAAAzjP,EAAAwjP,EAAAC,GAAA,IAAAC,EAAA/kP,EAAA6kP,GAEtB,SAAAA,IAA+B,IAAAG,EAAlB70F,EAAQ7qK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KASvB,GAT2BwK,EAAA,KAAA+0P,IAE3BG,EAAAD,EAAA7iQ,KAAA,OACK+H,KAAO,oBAEZ+6P,EAAKnnF,WAAa,CACjB1N,SAAUA,GAGO,OAAbA,EAAoB,CAIxB,IAAMmiB,EAAW,GACX2yE,EAAQ,IAAI5zO,IAIZ8e,EAAQ,IAAIg8H,GACZ/7H,EAAM,IAAI+7H,GAEhB,GAAwB,OAAnBgE,EAASl8J,MAAiB,CAI9B,IAAM2wD,EAAWurG,EAAS54F,WAAW3S,SAC/B4nH,EAAUrc,EAASl8J,MACrBo3K,EAASlb,EAASkb,OAEC,IAAlBA,EAAOpuL,SAEXouL,EAAS,CAAE,CAAEl7I,MAAO,EAAG6yC,MAAOwpG,EAAQxpG,MAAOwoG,cAAe,KAM7D,IAAM,IAAI3rK,EAAI,EAAG+yC,EAAKy4H,EAAOpuL,OAAQ4iB,EAAI+yC,IAAO/yC,EAO/C,IALA,IAAMitF,EAAQu+E,EAAQxrK,GAEhB2yK,EAAa1lF,EAAM38D,MAGfpuC,EAAIywL,EAAYtmL,EAAMsmL,EAFb1lF,EAAM9pB,MAEkCjhF,EAAImK,EAAGnK,GAAK,EAEtE,IAAM,IAAImT,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAM+yK,EAASuE,EAAQhxB,KAAMz5J,EAAImT,GAC3BgzK,EAASsE,EAAQhxB,KAAMz5J,GAAMmT,EAAI,GAAM,GAE7Ci7B,EAAMigI,oBAAqBxrG,EAAUqjH,GACrC73I,EAAIggI,oBAAqBxrG,EAAUsjH,IAEQ,IAAtCg9E,GAAc/0N,EAAOC,EAAK60N,KAE9B3yE,EAASnwL,KAAMguC,EAAM5uC,EAAG4uC,EAAMzjC,EAAGyjC,EAAMxjC,GACvC2lL,EAASnwL,KAAMiuC,EAAI7uC,EAAG6uC,EAAI1jC,EAAG0jC,EAAIzjC,GAInC,CAMH,MAMC,IAFA,IAAMi4D,EAAWurG,EAAS54F,WAAW3S,SAE3B7iE,EAAI,EAAGmK,EAAM04D,EAASoe,MAAQ,EAAKjhF,EAAImK,EAAGnK,IAEnD,IAAM,IAAImT,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAK9B,IAAM+yK,EAAS,EAAIlmL,EAAImT,EACjBgzK,EAAS,EAAInmL,GAAQmT,EAAI,GAAM,EAErCi7B,EAAMigI,oBAAqBxrG,EAAUqjH,GACrC73I,EAAIggI,oBAAqBxrG,EAAUsjH,IAEQ,IAAtCg9E,GAAc/0N,EAAOC,EAAK60N,KAE9B3yE,EAASnwL,KAAMguC,EAAM5uC,EAAG4uC,EAAMzjC,EAAGyjC,EAAMxjC,GACvC2lL,EAASnwL,KAAMiuC,EAAI7uC,EAAG6uC,EAAI1jC,EAAG0jC,EAAIzjC,GAInC,CAQFq4P,EAAK7sP,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,GAEtE,CAAC,OAAA0yE,CAEF,CAAC,OAAAp2P,EAAAi2P,EAAA,CA3GqB,CAAS95E,IA+GhC,SAASm6E,GAAc/0N,EAAOC,EAAK60N,GAElC,IAAME,EAAQ,GAAHr+P,OAAMqpC,EAAM5uC,EAAC,KAAAuF,OAAIqpC,EAAMzjC,EAAC,KAAA5F,OAAIqpC,EAAMxjC,EAAC,KAAA7F,OAAIspC,EAAI7uC,EAAC,KAAAuF,OAAIspC,EAAI1jC,EAAC,KAAA5F,OAAIspC,EAAIzjC,GAClEy4P,EAAQ,GAAHt+P,OAAMspC,EAAI7uC,EAAC,KAAAuF,OAAIspC,EAAI1jC,EAAC,KAAA5F,OAAIspC,EAAIzjC,EAAC,KAAA7F,OAAIqpC,EAAM5uC,EAAC,KAAAuF,OAAIqpC,EAAMzjC,EAAC,KAAA5F,OAAIqpC,EAAMxjC,GAExE,OAA4B,IAAvBs4P,EAAMxxN,IAAK0xN,KAA2C,IAAvBF,EAAMxxN,IAAK2xN,KAM9CH,EAAMxzO,IAAK0zO,GACXF,EAAMxzO,IAAK2zO,IACJ,EAIT,CAEA,IAAIC,GAA0BzhQ,OAAOkjB,OAAO,CAC3C/G,UAAW,KACX+xK,YAAaA,GACbwzE,kBAAmBxzE,GACnBw/D,gBAAiBA,GACjBiU,sBAAuBjU,GACvBM,eAAgBA,GAChB4T,qBAAsB5T,GACtBsB,aAAcA,GACduS,mBAAoBvS,GACpBhB,iBAAkBA,GAClBwT,uBAAwBxT,GACxB0C,qBAAsBA,GACtB+Q,2BAA4B/Q,GAC5BQ,cAAeA,GACfiG,gBAAiBA,GACjBuK,sBAAuBvK,GACvByF,oBAAqBA,GACrB+E,0BAA2B/E,GAC3BlQ,cAAeA,GACfkV,oBAAqBlV,GACrBsQ,mBAAoBA,GACpB6E,yBAA0B7E,GAC1BtkE,cAAeA,GACfopE,oBAAqBppE,GACrB02D,mBAAoBA,GACpB2S,yBAA0B3S,GAC1BgO,aAAcA,GACd4E,mBAAoB5E,GACpBU,cAAeA,GACfmE,oBAAqBnE,GACrBQ,eAAgBA,GAChB4D,qBAAsB5D,GACtBO,oBAAqBA,GACrBsD,0BAA2BtD,GAC3BI,cAAeA,GACfmD,oBAAqBnD,GACrBO,kBAAmBA,GACnB6C,wBAAyB7C,GACzBW,aAAcA,GACdmC,mBAAoBnC,GACpBQ,kBAAmBA,KAGdj4C,GAAc,SAAA65C,GAAAplP,EAAAurM,EAAA65C,GAAA,IAAAC,EAAA1mP,EAAA4sM,GAEnB,SAAAA,EAAa/uC,GAAa,IAAA8oF,EASI,OATJ72P,EAAA,KAAA88M,IAEzB+5C,EAAAD,EAAAxkQ,KAAA,OAEK+H,KAAO,iBAEZ08P,EAAK95N,MAAQ,IAAI+zH,GAAO,GACxB+lG,EAAKvlF,aAAc,EAEnBulF,EAAKl/E,UAAW5J,GAAa8oF,CAE9B,CAUC,OAVA/3P,EAAAg+M,EAAA,EAAA/kN,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAAisM,EAAA3qN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OAEjBxnC,IAER,KAACunN,CAAA,CAvBkB,CAAShsC,IA2B7BgsC,GAAe3qN,UAAU8wO,kBAAmB,EAAK,IAE3C6zB,GAAiB,SAAAC,GAAAxlP,EAAAulP,EAAAC,GAAA,IAAAC,EAAA9mP,EAAA4mP,GAEtB,SAAAA,EAAa/oF,GAAa,IAAAkpF,EAIO,OAJPj3P,EAAA,KAAA82P,IAEzBG,EAAAD,EAAA5kQ,KAAA,KAAO27K,IAEF5zK,KAAO,oBAAoB88P,CAEjC,CAAC,OAAAn4P,EAAAg4P,EAAA,CARqB,CAAShzE,IAYhCgzE,GAAkB3kQ,UAAU+lN,qBAAsB,EAAK,IAEjDsE,GAAoB,SAAA06C,GAAA3lP,EAAAirM,EAAA06C,GAAA,IAAAC,EAAAjnP,EAAAssM,GAEzB,SAAAA,EAAazuC,GAAa,IAAAqpF,EAmDI,OAnDJp3P,EAAA,KAAAw8M,IAEzB46C,EAAAD,EAAA/kQ,KAAA,OAEK8xL,QAAU,CAAE,SAAY,IAE7BkzE,EAAKj9P,KAAO,uBAEZi9P,EAAKr6N,MAAQ,IAAI+zH,GAAO,UACxBsmG,EAAK3jF,UAAY,EACjB2jF,EAAK1jF,UAAY,EAEjB0jF,EAAKtlQ,IAAM,KAEXslQ,EAAKxiF,SAAW,KAChBwiF,EAAKviF,kBAAoB,EAEzBuiF,EAAKtiF,MAAQ,KACbsiF,EAAKriF,eAAiB,EAEtBqiF,EAAKtjF,SAAW,IAAIhjB,GAAO,GAC3BsmG,EAAKrjF,kBAAoB,EACzBqjF,EAAK1hF,YAAc,KAEnB0hF,EAAKpiF,QAAU,KACfoiF,EAAKniF,UAAY,EAEjBmiF,EAAKliF,UAAY,KACjBkiF,EAAKjiF,cAAgBvwB,GACrBwyG,EAAKhiF,YAAc,IAAI1qB,GAAS,EAAG,GAEnC0sG,EAAK/hF,gBAAkB,KACvB+hF,EAAK9hF,kBAAoB,EACzB8hF,EAAK7hF,iBAAmB,EAExB6hF,EAAK5hF,aAAe,KAEpB4hF,EAAK3hF,aAAe,KAEpB2hF,EAAKziF,SAAW,KAEhByiF,EAAKthF,OAAS,KACdshF,EAAKphF,gBAAkB,EAEvBohF,EAAKrgF,WAAY,EACjBqgF,EAAKpgF,mBAAqB,EAC1BogF,EAAKngF,iBAAmB,QACxBmgF,EAAKlgF,kBAAoB,QAEzBkgF,EAAK5jF,aAAc,EAEnB4jF,EAAKz/E,UAAW5J,GAAaqpF,CAE9B,CAqDC,OArDAt4P,EAAA09M,EAAA,EAAAzkN,IAAA,OAAA/D,MAED,SAAM+C,GAiDL,OA/CA0lI,GAAA5rH,EAAA2rM,EAAArqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK2uL,QAAU,CAAE,SAAY,IAE7B3uL,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OACxBxnC,KAAKk+K,UAAY18K,EAAO08K,UACxBl+K,KAAKm+K,UAAY38K,EAAO28K,UAExBn+K,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKq/K,SAAW79K,EAAO69K,SACvBr/K,KAAKs/K,kBAAoB99K,EAAO89K,kBAEhCt/K,KAAKu/K,MAAQ/9K,EAAO+9K,MACpBv/K,KAAKw/K,eAAiBh+K,EAAOg+K,eAE7Bx/K,KAAKu+K,SAAS7iB,KAAMl6J,EAAO+8K,UAC3Bv+K,KAAKmgL,YAAc3+K,EAAO2+K,YAC1BngL,KAAKw+K,kBAAoBh9K,EAAOg9K,kBAEhCx+K,KAAKy/K,QAAUj+K,EAAOi+K,QACtBz/K,KAAK0/K,UAAYl+K,EAAOk+K,UAExB1/K,KAAK2/K,UAAYn+K,EAAOm+K,UACxB3/K,KAAK4/K,cAAgBp+K,EAAOo+K,cAC5B5/K,KAAK6/K,YAAYnkB,KAAMl6J,EAAOq+K,aAE9B7/K,KAAK8/K,gBAAkBt+K,EAAOs+K,gBAC9B9/K,KAAK+/K,kBAAoBv+K,EAAOu+K,kBAChC//K,KAAKggL,iBAAmBx+K,EAAOw+K,iBAE/BhgL,KAAKigL,aAAez+K,EAAOy+K,aAE3BjgL,KAAKkgL,aAAe1+K,EAAO0+K,aAE3BlgL,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAKugL,OAAS/+K,EAAO++K,OACrBvgL,KAAKygL,gBAAkBj/K,EAAOi/K,gBAE9BzgL,KAAKwhL,UAAYhgL,EAAOggL,UACxBxhL,KAAKyhL,mBAAqBjgL,EAAOigL,mBACjCzhL,KAAK0hL,iBAAmBlgL,EAAOkgL,iBAC/B1hL,KAAK2hL,kBAAoBngL,EAAOmgL,kBAEhC3hL,KAAKi+K,YAAcz8K,EAAOy8K,YAEnBj+K,IAER,KAACinN,CAAA,CA5GwB,CAAS1rC,IAgHnC0rC,GAAqBrqN,UAAU+qN,wBAAyB,EAAK,IAEvDT,GAAoB,SAAA46C,GAAA9lP,EAAAkrM,EAAA46C,GAAA,IAAAC,EAAApnP,EAAAusM,GAEzB,SAAAA,EAAa1uC,GAAa,IAAAwpF,EAuDI,OAvDJv3P,EAAA,KAAAy8M,IAEzB86C,EAAAD,EAAAllQ,KAAA,OAEK8xL,QAAU,CAEd,SAAY,GACZ,SAAY,IAIbqzE,EAAKp9P,KAAO,uBAEZo9P,EAAKjjF,aAAe,KACpBijF,EAAKljF,mBAAqB,EAC1BkjF,EAAKhjF,sBAAwB,KAC7BgjF,EAAK9iF,qBAAuB,IAAI/pB,GAAS,EAAG,GAC5C6sG,EAAK/iF,mBAAqB,KAE1B+iF,EAAKlhE,IAAM,IAEXviM,OAAOC,eAAcgd,EAAAwmP,GAAQ,eAAgB,CAC5CjyO,IAAK,WAEJ,OAASmiI,GAAO,KAAQlyJ,KAAK8gM,IAAM,IAAQ9gM,KAAK8gM,IAAM,GAAK,EAAG,EAE/D,EACA7xK,IAAK,SAAWyxJ,GAEf1gL,KAAK8gM,KAAQ,EAAI,GAAMpgB,IAAmB,EAAI,GAAMA,EAErD,IAGDshF,EAAK3jF,WAAa,IAAI9iB,GAAO,GAC7BymG,EAAKx0D,cAAgB,KACrBw0D,EAAK1jF,eAAiB,EACtB0jF,EAAKv0D,kBAAoB,KAEzBu0D,EAAKlhF,gBAAkB,KAEvBkhF,EAAKjhF,UAAY,EACjBihF,EAAKhhF,aAAe,KACpBghF,EAAK/gF,oBAAsB,EAC3B+gF,EAAK9gF,iBAAmB,IAAI3lB,GAAO,EAAG,EAAG,GAEzCymG,EAAKtjF,kBAAoB,EACzBsjF,EAAK3hF,qBAAuB,KAC5B2hF,EAAKrjF,cAAgB,IAAIpjB,GAAO,EAAG,EAAG,GACtCymG,EAAK1hF,iBAAmB,KAExB0hF,EAAKC,OAAS,EACdD,EAAKE,WAAa,EAClBF,EAAKG,cAAgB,EAErBH,EAAK5/E,UAAW5J,GAAawpF,CAE9B,CAiGC,OAjGAz4P,EAAA29M,EAAA,EAAA1kN,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAKiiQ,MAEb,EAAChzO,IAED,SAAWxwB,GAELuB,KAAKiiQ,OAAS,IAAMxjQ,EAAQ,GAEhCuB,KAAK3G,UAIN2G,KAAKiiQ,OAASxjQ,CAEf,GAAC,CAAA+D,IAAA,YAAAutB,IAED,WAEC,OAAO/vB,KAAKkiQ,UAEb,EAACjzO,IAED,SAAexwB,GAETuB,KAAKkiQ,WAAa,IAAMzjQ,EAAQ,GAEpCuB,KAAK3G,UAIN2G,KAAKkiQ,WAAazjQ,CAEnB,GAAC,CAAA+D,IAAA,eAAAutB,IAED,WAEC,OAAO/vB,KAAKmiQ,aAEb,EAAClzO,IAED,SAAkBxwB,GAEZuB,KAAKmiQ,cAAgB,IAAM1jQ,EAAQ,GAEvCuB,KAAK3G,UAIN2G,KAAKmiQ,cAAgB1jQ,CAEtB,GAAC,CAAA+D,IAAA,OAAA/D,MAED,SAAM+C,GAuCL,OArCA0lI,GAAA5rH,EAAA4rM,EAAAtqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK2uL,QAAU,CAEd,SAAY,GACZ,SAAY,IAIb3uL,KAAK6+K,UAAYr9K,EAAOq9K,UACxB7+K,KAAK++K,aAAev9K,EAAOu9K,aAC3B/+K,KAAK8+K,mBAAqBt9K,EAAOs9K,mBACjC9+K,KAAKg/K,sBAAwBx9K,EAAOw9K,sBACpCh/K,KAAKi/K,mBAAqBz9K,EAAOy9K,mBACjCj/K,KAAKk/K,qBAAqBxjB,KAAMl6J,EAAO09K,sBAEvCl/K,KAAK8gM,IAAMt/L,EAAOs/L,IAElB9gM,KAAKo+K,MAAQ58K,EAAO48K,MACpBp+K,KAAKq+K,WAAW3iB,KAAMl6J,EAAO68K,YAC7Br+K,KAAKwtM,cAAgBhsM,EAAOgsM,cAC5BxtM,KAAKs+K,eAAiB98K,EAAO88K,eAC7Bt+K,KAAKytM,kBAAoBjsM,EAAOisM,kBAEhCztM,KAAK6gL,aAAer/K,EAAOq/K,aAC3B7gL,KAAK8gL,gBAAkBt/K,EAAOs/K,gBAE9B9gL,KAAK+gL,UAAYv/K,EAAOu/K,UACxB/gL,KAAKghL,aAAex/K,EAAOw/K,aAC3BhhL,KAAKihL,oBAAsBz/K,EAAOy/K,oBAClCjhL,KAAKkhL,iBAAiBxlB,KAAMl6J,EAAO0/K,kBAEnClhL,KAAK0+K,kBAAoBl9K,EAAOk9K,kBAChC1+K,KAAKqgL,qBAAuB7+K,EAAO6+K,qBACnCrgL,KAAK2+K,cAAcjjB,KAAMl6J,EAAOm9K,eAChC3+K,KAAKsgL,iBAAmB9+K,EAAO8+K,iBAExBtgL,IAER,KAACknN,CAAA,CA5JwB,CAASD,IAgKnCC,GAAqBtqN,UAAUgwO,wBAAyB,EAAK,IAEvD7lB,GAAiB,SAAAq7C,GAAApmP,EAAA+qM,EAAAq7C,GAAA,IAAAC,EAAA1nP,EAAAosM,GAEtB,SAAAA,EAAavuC,GAAa,IAAA8pF,EAiDI,OAjDJ73P,EAAA,KAAAs8M,IAEzBu7C,EAAAD,EAAAxlQ,KAAA,OAEK+H,KAAO,oBAEZ09P,EAAK96N,MAAQ,IAAI+zH,GAAO,UACxB+mG,EAAK7jF,SAAW,IAAIljB,GAAO,SAC3B+mG,EAAK1jF,UAAY,GAEjB0jF,EAAK/lQ,IAAM,KAEX+lQ,EAAKjjF,SAAW,KAChBijF,EAAKhjF,kBAAoB,EAEzBgjF,EAAK/iF,MAAQ,KACb+iF,EAAK9iF,eAAiB,EAEtB8iF,EAAK/jF,SAAW,IAAIhjB,GAAO,GAC3B+mG,EAAK9jF,kBAAoB,EACzB8jF,EAAKniF,YAAc,KAEnBmiF,EAAK7iF,QAAU,KACf6iF,EAAK5iF,UAAY,EAEjB4iF,EAAK3iF,UAAY,KACjB2iF,EAAK1iF,cAAgBvwB,GACrBizG,EAAKziF,YAAc,IAAI1qB,GAAS,EAAG,GAEnCmtG,EAAKxiF,gBAAkB,KACvBwiF,EAAKviF,kBAAoB,EACzBuiF,EAAKtiF,iBAAmB,EAExBsiF,EAAKliF,YAAc,KAEnBkiF,EAAKljF,SAAW,KAEhBkjF,EAAK/hF,OAAS,KACd+hF,EAAK9hF,QAAUl3B,GACfg5G,EAAK5hF,aAAe,EACpB4hF,EAAK3hF,gBAAkB,IAEvB2hF,EAAK9gF,WAAY,EACjB8gF,EAAK7gF,mBAAqB,EAC1B6gF,EAAK5gF,iBAAmB,QACxB4gF,EAAK3gF,kBAAoB,QAEzB2gF,EAAKrkF,aAAc,EAEnBqkF,EAAKlgF,UAAW5J,GAAa8pF,CAE9B,CAmDC,OAnDA/4P,EAAAw9M,EAAA,EAAAvkN,IAAA,OAAA/D,MAED,SAAM+C,GA+CL,OA7CA0lI,GAAA5rH,EAAAyrM,EAAAnqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OACxBxnC,KAAKy+K,SAAS/iB,KAAMl6J,EAAOi9K,UAC3Bz+K,KAAK4+K,UAAYp9K,EAAOo9K,UAExB5+K,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKq/K,SAAW79K,EAAO69K,SACvBr/K,KAAKs/K,kBAAoB99K,EAAO89K,kBAEhCt/K,KAAKu/K,MAAQ/9K,EAAO+9K,MACpBv/K,KAAKw/K,eAAiBh+K,EAAOg+K,eAE7Bx/K,KAAKu+K,SAAS7iB,KAAMl6J,EAAO+8K,UAC3Bv+K,KAAKmgL,YAAc3+K,EAAO2+K,YAC1BngL,KAAKw+K,kBAAoBh9K,EAAOg9K,kBAEhCx+K,KAAKy/K,QAAUj+K,EAAOi+K,QACtBz/K,KAAK0/K,UAAYl+K,EAAOk+K,UAExB1/K,KAAK2/K,UAAYn+K,EAAOm+K,UACxB3/K,KAAK4/K,cAAgBp+K,EAAOo+K,cAC5B5/K,KAAK6/K,YAAYnkB,KAAMl6J,EAAOq+K,aAE9B7/K,KAAK8/K,gBAAkBt+K,EAAOs+K,gBAC9B9/K,KAAK+/K,kBAAoBv+K,EAAOu+K,kBAChC//K,KAAKggL,iBAAmBx+K,EAAOw+K,iBAE/BhgL,KAAKogL,YAAc5+K,EAAO4+K,YAE1BpgL,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAKugL,OAAS/+K,EAAO++K,OACrBvgL,KAAKwgL,QAAUh/K,EAAOg/K,QACtBxgL,KAAK0gL,aAAel/K,EAAOk/K,aAC3B1gL,KAAK2gL,gBAAkBn/K,EAAOm/K,gBAE9B3gL,KAAKwhL,UAAYhgL,EAAOggL,UACxBxhL,KAAKyhL,mBAAqBjgL,EAAOigL,mBACjCzhL,KAAK0hL,iBAAmBlgL,EAAOkgL,iBAC/B1hL,KAAK2hL,kBAAoBngL,EAAOmgL,kBAEhC3hL,KAAKi+K,YAAcz8K,EAAOy8K,YAEnBj+K,IAER,KAAC+mN,CAAA,CAxGqB,CAASxrC,IA4GhCwrC,GAAkBnqN,UAAU6vO,qBAAsB,EAAK,IAEjDzlB,GAAgB,SAAAu7C,GAAAvmP,EAAAgrM,EAAAu7C,GAAA,IAAAC,EAAA7nP,EAAAqsM,GAErB,SAAAA,EAAaxuC,GAAa,IAAAiqF,EAyCI,OAzCJh4P,EAAA,KAAAu8M,IAEzBy7C,EAAAD,EAAA3lQ,KAAA,OAEK8xL,QAAU,CAAE,KAAQ,IAEzB8zE,EAAK79P,KAAO,mBAEZ69P,EAAKj7N,MAAQ,IAAI+zH,GAAO,UAExBknG,EAAKlmQ,IAAM,KACXkmQ,EAAK7hF,YAAc,KAEnB6hF,EAAKpjF,SAAW,KAChBojF,EAAKnjF,kBAAoB,EAEzBmjF,EAAKljF,MAAQ,KACbkjF,EAAKjjF,eAAiB,EAEtBijF,EAAKlkF,SAAW,IAAIhjB,GAAO,GAC3BknG,EAAKjkF,kBAAoB,EACzBikF,EAAKtiF,YAAc,KAEnBsiF,EAAKhjF,QAAU,KACfgjF,EAAK/iF,UAAY,EAEjB+iF,EAAK9iF,UAAY,KACjB8iF,EAAK7iF,cAAgBvwB,GACrBozG,EAAK5iF,YAAc,IAAI1qB,GAAS,EAAG,GAEnCstG,EAAK3iF,gBAAkB,KACvB2iF,EAAK1iF,kBAAoB,EACzB0iF,EAAKziF,iBAAmB,EAExByiF,EAAKrjF,SAAW,KAEhBqjF,EAAKjhF,WAAY,EACjBihF,EAAKhhF,mBAAqB,EAC1BghF,EAAK/gF,iBAAmB,QACxB+gF,EAAK9gF,kBAAoB,QAEzB8gF,EAAKrgF,UAAW5J,GAAaiqF,CAE9B,CAyCC,OAzCAl5P,EAAAy9M,EAAA,EAAAxkN,IAAA,OAAA/D,MAED,SAAM+C,GAqCL,OAnCA0lI,GAAA5rH,EAAA0rM,EAAApqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OAExBxnC,KAAKzD,IAAMiF,EAAOjF,IAClByD,KAAK4gL,YAAcp/K,EAAOo/K,YAE1B5gL,KAAKq/K,SAAW79K,EAAO69K,SACvBr/K,KAAKs/K,kBAAoB99K,EAAO89K,kBAEhCt/K,KAAKu/K,MAAQ/9K,EAAO+9K,MACpBv/K,KAAKw/K,eAAiBh+K,EAAOg+K,eAE7Bx/K,KAAKu+K,SAAS7iB,KAAMl6J,EAAO+8K,UAC3Bv+K,KAAKmgL,YAAc3+K,EAAO2+K,YAC1BngL,KAAKw+K,kBAAoBh9K,EAAOg9K,kBAEhCx+K,KAAKy/K,QAAUj+K,EAAOi+K,QACtBz/K,KAAK0/K,UAAYl+K,EAAOk+K,UAExB1/K,KAAK2/K,UAAYn+K,EAAOm+K,UACxB3/K,KAAK4/K,cAAgBp+K,EAAOo+K,cAC5B5/K,KAAK6/K,YAAYnkB,KAAMl6J,EAAOq+K,aAE9B7/K,KAAK8/K,gBAAkBt+K,EAAOs+K,gBAC9B9/K,KAAK+/K,kBAAoBv+K,EAAOu+K,kBAChC//K,KAAKggL,iBAAmBx+K,EAAOw+K,iBAE/BhgL,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAKwhL,UAAYhgL,EAAOggL,UACxBxhL,KAAKyhL,mBAAqBjgL,EAAOigL,mBACjCzhL,KAAK0hL,iBAAmBlgL,EAAOkgL,iBAC/B1hL,KAAK2hL,kBAAoBngL,EAAOmgL,kBAEzB3hL,IAER,KAACgnN,CAAA,CAtFoB,CAASzrC,IA0F/ByrC,GAAiBpqN,UAAU2vO,oBAAqB,EAAK,IAE/C1lB,GAAkB,SAAA67C,GAAA1mP,EAAA6qM,EAAA67C,GAAA,IAAAC,EAAAhoP,EAAAksM,GAEvB,SAAAA,EAAaruC,GAAa,IAAAoqF,EAwBI,OAxBJn4P,EAAA,KAAAo8M,IAEzB+7C,EAAAD,EAAA9lQ,KAAA,OAEK+H,KAAO,qBAEZg+P,EAAKnjF,QAAU,KACfmjF,EAAKljF,UAAY,EAEjBkjF,EAAKjjF,UAAY,KACjBijF,EAAKhjF,cAAgBvwB,GACrBuzG,EAAK/iF,YAAc,IAAI1qB,GAAS,EAAG,GAEnCytG,EAAK9iF,gBAAkB,KACvB8iF,EAAK7iF,kBAAoB,EACzB6iF,EAAK5iF,iBAAmB,EAExB4iF,EAAKphF,WAAY,EACjBohF,EAAKnhF,mBAAqB,EAE1BmhF,EAAKjnF,KAAM,EAEXinF,EAAK3kF,aAAc,EAEnB2kF,EAAKxgF,UAAW5J,GAAaoqF,CAE9B,CAwBC,OAxBAr5P,EAAAs9M,EAAA,EAAArkN,IAAA,OAAA/D,MAED,SAAM+C,GAoBL,OAlBA0lI,GAAA5rH,EAAAurM,EAAAjqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKy/K,QAAUj+K,EAAOi+K,QACtBz/K,KAAK0/K,UAAYl+K,EAAOk+K,UAExB1/K,KAAK2/K,UAAYn+K,EAAOm+K,UACxB3/K,KAAK4/K,cAAgBp+K,EAAOo+K,cAC5B5/K,KAAK6/K,YAAYnkB,KAAMl6J,EAAOq+K,aAE9B7/K,KAAK8/K,gBAAkBt+K,EAAOs+K,gBAC9B9/K,KAAK+/K,kBAAoBv+K,EAAOu+K,kBAChC//K,KAAKggL,iBAAmBx+K,EAAOw+K,iBAE/BhgL,KAAKwhL,UAAYhgL,EAAOggL,UACxBxhL,KAAKyhL,mBAAqBjgL,EAAOigL,mBAEjCzhL,KAAKi+K,YAAcz8K,EAAOy8K,YAEnBj+K,IAER,KAAC6mN,CAAA,CApDsB,CAAStrC,IAwDjCsrC,GAAmBjqN,UAAUqwO,sBAAuB,EAAK,IAEnDnmB,GAAmB,SAAA+7C,GAAA7mP,EAAA8qM,EAAA+7C,GAAA,IAAAC,EAAAnoP,EAAAmsM,GAExB,SAAAA,EAAatuC,GAAa,IAAAuqF,EAkCI,OAlCJt4P,EAAA,KAAAq8M,IAEzBi8C,EAAAD,EAAAjmQ,KAAA,OAEK+H,KAAO,sBAEZm+P,EAAKv7N,MAAQ,IAAI+zH,GAAO,UAExBwnG,EAAKxmQ,IAAM,KAEXwmQ,EAAK1jF,SAAW,KAChB0jF,EAAKzjF,kBAAoB,EAEzByjF,EAAKxjF,MAAQ,KACbwjF,EAAKvjF,eAAiB,EAEtBujF,EAAKxkF,SAAW,IAAIhjB,GAAO,GAC3BwnG,EAAKvkF,kBAAoB,EACzBukF,EAAK5iF,YAAc,KAEnB4iF,EAAK3iF,YAAc,KAEnB2iF,EAAK3jF,SAAW,KAEhB2jF,EAAKxiF,OAAS,KACdwiF,EAAKviF,QAAUl3B,GACfy5G,EAAKriF,aAAe,EACpBqiF,EAAKpiF,gBAAkB,IAEvBoiF,EAAKvhF,WAAY,EACjBuhF,EAAKthF,mBAAqB,EAC1BshF,EAAKrhF,iBAAmB,QACxBqhF,EAAKphF,kBAAoB,QAEzBohF,EAAK3gF,UAAW5J,GAAauqF,CAE9B,CAoCC,OApCAx5P,EAAAu9M,EAAA,EAAAtkN,IAAA,OAAA/D,MAED,SAAM+C,GAgCL,OA9BA0lI,GAAA5rH,EAAAwrM,EAAAlqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OAExBxnC,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKq/K,SAAW79K,EAAO69K,SACvBr/K,KAAKs/K,kBAAoB99K,EAAO89K,kBAEhCt/K,KAAKu/K,MAAQ/9K,EAAO+9K,MACpBv/K,KAAKw/K,eAAiBh+K,EAAOg+K,eAE7Bx/K,KAAKu+K,SAAS7iB,KAAMl6J,EAAO+8K,UAC3Bv+K,KAAKmgL,YAAc3+K,EAAO2+K,YAC1BngL,KAAKw+K,kBAAoBh9K,EAAOg9K,kBAEhCx+K,KAAKogL,YAAc5+K,EAAO4+K,YAE1BpgL,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAKugL,OAAS/+K,EAAO++K,OACrBvgL,KAAKwgL,QAAUh/K,EAAOg/K,QACtBxgL,KAAK0gL,aAAel/K,EAAOk/K,aAC3B1gL,KAAK2gL,gBAAkBn/K,EAAOm/K,gBAE9B3gL,KAAKwhL,UAAYhgL,EAAOggL,UACxBxhL,KAAKyhL,mBAAqBjgL,EAAOigL,mBACjCzhL,KAAK0hL,iBAAmBlgL,EAAOkgL,iBAC/B1hL,KAAK2hL,kBAAoBngL,EAAOmgL,kBAEzB3hL,IAER,KAAC8mN,CAAA,CA1EuB,CAASvrC,IA8ElCurC,GAAoBlqN,UAAU0vO,uBAAwB,EAAK,IAErDnlB,GAAkB,SAAA67C,GAAAhnP,EAAAmrM,EAAA67C,GAAA,IAAAC,EAAAtoP,EAAAwsM,GAEvB,SAAAA,EAAa3uC,GAAa,IAAA0qF,EA6BI,OA7BJz4P,EAAA,KAAA08M,IAEzB+7C,EAAAD,EAAApmQ,KAAA,OAEK8xL,QAAU,CAAE,OAAU,IAE3Bu0E,EAAKt+P,KAAO,qBAEZs+P,EAAK17N,MAAQ,IAAI+zH,GAAO,UAExB2nG,EAAK/jF,OAAS,KAEd+jF,EAAK3mQ,IAAM,KAEX2mQ,EAAKzjF,QAAU,KACfyjF,EAAKxjF,UAAY,EAEjBwjF,EAAKvjF,UAAY,KACjBujF,EAAKtjF,cAAgBvwB,GACrB6zG,EAAKrjF,YAAc,IAAI1qB,GAAS,EAAG,GAEnC+tG,EAAKpjF,gBAAkB,KACvBojF,EAAKnjF,kBAAoB,EACzBmjF,EAAKljF,iBAAmB,EAExBkjF,EAAK9jF,SAAW,KAEhB8jF,EAAKjlF,aAAc,EAEnBilF,EAAK9gF,UAAW5J,GAAa0qF,CAE9B,CAgCC,OAhCA35P,EAAA49M,EAAA,EAAA3kN,IAAA,OAAA/D,MAGD,SAAM+C,GA2BL,OAzBA0lI,GAAA5rH,EAAA6rM,EAAAvqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK2uL,QAAU,CAAE,OAAU,IAE3B3uL,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OAExBxnC,KAAKm/K,OAAS39K,EAAO29K,OAErBn/K,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKy/K,QAAUj+K,EAAOi+K,QACtBz/K,KAAK0/K,UAAYl+K,EAAOk+K,UAExB1/K,KAAK2/K,UAAYn+K,EAAOm+K,UACxB3/K,KAAK4/K,cAAgBp+K,EAAOo+K,cAC5B5/K,KAAK6/K,YAAYnkB,KAAMl6J,EAAOq+K,aAE9B7/K,KAAK8/K,gBAAkBt+K,EAAOs+K,gBAC9B9/K,KAAK+/K,kBAAoBv+K,EAAOu+K,kBAChC//K,KAAKggL,iBAAmBx+K,EAAOw+K,iBAE/BhgL,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAKi+K,YAAcz8K,EAAOy8K,YAEnBj+K,IAER,KAACmnN,CAAA,CAjEsB,CAAS5rC,IAqEjC4rC,GAAmBvqN,UAAUkwO,sBAAuB,EAAK,IAEnDzlB,GAAkB,SAAA87C,GAAAnnP,EAAAqrM,EAAA87C,GAAA,IAAAC,EAAAzoP,EAAA0sM,GAEvB,SAAAA,EAAa7uC,GAAa,IAAA6qF,EAUI,OAVJ54P,EAAA,KAAA48M,IAEzBg8C,EAAAD,EAAAvmQ,KAAA,OAEK+H,KAAO,qBAEZy+P,EAAKhsH,MAAQ,EACbgsH,EAAKhiF,SAAW,EAChBgiF,EAAK/hF,QAAU,EAEf+hF,EAAKjhF,UAAW5J,GAAa6qF,CAE9B,CAYC,OAZA95P,EAAA89M,EAAA,EAAA7kN,IAAA,OAAA/D,MAED,SAAM+C,GAQL,OANA0lI,GAAA5rH,EAAA+rM,EAAAzqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKq3I,MAAQ71I,EAAO61I,MACpBr3I,KAAKqhL,SAAW7/K,EAAO6/K,SACvBrhL,KAAKshL,QAAU9/K,EAAO8/K,QAEfthL,IAER,KAACqnN,CAAA,CA1BsB,CAASD,IA8BjCC,GAAmBzqN,UAAUwwO,sBAAuB,EAEpD,IAAMk2B,GAAc,CACnB/7C,eAAAA,GACAC,eAAAA,GACA+5C,kBAAAA,GACAhzE,eAAAA,GACA+4B,eAAAA,GACAJ,qBAAAA,GACAD,qBAAAA,GACAF,kBAAAA,GACAC,iBAAAA,GACAH,mBAAAA,GACAC,oBAAAA,GACAH,kBAAAA,GACAC,qBAAAA,GACA5kC,kBAAAA,GACAmlC,mBAAAA,GACAE,mBAAAA,GACAD,kBAAAA,GACA7rC,SAAAA,IAGDA,GAASwG,SAAW,SAAWn9K,GAE9B,OAAO,IAAI0+P,GAAa1+P,EAEzB,EAEA,IAAM2+P,GAAiB,CAGtBC,WAAY,SAAWzgQ,EAAOsf,EAAMuoD,GAEnC,OAAK24L,GAAeE,aAAc1gQ,GAI1B,IAAIA,EAAMoX,YAAapX,EAAMs0L,SAAUh1K,OAAajY,IAAPwgE,EAAmBA,EAAK7nE,EAAMnL,SAI5EmL,EAAM6N,MAAOyR,EAAMuoD,EAE3B,EAGA84L,aAAc,SAAW3gQ,EAAO6B,EAAM++P,GAErC,OAAO5gQ,IACJ4gQ,GAAc5gQ,EAAMoX,cAAgBvV,EAAc7B,EAEd,kBAA3B6B,EAAKuyL,kBAET,IAAIvyL,EAAM7B,GAIXpG,MAAMC,UAAUgU,MAAM/T,KAAMkG,EAEpC,EAEA0gQ,aAAc,SAAWthQ,GAExB,OAAOwwD,YAAYC,OAAQzwD,MACtBA,aAAkByhQ,SAExB,EAGAC,iBAAkB,SAAWC,GAU5B,IAFA,IAAM/8P,EAAI+8P,EAAMlsQ,OACVE,EAAS,IAAI6E,MAAOoK,GAChBrK,EAAI,EAAGA,IAAMqK,IAAMrK,EAAI5E,EAAQ4E,GAAMA,EAI/C,OAFA5E,EAAO0hG,MAVP,SAAsB98F,EAAGmT,GAExB,OAAOi0P,EAAOpnQ,GAAMonQ,EAAOj0P,EAE5B,IAQO/X,CAER,EAGAisQ,YAAa,SAAWh3P,EAAQ08K,EAAQl8K,GAKvC,IAHA,IAAMy2P,EAAUj3P,EAAOnV,OACjBE,EAAS,IAAIiV,EAAOoN,YAAa6pP,GAE7BtnQ,EAAI,EAAGmpK,EAAY,EAAGA,IAAcm+F,IAAYtnQ,EAIzD,IAFA,IAAMunQ,EAAY12P,EAAO7Q,GAAM+sL,EAErB55K,EAAI,EAAGA,IAAM45K,IAAW55K,EAEjC/X,EAAQ+tK,KAAiB94J,EAAQk3P,EAAYp0P,GAM/C,OAAO/X,CAER,EAGAosQ,YAAa,SAAWC,EAAUL,EAAO/2P,EAAQq3P,GAIhD,IAFA,IAAI1nQ,EAAI,EAAG8F,EAAM2hQ,EAAU,QAEX/5P,IAAR5H,QAAkD4H,IAA7B5H,EAAK4hQ,IAEjC5hQ,EAAM2hQ,EAAUznQ,KAIjB,QAAa0N,IAAR5H,EAAL,CAEA,IAAI/D,EAAQ+D,EAAK4hQ,GACjB,QAAeh6P,IAAV3L,EAEL,GAAK9B,MAAM0E,QAAS5C,GAEnB,QAIgB2L,KAFf3L,EAAQ+D,EAAK4hQ,MAIZN,EAAMhnQ,KAAM0F,EAAIylC,MAChBl7B,EAAOjQ,KAAKgD,MAAOiN,EAAQtO,IAI5B+D,EAAM2hQ,EAAUznQ,gBAEC0N,IAAR5H,QAEJ,QAAuB4H,IAAlB3L,EAAM8oF,QAIjB,QAIgBn9E,KAFf3L,EAAQ+D,EAAK4hQ,MAIZN,EAAMhnQ,KAAM0F,EAAIylC,MAChBxpC,EAAM8oF,QAASx6E,EAAQA,EAAOnV,SAI/B4K,EAAM2hQ,EAAUznQ,gBAEC0N,IAAR5H,QAMV,QAIgB4H,KAFf3L,EAAQ+D,EAAK4hQ,MAIZN,EAAMhnQ,KAAM0F,EAAIylC,MAChBl7B,EAAOjQ,KAAM2B,IAId+D,EAAM2hQ,EAAUznQ,gBAEC0N,IAAR5H,EA1DoB,CA8DhC,EAEA6hQ,QAAS,SAAWC,EAAYnrQ,EAAMorQ,EAAYC,GAAqB,IAAXC,EAAGxkQ,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAE3DykQ,EAAOJ,EAAWpjQ,QAExBwjQ,EAAKvrQ,KAAOA,EAIZ,IAFA,IAAMqhF,EAAS,GAEL99E,EAAI,EAAGA,EAAIgoQ,EAAKlqL,OAAO5iF,SAAW8E,EAAI,CAQ/C,IANA,IAAM85B,EAAQkuO,EAAKlqL,OAAQ99E,GACrBioQ,EAAYnuO,EAAMouO,eAElBd,EAAQ,GACR/2P,EAAS,GAEL8C,EAAI,EAAGA,EAAI2mB,EAAMstO,MAAMlsQ,SAAWiY,EAAI,CAE/C,IAAMumL,EAAQ5/J,EAAMstO,MAAOj0P,GAAM40P,EAEjC,KAAKruE,EAAQmuE,GAAcnuE,GAASouE,GAApC,CAEAV,EAAMhnQ,KAAM05B,EAAMstO,MAAOj0P,IAEzB,IAAM,IAAIjJ,EAAI,EAAGA,EAAI+9P,IAAc/9P,EAElCmG,EAAOjQ,KAAM05B,EAAMzpB,OAAQ8C,EAAI80P,EAAY/9P,GANW,CAUxD,CAEsB,IAAjBk9P,EAAMlsQ,SAEX4+B,EAAMstO,MAAQP,GAAeG,aAAcI,EAAOttO,EAAMstO,MAAM3pP,aAC9Dqc,EAAMzpB,OAASw2P,GAAeG,aAAc32P,EAAQypB,EAAMzpB,OAAOoN,aAEjEqgE,EAAO19E,KAAM05B,GAEd,CAEAkuO,EAAKlqL,OAASA,EAMd,IAFA,IAAIqqL,EAAe17M,IAETzsD,EAAI,EAAGA,EAAIgoQ,EAAKlqL,OAAO5iF,SAAW8E,EAEtCmoQ,EAAeH,EAAKlqL,OAAQ99E,GAAIonQ,MAAO,KAE3Ce,EAAeH,EAAKlqL,OAAQ99E,GAAIonQ,MAAO,IAQzC,IAAM,IAAIpnQ,EAAI,EAAGA,EAAIgoQ,EAAKlqL,OAAO5iF,SAAW8E,EAE3CgoQ,EAAKlqL,OAAQ99E,GAAI8hC,OAAS,EAAIqmO,GAM/B,OAFAH,EAAKI,gBAEEJ,CAER,EAEAK,iBAAkB,SAAWC,GAAuE,IAA3DC,EAAchlQ,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGilQ,EAAajlQ,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG+kQ,EAAYP,EAAGxkQ,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAEzFwkQ,GAAO,IAAIA,EAAM,IAMtB,IAJA,IAAMU,EAAYD,EAAc1qL,OAAO5iF,OACjCwtQ,EAAgBH,EAAiBR,EAEvC15L,EAAA,SACUruE,GAET,IAAM2oQ,EAAiBH,EAAc1qL,OAAQ99E,GACvC4oQ,EAAqBD,EAAeE,cAG1C,GAA4B,SAAvBD,GAAwD,WAAvBA,EAAkC,iBAGxE,IAAME,EAAcR,EAAWxqL,OAAOgoC,MAAM,SAAWhsF,GAEtD,OAAOA,EAAMr9B,OAASksQ,EAAelsQ,MACjCq9B,EAAM+uO,gBAAkBD,CAE7B,IAEA,QAAqBl7P,IAAhBo7P,EAA4B,iBAEjC,IAAIC,EAAkB,EAChBC,EAAqBL,EAAeT,eAErCS,EAAeM,kBAAkBC,4CAErCH,EAAkBC,EAAqB,GAIxC,IAAIG,EAAe,EACbC,EAAkBN,EAAYZ,eAE/BY,EAAYG,kBAAkBC,4CAElCC,EAAeC,EAAkB,GAIlC,IAAM5oD,EAAYmoD,EAAevB,MAAMlsQ,OAAS,EAC5CmuQ,OAAc,EAGlB,GAAKX,GAAiBC,EAAevB,MAAO,GAAM,CAGjD,IAAMjnK,EAAa4oK,EACbt9J,EAAWu9J,EAAqBD,EACtCM,EAAiBxC,GAAeC,WAAY6B,EAAet4P,OAAQ8vF,EAAYsL,EAEhF,MAAO,GAAKi9J,GAAiBC,EAAevB,MAAO5mD,GAAc,CAGhE,IAAMrgH,EAAaqgH,EAAYwoD,EAAqBD,EAC9Ct9J,EAAWtL,EAAa6oK,EAAqBD,EACnDM,EAAiBxC,GAAeC,WAAY6B,EAAet4P,OAAQ8vF,EAAYsL,EAEhF,KAAO,CAGN,IAAM69J,EAAcX,EAAeM,oBAC7B9oK,EAAa4oK,EACbt9J,EAAWu9J,EAAqBD,EACtCO,EAAYC,SAAUb,GACtBW,EAAiBxC,GAAeC,WAAYwC,EAAYE,aAAcrpK,EAAYsL,EAEnF,CAG4B,eAAvBm9J,IAEkB,IAAIviG,IAAapJ,UAAWosG,GAAiBllJ,YAAYwjD,YACjE98E,QAASw+K,GAOxB,IADA,IAAMI,EAAWX,EAAY1B,MAAMlsQ,OACzBiY,EAAI,EAAGA,EAAIs2P,IAAat2P,EAAI,CAErC,IAAMu2P,EAAav2P,EAAIi2P,EAAkBD,EAEzC,GAA4B,eAAvBP,EAGJviG,GAAWsjG,wBACVb,EAAYz4P,OACZq5P,EACAL,EACA,EACAP,EAAYz4P,OACZq5P,QAQD,IAHA,IAAME,EAAWR,EAAiC,EAAfD,EAGzBj/P,EAAI,EAAGA,EAAI0/P,IAAa1/P,EAEjC4+P,EAAYz4P,OAAQq5P,EAAax/P,IAAOm/P,EAAgBn/P,EAM3D,CAAC,EAzGQlK,EAAI,EAAGA,EAAIyoQ,IAAczoQ,EAAIquE,EAA7BruE,GA+GV,OAFAsoQ,EAAWuB,UAAY13G,GAEhBm2G,CAER,GAyBKwB,GAAW,WAEhB,SAAAA,EAAaC,EAAoBC,EAAcC,EAAYT,GAAez7P,EAAA,KAAA+7P,GAEzExmQ,KAAKymQ,mBAAqBA,EAC1BzmQ,KAAK4mQ,aAAe,EAEpB5mQ,KAAKkmQ,kBAAgC97P,IAAjB87P,EACnBA,EAAe,IAAIQ,EAAavsP,YAAawsP,GAC9C3mQ,KAAK0mQ,aAAeA,EACpB1mQ,KAAK2kQ,UAAYgC,EAEjB3mQ,KAAK6mQ,SAAW,KAChB7mQ,KAAK8mQ,iBAAmB,CAAC,CAE1B,CAwMC,OAxMAv9P,EAAAi9P,EAAA,EAAAhkQ,IAAA,WAAA/D,MAED,SAAUnH,GAET,IAAMyvQ,EAAK/mQ,KAAKymQ,mBACZ5sF,EAAK75K,KAAK4mQ,aACbt3F,EAAKy3F,EAAIltF,GACTxK,EAAK03F,EAAIltF,EAAK,GAEfmtF,EAAmB,CAElBC,EAAM,CAEL,IAAIznM,EAEJ0nM,EAAa,CAMZC,EAAc,KAAS7vQ,EAAIg4K,GAAO,CAEjC,IAAM,IAAI83F,EAAWvtF,EAAK,IAAO,CAEhC,QAAYzvK,IAAPklK,EAAmB,CAEvB,GAAKh4K,EAAI+3K,EAAK,MAAM83F,EAMpB,OAFAttF,EAAKktF,EAAGnvQ,OACRoI,KAAK4mQ,aAAe/sF,EACb75K,KAAKqnQ,UAAWxtF,EAAK,EAAGviL,EAAG+3K,EAEnC,CAEA,GAAKwK,IAAOutF,EAAW,MAKvB,GAHA/3F,EAAKC,EAGAh4K,GAFLg4K,EAAKy3F,IAAOltF,IAKX,MAAMotF,CAIR,CAGAznM,EAAQunM,EAAGnvQ,OACX,MAAMsvQ,CAEP,CAIA,GAAS5vQ,GAAK+3K,EAiDd,MAAM23F,EA7CL,IAAMM,EAAWP,EAAI,GAEhBzvQ,EAAIgwQ,IAERztF,EAAK,EACLxK,EAAKi4F,GAMN,IAAM,IAAIF,EAAWvtF,EAAK,IAAO,CAEhC,QAAYzvK,IAAPilK,EAKJ,OADArvK,KAAK4mQ,aAAe,EACb5mQ,KAAKunQ,aAAc,EAAGjwQ,EAAGg4K,GAIjC,GAAKuK,IAAOutF,EAAW,MAKvB,GAHA93F,EAAKD,EAGA/3K,IAFL+3K,EAAK03F,IAAOltF,EAAK,IAKhB,MAAMotF,CAIR,CAGAznM,EAAQq6G,EACRA,EAAK,CASP,CAIA,KAAQA,EAAKr6G,GAAQ,CAEpB,IAAMgoM,EAAQ3tF,EAAKr6G,IAAY,EAE1BloE,EAAIyvQ,EAAIS,GAEZhoM,EAAQgoM,EAIR3tF,EAAK2tF,EAAM,CAIb,CAOA,GALAl4F,EAAKy3F,EAAIltF,QAKGzvK,KAJZilK,EAAK03F,EAAIltF,EAAK,IAOb,OADA75K,KAAK4mQ,aAAe,EACb5mQ,KAAKunQ,aAAc,EAAGjwQ,EAAGg4K,GAIjC,QAAYllK,IAAPklK,EAIJ,OAFAuK,EAAKktF,EAAGnvQ,OACRoI,KAAK4mQ,aAAe/sF,EACb75K,KAAKqnQ,UAAWxtF,EAAK,EAAGxK,EAAI/3K,EAIrC,CAEA0I,KAAK4mQ,aAAe/sF,EAEpB75K,KAAKynQ,iBAAkB5tF,EAAIxK,EAAIC,EAEhC,CAEA,OAAOtvK,KAAK0nQ,aAAc7tF,EAAIxK,EAAI/3K,EAAGg4K,EAEtC,GAAC,CAAA9sK,IAAA,eAAA/D,MAED,WAEC,OAAOuB,KAAK6mQ,UAAY7mQ,KAAK8mQ,gBAE9B,GAAC,CAAAtkQ,IAAA,mBAAA/D,MAED,SAAkBmQ,GASjB,IALA,IAAM9W,EAASkI,KAAKkmQ,aACnBn5P,EAAS/M,KAAK0mQ,aACdj9E,EAASzpL,KAAK2kQ,UACd56N,EAASn7B,EAAQ66K,EAER/sL,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAEjC5E,EAAQ4E,GAAMqQ,EAAQg9B,EAASrtC,GAIhC,OAAO5E,CAER,GAEA,CAAA0K,IAAA,eAAA/D,MAEA,WAEC,MAAM,IAAIX,MAAO,0BAGlB,GAAC,CAAA0E,IAAA,mBAAA/D,MAED,WAEC,KAEA+nQ,CAAA,CAvNe,GA6NjBA,GAAY5pQ,UAAU2qQ,aAAef,GAAY5pQ,UAAU+qQ,iBAC3DnB,GAAY5pQ,UAAUyqQ,UAAYb,GAAY5pQ,UAAU+qQ,iBAExD,IAQMC,GAAgB,SAAAC,GAAA7rP,EAAA4rP,EAAAC,GAAA,IAAAC,EAAAntP,EAAAitP,GAErB,SAAAA,EAAanB,EAAoBC,EAAcC,EAAYT,GAAe,IAAA6B,EAcvE,OAduEt9P,EAAA,KAAAm9P,IAEzEG,EAAAD,EAAAjrQ,KAAA,KAAO4pQ,EAAoBC,EAAcC,EAAYT,IAEhD8B,aAAgB,EACrBD,EAAKE,aAAgB,EACrBF,EAAKG,aAAgB,EACrBH,EAAKI,aAAgB,EAErBJ,EAAKjB,iBAAmB,CAEvBsB,YAAa35G,GACb45G,UAAW55G,IAEVs5G,CAEH,CAoHC,OApHAx+P,EAAAq+P,EAAA,EAAAplQ,IAAA,mBAAA/D,MAED,SAAkBo7K,EAAIxK,EAAIC,GAEzB,IAAMy3F,EAAK/mQ,KAAKymQ,mBACZ6B,EAAQzuF,EAAK,EAChB0uF,EAAQ1uF,EAAK,EAEb2uF,EAAQzB,EAAIuB,GACZG,EAAQ1B,EAAIwB,GAEb,QAAen+P,IAAVo+P,EAEJ,OAASxoQ,KAAK0oQ,eAAeN,aAE5B,KAAK15G,GAGJ45G,EAAQzuF,EACR2uF,EAAQ,EAAIn5F,EAAKC,EAEjB,MAED,KAAK3gB,GAIJ65G,EAAQn5F,EAAK03F,EADbuB,EAAQvB,EAAGnvQ,OAAS,GACOmvQ,EAAIuB,EAAQ,GAEvC,MAED,QAGCA,EAAQzuF,EACR2uF,EAAQl5F,EAMX,QAAellK,IAAVq+P,EAEJ,OAASzoQ,KAAK0oQ,eAAeL,WAE5B,KAAK35G,GAGJ65G,EAAQ1uF,EACR4uF,EAAQ,EAAIn5F,EAAKD,EAEjB,MAED,KAAK1gB,GAGJ45G,EAAQ,EACRE,EAAQn5F,EAAKy3F,EAAI,GAAMA,EAAI,GAE3B,MAED,QAGCwB,EAAQ1uF,EAAK,EACb4uF,EAAQp5F,EAMX,IAAMs5F,EAAuB,IAAZr5F,EAAKD,GACrBoa,EAASzpL,KAAK2kQ,UAEf3kQ,KAAKgoQ,YAAcW,GAAWt5F,EAAKm5F,GACnCxoQ,KAAKkoQ,YAAcS,GAAWF,EAAQn5F,GACtCtvK,KAAKioQ,YAAcK,EAAQ7+E,EAC3BzpL,KAAKmoQ,YAAcI,EAAQ9+E,CAE5B,GAAC,CAAAjnL,IAAA,eAAA/D,MAED,SAAco7K,EAAIxK,EAAI/3K,EAAGg4K,GAuBxB,IArBA,IAAMx3K,EAASkI,KAAKkmQ,aACnBn5P,EAAS/M,KAAK0mQ,aACdj9E,EAASzpL,KAAK2kQ,UAEd1P,EAAKp7E,EAAK4P,EAASm/E,EAAK3T,EAAKxrE,EAC7Bo/E,EAAK7oQ,KAAKioQ,YAAca,EAAK9oQ,KAAKmoQ,YAClCY,EAAK/oQ,KAAKgoQ,YAAagB,EAAKhpQ,KAAKkoQ,YAEjClhQ,GAAM1P,EAAI+3K,IAASC,EAAKD,GACxB03F,EAAK//P,EAAIA,EACTiiQ,EAAMlC,EAAK//P,EAINkiQ,GAAOH,EAAKE,EAAM,EAAIF,EAAKhC,EAAKgC,EAAK/hQ,EACrC2nK,GAAO,EAAIo6F,GAAOE,IAAU,IAAM,EAAIF,GAAOhC,IAAS,GAAMgC,GAAO/hQ,EAAI,EACvE28J,IAAS,EAAIqlG,GAAOC,GAAQ,IAAMD,GAAOjC,EAAK,GAAM//P,EACpDmiQ,EAAKH,EAAKC,EAAMD,EAAKjC,EAIjBrqQ,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAEjC5E,EAAQ4E,GACNwsQ,EAAKn8P,EAAQ87P,EAAKnsQ,GAClBiyK,EAAK5hK,EAAQ67P,EAAKlsQ,GAClBinK,EAAK52J,EAAQkoP,EAAKv4P,GAClBysQ,EAAKp8P,EAAQ+7P,EAAKpsQ,GAIrB,OAAO5E,CAER,KAAC8vQ,CAAA,CAtIoB,CAASpB,IA0IzB4C,GAAiB,SAAAC,GAAArtP,EAAAotP,EAAAC,GAAA,IAAAC,EAAA3uP,EAAAyuP,GAEtB,SAAAA,EAAa3C,EAAoBC,EAAcC,EAAYT,GAAe,OAAAz7P,EAAA,KAAA2+P,GAAAE,EAAAzsQ,KAAA,KAElE4pQ,EAAoBC,EAAcC,EAAYT,EAEtD,CAwBC,OAxBA38P,EAAA6/P,EAAA,EAAA5mQ,IAAA,eAAA/D,MAED,SAAco7K,EAAIxK,EAAI/3K,EAAGg4K,GAYxB,IAVA,IAAMx3K,EAASkI,KAAKkmQ,aACnBn5P,EAAS/M,KAAK0mQ,aACdj9E,EAASzpL,KAAK2kQ,UAEd4E,EAAU1vF,EAAK4P,EACf+/E,EAAUD,EAAU9/E,EAEpBggF,GAAYnyQ,EAAI+3K,IAASC,EAAKD,GAC9Bq6F,EAAU,EAAID,EAEL/sQ,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAEjC5E,EAAQ4E,GACNqQ,EAAQy8P,EAAU9sQ,GAAMgtQ,EACxB38P,EAAQw8P,EAAU7sQ,GAAM+sQ,EAI3B,OAAO3xQ,CAER,KAACsxQ,CAAA,CA9BqB,CAAS5C,IAwC1BmD,GAAmB,SAAAC,GAAA5tP,EAAA2tP,EAAAC,GAAA,IAAAC,EAAAlvP,EAAAgvP,GAExB,SAAAA,EAAalD,EAAoBC,EAAcC,EAAYT,GAAe,OAAAz7P,EAAA,KAAAk/P,GAAAE,EAAAhtQ,KAAA,KAElE4pQ,EAAoBC,EAAcC,EAAYT,EAEtD,CAMC,OANA38P,EAAAogQ,EAAA,EAAAnnQ,IAAA,eAAA/D,MAED,SAAco7K,GAEb,OAAO75K,KAAK2nQ,iBAAkB9tF,EAAK,EAEpC,KAAC8vF,CAAA,CAZuB,CAASnD,IAgB5BsD,GAAa,WAElB,SAAAA,EAAa3wQ,EAAM2qQ,EAAO/2P,EAAQg9P,GAEjC,GAFiDt/P,EAAA,KAAAq/P,QAEnC1/P,IAATjR,EAAqB,MAAM,IAAI2E,MAAO,gDAC3C,QAAesM,IAAV05P,GAAwC,IAAjBA,EAAMlsQ,OAAe,MAAM,IAAIkG,MAAO,oDAAsD3E,GAExH6G,KAAK7G,KAAOA,EAEZ6G,KAAK8jQ,MAAQP,GAAeG,aAAcI,EAAO9jQ,KAAKgqQ,gBACtDhqQ,KAAK+M,OAASw2P,GAAeG,aAAc32P,EAAQ/M,KAAKiqQ,iBAExDjqQ,KAAKkqQ,iBAAkBH,GAAiB/pQ,KAAKmqQ,qBAE9C,CAyCC,OAtCD5gQ,EAAAugQ,EAAA,EAAAtnQ,IAAA,mCAAA/D,MAwCA,SAAkC3G,GAEjC,OAAO,IAAI6xQ,GAAqB3pQ,KAAK8jQ,MAAO9jQ,KAAK+M,OAAQ/M,KAAK4kQ,eAAgB9sQ,EAE/E,GAAC,CAAA0K,IAAA,iCAAA/D,MAED,SAAgC3G,GAE/B,OAAO,IAAIsxQ,GAAmBppQ,KAAK8jQ,MAAO9jQ,KAAK+M,OAAQ/M,KAAK4kQ,eAAgB9sQ,EAE7E,GAAC,CAAA0K,IAAA,iCAAA/D,MAED,SAAgC3G,GAE/B,OAAO,IAAI8vQ,GAAkB5nQ,KAAK8jQ,MAAO9jQ,KAAK+M,OAAQ/M,KAAK4kQ,eAAgB9sQ,EAE5E,GAAC,CAAA0K,IAAA,mBAAA/D,MAED,SAAkBsrQ,GAEjB,IAAIK,EAEJ,OAASL,GAER,KAAKz7G,GAEJ87G,EAAgBpqQ,KAAKqqQ,iCAErB,MAED,KAAK97G,GAEJ67G,EAAgBpqQ,KAAKsqQ,+BAErB,MAED,KAAK97G,GAEJ47G,EAAgBpqQ,KAAKuqQ,+BAMvB,QAAuBngQ,IAAlBggQ,EAA8B,CAElC,IAAM1pN,EAAU,iCACf1gD,KAAKulQ,cAAgB,yBAA2BvlQ,KAAK7G,KAEtD,QAAgCiR,IAA3BpK,KAAK2lQ,kBAAkC,CAG3C,GAAKoE,IAAkB/pQ,KAAKmqQ,qBAM3B,MAAM,IAAIrsQ,MAAO4iD,GAJjB1gD,KAAKkqQ,iBAAkBlqQ,KAAKmqQ,qBAQ9B,CAGA,OADAp2P,QAAQk/C,KAAM,uBAAwBvS,GAC/B1gD,IAER,CAIA,OAFAA,KAAK2lQ,kBAAoByE,EAElBpqQ,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,WAEC,OAASuB,KAAK2lQ,mBAEb,KAAK3lQ,KAAKqqQ,iCAET,OAAO/7G,GAER,KAAKtuJ,KAAKsqQ,+BAET,OAAO/7G,GAER,KAAKvuJ,KAAKuqQ,+BAET,OAAO/7G,GAIV,GAAC,CAAAhsJ,IAAA,eAAA/D,MAED,WAEC,OAAOuB,KAAK+M,OAAOnV,OAASoI,KAAK8jQ,MAAMlsQ,MAExC,GAEA,CAAA4K,IAAA,QAAA/D,MACA,SAAO+rQ,GAEN,GAAoB,IAAfA,EAIJ,IAFA,IAAM1G,EAAQ9jQ,KAAK8jQ,MAETpnQ,EAAI,EAAGqK,EAAI+8P,EAAMlsQ,OAAQ8E,IAAMqK,IAAMrK,EAE9ConQ,EAAOpnQ,IAAO8tQ,EAMhB,OAAOxqQ,IAER,GAEA,CAAAwC,IAAA,QAAA/D,MACA,SAAOgsQ,GAEN,GAAmB,IAAdA,EAIJ,IAFA,IAAM3G,EAAQ9jQ,KAAK8jQ,MAETpnQ,EAAI,EAAGqK,EAAI+8P,EAAMlsQ,OAAQ8E,IAAMqK,IAAMrK,EAE9ConQ,EAAOpnQ,IAAO+tQ,EAMhB,OAAOzqQ,IAER,GAGA,CAAAwC,IAAA,OAAA/D,MACA,SAAM2yD,EAAWs5M,GAQhB,IANA,IAAM5G,EAAQ9jQ,KAAK8jQ,MAClB6G,EAAQ7G,EAAMlsQ,OAEXyqB,EAAO,EACVuoD,EAAK+/L,EAAQ,EAENtoP,IAASsoP,GAAS7G,EAAOzhP,GAAS+uC,KAEtC/uC,EAIJ,MAAiB,IAATuoD,GAAck5L,EAAOl5L,GAAO8/L,KAEhC9/L,EAMJ,KAFGA,EAEW,IAATvoD,GAAcuoD,IAAO+/L,EAAQ,CAG5BtoP,GAAQuoD,IAGZvoD,GADAuoD,EAAK3tE,KAAKC,IAAK0tE,EAAI,IACP,GAIb,IAAM6+G,EAASzpL,KAAK4kQ,eACpB5kQ,KAAK8jQ,MAAQP,GAAeC,WAAYM,EAAOzhP,EAAMuoD,GACrD5qE,KAAK+M,OAASw2P,GAAeC,WAAYxjQ,KAAK+M,OAAQsV,EAAOonK,EAAQ7+G,EAAK6+G,EAE3E,CAEA,OAAOzpL,IAER,GAEA,CAAAwC,IAAA,WAAA/D,MACA,WAEC,IAAImsQ,GAAQ,EAENjG,EAAY3kQ,KAAK4kQ,eAClBD,EAAY1nQ,KAAKwf,MAAOkoP,KAAgB,IAE5C5wP,QAAQwN,MAAO,oDAAqDvhB,MACpE4qQ,GAAQ,GAIT,IAAM9G,EAAQ9jQ,KAAK8jQ,MAClB/2P,EAAS/M,KAAK+M,OAEd49P,EAAQ7G,EAAMlsQ,OAEA,IAAV+yQ,IAEJ52P,QAAQwN,MAAO,uCAAwCvhB,MACvD4qQ,GAAQ,GAMT,IAFA,IAAIC,EAAW,KAELnuQ,EAAI,EAAGA,IAAMiuQ,EAAOjuQ,IAAO,CAEpC,IAAMouQ,EAAWhH,EAAOpnQ,GAExB,GAAyB,kBAAbouQ,GAAyBxzP,MAAOwzP,GAAa,CAExD/2P,QAAQwN,MAAO,mDAAoDvhB,KAAMtD,EAAGouQ,GAC5EF,GAAQ,EACR,KAED,CAEA,GAAkB,OAAbC,GAAqBA,EAAWC,EAAW,CAE/C/2P,QAAQwN,MAAO,0CAA2CvhB,KAAMtD,EAAGouQ,EAAUD,GAC7ED,GAAQ,EACR,KAED,CAEAC,EAAWC,CAEZ,CAEA,QAAgB1gQ,IAAX2C,GAECw2P,GAAeE,aAAc12P,GAEjC,IAAM,IAAIrQ,EAAI,EAAGqK,EAAIgG,EAAOnV,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEnD,IAAM+B,EAAQsO,EAAQrQ,GAEtB,GAAK4a,MAAO7Y,GAAU,CAErBsV,QAAQwN,MAAO,oDAAqDvhB,KAAMtD,EAAG+B,GAC7EmsQ,GAAQ,EACR,KAED,CAED,CAMF,OAAOA,CAER,GAGA,CAAApoQ,IAAA,WAAA/D,MACA,WAaC,IAVA,IAAMqlQ,EAAQP,GAAeC,WAAYxjQ,KAAK8jQ,OAC7C/2P,EAASw2P,GAAeC,WAAYxjQ,KAAK+M,QACzC08K,EAASzpL,KAAK4kQ,eAEdmG,EAAsB/qQ,KAAKgrQ,qBAAuBx8G,GAElD0uD,EAAY4mD,EAAMlsQ,OAAS,EAExBqzQ,EAAa,EAEPvuQ,EAAI,EAAGA,EAAIwgN,IAAcxgN,EAAI,CAEtC,IAAIwuQ,GAAO,EAELjjO,EAAO67N,EAAOpnQ,GAKpB,GAAKurC,IAJY67N,EAAOpnQ,EAAI,KAIM,IAANA,GAAWurC,IAAS67N,EAAO,IAEtD,GAAOiH,EAwBNG,GAAO,OAhBP,IAJA,IAAMnhO,EAASrtC,EAAI+sL,EAClB0hF,EAAUphO,EAAS0/I,EACnB2hF,EAAUrhO,EAAS0/I,EAEV55K,EAAI,EAAGA,IAAM45K,IAAW55K,EAAI,CAErC,IAAMpR,EAAQsO,EAAQg9B,EAASl6B,GAE/B,GAAKpR,IAAUsO,EAAQo+P,EAAUt7P,IAChCpR,IAAUsO,EAAQq+P,EAAUv7P,GAAM,CAElCq7P,GAAO,EACP,KAED,CAED,CAYF,GAAKA,EAAO,CAEX,GAAKxuQ,IAAMuuQ,EAAa,CAEvBnH,EAAOmH,GAAenH,EAAOpnQ,GAK7B,IAHA,IAAM2uQ,EAAa3uQ,EAAI+sL,EACtB6hF,EAAcL,EAAaxhF,EAElB55K,EAAI,EAAGA,IAAM45K,IAAW55K,EAEjC9C,EAAQu+P,EAAcz7P,GAAM9C,EAAQs+P,EAAax7P,EAInD,GAEGo7P,CAEJ,CAED,CAIA,GAAK/tD,EAAY,EAAI,CAEpB4mD,EAAOmH,GAAenH,EAAO5mD,GAE7B,IAAM,IAAImuD,EAAanuD,EAAYzzB,EAAQ6hF,EAAcL,EAAaxhF,EAAQ55K,EAAI,EAAGA,IAAM45K,IAAW55K,EAErG9C,EAAQu+P,EAAcz7P,GAAM9C,EAAQs+P,EAAax7P,KAI/Co7P,CAEJ,CAcA,OAZKA,IAAenH,EAAMlsQ,QAEzBoI,KAAK8jQ,MAAQP,GAAeC,WAAYM,EAAO,EAAGmH,GAClDjrQ,KAAK+M,OAASw2P,GAAeC,WAAYz2P,EAAQ,EAAGk+P,EAAaxhF,KAIjEzpL,KAAK8jQ,MAAQA,EACb9jQ,KAAK+M,OAASA,GAIR/M,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,IAAMqlQ,EAAQP,GAAeC,WAAYxjQ,KAAK8jQ,MAAO,GAC/C/2P,EAASw2P,GAAeC,WAAYxjQ,KAAK+M,OAAQ,GAGjDypB,EAAQ,IAAI+0O,EADSvrQ,KAAKma,aACMna,KAAK7G,KAAM2qQ,EAAO/2P,GAKxD,OAFAypB,EAAMmvO,kBAAoB3lQ,KAAK2lQ,kBAExBnvO,CAER,IAAC,EAAAh0B,IAAA,SAAA/D,MAxaD,SAAe+3B,GAEd,IAEIimN,EAFE+uB,EAAYh1O,EAAMrc,YAKxB,GAAKqxP,EAAUhsG,SAAWx/J,KAAKw/J,OAE9Bi9E,EAAO+uB,EAAUhsG,OAAQhpI,OAEnB,CAGNimN,EAAO,CAEN,KAAQjmN,EAAMr9B,KACd,MAASoqQ,GAAeG,aAAcltO,EAAMstO,MAAOnnQ,OACnD,OAAU4mQ,GAAeG,aAAcltO,EAAMzpB,OAAQpQ,QAItD,IAAMotQ,EAAgBvzO,EAAMw0O,mBAEvBjB,IAAkBvzO,EAAM2zO,uBAE5B1tB,EAAKstB,cAAgBA,EAIvB,CAIA,OAFAttB,EAAK73O,KAAO4xB,EAAM+uO,cAEX9oB,CAER,KAACqtB,CAAA,CAvDiB,GA+bnBA,GAAcltQ,UAAUotQ,eAAiBn1G,aACzCi1G,GAAcltQ,UAAUqtQ,gBAAkBp1G,aAC1Ci1G,GAAcltQ,UAAUutQ,qBAAuB57G,GAE/C,IAGMk9G,GAAoB,SAAAC,GAAA1vP,EAAAyvP,EAAAC,GAAA,IAAAC,EAAAhxP,EAAA8wP,GAAA,SAAAA,IAAA,OAAAhhQ,EAAA,KAAAghQ,GAAAE,EAAA7rQ,MAAA,KAAAG,UAAA,QAAAsJ,EAAAkiQ,EAAA,EAAS3B,IAEnC2B,GAAqB7uQ,UAAU2oQ,cAAgB,OAC/CkG,GAAqB7uQ,UAAUqtQ,gBAAkBttQ,MACjD8uQ,GAAqB7uQ,UAAUutQ,qBAAuB77G,GACtDm9G,GAAqB7uQ,UAAU0tQ,oCAAiClgQ,EAChEqhQ,GAAqB7uQ,UAAU2tQ,oCAAiCngQ,EAEhE,IAGMwhQ,GAAkB,SAAAC,GAAA7vP,EAAA4vP,EAAAC,GAAA,IAAAC,EAAAnxP,EAAAixP,GAAA,SAAAA,IAAA,OAAAnhQ,EAAA,KAAAmhQ,GAAAE,EAAAhsQ,MAAA,KAAAG,UAAA,QAAAsJ,EAAAqiQ,EAAA,EAAS9B,IAEjC8B,GAAmBhvQ,UAAU2oQ,cAAgB,QAE7C,IAGMwG,GAAmB,SAAAC,GAAAhwP,EAAA+vP,EAAAC,GAAA,IAAAC,EAAAtxP,EAAAoxP,GAAA,SAAAA,IAAA,OAAAthQ,EAAA,KAAAshQ,GAAAE,EAAAnsQ,MAAA,KAAAG,UAAA,QAAAsJ,EAAAwiQ,EAAA,EAASjC,IAElCiC,GAAoBnvQ,UAAU2oQ,cAAgB,SAE9C,IAIM2G,GAA2B,SAAAC,GAAAnwP,EAAAkwP,EAAAC,GAAA,IAAAC,EAAAzxP,EAAAuxP,GAEhC,SAAAA,EAAazF,EAAoBC,EAAcC,EAAYT,GAAe,OAAAz7P,EAAA,KAAAyhQ,GAAAE,EAAAvvQ,KAAA,KAElE4pQ,EAAoBC,EAAcC,EAAYT,EAEtD,CAoBC,OApBA38P,EAAA2iQ,EAAA,EAAA1pQ,IAAA,eAAA/D,MAED,SAAco7K,EAAIxK,EAAI/3K,EAAGg4K,GAUxB,IARA,IAAMx3K,EAASkI,KAAKkmQ,aACnBn5P,EAAS/M,KAAK0mQ,aACdj9E,EAASzpL,KAAK2kQ,UAEd5uG,GAAUz+J,EAAI+3K,IAASC,EAAKD,GAEzBtlI,EAAS8vI,EAAK4P,EAER1+I,EAAMhB,EAAS0/I,EAAQ1/I,IAAWgB,EAAKhB,GAAU,EAE1Dg5H,GAAWspG,UAAWv0Q,EAAQ,EAAGiV,EAAQg9B,EAAS0/I,EAAQ18K,EAAQg9B,EAAQgsH,GAI3E,OAAOj+J,CAER,KAACo0Q,CAAA,CA1B+B,CAAS1F,IAiCpC8F,GAAuB,SAAAC,GAAAvwP,EAAAswP,EAAAC,GAAA,IAAAC,EAAA7xP,EAAA2xP,GAAA,SAAAA,IAAA,OAAA7hQ,EAAA,KAAA6hQ,GAAAE,EAAA1sQ,MAAA,KAAAG,UAAA,CAM3B,OAN2BsJ,EAAA+iQ,EAAA,EAAA9pQ,IAAA,iCAAA/D,MAE5B,SAAgC3G,GAE/B,OAAO,IAAIo0Q,GAA6BlsQ,KAAK8jQ,MAAO9jQ,KAAK+M,OAAQ/M,KAAK4kQ,eAAgB9sQ,EAEvF,KAACw0Q,CAAA,CAN2B,CAASxC,IAUtCwC,GAAwB1vQ,UAAU2oQ,cAAgB,aAElD+G,GAAwB1vQ,UAAUutQ,qBAAuB57G,GACzD+9G,GAAwB1vQ,UAAU2tQ,oCAAiCngQ,EAEnE,IAGMqiQ,GAAmB,SAAAC,GAAA1wP,EAAAywP,EAAAC,GAAA,IAAAC,EAAAhyP,EAAA8xP,GAAA,SAAAA,IAAA,OAAAhiQ,EAAA,KAAAgiQ,GAAAE,EAAA7sQ,MAAA,KAAAG,UAAA,QAAAsJ,EAAAkjQ,EAAA,EAAS3C,IAElC2C,GAAoB7vQ,UAAU2oQ,cAAgB,SAC9CkH,GAAoB7vQ,UAAUqtQ,gBAAkBttQ,MAChD8vQ,GAAoB7vQ,UAAUutQ,qBAAuB77G,GACrDm+G,GAAoB7vQ,UAAU0tQ,oCAAiClgQ,EAC/DqiQ,GAAoB7vQ,UAAU2tQ,oCAAiCngQ,EAE/D,IAGMwiQ,GAAmB,SAAAC,GAAA7wP,EAAA4wP,EAAAC,GAAA,IAAAC,EAAAnyP,EAAAiyP,GAAA,SAAAA,IAAA,OAAAniQ,EAAA,KAAAmiQ,GAAAE,EAAAhtQ,MAAA,KAAAG,UAAA,QAAAsJ,EAAAqjQ,EAAA,EAAS9C,IAElC8C,GAAoBhwQ,UAAU2oQ,cAAgB,SAAS,IAEjDwH,GAAa,WAElB,SAAAA,EAAa5zQ,GAAqE,IAA/DgzE,EAAQlsE,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,IAAK,EAAGu6E,EAAMv6E,UAAArI,OAAA,EAAAqI,UAAA,QAAAmK,EAAEm8P,EAAStmQ,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG2uJ,GAAwBnkJ,EAAA,KAAAsiQ,GAE9E/sQ,KAAK7G,KAAOA,EACZ6G,KAAKw6E,OAASA,EACdx6E,KAAKmsE,SAAWA,EAChBnsE,KAAKumQ,UAAYA,EAEjBvmQ,KAAK67G,KAAOg2C,KAGP7xJ,KAAKmsE,SAAW,GAEpBnsE,KAAK8kQ,eAIP,CA6RC,OA7RAv7P,EAAAwjQ,EAAA,EAAAvqQ,IAAA,gBAAA/D,MA+RD,WAKC,IAHA,IACI0tE,EAAW,EAELzvE,EAAI,EAAGqK,EAHF/G,KAAKw6E,OAGQ5iF,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEnD,IAAM85B,EAAQx2B,KAAKw6E,OAAQ99E,GAE3ByvE,EAAWlvE,KAAKC,IAAKivE,EAAU31C,EAAMstO,MAAOttO,EAAMstO,MAAMlsQ,OAAS,GAElE,CAIA,OAFAoI,KAAKmsE,SAAWA,EAETnsE,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAEC,IAAM,IAAI/B,EAAI,EAAGA,EAAIsD,KAAKw6E,OAAO5iF,OAAQ8E,IAExCsD,KAAKw6E,OAAQ99E,GAAImyB,KAAM,EAAG7uB,KAAKmsE,UAIhC,OAAOnsE,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,WAIC,IAFA,IAAImsQ,GAAQ,EAEFluQ,EAAI,EAAGA,EAAIsD,KAAKw6E,OAAO5iF,OAAQ8E,IAExCkuQ,EAAQA,GAAS5qQ,KAAKw6E,OAAQ99E,GAAIswQ,WAInC,OAAOpC,CAER,GAAC,CAAApoQ,IAAA,WAAA/D,MAED,WAEC,IAAM,IAAI/B,EAAI,EAAGA,EAAIsD,KAAKw6E,OAAO5iF,OAAQ8E,IAExCsD,KAAKw6E,OAAQ99E,GAAIuwQ,WAIlB,OAAOjtQ,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAIC,IAFA,IAAM+7E,EAAS,GAEL99E,EAAI,EAAGA,EAAIsD,KAAKw6E,OAAO5iF,OAAQ8E,IAExC89E,EAAO19E,KAAMkD,KAAKw6E,OAAQ99E,GAAIwE,SAI/B,OAAO,IAAIlB,KAAKma,YAAana,KAAK7G,KAAM6G,KAAKmsE,SAAUqO,EAAQx6E,KAAKumQ,UAErE,GAAC,CAAA/jQ,IAAA,SAAA/D,MAED,WAEC,OAAOuB,KAAKma,YAAYqlJ,OAAQx/J,KAEjC,IAAC,EAAAwC,IAAA,QAAA/D,MAvWD,SAAcg+O,GAMb,IAJA,IAAMjiK,EAAS,GACd0yL,EAAazwB,EAAKjiK,OAClB2yL,EAAY,GAAQ1wB,EAAKgoB,KAAO,GAEvB/nQ,EAAI,EAAGqK,EAAImmQ,EAAWt1Q,OAAQ8E,IAAMqK,IAAMrK,EAEnD89E,EAAO19E,KAAMswQ,GAAoBF,EAAYxwQ,IAAM26I,MAAO81H,IAI3D,IAAMzI,EAAO,IAAI1kQ,KAAMy8O,EAAKtjP,KAAMsjP,EAAKtwK,SAAUqO,EAAQiiK,EAAK8pB,WAG9D,OAFA7B,EAAK7oJ,KAAO4gI,EAAK5gI,KAEV6oJ,CAER,GAAC,CAAAliQ,IAAA,SAAA/D,MAED,SAAeimQ,GAed,IAbA,IAAMlqL,EAAS,GACd6yL,EAAa3I,EAAKlqL,OAEbiiK,EAAO,CAEZ,KAAQioB,EAAKvrQ,KACb,SAAYurQ,EAAKv4L,SACjB,OAAUqO,EACV,KAAQkqL,EAAK7oJ,KACb,UAAa6oJ,EAAK6B,WAIT7pQ,EAAI,EAAGqK,EAAIsmQ,EAAWz1Q,OAAQ8E,IAAMqK,IAAMrK,EAEnD89E,EAAO19E,KAAMgtQ,GAActqG,OAAQ6tG,EAAY3wQ,KAIhD,OAAO+/O,CAER,GAAC,CAAAj6O,IAAA,gCAAA/D,MAED,SAAsCtF,EAAMm0Q,EAAqB7I,EAAK8I,GAKrE,IAHA,IAAMC,EAAkBF,EAAoB11Q,OACtC4iF,EAAS,GAEL99E,EAAI,EAAGA,EAAI8wQ,EAAiB9wQ,IAAO,CAE5C,IAAIonQ,EAAQ,GACR/2P,EAAS,GAEb+2P,EAAMhnQ,MACHJ,EAAI8wQ,EAAkB,GAAMA,EAC9B9wQ,GACEA,EAAI,GAAM8wQ,GAEbzgQ,EAAOjQ,KAAM,EAAG,EAAG,GAEnB,IAAMyQ,EAAQg2P,GAAeM,iBAAkBC,GAC/CA,EAAQP,GAAeQ,YAAaD,EAAO,EAAGv2P,GAC9CR,EAASw2P,GAAeQ,YAAah3P,EAAQ,EAAGQ,GAIzCggQ,GAAyB,IAAfzJ,EAAO,KAEvBA,EAAMhnQ,KAAM0wQ,GACZzgQ,EAAOjQ,KAAMiQ,EAAQ,KAItBytE,EAAO19E,KACN,IAAIivQ,GACH,0BAA4BuB,EAAqB5wQ,GAAIvD,KAAO,IAC5D2qQ,EAAO/2P,GACNsqI,MAAO,EAAMotH,GAEjB,CAEA,OAAO,IAAIzkQ,KAAM7G,GAAQ,EAAGqhF,EAE7B,GAAC,CAAAh4E,IAAA,aAAA/D,MAED,SAAmBgvQ,EAAmBt0Q,GAErC,IAAIu0Q,EAAYD,EAEhB,IAAO9wQ,MAAM0E,QAASosQ,GAAsB,CAE3C,IAAMjzP,EAAIizP,EACVC,EAAYlzP,EAAEswJ,UAAYtwJ,EAAEswJ,SAASsL,YAAc57J,EAAE47J,UAEtD,CAEA,IAAM,IAAI15K,EAAI,EAAGA,EAAIgxQ,EAAU91Q,OAAQ8E,IAEtC,GAAKgxQ,EAAWhxQ,GAAIvD,OAASA,EAE5B,OAAOu0Q,EAAWhxQ,GAMpB,OAAO,IAER,GAAC,CAAA8F,IAAA,sCAAA/D,MAED,SAA4CgtL,EAAcg5E,EAAK8I,GAU9D,IARA,IAAMI,EAA0B,CAAC,EAI3BnwL,EAAU,qBAIN9gF,EAAI,EAAGowD,EAAK2+H,EAAa7zL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEzD,IAAM05M,EAAc3qB,EAAc/uL,GAC5B2sG,EAAQ+sG,EAAYj9M,KAAKxB,MAAO6lF,GAEtC,GAAK6rB,GAASA,EAAMzxG,OAAS,EAAI,CAEhC,IAAMuB,EAAOkwG,EAAO,GAEhBukK,EAAwBD,EAAyBx0Q,GAE9Cy0Q,IAEND,EAAyBx0Q,GAASy0Q,EAAwB,IAI3DA,EAAsB9wQ,KAAMs5M,EAE7B,CAED,CAEA,IAAMy3D,EAAQ,GAEd,IAAM,IAAM10Q,KAAQw0Q,EAEnBE,EAAM/wQ,KAAMkD,KAAK8tQ,8BAA+B30Q,EAAMw0Q,EAAyBx0Q,GAAQsrQ,EAAK8I,IAI7F,OAAOM,CAER,GAEA,CAAArrQ,IAAA,iBAAA/D,MACA,SAAuB0uC,EAAWy6K,GAEjC,IAAOz6K,EAGN,OADAp5B,QAAQwN,MAAO,yDACR,KAoCR,IAhCA,IAAMwsP,EAAmB,SAAWvC,EAAWwC,EAAWC,EAAenhP,EAAcohP,GAGtF,GAA8B,IAAzBD,EAAcr2Q,OAAe,CAEjC,IAAMksQ,EAAQ,GACR/2P,EAAS,GAEfw2P,GAAeW,YAAa+J,EAAenK,EAAO/2P,EAAQ+f,GAGpC,IAAjBg3O,EAAMlsQ,QAEVs2Q,EAAWpxQ,KAAM,IAAI0uQ,EAAWwC,EAAWlK,EAAO/2P,GAIpD,CAED,EAEMytE,EAAS,GAET2zL,EAAWhhO,EAAUh0C,MAAQ,UAC7BsrQ,EAAMt3N,EAAUs3N,KAAO,GACvB8B,EAAYp5N,EAAUo5N,UAGxBp6L,EAAWh/B,EAAUv1C,SAAY,EAE/Bw2Q,EAAkBjhO,EAAUkhO,WAAa,GAErC1nQ,EAAI,EAAGA,EAAIynQ,EAAgBx2Q,OAAQ+O,IAAO,CAEnD,IAAMsnQ,EAAgBG,EAAiBznQ,GAAI/E,KAG3C,GAAOqsQ,GAA0C,IAAzBA,EAAcr2Q,OAGtC,GAAKq2Q,EAAe,GAAIxiF,aAAe,CAGtC,IAAM6iF,EAAmB,CAAC,EAEtB1nQ,OAAC,EAEL,IAAMA,EAAI,EAAGA,EAAIqnQ,EAAcr2Q,OAAQgP,IAEtC,GAAKqnQ,EAAernQ,GAAI6kL,aAEvB,IAAM,IAAI3kL,EAAI,EAAGA,EAAImnQ,EAAernQ,GAAI6kL,aAAa7zL,OAAQkP,IAE5DwnQ,EAAkBL,EAAernQ,GAAI6kL,aAAc3kL,KAAU,EAWhE,IAAM,IAAMynQ,KAAmBD,EAAmB,CAKjD,IAHA,IAAMxK,EAAQ,GACR/2P,EAAS,GAELjG,EAAI,EAAGA,IAAMmnQ,EAAernQ,GAAI6kL,aAAa7zL,SAAWkP,EAAI,CAErE,IAAM0nQ,EAAeP,EAAernQ,GAEpCk9P,EAAMhnQ,KAAM0xQ,EAAavmO,MACzBl7B,EAAOjQ,KAAQ0xQ,EAAap4D,cAAgBm4D,EAAoB,EAAI,EAErE,CAEA/zL,EAAO19E,KAAM,IAAIivQ,GAAqB,yBAA2BwC,EAAkB,IAAKzK,EAAO/2P,GAEhG,CAEAo/D,EAAWmiM,EAAiB12Q,OAAS6sQ,CAEtC,KAAO,CAIN,IAAMgK,EAAW,UAAY7mD,EAAOjhN,GAAIxN,KAAO,IAE/C40Q,EACCnB,GAAqB6B,EAAW,YAChCR,EAAe,MAAOzzL,GAEvBuzL,EACCzB,GAAyBmC,EAAW,cACpCR,EAAe,MAAOzzL,GAEvBuzL,EACCnB,GAAqB6B,EAAW,SAChCR,EAAe,MAAOzzL,EAExB,CAED,CAEA,OAAuB,IAAlBA,EAAO5iF,OAEJ,KAIK,IAAIoI,KAAMmuQ,EAAUhiM,EAAUqO,EAAQ+rL,EAIpD,KAACwG,CAAA,CA/SiB,GA0anB,SAASK,GAAoB3wB,GAE5B,QAAmBryO,IAAdqyO,EAAK73O,KAET,MAAM,IAAI9G,MAAO,4DAIlB,IAAM0tQ,EAlDP,SAAuCkD,GAEtC,OAASA,EAAS12Q,eAEjB,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,UAEJ,OAAO+zQ,GAER,IAAK,SACL,IAAK,UACL,IAAK,UACL,IAAK,UAEJ,OAAOa,GAER,IAAK,QAEJ,OAAOhB,GAER,IAAK,aAEJ,OAAOU,GAER,IAAK,OACL,IAAK,UAEJ,OAAOb,GAER,IAAK,SAEJ,OAAOgB,GAIT,MAAM,IAAI3uQ,MAAO,8CAAgD4wQ,EAElE,CAUmBC,CAA8BlyB,EAAK73O,MAErD,QAAoBwF,IAAfqyO,EAAKqnB,MAAsB,CAE/B,IAAMA,EAAQ,GAAI/2P,EAAS,GAE3Bw2P,GAAeW,YAAaznB,EAAK76O,KAAMkiQ,EAAO/2P,EAAQ,SAEtD0vO,EAAKqnB,MAAQA,EACbrnB,EAAK1vO,OAASA,CAEf,CAGA,YAAyB3C,IAApBohQ,EAAU7qK,MAEP6qK,EAAU7qK,MAAO87I,GAKjB,IAAI+uB,EAAW/uB,EAAKtjP,KAAMsjP,EAAKqnB,MAAOrnB,EAAK1vO,OAAQ0vO,EAAKstB,cAIjE,CAEA,IAAM6E,GAAQ,CAEb/9E,SAAS,EAETg+E,MAAO,CAAC,EAERziP,IAAK,SAAW5pB,EAAKmyE,IAEE,IAAjB30E,KAAK6wL,UAIV7wL,KAAK6uQ,MAAOrsQ,GAAQmyE,EAErB,EAEA5kD,IAAK,SAAWvtB,GAEf,IAAsB,IAAjBxC,KAAK6wL,QAIV,OAAO7wL,KAAK6uQ,MAAOrsQ,EAEpB,EAEAo+D,OAAQ,SAAWp+D,UAEXxC,KAAK6uQ,MAAOrsQ,EAEpB,EAEArC,MAAO,WAENH,KAAK6uQ,MAAQ,CAAC,CAEf,GAIKC,GAAcvlQ,GAEnB,SAAAulQ,EAAa90H,EAAQvtE,EAAYr0C,GAAU3tB,EAAA,KAAAqkQ,GAE1C,IAAM9hF,EAAQhtL,KAEV8sE,GAAY,EACZiiM,EAAc,EACdC,EAAa,EACbC,OAAc7kQ,EACZ8kQ,EAAW,GAKjBlvQ,KAAKwtE,aAAUpjE,EACfpK,KAAKg6I,OAASA,EACdh6I,KAAKysE,WAAaA,EAClBzsE,KAAKo4B,QAAUA,EAEfp4B,KAAKmvQ,UAAY,SAAWjnO,GAE3B8mO,KAEmB,IAAdliM,QAEmB1iE,IAAlB4iL,EAAMx/G,SAEVw/G,EAAMx/G,QAAStlC,EAAK6mO,EAAaC,GAMnCliM,GAAY,CAEb,EAEA9sE,KAAKovQ,QAAU,SAAWlnO,GAEzB6mO,SAE0B3kQ,IAArB4iL,EAAMvgH,YAEVugH,EAAMvgH,WAAYvkC,EAAK6mO,EAAaC,GAIhCD,IAAgBC,IAEpBliM,GAAY,OAEU1iE,IAAjB4iL,EAAMhzC,QAEVgzC,EAAMhzC,SAMT,EAEAh6I,KAAKqvQ,UAAY,SAAWnnO,QAEJ99B,IAAlB4iL,EAAM50J,SAEV40J,EAAM50J,QAAS8P,EAIjB,EAEAloC,KAAKsvQ,WAAa,SAAWpnO,GAE5B,OAAK+mO,EAEGA,EAAa/mO,GAIdA,CAER,EAEAloC,KAAKuvQ,eAAiB,SAAWj3I,GAIhC,OAFA22I,EAAc32I,EAEPt4H,IAER,EAEAA,KAAKwvQ,WAAa,SAAW93Q,EAAOqsG,GAInC,OAFAmrK,EAASpyQ,KAAMpF,EAAOqsG,GAEf/jG,IAER,EAEAA,KAAKyvQ,cAAgB,SAAW/3Q,GAE/B,IAAMkX,EAAQsgQ,EAAS1iQ,QAAS9U,GAQhC,OANiB,IAAZkX,GAEJsgQ,EAASrhN,OAAQj/C,EAAO,GAIlB5O,IAER,EAEAA,KAAK0vQ,WAAa,SAAW/6L,GAE5B,IAAM,IAAIj4E,EAAI,EAAGmK,EAAIqoQ,EAASt3Q,OAAQ8E,EAAImK,EAAGnK,GAAK,EAAI,CAErD,IAAMhF,EAAQw3Q,EAAUxyQ,GAClBqnG,EAASmrK,EAAUxyQ,EAAI,GAI7B,GAFKhF,EAAMi5E,SAASj5E,EAAMwlN,UAAY,GAEjCxlN,EAAMQ,KAAMy8E,GAEhB,OAAOovB,CAIT,CAEA,OAAO,IAER,CAED,IAIK4rK,GAAwB,IAAIb,GAE5Bc,GAAM,WAEX,SAAAA,EAAaC,GAAUplQ,EAAA,KAAAmlQ,GAEtB5vQ,KAAK6vQ,aAAwBzlQ,IAAZylQ,EAA0BA,EAAUF,GAErD3vQ,KAAKy3I,YAAc,YACnBz3I,KAAK8vQ,iBAAkB,EACvB9vQ,KAAKk3F,KAAO,GACZl3F,KAAK+vQ,aAAe,GACpB/vQ,KAAKgwQ,cAAgB,CAAC,CAEvB,CAmDC,OAnDAzmQ,EAAAqmQ,EAAA,EAAAptQ,IAAA,OAAA/D,MAED,WAAgD,GAAC,CAAA+D,IAAA,YAAA/D,MAEjD,SAAWypC,EAAKukC,GAEf,IAAMugH,EAAQhtL,KAEd,OAAO,IAAIswC,SAAS,SAAWG,EAAS8tC,GAEvCyuG,EAAMphH,KAAM1jC,EAAKuI,EAASg8B,EAAY8R,EAEvC,GAED,GAAC,CAAA/7E,IAAA,QAAA/D,MAED,WAAqB,GAAC,CAAA+D,IAAA,iBAAA/D,MAEtB,SAAgBg5I,GAGf,OADAz3I,KAAKy3I,YAAcA,EACZz3I,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBA,GAGnB,OADAuB,KAAK8vQ,gBAAkBrxQ,EAChBuB,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASy4F,GAGR,OADAl3F,KAAKk3F,KAAOA,EACLl3F,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBsxQ,GAGhB,OADA/vQ,KAAK+vQ,aAAeA,EACb/vQ,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBuxQ,GAGjB,OADAhwQ,KAAKgwQ,cAAgBA,EACdhwQ,IAER,KAAC4vQ,CAAA,CA/DU,GAmENK,GAAU,CAAC,EAEXC,GAAU,SAAAC,GAAAn0P,EAAAk0P,EAAAC,GAAA,IAAAC,EAAAz1P,EAAAu1P,GAEf,SAAAA,EAAaL,GAAU,OAAAplQ,EAAA,KAAAylQ,GAAAE,EAAAvzQ,KAAA,KAEfgzQ,EAER,CA6PC,OA7PAtmQ,EAAA2mQ,EAAA,EAAA1tQ,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAAU,IAAAi4O,EAAA,UAE3BjmQ,IAAR89B,IAAoBA,EAAM,SAEZ99B,IAAdpK,KAAKk3F,OAAqBhvD,EAAMloC,KAAKk3F,KAAOhvD,GAEjDA,EAAMloC,KAAK6vQ,QAAQP,WAAYpnO,GAE/B,IAAM2uJ,EAAS+3E,GAAM7+O,IAAKmY,GAE1B,QAAgB99B,IAAXysL,EAYJ,OAVA72L,KAAK6vQ,QAAQV,UAAWjnO,GAExBroC,YAAY,WAENm6I,GAASA,EAAQ68C,GAEtBw5E,EAAKR,QAAQT,QAASlnO,EAEvB,GAAG,GAEI2uJ,EAMR,QAAwBzsL,IAAnB6lQ,GAAS/nO,GAAd,CAeA+nO,GAAS/nO,GAAQ,GAEjB+nO,GAAS/nO,GAAMprC,KAAM,CACpBk9I,OAAQA,EACRvtE,WAAYA,EACZr0C,QAASA,IAIV,IAAMk4O,EAAM,IAAIC,QAASroO,EAAK,CAC7BsoO,QAAS,IAAIC,QAASzwQ,KAAKgwQ,eAC3BU,YAAa1wQ,KAAK8vQ,gBAAkB,UAAY,gBAK3Ca,EAAW3wQ,KAAK2wQ,SAChBC,EAAe5wQ,KAAK4wQ,aAG1BC,MAAOP,GACL5/N,MAAM,SAAAogO,GAEN,GAAyB,MAApBA,EAASnyK,QAAsC,IAApBmyK,EAASnyK,OAAe,CAavD,GARyB,IAApBmyK,EAASnyK,QAEb5qF,QAAQk/C,KAAM,6CAMgB,qBAAnB89M,qBAAoD3mQ,IAAlB0mQ,EAAStgP,WAAkDpmB,IAA5B0mQ,EAAStgP,KAAKwgP,UAE1F,OAAOF,EAIR,IAAMG,EAAYhB,GAAS/nO,GACrBgpO,EAASJ,EAAStgP,KAAKwgP,YACvBG,EAAgBL,EAASN,QAAQzgP,IAAK,kBACtC6gH,EAAQugI,EAAgBhgQ,SAAUggQ,GAAkB,EACpDC,EAA6B,IAAVxgI,EACrBtkE,EAAS,EAGP+kM,EAAS,IAAIN,eAAgB,CAClCjmO,MAAK,SAAEg8L,IAIN,SAASwqC,IAERJ,EAAOK,OAAO7gO,MAAM,SAAArzB,GAAuB,IAAnB4E,EAAI5E,EAAJ4E,KAAMxjB,EAAK4e,EAAL5e,MAE7B,GAAKwjB,EAEJ6kN,EAAWnlK,YAEL,CAEN2K,GAAU7tE,EAAM+yQ,WAGhB,IADA,IAAMjpO,EAAQ,IAAIkpO,cAAe,WAAY,CAAEL,iBAAAA,EAAkB9kM,OAAAA,EAAQskE,MAAAA,IAC/Dl0I,EAAI,EAAGowD,EAAKmkN,EAAUr5Q,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEtD,IAAMy7C,EAAW84N,EAAWv0Q,GACvBy7C,EAASs0B,YAAat0B,EAASs0B,WAAYlkC,EAEjD,CAEAu+L,EAAW4qC,QAASjzQ,GACpB6yQ,GAED,CAED,GAED,CA7BAA,EA+BD,IAID,OAAO,IAAIK,SAAUN,EAEtB,CAEC,MAAMvzQ,MAAM,cAAD2D,OAAgBqvQ,EAAS5oO,IAAG,qBAAAzmC,OAAoBqvQ,EAASnyK,OAAM,MAAAl9F,OAAKqvQ,EAASlyK,YAI1F,IACCluD,MAAM,SAAAogO,GAEN,OAASF,GAER,IAAK,cAEJ,OAAOE,EAASc,cAEjB,IAAK,OAEJ,OAAOd,EAASe,OAEjB,IAAK,WAEJ,OAAOf,EAAS99P,OACd09B,MAAM,SAAA19B,GAGN,OADe,IAAI8+P,WACLC,gBAAiB/+P,EAAM29P,EAEtC,IAEF,IAAK,OAEJ,OAAOG,EAASr0B,OAEjB,QAEC,QAAkBryO,IAAbumQ,EAEJ,OAAOG,EAAS99P,OAKhB,IACMgD,EADK,0BACKA,KAAM26P,GAChBv2M,EAAQpkD,GAAQA,EAAM,GAAMA,EAAM,GAAIhe,mBAAgBoS,EACtD4nQ,EAAU,IAAIC,YAAa73M,GACjC,OAAO02M,EAASc,cAAclhO,MAAM,SAAAzf,GAAE,OAAI+gP,EAAQE,OAAQjhP,EAAI,IAMlE,IACCyf,MAAM,SAAAhN,GAINkrO,GAAMxiP,IAAK8b,EAAKxE,GAEhB,IAAMutO,EAAYhB,GAAS/nO,UACpB+nO,GAAS/nO,GAEhB,IAAM,IAAIxrC,EAAI,EAAGowD,EAAKmkN,EAAUr5Q,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEtD,IAAMy7C,EAAW84N,EAAWv0Q,GACvBy7C,EAAS6hG,QAAS7hG,EAAS6hG,OAAQt2G,EAEzC,CAED,IACCiN,OAAO,SAAA93B,GAIP,IAAMo4P,EAAYhB,GAAS/nO,GAE3B,QAAmB99B,IAAd6mQ,EAIJ,MADAZ,EAAKR,QAAQR,UAAWnnO,GAClBrvB,SAIAo3P,GAAS/nO,GAEhB,IAAM,IAAIxrC,EAAI,EAAGowD,EAAKmkN,EAAUr5Q,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEtD,IAAMy7C,EAAW84N,EAAWv0Q,GACvBy7C,EAAS/f,SAAU+f,EAAS/f,QAASvf,EAE3C,CAEAw3P,EAAKR,QAAQR,UAAWnnO,EAEzB,IACCiqO,SAAS,WAET9B,EAAKR,QAAQT,QAASlnO,EAEvB,IAEDloC,KAAK6vQ,QAAQV,UAAWjnO,EAnMxB,MAVC+nO,GAAS/nO,GAAMprC,KAAM,CAEpBk9I,OAAQA,EACRvtE,WAAYA,EACZr0C,QAASA,GA2MZ,GAAC,CAAA51B,IAAA,kBAAA/D,MAED,SAAiBA,GAGhB,OADAuB,KAAK4wQ,aAAenyQ,EACbuB,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAaA,GAGZ,OADAuB,KAAK2wQ,SAAWlyQ,EACTuB,IAER,KAACkwQ,CAAA,CAnQc,CAASN,IAuQnBwC,GAAe,SAAAC,GAAAr2P,EAAAo2P,EAAAC,GAAA,IAAAC,EAAA33P,EAAAy3P,GAEpB,SAAAA,EAAavC,GAAU,OAAAplQ,EAAA,KAAA2nQ,GAAAE,EAAAz1Q,KAAA,KAEfgzQ,EAER,CAkDC,OAlDAtmQ,EAAA6oQ,EAAA,EAAA5vQ,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAE9B,IAAM40J,EAAQhtL,KAER+jG,EAAS,IAAImsK,GAAYlwQ,KAAK6vQ,SACpC9rK,EAAOwuK,QAASvyQ,KAAKk3F,MACrB6M,EAAOyuK,iBAAkBxyQ,KAAKgwQ,eAC9BjsK,EAAO0uK,mBAAoBzyQ,KAAK8vQ,iBAChC/rK,EAAOn4B,KAAM1jC,GAAK,SAAWl1B,GAE5B,IAECgnI,EAAQgzC,EAAMrsF,MAAO5yC,KAAK4yC,MAAO3tF,IAElC,CAAE,MAAQ1M,KAEJ8xB,EAEJA,EAAS9xB,KAITyN,QAAQwN,MAAOjb,KAIhB0mL,EAAM6iF,QAAQR,UAAWnnO,EAE1B,CAED,GAAGukC,EAAYr0C,EAEhB,GAAC,CAAA51B,IAAA,QAAA/D,MAED,SAAOg+O,GAIN,IAFA,IAAMrmE,EAAa,GAET15K,EAAI,EAAGA,EAAI+/O,EAAK7kP,OAAQ8E,IAAO,CAExC,IAAMgoQ,EAAOqI,GAAcpsK,MAAO87I,EAAM//O,IAExC05K,EAAWt5K,KAAM4nQ,EAElB,CAEA,OAAOtuF,CAER,KAACg8F,CAAA,CAxDmB,CAASxC,IAkExB8C,GAAuB,SAAAC,GAAA32P,EAAA02P,EAAAC,GAAA,IAAAC,EAAAj4P,EAAA+3P,GAE5B,SAAAA,EAAa7C,GAAU,OAAAplQ,EAAA,KAAAioQ,GAAAE,EAAA/1Q,KAAA,KAEfgzQ,EAER,CA+GC,OA/GAtmQ,EAAAmpQ,EAAA,EAAAlwQ,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAE9B,IAAM40J,EAAQhtL,KAERy9J,EAAS,GAET4D,EAAU,IAAIigF,GAEdv9I,EAAS,IAAImsK,GAAYlwQ,KAAK6vQ,SACpC9rK,EAAOwuK,QAASvyQ,KAAKk3F,MACrB6M,EAAO8uK,gBAAiB,eACxB9uK,EAAOyuK,iBAAkBxyQ,KAAKgwQ,eAC9BjsK,EAAO0uK,mBAAoBzlF,EAAM8iF,iBAEjC,IAAIxjM,EAAS,EAEb,SAASwmM,EAAap2Q,GAErBqnG,EAAOn4B,KAAM1jC,EAAKxrC,IAAK,SAAWy9J,GAEjC,IAAM44G,EAAW/lF,EAAMrsF,MAAOw5D,GAAQ,GAEtCsD,EAAQ/gK,GAAM,CACbyR,MAAO4kQ,EAAS5kQ,MAChBC,OAAQ2kQ,EAAS3kQ,OACjBmwJ,OAAQw0G,EAASx0G,OACjBG,QAASq0G,EAASr0G,SAKH,KAFhBpyF,GAAU,KAIqB,IAAzBymM,EAASC,cAAoB3xG,EAAQ/C,UAAYzT,IAEtDwW,EAAQloB,MAAQskB,EAChB4D,EAAQ9C,OAASw0G,EAASx0G,OAC1B8C,EAAQ/B,aAAc,EAEjBtlB,GAASA,EAAQqnB,GAIxB,GAAG50F,EAAYr0C,EAEhB,CAEA,GAAKz7B,MAAM0E,QAAS6mC,GAEnB,IAAM,IAAIxrC,EAAI,EAAGowD,EAAK5kB,EAAItwC,OAAQ8E,EAAIowD,IAAOpwD,EAE5Co2Q,EAAap2Q,QAQdqnG,EAAOn4B,KAAM1jC,GAAK,SAAWiyH,GAE5B,IAAM44G,EAAW/lF,EAAMrsF,MAAOw5D,GAAQ,GAEtC,GAAK44G,EAASE,UAAY,CAIzB,IAFA,IAAMrd,EAAQmd,EAASr0G,QAAQ9mK,OAASm7Q,EAASC,YAEvCvsQ,EAAI,EAAGA,EAAImvP,EAAOnvP,IAAO,CAElCg3J,EAAQh3J,GAAM,CAAEi4J,QAAS,IAEzB,IAAM,IAAIhiK,EAAI,EAAGA,EAAIq2Q,EAASC,YAAat2Q,IAE1C+gK,EAAQh3J,GAAIi4J,QAAQ5hK,KAAMi2Q,EAASr0G,QAASj4J,EAAIssQ,EAASC,YAAct2Q,IACvE+gK,EAAQh3J,GAAI83J,OAASw0G,EAASx0G,OAC9Bd,EAAQh3J,GAAI0H,MAAQ4kQ,EAAS5kQ,MAC7BsvJ,EAAQh3J,GAAI2H,OAAS2kQ,EAAS3kQ,MAIhC,CAEAizJ,EAAQloB,MAAQskB,CAEjB,MAEC4D,EAAQloB,MAAMhrI,MAAQ4kQ,EAAS5kQ,MAC/BkzJ,EAAQloB,MAAM/qI,OAAS2kQ,EAAS3kQ,OAChCizJ,EAAQ3C,QAAUq0G,EAASr0G,QAIE,IAAzBq0G,EAASC,cAEb3xG,EAAQ/C,UAAYzT,IAIrBwW,EAAQ9C,OAASw0G,EAASx0G,OAC1B8C,EAAQ/B,aAAc,EAEjBtlB,GAASA,EAAQqnB,EAEvB,GAAG50F,EAAYr0C,GAIhB,OAAOipI,CAER,KAACqxG,CAAA,CArH2B,CAAS9C,IAyHhCsD,GAAW,SAAAC,GAAAn3P,EAAAk3P,EAAAC,GAAA,IAAAC,EAAAz4P,EAAAu4P,GAEhB,SAAAA,EAAarD,GAAU,OAAAplQ,EAAA,KAAAyoQ,GAAAE,EAAAv2Q,KAAA,KAEfgzQ,EAER,CA2EC,OA3EAtmQ,EAAA2pQ,EAAA,EAAA1wQ,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,QAEXhuB,IAAdpK,KAAKk3F,OAAqBhvD,EAAMloC,KAAKk3F,KAAOhvD,GAEjDA,EAAMloC,KAAK6vQ,QAAQP,WAAYpnO,GAE/B,IAAM8kJ,EAAQhtL,KAER62L,EAAS+3E,GAAM7+O,IAAKmY,GAE1B,QAAgB99B,IAAXysL,EAYJ,OAVA7J,EAAM6iF,QAAQV,UAAWjnO,GAEzBroC,YAAY,WAENm6I,GAASA,EAAQ68C,GAEtB7J,EAAM6iF,QAAQT,QAASlnO,EAExB,GAAG,GAEI2uJ,EAIR,IAAM19C,EAAQ3zF,GAAiB,OAE/B,SAAS6tN,IAERC,IAEA1E,GAAMxiP,IAAK8b,EAAKloC,MAEXg6I,GAASA,EAAQh6I,MAEtBgtL,EAAM6iF,QAAQT,QAASlnO,EAExB,CAEA,SAASqrO,EAAchrO,GAEtB+qO,IAEKl7O,GAAUA,EAASmQ,GAExBykJ,EAAM6iF,QAAQR,UAAWnnO,GACzB8kJ,EAAM6iF,QAAQT,QAASlnO,EAExB,CAEA,SAASorO,IAERn6H,EAAMjhH,oBAAqB,OAAQm7O,GAAa,GAChDl6H,EAAMjhH,oBAAqB,QAASq7O,GAAc,EAEnD,CAeA,OAbAp6H,EAAMv1I,iBAAkB,OAAQyvQ,GAAa,GAC7Cl6H,EAAMv1I,iBAAkB,QAAS2vQ,GAAc,GAEpB,UAAtBrrO,EAAIt3B,MAAO,EAAG,SAEQxG,IAArBpK,KAAKy3I,cAA4B0B,EAAM1B,YAAcz3I,KAAKy3I,aAIhEu1C,EAAM6iF,QAAQV,UAAWjnO,GAEzBixG,EAAMhnI,IAAM+1B,EAELixG,CAER,KAAC+5H,CAAA,CAjFe,CAAStD,IAqFpB4D,GAAiB,SAAAC,GAAAz3P,EAAAw3P,EAAAC,GAAA,IAAAC,EAAA/4P,EAAA64P,GAEtB,SAAAA,EAAa3D,GAAU,OAAAplQ,EAAA,KAAA+oQ,GAAAE,EAAA72Q,KAAA,KAEfgzQ,EAER,CAwCC,OAxCAtmQ,EAAAiqQ,EAAA,EAAAhxQ,IAAA,OAAA/D,MAED,SAAMk1Q,EAAM35H,EAAQvtE,EAAYr0C,GAE/B,IAAMipI,EAAU,IAAIqxB,GAEd3uF,EAAS,IAAImvK,GAAalzQ,KAAK6vQ,SACrC9rK,EAAO6vK,eAAgB5zQ,KAAKy3I,aAC5B1zC,EAAOwuK,QAASvyQ,KAAKk3F,MAErB,IAAI5qB,EAAS,EAEb,SAASwmM,EAAap2Q,GAErBqnG,EAAOn4B,KAAM+nM,EAAMj3Q,IAAK,SAAWy8I,GAElCkoB,EAAQ5D,OAAQ/gK,GAAMy8I,EAIN,MAFhB7sE,IAIC+0F,EAAQ/B,aAAc,EAEjBtlB,GAASA,EAAQqnB,GAIxB,QAAGj3J,EAAWguB,EAEf,CAEA,IAAM,IAAI17B,EAAI,EAAGA,EAAIi3Q,EAAK/7Q,SAAW8E,EAEpCo2Q,EAAap2Q,GAId,OAAO2kK,CAER,KAACmyG,CAAA,CA9CqB,CAAS5D,IAwD1BiE,GAAiB,SAAAC,GAAA93P,EAAA63P,EAAAC,GAAA,IAAAC,EAAAp5P,EAAAk5P,GAEtB,SAAAA,EAAahE,GAAU,OAAAplQ,EAAA,KAAAopQ,GAAAE,EAAAl3Q,KAAA,KAEfgzQ,EAER,CA2FC,OA3FAtmQ,EAAAsqQ,EAAA,EAAArxQ,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAE9B,IAAM40J,EAAQhtL,KAERqhK,EAAU,IAAI06E,GAEdh4I,EAAS,IAAImsK,GAAYlwQ,KAAK6vQ,SAiFpC,OAhFA9rK,EAAO8uK,gBAAiB,eACxB9uK,EAAOyuK,iBAAkBxyQ,KAAKgwQ,eAC9BjsK,EAAOwuK,QAASvyQ,KAAKk3F,MACrB6M,EAAO0uK,mBAAoBzlF,EAAM8iF,iBACjC/rK,EAAOn4B,KAAM1jC,GAAK,SAAWiyH,GAE5B,IAAM65G,EAAUhnF,EAAMrsF,MAAOw5D,GAEtB65G,SAEgB5pQ,IAAlB4pQ,EAAQ76H,MAEZkoB,EAAQloB,MAAQ66H,EAAQ76H,WAEI/uI,IAAjB4pQ,EAAQtwO,OAEnB29H,EAAQloB,MAAMhrI,MAAQ6lQ,EAAQ7lQ,MAC9BkzJ,EAAQloB,MAAM/qI,OAAS4lQ,EAAQ5lQ,OAC/BizJ,EAAQloB,MAAMz1G,KAAOswO,EAAQtwO,MAI9B29H,EAAQlD,WAA0B/zJ,IAAlB4pQ,EAAQ71G,MAAsB61G,EAAQ71G,MAAQ7T,GAC9D+W,EAAQjD,WAA0Bh0J,IAAlB4pQ,EAAQ51G,MAAsB41G,EAAQ51G,MAAQ9T,GAE9D+W,EAAQhD,eAAkCj0J,IAAtB4pQ,EAAQ31G,UAA0B21G,EAAQ31G,UAAYxT,GAC1EwW,EAAQ/C,eAAkCl0J,IAAtB4pQ,EAAQ11G,UAA0B01G,EAAQ11G,UAAYzT,GAE1EwW,EAAQ7C,gBAAoCp0J,IAAvB4pQ,EAAQx1G,WAA2Bw1G,EAAQx1G,WAAa,OAEnDp0J,IAArB4pQ,EAAQv1G,WAEZ4C,EAAQ5C,SAAWu1G,EAAQv1G,eAILr0J,IAAlB4pQ,EAAQj1G,QAEZsC,EAAQtC,MAAQi1G,EAAQj1G,YAID30J,IAAnB4pQ,EAAQz1G,SAEZ8C,EAAQ9C,OAASy1G,EAAQz1G,aAIJn0J,IAAjB4pQ,EAAQpvQ,OAEZy8J,EAAQz8J,KAAOovQ,EAAQpvQ,WAICwF,IAApB4pQ,EAAQt1G,UAEZ2C,EAAQ3C,QAAUs1G,EAAQt1G,QAC1B2C,EAAQ/C,UAAYtT,IAIQ,IAAxBgpH,EAAQhB,cAEZ3xG,EAAQ/C,UAAYzT,SAIYzgJ,IAA5B4pQ,EAAQn1G,kBAEZwC,EAAQxC,gBAAkBm1G,EAAQn1G,iBAInCwC,EAAQ/B,aAAc,EAEjBtlB,GAASA,EAAQqnB,EAAS2yG,GAEhC,GAAGvnM,EAAYr0C,GAGRipI,CAER,KAACwyG,CAAA,CAjGqB,CAASjE,IAqG1BqE,GAAa,SAAAC,GAAAl4P,EAAAi4P,EAAAC,GAAA,IAAAC,EAAAx5P,EAAAs5P,GAElB,SAAAA,EAAapE,GAAU,OAAAplQ,EAAA,KAAAwpQ,GAAAE,EAAAt3Q,KAAA,KAEfgzQ,EAER,CAyBC,OAzBAtmQ,EAAA0qQ,EAAA,EAAAzxQ,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAE9B,IAAMipI,EAAU,IAAItD,GAEdh6D,EAAS,IAAImvK,GAAalzQ,KAAK6vQ,SAiBrC,OAhBA9rK,EAAO6vK,eAAgB5zQ,KAAKy3I,aAC5B1zC,EAAOwuK,QAASvyQ,KAAKk3F,MAErB6M,EAAOn4B,KAAM1jC,GAAK,SAAWixG,GAE5BkoB,EAAQloB,MAAQA,EAChBkoB,EAAQ/B,aAAc,OAENl1J,IAAX4vI,GAEJA,EAAQqnB,EAIV,GAAG50F,EAAYr0C,GAERipI,CAER,KAAC4yG,CAAA,CA/BiB,CAASrE,IAmCtBwE,GAAK,SAAAC,GAAAr4P,EAAAo4P,EAAAC,GAAA,IAAAC,EAAA35P,EAAAy5P,GAEV,SAAAA,EAAa5sO,GAAuB,IAAA+sO,EAAhBpoD,EAASlsN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAOJ,OAPKwK,EAAA,KAAA2pQ,IAEhCG,EAAAD,EAAAz3Q,KAAA,OAEK+H,KAAO,QAEZ2vQ,EAAK/sO,MAAQ,IAAI+zH,GAAO/zH,GACxB+sO,EAAKpoD,UAAYA,EAAUooD,CAE5B,CAqCC,OArCAhrQ,EAAA6qQ,EAAA,EAAA5xQ,IAAA,UAAA/D,MAED,WAEC,GAEA,CAAA+D,IAAA,OAAA/D,MAED,SAAM+C,GAOL,OALA0lI,GAAA5rH,EAAA84P,EAAAx3Q,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OACxBxnC,KAAKmsN,UAAY3qN,EAAO2qN,UAEjBnsN,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAA84P,EAAAx3Q,WAAA,eAAAC,KAAA,KAAiBy5B,GAc3B,OAZAoN,EAAKvhC,OAAOqlC,MAAQxnC,KAAKwnC,MAAM40H,SAC/B14H,EAAKvhC,OAAOgqN,UAAYnsN,KAAKmsN,eAEH/hN,IAArBpK,KAAKqjM,cAA4B3/J,EAAKvhC,OAAOkhM,YAAcrjM,KAAKqjM,YAAYjnC,eAE1DhyJ,IAAlBpK,KAAK02K,WAAyBhzI,EAAKvhC,OAAOu0K,SAAW12K,KAAK02K,eAC3CtsK,IAAfpK,KAAK41J,QAAsBlyH,EAAKvhC,OAAOyzJ,MAAQ51J,KAAK41J,YACrCxrJ,IAAfpK,KAAKyiM,QAAsB/+J,EAAKvhC,OAAOsgM,MAAQziM,KAAKyiM,YAClCr4L,IAAlBpK,KAAK6sN,WAAyBnpL,EAAKvhC,OAAO0qN,SAAW7sN,KAAK6sN,eAE1CziN,IAAhBpK,KAAKyjJ,SAAuB//G,EAAKvhC,OAAOshJ,OAASzjJ,KAAKyjJ,OAAO+b,UAE3D97H,CAER,KAAC0wO,CAAA,CAhDS,CAAS5+F,IAoDpB4+F,GAAMx3Q,UAAUk6K,SAAU,EAAK,IAEzB09F,GAAe,SAAAC,GAAAz4P,EAAAw4P,EAAAC,GAAA,IAAAC,EAAA/5P,EAAA65P,GAEpB,SAAAA,EAAapxE,EAAUC,EAAa8oB,GAAY,IAAAwoD,EASH,OATGlqQ,EAAA,KAAA+pQ,IAE/CG,EAAAD,EAAA73Q,KAAA,KAAOumM,EAAU+oB,IAEZvnN,KAAO,kBAEZ+vQ,EAAKp1M,SAASm8F,KAAM8Z,GAASG,WAC7Bg/F,EAAKt+F,eAELs+F,EAAKtxE,YAAc,IAAI9nC,GAAO8nC,GAAcsxE,CAE7C,CAUC,OAVAprQ,EAAAirQ,EAAA,EAAAhyQ,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA4yQ,GAAMx3Q,UAAU8+J,KAAK7+J,KAAMmD,KAAMwB,GAEjCxB,KAAKqjM,YAAY3nC,KAAMl6J,EAAO6hM,aAEvBrjM,IAER,KAACw0Q,CAAA,CAvBmB,CAASJ,IA2B9BI,GAAgB53Q,UAAUowN,mBAAoB,EAE9C,IAAM4nD,GAAoC,IAAIjkG,GACxCkkG,GAAsC,IAAI/tG,GAC1CguG,GAA8B,IAAIhuG,GAElCiuG,GAAW,WAEhB,SAAAA,EAAantG,GAASn9J,EAAA,KAAAsqQ,GAErB/0Q,KAAK4nK,OAASA,EAEd5nK,KAAKysN,KAAO,EACZzsN,KAAK0sN,WAAa,EAClB1sN,KAAKkpK,OAAS,EACdlpK,KAAKgwN,YAAc,EAEnBhwN,KAAK2sN,QAAU,IAAIx3D,GAAS,IAAK,KAEjCn1J,KAAKzD,IAAM,KACXyD,KAAKiwN,QAAU,KACfjwN,KAAK05J,OAAS,IAAIiX,GAElB3wK,KAAK+wN,YAAa,EAClB/wN,KAAKs/J,aAAc,EAEnBt/J,KAAK+uN,SAAW,IAAIx6B,GACpBv0L,KAAKg1Q,cAAgB,IAAI7/G,GAAS,EAAG,GAErCn1J,KAAKi1Q,eAAiB,EAEtBj1Q,KAAKk1Q,WAAa,CAEjB,IAAIt1G,GAAS,EAAG,EAAG,EAAG,GAIxB,CAsGC,OAtGAr2J,EAAAwrQ,EAAA,EAAAvyQ,IAAA,mBAAA/D,MAED,WAEC,OAAOuB,KAAKi1Q,cAEb,GAAC,CAAAzyQ,IAAA,aAAA/D,MAED,WAEC,OAAOuB,KAAK+uN,QAEb,GAAC,CAAAvsN,IAAA,iBAAA/D,MAED,SAAgByyE,GAEf,IAAM0/I,EAAe5wN,KAAK4nK,OACpButG,EAAen1Q,KAAK05J,OAE1Bm7G,GAAsBj+F,sBAAuB1lG,EAAM+2F,aACnD2oD,EAAarxJ,SAASm8F,KAAMm5G,IAE5BC,GAAcl+F,sBAAuB1lG,EAAM3vE,OAAO0mK,aAClD2oD,EAAa75C,OAAQ+9F,IACrBlkD,EAAar5C,oBAEbq9F,GAAoBt9G,iBAAkBs5D,EAAa7oD,iBAAkB6oD,EAAa9oD,oBAClF9nK,KAAK+uN,SAASqmB,wBAAyBw/B,IAEvCO,EAAalmP,IACZ,GAAK,EAAK,EAAK,GACf,EAAK,GAAK,EAAK,GACf,EAAK,EAAK,GAAK,GACf,EAAK,EAAK,EAAK,GAGhBkmP,EAAa3+F,SAAUo6C,EAAa7oD,kBACpCotG,EAAa3+F,SAAUo6C,EAAa9oD,mBAErC,GAAC,CAAAtlK,IAAA,cAAA/D,MAED,SAAa22Q,GAEZ,OAAOp1Q,KAAKk1Q,WAAYE,EAEzB,GAAC,CAAA5yQ,IAAA,kBAAA/D,MAED,WAEC,OAAOuB,KAAKg1Q,aAEb,GAAC,CAAAxyQ,IAAA,UAAA/D,MAED,WAEMuB,KAAKzD,KAETyD,KAAKzD,IAAImlK,UAIL1hK,KAAKiwN,SAETjwN,KAAKiwN,QAAQvuD,SAIf,GAAC,CAAAl/J,IAAA,OAAA/D,MAED,SAAM+C,GASL,OAPAxB,KAAK4nK,OAASpmK,EAAOomK,OAAO1mK,QAE5BlB,KAAKysN,KAAOjrN,EAAOirN,KACnBzsN,KAAKkpK,OAAS1nK,EAAO0nK,OAErBlpK,KAAK2sN,QAAQjxD,KAAMl6J,EAAOmrN,SAEnB3sN,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAM0D,EAAS,CAAC,EAUhB,OARmB,IAAdnC,KAAKysN,OAAatqN,EAAOsqN,KAAOzsN,KAAKysN,MACjB,IAApBzsN,KAAK0sN,aAAmBvqN,EAAOuqN,WAAa1sN,KAAK0sN,YACjC,IAAhB1sN,KAAKkpK,SAAe/mK,EAAO+mK,OAASlpK,KAAKkpK,QACtB,MAAnBlpK,KAAK2sN,QAAQzwN,GAAgC,MAAnB8D,KAAK2sN,QAAQtlN,IAAYlF,EAAOwqN,QAAU3sN,KAAK2sN,QAAQplI,WAEtFplF,EAAOylK,OAAS5nK,KAAK4nK,OAAOpI,QAAQ,GAAQr9J,cACrCA,EAAOylK,OAAOlO,OAEdv3J,CAER,KAAC4yQ,CAAA,CArIe,GAyIXM,GAAe,SAAAC,GAAAt5P,EAAAq5P,EAAAC,GAAA,IAAAC,EAAA56P,EAAA06P,GAEpB,SAAAA,IAAc,IAAAG,EAIE,OAJF/qQ,EAAA,KAAA4qQ,IAEbG,EAAAD,EAAA14Q,KAAA,KAAO,IAAIgzL,GAAmB,GAAI,EAAG,GAAK,OAErCn2L,MAAQ,EAAE87Q,CAEhB,CA+BC,OA/BAjsQ,EAAA8rQ,EAAA,EAAA7yQ,IAAA,iBAAA/D,MAED,SAAgByyE,GAEf,IAAM02F,EAAS5nK,KAAK4nK,OAEdqoB,EAAgB,EAAVr+B,GAAc1gF,EAAM0kF,MAAQ51J,KAAKtG,MACvCw2L,EAASlwL,KAAK2sN,QAAQx+M,MAAQnO,KAAK2sN,QAAQv+M,OAC3C0lK,EAAM5iG,EAAMwlG,UAAY9O,EAAOkM,IAEhCmc,IAAQroB,EAAOqoB,KAAOC,IAAWtoB,EAAOsoB,QAAUpc,IAAQlM,EAAOkM,MAErElM,EAAOqoB,IAAMA,EACbroB,EAAOsoB,OAASA,EAChBtoB,EAAOkM,IAAMA,EACblM,EAAOyoB,0BAIRnpD,GAAA5rH,EAAA+5P,EAAAz4Q,WAAA,uBAAAC,KAAA,KAAsBq0E,EAEvB,GAAC,CAAA1uE,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAA+5P,EAAAz4Q,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKtG,MAAQ8H,EAAO9H,MAEbsG,IAER,KAACq1Q,CAAA,CAvCmB,CAASN,IA2C9BM,GAAgBz4Q,UAAU64Q,mBAAoB,EAAK,IAE7CC,GAAS,SAAAC,GAAA35P,EAAA05P,EAAAC,GAAA,IAAAC,EAAAj7P,EAAA+6P,GAEd,SAAAA,EAAaluO,EAAO2kL,GAAwE,IAAA0pD,EAA7Dn/F,EAAQz2K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG21J,EAAK31J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGhD,KAAK00J,GAAK,EAAGk7D,EAAQ5sN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGwiM,EAAKxiM,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAgBnD,OAhBoDwK,EAAA,KAAAirQ,IAExFG,EAAAD,EAAA/4Q,KAAA,KAAO2qC,EAAO2kL,IAETvnN,KAAO,YAEZixQ,EAAKt2M,SAASm8F,KAAM8Z,GAASG,WAC7BkgG,EAAKx/F,eAELw/F,EAAKt0Q,OAAS,IAAIi0K,GAElBqgG,EAAKn/F,SAAWA,EAChBm/F,EAAKjgH,MAAQA,EACbigH,EAAKhpD,SAAWA,EAChBgpD,EAAKpzE,MAAQA,EAEbozE,EAAKpyH,OAAS,IAAI4xH,GAAkBQ,CAErC,CAsCC,OAtCAtsQ,EAAAmsQ,EAAA,EAAAlzQ,IAAA,QAAAutB,IAED,WAIC,OAAO/vB,KAAKmsN,UAAYlvN,KAAK00J,EAE9B,EAAC1iI,IAED,SAAW6mP,GAGV91Q,KAAKmsN,UAAY2pD,EAAQ74Q,KAAK00J,EAE/B,GAAC,CAAAnvJ,IAAA,UAAA/D,MAED,WAECuB,KAAKyjJ,OAAOie,SAEb,GAAC,CAAAl/J,IAAA,OAAA/D,MAED,SAAM+C,GAaL,OAXA0lI,GAAA5rH,EAAAo6P,EAAA94Q,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK02K,SAAWl1K,EAAOk1K,SACvB12K,KAAK41J,MAAQp0J,EAAOo0J,MACpB51J,KAAK6sN,SAAWrrN,EAAOqrN,SACvB7sN,KAAKyiM,MAAQjhM,EAAOihM,MAEpBziM,KAAKuB,OAASC,EAAOD,OAAOL,QAE5BlB,KAAKyjJ,OAASjiJ,EAAOiiJ,OAAOviJ,QAErBlB,IAER,KAAC01Q,CAAA,CA1Da,CAAStB,IA8DxBsB,GAAU94Q,UAAUgwN,aAAc,EAElC,IAAMqjB,GAAkC,IAAIt/D,GACtColG,GAAoC,IAAIjvG,GACxCkvG,GAA4B,IAAIlvG,GAEhCmvG,GAAgB,SAAAC,GAAAl6P,EAAAi6P,EAAAC,GAAA,IAAAC,EAAAx7P,EAAAs7P,GAErB,SAAAA,IAAc,IAAAG,EA4CX,OA5CW3rQ,EAAA,KAAAwrQ,IAEbG,EAAAD,EAAAt5Q,KAAA,KAAO,IAAIgzL,GAAmB,GAAI,EAAG,GAAK,OAErCmlF,cAAgB,IAAI7/G,GAAS,EAAG,GAErCihH,EAAKnB,eAAiB,EAEtBmB,EAAKlB,WAAa,CAejB,IAAIt1G,GAAS,EAAG,EAAG,EAAG,GAEtB,IAAIA,GAAS,EAAG,EAAG,EAAG,GAEtB,IAAIA,GAAS,EAAG,EAAG,EAAG,GAEtB,IAAIA,GAAS,EAAG,EAAG,EAAG,GAEtB,IAAIA,GAAS,EAAG,EAAG,EAAG,GAEtB,IAAIA,GAAS,EAAG,EAAG,EAAG,IAGvBw2G,EAAKC,gBAAkB,CACtB,IAAIvvG,GAAS,EAAG,EAAG,GAAK,IAAIA,IAAW,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,EAAG,GACrE,IAAIA,GAAS,EAAG,GAAK,GAAK,IAAIA,GAAS,EAAG,EAAG,GAAK,IAAIA,GAAS,GAAK,EAAG,IAGxEsvG,EAAKE,SAAW,CACf,IAAIxvG,GAAS,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,EAAG,GACnE,IAAIA,GAAS,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,GAAK,IACpEsvG,CAEH,CA8BC,OA9BA7sQ,EAAA0sQ,EAAA,EAAAzzQ,IAAA,iBAAA/D,MAED,SAAgByyE,GAA2B,IAApBkkM,EAAan1Q,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEhC2nK,EAAS5nK,KAAK4nK,OACdutG,EAAen1Q,KAAK05J,OAEpBoa,EAAM5iG,EAAMwlG,UAAY9O,EAAOkM,IAEhCA,IAAQlM,EAAOkM,MAEnBlM,EAAOkM,IAAMA,EACblM,EAAOyoB,0BAIR0lF,GAAoBn/F,sBAAuB1lG,EAAM+2F,aACjDL,EAAOroG,SAASm8F,KAAMq6G,IAEtBC,GAAYt6G,KAAMkM,EAAOroG,UACzBy2M,GAAY5pP,IAAKpsB,KAAKq2Q,gBAAiBjB,IACvCxtG,EAAO+J,GAAGjW,KAAM17J,KAAKs2Q,SAAUlB,IAC/BxtG,EAAOmP,OAAQi/F,IACfpuG,EAAO2P,oBAEP49F,EAAazuF,iBAAmBqvF,GAAoB75Q,GAAK65Q,GAAoB1uQ,GAAK0uQ,GAAoBzuQ,GAEtG2oO,GAAkB34E,iBAAkBsQ,EAAOG,iBAAkBH,EAAOE,oBACpE9nK,KAAK+uN,SAASqmB,wBAAyBnF,GAExC,KAACgmC,CAAA,CA9EoB,CAASlB,IAkF/BkB,GAAiBr5Q,UAAU80N,oBAAqB,EAAK,IAE/C6kD,GAAU,SAAAC,GAAAx6P,EAAAu6P,EAAAC,GAAA,IAAAC,EAAA97P,EAAA47P,GAEf,SAAAA,EAAa/uO,EAAO2kL,GAAqC,IAAAuqD,EAA1BhgG,EAAQz2K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGwiM,EAAKxiM,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EASf,OATgBwK,EAAA,KAAA8rQ,IAErDG,EAAAD,EAAA55Q,KAAA,KAAO2qC,EAAO2kL,IAETvnN,KAAO,aAEZ8xQ,EAAKhgG,SAAWA,EAChBggG,EAAKj0E,MAAQA,EAEbi0E,EAAKjzH,OAAS,IAAIwyH,GAAmBS,CAEtC,CAkCC,OAlCAntQ,EAAAgtQ,EAAA,EAAA/zQ,IAAA,QAAAutB,IAED,WAIC,OAAwB,EAAjB/vB,KAAKmsN,UAAgBlvN,KAAK00J,EAElC,EAAC1iI,IAED,SAAW6mP,GAGV91Q,KAAKmsN,UAAY2pD,GAAU,EAAI74Q,KAAK00J,GAErC,GAAC,CAAAnvJ,IAAA,UAAA/D,MAED,WAECuB,KAAKyjJ,OAAOie,SAEb,GAAC,CAAAl/J,IAAA,OAAA/D,MAED,SAAM+C,GASL,OAPA0lI,GAAA5rH,EAAAi7P,EAAA35Q,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK02K,SAAWl1K,EAAOk1K,SACvB12K,KAAKyiM,MAAQjhM,EAAOihM,MAEpBziM,KAAKyjJ,OAASjiJ,EAAOiiJ,OAAOviJ,QAErBlB,IAER,KAACu2Q,CAAA,CA/Cc,CAASnC,IAmDzBmC,GAAW35Q,UAAUmwN,cAAe,EAAK,IAEnC4pD,GAAsB,SAAAC,GAAA56P,EAAA26P,EAAAC,GAAA,IAAAC,EAAAl8P,EAAAg8P,GAE3B,SAAAA,IAAc,OAAAlsQ,EAAA,KAAAksQ,GAAAE,EAAAh6Q,KAAA,KAEN,IAAI+wM,IAAsB,EAAG,EAAG,GAAK,EAAG,GAAK,KAErD,CAAC,OAAArkM,EAAAotQ,EAAA,CAN0B,CAAS5B,IAUrC4B,GAAuB/5Q,UAAUk6Q,0BAA2B,EAAK,IAE3DC,GAAgB,SAAAC,GAAAh7P,EAAA+6P,EAAAC,GAAA,IAAAC,EAAAt8P,EAAAo8P,GAErB,SAAAA,EAAavvO,EAAO2kL,GAAY,IAAA+qD,EAWY,OAXZzsQ,EAAA,KAAAssQ,IAE/BG,EAAAD,EAAAp6Q,KAAA,KAAO2qC,EAAO2kL,IAETvnN,KAAO,mBAEZsyQ,EAAK33M,SAASm8F,KAAM8Z,GAASG,WAC7BuhG,EAAK7gG,eAEL6gG,EAAK31Q,OAAS,IAAIi0K,GAElB0hG,EAAKzzH,OAAS,IAAIkzH,GAAyBO,CAE5C,CAiBC,OAjBA3tQ,EAAAwtQ,EAAA,EAAAv0Q,IAAA,UAAA/D,MAED,WAECuB,KAAKyjJ,OAAOie,SAEb,GAAC,CAAAl/J,IAAA,OAAA/D,MAED,SAAM+C,GAOL,OALA0lI,GAAA5rH,EAAAy7P,EAAAn6Q,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKuB,OAASC,EAAOD,OAAOL,QAC5BlB,KAAKyjJ,OAASjiJ,EAAOiiJ,OAAOviJ,QAErBlB,IAER,KAAC+2Q,CAAA,CAhCoB,CAAS3C,IAoC/B2C,GAAiBn6Q,UAAU2vN,oBAAqB,EAAK,IAE/C4qD,GAAY,SAAAC,GAAAp7P,EAAAm7P,EAAAC,GAAA,IAAAC,EAAA18P,EAAAw8P,GAEjB,SAAAA,EAAa3vO,EAAO2kL,GAAY,IAAAmrD,EAIJ,OAJI7sQ,EAAA,KAAA0sQ,IAE/BG,EAAAD,EAAAx6Q,KAAA,KAAO2qC,EAAO2kL,IAETvnN,KAAO,eAAe0yQ,CAE5B,CAAC,OAAA/tQ,EAAA4tQ,EAAA,CARgB,CAAS/C,IAY3B+C,GAAav6Q,UAAUwvN,gBAAiB,EAAK,IAEvCmrD,GAAa,SAAAC,GAAAx7P,EAAAu7P,EAAAC,GAAA,IAAAC,EAAA98P,EAAA48P,GAElB,SAAAA,EAAa/vO,EAAO2kL,GAAqC,IAAAurD,EAA1BvpQ,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAImO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAO9B,OAPgCwK,EAAA,KAAA8sQ,IAErDG,EAAAD,EAAA56Q,KAAA,KAAO2qC,EAAO2kL,IAETvnN,KAAO,gBAEZ8yQ,EAAKvpQ,MAAQA,EACbupQ,EAAKtpQ,OAASA,EAAOspQ,CAEtB,CAoCC,OApCAnuQ,EAAAguQ,EAAA,EAAA/0Q,IAAA,QAAAutB,IAED,WAGC,OAAO/vB,KAAKmsN,UAAYnsN,KAAKmO,MAAQnO,KAAKoO,OAASnR,KAAK00J,EAEzD,EAAC1iI,IAED,SAAW6mP,GAGV91Q,KAAKmsN,UAAY2pD,GAAU91Q,KAAKmO,MAAQnO,KAAKoO,OAASnR,KAAK00J,GAE5D,GAAC,CAAAnvJ,IAAA,OAAA/D,MAED,SAAM+C,GAOL,OALA0lI,GAAA5rH,EAAAi8P,EAAA36Q,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKmO,MAAQ3M,EAAO2M,MACpBnO,KAAKoO,OAAS5M,EAAO4M,OAEdpO,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAAi8P,EAAA36Q,WAAA,eAAAC,KAAA,KAAiBy5B,GAK3B,OAHAoN,EAAKvhC,OAAOgM,MAAQnO,KAAKmO,MACzBu1B,EAAKvhC,OAAOiM,OAASpO,KAAKoO,OAEnBs1B,CAER,KAAC6zO,CAAA,CA/CiB,CAASnD,IAmD5BmD,GAAc36Q,UAAUkwN,iBAAkB,EAU1C,IAEM6qD,GAAmB,WAExB,SAAAA,IAAcltQ,EAAA,KAAAktQ,GAEb33Q,KAAKssN,aAAe,GAEpB,IAAM,IAAI5vN,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKssN,aAAaxvN,KAAM,IAAIgqK,GAI9B,CAoNC,OApNAv9J,EAAAouQ,EAAA,EAAAn1Q,IAAA,MAAA/D,MAED,SAAK6tN,GAEJ,IAAM,IAAI5vN,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKssN,aAAc5vN,GAAIg/J,KAAM4wD,EAAc5vN,IAI5C,OAAOsD,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAEC,IAAM,IAAI/B,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKssN,aAAc5vN,GAAIuyB,IAAK,EAAG,EAAG,GAInC,OAAOjvB,IAER,GAGA,CAAAwC,IAAA,QAAA/D,MACA,SAAOsqK,EAAQxnK,GAId,IAAMrF,EAAI6sK,EAAO7sK,EAAGmL,EAAI0hK,EAAO1hK,EAAGC,EAAIyhK,EAAOzhK,EAEvCswQ,EAAQ53Q,KAAKssN,aAiBnB,OAdA/qN,EAAOm6J,KAAMk8G,EAAO,IAAMriH,eAAgB,SAG1Ch0J,EAAOm5K,gBAAiBk9F,EAAO,GAAK,QAAWvwQ,GAC/C9F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,QAAWtwQ,GAC/C/F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,QAAW17Q,GAG/CqF,EAAOm5K,gBAAiBk9F,EAAO,GAAkB17Q,EAAImL,EAAjB,UACpC9F,EAAOm5K,gBAAiBk9F,EAAO,GAAkBvwQ,EAAIC,EAAjB,UACpC/F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,SAAa,EAAMtwQ,EAAIA,EAAI,IAC/D/F,EAAOm5K,gBAAiBk9F,EAAO,GAAkB17Q,EAAIoL,EAAjB,UACpC/F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,SAAa17Q,EAAIA,EAAImL,EAAIA,IAEtD9F,CAER,GAIA,CAAAiB,IAAA,kBAAA/D,MACA,SAAiBsqK,EAAQxnK,GAIxB,IAAMrF,EAAI6sK,EAAO7sK,EAAGmL,EAAI0hK,EAAO1hK,EAAGC,EAAIyhK,EAAOzhK,EAEvCswQ,EAAQ53Q,KAAKssN,aAiBnB,OAdA/qN,EAAOm6J,KAAMk8G,EAAO,IAAMriH,eAAgB,SAG1Ch0J,EAAOm5K,gBAAiBk9F,EAAO,GAAK,SAAiBvwQ,GACrD9F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,SAAiBtwQ,GACrD/F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,SAAiB17Q,GAGrDqF,EAAOm5K,gBAAiBk9F,EAAO,GAAK,QAAiB17Q,EAAImL,GACzD9F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,QAAiBvwQ,EAAIC,GACzD/F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,QAAWtwQ,EAAIA,EAAI,SACvD/F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,QAAiB17Q,EAAIoL,GACzD/F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,SAAa17Q,EAAIA,EAAImL,EAAIA,IAEtD9F,CAER,GAAC,CAAAiB,IAAA,MAAA/D,MAED,SAAKi6C,GAEJ,IAAM,IAAIh8C,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKssN,aAAc5vN,GAAI0vB,IAAKssB,EAAG4zK,aAAc5vN,IAI9C,OAAOsD,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAai6C,EAAIj9C,GAEhB,IAAM,IAAIiB,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKssN,aAAc5vN,GAAIg+K,gBAAiBhiI,EAAG4zK,aAAc5vN,GAAKjB,GAI/D,OAAOuE,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOhD,GAEN,IAAM,IAAIiB,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKssN,aAAc5vN,GAAI64J,eAAgB95J,GAIxC,OAAOuE,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMi6C,EAAIq9G,GAET,IAAM,IAAIr5J,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKssN,aAAc5vN,GAAI01J,KAAM15G,EAAG4zK,aAAc5vN,GAAKq5J,GAIpD,OAAO/1J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQi6C,GAEP,IAAM,IAAIh8C,EAAI,EAAGA,EAAI,EAAGA,IAEvB,IAAOsD,KAAKssN,aAAc5vN,GAAI8vK,OAAQ9zH,EAAG4zK,aAAc5vN,IAEtD,OAAO,EAMT,OAAO,CAER,GAAC,CAAA8F,IAAA,OAAA/D,MAED,SAAMi6C,GAEL,OAAO14C,KAAKivB,IAAKypB,EAAG4zK,aAErB,GAAC,CAAA9pN,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsE,GAIV,IAJ8B,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEpBqsN,EAAetsN,KAAKssN,aAEhB5vN,EAAI,EAAGA,EAAI,EAAGA,IAEvB4vN,EAAc5vN,GAAIi9J,UAAW52J,EAAOgnC,EAAe,EAAJrtC,GAIhD,OAAOsD,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAIC,IAJiC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEvBqsN,EAAetsN,KAAKssN,aAEhB5vN,EAAI,EAAGA,EAAI,EAAGA,IAEvB4vN,EAAc5vN,GAAI6qF,QAASxkF,EAAOgnC,EAAe,EAAJrtC,GAI9C,OAAOqG,CAER,IAGA,EAAAP,IAAA,aAAA/D,MACA,SAAmBsqK,EAAQ8uG,GAI1B,IAAM37Q,EAAI6sK,EAAO7sK,EAAGmL,EAAI0hK,EAAO1hK,EAAGC,EAAIyhK,EAAOzhK,EAG7CuwQ,EAAS,GAAM,QAGfA,EAAS,GAAM,QAAWxwQ,EAC1BwwQ,EAAS,GAAM,QAAWvwQ,EAC1BuwQ,EAAS,GAAM,QAAW37Q,EAG1B27Q,EAAS,GAAM,SAAW37Q,EAAImL,EAC9BwwQ,EAAS,GAAM,SAAWxwQ,EAAIC,EAC9BuwQ,EAAS,GAAM,SAAa,EAAIvwQ,EAAIA,EAAI,GACxCuwQ,EAAS,GAAM,SAAW37Q,EAAIoL,EAC9BuwQ,EAAS,GAAM,SAAa37Q,EAAIA,EAAImL,EAAIA,EAEzC,KAACswQ,CAAA,CAhOuB,GAoOzBA,GAAoB/6Q,UAAUk7Q,uBAAwB,EAAK,IAErDC,GAAU,SAAAC,GAAAh8P,EAAA+7P,EAAAC,GAAA,IAAAC,EAAAt9P,EAAAo9P,GAEf,SAAAA,IAA6D,IAAAG,EAAhDx/N,EAAEz4C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI03Q,GAAuBxrD,EAASlsN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAI3C,OAJ4CwK,EAAA,KAAAstQ,IAEzDG,EAAAD,EAAAp7Q,KAAA,UAAOuN,EAAW+hN,IAEbzzK,GAAKA,EAAGw/N,CAEd,CA6BC,OA7BA3uQ,EAAAwuQ,EAAA,EAAAv1Q,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAAy8P,EAAAn7Q,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK04C,GAAGgjH,KAAMl6J,EAAOk3C,IAEd14C,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAUg+O,GAKT,OAHAz8O,KAAKmsN,UAAYswB,EAAKtwB,UACtBnsN,KAAK04C,GAAGihH,UAAW8iF,EAAK/jM,IAEjB14C,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAAy8P,EAAAn7Q,WAAA,eAAAC,KAAA,KAAiBy5B,GAI3B,OAFAoN,EAAKvhC,OAAOu2C,GAAK14C,KAAK04C,GAAG6uC,UAElB7jD,CAER,KAACq0O,CAAA,CArCc,CAAS3D,IAyCzB2D,GAAWn7Q,UAAUyvN,cAAe,EAAK,IAEnC8rD,GAAc,SAAAC,GAAAp8P,EAAAm8P,EAAAC,GAAA,IAAAC,EAAA19P,EAAAw9P,GAEnB,SAAAA,EAAatI,GAAU,IAAAyI,EAGH,OAHG7tQ,EAAA,KAAA0tQ,IAEtBG,EAAAD,EAAAx7Q,KAAA,KAAOgzQ,IACFtwG,SAAW,CAAC,EAAE+4G,CAEpB,CA4RC,OA5RA/uQ,EAAA4uQ,EAAA,EAAA31Q,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAE9B,IAAM40J,EAAQhtL,KAER+jG,EAAS,IAAImsK,GAAYljF,EAAM6iF,SACrC9rK,EAAOwuK,QAASvlF,EAAM91F,MACtB6M,EAAOyuK,iBAAkBxlF,EAAMgjF,eAC/BjsK,EAAO0uK,mBAAoBzlF,EAAM8iF,iBACjC/rK,EAAOn4B,KAAM1jC,GAAK,SAAWl1B,GAE5B,IAECgnI,EAAQgzC,EAAMrsF,MAAO5yC,KAAK4yC,MAAO3tF,IAElC,CAAE,MAAQ1M,KAEJ8xB,EAEJA,EAAS9xB,KAITyN,QAAQwN,MAAOjb,KAIhB0mL,EAAM6iF,QAAQR,UAAWnnO,EAE1B,CAED,GAAGukC,EAAYr0C,EAEhB,GAAC,CAAA51B,IAAA,QAAA/D,MAED,SAAOg+O,GAEN,IAAMl9E,EAAWv/J,KAAKu/J,SAEtB,SAASg5G,EAAYp/Q,GAQpB,YAN0BiR,IAArBm1J,EAAUpmK,IAEd4a,QAAQk/C,KAAM,0CAA2C95D,GAInDomK,EAAUpmK,EAElB,CAEA,IAAM0/K,EAAW0C,GAASwG,SAAU06D,EAAK73O,MAsFzC,QApFmBwF,IAAdqyO,EAAK5gI,OAAqBg9D,EAASh9D,KAAO4gI,EAAK5gI,WACjCzxG,IAAdqyO,EAAKtjP,OAAqB0/K,EAAS1/K,KAAOsjP,EAAKtjP,WAChCiR,IAAfqyO,EAAKj1M,YAA0Cp9B,IAAnByuK,EAASrxI,OAAsBqxI,EAASrxI,MAAMm0H,OAAQ8gF,EAAKj1M,YACpEp9B,IAAnBqyO,EAAKv+D,YAA0BrF,EAASqF,UAAYu+D,EAAKv+D,gBACtC9zK,IAAnBqyO,EAAKt+D,YAA0BtF,EAASsF,UAAYs+D,EAAKt+D,gBAC1C/zK,IAAfqyO,EAAKr+D,QAAsBvF,EAASuF,MAAQq+D,EAAKr+D,YAC7Bh0K,IAApBqyO,EAAKp+D,aAA2BxF,EAASwF,YAAa,IAAI9iB,IAAQI,OAAQ8gF,EAAKp+D,kBACvDj0K,IAAxBqyO,EAAKn+D,iBAA+BzF,EAASyF,eAAiBm+D,EAAKn+D,qBACjDl0K,IAAlBqyO,EAAKl+D,eAAgDn0K,IAAtByuK,EAAS0F,UAAyB1F,EAAS0F,SAAS5iB,OAAQ8gF,EAAKl+D,eAC9En0K,IAAlBqyO,EAAKh+D,eAAgDr0K,IAAtByuK,EAAS4F,UAAyB5F,EAAS4F,SAAS9iB,OAAQ8gF,EAAKh+D,eACrEr0K,IAA3BqyO,EAAK/9D,oBAAkC7F,EAAS6F,kBAAoB+9D,EAAK/9D,wBAClDt0K,IAAvBqyO,EAAK99D,oBAA0Dv0K,IAA3ByuK,EAAS8F,eAA8B9F,EAAS8F,cAAchjB,OAAQ8gF,EAAK99D,oBAC5Fv0K,IAAnBqyO,EAAK79D,YAA0B/F,EAAS+F,UAAY69D,EAAK79D,gBACtCx0K,IAAnBqyO,EAAK59D,YAA0BhG,EAASgG,UAAY49D,EAAK59D,gBAC7Bz0K,IAA5BqyO,EAAK39D,qBAAmCjG,EAASiG,mBAAqB29D,EAAK39D,yBACrD10K,IAAtBqyO,EAAK57D,eAA6BhI,EAASgI,aAAe47D,EAAK57D,mBAC5Cz2K,IAAnBqyO,EAAK17D,YAA0BlI,EAASkI,UAAY07D,EAAK17D,gBAC5B32K,IAA7BqyO,EAAKx7D,sBAAoCpI,EAASoI,oBAAsBw7D,EAAKx7D,0BACnD72K,IAA1BqyO,EAAKv7D,uBAAgE92K,IAA9ByuK,EAASqI,kBAAiCrI,EAASqI,iBAAiBvlB,OAAQ8gF,EAAKv7D,uBAC3G92K,IAAbqyO,EAAK9gE,MAAoB9C,EAAS8C,IAAM8gE,EAAK9gE,UACxBvxK,IAArBqyO,EAAKx+D,cAA4BpF,EAASoF,YAAcw+D,EAAKx+D,kBAC3C7zK,IAAlBqyO,EAAK7gE,WAAyB/C,EAAS+C,SAAW6gE,EAAK7gE,eACtCxxK,IAAjBqyO,EAAKj8D,UAAwB3H,EAAS2H,QAAUi8D,EAAKj8D,cACvCp2K,IAAdqyO,EAAK5gE,OAAqBhD,EAASgD,KAAO4gE,EAAK5gE,WAC3BzxK,IAApBqyO,EAAKr/D,aAA2BvE,EAASuE,WAAaq/D,EAAKr/D,iBAC1ChzK,IAAjBqyO,EAAKjoN,UAAwBqkJ,EAASrkJ,QAAUioN,EAAKjoN,cAChCpqB,IAArBqyO,EAAK1gE,cAA4BlD,EAASkD,YAAc0gE,EAAK1gE,kBAC1C3xK,IAAnBqyO,EAAKl7D,YAA0B1I,EAAS0I,UAAYk7D,EAAKl7D,gBACtCn3K,IAAnBqyO,EAAKlgE,YAA0B1D,EAAS0D,UAAYkgE,EAAKlgE,gBACrCnyK,IAApBqyO,EAAKjgE,aAA2B3D,EAAS2D,WAAaigE,EAAKjgE,iBACvCpyK,IAApBqyO,EAAKp/D,aAA2BxE,EAASwE,WAAao/D,EAAKp/D,iBAErCjzK,IAAtBqyO,EAAKz/D,eAA6BnE,EAASmE,aAAey/D,EAAKz/D,mBACrC5yK,IAA1BqyO,EAAKhgE,mBAAiC5D,EAAS4D,iBAAmBggE,EAAKhgE,uBAClDryK,IAArBqyO,EAAK//D,cAA4B7D,EAAS6D,YAAc+/D,EAAK//D,kBACzCtyK,IAApBqyO,EAAK9/D,aAA2B9D,EAAS8D,WAAa8/D,EAAK9/D,iBAClCvyK,IAAzBqyO,EAAK7/D,kBAAgC/D,EAAS+D,gBAAkB6/D,EAAK7/D,sBAChDxyK,IAArBqyO,EAAK5/D,cAA4BhE,EAASgE,YAAc4/D,EAAK5/D,kBACvCzyK,IAAtBqyO,EAAK3/D,eAA6BjE,EAASiE,aAAe2/D,EAAK3/D,mBACzC1yK,IAAtBqyO,EAAK1/D,eAA6BlE,EAASkE,aAAe0/D,EAAK1/D,mBAE5C3yK,IAAnBqyO,EAAKj7D,YAA0B3I,EAAS2I,UAAYi7D,EAAKj7D,gBAC7Bp3K,IAA5BqyO,EAAKh7D,qBAAmC5I,EAAS4I,mBAAqBg7D,EAAKh7D,yBACjDr3K,IAA1BqyO,EAAK/6D,mBAAiC7I,EAAS6I,iBAAmB+6D,EAAK/6D,uBAC5Ct3K,IAA3BqyO,EAAK96D,oBAAkC9I,EAAS8I,kBAAoB86D,EAAK96D,wBAEvDv3K,IAAlBqyO,EAAKnjF,WAAyBuf,EAASvf,SAAWmjF,EAAKnjF,UAEpC,IAAnBmjF,EAAKr7D,YAAkBvI,EAASuI,UAAYq7D,EAAKr7D,gBAC/Bh3K,IAAlBqyO,EAAKp7D,WAAyBxI,EAASwI,SAAWo7D,EAAKp7D,eACtCj3K,IAAjBqyO,EAAKn7D,UAAwBzI,EAASyI,QAAUm7D,EAAKn7D,cACtCl3K,IAAfqyO,EAAKplG,QAAsBwhC,EAASxhC,MAAQolG,EAAKplG,YAE1BjtI,IAAvBqyO,EAAKn/D,gBAA8BzE,EAASyE,cAAgBm/D,EAAKn/D,oBACpClzK,IAA7BqyO,EAAKl/D,sBAAoC1E,EAAS0E,oBAAsBk/D,EAAKl/D,0BACjDnzK,IAA5BqyO,EAAKj/D,qBAAmC3E,EAAS2E,mBAAqBi/D,EAAKj/D,yBAExDpzK,IAAnBqyO,EAAKh/D,YAA0B5E,EAAS4E,UAAYg/D,EAAKh/D,gBAEhCrzK,IAAzBqyO,EAAK/+D,kBAAgC7E,EAAS6E,gBAAkB++D,EAAK/+D,sBACzCtzK,IAA5BqyO,EAAK9+D,qBAAmC9E,EAAS8E,mBAAqB8+D,EAAK9+D,yBAE1DvzK,IAAjBqyO,EAAK9yK,UAAwBkvG,EAASlvG,QAAU8yK,EAAK9yK,cAEjCv/D,IAApBqyO,EAAK7+D,aAA2B/E,EAAS+E,WAAa6+D,EAAK7+D,iBAEzCxzK,IAAlBqyO,EAAKx9E,WAAyB4Z,EAAS5Z,SAAWw9E,EAAKx9E,eAEjC70J,IAAtBqyO,EAAK3gE,eAEyB,kBAAtB2gE,EAAK3gE,aAEhBjD,EAASiD,aAAiB2gE,EAAK3gE,aAAe,EAI9CjD,EAASiD,aAAe2gE,EAAK3gE,mBAQR1xK,IAAlBqyO,EAAKruD,SAET,IAAM,IAAMj1L,KAAQsjP,EAAKruD,SAAW,CAEnC,IAAM2d,EAAU0wC,EAAKruD,SAAUj1L,GAI/B,OAFA0/K,EAASuV,SAAUj1L,GAAS,CAAC,EAEpB4yM,EAAQnnM,MAEhB,IAAK,IACJi0K,EAASuV,SAAUj1L,GAAOsF,MAAQ85Q,EAAYxsE,EAAQttM,OACtD,MAED,IAAK,IACJo6K,EAASuV,SAAUj1L,GAAOsF,OAAQ,IAAI88J,IAAQI,OAAQowC,EAAQttM,OAC9D,MAED,IAAK,KACJo6K,EAASuV,SAAUj1L,GAAOsF,OAAQ,IAAI02J,IAAUwE,UAAWoyC,EAAQttM,OACnE,MAED,IAAK,KACJo6K,EAASuV,SAAUj1L,GAAOsF,OAAQ,IAAIqoK,IAAUnN,UAAWoyC,EAAQttM,OACnE,MAED,IAAK,KACJo6K,EAASuV,SAAUj1L,GAAOsF,OAAQ,IAAImhK,IAAUjG,UAAWoyC,EAAQttM,OACnE,MAED,IAAK,KACJo6K,EAASuV,SAAUj1L,GAAOsF,OAAQ,IAAI+3J,IAAUmD,UAAWoyC,EAAQttM,OACnE,MAED,IAAK,KACJo6K,EAASuV,SAAUj1L,GAAOsF,OAAQ,IAAIkyK,IAAUhX,UAAWoyC,EAAQttM,OACnE,MAED,QACCo6K,EAASuV,SAAUj1L,GAAOsF,MAAQstM,EAAQttM,MAI7C,CAQD,QAJsB2L,IAAjBqyO,EAAK9tD,UAAwB9V,EAAS8V,QAAU8tD,EAAK9tD,cAC/BvkL,IAAtBqyO,EAAK7tD,eAA6B/V,EAAS+V,aAAe6tD,EAAK7tD,mBACvCxkL,IAAxBqyO,EAAK5tD,iBAA+BhW,EAASgW,eAAiB4tD,EAAK5tD,qBAE/CzkL,IAApBqyO,EAAKnwJ,WAET,IAAM,IAAM9pF,KAAOi6O,EAAKnwJ,WAEvBusF,EAASvsF,WAAY9pF,GAAQi6O,EAAKnwJ,WAAY9pF,GA2BhD,QAnBsB4H,IAAjBqyO,EAAK+7B,UAAwB3/F,EAASoF,YAA+B,IAAjBw+D,EAAK+7B,cAI3CpuQ,IAAdqyO,EAAKl3L,OAAqBszH,EAAStzH,KAAOk3L,EAAKl3L,WACtBn7C,IAAzBqyO,EAAKt7D,kBAAgCtI,EAASsI,gBAAkBs7D,EAAKt7D,sBAIxD/2K,IAAbqyO,EAAKlgP,MAAoBs8K,EAASt8K,IAAMg8Q,EAAY97B,EAAKlgP,WACzC6N,IAAhBqyO,EAAKt9D,SAAuBtG,EAASsG,OAASo5F,EAAY97B,EAAKt9D,cAE7C/0K,IAAlBqyO,EAAKr9D,WAAyBvG,EAASuG,SAAWm5F,EAAY97B,EAAKr9D,gBAElDh1K,IAAjBqyO,EAAKh9D,UAAwB5G,EAAS4G,QAAU84F,EAAY97B,EAAKh9D,eAC9Cr1K,IAAnBqyO,EAAK/8D,YAA0B7G,EAAS6G,UAAY+8D,EAAK/8D,gBAEtCt1K,IAAnBqyO,EAAK98D,YAA0B9G,EAAS8G,UAAY44F,EAAY97B,EAAK98D,iBAC9Cv1K,IAAvBqyO,EAAK78D,gBAA8B/G,EAAS+G,cAAgB68D,EAAK78D,oBAC5Cx1K,IAArBqyO,EAAK58D,YAA4B,CAErC,IAAIA,EAAc48D,EAAK58D,aAEe,IAAjCljL,MAAM0E,QAASw+K,KAInBA,EAAc,CAAEA,EAAaA,IAI9BhH,EAASgH,aAAc,IAAI1qB,IAAUwE,UAAWkmB,EAEjD,CAyCA,YAvC8Bz1K,IAAzBqyO,EAAK38D,kBAAgCjH,EAASiH,gBAAkBy4F,EAAY97B,EAAK38D,uBACtD11K,IAA3BqyO,EAAK18D,oBAAkClH,EAASkH,kBAAoB08D,EAAK18D,wBAC/C31K,IAA1BqyO,EAAKz8D,mBAAiCnH,EAASmH,iBAAmBy8D,EAAKz8D,uBAEjD51K,IAAtBqyO,EAAKx8D,eAA6BpH,EAASoH,aAAes4F,EAAY97B,EAAKx8D,oBACrD71K,IAAtBqyO,EAAKv8D,eAA6BrH,EAASqH,aAAeq4F,EAAY97B,EAAKv8D,oBAEtD91K,IAArBqyO,EAAKt8D,cAA4BtH,EAASsH,YAAco4F,EAAY97B,EAAKt8D,mBAC9C/1K,IAA3BqyO,EAAKj+D,oBAAkC3F,EAAS2F,kBAAoBi+D,EAAKj+D,wBAEpDp0K,IAArBqyO,EAAKr8D,cAA4BvH,EAASuH,YAAcm4F,EAAY97B,EAAKr8D,mBAC3Ch2K,IAA9BqyO,EAAKp8D,uBAAqCxH,EAASwH,qBAAuBk4F,EAAY97B,EAAKp8D,4BACjEj2K,IAA1BqyO,EAAKn8D,mBAAiCzH,EAASyH,iBAAmBi4F,EAAY97B,EAAKn8D,wBAEnEl2K,IAAhBqyO,EAAKl8D,SAAuB1H,EAAS0H,OAASg4F,EAAY97B,EAAKl8D,cACtCn2K,IAAzBqyO,EAAKh8D,kBAAgC5H,EAAS4H,gBAAkBg8D,EAAKh8D,sBAE/Cr2K,IAAtBqyO,EAAK/7D,eAA6B7H,EAAS6H,aAAe+7D,EAAK/7D,mBACtCt2K,IAAzBqyO,EAAK97D,kBAAgC9H,EAAS8H,gBAAkB87D,EAAK97D,sBAEnDv2K,IAAlBqyO,EAAKp9D,WAAyBxG,EAASwG,SAAWk5F,EAAY97B,EAAKp9D,gBACxCj1K,IAA3BqyO,EAAKn9D,oBAAkCzG,EAASyG,kBAAoBm9D,EAAKn9D,wBAE1Dl1K,IAAfqyO,EAAKl9D,QAAsB1G,EAAS0G,MAAQg5F,EAAY97B,EAAKl9D,aACrCn1K,IAAxBqyO,EAAKj9D,iBAA+B3G,EAAS2G,eAAiBi9D,EAAKj9D,qBAE9Cp1K,IAArBqyO,EAAK77D,cAA4B/H,EAAS+H,YAAc23F,EAAY97B,EAAK77D,mBAEnDx2K,IAAtBqyO,EAAK19D,eAA6BlG,EAASkG,aAAew5F,EAAY97B,EAAK19D,oBAC5C30K,IAA/BqyO,EAAKz9D,wBAAsCnG,EAASmG,sBAAwBu5F,EAAY97B,EAAKz9D,6BACjE50K,IAA5BqyO,EAAKx9D,qBAAmCpG,EAASoG,mBAAqBs5F,EAAY97B,EAAKx9D,0BACzD70K,IAA9BqyO,EAAKv9D,uBAAqCrG,EAASqG,sBAAuB,IAAI/pB,IAAUwE,UAAW8iF,EAAKv9D,4BAE/E90K,IAAzBqyO,EAAK37D,kBAAgCjI,EAASiI,gBAAkBy3F,EAAY97B,EAAK37D,uBAC3D12K,IAAtBqyO,EAAKz7D,eAA6BnI,EAASmI,aAAeu3F,EAAY97B,EAAKz7D,oBAEpD52K,IAAvBqyO,EAAKjvC,gBAA8B30B,EAAS20B,cAAgB+qE,EAAY97B,EAAKjvC,qBAClDpjM,IAA3BqyO,EAAKhvC,oBAAkC50B,EAAS40B,kBAAoB8qE,EAAY97B,EAAKhvC,oBAEnF50B,CAER,GAAC,CAAAr2K,IAAA,cAAA/D,MAED,SAAaA,GAGZ,OADAuB,KAAKu/J,SAAW9gK,EACTuB,IAER,KAACm4Q,CAAA,CAnSkB,CAASvI,IAuSvB6I,GAAW,oBAAAA,IAAAhuQ,EAAA,KAAAguQ,EAAA,CAsEf,OAtEelvQ,EAAAkvQ,EAAA,OAAAj2Q,IAAA,aAAA/D,MAEhB,SAAmBsE,GAElB,GAA4B,qBAAhBkvQ,YAEX,OAAO,IAAIA,aAAcC,OAAQnvQ,GASlC,IAFA,IAAItH,EAAI,GAEEiB,EAAI,EAAGowD,EAAK/pD,EAAMnL,OAAQ8E,EAAIowD,EAAIpwD,IAG3CjB,GAAKsC,OAAOinC,aAAcjiC,EAAOrG,IAIlC,IAIC,OAAOkgG,mBAAoBzV,OAAQ1rF,GAEpC,CAAE,MAAQ6K,KAET,OAAO7K,CAER,CAED,GAAC,CAAA+G,IAAA,iBAAA/D,MAED,SAAuBypC,GAEtB,IAAMt5B,EAAQs5B,EAAI2mE,YAAa,KAE/B,OAAiB,IAAZjgG,EAAuB,KAErBs5B,EAAIt3B,MAAO,EAAGhC,EAAQ,EAE9B,GAAC,CAAApM,IAAA,aAAA/D,MAED,SAAmBypC,EAAKgvD,GAGvB,MAAoB,kBAARhvD,GAA4B,KAARA,EAAoB,IAG/C,gBAAgBhwC,KAAMg/F,IAAU,MAAMh/F,KAAMgwC,KAEhDgvD,EAAOA,EAAKv7F,QAAS,0BAA2B,OAK5C,mBAAmBzD,KAAMgwC,IAGzB,gBAAgBhwC,KAAMgwC,IAGtB,aAAahwC,KAAMgwC,GANqBA,EAStCgvD,EAAOhvD,EAEf,KAACuwO,CAAA,CAtEe,GA0EXC,GAAuB,SAAAC,GAAA38P,EAAA08P,EAAAC,GAAA,IAAAC,EAAAj+P,EAAA+9P,GAE5B,SAAAA,IAAc,IAAAG,EAKiB,OALjBpuQ,EAAA,KAAAiuQ,IAEbG,EAAAD,EAAA/7Q,KAAA,OAEK+H,KAAO,0BACZi0Q,EAAK1jE,cAAgBhsJ,IAAS0vN,CAE/B,CA4BC,OA5BAtvQ,EAAAmvQ,EAAA,EAAAl2Q,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAAo9P,EAAA97Q,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKm1M,cAAgB3zM,EAAO2zM,cAErBn1M,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAAo9P,EAAA97Q,WAAA,eAAAC,KAAA,KAAiBmD,MAM3B,OAJA0jC,EAAKyxK,cAAgBn1M,KAAKm1M,cAE1BzxK,EAAKolK,2BAA4B,EAE1BplK,CAER,KAACg1O,CAAA,CArC2B,CAAShzF,IAyCtCgzF,GAAwB97Q,UAAUksM,2BAA4B,EAAK,IAw1C/Dx5K,GAt1CEwpP,GAAoB,SAAAC,GAAA/8P,EAAA88P,EAAAC,GAAA,IAAAC,EAAAr+P,EAAAm+P,GAEzB,SAAAA,EAAajJ,GAAU,OAAAplQ,EAAA,KAAAquQ,GAAAE,EAAAn8Q,KAAA,KAEfgzQ,EAER,CAyMC,OAzMAtmQ,EAAAuvQ,EAAA,EAAAt2Q,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAE9B,IAAM40J,EAAQhtL,KAER+jG,EAAS,IAAImsK,GAAYljF,EAAM6iF,SACrC9rK,EAAOwuK,QAASvlF,EAAM91F,MACtB6M,EAAOyuK,iBAAkBxlF,EAAMgjF,eAC/BjsK,EAAO0uK,mBAAoBzlF,EAAM8iF,iBACjC/rK,EAAOn4B,KAAM1jC,GAAK,SAAWl1B,GAE5B,IAECgnI,EAAQgzC,EAAMrsF,MAAO5yC,KAAK4yC,MAAO3tF,IAElC,CAAE,MAAQ1M,KAEJ8xB,EAEJA,EAAS9xB,KAITyN,QAAQwN,MAAOjb,KAIhB0mL,EAAM6iF,QAAQR,UAAWnnO,EAE1B,CAED,GAAGukC,EAAYr0C,EAEhB,GAAC,CAAA51B,IAAA,QAAA/D,MAED,SAAOg+O,GAEN,IAAMw8B,EAAuB,CAAC,EACxBC,EAAiB,CAAC,EAExB,SAASC,EAAsB18B,EAAM5gI,GAEpC,QAAsCzxG,IAAjC6uQ,EAAsBp9J,GAAuB,OAAOo9J,EAAsBp9J,GAE/E,IACMq8H,EADqBuE,EAAKtE,mBACct8H,GAExCs+C,EAYP,SAAyBsiF,EAAM5gI,GAE9B,QAAgCzxG,IAA3B8uQ,EAAgBr9J,GAAuB,OAAOq9J,EAAgBr9J,GAEnE,IAAM+7H,EAAe6E,EAAK7E,aACpBg6B,EAAch6B,EAAc/7H,GAE5B5qF,EAAK,IAAIs2E,YAAaqqK,GAAcz3G,OAI1C,OAFA++G,EAAgBr9J,GAAS5qF,EAElBA,CAER,CAzBgBmoP,CAAgB38B,EAAMvE,EAAkB/9E,QAEjDp3J,EAAQm3J,GAAeg+E,EAAkBtzO,KAAMu1J,GAC/CtoI,EAAK,IAAI8lN,GAAmB50O,EAAOm1O,EAAkBzuD,QAK3D,OAJA53J,EAAGgqF,KAAOq8H,EAAkBr8H,KAE5Bo9J,EAAsBp9J,GAAShqF,EAExBA,CAER,CAiBA,IAAMi5I,EAAW2xE,EAAK3zC,0BAA4B,IAAI4vE,GAA4B,IAAIhzF,GAEhF92K,EAAQ6tO,EAAK/4M,KAAK90B,MAExB,QAAexE,IAAVwE,EAAsB,CAE1B,IAAMyqQ,EAAan/G,GAAetrJ,EAAMhK,KAAMgK,EAAM7L,OACpD+nK,EAASkf,SAAU,IAAIxH,GAAiB62F,EAAY,GAErD,CAEA,IAAMnnM,EAAauqK,EAAK/4M,KAAKwuC,WAE7B,IAAM,IAAM1vE,KAAO0vE,EAAa,CAE/B,IAAMgkF,EAAYhkF,EAAY1vE,GAC1B82Q,OAAe,EAEnB,GAAKpjH,EAAUszB,6BAA+B,CAE7C,IAAM0uD,EAAoBihC,EAAsB18B,EAAK/4M,KAAMwyH,EAAUxyH,MACrE41O,EAAkB,IAAIrhC,GAA4BC,EAAmBhiF,EAAUusB,SAAUvsB,EAAUnsH,OAAQmsH,EAAU0G,WAEtH,KAAO,CAEN,IAAMy8G,EAAan/G,GAAehE,EAAUtxJ,KAAMsxJ,EAAUnzJ,OAE5Du2Q,EAAkB,IADYpjH,EAAUmzC,2BAA6BszC,GAA2Bn6D,IACnD62F,EAAYnjH,EAAUusB,SAAUvsB,EAAU0G,WAExF,MAEwBxyJ,IAAnB8rJ,EAAU/8J,OAAqBmgR,EAAgBngR,KAAO+8J,EAAU/8J,WAC5CiR,IAApB8rJ,EAAUwsB,OAAsB42F,EAAgBxhC,SAAU5hF,EAAUwsB,YAE1Ct4K,IAA1B8rJ,EAAUysB,cAEd22F,EAAgB32F,YAAY54I,OAASmsH,EAAUysB,YAAY54I,OAC3DuvO,EAAgB32F,YAAYhlG,MAAQu4E,EAAUysB,YAAYhlG,OAI3DmtF,EAASh4J,aAActQ,EAAK82Q,EAE7B,CAEA,IAAMxzF,EAAkB22D,EAAK/4M,KAAKoiJ,gBAElC,GAAKA,EAEJ,IAAM,IAAMtjL,KAAOsjL,EAAkB,CAMpC,IAJA,IAAMiE,EAAiBjE,EAAiBtjL,GAElCO,EAAQ,GAEJrG,EAAI,EAAGowD,EAAKi9H,EAAenyL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAE3D,IAAMw5J,EAAY6zB,EAAgBrtL,GAC9B48Q,OAAe,EAEnB,GAAKpjH,EAAUszB,6BAA+B,CAE7C,IAAM0uD,EAAoBihC,EAAsB18B,EAAK/4M,KAAMwyH,EAAUxyH,MACrE41O,EAAkB,IAAIrhC,GAA4BC,EAAmBhiF,EAAUusB,SAAUvsB,EAAUnsH,OAAQmsH,EAAU0G,WAEtH,KAAO,CAEN,IAAMy8G,EAAan/G,GAAehE,EAAUtxJ,KAAMsxJ,EAAUnzJ,OAC5Du2Q,EAAkB,IAAI92F,GAAiB62F,EAAYnjH,EAAUusB,SAAUvsB,EAAU0G,WAElF,MAEwBxyJ,IAAnB8rJ,EAAU/8J,OAAqBmgR,EAAgBngR,KAAO+8J,EAAU/8J,MACrE4J,EAAMjG,KAAMw8Q,EAEb,CAEAxuG,EAASgb,gBAAiBtjL,GAAQO,CAEnC,CAI4B05O,EAAK/4M,KAAKqiJ,uBAItCjb,EAASib,sBAAuB,GAIjC,IAAMC,EAASy2D,EAAK/4M,KAAKsiJ,QAAUy2D,EAAK/4M,KAAK61O,WAAa98B,EAAK/4M,KAAK81O,QAEpE,QAAgBpvQ,IAAX47K,EAEJ,IAAM,IAAItpL,EAAI,EAAGqK,EAAIi/K,EAAOpuL,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEnD,IAAM+qG,EAAQu+E,EAAQtpL,GAEtBouK,EAAS+e,SAAUpiF,EAAM38D,MAAO28D,EAAM9pB,MAAO8pB,EAAM0+E,cAEpD,CAID,IAAMF,EAAiBw2D,EAAK/4M,KAAKuiJ,eAEjC,QAAwB77K,IAAnB67K,EAA+B,CAEnC,IAAM5vB,EAAS,IAAIyQ,QAEY18J,IAA1B67K,EAAe5vB,QAEnBA,EAAOsD,UAAWssB,EAAe5vB,QAIlCyU,EAASmb,eAAiB,IAAI/Y,GAAQ7W,EAAQ4vB,EAAe/c,OAE9D,CAKA,OAHKuzE,EAAKtjP,OAAO2xK,EAAS3xK,KAAOsjP,EAAKtjP,MACjCsjP,EAAKx9E,WAAW6L,EAAS7L,SAAWw9E,EAAKx9E,UAEvC6L,CAER,KAACguG,CAAA,CA/MwB,CAASlJ,IAmN7B6J,GAAY,SAAAC,GAAA19P,EAAAy9P,EAAAC,GAAA,IAAAC,EAAAh/P,EAAA8+P,GAEjB,SAAAA,EAAa5J,GAAU,OAAAplQ,EAAA,KAAAgvQ,GAAAE,EAAA98Q,KAAA,KAEfgzQ,EAER,CAkgCC,OAlgCAtmQ,EAAAkwQ,EAAA,EAAAj3Q,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAE9B,IAAM40J,EAAQhtL,KAERk3F,EAAuB,KAAdl3F,KAAKk3F,KAAgBuhL,GAAYmB,eAAgB1xO,GAAQloC,KAAKk3F,KAC7El3F,KAAK+vQ,aAAe/vQ,KAAK+vQ,cAAgB74K,EAEzC,IAAM6M,EAAS,IAAImsK,GAAYlwQ,KAAK6vQ,SACpC9rK,EAAOwuK,QAASvyQ,KAAKk3F,MACrB6M,EAAOyuK,iBAAkBxyQ,KAAKgwQ,eAC9BjsK,EAAO0uK,mBAAoBzyQ,KAAK8vQ,iBAChC/rK,EAAOn4B,KAAM1jC,GAAK,SAAWl1B,GAE5B,IAAIypO,EAAO,KAEX,IAECA,EAAO1uL,KAAK4yC,MAAO3tF,EAEpB,CAAE,MAAQuO,IAMT,YAJiBnX,IAAZguB,GAAwBA,EAAS7W,SAEtCxN,QAAQwN,MAAO,mCAAsC2mB,EAAM,IAAK3mB,GAAMm/B,QAIvE,CAEA,IAAM+9D,EAAWg+H,EAAKh+H,cAEJr0G,IAAbq0G,QAA4Cr0G,IAAlBq0G,EAAS75G,MAAsD,aAAhC65G,EAAS75G,KAAK5M,cAO5Eg1L,EAAMrsF,MAAO87I,EAAMziG,GALlBjmI,QAAQwN,MAAO,kCAAqC2mB,EAOtD,GAAGukC,EAAYr0C,EAEhB,GAAC,CAAA51B,IAAA,YAAA/D,MAAA,eAAAo7Q,EAAAh9L,GAAAC,EAAAA,MAED,SAAAg9L,EAAiB5xO,EAAKukC,GAAU,IAAAugH,EAAA91F,EAAA6M,EAAA/wF,EAAAypO,EAAAh+H,EAAA,OAAA3hC,EAAAA,MAAA,SAAAi9L,GAAA,cAAAA,EAAA92Q,KAAA82Q,EAAA72Q,MAAA,OAUmB,OAR5C8pL,EAAQhtL,KAERk3F,EAAuB,KAAdl3F,KAAKk3F,KAAgBuhL,GAAYmB,eAAgB1xO,GAAQloC,KAAKk3F,KAC7El3F,KAAK+vQ,aAAe/vQ,KAAK+vQ,cAAgB74K,GAEnC6M,EAAS,IAAImsK,GAAYlwQ,KAAK6vQ,UAC7B0C,QAASvyQ,KAAKk3F,MACrB6M,EAAOyuK,iBAAkBxyQ,KAAKgwQ,eAC9BjsK,EAAO0uK,mBAAoBzyQ,KAAK8vQ,iBAAkBiK,EAAA72Q,KAAA,EAE/B6gG,EAAOi2K,UAAW9xO,EAAKukC,GAAY,OAIxB,GAJxBz5D,EAAI+mQ,EAAA98L,KAEJw/J,EAAO1uL,KAAK4yC,MAAO3tF,QAIP5I,KAFZq0G,EAAWg+H,EAAKh+H,gBAE2Br0G,IAAlBq0G,EAAS75G,MAAsD,aAAhC65G,EAAS75G,KAAK5M,cAA4B,CAAA+hR,EAAA72Q,KAAA,eAEjG,IAAIpF,MAAO,kCAAqCoqC,GAAK,eAAA6xO,EAAA72Q,KAAA,GAI/C8pL,EAAMitF,WAAYx9B,GAAM,eAAAs9B,EAAA78L,OAAA,SAAA68L,EAAA98L,MAAA,yBAAA88L,EAAAtrM,OAAA,GAAAqrM,EAAA,UAErC,gBAAAI,EAAAC,GAAA,OAAAN,EAAA/5Q,MAAA,KAAAG,UAAA,EA5BA,IA4BA,CAAAuC,IAAA,QAAA/D,MAED,SAAOg+O,EAAMziG,GAEZ,IAAMo8B,EAAap2K,KAAKo6Q,gBAAiB39B,EAAKrmE,YACxCwB,EAAS53K,KAAKq6Q,YAAa59B,EAAK7kE,QAChCF,EAAa13K,KAAKs6Q,gBAAiB79B,EAAK/kE,WAAYE,GAEpDna,EAASz9J,KAAKu6Q,YAAa99B,EAAKh/E,QAAQ,gBAE7BrzJ,IAAX4vI,GAAuBA,EAAQ73I,EAErC,IAEMo9J,EAAWv/J,KAAKw6Q,cAAe/9B,EAAKl9E,SAAU9B,GAC9Cka,EAAY33K,KAAKy6Q,eAAgBh+B,EAAK9kE,UAAWpY,GAEjDp9J,EAASnC,KAAK06Q,YAAaj+B,EAAKt6O,OAAQu1K,EAAYC,EAAWpY,EAAU6W,GACzEyB,EAAY73K,KAAK26Q,eAAgBl+B,EAAK5kE,UAAW11K,GAMvD,GAJAnC,KAAK46Q,cAAez4Q,EAAQ01K,QAIZztK,IAAX4vI,EAAuB,CAE3B,IAAI6gI,GAAY,EAEhB,IAAM,IAAMh/J,KAAQ4hD,EAEnB,GAAKA,EAAQ5hD,aAAkBshD,iBAAmB,CAEjD09G,GAAY,EACZ,KAED,EAIkB,IAAdA,GAAsB7gI,EAAQ73I,EAEpC,CAEA,OAAOA,CAER,GAAC,CAAAK,IAAA,aAAA/D,MAAA,eAAAq8Q,EAAAj+L,GAAAC,EAAAA,MAED,SAAAi+L,EAAkBt+B,GAAI,IAAArmE,EAAAwB,EAAAF,EAAAja,EAAA8B,EAAAoY,EAAAx1K,EAAA01K,EAAA,OAAA/6F,EAAAA,MAAA,SAAAk+L,GAAA,cAAAA,EAAA/3Q,KAAA+3Q,EAAA93Q,MAAA,OAI6C,OAF5DkzK,EAAap2K,KAAKo6Q,gBAAiB39B,EAAKrmE,YACxCwB,EAAS53K,KAAKq6Q,YAAa59B,EAAK7kE,QAChCF,EAAa13K,KAAKs6Q,gBAAiB79B,EAAK/kE,WAAYE,GAAQojG,EAAA93Q,KAAA,EAE7ClD,KAAKi7Q,iBAAkBx+B,EAAKh/E,QAAQ,OAQjB,OARlCA,EAAMu9G,EAAA/9L,KAENsiF,EAAWv/J,KAAKw6Q,cAAe/9B,EAAKl9E,SAAU9B,GAC9Cka,EAAY33K,KAAKy6Q,eAAgBh+B,EAAK9kE,UAAWpY,GAEjDp9J,EAASnC,KAAK06Q,YAAaj+B,EAAKt6O,OAAQu1K,EAAYC,EAAWpY,EAAU6W,GACzEyB,EAAY73K,KAAK26Q,eAAgBl+B,EAAK5kE,UAAW11K,GAEvDnC,KAAK46Q,cAAez4Q,EAAQ01K,GAAYmjG,EAAA99L,OAAA,SAEjC/6E,GAAM,yBAAA64Q,EAAAvsM,OAAA,GAAAssM,EAAA,UAEb,gBAAAG,GAAA,OAAAJ,EAAAh7Q,MAAA,KAAAG,UAAA,EApBA,IAoBA,CAAAuC,IAAA,cAAA/D,MAED,SAAag+O,GAEZ,IAAM7kE,EAAS,CAAC,EAEhB,QAAcxtK,IAATqyO,EAEJ,IAAM,IAAI//O,EAAI,EAAGmK,EAAI41O,EAAK7kP,OAAQ8E,EAAImK,EAAGnK,IAAO,CAE/C,IAAMmd,GAAQ,IAAIq3O,IAAQ9G,SAAU3N,EAAM//O,IAE1Ck7K,EAAQ/9J,EAAMgiG,MAAShiG,CAExB,CAID,OAAO+9J,CAER,GAAC,CAAAp1K,IAAA,iBAAA/D,MAED,SAAgBg+O,EAAMt6O,GAErB,IAAM01K,EAAY,CAAC,EACb+vC,EAAQ,CAAC,EAYf,GARAzlN,EAAOg1K,UAAU,SAAW/9I,GAEtBA,EAAM0iN,SAASl0B,EAAOxuL,EAAMyiF,MAASziF,EAE3C,SAIchvB,IAATqyO,EAEJ,IAAM,IAAI//O,EAAI,EAAGmK,EAAI41O,EAAK7kP,OAAQ8E,EAAImK,EAAGnK,IAAO,CAE/C,IAAMk8K,GAAW,IAAIyjE,IAAW+N,SAAU3N,EAAM//O,GAAKkrN,GAErD/vC,EAAWe,EAAS/8D,MAAS+8D,CAE9B,CAID,OAAOf,CAER,GAAC,CAAAr1K,IAAA,kBAAA/D,MAED,SAAiBg+O,EAAM7kE,GAEtB,IAAMF,EAAa,CAAC,EAEpB,QAActtK,IAATqyO,EAIJ,IAFA,IAAM0+B,EAAuB,IAAIrC,GAEvBp8Q,EAAI,EAAGmK,EAAI41O,EAAK7kP,OAAQ8E,EAAImK,EAAGnK,IAAO,CAE/C,IAAIouK,OAAQ,EACNpnI,EAAO+4M,EAAM//O,GAEnB,OAASgnC,EAAK9+B,MAEb,IAAK,iBACL,IAAK,0BAEJkmK,EAAWqwG,EAAqBx6K,MAAOj9D,GAEvC,MAED,IAAK,WAEJ3vB,QAAQwN,MAAO,wEAEf,MAED,QAEMmiB,EAAK9+B,QAAQo7P,GAEjBl1F,EAAWk1F,GAAYt8N,EAAK9+B,MAAOwlP,SAAU1mN,EAAMk0I,GAInD7jK,QAAQk/C,KAAK,kDAADxxD,OAAqDiiC,EAAK9+B,KAAI,MAM7EkmK,EAASjvD,KAAOn4E,EAAKm4E,UAEFzxG,IAAds5B,EAAKvqC,OAAqB2xK,EAAS3xK,KAAOuqC,EAAKvqC,OACjB,IAA9B2xK,EAASme,uBAA+C7+K,IAAlBs5B,EAAKu7H,WAAyB6L,EAAS7L,SAAWv7H,EAAKu7H,UAElGyY,EAAYh0I,EAAKm4E,MAASivD,CAE3B,CAID,OAAO4M,CAER,GAAC,CAAAl1K,IAAA,iBAAA/D,MAED,SAAgBg+O,EAAMl9E,GAErB,IAAMn2J,EAAQ,CAAC,EACTuuK,EAAY,CAAC,EAEnB,QAAcvtK,IAATqyO,EAAqB,CAEzB,IAAM14I,EAAS,IAAIo0K,GACnBp0K,EAAOq3K,YAAa77G,GAEpB,IAAM,IAAI7iK,EAAI,EAAGmK,EAAI41O,EAAK7kP,OAAQ8E,EAAImK,EAAGnK,IAAO,CAE/C,IAAMgnC,EAAO+4M,EAAM//O,GAEnB,GAAmB,kBAAdgnC,EAAK9+B,KAA2B,CAMpC,IAFA,IAAM7B,EAAQ,GAEJ8M,EAAI,EAAGA,EAAI6zB,EAAKi0I,UAAU//K,OAAQiY,IAAO,CAElD,IAAMgpK,EAAWn1I,EAAKi0I,UAAW9nK,QAEDzF,IAA3BhB,EAAOyvK,EAASh9D,QAEpBzyG,EAAOyvK,EAASh9D,MAAS9X,EAAOpD,MAAOk4E,IAIxC91K,EAAMjG,KAAMsM,EAAOyvK,EAASh9D,MAE7B,CAEA87D,EAAWj0I,EAAKm4E,MAAS94G,CAE1B,WAE6BqH,IAAvBhB,EAAOs6B,EAAKm4E,QAEhBzyG,EAAOs6B,EAAKm4E,MAAS9X,EAAOpD,MAAOj9D,IAIpCi0I,EAAWj0I,EAAKm4E,MAASzyG,EAAOs6B,EAAKm4E,KAIvC,CAED,CAEA,OAAO87D,CAER,GAAC,CAAAn1K,IAAA,kBAAA/D,MAED,SAAiBg+O,GAEhB,IAAMrmE,EAAa,CAAC,EAEpB,QAAchsK,IAATqyO,EAEJ,IAAM,IAAI//O,EAAI,EAAGA,EAAI+/O,EAAK7kP,OAAQ8E,IAAO,CAExC,IAAMgnC,EAAO+4M,EAAM//O,GAEbgoQ,EAAOqI,GAAcpsK,MAAOj9D,GAElC0yI,EAAYsuF,EAAK7oJ,MAAS6oJ,CAE3B,CAID,OAAOtuF,CAER,GAAC,CAAA5zK,IAAA,cAAA/D,MAED,SAAag+O,EAAMziG,GAElB,IAGIj2C,EAHEipF,EAAQhtL,KACRy9J,EAAS,CAAC,EAqBhB,SAAS49G,EAAkBliI,GAE1B,GAAsB,kBAAVA,EAAqB,CAEhC,IAAMjxG,EAAMixG,EAIZ,OAzBF,SAAoBjxG,GAInB,OAFA8kJ,EAAM6iF,QAAQV,UAAWjnO,GAElB67D,EAAOn4B,KAAM1jC,GAAK,WAExB8kJ,EAAM6iF,QAAQT,QAASlnO,EAExB,QAAG99B,GAAW,WAEb4iL,EAAM6iF,QAAQR,UAAWnnO,GACzB8kJ,EAAM6iF,QAAQT,QAASlnO,EAExB,GAED,CAUSozO,CAFM,4BAA4BpjR,KAAMgwC,GAAQA,EAAM8kJ,EAAM+iF,aAAe7nO,EAInF,CAEC,OAAKixG,EAAMz1G,KAEH,CACNA,KAAMw2H,GAAe/gB,EAAMv0I,KAAMu0I,EAAMz1G,MACvCv1B,MAAOgrI,EAAMhrI,MACbC,OAAQ+qI,EAAM/qI,QAKR,IAMV,CAEA,QAAchE,IAATqyO,GAAsBA,EAAK7kP,OAAS,EAAI,CAE5C,IAAMi4Q,EAAU,IAAIf,GAAgB90H,IAEpCj2C,EAAS,IAAImvK,GAAarD,IACnB+D,eAAgB5zQ,KAAKy3I,aAE5B,IAAM,IAAI/6I,EAAI,EAAGowD,EAAK2vL,EAAK7kP,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEjD,IAAMy8I,EAAQsjG,EAAM//O,GACdwrC,EAAMixG,EAAMjxG,IAElB,GAAKvrC,MAAM0E,QAAS6mC,GAAQ,CAM3B,IAFA,IAAMqzO,EAAa,GAET1rQ,EAAI,EAAGq3K,EAAKh/I,EAAItwC,OAAQiY,EAAIq3K,EAAIr3K,IAAO,CAEhD,IAEM2rQ,EAAoBH,EAFPnzO,EAAKr4B,IAIG,OAAtB2rQ,IAECA,aAA6Br+G,iBAEjCo+G,EAAWz+Q,KAAM0+Q,GAMjBD,EAAWz+Q,KAAM,IAAIi/O,GAAay/B,EAAkB93O,KAAM83O,EAAkBrtQ,MAAOqtQ,EAAkBptQ,SAMxG,CAEAqvJ,EAAQtkB,EAAMt9B,MAAS,IAAI0hD,GAAQg+G,EAEpC,KAAO,CAIN,IAAMC,EAAoBH,EAAkBliI,EAAMjxG,KAClDu1H,EAAQtkB,EAAMt9B,MAAS,IAAI0hD,GAAQi+G,EAGpC,CAED,CAED,CAEA,OAAO/9G,CAER,GAAC,CAAAj7J,IAAA,mBAAA/D,MAAA,eAAAg9Q,EAAA5+L,GAAAC,EAAAA,MAED,SAAA4+L,EAAwBj/B,GAAI,IAAAzvD,EAAAvvB,EAAA15D,EAOZs3K,EAAgBM,EAAAC,EAAA9uN,EAAAqsF,EAAAjxG,EAAAqzO,EAAA1rQ,EAAAq3K,EAAA1xD,EAAAgmJ,EAAAK,EAAA,OAAA/+L,EAAAA,MAAC,SAADg/L,GAAA,cAAAA,EAAA74Q,KAAA64Q,EAAA54Q,MAAA,OAJd,GAIcy4Q,EAAA,WA4B9B,OA5B8BA,EAAA9+L,GAAAC,EAAAA,MAA/B,SAAAi/L,EAAiC5iI,GAAK,IAAA6iI,EAAA9kL,EAAA,OAAApa,EAAAA,MAAA,SAAAm/L,GAAA,cAAAA,EAAAh5Q,KAAAg5Q,EAAA/4Q,MAAA,UAEf,kBAAVi2I,EAAkB,CAAA8iI,EAAA/4Q,KAAA,QAIwD,OAA/Eg0F,EAAO,4BAA4Bh/F,KAFnCgwC,EAAMixG,GAE2CjxG,EAAM8kJ,EAAM+iF,aAAe7nO,EAAG+zO,EAAA/4Q,KAAA,EAExE6gG,EAAOi2K,UAAW9iL,GAAM,cAAA+kL,EAAA/+L,OAAA,SAAA++L,EAAAh/L,MAAA,WAIhCk8D,EAAMz1G,KAAI,CAAAu4O,EAAA/4Q,KAAA,gBAAA+4Q,EAAA/+L,OAAA,SAEP,CACNx5C,KAAMw2H,GAAe/gB,EAAMv0I,KAAMu0I,EAAMz1G,MACvCv1B,MAAOgrI,EAAMhrI,MACbC,OAAQ+qI,EAAM/qI,SACd,eAAA6tQ,EAAA/+L,OAAA,SAIM,MAAI,yBAAA++L,EAAAxtM,OAAA,GAAAstM,EAAA,KAMbJ,EAAA77Q,MAAA,KAAAG,UAAA,EA5Bco7Q,EAAgB,SAAAa,GAAA,OAAAP,EAAA77Q,MAAC,KAADG,UAAA,EALzB+sL,EAAQhtL,KACRy9J,EAAS,CAAC,SAkCFrzJ,IAATqyO,GAAsBA,EAAK7kP,OAAS,GAAC,CAAAkkR,EAAA54Q,KAAA,UAEzC6gG,EAAS,IAAImvK,GAAalzQ,KAAK6vQ,UACxB+D,eAAgB5zQ,KAAKy3I,aAElB/6I,EAAI,EAAGowD,EAAK2vL,EAAK7kP,OAAM,YAAE8E,EAAIowD,GAAE,CAAAgvN,EAAA54Q,KAAA,SAGnB,GADfi2I,EAAQsjG,EAAM//O,GACdwrC,EAAMixG,EAAMjxG,KAEbvrC,MAAM0E,QAAS6mC,GAAK,CAAA4zO,EAAA54Q,KAAA,SAIlBq4Q,EAAa,GAET1rQ,EAAI,EAAGq3K,EAAKh/I,EAAItwC,OAAM,aAAEiY,EAAIq3K,GAAE,CAAA40F,EAAA54Q,KAAA,SAEZ,OAArBsyH,EAAattF,EAAKr4B,GAAGisQ,EAAA54Q,KAAA,GAEKm4Q,EAAkB7lJ,GAAY,QAEnC,QAFrBgmJ,EAAiBM,EAAA7+L,QAIjBu+L,aAA6Br+G,iBAEjCo+G,EAAWz+Q,KAAM0+Q,GAMjBD,EAAWz+Q,KAAM,IAAIi/O,GAAay/B,EAAkB93O,KAAM83O,EAAkBrtQ,MAAOqtQ,EAAkBptQ,UAItG,QApBwCyB,IAAIisQ,EAAA54Q,KAAA,iBAwB9Cu6J,EAAQtkB,EAAMt9B,MAAS,IAAI0hD,GAAQg+G,GAAaO,EAAA54Q,KAAA,wBAAA44Q,EAAA54Q,KAAA,GAMhBm4Q,EAAkBliI,EAAMjxG,KAAK,QAAvDszO,EAAiBM,EAAA7+L,KACvBwgF,EAAQtkB,EAAMt9B,MAAS,IAAI0hD,GAAQi+G,GAAoB,QA1Cd9+Q,IAAIo/Q,EAAA54Q,KAAA,uBAAA44Q,EAAA5+L,OAAA,SAkDzCugF,GAAM,yBAAAq+G,EAAArtM,OAAA,GAAAitM,EAAA,UAEb,gBAAAS,GAAA,OAAAV,EAAA37Q,MAAA,KAAAG,UAAA,EAhGA,IAgGA,CAAAuC,IAAA,gBAAA/D,MAED,SAAeg+O,EAAMh/E,GAEpB,SAAS2+G,EAAe39Q,EAAOmG,GAE9B,MAAsB,kBAAVnG,EAA4BA,GAExCsV,QAAQk/C,KAAM,uEAAwEx0D,GAE/EmG,EAAMnG,GAEd,CAEA,IAAM8gK,EAAW,CAAC,EAElB,QAAcn1J,IAATqyO,EAEJ,IAAM,IAAI//O,EAAI,EAAGmK,EAAI41O,EAAK7kP,OAAQ8E,EAAImK,EAAGnK,IAAO,CAE/C,IAAMgnC,EAAO+4M,EAAM//O,QAEC0N,IAAfs5B,EAAKy1G,OAETplI,QAAQk/C,KAAM,+CAAgDvvB,EAAKm4E,WAItCzxG,IAAzBqzJ,EAAQ/5H,EAAKy1G,QAEjBplI,QAAQk/C,KAAM,sCAAuCvvB,EAAKy1G,OAI3D,IAAM33I,EAASi8J,EAAQ/5H,EAAKy1G,OACtBA,EAAQ33I,EAAOkiC,KAEjB29H,OAAO,EAEN1kK,MAAM0E,QAAS83I,IAEnBkoB,EAAU,IAAIqxB,GAEQ,IAAjBv5C,EAAMvhJ,SAAeypK,EAAQ/B,aAAc,KAM/C+B,EAFIloB,GAASA,EAAMz1G,KAET,IAAIq4M,GAIJ,IAAIh+E,GAIV5kB,IAAQkoB,EAAQ/B,aAAc,IAIpC+B,EAAQ7/J,OAASA,EAEjB6/J,EAAQxlD,KAAOn4E,EAAKm4E,UAEDzxG,IAAds5B,EAAKvqC,OAAqBkoK,EAAQloK,KAAOuqC,EAAKvqC,WAE7BiR,IAAjBs5B,EAAK4gH,UAAwB+c,EAAQ/c,QAAU83H,EAAe14O,EAAK4gH,QAAS+3H,UAE5DjyQ,IAAhBs5B,EAAKqG,QAAuBs3H,EAAQt3H,OAAO4vH,UAAWj2H,EAAKqG,aAC3C3/B,IAAhBs5B,EAAKwB,QAAuBm8H,EAAQn8H,OAAOy0H,UAAWj2H,EAAKwB,aAC3C96B,IAAhBs5B,EAAK2yH,QAAuBgL,EAAQhL,OAAOsD,UAAWj2H,EAAK2yH,aACzCjsJ,IAAlBs5B,EAAK41H,WAAyB+H,EAAQ/H,SAAW51H,EAAK41H,eAExClvJ,IAAds5B,EAAK51B,OAETuzJ,EAAQlD,MAAQi+G,EAAe14O,EAAK51B,KAAM,GAAKwuQ,IAC/Cj7G,EAAQjD,MAAQg+G,EAAe14O,EAAK51B,KAAM,GAAKwuQ,UAI3BlyQ,IAAhBs5B,EAAK66H,SAAuB8C,EAAQ9C,OAAS76H,EAAK66H,aACpCn0J,IAAds5B,EAAK9+B,OAAqBy8J,EAAQz8J,KAAO8+B,EAAK9+B,WAC5BwF,IAAlBs5B,EAAK+6H,WAAyB4C,EAAQ5C,SAAW/6H,EAAK+6H,eAEnCr0J,IAAnBs5B,EAAK46H,YAA0B+C,EAAQ/C,UAAY89G,EAAe14O,EAAK46H,UAAWi+G,UAC/DnyQ,IAAnBs5B,EAAK26H,YAA0BgD,EAAQhD,UAAY+9G,EAAe14O,EAAK26H,UAAWk+G,UAC9DnyQ,IAApBs5B,EAAK86H,aAA2B6C,EAAQ7C,WAAa96H,EAAK86H,iBAE3Cp0J,IAAfs5B,EAAKq7H,QAAsBsC,EAAQtC,MAAQr7H,EAAKq7H,YAEtB30J,IAA1Bs5B,EAAKo7H,mBAAiCuC,EAAQvC,iBAAmBp7H,EAAKo7H,uBAC7C10J,IAAzBs5B,EAAKs7H,kBAAgCqC,EAAQrC,gBAAkBt7H,EAAKs7H,sBAElD50J,IAAlBs5B,EAAKu7H,WAAyBoC,EAAQpC,SAAWv7H,EAAKu7H,UAE3DM,EAAU77H,EAAKm4E,MAASwlD,CAEzB,CAID,OAAO9B,CAER,GAAC,CAAA/8J,IAAA,cAAA/D,MAED,SAAailC,EAAMg0I,EAAYC,EAAWpY,EAAU6W,GAEnD,IAAIj0K,EA8DA2oK,EAAU+N,EA5Dd,SAAS2jG,EAAarjR,GAQrB,YAN4BiR,IAAvBstK,EAAYv+K,IAEhB4a,QAAQk/C,KAAM,yCAA0C95D,GAIlDu+K,EAAYv+K,EAEpB,CAEA,SAASsjR,EAAatjR,GAErB,QAAciR,IAATjR,EAAL,CAEA,GAAKwD,MAAM0E,QAASlI,GAAS,CAI5B,IAFA,IAAM4J,EAAQ,GAEJrG,EAAI,EAAGmK,EAAI1N,EAAKvB,OAAQ8E,EAAImK,EAAGnK,IAAO,CAE/C,IAAMm/G,EAAO1iH,EAAMuD,QAEQ0N,IAAtButK,EAAW97D,IAEf9nG,QAAQk/C,KAAM,yCAA0C4oD,GAIzD94G,EAAMjG,KAAM66K,EAAW97D,GAExB,CAEA,OAAO94G,CAER,CAQA,YAN2BqH,IAAtButK,EAAWx+K,IAEf4a,QAAQk/C,KAAM,yCAA0C95D,GAIlDw+K,EAAWx+K,EA9BwB,CAgC3C,CAEA,SAASo/Q,EAAY18J,GAQpB,YAN0BzxG,IAArBm1J,EAAU1jD,IAEd9nG,QAAQk/C,KAAM,wCAAyC4oD,GAIjD0jD,EAAU1jD,EAElB,CAIA,OAASn4E,EAAK9+B,MAEb,IAAK,QAEJzC,EAAS,IAAIo1O,QAEYntO,IAApBs5B,EAAKk8B,aAEJvoD,OAAOqlQ,UAAWh5O,EAAKk8B,YAE3Bz9D,EAAOy9D,WAAa,IAAI27F,GAAO73H,EAAKk8B,YAIpCz9D,EAAOy9D,WAAa24M,EAAY70O,EAAKk8B,kBAMbx1D,IAArBs5B,EAAK00I,cAETj2K,EAAOi2K,YAAcmgG,EAAY70O,EAAK00I,mBAIrBhuK,IAAbs5B,EAAKi4I,MAEc,QAAlBj4I,EAAKi4I,IAAI/2K,KAEbzC,EAAOw5K,IAAM,IAAI27D,GAAK5zM,EAAKi4I,IAAIn0I,MAAO9D,EAAKi4I,IAAI9H,KAAMnwI,EAAKi4I,IAAI7H,KAEjC,YAAlBpwI,EAAKi4I,IAAI/2K,OAEpBzC,EAAOw5K,IAAM,IAAI07D,GAAS3zM,EAAKi4I,IAAIn0I,MAAO9D,EAAKi4I,IAAIwwD,WAMrD,MAED,IAAK,oBAEJhqO,EAAS,IAAI0tL,GAAmBnsJ,EAAKusJ,IAAKvsJ,EAAKwsJ,OAAQxsJ,EAAKmwI,KAAMnwI,EAAKowI,UAEnD1pK,IAAfs5B,EAAKhqC,QAAsByI,EAAOzI,MAAQgqC,EAAKhqC,YACjC0Q,IAAds5B,EAAK7O,OAAqB1yB,EAAO0yB,KAAO6O,EAAK7O,WAC1BzqB,IAAnBs5B,EAAKysJ,YAA0BhuL,EAAOguL,UAAYzsJ,EAAKysJ,gBACnC/lL,IAApBs5B,EAAK0sJ,aAA2BjuL,EAAOiuL,WAAa1sJ,EAAK0sJ,iBAC3ChmL,IAAds5B,EAAKnC,OAAqBp/B,EAAOo/B,KAAOhjC,OAAOmgB,OAAQ,CAAC,EAAGglB,EAAKnC,OAErE,MAED,IAAK,qBAEJp/B,EAAS,IAAIyrM,GAAoBlqK,EAAKsI,KAAMtI,EAAK87B,MAAO97B,EAAKwI,IAAKxI,EAAK+7B,OAAQ/7B,EAAKmwI,KAAMnwI,EAAKowI,UAE5E1pK,IAAds5B,EAAK7O,OAAqB1yB,EAAO0yB,KAAO6O,EAAK7O,WAC/BzqB,IAAds5B,EAAKnC,OAAqBp/B,EAAOo/B,KAAOhjC,OAAOmgB,OAAQ,CAAC,EAAGglB,EAAKnC,OAErE,MAED,IAAK,eAEJp/B,EAAS,IAAIg1Q,GAAczzO,EAAK8D,MAAO9D,EAAKyoL,WAE5C,MAED,IAAK,mBAEJhqN,EAAS,IAAI40Q,GAAkBrzO,EAAK8D,MAAO9D,EAAKyoL,WAEhD,MAED,IAAK,aAEJhqN,EAAS,IAAIo0Q,GAAY7yO,EAAK8D,MAAO9D,EAAKyoL,UAAWzoL,EAAKgzI,SAAUhzI,EAAK++J,OAEzE,MAED,IAAK,gBAEJtgM,EAAS,IAAIo1Q,GAAe7zO,EAAK8D,MAAO9D,EAAKyoL,UAAWzoL,EAAKv1B,MAAOu1B,EAAKt1B,QAEzE,MAED,IAAK,YAEJjM,EAAS,IAAIuzQ,GAAWhyO,EAAK8D,MAAO9D,EAAKyoL,UAAWzoL,EAAKgzI,SAAUhzI,EAAKkyH,MAAOlyH,EAAKmpL,SAAUnpL,EAAK++J,OAEnG,MAED,IAAK,kBAEJtgM,EAAS,IAAIqyQ,GAAiB9wO,EAAK8D,MAAO9D,EAAK2/J,YAAa3/J,EAAKyoL,WAEjE,MAED,IAAK,aAEJhqN,GAAS,IAAI41Q,IAAa3tB,SAAU1mN,GAEpC,MAED,IAAK,cAEJonI,EAAW0xG,EAAa94O,EAAKonI,UAC5B+N,EAAW4jG,EAAa/4O,EAAKm1I,UAE9B12K,EAAS,IAAI04O,GAAa/vE,EAAU+N,QAEbzuK,IAAlBs5B,EAAKg1I,WAAyBv2K,EAAOu2K,SAAWh1I,EAAKg1I,eACjCtuK,IAApBs5B,EAAKi1I,YAA2Bx2K,EAAOw2K,WAAWhf,UAAWj2H,EAAKi1I,iBAChDvuK,IAAlBs5B,EAAKk1I,WAAyBz2K,EAAOy2K,SAAWl1I,EAAKk1I,UAE1D,MAED,IAAK,OAEJ9N,EAAW0xG,EAAa94O,EAAKonI,UAC7B+N,EAAW4jG,EAAa/4O,EAAKm1I,UAE7B12K,EAAS,IAAI+oL,GAAMpgB,EAAU+N,GAE7B,MAED,IAAK,gBAEJ/N,EAAW0xG,EAAa94O,EAAKonI,UAC7B+N,EAAW4jG,EAAa/4O,EAAKm1I,UAC7B,IAAMl7F,EAAQj6C,EAAKi6C,MACbs6F,EAAiBv0I,EAAKu0I,eACtBC,EAAgBx0I,EAAKw0I,eAE3B/1K,EAAS,IAAIg7O,GAAeryE,EAAU+N,EAAUl7F,IACzCs6F,eAAiB,IAAI0kE,GAA0B,IAAI9nF,aAAcojB,EAAel1K,OAAS,SACzEqH,IAAlB8tK,IAA8B/1K,EAAO+1K,cAAgB,IAAIykE,GAA0B,IAAI9nF,aAAcqjB,EAAcn1K,OAASm1K,EAAcuK,WAE/I,MAED,IAAK,MAEJtgL,EAAS,IAAI63O,GAEb,MAED,IAAK,OAEJ73O,EAAS,IAAIi8O,GAAMo+B,EAAa94O,EAAKonI,UAAY2xG,EAAa/4O,EAAKm1I,WAEnE,MAED,IAAK,WAEJ12K,EAAS,IAAIo9O,GAAUi9B,EAAa94O,EAAKonI,UAAY2xG,EAAa/4O,EAAKm1I,WAEvE,MAED,IAAK,eAEJ12K,EAAS,IAAIg9O,GAAcq9B,EAAa94O,EAAKonI,UAAY2xG,EAAa/4O,EAAKm1I,WAE3E,MAED,IAAK,aACL,IAAK,SAEJ12K,EAAS,IAAI+9O,GAAQs8B,EAAa94O,EAAKonI,UAAY2xG,EAAa/4O,EAAKm1I,WAErE,MAED,IAAK,SAEJ12K,EAAS,IAAIi3O,GAAQqjC,EAAa/4O,EAAKm1I,WAEvC,MAED,IAAK,QAEJ12K,EAAS,IAAI0gO,GAEb,MAED,IAAK,OAEJ1gO,EAAS,IAAIu5O,GAEb,MAED,QAECv5O,EAAS,IAAIqzK,GA2Cf,GAvCArzK,EAAO05G,KAAOn4E,EAAKm4E,UAEAzxG,IAAds5B,EAAKvqC,OAAqBgJ,EAAOhJ,KAAOuqC,EAAKvqC,WAE7BiR,IAAhBs5B,EAAKg2H,QAETv3J,EAAOu3J,OAAOC,UAAWj2H,EAAKg2H,aAECtvJ,IAA1Bs5B,EAAKk7H,mBAAiCz8J,EAAOy8J,iBAAmBl7H,EAAKk7H,kBACrEz8J,EAAOy8J,kBAAmBz8J,EAAOu3J,OAAO6c,UAAWp0K,EAAOo9D,SAAUp9D,EAAOihK,WAAYjhK,EAAOk1I,cAI5EjtI,IAAlBs5B,EAAK67B,UAAyBp9D,EAAOo9D,SAASo6F,UAAWj2H,EAAK67B,eAC5Cn1D,IAAlBs5B,EAAK41H,UAAyBn3J,EAAOm3J,SAASK,UAAWj2H,EAAK41H,eAC1ClvJ,IAApBs5B,EAAK0/H,YAA2BjhK,EAAOihK,WAAWzJ,UAAWj2H,EAAK0/H,iBACnDh5J,IAAfs5B,EAAK2zG,OAAsBl1I,EAAOk1I,MAAMsiB,UAAWj2H,EAAK2zG,aAIrCjtI,IAApBs5B,EAAKsyI,aAA2B7zK,EAAO6zK,WAAatyI,EAAKsyI,iBAClC5rK,IAAvBs5B,EAAKuyI,gBAA8B9zK,EAAO8zK,cAAgBvyI,EAAKuyI,eAE/DvyI,EAAK+/G,cAEiBr5I,IAArBs5B,EAAK+/G,OAAOgpE,OAAqBtqN,EAAOshJ,OAAOgpE,KAAO/oL,EAAK+/G,OAAOgpE,WACvCriN,IAA3Bs5B,EAAK+/G,OAAOipE,aAA2BvqN,EAAOshJ,OAAOipE,WAAahpL,EAAK+/G,OAAOipE,iBACvDtiN,IAAvBs5B,EAAK+/G,OAAOylB,SAAuB/mK,EAAOshJ,OAAOylB,OAASxlI,EAAK+/G,OAAOylB,aAC9C9+J,IAAxBs5B,EAAK+/G,OAAOkpE,SAAwBxqN,EAAOshJ,OAAOkpE,QAAQhzD,UAAWj2H,EAAK+/G,OAAOkpE,cAC1DviN,IAAvBs5B,EAAK+/G,OAAOmkB,SAAuBzlK,EAAOshJ,OAAOmkB,OAAS5nK,KAAK06Q,YAAah3O,EAAK+/G,OAAOmkB,eAIxEx9J,IAAjBs5B,EAAKimC,UAAwBxnE,EAAOwnE,QAAUjmC,EAAKimC,cAC5Bv/D,IAAvBs5B,EAAKwyI,gBAA8B/zK,EAAO+zK,cAAgBxyI,EAAKwyI,oBAC1C9rK,IAArBs5B,EAAKyyI,cAA4Bh0K,EAAOg0K,YAAczyI,EAAKyyI,kBACzC/rK,IAAlBs5B,EAAKu7H,WAAyB98J,EAAO88J,SAAWv7H,EAAKu7H,eACrC70J,IAAhBs5B,EAAKixI,SAAuBxyK,EAAOwyK,OAAOr6C,KAAO52F,EAAKixI,aAEpCvqK,IAAlBs5B,EAAK9lB,SAIT,IAFA,IAAMA,EAAW8lB,EAAK9lB,SAEZlhB,EAAI,EAAGA,EAAIkhB,EAAShmB,OAAQ8E,IAErCyF,EAAOiqB,IAAKpsB,KAAK06Q,YAAa98P,EAAUlhB,GAAKg7K,EAAYC,EAAWpY,EAAU6W,IAMhF,QAAyBhsK,IAApBs5B,EAAK0yI,WAIT,IAFA,IAAMumG,EAAmBj5O,EAAK0yI,WAEpB15K,EAAI,EAAGA,EAAIigR,EAAiB/kR,OAAQ8E,IAAO,CAEpD,IAAMm/G,EAAO8gK,EAAkBjgR,GAE/ByF,EAAOi0K,WAAWt5K,KAAMs5K,EAAYv6D,GAErC,CAID,GAAmB,QAAdn4E,EAAK9+B,KAAiB,MAEDwF,IAApBs5B,EAAKqtL,aAA2B5uN,EAAO4uN,WAAartL,EAAKqtL,YAI9D,IAFA,IAAMv8M,EAASkvB,EAAKlvB,OAEV3N,EAAI,EAAGA,EAAI2N,EAAO5c,OAAQiP,IAAO,CAE1C,IAAMuN,EAAQI,EAAQ3N,GAChBuyB,EAAQj3B,EAAO+0K,oBAAqB,OAAQ9iK,EAAMjS,aAEzCiI,IAAVgvB,GAEJj3B,EAAOk4O,SAAUjhN,EAAOhlB,EAAMsiK,SAIhC,CAED,CAEA,OAAOv0K,CAER,GAAC,CAAAK,IAAA,gBAAA/D,MAED,SAAe0D,EAAQ01K,GAEmB,IAApCt5K,OAAOqD,KAAMi2K,GAAYjgL,QAE9BuK,EAAOg1K,UAAU,SAAW/9I,GAE3B,IAA6B,IAAxBA,EAAMq/I,oBAA6CruK,IAAnBgvB,EAAMw/I,SAAyB,CAEnE,IAAMA,EAAWf,EAAWz+I,EAAMw/I,eAEhBxuK,IAAbwuK,EAEJ7kK,QAAQk/C,KAAM,mDAAoD75B,EAAMw/I,UAIxEx/I,EAAMxlB,KAAMglK,EAAUx/I,EAAMu/I,WAI9B,CAED,GAED,GAEA,CAAAn2K,IAAA,iBAAA/D,MAEA,SAAgBA,GAGf,OADAsV,QAAQk/C,KAAM,iFACPjzD,KAAK48Q,gBAAiBn+Q,EAE9B,KAACg7Q,CAAA,CAxgCgB,CAAS7J,IA4gCrByM,GAAkB,CACvBtyH,UAAWA,GACXC,sBAAuBA,GACvBC,sBAAuBA,GACvBC,iCAAkCA,GAClCC,iCAAkCA,GAClCC,wBAAyBA,IAGpBkyH,GAAmB,CACxBjyH,eAAgBA,GAChBC,oBAAqBA,GACrBC,uBAAwBA,IAGnBgyH,GAAiB,CACtB/xH,cAAeA,GACfC,2BAA4BA,GAC5BE,0BAA2BA,GAC3BE,aAAcA,GACdC,0BAA2BA,GAC3BE,yBAA0BA,IAGrB6xH,GAAiB,SAAAC,GAAA9gQ,EAAA6gQ,EAAAC,GAAA,IAAAC,EAAApiQ,EAAAkiQ,GAEtB,SAAAA,EAAahN,GAAU,IAAAmN,EAgBsB,OAhBtBvyQ,EAAA,KAAAoyQ,GAEtBG,EAAAD,EAAAlgR,KAAA,KAAOgzQ,GAE2B,qBAAtBoN,mBAEXlpQ,QAAQk/C,KAAM,+DAIO,qBAAV49M,OAEX98P,QAAQk/C,KAAM,mDAIf+pN,EAAK/7Q,QAAU,CAAE69J,iBAAkB,QAASk+G,CAE7C,CAqEC,OArEAzzQ,EAAAszQ,EAAA,EAAAr6Q,IAAA,aAAA/D,MAED,SAAYwC,GAIX,OAFAjB,KAAKiB,QAAUA,EAERjB,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,QAEjBhuB,IAAR89B,IAAoBA,EAAM,SAEZ99B,IAAdpK,KAAKk3F,OAAqBhvD,EAAMloC,KAAKk3F,KAAOhvD,GAEjDA,EAAMloC,KAAK6vQ,QAAQP,WAAYpnO,GAE/B,IAAM8kJ,EAAQhtL,KAER62L,EAAS+3E,GAAM7+O,IAAKmY,GAE1B,QAAgB99B,IAAXysL,EAYJ,OAVA7J,EAAM6iF,QAAQV,UAAWjnO,GAEzBroC,YAAY,WAENm6I,GAASA,EAAQ68C,GAEtB7J,EAAM6iF,QAAQT,QAASlnO,EAExB,GAAG,GAEI2uJ,EAIR,IAAMqmF,EAAe,CAAC,EACtBA,EAAaxM,YAAqC,cAArB1wQ,KAAKy3I,YAAgC,cAAgB,UAClFylI,EAAa1M,QAAUxwQ,KAAKgwQ,cAE5Ba,MAAO3oO,EAAKg1O,GAAexsO,MAAM,SAAWikB,GAE3C,OAAOA,EAAIk9M,MAEZ,IAAInhO,MAAM,SAAWmhO,GAEpB,OAAOoL,kBAAmBpL,EAAMtzQ,OAAOmgB,OAAQsuK,EAAM/rL,QAAS,CAAEk8Q,qBAAsB,SAEvF,IAAIzsO,MAAM,SAAW0sO,GAEpBxO,GAAMxiP,IAAK8b,EAAKk1O,GAEXpjI,GAASA,EAAQojI,GAEtBpwF,EAAM6iF,QAAQT,QAASlnO,EAExB,IAAIyI,OAAO,SAAWrqC,GAEhB8xB,GAAUA,EAAS9xB,GAExB0mL,EAAM6iF,QAAQR,UAAWnnO,GACzB8kJ,EAAM6iF,QAAQT,QAASlnO,EAExB,IAEA8kJ,EAAM6iF,QAAQV,UAAWjnO,EAE1B,KAAC20O,CAAA,CAzFqB,CAASjN,IA6FhCiN,GAAkBjgR,UAAUygR,qBAAsB,EAIlD,IAAMC,GAAe,CAEpBrkI,WAAY,WAQX,YANkB7uI,IAAbklB,KAEJA,GAAW,IAAMjsB,OAAOi6Q,cAAgBj6Q,OAAOk6Q,qBAIzCjuP,EAER,EAEAgnK,WAAY,SAAW73L,GAEtB6wB,GAAW7wB,CAEZ,GAIK++Q,GAAW,SAAAC,GAAAzhQ,EAAAwhQ,EAAAC,GAAA,IAAAC,EAAA/iQ,EAAA6iQ,GAEhB,SAAAA,EAAa3N,GAAU,OAAAplQ,EAAA,KAAA+yQ,GAAAE,EAAA7gR,KAAA,KAEfgzQ,EAER,CA4CC,OA5CAtmQ,EAAAi0Q,EAAA,EAAAh7Q,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAE9B,IAAM40J,EAAQhtL,KAER+jG,EAAS,IAAImsK,GAAYlwQ,KAAK6vQ,SACpC9rK,EAAO8uK,gBAAiB,eACxB9uK,EAAOwuK,QAASvyQ,KAAKk3F,MACrB6M,EAAOyuK,iBAAkBxyQ,KAAKgwQ,eAC9BjsK,EAAO0uK,mBAAoBzyQ,KAAK8vQ,iBAChC/rK,EAAOn4B,KAAM1jC,GAAK,SAAWiyH,GAE5B,IAIC,IAAMwjH,EAAaxjH,EAAOvpJ,MAAO,GAEjB0sQ,GAAarkI,aACrB2kI,gBAAiBD,GAAY,SAAWE,GAE/C7jI,EAAQ6jI,EAET,GAED,CAAE,MAAQv3Q,KAEJ8xB,EAEJA,EAAS9xB,KAITyN,QAAQwN,MAAOjb,KAIhB0mL,EAAM6iF,QAAQR,UAAWnnO,EAE1B,CAED,GAAGukC,EAAYr0C,EAEhB,KAAColP,CAAA,CAlDe,CAAS5N,IAsDpBkO,GAAoB,SAAAC,GAAA/hQ,EAAA8hQ,EAAAC,GAAA,IAAAC,EAAArjQ,EAAAmjQ,GAEzB,SAAAA,EAAa16E,EAAUC,GAA6B,IAAA46E,EAAhB9xD,EAASlsN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAqzQ,GAEhDG,EAAAD,EAAAnhR,KAAA,UAAOuN,EAAW+hN,GAElB,IAAM1vD,GAAS,IAAIlB,IAAQtsI,IAAKm0K,GAC1B1mC,GAAS,IAAInB,IAAQtsI,IAAKo0K,GAE1B66E,EAAM,IAAIp3G,GAASrK,EAAOv1J,EAAGu1J,EAAO/1J,EAAG+1J,EAAOl2J,GAC9C43Q,EAAS,IAAIr3G,GAASpK,EAAOx1J,EAAGw1J,EAAOh2J,EAAGg2J,EAAOn2J,GAGjDw+O,EAAK9nP,KAAK04J,KAAM14J,KAAK00J,IACrB8R,EAAKshF,EAAK9nP,KAAK04J,KAAM,KAG8C,OADzEsoH,EAAKvlO,GAAG4zK,aAAc,GAAI5wD,KAAMwiH,GAAM9xP,IAAK+xP,GAAS5oH,eAAgBwvF,GACpEk5B,EAAKvlO,GAAG4zK,aAAc,GAAI5wD,KAAMwiH,GAAMp1G,IAAKq1G,GAAS5oH,eAAgBkO,GAAKw6G,CAE1E,CAAC,OAAA10Q,EAAAu0Q,EAAA,CAnBwB,CAAS/F,IAuBnC+F,GAAqBlhR,UAAUwhR,wBAAyB,EAAK,IAEvDC,GAAiB,SAAAC,GAAAtiQ,EAAAqiQ,EAAAC,GAAA,IAAAC,EAAA5jQ,EAAA0jQ,GAEtB,SAAAA,EAAa72O,GAAuB,IAAAg3O,EAAhBryD,EAASlsN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAA4zQ,GAEhCG,EAAAD,EAAA1hR,KAAA,UAAOuN,EAAW+hN,GAElB,IAAM1vD,GAAS,IAAIlB,IAAQtsI,IAAKuY,GAGyE,OAAzGg3O,EAAK9lO,GAAG4zK,aAAc,GAAIr9L,IAAKwtI,EAAOv1J,EAAGu1J,EAAO/1J,EAAG+1J,EAAOl2J,GAAIgvJ,eAAgB,EAAIt4J,KAAK04J,KAAM14J,KAAK00J,KAAO6sH,CAE1G,CAAC,OAAAj1Q,EAAA80Q,EAAA,CAXqB,CAAStG,IAehCsG,GAAkBzhR,UAAU6hR,qBAAsB,EAElD,IAAMC,GAA0B,IAAI/tG,GAC9BguG,GAAyB,IAAIhuG,GAC7BiuG,GAAkC,IAAIjuG,GAEtCkuG,GAAY,WAEjB,SAAAA,IAAcp0Q,EAAA,KAAAo0Q,GAEb7+Q,KAAK4E,KAAO,eAEZ5E,KAAKkwL,OAAS,EAEdlwL,KAAK8+Q,OAAS,KAEd9+Q,KAAKwmO,QAAU,IAAI32C,GACnB7vL,KAAKwmO,QAAQ7xD,OAAOu0C,OAAQ,GAC5BlpN,KAAKwmO,QAAQ5nE,kBAAmB,EAEhC5+J,KAAKymO,QAAU,IAAI52C,GACnB7vL,KAAKymO,QAAQ9xD,OAAOu0C,OAAQ,GAC5BlpN,KAAKymO,QAAQ7nE,kBAAmB,EAEhC5+J,KAAKm2F,OAAS,CACbz8F,MAAO,KACPu2L,IAAK,KACLC,OAAQ,KACRrc,KAAM,KACNC,IAAK,KACLj/I,KAAM,KACNiqP,OAAQ,KAGV,CA2DC,OA3DAv1Q,EAAAs1Q,EAAA,EAAAr8Q,IAAA,SAAA/D,MAED,SAAQmpK,GAEP,IAAMx+J,EAAQpJ,KAAKm2F,OAMnB,GAJoB/sF,EAAM1P,QAAUkuK,EAAOluK,OAAS0P,EAAM6mL,MAAQroB,EAAOqoB,KACxE7mL,EAAM8mL,SAAWtoB,EAAOsoB,OAASlwL,KAAKkwL,QAAU9mL,EAAMyqK,OAASjM,EAAOiM,MACtEzqK,EAAM0qK,MAAQlM,EAAOkM,KAAO1qK,EAAMyrB,OAAS+yI,EAAO/yI,MAAQzrB,EAAM01Q,SAAW9+Q,KAAK8+Q,OAE9D,CAElB11Q,EAAM1P,MAAQkuK,EAAOluK,MACrB0P,EAAM6mL,IAAMroB,EAAOqoB,IACnB7mL,EAAM8mL,OAAStoB,EAAOsoB,OAASlwL,KAAKkwL,OACpC9mL,EAAMyqK,KAAOjM,EAAOiM,KACpBzqK,EAAM0qK,IAAMlM,EAAOkM,IACnB1qK,EAAMyrB,KAAO+yI,EAAO/yI,KACpBzrB,EAAM01Q,OAAS9+Q,KAAK8+Q,OAKpBF,GAAkBljH,KAAMkM,EAAOG,kBAC/B,IAGIg3G,EAAMC,EAHJC,EAAa71Q,EAAM01Q,OAAS,EAC5BI,EAAqBD,EAAa71Q,EAAMyqK,KAAOzqK,EAAM1P,MACrDylR,EAAS/1Q,EAAMyqK,KAAO52K,KAAKyzL,IAAKh/B,GAAUtoJ,EAAM6mL,IAAM,IAAU7mL,EAAMyrB,KAK5E8pP,GAAS34I,SAAU,KAASi5I,EAC5BP,GAAU14I,SAAU,IAAOi5I,EAI3BF,GAASI,EAAO/1Q,EAAM8mL,OAASgvF,EAC/BF,EAAOG,EAAO/1Q,EAAM8mL,OAASgvF,EAE7BN,GAAkB54I,SAAU,GAAM,EAAI58H,EAAMyqK,MAASmrG,EAAOD,GAC5DH,GAAkB54I,SAAU,IAAQg5I,EAAOD,IAAWC,EAAOD,GAE7D/+Q,KAAKwmO,QAAQz+D,iBAAiBrM,KAAMkjH,IAIpCG,GAASI,EAAO/1Q,EAAM8mL,OAASgvF,EAC/BF,EAAOG,EAAO/1Q,EAAM8mL,OAASgvF,EAE7BN,GAAkB54I,SAAU,GAAM,EAAI58H,EAAMyqK,MAASmrG,EAAOD,GAC5DH,GAAkB54I,SAAU,IAAQg5I,EAAOD,IAAWC,EAAOD,GAE7D/+Q,KAAKymO,QAAQ1+D,iBAAiBrM,KAAMkjH,GAErC,CAEA5+Q,KAAKwmO,QAAQv+D,YAAYvM,KAAMkM,EAAOK,aAAcuO,SAAUmoG,IAC9D3+Q,KAAKymO,QAAQx+D,YAAYvM,KAAMkM,EAAOK,aAAcuO,SAAUkoG,GAE/D,KAACG,CAAA,CAvFgB,GA2FZO,GAAK,WAEV,SAAAA,IAAgC,IAAnBC,IAASp/Q,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GAAOwK,EAAA,KAAA20Q,GAE5Bp/Q,KAAKq/Q,UAAYA,EAEjBr/Q,KAAKoxD,UAAY,EACjBpxD,KAAKs/Q,QAAU,EACft/Q,KAAKojC,YAAc,EAEnBpjC,KAAKu/Q,SAAU,CAEhB,CAmDC,OAnDAh2Q,EAAA61Q,EAAA,EAAA58Q,IAAA,QAAA/D,MAED,WAECuB,KAAKoxD,UAAYxxD,KAEjBI,KAAKs/Q,QAAUt/Q,KAAKoxD,UACpBpxD,KAAKojC,YAAc,EACnBpjC,KAAKu/Q,SAAU,CAEhB,GAAC,CAAA/8Q,IAAA,OAAA/D,MAED,WAECuB,KAAKw/Q,iBACLx/Q,KAAKu/Q,SAAU,EACfv/Q,KAAKq/Q,WAAY,CAElB,GAAC,CAAA78Q,IAAA,iBAAA/D,MAED,WAGC,OADAuB,KAAKy/Q,WACEz/Q,KAAKojC,WAEb,GAAC,CAAA5gC,IAAA,WAAA/D,MAED,WAEC,IAAIorP,EAAO,EAEX,GAAK7pP,KAAKq/Q,YAAer/Q,KAAKu/Q,QAG7B,OADAv/Q,KAAK8qC,QACE,EAIR,GAAK9qC,KAAKu/Q,QAAU,CAEnB,IAAMG,EAAU9/Q,KAEhBiqP,GAAS61B,EAAU1/Q,KAAKs/Q,SAAY,IACpCt/Q,KAAKs/Q,QAAUI,EAEf1/Q,KAAKojC,aAAeymN,CAErB,CAEA,OAAOA,CAER,KAACu1B,CAAA,CA/DS,GAmEX,SAASx/Q,KAER,OAAgC,qBAAhBsxD,YAA8BvxD,KAAOuxD,aAActxD,KAEpE,CAEA,IAAM+/Q,GAA4B,IAAI74G,GAChC84G,GAA8B,IAAI78G,GAClC88G,GAAyB,IAAI/4G,GAC7Bg5G,GAA+B,IAAIh5G,GAEnCi5G,GAAa,SAAAC,GAAAhkQ,EAAA+jQ,EAAAC,GAAA,IAAAC,EAAAtlQ,EAAAolQ,GAElB,SAAAA,IAAc,IAAAG,EAiBa,OAjBbz1Q,EAAA,KAAAs1Q,IAEbG,EAAAD,EAAApjR,KAAA,OAEK+H,KAAO,gBAEZs7Q,EAAK3gR,QAAU+9Q,GAAarkI,aAE5BinI,EAAKC,KAAOD,EAAK3gR,QAAQ6gR,aACzBF,EAAKC,KAAKE,QAASH,EAAK3gR,QAAQ+C,aAEhC49Q,EAAKp+Q,OAAS,KAEdo+Q,EAAKI,UAAY,EAIjBJ,EAAKK,OAAS,IAAInB,GAAQc,CAE3B,CAoGC,OApGA32Q,EAAAw2Q,EAAA,EAAAv9Q,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAKmgR,IAEb,GAAC,CAAA39Q,IAAA,eAAA/D,MAED,WAWC,OATqB,OAAhBuB,KAAK8B,SAET9B,KAAKmgR,KAAK35L,WAAYxmF,KAAK8B,QAC3B9B,KAAK8B,OAAO0kF,WAAYxmF,KAAKT,QAAQ+C,aACrCtC,KAAKmgR,KAAKE,QAASrgR,KAAKT,QAAQ+C,aAChCtC,KAAK8B,OAAS,MAIR9B,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAK8B,MAEb,GAAC,CAAAU,IAAA,YAAA/D,MAED,SAAWA,GAiBV,OAfqB,OAAhBuB,KAAK8B,QAET9B,KAAKmgR,KAAK35L,WAAYxmF,KAAK8B,QAC3B9B,KAAK8B,OAAO0kF,WAAYxmF,KAAKT,QAAQ+C,cAIrCtC,KAAKmgR,KAAK35L,WAAYxmF,KAAKT,QAAQ+C,aAIpCtC,KAAK8B,OAASrD,EACduB,KAAKmgR,KAAKE,QAASrgR,KAAK8B,QACxB9B,KAAK8B,OAAOu+Q,QAASrgR,KAAKT,QAAQ+C,aAE3BtC,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,WAEC,OAAOuB,KAAKmgR,KAAKA,KAAK1hR,KAEvB,GAAC,CAAA+D,IAAA,kBAAA/D,MAED,SAAiBA,GAIhB,OAFAuB,KAAKmgR,KAAKA,KAAKK,gBAAiB/hR,EAAOuB,KAAKT,QAAQ42E,YAAa,KAE1Dn2E,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmB64K,GAElBpwC,GAAA5rH,EAAAykQ,EAAAnjR,WAAA,0BAAAC,KAAA,KAAyBy6K,GAEzB,IAAMrpI,EAAWjuC,KAAKT,QAAQ0uC,SACxB0jI,EAAK3xK,KAAK2xK,GAQhB,GANA3xK,KAAKsgR,UAAYtgR,KAAKugR,OAAOd,WAE7Bz/Q,KAAKioK,YAAYsO,UAAWopG,GAAaC,GAAeC,IAExDC,GAAe7wP,IAAK,EAAG,GAAK,GAAI+3I,gBAAiB44G,IAE5C3xO,EAASwyO,UAAY,CAIzB,IAAM/V,EAAU1qQ,KAAKT,QAAQ42E,YAAcn2E,KAAKsgR,UAEhDryO,EAASwyO,UAAUC,wBAAyBf,GAAYzjR,EAAGwuQ,GAC3Dz8N,EAAS0yO,UAAUD,wBAAyBf,GAAYt4Q,EAAGqjQ,GAC3Dz8N,EAAS2yO,UAAUF,wBAAyBf,GAAYr4Q,EAAGojQ,GAC3Dz8N,EAAS4yO,SAASH,wBAAyBZ,GAAe5jR,EAAGwuQ,GAC7Dz8N,EAAS6yO,SAASJ,wBAAyBZ,GAAez4Q,EAAGqjQ,GAC7Dz8N,EAAS8yO,SAASL,wBAAyBZ,GAAex4Q,EAAGojQ,GAC7Dz8N,EAAS+yO,IAAIN,wBAAyB/uG,EAAGz1K,EAAGwuQ,GAC5Cz8N,EAASgzO,IAAIP,wBAAyB/uG,EAAGtqK,EAAGqjQ,GAC5Cz8N,EAASizO,IAAIR,wBAAyB/uG,EAAGrqK,EAAGojQ,EAE7C,MAECz8N,EAASkzO,YAAaxB,GAAYzjR,EAAGyjR,GAAYt4Q,EAAGs4Q,GAAYr4Q,GAChE2mC,EAASmzO,eAAgBtB,GAAe5jR,EAAG4jR,GAAez4Q,EAAGy4Q,GAAex4Q,EAAGqqK,EAAGz1K,EAAGy1K,EAAGtqK,EAAGsqK,EAAGrqK,EAIhG,KAACy4Q,CAAA,CAzHiB,CAASvqG,IA6HtB6rG,GAAK,SAAAC,GAAAtlQ,EAAAqlQ,EAAAC,GAAA,IAAAC,EAAA5mQ,EAAA0mQ,GAEV,SAAAA,EAAapzO,GAAW,IAAAuzO,EA+BL,OA/BK/2Q,EAAA,KAAA42Q,IAEvBG,EAAAD,EAAA1kR,KAAA,OAEK+H,KAAO,QAEZ48Q,EAAKvzO,SAAWA,EAChBuzO,EAAKjiR,QAAU0uC,EAAS1uC,QAExBiiR,EAAKrB,KAAOqB,EAAKjiR,QAAQ6gR,aACzBoB,EAAKrB,KAAKE,QAASpyO,EAASwzO,YAE5BD,EAAKE,UAAW,EAEhBF,EAAKrnH,OAAS,KACdqnH,EAAKG,OAAS,EACdH,EAAKvzM,MAAO,EACZuzM,EAAKI,UAAY,EACjBJ,EAAKK,QAAU,EACfL,EAAKz3O,OAAS,EACdy3O,EAAKr1M,cAAW/hE,EAChBo3Q,EAAK9zM,aAAe,EACpB8zM,EAAKj0M,WAAY,EACjBi0M,EAAKM,oBAAqB,EAC1BN,EAAKhgR,OAAS,KACdggR,EAAKO,WAAa,QAElBP,EAAKQ,WAAa,EAClBR,EAAKS,UAAY,EACjBT,EAAKU,YAAa,EAElBV,EAAKW,QAAU,GAAGX,CAEnB,CA6VC,OA7VAj4Q,EAAA83Q,EAAA,EAAA7+Q,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAKmgR,IAEb,GAAC,CAAA39Q,IAAA,gBAAA/D,MAED,SAAe2jR,GAOd,OALApiR,KAAK8hR,oBAAqB,EAC1B9hR,KAAK+hR,WAAa,YAClB/hR,KAAKwB,OAAS4gR,EACdpiR,KAAKqgR,UAEErgR,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuB4jR,GAOtB,OALAriR,KAAK8hR,oBAAqB,EAC1B9hR,KAAK+hR,WAAa,YAClB/hR,KAAKwB,OAASxB,KAAKT,QAAQ+iR,yBAA0BD,GACrDriR,KAAKqgR,UAEErgR,IAER,GAAC,CAAAwC,IAAA,uBAAA/D,MAED,SAAsB8jR,GAOrB,OALAviR,KAAK8hR,oBAAqB,EAC1B9hR,KAAK+hR,WAAa,kBAClB/hR,KAAKwB,OAASxB,KAAKT,QAAQijR,wBAAyBD,GACpDviR,KAAKqgR,UAEErgR,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWo/Q,GAOV,OALA79Q,KAAKm6J,OAAS0jH,EACd79Q,KAAK+hR,WAAa,SAEb/hR,KAAK0hR,UAAW1hR,KAAKqtE,OAEnBrtE,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAAkB,IAAZ4zD,EAAKpyD,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEb,IAAwB,IAAnBD,KAAKutE,UAAV,CAOA,IAAiC,IAA5BvtE,KAAK8hR,mBAAV,CAOA9hR,KAAKgiR,WAAahiR,KAAKT,QAAQ42E,YAAc9jB,EAE7C,IAAM7wD,EAASxB,KAAKT,QAAQkjR,qBAe5B,OAdAjhR,EAAO24J,OAASn6J,KAAKm6J,OACrB34J,EAAOysE,KAAOjuE,KAAKiuE,KACnBzsE,EAAOogR,UAAY5hR,KAAK4hR,UACxBpgR,EAAOqgR,QAAU7hR,KAAK6hR,QACtBrgR,EAAOkhR,QAAU1iR,KAAKkuE,QAAQt6D,KAAM5T,MACpCwB,EAAOspC,MAAO9qC,KAAKgiR,WAAYhiR,KAAKiiR,UAAYjiR,KAAK+pC,OAAQ/pC,KAAKmsE,UAElEnsE,KAAKutE,WAAY,EAEjBvtE,KAAKwB,OAASA,EAEdxB,KAAK2iR,UAAW3iR,KAAK2hR,QACrB3hR,KAAK4tE,gBAAiB5tE,KAAK0tE,cAEpB1tE,KAAKqgR,SAnBZ,CAHCtsQ,QAAQk/C,KAAM,mDAJf,MAHCl/C,QAAQk/C,KAAM,yCA+BhB,GAAC,CAAAzwD,IAAA,QAAA/D,MAED,WAEC,IAAiC,IAA5BuB,KAAK8hR,mBA4BV,OArBwB,IAAnB9hR,KAAKutE,YAITvtE,KAAKiiR,WAAahlR,KAAKC,IAAK8C,KAAKT,QAAQ42E,YAAcn2E,KAAKgiR,WAAY,GAAMhiR,KAAK0tE,cAEhE,IAAd1tE,KAAKiuE,OAITjuE,KAAKiiR,UAAYjiR,KAAKiiR,WAAcjiR,KAAKmsE,UAAYnsE,KAAKm6J,OAAOhuF,WAIlEnsE,KAAKwB,OAAOitE,OACZzuE,KAAKwB,OAAOkhR,QAAU,KAEtB1iR,KAAKutE,WAAY,GAIXvtE,KA1BN+T,QAAQk/C,KAAM,mDA4BhB,GAAC,CAAAzwD,IAAA,OAAA/D,MAED,WAEC,IAAiC,IAA5BuB,KAAK8hR,mBAaV,OANA9hR,KAAKiiR,UAAY,EAEjBjiR,KAAKwB,OAAOitE,OACZzuE,KAAKwB,OAAOkhR,QAAU,KACtB1iR,KAAKutE,WAAY,EAEVvtE,KAXN+T,QAAQk/C,KAAM,mDAahB,GAAC,CAAAzwD,IAAA,UAAA/D,MAED,WAEC,GAAKuB,KAAKmiR,QAAQvqR,OAAS,EAAI,CAE9BoI,KAAKwB,OAAO6+Q,QAASrgR,KAAKmiR,QAAS,IAEnC,IAAM,IAAIzlR,EAAI,EAAGmK,EAAI7G,KAAKmiR,QAAQvqR,OAAQ8E,EAAImK,EAAGnK,IAEhDsD,KAAKmiR,QAASzlR,EAAI,GAAI2jR,QAASrgR,KAAKmiR,QAASzlR,IAI9CsD,KAAKmiR,QAASniR,KAAKmiR,QAAQvqR,OAAS,GAAIyoR,QAASrgR,KAAK4iR,YAEvD,MAEC5iR,KAAKwB,OAAO6+Q,QAASrgR,KAAK4iR,aAM3B,OAFA5iR,KAAKkiR,YAAa,EAEXliR,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,WAEC,GAAKuB,KAAKmiR,QAAQvqR,OAAS,EAAI,CAE9BoI,KAAKwB,OAAOglF,WAAYxmF,KAAKmiR,QAAS,IAEtC,IAAM,IAAIzlR,EAAI,EAAGmK,EAAI7G,KAAKmiR,QAAQvqR,OAAQ8E,EAAImK,EAAGnK,IAEhDsD,KAAKmiR,QAASzlR,EAAI,GAAI8pF,WAAYxmF,KAAKmiR,QAASzlR,IAIjDsD,KAAKmiR,QAASniR,KAAKmiR,QAAQvqR,OAAS,GAAI4uF,WAAYxmF,KAAK4iR,YAE1D,MAEC5iR,KAAKwB,OAAOglF,WAAYxmF,KAAK4iR,aAM9B,OAFA5iR,KAAKkiR,YAAa,EAEXliR,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,WAEC,OAAOuB,KAAKmiR,OAEb,GAAC,CAAA3/Q,IAAA,aAAA/D,MAED,SAAYA,GAgBX,OAdOA,IAAQA,EAAQ,KAEE,IAApBuB,KAAKkiR,YAETliR,KAAKwmF,aACLxmF,KAAKmiR,QAAU1jR,EAAMmS,QACrB5Q,KAAKqgR,WAILrgR,KAAKmiR,QAAU1jR,EAAMmS,QAIf5Q,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWA,GAIV,GAFAuB,KAAK2hR,OAASljR,OAEc2L,IAAvBpK,KAAKwB,OAAOmgR,OAQjB,OANwB,IAAnB3hR,KAAKutE,WAETvtE,KAAKwB,OAAOmgR,OAAOnB,gBAAiBxgR,KAAK2hR,OAAQ3hR,KAAKT,QAAQ42E,YAAa,KAIrEn2E,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAK2hR,MAEb,GAAC,CAAAn/Q,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAK6iR,aAAc,EAE3B,GAAC,CAAArgR,IAAA,YAAA/D,MAED,SAAWqD,GAEV,OAAO9B,KAAK8iR,WAAYhhR,EAAS,CAAEA,GAAW,GAE/C,GAAC,CAAAU,IAAA,kBAAA/D,MAED,SAAiBA,GAEhB,IAAiC,IAA5BuB,KAAK8hR,mBAeV,OARA9hR,KAAK0tE,aAAejvE,GAEI,IAAnBuB,KAAKutE,WAETvtE,KAAKwB,OAAOksE,aAAa8yM,gBAAiBxgR,KAAK0tE,aAAc1tE,KAAKT,QAAQ42E,YAAa,KAIjFn2E,KAbN+T,QAAQk/C,KAAM,mDAehB,GAAC,CAAAzwD,IAAA,kBAAA/D,MAED,WAEC,OAAOuB,KAAK0tE,YAEb,GAAC,CAAAlrE,IAAA,UAAA/D,MAED,WAECuB,KAAKutE,WAAY,CAElB,GAAC,CAAA/qE,IAAA,UAAA/D,MAED,WAEC,OAAiC,IAA5BuB,KAAK8hR,oBAET/tQ,QAAQk/C,KAAM,qDACP,GAIDjzD,KAAKiuE,IAEb,GAAC,CAAAzrE,IAAA,UAAA/D,MAED,SAASA,GAER,IAAiC,IAA5BuB,KAAK8hR,mBAeV,OARA9hR,KAAKiuE,KAAOxvE,GAEY,IAAnBuB,KAAKutE,YAETvtE,KAAKwB,OAAOysE,KAAOjuE,KAAKiuE,MAIlBjuE,KAbN+T,QAAQk/C,KAAM,mDAehB,GAAC,CAAAzwD,IAAA,eAAA/D,MAED,SAAcA,GAIb,OAFAuB,KAAK4hR,UAAYnjR,EAEVuB,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYA,GAIX,OAFAuB,KAAK6hR,QAAUpjR,EAERuB,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAKmgR,KAAKA,KAAK1hR,KAEvB,GAAC,CAAA+D,IAAA,YAAA/D,MAED,SAAWA,GAIV,OAFAuB,KAAKmgR,KAAKA,KAAKK,gBAAiB/hR,EAAOuB,KAAKT,QAAQ42E,YAAa,KAE1Dn2E,IAER,KAACqhR,CAAA,CAhYS,CAAS7rG,IAoYdutG,GAA0B,IAAIj8G,GAC9Bk8G,GAA4B,IAAIjgH,GAChCkgH,GAAuB,IAAIn8G,GAC3Bo8G,GAA6B,IAAIp8G,GAEjCq8G,GAAe,SAAAC,GAAApnQ,EAAAmnQ,EAAAC,GAAA,IAAAC,EAAA1oQ,EAAAwoQ,GAEpB,SAAAA,EAAal1O,GAAW,IAAAq1O,EAMU,OANV74Q,EAAA,KAAA04Q,IAEvBG,EAAAD,EAAAxmR,KAAA,KAAOoxC,IAEFs1O,OAASD,EAAK/jR,QAAQikR,eAC3BF,EAAKC,OAAOE,aAAe,OAC3BH,EAAKC,OAAOlD,QAASiD,EAAKnD,MAAOmD,CAElC,CAkHC,OAlHA/5Q,EAAA45Q,EAAA,EAAA3gR,IAAA,aAAA/D,MAED,WAECyoI,GAAA5rH,EAAA6nQ,EAAAvmR,WAAA,mBAAAC,KAAA,MAEAmD,KAAKujR,OAAO/8L,WAAYxmF,KAAKmgR,KAE9B,GAAC,CAAA39Q,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAKujR,MAEb,GAAC,CAAA/gR,IAAA,iBAAA/D,MAED,WAEC,OAAOuB,KAAKujR,OAAOG,WAEpB,GAAC,CAAAlhR,IAAA,iBAAA/D,MAED,SAAgBA,GAIf,OAFAuB,KAAKujR,OAAOG,YAAcjlR,EAEnBuB,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,WAEC,OAAOuB,KAAKujR,OAAOI,aAEpB,GAAC,CAAAnhR,IAAA,mBAAA/D,MAED,SAAkBA,GAIjB,OAFAuB,KAAKujR,OAAOI,cAAgBllR,EAErBuB,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,WAEC,OAAOuB,KAAKujR,OAAOK,aAEpB,GAAC,CAAAphR,IAAA,mBAAA/D,MAED,SAAkBA,GAIjB,OAFAuB,KAAKujR,OAAOK,cAAgBnlR,EAErBuB,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,WAEC,OAAOuB,KAAKujR,OAAOM,WAEpB,GAAC,CAAArhR,IAAA,iBAAA/D,MAED,SAAgBA,GAIf,OAFAuB,KAAKujR,OAAOM,YAAcplR,EAEnBuB,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBqlR,EAAgBC,EAAgBC,GAMnD,OAJAhkR,KAAKujR,OAAOO,eAAiBA,EAC7B9jR,KAAKujR,OAAOQ,eAAiBA,EAC7B/jR,KAAKujR,OAAOS,cAAgBA,EAErBhkR,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmB64K,GAIlB,GAFApwC,GAAA5rH,EAAA6nQ,EAAAvmR,WAAA,0BAAAC,KAAA,KAAyBy6K,IAEQ,IAA5Bt3K,KAAK8hR,qBAAkD,IAAnB9hR,KAAKutE,UAA9C,CAEAvtE,KAAKioK,YAAYsO,UAAWwsG,GAAWC,GAAaC,IAEpDC,GAAaj0P,IAAK,EAAG,EAAG,GAAI+3I,gBAAiBg8G,IAE7C,IAAMO,EAASvjR,KAAKujR,OAEpB,GAAKA,EAAO9C,UAAY,CAIvB,IAAM/V,EAAU1qQ,KAAKT,QAAQ42E,YAAcn2E,KAAKiuC,SAASqyO,UAEzDiD,EAAO9C,UAAUC,wBAAyBqC,GAAU7mR,EAAGwuQ,GACvD6Y,EAAO5C,UAAUD,wBAAyBqC,GAAU17Q,EAAGqjQ,GACvD6Y,EAAO3C,UAAUF,wBAAyBqC,GAAUz7Q,EAAGojQ,GACvD6Y,EAAOU,aAAavD,wBAAyBwC,GAAahnR,EAAGwuQ,GAC7D6Y,EAAOW,aAAaxD,wBAAyBwC,GAAa77Q,EAAGqjQ,GAC7D6Y,EAAOY,aAAazD,wBAAyBwC,GAAa57Q,EAAGojQ,EAE9D,MAEC6Y,EAAOpC,YAAa4B,GAAU7mR,EAAG6mR,GAAU17Q,EAAG07Q,GAAUz7Q,GACxDi8Q,EAAOnC,eAAgB8B,GAAahnR,EAAGgnR,GAAa77Q,EAAG67Q,GAAa57Q,EAxBK,CA4B3E,KAAC67Q,CAAA,CA5HmB,CAAS9B,IAgIxB+C,GAAa,WAElB,SAAAA,EAAaC,GAAwB,IAAjBC,EAAOrkR,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAIwK,EAAA,KAAA25Q,GAEjCpkR,KAAKukR,SAAWF,EAAM9kR,QAAQilR,iBAC9BxkR,KAAKukR,SAASD,QAAUA,EAExBtkR,KAAK0jC,KAAO,IAAI6xE,WAAYv1G,KAAKukR,SAASE,mBAE1CJ,EAAMzB,YAAYvC,QAASrgR,KAAKukR,SAEjC,CAwBC,OAxBAh7Q,EAAA66Q,EAAA,EAAA5hR,IAAA,mBAAA/D,MAGD,WAIC,OAFAuB,KAAKukR,SAASG,qBAAsB1kR,KAAK0jC,MAElC1jC,KAAK0jC,IAEb,GAAC,CAAAlhC,IAAA,sBAAA/D,MAED,WAKC,IAHA,IAAIA,EAAQ,EACNilC,EAAO1jC,KAAK2kR,mBAERjoR,EAAI,EAAGA,EAAIgnC,EAAK9rC,OAAQ8E,IAEjC+B,GAASilC,EAAMhnC,GAIhB,OAAO+B,EAAQilC,EAAK9rC,MAErB,KAACwsR,CAAA,CAnCiB,GAuCbQ,GAAa,WAElB,SAAAA,EAAaC,EAASnW,EAAU/J,GAK/B,IAAImgB,EACHC,EACAC,EAkBD,OAzB2Cv6Q,EAAA,KAAAm6Q,GAE3C5kR,KAAK6kR,QAAUA,EACf7kR,KAAK2kQ,UAAYA,EAsBR+J,GAER,IAAK,aACJoW,EAAc9kR,KAAKilR,OACnBF,EAAsB/kR,KAAKklR,eAC3BF,EAAchlR,KAAKmlR,+BAEnBnlR,KAAKm6J,OAAS,IAAIF,aAA0B,EAAZ0qG,GAChC3kQ,KAAKolR,WAAa,EAClB,MAED,IAAK,SACL,IAAK,OACJN,EAAc9kR,KAAKqlR,QAInBN,EAAsB/kR,KAAKqlR,QAE3BL,EAAchlR,KAAKslR,0BAEnBtlR,KAAKm6J,OAAS,IAAIx9J,MAAmB,EAAZgoQ,GACzB,MAED,QACCmgB,EAAc9kR,KAAKulR,MACnBR,EAAsB/kR,KAAKwlR,cAC3BR,EAAchlR,KAAKylR,4BAEnBzlR,KAAKm6J,OAAS,IAAIF,aAA0B,EAAZ0qG,GAIlC3kQ,KAAK0lR,iBAAmBZ,EACxB9kR,KAAK2lR,yBAA2BZ,EAChC/kR,KAAK4lR,aAAeZ,EACpBhlR,KAAK6lR,WAAa,EAClB7lR,KAAK8lR,UAAY,EAEjB9lR,KAAK+lR,iBAAmB,EACxB/lR,KAAKgmR,yBAA2B,EAEhChmR,KAAKimR,SAAW,EAChBjmR,KAAKkmR,eAAiB,CAEvB,CA8OC,OA5OD38Q,EAAAq7Q,EAAA,EAAApiR,IAAA,aAAA/D,MACA,SAAY0nR,EAAW/yE,GAKtB,IAAMj5C,EAASn6J,KAAKm6J,OACnBsvB,EAASzpL,KAAK2kQ,UACd56N,EAASo8O,EAAY18F,EAASA,EAE3B28F,EAAgBpmR,KAAK+lR,iBAEzB,GAAuB,IAAlBK,EAAsB,CAI1B,IAAM,IAAI1pR,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAEjCy9J,EAAQpwH,EAASrtC,GAAMy9J,EAAQz9J,GAIhC0pR,EAAgBhzE,CAEjB,KAAO,CAKN,IAAMizE,EAAMjzE,GADZgzE,GAAiBhzE,GAEjBpzM,KAAK0lR,iBAAkBvrH,EAAQpwH,EAAQ,EAAGs8O,EAAK58F,EAEhD,CAEAzpL,KAAK+lR,iBAAmBK,CAEzB,GAEA,CAAA5jR,IAAA,qBAAA/D,MACA,SAAoB20M,GAEnB,IAAMj5C,EAASn6J,KAAKm6J,OACnBsvB,EAASzpL,KAAK2kQ,UACd56N,EAAS0/I,EAASzpL,KAAK8lR,UAEe,IAAlC9lR,KAAKgmR,0BAIThmR,KAAK4lR,eAMN5lR,KAAK2lR,yBAA0BxrH,EAAQpwH,EAAQ,EAAGqpK,EAAQ3pB,GAC1DzpL,KAAKgmR,0BAA4B5yE,CAElC,GAEA,CAAA5wM,IAAA,QAAA/D,MACA,SAAO0nR,GAEN,IAAM18F,EAASzpL,KAAK2kQ,UACnBxqG,EAASn6J,KAAKm6J,OACdpwH,EAASo8O,EAAY18F,EAASA,EAE9B2pB,EAASpzM,KAAK+lR,iBACdO,EAAiBtmR,KAAKgmR,yBAEtBnB,EAAU7kR,KAAK6kR,QAKhB,GAHA7kR,KAAK+lR,iBAAmB,EACxB/lR,KAAKgmR,yBAA2B,EAE3B5yE,EAAS,EAAI,CAIjB,IAAMmzE,EAAsB98F,EAASzpL,KAAK6lR,WAE1C7lR,KAAK0lR,iBACJvrH,EAAQpwH,EAAQw8O,EAAqB,EAAInzE,EAAQ3pB,EAEnD,CAEK68F,EAAiB,GAIrBtmR,KAAK2lR,yBAA0BxrH,EAAQpwH,EAAQ/pC,KAAK8lR,UAAYr8F,EAAQ,EAAGA,GAI5E,IAAM,IAAI/sL,EAAI+sL,EAAQnjL,EAAImjL,EAASA,EAAQ/sL,IAAM4J,IAAM5J,EAEtD,GAAKy9J,EAAQz9J,KAAQy9J,EAAQz9J,EAAI+sL,GAAW,CAI3Co7F,EAAQ50P,SAAUkqI,EAAQpwH,GAC1B,KAED,CAIF,GAEA,CAAAvnC,IAAA,oBAAA/D,MACA,WAEC,IAAMomR,EAAU7kR,KAAK6kR,QAEf1qH,EAASn6J,KAAKm6J,OACnBsvB,EAASzpL,KAAK2kQ,UAEd4hB,EAAsB98F,EAASzpL,KAAK6lR,WAErChB,EAAQ70P,SAAUmqI,EAAQosH,GAG1B,IAAM,IAAI7pR,EAAI+sL,EAAQnjL,EAAIigR,EAAqB7pR,IAAM4J,IAAM5J,EAE1Dy9J,EAAQz9J,GAAMy9J,EAAQosH,EAAwB7pR,EAAI+sL,GAKnDzpL,KAAK4lR,eAEL5lR,KAAK+lR,iBAAmB,EACxB/lR,KAAKgmR,yBAA2B,CAEjC,GAEA,CAAAxjR,IAAA,uBAAA/D,MACA,WAEC,IAAM8nR,EAAuC,EAAjBvmR,KAAK2kQ,UACjC3kQ,KAAK6kR,QAAQ50P,SAAUjwB,KAAKm6J,OAAQosH,EAErC,GAAC,CAAA/jR,IAAA,8BAAA/D,MAED,WAKC,IAHA,IAAMo+F,EAAa78F,KAAK8lR,UAAY9lR,KAAK2kQ,UACnCx8J,EAAWtL,EAAa78F,KAAK2kQ,UAEzBjoQ,EAAImgG,EAAYngG,EAAIyrG,EAAUzrG,IAEvCsD,KAAKm6J,OAAQz9J,GAAM,CAIrB,GAAC,CAAA8F,IAAA,iCAAA/D,MAED,WAECuB,KAAKylR,8BACLzlR,KAAKm6J,OAAQn6J,KAAK8lR,UAAY9lR,KAAK2kQ,UAAY,GAAM,CAEtD,GAAC,CAAAniQ,IAAA,4BAAA/D,MAED,WAKC,IAHA,IAAMo+F,EAAa78F,KAAK6lR,WAAa7lR,KAAK2kQ,UACpC6hB,EAAcxmR,KAAK8lR,UAAY9lR,KAAK2kQ,UAEhCjoQ,EAAI,EAAGA,EAAIsD,KAAK2kQ,UAAWjoQ,IAEpCsD,KAAKm6J,OAAQqsH,EAAc9pR,GAAMsD,KAAKm6J,OAAQt9D,EAAangG,EAI7D,GAGA,CAAA8F,IAAA,UAAA/D,MAEA,SAAS07J,EAAQ0L,EAAWo+F,EAAW3sQ,EAAGmyL,GAEzC,GAAKnyL,GAAK,GAET,IAAM,IAAIoF,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAEjCy9J,EAAQ0L,EAAYnpK,GAAMy9J,EAAQ8pG,EAAYvnQ,EAMjD,GAAC,CAAA8F,IAAA,SAAA/D,MAED,SAAQ07J,EAAQ0L,EAAWo+F,EAAW3sQ,GAErCyrK,GAAWspG,UAAWlyG,EAAQ0L,EAAW1L,EAAQ0L,EAAW1L,EAAQ8pG,EAAW3sQ,EAEhF,GAAC,CAAAkL,IAAA,iBAAA/D,MAED,SAAgB07J,EAAQ0L,EAAWo+F,EAAW3sQ,EAAGmyL,GAEhD,IAAMg9F,EAAazmR,KAAKolR,WAAa37F,EAGrC1mB,GAAWsjG,wBAAyBlsG,EAAQssH,EAAYtsH,EAAQ0L,EAAW1L,EAAQ8pG,GAGnFlhG,GAAWspG,UAAWlyG,EAAQ0L,EAAW1L,EAAQ0L,EAAW1L,EAAQssH,EAAYnvR,EAEjF,GAAC,CAAAkL,IAAA,QAAA/D,MAED,SAAO07J,EAAQ0L,EAAWo+F,EAAW3sQ,EAAGmyL,GAIvC,IAFA,IAAMhuL,EAAI,EAAInE,EAEJoF,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAAI,CAErC,IAAMmT,EAAIg2J,EAAYnpK,EAEtBy9J,EAAQtqJ,GAAMsqJ,EAAQtqJ,GAAMpU,EAAI0+J,EAAQ8pG,EAAYvnQ,GAAMpF,CAE3D,CAED,GAAC,CAAAkL,IAAA,gBAAA/D,MAED,SAAe07J,EAAQ0L,EAAWo+F,EAAW3sQ,EAAGmyL,GAE/C,IAAM,IAAI/sL,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAAI,CAErC,IAAMmT,EAAIg2J,EAAYnpK,EAEtBy9J,EAAQtqJ,GAAMsqJ,EAAQtqJ,GAAMsqJ,EAAQ8pG,EAAYvnQ,GAAMpF,CAEvD,CAED,KAACstR,CAAA,CAtTiB,GA2Tb8B,GAAqB,gBACrBC,GAAc,IAAI3zN,OAAQ,IAAM0zN,GAAqB,IAAK,KAK1DE,GAAY,KAAOF,GAAqB,IACxCG,GAAiB,KAAOH,GAAmB/qR,QAAS,MAAO,IAAO,IAIlEmrR,GAAe,kBAAkBtlR,OAAO7F,QAAS,KAAMirR,IAGvDG,GAAU,WAAWvlR,OAAO7F,QAAS,OAAQkrR,IAI7CG,GAAY,4BAA4BxlR,OAAO7F,QAAS,KAAMirR,IAI9DK,GAAc,uBAAuBzlR,OAAO7F,QAAS,KAAMirR,IAE3DM,GAAW,IAAIl0N,OAClB,IACA8zN,GACAC,GACAC,GACAC,GACA,KAGGE,GAAwB,CAAE,WAAY,YAAa,SAEnDC,GAAS,WAEd,SAAAA,EAAaC,EAAanwL,EAAMowL,GAAqB78Q,EAAA,KAAA28Q,GAEpD,IAAMjwL,EAAamwL,GAAsBC,GAAgBC,eAAgBtwL,GAEzEl3F,KAAKynR,aAAeJ,EACpBrnR,KAAK0nR,UAAYL,EAAYM,WAAYzwL,EAAMC,EAEhD,CAgDC,OAhDA5tF,EAAA69Q,EAAA,EAAA5kR,IAAA,WAAA/D,MAED,SAAUsE,EAAOgnC,GAEhB/pC,KAAK4T,OAEL,IAAMg0Q,EAAkB5nR,KAAKynR,aAAaI,gBACzChD,EAAU7kR,KAAK0nR,UAAWE,QAGVx9Q,IAAZy6Q,GAAwBA,EAAQ70P,SAAUjtB,EAAOgnC,EAEvD,GAAC,CAAAvnC,IAAA,WAAA/D,MAED,SAAUsE,EAAOgnC,GAIhB,IAFA,IAAM+9O,EAAW9nR,KAAK0nR,UAEZhrR,EAAIsD,KAAKynR,aAAaI,gBAAiB9gR,EAAI+gR,EAASlwR,OAAQ8E,IAAMqK,IAAMrK,EAEjForR,EAAUprR,GAAIuzB,SAAUltB,EAAOgnC,EAIjC,GAAC,CAAAvnC,IAAA,OAAA/D,MAED,WAIC,IAFA,IAAMqpR,EAAW9nR,KAAK0nR,UAEZhrR,EAAIsD,KAAKynR,aAAaI,gBAAiB9gR,EAAI+gR,EAASlwR,OAAQ8E,IAAMqK,IAAMrK,EAEjForR,EAAUprR,GAAIkX,MAIhB,GAAC,CAAApR,IAAA,SAAA/D,MAED,WAIC,IAFA,IAAMqpR,EAAW9nR,KAAK0nR,UAEZhrR,EAAIsD,KAAKynR,aAAaI,gBAAiB9gR,EAAI+gR,EAASlwR,OAAQ8E,IAAMqK,IAAMrK,EAEjForR,EAAUprR,GAAIqrR,QAIhB,KAACX,CAAA,CAzDa,GAkETG,GAAe,WAEpB,SAAAA,EAAa/9M,EAAU0tB,EAAMC,GAAa1sF,EAAA,KAAA88Q,GAEzCvnR,KAAKk3F,KAAOA,EACZl3F,KAAKm3F,WAAaA,GAAcowL,EAAgBC,eAAgBtwL,GAEhEl3F,KAAKyZ,KAAO8tQ,EAAgBS,SAAUx+M,EAAUxpE,KAAKm3F,WAAWvnE,WAAc45C,EAE9ExpE,KAAKwpE,SAAWA,EAGhBxpE,KAAKgwB,SAAWhwB,KAAKioR,kBACrBjoR,KAAKiwB,SAAWjwB,KAAKkoR,iBAEtB,CAwIC,OAxIA3+Q,EAAAg+Q,EAAA,EAAA/kR,IAAA,wBAAA/D,MA2ID,WAAyB,GAAC,CAAA+D,IAAA,wBAAA/D,MAC1B,WAAyB,GAEzB,CAAA+D,IAAA,mBAAA/D,MAEA,SAAkB07J,EAAQpwH,GAEzBowH,EAAQpwH,GAAW/pC,KAAKmoR,aAAcnoR,KAAK8sB,aAE5C,GAAC,CAAAtqB,IAAA,kBAAA/D,MAED,SAAiB07J,EAAQpwH,GAIxB,IAFA,IAAMvoC,EAASxB,KAAKooR,iBAEV1rR,EAAI,EAAGqK,EAAIvF,EAAO5J,OAAQ8E,IAAMqK,IAAMrK,EAE/Cy9J,EAAQpwH,KAAcvoC,EAAQ9E,EAIhC,GAAC,CAAA8F,IAAA,yBAAA/D,MAED,SAAwB07J,EAAQpwH,GAE/BowH,EAAQpwH,GAAW/pC,KAAKooR,iBAAkBpoR,KAAKqoR,cAEhD,GAAC,CAAA7lR,IAAA,oBAAA/D,MAED,SAAmB07J,EAAQpwH,GAE1B/pC,KAAKooR,iBAAiB7gM,QAAS4yE,EAAQpwH,EAExC,GAEA,CAAAvnC,IAAA,mBAAA/D,MAEA,SAAkB07J,EAAQpwH,GAEzB/pC,KAAKmoR,aAAcnoR,KAAK8sB,cAAiBqtI,EAAQpwH,EAElD,GAAC,CAAAvnC,IAAA,kCAAA/D,MAED,SAAiC07J,EAAQpwH,GAExC/pC,KAAKmoR,aAAcnoR,KAAK8sB,cAAiBqtI,EAAQpwH,GACjD/pC,KAAKmoR,aAAa7oH,aAAc,CAEjC,GAAC,CAAA98J,IAAA,6CAAA/D,MAED,SAA4C07J,EAAQpwH,GAEnD/pC,KAAKmoR,aAAcnoR,KAAK8sB,cAAiBqtI,EAAQpwH,GACjD/pC,KAAKmoR,aAAapyG,wBAAyB,CAE5C,GAEA,CAAAvzK,IAAA,kBAAA/D,MAEA,SAAiB07J,EAAQpwH,GAIxB,IAFA,IAAMkzD,EAAOj9F,KAAKooR,iBAER1rR,EAAI,EAAGqK,EAAIk2F,EAAKrlG,OAAQ8E,IAAMqK,IAAMrK,EAE7CugG,EAAMvgG,GAAMy9J,EAAQpwH,IAItB,GAAC,CAAAvnC,IAAA,iCAAA/D,MAED,SAAgC07J,EAAQpwH,GAIvC,IAFA,IAAMkzD,EAAOj9F,KAAKooR,iBAER1rR,EAAI,EAAGqK,EAAIk2F,EAAKrlG,OAAQ8E,IAAMqK,IAAMrK,EAE7CugG,EAAMvgG,GAAMy9J,EAAQpwH,KAIrB/pC,KAAKmoR,aAAa7oH,aAAc,CAEjC,GAAC,CAAA98J,IAAA,4CAAA/D,MAED,SAA2C07J,EAAQpwH,GAIlD,IAFA,IAAMkzD,EAAOj9F,KAAKooR,iBAER1rR,EAAI,EAAGqK,EAAIk2F,EAAKrlG,OAAQ8E,IAAMqK,IAAMrK,EAE7CugG,EAAMvgG,GAAMy9J,EAAQpwH,KAIrB/pC,KAAKmoR,aAAapyG,wBAAyB,CAE5C,GAEA,CAAAvzK,IAAA,yBAAA/D,MAEA,SAAwB07J,EAAQpwH,GAE/B/pC,KAAKooR,iBAAkBpoR,KAAKqoR,eAAkBluH,EAAQpwH,EAEvD,GAAC,CAAAvnC,IAAA,wCAAA/D,MAED,SAAuC07J,EAAQpwH,GAE9C/pC,KAAKooR,iBAAkBpoR,KAAKqoR,eAAkBluH,EAAQpwH,GACtD/pC,KAAKmoR,aAAa7oH,aAAc,CAEjC,GAAC,CAAA98J,IAAA,mDAAA/D,MAED,SAAkD07J,EAAQpwH,GAEzD/pC,KAAKooR,iBAAkBpoR,KAAKqoR,eAAkBluH,EAAQpwH,GACtD/pC,KAAKmoR,aAAapyG,wBAAyB,CAE5C,GAEA,CAAAvzK,IAAA,sBAAA/D,MAEA,SAAqB07J,EAAQpwH,GAE5B/pC,KAAKooR,iBAAiBzuH,UAAWQ,EAAQpwH,EAE1C,GAAC,CAAAvnC,IAAA,qCAAA/D,MAED,SAAoC07J,EAAQpwH,GAE3C/pC,KAAKooR,iBAAiBzuH,UAAWQ,EAAQpwH,GACzC/pC,KAAKmoR,aAAa7oH,aAAc,CAEjC,GAAC,CAAA98J,IAAA,gDAAA/D,MAED,SAA+C07J,EAAQpwH,GAEtD/pC,KAAKooR,iBAAiBzuH,UAAWQ,EAAQpwH,GACzC/pC,KAAKmoR,aAAapyG,wBAAyB,CAE5C,GAAC,CAAAvzK,IAAA,oBAAA/D,MAED,SAAmBq4G,EAAa/sE,GAE/B/pC,KAAK4T,OACL5T,KAAKgwB,SAAU8mF,EAAa/sE,EAE7B,GAAC,CAAAvnC,IAAA,oBAAA/D,MAED,SAAmB6pR,EAAav+O,GAE/B/pC,KAAK4T,OACL5T,KAAKiwB,SAAUq4P,EAAav+O,EAE7B,GAEA,CAAAvnC,IAAA,OAAA/D,MACA,WAEC,IAAI0pR,EAAenoR,KAAKyZ,KAClB09E,EAAan3F,KAAKm3F,WAElBoxL,EAAapxL,EAAWoxL,WACxBz7P,EAAeqqE,EAAWrqE,aAC5Bu7P,EAAgBlxL,EAAWkxL,cAe/B,GAbOF,IAENA,EAAeZ,EAAgBS,SAAUhoR,KAAKwpE,SAAU2tB,EAAWvnE,WAAc5vB,KAAKwpE,SAEtFxpE,KAAKyZ,KAAO0uQ,GAKbnoR,KAAKgwB,SAAWhwB,KAAKwoR,sBACrBxoR,KAAKiwB,SAAWjwB,KAAKyoR,sBAGdN,EAAP,CAOA,GAAKI,EAAa,CAEjB,IAAIG,EAAcvxL,EAAWuxL,YAG7B,OAASH,GAER,IAAK,YAEJ,IAAOJ,EAAatvG,SAGnB,YADA9kK,QAAQwN,MAAO,oFAAqFvhB,MAKrG,IAAOmoR,EAAatvG,SAASlB,UAG5B,YADA5jK,QAAQwN,MAAO,8GAA+GvhB,MAK/HmoR,EAAeA,EAAatvG,SAASlB,UAErC,MAED,IAAK,QAEJ,IAAOwwG,EAAavvG,SAGnB,YADA7kK,QAAQwN,MAAO,iFAAkFvhB,MAQlGmoR,EAAeA,EAAavvG,SAASgvC,MAGrC,IAAM,IAAIlrN,EAAI,EAAGA,EAAIyrR,EAAavwR,OAAQ8E,IAEzC,GAAKyrR,EAAczrR,GAAIvD,OAASuvR,EAAc,CAE7CA,EAAchsR,EACd,KAED,CAID,MAED,QAEC,QAAoC0N,IAA/B+9Q,EAAcI,GAGlB,YADAx0Q,QAAQwN,MAAO,uEAAwEvhB,MAKxFmoR,EAAeA,EAAcI,GAK/B,QAAqBn+Q,IAAhBs+Q,EAA4B,CAEhC,QAAqCt+Q,IAAhC+9Q,EAAcO,GAGlB,YADA30Q,QAAQwN,MAAO,wFAAyFvhB,KAAMmoR,GAK/GA,EAAeA,EAAcO,EAE9B,CAED,CAGA,IAAMC,EAAeR,EAAcr7P,GAEnC,QAAsB1iB,IAAjBu+Q,EAAL,CAWA,IAAIC,EAAa5oR,KAAK6oR,WAAWC,KAEjC9oR,KAAKmoR,aAAeA,OAEc/9Q,IAA7B+9Q,EAAa7oH,YAEjBspH,EAAa5oR,KAAK6oR,WAAWE,iBAEsB3+Q,IAAxC+9Q,EAAapyG,yBAExB6yG,EAAa5oR,KAAK6oR,WAAWG,wBAK9B,IAAIC,EAAcjpR,KAAKkpR,YAAYC,OAEnC,QAAuB/+Q,IAAlBi+Q,EAA8B,CAIlC,GAAsB,0BAAjBv7P,EAA2C,CAK/C,IAAOq7P,EAAar9G,SAGnB,YADA/2J,QAAQwN,MAAO,sGAAuGvhB,MAKvH,IAAKmoR,EAAar9G,SAASme,iBAmB1B,YADAl1K,QAAQwN,MAAO,oHAAqHvhB,MAhBpI,IAAOmoR,EAAar9G,SAASgb,gBAG5B,YADA/xK,QAAQwN,MAAO,sHAAuHvhB,WAK1EoK,IAAxD+9Q,EAAa38F,sBAAuB68F,KAExCA,EAAgBF,EAAa38F,sBAAuB68F,GAYvD,CAEAY,EAAcjpR,KAAKkpR,YAAYE,aAE/BppR,KAAKooR,iBAAmBO,EACxB3oR,KAAKqoR,cAAgBA,CAEtB,WAAuCj+Q,IAA3Bu+Q,EAAahvH,gBAAoDvvJ,IAAzBu+Q,EAAaphM,SAIhE0hM,EAAcjpR,KAAKkpR,YAAYG,eAE/BrpR,KAAKooR,iBAAmBO,GAEbhsR,MAAM0E,QAASsnR,IAE1BM,EAAcjpR,KAAKkpR,YAAYI,YAE/BtpR,KAAKooR,iBAAmBO,GAIxB3oR,KAAK8sB,aAAeA,EAKrB9sB,KAAKgwB,SAAWhwB,KAAKupR,oBAAqBN,GAC1CjpR,KAAKiwB,SAAWjwB,KAAKwpR,iCAAkCP,GAAeL,EAxFtE,KARA,CAEC,IAAMh5P,EAAWunE,EAAWvnE,SAE5B7b,QAAQwN,MAAO,+DAAiEqO,EAC/E,IAAM9C,EAAe,wBAA0Bq7P,EAGjD,CAjGA,MAHCp0Q,QAAQwN,MAAO,2DAA6DvhB,KAAKk3F,KAAO,wBA8L1F,GAAC,CAAA10F,IAAA,SAAA/D,MAED,WAECuB,KAAKyZ,KAAO,KAIZzZ,KAAKgwB,SAAWhwB,KAAKioR,kBACrBjoR,KAAKiwB,SAAWjwB,KAAKkoR,iBAEtB,IAAC,EAAA1lR,IAAA,SAAA/D,MAvgBD,SAAeyU,EAAMgkF,EAAMC,GAE1B,OAASjkF,GAAQA,EAAKu2Q,uBAMd,IAAIlC,EAAgBH,UAAWl0Q,EAAMgkF,EAAMC,GAJ3C,IAAIowL,EAAiBr0Q,EAAMgkF,EAAMC,EAQ1C,GAEA,CAAA30F,IAAA,mBAAA/D,MAOA,SAAyBtF,GAExB,OAAOA,EAAKwC,QAAS,MAAO,KAAMA,QAASgrR,GAAa,GAEzD,GAAC,CAAAnkR,IAAA,iBAAA/D,MAED,SAAuBuvQ,GAEtB,IAAMniL,EAAUq7L,GAASlxQ,KAAMg4P,GAE/B,GAAiB,OAAZniL,EAEJ,MAAM,IAAI/tF,MAAO,4CAA8CkwQ,GAIhE,IAAM0b,EAAU,CAEf95P,SAAUi8D,EAAS,GACnB08L,WAAY18L,EAAS,GACrB68L,YAAa78L,EAAS,GACtB/+D,aAAc++D,EAAS,GACvBw8L,cAAex8L,EAAS,IAGnB89L,EAAUD,EAAQ95P,UAAY85P,EAAQ95P,SAASi/E,YAAa,KAElE,QAAiBzkG,IAAZu/Q,IAAuC,IAAdA,EAAkB,CAE/C,IAAMpB,EAAamB,EAAQ95P,SAAS8F,UAAWi0P,EAAU,IAMF,IAAlDxC,GAAsB36Q,QAAS+7Q,KAEnCmB,EAAQ95P,SAAW85P,EAAQ95P,SAAS8F,UAAW,EAAGi0P,GAClDD,EAAQnB,WAAaA,EAIvB,CAEA,GAA8B,OAAzBmB,EAAQ58P,cAAyD,IAAhC48P,EAAQ58P,aAAal1B,OAE1D,MAAM,IAAIkG,MAAO,+DAAiEkwQ,GAInF,OAAO0b,CAER,GAAC,CAAAlnR,IAAA,WAAA/D,MAED,SAAiByU,EAAM0c,GAEtB,QAAkBxlB,IAAbwlB,GAAuC,KAAbA,GAAgC,MAAbA,IAAmC,IAAfA,GAAoBA,IAAa1c,EAAK/Z,MAAQy2B,IAAa1c,EAAK2oG,KAErI,OAAO3oG,EAKR,GAAKA,EAAK0lK,SAAW,CAEpB,IAAM4jE,EAAOtpO,EAAK0lK,SAASgxG,cAAeh6P,GAE1C,QAAcxlB,IAAToyO,EAEJ,OAAOA,CAIT,CAGA,GAAKtpO,EAAK0K,SAAW,CAEpB,IAsBMisQ,EAtBoB,SAApBC,EAA+BlsQ,GAEpC,IAAM,IAAIlhB,EAAI,EAAGA,EAAIkhB,EAAShmB,OAAQ8E,IAAO,CAE5C,IAAMqtR,EAAYnsQ,EAAUlhB,GAE5B,GAAKqtR,EAAU5wR,OAASy2B,GAAYm6P,EAAUluK,OAASjsF,EAEtD,OAAOm6P,EAIR,IAAMjyR,EAASgyR,EAAmBC,EAAUnsQ,UAE5C,GAAK9lB,EAAS,OAAOA,CAEtB,CAEA,OAAO,IAER,CAEoBgyR,CAAmB52Q,EAAK0K,UAE5C,GAAKisQ,EAEJ,OAAOA,CAIT,CAEA,OAAO,IAER,KAACtC,CAAA,CAvJmB,GA6hBrBA,GAAgBH,UAAYA,GAE5BG,GAAgB3qR,UAAUssR,YAAc,CACvCC,OAAQ,EACRG,YAAa,EACbF,aAAc,EACdC,eAAgB,GAGjB9B,GAAgB3qR,UAAUisR,WAAa,CACtCC,KAAM,EACNC,YAAa,EACbC,uBAAwB,GAGzBzB,GAAgB3qR,UAAU2sR,oBAAsB,CAE/ChC,GAAgB3qR,UAAUotR,iBAC1BzC,GAAgB3qR,UAAUqtR,gBAC1B1C,GAAgB3qR,UAAUstR,uBAC1B3C,GAAgB3qR,UAAUutR,mBAI3B5C,GAAgB3qR,UAAU4sR,iCAAmC,CAE5D,CAECjC,GAAgB3qR,UAAUwtR,iBAC1B7C,GAAgB3qR,UAAUytR,gCAC1B9C,GAAgB3qR,UAAU0tR,4CAExB,CAIF/C,GAAgB3qR,UAAU2tR,gBAC1BhD,GAAgB3qR,UAAU4tR,+BAC1BjD,GAAgB3qR,UAAU6tR,2CAExB,CAGFlD,GAAgB3qR,UAAU8tR,uBAC1BnD,GAAgB3qR,UAAU+tR,sCAC1BpD,GAAgB3qR,UAAUguR,kDAExB,CAGFrD,GAAgB3qR,UAAUiuR,oBAC1BtD,GAAgB3qR,UAAUkuR,mCAC1BvD,GAAgB3qR,UAAUmuR,gDAM5B,IA6BMC,GAAoB,WAEzB,SAAAA,IAAcvgR,EAAA,KAAAugR,GAEbhrR,KAAK67G,KAAOg2C,KAGZ7xJ,KAAK6uN,SAAWlyN,MAAMC,UAAUgU,MAAM/T,KAAMoD,WAE5CD,KAAK6nR,gBAAkB,EAGvB,IAAM1gG,EAAU,CAAC,EACjBnnL,KAAKirR,eAAiB9jG,EAEtB,IAAM,IAAIzqL,EAAI,EAAGqK,EAAI9G,UAAUrI,OAAQ8E,IAAMqK,IAAMrK,EAElDyqL,EAASlnL,UAAWvD,GAAIm/G,MAASn/G,EAIlCsD,KAAKkrR,OAAS,GACdlrR,KAAKmrR,aAAe,GACpBnrR,KAAK0nR,UAAY,GACjB1nR,KAAKorR,uBAAyB,CAAC,EAE/B,IAAMp+F,EAAQhtL,KAEdA,KAAKqrR,MAAQ,CAEZ3mF,QAAS,CACR,SAAI9zD,GAEH,OAAOo8C,EAAM6hC,SAASj3N,MAEvB,EACA,SAAI0zR,GAEH,OAAOtrR,KAAK4wI,MAAQo8C,EAAM66F,eAE3B,GAED,qBAAI0D,GAEH,OAAOv+F,EAAM06F,UAAU9vR,MAExB,EAIF,CA0SC,OA1SA2R,EAAAyhR,EAAA,EAAAxoR,IAAA,MAAA/D,MAED,WAaC,IAXA,IAAMimM,EAAU1kM,KAAK6uN,SACpB28D,EAAgBxrR,KAAKirR,eACrBzsL,EAAQx+F,KAAKkrR,OACbO,EAAczrR,KAAKmrR,aACnBrD,EAAW9nR,KAAK0nR,UAChBgE,EAAY5D,EAASlwR,OAElB+zR,OAAcvhR,EACjBwhR,EAAWlnF,EAAQ9sM,OACnBi0R,EAAiB7rR,KAAK6nR,gBAEbnrR,EAAI,EAAGqK,EAAI9G,UAAUrI,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEtD,IAAMyF,EAASlC,UAAWvD,GACzBm/G,EAAO15G,EAAO05G,KACXjtG,EAAQ48Q,EAAe3vK,GAE3B,QAAezxG,IAAVwE,EAAsB,CAI1BA,EAAQg9Q,IACRJ,EAAe3vK,GAASjtG,EACxB81L,EAAQ5nM,KAAMqF,GAId,IAAM,IAAI0N,EAAI,EAAG/I,EAAI4kR,EAAW77Q,IAAM/I,IAAM+I,EAE3Ci4Q,EAAUj4Q,GAAI/S,KAAM,IAAIyqR,GAAiBplR,EAAQq8F,EAAO3uF,GAAK47Q,EAAa57Q,IAI5E,MAAO,GAAKjB,EAAQi9Q,EAAiB,CAEpCF,EAAcjnF,EAAS91L,GAIvB,IAAMk9Q,IAAsBD,EAC3BE,EAAmBrnF,EAASonF,GAE7BN,EAAeO,EAAiBlwK,MAASjtG,EACzC81L,EAAS91L,GAAUm9Q,EAEnBP,EAAe3vK,GAASiwK,EACxBpnF,EAASonF,GAAqB3pR,EAI9B,IAAM,IAAI0N,EAAI,EAAG/I,EAAI4kR,EAAW77Q,IAAM/I,IAAM+I,EAAI,CAE/C,IAAMm8Q,EAAkBlE,EAAUj4Q,GACjCo8Q,EAAaD,EAAiBF,GAE3BjH,EAAUmH,EAAiBp9Q,GAE/Bo9Q,EAAiBp9Q,GAAUq9Q,OAEV7hR,IAAZy6Q,IAMJA,EAAU,IAAI0C,GAAiBplR,EAAQq8F,EAAO3uF,GAAK47Q,EAAa57Q,KAIjEm8Q,EAAiBF,GAAqBjH,CAEvC,CAED,MAAYngF,EAAS91L,KAAY+8Q,GAEhC53Q,QAAQwN,MAAO,qJAKjB,CAEAvhB,KAAK6nR,gBAAkBgE,CAExB,GAAC,CAAArpR,IAAA,SAAA/D,MAED,WASC,IAPA,IAAMimM,EAAU1kM,KAAK6uN,SACpB28D,EAAgBxrR,KAAKirR,eACrBnD,EAAW9nR,KAAK0nR,UAChBgE,EAAY5D,EAASlwR,OAElBi0R,EAAiB7rR,KAAK6nR,gBAEhBnrR,EAAI,EAAGqK,EAAI9G,UAAUrI,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEtD,IAAMyF,EAASlC,UAAWvD,GACzBm/G,EAAO15G,EAAO05G,KACdjtG,EAAQ48Q,EAAe3vK,GAExB,QAAezxG,IAAVwE,GAAuBA,GAASi9Q,EAAiB,CAIrD,IAAMK,EAAkBL,IACvBM,EAAoBznF,EAASwnF,GAE9BV,EAAeW,EAAkBtwK,MAASjtG,EAC1C81L,EAAS91L,GAAUu9Q,EAEnBX,EAAe3vK,GAASqwK,EACxBxnF,EAASwnF,GAAoB/pR,EAI7B,IAAM,IAAI0N,EAAI,EAAG/I,EAAI4kR,EAAW77Q,IAAM/I,IAAM+I,EAAI,CAE/C,IAAMm8Q,EAAkBlE,EAAUj4Q,GACjCu8Q,EAAcJ,EAAiBE,GAC/BrH,EAAUmH,EAAiBp9Q,GAE5Bo9Q,EAAiBp9Q,GAAUw9Q,EAC3BJ,EAAiBE,GAAoBrH,CAEtC,CAED,CAED,CAEA7kR,KAAK6nR,gBAAkBgE,CAExB,GAEA,CAAArpR,IAAA,UAAA/D,MACA,WAUC,IARA,IAAMimM,EAAU1kM,KAAK6uN,SACpB28D,EAAgBxrR,KAAKirR,eACrBnD,EAAW9nR,KAAK0nR,UAChBgE,EAAY5D,EAASlwR,OAElBi0R,EAAiB7rR,KAAK6nR,gBACzB+D,EAAWlnF,EAAQ9sM,OAEV8E,EAAI,EAAGqK,EAAI9G,UAAUrI,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEtD,IACCm/G,EADc57G,UAAWvD,GACXm/G,KACdjtG,EAAQ48Q,EAAe3vK,GAExB,QAAezxG,IAAVwE,EAIJ,UAFO48Q,EAAe3vK,GAEjBjtG,EAAQi9Q,EAAiB,CAI7B,IAAMC,IAAsBD,EAC3BE,EAAmBrnF,EAASonF,GAC5B5uE,IAAe0uE,EACfS,EAAa3nF,EAASwY,GAGvBsuE,EAAeO,EAAiBlwK,MAASjtG,EACzC81L,EAAS91L,GAAUm9Q,EAGnBP,EAAea,EAAWxwK,MAASiwK,EACnCpnF,EAASonF,GAAqBO,EAC9B3nF,EAAQ1zI,MAIR,IAAM,IAAInhD,EAAI,EAAG/I,EAAI4kR,EAAW77Q,IAAM/I,IAAM+I,EAAI,CAE/C,IAAMm8Q,EAAkBlE,EAAUj4Q,GACjCo8Q,EAAaD,EAAiBF,GAC9BpsR,EAAOssR,EAAiB9uE,GAEzB8uE,EAAiBp9Q,GAAUq9Q,EAC3BD,EAAiBF,GAAqBpsR,EACtCssR,EAAgBh7N,KAEjB,CAED,KAAO,CAIN,IAAMksJ,IAAe0uE,EACpBS,EAAa3nF,EAASwY,GAElBA,EAAY,IAEhBsuE,EAAea,EAAWxwK,MAASjtG,GAIpC81L,EAAS91L,GAAUy9Q,EACnB3nF,EAAQ1zI,MAIR,IAAM,IAAInhD,EAAI,EAAG/I,EAAI4kR,EAAW77Q,IAAM/I,IAAM+I,EAAI,CAE/C,IAAMm8Q,EAAkBlE,EAAUj4Q,GAElCm8Q,EAAiBp9Q,GAAUo9Q,EAAiB9uE,GAC5C8uE,EAAgBh7N,KAEjB,CAED,CAIF,CAEAhxD,KAAK6nR,gBAAkBgE,CAExB,GAEA,CAAArpR,IAAA,aAAA/D,MAEA,SAAYy4F,EAAMC,GAKjB,IAAMm1L,EAAgBtsR,KAAKorR,uBACvBx8Q,EAAQ09Q,EAAep1L,GACrB4wL,EAAW9nR,KAAK0nR,UAEtB,QAAet9Q,IAAVwE,EAAsB,OAAOk5Q,EAAUl5Q,GAE5C,IAAM4vF,EAAQx+F,KAAKkrR,OAClBO,EAAczrR,KAAKmrR,aACnBzmF,EAAU1kM,KAAK6uN,SACf+8D,EAAWlnF,EAAQ9sM,OACnBi0R,EAAiB7rR,KAAK6nR,gBACtBmE,EAAkB,IAAIrvR,MAAOivR,GAE9Bh9Q,EAAQk5Q,EAASlwR,OAEjB00R,EAAep1L,GAAStoF,EAExB4vF,EAAM1hG,KAAMo6F,GACZu0L,EAAY3uR,KAAMq6F,GAClB2wL,EAAShrR,KAAMkvR,GAEf,IAAM,IAAItvR,EAAImvR,EAAgB9kR,EAAI29L,EAAQ9sM,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEjE,IAAMyF,EAASuiM,EAAShoM,GACxBsvR,EAAiBtvR,GAAM,IAAI6qR,GAAiBplR,EAAQ+0F,EAAMC,EAE3D,CAEA,OAAO60L,CAER,GAAC,CAAAxpR,IAAA,eAAA/D,MAED,SAAcy4F,GAKb,IAAMo1L,EAAgBtsR,KAAKorR,uBAC1Bx8Q,EAAQ09Q,EAAep1L,GAExB,QAAe9sF,IAAVwE,EAAsB,CAE1B,IAAM4vF,EAAQx+F,KAAKkrR,OAClBO,EAAczrR,KAAKmrR,aACnBrD,EAAW9nR,KAAK0nR,UAChB6E,EAAoBzE,EAASlwR,OAAS,EACtC40R,EAAe1E,EAAUyE,GAG1BD,EAFoBp1L,EAAMq1L,IAEU39Q,EAEpCk5Q,EAAUl5Q,GAAU49Q,EACpB1E,EAAS92N,MAETy6N,EAAa78Q,GAAU68Q,EAAac,GACpCd,EAAYz6N,MAEZwtC,EAAO5vF,GAAU4vF,EAAO+tL,GACxB/tL,EAAMxtC,KAEP,CAED,KAACg6N,CAAA,CA5VwB,GAgW1BA,GAAqBpuR,UAAU6sR,wBAAyB,EAAK,IAEvDgD,GAAe,WAEpB,SAAAA,EAAaC,EAAOhoB,GAAqD,IAA/CioB,EAAS1sR,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAMsmQ,EAAStmQ,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGykQ,EAAK6B,UAAS97P,EAAA,KAAAgiR,GAErEzsR,KAAK4sR,OAASF,EACd1sR,KAAK6sR,MAAQnoB,EACb1kQ,KAAK8sR,WAAaH,EAClB3sR,KAAKumQ,UAAYA,EAWjB,IATA,IAAM/rL,EAASkqL,EAAKlqL,OACnBuyM,EAAUvyM,EAAO5iF,OACjBo1R,EAAe,IAAIrwR,MAAOowR,GAErBE,EAAsB,CAC3B7kB,YAAa35G,GACb45G,UAAW55G,IAGF/xJ,EAAI,EAAGA,IAAMqwR,IAAYrwR,EAAI,CAEtC,IAAMspQ,EAAcxrL,EAAQ99E,GAAIipQ,kBAAmB,MACnDqnB,EAActwR,GAAMspQ,EACpBA,EAAYa,SAAWomB,CAExB,CAEAjtR,KAAKktR,qBAAuBD,EAE5BjtR,KAAKmtR,cAAgBH,EAGrBhtR,KAAKotR,kBAAoB,IAAIzwR,MAAOowR,GAEpC/sR,KAAKqtR,YAAc,KACnBrtR,KAAKstR,kBAAoB,KAEzBttR,KAAKutR,sBAAwB,KAC7BvtR,KAAKwtR,mBAAqB,KAE1BxtR,KAAKiuE,KAAOmgF,GACZpuJ,KAAKytR,YAAe,EAIpBztR,KAAK0tR,WAAa,KAIlB1tR,KAAKioC,KAAO,EAEZjoC,KAAKyqQ,UAAY,EACjBzqQ,KAAK2tR,oBAAsB,EAE3B3tR,KAAKozM,OAAS,EACdpzM,KAAK4tR,iBAAmB,EAExB5tR,KAAK6tR,YAAc1kO,IAEnBnpD,KAAK8tR,QAAS,EACd9tR,KAAK6wL,SAAU,EAEf7wL,KAAK+tR,mBAAoB,EAEzB/tR,KAAKguR,kBAAmB,EACxBhuR,KAAKiuR,gBAAiB,CAEvB,CAgnBC,OA9mBD1kR,EAAAkjR,EAAA,EAAAjqR,IAAA,OAAA/D,MAEA,WAIC,OAFAuB,KAAK4sR,OAAOsB,gBAAiBluR,MAEtBA,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAIC,OAFAuB,KAAK4sR,OAAOuB,kBAAmBnuR,MAExBA,KAAKu6D,OAEb,GAAC,CAAA/3D,IAAA,QAAA/D,MAED,WASC,OAPAuB,KAAK8tR,QAAS,EACd9tR,KAAK6wL,SAAU,EAEf7wL,KAAKioC,KAAO,EACZjoC,KAAKytR,YAAe,EACpBztR,KAAK0tR,WAAa,KAEX1tR,KAAKouR,aAAaC,aAE1B,GAAC,CAAA7rR,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAK6wL,UAAa7wL,KAAK8tR,QAA6B,IAAnB9tR,KAAKyqQ,WACxB,OAApBzqQ,KAAK0tR,YAAuB1tR,KAAK4sR,OAAO0B,gBAAiBtuR,KAE3D,GAEA,CAAAwC,IAAA,cAAA/D,MACA,WAEC,OAAOuB,KAAK4sR,OAAO0B,gBAAiBtuR,KAErC,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASwpC,GAIR,OAFAjoC,KAAK0tR,WAAazlP,EAEXjoC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAAS+1C,EAAMq5O,GAKd,OAHA7tR,KAAKiuE,KAAOz5B,EACZx0C,KAAK6tR,YAAcA,EAEZ7tR,IAER,GAMA,CAAAwC,IAAA,qBAAA/D,MACA,SAAoB20M,GAOnB,OALApzM,KAAKozM,OAASA,EAGdpzM,KAAK4tR,iBAAmB5tR,KAAK6wL,QAAUuiB,EAAS,EAEzCpzM,KAAKouR,YAEb,GAEA,CAAA5rR,IAAA,qBAAA/D,MACA,WAEC,OAAOuB,KAAK4tR,gBAEb,GAAC,CAAAprR,IAAA,SAAA/D,MAED,SAAQ0tE,GAEP,OAAOnsE,KAAKuuR,gBAAiBpiN,EAAU,EAAG,EAE3C,GAAC,CAAA3pE,IAAA,UAAA/D,MAED,SAAS0tE,GAER,OAAOnsE,KAAKuuR,gBAAiBpiN,EAAU,EAAG,EAE3C,GAAC,CAAA3pE,IAAA,gBAAA/D,MAED,SAAe+vR,EAAeriN,EAAUsiN,GAKvC,GAHAD,EAAcE,QAASviN,GACvBnsE,KAAK2uR,OAAQxiN,GAERsiN,EAAO,CAEX,IAAMG,EAAiB5uR,KAAK6sR,MAAM1gN,SACjC0iN,EAAkBL,EAAc3B,MAAM1gN,SAEtC2iN,EAAgBD,EAAkBD,EAClCG,EAAgBH,EAAiBC,EAElCL,EAAcC,KAAM,EAAKK,EAAe3iN,GACxCnsE,KAAKyuR,KAAMM,EAAe,EAAK5iN,EAEhC,CAEA,OAAOnsE,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAauwR,EAAc7iN,EAAUsiN,GAEpC,OAAOO,EAAaC,cAAejvR,KAAMmsE,EAAUsiN,EAEpD,GAAC,CAAAjsR,IAAA,aAAA/D,MAED,WAEC,IAAMywR,EAAoBlvR,KAAKwtR,mBAS/B,OAP2B,OAAtB0B,IAEJlvR,KAAKwtR,mBAAqB,KAC1BxtR,KAAK4sR,OAAOuC,4BAA6BD,IAInClvR,IAER,GAMA,CAAAwC,IAAA,wBAAA/D,MACA,SAAuBgsQ,GAKtB,OAHAzqQ,KAAKyqQ,UAAYA,EACjBzqQ,KAAK2tR,oBAAsB3tR,KAAK8tR,OAAS,EAAIrjB,EAEtCzqQ,KAAKquR,aAEb,GAEA,CAAA7rR,IAAA,wBAAA/D,MACA,WAEC,OAAOuB,KAAK2tR,mBAEb,GAAC,CAAAnrR,IAAA,cAAA/D,MAED,SAAa0tE,GAIZ,OAFAnsE,KAAKyqQ,UAAYzqQ,KAAK6sR,MAAM1gN,SAAWA,EAEhCnsE,KAAKquR,aAEb,GAAC,CAAA7rR,IAAA,WAAA/D,MAED,SAAU48C,GAKT,OAHAr7C,KAAKioC,KAAOoT,EAAOpT,KACnBjoC,KAAKyqQ,UAAYpvN,EAAOovN,UAEjBzqQ,KAAKquR,aAEb,GAAC,CAAA7rR,IAAA,OAAA/D,MAED,SAAM0tE,GAEL,OAAOnsE,KAAKyuR,KAAMzuR,KAAK2tR,oBAAqB,EAAGxhN,EAEhD,GAAC,CAAA3pE,IAAA,OAAA/D,MAED,SAAM2wR,EAAgBC,EAAcljN,GAEnC,IAAMugN,EAAQ1sR,KAAK4sR,OAClBhtR,EAAM8sR,EAAMzkP,KACZwiO,EAAYzqQ,KAAKyqQ,UAEdzE,EAAchmQ,KAAKutR,sBAEF,OAAhBvnB,IAEJA,EAAc0mB,EAAM4C,0BACpBtvR,KAAKutR,sBAAwBvnB,GAI9B,IAAMlC,EAAQkC,EAAYS,mBACzB15P,EAASi5P,EAAYU,aAQtB,OANA5C,EAAO,GAAMlkQ,EACbkkQ,EAAO,GAAMlkQ,EAAMusE,EAEnBp/D,EAAQ,GAAMqiR,EAAiB3kB,EAC/B19P,EAAQ,GAAMsiR,EAAe5kB,EAEtBzqQ,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAEC,IAAM8wR,EAAuBvvR,KAAKutR,sBASlC,OAP8B,OAAzBgC,IAEJvvR,KAAKutR,sBAAwB,KAC7BvtR,KAAK4sR,OAAOuC,4BAA6BI,IAInCvvR,IAER,GAEA,CAAAwC,IAAA,WAAA/D,MAEA,WAEC,OAAOuB,KAAK4sR,MAEb,GAAC,CAAApqR,IAAA,UAAA/D,MAED,WAEC,OAAOuB,KAAK6sR,KAEb,GAAC,CAAArqR,IAAA,UAAA/D,MAED,WAEC,OAAOuB,KAAK8sR,YAAc9sR,KAAK4sR,OAAO5hJ,KAEvC,GAEA,CAAAxoI,IAAA,UAAA/D,MAEA,SAASwpC,EAAMunP,EAAWC,EAAetJ,GAIxC,GAAOnmR,KAAK6wL,QAAZ,CASA,IAAMz/H,EAAYpxD,KAAK0tR,WAEvB,GAAmB,OAAdt8N,EAAqB,CAIzB,IAAMs+N,GAAgBznP,EAAOmpB,GAAcq+N,EAC3C,GAAKC,EAAc,GAAuB,IAAlBD,EAEvB,OAMDzvR,KAAK0tR,WAAa,KAClB8B,EAAYC,EAAgBC,CAE7B,CAIAF,GAAaxvR,KAAK2vR,iBAAkB1nP,GACpC,IAAM2nP,EAAW5vR,KAAK6vR,YAAaL,GAK7Bp8E,EAASpzM,KAAK8vR,cAAe7nP,GAEnC,GAAKmrK,EAAS,EAAI,CAEjB,IAAM45E,EAAehtR,KAAKmtR,cACpB4C,EAAiB/vR,KAAKotR,kBAE5B,GAASptR,KAAKumQ,YAER13G,GAEJ,IAAM,IAAIh/I,EAAI,EAAG/I,EAAIkmR,EAAap1R,OAAQiY,IAAM/I,IAAM+I,EAErDm9Q,EAAcn9Q,GAAIo2P,SAAU2pB,GAC5BG,EAAgBlgR,GAAImgR,mBAAoB58E,QASzC,IAAM,IAAIvjM,EAAI,EAAG/I,EAAIkmR,EAAap1R,OAAQiY,IAAM/I,IAAM+I,EAErDm9Q,EAAcn9Q,GAAIo2P,SAAU2pB,GAC5BG,EAAgBlgR,GAAIogR,WAAY9J,EAAW/yE,EAM/C,CA9DA,MAHCpzM,KAAK8vR,cAAe7nP,EAmEtB,GAAC,CAAAzlC,IAAA,gBAAA/D,MAED,SAAewpC,GAEd,IAAImrK,EAAS,EAEb,GAAKpzM,KAAK6wL,QAAU,CAEnBuiB,EAASpzM,KAAKozM,OACd,IAAM4yD,EAAchmQ,KAAKwtR,mBAEzB,GAAqB,OAAhBxnB,EAAuB,CAE3B,IAAMkqB,EAAmBlqB,EAAYC,SAAUh+N,GAAQ,GAEvDmrK,GAAU88E,EAELjoP,EAAO+9N,EAAYS,mBAAoB,KAE3CzmQ,KAAKouR,aAEqB,IAArB8B,IAGJlwR,KAAK6wL,SAAU,GAMlB,CAED,CAGA,OADA7wL,KAAK4tR,iBAAmBx6E,EACjBA,CAER,GAAC,CAAA5wM,IAAA,mBAAA/D,MAED,SAAkBwpC,GAEjB,IAAIwiO,EAAY,EAEhB,IAAOzqQ,KAAK8tR,OAAS,CAEpBrjB,EAAYzqQ,KAAKyqQ,UAEjB,IAAMzE,EAAchmQ,KAAKutR,sBAEzB,GAAqB,OAAhBvnB,EAIJyE,GAFyBzE,EAAYC,SAAUh+N,GAAQ,GAIlDA,EAAO+9N,EAAYS,mBAAoB,KAE3CzmQ,KAAKquR,cAEc,IAAd5jB,EAGJzqQ,KAAK8tR,QAAS,EAKd9tR,KAAKyqQ,UAAYA,EAQrB,CAGA,OADAzqQ,KAAK2tR,oBAAsBljB,EACpBA,CAER,GAAC,CAAAjoQ,IAAA,cAAA/D,MAED,SAAa+wR,GAEZ,IAAMrjN,EAAWnsE,KAAK6sR,MAAM1gN,SACtB8B,EAAOjuE,KAAKiuE,KAEdhmC,EAAOjoC,KAAKioC,KAAOunP,EACnBW,EAAYnwR,KAAKytR,WAEf2C,EAAaniN,IAASogF,GAE5B,GAAmB,IAAdmhI,EAEJ,OAAqB,IAAhBW,EAA2BloP,EAEvBmoP,GAAkC,KAAR,EAAZD,GAA0BhkN,EAAWlkC,EAAOA,EAIpE,GAAKgmC,IAASkgF,GAAW,EAEH,IAAhBgiI,IAIJnwR,KAAKytR,WAAa,EAClBztR,KAAKqwR,aAAa,GAAM,GAAM,IAI/BC,EAAa,CAEZ,GAAKroP,GAAQkkC,EAEZlkC,EAAOkkC,MAED,MAAKlkC,EAAO,GAIZ,CAENjoC,KAAKioC,KAAOA,EAEZ,MAAMqoP,CAEP,CARCroP,EAAO,CAQR,CAEKjoC,KAAK+tR,kBAAoB/tR,KAAK8tR,QAAS,EACvC9tR,KAAK6wL,SAAU,EAEpB7wL,KAAKioC,KAAOA,EAEZjoC,KAAK4sR,OAAOruP,cAAe,CAC1B35B,KAAM,WAAYy2C,OAAQr7C,KAC1BquK,UAAWmhH,EAAY,GAAM,EAAI,GAGnC,CAED,KAAO,CAwBN,IAtBqB,IAAhBW,IAICX,GAAa,GAEjBW,EAAY,EAEZnwR,KAAKqwR,aAAa,EAA2B,IAArBrwR,KAAK6tR,YAAmBuC,IAQhDpwR,KAAKqwR,YAAkC,IAArBrwR,KAAK6tR,aAAmB,EAAMuC,IAM7CnoP,GAAQkkC,GAAYlkC,EAAO,EAAI,CAInC,IAAMsoP,EAAYtzR,KAAKwf,MAAOwrB,EAAOkkC,GACrClkC,GAAQkkC,EAAWokN,EAEnBJ,GAAalzR,KAAK4f,IAAK0zQ,GAEvB,IAAM34O,EAAU53C,KAAK6tR,YAAcsC,EAEnC,GAAKv4O,GAAW,EAIV53C,KAAK+tR,kBAAoB/tR,KAAK8tR,QAAS,EACvC9tR,KAAK6wL,SAAU,EAEpB5oJ,EAAOunP,EAAY,EAAIrjN,EAAW,EAElCnsE,KAAKioC,KAAOA,EAEZjoC,KAAK4sR,OAAOruP,cAAe,CAC1B35B,KAAM,WAAYy2C,OAAQr7C,KAC1BquK,UAAWmhH,EAAY,EAAI,GAAM,QAG5B,CAIN,GAAiB,IAAZ53O,EAAgB,CAIpB,IAAM44O,EAAUhB,EAAY,EAC5BxvR,KAAKqwR,YAAaG,GAAWA,EAASJ,EAEvC,MAECpwR,KAAKqwR,aAAa,GAAO,EAAOD,GAIjCpwR,KAAKytR,WAAa0C,EAElBnwR,KAAKioC,KAAOA,EAEZjoC,KAAK4sR,OAAOruP,cAAe,CAC1B35B,KAAM,OAAQy2C,OAAQr7C,KAAMuwR,UAAWA,GAGzC,CAED,MAECvwR,KAAKioC,KAAOA,EAIb,GAAKmoP,GAAkC,KAAR,EAAZD,GAIlB,OAAOhkN,EAAWlkC,CAIpB,CAEA,OAAOA,CAER,GAAC,CAAAzlC,IAAA,cAAA/D,MAED,SAAa+xR,EAASC,EAAOL,GAE5B,IAAMvpB,EAAW7mQ,KAAKktR,qBAEjBkD,GAEJvpB,EAASuB,YAAc15G,GACvBm4G,EAASwB,UAAY35G,KAQpBm4G,EAASuB,YAFLooB,EAEmBxwR,KAAKguR,iBAAmBt/H,GAAkBD,GAI1CE,GAMvBk4G,EAASwB,UAFLooB,EAEiBzwR,KAAKiuR,eAAiBv/H,GAAkBD,GAItCE,GAM1B,GAAC,CAAAnsJ,IAAA,kBAAA/D,MAED,SAAiB0tE,EAAUukN,EAAWC,GAErC,IAAMjE,EAAQ1sR,KAAK4sR,OAAQhtR,EAAM8sR,EAAMzkP,KACnC+9N,EAAchmQ,KAAKwtR,mBAEF,OAAhBxnB,IAEJA,EAAc0mB,EAAM4C,0BACpBtvR,KAAKwtR,mBAAqBxnB,GAI3B,IAAMlC,EAAQkC,EAAYS,mBACzB15P,EAASi5P,EAAYU,aAOtB,OALA5C,EAAO,GAAMlkQ,EACbmN,EAAQ,GAAM2jR,EACd5sB,EAAO,GAAMlkQ,EAAMusE,EACnBp/D,EAAQ,GAAM4jR,EAEP3wR,IAER,KAACysR,CAAA,CAlrBmB,GAsrBfmE,GAAc,SAAAC,GAAA70Q,EAAA40Q,EAAAC,GAAA,IAAAC,EAAAn2Q,EAAAi2Q,GAEnB,SAAAA,EAAa19Q,GAAO,IAAA69Q,EAQE,OARFtmR,EAAA,KAAAmmR,IAEnBG,EAAAD,EAAAj0R,KAAA,OAEKmuI,MAAQ93H,EACb69Q,EAAKC,qBACLD,EAAKE,WAAa,EAClBF,EAAK9oP,KAAO,EACZ8oP,EAAKtmB,UAAY,EAAIsmB,CAEtB,CAquBC,OAruBAxnR,EAAAqnR,EAAA,EAAApuR,IAAA,cAAA/D,MAED,SAAa48C,EAAQ61O,GAEpB,IAAMh+Q,EAAOmoC,EAAOyxO,YAAc9sR,KAAKgrI,MACtCxwD,EAASn/B,EAAOwxO,MAAMryM,OACtBuyM,EAAUvyM,EAAO5iF,OACjBkwR,EAAWzsO,EAAO+xO,kBAClBJ,EAAe3xO,EAAO8xO,cACtBgE,EAAWj+Q,EAAK2oG,KAChBu1K,EAAiBpxR,KAAKqxR,uBAEnBC,EAAiBF,EAAgBD,QAEb/mR,IAAnBknR,IAEJA,EAAiB,CAAC,EAClBF,EAAgBD,GAAaG,GAI9B,IAAM,IAAI50R,EAAI,EAAGA,IAAMqwR,IAAYrwR,EAAI,CAEtC,IAAM85B,EAAQgkD,EAAQ99E,GACrBsxQ,EAAYx3O,EAAMr9B,KAEf0rR,EAAUyM,EAAgBtjB,GAE9B,QAAiB5jQ,IAAZy6Q,IAEDA,EAAQqB,eACX4B,EAAUprR,GAAMmoR,MAEV,CAIN,QAAiBz6Q,KAFjBy6Q,EAAUiD,EAAUprR,IAES,CAIC,OAAxBmoR,EAAQwI,gBAETxI,EAAQqB,eACXlmR,KAAKuxR,oBAAqB1M,EAASsM,EAAUnjB,IAI9C,QAED,CAEA,IAAM92K,EAAOg6L,GAAmBA,EAC/B9D,kBAAmB1wR,GAAImoR,QAAQ1tL,cAEhC0tL,EAAU,IAAID,GACb2C,GAAgBxrQ,OAAQ7I,EAAM86P,EAAW92K,GACzC1gE,EAAM+uO,cAAe/uO,EAAMouO,iBAEjBshB,eACXlmR,KAAKuxR,oBAAqB1M,EAASsM,EAAUnjB,GAE7C8Z,EAAUprR,GAAMmoR,CAEjB,CAEAmI,EAActwR,GAAIwpQ,aAAe2e,EAAQ1qH,MAE1C,CAED,GAAC,CAAA33J,IAAA,kBAAA/D,MAED,SAAiB48C,GAEhB,IAAOr7C,KAAKsuR,gBAAiBjzO,GAAW,CAEvC,GAA4B,OAAvBA,EAAOgyO,YAAuB,CAKlC,IAAM8D,GAAa91O,EAAOyxO,YAAc9sR,KAAKgrI,OAAQnvB,KACpD21K,EAAWn2O,EAAOwxO,MAAMhxK,KACxB41K,EAAiBzxR,KAAK0xR,eAAgBF,GAEvCxxR,KAAK2xR,YAAat2O,EACjBo2O,GAAkBA,EAAeG,aAAc,IAEhD5xR,KAAK6xR,mBAAoBx2O,EAAQm2O,EAAUL,EAE5C,CAKA,IAHA,IAAMrJ,EAAWzsO,EAAO+xO,kBAGd1wR,EAAI,EAAGqK,EAAI+gR,EAASlwR,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAErD,IAAMmoR,EAAUiD,EAAUprR,GAEG,IAAxBmoR,EAAQoB,aAEZjmR,KAAK8xR,aAAcjN,GACnBA,EAAQkN,oBAIV,CAEA/xR,KAAKgyR,YAAa32O,EAEnB,CAED,GAAC,CAAA74C,IAAA,oBAAA/D,MAED,SAAmB48C,GAElB,GAAKr7C,KAAKsuR,gBAAiBjzO,GAAW,CAKrC,IAHA,IAAMysO,EAAWzsO,EAAO+xO,kBAGd1wR,EAAI,EAAGqK,EAAI+gR,EAASlwR,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAErD,IAAMmoR,EAAUiD,EAAUprR,GAEG,MAArBmoR,EAAQoB,WAEfpB,EAAQoN,uBACRjyR,KAAKkyR,iBAAkBrN,GAIzB,CAEA7kR,KAAKmyR,gBAAiB92O,EAEvB,CAED,GAEA,CAAA74C,IAAA,qBAAA/D,MAEA,WAECuB,KAAKoyR,SAAW,GAChBpyR,KAAKqyR,gBAAkB,EAEvBryR,KAAK0xR,eAAiB,CAAC,EAQvB1xR,KAAK0nR,UAAY,GACjB1nR,KAAKsyR,iBAAmB,EAExBtyR,KAAKqxR,uBAAyB,CAAC,EAG/BrxR,KAAKuyR,qBAAuB,GAC5BvyR,KAAKwyR,4BAA8B,EAEnC,IAAMxlG,EAAQhtL,KAEdA,KAAKqrR,MAAQ,CAEZoH,QAAS,CACR,SAAI7hJ,GAEH,OAAOo8C,EAAMolG,SAASx6R,MAEvB,EACA,SAAI0zR,GAEH,OAAOt+F,EAAMqlG,eAEd,GAEDvK,SAAU,CACT,SAAIl3I,GAEH,OAAOo8C,EAAM06F,UAAU9vR,MAExB,EACA,SAAI0zR,GAEH,OAAOt+F,EAAMslG,gBAEd,GAEDI,oBAAqB,CACpB,SAAI9hJ,GAEH,OAAOo8C,EAAMulG,qBAAqB36R,MAEnC,EACA,SAAI0zR,GAEH,OAAOt+F,EAAMwlG,2BAEd,GAKH,GAEA,CAAAhwR,IAAA,kBAAA/D,MAEA,SAAiB48C,GAEhB,IAAMzsC,EAAQysC,EAAOgyO,YACrB,OAAiB,OAAVz+Q,GAAkBA,EAAQ5O,KAAKqyR,eAEvC,GAAC,CAAA7vR,IAAA,qBAAA/D,MAED,SAAoB48C,EAAQm2O,EAAUL,GAErC,IAAMsB,EAAUzyR,KAAKoyR,SACpBO,EAAgB3yR,KAAK0xR,eAElBD,EAAiBkB,EAAenB,GAEpC,QAAwBpnR,IAAnBqnR,EAEJA,EAAiB,CAEhBG,aAAc,CAAEv2O,GAChBu3O,aAAc,CAAC,GAIhBv3O,EAAOiyO,kBAAoB,EAE3BqF,EAAenB,GAAaC,MAEtB,CAEN,IAAMG,EAAeH,EAAeG,aAEpCv2O,EAAOiyO,kBAAoBsE,EAAah6R,OACxCg6R,EAAa90R,KAAMu+C,EAEpB,CAEAA,EAAOgyO,YAAcoF,EAAQ76R,OAC7B66R,EAAQ31R,KAAMu+C,GAEdo2O,EAAemB,aAAczB,GAAa91O,CAE3C,GAAC,CAAA74C,IAAA,wBAAA/D,MAED,SAAuB48C,GAEtB,IAAMo3O,EAAUzyR,KAAKoyR,SACpBS,EAAqBJ,EAASA,EAAQ76R,OAAS,GAC/Ck7R,EAAaz3O,EAAOgyO,YAErBwF,EAAmBxF,YAAcyF,EACjCL,EAASK,GAAeD,EACxBJ,EAAQzhO,MAER3V,EAAOgyO,YAAc,KAGrB,IAAMmE,EAAWn2O,EAAOwxO,MAAMhxK,KAC7B82K,EAAgB3yR,KAAK0xR,eACrBD,EAAiBkB,EAAenB,GAChCuB,EAAsBtB,EAAeG,aAErCoB,EACCD,EAAqBA,EAAoBn7R,OAAS,GAEnDq7R,EAAmB53O,EAAOiyO,kBAE3B0F,EAAgB1F,kBAAoB2F,EACpCF,EAAqBE,GAAqBD,EAC1CD,EAAoB/hO,MAEpB3V,EAAOiyO,kBAAoB,YAGNmE,EAAemB,cACtBv3O,EAAOyxO,YAAc9sR,KAAKgrI,OAAQnvB,MAIZ,IAA/Bk3K,EAAoBn7R,eAEjB+6R,EAAenB,GAIvBxxR,KAAKkzR,iCAAkC73O,EAExC,GAAC,CAAA74C,IAAA,mCAAA/D,MAED,SAAkC48C,GAIjC,IAFA,IAAMysO,EAAWzsO,EAAO+xO,kBAEd1wR,EAAI,EAAGqK,EAAI+gR,EAASlwR,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAErD,IAAMmoR,EAAUiD,EAAUprR,GAES,MAA3BmoR,EAAQqB,gBAEflmR,KAAKmzR,uBAAwBtO,EAI/B,CAED,GAAC,CAAAriR,IAAA,cAAA/D,MAED,SAAa48C,GAQZ,IAAMo3O,EAAUzyR,KAAKoyR,SACpBgB,EAAY/3O,EAAOgyO,YAEnBgG,EAAkBrzR,KAAKqyR,kBAEvBiB,EAAsBb,EAASY,GAEhCh4O,EAAOgyO,YAAcgG,EACrBZ,EAASY,GAAoBh4O,EAE7Bi4O,EAAoBjG,YAAc+F,EAClCX,EAASW,GAAcE,CAExB,GAAC,CAAA9wR,IAAA,kBAAA/D,MAED,SAAiB48C,GAQhB,IAAMo3O,EAAUzyR,KAAKoyR,SACpBgB,EAAY/3O,EAAOgyO,YAEnBkG,IAAwBvzR,KAAKqyR,gBAE7BmB,EAAmBf,EAASc,GAE7Bl4O,EAAOgyO,YAAckG,EACrBd,EAASc,GAAuBl4O,EAEhCm4O,EAAiBnG,YAAc+F,EAC/BX,EAASW,GAAcI,CAExB,GAEA,CAAAhxR,IAAA,sBAAA/D,MAEA,SAAqBomR,EAASsM,EAAUnjB,GAEvC,IAAMojB,EAAiBpxR,KAAKqxR,uBAC3BvJ,EAAW9nR,KAAK0nR,UAEb+L,EAAgBrC,EAAgBD,QAEb/mR,IAAlBqpR,IAEJA,EAAgB,CAAC,EACjBrC,EAAgBD,GAAasC,GAI9BA,EAAezlB,GAAc6W,EAE7BA,EAAQwI,YAAcvF,EAASlwR,OAC/BkwR,EAAShrR,KAAM+nR,EAEhB,GAAC,CAAAriR,IAAA,yBAAA/D,MAED,SAAwBomR,GAEvB,IAAMiD,EAAW9nR,KAAK0nR,UACrBgM,EAAc7O,EAAQA,QACtBsM,EAAWuC,EAAYlqN,SAASqyC,KAChCmyJ,EAAY0lB,EAAYx8L,KACxBk6L,EAAiBpxR,KAAKqxR,uBACtBoC,EAAgBrC,EAAgBD,GAEhCwC,EAAsB7L,EAAUA,EAASlwR,OAAS,GAClDk7R,EAAajO,EAAQwI,YAEtBsG,EAAoBtG,YAAcyF,EAClChL,EAAUgL,GAAea,EACzB7L,EAAS92N,aAEFyiO,EAAezlB,GAEuB,IAAxCzvQ,OAAOqD,KAAM6xR,GAAgB77R,eAE1Bw5R,EAAgBD,EAIzB,GAAC,CAAA3uR,IAAA,eAAA/D,MAED,SAAcomR,GAEb,IAAMiD,EAAW9nR,KAAK0nR,UACrB0L,EAAYvO,EAAQwI,YAEpBgG,EAAkBrzR,KAAKsyR,mBAEvBsB,EAAuB9L,EAAUuL,GAElCxO,EAAQwI,YAAcgG,EACtBvL,EAAUuL,GAAoBxO,EAE9B+O,EAAqBvG,YAAc+F,EACnCtL,EAAUsL,GAAcQ,CAEzB,GAAC,CAAApxR,IAAA,mBAAA/D,MAED,SAAkBomR,GAEjB,IAAMiD,EAAW9nR,KAAK0nR,UACrB0L,EAAYvO,EAAQwI,YAEpBkG,IAAwBvzR,KAAKsyR,iBAE7BuB,EAAoB/L,EAAUyL,GAE/B1O,EAAQwI,YAAckG,EACtBzL,EAAUyL,GAAuB1O,EAEjCgP,EAAkBxG,YAAc+F,EAChCtL,EAAUsL,GAAcS,CAEzB,GAGA,CAAArxR,IAAA,0BAAA/D,MAEA,WAEC,IAAMuuR,EAAehtR,KAAKuyR,qBACzBc,EAAkBrzR,KAAKwyR,8BAEpBxsB,EAAcgnB,EAAcqG,GAahC,YAXqBjpR,IAAhB47P,KAEJA,EAAc,IAAIoD,GACjB,IAAIv0G,aAAc,GAAK,IAAIA,aAAc,GACzC,EAAG70J,KAAK8zR,mCAEGC,aAAeV,EAC3BrG,EAAcqG,GAAoBrtB,GAI5BA,CAER,GAAC,CAAAxjQ,IAAA,8BAAA/D,MAED,SAA6BunQ,GAE5B,IAAMgnB,EAAehtR,KAAKuyR,qBACzBa,EAAYptB,EAAY+tB,aAExBR,IAAwBvzR,KAAKwyR,4BAE7BwB,EAAwBhH,EAAcuG,GAEvCvtB,EAAY+tB,aAAeR,EAC3BvG,EAAcuG,GAAuBvtB,EAErCguB,EAAsBD,aAAeX,EACrCpG,EAAcoG,GAAcY,CAE7B,GAIA,CAAAxxR,IAAA,aAAA/D,MACA,SAAYimQ,EAAMuvB,EAAc1tB,GAE/B,IAAMrzP,EAAO+gR,GAAgBj0R,KAAKgrI,MACjCmmJ,EAAWj+Q,EAAK2oG,KAEbq4K,EAA6B,kBAATxvB,EAAoBqI,GAAconB,WAAYjhR,EAAMwxP,GAASA,EAE/E8sB,EAA0B,OAAf0C,EAAsBA,EAAWr4K,KAAO6oJ,EAEnD+sB,EAAiBzxR,KAAK0xR,eAAgBF,GACxCN,EAAkB,KAgBtB,QAdmB9mR,IAAdm8P,IAIHA,EAFmB,OAAf2tB,EAEQA,EAAW3tB,UAIX33G,SAMUxkJ,IAAnBqnR,EAA+B,CAEnC,IAAM2C,EAAiB3C,EAAemB,aAAczB,GAEpD,QAAwB/mR,IAAnBgqR,GAAgCA,EAAe7tB,YAAcA,EAEjE,OAAO6tB,EAMRlD,EAAkBO,EAAeG,aAAc,GAG3B,OAAfsC,IACJA,EAAahD,EAAgBrE,MAE/B,CAGA,GAAoB,OAAfqH,EAAsB,OAAO,KAGlC,IAAMG,EAAY,IAAI5H,GAAiBzsR,KAAMk0R,EAAYD,EAAc1tB,GAOvE,OALAvmQ,KAAK2xR,YAAa0C,EAAWnD,GAG7BlxR,KAAK6xR,mBAAoBwC,EAAW7C,EAAUL,GAEvCkD,CAER,GAEA,CAAA7xR,IAAA,iBAAA/D,MACA,SAAgBimQ,EAAMuvB,GAErB,IAAM/gR,EAAO+gR,GAAgBj0R,KAAKgrI,MACjCmmJ,EAAWj+Q,EAAK2oG,KAEhBq4K,EAA6B,kBAATxvB,EACnBqI,GAAconB,WAAYjhR,EAAMwxP,GAASA,EAE1C8sB,EAAW0C,EAAaA,EAAWr4K,KAAO6oJ,EAE1C+sB,EAAiBzxR,KAAK0xR,eAAgBF,GAEvC,YAAwBpnR,IAAnBqnR,GAEGA,EAAemB,aAAczB,IAI9B,IAER,GAEA,CAAA3uR,IAAA,gBAAA/D,MACA,WAKC,IAHA,IAAMg0R,EAAUzyR,KAAKoyR,SAGX11R,EAFEsD,KAAKqyR,gBAEQ,EAAG31R,GAAK,IAAMA,EAEtC+1R,EAAS/1R,GAAI+xE,OAId,OAAOzuE,IAER,GAEA,CAAAwC,IAAA,SAAA/D,MACA,SAAQ+wR,GAEPA,GAAaxvR,KAAKyqQ,UAYlB,IAVA,IAAMgoB,EAAUzyR,KAAKoyR,SACpBkC,EAAWt0R,KAAKqyR,gBAEhBpqP,EAAOjoC,KAAKioC,MAAQunP,EACpBC,EAAgBxyR,KAAKmzK,KAAMo/G,GAE3BrJ,EAAYnmR,KAAKixR,YAAc,EAItBv0R,EAAI,EAAGA,IAAM43R,IAAa53R,EAAI,CAExB+1R,EAAS/1R,GAEjB63R,QAAStsP,EAAMunP,EAAWC,EAAetJ,EAEjD,CAOA,IAHA,IAAM2B,EAAW9nR,KAAK0nR,UACrBgE,EAAY1rR,KAAKsyR,iBAER51R,EAAI,EAAGA,IAAMgvR,IAAchvR,EAEpCorR,EAAUprR,GAAIoD,MAAOqmR,GAItB,OAAOnmR,IAER,GAEA,CAAAwC,IAAA,UAAA/D,MACA,SAAS+1R,GAERx0R,KAAKioC,KAAO,EACZ,IAAM,IAAIvrC,EAAI,EAAGA,EAAIsD,KAAKoyR,SAASx6R,OAAQ8E,IAE1CsD,KAAKoyR,SAAU11R,GAAIurC,KAAO,EAI3B,OAAOjoC,KAAKsjK,OAAQkxH,EAErB,GAEA,CAAAhyR,IAAA,UAAA/D,MACA,WAEC,OAAOuB,KAAKgrI,KAEb,GAEA,CAAAxoI,IAAA,cAAA/D,MACA,SAAaimQ,GAEZ,IAAM+tB,EAAUzyR,KAAKoyR,SACpBZ,EAAW9sB,EAAK7oJ,KAChB82K,EAAgB3yR,KAAK0xR,eACrBD,EAAiBkB,EAAenB,GAEjC,QAAwBpnR,IAAnBqnR,EAA+B,CAQnC,IAFA,IAAMgD,EAAkBhD,EAAeG,aAE7Bl1R,EAAI,EAAGqK,EAAI0tR,EAAgB78R,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAE5D,IAAM2+C,EAASo5O,EAAiB/3R,GAEhCsD,KAAKmuR,kBAAmB9yO,GAExB,IAAMy3O,EAAaz3O,EAAOgyO,YACzBwF,EAAqBJ,EAASA,EAAQ76R,OAAS,GAEhDyjD,EAAOgyO,YAAc,KACrBhyO,EAAOiyO,kBAAoB,KAE3BuF,EAAmBxF,YAAcyF,EACjCL,EAASK,GAAeD,EACxBJ,EAAQzhO,MAERhxD,KAAKkzR,iCAAkC73O,EAExC,QAEOs3O,EAAenB,EAEvB,CAED,GAEA,CAAAhvR,IAAA,cAAA/D,MACA,SAAayU,GAEZ,IAAMi+Q,EAAWj+Q,EAAK2oG,KACrB82K,EAAgB3yR,KAAK0xR,eAEtB,IAAM,IAAMF,KAAYmB,EAAgB,CAEvC,IACCt3O,EADoBs3O,EAAenB,GAAWoB,aACvBzB,QAER/mR,IAAXixC,IAEJr7C,KAAKmuR,kBAAmB9yO,GACxBr7C,KAAK00R,sBAAuBr5O,GAI9B,CAEA,IACCo4O,EADsBzzR,KAAKqxR,uBACKF,GAEjC,QAAuB/mR,IAAlBqpR,EAEJ,IAAM,IAAMzlB,KAAaylB,EAAgB,CAExC,IAAM5O,EAAU4O,EAAezlB,GAC/B6W,EAAQoN,uBACRjyR,KAAKmzR,uBAAwBtO,EAE9B,CAIF,GAEA,CAAAriR,IAAA,gBAAA/D,MACA,SAAeimQ,EAAMuvB,GAEpB,IAAM54O,EAASr7C,KAAKo0R,eAAgB1vB,EAAMuvB,GAE1B,OAAX54O,IAEJr7C,KAAKmuR,kBAAmB9yO,GACxBr7C,KAAK00R,sBAAuBr5O,GAI9B,KAACu1O,CAAA,CAjvBkB,CAASt/H,IAqvB7Bs/H,GAAeh0R,UAAUk3R,iCAAmC,IAAIj/H,aAAc,GAAI,IAE5E8/H,GAAO,WAEZ,SAAAA,EAAal2R,GAAQgM,EAAA,KAAAkqR,GAEE,kBAAVl2R,IAEXsV,QAAQk/C,KAAM,sDACdx0D,EAAQwB,UAAW,IAIpBD,KAAKvB,MAAQA,CAEd,CAMC,OANA8K,EAAAorR,EAAA,EAAAnyR,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIk2R,OAA8BvqR,IAArBpK,KAAKvB,MAAMyC,MAAsBlB,KAAKvB,MAAQuB,KAAKvB,MAAMyC,QAE9E,KAACyzR,CAAA,CAnBW,GAuBPC,GAA0B,SAAAC,GAAA74Q,EAAA44Q,EAAAC,GAAA,IAAAC,EAAAn6Q,EAAAi6Q,GAE/B,SAAAA,EAAa7xR,EAAO0mL,GAA+B,IAAAsrG,EAAvBrtF,EAAgBznM,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAIL,OAJMwK,EAAA,KAAAmqR,IAE/CG,EAAAD,EAAAj4R,KAAA,KAAOkG,EAAO0mL,IAETie,iBAAmBA,EAAiBqtF,CAE1C,CA+BC,OA/BAxrR,EAAAqrR,EAAA,EAAApyR,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAAs5Q,EAAAh4R,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK0nM,iBAAmBlmM,EAAOkmM,iBAExB1nM,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOilC,GAEN,IAAM7R,EAAEq1G,GAAA5rH,EAAAs5Q,EAAAh4R,WAAA,cAAAC,KAAA,KAAgB6mC,GAIxB,OAFA7R,EAAG61K,iBAAmB1nM,KAAK0nM,iBAEpB71K,CAER,GAAC,CAAArvB,IAAA,SAAA/D,MAED,SAAQilC,GAEP,IAAM+4M,EAAIv1G,GAAA5rH,EAAAs5Q,EAAAh4R,WAAA,eAAAC,KAAA,KAAiB6mC,GAK3B,OAHA+4M,EAAKvzC,8BAA+B,EACpCuzC,EAAK/0C,iBAAmB1nM,KAAK0nM,iBAEtB+0C,CAER,KAACm4C,CAAA,CAvC8B,CAASj9C,IA2CzCi9C,GAA2Bh4R,UAAUssM,8BAA+B,EAAK,IAEnE8rF,GAAiB,WAEtB,SAAAA,EAAa76H,EAAQv1J,EAAM69K,EAAUsU,EAAap5G,GAAQlzE,EAAA,KAAAuqR,GAEzDh1R,KAAKm6J,OAASA,EACdn6J,KAAK4E,KAAOA,EACZ5E,KAAKyiL,SAAWA,EAChBziL,KAAK+2L,YAAcA,EACnB/2L,KAAK29E,MAAQA,EAEb39E,KAAK3G,QAAU,CAEhB,CAuCC,OAvCAkQ,EAAAyrR,EAAA,EAAAxyR,IAAA,cAAAysB,IAED,SAAiBxwB,IAED,IAAVA,GAAiBuB,KAAK3G,SAE5B,GAAC,CAAAmJ,IAAA,YAAA/D,MAED,SAAW07J,GAIV,OAFAn6J,KAAKm6J,OAASA,EAEPn6J,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASmG,EAAMmyL,GAKd,OAHA/2L,KAAK4E,KAAOA,EACZ5E,KAAK+2L,YAAcA,EAEZ/2L,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAagkL,GAIZ,OAFAziL,KAAKyiL,SAAWA,EAETziL,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAUk/E,GAIT,OAFA39E,KAAK29E,MAAQA,EAEN39E,IAER,KAACg1R,CAAA,CAnDqB,GAuDvBA,GAAkBp4R,UAAUmqL,qBAAsB,EAAK,IAEjDkuG,GAAS,WAEd,SAAAA,EAAa78L,EAAQi2E,GAAsC,IAA3BwF,EAAI5zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG6zK,EAAG7zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGkpD,IAAQ1+C,EAAA,KAAAwqR,GAEvDj1R,KAAKsuK,IAAM,IAAIF,GAAKh2E,EAAQi2E,GAG5BruK,KAAK6zK,KAAOA,EACZ7zK,KAAK8zK,IAAMA,EACX9zK,KAAK4nK,OAAS,KACd5nK,KAAK20K,OAAS,IAAIF,GAElBz0K,KAAKk6D,OAAS,CACbgxH,KAAM,CAAC,EACPkzD,KAAM,CAAEK,UAAW,GACnBzE,IAAK,CAAC,EACNkG,OAAQ,CAAEzB,UAAW,GACrBrF,OAAQ,CAAC,EAGX,CAsDC,OAtDA7vO,EAAA0rR,EAAA,EAAAzyR,IAAA,MAAA/D,MAED,SAAK25F,EAAQi2E,GAIZruK,KAAKsuK,IAAIr/I,IAAKmpE,EAAQi2E,EAEvB,GAAC,CAAA7rK,IAAA,gBAAA/D,MAED,SAAey2R,EAAQttH,GAEjBA,EAAOqpB,qBAEXjxL,KAAKsuK,IAAIl2E,OAAOw+E,sBAAuBhP,EAAOK,aAC9CjoK,KAAKsuK,IAAID,UAAUp/I,IAAKimQ,EAAOh5R,EAAGg5R,EAAO7tR,EAAG,IAAM8tR,UAAWvtH,GAASkB,IAAK9oK,KAAKsuK,IAAIl2E,QAASyoB,YAC7F7gH,KAAK4nK,OAASA,GAEHA,EAAOumC,sBAElBnuM,KAAKsuK,IAAIl2E,OAAOnpE,IAAKimQ,EAAOh5R,EAAGg5R,EAAO7tR,GAAKugK,EAAOiM,KAAOjM,EAAOkM,MAAUlM,EAAOiM,KAAOjM,EAAOkM,MAAQqhH,UAAWvtH,GAClH5nK,KAAKsuK,IAAID,UAAUp/I,IAAK,EAAG,GAAK,GAAIyhJ,mBAAoB9I,EAAOK,aAC/DjoK,KAAK4nK,OAASA,GAId7zJ,QAAQwN,MAAO,6CAA+CqmJ,EAAOhjK,KAIvE,GAAC,CAAApC,IAAA,kBAAA/D,MAED,SAAiB0D,GAA4C,IAAlBwpL,EAAU1rL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAMvD,OAJAm1R,GAAiBjzR,EAAQnC,KAAM2rL,IAFE1rL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,IAIjC0rL,EAAWnyF,KAAM67L,IAEV1pG,CAER,GAAC,CAAAnpL,IAAA,mBAAA/D,MAED,SAAkBimM,GAEjB,IAF8D,IAApC1rB,IAAS/4K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GAAS0rL,EAAU1rL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAE/CvD,EAAI,EAAGmK,EAAI69L,EAAQ9sM,OAAQ8E,EAAImK,EAAGnK,IAE3C04R,GAAiB1wF,EAAShoM,GAAKsD,KAAM2rL,EAAY3S,GAMlD,OAFA2S,EAAWnyF,KAAM67L,IAEV1pG,CAER,KAACspG,CAAA,CA1Ea,GA8Ef,SAASI,GAASr5R,EAAGuK,GAEpB,OAAOvK,EAAE06K,SAAWnwK,EAAEmwK,QAEvB,CAEA,SAAS0+G,GAAiBjzR,EAAQupL,EAAWC,EAAY3S,GAQxD,GANK72K,EAAOwyK,OAAOz8K,KAAMwzL,EAAU/W,SAElCxyK,EAAOo4O,QAAS7uD,EAAWC,IAIT,IAAd3S,EAIJ,IAFA,IAAMp7J,EAAWzb,EAAOyb,SAEdlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5C04R,GAAiBx3Q,EAAUlhB,GAAKgvL,EAAWC,GAAY,EAM1D,CAEA,IAOM2pG,GAAS,WAEd,SAAAA,IAA8C,IAAjCpsH,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGkpK,EAAGlpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGw5J,EAAKx5J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAMzC,OAN0CwK,EAAA,KAAA6qR,GAE1Ct1R,KAAKkpK,OAASA,EACdlpK,KAAKmpK,IAAMA,EACXnpK,KAAKy5J,MAAQA,EAENz5J,IAER,CA8DC,OA9DAuJ,EAAA+rR,EAAA,EAAA9yR,IAAA,MAAA/D,MAED,SAAKyqK,EAAQC,EAAK1P,GAMjB,OAJAz5J,KAAKkpK,OAASA,EACdlpK,KAAKmpK,IAAMA,EACXnpK,KAAKy5J,MAAQA,EAENz5J,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM82R,GAML,OAJAv1R,KAAKkpK,OAASqsH,EAAMrsH,OACpBlpK,KAAKmpK,IAAMosH,EAAMpsH,IACjBnpK,KAAKy5J,MAAQ87H,EAAM97H,MAEZz5J,IAER,GAEA,CAAAwC,IAAA,WAAA/D,MACA,WAEC,IAAM+2R,EAAM,KAGZ,OAFAx1R,KAAKmpK,IAAMlsK,KAAKC,IAAKs4R,EAAKv4R,KAAKiuC,IAAKjuC,KAAK00J,GAAK6jI,EAAKx1R,KAAKmpK,MAEjDnpK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB0I,GAEf,OAAOnH,KAAKy1R,uBAAwBtuR,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,EAEjD,GAAC,CAAA9E,IAAA,yBAAA/D,MAED,SAAwBvC,EAAGmL,EAAGC,GAgB7B,OAdAtH,KAAKkpK,OAASjsK,KAAK04J,KAAMz5J,EAAIA,EAAImL,EAAIA,EAAIC,EAAIA,GAExB,IAAhBtH,KAAKkpK,QAETlpK,KAAKy5J,MAAQ,EACbz5J,KAAKmpK,IAAM,IAIXnpK,KAAKy5J,MAAQx8J,KAAK44J,MAAO35J,EAAGoL,GAC5BtH,KAAKmpK,IAAMlsK,KAAK4iK,KAAM3N,GAAO7qJ,EAAIrH,KAAKkpK,QAAU,EAAG,KAI7ClpK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACs1R,CAAA,CAxEa,GAgFTI,GAAW,WAEhB,SAAAA,IAA4C,IAA/BxsH,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGw5J,EAAKx5J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAMvC,OANwCwK,EAAA,KAAAirR,GAExC11R,KAAKkpK,OAASA,EACdlpK,KAAKy5J,MAAQA,EACbz5J,KAAKqH,EAAIA,EAEFrH,IAER,CA0CC,OA1CAuJ,EAAAmsR,EAAA,EAAAlzR,IAAA,MAAA/D,MAED,SAAKyqK,EAAQzP,EAAOpyJ,GAMnB,OAJArH,KAAKkpK,OAASA,EACdlpK,KAAKy5J,MAAQA,EACbz5J,KAAKqH,EAAIA,EAEFrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM82R,GAML,OAJAv1R,KAAKkpK,OAASqsH,EAAMrsH,OACpBlpK,KAAKy5J,MAAQ87H,EAAM97H,MACnBz5J,KAAKqH,EAAIkuR,EAAMluR,EAERrH,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB0I,GAEf,OAAOnH,KAAKy1R,uBAAwBtuR,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,EAEjD,GAAC,CAAA9E,IAAA,yBAAA/D,MAED,SAAwBvC,EAAGmL,EAAGC,GAM7B,OAJAtH,KAAKkpK,OAASjsK,KAAK04J,KAAMz5J,EAAIA,EAAIoL,EAAIA,GACrCtH,KAAKy5J,MAAQx8J,KAAK44J,MAAO35J,EAAGoL,GAC5BtH,KAAKqH,EAAIA,EAEFrH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAAC01R,CAAA,CApDe,GAwDXC,GAA0B,IAAIxgI,GAE9BygI,GAAI,WAET,SAAAA,IAAwG,IAA3F1qP,EAAGjrC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAAWhsG,IAAYA,KAAYjsD,EAAG+C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,IAAWhsG,KAAYA,KAAU1+C,EAAA,KAAAmrR,GAEpG51R,KAAKkrC,IAAMA,EACXlrC,KAAK9C,IAAMA,CAEZ,CAyLC,OAzLAqM,EAAAqsR,EAAA,EAAApzR,IAAA,MAAA/D,MAED,SAAKysC,EAAKhuC,GAKT,OAHA8C,KAAKkrC,IAAIwwH,KAAMxwH,GACflrC,KAAK9C,IAAIw+J,KAAMx+J,GAER8C,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAewrK,GAEdjqK,KAAKkqK,YAEL,IAAM,IAAIxtK,EAAI,EAAGowD,EAAKm9G,EAAOryK,OAAQ8E,EAAIowD,EAAIpwD,IAE5CsD,KAAKmqK,cAAeF,EAAQvtK,IAI7B,OAAOsD,IAER,GAAC,CAAAwC,IAAA,uBAAA/D,MAED,SAAsB43J,EAAQ9wG,GAE7B,IAAM6kH,EAAWurH,GAAUj6H,KAAMn2G,GAAOgwG,eAAgB,IAIxD,OAHAv1J,KAAKkrC,IAAIwwH,KAAMrF,GAASyS,IAAKsB,GAC7BpqK,KAAK9C,IAAIw+J,KAAMrF,GAASjqI,IAAKg+I,GAEtBpqK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+rK,GAKL,OAHAxqK,KAAKkrC,IAAIwwH,KAAM8O,EAAIt/H,KACnBlrC,KAAK9C,IAAIw+J,KAAM8O,EAAIttK,KAEZ8C,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,WAKC,OAHAuB,KAAKkrC,IAAIhvC,EAAI8D,KAAKkrC,IAAI7jC,EAAM8hD,IAC5BnpD,KAAK9C,IAAIhB,EAAI8D,KAAK9C,IAAImK,GAAM8hD,IAErBnpD,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAIC,OAASuB,KAAK9C,IAAIhB,EAAI8D,KAAKkrC,IAAIhvC,GAAS8D,KAAK9C,IAAImK,EAAIrH,KAAKkrC,IAAI7jC,CAE/D,GAAC,CAAA7E,IAAA,YAAA/D,MAED,SAAW8C,GAEV,OAAOvB,KAAKyqK,UAAYlpK,EAAO0tB,IAAK,EAAG,GAAM1tB,EAAO8zJ,WAAYr1J,KAAKkrC,IAAKlrC,KAAK9C,KAAMq4J,eAAgB,GAEtG,GAAC,CAAA/yJ,IAAA,UAAA/D,MAED,SAAS8C,GAER,OAAOvB,KAAKyqK,UAAYlpK,EAAO0tB,IAAK,EAAG,GAAM1tB,EAAO+zJ,WAAYt1J,KAAK9C,IAAK8C,KAAKkrC,IAEhF,GAAC,CAAA1oC,IAAA,gBAAA/D,MAED,SAAeisK,GAKd,OAHA1qK,KAAKkrC,IAAIA,IAAKw/H,GACd1qK,KAAK9C,IAAIA,IAAKwtK,GAEP1qK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBksK,GAKf,OAHA3qK,KAAKkrC,IAAI49H,IAAK6B,GACd3qK,KAAK9C,IAAIkvB,IAAKu+I,GAEP3qK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB22J,GAKf,OAHAp1J,KAAKkrC,IAAI0/H,WAAaxV,GACtBp1J,KAAK9C,IAAI0tK,UAAWxV,GAEbp1J,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeisK,GAEd,QAAOA,EAAMxuK,EAAI8D,KAAKkrC,IAAIhvC,GAAKwuK,EAAMxuK,EAAI8D,KAAK9C,IAAIhB,GACjDwuK,EAAMrjK,EAAIrH,KAAKkrC,IAAI7jC,GAAKqjK,EAAMrjK,EAAIrH,KAAK9C,IAAImK,EAE7C,GAAC,CAAA7E,IAAA,cAAA/D,MAED,SAAa+rK,GAEZ,OAAOxqK,KAAKkrC,IAAIhvC,GAAKsuK,EAAIt/H,IAAIhvC,GAAKsuK,EAAIttK,IAAIhB,GAAK8D,KAAK9C,IAAIhB,GACvD8D,KAAKkrC,IAAI7jC,GAAKmjK,EAAIt/H,IAAI7jC,GAAKmjK,EAAIttK,IAAImK,GAAKrH,KAAK9C,IAAImK,CAEnD,GAAC,CAAA7E,IAAA,eAAA/D,MAED,SAAcisK,EAAOnpK,GAKpB,OAAOA,EAAO0tB,KACXy7I,EAAMxuK,EAAI8D,KAAKkrC,IAAIhvC,IAAQ8D,KAAK9C,IAAIhB,EAAI8D,KAAKkrC,IAAIhvC,IACjDwuK,EAAMrjK,EAAIrH,KAAKkrC,IAAI7jC,IAAQrH,KAAK9C,IAAImK,EAAIrH,KAAKkrC,IAAI7jC,GAGrD,GAAC,CAAA7E,IAAA,gBAAA/D,MAED,SAAe+rK,GAId,QAAOA,EAAIttK,IAAIhB,EAAI8D,KAAKkrC,IAAIhvC,GAAKsuK,EAAIt/H,IAAIhvC,EAAI8D,KAAK9C,IAAIhB,GACrDsuK,EAAIttK,IAAImK,EAAIrH,KAAKkrC,IAAI7jC,GAAKmjK,EAAIt/H,IAAI7jC,EAAIrH,KAAK9C,IAAImK,EAEjD,GAAC,CAAA7E,IAAA,aAAA/D,MAED,SAAYisK,EAAOnpK,GAElB,OAAOA,EAAOm6J,KAAMgP,GAAQxY,MAAOlyJ,KAAKkrC,IAAKlrC,KAAK9C,IAEnD,GAAC,CAAAsF,IAAA,kBAAA/D,MAED,SAAiBisK,GAGhB,OADqBirH,GAAUj6H,KAAMgP,GAAQxY,MAAOlyJ,KAAKkrC,IAAKlrC,KAAK9C,KAC/C4rK,IAAK4B,GAAQ9yK,QAElC,GAAC,CAAA4K,IAAA,YAAA/D,MAED,SAAW+rK,GAKV,OAHAxqK,KAAKkrC,IAAIhuC,IAAKstK,EAAIt/H,KAClBlrC,KAAK9C,IAAIguC,IAAKs/H,EAAIttK,KAEX8C,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO+rK,GAKN,OAHAxqK,KAAKkrC,IAAIA,IAAKs/H,EAAIt/H,KAClBlrC,KAAK9C,IAAIA,IAAKstK,EAAIttK,KAEX8C,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsrC,GAKV,OAHA/pC,KAAKkrC,IAAI9e,IAAK2d,GACd/pC,KAAK9C,IAAIkvB,IAAK2d,GAEP/pC,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ+rK,GAEP,OAAOA,EAAIt/H,IAAIshI,OAAQxsK,KAAKkrC,MAASs/H,EAAIttK,IAAIsvK,OAAQxsK,KAAK9C,IAE3D,KAAC04R,CAAA,CAhMQ,GAoMVA,GAAKh5R,UAAUi5R,QAAS,EAExB,IAAMC,GAAwB,IAAIhvH,GAC5BivH,GAA0B,IAAIjvH,GAE9BkvH,GAAK,WAEV,SAAAA,IAA0D,IAA7ClrP,EAAK7qC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAW/7H,EAAG9qC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAASr8J,EAAA,KAAAurR,GAEtDh2R,KAAK8qC,MAAQA,EACb9qC,KAAK+qC,IAAMA,CAEZ,CAiGC,OAjGAxhC,EAAAysR,EAAA,EAAAxzR,IAAA,MAAA/D,MAED,SAAKqsC,EAAOC,GAKX,OAHA/qC,KAAK8qC,MAAM4wH,KAAM5wH,GACjB9qC,KAAK+qC,IAAI2wH,KAAM3wH,GAER/qC,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM4vG,GAKL,OAHAruG,KAAK8qC,MAAM4wH,KAAMrtD,EAAKvjE,OACtB9qC,KAAK+qC,IAAI2wH,KAAMrtD,EAAKtjE,KAEb/qC,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW8C,GAEV,OAAOA,EAAO8zJ,WAAYr1J,KAAK8qC,MAAO9qC,KAAK+qC,KAAMwqH,eAAgB,GAElE,GAAC,CAAA/yJ,IAAA,QAAA/D,MAED,SAAO8C,GAEN,OAAOA,EAAO+zJ,WAAYt1J,KAAK+qC,IAAK/qC,KAAK8qC,MAE1C,GAAC,CAAAtoC,IAAA,aAAA/D,MAED,WAEC,OAAOuB,KAAK8qC,MAAMgrH,kBAAmB91J,KAAK+qC,IAE3C,GAAC,CAAAvoC,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAK8qC,MAAMuiI,WAAYrtK,KAAK+qC,IAEpC,GAAC,CAAAvoC,IAAA,KAAA/D,MAED,SAAInH,EAAGiK,GAEN,OAAOvB,KAAK5C,MAAOmE,GAASg0J,eAAgBj+J,GAAI80B,IAAKpsB,KAAK8qC,MAE3D,GAAC,CAAAtoC,IAAA,+BAAA/D,MAED,SAA8BisK,EAAOurH,GAEpCH,GAAQxgI,WAAYoV,EAAO1qK,KAAK8qC,OAChCirP,GAAUzgI,WAAYt1J,KAAK+qC,IAAK/qC,KAAK8qC,OAErC,IAAMorP,EAAYH,GAAU9xH,IAAK8xH,IAG7Bz+R,EAFoBy+R,GAAU9xH,IAAK6xH,IAEbI,EAQ1B,OANKD,IAEJ3+R,EAAI46J,GAAO56J,EAAG,EAAG,IAIXA,CAER,GAAC,CAAAkL,IAAA,sBAAA/D,MAED,SAAqBisK,EAAOurH,EAAa10R,GAExC,IAAMjK,EAAI0I,KAAKm2R,6BAA8BzrH,EAAOurH,GAEpD,OAAOj2R,KAAK5C,MAAOmE,GAASg0J,eAAgBj+J,GAAI80B,IAAKpsB,KAAK8qC,MAE3D,GAAC,CAAAtoC,IAAA,eAAA/D,MAED,SAAci7J,GAKb,OAHA15J,KAAK8qC,MAAM+8H,aAAcnO,GACzB15J,KAAK+qC,IAAI88H,aAAcnO,GAEhB15J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ4vG,GAEP,OAAOA,EAAKvjE,MAAM0hI,OAAQxsK,KAAK8qC,QAAWujE,EAAKtjE,IAAIyhI,OAAQxsK,KAAK+qC,IAEjE,GAAC,CAAAvoC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACg2R,CAAA,CAxGS,GA4GLI,GAA0B,IAAItvH,GAE9BuvH,GAAe,SAAAC,GAAAt6Q,EAAAq6Q,EAAAC,GAAA,IAAAC,EAAA57Q,EAAA07Q,GAEpB,SAAAA,EAAanlN,EAAO1pC,GAAQ,IAAAgvP,EAAA/rR,EAAA,KAAA4rR,IAE3BG,EAAAD,EAAA15R,KAAA,OACKq0E,MAAQA,EACbslN,EAAKtlN,MAAMqmG,oBAEXi/G,EAAK98H,OAASxoF,EAAM+2F,YACpBuuH,EAAK53H,kBAAmB,EAExB43H,EAAKhvP,MAAQA,EAYb,IAVA,IAAMsjI,EAAW,IAAI4a,GAEf0B,EAAY,CACjB,EAAG,EAAG,EAAI,EAAG,EAAG,EAChB,EAAG,EAAG,EAAI,EAAG,EAAG,EAChB,EAAG,EAAG,GAAK,EAAG,EAAG,EACjB,EAAG,EAAG,EAAI,EAAG,EAAG,EAChB,EAAG,EAAG,EAAI,GAAK,EAAG,GAGT1qL,EAAI,EAAGmT,EAAI,EAAWnT,EAAJ,GAAWA,IAAMmT,IAAO,CAEnD,IAAMynH,EAAO56H,EAFc,GAEJO,KAAK00J,GAAK,EAC3Bp6B,EAAO1nH,EAHc,GAGJ5S,KAAK00J,GAAK,EAEjCy1B,EAAUtqL,KACTG,KAAKk3J,IAAK78B,GAAMr6H,KAAKm3J,IAAK98B,GAAM,EAChCr6H,KAAKk3J,IAAK58B,GAAMt6H,KAAKm3J,IAAK78B,GAAM,EAGlC,CAEAuzC,EAASh4J,aAAc,WAAY,IAAI+xK,GAAwBuC,EAAW,IAE1E,IAAMvO,EAAW,IAAIuuC,GAAmB,CAAEzrC,KAAK,EAAOiC,YAAY,IAKpD,OAHd44G,EAAKC,KAAO,IAAIt3C,GAAcr0E,EAAU+N,GACxC29G,EAAKpqQ,IAAKoqQ,EAAKC,MAEfD,EAAKlzH,SAASkzH,CAEf,CAgCC,OAhCAjtR,EAAA8sR,EAAA,EAAA7zR,IAAA,UAAA/D,MAED,WAECuB,KAAKy2R,KAAK3rH,SAASpJ,UACnB1hK,KAAKy2R,KAAK59G,SAASnX,SAEpB,GAAC,CAAAl/J,IAAA,SAAA/D,MAED,WAECuB,KAAKkxE,MAAMqmG,oBAEX,IAAMm/G,EAAa12R,KAAKkxE,MAAMwlG,SAAW12K,KAAKkxE,MAAMwlG,SAAW,IACzDigH,EAAYD,EAAaz5R,KAAKyzL,IAAK1wL,KAAKkxE,MAAM0kF,OAEpD51J,KAAKy2R,KAAKp/I,MAAMpoH,IAAK0nQ,EAAWA,EAAWD,GAE3CN,GAAUx/G,sBAAuB52K,KAAKkxE,MAAM3vE,OAAO0mK,aAEnDjoK,KAAKy2R,KAAK1/G,OAAQq/G,SAEEhsR,IAAfpK,KAAKwnC,MAETxnC,KAAKy2R,KAAK59G,SAASrxI,MAAMvY,IAAKjvB,KAAKwnC,OAInCxnC,KAAKy2R,KAAK59G,SAASrxI,MAAMk0H,KAAM17J,KAAKkxE,MAAM1pC,MAI5C,KAAC6uP,CAAA,CA5EmB,CAAS7gH,IAgFxBohH,GAA0B,IAAI9vH,GAC9B+vH,GAA4B,IAAIlmH,GAChCmmH,GAAgC,IAAInmH,GAGpComH,GAAc,SAAAC,GAAAh7Q,EAAA+6Q,EAAAC,GAAA,IAAAC,EAAAt8Q,EAAAo8Q,GAEnB,SAAAA,EAAa50R,GAAS,IAAA+0R,EAAAzsR,EAAA,KAAAssR,GAYrB,IAVA,IAAMnvE,EAAQuvE,GAAah1R,GAErB2oK,EAAW,IAAI4a,GAEfuH,EAAW,GACXjxE,EAAS,GAETygD,EAAS,IAAIlB,GAAO,EAAG,EAAG,GAC1BmB,EAAS,IAAInB,GAAO,EAAG,EAAG,GAEtB7+J,EAAI,EAAGA,EAAIkrN,EAAMhwN,OAAQ8E,IAAO,CAEzC,IAAM8/O,EAAO50B,EAAOlrN,GAEf8/O,EAAKt/K,QAAUs/K,EAAKt/K,OAAO4+K,SAE/B7uD,EAASnwL,KAAM,EAAG,EAAG,GACrBmwL,EAASnwL,KAAM,EAAG,EAAG,GACrBk/G,EAAOl/G,KAAM2/J,EAAOv1J,EAAGu1J,EAAO/1J,EAAG+1J,EAAOl2J,GACxCy1G,EAAOl/G,KAAM4/J,EAAOx1J,EAAGw1J,EAAOh2J,EAAGg2J,EAAOn2J,GAI1C,CAEAukK,EAASh4J,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACzEniB,EAASh4J,aAAc,QAAS,IAAI+xK,GAAwB7oE,EAAQ,IAEpE,IAAM68D,EAAW,IAAIuuC,GAAmB,CAAEtrC,cAAc,EAAMS,WAAW,EAAOC,YAAY,EAAOoB,YAAY,EAAO7B,aAAa,IAWrG,OAT9Bm7G,EAAAD,EAAAp6R,KAAA,KAAOiuK,EAAU+N,IAEZj0K,KAAO,iBACZsyR,EAAKE,kBAAmB,EAExBF,EAAKhkR,KAAO/Q,EACZ+0R,EAAKtvE,MAAQA,EAEbsvE,EAAKx9H,OAASv3J,EAAO8lK,YACrBivH,EAAKt4H,kBAAmB,EAAMs4H,CAE/B,CAmCC,OAnCA3tR,EAAAwtR,EAAA,EAAAv0R,IAAA,oBAAA/D,MAED,SAAmB64K,GAElB,IAAMswC,EAAQ5nN,KAAK4nN,MAEb98C,EAAW9qK,KAAK8qK,SAChBvrG,EAAWurG,EAASlhG,aAAc,YAExCktN,GAAgBp7H,KAAM17J,KAAKkT,KAAK+0J,aAAcn4B,SAE9C,IAAM,IAAIpzI,EAAI,EAAGmT,EAAI,EAAGnT,EAAIkrN,EAAMhwN,OAAQ8E,IAAO,CAEhD,IAAM8/O,EAAO50B,EAAOlrN,GAEf8/O,EAAKt/K,QAAUs/K,EAAKt/K,OAAO4+K,SAE/B+6C,GAAYv/H,iBAAkBw/H,GAAiBt6C,EAAKv0E,aACpD2uH,GAAUhgH,sBAAuBigH,IACjCt3N,EAASyjH,OAAQnzK,EAAG+mR,GAAU16R,EAAG06R,GAAUvvR,EAAGuvR,GAAUtvR,GAExDuvR,GAAYv/H,iBAAkBw/H,GAAiBt6C,EAAKt/K,OAAO+qG,aAC3D2uH,GAAUhgH,sBAAuBigH,IACjCt3N,EAASyjH,OAAQnzK,EAAI,EAAG+mR,GAAU16R,EAAG06R,GAAUvvR,EAAGuvR,GAAUtvR,GAE5DuI,GAAK,EAIP,CAEAi7J,EAASlhG,aAAc,YAAa01F,aAAc,EAElDp4B,GAAA5rH,EAAAy7Q,EAAAn6R,WAAA,0BAAAC,KAAA,KAAyBy6K,EAE1B,KAACy/G,CAAA,CAhFkB,CAAS53C,IAqF7B,SAASg4C,GAAah1R,GAErB,IAAMk1R,EAAW,IAEM,IAAlBl1R,EAAO25O,QAEXu7C,EAASv6R,KAAMqF,GAIhB,IAAM,IAAIzF,EAAI,EAAGA,EAAIyF,EAAOyb,SAAShmB,OAAQ8E,IAE5C26R,EAASv6R,KAAKgD,MAAOu3R,EAAUF,GAAah1R,EAAOyb,SAAUlhB,KAI9D,OAAO26R,CAER,CAAC,IAEKC,GAAgB,SAAAC,GAAAv7Q,EAAAs7Q,EAAAC,GAAA,IAAAC,EAAA78Q,EAAA28Q,GAErB,SAAAA,EAAapmN,EAAOumN,EAAYjwP,GAAQ,IAAAkwP,EAAAjtR,EAAA,KAAA6sR,GAEvC,IAAMxsH,EAAW,IAAIqyF,GAAgBs6B,EAAY,EAAG,GAC9C5+G,EAAW,IAAImJ,GAAmB,CAAER,WAAW,EAAM7F,KAAK,EAAOiC,YAAY,IAiBnF,OAfA85G,EAAAF,EAAA36R,KAAA,KAAOiuK,EAAU+N,IAEZ3nG,MAAQA,EACbwmN,EAAKxmN,MAAMqmG,oBAEXmgH,EAAKlwP,MAAQA,EAEbkwP,EAAK9yR,KAAO,mBAEZ8yR,EAAKh+H,OAASg+H,EAAKxmN,MAAM+2F,YACzByvH,EAAK94H,kBAAmB,EAExB84H,EAAKp0H,SAGLo0H,CAuBD,CAoCC,OApCAnuR,EAAA+tR,EAAA,EAAA90R,IAAA,UAAA/D,MAED,WAECuB,KAAK8qK,SAASpJ,UACd1hK,KAAK64K,SAASnX,SAEf,GAAC,CAAAl/J,IAAA,SAAA/D,MAED,gBAEqB2L,IAAfpK,KAAKwnC,MAETxnC,KAAK64K,SAASrxI,MAAMvY,IAAKjvB,KAAKwnC,OAI9BxnC,KAAK64K,SAASrxI,MAAMk0H,KAAM17J,KAAKkxE,MAAM1pC,MAmBvC,KAAC8vP,CAAA,CAjFoB,CAASpsG,IAqFzBysG,GAA0B,IAAI7wH,GAC9B8wH,GAAwB,IAAIr8H,GAC5Bs8H,GAAwB,IAAIt8H,GAE5Bu8H,GAAqB,SAAAC,GAAA/7Q,EAAA87Q,EAAAC,GAAA,IAAAC,EAAAr9Q,EAAAm9Q,GAE1B,SAAAA,EAAa5mN,EAAO3rB,EAAM/d,GAAQ,IAAAywP,EAAAxtR,EAAA,KAAAqtR,IAEjCG,EAAAD,EAAAn7R,KAAA,OACKq0E,MAAQA,EACb+mN,EAAK/mN,MAAMqmG,oBAEX0gH,EAAKv+H,OAASxoF,EAAM+2F,YACpBgwH,EAAKr5H,kBAAmB,EAExBq5H,EAAKzwP,MAAQA,EAEb,IAAMsjI,EAAW,IAAI+wF,GAAoBt2M,GACzCulH,EAASotH,QAAmB,GAAVj7R,KAAK00J,IAEvBsmI,EAAKp/G,SAAW,IAAImJ,GAAmB,CAAER,WAAW,EAAM7F,KAAK,EAAOiC,YAAY,SAC9DxzK,IAAf6tR,EAAKzwP,QAAsBywP,EAAKp/G,SAASiD,cAAe,GAE7D,IAAMv8G,EAAWurG,EAASlhG,aAAc,YAClCoyC,EAAS,IAAI64C,aAA+B,EAAjBt1F,EAASoe,OAM5B,OAJdmtF,EAASh4J,aAAc,QAAS,IAAI0vK,GAAiBxmE,EAAQ,IAE7Di8K,EAAK7rQ,IAAK,IAAI8+J,GAAMpgB,EAAUmtH,EAAKp/G,WAEnCo/G,EAAK30H,SAAS20H,CAEf,CAsCC,OAtCA1uR,EAAAuuR,EAAA,EAAAt1R,IAAA,UAAA/D,MAED,WAECuB,KAAK4d,SAAU,GAAIktJ,SAASpJ,UAC5B1hK,KAAK4d,SAAU,GAAIi7J,SAASnX,SAE7B,GAAC,CAAAl/J,IAAA,SAAA/D,MAED,WAEC,IAAM40L,EAAOrzL,KAAK4d,SAAU,GAE5B,QAAoBxT,IAAfpK,KAAKwnC,MAETxnC,KAAK64K,SAASrxI,MAAMvY,IAAKjvB,KAAKwnC,WAExB,CAEN,IAAMw0E,EAASq3E,EAAKvoB,SAASlhG,aAAc,SAE3CguN,GAAQl8H,KAAM17J,KAAKkxE,MAAM1pC,OACzBqwP,GAAQn8H,KAAM17J,KAAKkxE,MAAMmyH,aAEzB,IAAM,IAAI3mM,EAAI,EAAGmK,EAAIm1G,EAAOr+B,MAAOjhF,EAAImK,EAAGnK,IAAO,CAEhD,IAAM8qC,EAAU9qC,EAAMmK,EAAI,EAAQ+wR,GAAUC,GAE5C77K,EAAOgnE,OAAQtmL,EAAG8qC,EAAMtgC,EAAGsgC,EAAM9gC,EAAG8gC,EAAMjhC,EAE3C,CAEAy1G,EAAOsjD,aAAc,CAEtB,CAEA+zB,EAAKtc,OAAQ4gH,GAAU/gH,sBAAuB52K,KAAKkxE,MAAM+2F,aAAc2e,SAExE,KAACkxG,CAAA,CAlEyB,CAAStiH,IAsE9B2iH,GAAU,SAAAC,GAAAp8Q,EAAAm8Q,EAAAC,GAAA,IAAAC,EAAA19Q,EAAAw9Q,GAEf,SAAAA,IAA+E,IAAAG,EAAlE/yO,EAAItlD,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAImiP,EAASniP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAIw8J,EAAMx8J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,QAAUy8J,EAAMz8J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,QAAQwK,EAAA,KAAA0tR,GAE3E17H,EAAS,IAAIlB,GAAOkB,GACpBC,EAAS,IAAInB,GAAOmB,GAQpB,IANA,IAAMrG,EAAS+rF,EAAY,EACrB1zJ,EAAOnpC,EAAO68L,EACdh4E,EAAW7kH,EAAO,EAElB0nI,EAAW,GAAIjxE,EAAS,GAEpBt/G,EAAI,EAAGmT,EAAI,EAAGjJ,GAAMwjK,EAAU1tK,GAAK0lP,EAAW1lP,IAAMkK,GAAK8nF,EAAO,CAEzEu+F,EAASnwL,MAAQstK,EAAU,EAAGxjK,EAAGwjK,EAAU,EAAGxjK,GAC9CqmL,EAASnwL,KAAM8J,EAAG,GAAKwjK,EAAUxjK,EAAG,EAAGwjK,GAEvC,IAAM5iI,EAAQ9qC,IAAM25J,EAASoG,EAASC,EAEtCl1H,EAAM+/C,QAASy0B,EAAQnsG,GAAKA,GAAK,EACjC23B,EAAM+/C,QAASy0B,EAAQnsG,GAAKA,GAAK,EACjC23B,EAAM+/C,QAASy0B,EAAQnsG,GAAKA,GAAK,EACjC23B,EAAM+/C,QAASy0B,EAAQnsG,GAAKA,GAAK,CAElC,CAEA,IAAMi7J,EAAW,IAAI4a,GACrB5a,EAASh4J,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACzEniB,EAASh4J,aAAc,QAAS,IAAI+xK,GAAwB7oE,EAAQ,IAEpE,IAAM68D,EAAW,IAAIuuC,GAAmB,CAAEtrC,cAAc,EAAM8B,YAAY,IAIjD,OAFzB06G,EAAAD,EAAAx7R,KAAA,KAAOiuK,EAAU+N,IAEZj0K,KAAO,aAAa0zR,CAE1B,CAAC,OAAA/uR,EAAA4uR,EAAA,CArCc,CAASh5C,IAyCnBo5C,GAAe,SAAAC,GAAAx8Q,EAAAu8Q,EAAAC,GAAA,IAAAC,EAAA99Q,EAAA49Q,GAEpB,SAAAA,IAA4G,IAAAG,EAA/FxvH,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI04R,EAAO14R,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI24R,EAAO34R,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmiP,EAASniP,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAIw8J,EAAMx8J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,QAAUy8J,EAAMz8J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,QAAQwK,EAAA,KAAA8tR,GAExG97H,EAAS,IAAIlB,GAAOkB,GACpBC,EAAS,IAAInB,GAAOmB,GAOpB,IALA,IAAMuwB,EAAW,GACXjxE,EAAS,GAILt/G,EAAI,EAAGA,GAAKi8R,EAASj8R,IAAO,CAErC,IAAMyK,EAAMzK,EAAIi8R,GAAwB,EAAV17R,KAAK00J,IAE7Bz1J,EAAIe,KAAKm3J,IAAKjtJ,GAAM+hK,EACpB5hK,EAAIrK,KAAKk3J,IAAKhtJ,GAAM+hK,EAE1B+jB,EAASnwL,KAAM,EAAG,EAAG,GACrBmwL,EAASnwL,KAAMZ,EAAG,EAAGoL,GAErB,IAAMkgC,EAAc,EAAJ9qC,EAAU+/J,EAASC,EAEnC1gD,EAAOl/G,KAAM0qC,EAAMtgC,EAAGsgC,EAAM9gC,EAAG8gC,EAAMjhC,GACrCy1G,EAAOl/G,KAAM0qC,EAAMtgC,EAAGsgC,EAAM9gC,EAAG8gC,EAAMjhC,EAEtC,CAIA,IAAM,IAAI7J,EAAI,EAAGA,GAAKk8R,EAASl8R,IAM9B,IAJA,IAAM8qC,EAAc,EAAJ9qC,EAAU+/J,EAASC,EAE7Bx1J,EAAIgiK,EAAWA,EAAS0vH,EAAUl8R,EAE9BmT,EAAI,EAAGA,EAAIuyO,EAAWvyO,IAAO,CAItC,IAAI1I,EAAM0I,EAAIuyO,GAA0B,EAAVnlP,KAAK00J,IAE/Bz1J,EAAIe,KAAKm3J,IAAKjtJ,GAAMD,EACpBI,EAAIrK,KAAKk3J,IAAKhtJ,GAAMD,EAExB+lL,EAASnwL,KAAMZ,EAAG,EAAGoL,GACrB00G,EAAOl/G,KAAM0qC,EAAMtgC,EAAGsgC,EAAM9gC,EAAG8gC,EAAMjhC,GAIrCY,GAAQ0I,EAAI,GAAMuyO,GAA0B,EAAVnlP,KAAK00J,IAEvCz1J,EAAIe,KAAKm3J,IAAKjtJ,GAAMD,EACpBI,EAAIrK,KAAKk3J,IAAKhtJ,GAAMD,EAEpB+lL,EAASnwL,KAAMZ,EAAG,EAAGoL,GACrB00G,EAAOl/G,KAAM0qC,EAAMtgC,EAAGsgC,EAAM9gC,EAAG8gC,EAAMjhC,EAEtC,CAID,IAAMukK,EAAW,IAAI4a,GACrB5a,EAASh4J,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACzEniB,EAASh4J,aAAc,QAAS,IAAI+xK,GAAwB7oE,EAAQ,IAEpE,IAAM68D,EAAW,IAAIuuC,GAAmB,CAAEtrC,cAAc,EAAM8B,YAAY,IAI5C,OAF9B86G,EAAAD,EAAA57R,KAAA,KAAOiuK,EAAU+N,IAEZj0K,KAAO,kBAAkB8zR,CAE/B,CAAC,OAAAnvR,EAAAgvR,EAAA,CAzEmB,CAASp5C,IA6ExB05C,GAAoB,IAAI/xH,GACxBgyH,GAAoB,IAAIhyH,GACxBiyH,GAAoB,IAAIjyH,GAExBkyH,GAAsB,SAAAC,GAAAj9Q,EAAAg9Q,EAAAC,GAAA,IAAAC,EAAAv+Q,EAAAq+Q,GAE3B,SAAAA,EAAa9nN,EAAO3rB,EAAM/d,GAAQ,IAAA2xP,EAAA1uR,EAAA,KAAAuuR,IAEjCG,EAAAD,EAAAr8R,KAAA,OACKq0E,MAAQA,EACbioN,EAAKjoN,MAAMqmG,oBAEX4hH,EAAKz/H,OAASxoF,EAAM+2F,YACpBkxH,EAAKv6H,kBAAmB,EAExBu6H,EAAK3xP,MAAQA,OAECp9B,IAATm7C,IAAqBA,EAAO,GAEjC,IAAIulH,EAAW,IAAI4a,GACnB5a,EAASh4J,aAAc,WAAY,IAAI+xK,GAAwB,EAC5Dt/H,EAAMA,EAAM,EACdA,EAAMA,EAAM,EACZA,GAAQA,EAAM,GACZA,GAAQA,EAAM,GACdA,EAAMA,EAAM,GACZ,IAEH,IAAMszH,EAAW,IAAIuuC,GAAmB,CAAEzrC,KAAK,EAAOiC,YAAY,IAWpD,OATdu7G,EAAKC,WAAa,IAAIh7C,GAAMtzE,EAAU+N,GACtCsgH,EAAK/sQ,IAAK+sQ,EAAKC,aAEftuH,EAAW,IAAI4a,IACN5yK,aAAc,WAAY,IAAI+xK,GAAwB,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GAAK,IAErFs0G,EAAKE,WAAa,IAAIj7C,GAAMtzE,EAAU+N,GACtCsgH,EAAK/sQ,IAAK+sQ,EAAKE,YAEfF,EAAK71H,SAAS61H,CAEf,CAkCC,OAlCA5vR,EAAAyvR,EAAA,EAAAx2R,IAAA,UAAA/D,MAED,WAECuB,KAAKo5R,WAAWtuH,SAASpJ,UACzB1hK,KAAKo5R,WAAWvgH,SAASnX,UACzB1hK,KAAKq5R,WAAWvuH,SAASpJ,UACzB1hK,KAAKq5R,WAAWxgH,SAASnX,SAE1B,GAAC,CAAAl/J,IAAA,SAAA/D,MAED,WAECo6R,GAAIjiH,sBAAuB52K,KAAKkxE,MAAM+2F,aACtC6wH,GAAIliH,sBAAuB52K,KAAKkxE,MAAM3vE,OAAO0mK,aAC7C8wH,GAAIzjI,WAAYwjI,GAAKD,IAErB74R,KAAKo5R,WAAWriH,OAAQ+hH,SAEJ1uR,IAAfpK,KAAKwnC,OAETxnC,KAAKo5R,WAAWvgH,SAASrxI,MAAMvY,IAAKjvB,KAAKwnC,OACzCxnC,KAAKq5R,WAAWxgH,SAASrxI,MAAMvY,IAAKjvB,KAAKwnC,SAIzCxnC,KAAKo5R,WAAWvgH,SAASrxI,MAAMk0H,KAAM17J,KAAKkxE,MAAM1pC,OAChDxnC,KAAKq5R,WAAWxgH,SAASrxI,MAAMk0H,KAAM17J,KAAKkxE,MAAM1pC,QAIjDxnC,KAAKq5R,WAAWtiH,OAAQ+hH,IACxB94R,KAAKq5R,WAAWhiJ,MAAM/vI,EAAIyxR,GAAInhS,QAE/B,KAACohS,CAAA,CAvE0B,CAASxjH,IA2E/B8jH,GAAwB,IAAIxyH,GAC5ByyH,GAAwB,IAAI9pG,GAS5B+pG,GAAY,SAAAC,GAAAz9Q,EAAAw9Q,EAAAC,GAAA,IAAAC,EAAA/+Q,EAAA6+Q,GAEjB,SAAAA,EAAa5xH,GAAS,IAAA+xH,EAAAlvR,EAAA,KAAA+uR,GAErB,IAAM1uH,EAAW,IAAI4a,GACf7M,EAAW,IAAIuuC,GAAmB,CAAE5/K,MAAO,SAAUs0I,cAAc,EAAM8B,YAAY,IAErFqP,EAAW,GACXjxE,EAAS,GAET49K,EAAW,CAAC,EAIZC,EAAe,IAAIt+H,GAAO,UAC1Bu+H,EAAY,IAAIv+H,GAAO,UACvBw+H,EAAU,IAAIx+H,GAAO,OACrBy+H,EAAc,IAAIz+H,GAAO,UACzB0+H,EAAa,IAAI1+H,GAAO,SAiD9B,SAAS2+H,EAASl+R,EAAGuK,EAAGihC,GAEvB2yP,EAAUn+R,EAAGwrC,GACb2yP,EAAU5zR,EAAGihC,EAEd,CAEA,SAAS2yP,EAAU/6P,EAAIoI,GAEtBylJ,EAASnwL,KAAM,EAAG,EAAG,GACrBk/G,EAAOl/G,KAAM0qC,EAAMtgC,EAAGsgC,EAAM9gC,EAAG8gC,EAAMjhC,QAEb6D,IAAnBwvR,EAAUx6P,KAEdw6P,EAAUx6P,GAAO,IAIlBw6P,EAAUx6P,GAAKtiC,KAAQmwL,EAASr1L,OAAS,EAAM,EAEhD,CAiBc,OAlFdsiS,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GAIrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GAIrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GACrBK,EAAS,KAAM,KAAML,GAIrBK,EAAS,IAAK,KAAMJ,GACpBI,EAAS,IAAK,KAAMJ,GACpBI,EAAS,IAAK,KAAMJ,GACpBI,EAAS,IAAK,KAAMJ,GAIpBI,EAAS,KAAM,KAAMH,GACrBG,EAAS,KAAM,KAAMH,GACrBG,EAAS,KAAM,KAAMH,GAIrBG,EAAS,IAAK,IAAKF,GACnBE,EAAS,IAAK,IAAKD,GAInBC,EAAS,MAAO,MAAOD,GACvBC,EAAS,MAAO,MAAOD,GAEvBC,EAAS,MAAO,MAAOD,GACvBC,EAAS,MAAO,MAAOD,GAwBvBnvH,EAASh4J,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACzEniB,EAASh4J,aAAc,QAAS,IAAI+xK,GAAwB7oE,EAAQ,KAEpE29K,EAAAD,EAAA78R,KAAA,KAAOiuK,EAAU+N,IAEZj0K,KAAO,eAEZ+0R,EAAK/xH,OAASA,EACT+xH,EAAK/xH,OAAOyoB,wBAAyBspG,EAAK/xH,OAAOyoB,yBAEtDspG,EAAKjgI,OAASkO,EAAOK,YACrB0xH,EAAK/6H,kBAAmB,EAExB+6H,EAAKC,SAAWA,EAEhBD,EAAKr2H,SAASq2H,CAEf,CA4DC,OA5DApwR,EAAAiwR,EAAA,EAAAh3R,IAAA,SAAA/D,MAED,WAEC,IAAMqsK,EAAW9qK,KAAK8qK,SAChB8uH,EAAW55R,KAAK45R,SAOtBL,GAAQvxH,wBAAwBtM,KAAM17J,KAAK4nK,OAAOI,yBAIlDoyH,GAAU,IAAKR,EAAU9uH,EAAUyuH,GAAS,EAAG,GAAK,GACpDa,GAAU,IAAKR,EAAU9uH,EAAUyuH,GAAS,EAAG,EAAG,GAIlDa,GAAU,KAAMR,EAAU9uH,EAAUyuH,IAd1B,GAAO,GAcwC,GACzDa,GAAU,KAAMR,EAAU9uH,EAAUyuH,GAf1B,GAAO,GAesC,GACvDa,GAAU,KAAMR,EAAU9uH,EAAUyuH,IAhB1B,EAAO,GAgBsC,GACvDa,GAAU,KAAMR,EAAU9uH,EAAUyuH,GAjB1B,EAAO,GAiBoC,GAIrDa,GAAU,KAAMR,EAAU9uH,EAAUyuH,IArB1B,GAAO,EAqBsC,GACvDa,GAAU,KAAMR,EAAU9uH,EAAUyuH,GAtB1B,GAAO,EAsBoC,GACrDa,GAAU,KAAMR,EAAU9uH,EAAUyuH,IAvB1B,EAAO,EAuBoC,GACrDa,GAAU,KAAMR,EAAU9uH,EAAUyuH,GAxB1B,EAAO,EAwBkC,GAInDa,GAAU,KAAMR,EAAU9uH,EAAUyuH,GAASnyR,GAAST,KAAW,GACjEyzR,GAAU,KAAMR,EAAU9uH,EAAUyuH,IAAS,GAAW5yR,KAAW,GACnEyzR,GAAU,KAAMR,EAAU9uH,EAAUyuH,GAAS,EAAG5yR,GAAS,GAIzDyzR,GAAU,MAAOR,EAAU9uH,EAAUyuH,IAlC3B,EAkCyC,EAAG,GACtDa,GAAU,MAAOR,EAAU9uH,EAAUyuH,GAnC3B,EAmCuC,EAAG,GACpDa,GAAU,MAAOR,EAAU9uH,EAAUyuH,GAAS,GApC7B,EAoCqC,GACtDa,GAAU,MAAOR,EAAU9uH,EAAUyuH,GAAS,EArC7B,EAqCmC,GAEpDa,GAAU,MAAOR,EAAU9uH,EAAUyuH,IAvC3B,EAuCyC,GAAK,GACxDa,GAAU,MAAOR,EAAU9uH,EAAUyuH,GAxC3B,EAwCuC,GAAK,GACtDa,GAAU,MAAOR,EAAU9uH,EAAUyuH,GAAS,GAzC7B,GAyCuC,GACxDa,GAAU,MAAOR,EAAU9uH,EAAUyuH,GAAS,EA1C7B,GA0CqC,GAEtDzuH,EAASlhG,aAAc,YAAa01F,aAAc,CAEnD,GAAC,CAAA98J,IAAA,UAAA/D,MAED,WAECuB,KAAK8qK,SAASpJ,UACd1hK,KAAK64K,SAASnX,SAEf,KAAC83H,CAAA,CAtKgB,CAASr6C,IA2K3B,SAASi7C,GAAU1vH,EAAOkvH,EAAU9uH,EAAUlD,EAAQ1rK,EAAGmL,EAAGC,GAE3DgyR,GAAQrqQ,IAAK/yB,EAAGmL,EAAGC,GAAI6tR,UAAWvtH,GAElC,IAAMqC,EAAS2vH,EAAUlvH,GAEzB,QAAgBtgK,IAAX6/J,EAIJ,IAFA,IAAM1qG,EAAWurG,EAASlhG,aAAc,YAE9BltE,EAAI,EAAGmK,EAAIojK,EAAOryK,OAAQ8E,EAAImK,EAAGnK,IAE1C6iE,EAASyjH,OAAQ/Y,EAAQvtK,GAAK48R,GAAQp9R,EAAGo9R,GAAQjyR,EAAGiyR,GAAQhyR,EAM/D,CA+pBA,IA7pBA,IA8LI+yR,GAAeC,GA9LbC,GAAqB,IAAI7wH,GAEzB8wH,GAAS,SAAAC,GAAAz+Q,EAAAw+Q,EAAAC,GAAA,IAAAC,EAAA//Q,EAAA6/Q,GAEd,SAAAA,EAAar4R,GAA2B,IAAAw4R,EAAnBnzP,EAAKvnC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,SAAQwK,EAAA,KAAA+vR,GAEpC,IAAMrzG,EAAU,IAAIryB,YAAa,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAClGsyB,EAAY,IAAIvyB,aAAc,IAE9BiW,EAAW,IAAI4a,GAWP,OAVd5a,EAASkf,SAAU,IAAIxH,GAAiB2E,EAAS,IACjDrc,EAASh4J,aAAc,WAAY,IAAI0vK,GAAiB4E,EAAW,KAEnEuzG,EAAAD,EAAA79R,KAAA,KAAOiuK,EAAU,IAAIs8C,GAAmB,CAAE5/K,MAAOA,EAAOo2I,YAAY,MAE/Dz7K,OAASA,EACdw4R,EAAK/1R,KAAO,YAEZ+1R,EAAK/7H,kBAAmB,EAExB+7H,EAAKr3H,SAASq3H,CAEf,CAyEC,OAzEApxR,EAAAixR,EAAA,EAAAh4R,IAAA,SAAA/D,MAED,SAAQ0D,GAcP,QAZgBiI,IAAXjI,GAEJ4R,QAAQk/C,KAAM,4DAIM7oD,IAAhBpK,KAAKmC,QAETo4R,GAAKK,cAAe56R,KAAKmC,SAIrBo4R,GAAK9vH,UAAV,CAEA,IAAMv/H,EAAMqvP,GAAKrvP,IACXhuC,EAAMq9R,GAAKr9R,IAkBXqiE,EAAWv/D,KAAK8qK,SAAS54F,WAAW3S,SACpCx8D,EAAQw8D,EAASx8D,MAEvBA,EAAO,GAAM7F,EAAIhB,EAAG6G,EAAO,GAAM7F,EAAImK,EAAGtE,EAAO,GAAM7F,EAAIoK,EACzDvE,EAAO,GAAMmoC,EAAIhvC,EAAG6G,EAAO,GAAM7F,EAAImK,EAAGtE,EAAO,GAAM7F,EAAIoK,EACzDvE,EAAO,GAAMmoC,EAAIhvC,EAAG6G,EAAO,GAAMmoC,EAAI7jC,EAAGtE,EAAO,GAAM7F,EAAIoK,EACzDvE,EAAO,GAAM7F,EAAIhB,EAAG6G,EAAO,IAAOmoC,EAAI7jC,EAAGtE,EAAO,IAAO7F,EAAIoK,EAC3DvE,EAAO,IAAO7F,EAAIhB,EAAG6G,EAAO,IAAO7F,EAAImK,EAAGtE,EAAO,IAAOmoC,EAAI5jC,EAC5DvE,EAAO,IAAOmoC,EAAIhvC,EAAG6G,EAAO,IAAO7F,EAAImK,EAAGtE,EAAO,IAAOmoC,EAAI5jC,EAC5DvE,EAAO,IAAOmoC,EAAIhvC,EAAG6G,EAAO,IAAOmoC,EAAI7jC,EAAGtE,EAAO,IAAOmoC,EAAI5jC,EAC5DvE,EAAO,IAAO7F,EAAIhB,EAAG6G,EAAO,IAAOmoC,EAAI7jC,EAAGtE,EAAO,IAAOmoC,EAAI5jC,EAE5Di4D,EAAS+/F,aAAc,EAEvBt/J,KAAK8qK,SAASwb,uBAnCc,CAsC7B,GAAC,CAAA9jL,IAAA,gBAAA/D,MAED,SAAe0D,GAKd,OAHAnC,KAAKmC,OAASA,EACdnC,KAAKsjK,SAEEtjK,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA29O,GAAaviP,UAAU8+J,KAAK7+J,KAAMmD,KAAMwB,GAExCxB,KAAKmC,OAASX,EAAOW,OAEdnC,IAER,KAACw6R,CAAA,CA7Fa,CAASr7C,IAiGlB07C,GAAU,SAAAC,GAAA9+Q,EAAA6+Q,EAAAC,GAAA,IAAAC,EAAApgR,EAAAkgR,GAEf,SAAAA,EAAarwH,GAAwB,IAAAwwH,EAAnBxzP,EAAKvnC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,SAAQwK,EAAA,KAAAowR,GAEjC,IAAM1zG,EAAU,IAAIryB,YAAa,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAIlGgW,EAAW,IAAI4a,GAYiB,OAVtC5a,EAASkf,SAAU,IAAIxH,GAAiB2E,EAAS,IAEjDrc,EAASh4J,aAAc,WAAY,IAAI+xK,GANrB,CAAE,EAAG,EAAG,GAAK,EAAG,EAAG,GAAK,GAAK,EAAG,EAAG,GAAK,EAAG,EAAG,EAAG,GAAK,GAAK,EAAG,GAAK,GAAK,GAAK,GAAK,EAAG,GAAK,GAAK,GAMvC,KAE1Em2G,EAAAD,EAAAl+R,KAAA,KAAOiuK,EAAU,IAAIs8C,GAAmB,CAAE5/K,MAAOA,EAAOo2I,YAAY,MAE/DpT,IAAMA,EAEXwwH,EAAKp2R,KAAO,aAEZo2R,EAAKlwH,SAASwb,wBAAwB00G,CAEvC,CAgBC,OAhBAzxR,EAAAsxR,EAAA,EAAAr4R,IAAA,oBAAA/D,MAED,SAAmB64K,GAElB,IAAM9M,EAAMxqK,KAAKwqK,IAEZA,EAAIC,YAETD,EAAIiB,UAAWzrK,KAAKu/D,UAEpBirG,EAAI6B,QAASrsK,KAAKq3I,OAElBr3I,KAAKq3I,MAAMke,eAAgB,IAE3BruB,GAAA5rH,EAAAu/Q,EAAAj+R,WAAA,0BAAAC,KAAA,KAAyBy6K,GAE1B,KAACujH,CAAA,CAtCc,CAAS17C,IA0CnB87C,GAAW,SAAAC,GAAAl/Q,EAAAi/Q,EAAAC,GAAA,IAAAC,EAAAxgR,EAAAsgR,GAEhB,SAAAA,EAAa3vH,GAAkC,IAAA8vH,EAA3B71O,EAAItlD,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG47J,EAAG57J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,SAAQwK,EAAA,KAAAwwR,GAE3C,IAAMzzP,EAAQq0H,EAIRiP,EAAW,IAAI4a,GACrB5a,EAASh4J,aAAc,WAAY,IAAI+xK,GAHrB,CAAE,GAAK,EAAG,GAAK,EAAG,EAAG,GAAK,GAAK,EAAG,EAAG,EAAG,EAAG,GAAK,EAAG,EAAG,GAAK,GAAK,EAAG,EAAG,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGjD,IAC1E/Z,EAASwb,yBAET80G,EAAAD,EAAAt+R,KAAA,KAAOiuK,EAAU,IAAIs8C,GAAmB,CAAE5/K,MAAOA,EAAOo2I,YAAY,MAE/Dh5K,KAAO,cAEZw2R,EAAK9vH,MAAQA,EAEb8vH,EAAK71O,KAAOA,EAEZ,IAEMmkI,EAAY,IAAIhE,GAI8H,OAHpJgE,EAAU52K,aAAc,WAAY,IAAI+xK,GAHrB,CAAE,EAAG,EAAG,GAAK,EAAG,EAAG,GAAK,GAAK,EAAG,EAAG,EAAG,EAAG,GAAK,GAAK,EAAG,EAAG,GAAK,EAAG,GAGR,IAC5E6E,EAAUpD,wBAEV80G,EAAKhvQ,IAAK,IAAI8+J,GAAMxB,EAAW,IAAI1H,GAAmB,CAAEx6I,MAAOA,EAAOhT,QAAS,GAAKunJ,aAAa,EAAMS,YAAY,EAAOoB,YAAY,MAAcw9G,CAErJ,CAgBC,OAhBA7xR,EAAA0xR,EAAA,EAAAz4R,IAAA,oBAAA/D,MAED,SAAmB64K,GAElB,IAAIjgC,GAAUr3I,KAAKsrK,MAAMC,SAEpBtuK,KAAK4f,IAAKw6H,GAAU,OAAOA,EAAQ,MAExCr3I,KAAKq3I,MAAMpoH,IAAK,GAAMjvB,KAAKulD,KAAM,GAAMvlD,KAAKulD,KAAM8xF,GAElDr3I,KAAK4d,SAAU,GAAIi7J,SAASgD,KAASxkC,EAAQ,EAAM+P,GAAWD,GAE9DnnJ,KAAK+2K,OAAQ/2K,KAAKsrK,MAAMvC,QAExB7hC,GAAA5rH,EAAA2/Q,EAAAr+R,WAAA,0BAAAC,KAAA,KAAyBy6K,EAE1B,KAAC2jH,CAAA,CA5Ce,CAAS78C,IAgDpBi9C,GAAsB,IAAIv0H,GAG1Bw0H,GAAW,SAAAC,GAAAv/Q,EAAAs/Q,EAAAC,GAAA,IAAAC,EAAA7gR,EAAA2gR,GAIhB,SAAAA,IAAoK,IAAAG,EAAvJ/0H,EAAGzmK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAS,EAAG,EAAG,GAAK1uE,EAAMn4F,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAS,EAAG,EAAG,GAAKlvK,EAAMqI,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGunC,EAAKvnC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,SAAUy7R,EAAUz7R,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAY,GAATrI,EAAc+jS,EAAS17R,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAgB,GAAby7R,EA2BhG,OA3BgHjxR,EAAA,KAAA6wR,IAEhKG,EAAAD,EAAA3+R,KAAA,OAEK+H,KAAO,mBAEWwF,IAAlBiwR,MAEJA,GAAgB,IAAI30G,IACN5yK,aAAc,WAAY,IAAI+xK,GAAwB,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GAAK,KAE1Fy1G,GAAgB,IAAIztC,GAAkB,EAAG,GAAK,EAAG,EAAG,IACtChmE,UAAW,GAAK,GAAK,IAIpC40G,EAAKl8N,SAASm8F,KAAMtjE,GAEpBqjM,EAAKptL,KAAO,IAAI+vI,GAAMi8C,GAAe,IAAIjzE,GAAmB,CAAE5/K,MAAOA,EAAOo2I,YAAY,KACxF69G,EAAKptL,KAAKuwD,kBAAmB,EAC7B68H,EAAKrvQ,IAAKqvQ,EAAKptL,MAEfotL,EAAKhF,KAAO,IAAIvrG,GAAMovG,GAAe,IAAIt4G,GAAmB,CAAEx6I,MAAOA,EAAOo2I,YAAY,KACxF69G,EAAKhF,KAAK73H,kBAAmB,EAC7B68H,EAAKrvQ,IAAKqvQ,EAAKhF,MAEfgF,EAAKG,aAAcl1H,GACnB+0H,EAAKI,UAAWjkS,EAAQ8jS,EAAYC,GAAYF,CAEjD,CAqDC,OArDAlyR,EAAA+xR,EAAA,EAAA94R,IAAA,eAAA/D,MAED,SAAcioK,GAIb,GAAKA,EAAIr/J,EAAI,OAEZrH,KAAKojK,WAAWn0I,IAAK,EAAG,EAAG,EAAG,QAExB,GAAKy3I,EAAIr/J,GAAM,OAErBrH,KAAKojK,WAAWn0I,IAAK,EAAG,EAAG,EAAG,OAExB,CAENosQ,GAAMpsQ,IAAKy3I,EAAIp/J,EAAG,GAAKo/J,EAAIxqK,GAAI2kH,YAE/B,IAAMozC,EAAUh3J,KAAK4iK,KAAM6G,EAAIr/J,GAE/BrH,KAAKojK,WAAW+D,iBAAkBk0H,GAAOpnI,EAE1C,CAED,GAAC,CAAAzxJ,IAAA,YAAA/D,MAED,SAAW7G,GAAkE,IAA1D8jS,EAAUz7R,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAY,GAATrI,EAAc+jS,EAAS17R,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAgB,GAAby7R,EAEzD17R,KAAKquG,KAAKgpC,MAAMpoH,IAAK,EAAGhyB,KAAKC,IAAK,KAAQtF,EAAS8jS,GAAc,GACjE17R,KAAKquG,KAAKgoE,eAEVr2K,KAAKy2R,KAAKp/I,MAAMpoH,IAAK0sQ,EAAWD,EAAYC,GAC5C37R,KAAKy2R,KAAKl3N,SAASl4D,EAAIzP,EACvBoI,KAAKy2R,KAAKpgH,cAEX,GAAC,CAAA7zK,IAAA,WAAA/D,MAED,SAAU+oC,GAETxnC,KAAKquG,KAAKwqE,SAASrxI,MAAMvY,IAAKuY,GAC9BxnC,KAAKy2R,KAAK59G,SAASrxI,MAAMvY,IAAKuY,EAE/B,GAAC,CAAAhlC,IAAA,OAAA/D,MAED,SAAM+C,GAOL,OALA0lI,GAAA5rH,EAAAggR,EAAA1+R,WAAA,aAAAC,KAAA,KAAY2E,GAAQ,GAEpBxB,KAAKquG,KAAKqtD,KAAMl6J,EAAO6sG,MACvBruG,KAAKy2R,KAAK/6H,KAAMl6J,EAAOi1R,MAEhBz2R,IAER,KAACs7R,CAAA,CAtFe,CAAS9lH,IA0FpBsmH,GAAU,SAAAC,GAAA//Q,EAAA8/Q,EAAAC,GAAA,IAAAC,EAAArhR,EAAAmhR,GAEf,SAAAA,IAAwB,IAAAG,EAAX12O,EAAItlD,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAqxR,GAEpB,IAAM7uG,EAAW,CAChB,EAAG,EAAG,EAAG1nI,EAAM,EAAG,EAClB,EAAG,EAAG,EAAG,EAAGA,EAAM,EAClB,EAAG,EAAG,EAAG,EAAG,EAAGA,GASVulH,EAAW,IAAI4a,GACrB5a,EAASh4J,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACzEniB,EAASh4J,aAAc,QAAS,IAAI+xK,GARrB,CACd,EAAG,EAAG,EAAG,EAAG,GAAK,EACjB,EAAG,EAAG,EAAG,GAAK,EAAG,EACjB,EAAG,EAAG,EAAG,EAAG,GAAK,GAKkD,IAEpE,IAAMhM,EAAW,IAAIuuC,GAAmB,CAAEtrC,cAAc,EAAM8B,YAAY,IAIjD,OAFzBq+G,EAAAD,EAAAn/R,KAAA,KAAOiuK,EAAU+N,IAEZj0K,KAAO,aAAaq3R,CAE1B,CA8BC,OA9BA1yR,EAAAuyR,EAAA,EAAAt5R,IAAA,YAAA/D,MAED,SAAWy9R,EAAYC,EAAYC,GAElC,IAAM50P,EAAQ,IAAI+zH,GACZx4J,EAAQ/C,KAAK8qK,SAAS54F,WAAW1qC,MAAMzkC,MAgB7C,OAdAykC,EAAMvY,IAAKitQ,GACX10P,EAAM+/C,QAASxkF,EAAO,GACtBykC,EAAM+/C,QAASxkF,EAAO,GAEtBykC,EAAMvY,IAAKktQ,GACX30P,EAAM+/C,QAASxkF,EAAO,GACtBykC,EAAM+/C,QAASxkF,EAAO,GAEtBykC,EAAMvY,IAAKmtQ,GACX50P,EAAM+/C,QAASxkF,EAAO,IACtBykC,EAAM+/C,QAASxkF,EAAO,IAEtB/C,KAAK8qK,SAAS54F,WAAW1qC,MAAM83H,aAAc,EAEtCt/J,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAECuB,KAAK8qK,SAASpJ,UACd1hK,KAAK64K,SAASnX,SAEf,KAACo6H,CAAA,CAxDc,CAAS38C,IA4DnBk9C,GAAS,WAEd,SAAAA,IAAc5xR,EAAA,KAAA4xR,GAEbr8R,KAAK4E,KAAO,YAEZ5E,KAAKwnC,MAAQ,IAAI+zH,GAEjBv7J,KAAKs8R,SAAW,GAChBt8R,KAAKu8R,YAAc,IAEpB,CAgRC,OAhRAhzR,EAAA8yR,EAAA,EAAA75R,IAAA,SAAA/D,MAED,SAAQvC,EAAGmL,GAMV,OAJArH,KAAKu8R,YAAc,IAAIlyC,GACvBrqP,KAAKs8R,SAASx/R,KAAMkD,KAAKu8R,aACzBv8R,KAAKu8R,YAAY7xC,OAAQxuP,EAAGmL,GAErBrH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQvC,EAAGmL,GAIV,OAFArH,KAAKu8R,YAAY5xC,OAAQzuP,EAAGmL,GAErBrH,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBmsP,EAAMC,EAAMhH,EAAIC,GAIjC,OAFA9jP,KAAKu8R,YAAYC,iBAAkB5xC,EAAMC,EAAMhH,EAAIC,GAE5C9jP,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeqsP,EAAOC,EAAOC,EAAOC,EAAOpH,EAAIC,GAI9C,OAFA9jP,KAAKu8R,YAAYE,cAAe3xC,EAAOC,EAAOC,EAAOC,EAAOpH,EAAIC,GAEzD9jP,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYyrP,GAIX,OAFAlqP,KAAKu8R,YAAYG,WAAYxyC,GAEtBlqP,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAUk+R,EAAOC,GAEhB,SAASC,EAAiBC,GAIzB,IAFA,IAAMllH,EAAS,GAELl7K,EAAI,EAAGmK,EAAIi2R,EAAWllS,OAAQ8E,EAAImK,EAAGnK,IAAO,CAErD,IAAMqgS,EAAUD,EAAYpgS,GAEtBsgS,EAAW,IAAI9rC,GACrB8rC,EAAS3zC,OAAS0zC,EAAQ1zC,OAE1BzxE,EAAO96K,KAAMkgS,EAEd,CAEA,OAAOplH,CAER,CAEA,SAASqlH,EAAsB9kC,EAAM+kC,GASpC,IAPA,IAAMC,EAAUD,EAAUtlS,OAMtBsiH,GAAS,EACHlzG,EAAIm2R,EAAU,EAAGl2R,EAAI,EAAGA,EAAIk2R,EAASn2R,EAAIC,IAAO,CAEzD,IAAIm2R,EAAYF,EAAWl2R,GACvBq2R,EAAaH,EAAWj2R,GAExBq2R,EAASD,EAAWnhS,EAAIkhS,EAAUlhS,EAClCqhS,EAASF,EAAWh2R,EAAI+1R,EAAU/1R,EAEtC,GAAKpK,KAAK4f,IAAK0gR,GAAWlmR,OAAO6sJ,QAAU,CAU1C,GAPKq5H,EAAS,IAEbH,EAAYF,EAAWj2R,GAAKq2R,GAAWA,EACvCD,EAAaH,EAAWl2R,GAAKu2R,GAAWA,GAIlCplC,EAAK9wP,EAAI+1R,EAAU/1R,GAAS8wP,EAAK9wP,EAAIg2R,EAAWh2R,EAAQ,SAE/D,GAAK8wP,EAAK9wP,IAAM+1R,EAAU/1R,GAEzB,GAAK8wP,EAAKj8P,IAAMkhS,EAAUlhS,EAAK,OAAO,MAGhC,CAEN,IAAMshS,EAAWD,GAAWplC,EAAKj8P,EAAIkhS,EAAUlhS,GAAMohS,GAAWnlC,EAAK9wP,EAAI+1R,EAAU/1R,GACnF,GAAkB,IAAbm2R,EAAoB,OAAO,EAChC,GAAKA,EAAW,EAAQ,SACxBtjL,GAAWA,CAEZ,CAED,KAAO,CAGN,GAAKi+I,EAAK9wP,IAAM+1R,EAAU/1R,EAAM,SAEhC,GAASg2R,EAAWnhS,GAAKi8P,EAAKj8P,GAASi8P,EAAKj8P,GAAKkhS,EAAUlhS,GACrDkhS,EAAUlhS,GAAKi8P,EAAKj8P,GAASi8P,EAAKj8P,GAAKmhS,EAAWnhS,EAAS,OAAO,CAGzE,CAED,CAEA,OAAOg+G,CAER,CAEA,IAQIujL,EAAOV,EAASC,EARdrlC,EAAcjC,GAAWiC,YAEzB2kC,EAAWt8R,KAAKs8R,SACtB,GAAyB,IAApBA,EAAS1kS,OAAe,MAAO,GAEpC,IAAiB,IAAZglS,EAAmB,OAAOC,EAAiBP,GAIhD,IAAM1kH,EAAS,GAEf,GAAyB,IAApB0kH,EAAS1kS,OAMb,OAJAmlS,EAAUT,EAAU,IACpBU,EAAW,IAAI9rC,IACN7H,OAAS0zC,EAAQ1zC,OAC1BzxE,EAAO96K,KAAMkgS,GACNplH,EAIR,IAAI8lH,GAAe/lC,EAAa2kC,EAAU,GAAInyC,aAC9CuzC,EAAaf,GAAUe,EAAaA,EAIpC,IAIIC,EAiGAC,EArGEC,EAAmB,GACnBC,EAAY,GACdC,EAAgB,GAChBC,EAAU,EAGdF,EAAWE,QAAY5zR,EACvB2zR,EAAeC,GAAY,GAE3B,IAAM,IAAIthS,EAAI,EAAGmK,EAAIy1R,EAAS1kS,OAAQ8E,EAAImK,EAAGnK,IAI5C+gS,EAAQ9lC,EADRgmC,GADAZ,EAAUT,EAAU5/R,IACAytP,cAEpBszC,EAAQd,GAAUc,EAAQA,KAIhBC,GAAkBI,EAAWE,IAAcA,IAEpDF,EAAWE,GAAY,CAAEviS,EAAG,IAAIy1P,GAASlqP,EAAG22R,GAC5CG,EAAWE,GAAUviS,EAAE4tP,OAAS0zC,EAAQ1zC,OAEnCq0C,GAAaM,IAClBD,EAAeC,GAAY,IAM3BD,EAAeC,GAAUlhS,KAAM,CAAE6J,EAAGo2R,EAAS/1R,EAAG22R,EAAW,KAS7D,IAAOG,EAAW,GAAM,OAAOjB,EAAiBP,GAGhD,GAAKwB,EAAUlmS,OAAS,EAAI,CAK3B,IAHA,IAAIqmS,GAAY,EACZC,EAAW,EAELC,EAAO,EAAGC,EAAON,EAAUlmS,OAAQumS,EAAOC,EAAMD,IAEzDN,EAAkBM,GAAS,GAI5B,IAAM,IAAIA,EAAO,EAAGC,EAAON,EAAUlmS,OAAQumS,EAAOC,EAAMD,IAIzD,IAFA,IAAME,EAAMN,EAAeI,GAEjBG,EAAO,EAAGA,EAAOD,EAAIzmS,OAAQ0mS,IAAU,CAKhD,IAHA,IAAMC,EAAKF,EAAKC,GACZE,GAAkB,EAEZC,EAAQ,EAAGA,EAAQX,EAAUlmS,OAAQ6mS,IAEzCxB,EAAsBsB,EAAGv3R,EAAG82R,EAAWW,GAAQz3R,KAE9Cm3R,IAASM,GAAQP,IAEjBM,GAEJA,GAAkB,EAClBX,EAAkBY,GAAQ3hS,KAAMyhS,IAIhCN,GAAY,GAQVO,GAEJX,EAAkBM,GAAOrhS,KAAMyhS,EAIjC,CAIIL,EAAW,IAAmB,IAAdD,IAEpBF,EAAgBF,EAIlB,CAIA,IAAM,IAAInhS,EAAI,EAAGowD,EAAKgxO,EAAUlmS,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEtDsgS,EAAWc,EAAWphS,GAAIjB,EAC1Bm8K,EAAO96K,KAAMkgS,GAGb,IAAM,IAAIntR,EAAI,EAAGq3K,GAFjB02G,EAAWG,EAAerhS,IAEK9E,OAAQiY,EAAIq3K,EAAIr3K,IAE9CmtR,EAAS1rC,MAAMx0P,KAAM8gS,EAAU/tR,GAAIlJ,EAIrC,CAIA,OAAOixK,CAER,KAACykH,CAAA,CA3Ra,GAiSTqC,GAAS,oBAAAA,IAAAj0R,EAAA,KAAAi0R,EAAA,CAyBb,OAzBan1R,EAAAm1R,EAAA,OAAAl8R,IAAA,cAAA/D,MAId,SAAoB2C,GAEdnE,KAAK4f,IAAKzb,GAAQ,OAAQ2S,QAAQk/C,KAAM,sDAE7C7xD,EAAM8wJ,GAAO9wJ,GAAO,MAAO,OAE3Bu9R,GAAY,GAAMv9R,EAClB,IAAMqF,EAAIm4R,GAAa,GACjBt4R,EAAMG,GAAK,GAAO,IACxB,OAAOo4R,GAAYv4R,KAAc,QAAJG,IAAoBq4R,GAAax4R,GAE/D,GAEA,CAAA9D,IAAA,gBAAA/D,MAEA,SAAsB2C,GAErB,IAAM0F,EAAI1F,GAAO,GAEjB,OADAw9R,GAAa,GAAMG,GAAgBC,GAAcl4R,IAAc,KAAN1F,IAAkB69R,GAAgBn4R,GACpF63R,GAAY,EAEpB,KAACD,CAAA,CAzBa,GA+BTQ,GAAU,IAAIvsO,YAAa,GAC3BgsO,GAAa,IAAI9pI,aAAcqqI,IAC/BN,GAAc,IAAIr3L,YAAa23L,IAE/BL,GAAa,IAAIt3L,YAAa,KAC9Bu3L,GAAc,IAAIv3L,YAAa,KAE3B7qG,GAAI,EAAGA,GAAI,MAAQA,GAAI,CAEhC,IAAM4J,GAAI5J,GAAI,IAIT4J,IAAM,IAEVu4R,GAAYniS,IAAM,EAClBmiS,GAAgB,IAAJniS,IAAc,MAC1BoiS,GAAapiS,IAAM,GACnBoiS,GAAiB,IAAJpiS,IAAc,IAIhB4J,IAAM,IAEjBu4R,GAAYniS,IAAM,OAAc4J,GAAI,GACpCu4R,GAAgB,IAAJniS,IAAgB,OAAc4J,GAAI,GAAS,MACvDw4R,GAAapiS,KAAQ4J,GAAI,EACzBw4R,GAAiB,IAAJpiS,KAAgB4J,GAAI,GAItBA,IAAK,IAEhBu4R,GAAYniS,IAAQ4J,GAAI,IAAQ,GAChCu4R,GAAgB,IAAJniS,IAAkB4J,GAAI,IAAQ,GAAO,MACjDw4R,GAAapiS,IAAM,GACnBoiS,GAAiB,IAAJpiS,IAAc,IAIhB4J,GAAI,KAEfu4R,GAAYniS,IAAM,MAClBmiS,GAAgB,IAAJniS,IAAc,MAC1BoiS,GAAapiS,IAAM,GACnBoiS,GAAiB,IAAJpiS,IAAc,KAM3BmiS,GAAYniS,IAAM,MAClBmiS,GAAgB,IAAJniS,IAAc,MAC1BoiS,GAAapiS,IAAM,GACnBoiS,GAAiB,IAAJpiS,IAAc,GAI7B,CAQA,IAJA,IAAMqiS,GAAiB,IAAIx3L,YAAa,MAClC03L,GAAiB,IAAI13L,YAAa,IAClCy3L,GAAe,IAAIz3L,YAAa,IAE5B7qG,GAAI,EAAGA,GAAI,OAASA,GAAI,CAMjC,IAJA,IAAIoK,GAAIpK,IAAK,GACT4J,GAAI,EAGuB,KAAjB,QAAJQ,KAETA,KAAM,EACNR,IAAK,QAINQ,KAAK,QACLR,IAAK,UAELy4R,GAAgBriS,IAAMoK,GAAIR,EAE3B,CAEA,IAAM,IAAI5J,GAAI,KAAMA,GAAI,OAASA,GAEhCqiS,GAAgBriS,IAAM,WAAiBA,GAAI,MAAU,IAItD,IAAM,IAAIA,GAAI,EAAGA,GAAI,KAAOA,GAE3BuiS,GAAgBviS,IAAMA,IAAK,GAI5BuiS,GAAgB,IAAO,WACvBA,GAAgB,IAAO,WACvB,IAAM,IAAIviS,GAAI,GAAIA,GAAI,KAAOA,GAE5BuiS,GAAgBviS,IAAM,YAAiBA,GAAI,IAAQ,IAIpDuiS,GAAgB,IAAO,WAEvB,IAAM,IAAIviS,GAAI,EAAGA,GAAI,KAAOA,GAEhB,KAANA,KAEJsiS,GAActiS,IAAM,MAMtB,IAAMyiS,GAAY,EACZC,GAAa,EACbC,GAAW,EACXC,GAAa,EACbC,GAAe,EAErB,SAASC,GAAkB7nH,GAG1B,OADA5jK,QAAQk/C,KAAM,kEACP0kH,CAER,CAEA,SAAS8nH,KAAgC,IAAjB9nH,EAAS13K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAWnC,OATA8T,QAAQk/C,KAAM,+DACd0kH,EAAU+nH,iBAAkB,EAC5B/nH,EAAUA,UAAYA,EACtBA,EAAUz2K,MAAQ,WAEjB,OAAOy2K,EAAU/mK,OAElB,EAEO+mK,CAER,CAAC,IAEKgoH,GAAU,SAAAC,GAAA5jR,EAAA2jR,EAAAC,GAAA,IAAAC,EAAAllR,EAAAglR,GAEf,SAAAA,EAAa70H,EAAU+N,GAE+C,OAFpCpuK,EAAA,KAAAk1R,GAEjC5rR,QAAQk/C,KAAM,sDAAuD4sO,EAAAhjS,KAAA,KAC9DiuK,EAAU+N,EAElB,CAAC,OAAAtvK,EAAAo2R,EAAA,CAPc,CAASz/C,IAWnB4/C,GAAQ,SAAAC,GAAA/jR,EAAA8jR,EAAAC,GAAA,IAAAC,EAAArlR,EAAAmlR,GAEb,SAAAA,EAAajnH,GAEuD,OAF5CpuK,EAAA,KAAAq1R,GAEvB/rR,QAAQk/C,KAAM,oDAAqD+sO,EAAAnjS,KAAA,KAC5Dg8K,EAER,CAAC,OAAAtvK,EAAAu2R,EAAA,CAPY,CAAS1mD,IAWjB6mD,GAAc,SAAAC,GAAAlkR,EAAAikR,EAAAC,GAAA,IAAAC,EAAAxlR,EAAAslR,GAEnB,SAAAA,EAAan1H,EAAU+N,GAEmD,OAFxCpuK,EAAA,KAAAw1R,GAEjClsR,QAAQk/C,KAAM,0DAA2DktO,EAAAtjS,KAAA,KAClEiuK,EAAU+N,EAElB,CAAC,OAAAtvK,EAAA02R,EAAA,CAPkB,CAAS//C,IAWvBkgD,GAAkB,SAAAC,GAAArkR,EAAAokR,EAAAC,GAAA,IAAAC,EAAA3lR,EAAAylR,GAEvB,SAAAA,EAAa5nH,GAEyE,OAF5D/tK,EAAA,KAAA21R,GAEzBrsR,QAAQk/C,KAAM,sEAAuEqtO,EAAAzjS,KAAA,KAC9E27K,EAER,CAAC,OAAAjvK,EAAA62R,EAAA,CAPsB,CAAS94E,IAW3Bi5E,GAAqB,SAAAC,GAAAxkR,EAAAukR,EAAAC,GAAA,IAAAC,EAAA9lR,EAAA4lR,GAE1B,SAAAA,EAAa/nH,GAE4E,OAF/D/tK,EAAA,KAAA81R,GAEzBxsR,QAAQk/C,KAAM,yEAA0EwtO,EAAA5jS,KAAA,KACjF27K,EAER,CAAC,OAAAjvK,EAAAg3R,EAAA,CAPyB,CAASj5E,IAW9Bo5E,GAAsB,SAAAC,GAAA3kR,EAAA0kR,EAAAC,GAAA,IAAAC,EAAAjmR,EAAA+lR,GAE3B,SAAAA,EAAaloH,GAE6E,OAFhE/tK,EAAA,KAAAi2R,GAEzB3sR,QAAQk/C,KAAM,0EAA2E2tO,EAAA/jS,KAAA,KAClF27K,EAER,CAAC,OAAAjvK,EAAAm3R,EAAA,CAP0B,CAASp5E,IAW/Bu5E,GAAM,SAAAC,GAAA9kR,EAAA6kR,EAAAC,GAAA,IAAAC,EAAApmR,EAAAkmR,GAEX,SAAAA,EAAa3kS,EAAGmL,EAAGC,GAE0D,OAFtDmD,EAAA,KAAAo2R,GAEtB9sR,QAAQk/C,KAAM,6DAA8D8tO,EAAAlkS,KAAA,KACrEX,EAAGmL,EAAGC,EAEd,CAAC,OAAAiC,EAAAs3R,EAAA,CAPU,CAAS/5H,IAafk6H,GAAsB,SAAAC,GAAAjlR,EAAAglR,EAAAC,GAAA,IAAAC,EAAAvmR,EAAAqmR,GAE3B,SAAAA,EAAaj+R,EAAO0/K,GAAW,IAAA0+G,EAII,OAJJ12R,EAAA,KAAAu2R,GAE9BjtR,QAAQk/C,KAAM,+HACdkuO,EAAAD,EAAArkS,KAAA,KAAOkG,EAAO0/K,IACTq1D,SAAUnnF,IAAmBwwI,CAEnC,CAAC,OAAA53R,EAAAy3R,EAAA,CAR0B,CAASx+G,IAY/B4+G,GAAa,SAAAC,GAAArlR,EAAAolR,EAAAC,GAAA,IAAAC,EAAA3mR,EAAAymR,GAElB,SAAAA,EAAar+R,EAAO0/K,GAEkF,OAFvEh4K,EAAA,KAAA22R,GAE9BrtR,QAAQk/C,KAAM,sFAAuFquO,EAAAzkS,KAAA,KAC9FkG,EAAO0/K,EAEf,CAAC,OAAAl5K,EAAA63R,EAAA,CAPiB,CAASh+G,IAWtBm+G,GAAc,SAAAC,GAAAxlR,EAAAulR,EAAAC,GAAA,IAAAC,EAAA9mR,EAAA4mR,GAEnB,SAAAA,EAAax+R,EAAO0/K,GAEoF,OAFzEh4K,EAAA,KAAA82R,GAE9BxtR,QAAQk/C,KAAM,wFAAyFwuO,EAAA5kS,KAAA,KAChGkG,EAAO0/K,EAEf,CAAC,OAAAl5K,EAAAg4R,EAAA,CAPkB,CAASh+G,IAWvBm+G,GAAqB,SAAAC,GAAA3lR,EAAA0lR,EAAAC,GAAA,IAAAC,EAAAjnR,EAAA+mR,GAE1B,SAAAA,EAAa3+R,EAAO0/K,GAEkG,OAFvFh4K,EAAA,KAAAi3R,GAE9B3tR,QAAQk/C,KAAM,sGAAuG2uO,EAAA/kS,KAAA,KAC9GkG,EAAO0/K,EAEf,CAAC,OAAAl5K,EAAAm4R,EAAA,CAPyB,CAASh+G,IAW9Bm+G,GAAc,SAAAC,GAAA9lR,EAAA6lR,EAAAC,GAAA,IAAAC,EAAApnR,EAAAknR,GAEnB,SAAAA,EAAa9+R,EAAO0/K,GAEoF,OAFzEh4K,EAAA,KAAAo3R,GAE9B9tR,QAAQk/C,KAAM,wFAAyF8uO,EAAAllS,KAAA,KAChGkG,EAAO0/K,EAEf,CAAC,OAAAl5K,EAAAs4R,EAAA,CAPkB,CAASh+G,IAWvBm+G,GAAe,SAAAC,GAAAjmR,EAAAgmR,EAAAC,GAAA,IAAAC,EAAAvnR,EAAAqnR,GAEpB,SAAAA,EAAaj/R,EAAO0/K,GAEsF,OAF3Eh4K,EAAA,KAAAu3R,GAE9BjuR,QAAQk/C,KAAM,0FAA2FivO,EAAArlS,KAAA,KAClGkG,EAAO0/K,EAEf,CAAC,OAAAl5K,EAAAy4R,EAAA,CAPmB,CAASh+G,IAWxBm+G,GAAc,SAAAC,GAAApmR,EAAAmmR,EAAAC,GAAA,IAAAC,EAAA1nR,EAAAwnR,GAEnB,SAAAA,EAAap/R,EAAO0/K,GAEoF,OAFzEh4K,EAAA,KAAA03R,GAE9BpuR,QAAQk/C,KAAM,wFAAyFovO,EAAAxlS,KAAA,KAChGkG,EAAO0/K,EAEf,CAAC,OAAAl5K,EAAA44R,EAAA,CAPkB,CAASh+G,IAWvBm+G,GAAe,SAAAC,GAAAvmR,EAAAsmR,EAAAC,GAAA,IAAAC,EAAA7nR,EAAA2nR,GAEpB,SAAAA,EAAav/R,EAAO0/K,GAEsF,OAF3Eh4K,EAAA,KAAA63R,GAE9BvuR,QAAQk/C,KAAM,0FAA2FuvO,EAAA3lS,KAAA,KAClGkG,EAAO0/K,EAEf,CAAC,OAAAl5K,EAAA+4R,EAAA,CAPmB,CAASh+G,IAWxBm+G,GAAgB,SAAAC,GAAA1mR,EAAAymR,EAAAC,GAAA,IAAAC,EAAAhoR,EAAA8nR,GAErB,SAAAA,EAAa1/R,EAAO0/K,GAEwF,OAF7Eh4K,EAAA,KAAAg4R,GAE9B1uR,QAAQk/C,KAAM,4FAA6F0vO,EAAA9lS,KAAA,KACpGkG,EAAO0/K,EAEf,CAAC,OAAAl5K,EAAAk5R,EAAA,CAPoB,CAAS59G,IAWzB+9G,GAAgB,SAAAC,GAAA7mR,EAAA4mR,EAAAC,GAAA,IAAAC,EAAAnoR,EAAAioR,GAErB,SAAAA,EAAa7/R,EAAO0/K,GAEwF,OAF7Eh4K,EAAA,KAAAm4R,GAE9B7uR,QAAQk/C,KAAM,4FAA6F6vO,EAAAjmS,KAAA,KACpGkG,EAAO0/K,EAEf,CAAC,OAAAl5K,EAAAq5R,EAAA,CAPoB,CAAS59G,IAa/B+8D,GAAMhmO,OAAS,SAAWhB,EAAWonO,GAQpC,OANApuO,QAAQC,IAAK,4CAEb+G,EAAUne,UAAY2B,OAAOwd,OAAQgmO,GAAMnlP,WAC3Cme,EAAUne,UAAUud,YAAcY,EAClCA,EAAUne,UAAUulP,SAAWA,EAExBpnO,CAER,EAIAsvO,GAAKztP,UAAUmmS,WAAa,SAAW94H,GAGtC,OADAl2J,QAAQk/C,KAAM,mEACPjzD,KAAKusK,cAAetC,EAE5B,EAEA,IAEM+4H,GAAU,SAAAC,GAAAjnR,EAAAgnR,EAAAC,GAAA,IAAAC,EAAAvoR,EAAAqoR,GAEf,SAAAA,EAAaz9O,GAE6D,OAFtD96C,EAAA,KAAAu4R,GAEnBjvR,QAAQk/C,KAAM,0DAA2DiwO,EAAArmS,KAAA,KAClE0oD,EAER,CAAC,OAAAh8C,EAAAy5R,EAAA,CAPc,CAASlH,IAWnBqH,GAAiB,SAAAC,GAAApnR,EAAAmnR,EAAAC,GAAA,IAAAC,EAAA1oR,EAAAwoR,GAEtB,SAAAA,EAAahhS,EAAQqlC,GAE+E,OAFvE/8B,EAAA,KAAA04R,GAE5BpvR,QAAQk/C,KAAM,oFAAqFowO,EAAAxmS,KAAA,KAC5FsF,EAAQqlC,EAEhB,CAAC,OAAAj+B,EAAA45R,EAAA,CAPqB,CAAS3I,IAW1B8I,GAAW,SAAAC,GAAAvnR,EAAAsnR,EAAAC,GAAA,IAAAC,EAAA7oR,EAAA2oR,GAEhB,SAAAA,EAAanhS,EAAQ05J,GAEmE,OAF7DpxJ,EAAA,KAAA64R,GAE1BvvR,QAAQk/C,KAAM,wEAAyEuwO,EAAA3mS,KAAA,KAChF,IAAIkzP,GAAe5tP,EAAO2oK,UAAY,IAAIs8C,GAAmB,CAAE5/K,WAAep9B,IAARyxJ,EAAoBA,EAAM,WAExG,CAAC,OAAAtyJ,EAAA+5R,EAAA,CAPe,CAASnkD,IAW1Bg5C,GAAWv7R,UAAU6mS,UAAY,WAEhC1vR,QAAQwN,MAAO,2FAEhB,EAEAw1Q,GAAen6R,UAAU0mK,OAAS,WAEjCvvJ,QAAQwN,MAAO,+DAEhB,EAAE,IAEImiR,GAAe,SAAAC,GAAA3nR,EAAA0nR,EAAAC,GAAA,IAAAC,EAAAjpR,EAAA+oR,GAEpB,SAAAA,EAAavhS,EAAQ05J,GAE2E,OAFrEpxJ,EAAA,KAAAi5R,GAE1B3vR,QAAQk/C,KAAM,gFAAiF2wO,EAAA/mS,KAAA,KACxF,IAAI2iQ,GAAmBr9P,EAAO2oK,UAAY,IAAIs8C,GAAmB,CAAE5/K,WAAep9B,IAARyxJ,EAAoBA,EAAM,WAE5G,CAAC,OAAAtyJ,EAAAm6R,EAAA,CAPmB,CAASvkD,IAa9BywB,GAAOhzQ,UAAUg9Q,eAAiB,SAAW1xO,GAG5C,OADAn0B,QAAQk/C,KAAM,wGACPwlN,GAAYmB,eAAgB1xO,EAEpC,EAEA0nO,GAAOi0B,SAAW,CAEjBz3Q,IAAK,WAEJrY,QAAQwN,MAAO,0FAEhB,EAEAwO,IAAK,WAEJhc,QAAQwN,MAAO,0FAEhB,GAEC,IAEIuiR,GAAS,SAAAC,GAAA/nR,EAAA8nR,EAAAC,GAAA,IAAAC,EAAArpR,EAAAmpR,GAEd,SAAAA,EAAaj0B,GAE4D,OAFlDplQ,EAAA,KAAAq5R,GAEtB/vR,QAAQk/C,KAAM,yDAA0D+wO,EAAAnnS,KAAA,KACjEgzQ,EAER,CAAC,OAAAtmQ,EAAAu6R,EAAA,CAPa,CAAS5zB,IAWlB+zB,GAAmB,SAAAC,GAAAloR,EAAAioR,EAAAC,GAAA,IAAAC,EAAAxpR,EAAAspR,GAExB,SAAAA,EAAap0B,GAE6E,OAFnEplQ,EAAA,KAAAw5R,GAEtBlwR,QAAQk/C,KAAM,0EAA2EkxO,EAAAtnS,KAAA,KAClFgzQ,EAER,CAAC,OAAAtmQ,EAAA06R,EAAA,CAPuB,CAASpwB,IAalC+hB,GAAKh5R,UAAUy5J,OAAS,SAAW4rF,GAGlC,OADAluO,QAAQk/C,KAAM,2DACPjzD,KAAKyrK,UAAWw2E,EAExB,EAEA2zC,GAAKh5R,UAAUwnS,MAAQ,WAGtB,OADArwR,QAAQk/C,KAAM,wDACPjzD,KAAKyqK,SAEb,EAEAmrH,GAAKh5R,UAAUynS,kBAAoB,SAAW75H,GAG7C,OADAz2J,QAAQk/C,KAAM,0EACPjzD,KAAK6rL,cAAerhB,EAE5B,EAEAorH,GAAKh5R,UAAU2oD,KAAO,SAAW08L,GAGhC,OADAluO,QAAQk/C,KAAM,uDACPjzD,KAAKqsK,QAAS41E,EAEtB,EAIAv4E,GAAK9sK,UAAUy5J,OAAS,SAAW4rF,GAGlC,OADAluO,QAAQk/C,KAAM,2DACPjzD,KAAKyrK,UAAWw2E,EAExB,EAEAv4E,GAAK9sK,UAAUwnS,MAAQ,WAGtB,OADArwR,QAAQk/C,KAAM,wDACPjzD,KAAKyqK,SAEb,EAEAf,GAAK9sK,UAAUynS,kBAAoB,SAAW75H,GAG7C,OADAz2J,QAAQk/C,KAAM,0EACPjzD,KAAK6rL,cAAerhB,EAE5B,EAEAd,GAAK9sK,UAAU0nS,qBAAuB,SAAWl5H,GAGhD,OADAr3J,QAAQk/C,KAAM,gFACPjzD,KAAKutK,iBAAkBnC,EAE/B,EAEA1B,GAAK9sK,UAAU2oD,KAAO,SAAW08L,GAGhC,OADAluO,QAAQk/C,KAAM,uDACPjzD,KAAKqsK,QAAS41E,EAEtB,EAIA/tE,GAAMt3K,UAAU2nS,UAAY,WAE3BxwR,QAAQwN,MAAO,iFAEhB,EAKA2rJ,GAAOtwK,UAAUwnS,MAAQ,WAGxB,OADArwR,QAAQk/C,KAAM,0DACPjzD,KAAKyqK,SAEb,EAIA8pB,GAAQ33L,UAAU4nS,cAAgB,SAAW19R,GAG5C,OADAiN,QAAQk/C,KAAM,mFACPjzD,KAAKo1O,wBAAyBtuO,EAEtC,EAIAkvR,GAAMp5R,UAAUy5J,OAAS,SAAW4rF,GAGnC,OADAluO,QAAQk/C,KAAM,4DACPjzD,KAAKyrK,UAAWw2E,EAExB,EAIAzrF,GAAQ55J,UAAU6nS,qBAAuB,SAAW1hS,EAAOgnC,GAG1D,OADAh2B,QAAQk/C,KAAM,uFACPjzD,KAAKunF,QAASxkF,EAAOgnC,EAE7B,EAEAysH,GAAQ55J,UAAU8nS,gBAAkB,SAAW/5H,GAG9C,OADA52J,QAAQk/C,KAAM,kGACP03G,EAAOjL,aAAc1/J,KAE7B,EAEAw2J,GAAQ55J,UAAU+nS,qBAAuB,WAExC5wR,QAAQwN,MAAO,2DAEhB,EAEAi1I,GAAQ55J,UAAUgoS,uBAAyB,SAAW1uI,GAGrD,OADAniJ,QAAQk/C,KAAM,4GACPijG,EAAUwJ,aAAc1/J,KAEhC,EAEAw2J,GAAQ55J,UAAUioS,oBAAsB,WAEvC9wR,QAAQwN,MAAO,0DAEhB,EAEAi1I,GAAQ55J,UAAUkoS,WAAa,SAAWprI,GAGzC,OADA3lJ,QAAQk/C,KAAM,kGACPjzD,KAAK07J,KAAMhC,GAAS5pB,QAE5B,EAIA6gC,GAAQ/zK,UAAUmoS,gBAAkB,SAAWj+R,GAG9C,OADAiN,QAAQk/C,KAAM,0EACPjzD,KAAKkmM,aAAcp/L,EAE3B,EAEA6pK,GAAQ/zK,UAAU6nS,qBAAuB,SAAW1hS,EAAOgnC,GAG1D,OADAh2B,QAAQk/C,KAAM,uFACPjzD,KAAKunF,QAASxkF,EAAOgnC,EAE7B,EAEA4mI,GAAQ/zK,UAAUm7G,YAAc,WAG/B,OADAhkG,QAAQk/C,KAAM,yGACP,IAAI6zG,IAAUwC,oBAAqBtpK,KAAM,EAEjD,EAEA2wK,GAAQ/zK,UAAUooS,0BAA4B,SAAW/9R,GAGxD,OADA8M,QAAQk/C,KAAM,kGACPjzD,KAAKq0K,2BAA4BptK,EAEzC,EAEA0pK,GAAQ/zK,UAAUqoS,gBAAkB,WAEnClxR,QAAQk/C,KAAM,sDAEf,EAEA09G,GAAQ/zK,UAAU8nS,gBAAkB,SAAW/5H,GAG9C,OADA52J,QAAQk/C,KAAM,kGACP03G,EAAO9C,aAAc7nK,KAE7B,EAEA2wK,GAAQ/zK,UAAUsoS,gBAAkB,SAAWv6H,GAG9C,OADA52J,QAAQk/C,KAAM,kGACP03G,EAAO9C,aAAc7nK,KAE7B,EAEA2wK,GAAQ/zK,UAAU+nS,qBAAuB,WAExC5wR,QAAQwN,MAAO,2DAEhB,EAEAovJ,GAAQ/zK,UAAUuoS,WAAa,SAAWh+R,GAEzC4M,QAAQk/C,KAAM,oGACd9rD,EAAEupK,mBAAoB1wK,KAEvB,EAEA2wK,GAAQ/zK,UAAUwoS,YAAc,SAAWz6H,GAG1C,OADA52J,QAAQk/C,KAAM,8FACP03G,EAAO9C,aAAc7nK,KAE7B,EAEA2wK,GAAQ/zK,UAAUiqL,UAAY,WAE7B9yK,QAAQwN,MAAO,gDAEhB,EAEAovJ,GAAQ/zK,UAAUyoS,QAAU,WAE3BtxR,QAAQwN,MAAO,8CAEhB,EAEAovJ,GAAQ/zK,UAAUs7R,QAAU,WAE3BnkR,QAAQwN,MAAO,8CAEhB,EAEAovJ,GAAQ/zK,UAAU0oS,QAAU,WAE3BvxR,QAAQwN,MAAO,8CAEhB,EAEAovJ,GAAQ/zK,UAAU2oS,aAAe,WAEhCxxR,QAAQwN,MAAO,mDAEhB,EAEAovJ,GAAQ/zK,UAAUgoS,uBAAyB,SAAW1uI,GAGrD,OADAniJ,QAAQk/C,KAAM,4GACPijG,EAAU2R,aAAc7nK,KAEhC,EAEA2wK,GAAQ/zK,UAAUioS,oBAAsB,WAEvC9wR,QAAQwN,MAAO,0DAEhB,EAEAovJ,GAAQ/zK,UAAU4oS,YAAc,SAAWx5P,EAAMwzB,EAAOC,EAAQvzB,EAAK2nI,EAAMC,GAG1E,OADA//J,QAAQk/C,KAAM,wHACPjzD,KAAKgxL,gBAAiBhlJ,EAAMwzB,EAAOtzB,EAAKuzB,EAAQo0G,EAAMC,EAE9D,EAEAnD,GAAQ/zK,UAAUkoS,WAAa,SAAWprI,GAGzC,OADA3lJ,QAAQk/C,KAAM,kGACPjzD,KAAK07J,KAAMhC,GAAS5pB,QAE5B,EAIA6jD,GAAM/2L,UAAU6oS,mBAAqB,SAAWp3L,GAG/C,OADAt6F,QAAQk/C,KAAM,6EACPjzD,KAAK0lS,eAAgBr3L,EAE7B,EAIA00D,GAAWnmK,UAAU8nS,gBAAkB,SAAW/5H,GAGjD,OADA52J,QAAQk/C,KAAM,mHACP03G,EAAO3D,gBAAiBhnK,KAEhC,EAEA+iK,GAAWnmK,UAAU2/O,QAAU,WAG9B,OADAxoO,QAAQk/C,KAAM,8DACPjzD,KAAK8vI,QAEb,EAIAs+B,GAAIxxK,UAAUynS,kBAAoB,SAAW75H,GAG5C,OADAz2J,QAAQk/C,KAAM,yEACPjzD,KAAK6rL,cAAerhB,EAE5B,EAEA4D,GAAIxxK,UAAU+oS,oBAAsB,SAAWr6H,GAG9C,OADAv3J,QAAQk/C,KAAM,6EACPjzD,KAAKg0L,gBAAiB1oB,EAE9B,EAEA8C,GAAIxxK,UAAU0nS,qBAAuB,SAAWl5H,GAG/C,OADAr3J,QAAQk/C,KAAM,+EACPjzD,KAAKutK,iBAAkBnC,EAE/B,EAIAuO,GAAS/8K,UAAUi5B,KAAO,WAGzB,OADA9hB,QAAQk/C,KAAM,2DACPjzD,KAAK4lS,SAEb,EAEAjsH,GAAS/8K,UAAUipS,mBAAqB,SAAWn7H,EAAOnpK,GAGzD,OADAwS,QAAQk/C,KAAM,8EACPjzD,KAAKi6K,aAAcvP,EAAOnpK,EAElC,EAEAo4K,GAAS/8K,UAAUkpS,SAAW,SAAWvkS,GAGxC,OADAwS,QAAQk/C,KAAM,mEACPjzD,KAAK+lS,YAAaxkS,EAE1B,EAEAo4K,GAASqsH,gBAAkB,SAAWzkS,GAGrC,OADAwS,QAAQk/C,KAAM,+DACPjzD,KAAK+5K,UAAWx4K,EAExB,EAEAo4K,GAAS/8K,UAAU0uK,MAAQ,SAAW/pK,GAGrC,OADAwS,QAAQk/C,KAAM,6DACPjzD,KAAKimS,SAAU1kS,EAEvB,EAEAo4K,GAASksH,mBAAqB,SAAWn7H,EAAO1uK,EAAGuK,EAAGtK,EAAGsF,GAGxD,OADAwS,QAAQk/C,KAAM,8EACP0mH,GAASM,aAAcvP,EAAO1uK,EAAGuK,EAAGtK,EAAGsF,EAE/C,EAEAo4K,GAAS5Q,OAAS,SAAW/sK,EAAGuK,EAAGtK,EAAGsF,GAGrC,OADAwS,QAAQk/C,KAAM,+DACP0mH,GAASI,UAAW/9K,EAAGuK,EAAGtK,EAAGsF,EAErC,EAIA2vP,GAAMt0P,UAAUspS,iBAAmB,SAAW9jD,GAG7C,OADAruO,QAAQk/C,KAAM,oFACPjzD,KAAK03P,cAAetV,EAE5B,EAEA8O,GAAMt0P,UAAUupS,QAAU,SAAWllS,GAGpC,OADA8S,QAAQk/C,KAAM,4EACP,IAAI+iM,GAAiBh2P,KAAMiB,EAEnC,EAEAiwP,GAAMt0P,UAAUwpS,aAAe,SAAWnlS,GAGzC,OADA8S,QAAQk/C,KAAM,+EACP,IAAI0pM,GAAe38P,KAAMiB,EAEjC,EAIAk0J,GAAQv4J,UAAUypS,cAAgB,SAAWnwI,EAAWtnJ,EAAOm7B,GAG9D,OADAh2B,QAAQk/C,KAAM,+EACPjzD,KAAK+qK,oBAAqB7U,EAAWtnJ,EAAOm7B,EAEpD,EAEAorH,GAAQv4J,UAAU0pS,oBAAsB,SAAWn/R,GAGlD,OADA4M,QAAQk/C,KAAM,qFACPjzD,KAAKumS,oBAAqBp/R,EAElC,EAEAguJ,GAAQv4J,UAAU4pS,gBAAkB,WAGnC,OADAzyR,QAAQk/C,KAAM,6EACPjzD,KAAKo7O,iBAEb,EAIAt0E,GAAQlqK,UAAU6pS,2BAA6B,WAE9C1yR,QAAQwN,MAAO,4GAEhB,EAEAulJ,GAAQlqK,UAAU8pS,uBAAyB,WAE1C3yR,QAAQwN,MAAO,oGAEhB,EAEAulJ,GAAQlqK,UAAU+pS,sBAAwB,SAAW7/R,GAGpD,OADAiN,QAAQk/C,KAAM,yFACPjzD,KAAK42K,sBAAuB9vK,EAEpC,EAEAggK,GAAQlqK,UAAUgqS,mBAAqB,SAAW9/R,GAGjD,OADAiN,QAAQk/C,KAAM,mFACPjzD,KAAKy5O,mBAAoB3yO,EAEjC,EAEAggK,GAAQlqK,UAAUiqS,oBAAsB,SAAWj4R,EAAO8qJ,GAGzD,OADA3lJ,QAAQk/C,KAAM,qFACPjzD,KAAKspK,oBAAqB5P,EAAQ9qJ,EAE1C,EAEAk4J,GAAQlqK,UAAUkqS,gBAAkB,SAAWhgS,GAG9C,OADAiN,QAAQk/C,KAAM,uFACPjzD,KAAK6nK,aAAc/gK,EAE3B,EAEAggK,GAAQlqK,UAAUypS,cAAgB,SAAWnwI,EAAWtnJ,EAAOm7B,GAG9D,OADAh2B,QAAQk/C,KAAM,+EACPjzD,KAAK+qK,oBAAqB7U,EAAWtnJ,EAAOm7B,EAEpD,EAEA+8H,GAAQlqK,UAAU0pS,oBAAsB,SAAWn/R,GAGlD,OADA4M,QAAQk/C,KAAM,qFACPjzD,KAAKumS,oBAAqBp/R,EAElC,EAEA2/J,GAAQlqK,UAAU4pS,gBAAkB,WAGnC,OADAzyR,QAAQk/C,KAAM,6EACPjzD,KAAKo7O,iBAEb,EAIAx7E,GAAQhjK,UAAUypS,cAAgB,SAAWnwI,EAAWtnJ,EAAOm7B,GAG9D,OADAh2B,QAAQk/C,KAAM,+EACPjzD,KAAK+qK,oBAAqB7U,EAAWtnJ,EAAOm7B,EAEpD,EAEA61H,GAAQhjK,UAAU4pS,gBAAkB,WAGnC,OADAzyR,QAAQk/C,KAAM,6EACPjzD,KAAKo7O,iBAEb,EAIA5lE,GAAS54K,UAAUmqS,eAAiB,SAAW5tS,GAG9C,OADA4a,QAAQk/C,KAAM,6EACPjzD,KAAKgnS,gBAAiB7tS,EAE9B,EAEAq8K,GAAS54K,UAAUqqS,YAAc,WAEhClzR,QAAQk/C,KAAM,4EAEf,EAEAuiH,GAAS54K,UAAUiqL,UAAY,SAAWnQ,EAAU7S,GAGnD,OADA9vJ,QAAQk/C,KAAM,kGACPjzD,KAAK22K,gBAAiB9S,EAAM6S,EAEpC,EAEAlB,GAAS54K,UAAUsqS,iBAAmB,WAErCnzR,QAAQwN,MAAO,iHAEhB,EAEAi0J,GAAS54K,UAAUuqS,YAAc,SAAWztI,GAG3C,OADA3lJ,QAAQk/C,KAAM,uEACPjzD,KAAK6nK,aAAcnO,EAE3B,EAEAn7J,OAAOiL,iBAAkBgsK,GAAS54K,UAAW,CAE5CwqS,WAAY,CACXr3Q,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,uDACPjzD,KAAKs5J,SAAS/rJ,KAEtB,EACA0hB,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,uDACdjzD,KAAKs5J,SAAS/rJ,MAAQ9O,CAEvB,GAED4oS,cAAe,CACdt3Q,IAAK,WAEJhc,QAAQk/C,KAAM,gGAEf,EACAhkC,IAAK,WAEJlb,QAAQk/C,KAAM,gGAEf,KAKFi4H,GAAKtuL,UAAU0qS,YAAc,WAE5BvzR,QAAQwN,MAAO,4LAEhB,EAEAhjB,OAAOiL,iBAAkB0hL,GAAKtuL,UAAW,CAExC2qS,SAAU,CACTx3Q,IAAK,WAGJ,OADAhc,QAAQwN,MAAO,oGACRutI,EAER,EACA7/H,IAAK,WAEJlb,QAAQwN,MAAO,uLAEhB,KAKFs5N,GAAYj+O,UAAU4qS,UAAY,WAEjCzzR,QAAQwN,MAAO,mDAEhB,EAIAsuK,GAAkBjzL,UAAU6qS,QAAU,SAAWn3G,EAAaH,GAE7Dp8K,QAAQk/C,KAAM,oHAGK7oD,IAAd+lL,IAA0BnwL,KAAKmwL,UAAYA,GAChDnwL,KAAK0nS,eAAgBp3G,EAEtB,EAIA/xL,OAAOiL,iBAAkB4qQ,GAAMx3Q,UAAW,CACzC+qS,WAAY,CACX14Q,IAAK,WAEJlb,QAAQk/C,KAAM,6CAEf,GAED20O,gBAAiB,CAChB34Q,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,4DACdjzD,KAAKyjJ,OAAOmkB,OAAOqoB,IAAMxxL,CAE1B,GAEDopS,iBAAkB,CACjB54Q,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,8DACdjzD,KAAKyjJ,OAAOmkB,OAAO57H,KAAOvtC,CAE3B,GAEDqpS,kBAAmB,CAClB74Q,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,gEACdjzD,KAAKyjJ,OAAOmkB,OAAOpoG,MAAQ/gE,CAE5B,GAEDspS,gBAAiB,CAChB94Q,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,4DACdjzD,KAAKyjJ,OAAOmkB,OAAO17H,IAAMztC,CAE1B,GAEDupS,mBAAoB,CACnB/4Q,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,kEACdjzD,KAAKyjJ,OAAOmkB,OAAOnoG,OAAShhE,CAE7B,GAEDskM,iBAAkB,CACjB9zK,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,8DACdjzD,KAAKyjJ,OAAOmkB,OAAOiM,KAAOp1K,CAE3B,GAEDukM,gBAAiB,CAChB/zK,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,4DACdjzD,KAAKyjJ,OAAOmkB,OAAOkM,IAAMr1K,CAE1B,GAEDwpS,oBAAqB,CACpBh5Q,IAAK,WAEJlb,QAAQk/C,KAAM,iHAEf,GAED+uI,WAAY,CACX/yK,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,iDACdjzD,KAAKyjJ,OAAOgpE,KAAOhuN,CAEpB,GAEDypS,eAAgB,CACfj5Q,IAAK,WAEJlb,QAAQk/C,KAAM,iDAEf,GAEDk1O,eAAgB,CACfl5Q,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,8DACdjzD,KAAKyjJ,OAAOkpE,QAAQx+M,MAAQ1P,CAE7B,GAED2pS,gBAAiB,CAChBn5Q,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,gEACdjzD,KAAKyjJ,OAAOkpE,QAAQv+M,OAAS3P,CAE9B,KAMFF,OAAOiL,iBAAkBg5K,GAAgB5lL,UAAW,CAEnDhF,OAAQ,CACPm4B,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,2EACPjzD,KAAK+C,MAAMnL,MAEnB,GAEDywS,QAAS,CACRt4Q,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,4EACPjzD,KAAK0iL,QAAU/xB,EAEvB,EACA1hI,IAAK,WAEJlb,QAAQk/C,KAAM,4EACdjzD,KAAK83O,SAAUnnF,GAEhB,KAKF6xB,GAAgB5lL,UAAU0rS,WAAa,SAAW7pS,GAIjD,OAFAsV,QAAQk/C,KAAM,sFACdjzD,KAAK83O,UAAoB,IAAVr5O,EAAiBkyJ,GAAmBD,IAC5C1wJ,IAER,EAEAwiL,GAAgB5lL,UAAU2rS,iBAAmB,WAE5Cx0R,QAAQwN,MAAO,+DAEhB,EAEAihK,GAAgB5lL,UAAU4rS,SAAW,WAEpCz0R,QAAQwN,MAAO,0HAEhB,EAIAmkK,GAAe9oL,UAAU6rS,SAAW,SAAW75R,GAE9CmF,QAAQk/C,KAAM,sEACdjzD,KAAKgqL,SAAUp7K,EAEhB,EAEA82K,GAAe9oL,UAAU8rS,aAAe,SAAWvvS,EAAM+8J,GAIxD,OAFAniJ,QAAQk/C,KAAM,8EAELijG,GAAaA,EAAUitB,mBAA2BjtB,GAAaA,EAAUszB,6BAQpE,UAATrwL,GAEJ4a,QAAQk/C,KAAM,2EACdjzD,KAAKgqL,SAAU9zB,GAERl2J,MAIDA,KAAK8S,aAAc3Z,EAAM+8J,IAf/BniJ,QAAQk/C,KAAM,0EAEPjzD,KAAK8S,aAAc3Z,EAAM,IAAIqpL,GAAiBviL,UAAW,GAAKA,UAAW,KAelF,EAEAylL,GAAe9oL,UAAU+rS,YAAc,SAAW79P,EAAO6yC,EAAOo/K,QAE1C3yP,IAAhB2yP,GAEJhpP,QAAQk/C,KAAM,wEAIfl/C,QAAQk/C,KAAM,4DACdjzD,KAAK6pL,SAAU/+I,EAAO6yC,EAEvB,EAEA+nG,GAAe9oL,UAAUgsS,eAAiB,WAEzC70R,QAAQk/C,KAAM,kEACdjzD,KAAK6oS,aAEN,EAEAnjH,GAAe9oL,UAAUksS,eAAiB,WAEzC/0R,QAAQk/C,KAAM,4DAEf,EAEAyyH,GAAe9oL,UAAU2wB,gBAAkB,SAAWp0B,GAIrD,OAFA4a,QAAQk/C,KAAM,oFAEPjzD,KAAKgmM,gBAAiB7sM,EAE9B,EAEAusL,GAAe9oL,UAAUuqS,YAAc,SAAWztI,GAGjD,OADA3lJ,QAAQk/C,KAAM,6EACPjzD,KAAK6nK,aAAcnO,EAE3B,EAEAn7J,OAAOiL,iBAAkBk8K,GAAe9oL,UAAW,CAElD28Q,UAAW,CACVxpP,IAAK,WAGJ,OADAhc,QAAQwN,MAAO,iEACRvhB,KAAKgmL,MAEb,GAEDwzF,QAAS,CACRzpP,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,+DACPjzD,KAAKgmL,MAEb,KAKF2xD,GAAkB/6O,UAAU0rS,WAAa,SAAW7pS,GAInD,OAFAsV,QAAQk/C,KAAM,wFACdjzD,KAAK83O,UAAoB,IAAVr5O,EAAiBkyJ,GAAmBD,IAC5C1wJ,IAER,EAEA23O,GAAkB/6O,UAAU4rS,SAAW,WAEtCz0R,QAAQwN,MAAO,4HAEhB,EAIAy0O,GAAgBp5P,UAAUmsS,UAAY,WAErCh1R,QAAQwN,MAAO,wDAEhB,EAEAy0O,GAAgBp5P,UAAUosS,aAAe,WAExCj1R,QAAQwN,MAAO,2DAEhB,EAEAy0O,GAAgBp5P,UAAU05P,SAAW,WAEpCviP,QAAQwN,MAAO,uDAEhB,EAIAg2N,GAAM36O,UAAU8kK,QAAU,WAEzB3tJ,QAAQwN,MAAO,4CAEhB,EAIAozQ,GAAQ/3R,UAAUsiK,SAAW,WAG5B,OADAnrJ,QAAQk/C,KAAM,qFACPjzD,IAER,EAIAzB,OAAOiL,iBAAkB+xK,GAAS3+K,UAAW,CAE5CqsS,WAAY,CACXl5Q,IAAK,WAEJhc,QAAQk/C,KAAM,gDAEf,EACAhkC,IAAK,WAEJlb,QAAQk/C,KAAM,gDAEf,GAGDi2O,SAAU,CACTn5Q,IAAK,WAEJhc,QAAQk/C,KAAM,8CAEf,EACAhkC,IAAK,WAEJlb,QAAQk/C,KAAM,8CAEf,GAGDk2O,QAAS,CACRp5Q,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,8CACP,IAAIsoG,EAEZ,GAGDi9G,QAAS,CACRzoP,IAAK,WAEJhc,QAAQwN,MAAO,SAAWvhB,KAAK4E,KAAO,qEAEvC,EACAqqB,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,SAAWjzD,KAAK4E,KAAO,sEACrC5E,KAAKi+K,YAAgBx/K,IAAU6oJ,EAEhC,GAGDssE,YAAa,CACZ7jM,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,SAAWjzD,KAAK4E,KAAO,kEAC9B5E,KAAK48K,eAEb,EACA3tJ,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,SAAWjzD,KAAK4E,KAAO,kEACrC5E,KAAK48K,gBAAkBn+K,CAExB,GAGD2kN,eAAgB,CACfrzL,IAAK,WAEJhc,QAAQk/C,KAAM,SAAWjzD,KAAK4E,KAAO,sCAEtC,EACAqqB,IAAK,WAEJlb,QAAQk/C,KAAM,SAAWjzD,KAAK4E,KAAO,sCAEtC,KAKFrG,OAAOiL,iBAAkB+kL,GAAe3xL,UAAW,CAElDoyL,YAAa,CACZj/J,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,iFACPjzD,KAAKssF,WAAW0iG,WAExB,EACA//J,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,kFACdjzD,KAAKssF,WAAW0iG,YAAcvwL,CAE/B,KAOFkvO,GAAc/wO,UAAUwsS,YAAc,SAAW/3G,EAAc7pJ,EAAO+mE,EAAOglF,GAE5Ex/K,QAAQk/C,KAAM,yGACdjzD,KAAKyyL,gBAAiBpB,GACtBrxL,KAAKG,MAAOqnC,EAAO+mE,EAAOglF,EAE3B,EAEAo6C,GAAc/wO,UAAUysS,QAAU,SAAWlxP,GAE5CpkC,QAAQk/C,KAAM,+DACdjzD,KAAKq2L,iBAAkBl+I,EAExB,EAEAw1L,GAAc/wO,UAAU0sS,uBAAyB,WAGhD,OADAv1R,QAAQk/C,KAAM,6EACPjzD,KAAKkyL,iBAEb,EAEAy7C,GAAc/wO,UAAU0uM,iBAAmB,WAG1C,OADAv3L,QAAQk/C,KAAM,qFACPjzD,KAAKw2L,aAAa8U,kBAE1B,EAEAqiC,GAAc/wO,UAAU2sS,aAAe,WAGtC,OADAx1R,QAAQk/C,KAAM,wEACPjzD,KAAKw2L,aAAax5L,SAE1B,EAEA2wO,GAAc/wO,UAAU4sS,aAAe,WAGtC,OADAz1R,QAAQk/C,KAAM,+DACPjzD,KAAK4f,MAAM26C,OAEnB,EAEAozK,GAAc/wO,UAAU6sS,sBAAwB,WAG/C,OADA11R,QAAQk/C,KAAM,gGACPjzD,KAAKssF,WAAWv8D,IAAK,oBAE7B,EAEA49M,GAAc/wO,UAAU8sS,0BAA4B,WAGnD,OADA31R,QAAQk/C,KAAM,yGACPjzD,KAAKssF,WAAWv8D,IAAK,yBAE7B,EAEA49M,GAAc/wO,UAAU+sS,4BAA8B,WAGrD,OADA51R,QAAQk/C,KAAM,6GACPjzD,KAAKssF,WAAWv8D,IAAK,2BAE7B,EAEA49M,GAAc/wO,UAAUgtS,8BAAgC,WAGvD,OADA71R,QAAQk/C,KAAM,oHACPjzD,KAAKssF,WAAWv8D,IAAK,gCAE7B,EAEA49M,GAAc/wO,UAAUitS,+BAAiC,WAGxD,OADA91R,QAAQk/C,KAAM,sHACPjzD,KAAKssF,WAAWv8D,IAAK,iCAE7B,EAEA49M,GAAc/wO,UAAUktS,oBAAsB,WAG7C,OADA/1R,QAAQk/C,KAAM,6FACPjzD,KAAKssF,WAAWv8D,IAAK,mBAE7B,EAEA49M,GAAc/wO,UAAUmmN,uBAAyB,WAGhD,OADAhvM,QAAQk/C,KAAM,uFACPjzD,KAAKw2L,aAAa4U,cAE1B,EAEAuiC,GAAc/wO,UAAUmtS,wBAA0B,WAGjD,OADAh2R,QAAQk/C,KAAM,uGACPjzD,KAAKssF,WAAWv8D,IAAK,yBAE7B,EAEA49M,GAAc/wO,UAAUotS,kBAAoB,SAAWz3D,GAEtDx+N,QAAQk/C,KAAM,uEACdjzD,KAAKuxN,eAAgBghB,EAEtB,EAEA5E,GAAc/wO,UAAUqtS,aAAe,WAEtCl2R,QAAQk/C,KAAM,yDAEf,EAEA06K,GAAc/wO,UAAUstS,aAAe,WAEtCn2R,QAAQk/C,KAAM,yDAEf,EAEA06K,GAAc/wO,UAAUutS,cAAgB,WAEvCp2R,QAAQk/C,KAAM,0DAEf,EAEA06K,GAAc/wO,UAAUwtS,gBAAkB,WAEzCr2R,QAAQk/C,KAAM,4DAEf,EAEA06K,GAAc/wO,UAAUytS,eAAiB,WAExCt2R,QAAQk/C,KAAM,2DAEf,EAEA06K,GAAc/wO,UAAU0tS,iBAAmB,WAE1Cv2R,QAAQk/C,KAAM,6DAEf,EAEA06K,GAAc/wO,UAAU2tS,WAAa,WAEpCx2R,QAAQk/C,KAAM,uDAEf,EAEA06K,GAAc/wO,UAAU29M,aAAe,WAEtCxmM,QAAQk/C,KAAM,yDAEf,EAEA06K,GAAc/wO,UAAU+9M,eAAiB,WAExC5mM,QAAQk/C,KAAM,2DAEf,EAEA06K,GAAc/wO,UAAU4tS,qBAAuB,WAG9C,OADAz2R,QAAQk/C,KAAM,gFACPjzD,KAAKmxN,sBAEb,EAEA5yN,OAAOiL,iBAAkBmkO,GAAc/wO,UAAW,CAEjDinN,iBAAkB,CACjB9zL,IAAK,WAEJ,OAAO/vB,KAAK6oN,UAAUh4B,OAEvB,EACA5hK,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,qEACdjzD,KAAK6oN,UAAUh4B,QAAUpyL,CAE1B,GAEDmiN,cAAe,CACd7wL,IAAK,WAEJ,OAAO/vB,KAAK6oN,UAAUjkN,IAEvB,EACAqqB,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,+DACdjzD,KAAK6oN,UAAUjkN,KAAOnG,CAEvB,GAEDgsS,kBAAmB,CAClB16Q,IAAK,WAEJhc,QAAQk/C,KAAM,6FAGf,EACAhkC,IAAK,WAEJlb,QAAQk/C,KAAM,6FAEf,GAED1zD,QAAS,CACRwwB,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,8EACPjzD,KAAKi5I,YAEb,GAEDyxJ,GAAI,CACH36Q,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,oDACPjzD,KAAKwyL,EAEb,GAEDm4G,WAAY,CACX56Q,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,mHACP,CAER,EACAhkC,IAAK,WAEJlb,QAAQk/C,KAAM,iHAEf,GAED23O,YAAa,CACZ76Q,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,kGACP,CAER,EACAhkC,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,iGACdjzD,KAAKoyL,gBAA6B,IAAV3zL,EAAmBywJ,GAAeD,EAE3D,GAED47I,sBAAuB,CACtB96Q,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,iEACP,CAER,EACAhkC,IAAK,WAEJlb,QAAQk/C,KAAM,gEAEf,GAED63O,YAAa,CACZ/6Q,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,uDACP,CAER,EACAhkC,IAAK,WAEJlb,QAAQk/C,KAAM,sDAEf,KAIF10D,OAAOiL,iBAAkBolN,GAAehyN,UAAW,CAElD85N,SAAU,CACT3mM,IAAK,WAEJhc,QAAQk/C,KAAM,8FAGf,EACAhkC,IAAK,WAEJlb,QAAQk/C,KAAM,8FAEf,GAED83O,mBAAoB,CACnBh7Q,IAAK,WAEJhc,QAAQk/C,KAAM,wGAGf,EACAhkC,IAAK,WAEJlb,QAAQk/C,KAAM,wGAEf,GAED+3O,kBAAmB,CAClBj7Q,IAAK,WAEJhc,QAAQk/C,KAAM,uGAGf,EACAhkC,IAAK,WAEJlb,QAAQk/C,KAAM,uGAEf,KAGE,IAEEg4O,GAAqB,SAAAC,GAAAlvR,EAAAivR,EAAAC,GAAA,IAAAC,EAAAxwR,EAAAswR,GAE1B,SAAAA,EAAa98R,EAAOC,EAAQnN,GAE4F,OAFlFwJ,EAAA,KAAAwgS,GAErCl3R,QAAQk/C,KAAM,wGAAyGk4O,EAAAtuS,KAAA,KAChHsR,EAAOlN,EAEf,CAAC,OAAAsI,EAAA0hS,EAAA,CAPyB,CAASl4G,IAoPpC,SAASq4G,KAERr3R,QAAQwN,MAAO,wCAEhB,CAIA,SAAS8pR,KAERt3R,QAAQwN,MAAO,qCAEhB,CAnPAhjB,OAAOiL,iBAAkBw3J,GAAkBpkK,UAAW,CAErDuhK,MAAO,CACNpuI,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,0DACPjzD,KAAKqhK,QAAQlD,KAErB,EACAlvI,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,0DACdjzD,KAAKqhK,QAAQlD,MAAQ1/J,CAEtB,GAED2/J,MAAO,CACNruI,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,0DACPjzD,KAAKqhK,QAAQjD,KAErB,EACAnvI,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,0DACdjzD,KAAKqhK,QAAQjD,MAAQ3/J,CAEtB,GAED4/J,UAAW,CACVtuI,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,kEACPjzD,KAAKqhK,QAAQhD,SAErB,EACApvI,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,kEACdjzD,KAAKqhK,QAAQhD,UAAY5/J,CAE1B,GAED6/J,UAAW,CACVvuI,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,kEACPjzD,KAAKqhK,QAAQ/C,SAErB,EACArvI,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,kEACdjzD,KAAKqhK,QAAQ/C,UAAY7/J,CAE1B,GAED+/J,WAAY,CACXzuI,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,oEACPjzD,KAAKqhK,QAAQ7C,UAErB,EACAvvI,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,oEACdjzD,KAAKqhK,QAAQ7C,WAAa//J,CAE3B,GAEDsrC,OAAQ,CACPha,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,4DACPjzD,KAAKqhK,QAAQt3H,MAErB,EACA9a,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,4DACdjzD,KAAKqhK,QAAQt3H,OAAStrC,CAEvB,GAEDymC,OAAQ,CACPnV,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,4DACPjzD,KAAKqhK,QAAQn8H,MAErB,EACAjW,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,4DACdjzD,KAAKqhK,QAAQn8H,OAASzmC,CAEvB,GAED8/J,OAAQ,CACPxuI,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,4DACPjzD,KAAKqhK,QAAQ9C,MAErB,EACAtvI,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,4DACdjzD,KAAKqhK,QAAQ9C,OAAS9/J,CAEvB,GAEDmG,KAAM,CACLmrB,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,wDACPjzD,KAAKqhK,QAAQz8J,IAErB,EACAqqB,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,wDACdjzD,KAAKqhK,QAAQz8J,KAAOnG,CAErB,GAEDogK,gBAAiB,CAChB9uI,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,8EACPjzD,KAAKqhK,QAAQxC,eAErB,EACA5vI,IAAK,SAAWxwB,GAEfsV,QAAQk/C,KAAM,8EACdjzD,KAAKqhK,QAAQxC,gBAAkBpgK,CAEhC,KAOF4iR,GAAMzkR,UAAUgvE,KAAO,SAAW+I,GAEjC5gE,QAAQk/C,KAAM,0EACd,IAAM+5H,EAAQhtL,KAOd,OANoB,IAAIw9Q,IACZ5xM,KAAM+I,GAAM,SAAWwlF,GAElC6yB,EAAMs+G,UAAWnxI,EAElB,IACOn6J,IAER,EAGAokR,GAAcxnR,UAAUi2I,QAAU,WAGjC,OADA9+H,QAAQk/C,KAAM,+DACPjzD,KAAK2kR,kBAEb,EAIAzzF,GAAWt0L,UAAU2uS,cAAgB,SAAWz5G,EAAUC,GAGzD,OADAh+K,QAAQk/C,KAAM,wDACPjzD,KAAKsjK,OAAQwuB,EAAUC,EAE/B,EAEAb,GAAWt0L,UAAUuD,MAAQ,SAAW2xL,EAAUtqJ,EAAO+mE,EAAOglF,GAG/D,OADAx/K,QAAQk/C,KAAM,4DACPjzD,KAAKqxL,aAAalxL,MAAO2xL,EAAUtqJ,EAAO+mE,EAAOglF,EAEzD,EAEAz2B,GAAWrlB,iBAAcrtI,EAEzB0yJ,GAAWg2G,YAAc,SAAW5qO,EAAKo8G,EAAStK,EAAQ5hH,GAEzDrkB,QAAQk/C,KAAM,wFAEd,IAAM8wC,EAAS,IAAIkwK,GACnBlwK,EAAO6vK,eAAgB5zQ,KAAKy3I,aAE5B,IAAM4pB,EAAUt9D,EAAOn4B,KAAM1jC,EAAK8xG,OAAQ5vI,EAAWguB,GAIrD,OAFKksH,IAAU+c,EAAQ/c,QAAUA,GAE1B+c,CAER,EAEAvE,GAAW0uI,gBAAkB,SAAW73B,EAAMrvH,EAAStK,EAAQ5hH,GAE9DrkB,QAAQk/C,KAAM,gGAEd,IAAM8wC,EAAS,IAAIyvK,GACnBzvK,EAAO6vK,eAAgB5zQ,KAAKy3I,aAE5B,IAAM4pB,EAAUt9D,EAAOn4B,KAAM+nM,EAAM35H,OAAQ5vI,EAAWguB,GAItD,OAFKksH,IAAU+c,EAAQ/c,QAAUA,GAE1B+c,CAER,EAEAvE,GAAW2uI,sBAAwB,WAElC13R,QAAQwN,MAAO,wFAEhB,EAEAu7I,GAAW4uI,0BAA4B,WAEtC33R,QAAQwN,MAAO,4FAEhB,EAoBA,IAAMoqR,GAAa,CAElBC,0BAA2B,WAE1B73R,QAAQwN,MAAO,uEAEhB,EAEAsqR,OAAQ,WAEP93R,QAAQwN,MAAO,uEAEhB,EAEAuqR,OAAQ,WAEP/3R,QAAQwN,MAAO,uEAEhB,GAMD,SAASwqR,KAERh4R,QAAQwN,MAAO,uEAEhB,CAEA,IAEMyqR,GAAkB,SAAAC,GAAAjwR,EAAAgwR,EAAAC,GAAA,IAAAC,EAAAvxR,EAAAqxR,GAEvB,SAAAA,IAE8G,OAFhGvhS,EAAA,KAAAuhS,GAEbj4R,QAAQwN,MAAO,6FAA8F2qR,EAAArvS,KAAA,KAG9G,CAAC,OAAA0M,EAAAyiS,EAAA,CAPsB,CAAStmH,IAW3BymH,GAAY,SAAAC,GAAApwR,EAAAmwR,EAAAC,GAAA,IAAAC,EAAA1xR,EAAAwxR,GAEjB,SAAAA,IAEkG,OAFpF1hS,EAAA,KAAA0hS,GAEbp4R,QAAQwN,MAAO,iFAAkF8qR,EAAAxvS,KAAA,KAGlG,CAAC,OAAA0M,EAAA4iS,EAAA,CAPgB,CAASzmH,IAW3B,SAAS4mH,KAERv4R,QAAQwN,MAAO,yEAEhB,CAEA,SAASgrR,KAERx4R,QAAQwN,MAAO,mEAEhB,CAEA,SAASirR,KAERz4R,QAAQwN,MAAO,gDAEhB,CAAC,IAEKkrR,GAA4B,SAAAC,GAAA1wR,EAAAywR,EAAAC,GAAA,IAAAC,EAAAhyR,EAAA8xR,GAEjC,SAAAA,EAAat+R,EAAOC,EAAQnN,GAAU,IAAA2rS,EAIpB,OAJoBniS,EAAA,KAAAgiS,GAErC14R,QAAQwN,MAAO,yJACfqrR,EAAAD,EAAA9vS,KAAA,KAAOsR,EAAOC,EAAQnN,IACjBwgK,QAAU,EAAEmrI,CAElB,CAAC,OAAArjS,EAAAkjS,EAAA,CARgC,CAASzrI,IAYrC6rI,GAAkB,SAAAC,GAAA9wR,EAAA6wR,EAAAC,GAAA,IAAAC,EAAApyR,EAAAkyR,GAEvB,SAAAA,EAAanpQ,EAAMv1B,EAAOC,EAAQmgG,GAEgD,OAFxC9jG,EAAA,KAAAoiS,GAEzC94R,QAAQk/C,KAAM,kEAAmE85O,EAAAlwS,KAAA,KAC1E6mC,EAAMv1B,EAAOC,EAAQmgG,EAE7B,CAAC,OAAAhlG,EAAAsjS,EAAA,CAPsB,CAASjrI,IAW3BorI,GAAa,SAAAC,GAAAjxR,EAAAgxR,EAAAC,GAAA,IAAAC,EAAAvyR,EAAAqyR,GAElB,SAAAA,EAAatpQ,EAAMv1B,EAAOC,EAAQmgG,GAEwC,OAFhC9jG,EAAA,KAAAuiS,GAEzCj5R,QAAQk/C,KAAM,0DAA2Di6O,EAAArwS,KAAA,KAClE6mC,EAAMv1B,EAAOC,EAAQmgG,EAE7B,CAAC,OAAAhlG,EAAAyjS,EAAA,CAPiB,CAAS7qI,IAWO,qBAAvB60E,oBAEXA,mBAAmBz4M,cAAe,IAAI43E,YAAa,WAAY,CAAE30E,OAAQ,CACxE2rQ,SAAUnnJ,OAKW,qBAAX3iJ,SAENA,OAAO+pS,UAEXr5R,QAAQk/C,KAAM,2DAId5vD,OAAO+pS,UAAYpnJ,mBCh7iDrB,SAASqnJ,GAAYC,GACnB,IAAI1tR,EACE4oB,EAA4B,IAAIxc,IAChCxM,EAAW,SAAC+tR,EAAS5xS,GACzB,IAAMy/D,EAA+B,oBAAZmyO,EAAyBA,EAAQ3tR,GAAS2tR,EACnE,GAAInyO,IAAcx7C,EAAO,CACvB,IAAM4tR,EAAgB5tR,EACtBA,EAAQjkB,EAAUy/D,EAAY78D,OAAOmgB,OAAO,CAAC,EAAGkB,EAAOw7C,GACvD5yB,EAAUjmC,SAAQ,SAAC0rC,GAAQ,OAAKA,EAASruB,EAAO4tR,EAAc,GAChE,CACF,EACMzsK,EAAW,WAAH,OAASnhH,CAAK,EAsBtBo8D,EAAM,CAAEx8D,SAAAA,EAAUuhH,SAAAA,EAAUj7D,UARhB,SAAC73B,EAAUm3B,EAAUqoO,GACrC,OAAIroO,GAAYqoO,EAdY,SAACx/P,GAA0D,IAAhDm3B,EAAQnlE,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG8gI,EAAU0sK,EAAUxtS,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG1B,OAAOq4B,GAChF7iB,QAAQk/C,KAAK,8DACb,IAAIy6O,EAAetoO,EAASxlD,GAC5B,SAAS+tR,IACP,IAAMC,EAAYxoO,EAASxlD,GAC3B,IAAK6tR,EAAWC,EAAcE,GAAY,CACxC,IAAMC,EAAgBH,EACtBz/P,EAASy/P,EAAeE,EAAWC,EACrC,CACF,CAEA,OADArlQ,EAAUpc,IAAIuhR,GACP,kBAAMnlQ,EAAUhL,OAAOmwQ,EAAc,CAC9C,CAGWG,CAAsB7/P,EAAUm3B,EAAUqoO,IAEnDjlQ,EAAUpc,IAAI6hB,GACP,kBAAMzF,EAAUhL,OAAOyQ,EAAS,EACzC,EAE6C0O,QAD7B,WAAH,OAASnU,EAAUroC,OAAO,GAGvC,OADAyf,EAAQ0tR,EAAY9tR,EAAUuhH,EAAU/kD,GACjCA,CACT,CAEA,IACM2jB,GAD0B,qBAAXt8F,SAA2BA,OAAOjH,WAAa,8BAA8BlE,KAAKmL,OAAOjH,UAAUC,WAC9E+hD,EAAAA,UAAYG,EAAAA,gBACtD,SAASxiC,GAAOuxR,GACd,IAAMtxN,EAA6B,oBAAhBsxN,EAA6BD,GAAYC,GAAeA,EACrES,EAAW,WAAqD,IAWhEC,EAXY5oO,EAAQnlE,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG+7E,EAAI+kD,SAAU0sK,EAAUxtS,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG1B,OAAOq4B,GACpDswD,EAA0CxlE,GAA3B+8B,EAAAA,EAAAA,aAAW,SAACxiD,GAAC,OAAKA,EAAI,CAAC,GAAE,GAAE,GAA/B,GACd2jB,EAAQo8D,EAAI+kD,WACZktK,GAAWvvP,EAAAA,EAAAA,QAAO9+B,GAClBsuR,GAAcxvP,EAAAA,EAAAA,QAAO0mB,GACrB+oO,GAAgBzvP,EAAAA,EAAAA,QAAO+uP,GACvBW,GAAa1vP,EAAAA,EAAAA,SAAO,GACpB2vP,GAAkB3vP,EAAAA,EAAAA,eACQ,IAA5B2vP,EAAgB/0Q,UAClB+0Q,EAAgB/0Q,QAAU8rC,EAASxlD,IAGrC,IAAI0uR,GAAmB,GACnBL,EAAS30Q,UAAY1Z,GAASsuR,EAAY50Q,UAAY8rC,GAAY+oO,EAAc70Q,UAAYm0Q,GAAcW,EAAW90Q,WACvH00Q,EAAgB5oO,EAASxlD,GACzB0uR,GAAoBb,EAAWY,EAAgB/0Q,QAAS00Q,IAE1DruM,IAA0B,WACpB2uM,IACFD,EAAgB/0Q,QAAU00Q,GAE5BC,EAAS30Q,QAAU1Z,EACnBsuR,EAAY50Q,QAAU8rC,EACtB+oO,EAAc70Q,QAAUm0Q,EACxBW,EAAW90Q,SAAU,CACvB,IACA,IAAMi1Q,GAA6B7vP,EAAAA,EAAAA,QAAO9+B,GAC1C+/E,IAA0B,WACxB,IAAM1xD,EAAW,WACf,IACE,IAAMmtB,EAAY4gB,EAAI+kD,WAChBytK,EAAiBN,EAAY50Q,QAAQ8hC,GACtC+yO,EAAc70Q,QAAQ+0Q,EAAgB/0Q,QAASk1Q,KAClDP,EAAS30Q,QAAU8hC,EACnBizO,EAAgB/0Q,QAAUk1Q,EAC1BtnN,IAEJ,CAAE,MAAO3lE,IACP6sR,EAAW90Q,SAAU,EACrB4tD,GACF,CACF,EACMunN,EAAczyN,EAAIlW,UAAU73B,GAIlC,OAHI+tC,EAAI+kD,aAAewtK,EAA2Bj1Q,SAChD2U,IAEKwgQ,CACT,GAAG,IACH,IAAMC,EAAgBJ,EAAmBN,EAAgBK,EAAgB/0Q,QAEzE,OADAslB,EAAAA,EAAAA,eAAc8vP,GACPA,CACT,EAYA,OAXAnwS,OAAOmgB,OAAOqvR,EAAU/xN,GACxB+xN,EAASjtS,OAAOrE,UAAY,WAC1BsX,QAAQk/C,KAAK,sEACb,IAAM8P,EAAQ,CAACgrO,EAAU/xN,GACzB,MAAO,CACL94E,KAAI,WACF,IAAM+e,EAAO8gD,EAAMnrE,QAAU,EAC7B,MAAO,CAAE6G,MAAOskE,EAAMvkC,QAASvc,KAAAA,EACjC,EAEJ,EACO8rR,CACT,CC5GA,IAEMY,GAAc,GAEpB,SAASC,GAAmBC,EAAMC,GAAiC,IAA3Bj8O,EAAK5yD,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,SAACjE,EAAGuK,GAAC,OAAKvK,IAAMuK,CAAC,EAC/D,GAAIsoS,IAASC,EAAM,OAAO,EAC1B,IAAKD,IAASC,EAAM,OAAO,EAC3B,IAAM9iS,EAAM6iS,EAAKj3S,OACjB,GAAIk3S,EAAKl3S,SAAWoU,EAAK,OAAO,EAEhC,IAAK,IAAItP,EAAI,EAAGA,EAAIsP,EAAKtP,IAAK,IAAKm2D,EAAMg8O,EAAKnyS,GAAIoyS,EAAKpyS,IAAK,OAAO,EAEnE,OAAO,CACT,CAEA,SAAS+mI,GAAMzlD,GAA+C,IAA3Cp8E,EAAI3B,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAMo6E,EAAOp6E,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAAUk3D,EAAMl3D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAE5C,OAAT2B,IAAeA,EAAO,CAACo8E,IAE3B,IAAK,IAAL7lE,EAAA,EAAA42R,EAAoBJ,GAAWx2R,EAAA42R,EAAAn3S,OAAAugB,IAAE,CAA5B,IAAMw5E,EAAKo9M,EAAA52R,GAEd,GAAIy2R,GAAmBhtS,EAAM+vF,EAAM/vF,KAAM+vF,EAAM9+B,OAAQ,CAErD,GAAIwnB,EAAS,OAEb,GAAI97E,OAAO3B,UAAUiB,eAAehB,KAAK80F,EAAO,SAAU,MAAMA,EAAMpwE,MAEtE,GAAIhjB,OAAO3B,UAAUiB,eAAehB,KAAK80F,EAAO,YAM9C,OALIx6B,EAAO63O,UAAY73O,EAAO63O,SAAW,IACnCr9M,EAAMtyF,SAASe,aAAauxF,EAAMtyF,SACtCsyF,EAAMtyF,QAAUQ,WAAW8xF,EAAM/wB,OAAQzJ,EAAO63O,WAG3Cr9M,EAAMm/K,SAIf,IAAKz2L,EAAS,MAAMsX,EAAMrY,OAC5B,CACF,CAGA,IA1CgBA,EA0CVqY,EAAQ,CACZ/vF,KAAAA,EACAixD,MAAOsE,EAAOtE,MACd+N,OAAQ,WACN,IAAMhyD,EAAQ+/R,GAAYniS,QAAQmlF,IACnB,IAAX/iF,GAAc+/R,GAAY9gP,OAAOj/C,EAAO,EAC9C,EACA0qE,SAjDcA,EAkDH0E,EAlDiC,kBAAZ1E,GAAgD,oBAAjBA,EAAQ5oC,KAkDtDstC,EAAKA,EAAEl+E,WAAC,EAADi0D,EAAInyD,KAC1B8uC,MAAK,SAAAogO,GACLn/K,EAAMm/K,SAAWA,EAEb35M,EAAO63O,UAAY73O,EAAO63O,SAAW,IACvCr9M,EAAMtyF,QAAUQ,WAAW8xF,EAAM/wB,OAAQzJ,EAAO63O,UAEpD,IACCr+P,OAAM,SAAApvB,GAAK,OAAIowE,EAAMpwE,MAAQA,CAAK,KAKrC,GAFAotR,GAAY7xS,KAAK60F,IAEZtX,EAAS,MAAMsX,EAAMrY,OAE5B,CAEA,ICsSI21N,GAAkBC,4KA5VhBC,GAAY,CAAC,EAgWnB,IAAMC,GAAgB,SAAAjtS,GAAM,MAAI,eAAgBA,GAAU,qBAAsBA,CAAM,EAIhFktS,GAAqB,WACzB,IAAIC,EACJ,OAAyD,OAAjDA,EAAmBH,GAAU30I,iBAA2B80I,EAAmB,IACrF,EACMnhG,GAAuB,SAAAz5G,GAAG,OAAIA,GAAOA,EAAIy5G,oBAAoB,EAY7DxuG,GAA8C,qBAAXt8F,SAAmE,OAAvC4rS,GAAmB5rS,OAAOC,WAAqB2rS,GAAiB1rS,eAA2G,iBAA/C,OAAzC2rS,GAAoB7rS,OAAOjH,gBAAqB,EAAS8yS,GAAkBK,UAA8BrvR,EAAAA,gBAAwBA,EAAAA,UACzR,SAASsvR,GAAmBxxN,GAC1B,IAAMjgE,EAAMmC,EAAAA,OAAa89D,GAEzB,OADA2hB,IAA0B,WAAY5hF,EAAIub,QAAU0kD,CAAG,GAAE,CAACA,IACnDjgE,CACT,CACA,SAAS0xR,GAAKhqR,GAEX,IADDwJ,EAAGxJ,EAAHwJ,IAMA,OAJA0wE,IAA0B,WAExB,OADA1wE,EAAI,IAAIqhB,SAAQ,kBAAM,IAAI,KACnB,kBAAMrhB,GAAI,EAAM,CACzB,GAAG,CAACA,IACG,IACT,CAAC,IACKg0E,GAAa,SAAArnF,GAAAI,EAAAinF,EAAArnF,GAAA,IAAAK,EAAAtB,EAAAsoF,GACjB,SAAAA,IAAqB,IAAA/mF,EAAAzR,EAAA,KAAAw4F,GAAA,QAAA9tC,EAAAl1D,UAAArI,OAAN0H,EAAI,IAAA3C,MAAAw4D,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ91D,EAAI81D,GAAAn1D,UAAAm1D,GAIf,OAHFl5C,EAAAD,EAAApf,KAAAiD,MAAAmc,EAAA,OAAAxa,OAASnC,KACJsgB,MAAQ,CACX2B,OAAO,GACPrF,CACJ,CAMC,OANA3S,EAAA05F,EAAA,EAAAzgG,IAAA,oBAAA/D,MACD,SAAkBoa,GAChB7Y,KAAKyJ,MAAMwlB,IAAIpW,EACjB,GAAC,CAAArW,IAAA,SAAA/D,MACD,WACE,OAAOuB,KAAK4f,MAAM2B,MAAQ,KAAOvhB,KAAKyJ,MAAMmU,QAC9C,KAACqlF,CAAA,CAZgB,CAAS/iF,EAAAA,WAc5B+iF,GAAcz+F,yBAA2B,iBAAO,CAC9C+c,OAAO,EACR,EACD,IAAMmuR,GAAU,YACVC,GAAW,IAAIxyQ,IACfyyQ,GAAY,SAAAl7M,GAAG,OAAIA,KAASA,EAAIm7M,YAAcn7M,EAAIo7M,OAAO,EAC/D,SAASC,GAAaC,GACpB,IAAIC,EAGE1uS,EAA2B,qBAAX8B,OAA8E,OAApD4sS,EAAwB5sS,OAAOm2I,kBAA4By2J,EAAwB,EAAI,EACvI,OAAOtzS,MAAM0E,QAAQ2uS,GAAO/yS,KAAKiuC,IAAIjuC,KAAKC,IAAI8yS,EAAI,GAAIzuS,GAASyuS,EAAI,IAAMA,CAC3E,CAKA,IAAME,GAAe,SAAArxS,GACnB,IAAIsxS,EACJ,OAA6B,OAArBA,EAAOtxS,EAAIuxS,YAAiB,EAASD,EAAKj9R,KAAK6tH,UACzD,EAKA,SAASsvK,GAAgBj3Q,GAEvB,IADA,IAAIlmB,EAAOkmB,EAAMg3Q,MAAMl9R,KAChBA,EAAK6tH,WAAWuvK,cAAcp9R,EAAOA,EAAK6tH,WAAWuvK,aAC5D,OAAOp9R,CACT,CAEA,IAAM0jB,GAAK,CACT/3B,IAAK,SAAA7C,GAAC,OAAIA,IAAMuC,OAAOvC,KAAO46B,GAAGp6B,IAAIR,IAAmB,oBAANA,CAAgB,EAClEu0S,IAAK,SAAAv0S,GAAC,MAAiB,oBAANA,CAAgB,EACjCyU,IAAK,SAAAzU,GAAC,MAAiB,kBAANA,CAAc,EAC/Bs5P,IAAK,SAAAt5P,GAAC,MAAiB,kBAANA,CAAc,EAC/Bw0S,IAAK,SAAAx0S,GAAC,MAAiB,mBAANA,CAAe,EAChCy0S,IAAK,SAAAz0S,GAAC,YAAU,IAANA,CAAY,EACtBQ,IAAK,SAAAR,GAAC,OAAIW,MAAM0E,QAAQrF,EAAE,EAC1B00S,IAAG,SAAC10S,EAAGuK,GAIC,IAAAof,EAAA1lB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAJ,CAAC,EAAC0wS,EAAAhrR,EAHJg5D,OAAAA,OAAM,IAAAgyN,EAAG,UAASA,EAAAC,EAAAjrR,EAClB++K,QAAAA,OAAO,IAAAksG,EAAG,YAAWA,EAAAC,EAAAlrR,EACrBmrR,OAAAA,OAAM,IAAAD,GAAOA,EAGb,UAAW70S,WAAauK,KAAOvK,MAAQuK,EAAG,OAAO,EAEjD,GAAIqwB,GAAGnmB,IAAIzU,IAAM46B,GAAG0+N,IAAIt5P,IAAM46B,GAAG45Q,IAAIx0S,GAAI,OAAOA,IAAMuK,EACtD,IAAMwqS,EAAQn6Q,GAAG/3B,IAAI7C,GACrB,GAAI+0S,GAAqB,cAAZrsG,EAAyB,OAAO1oM,IAAMuK,EACnD,IAKI7J,EALEs0S,EAAQp6Q,GAAGp6B,IAAIR,GACrB,GAAIg1S,GAAoB,cAAXryN,EAAwB,OAAO3iF,IAAMuK,EAElD,IAAKyqS,GAASD,IAAU/0S,IAAMuK,EAAG,OAAO,EAIxC,IAAK7J,KAAKV,EAAG,KAAMU,KAAK6J,GAAI,OAAO,EAEnC,GAAIwqS,GAAoB,YAAXpyN,GAAoC,YAAZ+lH,GACnC,IAAKhoM,KAAKo0S,EAASvqS,EAAIvK,EAAG,IAAK46B,GAAG85Q,IAAI10S,EAAEU,GAAI6J,EAAE7J,GAAI,CAChDo0S,OAAAA,EACApsG,QAAS,cACP,OAAO,OAEX,IAAKhoM,KAAKo0S,EAASvqS,EAAIvK,EAAG,GAAIA,EAAEU,KAAO6J,EAAE7J,GAAI,OAAO,EAGtD,GAAIk6B,GAAG65Q,IAAI/zS,GAAI,CAEb,GAAIs0S,GAAsB,IAAbh1S,EAAEpE,QAA6B,IAAb2O,EAAE3O,OAAc,OAAO,EAEtD,GAAIm5S,GAAmC,IAA1BxyS,OAAOqD,KAAK5F,GAAGpE,QAA0C,IAA1B2G,OAAOqD,KAAK2E,GAAG3O,OAAc,OAAO,EAEhF,GAAIoE,IAAMuK,EAAG,OAAO,CACtB,CACA,OAAO,CACT,GAMF,SAAS0qS,GAAW9uS,GAClB,IAAMuhC,EAAO,CACX8mE,MAAO,CAAC,EACRmtE,UAAW,CAAC,GAQd,OANIx1K,GACFA,EAAOg1K,UAAS,SAAAt4K,GACVA,EAAI1F,OAAMuqC,EAAK8mE,MAAM3rG,EAAI1F,MAAQ0F,GACjCA,EAAIg6K,WAAan1I,EAAKi0I,UAAU94K,EAAIg6K,SAAS1/K,QAAOuqC,EAAKi0I,UAAU94K,EAAIg6K,SAAS1/K,MAAQ0F,EAAIg6K,SAClG,IAEKn1I,CACT,CAYA,SAASwtQ,GAAQ/uS,EAAQyd,GAavB,OAZiBzd,EACRiuS,MAAKrxR,EAAA,CACZna,KAAM,GACNsO,KAAM,KACNi+R,eAAgB,KAChBv8P,cAAe,CAAC,EAChBw8P,WAAY,EACZliC,SAAU,CAAC,EACXxqE,QAAS,GACTxnI,OAAQ,MACLt9C,GAEEzd,CACT,CACA,SAASsuC,GAAQlmC,EAAU/H,GACzB,IAAIjB,EAASgJ,EACb,GAAI/H,EAAI0sB,SAAS,KAAM,CACrB,IAAM6jC,EAAUvwD,EAAI1G,MAAM,KACpB4D,EAAOqzD,EAAQ/B,MAErB,OADAzvD,EAASwxD,EAAQ/vD,QAAO,SAACggE,EAAKxgE,GAAG,OAAKwgE,EAAIxgE,EAAI,GAAE+H,GACzC,CACLhJ,OAAAA,EACAiB,IAAK9C,EAET,CAAO,MAAO,CACZ6B,OAAAA,EACAiB,IAAAA,EAEJ,CAGA,IAAM6uS,GAAc,QACpB,SAASvF,GAAO5uO,EAAQ9jC,EAAOx0B,GAC7B,GAAIgyB,GAAGnmB,IAAI7L,GAAO,CAEhB,GAAIysS,GAAYn5S,KAAK0M,GAAO,CAC1B,IACA0sS,EAGI7gQ,GAAQysB,EAJCt4D,EAAKjJ,QAAQ01S,GAAa,KAErC9vS,EAAM+vS,EAAN/vS,OACAiB,EAAG8uS,EAAH9uS,IAEG7F,MAAM0E,QAAQE,EAAOiB,MAAOjB,EAAOiB,GAAO,GACjD,CACA,IAAA+uS,EAGI9gQ,GAAQysB,EAAQt4D,GAFlBrD,EAAMgwS,EAANhwS,OACAiB,EAAG+uS,EAAH/uS,IAEF42B,EAAMg3Q,MAAMe,eAAiB5vS,EAAOiB,GACpCjB,EAAOiB,GAAO42B,CAChB,MAAOA,EAAMg3Q,MAAMe,eAAiBvsS,EAAKs4D,EAAQ9jC,EACnD,CACA,SAASyyQ,GAAO3uO,EAAQ9jC,EAAOx0B,GAC7B,IAAI4sS,EAAcC,EAClB,GAAI76Q,GAAGnmB,IAAI7L,GAAO,CAChB,IAAA8sS,EAGIjhQ,GAAQysB,EAAQt4D,GAFlBrD,EAAMmwS,EAANnwS,OACAiB,EAAGkvS,EAAHlvS,IAEImvS,EAAWv4Q,EAAMg3Q,MAAMe,oBAEZ/mS,IAAbunS,SAA+BpwS,EAAOiB,GAErCjB,EAAOiB,GAAOmvS,CACrB,MAAuC,OAA/BH,EAAep4Q,EAAMg3Q,QAAyD,MAA/BoB,EAAaL,gBAAkCK,EAAaL,eAAej0O,EAAQ9jC,GACzG,OAAhCq4Q,EAAgBr4Q,EAAMg3Q,eAA+BqB,EAAcN,cACtE,CAEA,SAASS,GAAUrnS,EAAQsb,GACbA,EAAZjI,SACOiI,EAAPrjB,IACOqjB,EAAP9H,IAOsB,IANnBtU,EAAKwV,GAAA4G,EAAAgsR,IAAA9rR,EAAA9lB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAMN,CAAC,EADA0xS,GAHS5rR,EAAZnI,SACOmI,EAAPvjB,IACOujB,EAAPhI,IACWkB,GAAA8G,EAAA+rR,KACLlxO,EAAM3gE,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GACN8xS,EAAaxnS,EAAS6lS,MACtBr9O,EAAUx0D,OAAOw0D,QAAQtpD,GACzBqmS,EAAU,GAGhB,GAAIlvO,EAEF,IADA,IAAMoxO,EAAezzS,OAAOqD,KAAK+vS,GACxBj1S,EAAI,EAAGA,EAAIs1S,EAAap6S,OAAQ8E,IAClC+M,EAAM5L,eAAem0S,EAAat1S,KAAKq2D,EAAQhjD,QAAQ,CAACiiS,EAAat1S,GAAIgzS,GAAU,WAG5F38O,EAAQxwD,SAAQ,SAAA0jB,GAAkB,IAC5BgsR,EAD4B9rR,EAAAzE,EAAAuE,EAAA,GAAhBzjB,EAAG2jB,EAAA,GAAE1nB,EAAK0nB,EAAA,GAG1B,IAA0C,OAArC8rR,EAAkB1nS,EAAS6lS,SAAkB6B,EAAgBC,WAAqB,WAAR1vS,KAE3Eo0B,GAAG85Q,IAAIjyS,EAAOkzS,EAASnvS,IAA3B,CAEA,GAAI,mDAAmDtK,KAAKsK,GAAM,OAAOstS,EAAQhzS,KAAK,CAAC0F,EAAK/D,GAAO,EAAM,KAEzG,IAAIs0D,EAAU,GAKd,IAAK,IAAMtkD,KAJPjM,EAAI0sB,SAAS,OAAM6jC,EAAUvwD,EAAI1G,MAAM,MAC3Cg0S,EAAQhzS,KAAK,CAAC0F,EAAK/D,GAAO,EAAOs0D,IAGdtpD,EAAO,CACxB,IAAMhL,EAAQgL,EAAMgF,GAChBA,EAAK+rF,WAAW,GAAD/4F,OAAIe,EAAG,OAAMstS,EAAQhzS,KAAK,CAAC2R,EAAMhQ,GAAO,EAAOgQ,EAAK3S,MAAM,MAC/E,CAZwC,CAa1C,IACA,IAAM+zS,EAAQ9wR,EAAA,GACTtV,GAIL,OAFkB,MAAdsoS,GAAsBA,EAAWn9P,eAA+B,MAAdm9P,GAAsBA,EAAWn9P,cAAct1C,OAAMuwS,EAASvwS,KAAOyyS,EAAWn9P,cAAct1C,MAClI,MAAdyyS,GAAsBA,EAAWn9P,eAA+B,MAAdm9P,GAAsBA,EAAWn9P,cAAck3P,SAAQ+D,EAAS/D,OAASiG,EAAWn9P,cAAck3P,QACjJ,CACL+D,SAAAA,EACAC,QAAAA,EAEJ,CACA,IAAMqC,GAA6B,qBAAZjuO,UAA2BA,EAGlD,SAASkuO,GAAa7nS,EAAUm5B,GAC9B,IAAI2uQ,EAEEN,EAAaxnS,EAAS6lS,MACtBl9R,EAAqB,MAAd6+R,OAAqB,EAASA,EAAW7+R,KAChDo/R,EAAoB,MAARp/R,GAAyC,MAAjBA,EAAK6tH,cAAd,EAA0C7tH,EAAK6tH,WAChF16G,EAGIupR,GAAUlsQ,GAAQA,EAAOkuQ,GAAUrnS,EAAUm5B,GAF/CmsQ,EAAQxpR,EAARwpR,SACAC,EAAOzpR,EAAPypR,QAEIyC,EAA6B,MAAdR,OAAqB,EAASA,EAAWX,WAG1D7mS,EAAS6lS,QAAO7lS,EAAS6lS,MAAMx7P,cAAgBi7P,GACnD,IAAK,IAAInzS,EAAI,EAAGA,EAAIozS,EAAQl4S,OAAQ8E,IAAK,CACvC,IAAA81S,EAAA9wR,EAAkCouR,EAAQpzS,GAAE,GAAvC8F,EAAGgwS,EAAA,GAAE/zS,EAAK+zS,EAAA,GAAEC,EAAOD,EAAA,GAAE5wS,EAAI4wS,EAAA,GAI9B,GAAIpD,GAAc7kS,GAAW,CAC3B,IACMilJ,EAAiB,OACjBC,EAAuB,cACjB,aAARjtJ,GACFA,EAAM,aACN/D,EALmB,OAKXA,EAAyB+wJ,EAAiBC,GACjC,mBAARjtJ,IACTA,EAAM,mBACN/D,EARmB,OAQXA,EAAyB+wJ,EAAiBC,EAEtD,CACA,IAAIijJ,EAAkBnoS,EAClBooS,EAAaD,EAAgBlwS,GAGjC,GAAIZ,EAAKhK,SACP+6S,EAAa/wS,EAAKoB,QAAO,SAACggE,EAAKxgE,GAAG,OAAKwgE,EAAIxgE,EAAI,GAAE+H,IAE3CooS,IAAcA,EAAW1jR,KAAM,CACnC,IAAgD2jR,EAAAx8M,EAAdx0F,EAAKrE,WAAhCpE,EAAIy5S,EAAA,GACXF,EAD8BE,EAAAhiS,MAAA,GACGrT,UAAUyF,QAAO,SAACggE,EAAKxgE,GAAG,OAAKwgE,EAAIxgE,EAAI,GAAE+H,GAC1E/H,EAAMrJ,CACR,CAQF,GAAIsF,IAAUixS,GAAU,SACtB,GAAIgD,EAAgBv4R,YAAa,CAE/B,IAAIo4E,EAAOo9M,GAAS5/Q,IAAI2iR,EAAgBv4R,aACnCo4E,IAEHA,EAAO,IAAImgN,EAAgBv4R,YAC3Bw1R,GAAS1gR,IAAIyjR,EAAgBv4R,YAAao4E,IAE5C9zF,EAAQ8zF,EAAK/vF,EACf,MAEE/D,EAAQ,EAKZ,GAAIg0S,GAAWV,EACTtzS,EAAOszS,EAAW7iC,SAAS1sQ,GAAO/D,SAAkBszS,EAAW7iC,SAAS1sQ,GAC5EuvS,EAAWX,WAAa7yS,OAAOqD,KAAKmwS,EAAW7iC,UAAUt3Q,YAGtD,GAAI+6S,GAAcA,EAAW1jR,MAAQ0jR,EAAWj3I,MAAQi3I,aAAsBE,IAAe,CAEtE,IAAAC,EAA1B,GAAIn2S,MAAM0E,QAAQ5C,GACZk0S,EAAWh5I,UAAWg5I,EAAWh5I,UAAUl7J,IAAYq0S,EAAAH,GAAW1jR,IAAGnvB,MAAAgzS,EAAA/+O,EAAIt1D,SAG1E,GAAIk0S,EAAWj3I,MAAQj9J,GAASA,EAAM0b,cAK3Cg4R,GAAUQ,EAAWx4R,YAAYhhB,OAASsF,EAAM0b,YAAYhhB,KAAOw5S,EAAWx4R,cAAgB1b,EAAM0b,aAClGw4R,EAAWj3I,KAAKj9J,QAIb,QAAc2L,IAAV3L,EAAqB,CAC5B,IAAMg9J,EAAUk3I,aAAsBE,IAEjCp3I,GAAWk3I,EAAWI,UAAWJ,EAAWI,UAAUt0S,GAElDk0S,aAAsBE,IAAgBp0S,aAAiBo0S,GAAcF,EAAWr4K,KAAO77H,EAAM67H,KAEjGq4K,EAAW1jR,IAAIxwB,IAIf4wS,MAAwBiD,IAAcA,EAAUU,QAAUv3I,GAASk3I,EAAWM,qBACrF,CAEF,MAKE,GAJAP,EAAgBlwS,GAAO/D,EAInBi0S,EAAgBlwS,aAAgBqwS,IAEpCH,EAAgBlwS,GAAK+7J,SAAWs0I,IAAoBH,EAAgBlwS,GAAKoC,OAASiuS,IAA0BP,EAAW,CACrH,IAAMjxI,EAAUqxI,EAAgBlwS,GAC5B4sS,GAAc/tI,IAAY+tI,GAAckD,EAAU1lP,IAAKy0G,EAAQ1G,WAAa23I,EAAU1lP,GAAGsmP,iBAAsB7xI,EAAQ5C,SAAW6zI,EAAU1lP,GAAGwlI,cACrJ,CAEF+gH,GAAmB5oS,EACrB,CACA,GAAIwnS,GAAcA,EAAW70O,QAAU3yD,EAASgwO,SAAWg4D,IAAiBR,EAAWX,WAAY,CAEjG,IAAMvyM,EAAWwxM,GAAgB9lS,GAAUw2H,WAAWliC,SAEhDjwF,EAAQiwF,EAASu0M,YAAY5mS,QAAQjC,GACvCqE,GAAS,GAAGiwF,EAASu0M,YAAYvlP,OAAOj/C,EAAO,GAE/CmjS,EAAWX,YAAYvyM,EAASu0M,YAAYt2S,KAAKyN,EACvD,CAMA,QAFsC,IAAnBulS,EAAQl4S,QAAkC,aAAlBk4S,EAAQ,GAAG,KACnCA,EAAQl4S,QAAiD,OAAtCy6S,EAAmB9nS,EAAS6lS,QAAkBiC,EAAiBn1O,QAAQm2O,GAAe9oS,GACrHA,CACT,CACA,SAAS4oS,GAAmB5oS,GAC1B,IAAI+oS,EAAkBC,EAChB3zR,EAA+C,OAAtC0zR,EAAmB/oS,EAAS6lS,QAA6E,OAAlDmD,EAAwBD,EAAiBpgS,OAA2D,MAAlCqgS,EAAsBxyK,cAAlG,EAA8HwyK,EAAsBxyK,WAC5MnhH,GAAmC,IAA1BA,EAAMi/E,SAASugK,QAAcx/O,EAAM4zR,YAClD,CACA,SAASH,GAAe9oS,GACD,MAArBA,EAAS20J,UAA4B30J,EAAS20J,SAAS30J,EACzD,CACA,SAASo/N,GAAa/hE,EAAQriH,GAGvBqiH,EAAO6rI,SACNtlG,GAAqBvmC,IACvBA,EAAO57H,KAAOuZ,EAAKp3C,OAAS,EAC5By5J,EAAOpoG,MAAQja,EAAKp3C,MAAQ,EAC5By5J,EAAO17H,IAAMqZ,EAAKn3C,OAAS,EAC3Bw5J,EAAOnoG,OAASla,EAAKn3C,QAAU,GAE/Bw5J,EAAOsoB,OAAS3qI,EAAKp3C,MAAQo3C,EAAKn3C,OAEpCw5J,EAAOyoB,yBAGPzoB,EAAO2P,oBAEX,CAEA,SAASm8H,GAAOnrQ,GACd,OAAQA,EAAMorQ,aAAeprQ,EAAMpmC,QAAQ05G,KAAO,IAAMtzE,EAAM35B,MAAQ25B,EAAMi1M,UAC9E,CAmCA,SAASo2D,GAA8BC,EAAah1S,EAAKi1S,EAAUr2Q,GACjE,IAAMs2Q,EAAcD,EAAS/jR,IAAIlxB,GAC7Bk1S,IACFD,EAASt2Q,OAAO3+B,GAEM,IAAlBi1S,EAASvuP,OACXsuP,EAAYr2Q,OAAOC,GACnBs2Q,EAAYxyS,OAAOyyS,sBAAsBv2Q,IAG/C,CAkBA,SAASw2Q,GAAal2L,GAYpB,SAASm2L,EAAoBxvG,GAC3B,OAAOA,EAAQ5iM,QAAO,SAAAjD,GAAG,MAAI,CAAC,OAAQ,OAAQ,QAAS,MAAO,SAASgf,MAAK,SAAA1kB,GAC1E,IAAIg3S,EACJ,OAA6B,OAArBA,EAAOtxS,EAAIuxS,YAAiB,EAASD,EAAKjhC,SAAS,YAAc/1Q,EAC3E,GAAE,GACJ,CA8LA,SAASg7S,EAAcC,GACrB,IAGkDzhK,EAFhD9zC,EACEkf,EAAMgjB,WADRliC,SACmB+zC,EAAA9nE,EACI+zB,EAASw1M,QAAQtnS,UAAQ,QAAAsmI,EAAA,eAAvCihK,EAAU3hK,EAAAl0I,MAGnB,IAAK21S,EAAcx8S,SAAWw8S,EAAc5xL,MAAK,SAAA+xL,GAAG,OAAIA,EAAIpyS,SAAWmyS,EAAWnyS,QAAUoyS,EAAI3lS,QAAU0lS,EAAW1lS,OAAS2lS,EAAI/2D,aAAe82D,EAAW92D,UAAU,IAAG,CACvK,IACMjzO,EADc+pS,EAAWX,YACFvD,MACvBlhC,EAAuB,MAAZ3kQ,OAAmB,EAASA,EAAS2kQ,SAEtD,GADArwK,EAASw1M,QAAQ72Q,OAAOk2Q,GAAOY,IACf,MAAZ/pS,GAAoBA,EAAS6mS,WAAY,CAE3C,IAAM1tQ,EAAI3kB,EAAAA,EAAA,GACLu1R,GAAU,IACbF,cAAAA,IAEuB,MAAzBllC,EAASslC,cAAgCtlC,EAASslC,aAAa9wQ,GACpC,MAA3BwrO,EAASulC,gBAAkCvlC,EAASulC,eAAe/wQ,EACrE,CACF,CAAC,EAjBH,IAAAkvG,EAAAn3I,MAAAk3I,EAAAC,EAAA7rI,KAAAkb,MAAoDoxH,GAkBnD,OAAAx6H,GAAA+5H,EAAAtsI,EAAAuS,EAAA,SAAA+5H,EAAAnsI,GAAA,CACH,CACA,SAASiuS,EAAcnsQ,EAAOm8J,GAC5B,IAAK,IAAIhoM,EAAI,EAAGA,EAAIgoM,EAAQ9sM,OAAQ8E,IAAK,CACvC,IAAM6N,EAAWm6L,EAAQhoM,GAAG0zS,MAChB,MAAZ7lS,GAAiE,MAArCA,EAAS2kQ,SAASylC,iBAAmCpqS,EAAS2kQ,SAASylC,gBAAgBpsQ,EACrH,CACF,CA6HA,MAAO,CACLqsQ,cA7HF,SAAuBz7S,GAErB,OAAQA,GACN,IAAK,iBACL,IAAK,kBACH,OAAO,kBAAMg7S,EAAc,GAAG,EAChC,IAAK,uBACH,OAAO,SAAA5rQ,GACL,IACEs2D,EACEkf,EAAMgjB,WADRliC,SAEE,cAAet2D,GAASs2D,EAASg1M,YAAYzlQ,IAAI7F,EAAM9K,YAKzDgkC,uBAAsB,WAEhBo9B,EAASg1M,YAAYzlQ,IAAI7F,EAAM9K,aACjCohE,EAASg1M,YAAYr2Q,OAAO+K,EAAM9K,WAClC02Q,EAAc,IAElB,GAEJ,EAIJ,OAAO,SAAqB5rQ,GAC1B,IAAAssQ,EAGI92L,EAAMgjB,WAFR4zK,EAAeE,EAAfF,gBACA91M,EAAQg2M,EAARh2M,SAIFA,EAASi2M,UAAUx7Q,QAAUiP,EAG7B,IAAMwsQ,EAAyB,kBAAT57S,EAChB67S,EAAwB,YAAT77S,GAA+B,kBAATA,GAAqC,kBAATA,EAEjE87S,EApQV,SAAmB1sQ,EAAOzmC,GAOxB,IANA,IAAM8d,EAAQm+F,EAAMgjB,WACdm0K,EAAa,IAAIlpR,IACjBooR,EAAgB,GAEhBe,EAAgBrzS,EAASA,EAAO8d,EAAMi/E,SAASu0M,aAAexzR,EAAMi/E,SAASu0M,YAE1E12S,EAAI,EAAGA,EAAIy4S,EAAcv9S,OAAQ8E,IAAK,CAC7C,IAAMkjB,EAAQswR,GAAaiF,EAAcz4S,IACrCkjB,IACFA,EAAM8rK,UAAU9jB,YAASx9J,EAE7B,CACKwV,EAAM0wR,cAEe,MAAxB1wR,EAAMi4F,OAAOu9L,SAA2Bx1R,EAAMi4F,OAAOu9L,QAAQ7sQ,EAAO3oB,GAoBtE,IAAIq1R,EAAOE,EAEVE,SApBD,SAAuBx2S,GACrB,IAMMy2S,EANA11R,EAAQswR,GAAarxS,GAE3B,OAAK+gB,GAAUA,EAAMi4F,OAAOg5E,SAAsC,OAA3BjxK,EAAM8rK,UAAU9jB,aAGxBx9J,IAA3BwV,EAAM8rK,UAAU9jB,SAEM,MAAxBhoJ,EAAMi4F,OAAOu9L,SAA2Bx1R,EAAMi4F,OAAOu9L,QAAQ7sQ,EAAO3oB,EAAqD,OAA7C01R,EAAsB11R,EAAM0wR,mBAAwB,EAASgF,EAAoBv0K,iBAE9H32H,IAA3BwV,EAAM8rK,UAAU9jB,SAAsBhoJ,EAAM8rK,UAAU9jB,OAAS,OAI9DhoJ,EAAM8rK,UAAU9jB,OAAShoJ,EAAM8rK,UAAU0pG,gBAAgBv2R,GAAK,GAAQ,IAXE,EAYjF,IAOC26F,MAAK,SAACx9F,EAAGuK,GACR,IAAMgvS,EAASrF,GAAal0S,EAAEmG,QACxBqzS,EAAStF,GAAa3pS,EAAEpE,QAC9B,OAAKozS,GAAWC,GACTA,EAAO39L,OAAO35E,SAAWq3Q,EAAO19L,OAAO35E,UADfliC,EAAE06K,SAAWnwK,EAAEmwK,QAEhD,IAEC50K,QAAO,SAAA2jE,GACN,IAAMrmC,EAAKs0Q,GAAOjuO,GAClB,OAAIyvO,EAAW9mQ,IAAIhP,KACnB81Q,EAAW9oR,IAAIgT,IACR,EACT,IAIIxf,EAAMi4F,OAAO/1G,SAAQmzS,EAAOr1R,EAAMi4F,OAAO/1G,OAAOmzS,EAAMr1R,IAE1D,IACsBklD,EADtBC,EAAA+F,EACkBmqO,GAAI,IAAtB,IAAAlwO,EAAAtpE,MAAAqpE,EAAAC,EAAAh+D,KAAAkb,MAGE,IAHsB,IAAbsyR,EAAGzvO,EAAArmE,MACRk1S,EAAcY,EAAIpyS,OAEfwxS,GAAa,CAClB,IAAI8B,EAC+B,OAA9BA,EAAQ9B,EAAYvD,QAAkBqF,EAAMrE,YAAYgD,EAAct3S,KAAIiiB,EAAAA,EAAC,CAAC,EAC5Ew1R,GAAG,IACNZ,YAAAA,KAEFA,EAAcA,EAAYz2O,MAC5B,CAGF,OAAArkD,GAAAksD,EAAAz+D,EAAAuS,EAAA,SAAAksD,EAAAt+D,GAAA,CACA,GAAI,cAAe8hC,GAAS3oB,EAAMi/E,SAASg1M,YAAYzlQ,IAAI7F,EAAM9K,WAAY,KACKgzG,EADLC,EAAA5lE,EACnDlrD,EAAMi/E,SAASg1M,YAAY9jR,IAAIwY,EAAM9K,WAAW1wB,UAAQ,IAAhF,IAAA2jI,EAAAj1I,MAAAg1I,EAAAC,EAAA3pI,KAAAkb,MAAkF,KAAzE8xR,EAAWtjK,EAAAhyI,MACby2S,EAAW9mQ,IAAIslQ,GAAOK,EAAYnoH,gBAAgBwoH,EAAct3S,KAAKi3S,EAAYnoH,aACxF,CAAC,OAAA/yK,GAAA63H,EAAApqI,EAAAuS,EAAA,SAAA63H,EAAAjqI,GAAA,CACH,CACA,OAAO2tS,CACT,CAsLiBz6D,CAAUpxM,EADRwsQ,EAAgBb,OAAsB9pS,GAE/ChN,EAAQ43S,EArRlB,SAA2BzsQ,GACzB,IACEs2D,EACEkf,EAAMgjB,WADRliC,SAEIyvC,EAAK/lG,EAAMixE,QAAU3a,EAAS62M,aAAa,GAC3CrnK,EAAK9lG,EAAMmxE,QAAU7a,EAAS62M,aAAa,GACjD,OAAOz4S,KAAK83J,MAAM93J,KAAK04J,KAAKrnB,EAAKA,EAAKD,EAAKA,GAC7C,CA8QiCsnK,CAAkBptQ,GAAS,EAG3C,kBAATpvC,IACF0lG,EAAS62M,aAAe,CAACntQ,EAAMixE,QAASjxE,EAAMmxE,SAC9C7a,EAAS+2M,YAAcX,EAAK14S,KAAI,SAAAg4S,GAAG,OAAIA,EAAIZ,WAAW,KAKpDqB,IAAiBC,EAAKr9S,QACpBwF,GAAS,IACXs3S,EAAcnsQ,EAAOs2D,EAASu0M,aAC1BuB,GAAiBA,EAAgBpsQ,IAIrCwsQ,GAAeZ,EAAcc,GArMrC,SAA0Bb,EAAe7rQ,EAAOnrC,EAAO+6C,GACrD,IAAMm6P,EAAYv0L,EAAMgjB,WAGpBqzK,EAAcx8S,QAAQ,WACxB,IAG+By6I,EAHzB0/J,EAAa,CACjB8D,SAAS,GACTvjK,EAAAxnE,EACgBspO,GAAa,QAAArpO,EAAA,eAApBwpO,EAAGliK,EAAA5zI,MACNmhB,EAAQswR,GAAaqE,EAAIpyS,SAAWmwS,EAExC5mH,EAIE9rK,EAJF8rK,UACAoqH,EAGEl2R,EAHFk2R,QACAluI,EAEEhoJ,EAFFgoJ,OACA/oE,EACEj/E,EADFi/E,SAEIk3M,EAAmB,IAAIlD,GAAciD,EAAQ55S,EAAG45S,EAAQzuS,EAAG,GAAG8tR,UAAUvtH,GACxEouI,EAAoB,SAAA52Q,GACxB,IAAI62Q,EAAuBC,EAC3B,OAA2J,OAAnJD,EAAmF,OAA1DC,EAAyBr3M,EAASg1M,YAAY9jR,IAAIqP,SAAe,EAAS82Q,EAAuB9nQ,IAAImmQ,EAAIZ,eAAwBsC,CACpK,EACME,EAAoB,SAAA/2Q,GACxB,IAAM20Q,EAAc,CAClBnoH,aAAc2oH,EACdhzS,OAAQgnC,EAAMhnC,QAEZs9F,EAASg1M,YAAYzlQ,IAAIhP,GAG3By/D,EAASg1M,YAAY9jR,IAAIqP,GAAInQ,IAAIslR,EAAIZ,YAAaI,GAKlDl1M,EAASg1M,YAAY5kR,IAAImQ,EAAI,IAAIjC,IAAI,CAAC,CAACo3Q,EAAIZ,YAAaI,MAE1DxrQ,EAAMhnC,OAAO40S,kBAAkB/2Q,EACjC,EACM40Q,EAAwB,SAAA50Q,GAC5B,IAAM00Q,EAAWj1M,EAASg1M,YAAY9jR,IAAIqP,GACtC00Q,GACFF,GAA8B/0M,EAASg1M,YAAaU,EAAIZ,YAAaG,EAAU10Q,EAEnF,EAGIg3Q,EAAoB,CAAC,EAEzB,IAAK,IAAI3nS,KAAQ85B,EAAO,CACtB,IAAI7pC,EAAW6pC,EAAM95B,GAGG,oBAAb/P,IAAyB03S,EAAkB3nS,GAAQ/P,EAChE,CACA,IAAI23S,EAAYt3R,EAAAA,EAAAA,EAAA,GACXw1R,GACA6B,GAAiB,IACpBN,QAAAA,EACA1B,cAAAA,EACAyB,QAAS9D,EAAW8D,QACpBz4S,MAAAA,EACA24S,iBAAAA,EACAznI,IAAKod,EAAUpd,IACf1G,OAAQA,EAERtoI,gBAAe,WAGb,IAAMg3Q,EAAqB,cAAe/tQ,GAASs2D,EAASg1M,YAAY9jR,IAAIwY,EAAM9K,WAGlF,KAEC64Q,GAEDA,EAAmBloQ,IAAImmQ,EAAIZ,gBACzB0C,EAAaR,QAAU9D,EAAW8D,SAAU,EAGxCh3M,EAASw1M,QAAQ9uP,MAAQ5oD,MAAM0lB,KAAKw8E,EAASw1M,QAAQtnS,UAAUy1G,MAAK,SAAA9lH,GAAC,OAAIA,EAAEi3S,cAAgBY,EAAIZ,WAAW,KAAG,CAE/G,IAAM4C,EAASnC,EAAcxjS,MAAM,EAAGwjS,EAAc5nS,QAAQ+nS,IAC5DJ,EAAc,GAAD1yS,OAAAsyD,EAAKwiP,GAAM,CAAEhC,IAC5B,CAEJ,EAEAhzS,OAAQ,CACNy0S,kBAAAA,EACAG,kBAAAA,EACAnC,sBAAAA,GAEF5zQ,cAAe,CACb41Q,kBAAAA,EACAG,kBAAAA,EACAnC,sBAAAA,GAEFr2Q,YAAa4K,IAMf,GAFA4P,EAASk+P,IAEkB,IAAvBtE,EAAW8D,QAAkB,aAAM,EA/FzC,IAAAvjK,EAAA72I,MAAA42I,EAAAC,EAAAvrI,KAAAkb,MAAiC,UAAA8oD,MAgGhC,OAAAlyD,GAAAy5H,EAAAhsI,EAAAuS,EAAA,SAAAy5H,EAAA7rI,GAAA,EApGuB,EAuG5B,CAwJI+vS,CAAiBvB,EAAM1sQ,EAAOnrC,GA7D9B,SAAqBsmC,GACnB,IAAMiwQ,EAAcjwQ,EAAKiwQ,YACnBppS,EAAWopS,EAAYvD,MACvBlhC,EAAuB,MAAZ3kQ,OAAmB,EAASA,EAAS2kQ,SAGtD,GAAkB,MAAZ3kQ,GAAoBA,EAAS6mS,WAiBnC,GAAI2D,EAAe,CAEjB,GAAI7lC,EAASunC,eAAiBvnC,EAASwnC,gBAAkBxnC,EAASslC,cAAgBtlC,EAASulC,eAAgB,CAEzG,IAAMr1Q,EAAKs0Q,GAAOhwQ,GACZizQ,EAAc93M,EAASw1M,QAAQtkR,IAAIqP,GACpCu3Q,EAKMA,EAAYd,SAErBnyQ,EAAKpE,mBALLu/D,EAASw1M,QAAQplR,IAAImQ,EAAIsE,GACC,MAA1BwrO,EAASunC,eAAiCvnC,EAASunC,cAAc/yQ,GACtC,MAA3BwrO,EAASwnC,gBAAkCxnC,EAASwnC,eAAehzQ,GAKvE,CAE0B,MAA1BwrO,EAAS0nC,eAAiC1nC,EAAS0nC,cAAclzQ,EACnE,KAAO,CAEL,IAAMmzQ,EAAU3nC,EAAS/1Q,GACrB09S,EAGG7B,IAAgBn2M,EAAS+2M,YAAY1mR,SAASykR,KAEjDe,EAAcnsQ,EAAOs2D,EAASu0M,YAAYtxS,QAAO,SAAAK,GAAM,OAAK08F,EAAS+2M,YAAY1mR,SAAS/sB,EAAO,KAEjG00S,EAAQnzQ,IAINsxQ,GAAgBn2M,EAAS+2M,YAAY1mR,SAASykR,IAChDe,EAAcnsQ,EAAOs2D,EAASu0M,YAAYtxS,QAAO,SAAAK,GAAM,OAAK08F,EAAS+2M,YAAY1mR,SAAS/sB,EAAO,IAGvG,CACF,GAEF,CACF,EAIF,CAGA,IA2PIzF,GA1PEo6S,GAAa,SAAApiN,GAAG,QAAc,MAAPA,IAAeA,EAAIlvF,OAAO,EACjDjG,GAAuB2gB,EAAAA,cAAoB,MAC3CmtR,GAAc,SAACmG,EAAYuD,GAC/B,IAAMzE,EAAYv2R,IAAO,SAACkT,EAAKc,GAC7B,IAAMwvC,EAAW,IAAIszO,GACfmE,EAAgB,IAAInE,GACpBoE,EAAa,IAAIpE,GACvB,SAAS1gE,IAAqF,IAAlEvqE,EAAM3nK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG8vB,IAAM63I,OAAQrmK,EAAMtB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG+2S,EAAezxP,EAAItlD,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG8vB,IAAMw1B,KAEpFp3C,EAIEo3C,EAJFp3C,MACAC,EAGEm3C,EAHFn3C,OACA89B,EAEEqZ,EAFFrZ,IACAF,EACEuZ,EADFvZ,KAEIkkJ,EAAS/hL,EAAQC,EACnB7M,aAAkBsxS,GAAeoE,EAAWv7I,KAAKn6J,GAAa01S,EAAWhoR,IAAGnvB,MAAdm3S,EAAUljP,EAAQxyD,IACpF,IAAMm1K,EAAW9O,EAAOsvI,iBAAiB33O,GAAU8tG,WAAW4pI,GAC9D,GAAI9oG,GAAqBvmC,GACvB,MAAO,CACLz5J,MAAOA,EAAQy5J,EAAO/yI,KACtBzmB,OAAQA,EAASw5J,EAAO/yI,KACxBqX,IAAAA,EACAF,KAAAA,EACAsnG,OAAQ,EACRojC,SAAAA,EACAwZ,OAAAA,GAGF,IAAMD,EAAMroB,EAAOqoB,IAAMhzL,KAAK00J,GAAK,IAC7BhrJ,EAAI,EAAI1J,KAAKyzL,IAAIT,EAAM,GAAKvZ,EAC5BtvK,EAAIT,GAAKwH,EAAQC,GACvB,MAAO,CACLD,MAAO/G,EACPgH,OAAQzH,EACRulC,IAAAA,EACAF,KAAAA,EACAsnG,OAAQnlI,EAAQ/G,EAChBsvK,SAAAA,EACAwZ,OAAAA,EAGN,CACA,IAAIinH,OAAqB/sS,EACnBgtS,EAAwB,SAAA99Q,GAAO,OAAIrK,GAAI,SAAArP,GAAK,MAAK,CACrDsxC,YAAWnyC,EAAAA,EAAA,GACNa,EAAMsxC,aAAW,IACpB53B,QAAAA,IAEH,GAAE,EACGw8Q,EAAU,IAAIjD,GACdP,EAAY,CAChBrjR,IAAAA,EACAc,IAAAA,EAEA68B,GAAI,KACJg7G,OAAQ,KACR8jB,UAAW,KACX7zE,OAAQ,CACN35E,SAAU,EACV2yJ,SAAS,EACTwmH,WAAW,GAEb7kH,GAAI,KACJT,MAAO,KACPyhH,WAAY,eAACp0C,EAAMn/P,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAC,OAAKuzS,EAAWzjR,IAAOqvO,EAAO,EACrD23C,QAAS,SAACv3S,EAAW83S,GAAgB,OAAKP,EAAQv3S,EAAW83S,EAAkBvnR,IAAM,EACrFwnR,QAAQ,EACRvE,QAAQ,EACRwE,MAAM,EACNp9N,SAAU,KACVq9N,MAAO,IAAI5E,GACXiD,QAAAA,EACA4B,MAAO5B,EACP6B,UAAW,SACXhD,qBAAiBvqS,EACjB8mD,YAAa,CACX53B,QAAS,EACT4R,IAAK,GACLhuC,IAAK,EACL+B,SAAU,IACV24S,QAAS,WACP,IAAMh4R,EAAQmQ,IAEVonR,GAAoB/2S,aAAa+2S,GAEjCv3R,EAAMsxC,YAAY53B,UAAY1Z,EAAMsxC,YAAYhmB,KAAKksQ,EAAsBx3R,EAAMsxC,YAAYhmB,KAEjGisQ,EAAqBt3S,YAAW,kBAAMu3S,EAAsBrnR,IAAMmhC,YAAYh0D,IAAI,GAAE0iB,EAAMsxC,YAAYjyD,SACxG,GAEFsmD,KAAM,CACJp3C,MAAO,EACPC,OAAQ,EACR89B,IAAK,EACLF,KAAM,EACN+lM,aAAa,GAEf3wE,SAAU,CACRy2I,WAAY,EACZ7H,IAAK,EACL7hS,MAAO,EACPC,OAAQ,EACR89B,IAAK,EACLF,KAAM,EACNkkJ,OAAQ,EACRxZ,SAAU,EACVpjC,OAAQ,EACR6+F,mBAAAA,GAEF2lE,UAAW,SAAAjgM,GAAM,OAAI5oF,GAAI,SAAArP,GAAK,OAAAb,EAAAA,EAAA,GACzBa,GAAK,IACRi4F,OAAM94F,EAAAA,EAAA,GACDa,EAAMi4F,QACNA,IACJ,GACA,EACHi6H,QAAS,SAAC3jO,EAAOC,EAAQ2jO,EAAa7lM,EAAKF,GACzC,IAAM47H,EAAS73I,IAAM63I,OACfriH,EAAO,CACXp3C,MAAAA,EACAC,OAAAA,EACA89B,IAAKA,GAAO,EACZF,KAAMA,GAAQ,EACd+lM,YAAAA,GAEF9iN,GAAI,SAAArP,GAAK,MAAK,CACZ2lC,KAAAA,EACA67G,SAAQriJ,EAAAA,EAAA,GACHa,EAAMwhJ,UACN+wE,EAAmBvqE,EAAQovI,EAAezxP,IAEhD,GACH,EACAwyP,OAAQ,SAAA/H,GAAG,OAAI/gR,GAAI,SAAArP,GACjB,IAAMo4R,EAAWjI,GAAaC,GAC9B,MAAO,CACL5uI,SAAQriJ,EAAAA,EAAA,GACHa,EAAMwhJ,UAAQ,IACjB4uI,IAAKgI,EACLH,WAAYj4R,EAAMwhJ,SAASy2I,YAAcG,IAG/C,GAAE,EACFC,aAAc,WAA0B,IAAzBN,EAAS13S,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,SACnBw3S,EAAQ1nR,IAAM0nR,MAGpBA,EAAMhpO,OACNgpO,EAAMr0Q,YAAc,EACF,UAAdu0Q,IACFF,EAAM3sQ,QACN2sQ,EAAMr0Q,YAAc,GAEtBnU,GAAI,iBAAO,CACT0oR,UAAAA,EACD,GACH,EACArH,kBAAclmS,EACdy0F,SAAU,CACRq5M,QAAQ,EACRh6Q,SAAU,EACVkhO,OAAQ,EACR01C,UAAwB50R,EAAAA,YACxBkzR,YAAa,GACbiB,QAAS,IAAIl3Q,IACbwqC,YAAa,GACb+tO,aAAc,CAAC,EAAG,GAClBE,YAAa,GACb/B,YAAa,IAAI12Q,IACjB2oC,UAAW,SAAC/nD,EAAKmgB,EAAU6/E,GACzB,IAAMlf,EAAW9uE,IAAM8uE,SAcvB,OATAA,EAAS3gE,SAAW2gE,EAAS3gE,UAAYA,EAAW,EAAI,EAAI,GAC5D2gE,EAASl3B,YAAY7qE,KAAK,CACxBihB,IAAAA,EACAmgB,SAAAA,EACA6/E,MAAAA,IAIFlf,EAASl3B,YAAck3B,EAASl3B,YAAY6xB,MAAK,SAACx9F,EAAGuK,GAAC,OAAKvK,EAAEkiC,SAAW33B,EAAE23B,QAAQ,IAC3E,WACL,IAAM2gE,EAAW9uE,IAAM8uE,SACP,MAAZA,GAAoBA,EAASl3B,cAE/Bk3B,EAAS3gE,SAAW2gE,EAAS3gE,UAAYA,EAAW,EAAI,EAAI,GAE5D2gE,EAASl3B,YAAck3B,EAASl3B,YAAY7lE,QAAO,SAAArG,GAAC,OAAIA,EAAEsiB,MAAQA,CAAG,IAEzE,CACF,IAGJ,OAAOu0R,CACT,IACM1yR,EAAQ0yR,EAAUvxK,WACpBl5B,EAAUjoF,EAAM2lC,KAChB4yP,EAASv4R,EAAMwhJ,SAAS4uI,IACxBoI,EAAYx4R,EAAMgoJ,OAuCtB,OAtCA0qI,EAAUxsO,WAAU,WAClB,IAAAuyO,EAMI/F,EAAUvxK,WALZ6mC,EAAMywI,EAANzwI,OACAriH,EAAI8yP,EAAJ9yP,KACA67G,EAAQi3I,EAARj3I,SACAx0G,EAAEyrP,EAAFzrP,GACA39B,EAAGopR,EAAHppR,IAIF,GAAIs2B,EAAKp3C,QAAU05F,EAAQ15F,OAASo3C,EAAKn3C,SAAWy5F,EAAQz5F,QAAUgzJ,EAAS4uI,MAAQmI,EAAQ,CAC7F,IAAIG,EACJzwM,EAAUtiD,EACV4yP,EAAS/2I,EAAS4uI,IAElBrmE,GAAa/hE,EAAQriH,GACrBqH,EAAGilL,cAAczwE,EAAS4uI,KAC1B,IAAMj+D,EAAwD,OAAzCumE,EAAoB/yP,EAAKwsL,aAAuBumE,EAAiD,qBAAtBv7I,mBAAqCnwG,EAAGynD,sBAAsB0oD,kBAC9JnwG,EAAGklL,QAAQvsL,EAAKp3C,MAAOo3C,EAAKn3C,OAAQ2jO,EACtC,CAGInqE,IAAWwwI,IACbA,EAAYxwI,EAEZ34I,GAAI,SAAArP,GAAK,MAAK,CACZwhJ,SAAQriJ,EAAAA,EAAA,GACHa,EAAMwhJ,UACNxhJ,EAAMwhJ,SAAS+wE,mBAAmBvqE,IAExC,IAEL,IAGA0qI,EAAUxsO,WAAU,SAAAlmD,GAAK,OAAI4zR,EAAW5zR,EAAM,IAGvC0yR,CACT,EAUA,IAuCI3qO,GACA4wO,GAxCAC,GAAgB,IAAIxsR,IACpBysR,GAAqB,IAAIzsR,IACzB0sR,GAAoB,IAAI1sR,IAmB5B,SAAS2sR,GAAI9gQ,EAASr4C,GACpB,GAAKq4C,EAAQ0N,KAAb,CAA0B,IAGL4tF,EAHKC,EAAAtoE,EAGrBjzB,EAAQ9qC,UAAQ,IAFrB,IAAAqmI,EAAA33I,MAAA03I,EAAAC,EAAArsI,KAAAkb,MAEuB,EACrBk2B,EAFQg7F,EAAA10I,MAAR05C,UAES34C,EACX,CAAC,OAAAqZ,GAAAu6H,EAAA9sI,EAAAuS,EAAA,SAAAu6H,EAAA3sI,GAAA,CALwB,CAM3B,CACA,SAASmyS,GAAmBh0S,EAAMpF,GAChC,OAAQoF,GACN,IAAK,SACH,OAAO+zS,GAAIH,GAAeh5S,GAC5B,IAAK,QACH,OAAOm5S,GAAIF,GAAoBj5S,GACjC,IAAK,OACH,OAAOm5S,GAAID,GAAmBl5S,GAEpC,CAGA,SAASq5S,GAASr5S,EAAWogB,EAAOw2K,GAElC,IAAIh5L,EAAQwiB,EAAM63R,MAAMh4B,WASxB,IAPwB,UAApB7/P,EAAM+3R,WAA8C,kBAAdn4S,IACxCpC,EAAQoC,EAAYogB,EAAM63R,MAAMr0Q,YAChCxjB,EAAM63R,MAAMn4B,QAAU1/P,EAAM63R,MAAMr0Q,YAClCxjB,EAAM63R,MAAMr0Q,YAAc5jC,GAG5BmoE,GAAc/nD,EAAMi/E,SAASl3B,YACxBjrE,GAAI,EAAGA,GAAIirE,GAAY/vE,OAAQ8E,MAClC67S,GAAe5wO,GAAYjrE,KACdqhB,IAAIub,QAAQi/Q,GAAax6L,MAAMgjB,WAAY3jI,EAAOg5L,GAMjE,OAHKx2K,EAAMi/E,SAAS3gE,UAAYte,EAAMgtC,GAAGpnD,QAAQoa,EAAMgtC,GAAGpnD,OAAOoa,EAAMmyK,MAAOnyK,EAAMgoJ,QAEpFhoJ,EAAMi/E,SAASugK,OAASniQ,KAAKC,IAAI,EAAG0iB,EAAMi/E,SAASugK,OAAS,GACjC,WAApBx/O,EAAM+3R,UAAyB,EAAI/3R,EAAMi/E,SAASugK,MAC3D,CAuFA,SAAS2uC,KACP,IAAMhwL,EAAQ79F,EAAAA,WAAiB3gB,IAC/B,IAAKw+G,EAAO,MAAM,IAAIjgH,MAAM,4DAC5B,OAAOigH,CACT,CAMA,SAAS+6L,KAAgD,IAAvC1zO,EAAQnlE,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,SAAA2f,GAAK,OAAIA,CAAK,EAAE6tR,EAAUxtS,UAAArI,OAAA,EAAAqI,UAAA,QAAAmK,EACrD,OAAO2jS,KAAW3oO,EAAUqoO,EAC9B,CAwBA,IAAMsL,GAAkB,IAAIh4P,QAC5B,SAASi4P,GAAU1sN,EAAY7f,GAC7B,OAAO,SAAUwsO,GAEf,IAAIl1M,EAASg1M,GAAgBhpR,IAAIkpR,GAC5Bl1M,IACHA,EAAS,IAAIk1M,EACbF,GAAgB9pR,IAAIgqR,EAAOl1M,IAEzBzX,GAAYA,EAAWyX,GAC3B,QAAA/rC,EAAA/3D,UAAArI,OARyBwe,EAAK,IAAAzZ,MAAAq7D,EAAA,EAAAA,EAAA,KAAAc,EAAA,EAAAA,EAAAd,EAAAc,IAAL1iD,EAAK0iD,EAAA,GAAA74D,UAAA64D,GAS9B,OAAOxoB,QAAQxtC,IAAIsT,EAAM7Z,KAAI,SAAA6Z,GAAK,OAAI,IAAIk6B,SAAQ,SAACqkB,EAAK4pB,GAAM,OAAKwlB,EAAOn4B,KAAKx1D,GAAO,SAAAstB,GAChFA,EAAKquJ,OAAOxzL,OAAOmgB,OAAOglB,EAAMutQ,GAAWvtQ,EAAKquJ,QACpDp9H,EAAIjxB,EACN,GAAG+oC,GAAY,SAAAlrD,GAAK,OAAIg9D,EAAO,IAAIzgF,MAAM,kBAAD2D,OAAmB2U,EAAK,MAAA3U,OAAc,MAAT8f,OAAgB,EAASA,EAAMm/B,UAAW,GAAC,GAAC,IACnH,CACF,CAOA,SAASw4P,GAAUD,EAAO7iS,EAAOk2E,EAAY7f,GAE3C,IAAM7qE,EAAOjF,MAAM0E,QAAQ+U,GAASA,EAAQ,CAACA,GACvCszQ,ED7lDQ,SAAC1rM,EAAIp8E,EAAMu1D,GAAM,OAAKssE,GAAMzlD,EAAIp8E,GAAM,EAAOu1D,EAAO,CC6lDlDgiP,CAAQH,GAAU1sN,EAAY7f,GAAa,CAACwsO,GAAKx3S,OAAAsyD,EAAKnyD,IAAO,CAC3EixD,MAAOj8B,GAAG85Q,MAGZ,OAAO/zS,MAAM0E,QAAQ+U,GAASszQ,EAAUA,EAAQ,EAClD,CAKAwvB,GAAU7+N,QAAU,SAAU4+N,EAAO7iS,EAAOk2E,GAC1C,IAAM1qF,EAAOjF,MAAM0E,QAAQ+U,GAASA,EAAQ,CAACA,GAC7C,ODvmDc,SAAC4nE,EAAIp8E,EAAMu1D,GAAgBssE,GAAMzlD,EAAIp8E,GAAM,EAAMu1D,EAAO,CCumD/DkjB,CAAQ2+N,GAAU1sN,GAAa,CAAC2sN,GAAKx3S,OAAAsyD,EAAKnyD,IACnD,EAKAs3S,GAAU/4S,MAAQ,SAAU84S,EAAO7iS,GACjC,IAAMxU,EAAOjF,MAAM0E,QAAQ+U,GAASA,EAAQ,CAACA,GAC7C,ODvmDY,SAAAxU,GACZ,QAAawI,IAATxI,GAAsC,IAAhBA,EAAKhK,OAAc+2S,GAAY9gP,OAAO,EAAG8gP,GAAY/2S,YAAa,CAC1F,IAAM+5F,EAAQg9M,GAAYnsL,MAAK,SAAA7wB,GAAK,OAAIi9M,GAAmBhtS,EAAM+vF,EAAM/vF,KAAM+vF,EAAM9+B,MAAM,IACrF8+B,GAAOA,EAAM/wB,QACnB,CACF,CCkmDSzgE,CAAM,CAAC84S,GAAKx3S,OAAAsyD,EAAKnyD,IAC1B,EAEA,IAAMw3S,GAAQ,IAAIj8Q,IAClBk8Q,GA5KA,SAAoBD,GAClB,IAEIl0Q,EACAkxJ,EACAx2K,EAJA2/P,GAAU,EACV+5B,GAAqB,EAIzB,SAASrrO,EAAKzuE,GACZ42L,EAAQ30H,sBAAsBwM,GAC9BsxM,GAAU,EACVr6O,EAAS,EAGT0zQ,GAAmB,SAAUp5S,GAG7B85S,GAAqB,EAAK,IACO3lK,EADPC,EAAA9oE,EACPsuO,EAAMrsS,UAAQ,IAAjC,IAAA6mI,EAAAn4I,MAAAk4I,EAAAC,EAAA7sI,KAAAkb,MAAmC,KAC7Bs3R,EADKrmS,EAAIygI,EAAAl1I,QAEbmhB,EAAQ1M,EAAK6qG,MAAMgjB,YAETliC,SAASq5M,UAA+B,WAApBt4R,EAAM+3R,WAA0B/3R,EAAMi/E,SAASugK,OAAS,IAAwC,OAA/Bm6C,EAAe35R,EAAMgtC,GAAG4lI,KAAe+mH,EAAavyE,eACjJ9hM,GAAU2zQ,GAASr5S,EAAWogB,GAElC,CAAC,OAAA/G,GAAA+6H,EAAAttI,EAAAuS,EAAA,SAAA+6H,EAAAntI,GAAA,CAOD,GANA6yS,GAAqB,EAGrBV,GAAmB,QAASp5S,GAGb,IAAX0lC,EAMF,OAJA0zQ,GAAmB,OAAQp5S,GAG3B+/Q,GAAU,EACHr8M,qBAAqBkzH,EAEhC,CA8BA,MAAO,CACLnoH,KAAAA,EACAulO,WA/BF,SAASA,EAAW5zR,GAAmB,IACjC45R,EADqBp6C,EAAMn/P,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAElC,IAAK2f,EAAO,OAAOw5R,EAAM72S,SAAQ,SAAA2Q,GAAI,OAAIsgS,EAAWtgS,EAAK6qG,MAAMgjB,WAAYq+H,EAAO,IAC7C,OAAhCo6C,EAAgB55R,EAAMgtC,GAAG4lI,KAAegnH,EAAcxyE,eAAiBpnN,EAAMi/E,SAASq5M,QAA8B,UAApBt4R,EAAM+3R,YAIzG/3R,EAAMi/E,SAASugK,OAHbA,EAAS,EAGaniQ,KAAKiuC,IAAI,GAAItrB,EAAMi/E,SAASugK,OAASA,GAEzDk6C,EAEsB,EAGA,EAKvB/5B,IACHA,GAAU,EACV99M,sBAAsBwM,IAE1B,EASE8oO,QARF,SAAiBv3S,GAAkD,IAAvC83S,IAAgBr3S,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GAAS2f,EAAK3f,UAAArI,OAAA,EAAAqI,UAAA,QAAAmK,EAAEgsL,EAAKn2L,UAAArI,OAAA,EAAAqI,UAAA,QAAAmK,EAE/D,GADIktS,GAAkBsB,GAAmB,SAAUp5S,GAC9CogB,EAA0Fi5R,GAASr5S,EAAWogB,EAAOw2K,OAA9G,CAAF,IAAmCxhD,EAAnCC,EAAA/pE,EAAqBsuO,EAAMrsS,UAAQ,IAAjC,IAAA8nI,EAAAp5I,MAAAm5I,EAAAC,EAAA9tI,KAAAkb,MAAA,CAAmC42R,GAASr5S,EAA7Bo1I,EAAAn2I,MAA6Cs/G,MAAMgjB,WAAY,QAAAloH,GAAAg8H,EAAAvuI,EAAAuS,EAAA,SAAAg8H,EAAApuI,GAAA,EACtF6wS,GAAkBsB,GAAmB,QAASp5S,EACpD,EAMF,CAsGIi6S,CAAWL,IAFb5F,GAAU6F,GAAV7F,WACAuD,GAAOsC,GAAPtC,QAEF2C,GA7qDA,SAAwBC,EAAQC,GAC9B,SAAS/5N,EAAej7E,EAAIoF,EAIzBkJ,GAAM,IAEH3I,EAFGsvS,EAAA7vS,EAHP1K,KAAAA,OAAI,IAAAu6S,EAAG,GAAEA,EACT/N,EAAM9hS,EAAN8hS,OACGriS,EAAKwV,GAAAjV,EAAAuU,IAEJplB,EAAO,GAAHsI,OAAMmD,EAAK,GAAG+L,eAAalP,OAAGmD,EAAKgM,MAAM,IAEjD,GAAa,cAAThM,EAAsB,CACxB,QAAqBwF,IAAjBX,EAAMtH,OAAsB,MAAM,IAAIrE,MAAM,iDAEhDyM,EAAW2mS,GADIznS,EAAMtH,OACM,CACzByC,KAAAA,EACAsO,KAAAA,EACA44R,OAAAA,EACAoG,WAAW,GAEf,KAAO,CACL,IAAM3wS,EAAS4tS,GAAUh2S,GACzB,IAAKoI,EACH,MAAM,IAAIzD,MAAM,QAAD2D,OAAStI,EAAI,iKAI9B,IAAKwD,MAAM0E,QAAQ/B,GAAO,MAAM,IAAIxB,MAAM,wCAI1CyM,EAAW2mS,GAAOl7M,EAAKz0F,EAAMwyD,EAAIz0D,IAAO,CACtCsF,KAAAA,EACAsO,KAAAA,EACA44R,OAAAA,EAEAl3P,cAAe,CACbt1C,KAAAA,IAGN,CAYA,YAT8B8K,IAA1BG,EAAS6lS,MAAMtE,SACbvhS,aAAoBsoS,GAAsBtoS,EAAS6lS,MAAMtE,OAAS,WAAoBvhS,aAAoBsoS,KAAgBtoS,EAAS6lS,MAAMtE,OAAS,aAO3I,WAAT3yS,GAAmBi5S,GAAa7nS,EAAUd,GACvCc,CACT,CACA,SAAS0I,EAAY6mS,EAAgB1gR,GACnC,IAEMo4Q,EAAcuI,EAFhB3yE,GAAQ,EACRhuM,IAGkC,OAA/Bo4Q,EAAep4Q,EAAMg3Q,QAAkBoB,EAAa1F,OACvDA,GAAOgO,EAAgB1gR,EAAOA,EAAMg3Q,MAAMtE,QACjC1yQ,EAAM69I,YAAc6iI,EAAe7iI,aAE5C6iI,EAAe1tR,IAAIgN,GACnBguM,GAAQ,GAILA,GAAyD,OAAjD2yE,EAAwBD,EAAe1J,QAA0B2J,EAAsBr1G,QAAQ5nM,KAAKs8B,GAC5GA,EAAMg3Q,OAAOc,GAAQ93Q,EAAO,CAAC,GAClCA,EAAMg3Q,MAAMlzO,OAAS48O,EACrBzG,GAAej6Q,GACf+5Q,GAAmB/5Q,GAEvB,CACA,SAAS2tB,EAAa+yP,EAAgB1gR,EAAO4gR,GAC3C,IAAI5yE,GAAQ,EACZ,GAAIhuM,EAAO,CACT,IAAIq4Q,EAAewI,EACnB,GAAqC,OAAhCxI,EAAgBr4Q,EAAMg3Q,QAAkBqB,EAAc3F,OACzDA,GAAOgO,EAAgB1gR,EAAOA,EAAMg3Q,MAAMtE,aACrC,GAAI1yQ,EAAM69I,YAAc6iI,EAAe7iI,WAAY,CACxD79I,EAAM8jC,OAAS48O,EACf1gR,EAAMmF,cAAc,CAClB35B,KAAM,UAERk1S,EAAev7Q,cAAc,CAC3B35B,KAAM,aACNw0B,MAAAA,IAEF,IAAM8gR,EAAeJ,EAAel8R,SAAS9b,QAAO,SAAAu3B,GAAO,OAAIA,IAAYD,CAAK,IAC1ExqB,EAAQsrS,EAAa1tS,QAAQwtS,GACnCF,EAAel8R,SAAW,GAAHnc,OAAAsyD,EAAOmmP,EAAatpS,MAAM,EAAGhC,IAAM,CAAEwqB,GAAK26B,EAAKmmP,EAAatpS,MAAMhC,KACzFw4N,GAAQ,CACV,CACKA,GAA0D,OAAlD6yE,EAAyBH,EAAe1J,QAA0B6J,EAAuBv1G,QAAQ5nM,KAAKs8B,GAC9GA,EAAMg3Q,OAAOc,GAAQ93Q,EAAO,CAAC,GAClCA,EAAMg3Q,MAAMlzO,OAAS48O,EACrBzG,GAAej6Q,GACf+5Q,GAAmB/5Q,EACrB,CACF,CACA,SAAS+gR,EAAgBp3S,EAAOm6D,GAAyB,IAAjBwkG,EAAOzhK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GACzC8C,GAAOgxD,EAAIhxD,GAAOR,SAAQ,SAAA62B,GAAK,OAAI7G,EAAY2qC,EAAQ9jC,EAAOsoI,EAAQ,GAC5E,CACA,SAASnvI,EAAYunR,EAAgB1gR,EAAOsoI,GAC1C,GAAItoI,EAAO,CACT,IAAIghR,EAAwBC,EAAeC,EAM3C,GAJIlhR,EAAMg3Q,QAAOh3Q,EAAMg3Q,MAAMlzO,OAAS,MAEiB,OAAlDk9O,EAAyBN,EAAe1J,QAAkBgK,EAAuB11G,UAASo1G,EAAe1J,MAAM1rG,QAAUo1G,EAAe1J,MAAM1rG,QAAQ5iM,QAAO,SAAA5F,GAAC,OAAIA,IAAMk9B,CAAK,KAE7I,OAAhCihR,EAAgBjhR,EAAMg3Q,QAAkBiK,EAAcvO,OACzDD,GAAOiO,EAAgB1gR,EAAOA,EAAMg3Q,MAAMtE,aACrC,GAAI1yQ,EAAM69I,YAAc6iI,EAAe7iI,WAAY,CACxD,IAAIsjI,EACJT,EAAel5O,OAAOxnC,GAGe,OAAhCmhR,EAAgBnhR,EAAMg3Q,QAAkBmK,EAAcrnS,MA8sBnE,SAA6B6qG,EAAO57G,GAClC,IAAAq4S,EAEIz8L,EAAMgjB,WADRliC,EAAQ27M,EAAR37M,SAGFA,EAASu0M,YAAcv0M,EAASu0M,YAAYtxS,QAAO,SAAA0Y,GAAC,OAAIA,IAAMrY,CAAM,IACpE08F,EAAS+2M,YAAc/2M,EAAS+2M,YAAY9zS,QAAO,SAAA0Y,GAAC,OAAIA,IAAMrY,CAAM,IACpE08F,EAASw1M,QAAQ9xS,SAAQ,SAAC9D,EAAO+D,GAC3B/D,EAAMk1S,cAAgBxxS,GAAU1D,EAAM0D,SAAWA,GAEnD08F,EAASw1M,QAAQ72Q,OAAOh7B,EAE5B,IACAq8F,EAASg1M,YAAYtxS,SAAQ,SAACuxS,EAAUr2Q,GACtCm2Q,GAA8B/0M,EAASg1M,YAAa1xS,EAAQ2xS,EAAUr2Q,EACxE,GACF,CA7tBUg9Q,CAAoBpK,GAAgBj3Q,GAAQA,EAEhD,CAWA,IAMMshR,EANAC,EAA+C,OAAhCL,EAAgBlhR,EAAMg3Q,YAAiB,EAASkK,EAAcpI,UAC7E0I,GAAiBD,SAA4BvwS,IAAZs3J,EAA0C,OAAlBtoI,EAAMsoI,QAAmBA,GAIxF,IAAKi5I,EAEHR,EAAiD,OAAhCO,EAAgBthR,EAAMg3Q,YAAiB,EAASsK,EAAch2G,QAAStrK,EAAOwhR,GAC/FT,EAAgB/gR,EAAMxb,SAAUwb,EAAOwhR,GAOzC,UAHOxhR,EAAMg3Q,MAGTwK,GAAiBxhR,EAAMsoI,SAA0B,UAAftoI,EAAMx0B,KAAkB,CAC5D,IAAMuzC,EAAW,WACf,IACE/e,EAAMsoI,SACR,CAAE,MAAOp7J,KACP,CAEJ,EAGwC,qBAA7Bu0S,0BACTnhR,EAAAA,GAAAA,2BAA0BoB,GAAAA,sBAAuBqd,GAEjDA,GAEJ,CACAg7P,GAAmB2G,EACrB,CACF,CA0CA,IAAMgB,EAAqB,WAAO,EAC5BC,EAAaC,KAAW,CAC5Bn7N,eAAAA,EACAttD,YAAAA,EACAtf,YAAAA,EACA6sE,mBAAoB7sE,EACpB8zC,aAAAA,EACAw5B,kBAAkB,EAClBD,mBAAmB,EACnBE,qBAAqB,EACrBC,mBAAmB,EACnBJ,WAAY,EACZmB,uBAAwB,SAACrlE,EAAWid,GAClC,GAAKA,EAAL,CAGA,IAAM24J,EAAQ51K,EAAU4kH,WAAWgxD,MAC9BA,EAAMq+G,QAGXr+G,EAAMq+G,MAAMl9R,KAAOiJ,EACnBlJ,EAAY8+K,EAAO34J,GARD,CASpB,EACAyoD,yBAA0B,SAAC1lE,EAAWid,GAC/BA,GACL7G,EAAYpW,EAAU4kH,WAAWgxD,MAAO34J,EAC1C,EACAwoD,wBAAyB,SAACzlE,EAAWid,EAAO4gR,GAC1C,GAAK5gR,GAAU4gR,EAAf,CAGA,IAAMjoH,EAAQ51K,EAAU4kH,WAAWgxD,MAC9BA,EAAMq+G,OACXrpP,EAAagrI,EAAO34J,EAAO4gR,EALO,CAMpC,EACAv6N,mBAAoB,kBAAM,IAAI,EAC9BC,oBAAqB,SAAAu7N,GAAiB,OAAIA,CAAiB,EAC3Dl7N,wBAAuB,SAACx1E,GACtB,IAAI8nS,EACEN,EAAgF,OAAlEM,EAA+B,MAAZ9nS,OAAmB,EAASA,EAAS6lS,OAAiBiC,EAAmB,CAAC,EAGjH,OAAOn3R,QAAQ62R,EAAW7iC,SAC5B,EACAlvL,cAAa,SAACz1E,EAAU2wS,EAAOC,EAAUl6K,GACvC,IAAIqyK,EAIJ,IAHsF,OAAlEA,EAA+B,MAAZ/oS,OAAmB,EAASA,EAAS6lS,OAAiBkD,EAAmB,CAAC,GAGlGpB,WAAajxK,EAAS9+H,QAAU8+H,EAAS9+H,SAAWoI,EACjE,MAAO,EAAC,GAGR,IAAA6wS,EAIIn6K,EAHF3hI,KAAM+7S,OAAO,IAAAD,EAAG,GAAEA,EAEfE,GACDr6K,EAFFrjH,SACUqB,GACRgiH,EAAQziH,KACZ+8R,EAIIJ,EAHF77S,KAAMk8S,OAAO,IAAAD,EAAG,GAAEA,EAEfE,GACDN,EAFFv9R,SACUqB,GACRk8R,EAAQrnP,KAGZ,IAAKn3D,MAAM0E,QAAQg6S,GAAU,MAAM,IAAIv9S,MAAM,wCAG7C,GAAIu9S,EAAQx9R,MAAK,SAACpf,EAAOmQ,GAAK,OAAKnQ,IAAU+8S,EAAQ5sS,EAAM,IAAG,MAAO,EAAC,GAEtE,IAAMi7O,EAAO+nD,GAAUrnS,EAAU+wS,EAASG,GAAS,GACnD,OAAI5xD,EAAKimD,QAAQl4S,OAAe,EAAC,EAAOiyP,GAGjC,IAEX,EACAloK,aAAY,SAACp3E,EAAQ8S,EAAuBzY,EAAM82S,EAAWz6K,EAAU06K,GAAO,IAAAx2R,EAAAzD,EAAArE,EAAA,GAAtDu+R,EAAWz2R,EAAA,GAAE0kO,EAAI1kO,EAAA,GAEnCy2R,EAxHR,SAAwBrxS,EAAU3F,EAAMq8H,EAAU06K,GAChD,IAAI1J,EACE/0O,EAA+C,OAArC+0O,EAAkB1nS,EAAS6lS,YAAiB,EAAS6B,EAAgB/0O,OACrF,GAAKA,EAAL,CACA,IAAM2+O,EAAch8N,EAAej7E,EAAMq8H,EAAU12H,EAAS6lS,MAAMl9R,MAKlE,GAAI3I,EAASqT,SAAU,KACgB6mD,EADhBC,EAAAoG,EACDvgE,EAASqT,UAAQ,IAArC,IAAA8mD,EAAAjpE,MAAAgpE,EAAAC,EAAA39D,KAAAkb,MAAuC,KAA5BmX,EAAKqrC,EAAAhmE,MACV26B,EAAMg3Q,OAAOn9R,EAAY4oS,EAAaziR,EAC5C,CAAC,OAAAvgB,GAAA6rD,EAAAp+D,EAAAuS,EAAA,SAAA6rD,EAAAj+D,GAAA,CACD8D,EAASqT,SAAWrT,EAASqT,SAAS9b,QAAO,SAAAs3B,GAAK,OAAKA,EAAMg3Q,KAAK,GACpE,CACA7lS,EAAS6lS,MAAM1rG,QAAQniM,SAAQ,SAAA62B,GAAK,OAAInmB,EAAY4oS,EAAaziR,EAAM,IACvE7uB,EAAS6lS,MAAM1rG,QAAU,GACpBn6L,EAAS6lS,MAAM0L,yBAClBvpR,EAAY2qC,EAAQ3yD,GAElBsxS,EAAY3+O,SACd2+O,EAAYzL,MAAM0L,yBAA0B,GAE9C7oS,EAAYiqD,EAAQ2+O,GAGhBA,EAAYthE,SAAWshE,EAAYzL,MAAMgB,YACzBf,GAAgBwL,GAAa96K,WACrCliC,SAASu0M,YAAYt2S,KAAK++S,GAEtC,CAACF,EAAOA,EAAM/iR,WAAWr2B,SAAQ,SAAAo5S,GACjB,OAAVA,IACFA,EAAMpkR,UAAYskR,EACdF,EAAM59R,MACiB,oBAAd49R,EAAM59R,IAAoB49R,EAAM59R,IAAI89R,GAAkBF,EAAM59R,IAAIub,QAAUuiR,GAG3F,GAlCmB,CAmCrB,CAkFqBE,CAAexxS,EAAU3F,EAAMq8H,EAAU06K,GAErDvJ,GAAa7nS,EAAUs/O,EAC9B,EACAnoK,YAAW,SAACn3E,EAAU2wS,EAAOz9O,EAAQu+O,GACnC,IAAIC,EAGElK,EAAoD,OAAtCkK,EAAmB1xS,EAAS6lS,OAAiB6L,EAAmB,CAAC,EACjF1xS,EAASgwO,SAAWw3D,EAAW7iC,UAAY6iC,EAAWX,YACxDf,GAAgB9lS,GAAUw2H,WAAWliC,SAASu0M,YAAYt2S,KAAKyN,EAEnE,EACAi1E,kBAAmB,SAAAj1E,GAAQ,OAAIA,CAAQ,EACvCo1E,iBAAkB,kBAAM,IAAI,EAC5BgB,mBAAoB,SAAAxkE,GAAS,OAAI+0R,GAAQ/0R,EAAU4kH,WAAWgxD,MAAM,EACpEnyG,iBAAkB,WAAO,EACzBK,qBAAsB,kBAAM,CAAK,EACjCkC,eAAgB,kBAAM,CAAK,EAC3BJ,aAAY,SAACx3E,GACX,IAAI2xS,EAEJ72R,EAG2C,OAAtC62R,EAAmB3xS,EAAS6lS,OAAiB8L,EAAmB,CAAC,EAF5Dt3S,EAAIygB,EAAZymR,OACA5uO,EAAM73C,EAAN63C,OAEEt4D,GAAQs4D,GAAQ2uO,GAAO3uO,EAAQ3yD,EAAU3F,GACzC2F,EAAS0sK,aAAY1sK,EAASo/D,SAAU,GAC5CwpO,GAAmB5oS,EACrB,EACA03E,eAAc,SAAC13E,EAAUd,GACvB,IAAI0yS,EAEJ52R,EAG2C,OAAtC42R,EAAmB5xS,EAAS6lS,OAAiB+L,EAAmB,CAAC,EAF5Dv3S,EAAI2gB,EAAZumR,OACA5uO,EAAM33C,EAAN23C,OAEEt4D,GAAQs4D,GAAQ4uO,GAAO5uO,EAAQ3yD,EAAU3F,IACzC2F,EAAS0sK,YAA+B,MAAjBxtK,EAAMkgE,SAAmBlgE,EAAMkgE,WAASp/D,EAASo/D,SAAU,GACtFwpO,GAAmB5oS,EACrB,EACA21E,mBAAoB46N,EACpB94N,iBAAkB84N,EAClB54N,mBAAoB44N,EAGpBl6N,wBAAyB,kBAAMg5N,EAAoBA,IAAsBv6N,GAAAA,oBAAoB,EAC7F+8N,yBAA0B,WAAO,EACjCC,wBAAyB,WAAO,EAChCx7N,sBAAuB,WAAO,EAC9BjhF,IAA4B,qBAAhBsxD,aAA+Bt6B,GAAG25Q,IAAIr/O,YAAYtxD,KAAOsxD,YAAYtxD,IAAMg3B,GAAG25Q,IAAI5wS,KAAKC,KAAOD,KAAKC,IAAM,kBAAM,CAAC,EAE5HugF,gBAAiBvpD,GAAG25Q,IAAI1wS,YAAcA,gBAAauK,EACnDg2E,cAAexpD,GAAG25Q,IAAInwS,cAAgBA,kBAAegK,IAEvD,MAAO,CACL2wS,WAAAA,EACAuB,WAAYlK,GAEhB,CAw1CImK,CAAenD,GAv5BnB,WACE,IAAIoD,EAGEC,EAA8B,qBAATtnS,MAAwBA,MAA0B,qBAAX9R,QAA0BA,OAC5F,IAAKo5S,EAAa,OAAOp9N,GAAAA,qBAEzB,OADyD,OAA3Cm9N,EAAqBC,EAAYl0Q,YAAiB,EAASi0Q,EAAmB53S,MAE1F,IAAK,QACL,IAAK,cACL,IAAK,WACL,IAAK,gBACL,IAAK,cACL,IAAK,YACH,OAAO06E,GAAAA,sBACT,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,eACL,IAAK,eACL,IAAK,QACH,OAAOF,GAAAA,wBACT,QACE,OAAOC,GAAAA,qBAEb,IA43BE07N,GAAUrB,GAAVqB,WACAuB,GAAU5C,GAAV4C,WAEII,GAAe,CACnBh4G,QAAS,UACTosG,QAAQ,GAEJ6L,GAAyB,SAAC/vP,EAAIosF,GAClC,IAAM4jK,EAA+B,oBAAPhwP,EAAoBA,EAAGosF,GAAUpsF,EAC/D,OAAIkqP,GAAW8F,GAAwBA,EAA2B,IAAI/J,GAAmB9zR,EAAC,CACxFsvN,gBAAiB,mBACjBr1F,OAAQA,EACR2vF,WAAW,EACX5yE,OAAO,GACJnpG,GAEP,EAgDA,SAASuD,GAAW6oF,GAElB,IAAM6jK,EAAWzD,GAAMrpR,IAAIipH,GACrB8jK,EAAwB,MAAZD,OAAmB,EAASA,EAASlB,MACjDoB,EAAwB,MAAZF,OAAmB,EAASA,EAAS9+L,MACnD8+L,GAAU9oS,QAAQk/C,KAAK,8CAI3B,IAkBI+pP,EAlBEC,EAA6C,oBAAhB/vP,YAGnCA,YAEAn5C,QAAQwN,MAGFw8F,EAAQg/L,GAAa1P,GAAYmG,GAAYuD,IAE7C4E,EAAQmB,GAAa/B,GAAW71N,gBAAgB64B,EAAO5+B,GAAAA,eAAgB,MAAM,EAAO,KAAM,GAAI89N,EAAqB,MAEpHJ,GAAUzD,GAAMnqR,IAAI+pH,EAAQ,CAC/B2iK,MAAAA,EACA59L,MAAAA,IAKF,IACIm/L,EADAC,GAAa,EAEjB,MAAO,CACLC,UAAS,WAAa,IAAZ3zS,EAAKxJ,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAEXo9S,EAgBF5zS,EAhBFmjD,GACM0wP,EAeJ7zS,EAfF87C,KACOg4P,EAcL9zS,EAdFsoL,MACAl6E,EAaEpuG,EAbFouG,OACW2lM,EAYT/zS,EAZFuzS,UAASS,EAYPh0S,EAXFi+M,QAAAA,OAAO,IAAA+1F,GAAQA,EAAAC,EAWbj0S,EAVFupS,OAAAA,OAAM,IAAA0K,GAAQA,EAAAC,EAUZl0S,EATF+tS,KAAAA,OAAI,IAAAmG,GAAQA,EAAAC,EASVn0S,EARF8tS,OAAAA,OAAM,IAAAqG,GAAQA,EAAAC,EAQZp0S,EAPFq0S,aAAAA,OAAY,IAAAD,GAAQA,EAAAE,EAOlBt0S,EANFkuS,UAAAA,OAAS,IAAAoG,EAAG,SAAQA,EAAAC,EAMlBv0S,EALFumS,IAAAA,OAAG,IAAAgO,EAAG,CAAC,EAAG,GAAEA,EACZ9sP,EAIEznD,EAJFynD,YACW+sP,EAGTx0S,EAHFiiL,UACQwyH,EAENz0S,EAFFm+J,OACA+sI,EACElrS,EADFkrS,gBAEE/0R,EAAQm+F,EAAMgjB,WAGdn0E,EAAKhtC,EAAMgtC,GACVhtC,EAAMgtC,IAAIhtC,EAAMqP,IAAI,CACvB29B,GAAIA,EAAK+vP,GAAuBU,EAAUrkK,KAI5C,IAAI0yC,EAAY9rK,EAAM8rK,UACjBA,GAAW9rK,EAAMqP,IAAI,CACxBy8J,UAAWA,EAAY,IAAImnH,KAI7B,IA4CM9gH,EA5CNxrK,EAGI03R,GAAkB,CAAC,EAFrB/jP,EAAM3zC,EAAN2zC,OACGj5D,EAAOge,GAAAsH,EAAA43R,IAaZ,GAXKvnR,GAAG85Q,IAAIzvS,EAASyqL,EAAWgxH,KAAeJ,GAAW5wH,EAAS3sK,EAAA,GAC9D9d,IAEA21B,GAAG85Q,IAAIx2O,EAAQwxH,EAAUxxH,OAAQwiP,KAAeJ,GAAW5wH,EAAW,CACzExxH,OAAMn7C,EAAAA,EAAA,GACD2sK,EAAUxxH,QACVA,MAKFt6C,EAAMgoJ,QAAUhoJ,EAAMgoJ,SAAWs1I,IAAetmR,GAAG85Q,IAAIwM,EAAYgB,EAAexB,IAAe,CACpGQ,EAAagB,EACb,IAAMrnI,EAAWqnI,aAAyBrL,GACpCjrI,EAASiP,EAAWqnI,EAAgBJ,EAAe,IAAIjL,GAAyB,EAAG,EAAG,EAAG,EAAG,GAAK,KAAQ,IAAIA,GAAwB,GAAI,EAAG,GAAK,KAClJh8H,IACHjP,EAAOroG,SAASj4D,EAAI,EAChB42S,IACF5B,GAAW10I,EAAQs2I,IAGf,WAAYA,GAAiB,SAAUA,GAAiB,UAAWA,GAAiB,WAAYA,GAAiB,QAASA,KAC5Ht2I,EAAO6rI,QAAS,EAChB7rI,EAAOyoB,2BAINzwK,EAAMgoJ,QAA6B,MAAjBs2I,GAAyBA,EAAc5kJ,UAAWsO,EAAOmP,OAAO,EAAG,EAAG,IAE/Fn3J,EAAMqP,IAAI,CACR24I,OAAAA,IAKF8jB,EAAU9jB,OAASA,CACrB,CAGKhoJ,EAAMmyK,QAELwrH,aAAwB1K,GAC1B9gH,EAAQwrH,GAERxrH,EAAQ,IAAI8gH,GACR0K,GAAcjB,GAAWvqH,EAAOwrH,IAEtC39R,EAAMqP,IAAI,CACR8iK,MAAOm/G,GAAQn/G,MAKnB,IAAKnyK,EAAM4yK,GAAI,CACb,IAAI4rH,EAEEC,EAAgB,SAAC7+S,EAAW42L,GAChC,IAAMx2K,EAAQm+F,EAAMgjB,WACI,UAApBnhH,EAAM+3R,WACVZ,GAAQv3S,GAAW,EAAMogB,EAAOw2K,EAClC,EAGMkoH,EAAsB,WAC1B,IAAM1+R,EAAQm+F,EAAMgjB,WACpBnhH,EAAMgtC,GAAG4lI,GAAG3B,QAAUjxK,EAAMgtC,GAAG4lI,GAAGw0C,aAClCpnN,EAAMgtC,GAAG4lI,GAAG6D,iBAAiBz2K,EAAMgtC,GAAG4lI,GAAGw0C,aAAeq3E,EAAgB,MACnEz+R,EAAMgtC,GAAG4lI,GAAGw0C,cAAcwsE,GAAW5zR,EAC5C,EAGM4yK,EAAK,CACT6tF,QAAO,WACL,IAAMzzN,EAAKmxD,EAAMgjB,WAAWn0E,GAC5BA,EAAG4lI,GAAG5uL,iBAAiB,eAAgB06S,GACvC1xP,EAAG4lI,GAAG5uL,iBAAiB,aAAc06S,EACvC,EACA93N,WAAU,WACR,IAAM55B,EAAKmxD,EAAMgjB,WAAWn0E,GAC5BA,EAAG4lI,GAAGt6J,oBAAoB,eAAgBomR,GAC1C1xP,EAAG4lI,GAAGt6J,oBAAoB,aAAcomR,EAC1C,GAI2E,oBAA7C,OAAnBF,EAASxxP,EAAG4lI,SAAc,EAAS4rH,EAAOx6S,mBAAkC4uL,EAAG6tF,UAC5FzgQ,EAAMqP,IAAI,CACRujK,GAAAA,GAEJ,CAGA,GAAI5lI,EAAGi8J,UAAW,CAChB,IAAM01F,EAAa3xP,EAAGi8J,UAAUh4B,QAC1B2tH,EAAU5xP,EAAGi8J,UAAUjkN,KAE7B,GADAgoD,EAAGi8J,UAAUh4B,UAAY62B,EACrB9wL,GAAG45Q,IAAI9oF,GACT96J,EAAGi8J,UAAUjkN,KAAOiuS,QACf,GAAIj8Q,GAAGnmB,IAAIi3M,GAAU,CAC1B,IAAI+2F,EACEC,EAAQ,CACZh7G,MAAOmvG,GACP9mK,WAAY8mK,GACZ8L,KAAM9L,GACN+L,SAAU/L,IAEZjmP,EAAGi8J,UAAUjkN,KAA4C,OAApC65S,EAAiBC,EAAMh3F,IAAoB+2F,EAAiB5L,EACnF,MAAWj8Q,GAAG/3B,IAAI6oN,IAChBnpN,OAAOmgB,OAAOkuC,EAAGi8J,UAAWnB,GAE1B62F,IAAe3xP,EAAGi8J,UAAUh4B,SAAW2tH,IAAY5xP,EAAGi8J,UAAUjkN,OAAMgoD,EAAGi8J,UAAUvpD,aAAc,EACvG,CAIA,IAAM9E,EAAkB60I,KAIxB,GAHI70I,IACE,YAAaA,EAAiBA,EAAgBq2B,SAAW0mH,EAAgB,eAAgB/8I,IAAiBA,EAAgBC,WAAa88I,KAExI4F,EAAY,CAIfb,GAAW1vP,EAAI,CACbwlI,eAAgB4gH,EAHK,IACF,KAGnB1gH,YAAaklH,EAAO3E,GAAsBA,IAE9C,CAGIjzR,EAAM23R,SAAWA,GAAQ33R,EAAMqP,KAAI,iBAAO,CAC5CsoR,OAAAA,EACD,IACG33R,EAAMozR,SAAWA,GAAQpzR,EAAMqP,KAAI,iBAAO,CAC5C+jR,OAAAA,EACD,IACGpzR,EAAM43R,OAASA,GAAM53R,EAAMqP,KAAI,iBAAO,CACxCuoR,KAAAA,EACD,KAGG6F,GAAazmR,GAAG25Q,IAAI8M,IAAcvG,GAAWuG,IAAczmR,GAAG85Q,IAAI2M,EAAUzwP,EAAI8vP,KAAeJ,GAAW1vP,EAAIywP,GAE9GxlM,IAAWj4F,EAAMi4F,OAAOq3J,UAAUtvP,EAAMqP,IAAI,CAC9C4oF,OAAQA,EAAOkG,KAGjB,IAAMx4D,EAvQZ,SAA4ByzF,EAAQ5B,GAClC,IAAMynK,EAA4C,qBAAtB9hJ,mBAAqC/jB,aAAkB+jB,kBACnF,GAAI3lB,EAAa,CACf,IACEjpI,EAKEipI,EALFjpI,MACAC,EAIEgpI,EAJFhpI,OACA89B,EAGEkrG,EAHFlrG,IACAF,EAEEorG,EAFFprG,KAAI8yQ,EAEF1nK,EADF26F,YAEF,MAAO,CACL5jO,MAAAA,EACAC,OAAAA,EACA89B,IAAAA,EACAF,KAAAA,EACA+lM,iBAPW,IAAA+sE,EAAGD,EAAYC,EAS9B,CAAO,GAAiC,qBAAtB/hJ,mBAAqC/jB,aAAkB+jB,mBAAqB/jB,EAAO9yE,cAAe,CAClH,IAAA64O,EAKI/lK,EAAO9yE,cAAcu0C,wBACzB,MAAO,CACLtsG,MANK4wS,EAAL5wS,MAOAC,OANM2wS,EAAN3wS,OAOA89B,IANG6yQ,EAAH7yQ,IAOAF,KANI+yQ,EAAJ/yQ,KAOA+lM,YAAa8sE,EAEjB,CAAO,MAA+B,qBAApBlmF,iBAAmC3/E,aAAkB2/E,gBAC9D,CACLxqN,MAAO6qI,EAAO7qI,MACdC,OAAQ4qI,EAAO5qI,OACf89B,IAAK,EACLF,KAAM,EACN+lM,YAAa8sE,GAGV,CACL1wS,MAAO,EACPC,OAAQ,EACR89B,IAAK,EACLF,KAAM,EAEV,CAyNmBgzQ,CAAmBhmK,EAAQskK,GAuBxC,OAtBK1mR,GAAG85Q,IAAInrP,EAAM3lC,EAAM2lC,KAAMm3P,KAC5B98R,EAAMkyN,QAAQvsL,EAAKp3C,MAAOo3C,EAAKn3C,OAAQm3C,EAAKwsL,YAAaxsL,EAAKrZ,IAAKqZ,EAAKvZ,MAGtEgkQ,GAAOpwR,EAAMwhJ,SAAS4uI,MAAQD,GAAaC,IAAMpwR,EAAMm4R,OAAO/H,GAE9DpwR,EAAM+3R,YAAcA,GAAW/3R,EAAMq4R,aAAaN,GAEjD/3R,EAAM+0R,iBAAiB/0R,EAAMqP,IAAI,CACpC0lR,gBAAAA,IAGEzjP,IAAgBt6B,GAAG85Q,IAAIx/O,EAAatxC,EAAMsxC,YAAawrP,KAAe98R,EAAMqP,KAAI,SAAArP,GAAK,MAAK,CAC5FsxC,YAAWnyC,EAAAA,EAAA,GACNa,EAAMsxC,aACNA,GAEN,IAGD8rP,EAAYQ,EACZL,GAAa,EACNn9S,IACT,EACAwF,OAAM,SAACoY,GASL,OAPKu/R,GAAYn9S,KAAKo9S,YACtBrC,GAAWl0N,iBAA8BG,EAAAA,GAAAA,KAAIa,GAAU,CACrDk2B,MAAOA,EACPngG,SAAUA,EACVo/R,UAAWA,EACXiC,YAAajmK,IACX2iK,EAAO,MAAM,WAAe,IACzB59L,CACT,EACApwD,QAAO,WACLiD,GAAuBooF,EACzB,EAEJ,CAOA,SAASnxD,GAAQphE,GAKd,IAJDs3F,EAAKt3F,EAALs3F,MACAngG,EAAQ6I,EAAR7I,SACAo/R,EAASv2R,EAATu2R,UACAiC,EAAWx4R,EAAXw4R,YAkBA,OAhBAt/M,IAA0B,WACxB,IAAM//E,EAAQm+F,EAAMgjB,WAEpBnhH,EAAMqP,KAAI,SAAArP,GAAK,MAAK,CAClBi/E,SAAQ9/E,EAAAA,EAAA,GACHa,EAAMi/E,UAAQ,IACjBq5M,QAAQ,IAEX,IAEG8E,GAAWA,EAAUp9R,GAGpBm+F,EAAMgjB,WAAWlpB,OAAOw/L,WAAmC,MAAxBz3R,EAAMi4F,OAAOwoK,SAA2BzgQ,EAAMi4F,OAAOwoK,QAAQ4+B,EAEvG,GAAG,KACiBj4N,EAAAA,GAAAA,KAAIznF,GAAQsoF,SAAU,CACxCppF,MAAOs/G,EACPngG,SAAUA,GAEd,CACA,SAASgzC,GAAuBooF,EAAQ7gG,GACtC,IAAMjlC,EAAOkmS,GAAMrpR,IAAIipH,GACjB2iK,EAAgB,MAARzoS,OAAe,EAASA,EAAKyoS,MAC3C,GAAIA,EAAO,CACT,IAAM/7R,EAAgB,MAAR1M,OAAe,EAASA,EAAK6qG,MAAMgjB,WAC7CnhH,IAAOA,EAAMi/E,SAASq5M,QAAS,GACnC6C,GAAWl0N,gBAAgB,KAAM80N,EAAO,MAAM,WACxC/7R,GACF/f,YAAW,WACT,IACE,IAAIq/S,EAAWC,EAAuBC,EAAYC,EACvB,MAA3Bz/R,EAAMi4F,OAAOrxB,YAA8B5mE,EAAMi4F,OAAOrxB,aAC9B,OAAzB04N,EAAYt/R,EAAMgtC,KAA0E,OAAlDuyP,EAAwBD,EAAU3uE,cAAiE,MAAjC4uE,EAAsBz9I,SAA2By9I,EAAsBz9I,UACzJ,OAA1B09I,EAAax/R,EAAMgtC,KAAsD,MAA/BwyP,EAAW5tE,kBAAoC4tE,EAAW5tE,mBACtE,OAA1B6tE,EAAaz/R,EAAMgtC,KAAeyyP,EAAW7sH,IAAI5yK,EAAM4yK,GAAGhsG,aA7iD3E,SAAiB3nF,GAEf,IAAK,IAAMmI,KADPnI,EAAI6iK,SAAwB,UAAb7iK,EAAI+F,MAAkB/F,EAAI6iK,UAC7B7iK,EACD,MAAbmI,EAAE06J,SAA2B16J,EAAE06J,iBACxB7iK,EAAImI,EAEf,CAwiDY06J,CAAQ9hJ,GACRw5R,GAAM57Q,OAAOw7G,GACT7gG,GAAUA,EAAS6gG,EACzB,CAAE,MAAO1yI,KACP,CAEJ,GAAG,IAEP,GACF,CACF,CAsJAy0S,GAAW10N,mBAAmB,CAC5B93B,WAAoD,EACpDC,oBAAqB,qBACrBn1D,QAAS6mB,EAAAA,UAECA,EAAAA,aAAZ,IAEMo/R,GAAa,CACjBj6P,QAAS,CAAC,SAAS,GACnBk6P,cAAe,CAAC,eAAe,GAC/BC,cAAe,CAAC,YAAY,GAC5BC,QAAS,CAAC,SAAS,GACnBC,cAAe,CAAC,eAAe,GAC/BC,YAAa,CAAC,aAAa,GAC3BlL,eAAgB,CAAC,gBAAgB,GACjCmC,cAAe,CAAC,eAAe,GAC/BgJ,gBAAiB,CAAC,iBAAiB,GACnCC,qBAAsB,CAAC,sBAAsB,IAI/C,SAASC,GAAoB/hM,GAC3B,IACE62L,EACEX,GAAal2L,GADf62L,cAEF,MAAO,CACL12Q,SAAU,EACV2yJ,SAAS,EACTukH,QAAO,SAAC7sQ,EAAO3oB,EAAO+xR,GAGpB/xR,EAAMk2R,QAAQ7mR,IAAIsZ,EAAMixE,QAAU55F,EAAM2lC,KAAKp3C,MAAQ,EAAI,GAAKo6B,EAAMmxE,QAAU95F,EAAM2lC,KAAKn3C,OAAU,EAAI,GACvGwR,EAAM8rK,UAAUq0H,cAAcngS,EAAMk2R,QAASl2R,EAAMgoJ,OACrD,EACAyvI,eAAWjtS,EACX8kQ,SAAU3wQ,OAAOqD,KAAK09S,IAAYt8S,QAAO,SAACggE,EAAKxgE,GAAG,OAAAuc,EAAAA,EAAA,GAC7CikD,GAAG,GAAArnD,EAAA,GACLnZ,EAAMoyS,EAAcpyS,IAAI,GACvB,CAAC,GACL8gK,OAAQ,WACN,IAAI08I,EACJC,EAGIliM,EAAMgjB,WAFRlpB,EAAMooM,EAANpoM,OACAhZ,EAAQohN,EAARphN,SAEgD,OAA7CmhN,EAAsBnhN,EAASi2M,YAAsBkL,EAAoB1mR,SAAWu+E,EAAOq3J,UAAUr3J,EAAOq3J,SAAS0nC,cAAc/3M,EAASi2M,UAAUx7Q,QAC7J,EACA+mP,QAAS,SAAA9+Q,GACP,IAAI2+S,EACJC,EAGIpiM,EAAMgjB,WAFR9xG,EAAGkxR,EAAHlxR,IACA4oF,EAAMsoM,EAANtoM,OAEmB,MAArBA,EAAOrxB,YAA8BqxB,EAAOrxB,aAC5Cv3D,GAAI,SAAArP,GAAK,MAAK,CACZi4F,OAAM94F,EAAAA,EAAA,GACDa,EAAMi4F,QAAM,IACfw/L,UAAW91S,IAEd,IACDhD,OAAOw0D,QAAgD,OAAvCmtP,EAAmBroM,EAAOq3J,UAAoBgxC,EAAmB,IAAI39S,SAAQ,SAAAskB,GAAmB,IAAAE,EAAArF,EAAAmF,EAAA,GAAjB1tB,EAAI4tB,EAAA,GAAEwhB,EAAKxhB,EAAA,GACxGq5R,EAAA1+R,EAA6B49R,GAAWnmT,GAAK,GAAtC+8G,EAASkqM,EAAA,GAAEzxQ,EAAOyxQ,EAAA,GACzB7+S,EAAOqC,iBAAiBsyG,EAAW3tE,EAAO,CACxCoG,QAAAA,GAEJ,GACF,EACA63C,WAAY,WACV,IAKM65N,EALNC,EAGIviM,EAAMgjB,WAFR9xG,EAAGqxR,EAAHrxR,IACA4oF,EAAMyoM,EAANzoM,OAEEA,EAAOw/L,YAET94S,OAAOw0D,QAAiD,OAAxCstP,EAAoBxoM,EAAOq3J,UAAoBmxC,EAAoB,IAAI99S,SAAQ,SAAA0kB,GAAmB,IAAAE,EAAAzF,EAAAuF,EAAA,GAAjB9tB,EAAIguB,EAAA,GAAEohB,EAAKphB,EAAA,GAC1G,GAAI0wF,GAAUA,EAAOw/L,qBAAqBrvO,YAAa,CACrD,IAAOkuC,EAAPx0F,EAAoB49R,GAAWnmT,GAAK,GAApB,GAChB0+G,EAAOw/L,UAAUn/Q,oBAAoBg+E,EAAW3tE,EAClD,CACF,IACAtZ,GAAI,SAAArP,GAAK,MAAK,CACZi4F,OAAM94F,EAAAA,EAAA,GACDa,EAAMi4F,QAAM,IACfw/L,eAAWjtS,IAEd,IAEL,EAEJ,KCvyEA,+gBAaoB,qBAAX/G,UAA2B,OAAA2tE,GAAAA,OAAO1tE,eAAP,KAAiBC,gBAA+C,iBAA9B,OAAAi1I,GAAAA,OAAOp8I,gBAAW,KAAAmzS,SAElFrvR,EAAAA,UADAA,EAAAA,gBAmBU,SAAAqgS,GAEd5E,EAEA6E,EAEAp7O,GAEA,GAAKu2O,EAAL,CACI,IAAoB,IAApBv2O,EAASu2O,GAAwB,OAAAA,EAGrC,IADA,IAAIviR,EAAQonR,EAAY7E,EAAM9iR,OAAS8iR,EAAMviR,MACtCA,GAAO,CACZ,IAAMzhC,EAAQ4oT,GAAcnnR,EAAOonR,EAAWp7O,GAC1C,GAAAztE,EAAc,OAAAA,EAEVyhC,EAAAA,EAAY,KAAOA,EAAMC,OACnC,CATkB,CAUpB,CAKA,SAASonR,GAAelhT,GAClB,IACK,OAAAhB,OAAOiL,iBAAiBjK,EAAS,CACtCmhT,iBAAkB,CAChB3wR,IAAAA,WACS,WACT,EACAd,IAAAA,WAAO,GAET0xR,kBAAmB,CACjB5wR,IAAAA,WACS,WACT,EACAd,IAAAA,WAAO,IAEV,OACM7sB,IACA,OAAA7C,CACT,CACF,CAEA,IAAMgiB,GAAQxN,QAAQwN,MACtBxN,QAAQwN,MAAQ,WACd,IAAMm/B,EAAU/jD,MAAAA,UAAAA,MAAAA,KAAIsD,WAAW5C,KAAK,IACpC,KAAIqjD,MAAAA,OAAAA,EAAAA,EAAS85C,WAAW,eAAe95C,EAAQxxB,SAAS,cAKjD,OAAA3N,GAAMzhB,MAAME,KAAMC,WAJvB8T,QAAQwN,MAAQA,EAKpB,EAEA,IAAMq/R,GAAeH,GAAYvgS,EAAAA,cAA2B,OAK/C2gS,GAAAA,SAAAA,GAAA7kS,EAAAA,EAAAA,GAAA,QAAA6kS,GAAA,SAAAA,IAAA,OAAAp2S,EAAAA,KAAAA,GAAA,wBAKX,OALWlB,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,SAAA/D,MAGX,WACS,uBAACmiT,GAAa/4N,SAAb,CAAsBppF,MAAOuB,KAAKw/C,iBAAkBx/C,KAAKyJ,MAAMmU,SACzE,OALWijS,CAAsB3gS,EAAAA,WAW5B,SAAS4gS,KACR,IAAA5tS,EAAOgN,EAAAA,WAAiB0gS,IAC9B,GAAa,OAAT1tS,EAAqB,UAAIpV,MAAM,iEAE7B,IAAAshC,EAAKlf,EAAAA,QACLy7R,EAAQz7R,EAAAA,SAAc,WAC1B,IAAK,IAAL,MAAyB,CAAChN,EAAMA,MAAAA,OAAAA,EAAAA,EAAM0lB,WAAS,eAAG,CAAlD,IAAWmoR,EAAAA,EAAAA,GACT,GAAKA,EAAL,CACA,IAAMpF,EAAQ4E,GAAoBQ,GAAY,GAAO,SAACtnS,GAEpD,IADA,IAAImG,EAAQnG,EAAKuf,cACVpZ,GAAO,CACZ,GAAIA,EAAMoZ,gBAAkBoG,EAAW,SACvCxf,EAAQA,EAAM1c,IAChB,KAEEy4S,GAAAA,EAAcA,OAAAA,CARO,CAS3B,IACC,CAACzoS,EAAMksB,IAEH,OAAAu8Q,CACT,CA8GO,SAASqF,KACd,IAAMC,EAlCD,WACL,IAAMtF,EAAQmF,KACPG,EAAqEpoK,EAAvD34H,EAAAA,UAAe,kBAAM,IAAIid,GAA8B,IAAA07G,GAA3D,GAGjBooK,EAAW9gT,QAEX,IADA,IAAIsZ,EAAOkiS,EACJliS,GAAM,CACX,GAAIA,EAAK7U,MAA6B,kBAAd6U,EAAK7U,KAAmB,CAExC,IACArF,OADiD,IAAvBka,EAAK7U,KAAK0qB,UAA0B7V,EAAK7U,KAAKijF,WAAapuE,EAAK7U,KACtD6U,EAAK7U,KAAO6U,EAAK7U,KAAK0qB,SAC5D/vB,GAAWA,IAAYqhT,KAAiBK,EAAW7yQ,IAAI7uC,IACzD0hT,EAAWhyR,IAAI1vB,EAAS2gB,EAAAA,WAAiBugS,GAAYlhT,IAEzD,CAEAka,EAAOA,EAAKof,MACd,CAEO,OAAAooR,CACT,CAaqBC,GAGnB,OAAOhhS,EAAAA,SACL,kBACEvjB,MAAM0lB,KAAK4+R,EAAWr/S,QAAQoB,QAC5B,SAACm+S,EAAM5hT,GAAA,OAAY,SAACkK,GAAA,OAEf,gBAAA03S,EAAA,KACE,gBAAA5hT,EAAQsoF,0CAARu5N,CAAAA,GAAAA,CAAAA,EAAqB33S,GAArB,CAA4BhL,MAAOwiT,EAAWlxR,IAAIxwB,MACrD,KAEJ,SAACkK,GAAA,OAAW,gBAAAo3S,GAAA,MAAkBp3S,GAAO,GACvC,GACF,CAACw3S,GAEL,wOC5OA,SAASI,KASN,IAAAr3S,EAAA/J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAJC,CACFhB,SAAU,EACVqiT,QAAQ,EACRC,YAAY,GAPZtiT,EAAQ+K,EAAR/K,SACAqiT,EAAMt3S,EAANs3S,OACA/lP,EAAQvxD,EAARuxD,SACAgmP,EAAUv3S,EAAVu3S,WAMMC,EAAiBjmP,GAA8B,qBAAXl4D,QAA0BA,OAAOm+S,eAUzE94K,EAAAhnH,GAToBi9B,EAAAA,EAAAA,UAAS,CAC7B3S,KAAM,EACNE,IAAK,EACL/9B,MAAO,EACPC,OAAQ,EACRqxD,OAAQ,EACRD,MAAO,EACPtjE,EAAG,EACHmL,EAAG,IACH,GATKo6S,EAAM/4K,EAAA,GAAEz5G,EAAGy5G,EAAA,GAYlB,IAAK84K,EAKH,OAHAC,EAAOtzS,MAAQ,KAEfszS,EAAOrzS,OAAS,IACT,CAAC,WAAO,EAAGqzS,EAAQ,WAAO,GAInC,IAAM7hS,GAAQ8+B,EAAAA,EAAAA,QAAO,CACnBh9C,QAAS,KACTggT,iBAAkB,KAClBC,eAAgB,KAChBC,WAAYH,EACZI,mBAAoB,OAIhBC,EAAiB7iT,EAA+B,kBAAbA,EAAwBA,EAAWA,EAASqiT,OAAS,KACxFS,EAAiB9iT,EAA+B,kBAAbA,EAAwBA,EAAWA,EAAS+iT,OAAS,KAGxFn1O,GAAUnuB,EAAAA,EAAAA,SAAO,IACvBN,EAAAA,EAAAA,YAAU,WAER,OADAyuB,EAAQvzC,SAAU,EACX,WAAYuzC,EAAQvzC,SAAU,CAAM,CAC7C,IAGA,IA+BqD2oR,EAAAvgS,GA/BF88B,EAAAA,EAAAA,UAAQ,WACzD,IAAMrG,EAAW,WACf,GAAKv4B,EAAM0Z,QAAQ53B,QAAnB,CACA,IAAAwgT,EASItiS,EAAM0Z,QAAQ53B,QAAQ+4G,wBACpBl1D,EAAO,CACXvZ,KAVIk2Q,EAAJl2Q,KAWAE,IAVGg2Q,EAAHh2Q,IAWA/9B,MAVK+zS,EAAL/zS,MAWAC,OAVM8zS,EAAN9zS,OAWAqxD,OAVMyiP,EAANziP,OAWAD,MAVK0iP,EAAL1iP,MAWAtjE,EAVCgmT,EAADhmT,EAWAmL,EAVC66S,EAAD76S,GAYEuY,EAAM0Z,QAAQ53B,mBAAmBsmE,aAAeu5O,IAClDh8P,EAAKn3C,OAASwR,EAAM0Z,QAAQ53B,QAAQonE,aACpCvjB,EAAKp3C,MAAQyR,EAAM0Z,QAAQ53B,QAAQmnE,aAErCtqE,OAAOkjB,OAAO8jC,GACVsnB,EAAQvzC,UAAY6oR,GAAeviS,EAAM0Z,QAAQsoR,WAAYr8P,IAAOt2B,EAAIrP,EAAM0Z,QAAQsoR,WAAar8P,EA1BrE,CA2BpC,EACA,MAAO,CAACpN,EAAU4pQ,EAAiBK,KAAejqQ,EAAU4pQ,GAAkB5pQ,EAAU2pQ,EAAiBM,KAAejqQ,EAAU2pQ,GAAkB3pQ,EACtJ,GAAG,CAAClpB,EAAKsyR,EAAYO,EAAgBC,IAAgB,GA/B9CM,EAAYJ,EAAA,GAAEK,EAAYL,EAAA,GAAEM,EAAYN,EAAA,GAkC/C,SAASxrO,IACH72D,EAAM0Z,QAAQooR,mBAChB9hS,EAAM0Z,QAAQooR,iBAAiBn/S,SAAQ,SAAAb,GAAO,OAAIA,EAAQw2B,oBAAoB,SAAUqqR,GAAc,EAAK,IAC3G3iS,EAAM0Z,QAAQooR,iBAAmB,MAE/B9hS,EAAM0Z,QAAQqoR,iBAChB/hS,EAAM0Z,QAAQqoR,eAAen7N,aAC7B5mE,EAAM0Z,QAAQqoR,eAAiB,MAE7B/hS,EAAM0Z,QAAQuoR,oBAChB99S,OAAOy+S,YAAYtqR,oBAAoB,oBAAqBtY,EAAM0Z,QAAQuoR,mBAE9E,CAGA,SAASxrO,IACFz2D,EAAM0Z,QAAQ53B,UACnBke,EAAM0Z,QAAQqoR,eAAiB,IAAIH,EAAee,GAClD3iS,EAAM0Z,QAAQqoR,eAAe/5L,QAAQhoG,EAAM0Z,QAAQ53B,SAC/C4/S,GAAU1hS,EAAM0Z,QAAQooR,kBAC1B9hS,EAAM0Z,QAAQooR,iBAAiBn/S,SAAQ,SAAAkgT,GAAe,OAAIA,EAAgB7+S,iBAAiB,SAAU2+S,EAAc,CACjH7zQ,SAAS,EACTC,SAAS,GACT,IAEJ/uB,EAAM0Z,QAAQuoR,mBAAqB,WACjCU,GACF,EACF,CAGA,IA+ByBG,EAAU7xH,EAPVlrE,EAJzB,OAWyB+8L,EAtBPH,EAsBiB1xH,EAtBH31K,QAAQomS,IAuBxCljQ,EAAAA,EAAAA,YAAU,WACR,GAAIyyI,EAAS,CACX,IAAM7+K,EAAK0wS,EAKX,OAJAr/S,OAAOO,iBAAiB,SAAUoO,EAAI,CACpC08B,SAAS,EACTC,SAAS,IAEJ,WAAWtrC,OAAO60B,oBAAoB,SAAUlmB,GAAI,EAAK,CAClE,CACF,GAAG,CAAC0wS,EAAU7xH,IAjBWlrE,EAdP28L,GAelBlkQ,EAAAA,EAAAA,YAAU,WACR,IAAMpsC,EAAK2zG,EAEX,OADAtiH,OAAOO,iBAAiB,SAAUoO,GAC3B,WAAW3O,OAAO60B,oBAAoB,SAAUlmB,EAAG,CAC5D,GAAG,CAAC2zG,KAhBJvnE,EAAAA,EAAAA,YAAU,WACRq4B,IACAJ,GACF,GAAG,CAACirO,EAAQiB,EAAcD,KAG1BlkQ,EAAAA,EAAAA,YAAU,kBAAMq4B,CAAe,GAAE,IAC1B,CApBK,SAAAh9D,GACLA,GAAQA,IAASmG,EAAM0Z,QAAQ53B,UACpC+0E,IACA72D,EAAM0Z,QAAQ53B,QAAU+X,EACxBmG,EAAM0Z,QAAQooR,iBAAmBiB,GAAqBlpS,GACtD48D,IACF,EAcaorO,EAAQY,EACvB,CAwBA,SAASM,GAAqBjhT,GAC5B,IAAM5J,EAAS,GACf,IAAK4J,GAAWA,IAAY4B,SAASktB,KAAM,OAAO14B,EAClD,IAAA8qT,EAIIv/S,OAAO0lE,iBAAiBrnE,GAE5B,MADI,CAJMkhT,EAARxlS,SACSwlS,EAATC,UACSD,EAATE,WAEmCjlS,MAAK,SAAApP,GAAI,MAAa,SAATA,GAA4B,WAATA,CAAiB,KAAG3W,EAAOgF,KAAK4E,GAC9F,GAAPD,OAAW3J,EAAMi8D,EAAK4uP,GAAqBjhT,EAAQwkE,gBACrD,CAGA,IAAMtkE,GAAO,CAAC,IAAK,IAAK,MAAO,SAAU,OAAQ,QAAS,QAAS,UAC7DugT,GAAiB,SAACnmT,EAAGuK,GAAC,OAAK3E,GAAKmyE,OAAM,SAAAvxE,GAAG,OAAIxG,EAAEwG,KAAS+D,EAAE/D,EAAI,GAAC,EAE/DugT,GAA0B7iS,EAAAA,YAAiB,SAAe7C,EAuB7Dm1F,GAAc,IAtBf50F,EAAQP,EAARO,SACAzT,EAAQkT,EAARlT,SACA63S,EAAM3kS,EAAN2kS,OACA33S,EAAKgT,EAALhT,MACAuiD,EAAEvvC,EAAFuvC,GAAEo2P,EAAA3lS,EACFw6F,OAAAA,OAAM,IAAAmrM,EAAGlD,GAAmBkD,EAC5BC,EAAW5lS,EAAX4lS,YACAC,EAAW7lS,EAAX6lS,YACAx7F,EAAOrqM,EAAPqqM,QACAsrF,EAAM31R,EAAN21R,OACAwE,EAAIn6R,EAAJm6R,KACAD,EAAMl6R,EAANk6R,OACAuG,EAAYzgS,EAAZygS,aACAnG,EAASt6R,EAATs6R,UACA3H,EAAG3yR,EAAH2yR,IACA9+O,EAAW7zC,EAAX6zC,YACAw6H,EAASruK,EAATquK,UACA9jB,EAAMvqJ,EAANuqJ,OACAmqB,EAAK10K,EAAL00K,MACA4iH,EAAet3R,EAAfs3R,gBACAqI,EAAS3/R,EAAT2/R,UACGvzS,EAAKwV,GAAA5B,EAAAkB,IAKR2B,EAAAA,SAAc,kBF9MDwkL,EE8McmuG,OF9MEt0S,OAAOmgB,OAAOywR,GAAWzqG,GAAzC,IAAAA,CE8MoB,GAAE,IACnC,IAAMy+G,EAASnC,KAQboC,EAAA1hS,EAPoC2/R,GAAUtiS,EAAC,CAC/CuiS,QAAQ,EACRriT,SAAU,CACRqiT,OAAQ,GACRU,OAAQ,IAEPA,IACH,GAPKqB,EAAYD,EAAA,GAAEE,EAAaF,EAAA,GAQ5BG,EAAYrjS,EAAAA,OAAa,MACzBsjS,EAAStjS,EAAAA,OAAa,MAC5BA,EAAAA,oBAA0BsyF,GAAc,kBAAM+wM,EAAUjqR,OAAO,IAC/D,IAAMmqR,EAAsBjU,GAAmBmF,GACA97J,EAAAn3H,EAArBxB,EAAAA,UAAe,GAAM,GAAxCguF,EAAK2qC,EAAA,GAAE6qK,EAAQ7qK,EAAA,GACyB8qK,EAAAjiS,EAArBxB,EAAAA,UAAe,GAAM,GAAxCqB,EAAKoiS,EAAA,GAAEC,EAAQD,EAAA,GAGtB,GAAIz1M,EAAO,MAAMA,EAEjB,GAAI3sF,EAAO,MAAMA,EACjB,IAAMrO,EAAOgN,EAAAA,OAAa,MAC1By/E,IAA0B,WACxB,IAAMq5C,EAASuqK,EAAUjqR,QACrBgqR,EAAcn1S,MAAQ,GAAKm1S,EAAcl1S,OAAS,GAAK4qI,IACpD9lI,EAAKomB,UAASpmB,EAAKomB,QAAU62B,GAAW6oF,IAC7C9lI,EAAKomB,QAAQ8jR,UAAU,CACrBxwP,GAAAA,EACAirD,OAAAA,EACA6vG,QAAAA,EACAsrF,OAAAA,EACAwE,KAAAA,EACAD,OAAAA,EACAuG,aAAAA,EACAnG,UAAAA,EACA3H,IAAAA,EACA9+O,YAAAA,EACAw6H,UAAAA,EACA9jB,OAAAA,EACAmqB,MAAAA,EACAxsI,KAAM+9P,EAEN3O,gBAAiB,kBAA4C,MAA/B8O,EAAoBnqR,aAAkB,EAASmqR,EAAoBnqR,QAAOx5B,MAA3B2jT,EAAmBxjT,UAAiB,EACjH+8S,UAAW,SAAAp9R,GF+GL,IAAA/gB,EE7GoB,MAAxB+gB,EAAMi4F,OAAOwoK,SAA2BzgQ,EAAMi4F,OAAOwoK,QAAQ4iC,GF6GzDpkT,EE7G6EokT,IF6G/DpkT,EAAIhB,eAAe,WE7G2DolT,EAAY3pR,QAAU2pR,EAAcO,EAAOlqR,SAEvI4pR,GACFtjS,EAAMk4R,UAAU,CACd1C,QAAS,SAAC7sQ,EAAO3oB,GACf,IAAM1jB,EAAIqsC,EAAM26Q,EAAc,KACxB77S,EAAIkhC,EAAM26Q,EAAc,KAC9BtjS,EAAMk2R,QAAQ7mR,IAAI/yB,EAAI0jB,EAAM2lC,KAAKp3C,MAAQ,EAAI,GAAK9G,EAAIuY,EAAM2lC,KAAKn3C,OAAU,EAAI,GAC/EwR,EAAM8rK,UAAUq0H,cAAcngS,EAAMk2R,QAASl2R,EAAMgoJ,OACrD,IAIS,MAAbo1I,GAA6BA,EAAUp9R,EACzC,IAEF1M,EAAKomB,QAAQ9zB,QAAqBwhF,EAAAA,GAAAA,KAAIm8N,EAAQ,CAC5CvlS,UAAuBopE,EAAAA,GAAAA,KAAIic,GAAe,CACxCh0E,IAAK20R,EACLhmS,UAAuBopE,EAAAA,GAAAA,KAAI9mE,EAAAA,SAAgB,CACzC/V,UAAuB68E,EAAAA,GAAAA,KAAIyoN,GAAO,CAChCxgR,IAAKy0R,IAEP9lS,SAAUA,SAKpB,IACAsC,EAAAA,WAAgB,WACd,IAAM84H,EAASuqK,EAAUjqR,QACzB,GAAI0/G,EAAQ,OAAO,kBAAMpoF,GAAuBooF,EAAO,CACzD,GAAG,IAIH,IAAM6qK,EAAgBZ,EAAc,OAAS,OAC7C,OAAoBj8N,EAAAA,GAAAA,KAAI,MAAKjoE,EAAAA,EAAA,CAC3BhB,IAAKylS,EACLn5S,MAAK0U,EAAA,CACHwgD,SAAU,WACVpxD,MAAO,OACPC,OAAQ,OACRgP,SAAU,SACVymS,cAAAA,GACGx5S,IAEFZ,GAAK,IACRmU,UAAuBopE,EAAAA,GAAAA,KAAI,MAAO,CAChCjpE,IAAKslS,EACLh5S,MAAO,CACL8D,MAAO,OACPC,OAAQ,QAEVwP,UAAuBopE,EAAAA,GAAAA,KAAI,SAAU,CACnCjpE,IAAKwlS,EACLl5S,MAAO,CACL29C,QAAS,SAEXpqC,SAAUzT,QAIlB,IAMM25S,GAAsB5jS,EAAAA,YAAiB,SAAuBzW,EAAOsU,GACzE,OAAoBipE,EAAAA,GAAAA,KAAI65N,GAAe,CACrCjjS,UAAuBopE,EAAAA,GAAAA,KAAI+7N,GAAUhkS,EAAAA,EAAA,GAChCtV,GAAK,IACRsU,IAAKA,MAGX,ICrVe,SAAS,KAYtB,OAXA,GAAWxf,OAAOmgB,OAASngB,OAAOmgB,OAAO9K,OAAS,SAAUrS,GAC1D,IAAK,IAAI7E,EAAI,EAAGA,EAAIuD,UAAUrI,OAAQ8E,IAAK,CACzC,IAAI8E,EAASvB,UAAUvD,GACvB,IAAK,IAAI8F,KAAOhB,EACVjD,OAAO3B,UAAUiB,eAAehB,KAAK2E,EAAQgB,KAC/CjB,EAAOiB,GAAOhB,EAAOgB,GAG3B,CACA,OAAOjB,CACT,EACO,GAASzB,MAAME,KAAMC,UAC9B,CCJA,IAAM8jT,GAAmB,SAACh6Q,EAAQi6Q,GAAQ,OAAMj6Q,EAASi6Q,EAAWA,GAAYA,CAAQ,EAElFC,GAAa,SAAAjmJ,GAAAhiJ,EAAAioS,EAAAjmJ,GAAA,IAAA/hJ,EAAAtB,EAAAspS,GA6BjB,SAAAA,EAAY9hT,EAAQkyG,GAAY,IAAAn4F,EAAAzR,EAAA,KAAAw5S,GAG9BtoS,EAAeH,EAFfU,EAAAD,EAAApf,KAAA,OAEsB,cAAU,GAEhC8e,EAAeH,EAAAU,GAAO,kBAAc,GAEpCP,EAAeH,EAAAU,GAAO,WAAW,GAEjCP,EAAeH,EAAAU,GAAO,SAAU,IAAI4qJ,IAEpCnrJ,EAAeH,EAAAU,GAAO,cAAe,GAErCP,EAAeH,EAAAU,GAAO,cAAeitC,KAErCxtC,EAAeH,EAAAU,GAAO,UAAW,GAEjCP,EAAeH,EAAAU,GAAO,UAAWitC,KAEjCxtC,EAAeH,EAAAU,GAAO,gBAAiB,GAEvCP,EAAeH,EAAAU,GAAO,gBAAiBjf,KAAK00J,IAE5Ch2I,EAAeH,EAAAU,GAAO,mBAAoBitC,KAE1CxtC,EAAeH,EAAAU,GAAO,kBAAmBitC,KAEzCxtC,EAAeH,EAAAU,GAAO,iBAAiB,GAEvCP,EAAeH,EAAAU,GAAO,gBAAiB,KAEvCP,EAAeH,EAAAU,GAAO,cAAc,GAEpCP,EAAeH,EAAAU,GAAO,YAAa,GAEnCP,EAAeH,EAAAU,GAAO,gBAAgB,GAEtCP,EAAeH,EAAAU,GAAO,cAAe,GAErCP,EAAeH,EAAAU,GAAO,aAAa,GAEnCP,EAAeH,EAAAU,GAAO,WAAY,GAElCP,EAAeH,EAAAU,GAAO,sBAAsB,GAE5CP,EAAeH,EAAAU,GAAO,cAAe,GAErCP,EAAeH,EAAAU,GAAO,cAAc,GAEpCP,EAAeH,EAAAU,GAAO,kBAAmB,GAEzCP,EAAeH,EAAAU,GAAO,gBAAgB,GAEtCP,EAAeH,EAAAU,GAAO,OAAQ,CAC5BgqI,KAAM,YACNg+J,GAAI,UACJ99J,MAAO,aACP+9J,OAAQ,cAGVxoS,EAAeH,EAAAU,GAAO,eAAgB,CACpCgqI,KAAMD,GAAMI,OACZF,OAAQF,GAAMK,MACdF,MAAOH,GAAMM,MAGf5qI,EAAeH,EAAAU,GAAO,UAAW,CAC/BkoS,IAAK59J,GAAMH,OACXg+J,IAAK79J,GAAMC,YAGb9qI,EAAeH,EAAAU,GAAO,eAAW,GAEjCP,EAAeH,EAAAU,GAAO,iBAAa,GAEnCP,EAAeH,EAAAU,GAAO,aAAS,GAE/BP,EAAeH,EAAAU,GAAO,uBAAwB,MAE9CP,EAAeH,EAAAU,GAAO,qBAAiB,GAEvCP,EAAeH,EAAAU,GAAO,yBAAqB,GAE3CP,EAAeH,EAAAU,GAAO,qBAAiB,GAEvCP,EAAeH,EAAAU,GAAO,yBAAqB,GAE3CP,EAAeH,EAAAU,GAAO,mBAAe,GAErCP,EAAeH,EAAAU,GAAO,yBAAqB,GAE3CP,EAAeH,EAAAU,GAAO,iBAAa,GAEnCP,EAAeH,EAAAU,GAAO,aAAS,GAE/BP,EAAeH,EAAAU,GAAO,cAAU,GAEhCP,EAAeH,EAAAU,GAAO,eAAW,GAEjCP,EAAeH,EAAAU,GAAO,eAAW,GAEjCA,EAAK/Z,OAASA,EACd+Z,EAAKm4F,WAAaA,EAElBn4F,EAAKooS,QAAUpoS,EAAK3a,OAAOL,QAC3Bgb,EAAKqoS,UAAYroS,EAAK/Z,OAAOo9D,SAASr+D,QACtCgb,EAAKsoS,MAAQtoS,EAAK/Z,kBAAkB0tL,GAAoB3zK,EAAK/Z,OAAO0yB,KAAO,EAI3E3Y,EAAKuoS,cAAgB,kBAAMC,EAAUv7I,GAAG,EAExCjtJ,EAAKyoS,kBAAoB,kBAAMD,EAAUjrJ,KAAK,EAE9Cv9I,EAAK0oS,cAAgB,SAAAnmT,GAEnB,IAAI0qK,EAAM46I,GAAiBtlT,EAAO,EAAIxB,KAAK00J,IACvCkzJ,EAAaH,EAAUv7I,IAEvB07I,EAAa,IAAGA,GAAc,EAAI5nT,KAAK00J,IACvCwX,EAAM,IAAGA,GAAO,EAAIlsK,KAAK00J,IAC7B,IAAImzJ,EAAU7nT,KAAK4f,IAAIssJ,EAAM07I,GAEzB,EAAI5nT,KAAK00J,GAAKmzJ,EAAUA,IACtB37I,EAAM07I,EACR17I,GAAO,EAAIlsK,KAAK00J,GAEhBkzJ,GAAc,EAAI5nT,KAAK00J,IAI3BozJ,EAAe57I,IAAMA,EAAM07I,EAC3B73H,EAAM1pB,QACR,EAEApnJ,EAAK8oS,kBAAoB,SAAAvmT,GAEvB,IAAIg7J,EAAQsqJ,GAAiBtlT,EAAO,EAAIxB,KAAK00J,IACzCszJ,EAAeP,EAAUjrJ,MAEzBwrJ,EAAe,IAAGA,GAAgB,EAAIhoT,KAAK00J,IAC3C8H,EAAQ,IAAGA,GAAS,EAAIx8J,KAAK00J,IACjC,IAAIuzJ,EAAYjoT,KAAK4f,IAAI48I,EAAQwrJ,GAE7B,EAAIhoT,KAAK00J,GAAKuzJ,EAAYA,IACxBzrJ,EAAQwrJ,EACVxrJ,GAAS,EAAIx8J,KAAK00J,GAElBszJ,GAAgB,EAAIhoT,KAAK00J,IAI7BozJ,EAAetrJ,MAAQA,EAAQwrJ,EAC/Bj4H,EAAM1pB,QACR,EAEApnJ,EAAKipS,YAAc,kBAAMn4H,EAAM7qL,OAAOo9D,SAAS8tG,WAAW2f,EAAMzrL,OAAO,EAEvE2a,EAAKkpS,kBAAoB,SAAA/wM,GACvBA,EAAWzwG,iBAAiB,UAAWggE,GACvC1nD,EAAKmpS,qBAAuBhxM,CAC9B,EAEAn4F,EAAKopS,UAAY,WACft4H,EAAMs3H,QAAQ5oJ,KAAKsxB,EAAMzrL,QACzByrL,EAAMu3H,UAAU7oJ,KAAKsxB,EAAM7qL,OAAOo9D,UAClCytH,EAAMw3H,MAAQx3H,EAAM7qL,kBAAkB0tL,GAAoB7C,EAAM7qL,OAAO0yB,KAAO,CAChF,EAEA3Y,EAAKq+C,MAAQ,WACXyyH,EAAMzrL,OAAOm6J,KAAKsxB,EAAMs3H,SACxBt3H,EAAM7qL,OAAOo9D,SAASm8F,KAAKsxB,EAAMu3H,WAE7Bv3H,EAAM7qL,kBAAkB0tL,KAC1B7C,EAAM7qL,OAAO0yB,KAAOm4J,EAAMw3H,MAC1Bx3H,EAAM7qL,OAAOkuL,0BAGfrD,EAAMzuJ,cAAcgnR,GACpBv4H,EAAM1pB,SACN1jJ,EAAQ++F,EAAM6mM,IAChB,EAGAtpS,EAAKonJ,OAAU,WACb,IAAMv5H,EAAS,IAAI+8H,GAEb2+I,GAAO,IAAI1iJ,IAAa2iJ,mBAAmBvjT,EAAOwvK,GAAI,IAAI7K,GAAQ,EAAG,EAAG,IACxE6+I,EAAcF,EAAKvkT,QAAQ4uI,SAC3B81K,EAAe,IAAI9+I,GACnB++I,EAAiB,IAAI9iJ,GACrB+iJ,EAAQ,EAAI7oT,KAAK00J,GACvB,OAAO,WACL,IAAMpyF,EAAWytH,EAAM7qL,OAAOo9D,SAC9Bx1B,EAAO2xH,KAAKn8F,GAAUupG,IAAIkkB,EAAMzrL,QAEhCwoC,EAAOi9H,gBAAgBy+I,GAEvBf,EAAUqB,eAAeh8Q,GAErBijJ,EAAMg5H,YAAcpmS,IAAU++F,EAAM6mM,MACtCS,EAmJG,EAAIhpT,KAAK00J,GAAK,GAAK,GAAKq7B,EAAMk5H,iBAhJ/Bl5H,EAAMm5H,eACRzB,EAAUjrJ,OAASsrJ,EAAetrJ,MAAQuzB,EAAMo5H,cAChD1B,EAAUv7I,KAAO47I,EAAe57I,IAAM6jB,EAAMo5H,gBAE5C1B,EAAUjrJ,OAASsrJ,EAAetrJ,MAClCirJ,EAAUv7I,KAAO47I,EAAe57I,KAIlC,IAAIj+H,EAAM8hJ,EAAMq5H,gBACZnpT,EAAM8vL,EAAMs5H,gBA6ChB,OA3CI/9H,SAASr9I,IAAQq9I,SAASrrL,KACxBguC,GAAOjuC,KAAK00J,GAAIzmH,GAAO46Q,EAAe56Q,EAAMjuC,KAAK00J,KAAIzmH,GAAO46Q,GAC5D5oT,GAAOD,KAAK00J,GAAIz0J,GAAO4oT,EAAe5oT,EAAMD,KAAK00J,KAAIz0J,GAAO4oT,GAG9DpB,EAAUjrJ,MADRvuH,GAAOhuC,EACSD,KAAKC,IAAIguC,EAAKjuC,KAAKiuC,IAAIhuC,EAAKwnT,EAAUjrJ,QAEtCirJ,EAAUjrJ,OAASvuH,EAAMhuC,GAAO,EAAID,KAAKC,IAAIguC,EAAKw5Q,EAAUjrJ,OAASx8J,KAAKiuC,IAAIhuC,EAAKwnT,EAAUjrJ,QAKnHirJ,EAAUv7I,IAAMlsK,KAAKC,IAAI8vL,EAAMu5H,cAAetpT,KAAKiuC,IAAI8hJ,EAAMw5H,cAAe9B,EAAUv7I,MACtFu7I,EAAU+B,WACV/B,EAAUx7I,QAAU7xB,EAEpBqtK,EAAUx7I,OAASjsK,KAAKC,IAAI8vL,EAAM05H,YAAazpT,KAAKiuC,IAAI8hJ,EAAM62F,YAAa6gC,EAAUx7I,UAEzD,IAAxB8jB,EAAMm5H,cACRn5H,EAAMzrL,OAAOm5K,gBAAgBisI,EAAW35H,EAAMo5H,eAE9Cp5H,EAAMzrL,OAAO6qB,IAAIu6R,GAGnB58Q,EAAO68Q,iBAAiBlC,GAExB36Q,EAAOi9H,gBAAgB2+I,GACvBpmP,EAASm8F,KAAKsxB,EAAMzrL,QAAQ6qB,IAAI2d,GAChCijJ,EAAM7qL,OAAO40K,OAAOiW,EAAMzrL,SAEE,IAAxByrL,EAAMm5H,eACRpB,EAAetrJ,OAAS,EAAIuzB,EAAMo5H,cAClCrB,EAAe57I,KAAO,EAAI6jB,EAAMo5H,cAChCO,EAAUpxJ,eAAe,EAAIy3B,EAAMo5H,iBAEnCrB,EAAe91R,IAAI,EAAG,EAAG,GACzB03R,EAAU13R,IAAI,EAAG,EAAG,IAGtBooH,EAAQ,KAIJwvK,GAAejB,EAAa9vJ,kBAAkBk3B,EAAM7qL,OAAOo9D,UAAYi2N,GAAO,GAAK,EAAIqwB,EAAe5hJ,IAAI+oB,EAAM7qL,OAAOihK,aAAeoyH,KACxIxoG,EAAMzuJ,cAAcgnR,GACpBK,EAAalqJ,KAAKsxB,EAAM7qL,OAAOo9D,UAC/BsmP,EAAenqJ,KAAKsxB,EAAM7qL,OAAOihK,YACjCyjJ,GAAc,GACP,EAIX,CACF,CArFe,GAwFf3qS,EAAKmkQ,QAAU,SAAAhsK,GACTA,IAAe/wG,UACjByQ,QAAQwN,MAAM,4HAGhByrK,EAAM34E,WAAaA,EAInB24E,EAAM34E,WAAWhqG,MAAMizH,YAAc,OACrC0vD,EAAM34E,WAAWzwG,iBAAiB,cAAe27S,GACjDvyH,EAAM34E,WAAWzwG,iBAAiB,cAAe87S,GACjD1yH,EAAM34E,WAAWzwG,iBAAiB,gBAAiBg8S,GACnD5yH,EAAM34E,WAAWzwG,iBAAiB,QAASkjT,EAC7C,EAEA5qS,EAAKwlJ,QAAU,WACb,IAAIqlJ,EAAmBC,EAAoBC,EAAoBC,EAAoBC,EAAoBC,EAE5D,QAA1CL,EAAoB/5H,EAAM34E,kBAA8C,IAAtB0yM,GAAwCA,EAAkB7uR,oBAAoB,cAAeqnR,GACpG,QAA3CyH,EAAqBh6H,EAAM34E,kBAA+C,IAAvB2yM,GAAyCA,EAAmB9uR,oBAAoB,cAAewnR,GACvG,QAA3CuH,EAAqBj6H,EAAM34E,kBAA+C,IAAvB4yM,GAAyCA,EAAmB/uR,oBAAoB,gBAAiB0nR,GACzG,QAA3CsH,EAAqBl6H,EAAM34E,kBAA+C,IAAvB6yM,GAAyCA,EAAmBhvR,oBAAoB,QAAS4uR,GACjG,QAA3CK,EAAqBn6H,EAAM34E,kBAA+C,IAAvB8yM,GAAyCA,EAAmB/1R,cAAc8G,oBAAoB,cAAe0+Q,GACrH,QAA3CwQ,EAAqBp6H,EAAM34E,kBAA+C,IAAvB+yM,GAAyCA,EAAmBh2R,cAAc8G,oBAAoB,YAAaynR,GAE5H,OAA/B3yH,EAAMq4H,sBACRr4H,EAAMq4H,qBAAqBntR,oBAAoB,UAAW0rC,EAG9D,EAKA,IAAMopH,EAAKxxK,EAAAU,GACLqpS,EAAc,CAClB3gT,KAAM,UAEFyiT,EAAa,CACjBziT,KAAM,SAEF0iT,EAAW,CACf1iT,KAAM,OAEF+5G,EAAQ,CACZ6mM,MAAO,EACPn/J,OAAQ,EACRC,MAAO,EACPC,IAAK,EACLghK,aAAc,EACdC,UAAW,EACXC,gBAAiB,EACjBC,mBAAoB,GAElB9nS,EAAQ++F,EAAM6mM,KACZhwB,EAAM,KAENkvB,EAAY,IAAIpvB,GAChByvB,EAAiB,IAAIzvB,GACvBj+I,EAAQ,EACNsvK,EAAY,IAAI7/I,GAClB+/I,GAAc,EACZc,EAAc,IAAIxyJ,GAClByyJ,EAAY,IAAIzyJ,GAChB0yJ,EAAc,IAAI1yJ,GAClB2yJ,EAAW,IAAI3yJ,GACf4yJ,EAAS,IAAI5yJ,GACb6yJ,EAAW,IAAI7yJ,GACf8yJ,EAAa,IAAI9yJ,GACjB+yJ,EAAW,IAAI/yJ,GACfgzJ,EAAa,IAAIhzJ,GACjBizJ,EAAW,GACXC,EAAmB,CAAC,EAM1B,SAASC,IACP,OAAOrrT,KAAKs1J,IAAI,IAAMy6B,EAAMu7H,UAC9B,CAEA,SAAStC,EAAWrwJ,GACdo3B,EAAMw7H,aACRzD,EAAetrJ,OAAS7D,EAExBmvJ,EAAetrJ,OAAS7D,CAE5B,CAEA,SAAS6yJ,EAAS7yJ,GACZo3B,EAAMw7H,aACRzD,EAAe57I,KAAOvT,EAEtBmvJ,EAAe57I,KAAOvT,CAE1B,CAEA,IAAM8yJ,EAAW,WACf,IAAMvhT,EAAI,IAAI2/J,GACd,OAAO,SAAiB4P,EAAUiyI,GAChCxhT,EAAEmiK,oBAAoBq/I,EAAc,GAEpCxhT,EAAEouJ,gBAAgBmhB,GAClBiwI,EAAUv6R,IAAIjlB,EAChB,CACF,CARiB,GAUXyhT,EAAS,WACb,IAAMzhT,EAAI,IAAI2/J,GACd,OAAO,SAAe4P,EAAUiyI,IACG,IAA7B37H,EAAM67H,mBACR1hT,EAAEmiK,oBAAoBq/I,EAAc,IAEpCxhT,EAAEmiK,oBAAoBq/I,EAAc,GACpCxhT,EAAE+gK,aAAa8kB,EAAM7qL,OAAOwvK,GAAIxqK,IAGlCA,EAAEouJ,eAAemhB,GACjBiwI,EAAUv6R,IAAIjlB,EAChB,CACF,CAbe,GAgBT2hT,EAAO,WACX,IAAM/+Q,EAAS,IAAI+8H,GACnB,OAAO,SAAa1gI,EAAQE,GAC1B,IAAM5kC,EAAUsrL,EAAM34E,WAEtB,GAAI3yG,GAAWsrL,EAAM7qL,kBAAkB0tL,IAAqB7C,EAAM7qL,OAAO8uL,oBAAqB,CAE5F,IAAM1xH,EAAWytH,EAAM7qL,OAAOo9D,SAC9Bx1B,EAAO2xH,KAAKn8F,GAAUupG,IAAIkkB,EAAMzrL,QAChC,IAAIwnT,EAAiBh/Q,EAAOnyC,SAE5BmxT,GAAkB9rT,KAAKyzL,IAAI1D,EAAM7qL,OAAO8tL,IAAM,EAAIhzL,KAAK00J,GAAK,KAE5D+2J,EAAQ,EAAItiR,EAAS2iR,EAAiBrnT,EAAQgb,aAAcswK,EAAM7qL,OAAOu3J,QACzEkvJ,EAAM,EAAItiR,EAASyiR,EAAiBrnT,EAAQgb,aAAcswK,EAAM7qL,OAAOu3J,OACzE,MAAWh4J,GAAWsrL,EAAM7qL,kBAAkByrM,IAAsB5gB,EAAM7qL,OAAOgsM,sBAE/Eu6G,EAAQtiR,GAAU4mJ,EAAM7qL,OAAOq9D,MAAQwtH,EAAM7qL,OAAO6pC,MAAQghJ,EAAM7qL,OAAO0yB,KAAOnzB,EAAQsnT,YAAah8H,EAAM7qL,OAAOu3J,QAClHkvJ,EAAMtiR,GAAU0mJ,EAAM7qL,OAAO+pC,IAAM8gJ,EAAM7qL,OAAOs9D,QAAUutH,EAAM7qL,OAAO0yB,KAAOnzB,EAAQgb,aAAcswK,EAAM7qL,OAAOu3J,UAGjH3lJ,QAAQk/C,KAAK,gFACb+5H,EAAMi8H,WAAY,EAEtB,CACF,CAzBa,GA2Bb,SAASC,EAASC,GACZn8H,EAAM7qL,kBAAkB0tL,IAAqB7C,EAAM7qL,OAAO8uL,oBAC5D55C,GAAS8xK,EACAn8H,EAAM7qL,kBAAkByrM,IAAsB5gB,EAAM7qL,OAAOgsM,sBACpEnhB,EAAM7qL,OAAO0yB,KAAO53B,KAAKC,IAAI8vL,EAAMo8H,QAASnsT,KAAKiuC,IAAI8hJ,EAAMq8H,QAASr8H,EAAM7qL,OAAO0yB,KAAOs0R,IACxFn8H,EAAM7qL,OAAOkuL,yBACbw2H,GAAc,IAEd9yS,QAAQk/C,KAAK,uFACb+5H,EAAMs8H,YAAa,EAEvB,CAEA,SAASC,EAAQJ,GACXn8H,EAAM7qL,kBAAkB0tL,IAAqB7C,EAAM7qL,OAAO8uL,oBAC5D55C,GAAS8xK,EACAn8H,EAAM7qL,kBAAkByrM,IAAsB5gB,EAAM7qL,OAAOgsM,sBACpEnhB,EAAM7qL,OAAO0yB,KAAO53B,KAAKC,IAAI8vL,EAAMo8H,QAASnsT,KAAKiuC,IAAI8hJ,EAAMq8H,QAASr8H,EAAM7qL,OAAO0yB,KAAOs0R,IACxFn8H,EAAM7qL,OAAOkuL,yBACbw2H,GAAc,IAEd9yS,QAAQk/C,KAAK,uFACb+5H,EAAMs8H,YAAa,EAEvB,CAKA,SAASE,EAAsBjhR,GAC7Bo/Q,EAAY14R,IAAIsZ,EAAM1G,QAAS0G,EAAMzG,QACvC,CAMA,SAAS2nR,EAAmBlhR,GAC1Bu/Q,EAAS74R,IAAIsZ,EAAM1G,QAAS0G,EAAMzG,QACpC,CAiFA,SAAS4nR,IACP,GAAuB,GAAnBtB,EAASxwT,OACX+vT,EAAY14R,IAAIm5R,EAAS,GAAGrmR,MAAOqmR,EAAS,GAAGpmR,WAC1C,CACL,IAAM9lC,EAAI,IAAOksT,EAAS,GAAGrmR,MAAQqmR,EAAS,GAAGrmR,OAC3C16B,EAAI,IAAO+gT,EAAS,GAAGpmR,MAAQomR,EAAS,GAAGpmR,OACjD2lR,EAAY14R,IAAI/yB,EAAGmL,EACrB,CACF,CAEA,SAASsiT,IACP,GAAuB,GAAnBvB,EAASxwT,OACXkwT,EAAS74R,IAAIm5R,EAAS,GAAGrmR,MAAOqmR,EAAS,GAAGpmR,WACvC,CACL,IAAM9lC,EAAI,IAAOksT,EAAS,GAAGrmR,MAAQqmR,EAAS,GAAGrmR,OAC3C16B,EAAI,IAAO+gT,EAAS,GAAGpmR,MAAQomR,EAAS,GAAGpmR,OACjD8lR,EAAS74R,IAAI/yB,EAAGmL,EAClB,CACF,CAEA,SAASuiT,IACP,IAAMt7K,EAAK85K,EAAS,GAAGrmR,MAAQqmR,EAAS,GAAGrmR,MACrCssG,EAAK+5K,EAAS,GAAGpmR,MAAQomR,EAAS,GAAGpmR,MACrC00I,EAAWz5K,KAAK04J,KAAKrnB,EAAKA,EAAKD,EAAKA,GAC1C45K,EAAWh5R,IAAI,EAAGynJ,EACpB,CAYA,SAASmzI,EAAsBthR,GAC7B,GAAuB,GAAnB6/Q,EAASxwT,OACXgwT,EAAU34R,IAAIsZ,EAAMxG,MAAOwG,EAAMvG,WAC5B,CACL,IAAMu9B,EAAWuqP,GAAyBvhR,GACpCrsC,EAAI,IAAOqsC,EAAMxG,MAAQw9B,EAASrjE,GAClCmL,EAAI,IAAOkhC,EAAMvG,MAAQu9B,EAASl4D,GACxCugT,EAAU34R,IAAI/yB,EAAGmL,EACnB,CAEAwgT,EAAYvyJ,WAAWsyJ,EAAWD,GAAapyJ,eAAey3B,EAAM+8H,aACpE,IAAMroT,EAAUsrL,EAAM34E,WAElB3yG,IACFukT,EAAW,EAAIhpT,KAAK00J,GAAKk2J,EAAY3rT,EAAIwF,EAAQgb,cAEjD+rS,EAAS,EAAIxrT,KAAK00J,GAAKk2J,EAAYxgT,EAAI3F,EAAQgb,eAGjDirS,EAAYjsJ,KAAKksJ,EACnB,CAEA,SAASoC,EAAmBzhR,GAC1B,GAAuB,GAAnB6/Q,EAASxwT,OACXmwT,EAAO94R,IAAIsZ,EAAMxG,MAAOwG,EAAMvG,WACzB,CACL,IAAMu9B,EAAWuqP,GAAyBvhR,GACpCrsC,EAAI,IAAOqsC,EAAMxG,MAAQw9B,EAASrjE,GAClCmL,EAAI,IAAOkhC,EAAMvG,MAAQu9B,EAASl4D,GACxC0gT,EAAO94R,IAAI/yB,EAAGmL,EAChB,CAEA2gT,EAAS1yJ,WAAWyyJ,EAAQD,GAAUvyJ,eAAey3B,EAAMi9H,UAC3DnB,EAAId,EAAS9rT,EAAG8rT,EAAS3gT,GACzBygT,EAASpsJ,KAAKqsJ,EAChB,CAEA,SAASmC,EAAqB3hR,GAC5B,IAAMg3B,EAAWuqP,GAAyBvhR,GACpC+lG,EAAK/lG,EAAMxG,MAAQw9B,EAASrjE,EAC5BmyI,EAAK9lG,EAAMvG,MAAQu9B,EAASl4D,EAC5BqvK,EAAWz5K,KAAK04J,KAAKrnB,EAAKA,EAAKD,EAAKA,GAC1C65K,EAASj5R,IAAI,EAAGynJ,GAChByxI,EAAWl5R,IAAI,EAAGhyB,KAAKs1J,IAAI21J,EAAS7gT,EAAI4gT,EAAW5gT,EAAG2lL,EAAMu7H,YAC5DW,EAASf,EAAW9gT,GACpB4gT,EAAWvsJ,KAAKwsJ,EAClB,CAeA,SAASxI,EAAcn3Q,GACrB,IAAsB,IAAlBykJ,EAAM6D,QAAV,CAGE,IAAIs5H,EAAoBC,EAD1B,GAAwB,IAApBhC,EAASxwT,OAGiC,QAA3CuyT,EAAqBn9H,EAAM34E,kBAA+C,IAAvB81M,GAAyCA,EAAmB/4R,cAAcxtB,iBAAiB,cAAegzS,GAClH,QAA3CwT,EAAqBp9H,EAAM34E,kBAA+C,IAAvB+1M,GAAyCA,EAAmBh5R,cAAcxtB,iBAAiB,YAAa+7S,IAuOhK,SAAoBp3Q,GAClB6/Q,EAAStrT,KAAKyrC,EAChB,CAtOE8hR,CAAW9hR,GAEe,UAAtBA,EAAM3C,YAuIZ,SAAsB2C,GAGpB,OAFA+hR,GAAa/hR,GAEL6/Q,EAASxwT,QACf,KAAK,EACH,OAAQo1L,EAAMjnJ,QAAQq+Q,KACpB,KAAK59J,GAAMH,OACT,IAA2B,IAAvB2mC,EAAMu9H,aAAwB,OAClCb,IACA9pS,EAAQ++F,EAAM4oM,aACd,MAEF,KAAK/gK,GAAMD,IACT,IAAwB,IAApBymC,EAAMi8H,UAAqB,OAC/BU,IACA/pS,EAAQ++F,EAAM6oM,UACd,MAEF,QACE5nS,EAAQ++F,EAAM6mM,KAGlB,MAEF,KAAK,EACH,OAAQx4H,EAAMjnJ,QAAQs+Q,KACpB,KAAK79J,GAAMC,UACT,IAAyB,IAArBumC,EAAMs8H,aAA4C,IAApBt8H,EAAMi8H,UAAqB,OApPjEj8H,EAAMs8H,YAAYM,IAClB58H,EAAMi8H,WAAWU,IAqPb/pS,EAAQ++F,EAAM8oM,gBACd,MAEF,KAAKjhK,GAAME,aACT,IAAyB,IAArBsmC,EAAMs8H,aAA+C,IAAvBt8H,EAAMu9H,aAAwB,OArPpEv9H,EAAMs8H,YAAYM,IAClB58H,EAAMu9H,cAAcb,IAsPhB9pS,EAAQ++F,EAAM+oM,mBACd,MAEF,QACE9nS,EAAQ++F,EAAM6mM,KAGlB,MAEF,QACE5lS,EAAQ++F,EAAM6mM,KAGd5lS,IAAU++F,EAAM6mM,MAClBx4H,EAAMzuJ,cAAc8oR,EAExB,CAzLImD,CAAajiR,GAmCjB,SAAqBA,GACnB,IAAIkiR,EAEJ,OAAQliR,EAAMhG,QACZ,KAAK,EACHkoR,EAAcz9H,EAAM09H,aAAaxkK,KACjC,MAEF,KAAK,EACHukK,EAAcz9H,EAAM09H,aAAavkK,OACjC,MAEF,KAAK,EACHskK,EAAcz9H,EAAM09H,aAAatkK,MACjC,MAEF,QACEqkK,GAAe,EAGnB,OAAQA,GACN,KAAKxkK,GAAMK,MACT,IAAyB,IAArB0mC,EAAMs8H,WAAsB,QA/PtC,SAA8B/gR,GAC5B0/Q,EAAWh5R,IAAIsZ,EAAM1G,QAAS0G,EAAMzG,QACtC,CA8PM6oR,CAAqBpiR,GACrB3oB,EAAQ++F,EAAM2nC,MACd,MAEF,KAAKL,GAAMI,OACT,GAAI99G,EAAMtG,SAAWsG,EAAMnG,SAAWmG,EAAMrG,SAAU,CACpD,IAAwB,IAApB8qJ,EAAMi8H,UAAqB,OAC/BQ,EAAmBlhR,GACnB3oB,EAAQ++F,EAAM4nC,GAChB,KAAO,CACL,IAA2B,IAAvBymC,EAAMu9H,aAAwB,OAClCf,EAAsBjhR,GACtB3oB,EAAQ++F,EAAM0nC,MAChB,CAEA,MAEF,KAAKJ,GAAMM,IACT,GAAIh+G,EAAMtG,SAAWsG,EAAMnG,SAAWmG,EAAMrG,SAAU,CACpD,IAA2B,IAAvB8qJ,EAAMu9H,aAAwB,OAClCf,EAAsBjhR,GACtB3oB,EAAQ++F,EAAM0nC,MAChB,KAAO,CACL,IAAwB,IAApB2mC,EAAMi8H,UAAqB,OAC/BQ,EAAmBlhR,GACnB3oB,EAAQ++F,EAAM4nC,GAChB,CAEA,MAEF,QACE3mI,EAAQ++F,EAAM6mM,KAGd5lS,IAAU++F,EAAM6mM,MAClBx4H,EAAMzuJ,cAAc8oR,EAExB,CA7FI5jP,CAAYl7B,EAdqB,CAgBrC,CAEA,SAASquQ,EAAcruQ,IACC,IAAlBykJ,EAAM6D,UAEgB,UAAtBtoJ,EAAM3C,YAkLZ,SAAqB2C,GAGnB,OAFA+hR,GAAa/hR,GAEL3oB,GACN,KAAK++F,EAAM4oM,aACT,IAA2B,IAAvBv6H,EAAMu9H,aAAwB,OAClCV,EAAsBthR,GACtBykJ,EAAM1pB,SACN,MAEF,KAAK3kD,EAAM6oM,UACT,IAAwB,IAApBx6H,EAAMi8H,UAAqB,OAC/Be,EAAmBzhR,GACnBykJ,EAAM1pB,SACN,MAEF,KAAK3kD,EAAM8oM,gBACT,IAAyB,IAArBz6H,EAAMs8H,aAA4C,IAApBt8H,EAAMi8H,UAAqB,QAtOnE,SAAiC1gR,GAC3BykJ,EAAMs8H,YAAYY,EAAqB3hR,GACvCykJ,EAAMi8H,WAAWe,EAAmBzhR,EAC1C,CAoOMqiR,CAAwBriR,GACxBykJ,EAAM1pB,SACN,MAEF,KAAK3kD,EAAM+oM,mBACT,IAAyB,IAArB16H,EAAMs8H,aAA+C,IAAvBt8H,EAAMu9H,aAAwB,QAvOtE,SAAoChiR,GAC9BykJ,EAAMs8H,YAAYY,EAAqB3hR,GACvCykJ,EAAMu9H,cAAcV,EAAsBthR,EAChD,CAqOMsiR,CAA2BtiR,GAC3BykJ,EAAM1pB,SACN,MAEF,QACE1jJ,EAAQ++F,EAAM6mM,KAEpB,CAhNIsF,CAAYviR,GAuFhB,SAAqBA,GACnB,IAAsB,IAAlBykJ,EAAM6D,QAAmB,OAE7B,OAAQjxK,GACN,KAAK++F,EAAM0nC,OACT,IAA2B,IAAvB2mC,EAAMu9H,aAAwB,QApSxC,SAA+BhiR,GAC7Bq/Q,EAAU34R,IAAIsZ,EAAM1G,QAAS0G,EAAMzG,SACnC+lR,EAAYvyJ,WAAWsyJ,EAAWD,GAAapyJ,eAAey3B,EAAM+8H,aACpE,IAAMroT,EAAUsrL,EAAM34E,WAElB3yG,IACFukT,EAAW,EAAIhpT,KAAK00J,GAAKk2J,EAAY3rT,EAAIwF,EAAQgb,cAEjD+rS,EAAS,EAAIxrT,KAAK00J,GAAKk2J,EAAYxgT,EAAI3F,EAAQgb,eAGjDirS,EAAYjsJ,KAAKksJ,GACjB56H,EAAM1pB,QACR,CAwRMynJ,CAAsBxiR,GACtB,MAEF,KAAKo2E,EAAM2nC,MACT,IAAyB,IAArB0mC,EAAMs8H,WAAsB,QA1RtC,SAA8B/gR,GAC5B2/Q,EAASj5R,IAAIsZ,EAAM1G,QAAS0G,EAAMzG,SAClCqmR,EAAW7yJ,WAAW4yJ,EAAUD,GAE5BE,EAAW9gT,EAAI,EACjB6hT,EAASZ,KACAH,EAAW9gT,EAAI,GACxBkiT,EAAQjB,KAGVL,EAAWvsJ,KAAKwsJ,GAChBl7H,EAAM1pB,QACR,CA+QM0nJ,CAAqBziR,GACrB,MAEF,KAAKo2E,EAAM4nC,IACT,IAAwB,IAApBymC,EAAMi8H,UAAqB,QAjRrC,SAA4B1gR,GAC1Bw/Q,EAAO94R,IAAIsZ,EAAM1G,QAAS0G,EAAMzG,SAChCkmR,EAAS1yJ,WAAWyyJ,EAAQD,GAAUvyJ,eAAey3B,EAAMi9H,UAC3DnB,EAAId,EAAS9rT,EAAG8rT,EAAS3gT,GACzBygT,EAASpsJ,KAAKqsJ,GACd/6H,EAAM1pB,QACR,CA4QM2nJ,CAAmB1iR,GAGzB,CAxGI2iR,CAAY3iR,GAEhB,CAEA,SAASo3Q,EAAYp3Q,GAIjB,IAAI4iR,EAAoBC,EAAqBC,GAH/CC,GAAc/iR,GAEU,IAApB6/Q,EAASxwT,UAGiC,QAA3CuzT,EAAqBn+H,EAAM34E,kBAA+C,IAAvB82M,GAAyCA,EAAmBnX,sBAAsBzrQ,EAAM9K,WAC/F,QAA5C2tR,EAAsBp+H,EAAM34E,kBAAgD,IAAxB+2M,GAA0CA,EAAoBh6R,cAAc8G,oBAAoB,cAAe0+Q,GACvH,QAA5CyU,EAAsBr+H,EAAM34E,kBAAgD,IAAxBg3M,GAA0CA,EAAoBj6R,cAAc8G,oBAAoB,YAAaynR,IAGpK3yH,EAAMzuJ,cAAc+oR,GACpB1nS,EAAQ++F,EAAM6mM,IAChB,CAEA,SAAS5F,EAAgBr3Q,GACvB+iR,GAAc/iR,EAChB,CAqFA,SAASu+Q,EAAav+Q,IACE,IAAlBykJ,EAAM6D,UAA0C,IAArB7D,EAAMs8H,YAAwB1pS,IAAU++F,EAAM6mM,MAAQ5lS,IAAU++F,EAAM0nC,SAIrG99G,EAAM9H,iBACNusJ,EAAMzuJ,cAAc8oR,GArRtB,SAA0B9+Q,GACpBA,EAAMjC,OAAS,EACjBijR,EAAQjB,KACC//Q,EAAMjC,OAAS,GACxB4iR,EAASZ,KAGXt7H,EAAM1pB,QACR,CA8QEioJ,CAAiBhjR,GACjBykJ,EAAMzuJ,cAAc+oR,GACtB,CAEA,SAAS1jP,EAAUr7B,IACK,IAAlBykJ,EAAM6D,UAAyC,IAApB7D,EAAMi8H,WAjRvC,SAAuB1gR,GACrB,IAAI+2H,GAAc,EAElB,OAAQ/2H,EAAMtD,MACZ,KAAK+nJ,EAAMprL,KAAKsiT,GACd4E,EAAI,EAAG97H,EAAMw+H,aACblsJ,GAAc,EACd,MAEF,KAAK0tB,EAAMprL,KAAKuiT,OACd2E,EAAI,GAAI97H,EAAMw+H,aACdlsJ,GAAc,EACd,MAEF,KAAK0tB,EAAMprL,KAAKskJ,KACd4iK,EAAI97H,EAAMw+H,YAAa,GACvBlsJ,GAAc,EACd,MAEF,KAAK0tB,EAAMprL,KAAKwkJ,MACd0iK,GAAK97H,EAAMw+H,YAAa,GACxBlsJ,GAAc,EAIdA,IAEF/2H,EAAM9H,iBACNusJ,EAAM1pB,SAEV,CAoPEvhG,CAAcx5B,EAChB,CAwFA,SAASg3Q,EAAch3Q,IACC,IAAlBykJ,EAAM6D,SACVtoJ,EAAM9H,gBACR,CAMA,SAAS6qR,GAAc/iR,UACd8/Q,EAAiB9/Q,EAAM9K,WAE9B,IAAK,IAAI/gC,EAAI,EAAGA,EAAI0rT,EAASxwT,OAAQ8E,IACnC,GAAI0rT,EAAS1rT,GAAG+gC,WAAa8K,EAAM9K,UAEjC,YADA2qR,EAASv6P,OAAOnxD,EAAG,EAIzB,CAEA,SAAS4tT,GAAa/hR,GACpB,IAAIg3B,EAAW8oP,EAAiB9/Q,EAAM9K,gBAErBrzB,IAAbm1D,IACFA,EAAW,IAAI41F,GACfkzJ,EAAiB9/Q,EAAM9K,WAAa8hC,GAGtCA,EAAStwC,IAAIsZ,EAAMxG,MAAOwG,EAAMvG,MAClC,CAEA,SAAS8nR,GAAyBvhR,GAChC,IAAMutQ,EAAUvtQ,EAAM9K,YAAc2qR,EAAS,GAAG3qR,UAAY2qR,EAAS,GAAKA,EAAS,GACnF,OAAOC,EAAiBvS,EAAQr4Q,UAClC,CAKc,YAFKrzB,IAAfiqG,GAA0Bn4F,EAAKmkQ,QAAQhsK,GAE3Cn4F,EAAKonJ,SAASpnJ,CAChB,CAAC,OAAA3S,EAAA06S,EAAA,CAh7BgB,CAAS3yJ,oGCNtB2yJ,GAA6B/jS,EAAAA,YAAiB,SAAAlW,EAUjD+T,GAAQ,IATT0tS,EAAWzhT,EAAXyhT,YACA7jJ,EAAM59J,EAAN49J,OACAgwI,EAAO5tS,EAAP4tS,QACAvjM,EAAUrqG,EAAVqqG,WAAUq3M,EAAA1hT,EACVm8S,cAAAA,OAAa,IAAAuF,GAAOA,EACpBhqK,EAAQ13I,EAAR03I,SACAl0E,EAAOxjE,EAAPwjE,QACAm+O,EAAK3hT,EAAL2hT,MACGC,EAAS3sS,GAAAjV,EAAAuU,IAENi1R,EAAasF,IAAS,SAAAl5R,GAAK,OAAIA,EAAM4zR,UAAU,IAC/CqY,EAAgB/S,IAAS,SAAAl5R,GAAK,OAAIA,EAAMgoJ,MAAM,IAC9Ch7G,EAAKksP,IAAS,SAAAl5R,GAAK,OAAIA,EAAMgtC,EAAE,IAC/BirD,EAASihM,IAAS,SAAAl5R,GAAK,OAAIA,EAAMi4F,MAAM,IACvC5oF,EAAM6pR,IAAS,SAAAl5R,GAAK,OAAIA,EAAMqP,GAAG,IACjCc,EAAM+oR,IAAS,SAAAl5R,GAAK,OAAIA,EAAMmQ,GAAG,IACjCmhC,EAAc4nP,IAAS,SAAAl5R,GAAK,OAAIA,EAAMsxC,WAAW,IACjD46P,EAAalkJ,GAAUikJ,EACvBE,EAAiB13M,GAAcwD,EAAOw/L,WAAazqP,EAAGynD,WACtDj6B,EAAWl6D,EAAAA,SAAc,kBAAM,IAAI8rS,GAAgBF,EAAW,GAAE,CAACA,IAmCvE,OLyjDF,SAAkB3zQ,GAA8B,IAApB8zQ,EAAchsT,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EACrC89G,EAAQgwL,KACRjoO,EAAYi4C,EAAMgjB,WAAWliC,SAAS/4B,UAEtC/nD,EAAMyxR,GAAmBr3P,GAE/BwnD,IAA0B,kBAAM75B,EAAU/nD,EAAKkuS,EAAgBluM,EAAM,GAAE,CAACkuM,EAAgBnmP,EAAWi4C,GAErG,CKnmDEmuM,EAAS,WACH9xO,EAASy2G,SAASz2G,EAASkpF,QACjC,IACApjJ,EAAAA,WAAgB,WAEd,OADAk6D,EAASimM,QAAQ0rC,GACV,WAAW3xO,EAASsnF,SAAS,CACtC,GAAG,CAACqqJ,EAAgBnU,EAASx9N,EAAUo5N,IACvCtzR,EAAAA,WAAgB,WACd,IAAMi4B,EAAW,SAAA7xC,GACfktS,IACIoE,GAAS1mP,EAAY0mP,UACrBl2J,GAAUA,EAASp7I,EACzB,EAKA,OAHA8zE,EAASx2E,iBAAiB,SAAUu0C,GAChCq1B,GAAS4M,EAASx2E,iBAAiB,QAAS4pE,GAC5Cm+O,GAAOvxO,EAASx2E,iBAAiB,MAAO+nT,GACrC,WACDn+O,GAAS4M,EAASliD,oBAAoB,QAASs1C,GAC/Cm+O,GAAOvxO,EAASliD,oBAAoB,MAAOyzR,GAC/CvxO,EAASliD,oBAAoB,SAAUigB,EACzC,CACF,GAAG,CAACupG,EAAUl0E,EAASm+O,IACvBzrS,EAAAA,WAAgB,WACd,GAAIurS,EAAa,CACf,IAAMU,EAAMp8R,IAAMqqD,SAIlB,OAHAnrD,EAAI,CACFmrD,SAAAA,IAEK,kBAAMnrD,EAAI,CACfmrD,SAAU+xO,GACV,CACJ,CACF,GAAG,CAACV,EAAarxO,IACGl6D,EAAAA,cAAoB,YAAazB,GAAS,CAC5DV,IAAKA,EACL5b,OAAQi4E,EACR+rO,cAAeA,GACdyF,GACL,ICAMQ,GAAU,SAAAj8C,GAAAn0P,EAAAowS,EAAAj8C,GAAA,IAAAl0P,EAAAtB,EAAAyxS,GAEf,SAAAA,EAAav8C,GAAU,IAAA3zP,EAoElB,OApEkBzR,EAAA,KAAA2hT,IAEtBlwS,EAAAD,EAAApf,KAAA,KAAOgzQ,IAEFw8C,YAAc,KACnBnwS,EAAKowS,WAAa,KAClBpwS,EAAKqwS,eAAiB,KAEtBrwS,EAAKswS,gBAAkB,GAEvBtwS,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAI2+N,GAAiC3+N,EAE7C,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAI4+N,GAA4B5+N,EAExC,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAI6+N,GAA0B7+N,EAEtC,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAI8+N,GAA6B9+N,EAEzC,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAI++N,GAAoC/+N,EAEhD,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAIg/N,GAA8Bh/N,EAE1C,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAIi/N,GAA2Bj/N,EAEvC,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAIk/N,GAAgCl/N,EAE5C,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAIm/N,GAAqBn/N,EAEjC,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAIo/N,GAAwBp/N,EAEpC,IAAI5xE,CAEL,CAmQC,OAnQA3S,EAAA6iT,EAAA,EAAA5pT,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAE9B,IAEI23O,EAFE/iF,EAAQhtL,KAMb+vQ,EAF0B,KAAtB/vQ,KAAK+vQ,aAEM/vQ,KAAK+vQ,aAEK,KAAd/vQ,KAAKk3F,KAEDl3F,KAAKk3F,KAILuhL,GAAYmB,eAAgB1xO,GAO5CloC,KAAK6vQ,QAAQV,UAAWjnO,GAExB,IAAMilR,EAAW,SAAW7mT,GAEtB8xB,EAEJA,EAAS9xB,GAITyN,QAAQwN,MAAOjb,GAIhB0mL,EAAM6iF,QAAQR,UAAWnnO,GACzB8kJ,EAAM6iF,QAAQT,QAASlnO,EAExB,EAEM67D,EAAS,IAAImsK,GAAYlwQ,KAAK6vQ,SAEpC9rK,EAAOwuK,QAASvyQ,KAAKk3F,MACrB6M,EAAO8uK,gBAAiB,eACxB9uK,EAAOyuK,iBAAkBxyQ,KAAKgwQ,eAC9BjsK,EAAO0uK,mBAAoBzyQ,KAAK8vQ,iBAEhC/rK,EAAOn4B,KAAM1jC,GAAK,SAAWxE,GAE5B,IAECspJ,EAAMrsF,MAAOj9D,EAAMqsO,GAAc,SAAWq9C,GAE3CpzK,EAAQozK,GAERpgI,EAAM6iF,QAAQT,QAASlnO,EAExB,GAAGilR,EAEJ,CAAE,MAAQ7mT,KAET6mT,EAAU7mT,IAEX,CAED,GAAGmmE,EAAY0gP,EAEhB,GAAC,CAAA3qT,IAAA,iBAAA/D,MAED,SAAgB4tT,GAGf,OADArsT,KAAKqsT,YAAcA,EACZrsT,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,WAEC,MAAM,IAAIX,MAET,mGAIF,GAAC,CAAA0E,IAAA,gBAAA/D,MAED,SAAe6tT,GAGd,OADAtsT,KAAKssT,WAAaA,EACXtsT,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmB8tT,GAGlB,OADAvsT,KAAKusT,eAAiBA,EACfvsT,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU05C,GAQT,OANoD,IAA/Cn4C,KAAKwsT,gBAAgBhgT,QAAS2rC,IAElCn4C,KAAKwsT,gBAAgB1vT,KAAMq7C,GAIrBn4C,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAY05C,GAQX,OANoD,IAA/Cn4C,KAAKwsT,gBAAgBhgT,QAAS2rC,IAElCn4C,KAAKwsT,gBAAgB3+P,OAAQ7tD,KAAKwsT,gBAAgBhgT,QAAS2rC,GAAY,GAIjEn4C,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOilC,EAAMwzD,EAAM8iD,EAAQ5hH,GAE1B,IAAIhc,EACEkwE,EAAa,CAAC,EACdpiF,EAAU,CAAC,EAEjB,GAAqB,kBAATw5B,EAEXtnB,EAAUsnB,OAMV,GAFc+0O,GAAY40C,WAAY,IAAI93M,WAAY7xE,EAAM,EAAG,MAEhD4pR,GAAgC,CAE9C,IAEChhO,EAAYihO,GAAWC,iBAAoB,IAAIC,GAAqB/pR,EAErE,CAAE,MAAQniB,IAGT,YADK6W,GAAUA,EAAS7W,IAGzB,CAEAnF,EAAUkwE,EAAYihO,GAAWC,iBAAkBpxS,OAEpD,MAECA,EAAUq8P,GAAY40C,WAAY,IAAI93M,WAAY7xE,IAMpD,IAAM+4M,EAAO1uL,KAAK4yC,MAAOvkF,GAEzB,QAAoBhS,IAAfqyO,EAAKixE,OAAuBjxE,EAAKixE,MAAMr0T,QAAS,GAAM,EAErD++B,GAAUA,EAAS,IAAIt6B,MAAO,gFAFpC,CAOA,IAAMgwF,EAAS,IAAI6/N,GAAYlxE,EAAM,CAEpCvlJ,KAAMA,GAAQl3F,KAAK+vQ,cAAgB,GACnCt4H,YAAaz3I,KAAKy3I,YAClBu4H,cAAehwQ,KAAKgwQ,cACpBH,QAAS7vQ,KAAK6vQ,QACdy8C,WAAYtsT,KAAKssT,WACjBC,eAAgBvsT,KAAKusT,iBAItBz+N,EAAO8/N,WAAWp7C,iBAAkBxyQ,KAAKgwQ,eAEzC,IAAM,IAAItzQ,EAAI,EAAGA,EAAIsD,KAAKwsT,gBAAgB50T,OAAQ8E,IAAO,CAExD,IAAMqyG,EAAS/uG,KAAKwsT,gBAAiB9vT,GAAKoxF,GAC1C5jF,EAAS6kG,EAAO51G,MAAS41G,EAMzBziB,EAAYyiB,EAAO51G,OAAS,CAE7B,CAEA,GAAKsjP,EAAKoxE,eAET,IAAM,IAAInxT,EAAI,EAAGA,EAAI+/O,EAAKoxE,eAAej2T,SAAW8E,EAAI,CAEvD,IAAMoxT,EAAgBrxE,EAAKoxE,eAAgBnxT,GACrCqxT,EAAqBtxE,EAAKsxE,oBAAsB,GAEtD,OAASD,GAER,KAAKP,GAAWS,oBACf1hO,EAAYwhO,GAAkB,IAAIG,GAClC,MAED,KAAKV,GAAWW,sCACf5hO,EAAYwhO,GAAkB,IAAIK,GAClC,MAED,KAAKZ,GAAWa,2BACf9hO,EAAYwhO,GAAkB,IAAIO,GAAmC5xE,EAAMz8O,KAAKqsT,aAChF,MAED,KAAKkB,GAAWe,sBACfhiO,EAAYwhO,GAAkB,IAAIS,GAClC,MAED,KAAKhB,GAAWiB,sBACfliO,EAAYwhO,GAAkB,IAAIW,GAClC,MAED,QAEMV,EAAmBvhT,QAASshT,IAAmB,QAAkC1jT,IAA7BF,EAAS4jT,IAEjE/5S,QAAQk/C,KAAM,wCAA0C66P,EAAgB,MAM5E,CAIDhgO,EAAO4gO,cAAepiO,GACtBwB,EAAO0hB,WAAYtlG,GACnB4jF,EAAO6S,MAAOq5C,EAAQ5hH,EAzEtB,CA2ED,GAAC,CAAA51B,IAAA,aAAA/D,MAED,SAAYilC,EAAMwzD,GAEjB,IAAM81F,EAAQhtL,KAEd,OAAO,IAAIswC,SAAS,SAAWG,EAAS8tC,GAEvCyuG,EAAMrsF,MAAOj9D,EAAMwzD,EAAMzmD,EAAS8tC,EAEnC,GAED,KAAC6tO,CAAA,CA3Uc,CAASx8C,IAiVzB,SAAS++C,KAER,IAAIjqH,EAAU,CAAC,EAEf,MAAO,CAEN30K,IAAK,SAAWvtB,GAEf,OAAOkiM,EAASliM,EAEjB,EAEA4pB,IAAK,SAAW5pB,EAAKL,GAEpBuiM,EAASliM,GAAQL,CAElB,EAEAy+D,OAAQ,SAAWp+D,UAEXkiM,EAASliM,EAEjB,EAEAosT,UAAW,WAEVlqH,EAAU,CAAC,CAEZ,EAIF,CAMA,IAAM6oH,GAAa,CAClBC,gBAAiB,kBACjBY,2BAA4B,6BAC5BS,oBAAqB,sBACrBC,wBAAyB,0BACzBC,kBAAmB,oBACnBb,sCAAuC,sCACvCc,oBAAqB,sBACrBC,uBAAwB,yBACxBC,2BAA4B,6BAC5BlB,oBAAqB,sBACrBmB,qBAAsB,uBACtBC,mBAAoB,qBACpBd,sBAAuB,wBACvBE,sBAAuB,wBACvBa,iBAAkB,mBAClBC,wBAAyB,2BAQpBrC,GAAmB,WAExB,SAAAA,EAAan/N,GAASrjF,EAAA,KAAAwiT,GAErBjtT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAWsB,oBAGvB7uT,KAAKoJ,MAAQ,CAAEgsC,KAAM,CAAC,EAAGm6Q,KAAM,CAAC,EAEjC,CA6GC,OA7GAhmT,EAAA0jT,EAAA,EAAAzqT,IAAA,YAAA/D,MAED,WAKC,IAHA,IAAMqvF,EAAS9tF,KAAK8tF,OACd0hO,EAAWxvT,KAAK8tF,OAAO2uJ,KAAKjyI,OAAS,GAEjCilN,EAAY,EAAGC,EAAaF,EAAS53T,OAAQ63T,EAAYC,EAAYD,IAAe,CAE7F,IAAME,EAAUH,EAAUC,GAErBE,EAAQrjO,YACRqjO,EAAQrjO,WAAYtsF,KAAK7G,YACiBiR,IAA1CulT,EAAQrjO,WAAYtsF,KAAK7G,MAAO+3E,OAEpC4c,EAAO8hO,YAAa5vT,KAAKoJ,MAAOumT,EAAQrjO,WAAYtsF,KAAK7G,MAAO+3E,MAIlE,CAED,GAAC,CAAA1uE,IAAA,aAAA/D,MAED,SAAYoxT,GAEX,IAAM/hO,EAAS9tF,KAAK8tF,OACd0yH,EAAW,SAAWqvG,EACxBC,EAAahiO,EAAO1kF,MAAM2mB,IAAKywL,GAEnC,GAAKsvG,EAAa,OAAOA,EAEzB,IAIIC,EAJEtzE,EAAO3uJ,EAAO2uJ,KAGduzE,IAFevzE,EAAKnwJ,YAAcmwJ,EAAKnwJ,WAAYtsF,KAAK7G,OAAY,CAAC,GAC9C21L,QAAU,IACX+gI,GAGtBroR,EAAQ,IAAI+zH,GAAO,eAEDnxJ,IAAnB4lT,EAASxoR,OAAsBA,EAAMmyH,UAAWq2J,EAASxoR,OAE9D,IAAMM,OAA2B19B,IAAnB4lT,EAASloR,MAAsBkoR,EAASloR,MAAQ,EAE9D,OAASkoR,EAASprT,MAEjB,IAAK,eACJmrT,EAAY,IAAIh5C,GAAkBvvO,IACxBjmC,OAAOg+D,SAAStwC,IAAK,EAAG,GAAK,GACvC8gS,EAAU3jS,IAAK2jS,EAAUxuT,QACzB,MAED,IAAK,SACJwuT,EAAY,IAAIx5C,GAAY/uO,IAClBkvI,SAAW5uI,EACrB,MAED,IAAK,QACJioR,EAAY,IAAIr6C,GAAWluO,IACjBkvI,SAAW5uI,EAErBkoR,EAAStnG,KAAOsnG,EAAStnG,MAAQ,CAAC,EAClCsnG,EAAStnG,KAAKunG,oBAAkD7lT,IAAjC4lT,EAAStnG,KAAKunG,eAA+BD,EAAStnG,KAAKunG,eAAiB,EAC3GD,EAAStnG,KAAKwnG,oBAAkD9lT,IAAjC4lT,EAAStnG,KAAKwnG,eAA+BF,EAAStnG,KAAKwnG,eAAiBjzT,KAAK00J,GAAK,EACrHo+J,EAAUn6J,MAAQo6J,EAAStnG,KAAKwnG,eAChCH,EAAUljG,SAAW,EAAMmjG,EAAStnG,KAAKunG,eAAiBD,EAAStnG,KAAKwnG,eACxEH,EAAUxuT,OAAOg+D,SAAStwC,IAAK,EAAG,GAAK,GACvC8gS,EAAU3jS,IAAK2jS,EAAUxuT,QACzB,MAED,QACC,MAAM,IAAIzD,MAAO,4CAA8CkyT,EAASprT,MAkB1E,OAZAmrT,EAAUxwP,SAAStwC,IAAK,EAAG,EAAG,GAE9B8gS,EAAUttH,MAAQ,OAEUr4L,IAAvB4lT,EAAS7jG,YAA0B4jG,EAAU5jG,UAAY6jG,EAAS7jG,WAEvE4jG,EAAU52T,KAAO20F,EAAOqiO,iBAAkBH,EAAS72T,MAAU,SAAW02T,GAExEC,EAAax/Q,QAAQG,QAASs/Q,GAE9BjiO,EAAO1kF,MAAMgjB,IAAKo0L,EAAUsvG,GAErBA,CAER,GAAC,CAAAttT,IAAA,uBAAA/D,MAED,SAAsBgxT,GAErB,IAAMt6S,EAAOnV,KACP8tF,EAAS9tF,KAAK8tF,OAEd6hO,EADO7hO,EAAO2uJ,KACCjyI,MAAOilN,GAEtBI,GADaF,EAAQrjO,YAAcqjO,EAAQrjO,WAAYtsF,KAAK7G,OAAY,CAAC,GACnD+3E,MAE5B,YAAoB9mE,IAAfylT,EAAkC,KAEhC7vT,KAAKowT,WAAYP,GAAan/Q,MAAM,SAAWwgC,GAErD,OAAO4c,EAAOuiO,YAAal7S,EAAK/L,MAAOymT,EAAY3+O,EAEpD,GAED,KAAC+7O,CAAA,CAvHuB,GAgInBgB,GAA2B,WAEhC,SAAAA,IAAcxjT,EAAA,KAAAwjT,GAEbjuT,KAAK7G,KAAOo0T,GAAWS,mBAExB,CAsCC,OAtCAzkT,EAAA0kT,EAAA,EAAAzrT,IAAA,kBAAA/D,MAED,WAEC,OAAOujL,EAER,GAAC,CAAAx/K,IAAA,eAAA/D,MAED,SAAc6xT,EAAgBC,EAAaziO,GAE1C,IAAMl2C,EAAU,GAEhB04Q,EAAe9oR,MAAQ,IAAI+zH,GAAO,EAAK,EAAK,GAC5C+0J,EAAe97R,QAAU,EAEzB,IAAMg8R,EAAoBD,EAAYE,qBAEtC,GAAKD,EAAoB,CAExB,GAAK7zT,MAAM0E,QAASmvT,EAAkBE,iBAAoB,CAEzD,IAAM3tT,EAAQytT,EAAkBE,gBAEhCJ,EAAe9oR,MAAMmyH,UAAW52J,GAChCutT,EAAe97R,QAAUzxB,EAAO,EAEjC,MAE4CqH,IAAvComT,EAAkBG,kBAEtB/4Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,MAAOE,EAAkBG,iBAAkBzhK,IAIjG,CAEA,OAAO5+G,QAAQxtC,IAAK80C,EAErB,KAACq2Q,CAAA,CA5C+B,GAqD3BxB,GAA+B,WAEpC,SAAAA,EAAa3+N,GAASrjF,EAAA,KAAAgiT,GAErBzsT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAWuB,uBAExB,CAoEC,OApEAvlT,EAAAkjT,EAAA,EAAAjqT,IAAA,kBAAA/D,MAED,SAAiB0nL,GAEhB,IACMoqI,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,OAAOoqI,EAAYjkO,YAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAEzD+tN,GAFyE,IAIjF,GAAC,CAAA1kN,IAAA,uBAAA/D,MAED,SAAsB0nL,EAAemqI,GAEpC,IAAMxiO,EAAS9tF,KAAK8tF,OACdyiO,EAAcziO,EAAO2uJ,KAAK9kE,UAAWwO,GAE3C,IAAOoqI,EAAYjkO,aAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAE/D,OAAOm3C,QAAQG,UAIhB,IAAMmH,EAAU,GAEV0uJ,EAAYiqH,EAAYjkO,WAAYtsF,KAAK7G,MA0B/C,QAxBmCiR,IAA9Bk8L,EAAUuqH,kBAEdP,EAAezxI,UAAYynB,EAAUuqH,sBAIFzmT,IAA/Bk8L,EAAUwqH,kBAEdl5Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,eAAgBhqH,EAAUwqH,wBAInC1mT,IAAvCk8L,EAAUyqH,2BAEdT,EAAexxI,mBAAqBwnB,EAAUyqH,+BAIF3mT,IAAxCk8L,EAAU0qH,2BAEdp5Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,wBAAyBhqH,EAAU0qH,iCAI9C5mT,IAArCk8L,EAAU2qH,yBAEdr5Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,qBAAsBhqH,EAAU2qH,8BAEpC7mT,IAA3Ck8L,EAAU2qH,uBAAuB55K,OAAsB,CAE3D,IAAMA,EAAQivD,EAAU2qH,uBAAuB55K,MAE/Ci5K,EAAepxI,qBAAuB,IAAI/pB,GAAS9d,EAAOA,EAE3D,CAID,OAAO/mG,QAAQxtC,IAAK80C,EAErB,KAAC60Q,CAAA,CA3EmC,GAoF/BG,GAA2B,WAEhC,SAAAA,EAAa9+N,GAASrjF,EAAA,KAAAmiT,GAErB5sT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAWyB,mBAExB,CA0DC,OA1DAzlT,EAAAqjT,EAAA,EAAApqT,IAAA,kBAAA/D,MAED,SAAiB0nL,GAEhB,IACMoqI,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,OAAOoqI,EAAYjkO,YAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAEzD+tN,GAFyE,IAIjF,GAAC,CAAA1kN,IAAA,uBAAA/D,MAED,SAAsB0nL,EAAemqI,GAEpC,IAAMxiO,EAAS9tF,KAAK8tF,OACdyiO,EAAcziO,EAAO2uJ,KAAK9kE,UAAWwO,GAE3C,IAAOoqI,EAAYjkO,aAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAE/D,OAAOm3C,QAAQG,UAIhB,IAAMmH,EAAU,GAEhB04Q,EAAejyI,WAAa,IAAI9iB,GAAO,EAAG,EAAG,GAC7C+0J,EAAehyI,eAAiB,EAChCgyI,EAAelyI,MAAQ,EAEvB,IAAMkoB,EAAYiqH,EAAYjkO,WAAYtsF,KAAK7G,MA0B/C,YAxBoCiR,IAA/Bk8L,EAAU4qH,kBAEdZ,EAAejyI,WAAW1kB,UAAW2sC,EAAU4qH,uBAIR9mT,IAAnCk8L,EAAU6qH,uBAEdb,EAAehyI,eAAiBgoB,EAAU6qH,2BAIN/mT,IAAhCk8L,EAAU8qH,mBAEdx5Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,gBAAiBhqH,EAAU8qH,kBAAmBliK,UAI1D9kJ,IAApCk8L,EAAU+qH,uBAEdz5Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,oBAAqBhqH,EAAU+qH,wBAI7E/gR,QAAQxtC,IAAK80C,EAErB,KAACg1Q,CAAA,CAjE+B,GA2E3BC,GAAkC,WAEvC,SAAAA,EAAa/+N,GAASrjF,EAAA,KAAAoiT,GAErB7sT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAW2B,0BAExB,CA0CC,OA1CA3lT,EAAAsjT,EAAA,EAAArqT,IAAA,kBAAA/D,MAED,SAAiB0nL,GAEhB,IACMoqI,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,OAAOoqI,EAAYjkO,YAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAEzD+tN,GAFyE,IAIjF,GAAC,CAAA1kN,IAAA,uBAAA/D,MAED,SAAsB0nL,EAAemqI,GAEpC,IAAMxiO,EAAS9tF,KAAK8tF,OACdyiO,EAAcziO,EAAO2uJ,KAAK9kE,UAAWwO,GAE3C,IAAOoqI,EAAYjkO,aAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAE/D,OAAOm3C,QAAQG,UAIhB,IAAMmH,EAAU,GAEV0uJ,EAAYiqH,EAAYjkO,WAAYtsF,KAAK7G,MAc/C,YAZsCiR,IAAjCk8L,EAAUgrH,qBAEdhB,EAAezvI,aAAeylB,EAAUgrH,yBAIFlnT,IAAlCk8L,EAAUirH,qBAEd35Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,kBAAmBhqH,EAAUirH,sBAI3EjhR,QAAQxtC,IAAK80C,EAErB,KAACi1Q,CAAA,CAjDsC,GA0DlCC,GAA4B,WAEjC,SAAAA,EAAah/N,GAASrjF,EAAA,KAAAqiT,GAErB9sT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAW4B,oBAExB,CA2CC,OA3CA5lT,EAAAujT,EAAA,EAAAtqT,IAAA,kBAAA/D,MAED,SAAiB0nL,GAEhB,IACMoqI,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,OAAOoqI,EAAYjkO,YAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAEzD+tN,GAFyE,IAIjF,GAAC,CAAA1kN,IAAA,uBAAA/D,MAED,SAAsB0nL,EAAemqI,GAEpC,IAAMxiO,EAAS9tF,KAAK8tF,OACdyiO,EAAcziO,EAAO2uJ,KAAK9kE,UAAWwO,GAE3C,IAAOoqI,EAAYjkO,aAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAE/D,OAAOm3C,QAAQG,UAIhB,IAAMmH,EAAU,GAEV0uJ,EAAYiqH,EAAYjkO,WAAYtsF,KAAK7G,MAE/Cm3T,EAAevvI,eAA0C32K,IAA9Bk8L,EAAUkrH,gBAAgClrH,EAAUkrH,gBAAkB,OAE7DpnT,IAA/Bk8L,EAAUmrH,kBAEd75Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,eAAgBhqH,EAAUmrH,mBAI/EnB,EAAervI,oBAAsBqlB,EAAUrlB,qBAAuB,EAEtE,IAAMywI,EAAaprH,EAAUplB,kBAAoB,CAAE,EAAG,EAAG,GAGzD,OAFAovI,EAAepvI,iBAAmB,IAAI3lB,GAAOm2J,EAAY,GAAKA,EAAY,GAAKA,EAAY,IAEpFphR,QAAQxtC,IAAK80C,EAErB,KAACk1Q,CAAA,CAlDgC,GA2D5BC,GAAyB,WAE9B,SAAAA,EAAaj/N,GAASrjF,EAAA,KAAAsiT,GAErB/sT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAWwB,iBAExB,CA8BC,OA9BAxlT,EAAAwjT,EAAA,EAAAvqT,IAAA,kBAAA/D,MAED,SAAiB0nL,GAEhB,IACMoqI,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,OAAOoqI,EAAYjkO,YAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAEzD+tN,GAFyE,IAIjF,GAAC,CAAA1kN,IAAA,uBAAA/D,MAED,SAAsB0nL,EAAemqI,GAEpC,IACMC,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,IAAOoqI,EAAYjkO,aAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAE/D,OAAOm3C,QAAQG,UAIhB,IAAM61J,EAAYiqH,EAAYjkO,WAAYtsF,KAAK7G,MAI/C,OAFAm3T,EAAexvH,SAAwB12L,IAAlBk8L,EAAUxF,IAAoBwF,EAAUxF,IAAM,IAE5DxwJ,QAAQG,SAEhB,KAACs8Q,CAAA,CArC6B,GA8CzBC,GAA8B,WAEnC,SAAAA,EAAal/N,GAASrjF,EAAA,KAAAuiT,GAErBhtT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAW0B,sBAExB,CA+CC,OA/CA1lT,EAAAyjT,EAAA,EAAAxqT,IAAA,kBAAA/D,MAED,SAAiB0nL,GAEhB,IACMoqI,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,OAAOoqI,EAAYjkO,YAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAEzD+tN,GAFyE,IAIjF,GAAC,CAAA1kN,IAAA,uBAAA/D,MAED,SAAsB0nL,EAAemqI,GAEpC,IAAMxiO,EAAS9tF,KAAK8tF,OACdyiO,EAAcziO,EAAO2uJ,KAAK9kE,UAAWwO,GAE3C,IAAOoqI,EAAYjkO,aAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAE/D,OAAOm3C,QAAQG,UAIhB,IAAMmH,EAAU,GAEV0uJ,EAAYiqH,EAAYjkO,WAAYtsF,KAAK7G,MAE/Cm3T,EAAe5xI,uBAAiDt0K,IAA7Bk8L,EAAUqrH,eAA+BrrH,EAAUqrH,eAAiB,OAEpEvnT,IAA9Bk8L,EAAUsrH,iBAEdh6Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,uBAAwBhqH,EAAUsrH,kBAIvF,IAAMF,EAAaprH,EAAUurH,qBAAuB,CAAE,EAAG,EAAG,GAS5D,OARAvB,EAAe3xI,cAAgB,IAAIpjB,GAAOm2J,EAAY,GAAKA,EAAY,GAAKA,EAAY,SAEhDtnT,IAAnCk8L,EAAUwrH,sBAEdl6Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,mBAAoBhqH,EAAUwrH,qBAAsB5iK,KAIlG5+G,QAAQxtC,IAAK80C,EAErB,KAACo1Q,CAAA,CAtDkC,GA+D9BN,GAA0B,WAE/B,SAAAA,EAAa5+N,GAASrjF,EAAA,KAAAiiT,GAErB1sT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAW6B,kBAExB,CAmCC,OAnCA7lT,EAAAmjT,EAAA,EAAAlqT,IAAA,cAAA/D,MAED,SAAaszT,GAEZ,IAAMjkO,EAAS9tF,KAAK8tF,OACd2uJ,EAAO3uJ,EAAO2uJ,KAEdu1E,EAAav1E,EAAKl9E,SAAUwyJ,GAElC,IAAOC,EAAW1lO,aAAgB0lO,EAAW1lO,WAAYtsF,KAAK7G,MAE7D,OAAO,KAIR,IAAMmtM,EAAY0rH,EAAW1lO,WAAYtsF,KAAK7G,MACxC4qG,EAASjW,EAAO7sF,QAAQqrT,WAE9B,IAAOvoN,EAAS,CAEf,GAAK04I,EAAKsxE,oBAAsBtxE,EAAKsxE,mBAAmBvhT,QAASxM,KAAK7G,OAAU,EAE/E,MAAM,IAAI2E,MAAO,+EAKjB,OAAO,IAIT,CAEA,OAAOgwF,EAAOmkO,iBAAkBF,EAAczrH,EAAU9kM,OAAQuiG,EAEjE,KAAC2oN,CAAA,CA1C8B,GAmD1BC,GAAwB,WAE7B,SAAAA,EAAa7+N,GAASrjF,EAAA,KAAAkiT,GAErB3sT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAW8B,iBACvBrvT,KAAKkyT,YAAc,IAEpB,CAoEC,OApEA3oT,EAAAojT,EAAA,EAAAnqT,IAAA,cAAA/D,MAED,SAAaszT,GAEZ,IAAM54T,EAAO6G,KAAK7G,KACZ20F,EAAS9tF,KAAK8tF,OACd2uJ,EAAO3uJ,EAAO2uJ,KAEdu1E,EAAav1E,EAAKl9E,SAAUwyJ,GAElC,IAAOC,EAAW1lO,aAAgB0lO,EAAW1lO,WAAYnzF,GAExD,OAAO,KAIR,IAAMmtM,EAAY0rH,EAAW1lO,WAAYnzF,GACnCqI,EAASi7O,EAAKh/E,OAAQ6oC,EAAU9kM,QAElCuiG,EAASjW,EAAOqkO,cACpB,GAAK3wT,EAAO4wT,IAAM,CAEjB,IAAMvb,EAAU/oN,EAAO7sF,QAAQ4uQ,QAAQH,WAAYluQ,EAAO4wT,KACzC,OAAZvb,IAAmB9yM,EAAS8yM,EAElC,CAEA,OAAO72S,KAAKqyT,gBAAgB3hR,MAAM,SAAWwhR,GAE5C,GAAKA,EAAc,OAAOpkO,EAAOmkO,iBAAkBF,EAAczrH,EAAU9kM,OAAQuiG,GAEnF,GAAK04I,EAAKsxE,oBAAsBtxE,EAAKsxE,mBAAmBvhT,QAASrT,IAAU,EAE1E,MAAM,IAAI2E,MAAO,6DAKlB,OAAOgwF,EAAOglL,YAAai/C,EAE5B,GAED,GAAC,CAAAvvT,IAAA,gBAAA/D,MAED,WAsBC,OApBOuB,KAAKkyT,cAEXlyT,KAAKkyT,YAAc,IAAI5hR,SAAS,SAAWG,GAE1C,IAAM0oG,EAAQ,IAAIm5K,MAIlBn5K,EAAMhnI,IAAM,kFAEZgnI,EAAMlnI,OAASknI,EAAMjnI,QAAU,WAE9Bu+B,EAA0B,IAAjB0oG,EAAM/qI,OAEhB,CAED,KAIMpO,KAAKkyT,WAEb,KAACvF,CAAA,CA5E4B,GAqFxBO,GAAsB,WAE3B,SAAAA,EAAap/N,GAASrjF,EAAA,KAAAyiT,GAErBltT,KAAK7G,KAAOo0T,GAAW+B,wBACvBtvT,KAAK8tF,OAASA,CAEf,CAmDC,OAnDAvkF,EAAA2jT,EAAA,EAAA1qT,IAAA,iBAAA/D,MAED,SAAgBmQ,GAEf,IAAM6tO,EAAOz8O,KAAK8tF,OAAO2uJ,KACnB81E,EAAa91E,EAAK+1E,YAAa5jT,GAErC,GAAK2jT,EAAWjmO,YAAcimO,EAAWjmO,WAAYtsF,KAAK7G,MAAS,CAElE,IAAMs5T,EAAeF,EAAWjmO,WAAYtsF,KAAK7G,MAE3CghK,EAASn6J,KAAK8tF,OAAO4kO,cAAe,SAAUD,EAAat4J,QAC3D63G,EAAUhyQ,KAAK8tF,OAAO7sF,QAAQsrT,eAEpC,IAAOv6C,IAAaA,EAAQ2gD,UAAY,CAEvC,GAAKl2E,EAAKsxE,oBAAsBtxE,EAAKsxE,mBAAmBvhT,QAASxM,KAAK7G,OAAU,EAE/E,MAAM,IAAI2E,MAAO,sFAKjB,OAAO,IAIT,CAEA,OAAOwyC,QAAQxtC,IAAK,CAAEq3J,EAAQ63G,EAAQ4gD,QAAUliR,MAAM,SAAWikB,GAEhE,IAAMk+P,EAAaJ,EAAaI,YAAc,EACxCrhD,EAAaihD,EAAajhD,YAAc,EAExC7zL,EAAQ80O,EAAa90O,MACrB8rG,EAASgpI,EAAaK,WAEtBh7T,EAAS,IAAI66D,YAAagrB,EAAQ8rG,GAClCjoL,EAAS,IAAI+zG,WAAY5gD,EAAK,GAAKk+P,EAAYrhD,GAGrD,OADAQ,EAAQ+gD,iBAAkB,IAAIx9M,WAAYz9G,GAAU6lF,EAAO8rG,EAAQjoL,EAAQixT,EAAaj+Q,KAAMi+Q,EAAa3wT,QACpGhK,CAER,GAED,CAEC,OAAO,IAIT,KAACo1T,CAAA,CA1D0B,GA+DtBI,GAAgC,OAEhC0F,GAAuC,WAAvCA,GAAwD,QAExDvF,GAAmBlkT,GAExB,SAAAkkT,EAAa/pR,GAAOj5B,EAAA,KAAAgjT,GAEnBztT,KAAK7G,KAAOo0T,GAAWC,gBACvBxtT,KAAKoc,QAAU,KACfpc,KAAKwwB,KAAO,KAEZ,IAAMyiS,EAAa,IAAIrvD,SAAUlgO,EAAM,EAXF,IAmBrC,GANA1jC,KAAKkzT,OAAS,CACbC,MAAO16C,GAAY40C,WAAY,IAAI93M,WAAY7xE,EAAK9yB,MAAO,EAAG,KAC9DvX,QAAS45T,EAAWG,UAAW,GAAG,GAClCx7T,OAAQq7T,EAAWG,UAAW,GAAG,IAG7BpzT,KAAKkzT,OAAOC,QAAU7F,GAE1B,MAAM,IAAIxvT,MAAO,qDAEX,GAAKkC,KAAKkzT,OAAO75T,QAAU,EAEjC,MAAM,IAAIyE,MAAO,kDAQlB,IAJA,IAAMu1T,EAAsBrzT,KAAKkzT,OAAOt7T,OA7BH,GA8B/B07T,EAAY,IAAI1vD,SAAUlgO,EA9BK,IA+BjC6vR,EAAa,EAETA,EAAaF,GAAsB,CAE1C,IAAMG,EAAcF,EAAUF,UAAWG,GAAY,GACrDA,GAAc,EAEd,IAAME,EAAYH,EAAUF,UAAWG,GAAY,GAGnD,GAFAA,GAAc,EAETE,IAAcT,GAAoC,CAEtD,IAAMU,EAAe,IAAIn+M,WAAY7xE,EA3CF,GA2CyC6vR,EAAYC,GACxFxzT,KAAKoc,QAAUq8P,GAAY40C,WAAYqG,EAExC,MAAO,GAAKD,IAAcT,GAAmC,CAE5D,IAAMH,EAhD6B,GAgDiBU,EACpDvzT,KAAKwwB,KAAOkT,EAAK9yB,MAAOiiT,EAAYA,EAAaW,EAElD,CAIAD,GAAcC,CAEf,CAEA,GAAsB,OAAjBxzT,KAAKoc,QAET,MAAM,IAAIte,MAAO,4CAInB,IASKuwT,GAAiC,WAEtC,SAAAA,EAAa5xE,EAAM4vE,GAElB,GAFgC5hT,EAAA,KAAA4jT,IAEzBhC,EAEN,MAAM,IAAIvuT,MAAO,uDAIlBkC,KAAK7G,KAAOo0T,GAAWa,2BACvBpuT,KAAKy8O,KAAOA,EACZz8O,KAAKqsT,YAAcA,EACnBrsT,KAAKqsT,YAAYhyO,SAElB,CA2DC,OA3DA9wE,EAAA8kT,EAAA,EAAA7rT,IAAA,kBAAA/D,MAED,SAAiByzS,EAAWpkN,GAE3B,IAAM2uJ,EAAOz8O,KAAKy8O,KACZ4vE,EAAcrsT,KAAKqsT,YACnBsH,EAAkBzhB,EAAU5lN,WAAYtsF,KAAK7G,MAAOo5T,WACpDqB,EAAmB1hB,EAAU5lN,WAAYtsF,KAAK7G,MAAO+4E,WACrD2hP,EAAoB,CAAC,EACrBC,EAAyB,CAAC,EAC1BC,EAAmB,CAAC,EAE1B,IAAM,IAAMpnS,KAAiBinS,EAAmB,CAE/C,IAAMI,EAAqBC,GAAYtnS,IAAmBA,EAAc30B,cAExE67T,EAAmBG,GAAuBJ,EAAkBjnS,EAE7D,CAEA,IAAM,IAAMA,KAAiBulR,EAAUhgO,WAAa,CAEnD,IAAM8hP,EAAqBC,GAAYtnS,IAAmBA,EAAc30B,cAExE,QAA2CoS,IAAtCwpT,EAAkBjnS,GAAgC,CAEtD,IAAMunS,EAAcz3E,EAAK03E,UAAWjiB,EAAUhgO,WAAYvlD,IACpDynS,EAAgBC,GAAuBH,EAAYE,eAEzDL,EAAkBC,GAAuBI,EACzCN,EAAwBE,IAAkD,IAA3BE,EAAYt3J,UAE5D,CAED,CAEA,OAAO9uE,EAAO4kO,cAAe,aAAciB,GAAkBjjR,MAAM,SAAW6hR,GAE7E,OAAO,IAAIjiR,SAAS,SAAWG,GAE9B47Q,EAAYiI,gBAAiB/B,GAAY,SAAWznJ,GAEnD,IAAM,IAAMn+I,KAAiBm+I,EAAS54F,WAAa,CAElD,IAAMgkF,EAAY4U,EAAS54F,WAAYvlD,GACjCiwI,EAAak3J,EAAwBnnS,QAEvBviB,IAAfwyJ,IAA2B1G,EAAU0G,WAAaA,EAExD,CAEAnsH,EAASq6H,EAEV,GAAG+oJ,EAAmBE,EAEvB,GAED,GAED,KAAC1F,CAAA,CA1EqC,GAmFjCE,GAA6B,WAElC,SAAAA,IAAc9jT,EAAA,KAAA8jT,GAEbvuT,KAAK7G,KAAOo0T,GAAWe,qBAExB,CAyCC,OAzCA/kT,EAAAglT,EAAA,EAAA/rT,IAAA,gBAAA/D,MAED,SAAe4iK,EAAS/oC,GAQvB,YAN4BluH,IAAvBkuH,EAAUi8L,UAEdxgT,QAAQk/C,KAAM,wCAA0CjzD,KAAK7G,KAAO,uCAI3CiR,IAArBkuH,EAAUvuF,aAA+C3/B,IAAvBkuH,EAAUghC,eAA8ClvJ,IAApBkuH,EAAU+e,QAOrFgqB,EAAUA,EAAQngK,aAEQkJ,IAArBkuH,EAAUvuF,QAEds3H,EAAQt3H,OAAO4vH,UAAWrhC,EAAUvuF,aAIT3/B,IAAvBkuH,EAAUghC,WAEd+H,EAAQ/H,SAAWhhC,EAAUghC,eAILlvJ,IAApBkuH,EAAU+e,OAEdgqB,EAAQn8H,OAAOy0H,UAAWrhC,EAAU+e,OAIrCgqB,EAAQ/B,aAAc,GAxBd+B,CA4BT,KAACktJ,CAAA,CA/CiC,GA8D7BiG,GAA0B,SAAA1yD,GAAA9lP,EAAAw4S,EAAA1yD,GAAA,IAAA1kH,EAAAziI,EAAA65S,GAE/B,SAAAA,EAAat6P,GAAS,IAAAyU,EAAAlkE,EAAA,KAAA+pT,IAErB7lP,EAAAyuE,EAAAvgJ,KAAA,OAEK43T,kCAAmC,EAGxC,IAAMC,EAA+B,CACpC,yBACA,mCACA,UACCr3T,KAAM,MAEFs3T,EAAiC,CACtC,2BACA,qCACA,UACCt3T,KAAM,MAEFu3T,EAA2B,CAChC,kCACA,yBACA,wDACA,oFACA,yCACA,UACCv3T,KAAM,MAEFw3T,EAA6B,CAClC,uCACA,2BACA,4DACA,kFACA,2CACA,UACCx3T,KAAM,MAEFy3T,EAA6B,CAClC,6BACA,0HACA,kFACA,+DACA,sHACA,2CACA,uDACA,4CACCz3T,KAAM,MAEF+wL,EAAW,CAChB3P,SAAU,CAAEhgL,OAAO,IAAI88J,IAAQI,OAAQ,WACvCo5J,WAAY,CAAEt2T,MAAO,GACrB2hL,YAAa,CAAE3hL,MAAO,MACtBu2T,cAAe,CAAEv2T,MAAO,OA2GA,OAxGzBkwE,EAAKsmP,eAAiB7mI,EAEtBz/G,EAAKmvG,gBAAkB,SAAWqV,GAEjC,IAAM,IAAM+hI,KAAe9mI,EAE1B+E,EAAO/E,SAAU8mI,GAAgB9mI,EAAU8mI,GAI5C/hI,EAAOtE,eAAiBsE,EAAOtE,eAC7BlzL,QAAS,2BAA4B,0BACrCA,QAAS,2BAA4B,6BACrCA,QAAS,wCAAyC+4T,GAClD/4T,QAAS,wCAAyCg5T,GAClDh5T,QAAS,mCAAoCi5T,GAC7Cj5T,QAAS,mCAAoCk5T,GAC7Cl5T,QAAS,sCAAuCm5T,EAEnD,EAEAv2T,OAAOiL,iBAAgBgS,EAAAmzD,GAAQ,CAE9B8vG,SAAU,CACT1uJ,IAAK,WAEJ,OAAOq+J,EAAS3P,SAAShgL,KAE1B,EACAwwB,IAAK,SAAW9nB,GAEfinL,EAAS3P,SAAShgL,MAAQ0I,CAE3B,GAGDi5K,YAAa,CACZrwJ,IAAK,WAEJ,OAAOq+J,EAAShO,YAAY3hL,KAE7B,EACAwwB,IAAK,SAAW9nB,GAEfinL,EAAShO,YAAY3hL,MAAQ0I,EAExBA,EAEJnH,KAAK2uL,QAAQwmI,gBAAkB,UAIxBn1T,KAAK2uL,QAAQwmI,eAItB,GAGDJ,WAAY,CACXhlS,IAAK,WAEJ,OAAOq+J,EAAS2mI,WAAWt2T,KAE5B,EACAwwB,IAAK,SAAW9nB,GAEfinL,EAAS2mI,WAAWt2T,MAAQ0I,CAE7B,GAGD6tT,cAAe,CACdjlS,IAAK,WAEJ,OAAOq+J,EAAS4mI,cAAcv2T,KAE/B,EACAwwB,IAAK,SAAW9nB,GAEfinL,EAAS4mI,cAAcv2T,MAAQ0I,EAE1BA,GAEJnH,KAAK2uL,QAAQymI,kBAAoB,GACjCp1T,KAAK2uL,QAAQ0mI,OAAS,YAIfr1T,KAAK2uL,QAAQymI,yBACbp1T,KAAK2uL,QAAQ0mI,OAItB,YAKK1mP,EAAKwvG,iBACLxvG,EAAKuvG,iBACLvvG,EAAKuxG,oBACLvxG,EAAKsxG,aAEZtxG,EAAKyzG,UAAWloH,GAASyU,CAE1B,CAgBC,OAhBAplE,EAAAirT,EAAA,EAAAhyT,IAAA,OAAA/D,MAED,SAAM+C,GAYL,OAVA0lI,GAAA5rH,EAAAk5S,EAAA53T,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKogL,YAAc5+K,EAAO4+K,YAC1BpgL,KAAKy+K,SAAS/iB,KAAMl6J,EAAOi9K,UAC3Bz+K,KAAKg1T,cAAgBxzT,EAAOwzT,cAC5Bh1T,KAAK+0T,WAAavzT,EAAOuzT,kBAClB/0T,KAAKm+K,iBACLn+K,KAAKk+K,iBACLl+K,KAAKkgL,oBACLlgL,KAAKigL,aACLjgL,IAER,KAACw0T,CAAA,CAnL8B,CAASvtG,IAwLnCknG,GAA2C,WAEhD,SAAAA,IAAc1jT,EAAA,KAAA0jT,GAEbnuT,KAAK7G,KAAOo0T,GAAWW,sCAEvBluT,KAAKs1T,yBAA2B,CAC/B,QACA,MACA,WACA,oBACA,QACA,iBACA,WACA,oBACA,cACA,UACA,YACA,YACA,gBACA,kBACA,oBACA,mBACA,cACA,WACA,gBACA,aACA,WACA,SACA,kBAGF,CAkGC,OAlGA/rT,EAAA4kT,EAAA,EAAA3rT,IAAA,kBAAA/D,MAED,WAEC,OAAO+1T,EAER,GAAC,CAAAhyT,IAAA,eAAA/D,MAED,SAAc6xT,EAAgBC,EAAaziO,GAE1C,IAAMynO,EAAwBhF,EAAYjkO,WAAYtsF,KAAK7G,MAE3Dm3T,EAAe9oR,MAAQ,IAAI+zH,GAAO,EAAK,EAAK,GAC5C+0J,EAAe97R,QAAU,EAEzB,IAAMojB,EAAU,GAEhB,GAAKj7C,MAAM0E,QAASk0T,EAAsBC,eAAkB,CAE3D,IAAMzyT,EAAQwyT,EAAsBC,cAEpClF,EAAe9oR,MAAMmyH,UAAW52J,GAChCutT,EAAe97R,QAAUzxB,EAAO,EAEjC,CAkBA,QAhB8CqH,IAAzCmrT,EAAsBE,gBAE1B79Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,MAAOiF,EAAsBE,eAAgBvmK,KAIlGohK,EAAe/xI,SAAW,IAAIhjB,GAAO,EAAK,EAAK,GAC/C+0J,EAAeyE,gBAAwD3qT,IAA3CmrT,EAAsBG,iBAAiCH,EAAsBG,iBAAmB,EAC5HpF,EAAe7xI,SAAW,IAAIljB,GAAO,EAAK,EAAK,GAE1C5+J,MAAM0E,QAASk0T,EAAsB5D,iBAEzCrB,EAAe7xI,SAAS9kB,UAAW47J,EAAsB5D,qBAIDvnT,IAApDmrT,EAAsBI,0BAA0C,CAEpE,IAAMC,EAAkBL,EAAsBI,0BAC9C/9Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,gBAAiBsF,IACrEh+Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,cAAesF,EAAiB1mK,IAErF,CAEA,OAAO5+G,QAAQxtC,IAAK80C,EAErB,GAAC,CAAAp1C,IAAA,iBAAA/D,MAED,SAAgB6xT,GAEf,IAAMz3I,EAAW,IAAI27I,GAA4BlE,GAwCjD,OAvCAz3I,EAAS8C,KAAM,EAEf9C,EAASrxI,MAAQ8oR,EAAe9oR,MAEhCqxI,EAASt8K,SAA6B6N,IAAvBkmT,EAAe/zT,IAAoB,KAAO+zT,EAAe/zT,IAExEs8K,EAASwG,SAAW,KACpBxG,EAASyG,kBAAoB,EAE7BzG,EAAS0G,WAAiCn1K,IAAzBkmT,EAAe/wI,MAAsB,KAAO+wI,EAAe/wI,MAC5E1G,EAAS2G,eAAiB,EAE1B3G,EAAS0F,SAAW+xI,EAAe/xI,SACnC1F,EAAS2F,kBAAoB,EAC7B3F,EAASsH,iBAA6C/1K,IAA/BkmT,EAAenwI,YAA4B,KAAOmwI,EAAenwI,YAExFtH,EAAS4G,aAAqCr1K,IAA3BkmT,EAAe7wI,QAAwB,KAAO6wI,EAAe7wI,QAChF5G,EAAS6G,UAAY,EAErB7G,EAAS8G,eAAyCv1K,IAA7BkmT,EAAe3wI,UAA0B,KAAO2wI,EAAe3wI,UACpF9G,EAAS+G,cAAgBvwB,GAEpBihK,EAAezwI,cAAchH,EAASgH,YAAcywI,EAAezwI,aAExEhH,EAASiH,gBAAkB,KAC3BjH,EAASkH,kBAAoB,EAC7BlH,EAASmH,iBAAmB,EAE5BnH,EAASuH,iBAA6Ch2K,IAA/BkmT,EAAelwI,YAA4B,KAAOkwI,EAAelwI,YACxFvH,EAAS4F,SAAW6xI,EAAe7xI,SAEnC5F,EAASm8I,mBAAiD5qT,IAAjCkmT,EAAe0E,cAA8B,KAAO1E,EAAe0E,cAC5Fn8I,EAASk8I,WAAazE,EAAeyE,WAErCl8I,EAASuG,SAAW,KAEpBvG,EAAS0H,YAAmCn2K,IAA1BkmT,EAAe/vI,OAAuB,KAAO+vI,EAAe/vI,OAC9E1H,EAAS4H,gBAAkB,EAEpB5H,CAER,KAACs1I,CAAA,CAlI+C,GA2I3CM,GAA6BllT,GAElC,SAAAklT,IAAchkT,EAAA,KAAAgkT,GAEbzuT,KAAK7G,KAAOo0T,GAAWiB,qBAExB,IAUKqH,GAA0B,SAAAhuD,GAAA7rP,EAAA65S,EAAAhuD,GAAA,IAAAtqH,EAAA5iI,EAAAk7S,GAE/B,SAAAA,EAAapvD,EAAoBC,EAAcC,EAAYT,GAAe,OAAAz7P,EAAA,KAAAorT,GAAAt4K,EAAA1gJ,KAAA,KAElE4pQ,EAAoBC,EAAcC,EAAYT,EAEtD,CAoBC,OApBA38P,EAAAssT,EAAA,EAAArzT,IAAA,mBAAA/D,MAED,SAAkBmQ,GAUjB,IALA,IAAM9W,EAASkI,KAAKkmQ,aACnBn5P,EAAS/M,KAAK0mQ,aACd/B,EAAY3kQ,KAAK2kQ,UACjB56N,EAASn7B,EAAQ+1P,EAAY,EAAIA,EAExBjoQ,EAAI,EAAGA,IAAMioQ,EAAWjoQ,IAEjC5E,EAAQ4E,GAAMqQ,EAAQg9B,EAASrtC,GAIhC,OAAO5E,CAER,KAAC+9T,CAAA,CA1B8B,CAASrvD,IA8BzCqvD,GAA2Bj5T,UAAU2qQ,aAAesuD,GAA2Bj5T,UAAU+qQ,iBAEzFkuD,GAA2Bj5T,UAAUyqQ,UAAYwuD,GAA2Bj5T,UAAU+qQ,iBAEtFkuD,GAA2Bj5T,UAAU8qQ,aAAe,SAAW7tF,EAAIxK,EAAI/3K,EAAGg4K,GAyBzE,IAvBA,IAAMx3K,EAASkI,KAAKkmQ,aACdn5P,EAAS/M,KAAK0mQ,aACdj9E,EAASzpL,KAAK2kQ,UAEdmxD,EAAmB,EAATrsI,EACVssI,EAAmB,EAATtsI,EAEVpoJ,EAAKiuI,EAAKD,EAEVroK,GAAM1P,EAAI+3K,GAAOhuI,EACjB0lO,EAAK//P,EAAIA,EACTiiQ,EAAMlC,EAAK//P,EAEXuiQ,EAAU1vF,EAAKk8I,EACfvsD,EAAUD,EAAUwsD,EAEpBzhK,GAAO,EAAI20G,EAAM,EAAIlC,EACrBnjG,EAAKqlG,EAAMlC,EACXp4F,EAAK,EAAIra,EACTqP,EAAKC,EAAKmjG,EAAK//P,EAIXtK,EAAI,EAAGA,IAAM+sL,EAAQ/sL,IAAO,CAErC,IAAMmwK,EAAK9/J,EAAQy8P,EAAU9sQ,EAAI+sL,GAC3BusI,EAAKjpT,EAAQy8P,EAAU9sQ,EAAIo5T,GAAYz0R,EACvCi2F,EAAKvqH,EAAQw8P,EAAU7sQ,EAAI+sL,GAC3BjiE,EAAKz6G,EAAQw8P,EAAU7sQ,GAAM2kC,EAEnCvpC,EAAQ4E,GAAMiyK,EAAK9B,EAAKlJ,EAAKqyJ,EAAK1hK,EAAKh9B,EAAKssC,EAAKp8C,CAElD,CAEA,OAAO1vH,CAER,EAEA,IAAMm+T,GAAK,IAAIlzJ,GAETmzJ,GAAoC,SAAAC,GAAAn6S,EAAAk6S,EAAAC,GAAA,IAAAl4K,EAAAtjI,EAAAu7S,GAAA,SAAAA,IAAA,OAAAzrT,EAAA,KAAAyrT,GAAAj4K,EAAAn+I,MAAA,KAAAG,UAAA,CAUxC,OAVwCsJ,EAAA2sT,EAAA,EAAA1zT,IAAA,eAAA/D,MAEzC,SAAco7K,EAAIxK,EAAI/3K,EAAGg4K,GAExB,IAAMx3K,EAAMovI,GAAA5rH,EAAA46S,EAAAt5T,WAAA,qBAAAC,KAAA,KAAuBg9K,EAAIxK,EAAI/3K,EAAGg4K,GAI9C,OAFA2mJ,GAAGt8J,UAAW7hK,GAAS+oH,YAAYt5B,QAASzvF,GAErCA,CAER,KAACo+T,CAAA,CAVwC,CAASL,IAqB7CO,GAWG,EAXHA,GAYE,EAZFA,GAaM,EAbNA,GAcO,EAdPA,GAeM,EAfNA,GAgBW,EAhBXA,GAiBS,EAKT/B,GAAwB,CAC7B,KAAMp/J,UACN,KAAM1/C,WACN,KAAMy/C,WACN,KAAMF,YACN,KAAMvtD,YACN,KAAMstD,cAGDwhK,GAAgB,CACrB,KAAM7rK,GACN,KAAMK,GACN,KAAMJ,GACN,KAAMK,GACN,KAAMH,GACN,KAAMK,IAGDsrK,GAAkB,CACvB,MAAOhsK,GACP,MAAOC,GACP,MAAOF,IAGFksK,GAAmB,CACxB,OAAU,EACV,KAAQ,EACR,KAAQ,EACR,KAAQ,EACR,KAAQ,EACR,KAAQ,EACR,KAAQ,IAGHtC,GAAa,CAClBuC,SAAU,WACVC,OAAQ,SACRC,QAAS,UACTC,WAAY,KACZC,WAAY,MACZC,QAAS,QACTC,UAAW,aACXC,SAAU,aAGLC,GAAkB,CACvB3/K,MAAO,QACP4/K,YAAa,WACb39J,SAAU,aACVo4C,QAAS,yBAGJwlH,GAAgB,CACrBC,iBAAa/sT,EAEbgtT,OAAQ7oK,GACR8oK,KAAM/oK,IAGDgpK,GACG,SADHA,GAEC,OAFDA,GAGE,QAMR,SAASC,GAAuBnuT,GAgB/B,YAdoCgB,IAA/BhB,EAAwB,kBAE5BA,EAAwB,gBAAK,IAAI69M,GAAsB,CACtDz/K,MAAO,SACP+2I,SAAU,EACVJ,UAAW,EACXD,UAAW,EACXnC,aAAa,EACbQ,WAAW,EACXV,KAAM10B,MAKD/9I,EAAwB,eAEhC,CAEA,SAASouT,GAAgCC,EAAiBt1T,EAAQu1T,GAIjE,IAAM,IAAMv+T,KAAQu+T,EAAUprO,gBAEIliF,IAA5BqtT,EAAiBt+T,KAErBgJ,EAAO88J,SAAS04J,eAAiBx1T,EAAO88J,SAAS04J,gBAAkB,CAAC,EACpEx1T,EAAO88J,SAAS04J,eAAgBx+T,GAASu+T,EAAUprO,WAAYnzF,GAMlE,CAMA,SAASy+T,GAAwBz1T,EAAQ01T,QAEhBztT,IAAnBytT,EAAQC,SAEmB,kBAAnBD,EAAQC,OAEnBv5T,OAAOmgB,OAAQvc,EAAO88J,SAAU44J,EAAQC,QAIxC/jT,QAAQk/C,KAAM,sDAAwD4kQ,EAAQC,QAMjF,CA+FA,SAASxsI,GAAoB+H,EAAM0kI,GAIlC,GAFA1kI,EAAK/H,0BAEoBlhL,IAApB2tT,EAAQrmH,QAEZ,IAAM,IAAIh1M,EAAI,EAAGowD,EAAKirQ,EAAQrmH,QAAQ95M,OAAQ8E,EAAIowD,EAAIpwD,IAErD22L,EAAK9H,sBAAuB7uL,GAAMq7T,EAAQrmH,QAASh1M,GAOrD,GAAKq7T,EAAQD,QAAUn7T,MAAM0E,QAAS02T,EAAQD,OAAOE,aAAgB,CAEpE,IAAMA,EAAcD,EAAQD,OAAOE,YAEnC,GAAK3kI,EAAK9H,sBAAsB3zL,SAAWogU,EAAYpgU,OAAS,CAE/Dy7L,EAAK7H,sBAAwB,CAAC,EAE9B,IAAM,IAAI9uL,EAAI,EAAGowD,EAAKkrQ,EAAYpgU,OAAQ8E,EAAIowD,EAAIpwD,IAEjD22L,EAAK7H,sBAAuBwsI,EAAat7T,IAAQA,CAInD,MAECqX,QAAQk/C,KAAM,uEAIhB,CAED,CAEA,SAASglQ,GAAoBC,GAE5B,IAAMC,EAAiBD,EAAa5rO,YAAc4rO,EAAa5rO,WAAYihO,GAAWa,4BAetF,OAZK+J,EAEU,SAAWA,EAAe5F,WACpC,IAAM4F,EAAehxI,QACrB,IAAMixI,GAAqBD,EAAejmP,YAIhCgmP,EAAa/wI,QAAU,IAAMixI,GAAqBF,EAAahmP,YAAe,IAAMgmP,EAAa1jR,IAMjH,CAEA,SAAS4jR,GAAqBlmP,GAM7B,IAJA,IAAImmP,EAAgB,GAEdz2T,EAAOrD,OAAOqD,KAAMswE,GAAasnB,OAE7B98F,EAAI,EAAGowD,EAAKlrD,EAAKhK,OAAQ8E,EAAIowD,EAAIpwD,IAE1C27T,GAAiBz2T,EAAMlF,GAAM,IAAMw1E,EAAYtwE,EAAMlF,IAAQ,IAI9D,OAAO27T,CAER,CAEA,SAASC,GAA6Bn+S,GAKrC,OAASA,GAER,KAAK86I,UACJ,OAAO,EAAI,IAEZ,KAAK1/C,WACJ,OAAO,EAAI,IAEZ,KAAKy/C,WACJ,OAAO,EAAI,MAEZ,KAAKF,YACJ,OAAO,EAAI,MAEZ,QACC,MAAM,IAAIh3J,MAAO,qEAIpB,CAWA,IAEM6vT,GAAU,WAEf,SAAAA,IAAuC,IAA1BlxE,EAAIx8O,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAGgB,EAAOhB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAACwK,EAAA,KAAAkjT,GAEnC3tT,KAAKy8O,KAAOA,EACZz8O,KAAKssF,WAAa,CAAC,EACnBtsF,KAAKkK,QAAU,CAAC,EAChBlK,KAAKiB,QAAUA,EAGfjB,KAAKoJ,MAAQ,IAAIulT,GAGjB3uT,KAAKu4T,aAAe,IAAIp7R,IAGxBn9B,KAAKw4T,eAAiB,CAAC,EAGvBx4T,KAAKy4T,UAAY,CAAErjR,KAAM,CAAC,EAAGm6Q,KAAM,CAAC,GACpCvvT,KAAK04T,YAAc,CAAEtjR,KAAM,CAAC,EAAGm6Q,KAAM,CAAC,GACtCvvT,KAAK24T,WAAa,CAAEvjR,KAAM,CAAC,EAAGm6Q,KAAM,CAAC,GAErCvvT,KAAK44T,YAAc,CAAC,EACpB54T,KAAK64T,aAAe,CAAC,EAGrB74T,KAAK84T,cAAgB,CAAC,EAIY,qBAAtB77C,oBAAsG,IAAjE,iCAAiC/kR,KAAMkE,UAAUC,WAEjG2D,KAAKmyT,cAAgB,IAAIt1C,GAAmB78Q,KAAKiB,QAAQ4uQ,SAIzD7vQ,KAAKmyT,cAAgB,IAAIl+C,GAAej0Q,KAAKiB,QAAQ4uQ,SAItD7vQ,KAAKmyT,cAAcv+C,eAAgB5zQ,KAAKiB,QAAQw2I,aAChDz3I,KAAKmyT,cAAc3/C,iBAAkBxyQ,KAAKiB,QAAQ+uQ,eAElDhwQ,KAAK4tT,WAAa,IAAI19C,GAAYlwQ,KAAKiB,QAAQ4uQ,SAC/C7vQ,KAAK4tT,WAAW/6C,gBAAiB,eAEC,oBAA7B7yQ,KAAKiB,QAAQw2I,aAEjBz3I,KAAK4tT,WAAWn7C,oBAAoB,EAItC,CAusDC,OAvsDAlpQ,EAAAokT,EAAA,EAAAnrT,IAAA,gBAAA/D,MAED,SAAe6tF,GAEdtsF,KAAKssF,WAAaA,CAEnB,GAAC,CAAA9pF,IAAA,aAAA/D,MAED,SAAYyL,GAEXlK,KAAKkK,QAAUA,CAEhB,GAAC,CAAA1H,IAAA,QAAA/D,MAED,SAAOu7I,EAAQ5hH,GAEd,IAAM01D,EAAS9tF,KACTy8O,EAAOz8O,KAAKy8O,KACZnwJ,EAAatsF,KAAKssF,WAGxBtsF,KAAKoJ,MAAMwlT,YAGX5uT,KAAK+4T,YAAY,SAAWC,GAE3B,OAAOA,EAAIC,WAAaD,EAAIC,WAE7B,IAEA3oR,QAAQxtC,IAAK9C,KAAK+4T,YAAY,SAAWC,GAExC,OAAOA,EAAIE,YAAcF,EAAIE,YAE9B,KAAMxoR,MAAM,WAEX,OAAOJ,QAAQxtC,IAAK,CAEnBgrF,EAAOqrO,gBAAiB,SACxBrrO,EAAOqrO,gBAAiB,aACxBrrO,EAAOqrO,gBAAiB,WAI1B,IAAIzoR,MAAM,SAAWgG,GAEpB,IAAM5+C,EAAS,CACdi6L,MAAOr7I,EAAc,GAAK+lM,EAAK1qD,OAAS,GACxCqnI,OAAQ1iR,EAAc,GACtB0/H,WAAY1/H,EAAc,GAC1BisL,QAASjsL,EAAc,GACvBg3Q,MAAOjxE,EAAKixE,MACZ5/N,OAAQA,EACRmxE,SAAU,CAAC,GAGZu4J,GAAgClrO,EAAYx0F,EAAQ2kP,GAEpDm7E,GAAwB9/T,EAAQ2kP,GAEhCnsM,QAAQxtC,IAAKgrF,EAAOirO,YAAY,SAAWC,GAE1C,OAAOA,EAAIK,WAAaL,EAAIK,UAAWvhU,EAExC,KAAM44C,MAAM,WAEXspG,EAAQliJ,EAET,GAED,IAAI64C,MAAOvY,EAEZ,GAEA,CAAA51B,IAAA,YAAA/D,MAGA,WAQC,IANA,IAAM+wT,EAAWxvT,KAAKy8O,KAAKjyI,OAAS,GAC9B8uN,EAAWt5T,KAAKy8O,KAAK88E,OAAS,GAC9BC,EAAWx5T,KAAKy8O,KAAKg9E,QAAU,GAI3Bn+E,EAAY,EAAGo+E,EAAaJ,EAAS1hU,OAAQ0jP,EAAYo+E,EAAYp+E,IAI9E,IAFA,IAAM/X,EAAS+1F,EAAUh+E,GAAY/X,OAE3B7mO,EAAI,EAAGowD,EAAKy2K,EAAO3rO,OAAQ8E,EAAIowD,EAAIpwD,IAE5C8yT,EAAUjsF,EAAQ7mO,IAAMo/O,QAAS,EAQnC,IAAM,IAAI2zE,EAAY,EAAGC,EAAaF,EAAS53T,OAAQ63T,EAAYC,EAAYD,IAAe,CAE7F,IAAME,EAAUH,EAAUC,QAEJrlT,IAAjBulT,EAAQt8H,OAEZrzL,KAAK4vT,YAAa5vT,KAAKy4T,UAAW9I,EAAQt8H,WAKpBjpL,IAAjBulT,EAAQgK,OAEZH,EAAU7J,EAAQt8H,MAAO5a,eAAgB,SAMnBruK,IAAnBulT,EAAQ/nJ,QAEZ5nK,KAAK4vT,YAAa5vT,KAAK04T,YAAa/I,EAAQ/nJ,OAI9C,CAED,GAEA,CAAAplK,IAAA,cAAA/D,MASA,SAAa2K,EAAOwF,QAEJxE,IAAVwE,SAEwBxE,IAAxBhB,EAAMgsC,KAAMxmC,KAEhBxF,EAAMgsC,KAAMxmC,GAAUxF,EAAMmmT,KAAM3gT,GAAU,GAI7CxF,EAAMgsC,KAAMxmC,KAEb,GAEA,CAAApM,IAAA,cAAA/D,MACA,SAAa2K,EAAOwF,EAAOzM,GAAS,IAAAqtE,EAAA,KAEnC,GAAKpmE,EAAMgsC,KAAMxmC,IAAW,EAAI,OAAOzM,EAEvC,IAAM4b,EAAM5b,EAAOjB,QAyBnB,OArBuB,SAAjB04T,EAAmBC,EAAU34T,GAElC,IAAM44T,EAAWtqP,EAAK+oP,aAAaxoS,IAAK8pS,GACvB,MAAZC,GAEJtqP,EAAK+oP,aAAatpS,IAAK/tB,EAAO44T,GAE9B,IAEsDr1P,EAFtDC,EAAAoG,EAE2B+uP,EAASj8S,SAASm1C,WAAS,IAAvD,IAAA2R,EAAAjpE,MAAAgpE,EAAAC,EAAA39D,KAAAkb,MAA0D,KAAA83S,EAAAr4S,EAAA+iD,EAAAhmE,MAAA,GAA5C/B,EAACq9T,EAAA,GAEdH,EAFqBG,EAAA,GAEE74T,EAAM0c,SAAUlhB,GAExC,CAAC,OAAAmc,GAAA6rD,EAAAp+D,EAAAuS,EAAA,SAAA6rD,EAAAj+D,GAAA,CAEF,CAEAmzT,CAAgBz3T,EAAQ4b,GAExBA,EAAI5kB,MAAQ,aAAiBiQ,EAAMmmT,KAAM3gT,KAElCmP,CAER,GAAC,CAAAvb,IAAA,aAAA/D,MAED,SAAYS,GAEX,IAAMotF,EAAa/tF,OAAOwO,OAAQ/M,KAAKkK,SACvCoiF,EAAWxvF,KAAMkD,MAEjB,IAAM,IAAItD,EAAI,EAAGA,EAAI4vF,EAAW10F,OAAQ8E,IAAO,CAE9C,IAAM5E,EAASoH,EAAMotF,EAAY5vF,IAEjC,GAAK5E,EAAS,OAAOA,CAEtB,CAEA,OAAO,IAER,GAAC,CAAA0K,IAAA,aAAA/D,MAED,SAAYS,GAEX,IAAMotF,EAAa/tF,OAAOwO,OAAQ/M,KAAKkK,SACvCoiF,EAAWv8E,QAAS/P,MAIpB,IAFA,IAAM43C,EAAU,GAENl7C,EAAI,EAAGA,EAAI4vF,EAAW10F,OAAQ8E,IAAO,CAE9C,IAAM5E,EAASoH,EAAMotF,EAAY5vF,IAE5B5E,GAAS8/C,EAAQ96C,KAAMhF,EAE7B,CAEA,OAAO8/C,CAER,GAEA,CAAAp1C,IAAA,gBAAA/D,MAMA,SAAemG,EAAMgK,GAEpB,IAAM4xM,EAAW57M,EAAO,IAAMgK,EAC1BkhT,EAAa9vT,KAAKoJ,MAAM2mB,IAAKywL,GAEjC,IAAOsvG,EAAa,CAEnB,OAASlrT,GAER,IAAK,QACJkrT,EAAa9vT,KAAKg6T,UAAWprT,GAC7B,MAED,IAAK,OACJkhT,EAAa9vT,KAAKi6T,SAAUrrT,GAC5B,MAED,IAAK,OACJkhT,EAAa9vT,KAAKk6T,YAAY,SAAWlB,GAExC,OAAOA,EAAImB,UAAYnB,EAAImB,SAAUvrT,EAEtC,IACA,MAED,IAAK,WACJkhT,EAAa9vT,KAAKo6T,aAAcxrT,GAChC,MAED,IAAK,aACJkhT,EAAa9vT,KAAKk6T,YAAY,SAAWlB,GAExC,OAAOA,EAAIqB,gBAAkBrB,EAAIqB,eAAgBzrT,EAElD,IACA,MAED,IAAK,SACJkhT,EAAa9vT,KAAKs6T,WAAY1rT,GAC9B,MAED,IAAK,WACJkhT,EAAa9vT,KAAKk6T,YAAY,SAAWlB,GAExC,OAAOA,EAAIuB,cAAgBvB,EAAIuB,aAAc3rT,EAE9C,IACA,MAED,IAAK,UACJkhT,EAAa9vT,KAAKk6T,YAAY,SAAWlB,GAExC,OAAOA,EAAIlmD,aAAekmD,EAAIlmD,YAAalkQ,EAE5C,IACA,MAED,IAAK,OACJkhT,EAAa9vT,KAAKw6T,SAAU5rT,GAC5B,MAED,IAAK,YACJkhT,EAAa9vT,KAAKy6T,cAAe7rT,GACjC,MAED,IAAK,SACJkhT,EAAa9vT,KAAK06T,WAAY9rT,GAC9B,MAED,QACC,MAAM,IAAI9Q,MAAO,iBAAmB8G,GAItC5E,KAAKoJ,MAAMgjB,IAAKo0L,EAAUsvG,EAE3B,CAEA,OAAOA,CAER,GAEA,CAAAttT,IAAA,kBAAA/D,MAKA,SAAiBmG,GAEhB,IAAI8xC,EAAe12C,KAAKoJ,MAAM2mB,IAAKnrB,GAEnC,IAAO8xC,EAAe,CAErB,IAAMo3C,EAAS9tF,KACT26T,EAAO36T,KAAKy8O,KAAM73O,GAAkB,SAATA,EAAkB,KAAO,OAAW,GAErE8xC,EAAepG,QAAQxtC,IAAK63T,EAAKp+T,KAAK,SAAWm4F,EAAK9lF,GAErD,OAAOk/E,EAAO4kO,cAAe9tT,EAAMgK,EAEpC,KAEA5O,KAAKoJ,MAAMgjB,IAAKxnB,EAAM8xC,EAEvB,CAEA,OAAOA,CAER,GAEA,CAAAl0C,IAAA,aAAA/D,MAKA,SAAYm8T,GAEX,IAAMC,EAAY76T,KAAKy8O,KAAK/lD,QAASkkI,GAC/B72N,EAAS/jG,KAAK4tT,WAEpB,GAAKiN,EAAUj2T,MAA2B,gBAAnBi2T,EAAUj2T,KAEhC,MAAM,IAAI9G,MAAO,qBAAuB+8T,EAAUj2T,KAAO,kCAK1D,QAAuBwF,IAAlBywT,EAAUzI,KAAqC,IAAhBwI,EAEnC,OAAOtqR,QAAQG,QAASzwC,KAAKssF,WAAYihO,GAAWC,iBAAkBh9R,MAIvE,IAAMvvB,EAAUjB,KAAKiB,QAErB,OAAO,IAAIqvC,SAAS,SAAWG,EAAS8tC,GAEvCwlB,EAAOn4B,KAAM6sM,GAAYnJ,WAAYurD,EAAUzI,IAAKnxT,EAAQi2F,MAAQzmD,OAASrmC,GAAW,WAEvFm0E,EAAQ,IAAIzgF,MAAO,4CAA8C+8T,EAAUzI,IAAM,MAElF,GAED,GAED,GAEA,CAAA5vT,IAAA,iBAAA/D,MAKA,SAAgBk1T,GAEf,IAAMmH,EAAgB96T,KAAKy8O,KAAK+1E,YAAamB,GAE7C,OAAO3zT,KAAK0yT,cAAe,SAAUoI,EAAc3gK,QAASzpH,MAAM,SAAWypH,GAE5E,IAAMq3G,EAAaspD,EAActpD,YAAc,EACzCqhD,EAAaiI,EAAcjI,YAAc,EAC/C,OAAO14J,EAAOvpJ,MAAOiiT,EAAYA,EAAarhD,EAE/C,GAED,GAEA,CAAAhvQ,IAAA,eAAA/D,MAKA,SAAcs8T,GAEb,IAAMjtO,EAAS9tF,KACTy8O,EAAOz8O,KAAKy8O,KAEZy3E,EAAcl0T,KAAKy8O,KAAK03E,UAAW4G,GAEzC,QAAgC3wT,IAA3B8pT,EAAY3B,iBAAmDnoT,IAAvB8pT,EAAY8G,OAKxD,OAAO1qR,QAAQG,QAAS,MAIzB,IAAMwqR,EAAqB,GAmB3B,YAjBgC7wT,IAA3B8pT,EAAY3B,WAEhB0I,EAAmBn+T,KAAMkD,KAAK0yT,cAAe,aAAcwB,EAAY3B,aAIvE0I,EAAmBn+T,KAAM,WAIEsN,IAAvB8pT,EAAY8G,SAEhBC,EAAmBn+T,KAAMkD,KAAK0yT,cAAe,aAAcwB,EAAY8G,OAAO7zI,QAAQorI,aACtF0I,EAAmBn+T,KAAMkD,KAAK0yT,cAAe,aAAcwB,EAAY8G,OAAOjuT,OAAOwlT,cAI/EjiR,QAAQxtC,IAAKm4T,GAAqBvqR,MAAM,SAAW8hR,GAEzD,IAWIzvT,EAAOu2Q,EAXLi5C,EAAaC,EAAa,GAE1B/vI,EAAW8zI,GAAkBrC,EAAYtvT,MACzCs2T,EAAa7G,GAAuBH,EAAYE,eAGhD+G,EAAeD,EAAW/jI,kBAC1BikI,EAAYD,EAAe14I,EAC3BowI,EAAaqB,EAAYrB,YAAc,EACvCC,OAAwC1oT,IAA3B8pT,EAAY3B,WAA2B91E,EAAK+1E,YAAa0B,EAAY3B,YAAaO,gBAAa1oT,EAC5GwyJ,GAAwC,IAA3Bs3J,EAAYt3J,WAI/B,GAAKk2J,GAAcA,IAAesI,EAAY,CAI7C,IAAMC,EAAUp+T,KAAKwf,MAAOo2S,EAAaC,GACnCwI,EAAa,qBAAuBpH,EAAY3B,WAAa,IAAM2B,EAAYE,cAAgB,IAAMiH,EAAU,IAAMnH,EAAYv2O,MACnI9rD,EAAKi8D,EAAO1kF,MAAM2mB,IAAKurS,GAEpBzpS,IAEN9uB,EAAQ,IAAIm4T,EAAY3I,EAAY8I,EAAUvI,EAAYoB,EAAYv2O,MAAQm1O,EAAaqI,GAG3FtpS,EAAK,IAAI8lN,GAAmB50O,EAAO+vT,EAAaqI,GAEhDrtO,EAAO1kF,MAAMgjB,IAAKkvS,EAAYzpS,IAI/BynP,EAAkB,IAAIrhC,GAA4BpmN,EAAI4wJ,EAAYowI,EAAaC,EAAeqI,EAAcv+J,EAE7G,MAIE75J,EAFmB,OAAfwvT,EAEI,IAAI2I,EAAYhH,EAAYv2O,MAAQ8kG,GAIpC,IAAIy4I,EAAY3I,EAAYM,EAAYqB,EAAYv2O,MAAQ8kG,GAIrE62F,EAAkB,IAAI92F,GAAiBz/K,EAAO0/K,EAAU7lB,GAKzD,QAA4BxyJ,IAAvB8pT,EAAY8G,OAAuB,CAEvC,IAAMO,EAAkBhF,GAAiBiF,OACnCC,EAAoBpH,GAAuBH,EAAY8G,OAAO7zI,QAAQitI,eAEtEsH,EAAoBxH,EAAY8G,OAAO7zI,QAAQ0rI,YAAc,EAC7D8I,EAAmBzH,EAAY8G,OAAOjuT,OAAO8lT,YAAc,EAE3D+I,EAAgB,IAAIH,EAAmBjJ,EAAa,GAAKkJ,EAAmBxH,EAAY8G,OAAOr9O,MAAQ49O,GACvGM,EAAe,IAAIX,EAAY1I,EAAa,GAAKmJ,EAAkBzH,EAAY8G,OAAOr9O,MAAQ8kG,GAEhF,OAAf8vI,IAGJj5C,EAAkB,IAAI92F,GAAiB82F,EAAgBv2Q,MAAM6N,QAAS0oQ,EAAgB72F,SAAU62F,EAAgB18G,aAIjH,IAAM,IAAIlgK,EAAI,EAAGowD,EAAK8uQ,EAAchkU,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAE1D,IAAMkS,EAAQgtT,EAAel/T,GAM7B,GAJA48Q,EAAgBwiD,KAAMltT,EAAOitT,EAAcn/T,EAAI+lL,IAC1CA,GAAY,GAAI62F,EAAgByiD,KAAMntT,EAAOitT,EAAcn/T,EAAI+lL,EAAW,IAC1EA,GAAY,GAAI62F,EAAgB0iD,KAAMptT,EAAOitT,EAAcn/T,EAAI+lL,EAAW,IAC1EA,GAAY,GAAI62F,EAAgB2iD,KAAMrtT,EAAOitT,EAAcn/T,EAAI+lL,EAAW,IAC1EA,GAAY,EAAI,MAAM,IAAI3kL,MAAO,oEAEvC,CAED,CAEA,OAAOw7Q,CAER,GAED,GAEA,CAAA92Q,IAAA,cAAA/D,MAKA,SAAaszT,GAEZ,IAAMt1E,EAAOz8O,KAAKy8O,KACZx7O,EAAUjB,KAAKiB,QAEfi7T,EADaz/E,EAAKl9E,SAAUwyJ,GACHvwT,OACzB26T,EAAY1/E,EAAKh/E,OAAQy+J,GAE3Bn4N,EAAS/jG,KAAKmyT,cAElB,GAAKgK,EAAU/J,IAAM,CAEpB,IAAMvb,EAAU51S,EAAQ4uQ,QAAQH,WAAYysD,EAAU/J,KACrC,OAAZvb,IAAmB9yM,EAAS8yM,EAElC,CAEA,OAAO72S,KAAKiyT,iBAAkBF,EAAcmK,EAAan4N,EAE1D,GAAC,CAAAvhG,IAAA,mBAAA/D,MAED,SAAkBszT,EAAcmK,EAAan4N,GAE5C,IAAMjW,EAAS9tF,KACTy8O,EAAOz8O,KAAKy8O,KAEZu1E,EAAav1E,EAAKl9E,SAAUwyJ,GAC5BoK,EAAY1/E,EAAKh/E,OAAQy+J,GAEzB17G,GAAa27G,EAAU/J,KAAO+J,EAAU5J,YAAe,IAAMP,EAAWoK,QAE9E,GAAKp8T,KAAK64T,aAAcr4G,GAGvB,OAAOxgN,KAAK64T,aAAcr4G,GAI3B,IAAMlnI,EAAUt5E,KAAKq8T,gBAAiBH,EAAan4N,GAASrzD,MAAM,SAAW2wH,GAE5EA,EAAQtC,OAAQ,EAEXizJ,EAAW74T,OAAOkoK,EAAQloK,KAAO64T,EAAW74T,MAEjD,IACMijU,GADW3/E,EAAK6/E,UAAY,CAAC,GACTtK,EAAWoK,UAAa,CAAC,EASnD,OAPA/6J,EAAQhD,UAAYg4J,GAAe+F,EAAQ/9J,YAAexT,GAC1DwW,EAAQ/C,UAAY+3J,GAAe+F,EAAQ99J,YAAetT,GAC1DqW,EAAQlD,MAAQm4J,GAAiB8F,EAAQj+J,QAAW9T,GACpDgX,EAAQjD,MAAQk4J,GAAiB8F,EAAQh+J,QAAW/T,GAEpDv8D,EAAOyqO,aAAatpS,IAAKoyI,EAAS,CAAE9B,SAAUwyJ,IAEvC1wJ,CAER,IAAI1wH,OAAO,WAEV,OAAO,IAER,IAIA,OAFA3wC,KAAK64T,aAAcr4G,GAAalnI,EAEzBA,CAER,GAAC,CAAA92E,IAAA,kBAAA/D,MAED,SAAiBy9T,EAAan4N,GAE7B,IACM04I,EAAOz8O,KAAKy8O,KACZx7O,EAAUjB,KAAKiB,QAErB,QAAyCmJ,IAApCpK,KAAK44T,YAAasD,GAEtB,OAAOl8T,KAAK44T,YAAasD,GAAcxrR,MAAM,SAAE2wH,GAAO,OAAMA,EAAQngK,OAAO,IAI5E,IAAMi7T,EAAY1/E,EAAKh/E,OAAQy+J,GAEzB9iP,EAAMjkE,KAAKikE,KAAOjkE,KAAKonT,UAEzBC,EAAYL,EAAU/J,KAAO,GAC7BqK,GAAc,EAElB,QAA8BryT,IAAzB+xT,EAAU5J,WAIdiK,EArBcx8T,KAqBK0yT,cAAe,aAAcyJ,EAAU5J,YAAa7hR,MAAM,SAAW6hR,GAEvFkK,GAAc,EACd,IAAM5qD,EAAO,IAAI6qD,KAAM,CAAEnK,GAAc,CAAE3tT,KAAMu3T,EAAUxrD,WAEzD,OADA6rD,EAAYpjP,EAAIC,gBAAiBw4L,EAGlC,SAEM,QAAuBznQ,IAAlB+xT,EAAU/J,IAErB,MAAM,IAAIt0T,MAAO,2BAA6Bo+T,EAAc,kCAI7D,IAAM5iP,EAAUhpC,QAAQG,QAAS+rR,GAAY9rR,MAAM,SAAW8rR,GAE7D,OAAO,IAAIlsR,SAAS,SAAWG,EAAS8tC,GAEvC,IAAIy7D,EAASvpG,GAEuB,IAA/BszD,EAAOs5K,sBAEXrjI,EAAS,SAAWojI,GAEnB,IAAM/7G,EAAU,IAAItD,GAASq/G,GAC7B/7G,EAAQ/B,aAAc,EAEtB7uH,EAAS4wH,EAEV,GAIDt9D,EAAOn4B,KAAM6sM,GAAYnJ,WAAYktD,EAAWv7T,EAAQi2F,MAAQ8iD,OAAQ5vI,EAAWm0E,EAEpF,GAED,IAAI7tC,MAAM,SAAW2wH,GAntBvB,IAA8B+wJ,EA+tB3B,OARqB,IAAhBqK,GAEJrjP,EAAIujP,gBAAiBH,GAItBn7J,EAAQpC,SAAS0xG,SAAWwrD,EAAUxrD,YA7tBXyhD,EA6tB4C+J,EAAU/J,KA3tB1ErqR,OAAQ,kBAAqB,GAA4C,IAAvCqqR,EAAIrqR,OAAQ,sBAAsC,aACxFqqR,EAAIrqR,OAAQ,iBAAoB,GAA4C,IAAvCqqR,EAAIrqR,OAAQ,sBAAsC,aAErF,aA0tBEs5H,CAER,IAAI1wH,OAAO,SAAWpvB,GAGrB,MADAxN,QAAQwN,MAAO,0CAA4Ci7S,GACrDj7S,CAEP,IAGA,OADAvhB,KAAK44T,YAAasD,GAAgB5iP,EAC3BA,CAER,GAEA,CAAA92E,IAAA,gBAAA/D,MAOA,SAAe6xT,EAAgBsM,EAASC,EAAQp+J,GAE/C,IAAM3wE,EAAS9tF,KAEf,OAAOA,KAAK0yT,cAAe,UAAWmK,EAAOjuT,OAAQ8hC,MAAM,SAAW2wH,GAUrE,QANyBj3J,IAApByyT,EAAOtI,UAA6C,GAAnBsI,EAAOtI,UAAiC,UAAZqI,GAA0C,GAAnBC,EAAOtI,UAE/FxgT,QAAQk/C,KAAM,mCAAqC4pQ,EAAOtI,SAAW,gBAAkBqI,EAAU,uBAI7F9uO,EAAOxB,WAAYihO,GAAWe,uBAA0B,CAE5D,IAAMh2L,OAAkCluH,IAAtByyT,EAAOvwO,WAA2BuwO,EAAOvwO,WAAYihO,GAAWe,4BAA0BlkT,EAE5G,GAAKkuH,EAAY,CAEhB,IAAMwkM,EAAgBhvO,EAAOyqO,aAAaxoS,IAAKsxI,GAC/CA,EAAUvzE,EAAOxB,WAAYihO,GAAWe,uBAAwByO,cAAe17J,EAAS/oC,GACxFxqC,EAAOyqO,aAAatpS,IAAKoyI,EAASy7J,EAEnC,CAED,CAUA,YARkB1yT,IAAbq0J,IAEJ4C,EAAQ5C,SAAWA,GAIpB6xJ,EAAgBsM,GAAYv7J,EAErBA,CAER,GAED,GAEA,CAAA7+J,IAAA,sBAAA/D,MAQA,SAAqB40L,GAEpB,IAAMvoB,EAAWuoB,EAAKvoB,SAClB+N,EAAWwa,EAAKxa,SAEdmkJ,OAAwD5yT,IAAhC0gK,EAAS54F,WAAWm0G,QAC5C42I,OAAgD7yT,IAA9B0gK,EAAS54F,WAAW1qC,MACtC01R,OAAgD9yT,IAA/B0gK,EAAS54F,WAAW62F,OAE3C,GAAKsqB,EAAK9a,SAAW,CAEpB,IAAMioC,EAAW,kBAAoB3nC,EAASh9D,KAE1CshN,EAAiBn9T,KAAKoJ,MAAM2mB,IAAKywL,GAE9B28G,IAENA,EAAiB,IAAI71G,GACrB/rC,GAAS3+K,UAAU8+J,KAAK7+J,KAAMsgU,EAAgBtkJ,GAC9CskJ,EAAe31R,MAAMk0H,KAAMmd,EAASrxI,OACpC21R,EAAe5gU,IAAMs8K,EAASt8K,IAC9B4gU,EAAeh8I,iBAAkB,EAEjCnhL,KAAKoJ,MAAMgjB,IAAKo0L,EAAU28G,IAI3BtkJ,EAAWskJ,CAEZ,MAAO,GAAK9pI,EAAK/a,OAAS,CAEzB,IAAMkoC,EAAW,qBAAuB3nC,EAASh9D,KAE7CuhN,EAAep9T,KAAKoJ,MAAM2mB,IAAKywL,GAE5B48G,IAENA,EAAe,IAAIh2G,GACnB7rC,GAAS3+K,UAAU8+J,KAAK7+J,KAAMugU,EAAcvkJ,GAC5CukJ,EAAa51R,MAAMk0H,KAAMmd,EAASrxI,OAElCxnC,KAAKoJ,MAAMgjB,IAAKo0L,EAAU48G,IAI3BvkJ,EAAWukJ,CAEZ,CAGA,GAAKJ,GAAyBC,GAAmBC,EAAiB,CAEjE,IAAI18G,EAAW,kBAAoB3nC,EAASh9D,KAAO,IAE9Cg9D,EAAS47I,mCAAmCj0G,GAAY,wBACxDw8G,IAAwBx8G,GAAY,wBACpCy8G,IAAkBz8G,GAAY,kBAC9B08G,IAAiB18G,GAAY,iBAElC,IAAIkQ,EAAiB1wN,KAAKoJ,MAAM2mB,IAAKywL,GAE9BkQ,IAENA,EAAiB73C,EAAS33K,QAErB+7T,IAAkBvsG,EAAe50C,cAAe,GAChDohJ,IAAiBxsG,EAAezyC,aAAc,GAE9C++I,IAGCtsG,EAAe7wC,cAAc6wC,EAAe7wC,YAAYx4K,IAAO,GAC/DqpN,EAAexxC,uBAAuBwxC,EAAexxC,qBAAqB73K,IAAO,IAIvFrH,KAAKoJ,MAAMgjB,IAAKo0L,EAAUkQ,GAE1B1wN,KAAKu4T,aAAatpS,IAAKyhM,EAAgB1wN,KAAKu4T,aAAaxoS,IAAK8oJ,KAI/DA,EAAW63C,CAEZ,CAIK73C,EAAS0G,YAAqCn1K,IAA5B0gK,EAAS54F,WAAWioG,UAAgD/vK,IAA3B0gK,EAAS54F,WAAWutF,IAEnFqL,EAASh4J,aAAc,MAAOg4J,EAAS54F,WAAWutF,IAInD4zB,EAAKxa,SAAWA,CAEjB,GAAC,CAAAr2K,IAAA,kBAAA/D,MAED,WAEC,OAAOwoN,EAER,GAEA,CAAAzkN,IAAA,eAAA/D,MAKA,SAAc0nL,GAEb,IAKIk3I,EALEvvO,EAAS9tF,KACTy8O,EAAOz8O,KAAKy8O,KACZnwJ,EAAatsF,KAAKssF,WAClBikO,EAAc9zE,EAAK9kE,UAAWwO,GAG9BmqI,EAAiB,CAAC,EAClBgN,EAAqB/M,EAAYjkO,YAAc,CAAC,EAEhD10C,EAAU,GAEhB,GAAK0lR,EAAoB/P,GAAWW,uCAA0C,CAE7E,IAAMqP,EAAcjxO,EAAYihO,GAAWW,uCAC3CmP,EAAeE,EAAYC,kBAC3B5lR,EAAQ96C,KAAMygU,EAAYE,aAAcnN,EAAgBC,EAAaziO,GAEtE,MAAO,GAAKwvO,EAAoB/P,GAAWS,qBAAwB,CAElE,IAAM0P,EAAepxO,EAAYihO,GAAWS,qBAC5CqP,EAAeK,EAAaF,kBAC5B5lR,EAAQ96C,KAAM4gU,EAAaD,aAAcnN,EAAgBC,EAAaziO,GAEvE,KAAO,CAKN,IAAM0iO,EAAoBD,EAAYE,sBAAwB,CAAC,EAK/D,GAHAH,EAAe9oR,MAAQ,IAAI+zH,GAAO,EAAK,EAAK,GAC5C+0J,EAAe97R,QAAU,EAEpB73B,MAAM0E,QAASmvT,EAAkBE,iBAAoB,CAEzD,IAAM3tT,EAAQytT,EAAkBE,gBAEhCJ,EAAe9oR,MAAMmyH,UAAW52J,GAChCutT,EAAe97R,QAAUzxB,EAAO,EAEjC,MAE4CqH,IAAvComT,EAAkBG,kBAEtB/4Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,MAAOE,EAAkBG,iBAAkBzhK,KAIhGohK,EAAenyI,eAAiD/zK,IAArComT,EAAkBmN,eAA+BnN,EAAkBmN,eAAiB,EAC/GrN,EAAepyI,eAAkD9zK,IAAtComT,EAAkBoN,gBAAgCpN,EAAkBoN,gBAAkB,OAE7DxzT,IAA/ComT,EAAkBqN,2BAEtBjmR,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,eAAgBE,EAAkBqN,2BACtFjmR,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,eAAgBE,EAAkBqN,4BAIvFR,EAAer9T,KAAKk6T,YAAY,SAAWlB,GAE1C,OAAOA,EAAIwE,iBAAmBxE,EAAIwE,gBAAiBr3I,EAEpD,IAEAvuI,EAAQ96C,KAAMwzC,QAAQxtC,IAAK9C,KAAK+4T,YAAY,SAAWC,GAEtD,OAAOA,EAAI8E,sBAAwB9E,EAAI8E,qBAAsB33I,EAAemqI,EAE7E,KAED,EAEiC,IAA5BC,EAAY5sG,cAEhB2sG,EAAez0I,KAAOx0B,IAIvB,IAAM02K,EAAYxN,EAAYwN,WAAazG,GAqB3C,GAnBKyG,IAAczG,IAElBhH,EAAev0I,aAAc,EAG7Bu0I,EAAe9zI,YAAa,IAI5B8zI,EAAev0I,aAAc,EAExBgiJ,IAAczG,KAElBhH,EAAe/uI,eAAwCn3K,IAA5BmmT,EAAYyN,YAA4BzN,EAAYyN,YAAc,UAM5D5zT,IAA9BmmT,EAAY0N,eAA+BZ,IAAiBr7I,KAEhEpqI,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,YAAaC,EAAY0N,gBAE7E3N,EAAezwI,YAAc,IAAI1qB,GAAS,EAAG,QAEJ/qJ,IAApCmmT,EAAY0N,cAAc5mL,OAAsB,CAEpD,IAAMA,EAAQk5K,EAAY0N,cAAc5mL,MAExCi5K,EAAezwI,YAAY5wJ,IAAKooH,EAAOA,EAExC,CA4BD,YAxBsCjtI,IAAjCmmT,EAAY2N,kBAAkCb,IAAiBr7I,KAEnEpqI,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,QAASC,EAAY2N,wBAE1B9zT,IAA1CmmT,EAAY2N,iBAAiBC,WAEjC7N,EAAe9wI,eAAiB+wI,EAAY2N,iBAAiBC,gBAM3B/zT,IAA/BmmT,EAAY6N,gBAAgCf,IAAiBr7I,KAEjEsuI,EAAe/xI,UAAW,IAAIhjB,IAAQ5B,UAAW42J,EAAY6N,sBAIzBh0T,IAAhCmmT,EAAY8N,iBAAiChB,IAAiBr7I,IAElEpqI,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,cAAeC,EAAY8N,gBAAiBnvK,KAI1F5+G,QAAQxtC,IAAK80C,GAAUlH,MAAM,WAEnC,IAAImoI,EAoBJ,OAhBCA,EAFIwkJ,IAAiB7I,GAEVloO,EAAYihO,GAAWW,uCAAwCoQ,eAAgBhO,GAI/E,IAAI+M,EAAc/M,GAIzBC,EAAYp3T,OAAO0/K,EAAS1/K,KAAOo3T,EAAYp3T,MAEpDy+T,GAAwB/+I,EAAU03I,GAElCziO,EAAOyqO,aAAatpS,IAAK4pJ,EAAU,CAAElB,UAAWwO,IAE3CoqI,EAAYjkO,YAAakrO,GAAgClrO,EAAYusF,EAAU03I,GAE7E13I,CAER,GAED,GAEA,CAAAr2K,IAAA,mBAAA/D,MACA,SAAkB8/T,GAMjB,IAJA,IAAMC,EAAgBj3C,GAAgBk3C,iBAAkBF,GAAgB,IAEpEplU,EAAOqlU,EAED9hU,EAAI,EAAGsD,KAAK84T,cAAe3/T,KAAWuD,EAE/CvD,EAAOqlU,EAAgB,IAAM9hU,EAM9B,OAFAsD,KAAK84T,cAAe3/T,IAAS,EAEtBA,CAER,GAEA,CAAAqJ,IAAA,iBAAA/D,MAQA,SAAgBigU,GAEf,IAAM5wO,EAAS9tF,KACTssF,EAAatsF,KAAKssF,WAClBljF,EAAQpJ,KAAKw4T,eAEnB,SAASmG,EAAsBzsB,GAE9B,OAAO5lN,EAAYihO,GAAWa,4BAC5BwQ,gBAAiB1sB,EAAWpkN,GAC5Bp9C,MAAM,SAAWo6H,GAEjB,OAAO+zJ,GAAwB/zJ,EAAUonI,EAAWpkN,EAErD,GAEF,CAIA,IAFA,IAAMl2C,EAAU,GAENl7C,EAAI,EAAGowD,EAAK4xQ,EAAW9mU,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvD,IAAMw1S,EAAYwsB,EAAYhiU,GACxB8jN,EAAWy3G,GAAoB/lB,GAG/Br7G,EAASztL,EAAOo3M,GAEtB,GAAK3pB,EAGJj/I,EAAQ96C,KAAM+5L,EAAOv9G,aAEf,CAEN,IAAIwlP,OAAe,EAKlBA,EAHI5sB,EAAU5lN,YAAc4lN,EAAU5lN,WAAYihO,GAAWa,4BAG3CuQ,EAAsBzsB,GAKtB2sB,GAAwB,IAAIn5I,GAAkBwsH,EAAWpkN,GAK5E1kF,EAAOo3M,GAAa,CAAE0xF,UAAWA,EAAW54N,QAASwlP,GAErDlnR,EAAQ96C,KAAMgiU,EAEf,CAED,CAEA,OAAOxuR,QAAQxtC,IAAK80C,EAErB,GAEA,CAAAp1C,IAAA,WAAA/D,MAKA,SAAUsgU,GAWT,IATA,IAAMjxO,EAAS9tF,KACTy8O,EAAOz8O,KAAKy8O,KACZnwJ,EAAatsF,KAAKssF,WAElByrO,EAAUt7E,EAAKg9E,OAAQsF,GACvBL,EAAa3G,EAAQ2G,WAErB9mR,EAAU,GAENl7C,EAAI,EAAGowD,EAAK4xQ,EAAW9mU,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvD,IAAMm8K,OAAwCzuK,IAA7Bs0T,EAAYhiU,GAAIm8K,SAC9B0+I,GAAuBv3T,KAAKoJ,OAC5BpJ,KAAK0yT,cAAe,WAAYgM,EAAYhiU,GAAIm8K,UAEnDjhI,EAAQ96C,KAAM+7K,EAEf,CAIA,OAFAjhI,EAAQ96C,KAAMgxF,EAAOkxO,eAAgBN,IAE9BpuR,QAAQxtC,IAAK80C,GAAUlH,MAAM,SAAWg5O,GAO9C,IALA,IAAM/xG,EAAY+xG,EAAQ94Q,MAAO,EAAG84Q,EAAQ9xR,OAAS,GAC/C8/K,EAAagyG,EAASA,EAAQ9xR,OAAS,GAEvC6hU,EAAS,GAEL/8T,EAAI,EAAGowD,EAAK4qH,EAAW9/K,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvD,IAAMouK,EAAW4M,EAAYh7K,GACvBw1S,EAAYwsB,EAAYhiU,GAI1B22L,OAAI,EAEFxa,EAAWlB,EAAWj7K,GAE5B,GAAKw1S,EAAU19P,OAAS4hR,IACtBlkB,EAAU19P,OAAS4hR,IACnBlkB,EAAU19P,OAAS4hR,SACAhsT,IAAnB8nS,EAAU19P,MAOiB,KAJ5B6+I,GAAiC,IAA1B0kI,EAAQt/I,cACZ,IAAIoiE,GAAa/vE,EAAU+N,GAC3B,IAAIqS,GAAMpgB,EAAU+N,IAEbJ,eAA4B4a,EAAKvoB,SAAS54F,WAAWipK,WAAWv+E,YAIzEy2B,EAAK4rI,uBAID/sB,EAAU19P,OAAS4hR,GAEvB/iI,EAAKvoB,SAAWo0J,GAAqB7rI,EAAKvoB,SAAU/b,IAEzCmjJ,EAAU19P,OAAS4hR,KAE9B/iI,EAAKvoB,SAAWo0J,GAAqB7rI,EAAKvoB,SAAU9b,UAI/C,GAAKkjJ,EAAU19P,OAAS4hR,GAE9B/iI,EAAO,IAAI8rD,GAAcr0E,EAAU+N,QAE7B,GAAKq5H,EAAU19P,OAAS4hR,GAE9B/iI,EAAO,IAAI+qD,GAAMtzE,EAAU+N,QAErB,GAAKq5H,EAAU19P,OAAS4hR,GAE9B/iI,EAAO,IAAIksD,GAAUz0E,EAAU+N,OAEzB,IAAKq5H,EAAU19P,OAAS4hR,GAM9B,MAAM,IAAIt4T,MAAO,iDAAmDo0S,EAAU19P,MAJ9E6+I,EAAO,IAAI6sD,GAAQp1E,EAAU+N,EAM9B,CAEKt6K,OAAOqD,KAAMyxL,EAAKvoB,SAASgb,iBAAkBluL,OAAS,GAE1D0zL,GAAoB+H,EAAM0kI,GAI3B1kI,EAAKl6L,KAAO20F,EAAOqiO,iBAAkB4H,EAAQ5+T,MAAU,QAAU4lU,GAEjEnH,GAAwBvkI,EAAM0kI,GAEzB7lB,EAAU5lN,YAAakrO,GAAgClrO,EAAY+mG,EAAM6+G,GAE9EpkN,EAAOqxO,oBAAqB9rI,GAE5BomI,EAAO38T,KAAMu2L,EAEd,CAEA,IAAM,IAAI32L,EAAI,EAAGowD,EAAK2sQ,EAAO7hU,OAAQ8E,EAAIowD,EAAIpwD,IAE5CoxF,EAAOyqO,aAAatpS,IAAKwqS,EAAQ/8T,GAAK,CACrC+8T,OAAQsF,EACRL,WAAYhiU,IAKd,GAAuB,IAAlB+8T,EAAO7hU,OAEX,OAAO6hU,EAAQ,GAIhB,IAAMhyN,EAAQ,IAAIo7H,GAElB/0I,EAAOyqO,aAAatpS,IAAKw4E,EAAO,CAAEgyN,OAAQsF,IAE1C,IAAM,IAAIriU,EAAI,EAAGowD,EAAK2sQ,EAAO7hU,OAAQ8E,EAAIowD,EAAIpwD,IAE5C+qG,EAAMr7E,IAAKqtS,EAAQ/8T,IAIpB,OAAO+qG,CAER,GAED,GAEA,CAAAjlG,IAAA,aAAA/D,MAKA,SAAY2gU,GAEX,IAAIx3J,EACEy3J,EAAYr/T,KAAKy8O,KAAK9Z,QAASy8F,GAC/BllQ,EAASmlQ,EAAWA,EAAUz6T,MAEpC,GAAOs1D,EAqBP,MAdwB,gBAAnBmlQ,EAAUz6T,KAEdgjK,EAAS,IAAIioB,GAAmBp9B,GAAUuB,SAAU95F,EAAOolQ,MAAQplQ,EAAOlnC,aAAe,EAAGknC,EAAOqlQ,OAAS,EAAGrlQ,EAAOslQ,MAAQ,KAEhG,iBAAnBH,EAAUz6T,OAErBgjK,EAAS,IAAIgmC,IAAsB1zI,EAAOulQ,KAAMvlQ,EAAOulQ,KAAMvlQ,EAAOwlQ,MAAQxlQ,EAAOwlQ,KAAMxlQ,EAAOqlQ,MAAOrlQ,EAAOslQ,OAI1GH,EAAUlmU,OAAOyuK,EAAOzuK,KAAO6G,KAAKmwT,iBAAkBkP,EAAUlmU,OAErEy+T,GAAwBhwJ,EAAQy3J,GAEzB/uR,QAAQG,QAASm3H,GAnBvB7zJ,QAAQk/C,KAAM,+CAqBhB,GAEA,CAAAzwD,IAAA,WAAA/D,MAKA,SAAU68O,GAET,IAAMqkF,EAAU3/T,KAAKy8O,KAAK88E,MAAOj+E,GAE3BskF,EAAY,CAAEr8F,OAAQo8F,EAAQp8F,QAEpC,YAAqCn5N,IAAhCu1T,EAAQE,oBAELvvR,QAAQG,QAASmvR,GAIlB5/T,KAAK0yT,cAAe,WAAYiN,EAAQE,qBAAsBnvR,MAAM,SAAWovR,GAIrF,OAFAF,EAAUC,oBAAsBC,EAEzBF,CAER,GAED,GAEA,CAAAp9T,IAAA,gBAAA/D,MAKA,SAAeshU,GAYd,IAVA,IAEMC,EAFOhgU,KAAKy8O,KAEQrmE,WAAY2pJ,GAEhCE,EAAe,GACfC,EAAwB,GACxBC,EAAyB,GACzBC,EAAkB,GAClBC,EAAiB,GAEb3jU,EAAI,EAAGowD,EAAKkzQ,EAAaM,SAAS1oU,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAElE,IAAMg4K,EAAUsrJ,EAAaM,SAAU5jU,GACjC0/T,EAAU4D,EAAa1D,SAAU5nJ,EAAQ0nJ,SACzC76T,EAASmzK,EAAQnzK,OACjBpI,OAAuBiR,IAAhB7I,EAAOkY,KAAqBlY,EAAOkY,KAAOlY,EAAO69B,GACxDhpB,OAAoChM,IAA5B41T,EAAaxnJ,WAA2BwnJ,EAAaxnJ,WAAY4jJ,EAAQhmT,OAAUgmT,EAAQhmT,MACnGyoE,OAAqCz0E,IAA5B41T,EAAaxnJ,WAA2BwnJ,EAAaxnJ,WAAY4jJ,EAAQv9O,QAAWu9O,EAAQv9O,OAE3GohP,EAAanjU,KAAMkD,KAAK0yT,cAAe,OAAQv5T,IAC/C+mU,EAAsBpjU,KAAMkD,KAAK0yT,cAAe,WAAYt8S,IAC5D+pT,EAAuBrjU,KAAMkD,KAAK0yT,cAAe,WAAY7zO,IAC7DuhP,EAAgBtjU,KAAMs/T,GACtBiE,EAAevjU,KAAMyE,EAEtB,CAEA,OAAO+uC,QAAQxtC,IAAK,CAEnBwtC,QAAQxtC,IAAKm9T,GACb3vR,QAAQxtC,IAAKo9T,GACb5vR,QAAQxtC,IAAKq9T,GACb7vR,QAAQxtC,IAAKs9T,GACb9vR,QAAQxtC,IAAKu9T,KAEV3vR,MAAM,SAAWgG,GAUpB,IARA,IAAM8zD,EAAQ9zD,EAAc,GACtB6pR,EAAiB7pR,EAAc,GAC/B8pR,EAAkB9pR,EAAc,GAChC4lR,EAAW5lR,EAAc,GACzB+pR,EAAU/pR,EAAc,GAExB8jC,EAAS,GAAGzP,EAAA,SAERruE,EAAOowD,GAEhB,IAAMrzC,EAAO+wF,EAAO9tG,GACdgkU,EAAgBH,EAAgB7jU,GAChCikU,EAAiBH,EAAiB9jU,GAClC0/T,EAAUE,EAAU5/T,GACpB6E,EAASk/T,EAAS/jU,GAExB,QAAc0N,IAATqP,EAAqB,iBAE1BA,EAAK48J,eACL58J,EAAKmlJ,kBAAmB,EAExB,IAAI2sG,OAAkB,EAEtB,OAASyrD,GAAiBz1T,EAAO21F,OAEhC,KAAK8/N,GAAgBtlH,QAEpB65D,EAAqBQ,GACrB,MAED,KAAKirD,GAAgB19J,SAEpBiyG,EAAqBe,GACrB,MAID,QAECf,EAAqBqB,GAKvB,IAAMg0D,EAAannT,EAAKtgB,KAAOsgB,EAAKtgB,KAAOsgB,EAAKoiG,KAE1CkuJ,OAA0C3/P,IAA1BgyT,EAAQryD,cAA8BmtD,GAAekF,EAAQryD,eAAkBx7G,GAE/FypK,EAAc,GAEfhB,GAAiBz1T,EAAO21F,QAAW8/N,GAAgBtlH,QAEvDj4L,EAAK09J,UAAU,SAAWh1K,GAEpBA,EAAOopL,uBAEXysI,EAAYl7T,KAAMqF,EAAOhJ,KAAOgJ,EAAOhJ,KAAOgJ,EAAO05G,KAIvD,IAIAm8M,EAAYl7T,KAAM8jU,GAInB,IAAIC,EAAcF,EAAe59T,MAEjC,GAAK49T,EAAe/jK,WAAa,CAKhC,IAHA,IAAMvlB,EAAQihL,GAA6BuI,EAAY1mT,aACjD2mT,EAAS,IAAIjsK,aAAcgsK,EAAYjpU,QAEnCiY,EAAI,EAAGq3K,EAAK25I,EAAYjpU,OAAQiY,EAAIq3K,EAAIr3K,IAEjDixT,EAAQjxT,GAAMgxT,EAAahxT,GAAMwnI,EAIlCwpL,EAAcC,CAEf,CAEA,IAAM,IAAIjxT,EAAI,EAAGq3K,EAAK8wI,EAAYpgU,OAAQiY,EAAIq3K,EAAIr3K,IAAO,CAExD,IAAM2mB,EAAQ,IAAI+0O,EACjBysD,EAAanoT,GAAM,IAAMmnT,GAAiBz1T,EAAO21F,MACjDwpO,EAAc39T,MACd89T,EACA92D,GAI8B,gBAA1BqyD,EAAQryD,gBAEZvzO,EAAMmvO,kBAAoB,SAAkD7tQ,GAQ3E,OAAO,IAFmBkI,gBAAgBssQ,GAA4B4pD,GAAuCL,IAEjF71T,KAAK8jQ,MAAO9jQ,KAAK+M,OAAQ/M,KAAK4kQ,eAAiB,EAAG9sQ,EAE/E,EAGA0+B,EAAMmvO,kBAAkBC,2CAA4C,GAIrEprL,EAAO19E,KAAM05B,EAEd,CAAC,EA5GQ95B,EAAI,EAAGowD,EAAK09C,EAAM5yG,OAAQ8E,EAAIowD,EAAIpwD,IAAOquE,EAAzCruE,GAgHV,IAAMvD,EAAO6mU,EAAa7mU,KAAO6mU,EAAa7mU,KAAO,aAAe4mU,EAEpE,OAAO,IAAIhzD,GAAe5zQ,OAAMiR,EAAWowE,EAE5C,GAED,GAAC,CAAAh4E,IAAA,iBAAA/D,MAED,SAAgBgxT,GAEf,IAAMhzE,EAAOz8O,KAAKy8O,KACZ3uJ,EAAS9tF,KACT2vT,EAAUlzE,EAAKjyI,MAAOilN,GAE5B,YAAsBrlT,IAAjBulT,EAAQt8H,KAA4B,KAElCvlG,EAAO4kO,cAAe,OAAQ/C,EAAQt8H,MAAO3iJ,MAAM,SAAW2iJ,GAEpE,IAAM55K,EAAOq0E,EAAOuiO,YAAaviO,EAAO2qO,UAAW9I,EAAQt8H,KAAMA,GAmBjE,YAhByBjpL,IAApBulT,EAAQj+G,SAEZj4L,EAAK09J,UAAU,SAAW38J,GAEzB,GAAOA,EAAE69J,OAET,IAAM,IAAI37K,EAAI,EAAGowD,EAAK6iQ,EAAQj+G,QAAQ95M,OAAQ8E,EAAIowD,EAAIpwD,IAErD8d,EAAE+wK,sBAAuB7uL,GAAMizT,EAAQj+G,QAASh1M,EAIlD,IAIM+c,CAER,GAED,GAEA,CAAAjX,IAAA,WAAA/D,MAKA,SAAUgxT,GAET,IAAMhzE,EAAOz8O,KAAKy8O,KACZnwJ,EAAatsF,KAAKssF,WAClBwB,EAAS9tF,KAET2vT,EAAUlzE,EAAKjyI,MAAOilN,GAGtB7/R,EAAW+/R,EAAQx2T,KAAO20F,EAAOqiO,iBAAkBR,EAAQx2T,MAAS,GAE1E,OAAS,WAER,IAAMy+C,EAAU,GAEVmpR,EAAcjzO,EAAOosO,YAAY,SAAWlB,GAEjD,OAAOA,EAAIgI,gBAAkBhI,EAAIgI,eAAgBvR,EAElD,IA4BA,OA1BKsR,GAEJnpR,EAAQ96C,KAAMikU,QAIS32T,IAAnBulT,EAAQ/nJ,QAEZhwH,EAAQ96C,KAAMgxF,EAAO4kO,cAAe,SAAU/C,EAAQ/nJ,QAASl3H,MAAM,SAAWk3H,GAE/E,OAAO95E,EAAOuiO,YAAaviO,EAAO4qO,YAAa/I,EAAQ/nJ,OAAQA,EAEhE,KAID95E,EAAOirO,YAAY,SAAWC,GAE7B,OAAOA,EAAIiI,sBAAwBjI,EAAIiI,qBAAsBxR,EAE9D,IAAIltT,SAAS,SAAW+2E,GAEvB1hC,EAAQ96C,KAAMw8E,EAEf,IAEOhpC,QAAQxtC,IAAK80C,EAErB,CAtCS,GAsCHlH,MAAM,SAAWg0J,GAEtB,IAAIjrL,EAqBJ,IAhBCA,GAFuB,IAAnBk2S,EAAQ7zE,OAEL,IAAIJ,GAEAh3C,EAAQ9sM,OAAS,EAErB,IAAIirO,GAEmB,IAAnBn+B,EAAQ9sM,OAEZ8sM,EAAS,GAIT,IAAIlvB,MAIEkvB,EAAS,GAEtB,IAAM,IAAIhoM,EAAI,EAAGowD,EAAK43I,EAAQ9sM,OAAQ8E,EAAIowD,EAAIpwD,IAE7C+c,EAAK2S,IAAKs4K,EAAShoM,IAiBrB,GAXKizT,EAAQx2T,OAEZsgB,EAAKwlJ,SAAS9lK,KAAOw2T,EAAQx2T,KAC7BsgB,EAAKtgB,KAAOy2B,GAIbgoS,GAAwBn+S,EAAMk2S,GAEzBA,EAAQrjO,YAAakrO,GAAgClrO,EAAY7yE,EAAMk2S,QAEpDvlT,IAAnBulT,EAAQj2J,OAAuB,CAEnC,IAAMA,EAAS,IAAIiX,GACnBjX,EAAOC,UAAWg2J,EAAQj2J,QAC1BjgJ,EAAKouJ,aAAcnO,EAEpB,WAE8BtvJ,IAAxBulT,EAAQsH,aAEZx9S,EAAK8lD,SAASo6F,UAAWg2J,EAAQsH,kBAIR7sT,IAArBulT,EAAQr2J,UAEZ7/I,EAAK2pJ,WAAWzJ,UAAWg2J,EAAQr2J,eAIblvJ,IAAlBulT,EAAQt4K,OAEZ59H,EAAK49H,MAAMsiB,UAAWg2J,EAAQt4K,OAchC,OAROvpD,EAAOyqO,aAAanqR,IAAK30B,IAE/Bq0E,EAAOyqO,aAAatpS,IAAKxV,EAAM,CAAC,GAIjCq0E,EAAOyqO,aAAaxoS,IAAKtW,GAAO+wF,MAAQilN,EAEjCh2S,CAER,GAED,GAEA,CAAAjX,IAAA,YAAA/D,MAKA,SAAWyiU,GAEV,IAAMzkF,EAAOz8O,KAAKy8O,KACZnwJ,EAAatsF,KAAKssF,WAClB60O,EAAWnhU,KAAKy8O,KAAK28E,OAAQ8H,GAC7BpzO,EAAS9tF,KAIT+xL,EAAQ,IAAI8wC,GACbs+F,EAAShoU,OAAO44L,EAAM54L,KAAO20F,EAAOqiO,iBAAkBgR,EAAShoU,OAEpEy+T,GAAwB7lI,EAAOovI,GAE1BA,EAAS70O,YAAakrO,GAAgClrO,EAAYylG,EAAOovI,GAM9E,IAJA,IAAMC,EAAUD,EAAS32N,OAAS,GAE5B5yD,EAAU,GAENl7C,EAAI,EAAGowD,EAAKs0Q,EAAQxpU,OAAQ8E,EAAIowD,EAAIpwD,IAE7Ck7C,EAAQ96C,KAAMukU,GAAoBD,EAAS1kU,GAAKq1L,EAAO0qD,EAAM3uJ,IAI9D,OAAOx9C,QAAQxtC,IAAK80C,GAAUlH,MAAM,WAoCnC,OAFAo9C,EAAOyqO,aA9BoB,SAAE9+S,GAE5B,IAEiDqrD,EAF3Cw8P,EAAsB,IAAInkS,IAAM4nC,EAAA+F,EAERgjB,EAAOyqO,cAAY,IAAjD,IAAAxzP,EAAAtpE,MAAAqpE,EAAAC,EAAAh+D,KAAAkb,MAAoD,KAAAs/S,EAAA7/S,EAAAojD,EAAArmE,MAAA,GAAtC+D,EAAG++T,EAAA,GAAE9iU,EAAK8iU,EAAA,IAElB/+T,aAAe+4K,IAAY/4K,aAAeu7J,KAE9CujK,EAAoBryS,IAAKzsB,EAAK/D,EAIhC,CAAC,OAAAoa,GAAAksD,EAAAz+D,EAAAuS,EAAA,SAAAksD,EAAAt+D,GAAA,CAcD,OAZAgT,EAAK09J,UAAU,SAAE19J,GAEhB,IAAMqgT,EAAWhsO,EAAOyqO,aAAaxoS,IAAKtW,GAEzB,MAAZqgT,GAEJwH,EAAoBryS,IAAKxV,EAAMqgT,EAIjC,IAEOwH,CAER,CAEsBE,CAAoBzvI,GAEnCA,CAER,GAED,KAAC47H,CAAA,CA5vDc,GAgwDhB,SAAS0T,GAAoBI,EAAQC,EAAcjlF,EAAM3uJ,GAExD,IAAM6hO,EAAUlzE,EAAKjyI,MAAOi3N,GAE5B,OAAO3zO,EAAO4kO,cAAe,OAAQ+O,GAAS/wR,MAAM,SAAWj3B,GAE9D,YAAsBrP,IAAjBulT,EAAQgK,KAA4BlgT,EAMlCq0E,EAAO4kO,cAAe,OAAQ/C,EAAQgK,MAAOjpR,MAAM,SAAWipR,GAMpE,IAFA,IAAMgI,EAAgB,GAEZjlU,EAAI,EAAGowD,GAJjB8yQ,EAAYjG,GAIoBp2F,OAAO3rO,OAAQ8E,EAAIowD,EAAIpwD,IAEtDilU,EAAc7kU,KAAMgxF,EAAO4kO,cAAe,OAAQkN,EAAUr8F,OAAQ7mO,KAIrE,OAAO4zC,QAAQxtC,IAAK6+T,EAErB,IAAIjxR,MAAM,SAAWkxR,GAuCpB,OArCAnoT,EAAK09J,UAAU,SAAWkc,GAEzB,GAAOA,EAAKhb,OAAZ,CAKA,IAHA,IAAMuvC,EAAQ,GACR6zB,EAAe,GAEX5rO,EAAI,EAAGq3K,EAAK06I,EAAWhqU,OAAQiY,EAAIq3K,EAAIr3K,IAAO,CAEvD,IAAMgyT,EAAYD,EAAY/xT,GAE9B,GAAKgyT,EAAY,CAEhBj6G,EAAM9qN,KAAM+kU,GAEZ,IAAMz+E,EAAM,IAAIzyE,QAEuBvmK,IAAlCw1T,EAAUC,qBAEdz8E,EAAIzpF,UAAWimK,EAAUC,oBAAoB98T,MAAW,GAAJ8M,GAIrD4rO,EAAa3+O,KAAMsmP,EAEpB,MAECrvO,QAAQk/C,KAAM,mDAAoD2sQ,EAAUr8F,OAAQ1zN,GAItF,CAEAwjL,EAAKz/K,KAAM,IAAIyoO,GAAUz0B,EAAO6zB,GAAgBpoD,EAAKprB,YA/B1B,CAiC5B,IAEOxuJ,CAER,IAzDA,IAAImmT,CA2DL,IAAIlvR,MAAM,SAAWj3B,GAIpBioT,EAAat1S,IAAK3S,GAElB,IAAMm+B,EAAU,GAEhB,GAAK+3Q,EAAQ/xS,SAIZ,IAFA,IAAMA,EAAW+xS,EAAQ/xS,SAEflhB,EAAI,EAAGowD,EAAKlvC,EAAShmB,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAErD,IAAM08B,EAAQxb,EAAUlhB,GACxBk7C,EAAQ96C,KAAMukU,GAAoBjoS,EAAO3f,EAAMgjO,EAAM3uJ,GAEtD,CAID,OAAOx9C,QAAQxtC,IAAK80C,EAErB,GAED,CA2HA,SAASinR,GAAwB/zJ,EAAUotJ,EAAcpqO,GAExD,IAAM5b,EAAagmP,EAAahmP,WAE1Bt6B,EAAU,GAEhB,SAASkqR,EAAyB/G,EAAepuS,GAEhD,OAAOmhE,EAAO4kO,cAAe,WAAYqI,GACvCrqR,MAAM,SAAWovR,GAEjBh1J,EAASh4J,aAAc6Z,EAAemzS,EAEvC,GAEF,CAEA,IAAM,IAAMiC,KAAqB7vP,EAAa,CAE7C,IAAM8hP,EAAqBC,GAAY8N,IAAuBA,EAAkB/pU,cAG3Eg8T,KAAsBlpJ,EAAS54F,YAEpCt6B,EAAQ96C,KAAMglU,EAAyB5vP,EAAY6vP,GAAqB/N,GAEzE,CAEA,QAA8B5pT,IAAzB8tT,EAAa/wI,UAA2Brc,EAASl8J,MAAQ,CAE7D,IAAMkxT,EAAWhyO,EAAO4kO,cAAe,WAAYwF,EAAa/wI,SAAUz2I,MAAM,SAAWovR,GAE1Fh1J,EAASkf,SAAU81I,EAEpB,IAEAloR,EAAQ96C,KAAMgjU,EAEf,CAMA,OAJAlI,GAAwB9sJ,EAAUotJ,GA5JnC,SAAwBptJ,EAAUotJ,EAAcpqO,GAE/C,IAAM5b,EAAagmP,EAAahmP,WAE1Bs4F,EAAM,IAAId,GAEhB,QAA6Bt/J,IAAxB8nE,EAAWskP,SAAhB,CAEC,IAAMsJ,EAAWhyO,EAAO2uJ,KAAK03E,UAAWjiP,EAAWskP,UAE7CtrR,EAAM40R,EAAS50R,IACfhuC,EAAM4iU,EAAS5iU,IAIrB,QAAakN,IAAR8gC,QAA6B9gC,IAARlN,EAA1B,CAOC,GALAstK,EAAIv7I,IACH,IAAI63I,GAAS57H,EAAK,GAAKA,EAAK,GAAKA,EAAK,IACtC,IAAI47H,GAAS5pK,EAAK,GAAKA,EAAK,GAAKA,EAAK,KAGlC4iU,EAASljK,WAAa,CAE1B,IAAMolK,EAAW1J,GAA6BjE,GAAuByL,EAAS1L,gBAC9E5pJ,EAAIt/H,IAAIqqH,eAAgBysK,GACxBx3J,EAAIttK,IAAIq4J,eAAgBysK,EAEzB,CAgBF,IAAMvB,EAAUvI,EAAauI,QAE7B,QAAiBr2T,IAAZq2T,EAAwB,CAK5B,IAHA,IAAMwB,EAAkB,IAAIn7J,GACtB6D,EAAS,IAAI7D,GAETpqK,EAAI,EAAGowD,EAAK2zQ,EAAQ7oU,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEpD,IAAM6E,EAASk/T,EAAS/jU,GAExB,QAAyB0N,IAApB7I,EAAOi1T,SAAyB,CAEpC,IAAMsJ,EAAWhyO,EAAO2uJ,KAAK03E,UAAW5yT,EAAOi1T,UACzCtrR,EAAM40R,EAAS50R,IACfhuC,EAAM4iU,EAAS5iU,IAIrB,QAAakN,IAAR8gC,QAA6B9gC,IAARlN,EAAoB,CAQ7C,GALAytK,EAAOmxJ,KAAM7+T,KAAKC,IAAKD,KAAK4f,IAAKquB,EAAK,IAAOjuC,KAAK4f,IAAK3f,EAAK,MAC5DytK,EAAOoxJ,KAAM9+T,KAAKC,IAAKD,KAAK4f,IAAKquB,EAAK,IAAOjuC,KAAK4f,IAAK3f,EAAK,MAC5DytK,EAAOqxJ,KAAM/+T,KAAKC,IAAKD,KAAK4f,IAAKquB,EAAK,IAAOjuC,KAAK4f,IAAK3f,EAAK,MAGvD4iU,EAASljK,WAAa,CAE1B,IAAMolK,EAAW1J,GAA6BjE,GAAuByL,EAAS1L,gBAC9EzpJ,EAAOpV,eAAgBysK,EAExB,CAMAC,EAAgB/kU,IAAKytK,EAEtB,MAEC52J,QAAQk/C,KAAM,sEAIhB,CAED,CAGAu3G,EAAI03J,eAAgBD,EAErB,CAEAn3J,EAASE,YAAcR,EAEvB,IAAMY,EAAS,IAAI8B,GAEnB1C,EAAIiB,UAAWL,EAAO/U,QACtB+U,EAAOlC,OAASsB,EAAIt/H,IAAImiI,WAAY7C,EAAIttK,KAAQ,EAEhD4tK,EAASmb,eAAiB7a,CAtEzB,MAJCr3J,QAAQk/C,KAAM,sEAUhB,CAkED,CAkDCkvQ,CAAer3J,EAAUotJ,EAAcpqO,GAEhCx9C,QAAQxtC,IAAK80C,GAAUlH,MAAM,WAEnC,YAAgCtmC,IAAzB8tT,EAAauI,QA7sEtB,SAA0B31J,EAAU21J,EAAS3yO,GAM5C,IAJA,IAAI+nH,GAAmB,EACnBusH,GAAiB,EACjBC,GAAgB,EAEV3lU,EAAI,EAAGowD,EAAK2zQ,EAAQ7oU,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEpD,IAAM6E,EAASk/T,EAAS/jU,GAMxB,QAJyB0N,IAApB7I,EAAOi1T,WAAyB3gH,GAAmB,QACjCzrM,IAAlB7I,EAAOk1T,SAAuB2L,GAAiB,QAC5Bh4T,IAAnB7I,EAAOs1T,UAAwBwL,GAAgB,GAE/CxsH,GAAoBusH,GAAkBC,EAAgB,KAE5D,CAEA,IAAOxsH,IAAsBusH,IAAoBC,EAAgB,OAAO/xR,QAAQG,QAASq6H,GAMzF,IAJA,IAAMw3J,EAA2B,GAC3BC,EAAyB,GACzBC,EAAwB,GAEpB9lU,EAAI,EAAGowD,EAAK2zQ,EAAQ7oU,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEpD,IAAM6E,EAASk/T,EAAS/jU,GAExB,GAAKm5M,EAAmB,CAEvB,IAAM4sH,OAAsCr4T,IAApB7I,EAAOi1T,SAC5B1oO,EAAO4kO,cAAe,WAAYnxT,EAAOi1T,UACzC1rJ,EAAS54F,WAAW3S,SAEvB+iQ,EAAyBxlU,KAAM2lU,EAEhC,CAEA,GAAKL,EAAiB,CAErB,IAAMK,OAAoCr4T,IAAlB7I,EAAOk1T,OAC5B3oO,EAAO4kO,cAAe,WAAYnxT,EAAOk1T,QACzC3rJ,EAAS54F,WAAW62F,OAEvBw5J,EAAuBzlU,KAAM2lU,EAE9B,CAEA,GAAKJ,EAAgB,CAEpB,IAAMI,OAAqCr4T,IAAnB7I,EAAOs1T,QAC5B/oO,EAAO4kO,cAAe,WAAYnxT,EAAOs1T,SACzC/rJ,EAAS54F,WAAW1qC,MAEvBg7R,EAAsB1lU,KAAM2lU,EAE7B,CAED,CAEA,OAAOnyR,QAAQxtC,IAAK,CACnBwtC,QAAQxtC,IAAKw/T,GACbhyR,QAAQxtC,IAAKy/T,GACbjyR,QAAQxtC,IAAK0/T,KACV9xR,MAAM,SAAWyjR,GAEpB,IAAMuO,EAAiBvO,EAAW,GAC5Bn+G,EAAem+G,EAAW,GAC1Bl+G,EAAck+G,EAAW,GAO/B,OALKt+G,IAAmB/qC,EAASgb,gBAAgBvmH,SAAWmjQ,GACvDN,IAAiBt3J,EAASgb,gBAAgB/c,OAASitC,GACnDqsH,IAAgBv3J,EAASgb,gBAAgBt+I,MAAQyuK,GACtDnrC,EAASib,sBAAuB,EAEzBjb,CAER,GAED,CA+nEK63J,CAAiB73J,EAAUotJ,EAAauI,QAAS3yO,GACjDg9E,CAEJ,GAED,CAOA,SAASo0J,GAAqBp0J,EAAUy8H,GAEvC,IAAI34R,EAAQk8J,EAAS9yE,WAIrB,GAAe,OAAVppF,EAAiB,CAErB,IAAMu4K,EAAU,GAEV5nH,EAAWurG,EAASlhG,aAAc,YAExC,QAAkBx/D,IAAbm1D,EAcJ,OADAxrD,QAAQwN,MAAO,kGACRupJ,EAZP,IAAM,IAAIpuK,EAAI,EAAGA,EAAI6iE,EAASoe,MAAOjhF,IAEpCyqL,EAAQrqL,KAAMJ,GAIfouK,EAASkf,SAAU7C,GACnBv4K,EAAQk8J,EAAS9yE,UASnB,CAIA,IAAM4qO,EAAoBh0T,EAAM+uE,MAAQ,EAClCklP,EAAa,GAEnB,GAAKt7B,IAAav4I,GAIjB,IAAM,IAAItyJ,EAAI,EAAGA,GAAKkmU,EAAmBlmU,IAExCmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAM,IAC7B0sK,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,IAC7BmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,EAAI,SAQlC,IAAM,IAAIA,EAAI,EAAGA,EAAIkmU,EAAmBlmU,IAElCA,EAAI,IAAM,GAEdmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,IAC7BmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,EAAI,IACjCmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,EAAI,MAKjCmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,EAAI,IACjCmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,EAAI,IACjCmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,KAQzBmmU,EAAWjrU,OAAS,IAAQgrU,GAElC7uT,QAAQwN,MAAO,2FAMhB,IAAMuhT,EAAch4J,EAAS5pK,QAG7B,OAFA4hU,EAAY94I,SAAU64I,GAEfC,CAER,CCpyIA,IAAMC,GAAa,IAAIhiR,QAEjBiiR,GAAW,SAAA7yD,GAAAn0P,EAAAgnT,EAAA7yD,GAAA,IAAAl0P,EAAAtB,EAAAqoT,GAEhB,SAAAA,EAAanzD,GAAU,IAAA3zP,EAyBpB,OAzBoBzR,EAAA,KAAAu4T,IAEtB9mT,EAAAD,EAAApf,KAAA,KAAOgzQ,IAEFozD,YAAc,GACnB/mT,EAAKgnT,cAAgB,CAAC,EACtBhnT,EAAKinT,cAAgB,KACrBjnT,EAAKknT,eAAiB,KAEtBlnT,EAAKmnT,YAAc,EACnBnnT,EAAKonT,WAAa,GAClBpnT,EAAKqnT,iBAAmB,EACxBrnT,EAAKsnT,gBAAkB,GAEvBtnT,EAAKunT,oBAAsB,CAC1BlkQ,SAAU,WACVwpG,OAAQ,SACRvhI,MAAO,QACPi4H,GAAI,aAELvjJ,EAAKwnT,sBAAwB,CAC5BnkQ,SAAU,eACVwpG,OAAQ,eACRvhI,MAAO,eACPi4H,GAAI,gBACHvjJ,CAEH,CAuVC,OAvVA3S,EAAAy5T,EAAA,EAAAxgU,IAAA,iBAAA/D,MAED,SAAgBy4F,GAIf,OAFAl3F,KAAKijU,YAAc/rO,EAEZl3F,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB04D,GAIjB,OAFAn3D,KAAKkjU,cAAgB/rQ,EAEdn3D,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB4kU,GAIf,OAFArjU,KAAKqjU,YAAcA,EAEZrjU,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAAU,IAAAu2C,EAAA,KAElCo1B,EAAS,IAAImsK,GAAYlwQ,KAAK6vQ,SAEpC9rK,EAAOwuK,QAASvyQ,KAAKk3F,MACrB6M,EAAO8uK,gBAAiB,eACxB9uK,EAAOyuK,iBAAkBxyQ,KAAKgwQ,eAC9BjsK,EAAO0uK,mBAAoBzyQ,KAAK8vQ,iBAEhC/rK,EAAOn4B,KAAM1jC,GAAK,SAAEiyH,GAEnB,IAAMwpK,EAAa,CAClBC,aAAcj1P,EAAK80P,oBACnBI,eAAgBl1P,EAAK+0P,sBACrBI,cAAc,GAGfn1P,EAAKo1P,eAAgB5pK,EAAQwpK,GAC3BjzR,KAAMspG,GACNrpG,MAAOvY,EAEV,GAAGq0C,EAAYr0C,EAEhB,GAEA,CAAA51B,IAAA,kBAAA/D,MACA,SAAiB07J,EAAQhiH,EAAUyrR,EAAcC,GAEhD,IAAMF,EAAa,CAClBC,aAAcA,GAAgB5jU,KAAKyjU,oBACnCI,eAAgBA,GAAkB7jU,KAAK0jU,sBACvCI,eAAiBF,GAGlB5jU,KAAK+jU,eAAgB5pK,EAAQwpK,GAAajzR,KAAMyH,EAEjD,GAAC,CAAA31C,IAAA,iBAAA/D,MAED,SAAgB07J,EAAQwpK,GAAa,IAAAn0P,EAAA,KAKpC,IAAM,IAAM0mF,KAAaytK,EAAWE,eAAiB,CAEpD,IAAMj/T,EAAO++T,EAAWE,eAAgB3tK,QAER9rJ,IAA3BxF,EAAKuyL,oBAETwsI,EAAWE,eAAgB3tK,GAActxJ,EAAKzL,KAIhD,CAIA,IA+BI6qU,EA/BEC,EAAUl2Q,KAAKC,UAAW21Q,GAIhC,GAAKZ,GAAW30R,IAAK+rH,GAAW,CAE/B,IAAM+pK,EAAanB,GAAWhzS,IAAKoqI,GAEnC,GAAK+pK,EAAW1hU,MAAQyhU,EAEvB,OAAOC,EAAW5qP,QAEZ,GAA2B,IAAtB6gF,EAAOq3G,WAMlB,MAAM,IAAI1zQ,MAET,gHAOH,CAKA,IAAMqmU,EAASnkU,KAAKujU,mBACda,EAAWjqK,EAAOq3G,WAIlB6yD,EAAkBrkU,KAAKskU,WAAYH,EAAQC,GAC/C1zR,MAAM,SAAE6zR,GAIR,OAFAP,EAASO,EAEF,IAAIj0R,SAAS,SAAEG,EAAS8tC,GAE9BylP,EAAOxjM,WAAY2jM,GAAW,CAAE1zR,QAAAA,EAAS8tC,OAAAA,GAEzCylP,EAAOnyQ,YAAa,CAAEjtD,KAAM,SAAUw6B,GAAI+kS,EAAQR,WAAAA,EAAYxpK,OAAAA,GAAU,CAAEA,GAI3E,GAED,IACCzpH,MAAM,SAAEgQ,GAAO,OAAM8uB,EAAKg1P,gBAAiB9jR,EAAQoqH,SAAU,IA0B/D,OAtBAu5J,EACE1zR,OAAO,kBAAM,CAAI,IACjBD,MAAM,WAEDszR,GAAUG,GAEd30P,EAAKi1P,aAAcT,EAAQG,EAM7B,IAGDpB,GAAW9zS,IAAKkrI,EAAQ,CAEvB33J,IAAKyhU,EACL3qP,QAAS+qP,IAIHA,CAER,GAAC,CAAA7hU,IAAA,kBAAA/D,MAED,SAAiBimU,GAEhB,IAAM55J,EAAW,IAAI4a,GAEhBg/I,EAAa91T,OAEjBk8J,EAASkf,SAAU,IAAIxH,GAAiBkiJ,EAAa91T,MAAM7L,MAAO,IAInE,IAAM,IAAIrG,EAAI,EAAGA,EAAIgoU,EAAaxyP,WAAWt6E,OAAQ8E,IAAO,CAE3D,IAAMw5J,EAAYwuK,EAAaxyP,WAAYx1E,GACrCvD,EAAO+8J,EAAU/8J,KACjB4J,EAAQmzJ,EAAUnzJ,MAClB0/K,EAAWvsB,EAAUusB,SAE3B3X,EAASh4J,aAAc3Z,EAAM,IAAIqpL,GAAiBz/K,EAAO0/K,GAE1D,CAEA,OAAO3X,CAER,GAAC,CAAAtoK,IAAA,eAAA/D,MAED,SAAcypC,EAAK0oO,GAElB,IAAM7sK,EAAS,IAAImsK,GAAYlwQ,KAAK6vQ,SAKpC,OAJA9rK,EAAOwuK,QAASvyQ,KAAKijU,aACrBl/N,EAAO8uK,gBAAiBjC,GACxB7sK,EAAO0uK,mBAAoBzyQ,KAAK8vQ,iBAEzB,IAAIx/N,SAAS,SAAEG,EAAS8tC,GAE9BwlB,EAAOn4B,KAAM1jC,EAAKuI,OAASrmC,EAAWm0E,EAEvC,GAED,GAAC,CAAA/7E,IAAA,UAAA/D,MAED,WAIC,OAFAuB,KAAK2kU,eAEE3kU,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,WAAe,IAAA2rH,EAAA,KAEd,GAAKpqH,KAAKojU,eAAiB,OAAOpjU,KAAKojU,eAEvC,IAAMwB,EAA+B,kBAAhBC,aAAwD,OAA5B7kU,KAAKkjU,cAAct+T,KAC9DkgU,EAAmB,GAsCzB,OApCKF,EAEJE,EAAiBhoU,KAAMkD,KAAK+kU,aAAc,mBAAoB,UAI9DD,EAAiBhoU,KAAMkD,KAAK+kU,aAAc,wBAAyB,SACnED,EAAiBhoU,KAAMkD,KAAK+kU,aAAc,qBAAsB,iBAIjE/kU,KAAKojU,eAAiB9yR,QAAQxtC,IAAKgiU,GACjCp0R,MAAM,SAAEs0R,GAER,IAAMC,EAAYD,EAAW,GAEtBJ,IAENx6M,EAAK84M,cAAcgC,WAAaF,EAAW,IAI5C,IAAMhnP,EAAKmnP,GAAY1kU,WAEjB+vB,EAAO,CACZ,sBACAy0S,EACA,GACA,eACAjnP,EAAGtoD,UAAWsoD,EAAGxxE,QAAS,KAAQ,EAAGwxE,EAAG6wB,YAAa,OACpDxxG,KAAM,MAER+sH,EAAKo5M,gBAAkBpqP,IAAIC,gBAAiB,IAAIqjP,KAAM,CAAElsS,IAEzD,IAEMxwB,KAAKojU,cAEb,GAAC,CAAA5gU,IAAA,aAAA/D,MAED,SAAY0lU,EAAQC,GAAW,IAAAj5M,EAAA,KAE9B,OAAOnrH,KAAK2kU,eAAej0R,MAAM,WAEhC,GAAKy6E,EAAKm4M,WAAW1rU,OAASuzH,EAAKk4M,YAAc,CAEhD,IAAMW,EAAS,IAAItgU,OAAQynH,EAAKq4M,iBAEhCQ,EAAOxjM,WAAa,CAAC,EACrBwjM,EAAOoB,WAAa,CAAC,EACrBpB,EAAOqB,UAAY,EAEnBrB,EAAOnyQ,YAAa,CAAEjtD,KAAM,OAAQs+T,cAAe/3M,EAAK+3M,gBAExDc,EAAOpyQ,UAAY,SAAWtrD,GAE7B,IAAMo6C,EAAUp6C,EAAEo9B,KAElB,OAASgd,EAAQ97C,MAEhB,IAAK,SACJo/T,EAAOxjM,WAAY9/E,EAAQthB,IAAKqR,QAASiQ,GACzC,MAED,IAAK,QACJsjR,EAAOxjM,WAAY9/E,EAAQthB,IAAKm/C,OAAQ79B,GACxC,MAED,QACC3sC,QAAQwN,MAAO,2CAA6Cm/B,EAAQ97C,KAAO,KAI9E,EAEAumH,EAAKm4M,WAAWxmU,KAAMknU,EAEvB,MAEC74M,EAAKm4M,WAAW9pO,MAAM,SAAWx9F,EAAGuK,GAEnC,OAAOvK,EAAEqpU,UAAY9+T,EAAE8+T,WAAc,EAAI,CAE1C,IAID,IAAMrB,EAAS74M,EAAKm4M,WAAYn4M,EAAKm4M,WAAW1rU,OAAS,GAGzD,OAFAosU,EAAOoB,WAAYjB,GAAWC,EAC9BJ,EAAOqB,WAAajB,EACbJ,CAER,GAED,GAAC,CAAAxhU,IAAA,eAAA/D,MAED,SAAculU,EAAQG,GAErBH,EAAOqB,WAAarB,EAAOoB,WAAYjB,UAChCH,EAAOxjM,WAAY2jM,UACnBH,EAAOoB,WAAYjB,EAE3B,GAAC,CAAA3hU,IAAA,QAAA/D,MAED,WAECsV,QAAQC,IAAK,cAAehU,KAAKsjU,WAAW/mU,KAAK,SAAEynU,GAAM,OAAMA,EAAOqB,SAAS,IAEhF,GAAC,CAAA7iU,IAAA,UAAA/D,MAED,WAEC,IAAM,IAAI/B,EAAI,EAAGA,EAAIsD,KAAKsjU,WAAW1rU,SAAW8E,EAE/CsD,KAAKsjU,WAAY5mU,GAAI4oU,YAMtB,OAFAtlU,KAAKsjU,WAAW1rU,OAAS,EAElBoI,IAER,KAACgjU,CAAA,CApXe,CAASpzD,IA0X1B,SAASu1D,KAER,IAAIjC,EACAE,EA6JJ,SAASmC,EAAiBC,EAAOxzD,EAASyzD,EAAe94S,EAAe+4S,EAAexvK,GAEtF,IAAMyvK,EAAgBzvK,EAAU0vK,iBAE1BC,EADYJ,EAAcK,aACFH,EACxBn0D,EAAaq0D,EAAYH,EAAcvuI,kBACvC4uI,EAeP,SAA2BP,EAAOE,GAEjC,OAASA,GAER,KAAK7wK,aAAc,OAAO2wK,EAAMQ,WAChC,KAAK/wK,UAAW,OAAOuwK,EAAMS,QAC7B,KAAKjxK,WAAY,OAAOwwK,EAAMU,SAC9B,KAAKlsK,WAAY,OAAOwrK,EAAMW,SAC9B,KAAK5wN,WAAY,OAAOiwN,EAAMY,SAC9B,KAAKtxK,YAAa,OAAO0wK,EAAMa,UAC/B,KAAK9+N,YAAa,OAAOi+N,EAAMc,UAIjC,CA7BkBC,CAAkBf,EAAOE,GAEpCc,EAAMhB,EAAMiB,QAASj1D,GAC3BQ,EAAQ00D,kCAAmCjB,EAAevvK,EAAW6vK,EAAUv0D,EAAYg1D,GAC3F,IAAMzjU,EAAQ,IAAI2iU,EAAeF,EAAMmB,QAAQxsK,OAAQqsK,EAAKX,GAAYj1T,QAGxE,OAFA40T,EAAMoB,MAAOJ,GAEN,CACNrtU,KAAMwzB,EACN5pB,MAAOA,EACP0/K,SAAUkjJ,EAGZ,CA9KA/zQ,UAAY,SAAWtrD,GAEtB,IAAMo6C,EAAUp6C,EAAEo9B,KAElB,OAASgd,EAAQ97C,MAEhB,IAAK,OACJs+T,EAAgBxiR,EAAQwiR,cACxBE,EAAiB,IAAI9yR,SAAS,SAAWG,GAExCyyR,EAAc2D,eAAiB,SAAWrB,GAGzC/0R,EAAS,CAAE+0R,MAAOA,GAEnB,EAEAsB,mBAAoB5D,EAErB,IACA,MAED,IAAK,SACJ,IAAM/oK,EAASz5G,EAAQy5G,OACjBwpK,EAAajjR,EAAQijR,WAC3BP,EAAe1yR,MAAM,SAAEtyC,GAEtB,IAAMonU,EAAQpnU,EAAOonU,MACfxzD,EAAU,IAAIwzD,EAAMuB,QACpBC,EAAgB,IAAIxB,EAAMyB,cAChCD,EAAcE,KAAM,IAAIjyK,UAAWkF,GAAUA,EAAOq3G,YAEpD,IAEC,IAAM1mG,EA4BX,SAAyB06J,EAAOxzD,EAASg1D,EAAerD,GAEvD,IAGI8B,EACA0B,EAJEvD,EAAeD,EAAWC,aAC1BC,EAAiBF,EAAWE,eAK5BuD,EAAep1D,EAAQq1D,uBAAwBL,GAErD,GAAKI,IAAiB5B,EAAM8B,gBAE3B7B,EAAgB,IAAID,EAAMt6I,KAC1Bi8I,EAAiBn1D,EAAQu1D,mBAAoBP,EAAevB,OAEtD,IAAK2B,IAAiB5B,EAAMgC,YAOlC,MAAM,IAAI1pU,MAAO,gDALjB2nU,EAAgB,IAAID,EAAM7lC,WAC1BwnC,EAAiBn1D,EAAQy1D,yBAA0BT,EAAevB,EAMnE,CAEA,IAAO0B,EAAex+Q,MAA8B,IAAtB88Q,EAAce,IAE3C,MAAM,IAAI1oU,MAAO,uCAAyCqpU,EAAeO,aAI1E,IAAM58J,EAAW,CAAEl8J,MAAO,KAAMsjE,WAAY,IAG5C,IAAM,IAAMvlD,KAAiBi3S,EAAe,CAE3C,IAAM8B,EAAgBvwT,KAAM0uT,EAAgBl3S,IAExCupI,OAAS,EACTyxK,OAAW,EAMf,GAAKhE,EAAWG,aAEf6D,EAAc/D,EAAcj3S,GAC5BupI,EAAY87G,EAAQ41D,uBAAwBnC,EAAekC,OAErD,CAIN,IAAuB,KAFvBA,EAAc31D,EAAQ61D,eAAgBpC,EAAeD,EAAO5B,EAAcj3S,MAE/C,SAE3BupI,EAAY87G,EAAQ81D,aAAcrC,EAAekC,EAElD,CAEA78J,EAAS54F,WAAWp1E,KAAMyoU,EAAiBC,EAAOxzD,EAASyzD,EAAe94S,EAAe+4S,EAAexvK,GAEzG,CAGKkxK,IAAiB5B,EAAM8B,kBAE3Bx8J,EAASl8J,MAUX,SAAsB42T,EAAOxzD,EAASyzD,GAErC,IAAMsC,EAAWtC,EAAcuC,YACzBC,EAAwB,EAAXF,EACbv2D,EAA0B,EAAby2D,EAEbzB,EAAMhB,EAAMiB,QAASj1D,GAC3BQ,EAAQk2D,wBAAyBzC,EAAej0D,EAAYg1D,GAC5D,IAAM53T,EAAQ,IAAI24F,YAAai+N,EAAMmB,QAAQxsK,OAAQqsK,EAAKyB,GAAar3T,QAGvE,OAFA40T,EAAMoB,MAAOJ,GAEN,CAAEzjU,MAAO6L,EAAO6zK,SAAU,EAElC,CAvBmB0lJ,CAAa3C,EAAOxzD,EAASyzD,IAM/C,OAFAD,EAAM7oR,QAAS8oR,GAER36J,CAER,CAxGsBi5J,CAAgByB,EAAOxzD,EAASg1D,EAAerD,GAE1DjtI,EAAU5rB,EAAS54F,WAAW31E,KAAK,SAAEsW,GAAI,OAAMA,EAAK9P,MAAMo3J,MAAM,IAEjE2Q,EAASl8J,OAAQ8nL,EAAQ55L,KAAMguK,EAASl8J,MAAM7L,MAAMo3J,QAEzDhlJ,KAAK08C,YAAa,CAAEjtD,KAAM,SAAUw6B,GAAIshB,EAAQthB,GAAI0rI,SAAAA,GAAY4rB,EAEjE,CAAE,MAAQn1K,IAETxN,QAAQwN,MAAOA,IAEfpM,KAAK08C,YAAa,CAAEjtD,KAAM,QAASw6B,GAAIshB,EAAQthB,GAAI7d,MAAOA,GAAMm/B,SAEjE,CAAE,QAED8kR,EAAM7oR,QAASqqR,GACfxB,EAAM7oR,QAASq1N,EAEhB,CAED,IAKH,CAoID,4BCrkBA,SAASj2P,GAAOnX,GACd,IAAMwjU,EAAKxjU,EAAO,iBAClB,OAAoBsb,EAAAA,YAAiB,SAAAlW,EAIlC+T,GAAG,IAHJze,EAAI0K,EAAJ1K,KACAse,EAAQ5T,EAAR4T,SACGnU,EAAKwV,GAAAjV,EAAAuU,IAAA,OACc2B,EAAAA,cAAoB,OAAQzB,GAAS,CAC3DV,IAAKA,GACJtU,GAAqByW,EAAAA,cAAoBkoT,EAAI,CAC9Ct8B,OAAQ,WACRxsS,KAAMA,IACJse,EAAS,GACf,CAEY7B,GAAO,OACJA,GAAO,UACTA,GAAO,QAFpB,IAGMssT,GAAWtsT,GAAO,YAClBmxJ,GAASnxJ,GAAO,UACRA,GAAO,SACRA,GAAO,QACNA,GAAO,SACHA,GAAO,aACLA,GAAO,eACdA,GAAO,QACDA,GAAO,cACNA,GAAO,eACRA,GAAO,cACLA,GAAO,gBACZA,GAAO,WACTA,GAAO,SCfrB,SAASusT,KACP,IAEI7pU,EAFAmhB,EAAQ,EACRo7B,EAAQ,GAERutR,EAAY,EACZC,EAAiB,EAkCrB,IAAI/3R,EAAUg4R,GAAQ,SAAUrnU,GACzBonU,GACHt1O,EAAS,EAAG9xF,EAEhB,IAEIm9E,EAASkqP,GAAQ,SAAUC,GACxBF,GACHt1O,GAAU,EAAGw1O,EAEjB,IAEA,SAASx1O,EAASy1O,EAAIvnU,GACpBonU,IACA,IAAII,EAAc,EAClB,IACMxnU,IAAQynU,GACVC,IAEF,IAAIC,EAAUJ,EAAK,GAAKK,EAAgB5nU,GACpC2nU,EACFA,EAAQlsU,KAAKuE,EAAKqnU,GAAQ,SAAUthU,GAClCyhU,IACA11O,EAAS,EAAG/rF,EACd,IAAIshU,GAAQ,SAAUthU,GACpByhU,IACA11O,GAAU,EAAG/rF,EACf,MAEAyY,EAAQ+oT,EACRlqU,EAAQ2C,EACR6nU,IAEJ,CAAE,MAAM3iU,KACDsZ,GAAUgpT,GACb11O,GAAU,EAAG5sF,IAEjB,CACF,CAEA,SAAS2iU,IACFV,IACH1oU,WAAWqpU,EAAY,GACvBX,EAAY,EAEhB,CAEA,SAASW,IACP,IAAIjiU,EAAI+zC,EACRutR,EAAY,EACZvtR,EAAQ,GACR/zC,EAAE1E,QAAQ4mU,EACZ,CAEA,SAASA,EAAOnrP,GACdA,GACF,CAEA,SAASgrP,EAAgB5nU,GACvB,IAAI2nU,EAAU3nU,IAAQgoU,EAAKhoU,IAAuB,kBAARA,IAAqBA,EAAIsvC,KACnE,OAAO04R,EAAKL,IAAYA,CAC1B,CAEA,SAASN,EAAQzqP,GACf,IAAIqrP,EAAS,EACb,OAAO,WAEL,IADA,IAAI/pU,EAAO,GAAI0M,EAAM/L,UAAUrI,OACvBoU,KAAQ1M,EAAM0M,GAAQ/L,UAAW+L,GAEpCq9T,KACHrrP,EAAGl+E,MAAME,KAAMV,EAEnB,CACF,CAEA,SAASwpU,IACP,MAAM,IAAIt+T,UAAU,0BACtB,CAEA,IAAI4+T,EAAO,SAAUjiU,GAAK,MAAoB,oBAANA,CAAkB,EAEtD0hU,EAAc,CAChBn4R,KAlHF,SAAc44R,EAAWC,GACvB,IAAIC,EAAelB,KA4BnB,OAJAttR,EAAMl+C,MAtBN,WACE,IAAIkV,EAAK4N,EAAQ,EAAI0pT,EAAYC,EACjC,GAAIH,EAAKp3T,GACP,IACE,IAAIla,EAASka,EAAGvT,GACZ3G,IAAW0xU,GACbV,IAEF,IAAIW,EAAaT,EAAgBlxU,GAC7B2xU,EACFA,EAAW5sU,KAAK/E,EAAQ0xU,EAAa/4R,QAAS+4R,EAAajrP,QAE3DirP,EAAa/4R,QAAQ34C,EAEzB,CAAE,MAAO+gB,GACP2wT,EAAajrP,OAAO1lE,EACtB,MAEA2wT,EAAa5pT,EAAQ,EAAI,UAAY,UAAUnhB,EAEnD,IAGImhB,GACFqpT,IAEKO,CACT,EAqFE/4R,QAASA,EACT8tC,OAAQA,GAEV,OAAOsqP,CACT,CAQA,SAASa,KACP,IAAIj5R,EAAS8tC,EACTjF,EAAU,IAAIhpC,SAAQ,SAAUqkB,EAAKg1Q,GACvCl5R,EAAUkkB,EACV4pB,EAASorP,CACX,IACA,MAAO,CACLj5R,KAAM4oC,EAAQ5oC,KAAK98B,KAAK0lE,GACxB7oC,QAASA,EACT8tC,OAAQA,EAEZ,CAKA+pP,GAAgBxlU,IAAM4mU,GAAsB5mU,IAAM,SAASigE,GACzD,IAAI6mQ,EAAc,EACdlgD,EAAU,GACVmgD,EAAMC,KAgBV,OAfqB,IAAjB/mQ,EAAMnrE,OACRiyU,EAAIp5R,QAAQ,IAEZsyB,EAAMxgE,SAAQ,SAAUkjE,EAAM/oE,GAC5B,IAAIqtU,EAAeD,KACnBC,EAAat5R,QAAQg1B,GACrBskQ,EAAar5R,MAAK,SAAUikB,GAC1Bi1Q,IACAlgD,EAAQhtR,GAAKi4D,EACTi1Q,IAAgB7mQ,EAAMnrE,QACxBiyU,EAAIp5R,QAAQi5O,EAEhB,GAAGmgD,EAAItrP,OACT,IAEKsrP,CACT,EAMA,IAAIC,GAAqC,oBAAZx5R,QAAyBo5R,GAAwBpB,GAM9E,SAAS0B,KACP,IAAIr9L,EAAUpuI,OAAOwd,OAAO,MAG5B,SAASkuT,EAAelsT,EAAKo6B,GAC3B,IAAI/Y,EAAKrhB,EAAIqhB,GACTjmC,EAAO4kB,EAAI5kB,KACXu9C,EAAe34B,EAAI24B,kBAAoC,IAAjBA,IAA0BA,EAAe,IACnF,IAAI69E,EAAOx2G,EAAIw2G,UAAoB,IAATA,IAAkBA,EAAO,WAAW,GAC9D,IAAI21M,EAAmBnsT,EAAImsT,iBAG3B,QAHuE,IAArBA,IAA8BA,EAAmB,OAG/Fv9L,EAAQvtG,GAEZ,IAEEsX,EAAeA,EAAan6C,KAAI,SAAU4tU,GAOxC,OANIA,GAAOA,EAAIC,iBACbH,EAAeE,GAAK,SAAUE,GAC5B,GAAIA,aAAqBvsU,MAAS,MAAMusU,CAC1C,IACAF,EAAMx9L,EAAQw9L,EAAI/qS,IAAI3gC,OAEjB0rU,CACT,IAGA51M,EAAO+1M,EAAW,IAAMnxU,EAAO,SAAWo7H,GACtC21M,IACFA,EAAmBI,EAAW,IAAMnxU,EAAO,qBAAuB+wU,IAIpE,IAAIzrU,EAAQ,KACQ,oBAAT81H,EACT91H,EAAQ81H,EAAKz0H,WAAM,EAAQ42C,GAE3B3iC,QAAQwN,MAAM,mDAEhBorH,EAAQvtG,GAAM,CACZA,GAAIA,EACJ3gC,MAAOA,EACPyrU,iBAAkBA,GAEpB/xR,EAAS15C,EACX,CAAE,MAAMoa,GACAA,GAAOA,EAAI0xT,OACfx2T,QAAQwN,MAAM1I,GAEhBs/B,EAASt/B,EACX,CACF,CAmCA,SAASyxT,EAAUnxU,EAAMsX,GACvB,IAAI3Y,OAAS,EACbqd,KAAKq1T,aAAe,SAAUtjU,GAAK,OAAOpP,EAASoP,CAAG,EACtD,IAAIghC,EAAMkxC,IAAIC,gBACZ,IAAIqjP,KACF,CAAE,OAAUvjU,EAAKwC,QAAQ,MAAO,IAAO,0BAA4B8U,EAAM,OACzE,CAAC7L,KAAM,4BAGX,IACE6lU,cAAcviS,EAChB,CAAE,MAAMrvB,GACN9E,QAAQwN,MAAM1I,EAChB,CAGA,OAFAugE,IAAIujP,gBAAgBz0R,UACb/yB,KAAKq1T,aACL1yU,CACT,CAGAqd,KAAKvR,iBAAiB,WAAW,SAAU0C,GACzC,IAAIyX,EAAMzX,EAAEo9B,KACRgnS,EAAY3sT,EAAI2sT,UAChBrvR,EAASt9B,EAAIs9B,OACb3X,EAAO3lB,EAAI2lB,KACf,IAEiB,mBAAX2X,GACF4uR,EAAevmS,GAAM,SAAU5rC,GACzBA,aAAkBgG,MACpB+zD,YAAY,CACV64Q,UAAWA,EACX/uN,SAAS,EACTp6F,MAAOzpB,EAAO4oD,UAGhBmR,YAAY,CACV64Q,UAAWA,EACX/uN,SAAS,EACT7jH,OAAQ,CAAC6yU,WAA8B,oBAAX7yU,IAGlC,IAGa,eAAXujD,GA7ER,SAAoBt9B,EAAKo6B,GACvB,IAAIyyR,EAEAxrS,EAAKrhB,EAAIqhB,GACT9/B,EAAOye,EAAIze,KACVqtI,EAAQvtG,IAAoC,oBAAtButG,EAAQvtG,GAAI3gC,OACrC05C,EAAS,IAAIr6C,MAAO,iBAAmBshC,EAAK,wDAE9C,IACE,IAAItnC,GAAU8yU,EAAQj+L,EAAQvtG,IAAK3gC,MAAMqB,MAAM8qU,EAAOtrU,GAClDxH,GAAiC,oBAAhBA,EAAO44C,KAC1B54C,EAAO44C,KAAKm6R,GAAc,SAAUlB,GAAO,OAAOxxR,EAASwxR,aAAe7rU,MAAQ6rU,EAAM,IAAI7rU,MAAM,GAAK6rU,GAAO,IAE9GkB,EAAa/yU,EAEjB,CAAE,MAAM+gB,GACNs/B,EAASt/B,EACX,CACA,SAASgyT,EAAa/yU,GACpB,IACE,IAAIohK,EAAKvsB,EAAQvtG,GAAI8qS,kBAAoBv9L,EAAQvtG,GAAI8qS,iBAAiBpyU,GACjEohK,GAAOv8J,MAAM0E,QAAQ63J,IAAQA,EAAGthK,SACnCshK,OAAK9uJ,GAEP+tC,EAASrgD,EAAQohK,EACnB,CAAE,MAAMrgJ,GACN9E,QAAQwN,MAAM1I,GACds/B,EAASt/B,EACX,CACF,CACF,CAgDMiyT,CAAWpnS,GAAM,SAAU5rC,EAAQizU,GAC7BjzU,aAAkBgG,MACpB+zD,YAAY,CACV64Q,UAAWA,EACX/uN,SAAS,EACTp6F,MAAOzpB,EAAO4oD,UAGhBmR,YAAY,CACV64Q,UAAWA,EACX/uN,SAAS,EACT7jH,OAAQA,GACPizU,QAAiB3gU,EAExB,GAEJ,CAAE,MAAMyO,GACNg5C,YAAY,CACV64Q,UAAWA,EACX/uN,SAAS,EACTp6F,MAAO1I,EAAI+V,OAEf,CACF,GACF,CA0CA,IAAIo8S,GAAkB,WACpB,IAAIrY,GAAY,EAIhB,GAAsB,qBAAXtvT,QAAqD,qBAApBA,OAAOC,SACjD,IAGe,IAAII,OACf01E,IAAIC,gBAAgB,IAAIqjP,KAAK,CAAC,IAAK,CAAE93T,KAAM,6BAEtC0gU,YACP3S,GAAY,CACd,CAAE,MAAO95S,GAEL9E,QAAQC,IACL,sGAAyG6E,EAAI6nC,QAAW,IAG/H,CAKF,OADAsqR,GAAkB,WAAc,OAAOrY,CAAW,EAC3CA,CACT,EAEIsY,GAAkB,EAClBC,GAAa,EACbC,IAAqB,EACrBC,GAAU7sU,OAAOwd,OAAO,MACxBsvT,GAAoB9sU,OAAOwd,OAAO,MAClCuvT,GAAe/sU,OAAOwd,OAAO,MAgBjC,SAASwvT,GAAmBtqU,GAC1B,KAAMA,GAAmC,oBAAjBA,EAAQszH,QAAyB42M,GACvD,MAAM,IAAIrtU,MAAM,oCAElB,IAAI44C,EAAez1C,EAAQy1C,aACvB69E,EAAOtzH,EAAQszH,KACf21M,EAAmBjpU,EAAQipU,iBAC3BsB,EAAWvqU,EAAQuqU,SAEvB,IAAKR,KACH,OA9FJ,SAAgC/pU,GAC9B,IAAIwqU,EAAa,SAAbA,IAEF,IADA,IAAInsU,EAAO,GAAI0M,EAAM/L,UAAUrI,OACvBoU,KAAQ1M,EAAM0M,GAAQ/L,UAAW+L,GAEzC,OAAOy/T,EAAWC,iBAAiBh7R,MAAK,SAAUi7R,GAChD,GAA0B,oBAAfA,EACT,OAAOA,EAAW7rU,WAAM,EAAQR,GAEhC,MAAM,IAAIxB,MAAM,kFAEpB,GACF,EAoBA,OAnBA2tU,EAAWC,eAAiB,WAE1B,IAAIh1R,EAAez1C,EAAQy1C,aACvB69E,EAAOtzH,EAAQszH,KAGnB79E,EAAe/5C,MAAM0E,QAAQq1C,GAAgBA,EAAan6C,KAAI,SAAU4tU,GAAO,OAAOA,GAAOA,EAAIuB,eAAiBvB,EAAIuB,iBAAmBvB,CAAK,IAC1I,GAGJ,IAAIyB,EAAe9B,GAAgBhnU,IAAI4zC,GAAchG,MAAK,SAAUkM,GAClE,OAAO23E,EAAKz0H,MAAM,KAAM88C,EAC1B,IAKA,OAFA6uR,EAAWC,eAAiB,WAAc,OAAOE,CAAc,EAExDA,CACT,EACOH,CACT,CA6DWI,CAAuB5qU,GAGhB,MAAZuqU,IACFA,EAAW,YAEb,IAAIpsS,EAAK,kBAAoB6rS,GACzB9xU,EAAO8H,EAAQ9H,MAAQimC,EACvB0sS,EAAuB,KAoB3B,SAASL,IAEP,IADA,IAAInsU,EAAO,GAAI0M,EAAM/L,UAAUrI,OACvBoU,KAAQ1M,EAAM0M,GAAQ/L,UAAW+L,GAGzC,IAAK8/T,EAAsB,CACzBA,EAAuBC,GAAWP,EAAS,iBAAkBC,EAAWO,mBAKtEX,GAAkBG,KAAcH,GAAkBG,GAAY,IAAIx/S,MAAQI,KAJ3D,SAAb6/S,IACFH,EAAuB,KACvBT,GAAkBG,GAAUhuS,OAAOyuS,EACrC,GAEF,CAGA,OAAOH,EAAqBp7R,MAAK,SAAU3yB,GAGzC,GAFiBA,EAAI4sT,WAGnB,OAAOoB,GAAWP,EAAS,aAAc,CAACpsS,GAAIA,EAAI9/B,KAAMA,IAExD,MAAM,IAAIxB,MAAM,kFAEpB,GACF,CASA,OAnDA44C,EAAeA,GAAgBA,EAAan6C,KAAI,SAAU4tU,GAexD,MAbmB,oBAARA,GAAuBA,EAAI6B,mBACpCb,IAAqB,EACrBhB,EAAMoB,GAAmB,CACvBC,SAAUA,EACVryU,KAAO,IAAMA,EAAO,0BAA6BgxU,EAAIhxU,KACrDo7H,KAAO,wBAA2B23M,GAAkB/B,GAAQ,SAE9DgB,IAAqB,GAGnBhB,GAAOA,EAAI6B,mBACb7B,EAAMA,EAAI6B,kBAEL7B,CACT,IA2BAsB,EAAWO,iBAAmB,CAC5B5B,gBAAgB,EAChBhrS,GAAIA,EACJjmC,KAAMA,EACNu9C,aAAcA,EACd69E,KAAM23M,GAAkB33M,GACxB21M,iBAAkBA,GAAoBgC,GAAkBhC,IAEnDuB,CACT,CA0BA,SAASS,GAAkBluP,GACzB,IAAIvtE,EAAMutE,EAAGv9E,WAKb,OAHK,YAAYvI,KAAKuY,IAAQ,YAAYvY,KAAKuY,KAC7CA,EAAM,YAAcA,GAEfA,CACT,CAmCA,SAASs7T,GAAWP,EAAUnwR,EAAQ3X,GACpC,IAAIyoS,EAAWrC,KACXY,IAAcQ,GAalB,OAZAI,GAAaZ,GAAa,SAAU55D,GAC9BA,EAASn1J,QACXwwN,EAAS17R,QAAQqgO,EAASh5Q,QAE1Bq0U,EAAS5tP,OAAO,IAAIzgF,MAAO,mBAAqBu9C,EAAS,UAAay1N,EAASvvP,OAEnF,EAzCF,SAAmBiqT,GACjB,IAAIxH,EAASoH,GAAQI,GACrB,IAAKxH,EAAQ,CAEX,IAAIoI,EAAYF,GAAkBlC,KAGlChG,EAASoH,GAAQI,GAAY,IAAI9nU,OAC/B01E,IAAIC,gBACF,IAAIqjP,KACF,CAAE,gCAAmC8O,EAAS7vU,QAAQ,MAAO,IAAO,aAAeywU,EAAY,OAC/F,CAACxnU,KAAM,8BAMNgtD,UAAY,SAAUtrD,GAC3B,IAAIwqQ,EAAWxqQ,EAAEo9B,KACb2oS,EAAQv7D,EAAS45D,UACjBvyR,EAAWmzR,GAAae,GAC5B,IAAKl0R,EACH,MAAM,IAAIr6C,MAAM,gEAEXwtU,GAAae,GACpBl0R,EAAS24N,EACX,CACF,CACA,OAAOkzD,CACT,CAaEsI,CAAUd,GAAU35Q,YAAY,CAC9B64Q,UAAWA,EACXrvR,OAAQA,EACR3X,KAAMA,IAEDyoS,CACT,CAOA,IAAII,GAAoChB,GAAmB,CACzDpyU,KAAM,WACNu9C,aAAc,CAACozR,IACfv1M,KAAM,SAASi4M,GACb,OAAOA,CACT,ICvmBF,SAASC,KACT,IAAIpuU,EAAW,SAAUA,GAKvB,SAASquU,EAAwBxmK,EAAIC,EAAIG,EAAIC,EAAI0M,EAAIC,EAAI57K,EAAGq1U,GAC1D,IAAI9pF,EAAK,EAAIvrP,EACbq1U,EAASzwU,EAAI2mP,EAAKA,EAAK38E,EAAK,EAAI28E,EAAKvrP,EAAIgvK,EAAKhvK,EAAIA,EAAI27K,EACtD05J,EAAStlU,EAAIw7O,EAAKA,EAAK18E,EAAK,EAAI08E,EAAKvrP,EAAIivK,EAAKjvK,EAAIA,EAAI47K,CACxD,CAKA,SAAS05J,EAAoB1mK,EAAIC,EAAIG,EAAIC,EAAI0M,EAAIC,EAAI+xE,EAAI4nF,EAAIv1U,EAAGq1U,GAC9D,IAAI9pF,EAAK,EAAIvrP,EACbq1U,EAASzwU,EAAI2mP,EAAKA,EAAKA,EAAK38E,EAAK,EAAI28E,EAAKA,EAAKvrP,EAAIgvK,EAAK,EAAIu8E,EAAKvrP,EAAIA,EAAI27K,EAAK37K,EAAIA,EAAIA,EAAI2tP,EAC1F0nF,EAAStlU,EAAIw7O,EAAKA,EAAKA,EAAK18E,EAAK,EAAI08E,EAAKA,EAAKvrP,EAAIivK,EAAK,EAAIs8E,EAAKvrP,EAAIA,EAAI47K,EAAK57K,EAAIA,EAAIA,EAAIu1U,CAC5F,CAkBA,SAASC,EAAmBC,EAAYC,GAGtC,IAFA,IACIr1U,EAAOs1U,EAAQC,EAAQC,EAAOC,EAD9BC,EAAY,wBAER11U,EAAQ01U,EAAUr3T,KAAK+2T,IAAc,CAC3C,IAAIztU,EAAO3H,EAAM,GACdgE,QAAQ,aAAc,IACtBG,MAAM,UACNS,KAAI,SAAU4K,GAAK,OAAO+J,WAAW/J,EAAI,IAC5C,OAAQxP,EAAM,IACZ,IAAK,IACHw1U,EAAQF,EAAS3tU,EAAK,GACtB8tU,EAAQF,EAAS5tU,EAAK,GACtB,MACF,IAAK,IACCA,EAAK,KAAO6tU,GAAS7tU,EAAK,KAAO8tU,GACnCJ,EAAgB,IAAKG,EAAOC,EAAQD,EAAQ7tU,EAAK,GAAM8tU,EAAQ9tU,EAAK,IAEtE,MACF,IAAK,IACH0tU,EAAgB,IAAKG,EAAOC,EAAQD,EAAQ7tU,EAAK,GAAM8tU,EAAQ9tU,EAAK,GAAKA,EAAK,GAAIA,EAAK,IACvF,MAEF,IAAK,IACH0tU,EAAgB,IAAKG,EAAOC,EAAQD,EAAQ7tU,EAAK,GAAM8tU,EAAQ9tU,EAAK,GAAKA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACzG,MAEF,IAAK,IACC6tU,IAAUF,GAAUG,IAAUF,GAChCF,EAAgB,IAAKG,EAAOC,EAAOH,EAAQC,GAInD,CACF,CAUA,SAASI,EAAoBP,EAAYQ,EAAiBC,QACnC,IAAhBA,IAAyBA,EAAc,IAE5C,IAAIC,EAAY,CAAEvxU,EAAG,EAAGmL,EAAG,GAC3BylU,EAAmBC,GAAY,SAAUvzQ,EAASk0Q,EAAQC,EAAQC,EAAMC,EAAMC,EAAQC,EAAQC,EAAQC,GACpG,OAAQz0Q,GACN,IAAK,IACH+zQ,EAAgBG,EAAQC,EAAQC,EAAMC,GACtC,MACF,IAAK,IAGH,IAFA,IAAIK,EAAaR,EACbS,EAAaR,EACRjxU,EAAI,EAAGA,EAAI8wU,EAAa9wU,IAC/BgwU,EACEgB,EAAQC,EACRG,EAAQC,EACRH,EAAMC,EACNnxU,GAAK8wU,EAAc,GACnBC,GAEFF,EAAgBW,EAAYC,EAAYV,EAAUvxU,EAAGuxU,EAAUpmU,GAC/D6mU,EAAaT,EAAUvxU,EACvBiyU,EAAaV,EAAUpmU,EAEzB,MAEF,IAAK,IAGH,IAFA,IAAI+mU,EAAeV,EACfW,EAAeV,EACVW,EAAM,EAAGA,EAAMd,EAAac,IACnC1B,EACEc,EAAQC,EACRG,EAAQC,EACRC,EAAQC,EACRL,EAAMC,EACNS,GAAOd,EAAc,GACrBC,GAEFF,EAAgBa,EAAcC,EAAcZ,EAAUvxU,EAAGuxU,EAAUpmU,GACnE+mU,EAAeX,EAAUvxU,EACzBmyU,EAAeZ,EAAUpmU,EAKjC,GACF,CAEA,IAAIknU,EAAqB,0IAErBC,EAAkB,6GAElBplU,EAAQ,IAAI23C,QAEZ0tR,EAAkB,CACpB9wJ,oBAAoB,EACpBwwD,uBAAuB,EACvBxF,WAAW,EACXp6H,OAAO,GAUT,SAASmgO,EAAkBC,EAAYx2R,GACrC,IAAIyU,EAAK+hR,EAAW11L,WAAa01L,EAAW11L,WAAW,QAASw1L,GAAmBE,EAC/Ex9P,EAAU/nE,EAAM2mB,IAAI68B,GACxB,IAAKukB,EAAS,KAaH6iI,EAAT,SAAuB76M,GACrB,IAAI6/T,EAAM1sO,EAAWnzF,GACrB,IAAK6/T,KACHA,EAAM1sO,EAAWnzF,GAAQyzD,EAAGonJ,aAAa76M,IAEvC,MAAM,IAAI2E,MAAO3E,EAAO,kBAG5B,OAAO6/T,CACT,EAESn7G,EAAT,SAAwB1rM,EAAKvN,GAC3B,IAAIuuL,EAASvmI,EAAG+wJ,aAAa/4M,GAO7B,OANAgoD,EAAGgxJ,aAAazqB,EAAQhhL,GACxBy6C,EAAGixJ,cAAc1qB,GAKVA,CACT,EAuFSy7I,EAAT,WACEtiP,EAAa,CAAC,EACd2oH,EAAW,CAAC,EACZ11C,EAAW,CAAC,EACZy+D,GAAe,EACf6wG,EAAiBj3U,OAAS,CAC5B,EA7HI6+L,EAA6C,qBAA3B+T,wBAA0C59I,aAAc49I,uBAC1El+G,EAAa,CAAC,EACd2oH,EAAW,CAAC,EACZ11C,EAAW,CAAC,EACZy+D,GAAe,EACf6wG,EAAmB,GAEvBjiR,EAAGosF,OAAOp1I,iBAAiB,oBAAoB,SAAU0C,GACvDsoU,IACAtoU,EAAEm6B,gBACJ,IAAG,GAqHHr3B,EAAM6lB,IAAI29B,EAAIukB,EAAU,CACtBvkB,GAAIA,EACJ6pI,SAAUA,EACVud,aAAcA,EACd86H,YAjGF,SAAsB31U,EAAM02I,EAAMk/L,EAAM7vU,GACtC,IAAK+1M,EAAS97M,GAAO,CACnB,IAAI+4E,EAAa,CAAC,EACdk8G,EAAW,CAAC,EACZkZ,EAAU16I,EAAG61J,gBACjB71J,EAAG03J,aAAahd,EAASuW,EAAchuE,EAAMjjF,EAAGoiR,gBAChDpiR,EAAG03J,aAAahd,EAASuW,EAAckxH,EAAMniR,EAAGqiR,kBAChDriR,EAAG43J,YAAYld,GAEf2N,EAAS97M,GAAQ,CACfmuM,QAASA,EACT4nI,YAAa,SAAsBhwU,GACjC0tD,EAAGqqK,WAAW3vB,GACdpoM,EAAK,CACHiwU,WAAY,SAAqBvqU,EAAMzL,GAErC,IADA,IAAI4T,EAAS,GAAIf,EAAM/L,UAAUrI,OAAS,EAClCoU,KAAQ,GAAIe,EAAQf,GAAQ/L,UAAW+L,EAAM,GAErD,IAAIojU,EAAahhJ,EAASj1L,KAAUi1L,EAASj1L,GAAQyzD,EAAG6wJ,mBAAmBnW,EAASnuM,IACpFyzD,EAAI,UAAYhoD,GAAO9E,MAAM8sD,EAAI,CAAEwiR,GAAa3tU,OAAQsL,GAC1D,EAEA+F,aAAc,SAAuB3Z,EAAMosD,EAAMm9H,EAAO2sJ,EAAmB3rS,GACzE,IAAI7wB,EAAOq/D,EAAW/4E,GACjB0Z,IACHA,EAAOq/D,EAAW/4E,GAAQ,CACxBu8G,IAAK9oD,EAAGoqI,eACRnkG,IAAKjmC,EAAG04J,kBAAkBhe,EAASnuM,GACnCuqC,KAAM,OAGVkpB,EAAGqqI,WAAWrqI,EAAG0iR,aAAcz8T,EAAK6iG,KACpC9oD,EAAGk7I,oBAAoBj1L,EAAKggF,IAAKttC,EAAMqH,EAAG2iR,OAAO,EAAO,EAAG,GAC3D3iR,EAAG+6I,wBAAwB90L,EAAKggF,KAC5B4jG,EACF7pI,EAAG4iR,oBAAoB38T,EAAKggF,IAAKw8O,GAEjCr7H,EAAa,0BAA0By7H,yBAAyB58T,EAAKggF,IAAKw8O,GAExE3rS,IAAS7wB,EAAK6wB,OAChBkpB,EAAGsqI,WAAWtqI,EAAG0iR,aAAc5rS,EAAMg/I,GACrC7vK,EAAK6wB,KAAOA,EAEhB,GAEJ,EAEJ,CAEAuxK,EAAS97M,GAAM+1U,YAAYhwU,EAC7B,EAgDEwwU,YA9CF,SAAsBv2U,EAAM+F,GAC1B8+N,IACA,IACEpxK,EAAGgqK,cAAchqK,EAAG+iR,SAAW3xG,GAC/B,IAAI38D,EAAU9B,EAASpmK,GAClBkoK,IACHA,EAAU9B,EAASpmK,GAAQyzD,EAAG+oK,gBAC9B/oK,EAAGgpK,YAAYhpK,EAAGgjR,WAAYvuK,GAC9Bz0G,EAAGipK,cAAcjpK,EAAGgjR,WAAYhjR,EAAGijR,mBAAoBjjR,EAAGkjR,SAC1DljR,EAAGipK,cAAcjpK,EAAGgjR,WAAYhjR,EAAGmjR,mBAAoBnjR,EAAGkjR,UAE5DljR,EAAGgpK,YAAYhpK,EAAGgjR,WAAYvuK,GAC9BniK,EAAKmiK,EAAS28D,EAChB,CAAE,QACAA,GACF,CACF,EA+BEgyG,uBA7BF,SAAiC3uK,EAAS28D,EAAa9+N,GACrD,IAAI63N,EAAcnqK,EAAG8xK,oBACrBmwG,EAAiB/xU,KAAKi6N,GACtBnqK,EAAGkqK,gBAAgBlqK,EAAGqjR,YAAal5G,GACnCnqK,EAAGgqK,cAAchqK,EAAG+iR,SAAW3xG,GAC/BpxK,EAAGgpK,YAAYhpK,EAAGgjR,WAAYvuK,GAC9Bz0G,EAAGmwK,qBAAqBnwK,EAAGqjR,YAAarjR,EAAGsjR,kBAAmBtjR,EAAGgjR,WAAYvuK,EAAS,GACtF,IACEniK,EAAK63N,EACP,CAAE,QACAnqK,EAAG0tK,kBAAkBvD,GACrBnqK,EAAGkqK,gBAAgBlqK,EAAGqjR,YAAapB,IAAmBA,EAAiBj3U,OAAS,IAAM,KACxF,CACF,EAiBEg3U,kBAAmBA,GAEvB,CACAz2R,EAASg5B,EACX,CAGA,SAASg/P,EAAgBxB,EAAYtxK,EAAWnhK,EAAGmL,EAAG8G,EAAOC,EAAQkyT,EAAUvpG,QAC3D,IAAbupG,IAAsBA,EAAW,SACjB,IAAhBvpG,IAAyBA,EAAc,MAE5C23G,EAAiBC,GAAY,SAAU5wT,GACrC,IAAI6uC,EAAK7uC,EAAI6uC,GACTkiR,EAAc/wT,EAAI+wT,aAGtBY,EAFkB3xT,EAAI2xT,aAEV,QAAQ,SAAUU,EAAKC,GACjCzjR,EAAGkpK,WAAWlpK,EAAGgjR,WAAY,EAAGhjR,EAAG0jR,KAAMniU,EAAOC,EAAQ,EAAGw+C,EAAG0jR,KAAM1jR,EAAG2jR,cAAelzK,GACtFyxK,EAAY,OAAQP,EAAoBC,GAAiB,SAAUzwT,GACjE,IAAIoxT,EAAapxT,EAAIoxT,YAGrBr8T,EAFmBiL,EAAIjL,cAEV,MAAO,EAAG85C,EAAG4jR,YAAa,EAAG,IAAI37K,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KAC3Es6K,EAAW,KAAM,QAASkB,GAC1BzjR,EAAGkqK,gBAAgBlqK,EAAGqjR,YAAal5G,GAAe,MAClDnqK,EAAG47D,QAAQ57D,EAAG6jR,OACd7jR,EAAG8lK,UAAqB,EAAX4tG,EAAyB,EAAXA,EAAyB,EAAXA,EAAyB,EAAXA,GACvD1zQ,EAAGw0G,SAASllK,EAAGmL,EAAG8G,EAAOC,GACzBw+C,EAAGs0G,QAAQhlK,EAAGmL,EAAG8G,EAAOC,GACxBw+C,EAAGq9I,WAAWr9I,EAAG8jR,UAAW,EAAG,EACjC,GACF,GACF,GACF,CAsBA,IAAIC,EAA0BpyU,OAAOkjB,OAAO,CAC1C/G,UAAW,KACXg0T,iBAAkBA,EAClByB,gBAAiBA,EACjBS,iCAlBF,SAA0C53L,EAAQ63L,EAAUC,GAC1D,IAAI3iU,EAAQ6qI,EAAO7qI,MACfC,EAAS4qI,EAAO5qI,OACpBsgU,EAAiB11L,GAAQ,SAAUj7H,GACjC,IAAI6uC,EAAK7uC,EAAI6uC,GAETlpB,EAAO,IAAI6xE,WAAWpnG,EAAQC,EAAS,GAC3Cw+C,EAAGopL,WAAW,EAAG,EAAG7nO,EAAOC,EAAQw+C,EAAG0jR,KAAM1jR,EAAG2jR,cAAe7sS,GAC9Ds1G,EAAO7qI,MAAQ0iU,EACf73L,EAAO5qI,OAAS0iU,EAChBX,EAAgBvjR,EAAIlpB,EAAM,EAAG,EAAGv1B,EAAOC,EACzC,GACF,IASA,SAAS2iU,EAAYC,EAAUC,EAAW/5O,EAAMyjD,EAASkpI,EAAaqtD,QAC/C,IAAhBA,IAAyBA,EAAc,GAE5C,IAAIC,EAAc,IAAI57N,WAAWy7N,EAAWC,GAExCG,EAAez2L,EAAQ,GAAKA,EAAQ,GACpC02L,EAAgB12L,EAAQ,GAAKA,EAAQ,GAGrC7/C,EAAW,GACfwyO,EAAmBp2O,GAAM,SAAUovE,EAAIC,EAAI0M,EAAIC,GAC7Cp4E,EAASh+F,KAAK,CACZwpK,GAAIA,EAAIC,GAAIA,EAAI0M,GAAIA,EAAIC,GAAIA,EAC5BvJ,KAAM1sK,KAAKiuC,IAAIo7H,EAAI2M,GACnBrJ,KAAM3sK,KAAKiuC,IAAIq7H,EAAI2M,GACnBpJ,KAAM7sK,KAAKC,IAAIopK,EAAI2M,GACnBlJ,KAAM9sK,KAAKC,IAAIqpK,EAAI2M,IAEvB,IAGAp4E,EAAStB,MAAK,SAAUx9F,EAAGuK,GAAK,OAAOvK,EAAE8tK,KAAOvjK,EAAEujK,IAAM,IAIxD,IAAK,IAAIwnK,EAAO,EAAGA,EAAON,EAAUM,IAClC,IAAK,IAAIC,EAAO,EAAGA,EAAON,EAAWM,IAAQ,CAC3C,IAAIC,EAAaC,EACf92L,EAAQ,GAAKy2L,GAAgBE,EAAO,IAAON,EAC3Cr2L,EAAQ,GAAK02L,GAAiBE,EAAO,IAAON,GAM1Cl7K,EAAQ94J,KAAKs1J,IAAK,EAAIt1J,KAAK4f,IAAI20T,GAAc3tD,EAAcqtD,GAAe,EAC1EM,EAAa,IACfz7K,EAAQ,EAAIA,GAGdA,EAAQ94J,KAAKC,IAAI,EAAGD,KAAKiuC,IAAI,IAAKjuC,KAAK83J,MAAc,IAARgB,KAC7Co7K,EAAYI,EAAOP,EAAWM,GAAQv7K,CACxC,CAGF,OAAOo7K,EASP,SAASM,EAA2Bv1U,EAAGmL,GAIrC,IAHA,IAAIqqU,EAAgBvoR,IAChBwoR,EAAcxoR,IAETzsD,EAAIo+F,EAASljG,OAAQ8E,KAAM,CAClC,IAAI40I,EAAMx2C,EAASp+F,GACnB,GAAI40I,EAAIw4B,KAAO6nK,GAAez1U,EAAK,MACnC,GAAIA,EAAIy1U,EAAcrgM,EAAIq4B,MAAQtiK,EAAIsqU,EAAcrgM,EAAIy4B,MAAQ1iK,EAAIsqU,EAAcrgM,EAAIs4B,KAAM,CAC1F,IAAIgoK,EAASC,EAA+B31U,EAAGmL,EAAGiqI,EAAIg1B,GAAIh1B,EAAIi1B,GAAIj1B,EAAI2hC,GAAI3hC,EAAI4hC,IAC1E0+J,EAASF,IACXA,EAAgBE,EAChBD,EAAc10U,KAAK04J,KAAK+7K,GAE5B,CACF,CAMA,OAOF,SAAwBx1U,EAAGmL,GAEzB,IADA,IAAIyqU,EAAU,EACLp1U,EAAIo+F,EAASljG,OAAQ8E,KAAM,CAClC,IAAI40I,EAAMx2C,EAASp+F,GACnB,GAAI40I,EAAIw4B,MAAQ5tK,EAAK,MACFo1I,EAAIi1B,GAAKl/J,IAAQiqI,EAAI4hC,GAAK7rK,GAAQnL,GAAKo1I,EAAI2hC,GAAK3hC,EAAIg1B,KAAOj/J,EAAIiqI,EAAIi1B,KAAOj1B,EAAI4hC,GAAK5hC,EAAIi1B,IAAMj1B,EAAIg1B,KAElHwrK,GAAWxgM,EAAIi1B,GAAKj1B,EAAI4hC,GAAK,GAAK,EAEtC,CACA,OAAmB,IAAZ4+J,CACT,CArBMC,CAAc71U,EAAGmL,KACnBsqU,GAAeA,GAEVA,CACT,CAkBF,CAEA,SAASK,EAAqBhB,EAAUC,EAAW/5O,EAAMyjD,EAASkpI,EAAaqtD,EAAal4L,EAAQ98I,EAAGmL,EAAGqtK,QACnF,IAAhBw8J,IAAyBA,EAAc,QACjC,IAANh1U,IAAeA,EAAI,QACb,IAANmL,IAAeA,EAAI,QACP,IAAZqtK,IAAqBA,EAAU,GAEpCu9J,EAA0BjB,EAAUC,EAAW/5O,EAAMyjD,EAASkpI,EAAaqtD,EAAal4L,EAAQ,KAAM98I,EAAGmL,EAAGqtK,EAC9G,CAEA,SAASu9J,EAA2BjB,EAAUC,EAAW/5O,EAAMyjD,EAASkpI,EAAaqtD,EAAavC,EAAY53G,EAAa76N,EAAGmL,EAAGqtK,QAC1G,IAAhBw8J,IAAyBA,EAAc,QACjC,IAANh1U,IAAeA,EAAI,QACb,IAANmL,IAAeA,EAAI,QACP,IAAZqtK,IAAqBA,EAAU,GAKpC,IAHA,IAAIhxI,EAAOqtS,EAAWC,EAAUC,EAAW/5O,EAAMyjD,EAASkpI,EAAaqtD,GAEnEgB,EAAW,IAAI38N,WAAyB,EAAd7xE,EAAK9rC,QAC1B8E,EAAI,EAAGA,EAAIgnC,EAAK9rC,OAAQ8E,IAC/Bw1U,EAAa,EAAJx1U,EAAQg4K,GAAWhxI,EAAKhnC,GAEnCyzU,EAAgBxB,EAAYuD,EAAUh2U,EAAGmL,EAAG2pU,EAAUC,EAAW,GAAM,EAAIv8J,EAAUqiD,EACvF,CAKA,SAAS86G,EAAgC31U,EAAGmL,EAAG8qU,EAAQC,EAAQC,EAAQC,GACrE,IAAIC,EAAMF,EAASF,EACfK,EAAMF,EAASF,EACf1pK,EAAW6pK,EAAMA,EAAMC,EAAMA,EAC7Bl7U,EAAIoxK,EAAWzrK,KAAKC,IAAI,EAAGD,KAAKiuC,IAAI,IAAKhvC,EAAIi2U,GAAUI,GAAOlrU,EAAI+qU,GAAUI,GAAO9pK,IAAa,EAChGp6B,EAAKpyI,GAAKi2U,EAAS76U,EAAIi7U,GACvBlkM,EAAKhnI,GAAK+qU,EAAS96U,EAAIk7U,GAC3B,OAAOlkM,EAAKA,EAAKD,EAAKA,CACxB,CAEA,IAAIokM,EAA0Bl0U,OAAOkjB,OAAO,CAC1C/G,UAAW,KACXg4T,SAAU3B,EACV4B,mBAAoBX,EACpBY,wBAAyBX,IAGvBY,EAAa,mSAEbC,EAAe,iyBAEfC,EAAe,wMAGfC,EAAc,IAAIn+K,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAE/Co+K,EAAkB,KAClBC,GAAmB,EACnBC,EAAc,CAAC,EACfC,EAAkB,IAAIryR,QAE1B,SAASsyR,EAAiB1E,GACxB,IAAKuE,IAAqBhhB,EAAYyc,GACpC,MAAM,IAAI7wU,MAAM,iCAEpB,CAEA,SAASw1U,EAAYtC,EAAUC,EAAW/5O,EAAMyjD,EAASkpI,EAAaqtD,EAAavC,GAIjF,QAHqB,IAAhBuC,IAAyBA,EAAc,QACxB,IAAfvC,IAAwBA,EAAa,OAErCA,KACHA,EAAasE,GACI,CACf,IAAIj6L,EAAoC,oBAApB2/E,gBAChB,IAAIA,gBAAgB,EAAG,GACH,qBAAbr1N,SACLA,SAASC,cAAc,UACvB,KACN,IAAKy1I,EACH,MAAM,IAAIl7I,MAAM,+CAElB6wU,EAAasE,EAAkBj6L,EAAOC,WAAW,QAAS,CAAE1qC,OAAO,GACrE,CAGF8kO,EAAgB1E,GAEhB,IAAIuD,EAAW,IAAI38N,WAAWy7N,EAAWC,EAAY,GAGrDvC,EAAiBC,GAAY,SAAU5wT,GACrC,IAAI6uC,EAAK7uC,EAAI6uC,GACT8iR,EAAc3xT,EAAI2xT,YAClBM,EAAyBjyT,EAAIiyT,uBAEjCN,EAAY,YAAY,SAAUruK,EAAS28D,GACzCpxK,EAAGkpK,WAAWlpK,EAAGgjR,WAAY,EAAGhjR,EAAG0jR,KAAMU,EAAUC,EAAW,EAAGrkR,EAAG0jR,KAAM1jR,EAAG2jR,cAAe,MAE5FP,EAAuB3uK,EAAS28D,GAAa,SAAUjH,GACrD67G,EACE5B,EACAC,EACA/5O,EACAyjD,EACAkpI,EACAqtD,EACAtkR,EACAmqK,EACA,EACA,EACA,GAEFnqK,EAAGopL,WAAW,EAAG,EAAGg7F,EAAUC,EAAWrkR,EAAG0jR,KAAM1jR,EAAG2jR,cAAe2B,EACtE,GACF,GACF,IAIA,IADA,IAAIxuS,EAAO,IAAI6xE,WAAWy7N,EAAWC,GAC5Bv0U,EAAI,EAAGmT,EAAI,EAAGnT,EAAIw1U,EAASt6U,OAAQ8E,GAAK,EAC/CgnC,EAAK7zB,KAAOqiU,EAASx1U,GAGvB,OAAOgnC,CACT,CAEA,SAAS6vS,EAAqBvC,EAAUC,EAAW/5O,EAAMyjD,EAASkpI,EAAaqtD,EAAal4L,EAAQ98I,EAAGmL,EAAGqtK,QACnF,IAAhBw8J,IAAyBA,EAAc,QACjC,IAANh1U,IAAeA,EAAI,QACb,IAANmL,IAAeA,EAAI,QACP,IAAZqtK,IAAqBA,EAAU,GAEpCk+J,EAAwB5B,EAAUC,EAAW/5O,EAAMyjD,EAASkpI,EAAaqtD,EAAal4L,EAAQ,KAAM98I,EAAGmL,EAAGqtK,EAC5G,CAEA,SAASk+J,EAAyB5B,EAAUC,EAAW/5O,EAAMyjD,EAASkpI,EAAaqtD,EAAavC,EAAY53G,EAAa76N,EAAGmL,EAAGqtK,QACxG,IAAhBw8J,IAAyBA,EAAc,QACjC,IAANh1U,IAAeA,EAAI,QACb,IAANmL,IAAeA,EAAI,QACP,IAAZqtK,IAAqBA,EAAU,GAGpC2+J,EAAgB1E,GAGhB,IAAI6E,EAAoB,GACxBlG,EAAmBp2O,GAAM,SAAUovE,EAAIC,EAAI0M,EAAIC,GAC7CsgK,EAAkB12U,KAAKwpK,EAAIC,EAAI0M,EAAIC,EACrC,IACAsgK,EAAoB,IAAI3+K,aAAa2+K,GAErC9E,EAAiBC,GAAY,SAAU5wT,GACrC,IAAI6uC,EAAK7uC,EAAI6uC,GACT6pI,EAAW14K,EAAI04K,SACfud,EAAej2L,EAAIi2L,aACnB86H,EAAc/wT,EAAI+wT,YAClBY,EAAc3xT,EAAI2xT,YAClBM,EAAyBjyT,EAAIiyT,uBAC7BpB,EAAoB7wT,EAAI6wT,kBAmE5B,GAjEAc,EAAY,gBAAgB,SAAU+D,EAAqBC,GACrD1C,IAAayC,EAAoBE,YAAc1C,IAAcwC,EAAoBG,aACnFhnR,EAAGkpK,WACDlpK,EAAGgjR,WAAY,EAAGhjR,EAAG0jR,KACrBmD,EAAoBE,WAAa3C,EACjCyC,EAAoBG,YAAc3C,EAClC,EAAGrkR,EAAG0jR,KAAM1jR,EAAG2jR,cAAe,MAKlCzB,EAAY,OAAQ+D,EAAYC,GAAc,SAAU/0T,GACtD,IAAIjL,EAAeiL,EAAIjL,aACnBq8T,EAAapxT,EAAIoxT,WAGjB0E,GAAuBp9I,GAAYud,EAAa,0BAChD8/H,GAAwBr9I,GAAYud,EAAa,oBAGrDlhM,EAAa,MAAO,EAAG85C,EAAG4jR,YAAa,EAAGwC,GAC1ClgU,EAAa,eAAgB,EAAG85C,EAAGmnR,aAAc,EAAGP,GAGpDrE,EAAWrvU,WAAM,EAAQ,CAAE,KAAM,gBAAiB2B,OAAQk5I,IAC1Dw0L,EAAW,KAAM,eAAgBtrD,GACjCsrD,EAAW,KAAM,YAAa+B,GAG9BlB,EAAuByD,EAAqBC,GAAyB,SAAU38G,GAC7EnqK,EAAGs8J,OAAOt8J,EAAG6jR,OACb7jR,EAAG8lK,WAAU,GAAM,GAAM,GAAM,GAC/B9lK,EAAGw0G,SAAS,EAAG,EAAG4vK,EAAUC,GAC5BrkR,EAAGs0G,QAAQ,EAAG,EAAG8vK,EAAUC,GAC3BrkR,EAAG4pK,UAAU5pK,EAAGw3P,IAAKx3P,EAAGw3P,KAGxBx3P,EAAG0pK,sBAAsB1pK,EAAGonR,SAAUv9I,EAAW7pI,EAAGqnR,IAAMH,EAAqB19G,SAC/ExpK,EAAGzsD,MAAMysD,EAAGsnR,kBACRz9I,EACF7pI,EAAGunR,oBAAoBvnR,EAAG8jR,UAAW,EAAG,EAAG8C,EAAkB57U,OAAS,GAEtEi8U,EAAoBO,yBAAyBxnR,EAAG8jR,UAAW,EAAG,EAAG8C,EAAkB57U,OAAS,EAMhG,GACF,IAGAk3U,EAAY,OAAQP,EAAoBwE,GAAc,SAAUzrI,GAC9DA,EAAQx0L,aAAa,MAAO,EAAG85C,EAAG4jR,YAAa,EAAGwC,GAClD1rI,EAAQ6nI,WAAW,KAAM,MAAOuE,GAChC9mR,EAAGkqK,gBAAgBlqK,EAAGqjR,YAAal5G,GACnCnqK,EAAG47D,QAAQ57D,EAAG6jR,OACd7jR,EAAG8lK,UAAsB,IAAZh+C,EAA2B,IAAZA,EAA2B,IAAZA,EAA2B,IAAZA,GAC1D9nH,EAAGw0G,SAASllK,EAAGmL,EAAG2pU,EAAUC,GAC5BrkR,EAAGs0G,QAAQhlK,EAAGmL,EAAG2pU,EAAUC,GAC3BrkR,EAAGq9I,WAAWr9I,EAAG8jR,UAAW,EAAG,EACjC,GACF,IAGI9jR,EAAGynR,gBAEL,MADAzF,IACM,IAAI9wU,MAAM,qBAEpB,GACF,CAEA,SAASo0T,EAAayc,GACpB,IAAInsU,EAAQmsU,GAAcA,IAAesE,EAAkCtE,EAAW31L,QAAU21L,EAApCwE,EACxDxgB,EAAYygB,EAAgBrjT,IAAIvtB,GACpC,QAAkB4H,IAAduoT,EAAyB,CAC3BugB,GAAmB,EACnB,IAAIoB,EAAa,KACjB,IAIE,IAAIC,EAAiB,CACnB,GAAI,IAAK,GAAI,GACb,GAAI,IAAK,IAAK,GACd,GAAI,IAAK,IAAK,GACd,GAAI,GAAI,IAAK,IAEXC,EAAalB,EACf,EACA,EACA,yBACA,CAAC,EAAG,EAAG,GAAI,IACX,GACA,EACA3E,GAEFhc,EAAY6hB,GAAcD,EAAe38U,SAAW48U,EAAW58U,QAC7D48U,EAAWzgQ,OAAM,SAAU3yE,EAAK1E,GAAK,OAAO0E,IAAQmzU,EAAe73U,EAAI,IACpEi2T,IACH2hB,EAAa,wBACbvgU,QAAQs6E,KAAKkmP,EAAgBC,GAEjC,CAAE,MAAO37T,GAEP85S,GAAY,EACZ2hB,EAAaz7T,EAAI6nC,OACnB,CACI4zR,GACFvgU,QAAQk/C,KAAK,sCAAuCqhR,GAEtDpB,GAAmB,EACnBE,EAAgBnkT,IAAIzsB,EAAKmwT,EAC3B,CACA,OAAOA,CACT,CAEA,IAAI8hB,EAAqBl2U,OAAOkjB,OAAO,CACrC/G,UAAW,KACXg4T,SAAUY,EACVX,mBAAoBY,EACpBX,wBAAyBA,EACzB1gB,YAAaA,IA4Ff,OAVA7zT,EAAQyuU,mBAAqBA,EAC7BzuU,EAAQq0U,SAnER,SACE1B,EACAC,EACA/5O,EACAyjD,EACAkpI,EACAqtD,QAEqB,IAAhBrtD,IAAyBA,EAAc5mR,KAAKC,IAAIy9I,EAAQ,GAAKA,EAAQ,GAAIA,EAAQ,GAAKA,EAAQ,IAAM,QACpF,IAAhBu2L,IAAyBA,EAAc,GAE5C,IACE,OAAOoC,EAAWxzU,MAAM20U,EAAOx0U,UACjC,CAAE,MAAMqG,KAEN,OADAyN,QAAQs6E,KAAK,kDAAmD/nF,KACzDyqU,EAAWjxU,MAAM2yU,EAAYxyU,UACtC,CACF,EAmDA5B,EAAQs0U,mBA5BR,SACE3B,EACAC,EACA/5O,EACAyjD,EACAkpI,EACAqtD,EACAl4L,EACA98I,EACAmL,EACAqtK,QAEqB,IAAhBmvG,IAAyBA,EAAc5mR,KAAKC,IAAIy9I,EAAQ,GAAKA,EAAQ,GAAIA,EAAQ,GAAKA,EAAQ,IAAM,QACpF,IAAhBu2L,IAAyBA,EAAc,QACjC,IAANh1U,IAAeA,EAAI,QACb,IAANmL,IAAeA,EAAI,QACP,IAAZqtK,IAAqBA,EAAU,GAEpC,IACE,OAAO6+J,EAAqBzzU,MAAM20U,EAAOx0U,UAC3C,CAAE,MAAMqG,KAEN,OADAyN,QAAQs6E,KAAK,kDAAmD/nF,KACzD0rU,EAAqBlyU,MAAM2yU,EAAYxyU,UAChD,CACF,EAKA5B,EAAQo0U,WAAaA,EACrBp0U,EAAQivU,mBAAqBA,EAC7BjvU,EAAQo2U,MAAQA,EAChBp2U,EAAQsyU,WAAaA,EAErBpyU,OAAOC,eAAeH,EAAS,aAAc,CAAEI,OAAO,IAE/CJ,CAET,CAhzBe,CAgzBb,CAAC,GACH,OAAOA,CACP,CCmLA,OAt+BA,WACA,IAAIq2U,EAAQ,SAAUr2U,GAGpB,IAAIs2U,EAAO,CACT,EAAK,gLACL,GAAM,qEACN,GAAM,mCACN,GAAM,uGACN,GAAM,mCACN,GAAM,0CACN,EAAK,iBACL,EAAK,QACL,GAAM,yBACN,GAAM,6wBACN,GAAM,+LACN,IAAO,gsCACP,GAAM,sIACN,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAGLC,EAAQ,CAAC,EACTC,EAAiB,CAAC,EACtBD,EAAMv7R,EAAI,EACVw7R,EAAe,GAAK,IACpBt2U,OAAOqD,KAAK+yU,GAAMpyU,SAAQ,SAAUqC,EAAMlI,GACxCk4U,EAAMhwU,GAAQ,GAAMlI,EAAI,EACxBm4U,EAAeD,EAAMhwU,IAASA,CAChC,IACArG,OAAOkjB,OAAOmzT,GAEd,IAAIE,EAAqBF,EAAMG,IAAMH,EAAMI,IAAMJ,EAAMK,IACnDC,EAAeN,EAAMv7R,EAAIu7R,EAAM72R,EAAI62R,EAAMO,GACzCC,EAAwBR,EAAM36S,EAAI26S,EAAM7vR,EAAI6vR,EAAMS,GAAKT,EAAMU,GAAKV,EAAMK,IAAML,EAAMG,IAAMH,EAAMI,IAAMJ,EAAMW,IAC5GC,EAAgBZ,EAAMa,GAAKb,EAAMc,IAAMd,EAAMe,IAAMf,EAAMgB,IAAMhB,EAAMiB,IAAMjB,EAAMkB,IACjFC,EAAiBnB,EAAM7vR,EAAI6vR,EAAMS,GAAKT,EAAM36S,EAAI66S,EAAqBF,EAAMW,IAAMC,EAEjFj5U,EAAM,KAgCV,SAASy5U,EAAiBxmS,GAExB,OAhCF,WACE,IAAKjzC,EAAK,CAERA,EAAM,IAAI4gC,IACV,IAAI8wC,EAAO,SAAWrpE,GACpB,GAAI+vU,EAAK92U,eAAe+G,GAAO,CAC7B,IAAIqxU,EAAW,EACftB,EAAK/vU,GAAM9I,MAAM,KAAKyG,SAAQ,SAAUulC,GACtC,IAAI/pB,EAAM+pB,EAAMhsC,MAAM,KAClBo6U,EAAOn4T,EAAI,GACX2wE,EAAO3wE,EAAI,GACfm4T,EAAO/kU,SAAS+kU,EAAM,IACtBxnP,EAAOA,EAAOv9E,SAASu9E,EAAM,IAAM,EACnCnyF,EAAI0yB,IAAIgnT,GAAYC,EAAMtB,EAAMhwU,IAChC,IAAK,IAAIlI,EAAI,EAAGA,EAAIgyF,EAAMhyF,IACxBH,EAAI0yB,MAAMgnT,EAAUrB,EAAMhwU,GAE9B,GACF,CACF,EAEA,IAAK,IAAIA,KAAQ+vU,EAAM1mQ,EAAMrpE,EAE/B,CACF,CAOEuxU,GACO55U,EAAIwzB,IAAIyf,EAAK4mS,YAAY,KAAOxB,EAAMv7R,CAC/C,CAOA,IAsCIg9R,EAAaC,EAAaC,EAtC1BC,EAAS,CACX,MAAS,4MACT,UAAa,wOAWf,SAASC,EAAmBC,EAAeC,GACzC,IAIIC,EAHAX,EAAW,EACX15U,EAAM,IAAI4gC,IACV05S,EAAaF,GAAkB,IAAIx5S,IAkBvC,OAhBAu5S,EAAc56U,MAAM,KAAKyG,SAAQ,SAASu0U,EAAMnlP,GAC9C,IAA4B,IAAxBA,EAAMnlF,QAAQ,KAChB,IAAK,IAAI9P,GAAKi1F,EAAOj1F,KACnBo6U,EAAMF,OAEH,CACLA,EAAWjlP,EACX,IAAI5zE,EAAM4zE,EAAM71F,MAAM,KAClBE,EAAI+hB,EAAI,GACRxX,EAAIwX,EAAI,GACZ/hB,EAAI+B,OAAOg5U,cAAcd,GAAY9kU,SAASnV,EAftC,KAgBRuK,EAAIxI,OAAOg5U,cAAcd,GAAY9kU,SAAS5K,EAhBtC,KAiBRhK,EAAI0yB,IAAIjzB,EAAGuK,GACXowU,GAAkBE,EAAW5nT,IAAI1oB,EAAGvK,EACtC,CACF,IACO,CAAEO,IAAKA,EAAKs6U,WAAYA,EACjC,CAIA,SAASG,IACP,IAAKX,EAAa,CAEhB,IAAIt4T,EAAM04T,EAAkBD,EAAOS,OAAO,GACtC16U,EAAMwhB,EAAIxhB,IACVs6U,EAAa94T,EAAI84T,WACrBR,EAAc95U,EACd+5U,EAAcO,EACdN,EAAYE,EAAkBD,EAAOD,WAAW,GAAOh6U,GAEzD,CACF,CAEA,SAAS26U,EAAyB1nS,GAEhC,OADAwnS,IACOX,EAAYtmT,IAAIyf,IAAS,IAClC,CAEA,SAAS2nS,EAAyB3nS,GAEhC,OADAwnS,IACOV,EAAYvmT,IAAIyf,IAAS,IAClC,CAEA,SAAS4nS,EAAqB5nS,GAE5B,OADAwnS,IACOT,EAAUxmT,IAAIyf,IAAS,IAChC,CAGA,IAAI6nS,EAASzC,EAAMv7R,EACfi+R,EAAS1C,EAAM72R,EACfw5R,EAAU3C,EAAM4C,GAChBC,EAAU7C,EAAM8C,GAChBC,EAAU/C,EAAMgD,GAChBC,EAAUjD,EAAMkD,GAChBC,EAAUnD,EAAMoD,GAChBC,EAASrD,EAAM36S,EACfi+S,EAAStD,EAAM7vR,EACfozR,EAAUvD,EAAMU,GAChB8C,EAAUxD,EAAMa,GAChB4C,EAAWzD,EAAM0D,IACjBC,EAAU3D,EAAMO,GAChBqD,EAAW5D,EAAMiB,IACjB4C,EAAW7D,EAAMgB,IACjB8C,EAAW9D,EAAMe,IACjBgD,EAAW/D,EAAMc,IACjBkD,EAAWhE,EAAMkB,IACjB+C,EAAWjE,EAAMG,IACjB+D,EAAWlE,EAAMI,IACjB+D,EAAWnE,EAAMK,IACjB+D,EAAWpE,EAAMW,IA4oBrB,IAEI0D,EAFAv1S,EAAO,kmBAmBX,SAASw1S,EAAsB1pS,GAE7B,OAjBF,WACE,IAAKypS,EAAW,CAEd,IAAIl7T,EAAM04T,EAAkB/yS,GAAM,GAC9BnnC,EAAMwhB,EAAIxhB,IACGwhB,EAAI84T,WAEVt0U,SAAQ,SAAU9D,EAAO+D,GAClCjG,EAAI0yB,IAAIzsB,EAAK/D,EACf,IACAw6U,EAAY18U,CAEd,CACF,CAGEokG,GACOs4O,EAAUlpT,IAAIyf,IAAS,IAChC,CAqCA,SAAS2pS,EAAmB//T,EAAQggU,EAAuBtuS,EAAOC,GAChE,IAAIsuS,EAASjgU,EAAOxhB,OACpBkzC,EAAQ7tC,KAAKC,IAAI,EAAY,MAAT4tC,EAAgB,GAAKA,GACzCC,EAAM9tC,KAAKiuC,IAAImuS,EAAS,EAAU,MAAPtuS,EAAcsuS,EAAS,GAAKtuS,GAEvD,IAAI+vD,EAAW,GAsCf,OArCAs+O,EAAsBE,WAAW/2U,SAAQ,SAAUg3U,GACjD,IAAIC,EAAYv8U,KAAKC,IAAI4tC,EAAOyuS,EAAUzuS,OACtC2uS,EAAUx8U,KAAKiuC,IAAIH,EAAKwuS,EAAUxuS,KACtC,GAAIyuS,EAAYC,EAAS,CAMvB,IAJA,IAAIC,EAAaN,EAAsB5kU,OAAO5D,MAAM4oU,EAAWC,EAAU,GAIhE/8U,EAAI+8U,EAAS/8U,GAAK88U,GAAcxD,EAAgB58T,EAAO1c,IAAMq5U,EAAiBr5U,IACrFg9U,EAAWh9U,GAAK68U,EAAUnlU,MAO5B,IAFA,IAAIulU,EAAWJ,EAAUnlU,MACrBwlU,EAAczwR,IACTmlR,EAAM,EAAGA,EAAMoL,EAAW9hV,OAAQ02U,IAAO,CAChD,IAAIl6T,EAAQslU,EAAWpL,GACnBl6T,EAAQulU,IAAYA,EAAWvlU,GAC/BA,EAAQwlU,IAAeA,EAAsB,EAARxlU,EAC3C,CACA,IAAK,IAAIylU,EAAMF,EAAUE,GAAOD,EAAaC,IAC3C,IAAK,IAAIC,EAAM,EAAGA,EAAMJ,EAAW9hV,OAAQkiV,IACzC,GAAIJ,EAAWI,IAAQD,EAAK,CAE1B,IADA,IAAIE,EAAWD,EACRA,EAAM,EAAIJ,EAAW9hV,QAAU8hV,EAAWI,EAAM,IAAMD,GAC3DC,IAEEA,EAAMC,GACRj/O,EAASh+F,KAAK,CAACi9U,EAAWjvS,EAAOgvS,EAAMhvS,GAE3C,CAGN,CACF,IACOgwD,CACT,CA2BA,SAASk/O,EAAoB5gU,EAAQ6gU,EAAmBnvS,EAAOC,GAI7D,IAHA,IAAI+vD,EAAWq+O,EAAmB//T,EAAQ6gU,EAAmBnvS,EAAOC,GAEhEo8I,EAAU,GACLzqL,EAAI,EAAGA,EAAI0c,EAAOxhB,OAAQ8E,IACjCyqL,EAAQzqL,GAAKA,EAYf,OATAo+F,EAASv4F,SAAQ,SAAUwb,GAKzB,IAJA,IAAI+sB,EAAQ/sB,EAAI,GACZgtB,EAAMhtB,EAAI,GAEVnN,EAAQu2K,EAAQv2K,MAAMk6B,EAAOC,EAAM,GAC9BruC,EAAIkU,EAAMhZ,OAAQ8E,KACzByqL,EAAQp8I,EAAMruC,GAAKkU,EAAMlU,EAE7B,IACOyqL,CACT,CAgBA,OAdA9oL,EAAQ84U,wBAA0BA,EAClC94U,EAAQ23U,gBAAkBA,EAC1B33U,EAAQ67U,oBAn4BR,SAA6B1qS,GAC3B,OAAOqlS,EAAemB,EAAgBxmS,GACxC,EAk4BAnxC,EAAQ+4U,oBAAsBA,EAC9B/4U,EAAQ87U,mBApxBR,SAA6B/gU,EAAQghU,GAKnC,IAJA,IAGIC,EAAY,IAAI9yO,YAAYnuF,EAAOxhB,QAC9B8E,EAAI,EAAGA,EAAI0c,EAAOxhB,OAAQ8E,IACjC29U,EAAU39U,GAAKs5U,EAAgB58T,EAAO1c,IAGxC,IAAI49U,EAAiB,IAAIn9S,IACzB,SAASo9S,EAAe79U,EAAGkI,GACzB,IAAI45S,EAAU67B,EAAU39U,GACxB29U,EAAU39U,GAAKkI,EACf01U,EAAerrT,IAAIuvR,EAAS87B,EAAevqT,IAAIyuR,GAAW,GACtDA,EAAU42B,GACZkF,EAAerrT,IAAImmT,EAAuBkF,EAAevqT,IAAIqlT,GAAyB,GAExFkF,EAAerrT,IAAIrqB,GAAO01U,EAAevqT,IAAInrB,IAAS,GAAK,GACvDA,EAAOwwU,GACTkF,EAAerrT,IAAImmT,GAAwBkF,EAAevqT,IAAIqlT,IAA0B,GAAK,EAEjG,CASA,IAPA,IAAIoF,EAAc,IAAIjlO,WAAWn8F,EAAOxhB,QACpC6iV,EAAiB,IAAIt9S,IAIrBm8S,EAAa,GACbC,EAAY,KACPjL,EAAM,EAAGA,EAAMl1T,EAAOxhB,OAAQ02U,IAChCiL,GACHD,EAAWx8U,KAAKy8U,EAAY,CAC1BzuS,MAAOwjS,EACPvjS,IAAK3xB,EAAOxhB,OAAS,EAErBwc,MAAyB,QAAlBgmU,EAA0B,EAAsB,QAAlBA,EAA0B,EAAIM,GAAwBpM,GAAK,KAGhG+L,EAAU/L,GAAO2J,IACnBsB,EAAUxuS,IAAMujS,EAChBiL,EAAY,MAShB,IALA,IAAIoB,EAAmBhC,EAAWD,EAAWD,EAAWD,EAAW1D,EAAqBkE,EAAWJ,EAAWX,EAC1G2C,EAAW,SAAU7zU,GAAK,OAAOA,GAAU,EAAJA,EAAS,EAAI,EAAI,EACxD8zU,EAAU,SAAU9zU,GAAK,OAAOA,GAAU,EAAJA,EAAS,EAAI,EAAI,EAGlD+zU,EAAU,EAAGA,EAAUxB,EAAW1hV,OAAQkjV,IAAW,CAE5D,IAAIC,EAAc,CAAC,CACjBnmU,QAFF2kU,EAAYD,EAAWwB,IAEH1mU,MAClB4mU,UAAW,EACXC,SAAU,IAERC,OAAY,EACZC,EAAuB,EACvBC,EAAyB,EACzBC,EAAoB,EACxBf,EAAen6U,QAGf,IAAK,IAAI25U,EAAMP,EAAUzuS,MAAOgvS,GAAOP,EAAUxuS,IAAK+uS,IAAO,CAC3D,IAAIwB,EAAWjB,EAAUP,GAUzB,GATAoB,EAAWH,EAAYA,EAAYnjV,OAAS,GAG5C0iV,EAAerrT,IAAIqsT,GAAWhB,EAAevqT,IAAIurT,IAAa,GAAK,GAC/DA,EAAWlG,GACbkF,EAAerrT,IAAImmT,GAAwBkF,EAAevqT,IAAIqlT,IAA0B,GAAK,GAI3FkG,EAAWX,EACb,GAAIW,GAAY3C,EAAWD,GAAW,CACpC8B,EAAYV,GAAOoB,EAAStmU,OAC5B,IAAIR,GAASknU,IAAa3C,EAAWkC,EAAUD,GAAUM,EAAStmU,QAC9DR,GA9EI,MA8EmB+mU,IAAyBC,EAClDL,EAAYj+U,KAAK,CACf8X,OAAQR,EACR4mU,UAAW,EACXC,SAAU,IAEFE,GACVC,GAEJ,MAGK,GAAIE,GAAY7C,EAAWD,GAAW,CACzCgC,EAAYV,GAAOoB,EAAStmU,OAC5B,IAAI2mU,IAAWD,IAAa7C,EAAWoC,EAAUD,GAAUM,EAAStmU,QAChE2mU,IA7FI,MA6FqBJ,IAAyBC,EACpDL,EAAYj+U,KAAK,CACf8X,OAAQ2mU,GACRP,UAAYM,EAAW7C,EAAYnB,EAASD,EAC5C4D,SAAU,IAEFE,GACVC,GAEJ,MAGK,GAAIE,EAAWxG,EAAoB,CAElCwG,EAAWvC,IACbuC,EAAsD,IAA3CZ,GAAwBZ,EAAM,GAAG,GAAchB,EAAWD,GAGvE2B,EAAYV,GAAOoB,EAAStmU,OACxBsmU,EAASF,WACXT,EAAeT,EAAKoB,EAASF,WAE/B,IAAIQ,IAAWF,IAAaxC,EAAW+B,EAAUD,GAAUM,EAAStmU,QAChE4mU,IApHI,KAoH6C,IAAzBL,GAAyD,IAA3BC,GACxDC,IACAN,EAAYj+U,KAAK,CACf8X,OAAQ4mU,GACRR,UAAW,EACXC,SAAU,EACVQ,eAAgB3B,KAGlBqB,GAEJ,MAGK,GAAIG,EAAWtC,EAAU,CAC5B,GAAImC,EAAuB,EACzBA,SACK,GAAIE,EAAoB,EAAG,CAEhC,IADAD,EAAyB,GACjBL,EAAYA,EAAYnjV,OAAS,GAAGqjV,UAC1CF,EAAY/pR,MAGd,IAAI0qR,GAAgBX,EAAYA,EAAYnjV,OAAS,GAAG6jV,eACnC,MAAjBC,KACFjB,EAAexrT,IAAIysT,GAAe5B,GAClCW,EAAexrT,IAAI6qT,EAAK4B,KAE1BX,EAAY/pR,MACZqqR,GACF,CACAH,EAAWH,EAAYA,EAAYnjV,OAAS,GAC5C4iV,EAAYV,GAAOoB,EAAStmU,OACxBsmU,EAASF,WACXT,EAAeT,EAAKoB,EAASF,UAEjC,MAISM,EAAW1C,GACW,IAAzBuC,IACEC,EAAyB,EAC3BA,KACUF,EAASD,UAAYF,EAAYnjV,OAAS,IACpDmjV,EAAY/pR,MACZkqR,EAAWH,EAAYA,EAAYnjV,OAAS,KAGhD4iV,EAAYV,GAAOoB,EAAStmU,QAIrB0mU,EAAWrD,IAClBuC,EAAYV,GAAOP,EAAUnlU,YAM/BomU,EAAYV,GAAOoB,EAAStmU,OAExBsmU,EAASF,WAAaM,IAAalD,GACrCmC,EAAeT,EAAKoB,EAASF,UAGnC,CAYA,IAFA,IAAIW,GAAY,GACZC,GAAa,KACRC,GAAMtC,EAAUzuS,MAAO+wS,IAAOtC,EAAUxuS,IAAK8wS,KAAO,CAC3D,IAAIC,GAAazB,EAAUwB,IAC3B,KAAMC,GAAatG,GAAgB,CACjC,IAAIqE,GAAMW,EAAYqB,IAClBE,GAAaD,GAAahH,EAC1BkH,GAAQF,KAAe9C,EACvB4C,IAAc/B,KAAQ+B,GAAWhnU,QACnCgnU,GAAW18F,KAAO28F,GAClBD,GAAWK,kBAAoBF,IAE/BJ,GAAU7+U,KAAK8+U,GAAa,CAC1B38F,OAAQ48F,GACR38F,KAAM28F,GACNjnU,OAAQilU,GACRqC,eAAgBF,GAChBC,kBAAmBF,IAGzB,CACF,CAEA,IADA,IAAII,GAAmB,GACdC,GAAS,EAAGA,GAAST,GAAU/jV,OAAQwkV,KAAU,CACxD,IAAIzjC,GAAMgjC,GAAUS,IACpB,IAAKzjC,GAAIujC,gBAAmBvjC,GAAIujC,iBAAmBzB,EAAersS,IAAIuqQ,GAAI15D,QAAU,CAElF,IADA,IAAIo9F,GAAU,CAACT,GAAajjC,IACnB2jC,QAAY,EAASV,IAAcA,GAAWK,mBAAyE,OAAnDK,GAAW7B,EAAe1qT,IAAI6rT,GAAW18F,QACpH,IAAK,IAAIq9F,GAAMH,GAAS,EAAGG,GAAMZ,GAAU/jV,OAAQ2kV,KACjD,GAAIZ,GAAUY,IAAKt9F,SAAWq9F,GAAU,CACtCD,GAAQv/U,KAAK8+U,GAAaD,GAAUY,KACpC,KACF,CAKJ,IADA,IAAIC,GAAa,GACRC,GAAM,EAAGA,GAAMJ,GAAQzkV,OAAQ6kV,KAEtC,IADA,IAAIC,GAAQL,GAAQI,IACX5sU,GAAI6sU,GAAMz9F,OAAQpvO,IAAK6sU,GAAMx9F,KAAMrvO,KAC1C2sU,GAAW1/U,KAAK+S,IAMpB,IAFA,IAAI8sU,GAAanC,EAAYgC,GAAW,IACpCI,GAAYrD,EAAUnlU,MACjByoU,GAAML,GAAW,GAAK,EAAGK,IAAO,EAAGA,KAC1C,KAAMxC,EAAUwC,IAAOrH,GAAgB,CACrCoH,GAAYpC,EAAYqC,IACxB,KACF,CAEF,IAAI3/H,GAAYs/H,GAAWA,GAAW5kV,OAAS,GAC3CklV,GAAYtC,EAAYt9H,IACxB6/H,GAAYxD,EAAUnlU,MAC1B,KAAMimU,EAAUn9H,IAAa43H,GAC3B,IAAK,IAAIkI,GAAM9/H,GAAY,EAAG8/H,IAAOzD,EAAUxuS,IAAKiyS,KAClD,KAAM3C,EAAU2C,IAAOxH,GAAgB,CACrCuH,GAAYvC,EAAYwC,IACxB,KACF,CAGJb,GAAiBr/U,KAAK,CACpBmgV,YAAaT,GACbU,SAAUjgV,KAAKC,IAAI0/U,GAAWD,IAAc,EAAIrF,EAASD,EACzD8F,SAAUlgV,KAAKC,IAAI6/U,GAAWD,IAAa,EAAIxF,EAASD,GAE5D,CACF,CAGA,IAAK,IAAI+F,GAAS,EAAGA,GAASjB,GAAiBvkV,OAAQwlV,KAAU,CAC/D,IAAIr/T,GAAMo+T,GAAiBiB,IACvBC,GAAet/T,GAAIk/T,YACnBK,GAAUv/T,GAAIm/T,SACdK,GAAUx/T,GAAIo/T,SAOlB,GAAI7C,EAAevqT,IAAIsoT,GACrB,IAAK,IAAI/6R,GAAK,EAAGA,GAAK+/R,GAAazlV,OAAQ0lD,KAAM,CAC/C,IAAIkgS,GAAMH,GAAa//R,IACvB,GAAI+8R,EAAUmD,IAAOnF,EAAU,CAE7B,IADA,IAAIoF,GAAWH,GACNx5R,GAAKxG,GAAK,EAAGwG,IAAM,EAAGA,KAC7B,KAAMu2R,EAAUgD,GAAav5R,KAAO0xR,GAAgB,CAClDiI,GAAWpD,EAAUgD,GAAav5R,KAClC,KACF,CAEFy2R,EAAeiD,GAAMC,IAAY3I,EAAqBkE,GAAab,EAAUsF,GAC/E,CACF,CAKF,GAAInD,EAAevqT,IAAIwnT,GACrB,IAAK,IAAImG,GAAO,EAAGA,GAAOL,GAAazlV,OAAQ8lV,KAAQ,CACrD,IAAIC,GAAMN,GAAaK,IACvB,GAAIrD,EAAUsD,IAAOpG,EACnB,IAAK,IAAIqG,GAAOF,GAAO,EAAGE,KAAS,EAAGA,KAAQ,CAC5C,IAAIC,IAAyB,IAAVD,GAAcN,GAAUjD,EAAUgD,GAAaO,KAClE,GAAIC,GAAe3I,EAAc,CAC3B2I,KAAiBtF,GACnBgC,EAAeoD,GAAK9F,GAEtB,KACF,CACF,CAEJ,CAIF,GAAIyC,EAAevqT,IAAIwoT,GACrB,IAAK,IAAIuF,GAAO,EAAGA,GAAOT,GAAazlV,OAAQkmV,KAAQ,CACrD,IAAIC,GAAOV,GAAaS,IACpBzD,EAAU0D,IAAQxF,GACpBgC,EAAewD,GAAMzG,EAEzB,CAKF,GAAIgD,EAAevqT,IAAI0nT,IAAY6C,EAAevqT,IAAIgoT,GACpD,IAAK,IAAIiG,GAAO,EAAGA,GAAOX,GAAazlV,OAAS,EAAGomV,KAAQ,CACzD,IAAIC,GAAOZ,GAAaW,IACxB,GAAI3D,EAAU4D,KAASxG,EAAUM,GAAU,CAEzC,IADA,IAAImG,GAAa,EAAGC,GAAW,EACtBC,GAAOJ,GAAO,EAAGI,IAAQ,IAChCF,GAAa7D,EAAUgD,GAAae,MACjB5I,EAFgB4I,MAMrC,IAAK,IAAIC,GAAOL,GAAO,EAAGK,GAAOhB,GAAazlV,SAC5CumV,GAAW9D,EAAUgD,GAAagB,MACjB7I,EAFmC6I,MAMlDH,KAAeC,KAAa9D,EAAU4D,MAAUxG,EAAUyG,KAAe3G,EAAW2G,IAAc3G,EAAUM,KAC9G0C,EAAe0D,GAAMC,GAEzB,CACF,CAIF,GAAI5D,EAAevqT,IAAIwnT,GACrB,IAAK,IAAI+G,GAAO,EAAGA,GAAOjB,GAAazlV,OAAQ0mV,KAAQ,CACrD,IAAIC,GAAOlB,GAAaiB,IACxB,GAAIjE,EAAUkE,IAAQhH,EAAS,CAC7B,IAAK,IAAIiH,GAAOF,GAAO,EAAGE,IAAQ,GAAMnE,EAAUgD,GAAamB,MAAU7G,EAAUnC,GAAiBgJ,KAClGjE,EAAe8C,GAAamB,IAAOjH,GAErC,IAAK,IAAIkH,GAAOH,GAAO,EAAGG,GAAOpB,GAAazlV,QAAWyiV,EAAUgD,GAAaoB,MAAU9G,EAAUnC,GAAiBiJ,KACnHlE,EAAe8C,GAAaoB,IAAOlH,EAEvC,CACF,CAIF,GAAI+C,EAAevqT,IAAI4nT,IAAY2C,EAAevqT,IAAI0nT,IAAY6C,EAAevqT,IAAIgoT,GACnF,IAAK,IAAI2G,GAAO,EAAGA,GAAOrB,GAAazlV,OAAQ8mV,KAAQ,CACrD,IAAIC,GAAOtB,GAAaqB,IACxB,GAAIrE,EAAUsE,KAAShH,EAAUF,EAAUM,GAAU,CACnDwC,EAAeoE,GAAMxG,GAErB,IAAK,IAAIyG,GAAOF,GAAO,EAAGE,IAAQ,GAAMvE,EAAUgD,GAAauB,KAASpJ,EAAgBoJ,KACtFrE,EAAe8C,GAAauB,IAAOzG,GAErC,IAAK,IAAI0G,GAAOH,GAAO,EAAGG,GAAOxB,GAAazlV,QAAWyiV,EAAUgD,GAAawB,KAASrJ,EAAgBqJ,KACvGtE,EAAe8C,GAAawB,IAAO1G,EAEvC,CACF,CAMF,GAAImC,EAAevqT,IAAIwnT,GACrB,IAAK,IAAIuH,GAAO,EAAGC,GAAiBzB,GAASwB,GAAOzB,GAAazlV,OAAQknV,KAAQ,CAC/E,IAAIE,GAAO3B,GAAayB,IACpBl6U,GAAOy1U,EAAU2E,IACjBp6U,GAAO2yU,EACLwH,KAAmB1H,GACrBkD,EAAeyE,GAAM3H,GAEdzyU,GAAOswU,IAChB6J,GAAiBn6U,GAErB,CAKF,GAAI01U,EAAevqT,IAAIqlT,GAAwB,CAW3C,IAPF,IAAI6J,GAAuB3H,EAASC,EAAUM,EAC1CqH,GAA2BD,GAAsB5H,EAGjD8H,GAAe,GAEbC,GAAc,GACTC,GAAO,EAAGA,GAAOhC,GAAazlV,OAAQynV,KAI7C,GAAIhF,EAAUgD,GAAagC,KAASjK,EAAuB,CACzD,IAAI5lS,GAAOp2B,EAAOikU,GAAagC,KAC3BC,QAAmB,EAEvB,GAAsC,OAAlCpI,EAAwB1nS,IAAgB,CAC1C,KAAI4vS,GAAYxnV,OAAS,IAGvB,MAFAwnV,GAAYtiV,KAAK,CAAE0yC,KAAMA,GAAM+vS,SAAUF,IAI7C,MAEK,GAA0D,QAArDC,GAAkBnI,EAAwB3nS,KAClD,IAAK,IAAIgwS,GAAWJ,GAAYxnV,OAAS,EAAG4nV,IAAY,EAAGA,KAAY,CACrE,IAAIC,GAAYL,GAAYI,IAAUhwS,KACtC,GAAIiwS,KAAcH,IAChBG,KAActI,EAAwBC,EAAoB5nS,MAC1D0nS,EAAwBE,EAAoBqI,OAAgBjwS,GAC5D,CACA2vS,GAAariV,KAAK,CAACsiV,GAAYI,IAAUD,SAAUF,KACnDD,GAAYxnV,OAAS4nV,GACrB,KACF,CACF,CAEJ,CAEFL,GAAa3lP,MAAK,SAAUx9F,EAAGuK,GAAK,OAAOvK,EAAE,GAAKuK,EAAE,EAAI,IAG1D,IAAK,IAAIm5U,GAAU,EAAGA,GAAUP,GAAavnV,OAAQ8nV,KAAW,CAS9D,IARA,IAAI9U,GAAQuU,GAAaO,IACrBC,GAAa/U,GAAM,GACnBgV,GAAchV,GAAM,GAIpBiV,IAAkB,EAClBC,GAAgB,EACXC,GAAOJ,GAAa,EAAGI,GAAOH,GAAaG,KAAQ,CAC1D,IAAIC,GAAO3C,GAAa0C,IACxB,GAAI1F,EAAU2F,IAAQd,GAA0B,CAC9CW,IAAkB,EAClB,IAAII,GAAM5F,EAAU2F,IAAQf,GAAuB3H,EAASD,EAC5D,GAAI4I,KAAOC,GAAkBF,IAAO,CAClCF,GAAgBG,GAChB,KACF,CACF,CACF,CAOA,GAAIJ,KAAoBC,GAAe,CACrCA,GAAgBxC,GAChB,IAAK,IAAI6C,GAAOR,GAAa,EAAGQ,IAAQ,EAAGA,KAAQ,CACjD,IAAIC,GAAO/C,GAAa8C,IACxB,GAAI9F,EAAU+F,IAAQlB,GAA0B,CAC9C,IAAImB,GAAQhG,EAAU+F,IAAQnB,GAAuB3H,EAASD,EAE5DyI,GADEO,KAASH,GAAkBE,IACbC,GAEAH,GAAkBE,IAEpC,KACF,CACF,CACF,CACA,GAAIN,GAAe,CAKjB,GAJAzF,EAAUgD,GAAasC,KAAetF,EAAUgD,GAAauC,KAAgBE,GAIzEA,KAAkBI,GAAkB7C,GAAasC,KACnD,IAAK,IAAIW,GAAQX,GAAa,EAAGW,GAAQjD,GAAazlV,OAAQ0oV,KAC5D,KAAMjG,EAAUgD,GAAaiD,KAAU9K,GAAgB,CACjDQ,EAAgB58T,EAAOikU,GAAaiD,MAAWjI,IACjDgC,EAAUgD,GAAaiD,KAAUR,IAEnC,KACF,CAGJ,GAAIA,KAAkBI,GAAkB7C,GAAauC,KACnD,IAAK,IAAIW,GAAQX,GAAc,EAAGW,GAAQlD,GAAazlV,OAAQ2oV,KAC7D,KAAMlG,EAAUgD,GAAakD,KAAU/K,GAAgB,CACjDQ,EAAgB58T,EAAOikU,GAAakD,MAAWlI,IACjDgC,EAAUgD,GAAakD,KAAUT,IAEnC,KACF,CAGN,CACF,CAKA,IAAK,IAAIU,GAAQ,EAAGA,GAAQnD,GAAazlV,OAAQ4oV,KAC/C,GAAInG,EAAUgD,GAAamD,KAAUpL,EAAuB,CAG1D,IAFA,IAAIqL,GAAaD,GAAOE,GAAWF,GAC/BG,GAAarD,GACRsD,GAAMJ,GAAQ,EAAGI,IAAO,EAAGA,KAAO,CACzC,KAAIvG,EAAUgD,GAAauD,KAAQpL,GAE5B,CACLmL,GAActG,EAAUgD,GAAauD,KAAQ3B,GAAuB3H,EAASD,EAC7E,KACF,CAJEoJ,GAAaG,EAKjB,CAEA,IADA,IAAIC,GAAatD,GACRuD,GAAQN,GAAQ,EAAGM,GAAQzD,GAAazlV,OAAQkpV,KAAS,CAChE,KAAIzG,EAAUgD,GAAayD,MAAW1L,EAAwBI,IAEvD,CACLqL,GAAcxG,EAAUgD,GAAayD,KAAU7B,GAAuB3H,EAASD,EAC/E,KACF,CAJEqJ,GAAWI,EAKf,CACA,IAAK,IAAIC,GAAON,GAAYM,IAAQL,GAAUK,KAC5C1G,EAAUgD,GAAa0D,KAASJ,KAAeE,GAAaF,GAAaT,GAAkB7C,GAAa0D,KAE1GP,GAAQE,EACV,CAEJ,CACF,CAIA,IAAK,IAAIM,GAAOzH,EAAUzuS,MAAOk2S,IAAQzH,EAAUxuS,IAAKi2S,KAAQ,CAC9D,IAAIC,GAAUzG,EAAYwG,IACtBE,GAAS7G,EAAU2G,IA0BvB,GAxBc,EAAVC,GACEC,IAAU7J,EAASE,EAAUM,IAC/B2C,EAAYwG,MAMVE,GAAS5J,EACXkD,EAAYwG,MACHE,IAAUrJ,EAAUN,KAC7BiD,EAAYwG,KAAS,GAMrBE,GAAS1L,IACXgF,EAAYwG,IAAiB,IAATA,GAAazH,EAAUnlU,MAAQomU,EAAYwG,GAAO,IAMpEA,KAASzH,EAAUxuS,KAAOirS,EAAgB58T,EAAO4nU,MAAU9I,EAASD,GACtE,IAAK,IAAIkJ,GAAMH,GAAMG,IAAO,GAAMnL,EAAgB58T,EAAO+nU,KAAQpL,EAAiBoL,KAChF3G,EAAY2G,IAAO5H,EAAUnlU,KAGnC,CACF,CAIA,MAAO,CACLI,OAAQgmU,EACRlB,WAAYA,GAGd,SAASoB,GAAyB5vS,EAAOs2S,GAEvC,IAAK,IAAI1kV,EAAIouC,EAAOpuC,EAAI0c,EAAOxhB,OAAQ8E,IAAK,CAC1C,IAAI4+U,EAAWjB,EAAU39U,GACzB,GAAI4+U,GAAYhE,EAASiB,GACvB,OAAO,EAET,GAAK+C,GAAYrD,EAASZ,IAAa+J,GAAS9F,IAAatC,EAC3D,OAAO,EAET,GAAIsC,EAAWxG,EAAoB,CACjC,IAAIuM,EAAMC,GAAmB5kV,GAC7BA,GAAa,IAAT2kV,EAAajoU,EAAOxhB,OAASypV,CACnC,CACF,CACA,OAAO,CACT,CAEA,SAASC,GAAoBC,GAG3B,IADA,IAAIC,EAAiB,EACZ9kV,EAAI6kV,EAAe,EAAG7kV,EAAI0c,EAAOxhB,OAAQ8E,IAAK,CACrD,IAAI4+U,EAAWjB,EAAU39U,GACzB,GAAI4+U,EAAWrD,EACb,MAEF,GAAIqD,EAAWtC,GACb,GAAyB,MAAnBwI,EACJ,OAAO9kV,OAEA4+U,EAAWxG,GACpB0M,GAEJ,CACA,OAAQ,CACV,CAEA,SAAStB,GAAmBxjV,GAC1B,OAAyB,EAAjB89U,EAAY99U,GAAU46U,EAASD,CACzC,CAEF,EA8JAh5U,EAAQ66U,qBAAuBA,EAC/B76U,EAAQojV,yBA3HR,SAAkCroU,EAAQsoU,EAAiB52S,EAAOC,GAChE,IAAIsuS,EAASjgU,EAAOxhB,OACpBkzC,EAAQ7tC,KAAKC,IAAI,EAAY,MAAT4tC,EAAgB,GAAKA,GACzCC,EAAM9tC,KAAKiuC,IAAImuS,EAAS,EAAU,MAAPtuS,EAAcsuS,EAAS,GAAKtuS,GAGvD,IADA,IAAIxuC,EAAM,IAAI4gC,IACLzgC,EAAIouC,EAAOpuC,GAAKquC,EAAKruC,IAC5B,GAAyB,EAArBglV,EAAgBhlV,GAAQ,CAC1B,IAAIilV,EAASzI,EAAqB9/T,EAAO1c,IAC1B,OAAXilV,GACFplV,EAAI0yB,IAAIvyB,EAAGilV,EAEf,CAEF,OAAOplV,CACT,EA6GA8B,EAAQ86U,mBAAqBA,EAC7B96U,EAAQ27U,oBAAsBA,EAC9B37U,EAAQujV,mBA/CR,SAA4BxoU,EAAQ6gU,EAAmBnvS,EAAOC,GAC5D,IAAIo8I,EAAU6yJ,EAAoB5gU,EAAQ6gU,EAAmBnvS,EAAOC,GAChE82S,EAAQ,GAAGpgV,OAAQ2X,GAMvB,OALA+tK,EAAQ5kL,SAAQ,SAAUu/U,EAAWplV,GACnCmlV,EAAMnlV,IACmC,EAAtCu9U,EAAkBzlU,OAAOstU,GAAkB5I,EAAqB9/T,EAAO0oU,IAAc,OACnF1oU,EAAO0oU,EACd,IACOD,EAAMxkV,KAAK,GACpB,EAuCAgB,EAAQ64U,wBAA0BA,EAElC34U,OAAOC,eAAeH,EAAS,aAAc,CAAEI,OAAO,IAE/CJ,CAET,CAl+BY,CAk+BV,CAAC,GACH,OAAOq2U,CAAI,EC99BLqN,GAAiB,+BASvB,SAASC,GAAsBxgV,GAM7B,OAAOA,EAAO7F,QALE,oCAChB,SAAiBhE,EAAOmoN,GACtB,IAAIxiN,EAAQy6L,GAAY+nB,GACxB,OAAOxiN,EAAQ0kV,GAAqB1kV,GAAS3F,CAC/C,GAEF,CAUA,IAFA,IAAM65J,GAAO,GAEJ90J,GAAI,EAAGA,GAAI,IAAKA,KACvB80J,GAAK90J,KAAMA,GAAI,GAAK,IAAM,IAAOA,GAAG+D,SAAS,IAsB/C,IAAMie,GAASngB,OAAOmgB,QAAU,WAE9B,IADA,IAAInd,EAAStB,UAAU,GACdvD,EAAI,EAAGsP,EAAM/L,UAAUrI,OAAQ8E,EAAIsP,EAAKtP,IAAK,CACpD,IAAI8E,EAASvB,UAAUvD,GACvB,GAAI8E,EACF,IAAK,IAAIiN,KAAQjN,EACXA,EAAO3D,eAAe4Q,KACxBlN,EAAOkN,GAAQjN,EAAOiN,GAI9B,CACA,OAAOlN,CACT,EAGM0gV,GAAQtiV,KAAKC,MACbsiV,GAAoB,IAAInhS,QACxBohS,GAAuB,IAAIhlT,IAI7BilT,GAAqB,KA8DzB,SAASC,GAAsBC,EAAcrhV,GAK3C,IAAMshV,EA8SR,SAA0BthV,GACxB,IAAMuhV,EAAcz0R,KAAKC,UAAU/sD,EAASwhV,IACxCrjT,EAAKsjT,GAAmB3yT,IAAIyyT,GACtB,MAANpjT,GACFsjT,GAAmBzzT,IAAIuzT,EAAcpjT,IAAOujT,IAE9C,OAAOvjT,CACT,CArTqBwjT,CAAiB3hV,GAIhC4hV,EAAoBX,GAAkBnyT,IAAIuyT,GAI9C,GAHKO,GACHX,GAAkBjzT,IAAIqzT,EAAeO,EAAoBtkV,OAAOwd,OAAO,OAErE8mU,EAAkBN,GACpB,OAAO,IAAIM,EAAkBN,GAG/B,IAAMO,EAA2B,mBAAHrhV,OAAsB8gV,GAI9CzkK,EAAkB,SAAUilK,GAChCT,EAAaxkK,gBAAgBjhL,KAAKmD,KAAM+iV,GAGxC,IAAMviI,EAAWxgN,KAAK8oN,wBAA0B,IAAMi6H,EAAWn0J,aAAe,IAAMm0J,EAAWl0J,eAC7Fm0J,EAAkBb,GAAqB3hI,GAC3C,IAAKwiI,EAAiB,CACpB,IAAMC,EA4JZ,SAAuBj5U,EAAiC/I,EAASuB,GAAK,IAA7CosL,EAAY5kL,EAAZ4kL,aAAcC,EAAc7kL,EAAd6kL,eAEnCq0J,EAUEjiV,EAVFiiV,WACAC,EASEliV,EATFkiV,gBACAC,EAQEniV,EARFmiV,gBACAC,EAOEpiV,EAPFoiV,gBACAC,EAMEriV,EANFqiV,aACAC,EAKEtiV,EALFsiV,kBACAC,EAIEviV,EAJFuiV,kBACAC,EAGExiV,EAHFwiV,uBACAC,EAEEziV,EAFFyiV,eACAC,EACE1iV,EADF0iV,YAGFT,EAAaA,GAAc,GAC3BC,EAAkBA,GAAmB,GACrCC,EAAkBA,GAAmB,GACrCE,EAAeA,GAAgB,GAC/BC,EAAoBA,GAAqB,GACzCC,EAAoBA,GAAqB,IAGrCH,GAAmBK,KACrB90J,EAAeozJ,GAAqBpzJ,KAElC60J,GAA0BC,KAS5B70J,EAAiBmzJ,GAJjBnzJ,EAAiBA,EAAelzL,QAC9B,6FACA,uDAMJ,GAAI+nV,EAAgB,CAClB,IAAI/uR,EAAM+uR,EAAe,CAAC90J,aAAAA,EAAcC,eAAAA,IACxCD,EAAej6H,EAAIi6H,aACnBC,EAAiBl6H,EAAIk6H,cACvB,CAIA,GAAI40J,EAAwB,CAC1B,IAAIG,EAAa,GACjB/0J,EAAiBA,EAAelzL,QAC9B,qDACA,SAAAhE,GAEE,OADAisV,EAAW9mV,KAAKnF,GACT,EACT,IAEF6rV,EAAoB,GAAH/hV,OAAMgiV,EAAsB,MAAAhiV,OAAKmiV,EAAWvmV,KAAK,MAAK,MAAAoE,OAAK+hV,EAC9E,CAGA,GAAIG,EAAa,CACf,IAAM1+S,EAAO,mBAAHxjC,OAAsBkiV,EAAW,OAC3CT,EAAaj+S,EAAOi+S,EACpBI,EAAer+S,EAAOq+S,CACxB,CAGID,IAEFz0J,EAAe,wBAAHntL,OAA2Be,EAAG,0BAAAf,OACzBe,EAAG,sBAAAf,OACPe,EAAG,OAAAf,OAClBmtL,EAAY,MAEVs0J,EAAa,GAAHzhV,OAAMyhV,EAAU,gCAAAzhV,OACFe,EAAG,iEAAAf,OAC3B4hV,EAAe,SAGfF,EAAkB,qBAAH1hV,OACDe,EAAG,sCAAAf,OACLe,EAAG,gCAAAf,OACPe,EAAG,uCAAAf,OACQe,EAAG,qBAAAf,OAAoBe,EAAG,oBAAAf,OAAmBe,EAAG,gBAAAf,OAAee,EAAG,QAAAf,OACvF0hV,EAAe,MAEbv0J,EAAeA,EAAajzL,QAAQ,6BAA6B,SAAChE,EAAOksV,EAAQj1U,EAAOk1U,GACtF,MAAO,4BAA4B5rV,KAAK4rV,EAAQvwR,OAAO,EAAG3kD,IAAUi1U,EAAS,UAAHpiV,OAAaoiV,EAAM,KAAApiV,OAAIe,EACnG,KAOF,OAHAosL,EAAem1J,GAAqBn1J,EAAcpsL,EAAK0gV,EAAYC,EAAiBC,GACpFv0J,EAAiBk1J,GAAqBl1J,EAAgBrsL,EAAK8gV,EAAcC,EAAmBC,GAErF,CACL50J,aAAAA,EACAC,eAAAA,EAEJ,CA9PuBm1J,CAAejB,EAAY9hV,EAASshV,GACrDS,EAAkBb,GAAqB3hI,GAAYyiI,CACrD,CAGAF,EAAWn0J,aAAeo0J,EAAgBp0J,aAC1Cm0J,EAAWl0J,eAAiBm0J,EAAgBn0J,eAC5CnwK,GAAOqkU,EAAW30J,SAAUpuL,KAAKouL,UAG7BntL,EAAQ0iV,cACVZ,EAAW30J,SAASntL,EAAQ0iV,aAAe,CACzC,SAAIllV,GAAS,OAAOkB,KAAKC,MAAQqiV,EAAK,IAKtCjiV,KAAK8iV,IACP9iV,KAAK8iV,GAA0BC,EAEnC,EAEMkB,EAAkB,WACtB,OAAOC,EAAOjjV,EAAQkjV,QAAU7B,EAAeA,EAAaphV,QAC9D,EAEMgjV,EAAS,SAASpuT,GAEtB,IAAMsuT,EAAU7lV,OAAOwd,OAAO+Z,EAAMzvB,GAkBpC,OAfA9H,OAAOC,eAAe4lV,EAAS,eAAgB,CAAE3lV,MAAO6jV,IAGxD/jV,OAAOC,eAAe4lV,EAAS,KAAM,CAAE3lV,MAAO2jV,OAC9CgC,EAAQvoO,KAtKZ,WAIE,IAAMi2C,EAAqB,WAAhB70J,KAAKuxC,SAAwB,EAClCujH,EAAqB,WAAhB90J,KAAKuxC,SAAwB,EAClCwjH,EAAqB,WAAhB/0J,KAAKuxC,SAAwB,EAClCyjH,EAAqB,WAAhBh1J,KAAKuxC,SAAwB,EAOxC,OANagjH,GAAU,IAALM,GAAaN,GAAKM,GAAM,EAAI,KAAQN,GAAKM,GAAM,GAAK,KAAQN,GAAKM,GAAM,GAAK,KAAQ,IACpGN,GAAU,IAALO,GAAaP,GAAKO,GAAM,EAAI,KAAQ,IAAMP,GAAKO,GAAM,GAAK,GAAO,IAAQP,GAAKO,GAAM,GAAK,KAAQ,IACtGP,GAAU,GAALQ,EAAY,KAAQR,GAAKQ,GAAM,EAAI,KAAQ,IAAMR,GAAKQ,GAAM,GAAK,KAAQR,GAAKQ,GAAM,GAAK,KAC9FR,GAAU,IAALS,GAAaT,GAAKS,GAAM,EAAI,KAAQT,GAAKS,GAAM,GAAK,KAAQT,GAAKS,GAAM,GAAK,MAGvEthJ,aAEd,CAsJmBkhJ,GAGfuyL,EAAQh2J,SAAW1vK,GAAO,CAAC,EAAGoX,EAAKs4J,SAAUntL,EAAQmtL,UACrDg2J,EAAQz1J,QAAUjwK,GAAO,CAAC,EAAGoX,EAAK64J,QAAS1tL,EAAQ0tL,SACnDy1J,EAAQz1J,QAAQ,2BAADltL,OAA4B8gV,IAAgB,GAC3D6B,EAAQ93P,WAAa5tE,GAAO,CAAC,EAAGoX,EAAKw2D,WAAYrrF,EAAQqrF,YAGzD83P,EAAQz5M,gBAAavgI,EAEdg6U,CACT,EAEM/9U,EAAa,CACjB8T,YAAa,CAAC1b,MAAOwlV,GACrBI,kBAAmB,CAAC5lV,OAAO,GAE3BqqN,sBAAuB,CACrBl/M,UAAU,EACVD,cAAc,EACdlL,MAAO,WACL,OAAO6jV,EAAax5H,wBAA0B,IAAMy5H,CACtD,GAGFzkK,gBAAiB,CACf/tJ,IAAG,WACD,OAAO+tJ,CACT,EACA7uJ,IAAG,SAAC+uD,GACFh+E,KAAK8iV,GAA4B9kQ,CACnC,GAGF09E,KAAM,CACJ9xJ,UAAU,EACVD,cAAc,EACdlL,MAAO,SAAU+C,GAOf,OANA8gV,EAAa5mL,KAAK7+J,KAAKmD,KAAMwB,GACxB8gV,EAAa9yJ,kBAAqB8yJ,EAAa+B,oBAClD3lU,GAAO1e,KAAKssF,WAAY9qF,EAAO8qF,YAC/B5tE,GAAO1e,KAAK2uL,QAASntL,EAAOmtL,SAC5BjwK,GAAO1e,KAAKouL,SAAUE,GAAcptL,MAAMM,EAAO4sL,YAE5CpuL,IACT,GAGFkB,MAAO,CACL0I,UAAU,EACVD,cAAc,EACdlL,MAAO,WACL,IAAM6lV,EAAU,IAAIhC,EAAanoU,YACjC,OAAO+pU,EAAOI,GAAS5oL,KAAK17J,KAC9B,GAOFmwN,iBAAkB,CAChBvmN,UAAU,EACVD,cAAc,EACdlL,MAAO,WACL,IAAIqyN,EAAgB9wN,KAAKmvN,eAWzB,OAVK2B,KACHA,EAAgB9wN,KAAKmvN,eAAiBkzH,GACpCC,EAAa+B,kBACT/B,EAAanyH,mBACb,IAAIxJ,GAAkB,CAAE1C,aAAc70D,KAC1CnuJ,IAEY0tL,QAAQ41J,kBAAoB,GAC1CzzH,EAAc1iC,SAAWpuL,KAAKouL,UAEzB0iC,CACT,GAOF0zH,oBAAqB,CACnB56U,UAAU,EACVD,cAAc,EACdlL,MAAO,WACL,IAAIgmV,EAAmBzkV,KAAKovN,kBAW5B,OAVKq1H,KACHA,EAAmBzkV,KAAKovN,kBAAoBizH,GAC1CC,EAAa+B,kBACT/B,EAAakC,sBACb,IAAI59H,GACR3lN,IAEe0tL,QAAQ+1J,qBAAuB,GAChDD,EAAiBr2J,SAAWpuL,KAAKouL,UAE5Bq2J,CACT,GAGF/iL,QAAS,CACP93J,UAAU,EACVD,cAAc,EACdlL,MAAK,WACH,IAAO0wN,EAAqCnvN,KAArCmvN,eAAgBC,EAAqBpvN,KAArBovN,kBACnBD,GAAgBA,EAAeztD,UAC/B0tD,GAAmBA,EAAkB1tD,UACzC4gL,EAAa5gL,QAAQ7kK,KAAKmD,KAC5B,IAKJ,OADA6iV,EAAkBN,GAAc0B,EACzB,IAAIA,CACb,CAuGA,SAASF,GAAqBY,EAAYvlT,EAAIu7R,EAAMiqB,EAAOC,GAazD,OAZID,GAASC,GAASlqB,KACpBgqB,EAAaA,EAAWhpV,QAAQomV,GAAgB,KAAFtgV,OAChDk5T,EAAI,yBAAAl5T,OACe29B,EAAE,SAEnBulT,GAAc,sBAAJljV,OAEVmjV,EAAK,sBAAAnjV,OACS29B,EAAE,WAAA39B,OAChBojV,EAAK,QAGAF,CACT,CAGA,SAASlC,GAAoBjgV,EAAK/D,GAChC,MAAe,aAAR+D,OAAqB4H,EAA6B,oBAAV3L,EAAuBA,EAAMgC,WAAahC,CAC3F,CAEA,IAAIkkV,GAAS,EACPD,GAAqB,IAAIvlT,ICoM/B,IAII2nT,GAJEllV,GAAM,WAAH,OAAUuV,KAAK+7C,aAAevxD,MAAMC,KAAK,EAE5CmlV,GAAsBC,KAiC5B,IAAMC,GAA8B,WAClC,IAAMjqS,EAAQ,GAEVkqS,EAAQ,EACZ,SAASC,IAEP,IADA,IAAMr6S,EAAQlrC,KACPo7C,EAAMpjD,QAAUgI,KAAQkrC,EAJT,GAKpBkQ,EAAMxc,OAANwc,GAEFkqS,EAAQlqS,EAAMpjD,OAASiI,WAAWslV,EAAW,GAAK,CACpD,CACA,OAAO,WAAa,QAAAhwR,EAAAl1D,UAAArI,OAAT0H,EAAI,IAAA3C,MAAAw4D,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ91D,EAAI81D,GAAAn1D,UAAAm1D,GACb,IAAM+2Q,EAAWK,KAajB,OAZAxxR,EAAMl+C,MAAK,WACT,IAAMguC,EAAQlrC,KACd,IAAI,IAAAwlV,GACFA,EAAAL,GAAoBtQ,OAAM9B,mBAAkB7yU,MAAAslV,EAAI9lV,GAChD6sU,EAAS17R,QAAQ,CAAC40S,OAAQzlV,KAAQkrC,GACpC,CAAE,MAAMjyB,GACNszT,EAAS5tP,OAAO1lE,EAClB,CACF,IACKqsU,IACHA,EAAQrlV,WAAWslV,EAAW,IAEzBhZ,CACT,CACF,CA3BoC,GAgC9BmZ,GAAqC,WACzC,IAEMC,EAAU,CAAC,EACbC,EAAU,EACd,OAAO,SAASr3U,EAAOC,EAAQ8oF,EAAMyjD,EAAS+7B,EAAU+uK,EAAUzsM,EAAQ98I,EAAGmL,EAAGqtK,GAC9E,IAAM82J,EAAW,6BAAiCga,IALhC,EAMdE,EAASH,EAAQ/Z,GAgCrB,OA/BKka,IACHA,EAASH,EAAQ/Z,GAAY,CAC3Bma,aAAcpa,GAAmB,CAC/BpyU,KAAMqyU,EACNA,SAAAA,EACA90R,aAAc,CACZsuS,GACAplV,IAEF20H,KAAI,SAACqxN,EAAqBhmV,GACxB,IAAM8yU,EAAWkT,IAAsBnT,WAAWC,SAClD,OAAO,WACL,IAAM5nS,EAAQlrC,IAEd,MAAO,CACLuxU,YAFkBuB,EAAQ5yU,WAAC,EAADG,WAG1BolV,OAAQzlV,IAAQkrC,EAEpB,CACF,EACAo/R,iBAAgB,SAACpyU,GACf,MAAO,CAACA,EAAOq5U,YAAYh3K,OAC7B,IAEFp8E,SAAU,EACV8nQ,UAAW,OAIfH,EAAO3nQ,WACP39E,aAAaslV,EAAOG,WACbH,EAAOC,aAAax3U,EAAOC,EAAQ8oF,EAAMyjD,EAAS+7B,EAAU+uK,GAChE/0S,MAAK,SAAArzB,GAKJ,IAL+B,IAAzB8zT,EAAW9zT,EAAX8zT,YAAakU,EAAMhoU,EAANgoU,OAEbv6S,EAAQlrC,KAERy9J,EAAY,IAAI9nD,WAAgC,EAArB47N,EAAYv5U,QACpC8E,EAAI,EAAGA,EAAIy0U,EAAYv5U,OAAQ8E,IACtC2gK,EAAc,EAAJ3gK,EAAQg4K,GAAWy8J,EAAYz0U,GAS3C,OAPAqoV,GAAoBpU,WAAWR,gBAAgBn3L,EAAQqkB,EAAWnhK,EAAGmL,EAAG8G,EAAOC,EAAQ,GAAM,EAAIsmK,GACjG2wK,GAAUzlV,KAAQkrC,EAGQ,MAApB46S,EAAO3nQ,WACX2nQ,EAAOG,UAAYhmV,YAAW,YJ1OxC,SAAyB2rU,GAEnBH,GAAkBG,IACpBH,GAAkBG,GAAUjpU,SAAQ,SAAU0pU,GAC5CA,GACF,IAGEb,GAAQI,KACVJ,GAAQI,GAAUlG,mBACX8F,GAAQI,GAEnB,CI8NgDsa,CAAgBta,EAAW,GAnDrD,MAqDP,CAAC6Z,OAAAA,EACV,GACJ,CACF,CA1D2C,GAmE3C,IAAMzU,GAAmCmU,GAAoBpU,WAAWC,iCAgRxE,IAAM+U,GAA4Bpa,GAAmB,CACnDpyU,KAAM,mBACNu9C,aAAc,CA5QhB,WAAuB,MAAO,oBAAoBrzC,SAAS8R,KAAK9R,OAAO8R,MAAM,SAASjO,GAAG,IAAIZ,EAAE,CAACq6F,MAAM,SAASz5F,GAAG,IAAI5P,EAAEgP,EAAEy/U,KAAK/pV,EAAE,IAAIu5G,WAAWruG,GAAG,GAAG,QAAQ5P,EAAE0uV,UAAUhqV,EAAE,EAAE,GAAG,CAAC,IAAI+K,EAAE,EAAEzP,EAAE2uV,WAAWjqV,EAAE+K,GAAGA,GAAG,EAAEzP,EAAE2uV,WAAWjqV,EAAE+K,GAAGA,GAAG,EAAE,IAAIyT,EAAEljB,EAAE4uV,SAASlqV,EAAE+K,GAAGA,GAAG,EAAE,IAAI,IAAItL,EAAE,GAAGiB,EAAE,EAAEA,EAAE8d,EAAE9d,IAAI,CAAC,IAAIiK,EAAErP,EAAE4uV,SAASlqV,EAAE+K,GAAGA,GAAG,EAAEtL,EAAEqB,KAAKwJ,EAAE6/U,UAAUnqV,EAAE2K,GAAI,CAAC,OAAOlL,CAAC,CAAC,MAAO,CAAC6K,EAAE6/U,UAAUnqV,EAAE,GAAG,EAAEmqV,UAAU,SAASj/U,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAEzP,EAAE0E,EAAEoqV,UAAUl/U,EAAE5P,GAAGA,GAAG,EAAE,IAAIkjB,EAAExe,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI,IAAImE,EAAE,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQiB,EAAE,CAAC2pV,MAAMn/U,EAAEo+K,QAAQv+K,GAAGJ,EAAE,CAAC,EAAEF,EAAE,EAAEA,EAAE+T,EAAE/T,IAAI,CAAC,IAAID,EAAExK,EAAEgqV,UAAU9+U,EAAE5P,EAAE,GAAGA,GAAG,EAAE0E,EAAEkqV,SAASh/U,EAAE5P,GAAGA,GAAG,EAAE,IAAIuP,EAAE7K,EAAEkqV,SAASh/U,EAAE5P,GAAGA,GAAG,EAAE,IAAIiQ,EAAEvL,EAAEkqV,SAASh/U,EAAE5P,GAAGA,GAAG,EAAEqP,EAAEH,GAAG,CAACujC,OAAOljC,EAAEjP,OAAO2P,EAAG,CAAC,IAAId,EAAE,EAAEA,EAAEhL,EAAE7D,OAAO6O,IAAI,CAAC,IAAIU,EAAE1L,EAAEgL,GAAGE,EAAEQ,KAAKzK,EAAEyK,EAAE0nB,QAAQvoB,EAAEa,EAAE0nB,QAAQ8xE,MAAMz5F,EAAEP,EAAEQ,GAAG4iC,OAAOpjC,EAAEQ,GAAGvP,OAAO8E,GAAI,CAAC,OAAOA,CAAC,EAAE4pV,WAAW,SAASp/U,EAAE5P,EAAE0E,GAAG,IAAI,IAAI+K,EAAET,EAAEy/U,KAAKvrU,EAAEzT,EAAEk/U,WAAW/+U,EAAElL,EAAE,GAAGP,EAAEO,EAAE,GAAGU,EAAE,EAAEA,EAAE8d,EAAE9d,IAAI,CAAC,IAAIiK,EAAEI,EAAEi/U,UAAU9+U,EAAEzL,EAAE,GAAGA,GAAG,EAAEsL,EAAEm/U,SAASh/U,EAAEzL,GAAGA,GAAG,EAAE,IAAIgL,EAAEM,EAAEm/U,SAASh/U,EAAEzL,GAAG,GAAGA,GAAG,EAAEsL,EAAEm/U,SAASh/U,EAAEzL,GAAGA,GAAG,EAAEkL,GAAGrP,EAAE,OAAOmP,CAAC,CAAC,OAAO,CAAC,GAAGH,EAAEy/U,KAAK,CAACK,UAAU,SAASl/U,EAAEZ,GAAG,OAAQY,EAAEZ,IAAI,EAAEY,EAAEZ,EAAE,KAAKY,EAAEZ,EAAE,IAAI,EAAEY,EAAEZ,EAAE,IAAI,KAAK,EAAEigV,YAAY,SAASr/U,EAAE5P,GAAG,OAAOgP,EAAEy/U,KAAKS,UAAUt/U,EAAE5P,GAAG,KAAK,EAAEmvV,QAAQ,SAASv/U,EAAE5P,GAAG,OAAOgP,EAAEy/U,KAAKW,MAAMx/U,GAAGy/U,SAASrvV,EAAE,EAAEsvV,SAAS,SAAS1/U,EAAE5P,GAAG,OAAOgP,EAAEy/U,KAAKW,MAAMx/U,GAAG2/U,QAAQvvV,EAAE,EAAEkvV,UAAU,SAASt/U,EAAE5P,GAAG,OAAOgP,EAAEy/U,KAAKW,MAAMx/U,GAAG4/U,SAASxvV,EAAE,EAAE2uV,WAAW,SAAS/+U,EAAE5P,GAAG,OAAOgP,EAAEy/U,KAAKW,MAAMx/U,GAAG6/U,UAAUzvV,EAAE,EAAE0vV,YAAY,SAAS9/U,EAAE5P,EAAE0E,GAAG,IAAI,IAAI+K,EAAE,GAAGyT,EAAE,EAAEA,EAAExe,EAAEwe,IAAIzT,EAAEjK,KAAKwJ,EAAEy/U,KAAKE,WAAW/+U,EAAE5P,EAAE,EAAEkjB,IAAI,OAAOzT,CAAC,EAAEm/U,SAAS,SAASh/U,EAAE5P,GAAG,OAAOgP,EAAEy/U,KAAKW,MAAMx/U,GAAGksT,UAAU97T,EAAE,EAAE2vV,WAAW,SAAS//U,EAAE5P,GAAG,OAAO,WAAWgP,EAAEy/U,KAAKG,SAASh/U,EAAE5P,GAAGgP,EAAEy/U,KAAKG,SAASh/U,EAAE5P,EAAE,EAAE,EAAE0uV,UAAU,SAAS9+U,EAAEZ,EAAEhP,GAAG,IAAI,IAAI0E,EAAE,GAAG+K,EAAE,EAAEA,EAAEzP,EAAEyP,IAAI/K,GAAG+B,OAAOinC,aAAa99B,EAAEZ,EAAES,IAAI,OAAO/K,CAAC,EAAEkrV,YAAY,SAAShgV,EAAEZ,EAAEhP,GAAG,IAAI,IAAI0E,EAAE,GAAG+K,EAAE,EAAEA,EAAEzP,EAAEyP,IAAI,CAAC,IAAIyT,EAAEtT,EAAEZ,MAAM,EAAEY,EAAEZ,KAAKtK,GAAG+B,OAAOinC,aAAaxqB,EAAG,CAAC,OAAOxe,CAAC,EAAEmrV,MAAM,oBAAoB9jV,QAAQA,OAAO4uQ,YAAY,IAAI5uQ,OAAO4uQ,YAAY,KAAKm1E,SAAS,SAASlgV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAKoB,MAAM,OAAOpgV,GAAG,GAAGzP,GAAG0E,GAAGkL,EAAEtP,OAAOmP,EAAEmrQ,OAAOhrQ,GAAGZ,EAAEy/U,KAAKC,UAAU9+U,EAAE5P,EAAE0E,EAAE,EAAEqrV,UAAU,SAASngV,EAAEZ,EAAEhP,GAAG,IAAI,IAAI0E,EAAE,GAAG+K,EAAE,EAAEA,EAAEzP,EAAEyP,IAAI/K,EAAEc,KAAKoK,EAAEZ,EAAES,IAAI,OAAO/K,CAAC,EAAEsrV,eAAe,SAASpgV,EAAEZ,EAAEhP,GAAG,IAAI,IAAI0E,EAAE,GAAG+K,EAAE,EAAEA,EAAEzP,EAAEyP,IAAI/K,EAAEc,KAAKiB,OAAOinC,aAAa99B,EAAEZ,EAAES,KAAK,OAAO/K,CAAC,EAAE0qV,MAAM,SAASx/U,GAAG,OAAOA,EAAEqgV,YAAYrgV,EAAEqgV,UAAUrgV,EAAEizJ,OAAO,IAAIypG,SAAS18P,EAAEizJ,OAAOjzJ,EAAE2rT,WAAW3rT,EAAEsqQ,YAAY,IAAI5N,SAAS,IAAIruJ,WAAWruG,GAAGizJ,QAAQ,GAAG7zJ,EAAEkhV,MAAM,CAAC,EAAElhV,EAAEkhV,MAAM7mP,MAAM,SAASz5F,EAAE5P,EAAE0E,EAAE+K,EAAEyT,GAAG,IAAI/e,EAAE6K,EAAEy/U,KAAKrpV,EAAE,CAAC,EAAEiK,EAAErP,EAAEmE,EAAE2qV,UAAUl/U,EAAE5P,GAAGA,GAAG,EAAE,IAAImP,EAAEhL,EAAEwqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIkP,EAAE/K,EAAEwqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIuP,EAAEpL,EAAEwqV,WAAW/+U,EAAE5P,GAAG,OAAOA,GAAG,EAAEoF,EAAE+qV,WAAWnhV,EAAEkhV,MAAME,eAAexgV,EAAEP,EAAEF,GAAG/J,EAAEirV,YAAYrhV,EAAEkhV,MAAMI,gBAAgB1gV,EAAEP,EAAEH,GAAG9J,EAAEmrV,WAAWvhV,EAAEkhV,MAAMM,eAAe5gV,EAAEP,EAAEE,EAAE2T,GAAG9d,CAAC,EAAE4J,EAAEkhV,MAAMM,eAAe,SAAS5gV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAKvrU,EAAEljB,EAAEmE,EAAE,GAAGiB,EAAEqK,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI,IAAIqP,EAAE,EAAEA,EAAEjK,EAAEiK,IAAI,CAAC,IAAIF,EAAEM,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIkP,EAAEF,EAAEkhV,MAAMO,gBAAgB7gV,EAAEsT,EAAE/T,EAAEzK,GAAGP,EAAEqB,KAAK0J,EAAG,CAAC,OAAO/K,CAAC,EAAE6K,EAAEkhV,MAAMO,gBAAgB,SAAS7gV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAKvrU,EAAEljB,EAAEmE,EAAE,CAACusV,KAAK,IAAIvsV,EAAEwsV,MAAMlhV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEmE,EAAEysV,KAAKnhV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIoF,EAAEqK,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI,IAAIqP,EAAElL,EAAEwsV,MAAMxhV,EAAE,EAAEA,EAAE/J,EAAE+J,IAAI,CAAC,IAAID,EAAEO,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIuP,EAAE7K,EAAEkL,EAAEP,EAAE6T,EAAEhU,EAAE/K,GAAGA,EAAEusV,KAAKlrV,KAAK+J,EAAG,CAAC,OAAOpL,CAAC,EAAE6K,EAAEkhV,MAAMW,UAAU,SAASjhV,GAAG,IAAI,IAAIZ,EAAE,EAAEhP,EAAE,EAAEA,EAAE,GAAGA,IAAI,IAAI4P,IAAI5P,EAAE,IAAIgP,IAAI,OAAOA,CAAC,EAAEA,EAAEkhV,MAAMY,aAAa,SAASlhV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAE,GAAGyT,EAAExe,EAAEiqV,WAAW/+U,EAAE5P,GAAG,GAAGA,GAAG,EAAE,GAAGkjB,EAAE,CAAC,IAAI/e,EAAEO,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIoF,EAAEV,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI,IAAIqP,EAAE,EAAEA,EAAEjK,EAAEiK,IAAII,EAAEjK,KAAKrB,EAAEkL,GAAGI,EAAEjK,KAAKrB,EAAEkL,GAAGI,EAAEjK,KAAKd,EAAEiqV,WAAW/+U,EAAE5P,IAAIA,GAAG,CAAE,CAAC,GAAG,GAAGkjB,EAAE,CAAC,IAAI/T,EAAEzK,EAAEiqV,WAAW/+U,EAAE5P,GAAQ,IAALA,GAAG,EAAMqP,EAAE,EAAEA,EAAEF,EAAEE,IAAII,EAAEjK,KAAKd,EAAEiqV,WAAW/+U,EAAE5P,IAAIA,GAAG,EAAEyP,EAAEjK,KAAKd,EAAEiqV,WAAW/+U,EAAE5P,IAAIA,GAAG,EAAEyP,EAAEjK,KAAKd,EAAEiqV,WAAW/+U,EAAE5P,IAAIA,GAAG,CAAE,CAAC,OAAOyP,CAAC,EAAET,EAAEkhV,MAAMa,YAAY,SAASnhV,EAAEZ,GAAG,IAAI,IAAIhP,EAAE,EAAEA,EAAE4P,EAAEtP,OAAON,GAAG,EAAE,CAAC,IAAI0E,EAAEkL,EAAE5P,GAAGyP,EAAEG,EAAE5P,EAAE,GAAG,GAAG4P,EAAE5P,EAAE,GAAG0E,GAAGsK,GAAGA,GAAGS,EAAE,OAAOzP,CAAC,CAAC,OAAQ,CAAC,EAAEgP,EAAEkhV,MAAMc,aAAa,SAASphV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAE,CAAC,EAAEA,EAAEwhV,IAAIvsV,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIkjB,EAAExe,EAAEiqV,WAAW/+U,EAAE5P,GAAG,OAAOA,GAAG,EAAE,GAAGyP,EAAEwhV,MAAMxhV,EAAEyhV,IAAIxsV,EAAEgrV,YAAY9/U,EAAE5P,EAAEkjB,IAAI,GAAGzT,EAAEwhV,MAAMxhV,EAAEyhV,IAAIxsV,EAAEgrV,YAAY9/U,EAAE5P,EAAE,EAAEkjB,IAAIzT,CAAC,EAAET,EAAEkhV,MAAMiB,cAAc,SAASvhV,EAAE5P,GAAG,IAAI0E,EAAEkL,EAAEshV,IAAI,GAAG,GAAGthV,EAAEqhV,IAAI,OAAOvsV,EAAEwQ,QAAQlV,GAAG,GAAG,GAAG4P,EAAEqhV,IAAI,CAAC,IAAIxhV,EAAET,EAAEkhV,MAAMa,YAAYrsV,EAAE1E,GAAG,IAAI,GAAGyP,EAAE,OAAO/K,EAAE+K,EAAE,IAAIzP,EAAE0E,EAAE+K,GAAG,CAAC,OAAQ,CAAC,EAAET,EAAEkhV,MAAMI,gBAAgB,SAAS1gV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAEzP,EAAEkjB,EAAE,GAAG/e,EAAEO,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI,IAAIoF,EAAE,EAAEA,EAAEjB,EAAEiB,IAAI,CAAC,IAAIiK,EAAE3K,EAAEgqV,UAAU9+U,EAAE5P,EAAE,GAAGA,GAAG,EAAE,IAAImP,EAAEzK,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIkP,EAAEF,EAAEkhV,MAAMkB,iBAAiBxhV,EAAEH,EAAEN,GAAGD,EAAE4oB,IAAIzoB,EAAEkoB,OAAOrU,EAAE1d,KAAK0J,EAAG,CAAC,OAAOgU,CAAC,EAAElU,EAAEkhV,MAAMkB,iBAAiB,SAASxhV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAEzP,EAAEkjB,EAAE,CAAC,EAAE/e,EAAEO,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEmE,EAAE,IAAI+e,EAAEmuU,cAAc5hV,EAAEtL,GAAG,IAAIiB,EAAEV,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEguU,IAAI,GAAG,IAAI,IAAI7hV,EAAE,EAAEA,EAAEjK,EAAEiK,IAAI6T,EAAEguU,IAAI1rV,KAAKd,EAAEiqV,WAAW/+U,EAAE5P,EAAE,EAAEqP,IAAI,OAAO6T,CAAC,EAAElU,EAAEkhV,MAAME,eAAe,SAASxgV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAEzP,EAAEkjB,EAAE,CAAC,EAAE/e,EAAEO,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI,IAAIoF,EAAE,EAAEA,EAAEjB,EAAEiB,IAAI,CAAC,IAAIiK,EAAE3K,EAAEgqV,UAAU9+U,EAAE5P,EAAE,GAAGA,GAAG,EAAE,IAAImP,EAAEzK,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE7T,EAAEkoB,QAAQvoB,EAAEkhV,MAAMoB,gBAAgB1hV,EAAEH,EAAEN,EAAG,CAAC,OAAO+T,CAAC,EAAElU,EAAEkhV,MAAMoB,gBAAgB,SAAS1hV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAEzP,EAAEkjB,EAAE,CAAC,EAAE/e,EAAEO,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE5b,QAAQ0H,EAAEkhV,MAAMqB,iBAAiB3hV,EAAEH,EAAEtL,GAAG,IAAIiB,EAAEV,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI,IAAIqP,EAAE,EAAEA,EAAEjK,EAAEiK,IAAI,CAAC,IAAIF,EAAEzK,EAAEgqV,UAAU9+U,EAAE5P,EAAE,GAAGA,GAAG,EAAE,IAAIkP,EAAExK,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE/T,EAAEooB,QAAQvoB,EAAEkhV,MAAMqB,iBAAiB3hV,EAAEH,EAAEP,EAAG,CAAC,OAAOgU,CAAC,EAAElU,EAAEkhV,MAAMqB,iBAAiB,SAAS3hV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAE,CAAC,EAAE/K,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEyP,EAAE+hV,WAAW9sV,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIkjB,EAAExe,EAAEiqV,WAAW/+U,EAAE5P,GAAG,OAAOA,GAAG,EAAEyP,EAAEgiV,SAAS/sV,EAAEgrV,YAAY9/U,EAAE5P,EAAEkjB,GAAGzT,CAAC,EAAET,EAAE0iV,IAAI,CAAC,EAAE1iV,EAAE0iV,IAAIroP,MAAM,SAASz5F,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,MAAM7+U,EAAE,IAAIquG,WAAWruG,EAAEizJ,OAAO7iK,EAAE0E,IAAI1E,EAAE,GAAG4P,IAAI5P,GAAG4P,IAAI5P,GAAG4P,IAAI5P,GAAGA,IAAI,IAAIkjB,EAAE,GAAGljB,EAAEgP,EAAE0iV,IAAIC,UAAU/hV,EAAE5P,EAAEkjB,GAAG,IAAI,IAAI/e,EAAE,GAAGiB,EAAE,EAAEA,EAAE8d,EAAE5iB,OAAO,EAAE8E,IAAIjB,EAAEqB,KAAKiK,EAAEi/U,UAAU9+U,EAAE5P,EAAEkjB,EAAE9d,GAAG8d,EAAE9d,EAAE,GAAG8d,EAAE9d,KAAKpF,GAAGkjB,EAAEA,EAAE5iB,OAAO,GAAG,IAAI+O,EAAE,GAAGrP,EAAEgP,EAAE0iV,IAAIC,UAAU/hV,EAAE5P,EAAEqP,GAAG,IAAIF,EAAE,GAAG,IAAI/J,EAAE,EAAEA,EAAEiK,EAAE/O,OAAO,EAAE8E,IAAI+J,EAAE3J,KAAKwJ,EAAE0iV,IAAIE,SAAShiV,EAAE5P,EAAEqP,EAAEjK,GAAGpF,EAAEqP,EAAEjK,EAAE,KAAKpF,GAAGqP,EAAEA,EAAE/O,OAAO,GAAG,IAAI4O,EAAEC,EAAE,GAAGI,EAAE,GAAGvP,EAAEgP,EAAE0iV,IAAIC,UAAU/hV,EAAE5P,EAAEuP,GAAG,IAAIU,EAAE,GAAG,IAAI7K,EAAE,EAAEA,EAAEmK,EAAEjP,OAAO,EAAE8E,IAAI6K,EAAEzK,KAAKiK,EAAEi/U,UAAU9+U,EAAE5P,EAAEuP,EAAEnK,GAAGmK,EAAEnK,EAAE,GAAGmK,EAAEnK,KAAK,GAAGpF,GAAGuP,EAAEA,EAAEjP,OAAO,GAAG0O,EAAE0iV,IAAIG,UAAUjiV,EAAE5P,EAAEkP,GAAGA,EAAE4iV,YAAY,CAAC9xV,EAAEkP,EAAE4iV,YAAYviV,EAAE,GAAGvP,EAAEgP,EAAE0iV,IAAIC,UAAU/hV,EAAE5P,EAAEuP,GAAG,IAAIM,EAAE,GAAG,IAAIzK,EAAE,EAAEA,EAAEmK,EAAEjP,OAAO,EAAE8E,IAAIyK,EAAErK,KAAKiK,EAAEsgV,UAAUngV,EAAE5P,EAAEuP,EAAEnK,GAAGmK,EAAEnK,EAAE,GAAGmK,EAAEnK,KAAK8J,EAAE4iV,YAAYjiV,CAAE,CAAC,GAAGX,EAAE6iV,IAAI,CAAC/xV,EAAEkP,EAAE8iV,QAAQ,IAAIrtV,EAAE,GAAyC,IAAtC3E,EAAEgP,EAAE0iV,IAAIC,UAAU/hV,EAAE5P,EAAE2E,GAAGuK,EAAE8iV,QAAQ,GAAO5sV,EAAE,EAAEA,EAAET,EAAErE,OAAO,EAAE8E,IAAI,CAAC,IAAIsK,EAAEV,EAAE0iV,IAAIE,SAAShiV,EAAE5P,EAAE2E,EAAES,GAAGpF,EAAE2E,EAAES,EAAE,IAAI4J,EAAE0iV,IAAIO,WAAWriV,EAAEF,EAAEO,GAAGf,EAAE8iV,QAAQxsV,KAAKkK,EAAG,CAAC1P,GAAG2E,EAAEA,EAAErE,OAAO,GAAGN,EAAEkP,EAAEgjV,SAAShjV,EAAEgjV,SAAS,GAAG,IAAIxjS,EAAE9+C,EAAE5P,GAAG,GAAGA,IAAI,GAAG0uD,EAAE,MAAMA,EAAE,IAAIt/C,EAAEK,EAAEk/U,WAAW/+U,EAAE5P,GAAQ,IAALA,GAAG,EAAMoF,EAAE,EAAEA,EAAEgK,EAAE,EAAEhK,IAAI8J,EAAEgjV,SAAS1sV,KAAKiK,EAAEk/U,WAAW/+U,EAAE5P,GAAG4P,EAAE5P,EAAE,IAAIA,GAAG,CAAE,CAAC,OAAOkP,EAAEijV,WAAWjjV,EAAEijV,SAASnjV,EAAE0iV,IAAIU,aAAaxiV,EAAEV,EAAEijV,SAASjjV,EAAE4iV,YAAYxxV,SAAS4O,EAAEkM,UAAUlM,EAAEkM,QAAQpM,EAAE0iV,IAAIW,YAAYziV,EAAEV,EAAEkM,QAAQlM,EAAE4iV,YAAYxxV,SAAS0O,EAAE0iV,IAAIO,WAAWriV,EAAEV,EAAEe,GAAGf,CAAC,EAAEF,EAAE0iV,IAAIO,WAAW,SAASriV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAE,IAAI,IAAIyT,KAAKljB,EAAEsyV,UAAU7iV,EAAEzP,EAAEsyV,QAAQ,GAAGtyV,EAAEsyV,QAAQtjV,EAAE0iV,IAAIE,SAAShiV,EAAEH,EAAEA,EAAEzP,EAAEsyV,QAAQ,IAAItyV,EAAEsyV,QAAQC,OAAOvjV,EAAE0iV,IAAIG,UAAUjiV,EAAEH,EAAEzP,EAAEsyV,QAAQC,MAAMvyV,EAAEsyV,UAAUtyV,GAAG,GAAG,CAAC,aAAa,WAAW,WAAW,SAAS,UAAU,aAAakV,QAAQgO,KAAKljB,EAAEkjB,GAAGxe,EAAE1E,EAAEkjB,GAAG,IAAI,IAAK,EAAElU,EAAE0iV,IAAIG,UAAU,SAASjiV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAKvrU,EAAE,GAAGljB,EAAEgP,EAAE0iV,IAAIC,UAAU/hV,EAAE5P,EAAEkjB,GAAG,IAAI/e,EAAEiB,EAAE8d,EAAE5iB,OAAO6D,EAAEiB,EAAE,KAAK,IAAIA,EAAE,MAAM,KAAK,MAAMV,EAAE8tV,KAAKruV,EAAEO,EAAE6tV,MAAM,GAAG,IAAI,IAAIljV,EAAE,EAAEA,EAAE6T,EAAE5iB,OAAO,EAAE+O,IAAI3K,EAAE6tV,MAAM/sV,KAAKiK,EAAEsgV,UAAUngV,EAAE5P,EAAEkjB,EAAE7T,GAAG6T,EAAE7T,EAAE,GAAG6T,EAAE7T,IAAK,EAAEL,EAAE0iV,IAAIe,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,GAAGzjV,EAAE0iV,IAAIgB,eAAe,SAAS9iV,EAAEZ,GAAG,IAAI,IAAIhP,EAAE,EAAEA,EAAE4P,EAAEwL,QAAQ9a,OAAON,IAAI,GAAG4P,EAAEwL,QAAQpb,IAAIgP,EAAE,OAAOhP,EAAE,OAAQ,CAAC,EAAEgP,EAAE0iV,IAAIiB,UAAU,SAAS/iV,EAAE5P,GAAG,OAAOA,EAAE,GAAGA,EAAE,KAAK,EAAEgP,EAAE0iV,IAAIgB,eAAe9iV,EAAEZ,EAAE0iV,IAAIe,QAAQzyV,GAAG,EAAEgP,EAAE0iV,IAAIU,aAAa,SAASxiV,EAAE5P,EAAE0E,GAAGsK,EAAEy/U,KAAK,IAAIh/U,EAAE,CAAC,WAAWyT,EAAEtT,EAAE5P,GAAG,GAAGA,IAAI,GAAGkjB,EAAE,KAAM,mCAAmCA,EAAE,IAAI/e,EAAEyL,EAAE5P,GAAGA,IAAI,IAAI,IAAIoF,EAAE,EAAEA,EAAEjB,EAAEiB,IAAIqK,EAAEjK,KAAKoK,EAAE5P,EAAEoF,IAAI,OAAOqK,CAAC,EAAET,EAAE0iV,IAAIW,YAAY,SAASziV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAKvrU,EAAE,CAAC,WAAW/e,EAAEyL,EAAE5P,GAAG,GAAGA,IAAI,GAAGmE,EAAE,IAAI,IAAIiB,EAAE,EAAEA,EAAEV,EAAEU,IAAI,CAAC,IAAIiK,EAAEI,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE1d,KAAK6J,EAAG,KAAM,CAAC,GAAG,GAAGlL,GAAG,GAAGA,EAAE,KAAM,kBAAkBA,EAAE,KAAK+e,EAAE5iB,OAAOoE,GAAG,CAAC2K,EAAEI,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAImP,EAAE,EAA+C,IAA7C,GAAGhL,GAAGgL,EAAES,EAAE5P,GAAGA,MAAMmP,EAAEM,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,GAAOoF,EAAE,EAAEA,GAAG+J,EAAE/J,IAAI8d,EAAE1d,KAAK6J,GAAGA,GAAI,CAAC,CAAC,OAAO6T,CAAC,EAAElU,EAAE0iV,IAAIC,UAAU,SAAS/hV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAKvrU,EAAEzT,EAAEk/U,WAAW/+U,EAAE5P,GAAG,EAAEmE,EAAEyL,EAAE5P,GAAG,GAAG,GAAGA,IAAI,GAAGmE,EAAE,IAAI,IAAIiB,EAAE,EAAEA,EAAE8d,EAAE9d,IAAIV,EAAEc,KAAKoK,EAAE5P,EAAEoF,SAAS,GAAG,GAAGjB,EAAE,IAAIiB,EAAE,EAAEA,EAAE8d,EAAE9d,IAAIV,EAAEc,KAAKiK,EAAEk/U,WAAW/+U,EAAE5P,EAAE,EAAEoF,SAAS,GAAG,GAAGjB,EAAE,IAAIiB,EAAE,EAAEA,EAAE8d,EAAE9d,IAAIV,EAAEc,KAAK,SAASiK,EAAEm/U,SAASh/U,EAAE5P,EAAE,EAAEoF,EAAE,SAAS,GAAG,GAAG8d,EAAE,KAAM,4BAA4B/e,EAAE,YAAY+e,EAAE,OAAQljB,GAAGkjB,EAAE/e,GAAG,CAAC,EAAE6K,EAAE0iV,IAAIkB,cAAc,SAAShjV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAKvrU,EAAEtT,EAAE5P,GAAGmE,EAAEyL,EAAE5P,EAAE,GAAG4P,EAAE5P,EAAE,GAAG4P,EAAE5P,EAAE,GAAG4P,EAAE5P,EAAE,GAAG,IAAIoF,EAAE,EAAEiK,EAAE,KAAKF,EAAE,KAAK+T,GAAG,KAAK7T,EAAE6T,EAAE9d,EAAE,GAAG,IAAI8d,IAAI7T,EAAE,IAAI6T,EAAE/e,EAAEiB,EAAE,GAAG,IAAI8d,GAAGA,GAAG,KAAK7T,EAAE6T,EAAE9d,EAAE,GAAG,IAAI8d,IAAI/T,EAAEM,EAAEy/U,UAAUt/U,EAAE5P,EAAE,GAAGoF,EAAE,GAAG,IAAI8d,GAAGA,GAAG,KAAK7T,EAAE6T,EAAE9d,EAAE,GAAG,IAAI8d,GAAGA,GAAG,MAAM/T,EAAE+T,EAAE,IAAI9d,EAAE,GAAG,KAAK8d,GAAGA,GAAG,MAAM/T,EAAE,KAAK+T,EAAE,KAAK/e,EAAE,IAAIiB,EAAE,GAAG,KAAK8d,GAAGA,GAAG,MAAM/T,EAAE,MAAM+T,EAAE,KAAK/e,EAAE,IAAIiB,EAAE,GAAG,KAAK8d,IAAI/T,EAAEM,EAAE0/U,QAAQv/U,EAAE5P,EAAE,GAAG,MAAMoF,EAAE,GAAGV,EAAEoF,IAAI,MAAMqF,EAAEA,EAAE,IAAIE,EAAE3K,EAAEupD,KAAK7oD,CAAE,EAAE4J,EAAE0iV,IAAImB,eAAe,SAASjjV,EAAE5P,EAAE0E,GAAG,IAAI,IAAI+K,EAAEzP,EAAE0E,EAAEwe,EAAElU,EAAEy/U,KAAKtqV,EAAE,GAAGnE,EAAEyP,GAAG,CAAC,IAAIrK,EAAEwK,EAAE5P,GAAGqP,EAAEO,EAAE5P,EAAE,GAAG4P,EAAE5P,EAAE,GAAG4P,EAAE5P,EAAE,GAAG4P,EAAE5P,EAAE,GAAG,IAAImP,EAAE,EAAED,EAAE,KAAKK,EAAE,KAAKnK,GAAG,KAAK8J,EAAE9J,EAAE+J,EAAE,GAAG,IAAI/J,IAAI8J,EAAE,IAAI9J,EAAEiK,EAAEF,EAAE,GAAG,IAAI/J,GAAG,IAAIA,IAAI8J,EAAE9J,EAAE+J,EAAE,GAAG,IAAI/J,GAAGA,GAAG,KAAK8J,EAAE9J,EAAE+J,EAAE,GAAG,IAAI/J,IAAImK,EAAE2T,EAAEgsU,UAAUt/U,EAAE5P,EAAE,GAAGmP,EAAE,GAAG,IAAI/J,GAAGA,GAAG,KAAK8J,EAAE9J,EAAE+J,EAAE,GAAG,IAAI/J,GAAGA,GAAG,MAAMmK,EAAEnK,EAAE,IAAI+J,EAAE,GAAG,KAAK/J,GAAGA,GAAG,MAAMmK,EAAE,KAAKnK,EAAE,KAAKiK,EAAE,IAAIF,EAAE,GAAG,KAAK/J,GAAGA,GAAG,MAAMmK,EAAE,MAAMnK,EAAE,KAAKiK,EAAE,IAAIF,EAAE,GAAG,KAAK/J,IAAImK,EAAE2T,EAAEisU,QAAQv/U,EAAE5P,EAAE,GAAG,MAAMmP,EAAE,GAAGhL,EAAEqB,KAAK,MAAM+J,EAAEA,EAAE,IAAIL,GAAGlP,GAAGmP,CAAE,CAAC,OAAOhL,CAAC,EAAE6K,EAAE0iV,IAAIE,SAAS,SAAShiV,EAAE5P,EAAE0E,GAAG,IAAI,IAAI+K,EAAET,EAAEy/U,KAAKvrU,EAAE,CAAC,EAAE/e,EAAE,GAAGnE,EAAE0E,GAAG,CAAC,IAAIU,EAAEwK,EAAE5P,GAAGqP,EAAEO,EAAE5P,EAAE,GAAG4P,EAAE5P,EAAE,GAAG4P,EAAE5P,EAAE,GAAG4P,EAAE5P,EAAE,GAAG,IAAImP,EAAE,EAAED,EAAE,KAAKK,EAAE,KAAK,GAAG,IAAInK,IAAImK,EAAEE,EAAEy/U,UAAUt/U,EAAE5P,EAAE,GAAGmP,EAAE,GAAG,IAAI/J,IAAImK,EAAEE,EAAE0/U,QAAQv/U,EAAE5P,EAAE,GAAGmP,EAAE,GAAG,IAAI/J,GAAGA,GAAG,MAAMmK,EAAEnK,EAAE,IAAI+J,EAAE,GAAG,KAAK/J,GAAGA,GAAG,MAAMmK,EAAE,KAAKnK,EAAE,KAAKiK,EAAE,IAAIF,EAAE,GAAG,KAAK/J,GAAGA,GAAG,MAAMmK,EAAE,MAAMnK,EAAE,KAAKiK,EAAE,IAAIF,EAAE,GAAG,KAAK/J,EAAE,MAAMmK,EAAEE,EAAE0/U,QAAQv/U,EAAE5P,EAAE,GAAG,MAAMmP,EAAE,EAAE,iBAAiB,GAAG,IAAI/J,EAAE,CAAC,IAAI6K,EAAE,GAAG,IAAId,EAAE,IAAI,CAAC,IAAIU,EAAED,EAAE5P,EAAEmP,GAAGA,IAAI,IAAIxK,EAAEkL,GAAG,EAAEH,EAAE,GAAGG,EAAE,GAAG,IAAIlL,GAAGsL,EAAEzK,KAAKb,GAAG,IAAI+K,GAAGO,EAAEzK,KAAKkK,GAAG,IAAIA,EAAE,KAAK,CAAC,IAAI,IAAIg/C,EAAE,GAAGt/C,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,KAAK,WAAW,IAAI,eAAeq+C,EAAE,EAAEA,EAAEx9C,EAAE3P,OAAOmtD,IAAIiB,GAAGt/C,EAAEa,EAAEw9C,IAAIl+C,EAAEqK,WAAW80C,EAAG,CAAItpD,GAAG,KAAM8J,EAAE,CAAC,UAAU,SAAS,WAAW,aAAa,SAAS,WAAW,aAAa,aAAa,cAAc,mBAAmB,QAAQ,QAAQ,SAAS,WAAW,OAAO,UAAU,WAAW,cAAc,UAAU,QAAQ,gBAAgB,iBAAiB9J,GAAG+J,EAAE,EAAE,IAAI/J,IAAE8J,EAAE,CAAC,YAAY,eAAe,cAAc,oBAAoB,qBAAqB,YAAY,iBAAiB,aAAa,cAAc,YAAY,YAAY,WAAW,YAAY,YAAY,YAAY,EAAE,EAAE,gBAAgB,kBAAkB,oBAAoB,gBAAgB,aAAa,eAAe,gBAAgB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,iBAAiB,kBAAkB,cAAc,WAAW,UAAU,UAAU,WAAW,YAAYG,GAAGF,EAAE,IAAE,MAAMD,GAAGgU,EAAEhU,GAAG,GAAG/K,EAAE7D,OAAO6D,EAAE,GAAGA,EAAEA,EAAE,IAAIA,EAAEqB,KAAK+J,GAAGvP,GAAGmP,CAAE,CAAC,OAAO+T,CAAC,EAAElU,EAAE8jV,KAAK,CAAC,EAAE9jV,EAAE8jV,KAAKzpP,MAAM,SAASz5F,EAAE5P,EAAE0E,GAAGkL,EAAE,IAAIquG,WAAWruG,EAAEizJ,OAAO7iK,EAAE0E,GAAG1E,EAAE,EAAE,IAAIyP,EAAET,EAAEy/U,KAAKvrU,EAAE,CAAC,EAAEzT,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAImE,EAAEsL,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIoF,EAAE,GAAG8d,EAAE6vU,OAAO,GAAG,IAAI,IAAI1jV,EAAE,EAAEA,EAAElL,EAAEkL,IAAI,CAAC,IAAIF,EAAEM,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIkP,EAAEO,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIuP,EAAEE,EAAEm/U,SAASh/U,EAAE5P,GAAGA,GAAG,EAAE,IAAIiQ,EAAE,IAAId,EAAE,IAAID,EAAEW,EAAEzK,EAAE8P,QAAQ3F,GAAG,IAAI,GAAGM,EAAE,CAAC,IAAIlL,EAAEkL,EAAEqT,EAAE6vU,OAAOzyV,OAAO8E,EAAEI,KAAK+J,GAAG,IAAIG,EAAED,EAAEk/U,WAAW/+U,EAAEL,GAAG,GAAGG,EAAE/K,EAAEqK,EAAE8jV,KAAKE,OAAOpjV,EAAEL,GAAG,GAAGG,EAAE/K,EAAEqK,EAAE8jV,KAAKG,OAAOrjV,EAAEL,GAAG,GAAGG,EAAE/K,EAAEqK,EAAE8jV,KAAKI,OAAOtjV,EAAEL,GAAG,IAAIG,EAAE/K,EAAEqK,EAAE8jV,KAAKK,QAAQvjV,EAAEL,GAAGkN,QAAQQ,MAAM,mBAAmBvN,EAAEP,EAAED,EAAEK,GAAG2T,EAAE6vU,OAAOvtV,KAAKb,EAAG,CAAC,GAAG,MAAMue,EAAEjT,GAAG,KAAM,4CAA4CiT,EAAEjT,GAAGJ,CAAE,CAAC,OAAOqT,CAAC,EAAElU,EAAE8jV,KAAKE,OAAO,SAASpjV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAE,CAAC,EAAEA,EAAEw3J,OAAOviK,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIkjB,EAAExe,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEyP,EAAExK,IAAI,GAAG,IAAI,IAAId,EAAE,EAAEA,EAAE+e,EAAE,EAAE/e,IAAIsL,EAAExK,IAAIO,KAAKoK,EAAE5P,EAAEmE,IAAI,OAAOsL,CAAC,EAAET,EAAE8jV,KAAKG,OAAO,SAASrjV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAEzP,EAAEkjB,EAAE,CAAC,EAAEA,EAAE+jJ,OAAOviK,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAImE,EAAEO,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIoF,EAAEV,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIqP,EAAEjK,EAAE,EAAE8d,EAAEkwU,YAAY1uV,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEmwU,cAAc3uV,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEowU,WAAW5uV,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEqwU,SAAS7uV,EAAEgrV,YAAY9/U,EAAE5P,EAAEqP,GAAGrP,GAAG,EAAEqP,EAAErP,GAAG,EAAEkjB,EAAEswU,WAAW9uV,EAAEgrV,YAAY9/U,EAAE5P,EAAEqP,GAAGrP,GAAG,EAAEqP,EAAE6T,EAAEuwU,QAAQ,GAAG,IAAI,IAAItkV,EAAE,EAAEA,EAAEE,EAAEF,IAAI+T,EAAEuwU,QAAQjuV,KAAKd,EAAEwqV,UAAUt/U,EAAE5P,IAAIA,GAAG,EAAE,IAAIkjB,EAAEwwU,cAAchvV,EAAEgrV,YAAY9/U,EAAE5P,EAAEqP,GAAGrP,GAAG,EAAEqP,EAAE6T,EAAEywU,aAAa,GAAG3zV,EAAEyP,EAAEtL,GAAG+e,EAAEywU,aAAanuV,KAAKd,EAAEiqV,WAAW/+U,EAAE5P,IAAIA,GAAG,EAAE,OAAOkjB,CAAC,EAAElU,EAAE8jV,KAAKI,OAAO,SAAStjV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAE,CAAC,EAAEA,EAAEw3J,OAAOviK,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEyP,EAAEmkV,UAAUlvV,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIkjB,EAAExe,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEyP,EAAEkkV,aAAa,GAAG,IAAI,IAAIxvV,EAAE,EAAEA,EAAE+e,EAAE/e,IAAIsL,EAAEkkV,aAAanuV,KAAKd,EAAEiqV,WAAW/+U,EAAE5P,IAAIA,GAAG,EAAE,OAAOyP,CAAC,EAAET,EAAE8jV,KAAKK,QAAQ,SAASvjV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAE,CAAC,EAAEA,EAAEw3J,OAAOviK,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEA,GAAG,EAAE0E,EAAEkqV,SAASh/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEkqV,SAASh/U,EAAE5P,GAAGA,GAAG,EAAE,IAAIkjB,EAAExe,EAAEkqV,SAASh/U,EAAE5P,GAAGA,GAAG,EAAEyP,EAAEi/K,OAAO,GAAG,IAAI,IAAIvqL,EAAE,EAAEA,EAAE+e,EAAE/e,IAAI,CAAC,IAAIiB,EAAEpF,EAAE,GAAGmE,EAAEkL,EAAE3K,EAAEkqV,SAASh/U,EAAExK,EAAE,GAAG+J,EAAEzK,EAAEkqV,SAASh/U,EAAExK,EAAE,GAAG8J,EAAExK,EAAEkqV,SAASh/U,EAAExK,EAAE,GAAGqK,EAAEi/K,OAAOlpL,KAAK,CAAC6J,EAAEF,EAAED,GAAI,CAAC,OAAOO,CAAC,EAAET,EAAE6kV,KAAK,CAAC,EAAE7kV,EAAE6kV,KAAKxqP,MAAM,SAASz5F,EAAEZ,EAAEhP,EAAE0E,GAAG,IAAI,IAAI+K,EAAE,GAAGyT,EAAE,EAAEA,EAAExe,EAAEovV,KAAKC,UAAU7wU,IAAIzT,EAAEjK,KAAK,MAAM,OAAOiK,CAAC,EAAET,EAAE6kV,KAAKG,WAAW,SAASpkV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAEG,EAAEm/U,MAAM7rU,EAAElU,EAAEggV,WAAWv/U,EAAE,OAAOG,EAAEo+K,SAASp+K,EAAEqkV,KAAKj0V,GAAG,GAAG4P,EAAEqkV,KAAKj0V,IAAI4P,EAAEqkV,KAAKj0V,EAAE,GAAG,OAAO,KAAK,IAAImE,EAAE,CAAC,EAAE,GAAGA,EAAE+vV,IAAIxvV,EAAEwqV,UAAUz/U,EAAEyT,GAAGA,GAAG,EAAE/e,EAAEgwV,KAAKzvV,EAAEwqV,UAAUz/U,EAAEyT,GAAGA,GAAG,EAAE/e,EAAEiwV,KAAK1vV,EAAEwqV,UAAUz/U,EAAEyT,GAAGA,GAAG,EAAE/e,EAAEkwV,KAAK3vV,EAAEwqV,UAAUz/U,EAAEyT,GAAGA,GAAG,EAAE/e,EAAEmwV,KAAK5vV,EAAEwqV,UAAUz/U,EAAEyT,GAAGA,GAAG,EAAE/e,EAAEgwV,MAAMhwV,EAAEkwV,MAAMlwV,EAAEiwV,MAAMjwV,EAAEmwV,KAAK,OAAO,KAAK,GAAGnwV,EAAE+vV,IAAI,EAAE,CAAC/vV,EAAEowV,OAAO,GAAG,IAAI,IAAInvV,EAAE,EAAEA,EAAEjB,EAAE+vV,IAAI9uV,IAAIjB,EAAEowV,OAAO/uV,KAAKd,EAAEiqV,WAAWl/U,EAAEyT,IAAIA,GAAG,EAAE,IAAI7T,EAAE3K,EAAEiqV,WAAWl/U,EAAEyT,GAAG,GAAGA,GAAG,EAAEzT,EAAEnP,OAAO4iB,EAAE7T,EAAE,OAAO,KAAKlL,EAAEqwV,aAAa9vV,EAAEqrV,UAAUtgV,EAAEyT,EAAE7T,GAAG6T,GAAG7T,EAAE,IAAIF,EAAEhL,EAAEowV,OAAOpwV,EAAE+vV,IAAI,GAAG,EAAa,IAAX/vV,EAAEq9B,MAAM,GAAOp8B,EAAE,EAAEA,EAAE+J,EAAE/J,IAAI,CAAC,IAAI8J,EAAEO,EAAEyT,GAAG,GAAGA,IAAI/e,EAAEq9B,MAAMh8B,KAAK0J,GAAG,IAAI,EAAEA,GAAG,CAAC,IAAIK,EAAEE,EAAEyT,GAAGA,IAAI,IAAI,IAAIjT,EAAE,EAAEA,EAAEV,EAAEU,IAAI9L,EAAEq9B,MAAMh8B,KAAK0J,GAAG9J,GAAI,CAAC,CAAS,IAARjB,EAAEswV,GAAG,GAAOrvV,EAAE,EAAEA,EAAE+J,EAAE/J,IAAI,CAAC,IAAIyK,EAAE,IAAI,EAAE1L,EAAEq9B,MAAMp8B,IAAIT,EAAE,IAAI,GAAGR,EAAEq9B,MAAMp8B,IAAIyK,GAAG1L,EAAEswV,GAAGjvV,KAAKb,EAAE8K,EAAEyT,IAAIzT,EAAEyT,IAAIA,KAAKve,EAAER,EAAEswV,GAAGjvV,KAAK,IAAIrB,EAAEswV,GAAGjvV,KAAKd,EAAEwqV,UAAUz/U,EAAEyT,IAAIA,GAAG,EAAG,CAAS,IAAR/e,EAAEuwV,GAAG,GAAOtvV,EAAE,EAAEA,EAAE+J,EAAE/J,IAAKyK,EAAE,IAAI,EAAE1L,EAAEq9B,MAAMp8B,IAAIT,EAAE,IAAI,GAAGR,EAAEq9B,MAAMp8B,IAAIyK,GAAG1L,EAAEuwV,GAAGlvV,KAAKb,EAAE8K,EAAEyT,IAAIzT,EAAEyT,IAAIA,KAAKve,EAAER,EAAEuwV,GAAGlvV,KAAK,IAAIrB,EAAEuwV,GAAGlvV,KAAKd,EAAEwqV,UAAUz/U,EAAEyT,IAAIA,GAAG,GAAI,IAAIxT,EAAE,EAAEg/C,EAAE,EAAE,IAAItpD,EAAE,EAAEA,EAAE+J,EAAE/J,IAAIsK,GAAGvL,EAAEswV,GAAGrvV,GAAGspD,GAAGvqD,EAAEuwV,GAAGtvV,GAAGjB,EAAEswV,GAAGrvV,GAAGsK,EAAEvL,EAAEuwV,GAAGtvV,GAAGspD,CAAE,KAAM,CAAC,IAAIt/C,EAAEjL,EAAE4tG,MAAM,GAAG,EAAE,CAAC3iG,EAAE1K,EAAEiqV,WAAWl/U,EAAEyT,GAAGA,GAAG,EAAE,IAAIuqC,EAAE,CAACj+C,EAAE,CAAC9K,EAAE,EAAEuK,EAAE,EAAEtK,EAAE,EAAEuK,EAAE,EAAE0yJ,GAAG,EAAEC,GAAG,GAAG7hC,IAAI,EAAEC,IAAI,GAAG,GAAG97H,EAAE4tG,MAAMvsG,KAAKioD,GAAGA,EAAEknS,WAAWjwV,EAAEiqV,WAAWl/U,EAAEyT,GAAGA,GAAG,EAAE,EAAE9T,EAAE,CAAC,IAAII,EAAE9K,EAAEwqV,UAAUz/U,EAAEyT,GAAGA,GAAG,EAAE,IAAIjU,EAAEvK,EAAEwqV,UAAUz/U,EAAEyT,GAAGA,GAAG,CAAE,MAAO1T,EAAE9K,EAAE4qV,SAAS7/U,EAAEyT,GAAGA,IAAIjU,EAAEvK,EAAE4qV,SAAS7/U,EAAEyT,GAAGA,IAAK,EAAE9T,GAAGq+C,EAAEj+C,EAAEoyJ,GAAGpyJ,EAAEi+C,EAAEj+C,EAAEqyJ,GAAG5yJ,IAAIw+C,EAAEuyE,GAAGxwH,EAAEi+C,EAAEwyE,GAAGhxH,GAAG,EAAEG,GAAGq+C,EAAEj+C,EAAE9K,EAAE+oD,EAAEj+C,EAAEN,EAAExK,EAAEuqV,YAAYx/U,EAAEyT,GAAGA,GAAG,GAAG,GAAG9T,GAAGq+C,EAAEj+C,EAAE9K,EAAEA,EAAEuqV,YAAYx/U,EAAEyT,GAAGA,GAAG,EAAEuqC,EAAEj+C,EAAEN,EAAExK,EAAEuqV,YAAYx/U,EAAEyT,GAAGA,GAAG,GAAG,IAAI9T,IAAIq+C,EAAEj+C,EAAE9K,EAAEA,EAAEuqV,YAAYx/U,EAAEyT,GAAGA,GAAG,EAAEuqC,EAAEj+C,EAAEP,EAAEvK,EAAEuqV,YAAYx/U,EAAEyT,GAAGA,GAAG,EAAEuqC,EAAEj+C,EAAE7K,EAAED,EAAEuqV,YAAYx/U,EAAEyT,GAAGA,GAAG,EAAEuqC,EAAEj+C,EAAEN,EAAExK,EAAEuqV,YAAYx/U,EAAEyT,GAAGA,GAAG,EAAG,OAAO,GAAG9T,GAAG,GAAG,IAAIA,EAAE,CAAC,IAAIW,EAAErL,EAAEiqV,WAAWl/U,EAAEyT,GAAmB,IAAhBA,GAAG,EAAE/e,EAAEywV,MAAM,GAAOxvV,EAAE,EAAEA,EAAE2K,EAAE3K,IAAIjB,EAAEywV,MAAMpvV,KAAKiK,EAAEyT,IAAIA,GAAI,CAAC,CAAC,OAAO/e,CAAC,EAAE6K,EAAE6lV,KAAK,CAAC,EAAE7lV,EAAE6lV,KAAKxrP,MAAM,SAASz5F,EAAE5P,EAAE0E,EAAE+K,GAAG,OAAOT,EAAEkhV,MAAM7mP,MAAMz5F,EAAE5P,EAAE0E,EAAE+K,EAAET,EAAE6lV,KAAKC,KAAK,EAAE9lV,EAAE6lV,KAAKC,KAAK,SAASllV,EAAE5P,EAAE0E,EAAE+K,GAAG,IAAIyT,EAAElU,EAAEy/U,KAAKtqV,EAAEO,EAAEU,EAAE,CAAC,EAAE,GAAGA,EAAE6rV,IAAI/tU,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAE,GAAG1E,GAAG,GAAGA,GAAG,GAAGA,GAAG,GAAGA,GAAG,GAAGA,GAAGoF,EAAE6rV,KAAK,EAAE,CAAC,IAAI5hV,EAAE6T,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAEU,EAAE2vV,SAAS/lV,EAAEkhV,MAAMc,aAAaphV,EAAEP,EAAElL,EAAG,CAAC,GAAG,GAAGnE,GAAG,GAAGoF,EAAE6rV,IAAI,CAAC,IAAI9hV,EAAE+T,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAE,IAAIwK,EAAEF,EAAEkhV,MAAMW,UAAU1hV,GAAG,GAAGA,IAAI/J,EAAEo0I,IAAIxqI,EAAE6lV,KAAKG,gBAAgBplV,EAAElL,EAAEyK,GAAI,MAAM,GAAG,GAAGnP,GAAGoF,EAAE6rV,KAAK,GAAG7rV,EAAE6rV,KAAK,EAAE,CAAC9hV,EAAE+T,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAE,IAAI6K,EAAE2T,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAEwK,EAAEF,EAAEkhV,MAAMW,UAAU1hV,GAAG,IAAIc,EAAEjB,EAAEkhV,MAAMW,UAAUthV,GAAG,GAAG,GAAGnK,EAAE6rV,IAAI,CAAC7rV,EAAE6vV,SAAS,GAAG,IAAIplV,EAAEqT,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAE,IAAI,IAAIC,EAAE,EAAEA,EAAEkL,EAAElL,IAAI,CAAC,IAAI+K,EAAEvL,EAAE+e,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAE,IAAIgqD,EAAExrC,EAAEyrU,WAAW/+U,EAAEF,GAAGA,GAAG,EAAE,IAAI,IAAIN,EAAE,GAAGq+C,EAAE,EAAEA,EAAEiB,EAAEjB,IAAI,CAAC,IAAIj+C,EAAE0T,EAAEyrU,WAAW/+U,EAAEF,GAAGA,GAAG,EAAE,GAAGP,IAAIvK,EAAEoK,EAAE6lV,KAAKG,gBAAgBplV,EAAEF,EAAEP,GAAGO,GAAG,EAAER,GAAG,GAAGK,IAAIyzC,EAAEh0C,EAAE6lV,KAAKG,gBAAgBplV,EAAEF,EAAEH,GAAGG,GAAG,EAAEO,GAAGb,EAAE5J,KAAK,CAAC0vV,KAAK1lV,EAAE2lV,KAAKvwV,EAAEwwV,KAAKpyS,GAAI,CAAC59C,EAAE6vV,SAASzvV,KAAK4J,EAAG,CAAC,CAAC,GAAG,GAAGhK,EAAE6rV,IAAI,CAAC,IAAIhiV,EAAEiU,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAE,IAAIqL,EAAEmT,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAE,IAAI6yC,EAAEr0B,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAE,IAAIoG,EAAEoY,EAAEyrU,WAAW/+U,EAAElL,GAAoG,IAAjGA,GAAG,EAAEU,EAAEiwV,UAAUrmV,EAAEkhV,MAAMY,aAAalhV,EAAEzL,EAAE8K,GAAG7J,EAAEkwV,UAAUtmV,EAAEkhV,MAAMY,aAAalhV,EAAEzL,EAAE4L,GAAG3K,EAAEg9J,OAAO,GAAOz9J,EAAE,EAAEA,EAAE4yC,EAAE5yC,IAAI,CAAC,IAAIqgC,EAAE,GAAG,IAAIyoB,EAAE,EAAEA,EAAE3iD,EAAE2iD,IAAI,CAAC,IAAI7oD,EAAE,KAAKo+C,EAAE,KAAK,GAAG7zC,IAAIvK,EAAEoK,EAAE6lV,KAAKG,gBAAgBplV,EAAElL,EAAEyK,GAAGzK,GAAG,EAAEwK,GAAG,GAAGK,IAAIyzC,EAAEh0C,EAAE6lV,KAAKG,gBAAgBplV,EAAElL,EAAE6K,GAAG7K,GAAG,EAAEuL,GAAG+0B,EAAEx/B,KAAK,CAAC2vV,KAAKvwV,EAAEwwV,KAAKpyS,GAAI,CAAC59C,EAAEg9J,OAAO58J,KAAKw/B,EAAG,CAAC,CAAC,KAAM,CAAC,GAAG,GAAGhlC,GAAG,GAAGoF,EAAE6rV,IAAI,CAAC,IAAIz0S,EAAEt5B,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAE,IAAIoL,EAAEoT,EAAE0rU,SAASh/U,EAAElL,GAAG,GAAGA,GAAG,EAAE,GAAG+K,EAAEkhV,MAAMlhV,EAAEkhV,MAAMn0S,OAAO,GAAG/sC,EAAEkhV,OAAOn0S,EAAE,KAAM,iCAAiC,OAAOxtC,EAAE6lV,KAAKC,KAAKllV,EAAEH,EAAEkhV,MAAMxsV,EAAE2L,EAAE,CAAC2M,QAAQQ,MAAM,oCAAoCjd,EAAE,SAASoF,EAAE6rV,IAAK,CAAC,OAAO7rV,CAAC,EAAE4J,EAAE6lV,KAAKG,gBAAgB,SAASplV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAKvrU,EAAE,GAAG,OAAOA,EAAE1d,KAAK,EAAEd,EAAE+K,EAAEy/U,UAAUt/U,EAAE5P,GAAG,GAAGA,GAAG,EAAE0E,EAAE,EAAE,EAAEwe,EAAE1d,KAAK,EAAEd,EAAE+K,EAAEy/U,UAAUt/U,EAAE5P,GAAG,GAAGA,GAAG,EAAE0E,EAAE,EAAE,EAAEwe,EAAE1d,KAAK,EAAEd,EAAE+K,EAAEy/U,UAAUt/U,EAAE5P,GAAG,GAAGA,GAAG,EAAE0E,EAAE,EAAE,EAAEwe,EAAE1d,KAAK,EAAEd,EAAE+K,EAAEy/U,UAAUt/U,EAAE5P,GAAG,GAAGA,GAAG,EAAE0E,EAAE,EAAE,EAAEwe,CAAC,EAAElU,EAAEumV,KAAK,CAAC,EAAEvmV,EAAEumV,KAAKlsP,MAAM,SAASz5F,EAAE5P,EAAE0E,EAAE+K,GAAG,OAAOT,EAAEkhV,MAAM7mP,MAAMz5F,EAAE5P,EAAE0E,EAAE+K,EAAET,EAAEumV,KAAKT,KAAK,EAAE9lV,EAAEumV,KAAKT,KAAK,SAASllV,EAAE5P,EAAE0E,EAAE+K,GAAG,IAAIyT,EAAElU,EAAEy/U,KAAKtqV,EAAEO,EAAEU,EAAE,CAAC,EAAE,GAAGA,EAAE6rV,IAAI/tU,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAE,GAAG1E,GAAG,GAAGA,GAAG,GAAGA,GAAG,GAAGA,EAAE,OAAO,KAAK,GAAG,GAAGA,GAAG,GAAGA,GAAG,GAAGA,GAAGoF,EAAE6rV,KAAK,GAAG,GAAGjxV,GAAGoF,EAAE6rV,KAAK,EAAE,CAAC,IAAI5hV,EAAE6T,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAEU,EAAE2vV,SAAS/lV,EAAEkhV,MAAMc,aAAaphV,EAAEzL,EAAEkL,EAAG,CAAC,GAAG,GAAGrP,GAAGoF,EAAE6rV,KAAK,GAAG7rV,EAAE6rV,KAAK,GAAG,GAAG,GAAG7rV,EAAE6rV,IAAI7rV,EAAEU,MAAMod,EAAEgsU,UAAUt/U,EAAElL,GAAGA,GAAG,OAAO,GAAG,GAAGU,EAAE6rV,IAAI,CAAC,IAAI9hV,EAAE+T,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAEU,EAAEowV,KAAKtyU,EAAEwsU,YAAY9/U,EAAElL,EAAEyK,GAAGzK,GAAG,EAAEU,EAAEowV,KAAKl1V,MAAO,OAAO,GAAG,GAAGN,EAAE,CAACoF,EAAEqwV,KAAK,GAAGtmV,EAAE+T,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAE,IAAI,IAAIwK,EAAE,EAAEA,EAAEC,EAAED,IAAI,CAAC,IAAIK,EAAE2T,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAEU,EAAEqwV,KAAKjwV,KAAKwJ,EAAEumV,KAAKG,gBAAgB9lV,EAAEzL,EAAEoL,GAAI,CAAC,MAAM,GAAG,GAAGvP,GAAG,GAAGoF,EAAE6rV,KAAK,GAAG,GAAG7rV,EAAE6rV,IAAI,CAAC,IAAIhhV,EAAEiT,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAEU,EAAEuwV,KAAK3mV,EAAEkhV,MAAMY,aAAalhV,EAAEzL,EAAE8L,GAAG7K,EAAEwwV,MAAM,GAAG,IAAI/lV,EAAEqT,EAAEyrU,WAAW/+U,EAAElL,GAAQ,IAALA,GAAG,EAAMwK,EAAE,EAAEA,EAAEW,EAAEX,IAAI,CAAC,IAAIvK,EAAEue,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAEU,EAAEwwV,MAAMpwV,KAAK,GAAGb,EAAE,KAAKqK,EAAEumV,KAAKM,gBAAgBjmV,EAAEzL,EAAEQ,GAAI,CAAC,OAAO,GAAG,GAAG3E,GAAG,GAAGoF,EAAE6rV,KAAK,GAAG,GAAG7rV,EAAE6rV,IAAI,CAAC,IAAI/hV,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAACC,EAAE+T,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAE,IAAI,IAAIgL,EAAE,GAAGg/C,EAAE,EAAEA,EAAEv/C,EAAEu/C,IAAIh/C,EAAElK,KAAKwJ,EAAEkhV,MAAMc,aAAaphV,EAAEzL,EAAE+e,EAAEyrU,WAAW/+U,EAAElL,EAAE,EAAEgqD,KAAKhqD,GAAG,EAAEyK,EAAE,GAAGD,IAAI9J,EAAE0wV,QAAQpmV,GAAG,GAAGR,IAAI9J,EAAE2wV,QAAQrmV,GAAG,GAAGR,IAAI9J,EAAE4wV,QAAQtmV,EAAG,CAACP,EAAE+T,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAEU,EAAE6wV,UAAUjnV,EAAEumV,KAAKW,uBAAuBtmV,EAAElL,EAAEyK,EAAG,MAAO,CAAC,GAAG,GAAGnP,GAAG,GAAGoF,EAAE6rV,IAAI,CAAC,IAAI7hV,EAAE8T,EAAEyrU,WAAW/+U,EAAElL,GAAGA,GAAG,EAAE,IAAI+oD,EAAEvqC,EAAE0rU,SAASh/U,EAAElL,GAAG,GAAGA,GAAG,EAAE,GAAG+K,EAAEkhV,MAAMlhV,EAAEkhV,MAAMvhV,OAAO,GAAGK,EAAEkhV,OAAOvhV,EAAE,KAAM,iCAAiC,OAAOJ,EAAEumV,KAAKT,KAAKllV,EAAEH,EAAEkhV,MAAMxsV,EAAEspD,EAAE,CAAChxC,QAAQQ,MAAM,oCAAoCjd,EAAE,SAASoF,EAAE6rV,IAAK,CAAC,OAAO7rV,CAAC,EAAE4J,EAAEumV,KAAKM,gBAAgB,SAASjmV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKE,WAAWl/U,EAAEzP,EAAEkjB,EAAE,GAAG/e,EAAEO,EAAEkL,EAAE5P,GAAGA,GAAG,EAAE,IAAI,IAAIoF,EAAE,EAAEA,EAAEjB,EAAEiB,IAAI,CAAC,IAAIiK,EAAE3K,EAAEkL,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE1d,KAAKwJ,EAAEumV,KAAKY,iBAAiBvmV,EAAEH,EAAEJ,GAAI,CAAC,OAAO6T,CAAC,EAAElU,EAAEumV,KAAKY,iBAAiB,SAASvmV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKE,WAAWl/U,EAAE,CAAC,EAAEyT,EAAExe,EAAEkL,EAAE5P,GAAGmE,EAAEO,EAAEkL,EAAE5P,GAAG,GAAGA,GAAG,EAAEyP,EAAEqP,MAAM,GAAG,IAAI,IAAI1Z,EAAE,EAAEA,EAAE8d,EAAE,EAAE9d,IAAIqK,EAAEqP,MAAMtZ,KAAKd,EAAEkL,EAAE5P,IAAIA,GAAG,EAAE,OAAOyP,EAAE2mV,mBAAmBpnV,EAAEumV,KAAKW,uBAAuBtmV,EAAE5P,EAAEmE,GAAGsL,CAAC,EAAET,EAAEumV,KAAKW,uBAAuB,SAAStmV,EAAE5P,EAAE0E,GAAG,IAAI,IAAI+K,EAAET,EAAEy/U,KAAKE,WAAWzrU,EAAE,GAAG/e,EAAE,EAAEA,EAAEO,EAAEP,IAAI+e,EAAE1d,KAAKiK,EAAEG,EAAE5P,GAAGyP,EAAEG,EAAE5P,EAAE,IAAIA,GAAG,EAAE,OAAOkjB,CAAC,EAAElU,EAAEumV,KAAKc,qBAAqB,SAASzmV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAEzP,EAAEkjB,EAAE,GAAG/e,EAAEO,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI,IAAIoF,EAAE,EAAEA,EAAEjB,EAAEiB,IAAI,CAAC,IAAIiK,EAAE3K,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE1d,KAAKwJ,EAAEumV,KAAKe,sBAAsB1mV,EAAEH,EAAEJ,GAAI,CAAC,OAAO6T,CAAC,EAAElU,EAAEumV,KAAKe,sBAAsB,SAAS1mV,EAAE5P,GAAG,IAAI,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAE,CAAC,EAAEyT,EAAE,CAAC,YAAY,QAAQ,aAAa/e,EAAE,EAAEA,EAAE+e,EAAE5iB,OAAO6D,IAAI,CAAC,IAAIiB,EAAEV,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,GAAGmE,GAAGiB,IAAIqK,EAAEyT,EAAE/e,IAAIO,EAAEgrV,YAAY9/U,EAAE5P,EAAEoF,GAAGpF,GAAG,EAAEyP,EAAEyT,EAAE/e,IAAI7D,MAAO,CAAqB,OAApB8E,EAAEV,EAAEiqV,WAAW/+U,EAAE5P,GAAUA,GAAG,EAAEyP,EAAE8mV,MAAM7xV,EAAEgrV,YAAY9/U,EAAE5P,EAAE,EAAEoF,GAAGpF,GAAG,EAAEyP,EAAE8mV,MAAMj2V,OAAOmP,CAAC,EAAET,EAAEumV,KAAKG,gBAAgB,SAAS9lV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAEzP,EAAEkjB,EAAE,GAAG/e,EAAEO,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI,IAAIoF,EAAE,EAAEA,EAAEjB,EAAEiB,IAAI,CAAC,IAAIiK,EAAE3K,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE1d,KAAKwJ,EAAEumV,KAAKiB,aAAa5mV,EAAEH,EAAEJ,GAAI,CAAC,OAAO6T,CAAC,EAAElU,EAAEumV,KAAKiB,aAAa,SAAS5mV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEy/U,KAAKh/U,EAAE,CAACgnV,MAAM,IAAIhnV,EAAEinV,OAAOhyV,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIkjB,EAAExe,EAAEiqV,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI,IAAImE,EAAE,EAAEA,EAAE+e,EAAE,EAAE/e,IAAIsL,EAAEgnV,MAAMjxV,KAAKd,EAAEiqV,WAAW/+U,EAAE5P,IAAIA,GAAG,EAAE,OAAOyP,CAAC,EAAET,EAAEkM,KAAK,CAAC,EAAElM,EAAEkM,KAAKmuF,MAAM,SAASz5F,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAKvrU,EAAE,CAAC,EAAE,OAAOzT,EAAEq/U,UAAUl/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEyzU,aAAalnV,EAAEq/U,UAAUl/U,EAAE5P,GAAGA,GAAG,EAAEyP,EAAEm/U,SAASh/U,EAAE5P,GAAGA,GAAG,EAAEyP,EAAEm/U,SAASh/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEse,MAAM/xB,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE0zU,WAAWnnV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE2zU,QAAQpnV,EAAEkgV,WAAW//U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE4zU,SAASrnV,EAAEkgV,WAAW//U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEixU,KAAK1kV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEkxU,KAAK3kV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEmxU,KAAK5kV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEoxU,KAAK7kV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE6zU,SAAStnV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE8zU,cAAcvnV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE+zU,kBAAkBxnV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEg0U,iBAAiBznV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEi0U,gBAAgB1nV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,CAAC,EAAElU,EAAEooV,KAAK,CAAC,EAAEpoV,EAAEooV,KAAK/tP,MAAM,SAASz5F,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAKvrU,EAAE,CAAC,EAAE,OAAOzT,EAAEq/U,UAAUl/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEm0U,SAAS5nV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEo0U,UAAU7nV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEq0U,QAAQ9nV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEs0U,gBAAgB/nV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEu0U,mBAAmBhoV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEw0U,oBAAoBjoV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEy0U,WAAWloV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE00U,eAAenoV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE20U,cAAcpoV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE40U,YAAYroV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEA,GAAG,EAAEkjB,EAAE60U,iBAAiBtoV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE80U,iBAAiBvoV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,CAAC,EAAElU,EAAEipV,KAAK,CAAC,EAAEjpV,EAAEipV,KAAK5uP,MAAM,SAASz5F,EAAE5P,EAAE0E,EAAE+K,GAAG,IAAI,IAAIyT,EAAElU,EAAEy/U,KAAKtqV,EAAE,CAAC+zV,OAAO,GAAGC,UAAU,IAAI/yV,EAAE,EAAEiK,EAAE,EAAEF,EAAE,EAAEA,EAAEM,EAAEqkV,KAAKC,UAAU5kV,IAAIA,EAAEM,EAAE2nV,KAAKY,mBAAmB5yV,EAAE8d,EAAEyrU,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEqP,EAAE6T,EAAEgsU,UAAUt/U,EAAE5P,GAAGA,GAAG,GAAGmE,EAAE+zV,OAAO1yV,KAAKJ,GAAGjB,EAAEg0V,UAAU3yV,KAAK6J,GAAG,OAAOlL,CAAC,EAAE6K,EAAEopV,KAAK,CAAC,EAAEppV,EAAEopV,KAAK/uP,MAAM,SAASz5F,EAAE5P,EAAE0E,EAAE+K,GAAG,IAAIyT,EAAElU,EAAEy/U,KAAKtqV,EAAE+e,EAAEyrU,WAAW/+U,EAAE5P,GAAG,GAAGA,GAAG,EAAE,GAAGmE,EAAE,OAAO6K,EAAEopV,KAAKC,QAAQzoV,EAAE5P,EAAE,EAAE0E,EAAE+K,GAAG,IAAIrK,EAAE8d,EAAEyrU,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI,IAAIqP,EAAE,CAACipV,OAAO,GAAGj9P,KAAK,IAAIlsF,EAAE,EAAEA,EAAE/J,EAAE+J,IAAI,CAACnP,GAAG,EAAE0E,EAAEwe,EAAEyrU,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIkP,EAAEgU,EAAEyrU,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIuP,EAAEL,IAAI,EAAE,GAAG,IAAIK,GAAG,IAAI,KAAM,8BAA8BA,EAAEvP,EAAEgP,EAAEopV,KAAKG,YAAY3oV,EAAE5P,EAAEqP,EAAG,CAAC,OAAOA,CAAC,EAAEL,EAAEopV,KAAKC,QAAQ,SAASzoV,EAAE5P,EAAE0E,EAAE+K,GAAG,IAAIyT,EAAElU,EAAEy/U,KAAKvrU,EAAE4rU,UAAUl/U,EAAE5P,GAAGA,GAAG,EAAE,IAAImE,EAAE+e,EAAE0rU,SAASh/U,EAAE5P,GAAGA,GAAG,EAAE,IAAI,IAAIoF,EAAE,CAACkzV,OAAO,GAAGj9P,KAAK,IAAIhsF,EAAE,EAAEA,EAAElL,EAAEkL,IAAI,CAAC6T,EAAE0rU,SAASh/U,EAAE5P,GAAGA,GAAG,EAAE,IAAImP,EAAE+T,EAAEyrU,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEyrU,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIkP,EAAEC,IAAI,EAAE,GAAG,IAAID,GAAG,IAAI,KAAM,8BAA8BA,EAAElP,EAAEgP,EAAEopV,KAAKG,YAAY3oV,EAAE5P,EAAEoF,EAAG,CAAC,OAAOA,CAAC,EAAE4J,EAAEopV,KAAKG,YAAY,SAAS3oV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAKvrU,GAAG,EAAE/e,EAAEsL,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEyP,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEyP,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEyP,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI,IAAIoF,EAAE,EAAEA,EAAEjB,EAAEiB,IAAI,CAAC,IAAIiK,EAAEI,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAImP,EAAEM,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIkP,EAAEO,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEqP,GAAG6T,IAAIxe,EAAE4zV,OAAO9yV,KAAK6J,GAAG3K,EAAE22F,KAAK71F,KAAK,CAACgzV,OAAO,GAAG/C,KAAK,MAAM,IAAIlmV,EAAE7K,EAAE22F,KAAK32F,EAAE22F,KAAK/6F,OAAO,GAAGiP,EAAEipV,OAAOhzV,KAAK2J,GAAGI,EAAEkmV,KAAKjwV,KAAK0J,GAAGgU,EAAE7T,CAAE,CAAC,OAAOrP,CAAC,EAAEgP,EAAEilV,KAAK,CAAC,EAAEjlV,EAAEilV,KAAK5qP,MAAM,SAASz5F,EAAE5P,EAAE0E,EAAE+K,GAAG,IAAIyT,EAAElU,EAAEy/U,KAAKtqV,EAAE,GAAGiB,EAAEqK,EAAEyL,KAAKg8U,iBAAiB7nV,EAAEI,EAAEqkV,KAAKC,UAAU,EAAE,GAAG,GAAG3uV,EAAE,IAAI,IAAI+J,EAAE,EAAEA,EAAEE,EAAEF,IAAIhL,EAAEqB,KAAK0d,EAAEyrU,WAAW/+U,EAAE5P,GAAGmP,GAAG,KAAK,GAAG,GAAG,GAAG/J,EAAE,IAAI+J,EAAE,EAAEA,EAAEE,EAAEF,IAAIhL,EAAEqB,KAAK0d,EAAE0rU,SAASh/U,EAAE5P,GAAGmP,GAAG,KAAK,OAAOhL,CAAC,EAAE6K,EAAE8kV,KAAK,CAAC,EAAE9kV,EAAE8kV,KAAKzqP,MAAM,SAASz5F,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAKvrU,EAAE,CAAC,EAAE/e,EAAEsL,EAAEm/U,SAASh/U,EAAE5P,GAAG,OAAOA,GAAG,EAAEkjB,EAAE6wU,UAAUtkV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,OAAOmE,IAAI+e,EAAEu1U,UAAUhpV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEw1U,YAAYjpV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEy1U,mBAAmBlpV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE01U,qBAAqBnpV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE21U,SAASppV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE41U,kBAAkBrpV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE61U,WAAWtpV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE81U,gBAAgBvpV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAE+1U,mBAAmBxpV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEg2U,iBAAiBzpV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEi2U,sBAAsB1pV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEk2U,qBAAqB3pV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEm2U,kBAAkB5pV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,GAAGkjB,CAAC,EAAElU,EAAEnN,KAAK,CAAC,EAAEmN,EAAEnN,KAAKwnG,MAAM,SAASz5F,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAKvrU,EAAE,CAAC,EAAEzT,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAImE,EAAEsL,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAEyP,EAAEk/U,WAAW/+U,EAAE5P,GAAG,IAAI,IAAIoF,EAAEiK,EAAE,CAAC,YAAY,aAAa,gBAAgB,KAAK,WAAW,UAAU,iBAAiB,YAAY,eAAe,WAAW,cAAc,YAAY,cAAc,UAAU,aAAa,MAAM,iBAAiB,oBAAoB,iBAAiB,aAAa,gBAAgB,gBAAgB,mBAAmB,eAAe,eAAeF,EAAEnP,GAAG,EAAEkP,EAAE,EAAEA,EAAE/K,EAAE+K,IAAI,CAAC,IAAIK,EAAEE,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIiQ,EAAER,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI6P,EAAEJ,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI2E,EAAE8K,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI0P,EAAED,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAI0uD,EAAEj/C,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIoP,EAAEq+C,EAAEp+C,EAAE1K,GAAG6K,EAAEL,EAAE,GAAGhL,EAAEuqD,EAAE,GAAG,GAAGn/C,EAAEH,EAAEK,EAAEmgV,YAAYhgV,EAAEJ,EAAEE,EAAE,QAAQ,GAAG,GAAGH,GAAG,GAAGU,EAAEb,EAAEK,EAAEmgV,YAAYhgV,EAAEJ,EAAEE,EAAE,QAAQ,GAAG,GAAGO,EAAEb,EAAEK,EAAEi/U,UAAU9+U,EAAEJ,EAAEE,QAAQ,GAAG,GAAGO,EAAEb,EAAEK,EAAEmgV,YAAYhgV,EAAEJ,EAAEE,EAAE,QAAQ,GAAG,GAAGO,EAAEb,EAAEK,EAAEmgV,YAAYhgV,EAAEJ,EAAEE,EAAE,OAAQ,CAAC,GAAG,GAAGH,EAAE,KAAM,oBAAoBU,EAAE,iBAAiBV,EAAEH,EAAEK,EAAEi/U,UAAU9+U,EAAEJ,EAAEE,GAAG+M,QAAQQ,MAAM,gCAAgChN,EAAE,YAAa,CAAC,IAAIhB,EAAE,IAAIM,EAAE,IAAIM,EAAE1G,SAAS,IAAI,MAAM+Z,EAAEjU,KAAKiU,EAAEjU,GAAG,CAAC,GAAGiU,EAAEjU,QAAG,IAASw+C,EAAEA,EAAE9oD,GAAGyK,EAAE8T,EAAEjU,GAAGqqV,MAAMzpV,CAAE,CAAC,IAAI,IAAIE,KAAKmT,EAAE,GAAG,MAAMA,EAAEnT,GAAGwpV,gBAAgB,MAAMr2U,EAAEnT,GAAGupV,MAAM,OAAOp2U,EAAEnT,GAAG,IAAI,IAAIA,KAAKmT,EAAE,GAAG,MAAMA,EAAEnT,GAAGwpV,gBAAgB,GAAGr2U,EAAEnT,GAAGupV,MAAM,OAAOp2U,EAAEnT,GAAG,IAAI,IAAIA,KAAKmT,EAAE,GAAG,MAAMA,EAAEnT,GAAGwpV,gBAAgB,MAAMr2U,EAAEnT,GAAGupV,MAAM,OAAOp2U,EAAEnT,GAAG,IAAI,IAAIA,KAAKmT,EAAE,GAAG,MAAMA,EAAEnT,GAAGwpV,eAAe,OAAOr2U,EAAEnT,GAAG,IAAI,IAAIA,KAAKmT,EAAE,CAAC9d,EAAE2K,EAAE,KAAK,CAAC,OAAO0M,QAAQQ,MAAM,wCAAwCiG,EAAE9d,GAAGk0V,OAAOp2U,EAAE9d,EAAE,EAAE4J,EAAE,QAAQ,CAAC,EAAEA,EAAE,QAAQq6F,MAAM,SAASz5F,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAKE,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE,IAAIkjB,EAAE,CAAC,EAAE,GAAG,GAAGzT,EAAET,EAAE,QAAQwqV,SAAS5pV,EAAE5P,EAAEkjB,QAAQ,GAAG,GAAGzT,EAAET,EAAE,QAAQyqV,SAAS7pV,EAAE5P,EAAEkjB,QAAQ,GAAG,GAAGzT,GAAG,GAAGA,GAAG,GAAGA,EAAET,EAAE,QAAQ0qV,SAAS9pV,EAAE5P,EAAEkjB,OAAQ,CAAC,GAAG,GAAGzT,EAAE,KAAM,+BAA+BA,EAAET,EAAE,QAAQ2qV,SAAS/pV,EAAE5P,EAAEkjB,EAAG,CAAC,OAAOA,CAAC,EAAElU,EAAE,QAAQwqV,SAAS,SAAS5pV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAK,OAAO/pV,EAAEk1V,cAAcnqV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEm1V,cAAcpqV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEo1V,aAAarqV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEq1V,OAAOtqV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEs1V,gBAAgBvqV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEu1V,gBAAgBxqV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEw1V,kBAAkBzqV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEy1V,kBAAkB1qV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAE01V,kBAAkB3qV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAE21V,kBAAkB5qV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAE41V,oBAAoB7qV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAE61V,oBAAoB9qV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAE81V,eAAe/qV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAE+1V,mBAAmBhrV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEg2V,aAAajrV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEi2V,OAAOlrV,EAAEsgV,UAAUngV,EAAE5P,EAAE,IAAIA,GAAG,GAAG0E,EAAEk2V,gBAAgBnrV,EAAEm/U,SAASh/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEm2V,gBAAgBprV,EAAEm/U,SAASh/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEo2V,gBAAgBrrV,EAAEm/U,SAASh/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEq2V,gBAAgBtrV,EAAEm/U,SAASh/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEs2V,UAAU,CAACvrV,EAAE6/U,SAAS1/U,EAAE5P,GAAGyP,EAAE6/U,SAAS1/U,EAAE5P,EAAE,GAAGyP,EAAE6/U,SAAS1/U,EAAE5P,EAAE,GAAGyP,EAAE6/U,SAAS1/U,EAAE5P,EAAE,IAAIA,GAAG,EAAE0E,EAAEu2V,YAAYxrV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEw2V,iBAAiBzrV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEy2V,gBAAgB1rV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAE02V,cAAc3rV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAE22V,eAAe5rV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAE42V,aAAa7rV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAE62V,YAAY9rV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAE82V,aAAa/rV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,EAAG,CAAC,EAAEgP,EAAE,QAAQyqV,SAAS,SAAS7pV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAK,OAAOzuV,EAAEgP,EAAE,QAAQwqV,SAAS5pV,EAAE5P,EAAE0E,GAAGA,EAAE+2V,iBAAiBhsV,EAAEm/U,SAASh/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEg3V,iBAAiBjsV,EAAEm/U,SAASh/U,EAAE5P,GAAGA,EAAG,CAAC,EAAEgP,EAAE,QAAQ0qV,SAAS,SAAS9pV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAK,OAAOzuV,EAAEgP,EAAE,QAAQyqV,SAAS7pV,EAAE5P,EAAE0E,GAAGA,EAAEi3V,SAASlsV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEk3V,WAAWnsV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEm3V,UAAUpsV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEo3V,QAAQrsV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEq3V,aAAatsV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,EAAG,CAAC,EAAEgP,EAAE,QAAQ2qV,SAAS,SAAS/pV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAK,OAAOzuV,EAAEgP,EAAE,QAAQ0qV,SAAS9pV,EAAE5P,EAAE0E,GAAGA,EAAEs3V,wBAAwBvsV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,GAAG,EAAE0E,EAAEu3V,wBAAwBxsV,EAAEk/U,WAAW/+U,EAAE5P,GAAGA,EAAG,CAAC,EAAEgP,EAAEktV,KAAK,CAAC,EAAEltV,EAAEktV,KAAK7yP,MAAM,SAASz5F,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAET,EAAEy/U,KAAKvrU,EAAE,CAAC,EAAE,OAAOA,EAAEnhB,QAAQ0N,EAAEq/U,UAAUl/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEi5U,YAAY1sV,EAAEq/U,UAAUl/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEk5U,kBAAkB3sV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,EAAEm5U,mBAAmB5sV,EAAEy/U,UAAUt/U,EAAE5P,GAAGA,GAAG,EAAEkjB,CAAC,EAAE,MAAMlU,IAAIA,EAAE,CAAC,GAAG,MAAMA,EAAE0/C,IAAI1/C,EAAE0/C,EAAE,CAAC,GAAG1/C,EAAE0/C,EAAE4tS,YAAY,SAAS1sV,EAAEZ,GAAG,IAAIhP,EAAE4P,EAAEkjV,KAAKpuV,GAAG,EAAE,GAAG,MAAM1E,EAAEu8V,KAAK73V,EAAE1E,EAAEu8V,KAAK,MAAMv8V,EAAEw8V,KAAK93V,EAAE1E,EAAEw8V,KAAK,MAAMx8V,EAAEy8V,KAAK/3V,EAAE1E,EAAEy8V,KAAK,MAAMz8V,EAAE08V,OAAOh4V,EAAE1E,EAAE08V,OAAO,GAAGh4V,EAAE,KAAM,qCAAqC,IAAI+K,EAAEzP,EAAE+yV,OAAOruV,GAAG,GAAG,GAAG+K,EAAEw3J,OAAO,OAAOj4J,GAAGS,EAAExK,IAAI3E,OAAO,EAAEmP,EAAExK,IAAI+J,GAAG,GAAG,GAAGS,EAAEw3J,OAAO,CAAC,IAAI,IAAI/jJ,GAAG,EAAE/e,EAAE,EAAEA,EAAEsL,EAAE8jV,SAASjzV,OAAO6D,IAAI,GAAG6K,GAAGS,EAAE8jV,SAASpvV,GAAG,CAAC+e,EAAE/e,EAAE,KAAK,CAAC,OAAI,GAAG+e,GAAczT,EAAE+jV,WAAWtwU,GAAGlU,EAArB,EAAuC,OAAO,GAAGS,EAAEikV,cAAcxwU,GAAGzT,EAAEkkV,aAAa3kV,EAAES,EAAE+jV,WAAWtwU,IAAIzT,EAAEikV,cAAcxwU,IAAI,IAAIzT,EAAEikV,cAAcpzV,OAAO4iB,IAAIlU,EAAES,EAAEgkV,QAAQvwU,GAAG,CAAC,GAAG,IAAIzT,EAAEw3J,OAAO,CAAC,GAAGj4J,EAAES,EAAEi/K,OAAOj/K,EAAEi/K,OAAOpuL,OAAO,GAAG,GAAG,OAAO,EAAE,IAAI6D,EAAE,EAAEA,EAAEsL,EAAEi/K,OAAOpuL,OAAO6D,IAAI,CAAC,IAAIiB,EAAEqK,EAAEi/K,OAAOvqL,GAAG,GAAGiB,EAAE,IAAI4J,GAAGA,GAAG5J,EAAE,GAAG,OAAOA,EAAE,IAAI4J,EAAE5J,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,KAAM,6BAA6BqK,EAAEw3J,MAAM,EAAEj4J,EAAE0/C,EAAEiuS,YAAY,SAAS/sV,EAAE5P,GAAG,IAAI0E,EAAE,CAACk4V,KAAK,GAAGC,KAAK,IAAI,GAAGjtV,EAAEktV,KAAKltV,EAAEktV,IAAIrhS,QAAQz7D,GAAG,CAAC,IAAIyP,EAAEG,EAAEktV,IAAIrhS,QAAQz7D,GAAG,OAAO,MAAMyP,EAAE/K,GAAG,iBAAiB+K,IAAIA,EAAET,EAAE8tV,IAAIC,OAAOttV,GAAGG,EAAEktV,IAAIrhS,QAAQz7D,GAAGyP,GAAGA,EAAE,CAAC,GAAGG,EAAE8hV,IAAI,CAAC,IAAIxuU,EAAE,CAACte,EAAE,EAAEmL,EAAE,EAAEunB,MAAM,GAAG0lU,OAAO,EAAEC,WAAU,EAAGpmV,MAAMjH,EAAE8hV,IAAIY,QAAQ1iV,EAAE8hV,IAAIY,QAAQ4K,cAAc,EAAErzR,MAAK,GAAI1lE,EAAEyL,EAAE8hV,IAAItsV,EAAEwK,EAAE8hV,IAAIY,QAAQ,GAAGnuV,EAAE4tV,IAAI,CAAC,IAAI,IAAI1iV,EAAE,EAAElL,EAAE+tV,SAAS7iV,EAAE,IAAIrP,GAAGqP,GAAG,EAAEjK,EAAEjB,EAAE6tV,QAAQ7tV,EAAE+tV,SAAS7iV,EAAE,IAAIijV,OAAQ,CAACtjV,EAAE0/C,EAAEyuS,SAASvtV,EAAE8hV,IAAII,YAAY9xV,GAAGkjB,EAAE/e,EAAEiB,EAAEV,EAAG,MAAMkL,EAAEikV,MAAM7kV,EAAE0/C,EAAE0uS,UAAUp9V,EAAE4P,EAAElL,GAAG,OAAOA,CAAC,EAAEsK,EAAE0/C,EAAE0uS,UAAU,SAASxtV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAEzP,EAAE6zV,KAAKjkV,GAAG,MAAMH,IAAIA,EAAEzP,EAAE6zV,KAAKjkV,GAAGZ,EAAE6kV,KAAKG,WAAWh0V,EAAE4P,IAAI,MAAMH,IAAIA,EAAEykV,KAAK,EAAEllV,EAAE0/C,EAAE2uS,aAAa5tV,EAAE/K,GAAGsK,EAAE0/C,EAAE4uS,YAAY7tV,EAAEzP,EAAE0E,GAAI,EAAEsK,EAAE0/C,EAAE2uS,aAAa,SAASztV,EAAE5P,GAAG,IAAI,IAAI0E,EAAE,EAAEA,EAAEkL,EAAEskV,IAAIxvV,IAAI,CAAC,IAAI,IAAI+K,EAAE,GAAG/K,EAAE,EAAEkL,EAAE2kV,OAAO7vV,EAAE,GAAG,EAAEwe,EAAEtT,EAAE2kV,OAAO7vV,GAAGP,EAAEsL,EAAEtL,GAAG+e,EAAE/e,IAAI,CAAC,IAAIiB,EAAEjB,GAAGsL,EAAEyT,EAAE/e,EAAE,EAAEkL,EAAElL,GAAG+e,EAAEzT,EAAEtL,EAAE,EAAEgL,EAAE,EAAES,EAAE4xB,MAAMr9B,GAAG+K,EAAE,EAAEU,EAAE4xB,MAAMp8B,GAAGmK,EAAE,EAAEK,EAAE4xB,MAAMnyB,GAAGY,EAAEL,EAAE6kV,GAAGtwV,GAAG0L,EAAED,EAAE8kV,GAAGvwV,GAAG,GAAGA,GAAGsL,EAAE,GAAGN,EAAE,CAAC,IAAID,EAAE,CAACF,EAAE0/C,EAAE1L,EAAEowM,OAAOpzP,EAAEiQ,EAAEJ,GAAG,QAAQ,CAACb,EAAE0/C,EAAE1L,EAAEowM,OAAOpzP,EAAE4P,EAAE6kV,GAAGrvV,GAAGwK,EAAE8kV,GAAGtvV,GAAI,MAAM8J,EAAEF,EAAE0/C,EAAE1L,EAAEowM,OAAOpzP,EAAE4P,EAAE6kV,GAAGrvV,GAAGwK,EAAE8kV,GAAGtvV,IAAI4J,EAAE0/C,EAAE1L,EAAEowM,OAAOpzP,GAAG4P,EAAE6kV,GAAGrvV,GAAG6K,GAAG,GAAGL,EAAE8kV,GAAGtvV,GAAGyK,GAAG,GAAGV,EAAED,GAAGF,EAAE0/C,EAAE1L,EAAEqwM,OAAOrzP,EAAEiQ,EAAEJ,GAAGN,EAAEP,EAAE0/C,EAAE1L,EAAEu6S,SAASv9V,EAAEiQ,EAAEJ,EAAED,EAAE6kV,GAAGplV,GAAGO,EAAE8kV,GAAGrlV,IAAIL,EAAE0/C,EAAE1L,EAAEu6S,SAASv9V,EAAEiQ,EAAEJ,GAAGI,EAAEL,EAAE6kV,GAAGplV,IAAI,GAAGQ,EAAED,EAAE8kV,GAAGrlV,IAAI,EAAG,CAACL,EAAE0/C,EAAE1L,EAAEw6S,UAAUx9V,EAAG,CAAC,EAAEgP,EAAE0/C,EAAE4uS,YAAY,SAAS1tV,EAAE5P,EAAE0E,GAAG,IAAI,IAAI+K,EAAE,EAAEA,EAAEG,EAAEmiG,MAAMzxG,OAAOmP,IAAI,CAAC,IAAIyT,EAAE,CAAC05U,KAAK,GAAGC,KAAK,IAAI14V,EAAEyL,EAAEmiG,MAAMtiG,GAAGT,EAAE0/C,EAAE0uS,UAAUj5V,EAAEwwV,WAAW30V,EAAEkjB,GAAG,IAAI,IAAI9d,EAAEjB,EAAEqL,EAAEH,EAAE,EAAEA,EAAE6T,EAAE25U,KAAKv8V,OAAO+O,GAAG,EAAE,CAAC,IAAIF,EAAE+T,EAAE25U,KAAKxtV,GAAGH,EAAEgU,EAAE25U,KAAKxtV,EAAE,GAAG3K,EAAEm4V,KAAKr3V,KAAK2J,EAAE/J,EAAEV,EAAEwK,EAAE9J,EAAE6J,EAAE7J,EAAEw8J,IAAIl9J,EAAEm4V,KAAKr3V,KAAK2J,EAAE/J,EAAET,EAAEuK,EAAE9J,EAAE8J,EAAE9J,EAAEy8J,GAAI,CAAC,IAAIxyJ,EAAE,EAAEA,EAAE6T,EAAE05U,KAAKt8V,OAAO+O,IAAI3K,EAAEk4V,KAAKp3V,KAAK0d,EAAE05U,KAAKvtV,GAAI,CAAC,EAAEL,EAAE0/C,EAAE+uS,eAAe,SAAS7tV,EAAE5P,GAAG,IAAI0E,EAAEsK,EAAEkhV,MAAMa,YAAY/wV,EAAE4P,GAAG,OAAQ,GAAGlL,EAAE,EAAE1E,EAAE0E,EAAE,EAAE,EAAEsK,EAAE0/C,EAAEgvS,kBAAkB,SAAS9tV,EAAE5P,EAAE0E,GAAG,IAAI+K,EAAE,EAAEyT,GAAE,EAAG,GAAGtT,EAAEilV,KAAK,IAAI,IAAI1wV,EAAEyL,EAAEilV,KAAKzvV,EAAEjB,EAAEosV,WAAWlhV,EAAElL,EAAEksV,YAAYlhV,EAAE,GAAGD,EAAE,EAAEA,EAAEG,EAAE/O,OAAO4O,IAAI,CAAC,IAAIK,EAAEF,EAAEH,GAAG,GAAG,QAAQK,EAAEuoB,IAAI,CAAC5U,GAAE,EAAG,IAAI,IAAIjT,EAAE,EAAEA,EAAEV,EAAE2hV,IAAI5wV,OAAO2P,IAAI,IAAId,EAAEI,EAAE2hV,IAAIjhV,IAAI,CAACd,EAAEI,EAAE2hV,IAAIjhV,KAAI,EAAG,IAAI,IAAIJ,EAAEzK,EAAEmK,EAAE2hV,IAAIjhV,IAAItL,EAAE,EAAEA,EAAEkL,EAAE6gV,KAAKpwV,OAAOqE,IAAI,GAAG,MAAMkL,EAAE6gV,KAAK/rV,GAAG,CAAC,IAAI+K,EAAEg/C,EAAE7+C,EAAE6gV,KAAK/rV,GAAG,IAAI+pD,EAAEqmS,WAAW,IAAIrlV,EAAEV,EAAEkhV,MAAMiB,cAAcziS,EAAEqmS,SAAS/0V,IAAI,GAAG,GAAG6P,EAAE8gV,YAAY,GAAG,GAAG9gV,EAAE8gV,MAAM,CAAC,IAAIvhV,EAAE,GAAG,GAAGs/C,EAAEuiS,IAAI,CAAC,IAAIxjS,EAAEiB,EAAEumS,SAASvlV,GAAG,IAAIR,EAAE,EAAEA,EAAEu+C,EAAEntD,OAAO4O,IAAIu+C,EAAEv+C,GAAGgmV,MAAMxwV,IAAI0K,EAAEq+C,EAAEv+C,GAAI,MAAM,GAAG,GAAGw/C,EAAEuiS,IAAI,CAAC,IAAIzhV,EAAER,EAAE0/C,EAAE+uS,eAAez9V,EAAE0uD,EAAE2mS,WAAWpmV,EAAED,EAAE0/C,EAAE+uS,eAAe/4V,EAAEgqD,EAAE4mS,WAAWlmV,EAAEs/C,EAAE0zG,OAAO5yJ,GAAGP,EAAG,CAACG,GAAGA,EAAE+lV,MAAM/lV,EAAE+lV,KAAK,KAAK1lV,GAAGL,EAAE+lV,KAAK,IAAI/lV,GAAGA,EAAEgmV,MAAMhmV,EAAEgmV,KAAK,KAAK3lV,GAAGL,EAAEgmV,KAAK,GAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGxlV,EAAEwoV,OAAOl1U,EAAE,CAAC,IAAInT,EAAEH,EAAEwoV,KAAKE,OAAOpjV,QAAQlV,GAAG,IAAI,GAAG+P,EAAE,CAAC,IAAIwnC,EAAE3nC,EAAEwoV,KAAK/8P,KAAKtrF,GAAGyoV,OAAOtjV,QAAQxQ,IAAI,GAAG6yC,IAAI9nC,GAAGG,EAAEwoV,KAAK/8P,KAAKtrF,GAAG0lV,KAAKl+S,GAAI,CAAC,CAAC,OAAO9nC,CAAC,EAAET,EAAE0/C,EAAEivS,WAAW,SAAS/tV,EAAE5P,EAAE0E,EAAE+K,GAAG,IAAI,IAAIyT,EAAEtT,EAAEtP,OAAON,EAAE,EAAEmE,EAAE,EAAEA,EAAEO,EAAEgsV,KAAKpwV,OAAO6D,IAAI,GAAG,MAAMO,EAAEgsV,KAAKvsV,GAAG,CAAC,IAAIiB,EAAEiK,EAAE3K,EAAEgsV,KAAKvsV,GAAG,IAAIkL,EAAE0lV,WAAW,IAAI3vV,EAAE4J,EAAEkhV,MAAMiB,cAAc9hV,EAAE0lV,SAASnlV,EAAE5P,KAAK,GAAG,GAAG0E,EAAEisV,MAAM/gV,EAAE5P,GAAG,GAAGqP,EAAE4hV,IAAIrhV,EAAE5P,GAAG4P,EAAE5P,GAAGqP,EAAEvJ,MAAM8J,EAAE5P,GAAGqP,EAAEmmV,KAAKpwV,QAAQ,GAAG,GAAGV,EAAEisV,MAAM,IAAI,IAAIxhV,EAAEE,EAAEomV,KAAKrwV,GAAG8J,EAAE,EAAEA,EAAEC,EAAE7O,OAAO4O,IAAI,CAAC,IAAIK,EAAEJ,EAAED,GAAGe,EAAEV,EAAEknV,MAAMn2V,OAAO,KAAK2P,EAAEiT,GAAG,CAAC,IAAI,IAAIrT,GAAE,EAAGlL,EAAE,EAAE+K,EAAE,EAAEA,EAAEO,EAAEP,IAAI,CAAC,MAAM,GAAGE,EAAE5P,EAAE2E,GAAG,EAAE+K,KAAK/K,IAAI4K,EAAEknV,MAAM/mV,IAAIE,EAAE5P,EAAE2E,GAAG,EAAE+K,MAAMG,GAAE,EAAI,CAAC,GAAGA,EAAE,CAAe,IAAdD,EAAE5P,GAAGuP,EAAEmnV,OAAWhnV,EAAE,EAAEA,EAAEO,EAAEtL,EAAE+K,IAAIE,EAAE5P,EAAE0P,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,GAAG,GAAGhL,EAAEisV,OAAO,GAAGthV,EAAE4hV,IAAI,IAAI,IAAIviS,EAAE1/C,EAAEkhV,MAAMa,YAAY1hV,EAAEsmV,KAAK/lV,EAAE5P,IAAIoP,EAAEC,EAAEsmV,KAAKjnS,EAAE,GAAGjB,EAAEp+C,EAAEumV,MAAMxmV,GAAGI,EAAE,EAAEA,EAAEi+C,EAAEntD,OAAOkP,IAAI,CAAC,IAAIP,EAAEw+C,EAAEj+C,GAAGO,EAAEd,EAAE6P,MAAM,KAAK/O,EAAEzP,OAAO4iB,GAAG,CAAC,IAAIrT,GAAE,EAAGH,EAAE,EAAEA,EAAEK,EAAEzP,OAAOoP,IAAI,CAAC,IAAI6nC,EAAEvoC,EAAEkhV,MAAMa,YAAY1hV,EAAEsmV,KAAK/lV,EAAE5P,EAAE,EAAE0P,IAAI,IAAI,GAAGg/C,GAAGr/C,EAAEsmV,KAAKp+S,EAAE,IAAIxnC,EAAEL,GAAG,CAACG,GAAE,EAAG,KAAK,CAAC,CAAC,GAAGA,EAAE,CAAC,IAAI/E,EAAEmE,EAAEmnV,mBAAmB,IAAIlnV,EAAE,EAAEA,EAAEpE,EAAExK,OAAO4O,GAAG,EAAEpE,EAAEoE,GAAGpE,EAAEoE,EAAE,EAAG,CAAC,CAAC,MAAM,GAAG,GAAGxK,EAAEisV,OAAO,GAAGthV,EAAE4hV,IAAI,CAAC,IAAIjiV,EAAE0/C,EAAEkvS,YAAYhuV,EAAEP,EAAEymV,QAAQ91V,EAAEqP,EAAEymV,QAAQx1V,QAAQ,SAAS,IAAI0O,EAAE0/C,EAAEkvS,YAAYhuV,EAAEP,EAAE0mV,QAAQ/1V,GAAG,SAAS,IAAIgP,EAAE0/C,EAAEkvS,YAAYhuV,EAAEP,EAAE2mV,QAAQh2V,EAAEqP,EAAE0mV,QAAQz1V,QAAQ,SAAS,IAAI0kC,EAAE31B,EAAE4mV,UAAU,IAAIzmV,EAAE,EAAEA,EAAEw1B,EAAE1kC,OAAOkP,GAAG,EAAE,CAACk/C,EAAE1pB,EAAEx1B,GAAG,IAAI5K,EAAE6K,EAAEu1B,EAAEx1B,EAAE,IAAIR,EAAE0/C,EAAEivS,WAAW/tV,EAAE5P,EAAE0uD,EAAE9pD,EAAE6K,EAAG,CAAC,CAAC,CAAC,EAAET,EAAE0/C,EAAEkvS,YAAY,SAAShuV,EAAE5P,EAAE0E,GAAG,IAAI,IAAI+K,EAAE,EAAEA,EAAEzP,EAAEM,OAAOmP,IAAK,IAAI,GAAGT,EAAEkhV,MAAMiB,cAAcnxV,EAAEyP,GAAGG,EAAElL,EAAE+K,IAAI,OAAO,EAAG,OAAO,CAAE,EAAET,EAAE0/C,EAAEmvS,aAAa,SAASjuV,EAAE5P,EAAE0E,GAAG,IAAI,IAAI+K,EAAE,CAACmtV,KAAK,GAAGC,KAAK,IAAI35U,EAAE,EAAE/e,EAAE,EAAEA,EAAEnE,EAAEM,OAAO6D,IAAI,CAAC,IAAIiB,EAAEpF,EAAEmE,GAAG,IAAI,GAAGiB,EAAE,CAAC,IAAI,IAAIiK,EAAElL,EAAEnE,EAAEM,OAAO,IAAI,GAAGN,EAAEmE,EAAE,GAAGnE,EAAEmE,EAAE,GAAG,EAAEgL,EAAEH,EAAE0/C,EAAEiuS,YAAY/sV,EAAExK,GAAG8J,EAAE,EAAEA,EAAEC,EAAE0tV,KAAKv8V,OAAO4O,GAAG,EAAEO,EAAEotV,KAAKr3V,KAAK2J,EAAE0tV,KAAK3tV,GAAGgU,GAAGzT,EAAEotV,KAAKr3V,KAAK2J,EAAE0tV,KAAK3tV,EAAE,IAAsB,IAAlBxK,GAAG+K,EAAEmtV,KAAKp3V,KAAKd,GAAOwK,EAAE,EAAEA,EAAEC,EAAEytV,KAAKt8V,OAAO4O,IAAIO,EAAEmtV,KAAKp3V,KAAK2J,EAAEytV,KAAK1tV,IAAIxK,GAAG+K,EAAEmtV,KAAKp3V,KAAK,KAAK0d,GAAGtT,EAAEqoV,KAAKC,OAAO9yV,GAAGjB,EAAEnE,EAAEM,OAAO,IAAI4iB,GAAGlU,EAAE0/C,EAAEgvS,kBAAkB9tV,EAAExK,EAAEiK,GAAI,CAAC,CAAC,OAAOI,CAAC,EAAET,EAAE0/C,EAAE1L,EAAE,CAAC,EAAEh0C,EAAE0/C,EAAE1L,EAAEowM,OAAO,SAASxjP,EAAEZ,EAAEhP,GAAG4P,EAAEgtV,KAAKp3V,KAAK,KAAKoK,EAAEitV,KAAKr3V,KAAKwJ,EAAEhP,EAAG,EAAEgP,EAAE0/C,EAAE1L,EAAEqwM,OAAO,SAASzjP,EAAEZ,EAAEhP,GAAG4P,EAAEgtV,KAAKp3V,KAAK,KAAKoK,EAAEitV,KAAKr3V,KAAKwJ,EAAEhP,EAAG,EAAEgP,EAAE0/C,EAAE1L,EAAE86S,QAAQ,SAASluV,EAAEZ,EAAEhP,EAAE0E,EAAE+K,EAAEyT,EAAE/e,GAAGyL,EAAEgtV,KAAKp3V,KAAK,KAAKoK,EAAEitV,KAAKr3V,KAAKwJ,EAAEhP,EAAE0E,EAAE+K,EAAEyT,EAAE/e,EAAG,EAAE6K,EAAE0/C,EAAE1L,EAAEu6S,SAAS,SAAS3tV,EAAEZ,EAAEhP,EAAE0E,EAAE+K,GAAGG,EAAEgtV,KAAKp3V,KAAK,KAAKoK,EAAEitV,KAAKr3V,KAAKwJ,EAAEhP,EAAE0E,EAAE+K,EAAG,EAAET,EAAE0/C,EAAE1L,EAAEw6S,UAAU,SAAS5tV,GAAGA,EAAEgtV,KAAKp3V,KAAK,IAAK,EAAEwJ,EAAE0/C,EAAEyuS,SAAS,SAASvtV,EAAE5P,EAAE0E,EAAE+K,EAAEyT,GAAG,IAAI,IAAI/e,EAAEnE,EAAEs3B,MAAMlyB,EAAEpF,EAAEg9V,OAAO3tV,EAAErP,EAAEi9V,UAAU9tV,EAAEnP,EAAE6W,MAAM3H,EAAElP,EAAE6pE,KAAKt6D,EAAE,EAAEU,EAAEjQ,EAAE4E,EAAEiL,EAAE7P,EAAE+P,EAAEpL,EAAE,EAAE+K,EAAE,EAAEg/C,EAAE,EAAEt/C,EAAE,EAAEq+C,EAAE,EAAEj+C,EAAE,EAAEP,EAAE,EAAEc,EAAE,EAAEwnC,EAAE,EAAEzsC,EAAE,EAAEk6B,EAAE,CAACl7B,IAAI,EAAEmkD,KAAK,GAAG1+C,EAAEK,EAAEtP,QAAQ,CAAC0O,EAAE0iV,IAAIkB,cAAchjV,EAAEL,EAAEy1B,GAAG,IAAIpgC,EAAEogC,EAAEl7B,IAAI,GAAGyF,GAAGy1B,EAAEipB,KAAK,MAAMrpD,GAAG,OAAOA,EAAET,EAAE7D,OAAO,GAAG,IAAI+O,IAAIF,EAAEhL,EAAE+iC,QAAQz3B,EAAEsuV,eAAe34V,GAAGjB,EAAE7D,QAAQ,EAAE6D,EAAE7D,OAAO,EAAE+O,GAAE,OAAQ,GAAG,MAAMzK,GAAG,OAAOA,EAAGT,EAAE7D,OAAO,GAAG,IAAI+O,IAAIF,EAAEhL,EAAE+iC,QAAQz3B,EAAEsuV,eAAe34V,GAAGjB,EAAE7D,QAAQ,EAAE6D,EAAE7D,OAAO,EAAE+O,GAAE,OAAS,GAAG,MAAMzK,EAAET,EAAE7D,OAAO,IAAI+O,IAAIF,EAAEhL,EAAE+iC,QAAQz3B,EAAEsuV,cAAc1uV,GAAE,GAAIH,GAAGF,EAAE0/C,EAAE1L,EAAEw6S,UAAUt6U,GAAGrT,GAAG1L,EAAEu1D,MAAM1qD,EAAE0/C,EAAE1L,EAAEowM,OAAOlwO,EAAEjT,EAAEJ,GAAGX,GAAE,OAAQ,GAAG,MAAMtK,EAAE,KAAKT,EAAE7D,OAAO,GAAG2P,GAAG9L,EAAE+iC,QAAQr3B,GAAG1L,EAAE+iC,QAAQl4B,EAAE0/C,EAAE1L,EAAEqwM,OAAOnwO,EAAEjT,EAAEJ,QAAQ,GAAG,MAAMjL,GAAG,MAAMA,EAAE,IAAI,IAAIo+C,EAAE7+C,EAAE7D,OAAOk8C,EAAE,MAAM53C,EAAEkL,EAAE,EAAEA,EAAEkzC,EAAElzC,IAAI,CAAC,IAAI6yC,EAAEx+C,EAAE+iC,QAAQsV,EAAEvsC,GAAG0yC,EAAE9yC,GAAG8yC,EAAEnG,GAAGA,EAAExtC,EAAE0/C,EAAE1L,EAAEqwM,OAAOnwO,EAAEjT,EAAEJ,EAAG,MAAM,GAAG,MAAMjL,GAAG,OAAOA,EAAE,CAACo+C,EAAE7+C,EAAE7D,OAAO,IAAI,IAAI+tD,EAAE,EAAEA,EAAE,GAAGrL,GAAGr+C,EAAEsL,EAAE9L,EAAE+iC,QAAQx3B,EAAEG,EAAE1L,EAAE+iC,QAAQwnB,EAAE/pD,EAAER,EAAE+iC,QAAQ93B,EAAEM,EAAEvL,EAAE+iC,QAAQj3B,EAAEy+C,EAAEvqD,EAAE+iC,QAAQr3B,EAAET,EAAEjL,EAAE+iC,QAAQl4B,EAAE0/C,EAAE1L,EAAE86S,QAAQ56U,EAAEve,EAAE+K,EAAEg/C,EAAEt/C,EAAEa,EAAEJ,GAAGw+C,GAAG,EAAE,OAAOzpD,IAAIqL,GAAG9L,EAAE+iC,QAAQr3B,GAAG1L,EAAE+iC,QAAQl4B,EAAE0/C,EAAE1L,EAAEqwM,OAAOnwO,EAAEjT,EAAEJ,GAAI,KAAM,CAAC,GAAG,OAAOjL,EAAE,MAAM,GAAG,SAASA,GAAG,SAASA,GAAG,SAASA,GAAG,SAASA,EAAE,SAASA,IAAI8K,EAAEG,EAAE6+C,GAAG/pD,EAAEsL,EAAE9L,EAAE+iC,SAAS/iC,EAAE+iC,QAAQp8B,EAAEsE,EAAEM,EAAEvL,EAAE+iC,QAAQ13B,EAAEJ,EAAEW,EAAEF,EAAEI,GAAGhB,GAAGw+C,GAAGlW,EAAEmX,EAAEvqD,EAAE+iC,SAAS/iC,EAAE+iC,SAAS/iC,EAAE+iC,SAAS/iC,EAAE+iC,QAAQl4B,EAAE0/C,EAAE1L,EAAE86S,QAAQ56U,EAAEve,EAAE+K,EAAEg/C,EAAEt/C,EAAEmoC,EAAEzsC,GAAGkE,EAAE0/C,EAAE1L,EAAE86S,QAAQ56U,EAAEuqC,EAAEj+C,EAAEP,EAAEc,EAAEE,EAAEJ,IAAI,SAASjL,IAAID,EAAEsL,EAAE9L,EAAE+iC,QAAQx3B,EAAEG,EAAE1L,EAAE+iC,QAAQwnB,EAAE/pD,EAAER,EAAE+iC,QAAQ93B,EAAEM,EAAEvL,EAAE+iC,QAAQqQ,EAAEmX,EAAEvqD,EAAE+iC,QAAQp8B,EAAEsE,EAAEjL,EAAE+iC,QAAQumB,EAAElW,EAAEpzC,EAAE+iC,QAAQ13B,EAAE1E,EAAE3G,EAAE+iC,QAAQj4B,EAAEw+C,EAAEtpD,EAAE+iC,QAAQn3B,EAAEP,EAAErL,EAAE+iC,QAAQj3B,EAAEhB,EAAE9K,EAAE+iC,QAAQr3B,EAAEE,EAAE5L,EAAE+iC,QAAQ/iC,EAAE+iC,QAAQl4B,EAAE0/C,EAAE1L,EAAE86S,QAAQ56U,EAAEve,EAAE+K,EAAEg/C,EAAEt/C,EAAEmoC,EAAEzsC,GAAGkE,EAAE0/C,EAAE1L,EAAE86S,QAAQ56U,EAAEuqC,EAAEj+C,EAAEP,EAAEc,EAAEE,EAAEJ,IAAI,SAASjL,IAAID,EAAEsL,EAAE9L,EAAE+iC,QAAQx3B,EAAEG,EAAE1L,EAAE+iC,QAAQwnB,EAAE/pD,EAAER,EAAE+iC,QAAQp8B,EAAEsE,EAAEM,EAAEvL,EAAE+iC,QAAQ13B,EAAEJ,EAAEH,GAAGw+C,GAAGlW,EAAEmX,EAAEvqD,EAAE+iC,SAAS/iC,EAAE+iC,SAAS/iC,EAAE+iC,QAAQn3B,EAAEP,EAAErL,EAAE+iC,QAAQj3B,EAAEhB,EAAE9K,EAAE+iC,QAAQl4B,EAAE0/C,EAAE1L,EAAE86S,QAAQ56U,EAAEve,EAAE+K,EAAEg/C,EAAEt/C,EAAEmoC,EAAEzsC,GAAGkE,EAAE0/C,EAAE1L,EAAE86S,QAAQ56U,EAAEuqC,EAAEj+C,EAAEP,EAAEc,EAAEE,EAAEJ,IAAI,SAASjL,IAAID,EAAEsL,EAAE9L,EAAE+iC,QAAQx3B,EAAEG,EAAE1L,EAAE+iC,QAAQwnB,EAAE/pD,EAAER,EAAE+iC,QAAQ93B,EAAEM,EAAEvL,EAAE+iC,QAAQqQ,EAAEmX,EAAEvqD,EAAE+iC,QAAQp8B,EAAEsE,EAAEjL,EAAE+iC,QAAQumB,EAAElW,EAAEpzC,EAAE+iC,QAAQ13B,EAAE1E,EAAE3G,EAAE+iC,QAAQj4B,EAAEw+C,EAAEtpD,EAAE+iC,QAAQn3B,EAAEP,EAAErL,EAAE+iC,QAAQvhC,KAAK4f,IAAItW,EAAEgB,GAAGtK,KAAK4f,IAAIxV,EAAEF,GAAGI,EAAEhB,EAAE9K,EAAE+iC,QAAQr3B,EAAEE,EAAE5L,EAAE+iC,QAAQl4B,EAAE0/C,EAAE1L,EAAE86S,QAAQ56U,EAAEve,EAAE+K,EAAEg/C,EAAEt/C,EAAEmoC,EAAEzsC,GAAGkE,EAAE0/C,EAAE1L,EAAE86S,QAAQ56U,EAAEuqC,EAAEj+C,EAAEP,EAAEc,EAAEE,EAAEJ,SAAS,GAAG,OAAOjL,EAAE,CAAC,GAAGT,EAAE7D,OAAO,IAAI+O,IAAIF,EAAEhL,EAAE+iC,QAAQxiC,EAAEq5V,cAAc1uV,GAAE,GAAI,GAAGlL,EAAE7D,OAAO,CAAC,IAAIgP,EAAEnL,EAAE+iC,QAAQkT,EAAEj2C,EAAE+iC,QAAQ0P,EAAEzyC,EAAE+iC,QAAQvE,EAAEx+B,EAAE+iC,QAAQ6a,EAAE/yC,EAAE0iV,IAAIiB,UAAUjuV,EAAEkyC,GAAG6P,EAAEz3C,EAAE0iV,IAAIiB,UAAUjuV,EAAEi+B,GAAG3zB,EAAE0/C,EAAEyuS,SAASz4V,EAAEotV,YAAY/vS,GAAG/hD,EAAE0E,EAAE+K,EAAEyT,GAAGljB,EAAE4E,EAAE0K,EAAEtP,EAAE+P,EAAEqqC,EAAEprC,EAAE0/C,EAAEyuS,SAASz4V,EAAEotV,YAAYrrS,GAAGzmD,EAAE0E,EAAE+K,EAAEyT,EAAG,CAAChU,IAAIF,EAAE0/C,EAAE1L,EAAEw6S,UAAUt6U,GAAGhU,GAAE,EAAI,MAAM,GAAG,OAAOtK,GAAG,OAAOA,EAAGT,EAAE7D,OAAO,GAAG,IAAI+O,IAAIF,EAAEhL,EAAE+iC,QAAQz3B,EAAEsuV,eAAe34V,GAAGjB,EAAE7D,QAAQ,EAAE6D,EAAE7D,OAAO,EAAE+O,GAAE,EAAGE,GAAGnK,EAAE,GAAG,OAAQ,GAAG,OAAOR,EAAET,EAAE7D,OAAO,IAAI+O,IAAIF,EAAEhL,EAAE+iC,QAAQz3B,EAAEsuV,cAAc1uV,GAAE,GAAIQ,GAAG1L,EAAEu1D,MAAMzpD,GAAG9L,EAAEu1D,MAAMxqD,GAAGF,EAAE0/C,EAAE1L,EAAEw6S,UAAUt6U,GAAGlU,EAAE0/C,EAAE1L,EAAEowM,OAAOlwO,EAAEjT,EAAEJ,GAAGX,GAAE,OAAQ,GAAG,OAAOtK,EAAET,EAAE7D,OAAO,IAAI+O,IAAIF,EAAEhL,EAAE+iC,QAAQz3B,EAAEsuV,cAAc1uV,GAAE,GAAIY,GAAG9L,EAAEu1D,MAAMxqD,GAAGF,EAAE0/C,EAAE1L,EAAEw6S,UAAUt6U,GAAGlU,EAAE0/C,EAAE1L,EAAEowM,OAAOlwO,EAAEjT,EAAEJ,GAAGX,GAAE,OAAQ,GAAG,OAAOtK,EAAE,CAAC,KAAKT,EAAE7D,OAAO,GAAG2P,GAAG9L,EAAE+iC,QAAQr3B,GAAG1L,EAAE+iC,QAAQl4B,EAAE0/C,EAAE1L,EAAEqwM,OAAOnwO,EAAEjT,EAAEJ,GAAGlL,EAAEsL,EAAE9L,EAAE+iC,QAAQx3B,EAAEG,EAAE1L,EAAE+iC,QAAQwnB,EAAE/pD,EAAER,EAAE+iC,QAAQ93B,EAAEM,EAAEvL,EAAE+iC,QAAQj3B,EAAEy+C,EAAEvqD,EAAE+iC,QAAQr3B,EAAET,EAAEjL,EAAE+iC,QAAQl4B,EAAE0/C,EAAE1L,EAAE86S,QAAQ56U,EAAEve,EAAE+K,EAAEg/C,EAAEt/C,EAAEa,EAAEJ,EAAG,MAAM,GAAG,OAAOjL,EAAE,IAAIT,EAAE7D,OAAO,IAAI2P,GAAG9L,EAAE+iC,SAAS/iC,EAAE7D,OAAO,GAAGqE,EAAEsL,EAAEP,EAAEG,EAAE1L,EAAE+iC,QAAQj3B,EAAEy+C,EAAE/pD,EAAER,EAAE+iC,QAAQr3B,GAAGT,EAAEM,EAAEvL,EAAE+iC,SAAS/iC,EAAE+iC,QAAQl4B,EAAE0/C,EAAE1L,EAAE86S,QAAQ56U,EAAEve,EAAE+K,EAAEg/C,EAAEt/C,EAAEa,EAAEJ,QAAQ,GAAG,OAAOjL,EAAE,IAAIT,EAAE7D,OAAO,IAAIuP,GAAG1L,EAAE+iC,SAAS/iC,EAAE7D,OAAO,GAAGoP,EAAEG,EAAE6+C,GAAG/pD,EAAEsL,EAAE9L,EAAE+iC,SAAS/iC,EAAE+iC,QAAQ93B,EAAEM,EAAEvL,EAAE+iC,QAAQj3B,EAAEy+C,EAAEvqD,EAAE+iC,QAAQr3B,EAAET,EAAEJ,EAAE0/C,EAAE1L,EAAE86S,QAAQ56U,EAAEve,EAAE+K,EAAEg/C,EAAEt/C,EAAEa,EAAEJ,QAAQ,GAAG,OAAOjL,GAAG,OAAOA,EAAE,CAAC,IAAIsL,EAAE,OAAOtL,EAAE6K,EAAE/K,EAAE,GAAG,GAAGP,EAAE7D,OAAOmc,QAAQQ,MAAM,0BAA2B,CAAC,IAAI8xC,EAAE5qD,EAAEu1D,MAAMjX,EAAEvyC,EAAEqiV,MAAMxjS,EAAE7+C,EAAEsiV,MAAMxyV,EAAE4E,EAAEqL,EAAEjQ,EAAE+P,EAAEF,EAAE7P,EAAEg9V,OAAO53V,EAAEpF,EAAEi9V,UAAU5tV,EAAErP,EAAE6W,MAAM1H,EAAEnP,EAAE6pE,KAAK36D,EAAEF,EAAE0/C,EAAEyuS,SAAS16S,EAAEziD,EAAE0E,EAAE+K,EAAEyT,GAAGjT,EAAEjQ,EAAE4E,EAAEiL,EAAE7P,EAAE+P,EAAE3K,EAAEpF,EAAEg9V,OAAO3tV,EAAErP,EAAEi9V,UAAU9tV,EAAEnP,EAAE6W,MAAM3H,EAAElP,EAAE6pE,IAAK,CAAC,MAAM,GAAG,OAAOjlE,GAAG,OAAOA,EAAE,CAAC,IAAIiqD,EAAE1qD,EAAE7D,OAAOoiD,GAAG2L,EAAE,EAAE,OAAOzpD,GAAG,IAAIypD,GAAGQ,GAAG7L,GAAG,EAAE6L,GAAGR,EAAErL,GAAGN,GAAGhzC,EAAEG,EAAE6+C,GAAG/pD,EAAEsL,EAAE9L,EAAE+iC,SAAS/iC,EAAE+iC,QAAQr3B,GAAGT,EAAEM,EAAEvL,EAAE+iC,SAAS/iC,EAAE+iC,QAAQ8b,EAAEqL,GAAG,GAAGp+C,EAAEy+C,EAAEvqD,EAAE+iC,QAAQmnB,KAAKp+C,EAAEy+C,EAAEhM,GAAE,IAAK/9C,EAAEsL,EAAEP,EAAEG,EAAE1L,EAAE+iC,QAAQwnB,EAAE/pD,EAAER,EAAE+iC,QAAQ93B,EAAEM,EAAEvL,EAAE+iC,QAAQj3B,EAAEy+C,EAAEvqD,EAAE+iC,QAAQ8b,EAAEqL,GAAG,GAAGx+C,EAAET,EAAEjL,EAAE+iC,QAAQmnB,KAAKx+C,EAAET,EAAEszC,GAAE,GAAI1zC,EAAE0/C,EAAE1L,EAAE86S,QAAQ56U,EAAEve,EAAE+K,EAAEg/C,EAAEt/C,EAAEa,EAAEJ,GAAGw+C,GAAG,CAAE,KAAM,CAAC,GAAG,MAAMzpD,EAAE,IAAIwU,OAAO,GAAG,MAAMqD,QAAQQ,MAAM,sBAAsBrY,EAAEgL,GAAGhL,EAAET,EAAEqB,KAAKZ,EAAG,CAAC,CAAC,CAAC5E,EAAE4E,EAAEqL,EAAEjQ,EAAE+P,EAAEF,EAAE7P,EAAEg9V,OAAO53V,EAAEpF,EAAEi9V,UAAU5tV,EAAErP,EAAE6W,MAAM1H,EAAEnP,EAAE6pE,KAAK36D,CAAE,EAAE,IAAIlP,EAAEgP,EAAEtK,EAAE,CAACs5V,KAAKh+V,GAAG,OAAO4P,EAAEouV,KAAKh+V,EAAE4P,EAAEtI,QAAQ5C,EAAEuC,OAAOC,eAAe0I,EAAE,aAAa,CAACzI,OAAM,IAAKyI,CAAC,CAApnmC,CAAsnmC,CAAC,GAAGouV,IAAI,EAS3smC,WAA2B,OAAO,SAASpuV,GAAG,IAAIZ,EAAEivG,WAAWxuG,EAAE+tJ,YAAYx9J,EAAEiwG,YAAYvrG,EAAE,IAAIsK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI5J,EAAE,IAAI4J,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,IAAIkU,EAAE,IAAIlU,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAKG,EAAE,SAASS,EAAEZ,GAAG,IAAI,IAAItK,EAAE,IAAI+K,EAAE,IAAIrK,EAAE,EAAEA,EAAE,KAAKA,EAAEV,EAAEU,GAAG4J,GAAG,GAAGY,EAAExK,EAAE,GAAG,IAAI8d,EAAE,IAAIljB,EAAE0E,EAAE,KAAK,IAAIU,EAAE,EAAEA,EAAE,KAAKA,EAAE,IAAI,IAAI+J,EAAEzK,EAAEU,GAAG+J,EAAEzK,EAAEU,EAAE,KAAK+J,EAAE+T,EAAE/T,GAAGA,EAAEzK,EAAEU,IAAI,EAAEA,EAAE,MAAO,CAACV,EAAEwe,EAAE,EAAEjT,EAAEd,EAAEzK,EAAE,GAAGmL,EAAEI,EAAE,GAAG9L,EAAE8L,EAAE,GAAGJ,EAAE,IAAI,IAAI1L,EAAE,KAAK,GAAG,IAAI,IAAIoL,EAAEJ,EAAE/J,EAAE,GAAG,GAAGT,EAAE,IAAI8K,EAAE,OAAOL,EAAE,EAAEA,EAAE,QAAQA,EAAE,CAAC,IAAIC,GAAG,MAAMD,KAAK,GAAG,MAAMA,IAAI,EAAEC,GAAG,OAAOA,GAAG,MAAMA,KAAK,GAAG,MAAMA,IAAI,MAAM,GAAG,KAAKA,IAAI,EAAE1K,EAAEyK,KAAK,MAAMC,KAAK,GAAG,IAAIA,IAAI,KAAK,CAAE,CAAC,IAAIS,EAAE,SAASF,EAAEZ,EAAEhP,GAAG,IAAI,IAAI0E,EAAEkL,EAAEtP,OAAO8E,EAAE,EAAE8d,EAAE,IAAIzT,EAAET,GAAG5J,EAAEV,IAAIU,IAAI8d,EAAEtT,EAAExK,GAAG,GAAG,IAAI+J,EAAEc,EAAE,IAAIR,EAAET,GAAG,IAAI5J,EAAE,EAAEA,EAAE4J,IAAI5J,EAAE6K,EAAE7K,GAAG6K,EAAE7K,EAAE,GAAG8d,EAAE9d,EAAE,IAAI,EAAE,GAAGpF,EAAE,CAACmP,EAAE,IAAIM,EAAE,GAAGT,GAAG,IAAIa,EAAE,GAAGb,EAAE,IAAI5J,EAAE,EAAEA,EAAEV,IAAIU,EAAE,GAAGwK,EAAExK,GAAG,IAAI,IAAIjB,EAAEiB,GAAG,EAAEwK,EAAExK,GAAGmK,EAAEP,EAAEY,EAAExK,GAAGgK,EAAEa,EAAEL,EAAExK,GAAG,MAAMmK,EAAEF,EAAED,GAAG,GAAGG,GAAG,EAAEH,GAAGC,IAAID,EAAED,EAAExK,EAAEyK,KAAKS,GAAG1L,CAAE,MAAM,IAAIgL,EAAE,IAAIM,EAAE/K,GAAGU,EAAE,EAAEA,EAAEV,IAAIU,EAAEwK,EAAExK,KAAK+J,EAAE/J,GAAGT,EAAEsL,EAAEL,EAAExK,GAAG,QAAQ,GAAGwK,EAAExK,IAAI,OAAO+J,CAAC,EAAED,EAAE,IAAIF,EAAE,KAAK,IAAII,EAAE,EAAEA,EAAE,MAAMA,EAAEF,EAAEE,GAAG,EAAE,IAAIA,EAAE,IAAIA,EAAE,MAAMA,EAAEF,EAAEE,GAAG,EAAE,IAAIA,EAAE,IAAIA,EAAE,MAAMA,EAAEF,EAAEE,GAAG,EAAE,IAAIA,EAAE,IAAIA,EAAE,MAAMA,EAAEF,EAAEE,GAAG,EAAE,IAAII,EAAE,IAAIR,EAAE,IAAI,IAAII,EAAE,EAAEA,EAAE,KAAKA,EAAEI,EAAEJ,GAAG,EAAE,IAAIH,EAAEa,EAAEZ,EAAE,EAAE,GAAGQ,EAAEI,EAAEN,EAAE,EAAE,GAAGO,EAAE,SAASH,GAAG,IAAI,IAAIZ,EAAEY,EAAE,GAAGH,EAAE,EAAEA,EAAEG,EAAEtP,SAASmP,EAAEG,EAAEH,GAAGT,IAAIA,EAAEY,EAAEH,IAAI,OAAOT,CAAC,EAAE+yC,EAAE,SAASnyC,EAAEZ,EAAES,GAAG,IAAIzP,EAAEgP,EAAE,EAAE,EAAE,OAAQY,EAAE5P,GAAG4P,EAAE5P,EAAE,IAAI,KAAK,EAAEgP,GAAGS,CAAC,EAAEi/C,EAAE,SAAS9+C,EAAEZ,GAAG,IAAIS,EAAET,EAAE,EAAE,EAAE,OAAQY,EAAEH,GAAGG,EAAEH,EAAE,IAAI,EAAEG,EAAEH,EAAE,IAAI,MAAM,EAAET,EAAE,EAAEM,EAAE,CAAC,iBAAiB,qBAAqB,yBAAyB,mBAAmB,kBAAkB,oBAAoB,CAAC,cAAc,qBAAqB,uBAAuB,8BAA8B,oBAAoB,mBAAmB,oBAAoB++C,EAAE,SAAFA,EAAWz+C,EAAEZ,EAAES,GAAG,IAAIzP,EAAE,IAAIwG,MAAMwI,GAAGM,EAAEM,IAAI,GAAG5P,EAAE2tC,KAAK/9B,EAAEpJ,MAAMy3V,mBAAmBz3V,MAAMy3V,kBAAkBj+V,EAAEquD,IAAI5+C,EAAE,MAAMzP,EAAE,OAAOA,CAAC,EAAE2iD,EAAE,SAAS/yC,EAAET,EAAEc,GAAG,IAAI9L,EAAEyL,EAAEtP,OAAO,IAAI6D,GAAG8L,IAAIA,EAAEV,GAAGpL,EAAE,EAAE,OAAOgL,GAAG,IAAIH,EAAE,GAAG,IAAIrK,GAAGwK,GAAGc,EAAEb,GAAGa,GAAGA,EAAE7K,EAAE6K,IAAIA,EAAE,CAAC,GAAGd,IAAIA,EAAE,IAAIH,EAAE,EAAE7K,IAAI,IAAIkL,EAAEH,EAAE,SAASU,GAAG,IAAIH,EAAEN,EAAE7O,OAAO,GAAGsP,EAAEH,EAAE,CAAC,IAAIzP,EAAE,IAAIgP,EAAErJ,KAAKC,IAAI,EAAE6J,EAAEG,IAAI5P,EAAE23B,IAAIxoB,GAAGA,EAAEnP,CAAE,CAAC,EAAEwP,EAAES,EAAEd,GAAG,EAAEG,EAAEW,EAAEP,GAAG,EAAEizC,EAAE1yC,EAAEhB,GAAG,EAAEiB,EAAED,EAAEV,EAAE3K,EAAEqL,EAAEf,EAAEirC,EAAElqC,EAAET,EAAEonC,EAAE3mC,EAAER,EAAEgzC,EAAE,EAAEt+C,EAAE,EAAE,CAAC,IAAI+L,EAAE,CAACD,EAAEd,EAAEK,EAAEuyC,EAAEnyC,EAAEN,EAAE,GAAG,IAAIm+C,EAAE1L,EAAEnyC,EAAEN,EAAE,EAAE,GAAG,GAAGA,GAAG,GAAGm+C,EAAE,CAAC,IAAIoB,EAAEj/C,GAAG4sC,IAAIntC,EAAEC,GAAG,EAAE,IAAI,EAAED,GAAG,GAAG,GAAG,GAAGO,EAAE4sC,EAAE,IAAI,EAAE1xC,EAAE0xC,EAAEqS,EAAE,GAAG/jD,EAAE3G,EAAE,CAACiL,GAAGi/C,EAAE,GAAG,KAAK,CAAC1pD,GAAGuK,EAAEyzC,EAAEkM,GAAG1/C,EAAEwoB,IAAI/nB,EAAEmwL,SAASvjJ,EAAE1xC,GAAG63C,GAAG1yC,EAAEhB,EAAE0zC,GAAGkM,EAAE5+C,EAAEP,EAAEJ,EAAE,EAAExE,EAAE,QAAQ,CAAC,GAAG,GAAG2iD,EAAEv9C,EAAEjB,EAAErK,EAAE8K,EAAEyqC,EAAE,EAAEvD,EAAE,OAAO,GAAG,GAAG6W,EAAE,CAAC,IAAIl1C,EAAEwpC,EAAEnyC,EAAEN,EAAE,IAAI,IAAIU,EAAE+xC,EAAEnyC,EAAEN,EAAE,GAAG,IAAI,EAAE01B,EAAEzsB,EAAEwpC,EAAEnyC,EAAEN,EAAE,EAAE,IAAI,EAAEA,GAAG,GAAG,IAAI,IAAIioC,EAAE,IAAIvoC,EAAEg2B,GAAGge,EAAE,IAAIh0C,EAAE,IAAIW,EAAE,EAAEA,EAAEK,IAAIL,EAAEqzC,EAAE9/B,EAAEvT,IAAIoyC,EAAEnyC,EAAEN,EAAE,EAAEK,EAAE,GAAGL,GAAG,EAAEU,EAAE,IAAI2yB,EAAE5yB,EAAEizC,GAAG5I,GAAG,GAAGzX,GAAG,EAAE2X,EAAExqC,EAAEkzC,EAAErgB,EAAE,GAAG,IAAIhzB,EAAE,EAAEA,EAAEq1B,GAAG,CAAC,IAAIwX,EAAElF,EAAEgD,EAAEyH,EAAEnyC,EAAEN,EAAE8qC,IAAI,GAAG9qC,GAAG,GAAGgoC,GAAGkF,EAAElF,IAAI,GAAG,GAAGC,EAAE5nC,KAAK6sC,MAAO,CAAC,IAAIuE,EAAE,EAAE2B,EAAE,EAAE,IAAI,IAAIlG,GAAGkG,EAAE,EAAEX,EAAEnyC,EAAEN,EAAE,GAAGA,GAAG,EAAEyxC,EAAExJ,EAAE5nC,EAAE,IAAI,IAAI6sC,GAAGkG,EAAE,EAAEX,EAAEnyC,EAAEN,EAAE,GAAGA,GAAG,GAAG,IAAIktC,IAAIkG,EAAE,GAAGX,EAAEnyC,EAAEN,EAAE,KAAKA,GAAG,GAAGozC,KAAKnL,EAAE5nC,KAAKoxC,CAAE,CAAC,CAAC,IAAI6D,EAAErN,EAAEwoJ,SAAS,EAAExnL,GAAGkuC,EAAElP,EAAEwoJ,SAASxnL,GAAG4hC,EAAEpqC,EAAE60C,GAAGhO,EAAE7mC,EAAE02C,GAAGv2C,EAAEJ,EAAE80C,EAAEzK,EAAE,GAAGv1C,EAAEkL,EAAE22C,EAAE7P,EAAE,EAAG,MAAMyX,EAAE,GAAG,GAAG/+C,EAAEmzC,EAAE,CAACrzC,GAAGi/C,EAAE,GAAG,KAAK,CAAC,CAAC1pD,GAAGuK,EAAEyzC,EAAE,QAAQ,IAAI,IAAIoM,GAAG,GAAG5U,GAAG,EAAEyV,GAAG,GAAGhZ,GAAG,EAAE0a,EAAEhiD,GAAGgiD,EAAEhiD,EAAE,CAAC,IAAIiiD,GAAGxQ,EAAE7wC,EAAEw+C,EAAE9+C,EAAEN,GAAGy/C,MAAM,EAAE,IAAIz/C,GAAG,GAAGyxC,GAAG0B,EAAE,CAACrzC,GAAGi/C,EAAE,GAAG,KAAK,CAAC,GAAGtN,GAAGsN,EAAE,GAAGkD,EAAE,IAAIpiD,EAAEwzC,KAAK4O,MAAO,CAAC,GAAG,KAAKA,EAAE,CAACD,EAAEhiD,EAAEY,EAAE,KAAK,KAAK,CAAC,IAAImmF,EAAE9kC,EAAE,IAAI,GAAGA,EAAE,IAAI,CAAC,IAAI2sS,GAAGx5V,EAAEiL,EAAE4hD,EAAE,KAAK8kC,EAAEt0C,EAAEnyC,EAAEN,GAAG,GAAG4uV,IAAI,GAAGruV,EAAEF,GAAGL,GAAG4uV,EAAG,CAAC,IAAIC,GAAGv5V,EAAE8pD,EAAE9+C,EAAEN,GAAGsgD,GAAGwuS,GAAGD,KAAK,EAAyE,GAAvEA,IAAI9vS,EAAE,GAAG/+C,GAAG,GAAG6uV,GAAG13S,EAAEl3C,EAAE6uV,IAAOA,GAAG,IAAGF,GAAG94V,EAAEg5V,IAAI33S,GAAGiI,EAAE9+C,EAAEN,IAAI,GAAG4uV,IAAI,EAAE5uV,GAAG4uV,IAAO5uV,EAAEmzC,EAAE,CAACrzC,GAAGi/C,EAAE,GAAG,KAAK,CAAC1pD,GAAGuK,EAAEyzC,EAAE,QAAQ,IAAI,IAAI07S,GAAG17S,EAAE0zC,EAAE1zC,EAAE07S,GAAG17S,GAAG,EAAExzC,EAAEwzC,GAAGxzC,EAAEwzC,EAAE8D,GAAGt3C,EAAEwzC,EAAE,GAAGxzC,EAAEwzC,EAAE,EAAE8D,GAAGt3C,EAAEwzC,EAAE,GAAGxzC,EAAEwzC,EAAE,EAAE8D,GAAGt3C,EAAEwzC,EAAE,GAAGxzC,EAAEwzC,EAAE,EAAE8D,GAAG9D,EAAE07S,EAAG,CAAC,CAACpuV,EAAEV,EAAEW,EAAED,EAAEP,EAAE4hD,EAAErhD,EAAEhB,EAAE0zC,EAAEzyC,IAAIV,EAAE,EAAES,EAAET,EAAE2qC,EAAElqC,EAAEf,EAAEtK,EAAEqL,EAAER,EAAEmnC,EAAG,QAAQpnC,GAAG,OAAOmzC,GAAGxzC,EAAE7O,OAAO6O,EAAE,SAASS,EAAElL,EAAEU,IAAI,MAAMV,GAAGA,EAAE,KAAKA,EAAE,IAAI,MAAMU,GAAGA,EAAEwK,EAAEtP,UAAU8E,EAAEwK,EAAEtP,QAAQ,IAAI4iB,EAAE,IAAItT,aAAaH,EAAEA,EAAEG,aAAa5P,EAAEA,EAAEgP,GAAG5J,EAAEV,GAAG,OAAOwe,EAAEyU,IAAI/nB,EAAEmwL,SAASr7L,EAAEU,IAAI8d,CAAC,CAA7J,CAA+J/T,EAAE,EAAEwzC,EAAE,EAAEzyC,EAAE,IAAIlB,EAAE,GAAOpK,EAAE,oBAAoB+1Q,aAAa,IAAIA,YAAY,IAAI/1Q,EAAEg2Q,OAAO1qQ,EAAE,CAAC6pQ,QAAO,GAAO,CAAC,MAAMnqQ,GAAG,CAAC,OAAOA,EAAE0uV,gBAAgB,SAAS1uV,GAAG,IAAIZ,EAAE,IAAIs9P,SAAS18P,GAAGH,EAAE,EAAE,SAASzP,IAAI,IAAI4P,EAAEZ,EAAEygV,UAAUhgV,GAAG,OAAOA,GAAG,EAAEG,CAAC,CAAC,SAASlL,IAAI,IAAIkL,EAAEZ,EAAE8sT,UAAUrsT,GAAG,OAAOA,GAAG,EAAEG,CAAC,CAAC,SAASxK,EAAEwK,GAAGJ,EAAE+uV,UAAUtvV,EAAEW,GAAGX,GAAG,CAAE,CAAC,SAASiU,EAAEtT,GAAGJ,EAAEgvV,UAAUvvV,EAAEW,GAAGX,GAAG,CAAE,CAAC,IAAI,IAAIE,EAAE,CAACsvV,UAAU/5V,IAAIg6V,OAAOh6V,IAAIpE,OAAOoE,IAAIi6V,UAAU3+V,IAAI4+V,SAAS5+V,IAAI6+V,cAAcn6V,IAAIo6V,aAAa9+V,IAAI++V,aAAa/+V,IAAIg/V,WAAWt6V,IAAIu6V,WAAWv6V,IAAIw6V,eAAex6V,IAAIy6V,WAAWz6V,IAAI06V,WAAW16V,KAAKuL,EAAE,EAAEtK,KAAKs1J,IAAI,EAAEhrJ,IAAId,EAAEwvV,WAAW1uV,IAAIA,IAAI,IAAI,IAAIJ,EAAE,GAAGlK,KAAKs1J,IAAI,EAAEhrJ,GAAG9L,EAAE,GAAGgL,EAAEwvV,UAAU9uV,EAAEN,EAAE,GAAG5K,EAAE,GAAGyK,EAAE,EAAEA,EAAED,EAAEwvV,UAAUvvV,IAAIzK,EAAEa,KAAK,CAACsyB,IAAIpzB,IAAI+tC,OAAO/tC,IAAI26V,WAAW36V,IAAI46V,WAAW56V,IAAI66V,aAAa76V,MAAM6K,GAAG,GAAG,IAAIF,EAAES,EAAE,IAAImuG,WAAW,GAAG,GAAGt5G,EAAErE,OAAOqE,EAAE+G,QAAQ,SAASkE,EAAEZ,GAAG,OAAOY,EAAEZ,EAAEswV,WAAW,CAAC,GAAG,IAAIpwV,EAAEY,EAAE+yJ,OAAOrzJ,EAAE,IAAI88P,SAASp9P,GAAGD,EAAE,EAAE,OAAOiU,EAAE/T,EAAEuvV,QAAQt5V,EAAE+J,EAAEwvV,WAAWv5V,EAAEyK,GAAGzK,EAAE6K,GAAG7K,EAAEjB,GAAGQ,EAAEsG,SAAS,SAAS2E,GAAGsT,EAAEtT,EAAEkoB,KAAK5U,EAAEtT,EAAE2vV,cAAcr8U,EAAE3T,GAAG2T,EAAEtT,EAAE0vV,YAAY1vV,EAAE4vV,UAAUjwV,GAAGA,GAAGK,EAAE0vV,YAAY,GAAG,IAAI/vV,GAAG,EAAEA,EAAE,EAAG,IAAI5K,EAAEsG,SAAS,SAAS+D,GAAG,IAAIS,EAAEzP,EAAE4P,EAAE0J,MAAMtK,EAAEyjC,OAAOzjC,EAAEyjC,OAAOzjC,EAAEqwV,YAAY,GAAGrwV,EAAEqwV,YAAYrwV,EAAEswV,WAAW,CAAC,IAAI56V,EAAE,IAAIu5G,WAAWjvG,EAAEswV,YAAY7vV,EAAE,IAAIwuG,WAAWj+G,EAAE,GAAG2iD,EAAElzC,EAAE/K,EAAG,MAAMA,EAAE,IAAIu5G,WAAWj+G,GAAG8P,EAAE6nB,IAAIjzB,EAAEsK,EAAEwwV,WAAW,IAAIp6V,EAAE,GAAGmK,EAAEP,EAAEwwV,UAAUxwV,EAAEswV,YAAY,GAAG,IAAIl6V,EAAE,EAAEmK,EAAE,GAAGO,EAAE6nB,IAAI,IAAIsmF,WAAW74G,GAAGy9J,OAAO7zJ,EAAEwwV,UAAUxwV,EAAEswV,YAAYjwV,EAAEE,EAAEnK,CAAE,IAAI8J,EAAEoK,MAAM,EAAEjK,EAAE,EAAEpI,OAAOC,eAAe0I,EAAE,aAAa,CAACzI,OAAM,IAAKyI,CAAC,CAA7zJ,CAA+zJ,CAAC,GAAG0uV,eAAe,EAOp3J,SAAuBN,EAAMyB,GAC3B,IAkBIC,EAlBEC,EAAgB,CACpBl9S,EAAG,EACHV,EAAG,EACH6C,EAAG,EACH5f,EAAG,EACHusB,EAAG,GAICquS,EAAqB,CAAC,EAAI,iBAAiB,EAAI,8QAA8Q,EAAI,+LAA+L,EAAI,kBAAkB,EAAI,uxCAE1hBC,EAAU,EACdC,EAAW,EACXC,EAAU,EACVC,EAAiB,EACjBC,EAAkB,GAClBC,EAAiB,GAGnB,SAASC,EAAmBhhT,GAwB1B,OAvBKugT,GAAgB,WACnB,IAAMlwV,EAAI,CACRi3C,EAAGq5S,EACH/9S,EAAG89S,EACHjpT,EAAGmpT,EACH/6T,EAAGi7T,EACHvxS,EAAGwxS,EACH7xS,EAAG2xS,GAELN,EAAiB,IAAI75T,IAAM,IAAA4tC,EAAA,SAClBnmE,GACP,IAAIqxU,EAAW,EACfihB,EAAmBtyV,GAAM9I,MAAM,KAAKyG,SAAQ,SAAAulC,GAC1C,IAAmC4vT,EAAAh2U,EAAhBomB,EAAMhsC,MAAM,KAAI,GAA9Bo6U,EAAIwhB,EAAA,GAAEhpQ,EAAIgpQ,EAAA,GACfxhB,EAAO/kU,SAAS+kU,EAAK,IACrBxnP,EAAOA,EAAOv9E,SAASu9E,EAAM,IAAM,EACnCsoQ,EAAe/nU,IAAIgnT,GAAYC,EAAMpvU,EAAElC,IACvC,IAAK,IAAIlI,EAAIgyF,EAAMhyF,KACjBs6V,EAAe/nU,MAAMgnT,EAAUnvU,EAAElC,GAErC,GAAG,EAVL,IAAK,IAAIA,KAAQsyV,EAAoBnsR,EAA5BnmE,EAWR,CArBkB,GAuBdoyV,EAAejnU,IAAI0mB,IAAO+gT,CACnC,CAEA,IAAMG,EAAO,EAAGC,EAAO,EAAGC,EAAO,EAAGC,EAAO,EACrCC,EAAkB,CAAC,KAAM,OAAQ,OAAQ,OAAQ,QAEvD,SAASC,EAAmBvnV,GAO1B,IAJA,IAAMwnV,EAAe,IAAI1iP,WAAW9kG,EAAI7Y,QACpCsgW,EAAkBV,EAClBW,EAAWR,EACXvkE,GAAa,EACR12R,EAAI,EAAGA,EAAI+T,EAAI7Y,OAAQ8E,IAAK,CACnC,IAAMuoC,EAAOx0B,EAAI2lU,YAAY15U,GACzB07V,EAAyC,EAA3BX,EAAmBxyT,GACjCgpB,EAAO0pS,EACPS,EAAcd,IAGdY,GAAmBf,EAAUE,EAAUE,GACrCa,GAAehB,EAAWC,EAAUE,IACtCtpS,EAAO4pS,EAEHM,IAAaR,GAAQQ,IAAaN,GACpCI,EAAa7kE,MAGRglE,GAAejB,EAAUK,KAE5BW,IAAaP,GAAQO,IAAaL,GACpCG,EAAa7kE,MAIV8kE,GAAmBd,EAAWI,KAEjCW,IAAaP,GAAQO,IAAaL,GACpCG,EAAa7kE,MAGjB+kE,EAAWF,EAAav7V,GAAKuxD,EAC7BiqS,EAAkBE,EAClBhlE,EAAY12R,EACRuoC,EAAO,OAAQvoC,IACrB,CAIA,OAAOu7V,CACT,CAwCA,SAASI,EAAYC,GACnB,IAAMC,EAAWh6V,OAAOwd,OAAO,MAEzBy8U,EAAU,CACdtK,WAAYoK,EAAS9lV,KAAK07U,WAC1BS,SAAU2J,EAAS5J,KAAKC,SACxBC,UAAW0J,EAAS5J,KAAKE,UACzB6J,aAAY,SAACzlV,EAAM6oI,EAAUc,EAAexkG,GAC1C,IAAIugT,EAAS,EACPC,EAAY,EAAIH,EAAQtK,WAAaryM,EAErC+8M,EAjDZ,SAAyBC,EAAMpoV,GAE7B,IADA,IAAMqoV,EAAW,GACRp8V,EAAI,EAAGA,EAAI+T,EAAI7Y,OAAQ8E,IAAK,CACnC,IAAMm9B,EAAKppB,EAAI2lU,YAAY15U,GACvBm9B,EAAK,OAAQn9B,IACjBo8V,EAASh8V,KAAKw4V,EAAKtvS,EAAE4tS,YAAYiF,EAAMh/T,GACzC,CAEA,IAAMk/T,EAAOF,EAAW,KACxB,GAAIE,EAAM,CACR,IACId,EADGpQ,EAA2BkR,EAA3BlR,WAAYF,EAAeoR,EAAfpR,YAEbqR,EAAoB,wDACpBC,EAAc,GACpBtR,EAAYplV,SAAQ,SAAAo+G,GAClB,GAAIq4O,EAAkB9gW,KAAKyoH,EAAQvxF,KACjC,IAAK,IAAImuB,EAAK,EAAGA,EAAKojE,EAAQ6nO,IAAI5wV,OAAQ2lD,IACxC,IAAI07S,EAAYt4O,EAAQ6nO,IAAIjrS,IAA5B,CACA07S,EAAYt4O,EAAQ6nO,IAAIjrS,KAAO,EAC/B,IAAMirS,EAAMX,EAAWlnO,EAAQ6nO,IAAIjrS,IAC7B27S,EAAmB,0BAA0BhhW,KAAKyoH,EAAQvxF,KAC5D8pU,IAAqBjB,IACvBA,EAAeD,EAAmBvnV,IAEpC,IAAK,IAAIwrC,EAAK,EAAGA,EAAK68S,EAASlhW,OAAQqkD,IAChCg8S,GAAiBiB,GAAoBnB,EAAgBE,EAAah8S,MAAS0kE,EAAQvxF,KACtFkmU,EAAKtvS,EAAEivS,WAAW6D,EAAU78S,EAAIusS,EAAKX,EATC,CAchD,GACF,CAEA,OAAOiR,CACT,CAc2BK,CAAeb,EAAUtlV,GAC1C8uU,EAAY,EACZsX,GAAkB,EAkFtB,OAjFAR,EAAar2V,SAAQ,SAAC0pV,EAAYvvV,GAIhC,IAAoB,IAAhBuvV,EAAmB,CACrB,IAAIoN,EAAWd,EAAStM,GACxB,IAAKoN,EAAU,CAMb,IALA,IAeI5N,EAAMC,EAAMC,EAAMC,EAftB0N,EAAqBhE,EAAKtvS,EAAEiuS,YAAYqE,EAAUrM,GAA3CiI,EAAIoF,EAAJpF,KAAMC,EAAImF,EAAJnF,KAGTj9P,EAAO,GACPqiQ,EAAU,EACL78V,EAAI,EAAGsP,EAAMkoV,EAAKt8V,OAAQ8E,EAAIsP,EAAKtP,IAAK,CAC/C,IAAM88V,EAAUvC,EAAc/C,EAAKx3V,IACnCw6F,GAAQg9P,EAAKx3V,GACb,IAAK,IAAImT,EAAI,EAAGA,GAAK2pV,EAAS3pV,IAC5BqnF,IAASrnF,EAAI,EAAI,IAAM,IAAMskV,EAAKoF,IAEtC,CAKA,GAAIpF,EAAKv8V,OAAQ,CACf6zV,EAAOC,EAAOviS,IACdwiS,EAAOC,GAAQziS,IACf,IAAK,IAAIzsD,EAAI,EAAGsP,EAAMmoV,EAAKv8V,OAAQ8E,EAAIsP,EAAKtP,GAAK,EAAG,CAClD,IAAIR,EAAIi4V,EAAKz3V,GACT2K,EAAI8sV,EAAKz3V,EAAI,GACbR,EAAIuvV,IAAMA,EAAOvvV,GACjBmL,EAAIqkV,IAAMA,EAAOrkV,GACjBnL,EAAIyvV,IAAMA,EAAOzvV,GACjBmL,EAAIukV,IAAMA,EAAOvkV,EACvB,CACF,MACEokV,EAAOE,EAAOD,EAAOE,EAAO,EAG9ByN,EAAWd,EAAStM,GAAc,CAChCr9U,MAAOq9U,EACPwN,aAAcnB,EAAS/I,KAAKC,OAAOvD,GACnCR,KAAAA,EACAC,KAAAA,EACAC,KAAAA,EACAC,KAAAA,EACA10P,KAAAA,EACAwiQ,iBAAkBxF,EAAKt8V,OAe3B,EAGwB,IAApBwhW,IACFV,GAAUpD,EAAKtvS,EAAEgvS,kBAAkBsD,EAAUc,EAAgBnN,GAAc0M,GAG7ExgT,EAASt7C,KAAK,KAAMw8V,EAAUX,EAAQ5W,GAElCuX,EAASI,eACXf,GAAUW,EAASI,aAAed,GAEhCh8M,IACF+7M,GAAU/7M,EAAgBd,GAG5Bu9M,EAAiBnN,CACnB,CACAnK,GAAc9uU,EAAKojU,YAAY0L,GAAa,MAAS,EAAI,CAC3D,IACO4W,CACT,GAGF,OAAOF,CACT,CAEA,OAAO,SAAer+L,GAEpB,IAAMw/L,EAAO,IAAIpkP,WAAW4kD,EAAQ,EAAG,GACjC/qI,EAAMkmU,EAAKvP,KAAKC,UAAU2T,EAAM,EAAG,GACzC,GAAY,SAARvqU,EACF+qI,EAAS48L,EAAS58L,QACb,GAAY,SAAR/qI,EACT,MAAM,IAAItxB,MAAM,6BAElB,OAAOu6V,EAAY/C,EAAK30P,MAAMw5D,GAAQ,GACxC,CACF,GAME5lC,KAAI,SAACqlO,EAAaC,EAAiBC,GAGjC,OAAOA,EAFMF,IACIC,IAEnB,IAGIE,GAAS,CACbC,eAAgB,mEAChBC,aAAc,GACdC,UAAW,EAAI,GACfhpB,YAAa,EACb9nG,aAAc,MAEV+wH,GAAyB,IAAI5+L,GAGnC,SAAS6+L,KACP,OAAQjlV,KAAK+7C,aAAevxD,MAAMC,KACpC,CAoDA,IAoUIy6V,GApUEC,GAAU/7V,OAAOwd,OAAO,MA2C9B,SAASw+U,GAAkBj7V,EAAM64C,IAChB,EACf74C,EAAOof,GAAO,CAAC,EAAGpf,GAClB,IAAMk7V,EAAaJ,KAYnB,GARA96V,EAAKu5V,KAmRP,SAAuB3hQ,GAChBmjQ,KACHA,GAA6B,qBAAb/2V,SAA2B,CAAC,EAAIA,SAASC,cAAc,MAGzE,OADA82V,GAAO9vT,KAAO2sD,EACPmjQ,GAAO9vT,IAChB,CAzRckwT,CAAcn7V,EAAKu5V,MAAQkB,GAAOC,gBAG9C16V,EAAK0T,KAAO,GAAK1T,EAAK0T,KAEtB1T,EAAK26V,aAAe36V,EAAK26V,cAAgBF,GAAOE,aAGxB,MAApB36V,EAAKo7V,YAAqB,CAC5B,IAAI1+O,EAAS,CAAC,EACd,IAAK,IAAIx5G,KAAOlD,EAAKo7V,YACnB,GAAIp7V,EAAKo7V,YAAY78V,eAAe2E,GAAM,CACxC,IAAIpB,EAAM9B,EAAKo7V,YAAYl4V,GACR,kBAARpB,IACTA,EAAM+4V,GAAUlrU,IAAI7tB,GAAKg7J,UAE3BpgD,EAAOx5G,GAAOpB,CAChB,CAEF9B,EAAKo7V,YAAc1+O,CACrB,CAEAz9G,OAAOkjB,OAAOniB,GAGd,IAAO8pO,EAA6B2wH,GAA7B3wH,aAAc8nG,EAAe6oB,GAAf7oB,YACd+oB,EAAgB36V,EAAhB26V,aACDU,EAAgBvxH,EAAe6wH,EAAe,EAChDW,EAAQN,GAAQL,GACpB,IAAKW,EAAO,CACV,IAAM5hN,EAAS11I,SAASC,cAAc,UACtCy1I,EAAO7qI,MAAQi7N,EACfpwF,EAAO5qI,OAAwB,IAAf6rV,EAAqBU,GACrCC,EAAQN,GAAQL,GAAgB,CAC9BY,WAAY,EACZZ,aAAAA,EACAa,UAAW9hN,EACX+hN,WAAY,IAAIh9L,GACd/kB,OACA5uI,OACAA,OACAA,EACAygJ,GACAA,IAEFmwM,aAAa,EACbC,aAAc,IAAI99T,MAEd49T,WAAWl8L,iBAAkB,EAiJvC,SAAiC+7L,GAC/B,IAAM5hN,EAAS4hN,EAAME,UAyBrB9hN,EAAOp1I,iBAAiB,oBAAoB,SAAC2kC,GAC3Cx0B,QAAQC,IAAI,eAAgBu0B,GAC5BA,EAAM9H,iBACNm6T,EAAMI,aAAc,CACtB,IACAhiN,EAAOp1I,iBAAiB,wBAAwB,SAAC2kC,GAC/Cx0B,QAAQC,IAAI,mBAAoBu0B,GAChCqyT,EAAMI,aAAc,EAEpB,IAAMpmQ,EAAW,GACjBgmQ,EAAMK,aAAa14V,SAAQ,SAAAg2V,GACzBA,EAASh2V,SAAQ,SAAA24V,GACftmQ,EAAS93F,KAAKq+V,GAAiBD,EAAON,GAAO,GAC/C,GACF,IACApuB,GAAS1pU,IAAI8xF,GAAUlkD,MAAK,WAC1B0qT,GAAsBR,GACtBA,EAAMG,WAAWz7L,aAAc,CACjC,GACF,GACF,CA9LI+7L,CAAwBT,EAC1B,CAEA,IAAAU,EAAgCV,EAAzBG,EAAUO,EAAVP,WAAYD,EAASQ,EAATR,UACfS,EAAaX,EAAMK,aAAalrU,IAAIzwB,EAAKu5V,MACxC0C,GACHX,EAAMK,aAAahsU,IAAI3vB,EAAKu5V,KAAM0C,EAAa,IAAIp+T,KAIrDq+T,GAAgBl8V,GAAMoxC,MAAK,SAAA54C,GACzB,IAAOghW,EAA2DhhW,EAA3DghW,SAAU2C,EAAiD3jW,EAAjD2jW,eAAgB5/M,EAAiC/jJ,EAAjC+jJ,SAAUqyM,EAAuBp2V,EAAvBo2V,WAAYwN,EAAW5jW,EAAX4jW,QACjDC,EAAa,GACbC,EAAc,IAAI/mM,aAA+B,EAAlBikM,EAASlhW,QACxCikW,EAAehgN,EAAWqyM,EAC5B4N,EAAY,EACZC,EAAe,EACbC,EAAa5B,KACnBtB,EAASv2V,SAAQ,SAAC05V,EAASv/V,GACzB,IAAIw/V,EAAYX,EAAWxrU,IAAIksU,GAG/B,IAAKC,EAAW,CACd,IAAAC,EAA2BrkW,EAAOskW,UAAUH,GAArC/kQ,EAAIilQ,EAAJjlQ,KAAMmlQ,EAAUF,EAAVE,WAKPC,EAAkBr/V,KAAKC,IAAIm/V,EAAW,GAAKA,EAAW,GAAIA,EAAW,GAAKA,EAAW,IACvFpC,GAAgBF,GAAOG,UAAYD,EAAe,IAEhDsC,EAAa3B,EAAMC,aACnB2B,EAAa,CACjBH,EAAW,GAAKC,EAChBD,EAAW,GAAKC,EAChBD,EAAW,GAAKC,EAChBD,EAAW,GAAKC,GAElBf,EAAWtsU,IAAIgtU,EAAUC,EAAY,CAAEhlQ,KAAAA,EAAMqlQ,WAAAA,EAAYC,WAAAA,IAGzDb,EAAW7+V,KAAKo/V,EAClB,CAIA,IAAOM,EAAcN,EAAdM,WACDC,EAAOhB,EAAeM,KACtBW,EAAOjB,EAAeM,KAC5BH,EAAYE,KAAeW,EAAOD,EAAW,GAAKX,EAClDD,EAAYE,KAAeY,EAAOF,EAAW,GAAKX,EAClDD,EAAYE,KAAeW,EAAOD,EAAW,GAAKX,EAClDD,EAAYE,KAAeY,EAAOF,EAAW,GAAKX,EAGlD/C,EAASp8V,GAAKw/V,EAAUK,UAC1B,IACAb,EAAQiB,OAASjB,EAAQiB,OAAS,IAAMvC,KAAU4B,GAElD,IAAMY,EAAWxC,KACjBsB,EAAQmB,IAAM,CAAC,EAGf,IAAMC,EAAgBhC,EAAU1sV,OAC1B2uV,EAAa9/V,KAAKurD,KAAKoyS,EAAMC,WAAaF,GAC1CqC,EAAe//V,KAAKs1J,IAAI,EAAGt1J,KAAKurD,KAAKvrD,KAAKqzM,KAAKysJ,EAAa9C,KAC9D+C,EAAeF,IAEjB/oV,QAAQs6E,KAAK,+BAAD5sF,OAAgCq7V,EAAa,MAAAr7V,OAAKu7V,IAC9DpsB,GAAiCkqB,EAAW1xH,EAAc4zH,GAE1DjC,EAAWr5L,WAGb8qK,GAAS1pU,IAAI64V,EAAWp/V,KAAI,SAAA2/V,GAAS,OACnCf,GAAiBe,EAAWtB,EAAOt7V,EAAK29V,kBAAkBvsT,MAAK,SAAAvrB,GAAc,IAAZkgU,EAAMlgU,EAANkgU,OAC/DqW,EAAQmB,IAAIX,EAAUK,YAAclX,CACtC,GAAE,KACD30S,MAAK,WACFirT,EAAW/jW,SAAWgjW,EAAMI,cAC9BI,GAAsBR,GACtBG,EAAWz7L,aAAc,GAE3Bo8L,EAAQwB,SAAW9C,KAAUwC,EAC7BlB,EAAQ9qN,MAAQwpN,KAAUI,EAI1BriT,EAAS55C,OAAOkjB,OAAO,CACrB+2J,WAAYl5K,EACZy7V,WAAAA,EACAd,aAAAA,EACA/oB,YAAAA,EACA0qB,YAAAA,EACAuB,kBAAmBrE,EACnBsE,YAAatlW,EAAOslW,YACpBC,eAAgBvlW,EAAOulW,eACvBC,YAAaxlW,EAAOwlW,YACpBC,cAAezlW,EAAOylW,cACtB5O,SAAU72V,EAAO62V,SACjBC,UAAW92V,EAAO82V,UAClBr6T,WAAYz8B,EAAOy8B,WACnBipU,YAAa1lW,EAAO0lW,YACpBC,YAAa3lW,EAAO2lW,YACpBC,cAAe5lW,EAAO4lW,cACtBhC,QAAS5jW,EAAO4jW,QAChB,eAAIiC,GAEF,OADA5pV,QAAQC,IAAI,mDACLlc,EAAO2lW,WAChB,EACA,kBAAIG,GACF7pV,QAAQC,IAAI,sDACZ,IAAA6pV,EAAAn8U,EAAyB5pB,EAAO2lW,YAAW,GAApCv3L,EAAE23L,EAAA,GAAE13L,EAAE03L,EAAA,GACb,MAAO,CADUA,EAAA,GACJ33L,EADQ23L,EAAA,GACC13L,EACxB,IAEJ,GACF,IAKAqmK,GAAS1pU,IAAI,IAAI4tC,MAAK,WACfkqT,EAAMI,aA/jBf,SAAyBhiN,GAClBA,EAAO8kN,QACV/Y,GAAoBtQ,MAAMviB,YAAYl5K,GACtCA,EAAO8kN,OAAQ,EAEnB,CA2jBMC,CAAgBjD,EAEpB,GACF,CAEA,SAASK,GAAgB91U,EAAAE,EAAyEy4U,GAAQ,IAA/E9mQ,EAAI7xE,EAAJ6xE,KAAMqlQ,EAAUl3U,EAAVk3U,WAAYC,EAAUn3U,EAAVm3U,WAAcvC,EAAY10U,EAAZ00U,aAAca,EAASv1U,EAATu1U,UACvE,GAD6Fv1U,EAAXy1U,YAIhF,OAAO1qT,QAAQG,QAAQ,CAAC40S,QAAS,IAEnC,IAAOj8G,EAA6B2wH,GAA7B3wH,aAAc8nG,EAAe6oB,GAAf7oB,YACf+sB,EAAUhhW,KAAKC,IAAIs/V,EAAW,GAAKA,EAAW,GAAIA,EAAW,GAAKA,EAAW,IAC7E0B,EAAcjhW,KAAKwf,MAAM8/U,EAAa,GAI5C,OArsBF,SAAqBpuV,EAAOC,EAAQ8oF,EAAMyjD,EAAS+7B,EAAU+uK,EAAUzsM,EAAQ98I,EAAGmL,EAAGqtK,GAEnF,OAFoGz0K,UAAArI,OAAA,SAAAwS,IAAAnK,UAAA,MAAAA,UAAA,IAG3FqlV,GAAsBn3U,EAAOC,EAAQ8oF,EAAMyjD,EAAS+7B,EAAU+uK,EAAUzsM,EAAQ98I,EAAGmL,EAAGqtK,GAIxFuwK,GAAe92U,EAAOC,EAAQ8oF,EAAMyjD,EAAS+7B,EAAU+uK,EAAUzsM,EAAQ98I,EAAGmL,EAAGqtK,GAAShkI,KAC7F,MACA,SAAA73B,GAME,OAJKisU,KACH/wU,QAAQk/C,KAAK,kDAAmDp6C,GAChEisU,IAAS,GAEJQ,GAAsBn3U,EAAOC,EAAQ8oF,EAAMyjD,EAAS+7B,EAAU+uK,EAAUzsM,EAAQ98I,EAAGmL,EAAGqtK,EAC/F,GAEJ,CAmrBSypL,CAAYlE,EAAcA,EAAc/iQ,EAAMslQ,EAAYyB,EAAS/sB,EAAa4pB,EAH7EoD,GAAe90H,EAAe6wH,GAAgBA,EAC9Ch9V,KAAKwf,MAAMyhV,GAAe90H,EAAe6wH,IAAiBA,EACpDsC,EAAa,EACoFyB,EACnH,CAyEA,SAASt/U,GAAO0/U,EAAOC,GACrB,IAAK,IAAI77V,KAAO67V,EACVA,EAAQxgW,eAAe2E,KACzB47V,EAAM57V,GAAO67V,EAAQ77V,IAGzB,OAAO47V,CACT,CAiBA,SAAShD,GAAsBR,GAG7B,GAAiC,oBAAtB39E,kBAAkC,CAC3ClpQ,QAAQs6E,KAAK,6CACb,IAAOysQ,EAAyBF,EAAzBE,UAAWC,EAAcH,EAAdG,WACX5sV,EAAiB2sV,EAAjB3sV,MAAOC,EAAU0sV,EAAV1sV,OACRw+C,EAAKguS,EAAME,UAAU7hN,WAAW,SAClCg6D,EAAS8nJ,EAAW5hN,MAAMz1G,KACzBuvK,GAAUA,EAAOr7M,SAAWuW,EAAQC,EAAS,IAChD6kM,EAAS,IAAI19F,WAAWpnG,EAAQC,EAAS,GACzC2sV,EAAW5hN,MAAQ,CAAChrI,MAAAA,EAAOC,OAAAA,EAAQs1B,KAAMuvK,GACzC8nJ,EAAWh8L,OAAQ,EACnBg8L,EAAWr9L,eAAgB,GAE7B9wG,EAAGopL,WAAW,EAAG,EAAG7nO,EAAOC,EAAQw+C,EAAG0jR,KAAM1jR,EAAG2jR,cAAet9H,EAChE,CACF,CAGA,IAAMqrJ,GAAsC/yB,GAAmB,CAC7DpyU,KAAM,aACNu9C,aAAc,CACZqjT,GACApU,GAh6CJ,SAA0B4Y,EAAY7pB,EAAMv9Q,GAE1C,IACE6iS,EACE7iS,EADF6iS,eAMIwE,EAAQjgW,OAAOwd,OAAO,MAEtB0iV,EAAMt1S,IAGNu1S,EAA0B,iJAI1BC,EAAoB,gEA6C1B,SAASC,EAASC,EAAS1mT,GACpB0mT,IAASA,EAAU7E,GACxB,IAAInB,EAAO2F,EAAMK,GACbhG,EAEEA,EAAKjhT,QACPihT,EAAKjhT,QAAQ96C,KAAKq7C,GAElBA,EAAS0gT,IAGX2F,EAAMK,GAAW,CAACjnT,QAAS,CAACO,IAnDhC,SAAoBjQ,EAAKiQ,IACvB,SAAS2mT,IACP,IAAM1mU,EAAU,SAAAvf,GACd9E,QAAQwN,MAAM,wBAAD9f,OAAyBymC,GAAGzmC,OAAGymC,IAAQ8xT,EAAiB,GAAK,qBAAuBnhV,GAC7FqvB,IAAQ8xT,IACV9xT,EAAM8xT,EACN8E,IAEJ,EACA,IACE,IAAMrgR,EAAU,IAAIsgR,eACpBtgR,EAAQtd,KAAK,MAAOj5B,GAAK,GACzBu2C,EAAQmyL,aAAe,cACvBnyL,EAAQxsE,OAAS,WACf,GAAIwsE,EAAQkgB,QAAU,IACpBvmE,EAAQ,IAAIt6B,MAAM2gF,EAAQmgB,kBAEvB,GAAIngB,EAAQkgB,OAAS,EACxB,IACE,IAAM65P,EAAU+F,EAAW9/Q,EAAQqyL,UACnC34N,EAASqgT,EACX,CAAE,MAAOlyV,KACP8xB,EAAQ9xB,IACV,CAEJ,EACAm4E,EAAQvsE,QAAUkmB,EAClBqmD,EAAQugR,MACV,CAAE,MAAMnmV,GACNuf,EAAQvf,EACV,CACF,CACAimV,EACF,CAmBIG,CAAWJ,GAAS,SAAArG,GAClB,IAAIvnF,EAAYutF,EAAMK,GAASjnT,QAC/B4mT,EAAMK,GAAWrG,EACjBvnF,EAAU1uQ,SAAQ,SAAAyP,GAAE,OAAIA,EAAGwmV,EAAQ,GACrC,IAEJ,CAQA,SAAS0G,EAAOl1V,EAoBdmuC,GAEA,IAAAgnT,EAAAn1V,EApBEgJ,KAAAA,OAAI,IAAAmsV,EAAC,GAAEA,EAAAC,EAAAp1V,EACP6uV,KAAAA,OAAI,IAAAuG,EAACpF,EAAcoF,EACJC,GADIr1V,EACnBiwV,aAAejwV,EACf6xI,UAAAA,OAAQ,IAAAwjN,EAAC,EAACA,EAAAC,EAAAt1V,EACV2yI,cAAAA,OAAa,IAAA2iN,EAAC,EAACA,EAAAC,EAAAv1V,EACfuqB,WAAAA,OAAU,IAAAgrU,EAAC,SAAQA,EAAAC,EAAAx1V,EACnBkE,SAAAA,OAAQ,IAAAsxV,EAACf,EAAGe,EACZnxL,EAASrkK,EAATqkK,UAASoxL,EAAAz1V,EACTm1I,UAAAA,OAAS,IAAAsgN,EAAC,OAAMA,EAAAC,EAAA11V,EAChB21V,WAAAA,OAAU,IAAAD,EAAC,EAACA,EAAAE,EAAA51V,EACZ61V,WAAAA,OAAU,IAAAD,EAAC,SAAQA,EAAAE,EAAA91V,EACnB+1V,aAAAA,OAAY,IAAAD,EAAC,SAAQA,EAAAE,EAAAh2V,EACrBi2V,QAAAA,OAAO,IAAAD,EAAG,EAACA,EAAAE,EAAAl2V,EACXm2V,QAAAA,OAAO,IAAAD,EAAG,EAACA,EAAAE,EAAAp2V,EACXq2V,sBAAAA,OAAqB,IAAAD,GAAMA,EAAAE,EAAAt2V,EAC3Bu2V,kBAAAA,OAAiB,IAAAD,EAAC,KAAIA,EAAAE,EAAAx2V,EACtB0wV,YAAAA,OAAW,IAAA8F,EAAC,KAAIA,EAGlBC,EAAWxgW,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAELygW,EAAY9gW,IACZ87V,EAAU,CAACiF,SAAU,EAAGC,YAAa,GAGvC5tV,EAAKxG,QAAQ,OAAS,IACxBuH,QAAQs6E,KAAK,2DACbr7E,EAAOA,EAAKrX,QAAQ,QAAS,MAAMA,QAAQ,MAAO,OAIpDkgJ,GAAYA,EACZc,GAAiBA,EACjBzuI,GAAYA,EACZqmB,EAAaA,GAAc,SAC3BorU,GAAcA,EAEdf,EAAS/F,GAAM,SAAAL,GACb,IAAMqI,EAAct4K,SAASr6K,GACzB4qV,EAAW,KACX2C,EAAiB,KACjBW,EAAY,KACZgB,EAAc,KACdC,EAAiB,KACjBK,EAAgB,KAChBH,EAAgB,KAChBuD,EAAe,EACfC,EAAuB,EACvBC,EAAyB,WAAfnB,EACPlR,EAAmC6J,EAAnC7J,SAAUC,EAAyB4J,EAAzB5J,UAAWV,EAAcsK,EAAdtK,WAC5BwN,EAAQiF,SAAW/gW,IAAQ8gW,EAC3B,IAAMO,EAAerhW,IAIfi8V,EAAehgN,EAAWqyM,EAIb,WAAf35T,IACFA,GAAco6T,EAAWC,GAAaV,GAKxC,IAAMgT,IADN3sU,GAA0BsnH,IACS8yM,EAAWC,GAAaiN,GAAgB,EACrE2B,IAAgB7O,EAAWkN,EAAeqF,GAC1C5D,EAAcrgW,KAAKiuC,IAAI3W,GAAao6T,EAAWC,GAAaiN,GAC5DsF,GAAqBxS,EAAWC,GAAa,EAAIiN,EAAeyB,EAAc,EAGhF8D,EAAczB,EACd0B,EAAc,IAAIC,EAChBtsJ,EAAQ,CAACqsJ,GAEf7I,EAAQC,aAAazlV,EAAM6oI,EAAUc,GAAe,SAAC08M,EAAUX,EAAQ5W,GACrE,IAGIyf,EAHE/xT,EAAOx8B,EAAKtC,OAAOoxU,GACnB0f,EAAanI,EAASI,aAAeoC,EACrC4F,EAAeJ,EAAY1jR,MAcjC,GAVM,YAAa07Q,IACjBA,EAASqI,eAAiBlyT,GAAQ,KAAKt3C,KAAKs3C,GAC5C6pT,EAASsI,gBAAkBnyT,GAAQmvT,EAAkBzmW,KAAKs3C,GAC1D6pT,EAAS5uL,QAAU4uL,EAAS5N,OAAS4N,EAAS1N,MAAQ0N,EAAS3N,OAAS2N,EAASzN,MAAQ8S,EAAwBxmW,KAAKs3C,IAEnH6pT,EAASqI,cAAiBrI,EAAS5uL,SACtCs2L,IAIEC,GAAWH,IAAgBxH,EAASqI,cAAgBhJ,EAAS8I,EAAaJ,EAAclzV,GAAYuzV,EAAc,CAEpH,GAAIJ,EAAYO,QAAQH,EAAe,GAAGpI,SAASsI,cACjDJ,EAAW,IAAID,EACfF,GAAe1I,OAGf,IAAK,IAAIh8V,EAAI+kW,EAAc/kW,KAAM,CAE/B,GAAU,IAANA,GAA4B,eAAjBqjW,EAA+B,CAC5CwB,EAAW,IAAID,EACfF,GAAe1I,EACf,KACF,CAEK,GAAI2I,EAAYO,QAAQllW,GAAG28V,SAASsI,cAAe,CAEtD,IAAME,GADNN,EAAWF,EAAYS,QAAQplW,EAAI,IACVklW,QAAQ,GAAG1lW,EACpCklW,GAAeS,EACf,IAAK,IAAIhyV,EAAI0xV,EAAS5jR,MAAO9tE,KAC3B0xV,EAASK,QAAQ/xV,GAAG3T,GAAK2lW,EAE3B,KACF,CACF,CAEEN,IACFF,EAAYU,eAAgB,EAC5BV,EAAcE,EACdvsJ,EAAMl4M,KAAKukW,GACXP,EAAe5yV,EAEnB,CAEA,IAAI8zV,EAAMX,EAAYO,QAAQP,EAAY1jR,OAC1CqkR,EAAI3I,SAAWA,EACf2I,EAAI9lW,EAAIw8V,EAAS0I,EACjBY,EAAI7zV,MAAQqzV,EACZQ,EAAIlgB,UAAYA,EAGH,OAATtyS,IACF6xT,EAAc,IAAIC,EAClBtsJ,EAAMl4M,KAAKukW,GACXD,IAAgB1I,EAAS8I,EAAc7kN,EAAgBd,GAAa8jN,EAExE,IAGA3qJ,EAAMzyM,SAAQ,SAAA8rG,GACZ,IAAK,IAAI3xG,EAAI2xG,EAAK1wB,MAAOjhF,KAAM,CAC7B,IAAAulW,EAA2B5zP,EAAKuzP,QAAQllW,GAAnC28V,EAAQ4I,EAAR5I,SAAUn9V,EAAC+lW,EAAD/lW,EAAGiS,EAAK8zV,EAAL9zV,MAClB,IAAKkrV,EAASqI,aAKZ,OAJArzP,EAAKlgG,MAAQjS,EAAIiS,OACbkgG,EAAKlgG,MAAQ2yV,IACfA,EAAezyP,EAAKlgG,OAI1B,CACF,IAGA,IAAI+zV,EAAgB,EAChBC,EAAgB,EAcpB,GAbIlC,IACqB,kBAAZA,EACTiC,GAAiBjC,EAES,kBAAZA,IACdiC,GAAiBpB,GACH,SAAZb,EAAqB,EACT,WAAZA,EAAuB,GACX,UAAZA,EAAsB,EACtBmC,EAAanC,MAIfE,EACF,GAAuB,kBAAZA,EACTgC,GAAiBhC,OAEd,GAAuB,kBAAZA,EAAsB,CACpC,IAAI/xV,GAAS4mM,EAAMp9M,OAAS28B,EAC5B4tU,EAA4B,QAAZhC,EAAoB,EACtB,iBAAZA,GAA8B3C,EAClB,WAAZ2C,EAAuB/xV,GAAS,EACpB,WAAZ+xV,EAAuB/xV,GACX,oBAAZ+xV,EAAgC/xV,GAAS8yV,EAActS,EAAYiN,EACnEuG,EAAajC,GAAW/xV,EAC5B,CAGF,IAAKqyV,EAAa,CAEhB,IAAM4B,GAAmB3tB,EAAKyF,mBAAmBnnU,EAAMq7J,GAIvDyqL,EAAW,IAAIhkM,YAAYisM,GAC3BtF,EAAiB,IAAI5mM,aAAoC,EAAvBksM,GAClC3E,EAAY,CAAC,EACbsB,EAAgB,CAACe,EAAKA,GAAMA,GAAMA,GAClClB,EAAgB,GAChB,IAAI+E,GAAc9E,EACd6C,IACFhD,EAAiB,IAAIxoM,aAA2B,EAAd7hJ,EAAKpb,SAErC8iW,IACF0C,EAAc,IAAI7nP,WAAkC,EAAvBwrP,IAE/B,IAGIzjW,GACAilW,GAJAC,GAAuB,EACvBC,IAAiB,EACjBC,IAAkB,EAsLtB,GAnLA1tJ,EAAMzyM,SAAQ,SAAC8rG,EAAMs0P,GACnB,IAAWC,EAAmCv0P,EAAzC1wB,MAA4B05I,EAAahpH,EAAnBlgG,MAG3B,GAAIy0V,EAAiB,EAAG,CAGtB,IADA,IAAIC,EAA0B,EACrBnmW,EAAIkmW,EAAgBlmW,KAAO2xG,EAAKuzP,QAAQllW,GAAG28V,SAASqI,cAC3DmB,IAIF,IAAIzB,EAAc,EACd0B,EAAgB,EACpB,GAAkB,WAAd3jN,EACFiiN,GAAeN,EAAezpI,GAAa,OACtC,GAAkB,UAAdl4E,EACTiiN,EAAcN,EAAezpI,OACxB,GAAkB,YAAdl4E,GAA2B9wC,EAAK0zP,cAAe,CAGxD,IADA,IAAIgB,EAAkB,EACbrmW,EAAIkmW,EAAiBC,EAAyBnmW,KACjD2xG,EAAKuzP,QAAQllW,GAAG28V,SAASqI,cAC3BqB,IAGJD,GAAiBhC,EAAezpI,GAAa0rI,CAC/C,CACA,GAAID,GAAiB1B,EAEnB,IADA,IAAI4B,EAAgB,EACXtmW,EAAI,EAAGA,EAAIkmW,EAAgBlmW,IAAK,CACvC,IAAIw/V,EAAY7tP,EAAKuzP,QAAQllW,GACvB28V,EAAW6C,EAAU7C,SAC3B6C,EAAUhgW,GAAKklW,EAAc4B,EAEP,IAAlBF,GAAuBzJ,EAASqI,cAAgBhlW,EAAIkmW,EAAiBC,IACvEG,GAAiBF,EACjB5G,EAAU/tV,OAAS20V,EAEvB,CAOF,IAHA,IA8BIzJ,EA9BE4J,EAAQvuB,EAAKyE,mBACjBnmU,EAAMqvV,GAAkBh0P,EAAKuzP,QAAQ,GAAG9f,UAAWzzO,EAAKuzP,QAAQvzP,EAAK1wB,MAAQ,GAAGmkQ,WAEzEvlS,EAAK,EAAGA,EAAK0mT,EAAMrrW,OAAQ2kD,IAIlC,IAHA,IAAA2mT,EAAAxhV,EAAqBuhV,EAAM1mT,GAAG,GAAvBzR,EAAKo4T,EAAA,GAAEn4T,EAAGm4T,EAAA,GAEbl3T,EAAOmd,IAAUqW,GAASrW,IACrBzsD,EAAI,EAAGA,EAAIkmW,EAAgBlmW,IAClC,GAAI2xG,EAAKuzP,QAAQllW,GAAGolV,WAAah3S,EAAO,CAEtC,IADA,IAAIq4T,EAAczmW,EAAG0mW,EAAY1mW,EAC1B0mW,EAAYR,EAAgBQ,IAAa,CAC9C,IAAI/0Q,EAAOggB,EAAKuzP,QAAQwB,GACxB,GAAI/0Q,EAAKyzP,UAAY/2S,EACnB,MAEEq4T,EAAYR,EAAiBC,IAC/B72T,EAAO/uC,KAAKiuC,IAAIc,EAAMqiD,EAAKnyF,GAC3BsjE,EAAQviE,KAAKC,IAAIsiE,EAAO6uB,EAAKnyF,EAAImyF,EAAKlgF,OAE1C,CACA,IAAK,IAAI0B,EAAIszV,EAAatzV,EAAIuzV,EAAWvzV,IAAK,CAC5C,IAAMqsV,EAAY7tP,EAAKuzP,QAAQ/xV,GAC/BqsV,EAAUhgW,EAAIsjE,GAAS08R,EAAUhgW,EAAIggW,EAAU/tV,MAAQ69B,EACzD,CACA,KACF,CAOJ,IADA,IAAMq3T,EAAc,SAAA38V,GAAC,OAAI2yV,EAAW3yV,CAAC,EAC5BhK,EAAI,EAAGA,EAAIkmW,EAAgBlmW,IAAK,CACvC,IAAIw/V,EAAY7tP,EAAKuzP,QAAQllW,GAEvBu/V,IADN5C,EAAW6C,EAAU7C,UACIzqV,MAGnB00V,GAAqD,EAA/CjB,GAAiB7tV,OAAO0nV,EAAUpa,WAC9C,GAAIwhB,GAAK,CACP,IAAMC,GAAW7uB,EAAKwE,qBAAqBlmU,EAAKkpV,EAAUpa,YACtDyhB,IACF/K,EAAQC,aAAa8K,GAAU,EAAG,EAAGF,EAEzC,CAGA,GAAIhD,EAAuB,CACzB,IAAOve,GAAaoa,EAAbpa,UACD0hB,GAAYtH,EAAUhgW,EAAIgmW,EAC1BuB,GAAavH,EAAUhgW,EAAIggW,EAAU/tV,MAAQ+zV,EACnD7E,EAA2B,EAAZvb,IAAiBwhB,GAAMG,GAAaD,GACnDnG,EAA2B,EAAZvb,GAAgB,GAAKwhB,GAAME,GAAYC,GACtDpG,EAA2B,EAAZvb,GAAgB,GAAKwgB,GAAcnB,EAAoBgB,EAMtE,IAAMuB,GAAW5hB,GAAY2gB,GACzBiB,GAAW,GACbC,EAA2BtG,EAAgBoF,GAAeiB,IAE5DjB,GAAgB3gB,EAClB,CAGA,GAAI4Y,EAEF,IADA,IAAO5Y,GAAaoa,EAAbpa,UACDA,GAAY4gB,IAChBA,KACIhI,EAAY78V,eAAe6kW,MAC7BH,GAAe7H,EAAYgI,KAMjC,IAAKrJ,EAASqI,eAAiBrI,EAAS5uL,QAAS,CAC/C,IAAM1hF,GAAMy5Q,KAGPpG,EAAUH,MACbG,EAAUH,IAAW,CACnB/kQ,KAAMmiQ,EAASniQ,KACfmlQ,WAAY,CAAChD,EAAS5N,KAAM4N,EAAS3N,KAAM2N,EAAS1N,KAAM0N,EAASzN,QAKvE,IAAM8M,GAASwD,EAAUhgW,EAAIgmW,EACvB0B,GAAStB,GAAcH,EAC7B1G,EAAqB,EAAN1yQ,IAAW2vQ,GAC1B+C,EAAqB,EAAN1yQ,GAAU,GAAK66Q,GAG9B,IAAMC,GAAQnL,GAASW,EAAS5N,KAAOoQ,EACjCiI,GAAQF,GAASvK,EAAS3N,KAAOmQ,EACjCkI,GAAQrL,GAASW,EAAS1N,KAAOkQ,EACjCmI,GAAQJ,GAASvK,EAASzN,KAAOiQ,EACnCgI,GAAQnG,EAAc,KAAIA,EAAc,GAAKmG,IAC7CC,GAAQpG,EAAc,KAAIA,EAAc,GAAKoG,IAC7CC,GAAQrG,EAAc,KAAIA,EAAc,GAAKqG,IAC7CC,GAAQtG,EAAc,KAAIA,EAAc,GAAKsG,IAG7Cj7Q,GAAMw3Q,IAAsB,IAC9BjjW,GAAQ,CAACwtC,MAAOi+C,GAAKh+C,IAAKg+C,GAAKk7Q,KAAM,CAACxF,EAAKA,GAAMA,GAAMA,IACvDlB,EAAczgW,KAAKQ,KAErBA,GAAMytC,MACN,IAAMm5T,GAAY5mW,GAAM2mW,KAUxB,GATIJ,GAAQK,GAAU,KAAIA,GAAU,GAAKL,IACrCC,GAAQI,GAAU,KAAIA,GAAU,GAAKJ,IACrCC,GAAQG,GAAU,KAAIA,GAAU,GAAKH,IACrCC,GAAQE,GAAU,KAAIA,GAAU,GAAKF,IAGzClL,EAAS/vQ,IAAOkzQ,GAGZvB,EAAa,CACf,IAAM5vT,GAAc,EAANi+C,GACdq0Q,EAAYtyT,IAASy3T,IAAgB,GAAK,IAC1CnF,EAAYtyT,GAAQ,GAAKy3T,IAAgB,EAAI,IAC7CnF,EAAYtyT,GAAQ,GAAoB,IAAfy3T,EAC3B,CACF,CACF,CACF,CAGAD,IAAe/tU,CACjB,IAGI8oU,EAAgB,CAClB,IAAMqG,GAAW1wV,EAAKpb,OAAS6qW,GAC3BiB,GAAW,GACbC,EAA2BtG,EAAgBoF,GAAeiB,GAE9D,CACF,CAGAhI,EAAQkF,YAAchhW,IAAQqhW,EAE9B9oT,EAAS,CACP2gT,SAAAA,EACA2C,eAAAA,EACAW,UAAAA,EACAiB,eAAAA,EACAC,YAAAA,EACAF,YAAAA,EACAG,cAAAA,EACA1hN,SAAAA,EACAqyM,WAAAA,EACAS,SAAUA,EAAWkN,EACrBjN,UAAWA,EAAYiN,EACvBtnU,WAAAA,EACAipU,YAAAA,EACAC,YAAa,CACXyE,EACAC,EAAgBntJ,EAAMp9M,OAAS28B,EAC/B2tU,EAAgBpB,EAChBqB,GAEFzE,cAAAA,EACAhC,QAAAA,GAEJ,GACF,CAmBA,SAAS0G,EAAa3xV,GACpB,IAAI9Y,EAAQ8Y,EAAI9Y,MAAM,eAClBwsW,EAAMxsW,EAAQuZ,WAAWvZ,EAAM,IAAMysW,IACzC,OAAO9sV,MAAM6sV,GAAO,EAAIA,EAAM,GAChC,CAEA,SAASR,EAA2BtG,EAAgBgH,EAAeX,GAKjE,IAJA,IAAMY,EAAYjH,EAA+B,EAAhBgH,GAC3BE,EAAUlH,EAA+B,EAAhBgH,EAAoB,GAC7CG,EAAOnH,EAA+B,EAAhBgH,EAAoB,GAC1CI,GAAmBF,EAAUD,GAAaZ,EACvChnW,EAAI,EAAGA,EAAIgnW,EAAUhnW,IAAK,CACjC,IAAMmgG,EAAmC,GAArBwnQ,EAAgB3nW,GACpC2gW,EAAexgQ,GAAcynQ,EAAYG,EAAkB/nW,EAC3D2gW,EAAexgQ,EAAa,GAAKynQ,EAAYG,GAAmB/nW,EAAI,GACpE2gW,EAAexgQ,EAAa,GAAK2nQ,CACnC,CACF,CAEA,SAAS5kW,IACP,OAAQuV,KAAK+7C,aAAevxD,MAAMC,KACpC,CAGA,SAAS0hW,IACPthW,KAAK0jC,KAAO,EACd,CACA,IAAMghU,EAAgB,CAAC,WAAY,IAAK,QAAS,aAgCjD,OA/BApD,EAAS1kW,UAAY,CACnBuR,MAAO,EACP4zV,eAAe,EACf,SAAIpkR,GACF,OAAO1gF,KAAKurD,KAAKxoD,KAAK0jC,KAAK9rC,OAAS8sW,EAAc9sW,OACpD,EACAgqW,QAAO,SAACllW,GACN,IAAIslW,EAAMV,EAASqD,UAGnB,OAFA3C,EAAIt+T,KAAO1jC,KAAK0jC,KAChBs+T,EAAIpzV,MAAQlS,EACLslW,CACT,EACAF,QAAO,SAACplW,GACN,IAAIkoW,EAAU,IAAItD,EAElB,OADAsD,EAAQlhU,KAAO1jC,KAAK0jC,KAAKmqB,OAAOnxD,EAAIgoW,EAAc9sW,QAC3CgtW,CACT,GAEFtD,EAASqD,UAAYD,EAAc1hW,QAAO,SAACnE,EAAK4P,EAAM/R,EAAGoG,GASvD,OARAvE,OAAOC,eAAeK,EAAK4P,EAAM,CAC/BshB,IAAG,WACD,OAAO/vB,KAAK0jC,KAAK1jC,KAAK4O,MAAQ81V,EAAc9sW,OAAS8E,EACvD,EACAuyB,IAAG,SAAC7tB,GACFpB,KAAK0jC,KAAK1jC,KAAK4O,MAAQ81V,EAAc9sW,OAAS8E,GAAK0E,CACrD,IAEKvC,CACT,GAAG,CAAC6kC,KAAM,KAAM90B,MAAO,IAGhB,CACLswV,QAAAA,EACA2F,QAvEF,SAAiBvlW,EAAM64C,GACrB+mT,EAAQ5/V,GAAM,SAACxH,GACb,IAAAgtW,EAAApjV,EAAyB5pB,EAAO2lW,YAAW,GAApCv3L,EAAE4+L,EAAA,GAAE3+L,EAAE2+L,EAAA,GAAEx+L,EAAEw+L,EAAA,GAAEv+L,EAAEu+L,EAAA,GACrB3sT,EAAS,CACPhqC,MAAOm4J,EAAKJ,EACZ93J,OAAQm4J,EAAKJ,GAEjB,GAAG,CAACs6L,aAAa,GACnB,EAgEE7B,SAAAA,EAEJ,EA80BImG,IAEFxwO,KAAI,SAACp9D,EAAQonS,EAAYyG,EAAkBD,GACzC,IAAO/K,EAAkB7iS,EAAlB6iS,eACP,OAAOgL,EAAiBzG,EAAYwG,IAAe,CAAE/K,eAAAA,GACvD,IAGIwB,GAA+BjwB,GAAmB,CACtDpyU,KAAM,aACNu9C,aAAc,CACZ4nT,GACA/xB,IAEFh4M,KAAI,SAAC0wO,EAAYz4B,GACf,OAAO,SAASltU,GACd,IAAM6sU,EAAW,IAAIK,EAErB,OADAy4B,EAAW/F,QAAQ5/V,EAAM6sU,EAAS17R,SAC3B07R,CACT,CACF,EACAjC,iBAAgB,SAACpyU,GAEf,IAAMizU,EAAgB,CACpBjzU,EAAO2jW,eAAethM,OACtBriK,EAAOghW,SAAS3+L,QAQlB,OANIriK,EAAOulW,gBACTtyB,EAAcjuU,KAAKhF,EAAOulW,eAAeljM,QAEvCriK,EAAOslW,aACTryB,EAAcjuU,KAAKhF,EAAOslW,YAAYjjM,QAEjC4wK,CACT,IAkBF,IAAMm6B,GAA+B,WAEnC,IAAMC,EAAqB,CAAC,EA+B5B,IACMC,EAAqB,oBAiCrBF,EAAc,SAAAG,GAAArpV,EAAAkpV,EAAAG,GAAA,IAAAppV,EAAAtB,EAAAuqV,GAClB,SAAAA,IAAc,IAAAhpV,EAekB,OAflBzR,EAAA,KAAAy6V,IACZhpV,EAAAD,EAAApf,KAAA,OAEK2kC,OAAS,EACdtlB,EAAKopV,YAAc,EAInBppV,EAAK8pK,OAAS,CACZ,CAACl7I,MAAO,EAAG6yC,MAAOx0B,IAAUg9H,cAAe,GAC3C,CAACr7I,MAAO,EAAG6yC,MAAOx0B,IAAUg9H,cAAe,IAI7CjqK,EAAK+pK,eAAiB,IAAI/Y,GAC1BhxJ,EAAK8uJ,YAAc,IAAItB,GAAOxtJ,CAChC,CAyHC,OAzHA3S,EAAA27V,EAAA,EAAA1iW,IAAA,wBAAA/D,MAED,WACE,GACD,CAAA+D,IAAA,qBAAA/D,MAED,WACE,GAIF,CAAA+D,IAAA,UAAA/D,MACA,SAAQo9K,GACN,IAAM0pL,EAAQvlW,KAAKg4F,WAAWra,MAC9B39E,KAAKwlW,aAAa3pL,IAASz0B,GAAWm+M,EAAQ,EAAI,EAAG1pL,IAASx0B,GAAak+M,EAAQA,EAAQ,EAC7F,GAAC,CAAA/iW,IAAA,SAAAutB,IAeD,WACE,OAAO/vB,KAAKylW,OACd,EAACx2U,IAfD,SAAWuS,GAAQ,IAAAmtC,EAAA,KACjB,GAAIntC,IAAWxhC,KAAKylW,QAAS,CAC3BzlW,KAAKylW,QAAUjkU,GACO,kBAAXA,GAAuBA,EAAS,KACzCA,EAAS,GAEX,IAAIkkU,EAxGV,SAA6BlkU,GAC3B,IAAImkU,EAAOR,EAAmB3jU,GAC9B,IAAKmkU,EAAM,CAWT,IANA,IAAMC,EAAQ,IAAIjlG,GAAoB,EAAG,EAAGn/N,EAAQA,GAC9CqkU,EAAOD,EAAM1kW,QACb4kW,EAAaF,EAAM1zR,WACnB6zR,EAAYF,EAAK3zR,WACjB8zR,EAAW,IAAItgL,GACfugL,EAAYH,EAAWrmM,GAAG9hF,MACvBjhF,EAAI,EAAGA,EAAIupW,EAAWvpW,IAC7BqpW,EAAUxmS,SAASx8D,MAAU,EAAJrG,KAAW,EACpCqpW,EAAUh9L,OAAOhmK,MAAU,EAAJrG,EAAQ,KAAO,EAE9C,CAAC,WAAY,SAAU,MAAM6F,SAAQ,SAAApJ,GAC7B6sW,EAASlzV,aAAa3Z,EAAM,IAAI0rL,GAAuB,GAADpjL,OAAAsyD,EAChD+xS,EAAW3sW,GAAM4J,OAAKgxD,EAAKgyS,EAAU5sW,GAAM4J,QAC/C+iW,EAAW3sW,GAAMspL,UAErB,IACAujL,EAASh8K,SAAS,GAADvoL,OAAAsyD,EAAK6xS,EAAMh3V,MAAM7L,OAAKgxD,EAAK8xS,EAAKj3V,MAAM7L,MAAMxG,KAAI,SAAAwK,GAAC,OAAIA,EAAIk/V,CAAS,OACnFD,EAASn/K,UAAU,GAAK,GAAK,GAC7B8+K,EAAOR,EAAmB3jU,GAAUwkU,CACtC,CACA,OAAOL,CACT,CA4EgBO,CAAoB1kU,GAC7B,CAAC,WAAY,SAAU,MAAMj/B,SAAQ,SAAAsQ,GACpC87D,EAAKuD,WAAWr/D,GAAQ6yV,EAAIxzR,WAAWr/D,GAAM3R,OAC/C,IACAlB,KAAKgqL,SAAS07K,EAAI1tQ,WAAW92F,QAC/B,CACF,GAAC,CAAAsB,IAAA,cAAAutB,IAWD,WACE,OAAO/vB,KAAKmmW,YACd,EAEAl3U,IAVA,SAAgB/nB,GACVA,IAAMlH,KAAKmmW,eACbnmW,KAAKmmW,aAAej/V,EACpBlH,KAAKomW,gBAET,GAAC,CAAA5jW,IAAA,eAAA/D,MAiBD,SAAam9V,EAAauB,EAAmBM,EAAaF,EAAeH,GAEvEiJ,EAAiBrmW,KA7GO,qBA6GoB47V,EAAa,GACzDyK,EAAiBrmW,KAAMolW,EAAoBjI,EAAmB,GAC9DkJ,EAAiBrmW,KA7GM,oBA6GoBo9V,EAAa,GACxDp9V,KAAKsmW,aAAe7I,EACpBz9V,KAAKumW,eAAiBhJ,EACtBiJ,EAAiBxmW,KAAMm9V,EAAkBvlW,QACzCoI,KAAKomW,eACP,GAAC,CAAA5jW,IAAA,gBAAA/D,MAED,WACE,IAAMgjT,EAASzhT,KAAKsmW,aACpB,GAAI7kD,EAAQ,CACV,IAAQ6jD,EAAmCtlW,KAAnCslW,YAA0BmB,EAASzmW,KAAtBgrK,YACrB,GAAIs6L,EAAa,CACf,IAAQ3zM,EAAkC10J,KAAlC00J,GAAIl1I,EAA8Bxf,KAA9Bwf,MAAOyuB,EAAuBjuC,KAAvBiuC,IAAKhuC,EAAkBD,KAAlBC,IAAKk3J,EAAan3J,KAAbm3J,IAAKD,EAAQl3J,KAARk3J,IAC5BuyM,EAAS/0M,EAAK,EACd0yF,EAAa,EAAL1yF,EACRg1M,EAAO1pW,KAAK4f,IAAIyoV,GAChBsB,EAAYnlD,EAAO,GAAKklD,EACxBE,EAAaplD,EAAO,GAAKklD,EACzBh9L,EAAOltJ,GAAOmqV,EAAYF,GAAUriH,KAAW5nO,GAAOoqV,EAAaH,GAAUriH,IAC9EsiH,EAAOz7T,EAAIkpH,EAAIwyM,GAAaD,EAAMvyM,EAAIyyM,GAAcF,GACnD78L,EAAOrtJ,GAAOmqV,EAAYF,GAAUriH,KAAW5nO,GAAOoqV,EAAaH,GAAUriH,GAC/EsiH,EAAOzpW,EAAIk3J,EAAIwyM,GAAaD,EAAMvyM,EAAIyyM,GAAcF,GAClD38L,EAAOvtJ,GAAOmqV,EAAYj1M,GAAM0yF,KAAW5nO,GAAOoqV,EAAal1M,GAAM0yF,GAChE,EAAPsiH,EAAWzpW,EAAIypW,EAAOxyM,EAAIyyM,GAAaD,EAAMA,EAAOxyM,EAAI0yM,GAAcF,GAC1EF,EAAKv7T,IAAIjc,IAAI06I,EAAM83I,EAAO,GAAI6jD,EAAc,GAAKt7L,EAAO,GACxDy8L,EAAKvpW,IAAI+xB,IAAI66I,EAAM23I,EAAO,GAAI6jD,EAAc,EAAI,EAAIt7L,EACtD,MACEy8L,EAAKv7T,IAAIjc,IAAIwyR,EAAO,GAAIA,EAAO,GAAI,GACnCglD,EAAKvpW,IAAI+xB,IAAIwyR,EAAO,GAAIA,EAAO,GAAI,GAErCglD,EAAKK,kBAAkB9mW,KAAKimL,eAC9B,CACF,GAEA,CAAAzjL,IAAA,gBAAA/D,MAaA,SAAcsoW,GACZ,IAAIppR,EAAQ39E,KAAK4pE,aAAaw7R,GAAoBznR,MAC9CxgF,EAAS6C,KAAKumW,eAClB,GAAIppW,EACF,IAAK,IAAIT,EAAIS,EAAOvF,OAAQ8E,KAAM,CAChCihF,EAAQxgF,EAAOT,GAAGquC,IAClB,IAAIk5T,EAAO9mW,EAAOT,GAAGunW,KAErB,GAAIA,EAAK,GAAK8C,EAAS3/V,GAAK68V,EAAK,GAAK8C,EAAS1/V,GAAK48V,EAAK,GAAK8C,EAASz/V,GAAK28V,EAAK,GAAK8C,EAAS7qW,EAC7F,KAEJ,CAEFsqW,EAAiBxmW,KAAM29E,EACzB,KAACunR,CAAA,CA1IiB,CAASxsF,IAsJ7B,SAAS2tF,EAAiBV,EAAMqB,EAAUC,EAAUxkL,GAClD,IAAM5vK,EAAO8yV,EAAK/7R,aAAao9R,GAC3BC,EAEEp0V,GAAQA,EAAK9P,MAAMnL,SAAWqvW,EAASrvW,QACzCib,EAAK9P,MAAMksB,IAAIg4U,GACfp0V,EAAKysJ,aAAc,IAEnBqmM,EAAK7yV,aAAak0V,EAAU,IAAIrqH,GAAyBsqH,EAAUxkL,WAO5DkjL,EAAKv8J,kBACZu8J,EAAKjkM,WAEE7uJ,GACT8yV,EAAK3/J,gBAAgBghK,EAEzB,CAGA,SAASR,EAAiBb,EAAMhoR,GAC9BgoR,EAAKA,EAAK9nW,eAAe,iBAAmB,gBAAkB,qBAAuB8/E,CACvF,CAEA,OApCKunR,EAAetoW,UAAUkW,eAC5BoyV,EAAetoW,UAAUkW,aAAe,SAAS3Z,EAAM+8J,GAErD,OADAl2J,KAAKkyE,WAAY/4E,GAAS+8J,EACnBl2J,IACT,GAgCKklW,CACT,CAtPqC,GA+Q/BgC,GAAmB,okCAAHzlW,OAAA,wZAgDhB0lW,GAAgB,urBAAH1lW,OAAA,qvDA4MnB,IAAM2lW,GAAqB,WAEzB,IAAMC,EAAkB,IAAIrlL,GAAkB,CAC5Cx6I,MAAO,SACPq0I,KAAMx0B,GACN00B,aAAa,IAETurL,EAAqB,QAErBC,EAAW,IAAI52L,GACf62L,EAAY,IAAI1gM,GAChB2gM,EAAY,IAAI3gM,GAChB4gM,EAAY,GACZtvQ,EAAS,IAAI0uE,GACb6gM,EAAgB,OAEtB,SAASjwV,EAAM8C,GACb,OAAO7d,MAAM0E,QAAQmZ,GAAKA,EAAE,GAAKA,CACnC,CAEA,IAAIotV,EAAqB,WACvB,IAAMv0K,EAAO,IAAInI,GACf,IAAIy1E,GAAoB,EAAG,GAC3B0mG,GAGF,OADAO,EAAqB,kBAAMv0K,CAAI,EACxBA,CACT,EACIw0K,EAAuB,WACzB,IAAMx0K,EAAO,IAAInI,GACf,IAAIy1E,GAAoB,EAAG,EAAG,GAAI,GAClC0mG,GAGF,OADAQ,EAAuB,kBAAMx0K,CAAI,EAC1BA,CACT,EAEMy0K,EAAiB,CAACljW,KAAM,aACxBmjW,EAAoB,CAACnjW,KAAM,gBAE3BojW,EAAiB,CACrB,OACA,WACA,gBACA,aACA,WACA,eACA,OACA,YACA,YACA,aACA,aACA,UACA,UACA,cACA,gBAGIC,EAAiBD,EAAevmW,OACpC,WACA,QACA,cACA,WACA,cACA,cACA,uBAWI2lW,EAAI,SAAAtsH,GAAA9+N,EAAAorV,EAAAtsH,GAAA,IAAA19F,EAAAziI,EAAAysV,GACR,SAAAA,IAAc,IAAA53R,EAAA/kE,EAAA,KAAA28V,GACZ,IAAMt8L,EAAW,IAAIo6L,GA0SC,OAzStB11R,EAAA4tE,EAAAvgJ,KAAA,KAAMiuK,EAAU,OAQX93J,KAAO,GAmBZw8D,EAAKywR,QAAU,EASfzwR,EAAK2wR,QAAU,EAYf3wR,EAAK81R,YAAc,EAOnB91R,EAAK6+F,UAAY,OAOjB7+F,EAAKqpR,KAAO,KAOZrpR,EAAKqsE,SAAW,GAOhBrsE,EAAKmtE,cAAgB,EAOrBntE,EAAKj7C,WAAa,SAOlBi7C,EAAKthE,SAAWi7C,IAQhBqmB,EAAKuwR,aAAe,SAMpBvwR,EAAK2vE,UAAY,OAMjB3vE,EAAKmwR,WAAa,EASlBnwR,EAAKqwR,WAAa,SAelBrwR,EAAKqpG,SAAW,KAShBrpG,EAAKhoC,MAAQ,KAWbgoC,EAAKkrR,YAAc,KAUnBlrR,EAAK04R,aAAe,EAQpB14R,EAAK24R,aAAe,EAQpB34R,EAAK44R,eAAiB,EAUtB54R,EAAK64R,YAAc,EASnB74R,EAAK84R,eAAiB,EAStB94R,EAAK+4R,eAAiB,EAStB/4R,EAAKn6C,YAAc,EAOnBm6C,EAAKg5R,YAAclB,EAOnB93R,EAAKp6C,cAAgB,EASrBo6C,EAAK16C,YAAc,EAQnB06C,EAAKi5R,YAAc,EAQnBj5R,EAAKu3R,SAAW,KAWhBv3R,EAAKgzO,YAAcmlD,EAQnBn4R,EAAKk5R,oBAAsB,EAU3Bl5R,EAAKyqR,aAAe,KAUpBzqR,EAAKytR,kBAAmB,EAExBztR,EAAKm5R,UAAW,EAAMn5R,CACxB,CAkXC,OAhXDjmE,EAAA69V,EAAA,EAAA5kW,IAAA,OAAA/D,MAMA,SAAK05C,GAAU,IAAAiyE,EAAA,KACTpqH,KAAK4oW,aACP5oW,KAAK4oW,YAAa,EAGd5oW,KAAK6oW,YACN7oW,KAAK8oW,eAAiB9oW,KAAK8oW,aAAe,KAAKhsW,KAAKq7C,IAErDn4C,KAAK6oW,YAAa,EAClB7oW,KAAKu+B,cAAcupU,GAEnBvN,GAAkB,CAChBvnV,KAAMhT,KAAKgT,KACX6lV,KAAM74V,KAAK64V,KACXh9M,SAAU77I,KAAK67I,UAAY,GAC3Bc,cAAe38I,KAAK28I,eAAiB,EACrCpoH,WAAYv0B,KAAKu0B,YAAc,SAC/BrmB,SAAUlO,KAAKkO,SACfmgK,UAAWruK,KAAKquK,WAAa,OAC7BlvB,UAAWn/I,KAAKm/I,UAChBwgN,WAAY3/V,KAAK2/V,WACjBE,WAAY7/V,KAAK6/V,WACjBE,aAAc//V,KAAK+/V,aACnBE,QAASjgW,KAAKigW,QACdE,QAASngW,KAAKmgW,QACdzF,YAAa16V,KAAK06V,YAClB2F,uBAAuB,EACvBpG,aAAcj6V,KAAKi6V,aACnBgD,iBAAkBj9V,KAAKi9V,mBACtB,SAAA8L,GACD3+O,EAAKy+O,YAAa,EAGlBz+O,EAAK4+O,gBAAkBD,EAGvB3+O,EAAK0gD,SAASm+L,aACZF,EAAenN,YACfmN,EAAe5L,kBACf4L,EAAetL,YACfsL,EAAexL,cACfwL,EAAe3L,aAIjB,IAAM8L,EAAS9+O,EAAK0+O,aAChBI,IACF9+O,EAAK0+O,aAAe,KACpB1+O,EAAKw+O,YAAa,EAClBx+O,EAAK++O,MAAK,WACRD,EAAO3mW,SAAQ,SAAAy7E,GAAE,OAAIA,GAAMA,GAAI,GACjC,KAGFosC,EAAK7rF,cAAcwpU,GACf5vT,GACFA,GAEJ,KAGN,GAEA,CAAA31C,IAAA,iBAAA/D,MAMA,SAAeqzL,EAAUC,EAAOnqB,EAAQkD,EAAU+N,EAAUpxE,GAC1DznG,KAAKmpW,OAGDtwL,EAASuwL,sBACXppW,KAAKqpW,kBAAkBxwL,GAMzBA,EAASywL,YAAczwL,EAASh7K,eAAe,QAC/CmC,KAAK8qK,SAASy+L,QAAQ1wL,EAAS2wL,YAAc3wL,EAASgD,MACtDhD,EAASgD,KAAO10B,EAClB,GAAC,CAAA3kJ,IAAA,gBAAA/D,MAED,SAAcqzL,EAAUC,EAAOnqB,EAAQkD,EAAU+N,EAAUpxE,GAErDoxE,EAASywL,YACXzwL,EAASgD,KAAOhD,EAAS2wL,mBAElB3wL,EAASgD,IAEpB,GAEA,CAAAr5K,IAAA,UAAA/D,MAOA,WACEuB,KAAK8qK,SAASpJ,SAChB,GAEA,CAAAl/J,IAAA,iBAAAutB,IAOA,WACE,OAAO/vB,KAAKgpW,iBAAmB,IACjC,GAGA,CAAAxmW,IAAA,WAAAutB,IACA,WACE,IAAI05U,EAAkBzpW,KAAK0pW,iBACrBpnB,EAAetiV,KAAK2pW,eAAiB3pW,KAAK4pW,mBAAqB5pW,KAAK4pW,iBAAmBvC,EAAgBnmW,SAa7G,GAZKuoW,GAAmBA,EAAgBnnB,eAAiBA,IACvDmnB,EAAkBzpW,KAAK0pW,iBAjkB/B,SAAmCpnB,GACjC,IAAMunB,EAAexnB,GAAsBC,EAAc,CACvD6B,SAAS,EACT73P,WAAY,CACV0iG,aAAa,GAEfZ,SAAU,CACR07K,kBAAmB,CAACrrW,MAAO,MAC3BsrW,sBAAuB,CAACtrW,MAAO,IAAI02J,IACnC60M,oBAAqB,CAACvrW,MAAO,GAC7BwrW,mBAAoB,CAACxrW,MAAO,GAC5ByrW,mBAAoB,CAACzrW,MAAO,IAAImhK,GAAQ,EAAE,EAAE,EAAE,IAC9CuqM,gBAAiB,CAAC1rW,MAAO,IAAImhK,GAAQ,EAAE,EAAE,EAAE,IAC3CwqM,sBAAuB,CAAC3rW,MAAO,GAC/B4rW,sBAAuB,CAAC5rW,MAAO,GAC/B6rW,mBAAoB,CAAC7rW,MAAO,GAC5B8rW,sBAAuB,CAAC9rW,MAAO,IAAI02J,IACnCq1M,mBAAoB,CAAC/rW,MAAO,GAC5BgsW,kBAAmB,CAAChsW,MAAO,GAC3BisW,mBAAoB,CAACjsW,MAAO,GAC5BksW,mBAAoB,CAAClsW,MAAO,IAAI88J,IAChCqvM,qBAAsB,CAACnsW,MAAO,GAC9BosW,cAAe,CAACpsW,MAAO,IAAI+3J,IAC3Bs0M,sBAAuB,CAACrsW,OAAO,GAC/BssW,gBAAiB,CAACtsW,OAAO,IAE3BykV,WAtOgB,6nBAuOhBG,gBAAiB6jB,GACjB5jB,aAAc6jB,GACd1jB,uBA1DuB,2wBA2DvBC,eAAc,SAAA/9T,GAAiC,IAA/BipK,EAAYjpK,EAAZipK,aAAcC,EAAclpK,EAAdkpK,eACxBm8K,EAAa,+BAcjB,OAbIA,EAAW9yW,KAAK22L,KAElBA,EAAiBA,EACdlzL,QAAQqvW,EAAY,kCACpBrvW,QAAQ,eAAgB,qBAEtBqvW,EAAW9yW,KAAK02L,KACnBA,EAAeA,EAAajzL,QAC1BomV,GACA,mHAIC,CAAEnzJ,aAAAA,EAAcC,eAAAA,EACzB,IAqBF,OAjBAg7K,EAAa9tL,aAAc,EAE3Bx9K,OAAOiL,iBAAiBqgW,EAAc,CACpCT,qBAAsB,CAAC3qW,OAAO,GAI9B2+K,WAAY,CACVrtJ,IAAG,WACD,OAAO/vB,KAAK67K,IACd,EACA5sJ,IAAG,WACD,KAKC46U,CACT,CA6fkDoB,CAA0B3oB,GAEpEA,EAAa1+U,iBAAiB,WAAW,SAASsnW,IAChD5oB,EAAapqT,oBAAoB,UAAWgzU,GAC5CzB,EAAgB/nM,SAClB,KAME1hK,KAAKkoW,cAAgBloW,KAAKqoW,aAAeroW,KAAKsoW,gBAAkBtoW,KAAKuoW,eAAgB,CACvF,IAAI4C,EAAkB1B,EAAgB2B,YAatC,OAZKD,KACHA,EAAkB1B,EAAgB2B,YAAc7sW,OAAOwd,OAAO0tV,EAAiB,CAC7ErqU,GAAI,CAAC3gC,MAAOgrW,EAAgBrqU,GAAK,OAEnBisU,uBAAwB,EACxCF,EAAgB3uL,YAAa,EAC7B2uL,EAAgB5uW,IAAM,KACtBktW,EAAgB7lW,iBAAiB,WAAW,SAASsnW,IACnDzB,EAAgBvxU,oBAAoB,UAAWgzU,GAC/CC,EAAgBzpM,SAClB,KAEK,CACLypM,EACA1B,EAEJ,CACE,OAAOA,CAEX,EAACx6U,IACD,SAAaqzT,GACPA,GAAgBA,EAAa8mB,sBAC/BppW,KAAK0pW,iBAAmBpnB,EACxBtiV,KAAK2pW,cAAgBrnB,EAAaA,cAElCtiV,KAAK2pW,cAAgBrnB,CAEzB,GAAC,CAAA9/U,IAAA,sBAAAutB,IAED,WACE,OAAO/vB,KAAK8qK,SAAStpI,MACvB,EAACvS,IACD,SAAwBuS,GACtBxhC,KAAK8qK,SAAStpI,OAASA,CACzB,GAAC,CAAAh/B,IAAA,cAAAutB,IAED,WACE,OAAO/vB,KAAK8qK,SAASw6L,WACvB,EAACr2U,IACD,SAAgB/nB,GACdlH,KAAK8qK,SAASw6L,YAAcp+V,CAC9B,GAEA,CAAA1E,IAAA,sBAAAutB,IACA,WACE,OAAOrY,EAAM1X,KAAK64K,UAAUs3C,kBAC9B,GAAC,CAAA3tN,IAAA,yBAAAutB,IACD,WACE,OAAOrY,EAAM1X,KAAK64K,UAAU2rK,qBAC9B,GAAC,CAAAhiV,IAAA,oBAAA/D,MAED,SAAkBo6K,GAChB,IAAMyyL,EAAYzyL,EAASwyL,sBACrBj9K,EAAWvV,EAASuV,SACpBm9K,EAAWvrW,KAAK+oW,eACtB,GAAIwC,EAAU,CACZ,IAAOxQ,EAA2BwQ,EAA3BxQ,WAAY0C,EAAe8N,EAAf9N,YACnBrvK,EAAS07K,kBAAkBrrW,MAAQs8V,EACnC3sK,EAAS27K,sBAAsBtrW,MAAMwwB,IAAI8rU,EAAW5hN,MAAMhrI,MAAO4sV,EAAW5hN,MAAM/qI,QAClFggL,EAAS47K,oBAAoBvrW,MAAQ8sW,EAAStR,aAC9C7rK,EAAS67K,mBAAmBxrW,MAAQ8sW,EAASr6B,YAC7C9iJ,EAAS87K,mBAAmBzrW,MAAMk7J,UAAU8jM,GAC5CrvK,EAAS08K,sBAAsBrsW,OAAS6sW,KAAeC,EAASnO,YAEhE,IAGItoU,EACAM,EACAozU,EALAgD,EAAiB,EACjBC,EAAa,EACbp2U,EAAc,EAIdmkF,EAAU,EACVE,EAAU,EAEd,GAAI4xP,EAAW,CACb,IAAKpD,EAA6EloW,KAA7EkoW,aAAcI,EAA+DtoW,KAA/DsoW,eAAgBC,EAA+CvoW,KAA/CuoW,eAAgBF,EAA+BroW,KAA/BqoW,YAAaD,EAAkBpoW,KAAlBooW,eAChEoD,EAAiBxrW,KAAK0rW,cAAcxD,IAAiB,EACrDuD,EAAaxuW,KAAKC,IAAI,EAAG8C,KAAK0rW,cAAcrD,IAAgB,GAC5DvzU,EAAcszU,EACd5uP,EAAUx5G,KAAK0rW,cAAcpD,IAAmB,EAChD5uP,EAAU15G,KAAK0rW,cAAcnD,IAAmB,CAClD,MACElzU,EAAcp4B,KAAKC,IAAI,EAAG8C,KAAK0rW,cAAc1rW,KAAKq1B,cAAgB,MAEhEmzU,EAAcxoW,KAAKwoW,YACnBp6K,EAASu8K,mBAAmBlsW,MAAMwwB,IAAmB,MAAfu5U,EAAsBlB,EAAqBkB,GAE5D,OADrBpzU,EAAgBp1B,KAAKo1B,iBACMA,EAAgB,IAE7CN,EAAc90B,KAAK80B,YAGrBs5J,EAASg8K,sBAAsB3rW,MAAQ+sW,EACvCp9K,EAASm8K,sBAAsB9rW,MAAMwwB,IAAIuqF,EAASE,GAClD00E,EAASq8K,kBAAkBhsW,MAAQgtW,EACnCr9K,EAASs8K,mBAAmBjsW,MAAQ42B,EACpC+4J,EAASw8K,qBAAqBnsW,MAAQ22B,EACtCg5J,EAASk8K,mBAAmB7rW,MAAuB,MAAfq2B,EAAsB,EAAIA,EAC9Ds5J,EAASo8K,mBAAmB/rW,MAAQuB,KAAKslW,aAAe,EAExD,IAAIyB,EAAW/mW,KAAK+mW,SACpB,GAAIA,GAAYpqW,MAAM0E,QAAQ0lW,IAAiC,IAApBA,EAASnvW,OAClDw2L,EAAS+7K,gBAAgB1rW,MAAMk7J,UAAUotM,OACpC,CAEL,IAAM4E,EAA+B,KAAxB3rW,KAAK67I,UAAY,IAC9BuyC,EAAS+7K,gBAAgB1rW,MAAMwwB,IAC7BwuU,EAAY,GAAKkO,EACjBlO,EAAY,GAAKkO,EACjBlO,EAAY,GAAKkO,EACjBlO,EAAY,GAAKkO,EAErB,CACA3rW,KAAK8qK,SAAS8gM,cAAcx9K,EAAS+7K,gBAAgB1rW,MACvD,CACA2vL,EAAS28K,gBAAgBtsW,QAAUuB,KAAK2oW,SACxC9vL,EAASyE,gBAAkBt9K,KAAKyoW,YAChC5vL,EAAS0E,oBAAsB1E,EAAS2E,mBAAqBx9K,KAAKyoW,aAAe,EAIjF,IAAMjhU,EAAQ8jU,EAAatrW,KAAKmoW,cAAgB,EAAKnoW,KAAKwnC,MAE1D,GAAa,MAATA,SACKqxI,EAASrxI,UACX,CACL,IAAMqkU,EAAWhzL,EAASh7K,eAAe,SAAWg7K,EAASrxI,MAASqxI,EAASrxI,MAAQ,IAAI+zH,GACvF/zH,IAAUqkU,EAASC,QAA2B,kBAAVtkU,GACtCqkU,EAAS58U,IAAI48U,EAASC,OAAStkU,EAEnC,CAGA,IAAIukU,EAAS/rW,KAAKwiT,aAAemlD,EACjC,GAAIoE,IAAWlzL,EAASqqG,aAAc,CACpC,IAAI8oF,EAAS59K,EAASy8K,cAAcpsW,MAEhC9G,GADJo0W,EAASA,EAAOpwW,QAAQ,YAAa,OACdgsW,GAAiBoE,EAAOp0W,MAAM,gCACrD,GAAIA,EAAO,CACT,IAAAs0W,EAAAvqV,EAAqC/pB,EAAK,GAAnCu0W,EAAKD,EAAA,GAAEE,EAAKF,EAAA,GAAEG,EAAKH,EAAA,GAAEI,EAAKJ,EAAA,GACjCzE,EAAUv4U,IAAI,EAAG,EAAG,GAAGk9U,GAAmB,MAAVD,EAAgB,GAAK,EACrDzE,EAAUx4U,IAAI,EAAG,EAAG,GAAGo9U,GAAmB,MAAVD,GAAiB,EAAI,EACrD7E,EAASxwL,OAAO3+E,EAAQovQ,EAAUh3L,MAAMi3L,GAAYA,GACpDuE,EAAOhzM,eAAeuuM,EACxB,MACEyE,EAAO1+I,WAETz0C,EAASqqG,aAAe6oF,CAC1B,CACF,GAAC,CAAAvpW,IAAA,gBAAA/D,MAED,SAAcA,GACZ,GAAqB,kBAAVA,EAAoB,CAC7B,IAAI9G,EAAQ8G,EAAM9G,MAAM,iBACpBwsW,EAAMxsW,EAAQuZ,WAAWvZ,EAAM,IAAMysW,IACzC3lW,GAAS6Y,MAAM6sV,GAAO,EAAIA,EAAM,KAAOnkW,KAAK67I,QAC9C,CACA,OAAOp9I,CACT,GAEA,CAAA+D,IAAA,4BAAA/D,MAGA,SAA0B8gE,GAAkC,IAAxBh+D,EAAMtB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAC/C5zJ,EAAOm6J,KAAKn8F,GACZ,IAAMr4D,EAAIlH,KAAKslW,YAIf,OAHIp+V,IACF3F,EAAOrF,EAAIe,KAAK44J,MAAMt2F,EAASrjE,EAAGe,KAAK4f,IAAI3V,GAAKjK,KAAK4f,IAAI0iD,EAASj4D,IAAMrK,KAAK4f,IAAI3V,IAE5E3F,CACT,GAEA,CAAAiB,IAAA,4BAAA/D,MAGA,SAA0B8gE,GAAkC,IAAxBh+D,EAAMtB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAE/C,OADAqyM,EAAU9rM,KAAKn8F,GACRv/D,KAAKssW,0BAA0BtsW,KAAKusW,aAAa/E,GAAYjmW,EACtE,GAEA,CAAAiB,IAAA,UAAA/D,MAIA,SAAQitL,EAAWC,GACjB,IAAOo9K,EAA+B/oW,KAA/B+oW,eAAgBzD,EAAetlW,KAAfslW,YACvB,GAAIyD,EAAgB,CAKlB,IAJA,IAAMtnD,EAASsnD,EAAetL,YACxB+O,EAAclH,EAAcuC,IAAyBD,IACrDjC,EAAO6G,EAAY1hM,SACzB2hM,EAAuB9G,EAAKzzR,WAArB3S,EAAQktS,EAARltS,SAAUkgG,EAAEgtM,EAAFhtM,GACR/iK,EAAI,EAAGA,EAAI+iK,EAAG9hF,MAAOjhF,IAAK,CACjC,IAAIR,EAAIulT,EAAO,GAAMhiJ,EAAGtJ,KAAKz5J,IAAM+kT,EAAO,GAAKA,EAAO,IAChDp6S,EAAIo6S,EAAO,GAAMhiJ,EAAGrJ,KAAK15J,IAAM+kT,EAAO,GAAKA,EAAO,IACpDn6S,EAAI,EACJg+V,IACFh+V,EAAIg+V,EAAcroW,KAAKk3J,IAAIj4J,EAAIopW,GAAeA,EAC9CppW,EAAIe,KAAKm3J,IAAIl4J,EAAIopW,GAAeA,GAElC/lS,EAASyjH,OAAOtmL,EAAGR,EAAGmL,EAAGC,EAC3B,CACAq+V,EAAK1/K,eAAiBjmL,KAAK8qK,SAASmb,eACpC0/K,EAAK36L,YAAchrK,KAAK8qK,SAASE,YACjCwhM,EAAYvkM,YAAcjoK,KAAKioK,YAC/BukM,EAAY3zL,SAASgD,KAAO77K,KAAK64K,SAASgD,KAC1C6rL,EAAU9vW,OAAS,EACnB40W,EAAYjyH,QAAQ7uD,EAAWg8K,GAC/B,IAAK,IAAIhrW,EAAI,EAAGA,EAAIgrW,EAAU9vW,OAAQ8E,IACpCgrW,EAAUhrW,GAAGyF,OAASnC,KACtB2rL,EAAW7uL,KAAK4qW,EAAUhrW,GAE9B,CACF,GAAC,CAAA8F,IAAA,OAAA/D,MAED,SAAK+C,GAAQ,IAAA2pH,EAAA,KAELw6O,EAAO3lW,KAAK8qK,SAOlB,OANA5jC,GAAA5rH,EAAA8rV,EAAAxqW,WAAA,aAAAC,KAAA,KAAW2E,GACXxB,KAAK8qK,SAAW66L,EAEhBsC,EAAe1lW,SAAQ,SAAAkM,GACrB08G,EAAK18G,GAAQjN,EAAOiN,EACtB,IACOzO,IACT,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WACE,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAK17J,KACrC,KAAConW,CAAA,CA/pBO,CAASl8K,IAoqBnB88K,EAAezlW,SAAQ,SAAAkM,GACrB,IAAMi+V,EAAa,YAAcj+V,EACjClQ,OAAOC,eAAe4oW,EAAKxqW,UAAW6R,EAAM,CAC1CshB,IAAG,WACD,OAAO/vB,KAAK0sW,EACd,EACAz9U,IAAG,SAACxwB,GACEA,IAAUuB,KAAK0sW,KACjB1sW,KAAK0sW,GAAcjuW,EACnBuB,KAAK4oW,YAAa,EAEtB,GAEJ,IAIA,IAAI+D,GAAe,EAoBnB,OAnBApuW,OAAOC,eAAe4oW,EAAKxqW,UAAW,SAAU,CAC9CmzB,IAAG,WACD,OAAO/vB,KAAK4sW,kBACd,EACA39U,IAAG,SAAC7tB,GACFpB,KAAK4sW,mBAAqBxrW,EACrBurW,IACH54V,QAAQk/C,KAAK,gFACb05S,GAAe,GAEbhwW,MAAM0E,QAAQD,IAChBpB,KAAKigW,QAAU,GAAHx+V,OAAuB,MAAfL,EAAI,IAAM,GAAQ,KACtCpB,KAAKmgW,QAAU,GAAH1+V,OAAuB,MAAfL,EAAI,IAAM,GAAQ,MAEtCpB,KAAKigW,QAAUjgW,KAAKmgW,QAAU,CAElC,IAGKiH,CACT,CAtxB2B,GAi0BP,IAAIrmT,QAsEE,IAAIA,QCn5F9B,SAAS6tP,GAAmBC,EAAMC,GAAiC,IAA3Bj8O,EAAK5yD,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,SAACjE,EAAGuK,GAAC,OAAKvK,IAAMuK,CAAC,EAC/D,GAAIsoS,IAASC,EAAM,OAAO,EAC1B,IAAKD,IAASC,EAAM,OAAO,EAC3B,IAAM9iS,EAAM6iS,EAAKj3S,OACjB,GAAIk3S,EAAKl3S,SAAWoU,EAAK,OAAO,EAEhC,IAAK,IAAItP,EAAI,EAAGA,EAAIsP,EAAKtP,IAAK,IAAKm2D,EAAMg8O,EAAKnyS,GAAIoyS,EAAKpyS,IAAK,OAAO,EAEnE,OAAO,CACT,CAEA,IAAMiyS,GAAc,GAEpB,SAASlrK,GAAMzlD,EAAIp8E,GACjB,IADqD,IAA9By4E,EAAOp6E,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAAUk3D,EAAMl3D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAClDkY,EAAA,EAAA42R,EAAoBJ,GAAWx2R,EAAA42R,EAAAn3S,OAAAugB,IAAE,CAA5B,IAAMw5E,EAAKo9M,EAAA52R,GAEd,GAAIy2R,GAAmBhtS,EAAM+vF,EAAM/vF,KAAM+vF,EAAM9+B,OAAQ,CAErD,GAAIwnB,EAAS,OAEb,GAAI97E,OAAO3B,UAAUiB,eAAehB,KAAK80F,EAAO,SAAU,MAAMA,EAAMpwE,MAEtE,GAAIhjB,OAAO3B,UAAUiB,eAAehB,KAAK80F,EAAO,YAAa,OAAOA,EAAMm/K,SAE1E,IAAKz2L,EAAS,MAAMsX,EAAMrY,OAC5B,CACF,CAGA,IAAMqY,EAAQ,CACZ/vF,KAAAA,EACAixD,MAAOsE,EAAOtE,MACdymB,QACA0E,EAAEl+E,WAAC,EAADi0D,EAAInyD,IACL8uC,MAAK,SAAAogO,GAAQ,OAAIn/K,EAAMm/K,SAAWA,CAAQ,IAC1CpgO,MAAK,WACAymB,EAAO63O,UAAY73O,EAAO63O,SAAW,GACvCnvS,YAAW,WACT,IAAM+O,EAAQ+/R,GAAYniS,QAAQmlF,IACnB,IAAX/iF,GAAc+/R,GAAY9gP,OAAOj/C,EAAO,EAC9C,GAAGuoD,EAAO63O,SAEd,IACCr+P,OAAM,SAAApvB,GAAK,OAAIowE,EAAMpwE,MAAQA,CAAK,KAKrC,GAFAotR,GAAY7xS,KAAK60F,IAEZtX,EAAS,MAAMsX,EAAMrY,OAE5B,CAEA,qEC7CM8tR,GAAoBlnV,EAAAA,YAAiB,SAAAlW,EAQxC+T,GAAQ,IAAAiiV,EAAAh2V,EAPTi2V,QAAAA,OAAO,IAAAD,EAAG,SAAQA,EAAAE,EAAAl2V,EAClBm2V,QAAAA,OAAO,IAAAD,EAAG,SAAQA,EAClBrH,EAAI7uV,EAAJ6uV,KACAj7U,EAAQ5T,EAAR4T,SACAivV,EAAU7iW,EAAV6iW,WACAC,EAAM9iW,EAAN8iW,OACGrjW,EAAKwV,GAAAjV,EAAAuU,IAEFi1R,EAAasF,IAAS,SAAAz7R,GAChB,OAAAA,EAAVm2R,UACc,IACTu5D,EAAgDrrV,EAAlCxB,EAAAA,UAAe,kBAAM,IAAI8sV,EAAQ,IAAC,GAAtC,GACjBr2N,EAAsBz2H,EAAAA,SAAc,WAClC,IAAMnZ,EAAI,GACNzP,EAAI,GAQR,OAPA4oB,EAAAA,SAAe3d,QAAQqb,GAAU,SAAAwb,GACV,kBAAVA,GAAuC,kBAAVA,EACtC9hC,GAAK8hC,EAELryB,EAAEjK,KAAKs8B,EAEX,IACO,CAACryB,EAAGzP,EACb,GAAG,CAACsmB,IAAUqvV,EAAAvrV,EAAAi1H,EAAA,GAXPnsC,EAAKyiQ,EAAA,GAAEj6V,EAAIi6V,EAAA,GAuBlB,ODSc,SAACjvR,EAAIp8E,EAAMu1D,GAAWssE,GAAMzlD,EAAIp8E,GAAM,EAAOu1D,EAAO,CCpBlEgiP,EAAQ,kBAAM,IAAI7oQ,SAAQ,SAAAqkB,GAAG,OFo3C/B,SAAoBlvC,EAAmC0yB,GAAU,IAA3C0gT,EAAIpzU,EAAJozU,KAAMgU,EAAUpnV,EAAVonV,WAE1BtS,GAAkB,CAAE1B,KAAAA,EAAMoB,aAFwBx0U,EAAZw0U,aAEEjnV,KAD7BrW,MAAM0E,QAAQwrW,GAAcA,EAAWxvW,KAAK,MAAQ,GAAKwvW,GACpB10T,EAClD,CEv3CmC+0T,CAAY,CAC3CrU,KAAAA,EACAgU,WAAAA,GACCl4S,EAAI,GAAC,GAAE,CAAC,cAAekkS,EAAMgU,IAChC3sV,EAAAA,iBAAsB,WAAW6sV,EAAW5D,MAAK,WAC/C31D,IACIs5D,GAAQA,EAAOC,EACrB,GAAE,IACF7sV,EAAAA,WAAgB,WACd,OAAO,kBAAM6sV,EAAWrrM,SAAS,CACnC,GAAG,CAACqrM,IACgB7sV,EAAAA,cAAoB,YAAazB,GAAS,CAC5Dtc,OAAQ4qW,EACRhvV,IAAKA,EACL86U,KAAMA,EACN7lV,KAAMA,EACNitV,QAASA,EACTE,QAASA,GACR12V,GAAQ+gG,EACb,IC3CM2iQ,GAAa,IAAI/gD,GACjBC,GAAc,IAAI2W,GAMjB,SAASoqC,GAASpjW,GAAgC,IAElDk+B,EAAM07G,GAFwB55I,EAATk5I,UAAwBl5I,EAAb65I,eAGtC,OAAOspN,GAAWnzF,UAAU9xO,EAAIznC,WACjC,CAGO,SAAS4sW,GAAajgD,EAAMlqK,GAClC,QAAa94I,IAATgjT,EAAJ,CAGAA,EAAKr7H,MAAM5a,UAAS,SAAC19J,GAAeA,EAAK4+J,SAAQ5+J,EAAKu8J,YAAa,EAAK,IAExE,IAAAs3L,EAAyCC,GAASngD,GAA1CogD,EAAYF,EAAZE,aAAcn3M,EAAMi3M,EAANj3M,OAAQo3M,EAAMH,EAANG,OAExBC,EAAer3M,EAAOn1J,QAM5BysW,EjCyKD,SAAqBzqN,GACpB,IAAM0qN,EAAQ3qN,GAAWC,GAGzB,MAAO,CAAE2qN,SAFQD,EAAMC,SAEJC,SADFF,EAAME,SAExB,CiC9K8BC,CAAY7qN,GAAnC2qN,EAAQF,EAARE,SAAUC,EAAQH,EAARG,SAMhBA,GADAA,GAAY,IACU7wW,KAAK00J,GAAG,IAC9B,IAAMz1J,EAAIe,KAAKk3J,IAAI25M,GACbzmW,EAAIpK,KAAKm3J,IAAI05M,GACbx6H,EAAiBj9E,EAAOn1J,QAM9B,OALAoyO,EAAewoF,KAAK5/T,GACpBo3O,EAAeyoF,KAAKyxC,EAAanmW,EAAIwmW,EAAW,KAChDv6H,EAAe0oF,MAAM30T,GACrBisO,EAAe/9E,eAAe,IAAMk4M,GAE7B,CAAEn6H,eAAAA,EAAgBo6H,aAAAA,EA5BK,CA6B/B,CA1CArhD,GAAY2hD,iBAAiB,CAAEppW,KAAM,OACrCynT,GAAY4hD,eAAwC,WACpDd,GAAWe,eAAe7hD,IA0C1B,IAAM8hD,IAAiBpyN,EAAAA,GAAAA,KAAA,qBAAmBv0G,MAAO,OAAQu0I,YAAY,OAAOvnJ,QAAS,KAE/E45U,GAAmB,IACnBC,GAAoBC,IAAmBF,GACvCG,GAAoB,IACpBC,GAAmB,IACnBC,GAAoBH,IAiE1B,SAASI,GAAUv1V,GACjB,OAAOlc,KAAK4f,IAAI1D,GAAU,IAC5B,CAEA,SAASo0V,GAASngD,GAEjB,IAAM5iJ,GAAM,IAAId,IAAOkxH,cAAcwyB,EAAKr7H,OAClC70L,EAAastK,EAAbttK,IAAKguC,EAAQs/H,EAARt/H,IAQT6+H,EAAO,EACPH,EAAO,IACXwjJ,EAAKr7H,MAAM5a,UAAS,SAAC19J,GACpB,GAAIA,EAAK4+J,OAGR,IAFA,IAAMs2L,EAAcl1V,EAAKqxJ,SAAS54F,WAAW3S,SAASoe,MAChDypG,EAAY3tK,EAAKqxJ,SAAS54F,WAAW3S,SAASx8D,MAC3CrG,EAAI,EAAGA,EAAIiyW,EAAajyW,IAAK,CACrC,IAAI2K,EAAI+/K,EAAe,EAAJ1qL,EAAS,GAC5BqtK,EAAO9sK,KAAKC,IAAI6sK,EAAM1iK,GACtBuiK,EAAO3sK,KAAKiuC,IAAI0+H,EAAMviK,EACvB,CAEF,IACA0iK,EAAO9sK,KAAK83J,MAAW,IAALgV,GAAY,IAE9B,IAAM6kM,EAAkB,IAAI9nM,GAAQ7pK,KAAKiuC,IAAIA,EAAIhvC,EAAGgB,EAAIhB,GAAI0tK,EAAM3sK,KAAKiuC,KAAKA,EAAI5jC,GAAIpK,EAAIoK,IAClFkmW,EAAe,IAAI1mM,GAAQ7pK,KAAKC,IAAIguC,EAAIhvC,EAAGgB,EAAIhB,GAAI6tK,EAAM9sK,KAAKC,KAAKguC,EAAI5jC,GAAIpK,EAAIoK,IAOrFkmW,EAAazxC,KAAKyxC,EAAanmW,EAAI,MAGnC,IAAMk+C,EAAO,IAAIuhH,GACjBvhH,EAAKm2G,KAAK8xM,GACVjoT,EAAKujH,IAAI8lM,GAGT,IAAMnB,EAASxwW,KAAKC,IAAIqoD,EAAKrpD,EAAGqpD,EAAKl+C,EAAGk+C,EAAKj+C,GAEvC+uJ,EAAS,IAAIyQ,GAUnB,OATAzQ,EAAOw4M,YAAYD,EAAiBpB,EAAc,IAClDn3M,EAAO2lK,MAAM3lK,EAAO/uJ,GAQb,CAAEsnW,gBAAAA,EAAiBpB,aAAAA,EAAcjoT,KAAAA,EAAM8wG,OAAAA,EAAQo3M,OAAAA,EAAwBqB,GALnE,IAAIhoM,GAAQvhH,EAAKrpD,EAAG,EAAG,GAKgD6yW,GAJvE,IAAIjoM,GAAQ,EAAGvhH,EAAKl+C,EAAG,GAIoD2nW,GAH3E,IAAIloM,GAAQ,EAAG,GAAIvhH,EAAKj+C,GAIpC,CAEA,IAAM2nW,IAAqBlzN,EAAAA,GAAAA,KAAA,qBAAmB+vJ,OAAO,WAAWtkQ,MAAO,OAAQ45I,UAAW,IAuB1F,SAAS/yE,GAAK6gQ,GACb,IAAMjlM,EAAS,CAAC,IAAInD,GAAQ,EAAG,EAAG,GAAIooM,GACrC,OAAO,IAAIxpL,IAAiBnZ,cAActC,EAC5C,CAEA,SAASklM,GAAU5vS,GAClB,IAIM0qG,EAAS,GAgBf,OAfAA,EAAOntK,KAAK,IAAIgqK,GAAQ,EAAG,EAAG,IAC9BmD,EAAOntK,KAAK,IAAIgqK,IAND,EACD,GAK0B,IACxCmD,EAAOntK,KAAK,IAAIgqK,IAAQ,GAAW,EAAG,IACtCmD,EAAOntK,KAAK,IAAIgqK,IAAQ,GAAW,EAAG,IACtCmD,EAAOntK,KAAK,IAAIgqK,IATD,GACD,GAQ2B,IACzCmD,EAAOntK,KAAK,IAAIgqK,GAAQ,EAAG,EAAG,IAG9BmD,EAAO1tK,KAAI,SAAAyK,GAAC,OAAIA,EAAEuuJ,eAXJ,IAWyB,IAEnCh2F,EAASj4D,EAAI,GAAI2iK,EAAO1tK,KAAI,SAAAyK,GAAC,OAAIA,EAAEooW,eAAe,IAAItoM,GAAQ,EAAG,EAAG,GAAI7pK,KAAK00J,GAAG,EAAE,KAClFpyF,EAASl4D,EAAI,GAAKk4D,EAASj4D,EAAI,IAAI2iK,EAAO1tK,KAAI,SAAAyK,GAAC,OAAIA,EAAEooW,eAAe,IAAItoM,GAAQ,EAAG,EAAG,GAAI7pK,KAAK00J,GAAG,EAAE,IACxGsY,EAAO1tK,KAAI,SAAAyK,GAAC,OAAIA,EAAEolB,IAAImzC,EAAS,KAEjB,IAAImmH,IAAiBnZ,cAActC,EAElD,CAEA,SAASj3J,GAAKusD,EAAU9gE,EAAOwhW,GAC9B,OACCnkN,EAAAA,GAAAA,MAACsrN,GAAI,CAAC7nS,SAAUA,EAAU0gS,QAASA,EAASE,QAAQ,SAAStkN,SAAU,IAAKr0G,MAAM,QAAQjT,WAAY,GAAG3W,SAAA,CACvG3gB,KAAK83J,MAAyB,IAAnBt2J,EAAMgC,YAAqB,GAAG,OAG7C,CC3Oe,SAAS4uW,GAAqBrlW,GAAqD,IAAlD/Q,EAAM+Q,EAAN/Q,OAAQiqJ,EAASl5I,EAATk5I,UAAWosN,EAA0BtlW,EAA1BslW,2BAClE/hP,GAA4CpvE,EAAAA,EAAAA,YAAWqvE,KAA/CC,EAAWF,EAAXE,YAAaC,EAAkBH,EAAlBG,mBACbm2B,GAAkB1lG,EAAAA,EAAAA,YAAW+mG,KAA7BrB,cACA0rN,GAAgBpxT,EAAAA,EAAAA,YAAWqxT,KAA3BD,YACoC7mO,EAAAhnH,GAAhBi9B,EAAAA,EAAAA,UAAS,QAAO,GAArCvwC,EAAMs6H,EAAA,GAAE+mO,EAAS/mO,EAAA,GAClB3qH,EAAgC,OAA1BuxV,QAA0B,IAA1BA,OAA0B,EAA1BA,EAA4Bh2U,QAEQknH,EAAA9+H,GAAVi9B,EAAAA,EAAAA,YAAU,GAAzC+wT,EAAWlvN,EAAA,GAAEmvN,EAAcnvN,EAAA,GACAovN,EAAAluV,GAAVi9B,EAAAA,EAAAA,YAAU,GAA3ByuQ,EAAIwiD,EAAA,GAAEC,EAAOD,EAAA,GAC0BE,EAAApuV,GAAVi9B,EAAAA,EAAAA,YAAU,GAAvCoxT,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GACMG,EAAAvuV,GAAVi9B,EAAAA,EAAAA,YAAU,GAA/BuxT,EAAMD,EAAA,GAAEE,EAASF,EAAA,GAC0CG,EAAA1uV,GAAdi9B,EAAAA,EAAAA,WAAS,GAAK,GAA3D0xT,EAAkBD,EAAA,GAAEE,EAAqBF,EAAA,GAEMG,EAAA7uV,GAAVi9B,EAAAA,EAAAA,YAAU,GAA/C20L,EAAci9H,EAAA,GAAEC,EAAiBD,EAAA,GACUE,EAAA/uV,GAAVi9B,EAAAA,EAAAA,YAAU,GAA3C+uT,EAAY+C,EAAA,GAAEC,EAAeD,EAAA,GAE9BE,GAAcjyT,EAAAA,EAAAA,QAAO,MAoF3B,OAlFAN,EAAAA,EAAAA,YAAU,WACTkyT,GAAsB,EAEvB,GAAG,KAGHlyT,EAAAA,EAAAA,YAAU,WACTuxT,EChCK,SAAkBzsN,EAAWW,GACnC,IAAM+sN,EAAa,SACbC,EAAiB,IAGnBC,EAAsB,CAAC,EAAG,EAAG,GAC7BC,GAAuB,GAAX9zW,KAAK00J,GACjBq/M,EAAsB,CAAC,EAAG,IAAe,GACzC7uK,EAAgB,IAChB8uK,EAAgB,GAYpB,OARI1tN,GAAqBL,SAAgC94I,IAAlBy5I,IACtCitN,EAAsB,CAAC,EAAG,GAAIjtN,EAAwB,SAAI,IAAM,MAChEktN,EAAsB,EAAV9zW,KAAK00J,GACjBq/M,EAAsB,CAAC,EAAG,GAAiB,KAC3C7uK,EAAgB,IAChB8uK,EAAgB,MAIhBn1N,EAAAA,GAAAA,MAAA6E,GAAAA,SAAA,CAAA/iI,SAAA,EAECm+H,EAAAA,GAAAA,KAAA,gBAAcv0G,MAAO,SAAU2kL,UAAW,MAC1CpwE,EAAAA,GAAAA,KAAA,oBACCx8E,SAAU,CAAC,IAAe,IAAe,KACzC/3B,MAAOopU,EACPzkJ,UAAW0kJ,KAEZ90N,EAAAA,GAAAA,KAAA,oBACCx8E,SAAU,CAAC,IAAe,KAAe,KACzC/3B,MAAOopU,EACPzkJ,UAAW0kJ,KAEZ90N,EAAAA,GAAAA,KAAA,oBACCx8E,SAAU,EAAC,IAAgB,IAAe,KAC1C/3B,MAAOopU,EACPzkJ,UAAW0kJ,KAEZ90N,EAAAA,GAAAA,KAAA,oBACCx8E,SAAU,EAAC,IAAgB,KAAe,KAC1C/3B,MAAOopU,EACPzkJ,UAAW0kJ,KAGZ90N,EAAAA,GAAAA,KAAA,oBACCx8E,SAAU,EAAC,IAAgB,EAAG,IAC9B/3B,MAAOopU,EACPzkJ,UAAW0kJ,SAGZ90N,EAAAA,GAAAA,KAAA,oBAAkBx8E,SAAU,CAAC,GAAI,EAAG,GAAI/3B,MAAOopU,EAAYzkJ,UAAW0kJ,QAGrErtN,GAAUN,KACVpH,EAAAA,GAAAA,MAAA,QAAM,aAAYi1N,EAAW96L,eAAe,EAAM12G,SAAUuxS,EAAoBlzV,SAAA,EAC/Em+H,EAAAA,GAAAA,KAAA,uBAAqBz8I,KAAM,CAAC,IAAK,QAEjCy8I,EAAAA,GAAAA,KAAA,kBAAgBvnH,QAASy8U,QAM3Bl1N,EAAAA,GAAAA,KAAA,oBACCx8E,SAAUyxS,EACVxpU,MAAOopU,EACPzkJ,UAAW,IACXn2C,YAAU,EACV,wBAAuBmsB,EACvB,uBAAsBA,EACtB,sBAAqB,EACrB,sBAAqB,EACrB,qBAAoB,EACpB,uBAAsB,MAI1B,CD/CiB+uK,CAAShuN,EAAWW,GACpC,GAAG,CAACX,EAAWW,KAGfzlG,EAAAA,EAAAA,YAAU,WACT,GAA0C,IAAtC7/C,OAAOqD,KAAKiiJ,GAAejsJ,OAA/B,CAGA81H,EAAmB,kBAAkB,GACrC,IACMi2B,EAAS5kI,EAAAA,EAAA,GADAgvC,KAAK4yC,MAAM5yC,KAAKC,UAAU61F,KACP0rN,GAElCnC,GADc,CAAElqN,UAAAA,EAAWW,cAAeF,IACzBjzG,MAAK,SAAChqC,GAAC,OAAKmpW,EAAQnpW,EAAE,GAPY,CASpD,GAAG,CAACm9I,EAAe0rN,KAEnBnxT,EAAAA,EAAAA,YAAU,WAAO,IAAD+yT,EAAAC,EACf,GAAKhkD,EAAL,CAEA1/L,EAAmB,kBAAkB,GACrC4iP,GAAsB,GAEtB,IAAMvC,EAAcV,GAAajgD,EAAMlqK,GACvCstN,EAA6B,OAAXzC,QAAW,IAAXA,GAA2B,QAAhBoD,EAAXpD,EAAaz6H,sBAAc,IAAA69H,OAAhB,EAAXA,EAA6B5pR,WAC/CmpR,EAA2B,OAAX3C,QAAW,IAAXA,GAAyB,QAAdqD,EAAXrD,EAAaL,oBAAY,IAAA0D,OAAd,EAAXA,EAA2B7pR,UAP1B,CASlB,GAAG,CAAC6lO,KAEJhvQ,EAAAA,EAAAA,YAAU,WACJgvQ,KAGL9kO,EAAAA,EAAAA,kBAAgB,WACf0nR,EDwHI,SAA2B5iD,EAAMlqK,EAAWmuN,GAGlD,IAAKA,EAAgB,OAAO,KAE5B,IAAAC,EAA4C/D,GAASngD,GAA9CwhD,EAAe0C,EAAf1C,gBAAiBrpT,EAAI+rT,EAAJ/rT,KAAMupT,EAAEwC,EAAFxC,GAAIC,EAAEuC,EAAFvC,GAAIC,EAAEsC,EAAFtC,GAEtC,OACClzN,EAAAA,GAAAA,MAAA,SAAOv8E,SAAUqvS,EAAgBhxV,SAAA,EAChCm+H,EAAAA,GAAAA,KAAA,QAAM+uB,SAAUz8D,GAAKygQ,GAAIlxV,SAAEqxV,MAC3BlzN,EAAAA,GAAAA,KAAA,QAAM+uB,SAAUz8D,GAAK0gQ,GAAInxV,SAAEqxV,MAC3BlzN,EAAAA,GAAAA,KAAA,QAAM+uB,SAAUz8D,GAAK2gQ,GAAIpxV,SAAEqxV,KAC1Bj8V,GAAK87V,EAAIvpT,EAAKrpD,EAAG,UACjB8W,GAAK+7V,EAAIxpT,EAAKl+C,EAAG,UACjB2L,GAAKg8V,EAAIzpT,EAAKj+C,EAAG,UAClBy0I,EAAAA,GAAAA,KAAA,QAAM+uB,SAAUqkM,GAAUL,GAAIlxV,SAAEqxV,MAChClzN,EAAAA,GAAAA,KAAA,QAAM+uB,SAAUqkM,GAAUJ,GAAInxV,SAAEqxV,MAChClzN,EAAAA,GAAAA,KAAA,QAAM+uB,SAAUqkM,GAAUH,GAAIpxV,SAAEqxV,OAGnC,CC5IiBsC,CAAkBnkD,EAAMlqK,EAAWz1B,EAAY4jP,gBAC9D,KACA/oR,EAAAA,EAAAA,kBAAgB,WACf6nR,EDRI,SAAuB/iD,EAAMlqK,EAAWsuN,GAC9C,IAAKA,EAAY,OAAO,KAExB,IAAAC,EAAsBlE,GAASngD,GAAvB/2J,EAAMo7M,EAANp7M,OAAQxtG,EAAC4oT,EAAD5oT,EACV9yC,EAAW,IAAI+wJ,GAAQzQ,EAAOklF,aAAa,GAAI,EAAG1yL,EAAE0yL,aAAa,GAAKgzH,IAE5E,OACCzyN,EAAAA,GAAAA,MAAA,SAAOv8E,SAAUxpD,EAAS6H,SAAA,EAEzBm+H,EAAAA,GAAAA,KAACssL,GAAQ,CAAC/oU,KAAM,CAACkvW,GAAqC,GAAnBA,GAAuBC,GAAmB,IAAKlvS,SAAU,CAAC,EAAGkvS,GAAoB,EAAG,GAAG7wV,SACxHuwV,MAGFpyN,EAAAA,GAAAA,KAACssL,GAAQ,CAAC/oU,KAAM,CAACivW,GAAmBA,GAAmBF,GAAoB,IAAS,IAAK9uS,SAAU,CAAC,EAAGkvS,GAAoBJ,GAAoB,EAAG,GAAGzwV,SACnJuwV,MAGFpyN,EAAAA,GAAAA,KAACmxB,GAAM,CAAC5tK,KAAM,CAAC8uW,GAAkB,GAAI,IAAK7uS,SAAU,CAAC,EAAGkvS,GAAoBJ,GAAoBD,GAAmB,EAAS,GAAGxwV,SAC7HuwV,OAIL,CCdauD,CAActkD,EAAMlqK,EAAWz1B,EAAYkkP,mBACtD,IAED,GAAG,CAACvkD,EAAM3/L,KAEVrvE,EAAAA,EAAAA,YAAU,WACT,IASMujQ,EAAiB,IAAIH,gBATH,WACvB,GAAIvoT,EAAQ,CACX,IAAM63U,EAAS,GAAArvU,OAAM4B,OAAO81G,aAAiB,OAAHp7F,QAAG,IAAHA,OAAG,EAAHA,EAAK+qD,cAAY,MAC3D2mS,EAAU3+B,EACX,MACC2+B,EAAU,OAEZ,IASA,OALI1xV,GACH4jS,EAAe/5L,QAAQ7pG,GAIjB,WACFA,GACH4jS,EAAeiwD,UAAU7zV,EAE3B,CACD,GAAG,CAAC9kB,EAAQ8kB,KAEZqgC,EAAAA,EAAAA,YAAU,WAAO,IAADyzT,EACf,GAAe,OAAXlB,QAAW,IAAXA,GAAoB,QAATkB,EAAXlB,EAAar3U,eAAO,IAAAu4U,GAApBA,EAAsB1vW,OAAQ,CACjC,IAAMylK,EAAS+oM,EAAYr3U,QAAQn3B,OACnCylK,EAAOroG,SAASrjE,GAAKuxH,EAAY54F,KACjC+yI,EAAOroG,SAASl4D,GAAKomH,EAAY54F,KACjC+yI,EAAOroG,SAASj4D,GAAKmmH,EAAY54F,KACjC87U,EAAYr3U,QAAQgqI,QACrB,CACD,GAAG,CAAC71C,EAAY54F,QAGfinH,EAAAA,GAAAA,MAAA6E,GAAAA,SAAA,CAAA/iI,SAAA,EACCm+H,EAAAA,GAAAA,KAAA,KACC99H,UAAU,kBACV5T,MAAO,CACNynW,WAAYzB,EAAqB,UAAY,SAC7Ct6N,OAAQ3pB,GAAO,IAAM,eACpBxuG,SACF,eAIAwvS,GAAQ95E,IACRx3F,EAAAA,GAAAA,MAACgoK,GACA,CACA7lS,UAAU,gBACV2uC,GAAI,CAAE+7K,WAAW,GACjBqqE,QAAM,EACNwE,MAAI,EACJ9vF,SAAS,EACT9/C,OAAQ,CAAEroG,SAAU+zK,EAAgBrjD,IAAK7jE,GAAO,GAAK,IACrD/hH,MAAO,CACNvI,OAAO,QAADL,OAAqB,OAAXgsH,QAAW,IAAXA,GAAAA,EAAaskP,eAAiB,EAAI,EAAC,OACnD3jW,OAAAA,GACCwP,SAAA,EAEFm+H,EAAAA,GAAAA,KAACkoK,GAAa,CAAClmS,IAAK4yV,EAAapvW,OAAQmsW,EAAcnlD,UAAW,IAAMe,YAAal9L,KACpFsjP,GACD3zN,EAAAA,GAAAA,KAAA,aAAW55I,OAAQirT,EAAKr7H,QACvBg+K,EACAG,OAMN,uGE/IahqN,GAAO,OACPE,GAAQ,QACR89J,GAAK,KACL8tD,GAAO,OCiCd3tW,GAAqC,CACzCjH,MAAO,GACP60W,sBAAsB,EACtBC,cAAe,EACfC,YAAY,EACZC,YAAY,EACZC,cAAelpT,IACfmpT,kBAAmB,CAAE3jU,SAAS,IAE1B4jU,GAA+B,CACnC76V,OAAO,EACP86V,QAAS,CAAC,EAAG,GACb1nU,MAAO,EACP2nU,SAAS,EACT/xM,GAAI,CAAC,EAAG,IAEJgyM,GAAY,YACZC,GAAU,UACVC,GAAW,WACXC,GAAY,YACZC,GAAa,aAmBnB,SAASC,GAAgBjiO,EAAc8kB,GACrC,GAAc,IAAVA,EAAa,OAAO9kB,EACxB,IAAMkiO,EAAkB/1W,KAAK00J,GAAK,IAAOiE,EAKzC,MAAO,CAHL9kB,EAAI,GAAK7zI,KAAKk3J,IAAI6+M,GAAkBliO,EAAI,GAAK7zI,KAAKm3J,IAAI4+M,GAEtDliO,EAAI,GAAK7zI,KAAKk3J,IAAI6+M,GAAkBliO,EAAI,GAAK7zI,KAAKm3J,IAAI4+M,GAE1D,CAEA,SAASC,GACPhkV,EACAikV,GAQA,IAAM1lS,EAAU,SAACjlC,GACf,IAAM4qU,EAAU,YAAa5qU,EAEzB4qU,GAAW5qU,EAAMxC,QAAQnuC,OAAS,GAEtCq3B,GAAI,SAACrP,EAAOnW,GAENA,EAAM0oW,aAAegB,IACvB7vW,SAASM,iBAAiB8uW,GAAWU,GACrC9vW,SAASM,iBAAiB+uW,GAASU,IAErC,MAA6BF,EAAU5qU,EAAMxC,QAAQ,GAAKwC,EACpDm4H,EAAKqyM,GAAgB,CADZ,EAAPlxU,QAAgB,EAAPC,SAC8Br4B,EAAMyoW,eAKrD,OAHAzoW,EAAM6pW,2BACJ7pW,EAAM6pW,0BAA0B,CAAE/qU,MAAAA,IAE7B,OAAP,sCACK3oB,GACA2yV,IAAY,CACfC,QAAS9xM,EAAG9vJ,QACZ8vJ,GAAAA,EACA51H,MAAOvC,EAAMpH,WAAa,QAK1BiyU,EAAS,SAAC7qU,GACdtZ,GAAI,SAACrP,EAAOnW,GACV,IAAM0pW,EAAU,YAAa5qU,EAG7B,GAAI4qU,GAAW5qU,EAAMxC,QAAQnuC,OAAS,EACpC,OAAOgoB,EAIT,GAAI2oB,EAAMpH,UAAYvhB,EAAMkrB,MAAQrhC,EAAM4oW,cACxC,OAAOzyV,EAAM6yV,QAAU,OAAH,wBAAQ7yV,GAAK,CAAE6yV,SAAS,IAAU7yV,EAGxD,MAA6BuzV,EAAU5qU,EAAMxC,QAAQ,GAAKwC,EACagrU,EAAAA,EAAxDR,GAAgB,CADhB,EAAPlxU,QAAgB,EAAPC,SACkCr4B,EAAMyoW,eAAcqB,GAAhEr3W,EAAC,KAAEmL,EAAC,KACL++B,EAASlqC,EAAI0jB,EAAM8gJ,GAAG,GACtBp6H,EAASj/B,EAAIuY,EAAM8gJ,GAAG,GACtB8yM,EAAOv2W,KAAK4f,IAAIupB,GAChBqtU,EAAOx2W,KAAK4f,IAAIypB,GAChB2B,GAAQM,EAAMpH,WAAa,GAAKvhB,EAAMkrB,MACtC4oU,EAAWz2W,KAAK04J,KAAK69M,EAAOA,EAAOC,EAAOA,IAASxrU,GAAQ,GAC3D0rU,EAAgB,CAACvtU,GAAU6B,GAAQ,GAAI3B,GAAU2B,GAAQ,IAEzDy+H,EAxFZ,SACE8sM,EACAC,EACArtU,EACAE,GAEA,OAAIktU,EAAOC,EACLrtU,EAAS,EACJggH,GAEFF,GACE5/G,EAAS,EACX0rU,GAEF9tD,EACT,CAyEkB0vD,CAAaJ,EAAMC,EAAMrtU,EAAQE,GAGvClpC,EACmB,kBAAhBqM,EAAMrM,MACTqM,EAAMrM,MACNqM,EAAMrM,MAAMspK,EAAI1uK,gBAChBqM,GAAajH,MACnB,GAAIo2W,EAAOp2W,GAASq2W,EAAOr2W,IAAUwiB,EAAM6yV,QAAS,OAAO7yV,EAE3D,IAAMi0V,EAAY,CAChBL,KAAAA,EACAC,KAAAA,EACArtU,OAAAA,EACAE,OAAAA,EACAogI,IAAAA,EACAn+H,MAAAA,EACA7wB,MAAOkI,EAAMlI,MACb86V,QAAS5yV,EAAM4yV,QACfkB,SAAAA,EACAC,KAAAA,GAIFE,EAAUn8V,OAASjO,EAAMqqW,cAAgBrqW,EAAMqqW,aAAaD,GAG5DpqW,EAAMsqW,WAAatqW,EAAMsqW,UAAUF,GAInC,IAAIG,GAAsB,EAkB1B,OAhBEvqW,EAAMsqW,WACNtqW,EAAMwqW,UACNxqW,EAAM,WAAD,OAAYi9J,OAEjBstM,GAAsB,GAItBA,GACAvqW,EAAMwoW,sBACNxoW,EAAM2oW,YACN7pU,EAAMrH,YAENqH,EAAM9H,iBAGD,OAAP,wBACK7gB,GAAK,CAERlI,OAAO,EACPm8V,UAAAA,EACApB,SAAS,QAKT9mD,EAAQ,SAACpjR,GACbtZ,GAAI,SAACrP,EAAOnW,GACV,IAAIoqW,EACJ,GAAIj0V,EAAM6yV,SAAW7yV,EAAMi0V,WAEzB,GAAItrU,EAAMpH,UAAYvhB,EAAMkrB,MAAQrhC,EAAM4oW,cAAe,CACvDwB,EAAY,OAAH,wBAAQj0V,EAAMi0V,WAAS,CAAEtrU,MAAAA,IAClC9+B,EAAMwqW,UAAYxqW,EAAMwqW,SAASJ,GAEjC,IAAMK,EACJzqW,EAAM,WAAD,OACQoqW,EAAUntM,MAEzBwtM,GAAeA,EAAYL,SAG7BpqW,EAAM0qW,OAAS1qW,EAAM0qW,MAAM,CAAE5rU,MAAAA,IAK/B,OAFA9+B,EAAM2qW,uBAAyB3qW,EAAM2qW,sBAAsB,CAAE7rU,MAAAA,IAEtD,OAAP,sCAAY3oB,GAAU2yV,IAAY,CAAEsB,UAAAA,QAIlCQ,EAAe,WAEnB/wW,SAAS40B,oBAAoBw6U,GAAWU,GACxC9vW,SAAS40B,oBAAoBy6U,GAASU,IAGlCA,EAAO,SAAC/sW,GACZ+tW,IACA1oD,EAAMrlT,IAeFguW,EAA2B,SAAC5nT,EAAIjjD,GACpC,IAAI8qW,EAAU,aACd,GAAI7nT,GAAMA,EAAG9oD,iBAAkB,CAC7B,IAAM4wW,EAAc,OAAH,wBACZnwW,GAAaiuW,mBACb7oW,EAAM6oW,mBAGLmC,EAIA,CACJ,CAAC3B,GAAYtlS,EAASgnS,GAEtB,CACE3B,GACAO,EAAM,+BAEDoB,GACC/qW,EAAMwoW,qBAAuB,CAAEtjU,SAAS,GAAU,CAAC,IAG3D,CAACikU,GAAUjnD,EAAO6oD,IAEpBC,EAAIlyW,SAAQ,yBAAE+D,EAAC,KAAEK,EAAC,KAAE6T,EAAC,YAAMkyC,EAAG9oD,iBAAiB0C,EAAGK,EAAG6T,EAAE,IAEvD+5V,EAAU,kBAAME,EAAIlyW,SAAQ,yBAAE+D,EAAC,KAAEK,EAAC,YAAM+lD,EAAGx0B,oBAAoB5xB,EAAGK,EAAE,GAAC,EAEvE,OAAO4tW,GA4BH11R,EAA8D,CAClE9gE,IA1BY,SAAC2uC,GAGF,OAAPA,GACJz9B,GAAI,SAACrP,EAAOnW,GAEV,GAAImW,EAAM8sC,KAAOA,EAAI,OAAO9sC,EAE5B,IAAM80V,EAA0C,CAAC,EAYjD,OAVI90V,EAAM8sC,IAAM9sC,EAAM8sC,KAAOA,GAAM9sC,EAAM+0V,eACvC/0V,EAAM+0V,eACND,EAASC,kBAAe,GAGtBlrW,EAAM2oW,YAAc1lT,IACtBgoT,EAASC,aAAeL,EAAY5nT,EAAIjjD,IAInC,OAAP,sCAAYmW,GAAK,CAAE8sC,GAAAA,IAAOgoT,QAc9B,OAJIxB,EAAaf,aACftzR,EAAOpb,YAAc+J,GAGhB,CAACqR,EAAQy1R,EAClB,UA8CgBM,GAAa3zW,GAC3B,IAkBI4zW,EAlBI1C,EAAelxW,EAAfkxW,WACF2C,EAAiB50V,EAAAA,OAAa,OAAD,UAAMqyV,KACnCwC,EAAiB70V,EAAAA,OAAY,iBAC9B7b,KAIC2wW,EAAgB90V,EAAAA,OAAY,iBAC7B60V,EAAez7U,UAWpB,IAAKu7U,KATLG,EAAc17U,QAAU,OAAH,UAAQy7U,EAAez7U,SAG5Cy7U,EAAez7U,QAAU,OAAH,wBACjBj1B,IACApD,GAIcoD,QAC0B,IAAvC0wW,EAAez7U,QAAQu7U,KACxBE,EAAez7U,QAAQu7U,GAAsBxwW,GAAawwW,IAI/D,IAWC5H,EAAAA,EAX+B/sV,EAAAA,SAC9B,kBACE+yV,IACE,SAACgC,GAAW,OACTH,EAAex7U,QAAU27U,EACxBH,EAAex7U,QACfy7U,EAAez7U,QAChB,GACH,CAAE64U,WAAAA,GACH,GACH,CAACA,IACFlF,GAXM/9F,EAAQ,KAAEolG,EAAW,KAoB5B,OAPAQ,EAAex7U,QAnFjB,SACE1Z,EACAnW,EACAurW,EACAV,GAGA,OAAK7qW,EAAM2oW,YAAexyV,EAAM8sC,GAY3B9sC,EAAM+0V,aAWTlrW,EAAMwoW,uBAAyB+C,EAAc/C,sBAC7CxoW,EAAM6oW,kBAAkB3jU,UAAYqmU,EAAc1C,kBAAkB3jU,SAEpE/uB,EAAM+0V,eAEC,OAAP,wBACK/0V,GAAK,CACR+0V,aAAcL,EAAY10V,EAAM8sC,GAAIjjD,MAIjCmW,EArBE,OAAP,wBACKA,GAAK,CACR+0V,aAAcL,EAAY10V,EAAM8sC,GAAIjjD,MAdlCmW,EAAM+0V,cACR/0V,EAAM+0V,eAGD,OAAP,wBACK/0V,GAAK,CACR+0V,kBAAcvqW,IA4BpB,CAyC2B8qW,CACvBJ,EAAex7U,QACfy7U,EAAez7U,QACf07U,EAAc17U,QACdg7U,GAGKplG,CACT,CCtYe,SAASimG,GAAWnrW,GAAiE,IAA9DorW,EAAMprW,EAANorW,OAAQlyN,EAASl5I,EAATk5I,UAAWmyN,EAAcrrW,EAAdqrW,eAAgBC,EAAsBtrW,EAAtBsrW,uBACxE/nP,GAA4CpvE,EAAAA,EAAAA,YAAWqvE,KAA/CC,EAAWF,EAAXE,YAAaC,EAAkBH,EAAlBG,mBACrB6nP,GAA4Cp3T,EAAAA,EAAAA,YAAW+mG,KAA/CrB,EAAa0xN,EAAb1xN,cAAe2xN,EAAgBD,EAAhBC,iBAE2B9sO,EAAAhnH,GAAVi9B,EAAAA,EAAAA,YAAU,GAA3C82T,EAAY/sO,EAAA,GAAEgtO,EAAehtO,EAAA,GACc8X,EAAA9+H,GAAVi9B,EAAAA,EAAAA,YAAU,GAA3Cg3T,EAAYn1N,EAAA,GAAEo1N,EAAep1N,EAAA,GACcovN,EAAAluV,GAAVi9B,EAAAA,EAAAA,YAAU,GAA3Ck3T,EAAYjG,EAAA,GAAEkG,EAAelG,EAAA,GAGuBmG,EAAAr0V,GAAvB+8B,EAAAA,EAAAA,aAKpC,SAAiB7+B,EAAOy7B,GACvB,OAAAt8B,EAAAA,EAAA,GACIa,GAAK,GAAAjE,EAAA,GACP0/B,EAAOz2C,KAAOy2C,EAAO3X,MAExB,GAVwD,CAAC,GAAE,GAApDsyU,EAAeD,EAAA,GAAEt6T,EAAQs6T,EAAA,GAE1BE,EAAiB,SAWvB73T,EAAAA,EAAAA,YAAU,WAIT,IAAMlW,EAAM67G,GAAUb,GACtB2tH,MAAM3oO,GACJwI,MAAK,SAACogO,GAAQ,OAAKA,EAAS99P,MAAM,IAClC09B,MAAK,SAACwpB,GAAM,OAAKw7S,EAAgBx7S,EAAO,IAE1Cg8S,EAAad,EAAOpvL,OAAO,GAE5B,GAAG,CAAC9iC,IAGJ,IAAyD4sN,EAAApuV,GAAfi9B,EAAAA,EAAAA,WAAS,GAAM,GAAlDw3T,EAAarG,EAAA,GAAEsG,EAAgBtG,EAAA,GAsCtC,SAASuG,EAAc9xN,EAAW9lJ,GACjCg9C,EAAS,CAAE72C,KAAM2/I,EAAW7gH,KAAMjlC,GACnC,CAGA,SAASy3W,EAAazuQ,GAKrB,IAAM6uQ,EAAWX,IAAiBluQ,EAAM8uQ,UAAY,KAAO9uQ,EAAM8uQ,UACjEX,EAAgBU,GAChBE,EAA0B,OAAbF,EAAoB7uQ,EAAMvtC,OAAO,GAAK,MACnDo7S,GAAuB,EACxB,CAGA,SAASkB,EAAajgV,GAErBu/U,EAAqB,OAALv/U,QAAK,IAALA,OAAK,EAALA,EAAOguH,UACxB,CAMA,SAASkyN,EAAYlyN,EAAW9lJ,GAC/B43W,EAAc9xN,EAAW9lJ,GAJzB23W,GAAiB,GpCnFZ,SAAkBlzN,EAAW7mD,GACnC0oD,GAAAA,GAAQx8G,MAAM,CACb8S,OAAQ,QACR8e,SAAU+oF,EACV9oF,MAAOiiC,GAET,CoCmFEq6Q,CAASxzN,EAAWqB,EACrB,CAEA,SAASoyN,EAAepgV,GACvBm3F,EAAmB,gBAAiBn3F,EAAMyoD,OAC1C0uC,EAAmB,aAAcsuB,GAASzlH,EAAMp9B,KAAMs0H,EAAYyuB,WAClExuB,EAAmB,kBAAkB,GpCtFhC,SAAkBw1B,EAAW7mD,GACnC0oD,GAAAA,GAAQx8G,MAAM,CACb8S,OAAQ,YACR8e,SAAU+oF,EACV9oF,MAAOiiC,GAET,CoCiFEu6Q,CAAS1zN,EAAW3sH,EAAMguH,UAC3B,CAEA,SAASsyN,EAAYtgV,GACpB,OAAO,IAAIi+F,gBAAgBihP,GAAc1lV,IAAIwG,EAAMguH,UACpD,CAEA,SAASuyN,EAAWvgV,GACnBkgV,EAAYlgV,EAAMguH,UAAWsyN,EAAYtgV,GAC1C,CAEA,SAASwgV,EAASxgV,GACjB,MAA+B,MAAxBA,EAAMygV,aACd,EAtFA54T,EAAAA,EAAAA,YAAU,WAGL+3T,GAAeX,EAAiBQ,GACpCI,GAAiB,EAElB,GAAG,CAACD,KAGJ/3T,EAAAA,EAAAA,YAAU,gBACYh0C,IAAjBqrW,IAKJ,IAAIjhP,gBAAgBihP,GAAclzW,SAAQ,SAAC9D,EAAO+D,GAAG,OAAK6zW,EAAc7zW,EAAK/D,EAAM,IAEnFF,OAAOw0D,QAAQsiT,GAAgB9yW,SAAQ,SAAA8a,GAAA,IAAA8H,EAAAzD,EAAArE,EAAA,GAAY,OAAMg5V,EAAblxV,EAAA,GAAOA,EAAA,GAA+B,IAElFixV,GAAiB,GAClB,GAAG,CAACX,EAAcJ,KAGlBj3T,EAAAA,EAAAA,YAAU,WAGT7/C,OAAOw0D,QAAQ8wF,GAAethJ,SAAQ,SAACovF,GAAK,OAAK0kR,EAAc1kR,EAAM,GAAIA,EAAM,GAAG,GAEnF,GAAG,CAACkyD,KAGJzlG,EAAAA,EAAAA,YAAU,WACTk3T,GAAuB,EAExB,GAAG,CAAC7nP,IAsDJ,IAAMwpP,EAAQ,SAAH5xV,GAAgC,IAA1BkR,EAAKlR,EAALkR,MAAOkgV,EAAWpxV,EAAXoxV,YACvB,OACC16N,EAAAA,GAAAA,KAAA,OAAAn+H,UACCk+H,EAAAA,GAAAA,MAACo7N,GAAiB,CAAAt5V,SAAA,EACjBk+H,EAAAA,GAAAA,MAACq7N,GAAyB,CAACl+W,QAASmzH,GAAKxuG,SAAA,EACxCm+H,EAAAA,GAAAA,KAACq7N,GAAqB,CAAAx5V,SACpBwuG,IAAQ71F,EAAMyoD,QACd+8D,EAAAA,GAAAA,KAACs7N,GAAgB,CAAChyT,QAAS,kBAAMsxT,EAAepgV,EAAM,MAKvD61F,IAEA2vB,EAAAA,GAAAA,KAACu7N,GAAS,CAAA15V,SAAEo+H,GAASzlH,EAAMp9B,KAAMs0H,EAAYyuB,aAG7CH,EAAAA,GAAAA,KAACw7N,GAAiB,CAEjBlyT,QAAS,kBAAMmxT,EAAajgV,EAAM,EAClClsB,MAAO,CACNmtW,YAAajhV,EAAMguH,YAAcsxN,EAAe,QAAU,QACzDj4V,UAEFm+H,EAAAA,GAAAA,KAAC07N,GAAe,CAAA75V,SAAEo+H,GAASzlH,EAAMp9B,KAAMs0H,EAAYyuB,aAN/C,uBAduC,8BA0B5C9vB,IAAQ71F,EAAMguH,YAAcsxN,KAC5B95N,EAAAA,GAAAA,KAAC27N,GAAQ,CAAgBrtW,OAAQ0sW,EAASxgV,IAAU61F,GAAO,CAAEurP,aAAc,OAAU,CAAC,EAAE/5V,SACtFm5V,EAASxgV,IACTwlH,EAAAA,GAAAA,KAAC67N,EAAM,CAAC3+W,QAASmzH,GAAM71F,MAAOA,EAAOxF,aAAcilV,EAAgBz/U,EAAMguH,WAAYkyN,YAAaA,IAC/FrqP,IAEH2vB,EAAAA,GAAAA,KAAC87N,EAAgB,CAACthV,MAAOA,EAAOy/U,gBAAiBA,EAAiBS,YAAaA,KAG/E16N,EAAAA,GAAAA,KAAC+7N,EAAe,CAACvhV,MAAOA,EAAOy/U,gBAAiBA,EAAiBS,YAAaA,KARlE,YAafM,EAASxgV,KACTulH,EAAAA,GAAAA,MAACi8N,GAAgB,CAChB9+W,QAASmzH,GACT/mE,QAAS,kBAAMyxT,EAAWvgV,EAAM,EAChClsB,MAAO,CAAEynW,WAAYkE,EAAgBz/U,EAAMguH,aAAesyN,EAAYtgV,GAAS,SAAW,WAAY3Y,SAAA,CAErG,KACDm+H,EAAAA,GAAAA,KAACsD,GAAuB,CAAC95F,KAAK,SAAU,SAhDpB,sBADdhvB,EAAMp9B,KAuDlB,EAIA,SAAS6+W,EAAiBzhV,EAAOynJ,EAAci6L,EAAiBC,GAI/D,IAAI7tW,EAAQ,CAAEmqB,QAASi5F,EAAYskP,eAAiB,GAAM,GAI1D,OAHI1lP,KAAUhiH,EAAK0U,EAAAA,EAAA,GAAQ1U,GAAU,CAAE8tW,iBAAkB,UACrDD,IAAkB7tW,EAAK0U,EAAAA,EAAA,GAAQ1U,GAAU,CAAEgkK,UAAW,SAEnD,CACNzpK,KAAM,QACNsmC,IAAK3U,EAAM2U,IACXhuC,IAAKq5B,EAAMr5B,IACXwxF,KAAMn4D,EAAMm4D,KACZtvD,GAAI7I,EAAMguH,UACV9lJ,MAAOu/K,EACPt8B,SAAU,SAACp7I,GAAC,OAAK2xW,EAAgB3xW,EAAE/E,OAAO9C,MAAM,EAChDolE,UAAW,kBAAM4yS,EAAYlgV,EAAMguH,UAAWy5B,EAAa,EAC3D3zK,MAAAA,EAEF,CAGA,IAAMutW,EAAS,SAAHryV,GAA8C,IAAxCgR,EAAKhR,EAALgR,MAAOxF,EAAYxL,EAAZwL,aAAc0lV,EAAWlxV,EAAXkxV,YAChC2B,GAAY15T,EAAAA,EAAAA,QAAO,MACqCuxT,EAAAvuV,GAAtBi9B,EAAAA,EAAAA,UAAS5tB,GAAa,GAAvDitJ,EAAYiyL,EAAA,GAAEgI,EAAehI,EAAA,GACSG,EAAA1uV,GAAXi9B,EAAAA,EAAAA,UAAS,GAAE,GAAtC05T,EAASjI,EAAA,GAAEkI,EAAYlI,EAAA,IAE9BhyT,EAAAA,EAAAA,YAAU,WACT,GAAIg6T,EAAU9+U,QAAS,CACtB,IAAQnrB,EAAUiqW,EAAU9+U,QAAQmhF,wBAA5BtsG,MAEFoqW,EAAUnsP,GAAOosP,GAAaC,GAE9Bl5S,GAAay+G,EAAeznJ,EAAM2U,MAAQ3U,EAAMr5B,IAAMq5B,EAAM2U,MAAS/8B,EAAQoqW,GACnFD,EAAa/4S,EAAWg5S,EAAU,EACnC,CACD,GAAG,CAACv6L,EAAcznJ,EAAMr5B,IAAKq5B,EAAM2U,MAInC,IAAMwtU,EAA0B,MAAdniV,EAAMoiV,IAElBC,EAAcZ,EAAiBzhV,EAAOynJ,EAAci6L,EADjCS,GAAatsP,IAOhCysP,EAAejE,GAAa,CAAER,sBAAuB,kBAAMqC,EAAYlgV,EAAMguH,UAAWy5B,EAAa,IAGrG86L,EAAcviV,EAAM+jL,KAAKprL,SAAS,KAClC6pV,EAAY/8N,GAASzlH,EAAM+jL,KAAM7sF,EAAYyuB,UAAUpgJ,MAAM,KAI7Dk9W,EAAY/7W,KAAK83J,MAAqB,GAAfipB,GAAqB,GAE5Ci7L,GACLn9N,EAAAA,GAAAA,MAACo9N,GAAe,CAACjgX,QAASmzH,GAAM+sP,cAAed,EAAUz6V,SAAA,CACvDo7V,EACAziV,EAAM+jL,OAFsD,aAY3D8+J,EAAQL,EAFC,GAITM,EAAQN,EAHC,GAKPO,GAASv9N,EAAAA,GAAAA,KAACw9N,GAAW,CAAA37V,SAAEk7V,GAAeM,IACtCI,EAASV,GAAc/8N,EAAAA,GAAAA,KAACw9N,GAAW,CAAA37V,SAAEy7V,IAAuBJ,EAElE,OACCn9N,EAAAA,GAAAA,MAAC29N,GAAuB,CAACxgX,QAASmzH,GAAMruG,IAAKq6V,EAAUx6V,SAAA,CAErDwuG,KACA2vB,EAAAA,GAAAA,KAAA,OAAK1xI,MAAO,CAAE+D,OAAQ,WAEvB0tI,EAAAA,GAAAA,MAAC49N,GAAiB,CAACzgX,QAASmzH,GAAKxuG,SAAA,CAC/BwuG,IAAQktP,GACPltP,IAAQotP,EACTptP,IAAQotP,MAGVz9N,EAAAA,GAAAA,KAAC49N,GAAW56V,EAAAA,EAAA,CAAC9lB,QAASmzH,IAAUwsP,GAAiBC,MAXU,0BAc9D,EAEMe,EAAiC,CACtCzrW,MAAO,OACP65C,QAAS,OACT+zE,cAAe,MACfzuH,eAAgB,QAChBD,WAAY,QACZU,SAAU,OACViyD,QAAS,eAGJ65S,EAAuB,SAAHp0V,GAAiD,IAA3C8Q,EAAK9Q,EAAL8Q,MAAOy/U,EAAevwV,EAAfuwV,gBAAiBS,EAAWhxV,EAAXgxV,YACvD,OACC16N,EAAAA,GAAAA,KAAC+9N,GAAwB,CAExB16U,GAAI7I,EAAMguH,UACVtrJ,QAASmzH,GACT/hH,MAAO+hH,GAAOwtP,EAAiC,CAAC,EAAEh8V,SAEjD2Y,EAAMygV,cAAcl7W,MAAM,KAAKS,KAAI,SAAColJ,EAAM/yI,GAC1C,IAAMmrW,EAAiBp4N,EAAK7lJ,MAAM,KAClCiY,QAAQ05H,OAAOssO,EAAeniX,OAAS,EAAG,iCAAkC+pJ,GAC5E,IAAMq4N,EAAcD,EAAe,GAAGlrV,OAChCorV,EAAaF,EAAe,GAAGlrV,OAC/BqrV,EAAcH,EAAeniX,OAAS,EAAImiX,EAAe,GAAK,GACpE,OACCj+N,EAAAA,GAAAA,MAACq+N,GAAuB,CAAClhX,QAASmzH,GAAKxuG,SAAA,EACtCm+H,EAAAA,GAAAA,KAACq+N,GAAc,CACd/vW,MAAO,CACNmtW,YAAaxB,EAAgBz/U,EAAMguH,aAAey1N,EAAc,QAAU,OAC1Et6S,gBAAiBw6S,GAElBz7W,MAAOu7W,EACP30T,QAAS,SAAC/+C,GAAC,OAAKmwW,EAAYlgV,EAAMguH,UAAWj+I,EAAE/E,OAAO9C,MAAM,KAE3D2tH,KAAS2vB,EAAAA,GAAAA,KAAA,QAAAn+H,SAAOo+H,GAASi+N,EAAYxsP,EAAYyuB,YAClD9vB,KAAS2vB,EAAAA,GAAAA,KAAA,QAAM99H,UAAU,UAASL,SAAEo+H,GAASi+N,EAAYxsP,EAAYyuB,cAV1BttI,EAa/C,KAzBI,0BA6BP,EAIMipW,EAAmB,SAAHlyV,GAAiD,IAA3C4Q,EAAK5Q,EAAL4Q,MAAOy/U,EAAerwV,EAAfqwV,gBAAiBS,EAAW9wV,EAAX8wV,YACnD,OACC16N,EAAAA,GAAAA,KAAC89N,EAAoB,CAACtjV,MAAOA,EAAOy/U,gBAAiBA,EAAiBS,YAAaA,GAerF,EAGMqB,EAAkB,SAAHjyV,GAAiD,IAA3C0Q,EAAK1Q,EAAL0Q,MAAOy/U,EAAenwV,EAAfmwV,gBAAiBS,EAAW5wV,EAAX4wV,YAClD,OACC36N,EAAAA,GAAAA,MAAC29N,GAAuB,CAACxgX,QAASmzH,GAAKxuG,SAAA,CACrC2Y,EAAMyoD,QACN+8D,EAAAA,GAAAA,KAACs7N,GAAgB,CAChBhyT,QAAS,kBAAMsxT,EAAepgV,EAAM,EACpClsB,MAAO,CAAE0rI,OAAQ,aAAcn4H,UAE/Bm+H,EAAAA,GAAAA,KAAC8D,GAAgB,CAACzxI,OAAO,UAG3B2tI,EAAAA,GAAAA,KAAC89N,EAAoB,CAACtjV,MAAOA,EAAOy/U,gBAAiBA,EAAiBS,YAAaA,MAGtF,EAGMt9P,EADasU,EAAYo0B,YAAYr/B,MAAK,SAAA/8C,GAAI,MAAgB,UAAZA,EAAK,EAAc,IAAE,GAC9C3pE,MAAM,MAAM,GAAGA,MAAM,MAAM,GAC1D,OACCigJ,EAAAA,GAAAA,KAAA,OAAAn+H,UACCk+H,EAAAA,GAAAA,MAACu+N,GAAqB,CAAAz8V,SAAA,EACrBm+H,EAAAA,GAAAA,KAACu+N,GAAgB,CAACrhX,QAASmzH,GAAKxuG,UAC/Bm+H,EAAAA,GAAAA,KAACw+N,GAAkB,CAACthX,QAASmzH,GAA+B/hH,MAAO,CAAE4D,UAAU,GAADxM,OAAK03G,EAAc,IAAG,OAAOv7F,SACzGw3V,EAAOpvL,OAAOzpL,KAAI,SAACkrG,GACnB,IAAMjgE,EAAS4kF,IAAQ3kB,EAAM8uQ,YAAcZ,EAA2Ch4V,GAAMmyG,aAAlCnyG,GAAMoyG,oBAEhE,OACC+rB,EAAAA,GAAAA,MAAC0+N,GAAiB,CAAA58V,SAAA,EACjBm+H,EAAAA,GAAAA,KAAC3hI,GAAAA,SAAQ,CAACkC,SAAUmrF,EAAM8uQ,YAAcN,GAAkBxuQ,EAAM8uQ,YAAcZ,EAAa/3V,UAC1Fm+H,EAAAA,GAAAA,KAAC0+N,GAAiB,CAAA78V,UACjBm+H,EAAAA,GAAAA,KAAC2+N,GAAuB,CAACzhX,QAASmzH,GAAKxuG,SACrC6pF,EAAMvtC,OAAO39D,KAAI,SAACg6B,GAAK,OACvBwlH,EAAAA,GAAAA,KAACk7N,EAAK,CAAC1gV,MAAOA,EAAOkgV,YAAaA,EAAah7T,SAAUA,GAAellB,EAAMp9B,KAAQ,KAF5C,4BADtB,uBASvBizH,IAAQ3kB,EAAM8uQ,YAAcN,IAC5Bl6N,EAAAA,GAAAA,KAAC4+N,GAAe,CAAA/8V,UACfk+H,EAAAA,GAAAA,MAAC8+N,GAAS,CAAiBvwW,MAAO,CAAEm9B,MAAOA,GAAQ5pB,SAAA,CACjDo+H,GAASv0C,EAAM8uQ,YAAcN,EAAiB,GAAKxuQ,EAAM8uQ,YAAcZ,EAAe,kGAA8F,iGAA4FloP,EAAYyuB,WAC7RH,EAAAA,GAAAA,KAAC8+N,GAAqB,CAA6Bx1T,QAAS,kBAAM6wT,EAAazuQ,EAAM,EAAC7pF,UACrFm+H,EAAAA,GAAAA,KAAC++N,GAAW,CAAAl9V,SACV6pF,EAAM8uQ,YAAcZ,GACpB55N,EAAAA,GAAAA,KAACyD,GAAW,CAACj6F,KAAM5nC,GAAMqyG,iBAAkB3lH,MAAO,CAAEm9B,MAAOA,EAAOuzU,cAAe,aAEjFh/N,EAAAA,GAAAA,KAACwD,GAAa,CAACh6F,KAAM5nC,GAAMqyG,iBAAkB3lH,MAAO,CAAEm9B,MAAOA,EAAOuzU,cAAe,aAJpE,gBADS,2BAFb,cADK,qBAZCtzQ,EAAM8uQ,UA8BhC,KAnCsC,uBADH,qBAuCrCx6N,EAAAA,GAAAA,KAACi/N,GAA+B,MAxCN,0BA4C9B,CAEA,4BAAMX,GAAwBtmQ,GAAOqrC,IAAGvrB,KAAAA,GAAAh+B,EAAA,kDAE5B,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMo0G,6BAA6B,IAG1DipP,GAAkCjnQ,GAAOqrC,IAAGrrB,KAAAA,GAAAl+B,EAAA,+IACxC,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMq0G,qCAAqC,IAIpD,SAACvoH,GAAK,OAAKA,EAAMkU,MAAMqzG,4BAA4B,IAI/DspP,GAAmBvmQ,GAAOqrC,IAAGnrB,KAAAA,GAAAp+B,EAAA,6EACzB,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMm0G,sBAAsB,IAGpD,SAACroH,GAAK,OAAKA,EAAMxQ,QAAM,wBAExB,IAGIshX,GAAqBxmQ,GAAOqrC,IAAGjrB,KAAAA,GAAAt+B,EAAA,0FAIlC,SAACpsF,GAAK,OAAKA,EAAMxQ,QAAM,6BAExB,IAGIwhX,GAAoB1mQ,GAAOqrC,IAAG/qB,KAAAA,GAAAx+B,EAAA,oDAK9B8kR,GAAkB5mQ,GAAOqrC,IAAG67N,KAAAA,GAAAplR,EAAA,wGAEf,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMszG,6BAA6B,IAE3D,SAACxnH,GAAK,OAAKA,EAAMkU,MAAMuzG,uBAAuB,IAGpDwpP,GAA0B3mQ,GAAOqrC,IAAG87N,KAAAA,GAAArlR,EAAA,kDAE9B,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMwzG,+BAA+B,IAC/D,SAAC1nH,GAAK,OAAKA,EAAMxQ,QAAM,uIAMxB,IAIIuhX,GAAoBzmQ,GAAOqrC,IAAG+7N,KAAAA,GAAAtlR,EAAA,wCAClB,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMqzG,4BAA4B,IAClE,SAACvnH,GAAK,OAAKA,EAAMxQ,QAAM,4BAExB,IAGI2hX,GAAY7mQ,GAAOigB,GAAPjgB,CAAUqnQ,KAAAA,GAAAvlR,EAAA,oFAOtBqhR,GAAoBnjQ,GAAOqrC,IAAGi8N,KAAAA,GAAAxlR,EAAA,qHAIhB,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMu0G,gCAAgC,IAChE,SAACzoH,GAAK,OAAKA,EAAMkU,MAAMw0G,wBAAwB,IAIpDglP,GAA4BpjQ,GAAOqrC,IAAGk8N,KAAAA,GAAAzlR,EAAA,gKAGxB,SAACpsF,GAAK,OAAKA,EAAMkU,MAAM+0G,wCAAwC,IACzE,SAACjpH,GAAK,OAAKA,EAAMkU,MAAMg1G,+BAA+B,IAI7D,SAAClpH,GAAK,OAAKA,EAAMxQ,QAAM,yGAKxB,IAGIm+W,GAAwBrjQ,GAAOqrC,IAAGm8N,KAAAA,GAAA1lR,EAAA,yCAC9B,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMy0G,2BAA2B,IACjD,SAAC3oH,GAAK,OAAKA,EAAMkU,MAAM00G,4BAA4B,IAIxDilP,GAAYvjQ,GAAOmgB,GAAPngB,CAAUynQ,KAAAA,GAAA3lR,EAAA,kFpF/eE,QoFufxBqjR,GAAkBnlQ,GAAOqgB,GAAPrgB,CAAU0nQ,KAAAA,GAAA5lR,EAAA,mLAGxB,SAACpsF,GAAK,OAAKA,EAAM0vW,aAAa,IAGzB,SAAC1vW,GAAK,OAAKA,EAAMkU,MAAM21G,wBAAwB,IAEnD,SAAC7pH,GAAK,OAAKA,EAAMkU,MAAM41G,sBAAsB,IAGlDmkP,GAAW3jQ,GAAOqrC,IAAGs8N,KAAAA,GAAA7lR,EAAA,iDACjB,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMk0G,cAAc,IAIzC0lP,GAAoBxjQ,GAAOxxE,OAAMo5U,KAAAA,GAAA9lR,EAAA,sOAUjC4hR,GAAkB1jQ,GAAOmgB,GAAPngB,CAAU6nQ,KAAAA,GAAA/lR,EAAA,0KAExB,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMmyG,YAAY,IAG/B,SAACrmH,GAAK,OAAKA,EAAMkU,MAAM2zG,WAAW,IAChC,SAAC7nH,GAAK,OAAKA,EAAMkU,MAAMg0G,aAAa,IAuB9C8nP,IAnBsB1lQ,GAAOkuC,OAAM45N,KAAAA,GAAAhmR,EAAA,uVAG9B,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMs1G,0BAA0B,IAQ9C,SAACxpH,GAAK,OAAKA,EAAMkU,MAAMq1G,4BAA4B,IAQjCjf,GAAOqrC,IAAG08N,KAAAA,GAAAjmR,EAAA,6LAC7B,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMw1G,gCAAgC,IAC1D,SAAC1pH,GAAK,OAAKA,EAAMkU,MAAMq0G,qCAAqC,IAMtD,SAACvoH,GAAK,OAAKA,EAAMkU,MAAMu1G,kCAAkC,IACtE,SAACzpH,GAAK,OAAKA,EAAMxQ,QAAM,2EAAAwI,OAIf4B,OAAOU,OAAOoK,MAAQ,GAAE,UACjC,KAGIurW,GAAoB3lQ,GAAOqrC,IAAG28N,KAAAA,GAAAlmR,EAAA,mHAEzB,SAACpsF,GAAK,OAAKA,EAAMkU,MAAM01G,wBAAwB,IAGtC,SAAC5pH,GAAK,OAAKA,EAAMkU,MAAMy1G,gCAAgC,IACxE,SAAC3pH,GAAK,OAAKA,EAAMxQ,QAAM,0CAAAwI,OAEdgI,EAAMkU,MAAM01G,yBAAwB,QAC9C,IAGIkmP,GAAcxlQ,GAAOqgB,GAAPrgB,CAAUioQ,KAAAA,GAAAnmR,EAAA,kEAIxBikR,GAA2B/lQ,GAAO0lQ,GAAP1lQ,CAA+BkoQ,KAAAA,GAAApmR,EAAA,0GAEtDw3B,GAA8C,GAErD,SAAC5jH,GAAK,OAAKA,EAAMxQ,QAAM,+BAEb,IAGPkhX,GAA0BpmQ,GAAOqrC,IAAG88N,KAAAA,GAAArmR,EAAA,wRAI5B,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMq1G,4BAA4B,IAc3DonP,GAAiBrmQ,GAAOxxE,OAAM45U,KAAAA,GAAAtmR,EAAA,qRADT,MAKTumR,IAWZC,GAAc,OACd7D,GAAa,GACb8D,GAAoB,OACpB7D,GAAmB,GAMnB8D,GpFjoB0B,OoFooB1BC,GANY,OAUZ7C,GAAc5lQ,GAAO39F,MAAKqmW,KAAAA,GAAA5mR,EAAA,gjCAIvB,SAACpsF,GAAK,OAAKA,EAAMkU,MAAM80G,iBAAiB,IACvC,SAAChpH,GAAK,OAAKA,EAAMkU,MAAM60G,kBAAkB,IACzC,SAAC/oH,GAAK,OAAKA,EAAMkU,MAAM40G,kBAAkB,GAvBpC,MAiCAiqP,GAIAA,GAOJH,GACD7D,GACK+D,IAIZ,SAAC9yW,GAAK,OAAKA,EAAMxQ,QAAM,gBAAAwI,OACfg3W,GAAgB,qBAAAh3W,OACf66W,GAAiB,kCAE3B,GAtDa,MA6DAE,GAOJH,GACD7D,GACK+D,IAKZ,SAAC9yW,GAAK,OAAKA,EAAMxQ,QAAM,gBAAAwI,OACfg3W,GAAgB,qBAAAh3W,OACf66W,GAAiB,kCAE3B,GAnEsB,OADA,QAkFlBI,GAAe3oQ,GAAOxxE,OAAMo6U,KAAAA,GAAA9mR,EAAA,sHAKvB,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMmzG,mBAAmB,IAGxC+pP,GAAwB,SAAH90V,GAA+B,IAAzBs/B,EAAOt/B,EAAPs/B,QAASznC,EAAQmI,EAARnI,SAChD,OAAOm+H,EAAAA,GAAAA,KAAC2gO,GAAY,CAACr3T,QAASA,EAAQznC,SAAEA,GACzC,EAEMk9V,GAAc/mQ,GAAOqrC,IAAGw9N,KAAAA,GAAA/mR,EAAA,0BACnB,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMyyG,kBAAkB,IAG9CinP,GAAmBtjQ,GAAOxxE,OAAMs6U,KAAAA,GAAAhnR,EAAA,oGAOhCkiR,GAAmBhkQ,GAAOxxE,OAAMu6U,KAAAA,GAAAjnR,EAAA,gKAC3B,SAACpsF,GAAK,OAAKA,EAAMkU,MAAM20G,uBAAuB,IAMtD,SAAC7oH,GAAK,OAAKA,EAAMxQ,QAAM,yFAKxB,IC7wBa,SAAS8jX,GAAoB/yW,GAAqE,IAADgzW,EAAjE5H,EAAMprW,EAANorW,OAAQlyN,EAASl5I,EAATk5I,UAAWmyN,EAAcrrW,EAAdqrW,eAAgB/F,EAA0BtlW,EAA1BslW,2BACjF/hP,GAA4CpvE,EAAAA,EAAAA,YAAWqvE,KAA/CC,EAAWF,EAAXE,YAAaC,EAAkBH,EAAlBG,mBACbm2B,GAAkB1lG,EAAAA,EAAAA,YAAW+mG,KAA7BrB,cAC6Dnb,EAAAhnH,GAAfi9B,EAAAA,EAAAA,WAAS,GAAM,GAA9Ds+T,EAAmBv0O,EAAA,GAAE4sO,EAAsB5sO,EAAA,GACzCw0O,EAA2Cx7V,GAAfi9B,EAAAA,EAAAA,WAAS,GAAM,GAAnB,GAC3Bw+T,GAAcz+T,EAAAA,EAAAA,WAEpBN,EAAAA,EAAAA,YAAU,WACTsvE,EAAmB,qBAAqB,GACxCA,EAAmB,uBAAwB61B,GAAqBL,IAC3D92B,KACJ8wP,GAAyB,GACzBr9W,YAAW,WACVq9W,GAAyB,EAC1B,GAAG,KAGL,GAAG,KAGH9+T,EAAAA,EAAAA,YAAU,WACJ6+T,GACL3H,GAAuB,EACxB,GAAG,CAAoB,QAApB0H,EAACG,EAAY7jV,eAAO,IAAA0jV,OAAA,EAAnBA,EAAqBtgW,aAAcugW,KAGvC7+T,EAAAA,EAAAA,YAAU,WACV,GAAG,CAACylG,IAqBJ,IAyBMu5N,EAAqBhxP,GAZM,CAChCtsD,aAAc,OAGkB,CAChC3xD,MAAO,OACPC,OAAQ,OACRuxD,OAAQ,kBACRG,aAAc,MACd63S,aAAc,OAMT0F,EAAYtpQ,GAAOqrC,IAAGvrB,KAAAA,GAAAh+B,EAAA,iFAGzB,SAACpsF,GAAK,OAAKA,EAAMxQ,QAAM,uEAIxB,IAIIqkX,EAAiBvpQ,GAAOqrC,IAAGrrB,KAAAA,GAAAl+B,EAAA,iIAK9B,SAACpsF,GAAK,OAAKA,EAAMxQ,QAAM,wKAOxB,IAEF,OACC6iJ,EAAAA,GAAAA,MAAA,OAAKzxI,MAAK0U,EAAAA,EAAA,GAAQqtG,IAAQ,CAAEh+G,OAAQ,SAAU,CAAF,GAAGy1S,cAAe,SAASjmS,SAAA,EAEtEm+H,EAAAA,GAAAA,KAAA,OACC1xI,MAAO,CACN29C,QAASylE,EAAYskP,eAAiB,QAAU,OAChDxyS,SAAU,WACVpxD,MAAO,OACPC,OAAQ,OACRwmB,OAAQ,EACRivR,cAAe,UAOjB/nK,EAAAA,GAAAA,MAACyhO,GAAuB,CAACtkX,QAASmzH,GAAMruG,IAAKuxV,EAA2B1xV,SAAA,CACtEwuG,KAAQ2vB,EAAAA,GAAAA,KAACh3B,GAAY,CAACqD,UAAW,OAClC0zB,EAAAA,GAAAA,MAAC0hO,GAAQ,CAACz/V,IAAKo/V,EAAYv/V,SAAA,EAC1Bm+H,EAAAA,GAAAA,KAAC0hO,GAAqB,CAACx/V,UAAU,cAAchlB,QAASmzH,GAAKxuG,UAC5Dk+H,EAAAA,GAAAA,MAAA6E,GAAAA,SAAA,CAAA/iI,SAAA,CACEwuG,KACA0vB,EAAAA,GAAAA,MAAA6E,GAAAA,SAAA,CAAA/iI,SAAA,EACCm+H,EAAAA,GAAAA,KAACgK,GAAc,CAACT,kBApEE,WACzB53B,EAAmB,kBAAmBD,EAAY4jP,eACnD,KAoEQt1N,EAAAA,GAAAA,KAAC2hO,GAAc,CAAA9/V,UACdm+H,EAAAA,GAAAA,KAAC4hO,GAAS,CAAA//V,SACRo+H,GAAS,wDAAyDvuB,EAAYyuB,kBAKnFH,EAAAA,GAAAA,KAAC6hO,GAAW,CACXxI,OAAQA,EACRlyN,UAAWA,EACXmyN,eAAgBA,EAChBC,uBAAwBA,SAK1BlpP,KAAQ2vB,EAAAA,GAAAA,KAACuhO,EAAc,CAACrkX,QAASmzH,GAAKxuG,UACtCk+H,EAAAA,GAAAA,MAAC+hO,GAAkB,CAAC5kX,QAASmzH,GAAKxuG,SAAA,CAChCo+H,GAAS,+IAAuIvuB,EAAYyuB,WAC7JH,EAAAA,GAAAA,KAAA,SACCC,GAAS,2HAAyHvuB,EAAYyuB,mBAIlJJ,EAAAA,GAAAA,MAACuhO,EAAS,CAACpkX,QAASmzH,GAAKxuG,SAAA,EACxBm+H,EAAAA,GAAAA,KAACe,GAAkB,CAClBz3F,QAzGe,WAInB,IAAMy4T,EAAgBC,KAAK/5N,GAAgBd,EAAWW,IACtDxgJ,OAAO65D,OAAOrL,YAAY,CAAExW,OAAQ,WAAY3X,KAAM/tB,mBAAmBmoW,IAAkB,KAC3Fj5N,GAAU3B,EAAW,OACtB,EAmGKlwI,MACC+oI,EAAAA,GAAAA,KAAA,QAAM1xI,MAAO,CAAE29C,QAAS,OAAQ36C,WAAY,SAAUC,eAAgB,SAAUuuI,SAAU,QAASj+H,SACjGo+H,GAAS,+CAAgDvuB,EAAYyuB,YAGxEc,qBAAoBj+H,EAAA,CAAI2gD,gBAAiBstD,GAAcxlF,MAAOylF,IAAqBmwP,GACnFngO,QAASjB,GACR,6KACAvuB,EAAYyuB,aAIdH,EAAAA,GAAAA,KAACe,GAAkB,CAClBz3F,QA1IL,WAcC,IAAMy4T,EAAgBC,KAAK/5N,GAAgBd,EAAWW,IACtDxgJ,OAAO65D,OAAOrL,YAAY,CAAExW,OAAQ,cAAe3X,KAAM/tB,mBAAmBmoW,IAAkB,KAC9Fj5N,GAAU3B,EAAW,UACtB,EA0HKlwI,MACC8oI,EAAAA,GAAAA,MAAA,QAAMzxI,MAAO,CAAE29C,QAAS,OAAQ36C,WAAY,SAAUC,eAAgB,SAAUuuI,SAAU,QAASj+H,SAAA,CACjGo+H,GAAS,8BAA+BvuB,EAAYyuB,UAAU,QAAQ,OAGzEc,qBAAoBj+H,EAAAA,EAAA,CAAI2gD,gBAAiBwtD,GAAc1lF,MAAO2lF,IAAqBiwP,GAAuBhxP,IAAQ,CAAE4xP,WAAY,SAChI/gO,QAASjB,GACR,gLACAvuB,EAAYyuB,gBAIb9vB,KAAQ2vB,EAAAA,GAAAA,KAACuhO,EAAc,CAACrkX,QAASmzH,GAAKxuG,UACvCk+H,EAAAA,GAAAA,MAAC+hO,GAAkB,CAAC5kX,QAASmzH,GAAKxuG,SAAA,EACjCm+H,EAAAA,GAAAA,KAAA,KAAAn+H,UACCm+H,EAAAA,GAAAA,KAAA,KAAAn+H,SAAIo+H,GAAS,yGAA8FvuB,EAAYyuB,eAExHJ,EAAAA,GAAAA,MAAA,KAAAl+H,SAAA,CACEo+H,GAAS,oMAAyLvuB,EAAYyuB,WAC/MH,EAAAA,GAAAA,KAAA,UACAA,EAAAA,GAAAA,KAAA,KAAAn+H,SAAIo+H,GAAS,0FAA2FvuB,EAAYyuB,YAAc,iBACjIF,GAAS,qGAAgGvuB,EAAYyuB,cAEvHH,EAAAA,GAAAA,KAAA,KAAAn+H,SAAIo+H,GAAS,iPAAsOvuB,EAAYyuB,sBAMrQ,CAEA,gBAAMqhO,GAA0BxpQ,GAAOqrC,IAAGnrB,KAAAA,GAAAp+B,EAAA,qMAMhC,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMk1G,6BAA6B,IAG3D,SAACppH,GAAK,OAAKA,EAAMxQ,QAAM,wEAIxB,IAGIukX,GAAWzpQ,GAAOqrC,IAAGjrB,KAAAA,GAAAt+B,EAAA,wPACRooR,EACGA,ErFrMY,UAKC,GqFmMxB,SAACx0W,GAAK,OAAKA,EAAMkU,MAAMi1G,8BAA8B,IAI1D6qP,GAAwB1pQ,GAAOqrC,IAAG/qB,KAAAA,GAAAx+B,EAAA,0CACnBu3B,IAClB,SAAC3jH,GAAK,OAAKA,EAAMxQ,QAAM,4CAGxB,IAGIykX,GAAiB3pQ,GAAOqrC,IAAG67N,KAAAA,GAAAplR,EAAA,oDACtB,SAACpsF,GAAK,OAAKA,EAAMkU,MAAM2yG,aAAa,GAC1BlD,IAGfuwP,GAAY5pQ,GAAO6f,GAAP7f,CAAUmnQ,KAAAA,GAAArlR,EAAA,0HACjB,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMs0G,gBAAgB,IACxC,SAACxoH,GAAK,OAAKA,EAAMkU,MAAMoyG,mBAAmB,IAM9C8tP,GAAqB9pQ,GAAOmgB,GAAPngB,CAAUonQ,KAAAA,GAAAtlR,EAAA,gIAMlC,SAACpsF,GAAK,OAAKA,EAAMxQ,QAAM,kCAExB,ICtQa,SAASilX,GAAYl0W,GAAsC,IAAnC27I,EAAU37I,EAAV27I,WAAYC,EAAM57I,EAAN47I,OAAQu4N,EAAUn0W,EAAVm0W,WAC1D5wP,GAA4CpvE,EAAAA,EAAAA,YAAWqvE,KAA/CC,EAAWF,EAAXE,YAAaC,EAAkBH,EAAlBG,mBAEf4hP,GAA6B5wT,EAAAA,EAAAA,UAE3BwkG,EAAcpiD,KAAdoiD,UACD5sB,EAAiC50G,EAAjBw0G,KAAiB,GAArB,GACb0uB,EAAwBrmJ,OAAO6/W,YAAY,IAAI5pP,gBAAgB8B,IAG/BoS,EAAAhnH,GAAVi9B,EAAAA,EAAAA,YAAU,GAA/By2T,EAAM1sO,EAAA,GAAE21O,EAAS31O,EAAA,GAC0C8X,EAAA9+H,GAAVi9B,EAAAA,EAAAA,YAAU,GAA3D2/T,EAAoB99N,EAAA,GAAE+9N,EAAuB/9N,EAAA,GACSovN,EAAAluV,GAAfi9B,EAAAA,EAAAA,WAAS,GAAM,GAAtD6/T,EAAe5O,EAAA,GAAE6O,EAAkB7O,EAAA,GAG2BE,EAAApuV,GAAfi9B,EAAAA,EAAAA,WAAS,GAAM,GAA9D+/T,EAAmB5O,EAAA,GAAE6O,EAAsB7O,EAAA,IAElD1xT,EAAAA,EAAAA,YAAU,WACTsvE,EAAmB,kBAAkB,GACrCA,EAAmB,OAAQ,EAE5B,GAAG,KAEHtvE,EAAAA,EAAAA,YAAU,WACTsvE,EAAmB,YAAaw1B,GAChCm7N,ExCtCF,SAAuBn7N,GACtB,IAAME,EAAYF,EAAUpnJ,MAAM,KAAK,GACjC8iX,EAAc17N,EAAUpnJ,MAAM,KAAK,GAcnCipB,EAAQs9H,GAAa7/B,MAAK,SAACz9F,GAAK,OAAKA,EAAMq+H,YAAcA,CAAS,IACxErvI,QAAQ05H,YAAiBrjI,IAAV2a,EAAqB,mDAAoDq+H,EAAWf,IAInG,IAAMktJ,EAAU9sJ,GAAejgC,MAC9B,SAAC+sL,GAAO,OAAKA,EAAQnsJ,YAAcA,GAAamsJ,EAAQqvE,cAAgBA,CAAW,IAEpF7qW,QAAQ05H,YACKrjI,IAAZmlS,EACA,kEACAnsJ,EACA,iBACAw7N,EACAn8N,IAED19H,EAAmB,YAAIwqR,EAAQp2S,KAW/B,IAAM0lX,EAAa95V,EAAMihK,OAAOlqL,MAAM,KAAKS,KAAI,SAAC0oC,GAAI,OAAKA,EAAKpW,MAAM,IAE9Dm3J,EAAS64L,EAAWtiX,KAAI,SAACg6W,GAAS,OACvCh0N,GAAa//B,MACZ,SAAC/a,GAAK,OAAKA,EAAM8uQ,YAAcA,IAAc9uQ,EAAM27C,YAAcA,GAAiC,MAApB37C,EAAM27C,UAAkB,GACtG,IAGFrvI,QAAQ05H,QAAQu4C,EAAO92J,cAAS9kB,GAAY,sBAAuBy0W,EAAY74L,GAiB/E,IAAI84L,EAAW,GA6Bf,OA5BA94L,EAAOzjL,SAAQ,SAACklG,GACf,IAWOs3Q,EAXDC,EAAav3Q,EAAMvtC,OAAOp+D,MAAM,KAAKS,KAAI,SAAC0oC,GAAI,OAAKA,EAAKpW,MAAM,IAC9DqrC,EAAS8kT,EAAWziX,KAAI,SAAC0iX,GAAS,OACvCz8N,GAAahgC,MACZ,SAACjsF,GAAK,OAAKA,EAAMguH,YAAc06N,IAAc1oV,EAAM6sH,YAAcA,GAAiC,MAApB7sH,EAAM6sH,UAAkB,GACtG,IAEFrvI,QAAQ05H,QAAQvzE,EAAOhrC,cAAS9kB,GAAY,8CAA+C40W,EAAY,2BAA4B9kT,GACnIutC,EAAMvtC,OAASA,EAES,UAApButC,EAAM8uQ,UACTuI,EAAShiX,KAAK2qG,IAETq3Q,EAASt8P,MAAK,SAAAx4G,GAAuB,OAAXA,EAATo5I,UAAyC,UAArBp5I,EAATusW,SAAqC,KACrEuI,EAAShiX,KAAK,CACbsmJ,UAAAA,EACAmzN,UAAW,QACXp9W,KAAM,QACN+gE,OAAQ,MAIV6kT,EAAAD,EAASt8P,MAAK,SAAAnlG,GAAY,MAAqB,UAArBA,EAATk5V,SAAqC,IAAEr8S,QAAOp9D,KAAIgD,MAAAi/W,EAAAhrT,EAAImG,IAGzE,IAEAn1C,EAAMihK,OAAS84L,EACR/5V,CACR,CwC5DYm6V,CAAch8N,ItCjBnB,SAAoBA,GAC1B6B,GAAAA,GAAQx8G,MAAM,CACb8S,OAAQ,gBACR8e,SAAU+oF,GAEZ,CsCaEi8N,CAAWj8N,EAEZ,GAAG,CAACA,KAGJ9kG,EAAAA,EAAAA,YAAU,gBACMh0C,IAAXgrW,GACJmJ,GACCxiO,EAAAA,GAAAA,KAACghO,GAAoB,CACpB9+V,UAAU,uBACVm3V,OAAQA,EACRlyN,UAAWA,EACXmyN,eAAgB1wN,GAAmBzB,EAAW0B,GAC9C0qN,2BAA4BA,EAC5BhqN,kBAAmBA,EACnBk5N,gBAAiBA,EACjBC,mBAAoBA,IAIvB,GAAG,CAACrJ,EAAQlyN,KAEZ9kG,EAAAA,EAAAA,YAAU,gBACwBh0C,KAAlB,OAAXqjH,QAAW,IAAXA,OAAW,EAAXA,EAAao0B,cAA6Bl1B,IAC1C+xP,GACJC,GAAuB,EACxB,GAAG,CAAClxP,EAAaixP,IAEjB,IAAMp5N,EAAoB,WACzB53B,EAAmB,kBAAmBD,EAAY4jP,eACnD,EAEM+N,EAAQ,WAGb,OACCtjO,EAAAA,GAAAA,MAAA6E,GAAAA,SAAA,CAAA/iI,SAAA,EACCm+H,EAAAA,GAAAA,KAACsjO,GAAU,CAAAzhW,SAAE6vG,EAAY6xP,cACzBvjO,EAAAA,GAAAA,KAACwjO,KAAW,CACXr3U,IAAK28E,GAAe,WAAa4I,EAAY+xP,cAC7CxyS,SAAS,EACToN,UAAU,EACVnM,MAAM,EACNf,OAAO,EACP2J,aAAa,EACb9J,QAAS,kBAAM,CAAI,EACnB5+D,MAAM,OACNC,OAAO,OACP+oD,OAAQ,CACPwd,KAAM,CACLzC,WAAY,CACXutS,aAAc,sBAOrB,EAEA,OACC3jO,EAAAA,GAAAA,MAAC4J,GAAsB,CAACC,WAAYA,EAAYC,OAAQA,EAAQu4N,WAAYA,EAAY74N,kBAAmBA,EAAkB1nI,SAAA,EAC5Hm+H,EAAAA,GAAAA,KAAC2jO,GAAQ,CAAA9hW,UACRm+H,EAAAA,GAAAA,KAACszN,GAAqB,CAACnsN,UAAWA,EAAWosN,2BAA4BA,EAA4Br2W,QAASmzH,QAE/G2vB,EAAAA,GAAAA,KAAC4jO,GAAkB,CAAC1mX,QAASmzH,GAAKxuG,SAAE0gW,KACpCviO,EAAAA,GAAAA,KAACN,GAAW,CAAC/9E,OAAQ+vD,EAAYmyP,eAAgBv6T,QAAS,kBAAMqoE,EAAmB,kBAAkB,EAAM,EAAC9vG,UAC3Gm+H,EAAAA,GAAAA,KAAC8jO,GAAQ,CAAAjiW,UACRm+H,EAAAA,GAAAA,KAACqjO,EAAK,UAKX,CAEA,IAAMM,GAAW3rQ,GAAOqrC,IAAGvrB,KAAAA,GAAAh+B,EAAA,kEAMrB8pR,GAAqB5rQ,GAAOqrC,IAAGrrB,KAAAA,GAAAl+B,EAAA,yGAI7B,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMo1G,sBAAsB,IAElD,SAACtpH,GAAK,OAAKA,EAAMxQ,QAAM,0DAIxB,IAGI4mX,GAAW9rQ,GAAOqrC,IAAGnrB,KAAAA,GAAAp+B,EAAA,gEAEjB,SAACpsF,GAAK,OAAKA,EAAMkU,MAAM+1G,cAAc,IACpC,SAACjqH,GAAK,OAAKA,EAAMkU,MAAM81G,eAAe,IAG3C4rP,GAAatrQ,GAAO/sG,EAACmtH,KAAAA,GAAAt+B,EAAA,iKAEnB,SAACpsF,GAAK,OAAKA,EAAMkU,MAAMg2G,cAAc,ICtI9B,SAASmsP,GAAM91W,GAAsC,IAAnC27I,EAAU37I,EAAV27I,WAAYC,EAAM57I,EAAN47I,OAAQu4N,EAAUn0W,EAAVm0W,WAC5CzwP,GAAuBvvE,EAAAA,EAAAA,YAAWqvE,KAAlCE,mBACA8nP,GAAqBr3T,EAAAA,EAAAA,YAAW+mG,KAAhCswN,iBAEAtyN,EAAcpiD,KAAdoiD,UACD5sB,EAAiC50G,EAAjBw0G,KAAiB,GAArB,GACb0uB,EAAwBrmJ,OAAO6/W,YAAY,IAAI5pP,gBAAgB8B,IAUrE,OAPAl4E,EAAAA,EAAAA,YAAU,WAETsvE,EAAmB,YAAaw1B,GAChCsyN,EAAiB7wN,GAAmBzB,EAAW0B,GAEhD,GAAG,KAGF7I,EAAAA,GAAAA,KAAC2J,GAAsB,CAACC,WAAYA,EAAYC,OAAQA,EAAQu4N,WAAYA,EAAWvgW,UACrFm+H,EAAAA,GAAAA,KAACgkO,GAAiB,CAAC78N,UAAWA,KAGlC,CCfA,OA0FM,SAAUxkJ,GAASuC,GAEvB,OAAO,SAAC++W,EAA0C7mX,GAAAA,YAAAA,IAChDA,EA3CmB,SACrB8H,EACA2jH,EACAzrH,GAECyrH,EAAMzqG,YAAuC8lW,eAAe9mX,EAAM8H,EAAQ,CAuCrEi/W,CAAej/W,EAAU++W,EAA6B7mX,GA9FrC,SACvB8H,EACAS,GAAAA,MAMmB,WAAjBA,EAAQy+W,MACRz+W,EAAQ2E,cACN,UAAW3E,EAAQ2E,YAAAA,EAAAA,EAAAA,CAAAA,EAGhB3E,GAAAA,CAAAA,EAAAA,CACH0+W,SAAAA,SAASC,GACPA,EAAMJ,eAAev+W,EAAQc,IAAKvB,EACnC,IAMI,CACLk/W,KAAM,QACN39W,IAAK1B,SACLwiJ,UAAW,MACXj9I,WAAY,CAAE,EAEd2+H,YAAatjI,EAAQc,IAUrB89W,YAAAA,WACqC,mBAAxB5+W,EAAQ4+W,cACjBtgX,KAAK0B,EAAQc,KAAiBd,EAAQ4+W,YAAYzjX,KAAKmD,MAE1D,EACDogX,SAAAA,SAASC,GACPA,EAAMJ,eAAev+W,EAAQc,IAAKvB,EACnC,GAkDCs/W,CAAiBt/W,EAAU++W,EACnC,EC5FA,OAMwB,QAAtBhvS,GANsC3tE,OAM/Bm9W,uBAAAA,IAAe,OAAE5jX,UAAU6jX,iBCpBpC,IAAMz6N,GAAW,MAGXW,GAAe,EACfC,GAAe,EACfC,GAAgB,EAGhBG,GAAe,EACfC,GAAmB,EACnBC,GAAe,EACfC,GAAY,EACZC,GAAW,EACXC,GAAa,EACbG,GAAa,EACbC,GAAiB,EACjBC,GAAmB,EACnBC,GAAsB,EACtBC,GAAmB,EACnBC,GAAiB,EACjBC,GAAc,IACdC,GAAmB,IACnBC,GAA0B,IAC1BC,GAAc,IACdC,GAAc,IACdC,GAAa,IACbC,GAAY,IACZC,GAAiB,IACjBC,GAAyB,IACzBC,GAAiB,IACjBC,GAAyB,IACzBC,GAAiB,IACjBC,GAAyB,IACzBC,GAAiB,IACjBC,GAAyB,IACzBC,GAAyB,IACzBC,GAAa,EACbC,GAAc,EACdC,GAAY,EACZC,GAAiB,EACjBC,GAAa,EACbC,GAAoB,EACpBC,GAAe,EACfC,GAAgB,EAChBC,GAAoB,EACpBC,GAAe,EACfC,GAAe,EACfC,GAAgB,EAChBC,GAAoB,EACpBC,GAAsB,EACtBC,GAAoB,EACpBC,GAAwB,EACxBC,GAAoB,EAGpBE,GAAwB,IACxBC,GAAwB,IACxBC,GAAmC,IACnCC,GAAmC,IACnCC,GAA0B,IAC1BC,GAAiB,IACjBC,GAAsB,KACtBC,GAAyB,KACzBC,GAAgB,KAChBC,GAA6B,KAE7BE,GAA4B,KAE5BE,GAAe,KACfC,GAA4B,KAE5BE,GAA2B,KAE3BE,GAAmB,KACnBC,GAAW,KACXC,GAAY,KACZC,GAAoB,KACpBC,GAAU,KACVC,GAAkB,KAClBC,GAAY,KACZC,GAAgB,KAChBC,GAAwB,KACxBC,GAAwB,KACxBC,GAAqB,KACrBC,GAAc,KACdC,GAAY,KACZC,GAAa,KACbC,GAAkB,KAClBC,GAAuB,KACvBC,GAAc,KACdC,GAAqB,KACrBC,GAAY,KACZC,GAAmB,KACnBC,GAAW,KACXC,GAAkB,KAClBC,GAAoB,KAEpBC,GAAuB,MACvBC,GAAwB,MACxBC,GAAwB,MACxBC,GAAwB,MACxBC,GAA0B,MAC1BC,GAA0B,MAC1BC,GAA2B,MAC3BC,GAA2B,MAC3BC,GAAkB,MAClBC,GAAkB,MAClBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAwB,MACxBC,GAAwB,MACxBC,GAAwB,MACxBC,GAAyB,MACzBC,GAAyB,MACzBC,GAAyB,MACzBC,GAAmB,MAEnBE,GAAa,KACbC,GAAe,KACfC,GAAsB,KACtBC,GAAoB,KACpBC,GAAoB,KACpBC,GAAsB,KACtBC,GAAkB,KAClBC,GAAmB,KACnBC,GAA2B,KAK3BK,GAAiB,IACjBC,GAAe,KAEfE,GAAmB,KACnBC,GAAwB,EACxBC,GAAuB,EAIvBE,GAAiB,OACjBC,GAAuB,cAGvBE,GAAgB,KAiBhBe,GAAkB,MAWlBU,GAAQ,SAERC,GAAe,KAMfC,GAAe,oBAAAA,IAAA7mJ,EAAA,KAAA6mJ,EAAA,CA6EnB,OA7EmB/nJ,EAAA+nJ,EAAA,EAAA9uJ,IAAA,mBAAA/D,MAEpB,SAAkBmG,EAAMqpC,QAEE7jC,IAApBpK,KAAK2qI,aAA2B3qI,KAAK2qI,WAAa,CAAC,GAExD,IAAMniG,EAAYxoC,KAAK2qI,gBAEIvgI,IAAtBo+B,EAAW5jC,KAEf4jC,EAAW5jC,GAAS,KAI4B,IAA5C4jC,EAAW5jC,GAAO4H,QAASyhC,IAE/BzF,EAAW5jC,GAAO9H,KAAMmxC,EAI1B,GAAC,CAAAzrC,IAAA,mBAAA/D,MAED,SAAkBmG,EAAMqpC,GAEvB,QAAyB7jC,IAApBpK,KAAK2qI,WAA2B,OAAO,EAE5C,IAAMniG,EAAYxoC,KAAK2qI,WAEvB,YAA6BvgI,IAAtBo+B,EAAW5jC,KAAoE,IAA5C4jC,EAAW5jC,GAAO4H,QAASyhC,EAEtE,GAAC,CAAAzrC,IAAA,sBAAA/D,MAED,SAAqBmG,EAAMqpC,GAE1B,QAAyB7jC,IAApBpK,KAAK2qI,WAAV,CAEA,IACM4mB,EADYvxJ,KAAK2qI,WACU/lI,GAEjC,QAAuBwF,IAAlBmnJ,EAA8B,CAElC,IAAM3iJ,EAAQ2iJ,EAAc/kJ,QAASyhC,IAEpB,IAAZr/B,GAEJ2iJ,EAAc1jG,OAAQj/C,EAAO,EAI/B,CAf2C,CAiB5C,GAAC,CAAApM,IAAA,gBAAA/D,MAED,SAAe8pC,GAEd,QAAyBn+B,IAApBpK,KAAK2qI,WAAV,CAEA,IACM4mB,EADYvxJ,KAAK2qI,WACUpiG,EAAM3jC,MAEvC,QAAuBwF,IAAlBmnJ,EAA8B,CAElChpH,EAAMhnC,OAASvB,KAKf,IAFA,IAAM+C,EAAQwuJ,EAAc3gJ,MAAO,GAEzBlU,EAAI,EAAGmK,EAAI9D,EAAMnL,OAAQ8E,EAAImK,EAAGnK,IAEzCqG,EAAOrG,GAAIG,KAAMmD,KAAMuoC,GAIxBA,EAAMhnC,OAAS,IAEhB,CApB2C,CAsB5C,KAAC+vJ,CAAA,CA7EmB,GAiFfE,GAAO,CAAE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAErgDC,GAAQ,QAGNC,GAAUz0J,KAAK00J,GAAK,IACpBC,GAAU,IAAM30J,KAAK00J,GAG3B,SAASE,KAER,IAAMC,EAAqB,WAAhB70J,KAAKuxC,SAAwB,EAClCujH,EAAqB,WAAhB90J,KAAKuxC,SAAwB,EAClCwjH,EAAqB,WAAhB/0J,KAAKuxC,SAAwB,EAClCyjH,EAAqB,WAAhBh1J,KAAKuxC,SAAwB,EAOxC,OANagjH,GAAW,IAALM,GAAcN,GAAMM,GAAM,EAAI,KAASN,GAAMM,GAAM,GAAK,KAASN,GAAMM,GAAM,GAAK,KAAS,IAC5GN,GAAW,IAALO,GAAcP,GAAMO,GAAM,EAAI,KAAS,IAAMP,GAAMO,GAAM,GAAK,GAAO,IAASP,GAAMO,GAAM,GAAK,KAAS,IAC9GP,GAAW,GAALQ,EAAY,KAASR,GAAMQ,GAAM,EAAI,KAAS,IAAMR,GAAMQ,GAAM,GAAK,KAASR,GAAMQ,GAAM,GAAK,KACrGR,GAAW,IAALS,GAAcT,GAAMS,GAAM,EAAI,KAAST,GAAMS,GAAM,GAAK,KAAST,GAAMS,GAAM,GAAK,MAG9Ej6J,aAEb,CAEA,SAASk6J,GAAOzzJ,EAAOysC,EAAKhuC,GAE3B,OAAOD,KAAKC,IAAKguC,EAAKjuC,KAAKiuC,IAAKhuC,EAAKuB,GAEtC,CAIA,SAAS0zJ,GAAiBprJ,EAAGD,GAE5B,OAAWC,EAAID,EAAMA,GAAMA,CAE5B,CAyBA,SAASsrJ,GAAMl2J,EAAGmL,EAAG/P,GAEpB,OAAS,EAAIA,GAAM4E,EAAI5E,EAAI+P,CAE5B,CAyFA,SAASgrJ,GAAc5zJ,GAEtB,OAAqC,KAA5BA,EAAUA,EAAQ,IAAyB,IAAVA,CAE3C,CAEA,SAAS6zJ,GAAgB7zJ,GAExB,OAAOxB,KAAKs1J,IAAK,EAAGt1J,KAAKurD,KAAMvrD,KAAK+W,IAAKvV,GAAUxB,KAAKo+B,KAEzD,CAEA,SAASm3H,GAAiB/zJ,GAEzB,OAAOxB,KAAKs1J,IAAK,EAAGt1J,KAAKwf,MAAOxf,KAAK+W,IAAKvV,GAAUxB,KAAKo+B,KAE1D,CA0DA,SAAS65H,GAAaz2J,EAAOsE,GAE5B,OAASA,EAAMoX,aAEd,KAAK06I,aAEJ,OAAOp2J,EAER,KAAKq2J,YAEJ,OAAOr2J,EAAQ,MAEhB,KAAK82G,WAEJ,OAAO92G,EAAQ,IAEhB,KAAKu2J,WAEJ,OAAO/3J,KAAKC,IAAKuB,EAAQ,OAAW,GAErC,KAAKw2J,UAEJ,OAAOh4J,KAAKC,IAAKuB,EAAQ,KAAS,GAEnC,QAEC,MAAM,IAAIX,MAAO,2BAIpB,CAEA,SAAS+iH,GAAWpiH,EAAOsE,GAE1B,OAASA,EAAMoX,aAEd,KAAK06I,aAEJ,OAAOp2J,EAER,KAAKq2J,YAEJ,OAAO73J,KAAK83J,MAAe,MAARt2J,GAEpB,KAAK82G,WAEJ,OAAOt4G,KAAK83J,MAAe,IAARt2J,GAEpB,KAAKu2J,WAEJ,OAAO/3J,KAAK83J,MAAe,MAARt2J,GAEpB,KAAKw2J,UAEJ,OAAOh4J,KAAK83J,MAAe,IAARt2J,GAEpB,QAEC,MAAM,IAAIX,MAAO,2BAIpB,CAEA,IAAI20J,GAAyBl0J,OAAOkjB,OAAO,CAC1C/G,UAAW,KACXg3I,QAASA,GACTE,QAASA,GACTC,aAAcA,GACdK,MAAOA,GACPC,gBAAiBA,GACjBO,UApQD,SAAoBx2J,EAAGy2J,EAAIC,EAAIC,EAAIC,GAElC,OAAOD,GAAO32J,EAAIy2J,IAASG,EAAKD,IAASD,EAAKD,EAE/C,EAiQCI,YA9PD,SAAsB72J,EAAGmL,EAAG5I,GAE3B,OAAKvC,IAAMmL,GAED5I,EAAQvC,IAAQmL,EAAInL,GAItB,CAIT,EAmPCk2J,KAAMA,GACNY,KA1OD,SAAe92J,EAAGmL,EAAG4rJ,EAAQC,GAE5B,OAAOd,GAAMl2J,EAAGmL,EAAG,EAAIpK,KAAKk2J,KAAOF,EAASC,GAE7C,EAuOCE,SApOD,SAAmBl3J,GAAgB,IAAbtE,EAAMqI,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE9B,OAAOrI,EAASqF,KAAK4f,IAAKs1I,GAAiBj2J,EAAY,EAATtE,GAAeA,EAE9D,EAiOCy7J,WA9ND,SAAqBn3J,EAAGgvC,EAAKhuC,GAE5B,OAAKhB,GAAKgvC,EAAa,EAClBhvC,GAAKgB,EAAa,GAEvBhB,GAAMA,EAAIgvC,IAAUhuC,EAAMguC,IAEfhvC,GAAM,EAAI,EAAIA,EAE1B,EAsNCo3J,aApND,SAAuBp3J,EAAGgvC,EAAKhuC,GAE9B,OAAKhB,GAAKgvC,EAAa,EAClBhvC,GAAKgB,EAAa,GAEvBhB,GAAMA,EAAIgvC,IAAUhuC,EAAMguC,IAEfhvC,EAAIA,GAAMA,GAAU,EAAJA,EAAQ,IAAO,GAE3C,EA4MCq3J,QAzMD,SAAkBC,EAAKC,GAEtB,OAAOD,EAAMv2J,KAAKwf,MAAOxf,KAAKuxC,UAAailH,EAAOD,EAAM,GAEzD,EAsMCE,UAnMD,SAAoBF,EAAKC,GAExB,OAAOD,EAAMv2J,KAAKuxC,UAAailH,EAAOD,EAEvC,EAgMCG,gBA7LD,SAA0B7rH,GAEzB,OAAOA,GAAU,GAAM7qC,KAAKuxC,SAE7B,EA0LColH,aAvLD,SAAuBn4J,QAEX2O,IAAN3O,IAAkBg2J,GAAQh2J,GAI/B,IAAInE,EAAIm6J,IAAS,WAMjB,OAJAn6J,EAAI2F,KAAK42J,KAAMv8J,EAAIA,IAAM,GAAQ,EAAJA,MAE7BA,GAAKA,EAAI2F,KAAK42J,KAAMv8J,EAAIA,IAAM,EAAO,GAAJA,IAElBA,IAAM,MAAS,GAAM,UAErC,EA0KCw8J,SAxKD,SAAmBC,GAElB,OAAOA,EAAUrC,EAElB,EAqKCsC,SAnKD,SAAmBC,GAElB,OAAOA,EAAUrC,EAElB,EAgKCS,aAAcA,GACdC,eAAgBA,GAChBE,gBAAiBA,GACjB0B,6BA/ID,SAAuCjtJ,EAAGjL,EAAGuK,EAAGtK,EAAGsR,GAQlD,IAAM4mJ,EAAMl3J,KAAKk3J,IACXC,EAAMn3J,KAAKm3J,IAEXC,EAAKF,EAAK5tJ,EAAI,GACd+tJ,EAAKF,EAAK7tJ,EAAI,GAEdguJ,EAAMJ,GAAOn4J,EAAIC,GAAM,GACvBu4J,EAAMJ,GAAOp4J,EAAIC,GAAM,GAEvBw4J,EAAON,GAAOn4J,EAAIC,GAAM,GACxBy4J,EAAON,GAAOp4J,EAAIC,GAAM,GAExB04J,EAAOR,GAAOl4J,EAAID,GAAM,GACxB44J,EAAOR,GAAOn4J,EAAID,GAAM,GAE9B,OAASuR,GAER,IAAK,MACJtG,EAAEgoB,IAAKolI,EAAKG,EAAKF,EAAKG,EAAMH,EAAKI,EAAML,EAAKE,GAC5C,MAED,IAAK,MACJttJ,EAAEgoB,IAAKqlI,EAAKI,EAAML,EAAKG,EAAKF,EAAKG,EAAMJ,EAAKE,GAC5C,MAED,IAAK,MACJttJ,EAAEgoB,IAAKqlI,EAAKG,EAAMH,EAAKI,EAAML,EAAKG,EAAKH,EAAKE,GAC5C,MAED,IAAK,MACJttJ,EAAEgoB,IAAKolI,EAAKG,EAAKF,EAAKM,EAAMN,EAAKK,EAAMN,EAAKE,GAC5C,MAED,IAAK,MACJttJ,EAAEgoB,IAAKqlI,EAAKK,EAAMN,EAAKG,EAAKF,EAAKM,EAAMP,EAAKE,GAC5C,MAED,IAAK,MACJttJ,EAAEgoB,IAAKqlI,EAAKM,EAAMN,EAAKK,EAAMN,EAAKG,EAAKH,EAAKE,GAC5C,MAED,QACCxgJ,QAAQk/C,KAAM,kFAAoF1lD,GAIrG,EA0FCszG,UAAWA,GACXq0C,YAAaA,KAGRC,GAAO,WAEZ,SAAAA,IAA4B,IAAfj5J,EAAC+D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAA0qJ,GAExBA,EAAQv4J,UAAU25J,WAAY,EAE9Bv2J,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,CAEV,CAkcC,OAlcAkC,EAAA4rJ,EAAA,EAAA3yJ,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAK9D,CAEb,EAAC+yB,IAED,SAAWxwB,GAEVuB,KAAK9D,EAAIuC,CAEV,GAAC,CAAA+D,IAAA,SAAAutB,IAED,WAEC,OAAO/vB,KAAKqH,CAEb,EAAC4nB,IAED,SAAYxwB,GAEXuB,KAAKqH,EAAI5I,CAEV,GAAC,CAAA+D,IAAA,MAAA/D,MAED,SAAKvC,EAAGmL,GAKP,OAHArH,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EAEFrH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW22J,GAKV,OAHAp1J,KAAK9D,EAAIk5J,EACTp1J,KAAKqH,EAAI+tJ,EAEFp1J,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMvC,GAIL,OAFA8D,KAAK9D,EAAIA,EAEF8D,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM4I,GAIL,OAFArH,KAAKqH,EAAIA,EAEFrH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,EAAOnQ,GAEpB,OAASmQ,GAER,KAAK,EAAG5O,KAAK9D,EAAIuC,EAAO,MACxB,KAAK,EAAGuB,KAAKqH,EAAI5I,EAAO,MACxB,QAAS,MAAM,IAAIX,MAAO,0BAA4B8Q,GAIvD,OAAO5O,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,GAEb,OAASA,GAER,KAAK,EAAG,OAAO5O,KAAK9D,EACpB,KAAK,EAAG,OAAO8D,KAAKqH,EACpB,QAAS,MAAM,IAAIvJ,MAAO,0BAA4B8Q,GAIxD,GAAC,CAAApM,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAK9D,EAAG8D,KAAKqH,EAE3C,GAAC,CAAA7E,IAAA,OAAA/D,MAED,SAAM0I,GAKL,OAHAnH,KAAK9D,EAAIiL,EAAEjL,EACX8D,KAAKqH,EAAIF,EAAEE,EAEJrH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAKJ,OAHAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EAELrH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAKV,OAHAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAKd,OAHAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EAEVrH,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiB0I,EAAG1L,GAKnB,OAHAuE,KAAK9D,GAAKiL,EAAEjL,EAAIT,EAChBuE,KAAKqH,GAAKF,EAAEE,EAAI5L,EAETuE,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAKJ,OAHAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EAELrH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAKV,OAHAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAKd,OAHAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EAEVrH,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU0I,GAKT,OAHAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EAELrH,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB22J,GAKf,OAHAp1J,KAAK9D,GAAKk5J,EACVp1J,KAAKqH,GAAK+tJ,EAEHp1J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0I,GAKP,OAHAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EAELrH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc22J,GAEb,OAAOp1J,KAAKu1J,eAAgB,EAAIH,EAEjC,GAAC,CAAA5yJ,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM5K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EACrBf,EAAIQ,EAAEk/H,SAKZ,OAHAhmI,KAAK9D,EAAIoK,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GACtCtG,KAAKqH,EAAIf,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAE/BtG,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAKJ,OAHAnH,KAAK9D,EAAIe,KAAKiuC,IAAKlrC,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKiuC,IAAKlrC,KAAKqH,EAAGF,EAAEE,GAEtBrH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAKJ,OAHAnH,KAAK9D,EAAIe,KAAKC,IAAK8C,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKC,IAAK8C,KAAKqH,EAAGF,EAAEE,GAEtBrH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOysC,EAAKhuC,GAOX,OAHA8C,KAAK9D,EAAIe,KAAKC,IAAKguC,EAAIhvC,EAAGe,KAAKiuC,IAAKhuC,EAAIhB,EAAG8D,KAAK9D,IAChD8D,KAAKqH,EAAIpK,KAAKC,IAAKguC,EAAI7jC,EAAGpK,KAAKiuC,IAAKhuC,EAAImK,EAAGrH,KAAKqH,IAEzCrH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAa+2J,EAAQC,GAKpB,OAHAz1J,KAAK9D,EAAIe,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAK9D,IAClD8D,KAAKqH,EAAIpK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKqH,IAE3CrH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAaysC,EAAKhuC,GAEjB,IAAMtF,EAASoI,KAAKpI,SAEpB,OAAOoI,KAAK01J,aAAc99J,GAAU,GAAI29J,eAAgBt4J,KAAKC,IAAKguC,EAAKjuC,KAAKiuC,IAAKhuC,EAAKtF,IAEvF,GAAC,CAAA4K,IAAA,QAAA/D,MAED,WAKC,OAHAuB,KAAK9D,EAAIe,KAAKwf,MAAOzc,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAKwf,MAAOzc,KAAKqH,GAEnBrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAKC,OAHAuB,KAAK9D,EAAIe,KAAKurD,KAAMxoD,KAAK9D,GACzB8D,KAAKqH,EAAIpK,KAAKurD,KAAMxoD,KAAKqH,GAElBrH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAKC,OAHAuB,KAAK9D,EAAIe,KAAK83J,MAAO/0J,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAK83J,MAAO/0J,KAAKqH,GAEnBrH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAKC,OAHAuB,KAAK9D,EAAM8D,KAAK9D,EAAI,EAAMe,KAAKurD,KAAMxoD,KAAK9D,GAAMe,KAAKwf,MAAOzc,KAAK9D,GACjE8D,KAAKqH,EAAMrH,KAAKqH,EAAI,EAAMpK,KAAKurD,KAAMxoD,KAAKqH,GAAMpK,KAAKwf,MAAOzc,KAAKqH,GAE1DrH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAKC,OAHAuB,KAAK9D,GAAM8D,KAAK9D,EAChB8D,KAAKqH,GAAMrH,KAAKqH,EAETrH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAEJ,OAAOnH,KAAK9D,EAAIiL,EAAEjL,EAAI8D,KAAKqH,EAAIF,EAAEE,CAElC,GAAC,CAAA7E,IAAA,QAAA/D,MAED,SAAO0I,GAEN,OAAOnH,KAAK9D,EAAIiL,EAAEE,EAAIrH,KAAKqH,EAAIF,EAAEjL,CAElC,GAAC,CAAAsG,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,CAExC,GAAC,CAAA7E,IAAA,SAAA/D,MAED,WAEC,OAAOxB,KAAK04J,KAAM31J,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,EAEnD,GAAC,CAAA7E,IAAA,kBAAA/D,MAED,WAEC,OAAOxB,KAAK4f,IAAK7c,KAAK9D,GAAMe,KAAK4f,IAAK7c,KAAKqH,EAE5C,GAAC,CAAA7E,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAK01J,aAAc11J,KAAKpI,UAAY,EAE5C,GAAC,CAAA4K,IAAA,QAAA/D,MAED,WAIC,IAAMm3J,EAAQ34J,KAAK44J,OAAS71J,KAAKqH,GAAKrH,KAAK9D,GAAMe,KAAK00J,GAEtD,OAAOiE,CAER,GAAC,CAAApzJ,IAAA,aAAA/D,MAED,SAAY0I,GAEX,OAAOlK,KAAK04J,KAAM31J,KAAK81J,kBAAmB3uJ,GAE3C,GAAC,CAAA3E,IAAA,oBAAA/D,MAED,SAAmB0I,GAElB,IAAMmnI,EAAKtuI,KAAK9D,EAAIiL,EAAEjL,EAAGmyI,EAAKruI,KAAKqH,EAAIF,EAAEE,EACzC,OAAOinI,EAAKA,EAAKD,EAAKA,CAEvB,GAAC,CAAA7rI,IAAA,sBAAA/D,MAED,SAAqB0I,GAEpB,OAAOlK,KAAK4f,IAAK7c,KAAK9D,EAAIiL,EAAEjL,GAAMe,KAAK4f,IAAK7c,KAAKqH,EAAIF,EAAEE,EAExD,GAAC,CAAA7E,IAAA,YAAA/D,MAED,SAAW7G,GAEV,OAAOoI,KAAK6gH,YAAY00C,eAAgB39J,EAEzC,GAAC,CAAA4K,IAAA,OAAA/D,MAED,SAAM0I,EAAG4uJ,GAKR,OAHA/1J,KAAK9D,IAAOiL,EAAEjL,EAAI8D,KAAK9D,GAAM65J,EAC7B/1J,KAAKqH,IAAOF,EAAEE,EAAIrH,KAAKqH,GAAM0uJ,EAEtB/1J,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAau3J,EAAIC,EAAIF,GAKpB,OAHA/1J,KAAK9D,EAAI85J,EAAG95J,GAAM+5J,EAAG/5J,EAAI85J,EAAG95J,GAAM65J,EAClC/1J,KAAKqH,EAAI2uJ,EAAG3uJ,GAAM4uJ,EAAG5uJ,EAAI2uJ,EAAG3uJ,GAAM0uJ,EAE3B/1J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0I,GAEP,OAAWA,EAAEjL,IAAM8D,KAAK9D,GAASiL,EAAEE,IAAMrH,KAAKqH,CAE/C,GAAC,CAAA7E,IAAA,YAAA/D,MAED,SAAWsE,GAAoB,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAK1B,OAHAD,KAAK9D,EAAI6G,EAAOgnC,GAChB/pC,KAAKqH,EAAItE,EAAOgnC,EAAS,GAElB/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAK7B,OAHA8C,EAAOgnC,GAAW/pC,KAAK9D,EACvB6G,EAAOgnC,EAAS,GAAM/pC,KAAKqH,EAEpBtE,CAER,GAAC,CAAAP,IAAA,sBAAA/D,MAED,SAAqBy3J,EAAWtnJ,GAK/B,OAHA5O,KAAK9D,EAAIg6J,EAAUC,KAAMvnJ,GACzB5O,KAAKqH,EAAI6uJ,EAAUE,KAAMxnJ,GAElB5O,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc43J,EAAQT,GAErB,IAAM35J,EAAIgB,KAAKk3J,IAAKyB,GAASn6J,EAAIwB,KAAKm3J,IAAKwB,GAErC15J,EAAI8D,KAAK9D,EAAIm6J,EAAOn6J,EACpBmL,EAAIrH,KAAKqH,EAAIgvJ,EAAOhvJ,EAK1B,OAHArH,KAAK9D,EAAIA,EAAID,EAAIoL,EAAI5L,EAAI46J,EAAOn6J,EAChC8D,KAAKqH,EAAInL,EAAIT,EAAI4L,EAAIpL,EAAIo6J,EAAOhvJ,EAEzBrH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAKC,OAHAuB,KAAK9D,EAAIe,KAAKuxC,SACdxuC,KAAKqH,EAAIpK,KAAKuxC,SAEPxuC,IAER,GAAC,CAAAwC,IAEE1B,OAAOrE,SAAQgC,MAAAq+E,EAAAA,MAAlB,SAAAr+E,IAAA,OAAAq+E,EAAAA,MAAA,SAAAw5E,GAAA,cAAAA,EAAArzJ,KAAAqzJ,EAAApzJ,MAAA,OAEC,OAFDozJ,EAAApzJ,KAAA,EAEOlD,KAAK9D,EAAC,OACZ,OADYo6J,EAAApzJ,KAAA,EACNlD,KAAKqH,EAAC,wBAAAivJ,EAAA7nF,OAAA,GAAAhwE,EAAA,YAEZ02J,CAAA,CA3cW,GA+cPqB,GAAO,WAEZ,SAAAA,IAAc/rJ,EAAA,KAAA+rJ,GAEbA,EAAQ55J,UAAUi9J,WAAY,EAE9B75J,KAAKgmI,SAAW,CAEf,EAAG,EAAG,EACN,EAAG,EAAG,EACN,EAAG,EAAG,EAIR,CA0TC,OA1TAz8H,EAAAitJ,EAAA,EAAAh0J,IAAA,MAAA/D,MAED,SAAKg4J,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAE5C,IAAMpuH,EAAK7oC,KAAKgmI,SAMhB,OAJAn9F,EAAI,GAAM4tH,EAAK5tH,EAAI,GAAM+tH,EAAK/tH,EAAI,GAAMkuH,EACxCluH,EAAI,GAAM6tH,EAAK7tH,EAAI,GAAMguH,EAAKhuH,EAAI,GAAMmuH,EACxCnuH,EAAI,GAAM8tH,EAAK9tH,EAAI,GAAMiuH,EAAKjuH,EAAI,GAAMouH,EAEjCj3J,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,WAUC,OARAuB,KAAKivB,IAEJ,EAAG,EAAG,EACN,EAAG,EAAG,EACN,EAAG,EAAG,GAIAjvB,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMqI,GAEL,IAAM+hC,EAAK7oC,KAAKgmI,SACV59F,EAAKthC,EAAEk/H,SAMb,OAJAn9F,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GACpDS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GACpDS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAE7CpoC,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcy4J,EAAOC,EAAOC,GAM3B,OAJAF,EAAMG,qBAAsBr3J,KAAM,GAClCm3J,EAAME,qBAAsBr3J,KAAM,GAClCo3J,EAAMC,qBAAsBr3J,KAAM,GAE3BA,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBqI,GAEf,IAAMshC,EAAKthC,EAAEk/H,SAUb,OARAhmI,KAAKivB,IAEJmZ,EAAI,GAAKA,EAAI,GAAKA,EAAI,GACtBA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GACtBA,EAAI,GAAKA,EAAI,GAAKA,EAAI,KAIhBpoC,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAUqI,GAET,OAAO9G,KAAKs3J,iBAAkBt3J,KAAM8G,EAErC,GAAC,CAAAtE,IAAA,cAAA/D,MAED,SAAaqI,GAEZ,OAAO9G,KAAKs3J,iBAAkBxwJ,EAAG9G,KAElC,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBzC,EAAGuK,GAEpB,IAAMsgC,EAAK7qC,EAAEgqI,SACPl/F,EAAKvgC,EAAEy/H,SACPn9F,EAAK7oC,KAAKgmI,SAEVuxB,EAAM1wH,EAAI,GAAK2wH,EAAM3wH,EAAI,GAAK4wH,EAAM5wH,EAAI,GACxC6wH,EAAM7wH,EAAI,GAAK8wH,EAAM9wH,EAAI,GAAK+wH,EAAM/wH,EAAI,GACxCgxH,EAAMhxH,EAAI,GAAKixH,EAAMjxH,EAAI,GAAKkxH,EAAMlxH,EAAI,GAExCmxH,EAAMlxH,EAAI,GAAKmxH,EAAMnxH,EAAI,GAAKoxH,EAAMpxH,EAAI,GACxCqxH,EAAMrxH,EAAI,GAAKsxH,EAAMtxH,EAAI,GAAKuxH,EAAMvxH,EAAI,GACxCwxH,EAAMxxH,EAAI,GAAKyxH,EAAMzxH,EAAI,GAAK0xH,EAAM1xH,EAAI,GAc9C,OAZA+B,EAAI,GAAM0uH,EAAMS,EAAMR,EAAMW,EAAMV,EAAMa,EACxCzvH,EAAI,GAAM0uH,EAAMU,EAAMT,EAAMY,EAAMX,EAAMc,EACxC1vH,EAAI,GAAM0uH,EAAMW,EAAMV,EAAMa,EAAMZ,EAAMe,EAExC3vH,EAAI,GAAM6uH,EAAMM,EAAML,EAAMQ,EAAMP,EAAMU,EACxCzvH,EAAI,GAAM6uH,EAAMO,EAAMN,EAAMS,EAAMR,EAAMW,EACxC1vH,EAAI,GAAM6uH,EAAMQ,EAAMP,EAAMU,EAAMT,EAAMY,EAExC3vH,EAAI,GAAMgvH,EAAMG,EAAMF,EAAMK,EAAMJ,EAAMO,EACxCzvH,EAAI,GAAMgvH,EAAMI,EAAMH,EAAMM,EAAML,EAAMQ,EACxC1vH,EAAI,GAAMgvH,EAAMK,EAAMJ,EAAMO,EAAMN,EAAMS,EAEjCx4J,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBhD,GAEf,IAAMotC,EAAK7oC,KAAKgmI,SAMhB,OAJAn9F,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EACvCotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EACvCotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAEhCuE,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAEC,IAAMoqC,EAAK7oC,KAAKgmI,SAEVhqI,EAAI6sC,EAAI,GAAKtiC,EAAIsiC,EAAI,GAAK5sC,EAAI4sC,EAAI,GACvCriC,EAAIqiC,EAAI,GAAKviC,EAAIuiC,EAAI,GAAKpiC,EAAIoiC,EAAI,GAClCniC,EAAImiC,EAAI,GAAKliC,EAAIkiC,EAAI,GAAKnsC,EAAImsC,EAAI,GAEnC,OAAO7sC,EAAIsK,EAAI5J,EAAIV,EAAIyK,EAAIE,EAAIJ,EAAIC,EAAI9J,EAAI6J,EAAIE,EAAIC,EAAIzK,EAAIuK,EAAIG,EAAI1K,EAAIqK,EAAII,CAE5E,GAAC,CAAAlE,IAAA,SAAA/D,MAED,WAEC,IAAMoqC,EAAK7oC,KAAKgmI,SAEfywB,EAAM5tH,EAAI,GAAK+tH,EAAM/tH,EAAI,GAAKkuH,EAAMluH,EAAI,GACxC6tH,EAAM7tH,EAAI,GAAKguH,EAAMhuH,EAAI,GAAKmuH,EAAMnuH,EAAI,GACxC8tH,EAAM9tH,EAAI,GAAKiuH,EAAMjuH,EAAI,GAAKouH,EAAMpuH,EAAI,GAExC4vH,EAAMxB,EAAMJ,EAAMG,EAAMF,EACxB4B,EAAM1B,EAAML,EAAMM,EAAMP,EACxBiC,EAAM7B,EAAMJ,EAAMG,EAAMF,EAExBiC,EAAMnC,EAAMgC,EAAM7B,EAAM8B,EAAM3B,EAAM4B,EAErC,GAAa,IAARC,EAAY,OAAO54J,KAAKivB,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAE1D,IAAM4pI,EAAS,EAAID,EAcnB,OAZA/vH,EAAI,GAAM4vH,EAAMI,EAChBhwH,EAAI,IAAQkuH,EAAMD,EAAMG,EAAML,GAAQiC,EACtChwH,EAAI,IAAQmuH,EAAMJ,EAAMG,EAAMF,GAAQgC,EAEtChwH,EAAI,GAAM6vH,EAAMG,EAChBhwH,EAAI,IAAQouH,EAAMR,EAAMM,EAAMJ,GAAQkC,EACtChwH,EAAI,IAAQkuH,EAAML,EAAMM,EAAMP,GAAQoC,EAEtChwH,EAAI,GAAM8vH,EAAME,EAChBhwH,EAAI,IAAQ+tH,EAAMD,EAAMG,EAAML,GAAQoC,EACtChwH,EAAI,IAAQguH,EAAMJ,EAAMG,EAAMF,GAAQmC,EAE/B74J,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,WAEC,IAAIq6J,EACEhyJ,EAAI9G,KAAKgmI,SAMf,OAJA8yB,EAAMhyJ,EAAG,GAAKA,EAAG,GAAMA,EAAG,GAAKA,EAAG,GAAMgyJ,EACxCA,EAAMhyJ,EAAG,GAAKA,EAAG,GAAMA,EAAG,GAAKA,EAAG,GAAMgyJ,EACxCA,EAAMhyJ,EAAG,GAAKA,EAAG,GAAMA,EAAG,GAAKA,EAAG,GAAMgyJ,EAEjC94J,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBs6J,GAEhB,OAAO/4J,KAAKg5J,eAAgBD,GAAUjpB,SAASmpB,WAEhD,GAAC,CAAAz2J,IAAA,qBAAA/D,MAED,SAAoByI,GAEnB,IAAMJ,EAAI9G,KAAKgmI,SAYf,OAVA9+H,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GAEL9G,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBy6J,EAAIC,EAAIC,EAAIC,EAAIC,EAAUC,EAAIC,GAE7C,IAAMv9J,EAAIgB,KAAKk3J,IAAKmF,GACd79J,EAAIwB,KAAKm3J,IAAKkF,GAQpB,OANAt5J,KAAKivB,IACJmqI,EAAKn9J,EAAGm9J,EAAK39J,GAAK29J,GAAOn9J,EAAIs9J,EAAK99J,EAAI+9J,GAAOD,EAAKL,GAChDG,EAAK59J,EAAG49J,EAAKp9J,GAAKo9J,IAAS59J,EAAI89J,EAAKt9J,EAAIu9J,GAAOA,EAAKL,EACtD,EAAG,EAAG,GAGAn5J,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO26J,EAAIC,GAEV,IAAMxwH,EAAK7oC,KAAKgmI,SAKhB,OAHAn9F,EAAI,IAAOuwH,EAAIvwH,EAAI,IAAOuwH,EAAIvwH,EAAI,IAAOuwH,EACzCvwH,EAAI,IAAOwwH,EAAIxwH,EAAI,IAAOwwH,EAAIxwH,EAAI,IAAOwwH,EAElCr5J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQg7J,GAEP,IAAMx9J,EAAIgB,KAAKk3J,IAAKsF,GACdh+J,EAAIwB,KAAKm3J,IAAKqF,GAEd5wH,EAAK7oC,KAAKgmI,SAEVuxB,EAAM1uH,EAAI,GAAK2uH,EAAM3uH,EAAI,GAAK4uH,EAAM5uH,EAAI,GACxC6uH,EAAM7uH,EAAI,GAAK8uH,EAAM9uH,EAAI,GAAK+uH,EAAM/uH,EAAI,GAU9C,OARAA,EAAI,GAAM5sC,EAAIs7J,EAAM97J,EAAIi8J,EACxB7uH,EAAI,GAAM5sC,EAAIu7J,EAAM/7J,EAAIk8J,EACxB9uH,EAAI,GAAM5sC,EAAIw7J,EAAMh8J,EAAIm8J,EAExB/uH,EAAI,IAAQptC,EAAI87J,EAAMt7J,EAAIy7J,EAC1B7uH,EAAI,IAAQptC,EAAI+7J,EAAMv7J,EAAI07J,EAC1B9uH,EAAI,IAAQptC,EAAIg8J,EAAMx7J,EAAI27J,EAEnB53J,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWy6J,EAAIC,GAEd,IAAMtwH,EAAK7oC,KAAKgmI,SAKhB,OAHAn9F,EAAI,IAAOqwH,EAAKrwH,EAAI,GAAKA,EAAI,IAAOqwH,EAAKrwH,EAAI,GAAKA,EAAI,IAAOqwH,EAAKrwH,EAAI,GACtEA,EAAI,IAAOswH,EAAKtwH,EAAI,GAAKA,EAAI,IAAOswH,EAAKtwH,EAAI,GAAKA,EAAI,IAAOswH,EAAKtwH,EAAI,GAE/D7oC,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQi7J,GAKP,IAHA,IAAM7wH,EAAK7oC,KAAKgmI,SACV59F,EAAKsxH,EAAO1zB,SAERtpI,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAKmsC,EAAInsC,KAAQ0rC,EAAI1rC,GAAM,OAAO,EAInC,OAAO,CAER,GAAC,CAAA8F,IAAA,YAAA/D,MAED,SAAWsE,GAEV,IAF8B,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEhBvD,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKgmI,SAAUtpI,GAAMqG,EAAOrG,EAAIqtC,GAIjC,OAAO/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEvB4oC,EAAK7oC,KAAKgmI,SAchB,OAZAjjI,EAAOgnC,GAAWlB,EAAI,GACtB9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAE1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAE1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAEnB9lC,CAER,GAAC,CAAAP,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcw/I,UAAW35J,KAAKgmI,SAE/C,KAACwwB,CAAA,CAxUW,GA4Ub,SAASoD,GAAkB72J,GAI1B,IAAM,IAAIrG,EAAIqG,EAAMnL,OAAS,EAAG8E,GAAK,IAAMA,EAE1C,GAAKqG,EAAOrG,IAAO,MAAQ,OAAO,EAInC,OAAO,CAER,CAGYu4J,UACC1/C,WACOwkD,kBACP/E,WACCF,YACDkF,WACCzyD,YACCstD,aACAoF,aASf,SAASz0G,GAAiBrsD,GAEzB,OAAOmK,SAASkiD,gBAAiB,+BAAgCrsD,EAElE,CAEA,SAASihK,GAAcn+J,GAEtB,OAASA,EAAI,OAAgB,YAAJA,EAAmBgB,KAAKs1J,IAAS,YAAJt2J,EAAmB,YAAc,IAExF,CAEA,SAASo+J,GAAcp+J,GAEtB,OAASA,EAAI,SAAkB,MAAJA,EAAY,MAAUgB,KAAKs1J,IAAKt2J,EAAG,QAAc,IAE7E,CAIA,IAAMq+J,IAAE3+I,EAAA4+I,GAAG,CAAC,EACT/K,GAAc7zI,EAAA,GAAQ8zI,GAAwB2K,KAAYz+I,EAAA4+I,GAC1D9K,GAAoB9zI,EAAA,GAAQ6zI,GAAkB6K,KAAYE,IAGvDC,GAAkB,CAEvBC,YAAY,EAEZ,qBAAIC,GAEH,OAAOjL,EAER,EAEA,qBAAIiL,CAAmBC,GAEtB5mJ,QAAQk/C,KAAM,yDAEf,EAEA2nG,QAAS,SAAWpzH,EAAOqzH,EAAkBC,GAE5C,GAAK96J,KAAKy6J,YAAcI,IAAqBC,IAAsBD,IAAsBC,EAExF,OAAOtzH,EAIR,GAAK8yH,GAAIO,SAAqEzwJ,IAA/CkwJ,GAAIO,GAAoBC,GAAmC,CAEzF,IAAM98E,EAAKs8E,GAAIO,GAAoBC,GAMnC,OAJAtzH,EAAMtgC,EAAI82E,EAAIx2C,EAAMtgC,GACpBsgC,EAAM9gC,EAAIs3E,EAAIx2C,EAAM9gC,GACpB8gC,EAAMjhC,EAAIy3E,EAAIx2C,EAAMjhC,GAEbihC,CAER,CAEA,MAAM,IAAI1pC,MAAO,sCAElB,EAEAi9J,sBAAuB,SAAWvzH,EAAOszH,GAExC,OAAO96J,KAAK46J,QAASpzH,EAAOxnC,KAAK06J,kBAAmBI,EAErD,EAEAE,oBAAqB,SAAWxzH,EAAOqzH,GAEtC,OAAO76J,KAAK46J,QAASpzH,EAAOqzH,EAAkB76J,KAAK06J,kBAEpD,GAIKO,GAAiB,CAAE,UAAa,SAAU,aAAgB,SAAU,KAAQ,MAAU,WAAc,QAAU,MAAS,SAC5H,MAAS,SAAU,OAAU,SAAU,MAAS,EAAU,eAAkB,SAAU,KAAQ,IAAU,WAAc,QACtH,MAAS,SAAU,UAAa,SAAU,UAAa,QAAU,WAAc,QAAU,UAAa,SAAU,MAAS,SACzH,eAAkB,QAAU,SAAY,SAAU,QAAW,SAAU,KAAQ,MAAU,SAAY,IAAU,SAAY,MAC3H,cAAiB,SAAU,SAAY,SAAU,UAAa,MAAU,SAAY,SAAU,UAAa,SAAU,YAAe,QACpI,eAAkB,QAAU,WAAc,SAAU,WAAc,SAAU,QAAW,QAAU,WAAc,SAAU,aAAgB,QACzI,cAAiB,QAAU,cAAiB,QAAU,cAAiB,QAAU,cAAiB,MAAU,WAAc,QAC1H,SAAY,SAAU,YAAe,MAAU,QAAW,QAAU,QAAW,QAAU,WAAc,QAAU,UAAa,SAC9H,YAAe,SAAU,YAAe,QAAU,QAAW,SAAU,UAAa,SAAU,WAAc,SAAU,KAAQ,SAC9H,UAAa,SAAU,KAAQ,QAAU,MAAS,MAAU,YAAe,SAAU,KAAQ,QAAU,SAAY,SAAU,QAAW,SACxI,UAAa,SAAU,OAAU,QAAU,MAAS,SAAU,MAAS,SAAU,SAAY,SAAU,cAAiB,SAAU,UAAa,QAC/I,aAAgB,SAAU,UAAa,SAAU,WAAc,SAAU,UAAa,SAAU,qBAAwB,SAAU,UAAa,SAC/I,WAAc,QAAU,UAAa,SAAU,UAAa,SAAU,YAAe,SAAU,cAAiB,QAAU,aAAgB,QAC1I,eAAkB,QAAU,eAAkB,QAAU,eAAkB,SAAU,YAAe,SAAU,KAAQ,MAAU,UAAa,QAC5I,MAAS,SAAU,QAAW,SAAU,OAAU,QAAU,iBAAoB,QAAU,WAAc,IAAU,aAAgB,SAClI,aAAgB,QAAU,eAAkB,QAAU,gBAAmB,QAAU,kBAAqB,MAAU,gBAAmB,QACrI,gBAAmB,SAAU,aAAgB,QAAU,UAAa,SAAU,UAAa,SAAU,SAAY,SAAU,YAAe,SAC1I,KAAQ,IAAU,QAAW,SAAU,MAAS,QAAU,UAAa,QAAU,OAAU,SAAU,UAAa,SAAU,OAAU,SACtI,cAAiB,SAAU,UAAa,SAAU,cAAiB,SAAU,cAAiB,SAAU,WAAc,SAAU,UAAa,SAC7I,KAAQ,SAAU,KAAQ,SAAU,KAAQ,SAAU,WAAc,SAAU,OAAU,QAAU,cAAiB,QAAU,IAAO,SAAU,UAAa,SAC3J,UAAa,QAAU,YAAe,QAAU,OAAU,SAAU,WAAc,SAAU,SAAY,QAAU,SAAY,SAC9H,OAAU,SAAU,OAAU,SAAU,QAAW,QAAU,UAAa,QAAU,UAAa,QAAU,UAAa,QAAU,KAAQ,SAC1I,YAAe,MAAU,UAAa,QAAU,IAAO,SAAU,KAAQ,MAAU,QAAW,SAAU,OAAU,SAAU,UAAa,QACzI,OAAU,SAAU,MAAS,SAAU,MAAS,SAAU,WAAc,SAAU,OAAU,SAAU,YAAe,UAEhHC,GAAO,CAAEh0J,EAAG,EAAGR,EAAG,EAAGH,EAAG,GACxB40J,GAAQ,CAAEx0J,EAAG,EAAGlL,EAAG,EAAGoL,EAAG,GACzBu0J,GAAQ,CAAEz0J,EAAG,EAAGlL,EAAG,EAAGoL,EAAG,GAE/B,SAASw0J,GAASr0J,EAAGC,EAAG3P,GAIvB,OAFKA,EAAI,IAAIA,GAAK,GACbA,EAAI,IAAIA,GAAK,GACbA,EAAI,EAAI,EAAW0P,EAAgB,GAAVC,EAAID,GAAU1P,EACvCA,EAAI,GAAe2P,EACnB3P,EAAI,EAAI,EAAW0P,EAAgB,GAAVC,EAAID,IAAY,EAAI,EAAI1P,GAC/C0P,CAER,CAEA,SAASs0J,GAAc95J,EAAQD,GAM9B,OAJAA,EAAO2F,EAAI1F,EAAO0F,EAClB3F,EAAOmF,EAAIlF,EAAOkF,EAClBnF,EAAOgF,EAAI/E,EAAO+E,EAEXhF,CAER,CAAC,IAwiBGm3I,GAtiBE6iB,GAAK,WAEV,SAAAA,EAAar0J,EAAGR,EAAGH,GAQlB,OARsBkE,EAAA,KAAA8wJ,GAEtBv7J,KAAKy7J,SAAU,EAEfz7J,KAAKkH,EAAI,EACTlH,KAAK0G,EAAI,EACT1G,KAAKuG,EAAI,OAEE6D,IAAN1D,QAAyB0D,IAAN7D,EAGhBvG,KAAKivB,IAAK/nB,GAIXlH,KAAKw7J,OAAQt0J,EAAGR,EAAGH,EAE3B,CA6gBC,OA7gBAgD,EAAAgyJ,EAAA,EAAA/4J,IAAA,MAAA/D,MAED,SAAKA,GAgBJ,OAdKA,GAASA,EAAMg9J,QAEnBz7J,KAAK07J,KAAMj9J,GAEiB,kBAAVA,EAElBuB,KAAK27J,OAAQl9J,GAEe,kBAAVA,GAElBuB,KAAK47J,SAAUn9J,GAITuB,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW22J,GAMV,OAJAp1J,KAAKkH,EAAIkuJ,EACTp1J,KAAK0G,EAAI0uJ,EACTp1J,KAAKuG,EAAI6uJ,EAEFp1J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQo9J,GAAmC,IAA9BlB,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAUzB,OARAqM,EAAM5+J,KAAKwf,MAAOo/I,GAElB77J,KAAKkH,GAAM20J,GAAO,GAAK,KAAQ,IAC/B77J,KAAK0G,GAAMm1J,GAAO,EAAI,KAAQ,IAC9B77J,KAAKuG,GAAY,IAANs1J,GAAc,IAEzBrB,GAAgBQ,oBAAqBh7J,KAAM26J,GAEpC36J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQyI,EAAGR,EAAGH,GAAuC,IAApCo0J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGwvJ,GAQ7B,OANAzvJ,KAAKkH,EAAIA,EACTlH,KAAK0G,EAAIA,EACT1G,KAAKuG,EAAIA,EAETi0J,GAAgBQ,oBAAqBh7J,KAAM26J,GAEpC36J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQkI,EAAGlL,EAAGoL,GAAuC,IAApC8zJ,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGwvJ,GAO7B,GAJA9oJ,EAAIwrJ,GAAiBxrJ,EAAG,GACxBlL,EAAIy2J,GAAOz2J,EAAG,EAAG,GACjBoL,EAAIqrJ,GAAOrrJ,EAAG,EAAG,GAEN,IAANpL,EAEJuE,KAAKkH,EAAIlH,KAAK0G,EAAI1G,KAAKuG,EAAIM,MAErB,CAEN,IAAMG,EAAIH,GAAK,GAAMA,GAAM,EAAIpL,GAAMoL,EAAIpL,EAAMoL,EAAIpL,EAC7CwL,EAAM,EAAIJ,EAAMG,EAEtBhH,KAAKkH,EAAIm0J,GAASp0J,EAAGD,EAAGL,EAAI,EAAI,GAChC3G,KAAK0G,EAAI20J,GAASp0J,EAAGD,EAAGL,GACxB3G,KAAKuG,EAAI80J,GAASp0J,EAAGD,EAAGL,EAAI,EAAI,EAEjC,CAIA,OAFA6zJ,GAAgBQ,oBAAqBh7J,KAAM26J,GAEpC36J,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU4L,GAAqC,IAe1CvD,EAfY6zJ,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAE7B,SAASsM,EAAa1iJ,QAELhP,IAAXgP,GAEAlI,WAAYkI,GAAW,GAE3BrF,QAAQk/C,KAAM,mCAAqC5oD,EAAQ,oBAI7D,CAKA,GAAKvD,EAAI,+BAA+BkP,KAAM3L,GAAU,CAIvD,IAAIm9B,EACEruC,EAAO2N,EAAG,GACVi1J,EAAaj1J,EAAG,GAEtB,OAAS3N,GAER,IAAK,MACL,IAAK,OAEJ,GAAKquC,EAAQ,+DAA+DxxB,KAAM+lJ,GAWjF,OARA/7J,KAAKkH,EAAIjK,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IACvDxnC,KAAK0G,EAAIzJ,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IACvDxnC,KAAKuG,EAAItJ,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IAEvDgzH,GAAgBQ,oBAAqBh7J,KAAM26J,GAE3CmB,EAAat0H,EAAO,IAEbxnC,KAIR,GAAKwnC,EAAQ,qEAAqExxB,KAAM+lJ,GAWvF,OARA/7J,KAAKkH,EAAIjK,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IACvDxnC,KAAK0G,EAAIzJ,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IACvDxnC,KAAKuG,EAAItJ,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IAEvDgzH,GAAgBQ,oBAAqBh7J,KAAM26J,GAE3CmB,EAAat0H,EAAO,IAEbxnC,KAIR,MAED,IAAK,MACL,IAAK,OAEJ,GAAKwnC,EAAQ,qFAAqFxxB,KAAM+lJ,GAAe,CAGtH,IAAMp1J,EAAIuK,WAAYs2B,EAAO,IAAQ,IAC/B/rC,EAAIyV,WAAYs2B,EAAO,IAAQ,IAC/B3gC,EAAIqK,WAAYs2B,EAAO,IAAQ,IAIrC,OAFAs0H,EAAat0H,EAAO,IAEbxnC,KAAKg8J,OAAQr1J,EAAGlL,EAAGoL,EAAG8zJ,EAE9B,EAMH,MAAO,GAAK7zJ,EAAI,oBAAoBkP,KAAM3L,GAAU,CAInD,IAAMwxJ,EAAM/0J,EAAG,GACTy+C,EAAOs2G,EAAIjkK,OAEjB,GAAc,IAAT2tD,EASJ,OANAvlD,KAAKkH,EAAIiK,SAAU0qJ,EAAInrJ,OAAQ,GAAMmrJ,EAAInrJ,OAAQ,GAAK,IAAO,IAC7D1Q,KAAK0G,EAAIyK,SAAU0qJ,EAAInrJ,OAAQ,GAAMmrJ,EAAInrJ,OAAQ,GAAK,IAAO,IAC7D1Q,KAAKuG,EAAI4K,SAAU0qJ,EAAInrJ,OAAQ,GAAMmrJ,EAAInrJ,OAAQ,GAAK,IAAO,IAE7D8pJ,GAAgBQ,oBAAqBh7J,KAAM26J,GAEpC36J,KAED,GAAc,IAATulD,EASX,OANAvlD,KAAKkH,EAAIiK,SAAU0qJ,EAAInrJ,OAAQ,GAAMmrJ,EAAInrJ,OAAQ,GAAK,IAAO,IAC7D1Q,KAAK0G,EAAIyK,SAAU0qJ,EAAInrJ,OAAQ,GAAMmrJ,EAAInrJ,OAAQ,GAAK,IAAO,IAC7D1Q,KAAKuG,EAAI4K,SAAU0qJ,EAAInrJ,OAAQ,GAAMmrJ,EAAInrJ,OAAQ,GAAK,IAAO,IAE7D8pJ,GAAgBQ,oBAAqBh7J,KAAM26J,GAEpC36J,IAIT,CAEA,OAAKqK,GAASA,EAAMzS,OAAS,EAErBoI,KAAKi8J,aAAc5xJ,EAAOswJ,GAI3B36J,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc4L,GAAqC,IAA9BswJ,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAG3BqM,EAAMZ,GAAgB5wJ,EAAMrS,eAclC,YAZaoS,IAARyxJ,EAGJ77J,KAAK27J,OAAQE,EAAKlB,GAKlB5mJ,QAAQk/C,KAAM,8BAAgC5oD,GAIxCrK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAKkH,EAAGlH,KAAK0G,EAAG1G,KAAKuG,EAEnD,GAAC,CAAA/D,IAAA,OAAA/D,MAED,SAAM+oC,GAML,OAJAxnC,KAAKkH,EAAIsgC,EAAMtgC,EACflH,KAAK0G,EAAI8gC,EAAM9gC,EACf1G,KAAKuG,EAAIihC,EAAMjhC,EAERvG,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB+oC,GAMjB,OAJAxnC,KAAKkH,EAAIkzJ,GAAc5yH,EAAMtgC,GAC7BlH,KAAK0G,EAAI0zJ,GAAc5yH,EAAM9gC,GAC7B1G,KAAKuG,EAAI6zJ,GAAc5yH,EAAMjhC,GAEtBvG,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB+oC,GAMjB,OAJAxnC,KAAKkH,EAAImzJ,GAAc7yH,EAAMtgC,GAC7BlH,KAAK0G,EAAI2zJ,GAAc7yH,EAAM9gC,GAC7B1G,KAAKuG,EAAI8zJ,GAAc7yH,EAAMjhC,GAEtBvG,IAER,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,WAIC,OAFAuB,KAAKk8J,iBAAkBl8J,MAEhBA,IAER,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,WAIC,OAFAuB,KAAKm8J,iBAAkBn8J,MAEhBA,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAAsC,IAA9Bk8J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAIpB,OAFAgL,GAAgBO,sBAAuBO,GAAct7J,KAAMk7J,IAAQP,GAE5DzI,GAAgB,IAATgJ,GAAKh0J,EAAS,EAAG,MAAS,GAAKgrJ,GAAgB,IAATgJ,GAAKx0J,EAAS,EAAG,MAAS,EAAIwrJ,GAAgB,IAATgJ,GAAK30J,EAAS,EAAG,MAAS,CAEpH,GAAC,CAAA/D,IAAA,eAAA/D,MAED,WAA4C,IAA9Bk8J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAE1B,OAAS,SAAWxvJ,KAAKo8J,OAAQzB,GAAal6J,SAAU,KAAOmQ,OAAS,EAEzE,GAAC,CAAApO,IAAA,SAAA/D,MAED,SAAQ8C,GAA4C,IAApCo5J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGwvJ,GAI5B+K,GAAgBO,sBAAuBO,GAAct7J,KAAMk7J,IAAQP,GAEnE,IAKI0B,EAAKC,EALHp1J,EAAIg0J,GAAKh0J,EAAGR,EAAIw0J,GAAKx0J,EAAGH,EAAI20J,GAAK30J,EAEjCrJ,EAAMD,KAAKC,IAAKgK,EAAGR,EAAGH,GACtB2kC,EAAMjuC,KAAKiuC,IAAKhkC,EAAGR,EAAGH,GAGtBg2J,GAAcrxH,EAAMhuC,GAAQ,EAElC,GAAKguC,IAAQhuC,EAEZm/J,EAAM,EACNC,EAAa,MAEP,CAEN,IAAMl/J,EAAQF,EAAMguC,EAIpB,OAFAoxH,EAAaC,GAAa,GAAMn/J,GAAUF,EAAMguC,GAAQ9tC,GAAU,EAAIF,EAAMguC,GAEnEhuC,GAER,KAAKgK,EAAGm1J,GAAQ31J,EAAIH,GAAMnJ,GAAUsJ,EAAIH,EAAI,EAAI,GAAK,MACrD,KAAKG,EAAG21J,GAAQ91J,EAAIW,GAAM9J,EAAQ,EAAG,MACrC,KAAKmJ,EAAG81J,GAAQn1J,EAAIR,GAAMtJ,EAAQ,EAInCi/J,GAAO,CAER,CAMA,OAJA96J,EAAOoF,EAAI01J,EACX96J,EAAO9F,EAAI6gK,EACX/6J,EAAOsF,EAAI01J,EAEJh7J,CAER,GAAC,CAAAiB,IAAA,SAAA/D,MAED,SAAQ8C,GAA4C,IAApCo5J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGwvJ,GAQ5B,OANA+K,GAAgBO,sBAAuBO,GAAct7J,KAAMk7J,IAAQP,GAEnEp5J,EAAO2F,EAAIg0J,GAAKh0J,EAChB3F,EAAOmF,EAAIw0J,GAAKx0J,EAChBnF,EAAOgF,EAAI20J,GAAK30J,EAEThF,CAER,GAAC,CAAAiB,IAAA,WAAA/D,MAED,WAAwC,IAA9Bk8J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAItB,OAFAgL,GAAgBO,sBAAuBO,GAAct7J,KAAMk7J,IAAQP,GAE9DA,IAAenL,GAGZ,SAAP/tJ,OAAiBk5J,EAAU,KAAAl5J,OAAMy5J,GAAKh0J,EAAC,KAAAzF,OAAMy5J,GAAKx0J,EAAC,KAAAjF,OAAMy5J,GAAK30J,EAAC,KAIzD,OAAP9E,OAAyB,IAATy5J,GAAKh0J,EAAY,EAAC,KAAAzF,OAAe,IAATy5J,GAAKx0J,EAAY,EAAC,KAAAjF,OAAe,IAATy5J,GAAK30J,EAAY,EAAC,IAEnF,GAAC,CAAA/D,IAAA,YAAA/D,MAED,SAAWkI,EAAGlL,EAAGoL,GAQhB,OANA7G,KAAKw8J,OAAQrB,IAEbA,GAAMx0J,GAAKA,EAAGw0J,GAAM1/J,GAAKA,EAAG0/J,GAAMt0J,GAAKA,EAEvC7G,KAAKg8J,OAAQb,GAAMx0J,EAAGw0J,GAAM1/J,EAAG0/J,GAAMt0J,GAE9B7G,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK+oC,GAMJ,OAJAxnC,KAAKkH,GAAKsgC,EAAMtgC,EAChBlH,KAAK0G,GAAK8gC,EAAM9gC,EAChB1G,KAAKuG,GAAKihC,EAAMjhC,EAETvG,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWg+J,EAAQC,GAMlB,OAJA18J,KAAKkH,EAAIu1J,EAAOv1J,EAAIw1J,EAAOx1J,EAC3BlH,KAAK0G,EAAI+1J,EAAO/1J,EAAIg2J,EAAOh2J,EAC3B1G,KAAKuG,EAAIk2J,EAAOl2J,EAAIm2J,EAAOn2J,EAEpBvG,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAMV,OAJAuE,KAAKkH,GAAKzL,EACVuE,KAAK0G,GAAKjL,EACVuE,KAAKuG,GAAK9K,EAEHuE,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK+oC,GAMJ,OAJAxnC,KAAKkH,EAAIjK,KAAKC,IAAK,EAAG8C,KAAKkH,EAAIsgC,EAAMtgC,GACrClH,KAAK0G,EAAIzJ,KAAKC,IAAK,EAAG8C,KAAK0G,EAAI8gC,EAAM9gC,GACrC1G,KAAKuG,EAAItJ,KAAKC,IAAK,EAAG8C,KAAKuG,EAAIihC,EAAMjhC,GAE9BvG,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU+oC,GAMT,OAJAxnC,KAAKkH,GAAKsgC,EAAMtgC,EAChBlH,KAAK0G,GAAK8gC,EAAM9gC,EAChB1G,KAAKuG,GAAKihC,EAAMjhC,EAETvG,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBhD,GAMf,OAJAuE,KAAKkH,GAAKzL,EACVuE,KAAK0G,GAAKjL,EACVuE,KAAKuG,GAAK9K,EAEHuE,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+oC,EAAOuuH,GAMZ,OAJA/1J,KAAKkH,IAAOsgC,EAAMtgC,EAAIlH,KAAKkH,GAAM6uJ,EACjC/1J,KAAK0G,IAAO8gC,EAAM9gC,EAAI1G,KAAK0G,GAAMqvJ,EACjC/1J,KAAKuG,IAAOihC,EAAMjhC,EAAIvG,KAAKuG,GAAMwvJ,EAE1B/1J,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYg+J,EAAQC,EAAQ3G,GAM3B,OAJA/1J,KAAKkH,EAAIu1J,EAAOv1J,GAAMw1J,EAAOx1J,EAAIu1J,EAAOv1J,GAAM6uJ,EAC9C/1J,KAAK0G,EAAI+1J,EAAO/1J,GAAMg2J,EAAOh2J,EAAI+1J,EAAO/1J,GAAMqvJ,EAC9C/1J,KAAKuG,EAAIk2J,EAAOl2J,GAAMm2J,EAAOn2J,EAAIk2J,EAAOl2J,GAAMwvJ,EAEvC/1J,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAAS+oC,EAAOuuH,GAEf/1J,KAAKw8J,OAAQrB,IACb3zH,EAAMg1H,OAAQpB,IAEd,IAAMz0J,EAAIyrJ,GAAM+I,GAAMx0J,EAAGy0J,GAAMz0J,EAAGovJ,GAC5Bt6J,EAAI22J,GAAM+I,GAAM1/J,EAAG2/J,GAAM3/J,EAAGs6J,GAC5BlvJ,EAAIurJ,GAAM+I,GAAMt0J,EAAGu0J,GAAMv0J,EAAGkvJ,GAIlC,OAFA/1J,KAAKg8J,OAAQr1J,EAAGlL,EAAGoL,GAEZ7G,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQxC,GAEP,OAASA,EAAEiL,IAAMlH,KAAKkH,GAASjL,EAAEyK,IAAM1G,KAAK0G,GAASzK,EAAEsK,IAAMvG,KAAKuG,CAEnE,GAAC,CAAA/D,IAAA,YAAA/D,MAED,SAAWsE,GAAoB,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAM1B,OAJAD,KAAKkH,EAAInE,EAAOgnC,GAChB/pC,KAAK0G,EAAI3D,EAAOgnC,EAAS,GACzB/pC,KAAKuG,EAAIxD,EAAOgnC,EAAS,GAElB/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAM7B,OAJA8C,EAAOgnC,GAAW/pC,KAAKkH,EACvBnE,EAAOgnC,EAAS,GAAM/pC,KAAK0G,EAC3B3D,EAAOgnC,EAAS,GAAM/pC,KAAKuG,EAEpBxD,CAER,GAAC,CAAAP,IAAA,sBAAA/D,MAED,SAAqBy3J,EAAWtnJ,GAM/B,OAJA5O,KAAKkH,EAAIgvJ,EAAUC,KAAMvnJ,GACzB5O,KAAK0G,EAAIwvJ,EAAUE,KAAMxnJ,GACzB5O,KAAKuG,EAAI2vJ,EAAUyG,KAAM/tJ,GAElB5O,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,OAAOuB,KAAKo8J,QAEb,GAAC,CAAA55J,IAEE1B,OAAOrE,SAAQgC,MAAAq+E,EAAAA,MAAlB,SAAAr+E,IAAA,OAAAq+E,EAAAA,MAAA,SAAAgkF,GAAA,cAAAA,EAAA79J,KAAA69J,EAAA59J,MAAA,OAEC,OAFD49J,EAAA59J,KAAA,EAEOlD,KAAKkH,EAAC,OACZ,OADY45J,EAAA59J,KAAA,EACNlD,KAAK0G,EAAC,OACZ,OADYo6J,EAAA59J,KAAA,EACNlD,KAAKuG,EAAC,wBAAAu6J,EAAAryF,OAAA,GAAAhwE,EAAA,YAEZ88J,CAAA,CAhiBS,GAoiBXA,GAAMsB,MAAQ5B,GAEF,IAEN6B,GAAU,oBAAAA,IAAAryJ,EAAA,KAAAqyJ,EAAA,CAuHd,OAvHcvzJ,EAAAuzJ,EAAA,OAAAt6J,IAAA,aAAA/D,MAEf,SAAmB06I,GAElB,GAAK,UAAUjhJ,KAAMihJ,EAAMhnI,KAE1B,OAAOgnI,EAAMhnI,IAId,GAAiC,oBAArB4qJ,kBAEX,OAAO5jB,EAAMhnI,IAId,IAAI6mI,EAEJ,GAAKG,aAAiB4jB,kBAErB/jB,EAASG,MAEH,MAEW/uI,IAAZsuI,KAAwBA,GAAUlzF,GAAiB,WAExDkzF,GAAQvqI,MAAQgrI,EAAMhrI,MACtBuqI,GAAQtqI,OAAS+qI,EAAM/qI,OAEvB,IAAM7O,EAAUm5I,GAAQO,WAAY,MAE/BE,aAAiB6jB,UAErBz9J,EAAQ09J,aAAc9jB,EAAO,EAAG,GAIhC55I,EAAQu6I,UAAWX,EAAO,EAAG,EAAGA,EAAMhrI,MAAOgrI,EAAM/qI,QAIpD4qI,EAASN,EAEV,CAEA,OAAKM,EAAO7qI,MAAQ,MAAQ6qI,EAAO5qI,OAAS,MAE3C2F,QAAQk/C,KAAM,8EAA+EkmF,GAEtFH,EAAOkkB,UAAW,aAAc,KAIhClkB,EAAOkkB,UAAW,YAI3B,GAAC,CAAA16J,IAAA,eAAA/D,MAED,SAAqB06I,GAEpB,GAAmC,qBAArBgkB,kBAAoChkB,aAAiBgkB,kBACnC,qBAAtBJ,mBAAqC5jB,aAAiB4jB,mBACtC,qBAAhBK,aAA+BjkB,aAAiBikB,YAAgB,CAEzE,IAAMpkB,EAASxzF,GAAiB,UAEhCwzF,EAAO7qI,MAAQgrI,EAAMhrI,MACrB6qI,EAAO5qI,OAAS+qI,EAAM/qI,OAEtB,IAAM7O,EAAUy5I,EAAOC,WAAY,MACnC15I,EAAQu6I,UAAWX,EAAO,EAAG,EAAGA,EAAMhrI,MAAOgrI,EAAM/qI,QAKnD,IAHA,IAAMivJ,EAAY99J,EAAQ+9J,aAAc,EAAG,EAAGnkB,EAAMhrI,MAAOgrI,EAAM/qI,QAC3Ds1B,EAAO25H,EAAU35H,KAEbhnC,EAAI,EAAGA,EAAIgnC,EAAK9rC,OAAQ8E,IAEjCgnC,EAAMhnC,GAAwC,IAAlC09J,GAAc12H,EAAMhnC,GAAM,KAMvC,OAFA6C,EAAQ09J,aAAcI,EAAW,EAAG,GAE7BrkB,CAER,CAAO,GAAKG,EAAMz1G,KAAO,CAIxB,IAFA,IAAMA,EAAOy1G,EAAMz1G,KAAK9yB,MAAO,GAErBlU,EAAI,EAAGA,EAAIgnC,EAAK9rC,OAAQ8E,IAE5BgnC,aAAgB6xE,YAAc7xE,aAAgBq2H,kBAElDr2H,EAAMhnC,GAAMO,KAAKwf,MAAyC,IAAlC29I,GAAc12H,EAAMhnC,GAAM,MAMlDgnC,EAAMhnC,GAAM09J,GAAc12H,EAAMhnC,IAMlC,MAAO,CACNgnC,KAAMA,EACNv1B,MAAOgrI,EAAMhrI,MACbC,OAAQ+qI,EAAM/qI,OAGhB,CAGC,OADA2F,QAAQk/C,KAAM,+FACPkmF,CAIT,KAAC2jB,CAAA,CAvHc,GA2HVS,GAAM,WAEX,SAAAA,IAA2B,IAAd75H,EAAIzjC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAIwK,EAAA,KAAA8yJ,GAEvBv9J,KAAK69J,UAAW,EAEhB79J,KAAK67G,KAAOg2C,KAEZ7xJ,KAAK0jC,KAAOA,EAEZ1jC,KAAK3G,QAAU,CAEhB,CAqEC,OArEAkQ,EAAAg0J,EAAA,EAAA/6J,IAAA,cAAAysB,IAED,SAAiBxwB,IAED,IAAVA,GAAiBuB,KAAK3G,SAE5B,GAAC,CAAAmJ,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMknI,OAA0BpzJ,IAATksB,GAAsC,kBAATA,EAEpD,IAAOknI,QAA6CpzJ,IAA7BksB,EAAKmnI,OAAQz9J,KAAK67G,MAExC,OAAOvlF,EAAKmnI,OAAQz9J,KAAK67G,MAI1B,IAAMh9B,EAAS,CACdg9B,KAAM77G,KAAK67G,KACX3zE,IAAK,IAGAxE,EAAO1jC,KAAK0jC,KAElB,GAAc,OAATA,EAAgB,CAEpB,IAAIwE,EAEJ,GAAKvrC,MAAM0E,QAASqiC,GAAS,CAI5BwE,EAAM,GAEN,IAAM,IAAIxrC,EAAI,EAAGmK,EAAI68B,EAAK9rC,OAAQ8E,EAAImK,EAAGnK,IAEnCgnC,EAAMhnC,GAAIghK,cAEdx1H,EAAIprC,KAAM6gK,GAAgBj6H,EAAMhnC,GAAIy8I,QAIpCjxG,EAAIprC,KAAM6gK,GAAgBj6H,EAAMhnC,IAMnC,MAICwrC,EAAMy1H,GAAgBj6H,GAIvBm7C,EAAO32C,IAAMA,CAEd,CAQA,OANOs1H,IAENlnI,EAAKmnI,OAAQz9J,KAAK67G,MAASh9B,GAIrBA,CAER,KAAC0+E,CAAA,CAjFU,GAqFZ,SAASI,GAAgBxkB,GAExB,MAAmC,qBAArBgkB,kBAAoChkB,aAAiBgkB,kBACnC,qBAAtBJ,mBAAqC5jB,aAAiB4jB,mBACtC,qBAAhBK,aAA+BjkB,aAAiBikB,YAIlDN,GAAWc,WAAYzkB,GAIzBA,EAAMz1G,KAIH,CACNA,KAAM/mC,MAAM0lB,KAAM82H,EAAMz1G,MACxBv1B,MAAOgrI,EAAMhrI,MACbC,OAAQ+qI,EAAM/qI,OACdxJ,KAAMu0I,EAAMz1G,KAAKvpB,YAAYhhB,OAK9B4a,QAAQk/C,KAAM,+CACP,CAAC,EAMX,CAEA,IAAI6qG,GAAY,EAEVC,GAAO,SAAAC,GAAAhiJ,EAAA+hJ,EAAAC,GAAA,IAAA/hJ,EAAAtB,EAAAojJ,GAEZ,SAAAA,IAAmS,IAAApvF,EAAtRwqE,EAAKl5I,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG89J,EAAQE,cAAe3Z,EAAOrkJ,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG89J,EAAQG,gBAAiBC,EAAKl+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGqqJ,GAAqB8T,EAAKn+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGqqJ,GAAqB+T,EAASp+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG4qJ,GAAcyT,EAASr+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG+qJ,GAA0BuT,EAAMt+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG8rJ,GAAYnnJ,EAAI3E,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGirJ,GAAkBsT,EAAUv+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGw+J,EAAQx+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGgvJ,GAsDlP,OAtDgQxkJ,EAAA,KAAAszJ,IAE/RpvF,EAAA1yD,EAAApf,KAAA,OAEK8iK,WAAY,EAEjBphK,OAAOC,eAAcgd,EAAAmzD,GAAQ,KAAM,CAAElwE,MAAOq/J,OAE5CnvF,EAAKktC,KAAOg2C,KAEZljF,EAAKx1E,KAAO,GAEZw1E,EAAKntE,OAAS,IAAI+7J,GAAQpkB,GAC1BxqE,EAAK+vF,QAAU,GAEf/vF,EAAK21E,QAAUA,EAEf31E,EAAKwvF,MAAQA,EACbxvF,EAAKyvF,MAAQA,EAEbzvF,EAAK0vF,UAAYA,EACjB1vF,EAAK2vF,UAAYA,EAEjB3vF,EAAK6vF,WAAaA,EAElB7vF,EAAK4vF,OAASA,EACd5vF,EAAKgwF,eAAiB,KACtBhwF,EAAK/pE,KAAOA,EAEZ+pE,EAAK5kC,OAAS,IAAIorH,GAAS,EAAG,GAC9BxmF,EAAKzpC,OAAS,IAAIiwH,GAAS,EAAG,GAC9BxmF,EAAK0nF,OAAS,IAAIlB,GAAS,EAAG,GAC9BxmF,EAAK2qF,SAAW,EAEhB3qF,EAAKiwF,kBAAmB,EACxBjwF,EAAK+qF,OAAS,IAAIlD,GAElB7nF,EAAKkwF,iBAAkB,EACvBlwF,EAAKmwF,kBAAmB,EACxBnwF,EAAKowF,OAAQ,EACbpwF,EAAKqwF,gBAAkB,EAMvBrwF,EAAK8vF,SAAWA,EAEhB9vF,EAAKswF,SAAW,CAAC,EAEjBtwF,EAAKt1E,QAAU,EACfs1E,EAAKuwF,SAAW,KAEhBvwF,EAAKwwF,uBAAwB,EAC7BxwF,EAAKywF,kBAAmB,EAAOzwF,CAEhC,CA+NC,OA/NAplE,EAAAw0J,EAAA,EAAAv7J,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAKwB,OAAOkiC,IAEpB,EAACzU,IAED,SAAWxwB,GAEVuB,KAAKwB,OAAOkiC,KAAOjlC,CAEpB,GAAC,CAAA+D,IAAA,eAAA/D,MAED,WAECuB,KAAK05J,OAAO2F,eAAgBr/J,KAAK+pC,OAAO7tC,EAAG8D,KAAK+pC,OAAO1iC,EAAGrH,KAAKklC,OAAOhpC,EAAG8D,KAAKklC,OAAO79B,EAAGrH,KAAKs5J,SAAUt5J,KAAKq2J,OAAOn6J,EAAG8D,KAAKq2J,OAAOhvJ,EAEnI,GAAC,CAAA7E,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAuCL,OArCAxB,KAAK7G,KAAOqI,EAAOrI,KAEnB6G,KAAKwB,OAASA,EAAOA,OACrBxB,KAAK0+J,QAAUl9J,EAAOk9J,QAAQ9tJ,MAAO,GAErC5Q,KAAKskJ,QAAU9iJ,EAAO8iJ,QAEtBtkJ,KAAKm+J,MAAQ38J,EAAO28J,MACpBn+J,KAAKo+J,MAAQ58J,EAAO48J,MAEpBp+J,KAAKq+J,UAAY78J,EAAO68J,UACxBr+J,KAAKs+J,UAAY98J,EAAO88J,UAExBt+J,KAAKw+J,WAAah9J,EAAOg9J,WAEzBx+J,KAAKu+J,OAAS/8J,EAAO+8J,OACrBv+J,KAAK2+J,eAAiBn9J,EAAOm9J,eAC7B3+J,KAAK4E,KAAOpD,EAAOoD,KAEnB5E,KAAK+pC,OAAO2xH,KAAMl6J,EAAOuoC,QACzB/pC,KAAKklC,OAAOw2H,KAAMl6J,EAAO0jC,QACzBllC,KAAKq2J,OAAOqF,KAAMl6J,EAAO60J,QACzBr2J,KAAKs5J,SAAW93J,EAAO83J,SAEvBt5J,KAAK4+J,iBAAmBp9J,EAAOo9J,iBAC/B5+J,KAAK05J,OAAOgC,KAAMl6J,EAAOk4J,QAEzB15J,KAAK6+J,gBAAkBr9J,EAAOq9J,gBAC9B7+J,KAAK8+J,iBAAmBt9J,EAAOs9J,iBAC/B9+J,KAAK++J,MAAQv9J,EAAOu9J,MACpB/+J,KAAKg/J,gBAAkBx9J,EAAOw9J,gBAC9Bh/J,KAAKy+J,SAAWj9J,EAAOi9J,SAEvBz+J,KAAKi/J,SAAWlxG,KAAK4yC,MAAO5yC,KAAKC,UAAWxsD,EAAOy9J,WAEnDj/J,KAAKs/J,aAAc,EAEZt/J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMknI,OAA0BpzJ,IAATksB,GAAsC,kBAATA,EAEpD,IAAOknI,QAA+CpzJ,IAA/BksB,EAAKipI,SAAUv/J,KAAK67G,MAE1C,OAAOvlF,EAAKipI,SAAUv/J,KAAK67G,MAI5B,IAAMh9B,EAAS,CAEd4/B,SAAU,CACTplH,QAAS,IACTuL,KAAM,UACNgrF,UAAW,kBAGZisB,KAAM77G,KAAK67G,KACX1iH,KAAM6G,KAAK7G,KAEXggJ,MAAOn5I,KAAKwB,OAAOg+J,OAAQlpI,GAAOulF,KAElCyoC,QAAStkJ,KAAKskJ,QAEdp/G,OAAQ,CAAEllC,KAAKklC,OAAOhpC,EAAG8D,KAAKklC,OAAO79B,GACrC0iC,OAAQ,CAAE/pC,KAAK+pC,OAAO7tC,EAAG8D,KAAK+pC,OAAO1iC,GACrCgvJ,OAAQ,CAAEr2J,KAAKq2J,OAAOn6J,EAAG8D,KAAKq2J,OAAOhvJ,GACrCiyJ,SAAUt5J,KAAKs5J,SAEfxrJ,KAAM,CAAE9N,KAAKm+J,MAAOn+J,KAAKo+J,OAEzBG,OAAQv+J,KAAKu+J,OACb35J,KAAM5E,KAAK4E,KACX65J,SAAUz+J,KAAKy+J,SAEfH,UAAWt+J,KAAKs+J,UAChBD,UAAWr+J,KAAKq+J,UAChBG,WAAYx+J,KAAKw+J,WAEjBO,MAAO/+J,KAAK++J,MAEZD,iBAAkB9+J,KAAK8+J,iBACvBE,gBAAiBh/J,KAAKg/J,iBAYvB,MARyC,OAApCjxG,KAAKC,UAAWhuD,KAAKi/J,YAAsBpgF,EAAOogF,SAAWj/J,KAAKi/J,UAEhEzB,IAENlnI,EAAKipI,SAAUv/J,KAAK67G,MAASh9B,GAIvBA,CAER,GAAC,CAAAr8E,IAAA,UAAA/D,MAED,WAECuB,KAAKu+B,cAAe,CAAE35B,KAAM,WAE7B,GAAC,CAAApC,IAAA,cAAA/D,MAED,SAAaghK,GAEZ,GAh7EgB,MAg7EXz/J,KAAKskJ,QAAwB,OAAOmb,EAIzC,GAFAA,EAAGC,aAAc1/J,KAAK05J,QAEjB+F,EAAGvjK,EAAI,GAAKujK,EAAGvjK,EAAI,EAEvB,OAAS8D,KAAKm+J,OAEb,KAAK9T,GAEJoV,EAAGvjK,EAAIujK,EAAGvjK,EAAIe,KAAKwf,MAAOgjJ,EAAGvjK,GAC7B,MAED,KAAKouJ,GAEJmV,EAAGvjK,EAAIujK,EAAGvjK,EAAI,EAAI,EAAI,EACtB,MAED,KAAKquJ,GAEwC,IAAvCttJ,KAAK4f,IAAK5f,KAAKwf,MAAOgjJ,EAAGvjK,GAAM,GAEnCujK,EAAGvjK,EAAIe,KAAKurD,KAAMi3G,EAAGvjK,GAAMujK,EAAGvjK,EAI9BujK,EAAGvjK,EAAIujK,EAAGvjK,EAAIe,KAAKwf,MAAOgjJ,EAAGvjK,GAUjC,GAAKujK,EAAGp4J,EAAI,GAAKo4J,EAAGp4J,EAAI,EAEvB,OAASrH,KAAKo+J,OAEb,KAAK/T,GAEJoV,EAAGp4J,EAAIo4J,EAAGp4J,EAAIpK,KAAKwf,MAAOgjJ,EAAGp4J,GAC7B,MAED,KAAKijJ,GAEJmV,EAAGp4J,EAAIo4J,EAAGp4J,EAAI,EAAI,EAAI,EACtB,MAED,KAAKkjJ,GAEwC,IAAvCttJ,KAAK4f,IAAK5f,KAAKwf,MAAOgjJ,EAAGp4J,GAAM,GAEnCo4J,EAAGp4J,EAAIpK,KAAKurD,KAAMi3G,EAAGp4J,GAAMo4J,EAAGp4J,EAI9Bo4J,EAAGp4J,EAAIo4J,EAAGp4J,EAAIpK,KAAKwf,MAAOgjJ,EAAGp4J,GAgBjC,OANKrH,KAAK++J,QAETU,EAAGp4J,EAAI,EAAIo4J,EAAGp4J,GAIRo4J,CAER,GAAC,CAAAj9J,IAAA,cAAAysB,IAED,SAAiBxwB,IAED,IAAVA,IAEJuB,KAAK3G,UACL2G,KAAKwB,OAAO89J,aAAc,EAI5B,KAACvB,CAAA,CAzRW,CAASzM,IA6RtByM,GAAQE,cAAgB,KACxBF,GAAQG,gBA5gFU,IA4gFkB,IAE9B0B,GAAO,WAEZ,SAAAA,IAA0C,IAA7B1jK,EAAC+D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqH,EAACrH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmH,EAACnH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAm1J,GAEtCA,EAAQhjK,UAAUmkK,WAAY,EAE9B/gK,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EACTrH,KAAKsH,EAAIA,EACTtH,KAAKoH,EAAIA,CAEV,CAonBC,OApnBAmC,EAAAq2J,EAAA,EAAAp9J,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAKsH,CAEb,EAAC2nB,IAED,SAAWxwB,GAEVuB,KAAKsH,EAAI7I,CAEV,GAAC,CAAA+D,IAAA,SAAAutB,IAED,WAEC,OAAO/vB,KAAKoH,CAEb,EAAC6nB,IAED,SAAYxwB,GAEXuB,KAAKoH,EAAI3I,CAEV,GAAC,CAAA+D,IAAA,MAAA/D,MAED,SAAKvC,EAAGmL,EAAGC,EAAGF,GAOb,OALApH,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EACTrH,KAAKsH,EAAIA,EACTtH,KAAKoH,EAAIA,EAEFpH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW22J,GAOV,OALAp1J,KAAK9D,EAAIk5J,EACTp1J,KAAKqH,EAAI+tJ,EACTp1J,KAAKsH,EAAI8tJ,EACTp1J,KAAKoH,EAAIguJ,EAEFp1J,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMvC,GAIL,OAFA8D,KAAK9D,EAAIA,EAEF8D,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM4I,GAIL,OAFArH,KAAKqH,EAAIA,EAEFrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM6I,GAIL,OAFAtH,KAAKsH,EAAIA,EAEFtH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM2I,GAIL,OAFApH,KAAKoH,EAAIA,EAEFpH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,EAAOnQ,GAEpB,OAASmQ,GAER,KAAK,EAAG5O,KAAK9D,EAAIuC,EAAO,MACxB,KAAK,EAAGuB,KAAKqH,EAAI5I,EAAO,MACxB,KAAK,EAAGuB,KAAKsH,EAAI7I,EAAO,MACxB,KAAK,EAAGuB,KAAKoH,EAAI3I,EAAO,MACxB,QAAS,MAAM,IAAIX,MAAO,0BAA4B8Q,GAIvD,OAAO5O,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,GAEb,OAASA,GAER,KAAK,EAAG,OAAO5O,KAAK9D,EACpB,KAAK,EAAG,OAAO8D,KAAKqH,EACpB,KAAK,EAAG,OAAOrH,KAAKsH,EACpB,KAAK,EAAG,OAAOtH,KAAKoH,EACpB,QAAS,MAAM,IAAItJ,MAAO,0BAA4B8Q,GAIxD,GAAC,CAAApM,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAK9D,EAAG8D,KAAKqH,EAAGrH,KAAKsH,EAAGtH,KAAKoH,EAE3D,GAAC,CAAA5E,IAAA,OAAA/D,MAED,SAAM0I,GAOL,OALAnH,KAAK9D,EAAIiL,EAAEjL,EACX8D,KAAKqH,EAAIF,EAAEE,EACXrH,KAAKsH,EAAIH,EAAEG,EACXtH,KAAKoH,OAAcgD,IAARjD,EAAEC,EAAoBD,EAAEC,EAAI,EAEhCpH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAOJ,OALAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EACZtH,KAAKoH,GAAKD,EAAEC,EAELpH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAOV,OALAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EACVuE,KAAKsH,GAAK7L,EACVuE,KAAKoH,GAAK3L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAOd,OALAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EACjBrH,KAAKsH,EAAItL,EAAEsL,EAAIf,EAAEe,EACjBtH,KAAKoH,EAAIpL,EAAEoL,EAAIb,EAAEa,EAEVpH,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiB0I,EAAG1L,GAOnB,OALAuE,KAAK9D,GAAKiL,EAAEjL,EAAIT,EAChBuE,KAAKqH,GAAKF,EAAEE,EAAI5L,EAChBuE,KAAKsH,GAAKH,EAAEG,EAAI7L,EAChBuE,KAAKoH,GAAKD,EAAEC,EAAI3L,EAETuE,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAOJ,OALAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EACZtH,KAAKoH,GAAKD,EAAEC,EAELpH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAOV,OALAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EACVuE,KAAKsH,GAAK7L,EACVuE,KAAKoH,GAAK3L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAOd,OALAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EACjBrH,KAAKsH,EAAItL,EAAEsL,EAAIf,EAAEe,EACjBtH,KAAKoH,EAAIpL,EAAEoL,EAAIb,EAAEa,EAEVpH,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU0I,GAOT,OALAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EACZtH,KAAKoH,GAAKD,EAAEC,EAELpH,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB22J,GAOf,OALAp1J,KAAK9D,GAAKk5J,EACVp1J,KAAKqH,GAAK+tJ,EACVp1J,KAAKsH,GAAK8tJ,EACVp1J,KAAKoH,GAAKguJ,EAEHp1J,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM5K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EAAGC,EAAItH,KAAKsH,EAAGF,EAAIpH,KAAKoH,EAC7Cd,EAAIQ,EAAEk/H,SAOZ,OALAhmI,KAAK9D,EAAIoK,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAAIhB,EAAG,IAAOc,EAC1DpH,KAAKqH,EAAIf,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAAIhB,EAAG,IAAOc,EAC1DpH,KAAKsH,EAAIhB,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,IAAOgB,EAAIhB,EAAG,IAAOc,EAC3DpH,KAAKoH,EAAId,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,IAAOgB,EAAIhB,EAAG,IAAOc,EAEpDpH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc22J,GAEb,OAAOp1J,KAAKu1J,eAAgB,EAAIH,EAEjC,GAAC,CAAA5yJ,IAAA,6BAAA/D,MAED,SAA4BwI,GAM3BjH,KAAKoH,EAAI,EAAInK,KAAK4iK,KAAM54J,EAAEG,GAE1B,IAAM3L,EAAIwB,KAAK04J,KAAM,EAAI1uJ,EAAEG,EAAIH,EAAEG,GAgBjC,OAdK3L,EAAI,MAERuE,KAAK9D,EAAI,EACT8D,KAAKqH,EAAI,EACTrH,KAAKsH,EAAI,IAITtH,KAAK9D,EAAI+K,EAAE/K,EAAIT,EACfuE,KAAKqH,EAAIJ,EAAEI,EAAI5L,EACfuE,KAAKsH,EAAIL,EAAEK,EAAI7L,GAITuE,IAER,GAAC,CAAAwC,IAAA,iCAAA/D,MAED,SAAgCqI,GAM/B,IAAI8uJ,EAAO15J,EAAGmL,EAAGC,EACXw4J,EAAU,IACfC,EAAW,GAEXl3H,EAAK/hC,EAAEk/H,SAEPg6B,EAAMn3H,EAAI,GAAKo3H,EAAMp3H,EAAI,GAAKq3H,EAAMr3H,EAAI,GACxCs3H,EAAMt3H,EAAI,GAAKu3H,EAAMv3H,EAAI,GAAKw3H,EAAMx3H,EAAI,GACxCy3H,EAAMz3H,EAAI,GAAK03H,EAAM13H,EAAI,GAAK23H,EAAM33H,EAAI,IAEzC,GAAO5rC,KAAK4f,IAAKojJ,EAAME,GAAQL,GACxB7iK,KAAK4f,IAAKqjJ,EAAMI,GAAQR,GACxB7iK,KAAK4f,IAAKwjJ,EAAME,GAAQT,EAAY,CAM1C,GAAO7iK,KAAK4f,IAAKojJ,EAAME,GAAQJ,GACxB9iK,KAAK4f,IAAKqjJ,EAAMI,GAAQP,GACxB9iK,KAAK4f,IAAKwjJ,EAAME,GAAQR,GACxB9iK,KAAK4f,IAAKmjJ,EAAMI,EAAMI,EAAM,GAAMT,EAMxC,OAFA//J,KAAKivB,IAAK,EAAG,EAAG,EAAG,GAEZjvB,KAMR41J,EAAQ34J,KAAK00J,GAEb,IAAMnjB,GAAOwxB,EAAM,GAAM,EACnBvxB,GAAO2xB,EAAM,GAAM,EACnBK,GAAOD,EAAM,GAAM,EACnBE,GAAOT,EAAME,GAAQ,EACrBQ,GAAOT,EAAMI,GAAQ,EACrBM,GAAOP,EAAME,GAAQ,EA4D3B,OA1DO/xB,EAAKC,GAAUD,EAAKiyB,EAIrBjyB,EAAKsxB,GAET5jK,EAAI,EACJmL,EAAI,WACJC,EAAI,aAKJD,EAAIq5J,GADJxkK,EAAIe,KAAK04J,KAAMnnB,IAEflnI,EAAIq5J,EAAKzkK,GAICuyI,EAAKgyB,EAIXhyB,EAAKqxB,GAET5jK,EAAI,WACJmL,EAAI,EACJC,EAAI,aAKJpL,EAAIwkK,GADJr5J,EAAIpK,KAAK04J,KAAMlnB,IAEfnnI,EAAIs5J,EAAKv5J,GAQLo5J,EAAKX,GAET5jK,EAAI,WACJmL,EAAI,WACJC,EAAI,IAKJpL,EAAIykK,GADJr5J,EAAIrK,KAAK04J,KAAM8K,IAEfp5J,EAAIu5J,EAAKt5J,GAMXtH,KAAKivB,IAAK/yB,EAAGmL,EAAGC,EAAGsuJ,GAEZ51J,IAER,CAIA,IAAIvE,EAAIwB,KAAK04J,MAAQ4K,EAAMF,IAAUE,EAAMF,IACxCH,EAAMI,IAAUJ,EAAMI,IACtBH,EAAMF,IAAUE,EAAMF,IAYzB,OAVKhjK,KAAK4f,IAAKphB,GAAM,OAAQA,EAAI,GAKjCuE,KAAK9D,GAAMqkK,EAAMF,GAAQ5kK,EACzBuE,KAAKqH,GAAM64J,EAAMI,GAAQ7kK,EACzBuE,KAAKsH,GAAM64J,EAAMF,GAAQxkK,EACzBuE,KAAKoH,EAAInK,KAAK4iK,MAAQG,EAAMI,EAAMI,EAAM,GAAM,GAEvCxgK,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAOJ,OALAnH,KAAK9D,EAAIe,KAAKiuC,IAAKlrC,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKiuC,IAAKlrC,KAAKqH,EAAGF,EAAEE,GAC7BrH,KAAKsH,EAAIrK,KAAKiuC,IAAKlrC,KAAKsH,EAAGH,EAAEG,GAC7BtH,KAAKoH,EAAInK,KAAKiuC,IAAKlrC,KAAKoH,EAAGD,EAAEC,GAEtBpH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAOJ,OALAnH,KAAK9D,EAAIe,KAAKC,IAAK8C,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKC,IAAK8C,KAAKqH,EAAGF,EAAEE,GAC7BrH,KAAKsH,EAAIrK,KAAKC,IAAK8C,KAAKsH,EAAGH,EAAEG,GAC7BtH,KAAKoH,EAAInK,KAAKC,IAAK8C,KAAKoH,EAAGD,EAAEC,GAEtBpH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOysC,EAAKhuC,GASX,OALA8C,KAAK9D,EAAIe,KAAKC,IAAKguC,EAAIhvC,EAAGe,KAAKiuC,IAAKhuC,EAAIhB,EAAG8D,KAAK9D,IAChD8D,KAAKqH,EAAIpK,KAAKC,IAAKguC,EAAI7jC,EAAGpK,KAAKiuC,IAAKhuC,EAAImK,EAAGrH,KAAKqH,IAChDrH,KAAKsH,EAAIrK,KAAKC,IAAKguC,EAAI5jC,EAAGrK,KAAKiuC,IAAKhuC,EAAIoK,EAAGtH,KAAKsH,IAChDtH,KAAKoH,EAAInK,KAAKC,IAAKguC,EAAI9jC,EAAGnK,KAAKiuC,IAAKhuC,EAAIkK,EAAGpH,KAAKoH,IAEzCpH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAa+2J,EAAQC,GAOpB,OALAz1J,KAAK9D,EAAIe,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAK9D,IAClD8D,KAAKqH,EAAIpK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKqH,IAClDrH,KAAKsH,EAAIrK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKsH,IAClDtH,KAAKoH,EAAInK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKoH,IAE3CpH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAaysC,EAAKhuC,GAEjB,IAAMtF,EAASoI,KAAKpI,SAEpB,OAAOoI,KAAK01J,aAAc99J,GAAU,GAAI29J,eAAgBt4J,KAAKC,IAAKguC,EAAKjuC,KAAKiuC,IAAKhuC,EAAKtF,IAEvF,GAAC,CAAA4K,IAAA,QAAA/D,MAED,WAOC,OALAuB,KAAK9D,EAAIe,KAAKwf,MAAOzc,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAKwf,MAAOzc,KAAKqH,GAC1BrH,KAAKsH,EAAIrK,KAAKwf,MAAOzc,KAAKsH,GAC1BtH,KAAKoH,EAAInK,KAAKwf,MAAOzc,KAAKoH,GAEnBpH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAOC,OALAuB,KAAK9D,EAAIe,KAAKurD,KAAMxoD,KAAK9D,GACzB8D,KAAKqH,EAAIpK,KAAKurD,KAAMxoD,KAAKqH,GACzBrH,KAAKsH,EAAIrK,KAAKurD,KAAMxoD,KAAKsH,GACzBtH,KAAKoH,EAAInK,KAAKurD,KAAMxoD,KAAKoH,GAElBpH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAOC,OALAuB,KAAK9D,EAAIe,KAAK83J,MAAO/0J,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAK83J,MAAO/0J,KAAKqH,GAC1BrH,KAAKsH,EAAIrK,KAAK83J,MAAO/0J,KAAKsH,GAC1BtH,KAAKoH,EAAInK,KAAK83J,MAAO/0J,KAAKoH,GAEnBpH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAOC,OALAuB,KAAK9D,EAAM8D,KAAK9D,EAAI,EAAMe,KAAKurD,KAAMxoD,KAAK9D,GAAMe,KAAKwf,MAAOzc,KAAK9D,GACjE8D,KAAKqH,EAAMrH,KAAKqH,EAAI,EAAMpK,KAAKurD,KAAMxoD,KAAKqH,GAAMpK,KAAKwf,MAAOzc,KAAKqH,GACjErH,KAAKsH,EAAMtH,KAAKsH,EAAI,EAAMrK,KAAKurD,KAAMxoD,KAAKsH,GAAMrK,KAAKwf,MAAOzc,KAAKsH,GACjEtH,KAAKoH,EAAMpH,KAAKoH,EAAI,EAAMnK,KAAKurD,KAAMxoD,KAAKoH,GAAMnK,KAAKwf,MAAOzc,KAAKoH,GAE1DpH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAOC,OALAuB,KAAK9D,GAAM8D,KAAK9D,EAChB8D,KAAKqH,GAAMrH,KAAKqH,EAChBrH,KAAKsH,GAAMtH,KAAKsH,EAChBtH,KAAKoH,GAAMpH,KAAKoH,EAETpH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAEJ,OAAOnH,KAAK9D,EAAIiL,EAAEjL,EAAI8D,KAAKqH,EAAIF,EAAEE,EAAIrH,KAAKsH,EAAIH,EAAEG,EAAItH,KAAKoH,EAAID,EAAEC,CAEhE,GAAC,CAAA5E,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,EAAIrH,KAAKsH,EAAItH,KAAKsH,EAAItH,KAAKoH,EAAIpH,KAAKoH,CAE5E,GAAC,CAAA5E,IAAA,SAAA/D,MAED,WAEC,OAAOxB,KAAK04J,KAAM31J,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,EAAIrH,KAAKsH,EAAItH,KAAKsH,EAAItH,KAAKoH,EAAIpH,KAAKoH,EAEvF,GAAC,CAAA5E,IAAA,kBAAA/D,MAED,WAEC,OAAOxB,KAAK4f,IAAK7c,KAAK9D,GAAMe,KAAK4f,IAAK7c,KAAKqH,GAAMpK,KAAK4f,IAAK7c,KAAKsH,GAAMrK,KAAK4f,IAAK7c,KAAKoH,EAEtF,GAAC,CAAA5E,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAK01J,aAAc11J,KAAKpI,UAAY,EAE5C,GAAC,CAAA4K,IAAA,YAAA/D,MAED,SAAW7G,GAEV,OAAOoI,KAAK6gH,YAAY00C,eAAgB39J,EAEzC,GAAC,CAAA4K,IAAA,OAAA/D,MAED,SAAM0I,EAAG4uJ,GAOR,OALA/1J,KAAK9D,IAAOiL,EAAEjL,EAAI8D,KAAK9D,GAAM65J,EAC7B/1J,KAAKqH,IAAOF,EAAEE,EAAIrH,KAAKqH,GAAM0uJ,EAC7B/1J,KAAKsH,IAAOH,EAAEG,EAAItH,KAAKsH,GAAMyuJ,EAC7B/1J,KAAKoH,IAAOD,EAAEC,EAAIpH,KAAKoH,GAAM2uJ,EAEtB/1J,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAau3J,EAAIC,EAAIF,GAOpB,OALA/1J,KAAK9D,EAAI85J,EAAG95J,GAAM+5J,EAAG/5J,EAAI85J,EAAG95J,GAAM65J,EAClC/1J,KAAKqH,EAAI2uJ,EAAG3uJ,GAAM4uJ,EAAG5uJ,EAAI2uJ,EAAG3uJ,GAAM0uJ,EAClC/1J,KAAKsH,EAAI0uJ,EAAG1uJ,GAAM2uJ,EAAG3uJ,EAAI0uJ,EAAG1uJ,GAAMyuJ,EAClC/1J,KAAKoH,EAAI4uJ,EAAG5uJ,GAAM6uJ,EAAG7uJ,EAAI4uJ,EAAG5uJ,GAAM2uJ,EAE3B/1J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0I,GAEP,OAAWA,EAAEjL,IAAM8D,KAAK9D,GAASiL,EAAEE,IAAMrH,KAAKqH,GAASF,EAAEG,IAAMtH,KAAKsH,GAASH,EAAEC,IAAMpH,KAAKoH,CAE3F,GAAC,CAAA5E,IAAA,YAAA/D,MAED,SAAWsE,GAAoB,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAO1B,OALAD,KAAK9D,EAAI6G,EAAOgnC,GAChB/pC,KAAKqH,EAAItE,EAAOgnC,EAAS,GACzB/pC,KAAKsH,EAAIvE,EAAOgnC,EAAS,GACzB/pC,KAAKoH,EAAIrE,EAAOgnC,EAAS,GAElB/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAO7B,OALA8C,EAAOgnC,GAAW/pC,KAAK9D,EACvB6G,EAAOgnC,EAAS,GAAM/pC,KAAKqH,EAC3BtE,EAAOgnC,EAAS,GAAM/pC,KAAKsH,EAC3BvE,EAAOgnC,EAAS,GAAM/pC,KAAKoH,EAEpBrE,CAER,GAAC,CAAAP,IAAA,sBAAA/D,MAED,SAAqBy3J,EAAWtnJ,GAO/B,OALA5O,KAAK9D,EAAIg6J,EAAUC,KAAMvnJ,GACzB5O,KAAKqH,EAAI6uJ,EAAUE,KAAMxnJ,GACzB5O,KAAKsH,EAAI4uJ,EAAUyG,KAAM/tJ,GACzB5O,KAAKoH,EAAI8uJ,EAAU2K,KAAMjyJ,GAElB5O,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAOC,OALAuB,KAAK9D,EAAIe,KAAKuxC,SACdxuC,KAAKqH,EAAIpK,KAAKuxC,SACdxuC,KAAKsH,EAAIrK,KAAKuxC,SACdxuC,KAAKoH,EAAInK,KAAKuxC,SAEPxuC,IAER,GAAC,CAAAwC,IAEE1B,OAAOrE,SAAQgC,MAAAq+E,EAAAA,MAAlB,SAAAr+E,IAAA,OAAAq+E,EAAAA,MAAA,SAAA0sF,GAAA,cAAAA,EAAAvmK,KAAAumK,EAAAtmK,MAAA,OAEC,OAFDsmK,EAAAtmK,KAAA,EAEOlD,KAAK9D,EAAC,OACZ,OADYstK,EAAAtmK,KAAA,EACNlD,KAAKqH,EAAC,OACZ,OADYmiK,EAAAtmK,KAAA,EACNlD,KAAKsH,EAAC,OACZ,OADYkiK,EAAAtmK,KAAA,EACNlD,KAAKoH,EAAC,wBAAAoiK,EAAA/6F,OAAA,GAAAhwE,EAAA,YAEZmhK,CAAA,CA/nBW,GAwoBPoB,GAAiB,SAAAC,GAAAjlJ,EAAAglJ,EAAAC,GAAA,IAAA7jB,EAAAziI,EAAAqmJ,GAEtB,SAAAA,IAAmD,IAAAxxF,EAAtCrhE,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGgB,EAAOhB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAACwK,EAAA,KAAAu2J,IAE/CxxF,EAAA4tE,EAAAvgJ,KAAA,OAEK8kK,qBAAsB,EAE3BnyF,EAAKrhE,MAAQA,EACbqhE,EAAKphE,OAASA,EACdohE,EAAK++B,MAAQ,EAEb/+B,EAAK0xF,QAAU,IAAItB,GAAS,EAAG,EAAGzxJ,EAAOC,GACzCohE,EAAK2xF,aAAc,EAEnB3xF,EAAK4xF,SAAW,IAAIxB,GAAS,EAAG,EAAGzxJ,EAAOC,GAE1C,IAAM+qI,EAAQ,CAAEhrI,MAAOA,EAAOC,OAAQA,EAAQmgG,MAAO,GAec,OAbnE/+B,EAAK6xF,QAAU,IAAItD,GAAS5kB,EAAOl4I,EAAQqjJ,QAASrjJ,EAAQk9J,MAAOl9J,EAAQm9J,MAAOn9J,EAAQo9J,UAAWp9J,EAAQq9J,UAAWr9J,EAAQs9J,OAAQt9J,EAAQ2D,KAAM3D,EAAQu9J,WAAYv9J,EAAQw9J,UAClLjvF,EAAK6xF,QAAQlC,uBAAwB,EAErC3vF,EAAK6xF,QAAQtC,OAAQ,EACrBvvF,EAAK6xF,QAAQxC,qBAA8Cz0J,IAA5BnJ,EAAQ49J,iBAAgC59J,EAAQ49J,gBAC/ErvF,EAAK6xF,QAAQ1C,oBAA4Cv0J,IAA3BnJ,EAAQ09J,eAA+B19J,EAAQ09J,eAAiB,KAC9FnvF,EAAK6xF,QAAQ/C,eAAkCl0J,IAAtBnJ,EAAQq9J,UAA0Br9J,EAAQq9J,UAAYzT,GAE/Er7E,EAAK8xF,iBAAsCl3J,IAAxBnJ,EAAQqgK,aAA4BrgK,EAAQqgK,YAC/D9xF,EAAK+xF,mBAA0Cn3J,IAA1BnJ,EAAQsgK,eAA8BtgK,EAAQsgK,cAEnE/xF,EAAKgyF,kBAAwCp3J,IAAzBnJ,EAAQugK,aAA6BvgK,EAAQugK,aAAe,KAEhFhyF,EAAKiyF,aAA8Br3J,IAApBnJ,EAAQwgK,QAAwBxgK,EAAQwgK,QAAU,EAAEjyF,CAEpE,CA4DC,OA5DAjmE,EAAAy3J,EAAA,EAAAx+J,IAAA,UAAA/D,MAED,SAAS0P,EAAOC,GAAoB,IAAZmgG,EAAKtuG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE1BD,KAAKmO,QAAUA,GAASnO,KAAKoO,SAAWA,GAAUpO,KAAKuuG,QAAUA,IAErEvuG,KAAKmO,MAAQA,EACbnO,KAAKoO,OAASA,EACdpO,KAAKuuG,MAAQA,EAEbvuG,KAAKqhK,QAAQloB,MAAMhrI,MAAQA,EAC3BnO,KAAKqhK,QAAQloB,MAAM/qI,OAASA,EAC5BpO,KAAKqhK,QAAQloB,MAAM5qC,MAAQA,EAE3BvuG,KAAK0hK,WAIN1hK,KAAKohK,SAASnyI,IAAK,EAAG,EAAG9gB,EAAOC,GAChCpO,KAAKkhK,QAAQjyI,IAAK,EAAG,EAAG9gB,EAAOC,EAEhC,GAAC,CAAA5L,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAELxB,KAAKmO,MAAQ3M,EAAO2M,MACpBnO,KAAKoO,OAAS5M,EAAO4M,OACrBpO,KAAKuuG,MAAQ/sG,EAAO+sG,MAEpBvuG,KAAKohK,SAAS1F,KAAMl6J,EAAO4/J,UAE3BphK,KAAKqhK,QAAU7/J,EAAO6/J,QAAQngK,QAC9BlB,KAAKqhK,QAAQlC,uBAAwB,EAIrC,IAAMhmB,EAAQ56I,OAAOmgB,OAAQ,CAAC,EAAGld,EAAO6/J,QAAQloB,OAUhD,OATAn5I,KAAKqhK,QAAQ7/J,OAAS,IAAI+7J,GAAQpkB,GAElCn5I,KAAKshK,YAAc9/J,EAAO8/J,YAC1BthK,KAAKuhK,cAAgB//J,EAAO+/J,cAEC,OAAxB//J,EAAOggK,eAAwBxhK,KAAKwhK,aAAehgK,EAAOggK,aAAatgK,SAE5ElB,KAAKyhK,QAAUjgK,EAAOigK,QAEfzhK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAECuB,KAAKu+B,cAAe,CAAE35B,KAAM,WAE7B,KAACo8J,CAAA,CA9FqB,CAAS1P,IAkG1BsQ,GAAgB,SAAAC,GAAA7lJ,EAAA4lJ,EAAAC,GAAA,IAAAtkB,EAAA5iI,EAAAinJ,GAErB,SAAAA,IAA6D,IAAAx3C,EAAhD1mF,EAAIzjC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAMkO,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGsuG,EAAKtuG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAe/B,OAfgCwK,EAAA,KAAAm3J,IAEzDx3C,EAAAmzB,EAAA1gJ,KAAA,KAAO,OAEFklK,oBAAqB,EAE1B33C,EAAK+uB,MAAQ,CAAEz1G,KAAAA,EAAMv1B,MAAAA,EAAOC,OAAAA,EAAQmgG,MAAAA,GAEpC6b,EAAKi0C,UAAY7T,GACjBpgC,EAAKk0C,UAAY9T,GAEjBpgC,EAAK03C,MAAQxX,GAEblgC,EAAKy0C,iBAAkB,EACvBz0C,EAAK20C,OAAQ,EACb30C,EAAK40C,gBAAkB,EAAE50C,CAE1B,CAAC,OAAA7gH,EAAAq4J,EAAA,CAnBoB,CAAS7D,IAyCzBoE,GAAa,SAAAC,GAAApmJ,EAAAmmJ,EAAAC,GAAA,IAAAC,EAAA1nJ,EAAAwnJ,GAElB,SAAAA,IAA6D,IAAA72C,EAAhD5nF,EAAIzjC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAMkO,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGsuG,EAAKtuG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAuB/B,OAvBgCwK,EAAA,KAAA03J,IAUzD72C,EAAA+2C,EAAAxlK,KAAA,KAAO,OAEFylK,iBAAkB,EAEvBh3C,EAAK6tB,MAAQ,CAAEz1G,KAAAA,EAAMv1B,MAAAA,EAAOC,OAAAA,EAAQmgG,MAAAA,GAEpC+c,EAAK+yC,UAAY7T,GACjBl/B,EAAKgzC,UAAY9T,GAEjBl/B,EAAKw2C,MAAQxX,GAEbh/B,EAAKuzC,iBAAkB,EACvBvzC,EAAKyzC,OAAQ,EACbzzC,EAAK0zC,gBAAkB,EAAE1zC,CAE1B,CAAC,OAAA/hH,EAAA44J,EAAA,CA3BiB,CAASpE,IAgItBgF,GAAU,WAEf,SAAAA,IAA0C,IAA7B7mK,EAAC+D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqH,EAACrH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmH,EAACnH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAs4J,GAEtC/iK,KAAK6mK,cAAe,EAEpB7mK,KAAKo0D,GAAKl4D,EACV8D,KAAKgjK,GAAK37J,EACVrH,KAAKijK,GAAK37J,EACVtH,KAAKkjK,GAAK97J,CAEX,CAqGC,OArGAmC,EAAAw5J,EAAA,EAAAvgK,IAAA,IAAAutB,IAuGD,WAEC,OAAO/vB,KAAKo0D,EAEb,EAACnlC,IAED,SAAOxwB,GAENuB,KAAKo0D,GAAK31D,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKgjK,EAEb,EAAC/zI,IAED,SAAOxwB,GAENuB,KAAKgjK,GAAKvkK,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKijK,EAEb,EAACh0I,IAED,SAAOxwB,GAENuB,KAAKijK,GAAKxkK,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKkjK,EAEb,EAACj0I,IAED,SAAOxwB,GAENuB,KAAKkjK,GAAKzkK,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,MAAA/D,MAED,SAAKvC,EAAGmL,EAAGC,EAAGF,GASb,OAPApH,KAAKo0D,GAAKl4D,EACV8D,KAAKgjK,GAAK37J,EACVrH,KAAKijK,GAAK37J,EACVtH,KAAKkjK,GAAK97J,EAEVpH,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAKo0D,GAAIp0D,KAAKgjK,GAAIhjK,KAAKijK,GAAIjjK,KAAKkjK,GAE9D,GAAC,CAAA1gK,IAAA,OAAA/D,MAED,SAAM2kK,GASL,OAPApjK,KAAKo0D,GAAKgvG,EAAWlnK,EACrB8D,KAAKgjK,GAAKI,EAAW/7J,EACrBrH,KAAKijK,GAAKG,EAAW97J,EACrBtH,KAAKkjK,GAAKE,EAAWh8J,EAErBpH,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc4kK,EAAOC,GAEpB,IAAMpnK,EAAImnK,EAAMjvG,GAAI/sD,EAAIg8J,EAAML,GAAI17J,EAAI+7J,EAAMJ,GAAI11J,EAAQ81J,EAAMG,OAMxDrP,EAAMl3J,KAAKk3J,IACXC,EAAMn3J,KAAKm3J,IAEXqP,EAAKtP,EAAKj4J,EAAI,GACdm4J,EAAKF,EAAK9sJ,EAAI,GACdq8J,EAAKvP,EAAK7sJ,EAAI,GAEdq8J,EAAKvP,EAAKl4J,EAAI,GACdo4J,EAAKF,EAAK/sJ,EAAI,GACdu8J,EAAKxP,EAAK9sJ,EAAI,GAEpB,OAASiG,GAER,IAAK,MACJvN,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,IAAK,MACJ5jK,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,IAAK,MACJ5jK,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,IAAK,MACJ5jK,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,IAAK,MACJ5jK,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,IAAK,MACJ5jK,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,QACC7vJ,QAAQk/C,KAAM,mEAAqE1lD,GAMrF,OAFgB,IAAX+1J,GAAmBtjK,KAAKmjK,oBAEtBnjK,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBolK,EAAMjO,GAMvB,IAAMkO,EAAYlO,EAAQ,EAAGn6J,EAAIwB,KAAKm3J,IAAK0P,GAS3C,OAPA9jK,KAAKo0D,GAAKyvG,EAAK3nK,EAAIT,EACnBuE,KAAKgjK,GAAKa,EAAKx8J,EAAI5L,EACnBuE,KAAKijK,GAAKY,EAAKv8J,EAAI7L,EACnBuE,KAAKkjK,GAAKjmK,KAAKk3J,IAAK2P,GAEpB9jK,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuBqI,GAMtB,IAAM+hC,EAAK/hC,EAAEk/H,SAEZg6B,EAAMn3H,EAAI,GAAKo3H,EAAMp3H,EAAI,GAAKq3H,EAAMr3H,EAAI,GACxCs3H,EAAMt3H,EAAI,GAAKu3H,EAAMv3H,EAAI,GAAKw3H,EAAMx3H,EAAI,GACxCy3H,EAAMz3H,EAAI,GAAK03H,EAAM13H,EAAI,GAAK23H,EAAM33H,EAAI,IAExC50B,EAAQ+rJ,EAAMI,EAAMI,EAErB,GAAKvsJ,EAAQ,EAAI,CAEhB,IAAMxY,EAAI,GAAMwB,KAAK04J,KAAM1hJ,EAAQ,GAEnCjU,KAAKkjK,GAAK,IAAOznK,EACjBuE,KAAKo0D,IAAOmsG,EAAMF,GAAQ5kK,EAC1BuE,KAAKgjK,IAAO9C,EAAMI,GAAQ7kK,EAC1BuE,KAAKijK,IAAO9C,EAAMF,GAAQxkK,CAE3B,MAAO,GAAKukK,EAAMI,GAAOJ,EAAMQ,EAAM,CAEpC,IAAM/kK,EAAI,EAAMwB,KAAK04J,KAAM,EAAMqK,EAAMI,EAAMI,GAE7CxgK,KAAKkjK,IAAO3C,EAAMF,GAAQ5kK,EAC1BuE,KAAKo0D,GAAK,IAAO34D,EACjBuE,KAAKgjK,IAAO/C,EAAME,GAAQ1kK,EAC1BuE,KAAKijK,IAAO/C,EAAMI,GAAQ7kK,CAE3B,MAAO,GAAK2kK,EAAMI,EAAM,CAEvB,IAAM/kK,EAAI,EAAMwB,KAAK04J,KAAM,EAAMyK,EAAMJ,EAAMQ,GAE7CxgK,KAAKkjK,IAAOhD,EAAMI,GAAQ7kK,EAC1BuE,KAAKo0D,IAAO6rG,EAAME,GAAQ1kK,EAC1BuE,KAAKgjK,GAAK,IAAOvnK,EACjBuE,KAAKijK,IAAO5C,EAAME,GAAQ9kK,CAE3B,KAAO,CAEN,IAAMA,EAAI,EAAMwB,KAAK04J,KAAM,EAAM6K,EAAMR,EAAMI,GAE7CpgK,KAAKkjK,IAAO/C,EAAMF,GAAQxkK,EAC1BuE,KAAKo0D,IAAO8rG,EAAMI,GAAQ7kK,EAC1BuE,KAAKgjK,IAAO3C,EAAME,GAAQ9kK,EAC1BuE,KAAKijK,GAAK,IAAOxnK,CAElB,CAIA,OAFAuE,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBslK,EAAOC,GAI1B,IAAI98J,EAAI68J,EAAME,IAAKD,GAAQ,EAmC3B,OAjCK98J,EAAImQ,OAAO6sJ,SAIfh9J,EAAI,EAECjK,KAAK4f,IAAKknJ,EAAM7nK,GAAMe,KAAK4f,IAAKknJ,EAAMz8J,IAE1CtH,KAAKo0D,IAAO2vG,EAAM18J,EAClBrH,KAAKgjK,GAAKe,EAAM7nK,EAChB8D,KAAKijK,GAAK,EACVjjK,KAAKkjK,GAAKh8J,IAIVlH,KAAKo0D,GAAK,EACVp0D,KAAKgjK,IAAOe,EAAMz8J,EAClBtH,KAAKijK,GAAKc,EAAM18J,EAChBrH,KAAKkjK,GAAKh8J,KAQXlH,KAAKo0D,GAAK2vG,EAAM18J,EAAI28J,EAAI18J,EAAIy8J,EAAMz8J,EAAI08J,EAAI38J,EAC1CrH,KAAKgjK,GAAKe,EAAMz8J,EAAI08J,EAAI9nK,EAAI6nK,EAAM7nK,EAAI8nK,EAAI18J,EAC1CtH,KAAKijK,GAAKc,EAAM7nK,EAAI8nK,EAAI38J,EAAI08J,EAAM18J,EAAI28J,EAAI9nK,EAC1C8D,KAAKkjK,GAAKh8J,GAIJlH,KAAK6gH,WAEb,GAAC,CAAAr+G,IAAA,UAAA/D,MAED,SAASwI,GAER,OAAO,EAAIhK,KAAK4iK,KAAM5iK,KAAK4f,IAAKq1I,GAAOlyJ,KAAKikK,IAAKh9J,IAAO,EAAG,IAE5D,GAAC,CAAAzE,IAAA,gBAAA/D,MAED,SAAewI,EAAGynF,GAEjB,IAAMknE,EAAQ51J,KAAKmkK,QAASl9J,GAE5B,GAAe,IAAV2uJ,EAAc,OAAO51J,KAE1B,IAAM1I,EAAI2F,KAAKiuC,IAAK,EAAGwjD,EAAOknE,GAI9B,OAFA51J,KAAKokK,MAAOn9J,EAAG3P,GAER0I,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAKivB,IAAK,EAAG,EAAG,EAAG,EAE3B,GAAC,CAAAzsB,IAAA,SAAA/D,MAED,WAIC,OAAOuB,KAAKqkK,WAEb,GAAC,CAAA7hK,IAAA,YAAA/D,MAED,WAQC,OANAuB,KAAKo0D,KAAQ,EACbp0D,KAAKgjK,KAAQ,EACbhjK,KAAKijK,KAAQ,EAEbjjK,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAEJ,OAAOnH,KAAKo0D,GAAKjtD,EAAEitD,GAAKp0D,KAAKgjK,GAAK77J,EAAE67J,GAAKhjK,KAAKijK,GAAK97J,EAAE87J,GAAKjjK,KAAKkjK,GAAK/7J,EAAE+7J,EAEvE,GAAC,CAAA1gK,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAKo0D,GAAKp0D,KAAKo0D,GAAKp0D,KAAKgjK,GAAKhjK,KAAKgjK,GAAKhjK,KAAKijK,GAAKjjK,KAAKijK,GAAKjjK,KAAKkjK,GAAKljK,KAAKkjK,EAEnF,GAAC,CAAA1gK,IAAA,SAAA/D,MAED,WAEC,OAAOxB,KAAK04J,KAAM31J,KAAKo0D,GAAKp0D,KAAKo0D,GAAKp0D,KAAKgjK,GAAKhjK,KAAKgjK,GAAKhjK,KAAKijK,GAAKjjK,KAAKijK,GAAKjjK,KAAKkjK,GAAKljK,KAAKkjK,GAE9F,GAAC,CAAA1gK,IAAA,YAAA/D,MAED,WAEC,IAAIoI,EAAI7G,KAAKpI,SAsBb,OApBW,IAANiP,GAEJ7G,KAAKo0D,GAAK,EACVp0D,KAAKgjK,GAAK,EACVhjK,KAAKijK,GAAK,EACVjjK,KAAKkjK,GAAK,IAIVr8J,EAAI,EAAIA,EAER7G,KAAKo0D,GAAKp0D,KAAKo0D,GAAKvtD,EACpB7G,KAAKgjK,GAAKhjK,KAAKgjK,GAAKn8J,EACpB7G,KAAKijK,GAAKjjK,KAAKijK,GAAKp8J,EACpB7G,KAAKkjK,GAAKljK,KAAKkjK,GAAKr8J,GAIrB7G,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAUwI,GAET,OAAOjH,KAAKskK,oBAAqBtkK,KAAMiH,EAExC,GAAC,CAAAzE,IAAA,cAAA/D,MAED,SAAawI,GAEZ,OAAOjH,KAAKskK,oBAAqBr9J,EAAGjH,KAErC,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,SAAqBzC,EAAGuK,GAIvB,IAAMg+J,EAAMvoK,EAAEo4D,GAAIowG,EAAMxoK,EAAEgnK,GAAIyB,EAAMzoK,EAAEinK,GAAIyB,EAAM1oK,EAAEknK,GAC5CyB,EAAMp+J,EAAE6tD,GAAIwwG,EAAMr+J,EAAEy8J,GAAI6B,EAAMt+J,EAAE08J,GAAI6B,EAAMv+J,EAAE28J,GASlD,OAPAljK,KAAKo0D,GAAKmwG,EAAMO,EAAMJ,EAAMC,EAAMH,EAAMK,EAAMJ,EAAMG,EACpD5kK,KAAKgjK,GAAKwB,EAAMM,EAAMJ,EAAME,EAAMH,EAAME,EAAMJ,EAAMM,EACpD7kK,KAAKijK,GAAKwB,EAAMK,EAAMJ,EAAMG,EAAMN,EAAMK,EAAMJ,EAAMG,EACpD3kK,KAAKkjK,GAAKwB,EAAMI,EAAMP,EAAMI,EAAMH,EAAMI,EAAMH,EAAMI,EAEpD7kK,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO62B,EAAIh+B,GAEV,GAAW,IAANA,EAAU,OAAO0I,KACtB,GAAW,IAAN1I,EAAU,OAAO0I,KAAK07J,KAAMpmI,GAEjC,IAAMp5B,EAAI8D,KAAKo0D,GAAI/sD,EAAIrH,KAAKgjK,GAAI17J,EAAItH,KAAKijK,GAAI77J,EAAIpH,KAAKkjK,GAIlD6B,EAAe39J,EAAIkuB,EAAG4tI,GAAKhnK,EAAIo5B,EAAG8+B,GAAK/sD,EAAIiuB,EAAG0tI,GAAK17J,EAAIguB,EAAG2tI,GAiB9D,GAfK8B,EAAe,GAEnB/kK,KAAKkjK,IAAO5tI,EAAG4tI,GACfljK,KAAKo0D,IAAO9+B,EAAG8+B,GACfp0D,KAAKgjK,IAAO1tI,EAAG0tI,GACfhjK,KAAKijK,IAAO3tI,EAAG2tI,GAEf8B,GAAiBA,GAIjB/kK,KAAK07J,KAAMpmI,GAIPyvI,GAAgB,EAOpB,OALA/kK,KAAKkjK,GAAK97J,EACVpH,KAAKo0D,GAAKl4D,EACV8D,KAAKgjK,GAAK37J,EACVrH,KAAKijK,GAAK37J,EAEHtH,KAIR,IAAMglK,EAAkB,EAAMD,EAAeA,EAE7C,GAAKC,GAAmB3tJ,OAAO6sJ,QAAU,CAExC,IAAMzoK,EAAI,EAAInE,EASd,OARA0I,KAAKkjK,GAAKznK,EAAI2L,EAAI9P,EAAI0I,KAAKkjK,GAC3BljK,KAAKo0D,GAAK34D,EAAIS,EAAI5E,EAAI0I,KAAKo0D,GAC3Bp0D,KAAKgjK,GAAKvnK,EAAI4L,EAAI/P,EAAI0I,KAAKgjK,GAC3BhjK,KAAKijK,GAAKxnK,EAAI6L,EAAIhQ,EAAI0I,KAAKijK,GAE3BjjK,KAAK6gH,YACL7gH,KAAKmjK,oBAEEnjK,IAER,CAEA,IAAMilK,EAAehoK,KAAK04J,KAAMqP,GAC1BE,EAAYjoK,KAAK44J,MAAOoP,EAAcF,GACtCI,EAASloK,KAAKm3J,KAAO,EAAI98J,GAAM4tK,GAAcD,EAClDG,EAASnoK,KAAKm3J,IAAK98J,EAAI4tK,GAAcD,EAStC,OAPAjlK,KAAKkjK,GAAO97J,EAAI+9J,EAASnlK,KAAKkjK,GAAKkC,EACnCplK,KAAKo0D,GAAOl4D,EAAIipK,EAASnlK,KAAKo0D,GAAKgxG,EACnCplK,KAAKgjK,GAAO37J,EAAI89J,EAASnlK,KAAKgjK,GAAKoC,EACnCplK,KAAKijK,GAAO37J,EAAI69J,EAASnlK,KAAKijK,GAAKmC,EAEnCplK,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB4uB,EAAIiI,EAAIh+B,GAEzB,OAAO0I,KAAK07J,KAAMruI,GAAK+2I,MAAO9uI,EAAIh+B,EAEnC,GAAC,CAAAkL,IAAA,SAAA/D,MAED,WAMC,IAAM4mK,EAAKpoK,KAAKuxC,SACV82H,EAAUroK,KAAK04J,KAAM,EAAI0P,GACzBE,EAAStoK,KAAK04J,KAAM0P,GAEpBG,EAAK,EAAIvoK,KAAK00J,GAAK10J,KAAKuxC,SAExBi3H,EAAK,EAAIxoK,KAAK00J,GAAK10J,KAAKuxC,SAE9B,OAAOxuC,KAAKivB,IACXq2I,EAAUroK,KAAKk3J,IAAKqR,GACpBD,EAAStoK,KAAKm3J,IAAKqR,GACnBF,EAAStoK,KAAKk3J,IAAKsR,GACnBH,EAAUroK,KAAKm3J,IAAKoR,GAGtB,GAAC,CAAAhjK,IAAA,SAAA/D,MAED,SAAQ2kK,GAEP,OAASA,EAAWhvG,KAAOp0D,KAAKo0D,IAAUgvG,EAAWJ,KAAOhjK,KAAKgjK,IAAUI,EAAWH,KAAOjjK,KAAKijK,IAAUG,EAAWF,KAAOljK,KAAKkjK,EAEpI,GAAC,CAAA1gK,IAAA,YAAA/D,MAED,SAAWsE,GAAoB,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAS1B,OAPAD,KAAKo0D,GAAKrxD,EAAOgnC,GACjB/pC,KAAKgjK,GAAKjgK,EAAOgnC,EAAS,GAC1B/pC,KAAKijK,GAAKlgK,EAAOgnC,EAAS,GAC1B/pC,KAAKkjK,GAAKngK,EAAOgnC,EAAS,GAE1B/pC,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAO7B,OALA8C,EAAOgnC,GAAW/pC,KAAKo0D,GACvBrxD,EAAOgnC,EAAS,GAAM/pC,KAAKgjK,GAC3BjgK,EAAOgnC,EAAS,GAAM/pC,KAAKijK,GAC3BlgK,EAAOgnC,EAAS,GAAM/pC,KAAKkjK,GAEpBngK,CAER,GAAC,CAAAP,IAAA,sBAAA/D,MAED,SAAqBy3J,EAAWtnJ,GAO/B,OALA5O,KAAKo0D,GAAK8hG,EAAUC,KAAMvnJ,GAC1B5O,KAAKgjK,GAAK9M,EAAUE,KAAMxnJ,GAC1B5O,KAAKijK,GAAK/M,EAAUyG,KAAM/tJ,GAC1B5O,KAAKkjK,GAAKhN,EAAU2K,KAAMjyJ,GAEnB5O,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW05C,GAIV,OAFAn4C,KAAKmjK,kBAAoBhrH,EAElBn4C,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,WAAqB,GAAC,CAAA+D,IAEnB1B,OAAOrE,SAAQgC,MAAAq+E,EAAAA,MAAlB,SAAAr+E,IAAA,OAAAq+E,EAAAA,MAAA,SAAA0rJ,GAAA,cAAAA,EAAAvlO,KAAAulO,EAAAtlO,MAAA,OAEC,OAFDslO,EAAAtlO,KAAA,EAEOlD,KAAKo0D,GAAE,OACb,OADao0K,EAAAtlO,KAAA,EACPlD,KAAKgjK,GAAE,OACb,OADawlE,EAAAtlO,KAAA,EACPlD,KAAKijK,GAAE,OACb,OADaulE,EAAAtlO,KAAA,EACPlD,KAAKkjK,GAAE,wBAAAslE,EAAA/5J,OAAA,GAAAhwE,EAAA,WAEb,EAAA+D,IAAA,YAAA/D,MAlpBD,SAAkBmnK,EAAKC,EAAWC,EAAMC,EAAYC,EAAMC,EAAY3uK,GAIrE,IAAI4uK,EAAKJ,EAAMC,EAAa,GAC3BI,EAAKL,EAAMC,EAAa,GACxBK,EAAKN,EAAMC,EAAa,GACxBM,EAAKP,EAAMC,EAAa,GAEnBO,EAAKN,EAAMC,EAAa,GAC7BM,EAAKP,EAAMC,EAAa,GACxBO,EAAKR,EAAMC,EAAa,GACxBQ,EAAKT,EAAMC,EAAa,GAEzB,GAAW,IAAN3uK,EAMJ,OAJAsuK,EAAKC,EAAY,GAAMK,EACvBN,EAAKC,EAAY,GAAMM,EACvBP,EAAKC,EAAY,GAAMO,OACvBR,EAAKC,EAAY,GAAMQ,GAKxB,GAAW,IAAN/uK,EAMJ,OAJAsuK,EAAKC,EAAY,GAAMS,EACvBV,EAAKC,EAAY,GAAMU,EACvBX,EAAKC,EAAY,GAAMW,OACvBZ,EAAKC,EAAY,GAAMY,GAKxB,GAAKJ,IAAOI,GAAMP,IAAOI,GAAMH,IAAOI,GAAMH,IAAOI,EAAK,CAEvD,IAAI/qK,EAAI,EAAInE,EACN68J,EAAM+R,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAC9CC,EAAQvS,GAAO,EAAI,GAAM,EACzBwS,EAAS,EAAIxS,EAAMA,EAGpB,GAAKwS,EAAStvJ,OAAO6sJ,QAAU,CAE9B,IAAM9P,EAAMn3J,KAAK04J,KAAMgR,GACtB36J,EAAM/O,KAAK44J,MAAOzB,EAAKD,EAAMuS,GAE9BjrK,EAAIwB,KAAKm3J,IAAK34J,EAAIuQ,GAAQooJ,EAC1B98J,EAAI2F,KAAKm3J,IAAK98J,EAAI0U,GAAQooJ,CAE3B,CAEA,IAAMwS,EAAOtvK,EAAIovK,EAQjB,GANAR,EAAKA,EAAKzqK,EAAI6qK,EAAKM,EACnBT,EAAKA,EAAK1qK,EAAI8qK,EAAKK,EACnBR,EAAKA,EAAK3qK,EAAI+qK,EAAKI,EACnBP,EAAKA,EAAK5qK,EAAIgrK,EAAKG,EAGdnrK,IAAM,EAAInE,EAAI,CAElB,IAAMmP,EAAI,EAAIxJ,KAAK04J,KAAMuQ,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,GAE5DH,GAAMz/J,EACN0/J,GAAM1/J,EACN2/J,GAAM3/J,EACN4/J,GAAM5/J,CAEP,CAED,CAEAm/J,EAAKC,GAAcK,EACnBN,EAAKC,EAAY,GAAMM,EACvBP,EAAKC,EAAY,GAAMO,EACvBR,EAAKC,EAAY,GAAMQ,CAExB,GAAC,CAAA7jK,IAAA,0BAAA/D,MAED,SAAgCmnK,EAAKC,EAAWC,EAAMC,EAAYC,EAAMC,GAEvE,IAAMC,EAAKJ,EAAMC,GACXI,EAAKL,EAAMC,EAAa,GACxBK,EAAKN,EAAMC,EAAa,GACxBM,EAAKP,EAAMC,EAAa,GAExBO,EAAKN,EAAMC,GACXM,EAAKP,EAAMC,EAAa,GACxBO,EAAKR,EAAMC,EAAa,GACxBQ,EAAKT,EAAMC,EAAa,GAO9B,OALAL,EAAKC,GAAcK,EAAKO,EAAKJ,EAAKC,EAAKH,EAAKK,EAAKJ,EAAKG,EACtDX,EAAKC,EAAY,GAAMM,EAAKM,EAAKJ,EAAKE,EAAKH,EAAKE,EAAKJ,EAAKM,EAC1DZ,EAAKC,EAAY,GAAMO,EAAKK,EAAKJ,EAAKG,EAAKN,EAAKK,EAAKJ,EAAKG,EAC1DV,EAAKC,EAAY,GAAMQ,EAAKI,EAAKP,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAEnDZ,CAER,KAAC7C,CAAA,CAhHc,GAmqBV+D,GAAO,WAEZ,SAAAA,IAAmC,IAAtB5qK,EAAC+D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqH,EAACrH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAq8J,GAE/BA,EAAQlqK,UAAU6sK,WAAY,EAE9BzpK,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EACTrH,KAAKsH,EAAIA,CAEV,CAsrBC,OAtrBAiC,EAAAu9J,EAAA,EAAAtkK,IAAA,MAAA/D,MAED,SAAKvC,EAAGmL,EAAGC,GAQV,YANW8C,IAAN9C,IAAkBA,EAAItH,KAAKsH,GAEhCtH,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EACTrH,KAAKsH,EAAIA,EAEFtH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW22J,GAMV,OAJAp1J,KAAK9D,EAAIk5J,EACTp1J,KAAKqH,EAAI+tJ,EACTp1J,KAAKsH,EAAI8tJ,EAEFp1J,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMvC,GAIL,OAFA8D,KAAK9D,EAAIA,EAEF8D,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM4I,GAIL,OAFArH,KAAKqH,EAAIA,EAEFrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM6I,GAIL,OAFAtH,KAAKsH,EAAIA,EAEFtH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,EAAOnQ,GAEpB,OAASmQ,GAER,KAAK,EAAG5O,KAAK9D,EAAIuC,EAAO,MACxB,KAAK,EAAGuB,KAAKqH,EAAI5I,EAAO,MACxB,KAAK,EAAGuB,KAAKsH,EAAI7I,EAAO,MACxB,QAAS,MAAM,IAAIX,MAAO,0BAA4B8Q,GAIvD,OAAO5O,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,GAEb,OAASA,GAER,KAAK,EAAG,OAAO5O,KAAK9D,EACpB,KAAK,EAAG,OAAO8D,KAAKqH,EACpB,KAAK,EAAG,OAAOrH,KAAKsH,EACpB,QAAS,MAAM,IAAIxJ,MAAO,0BAA4B8Q,GAIxD,GAAC,CAAApM,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAK9D,EAAG8D,KAAKqH,EAAGrH,KAAKsH,EAEnD,GAAC,CAAA9E,IAAA,OAAA/D,MAED,SAAM0I,GAML,OAJAnH,KAAK9D,EAAIiL,EAAEjL,EACX8D,KAAKqH,EAAIF,EAAEE,EACXrH,KAAKsH,EAAIH,EAAEG,EAEJtH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAMJ,OAJAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EAELtH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAMV,OAJAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EACVuE,KAAKsH,GAAK7L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAMd,OAJAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EACjBrH,KAAKsH,EAAItL,EAAEsL,EAAIf,EAAEe,EAEVtH,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiB0I,EAAG1L,GAMnB,OAJAuE,KAAK9D,GAAKiL,EAAEjL,EAAIT,EAChBuE,KAAKqH,GAAKF,EAAEE,EAAI5L,EAChBuE,KAAKsH,GAAKH,EAAEG,EAAI7L,EAETuE,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAMJ,OAJAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EAELtH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAMV,OAJAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EACVuE,KAAKsH,GAAK7L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAMd,OAJAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EACjBrH,KAAKsH,EAAItL,EAAEsL,EAAIf,EAAEe,EAEVtH,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU0I,GAMT,OAJAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EAELtH,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB22J,GAMf,OAJAp1J,KAAK9D,GAAKk5J,EACVp1J,KAAKqH,GAAK+tJ,EACVp1J,KAAKsH,GAAK8tJ,EAEHp1J,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBzC,EAAGuK,GAMnB,OAJAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EACjBrH,KAAKsH,EAAItL,EAAEsL,EAAIf,EAAEe,EAEVtH,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAY4kK,GAEX,OAAOrjK,KAAKgnK,gBAAiBC,GAAcC,aAAc7D,GAE1D,GAAC,CAAA7gK,IAAA,iBAAA/D,MAED,SAAgBolK,EAAMjO,GAErB,OAAO51J,KAAKgnK,gBAAiBC,GAAcE,iBAAkBtD,EAAMjO,GAEpE,GAAC,CAAApzJ,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM5K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EAAGC,EAAItH,KAAKsH,EACjChB,EAAIQ,EAAEk/H,SAMZ,OAJAhmI,KAAK9D,EAAIoK,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAC5CtH,KAAKqH,EAAIf,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAC5CtH,KAAKsH,EAAIhB,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAErCtH,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBqI,GAElB,OAAO9G,KAAK0/J,aAAc54J,GAAI+5G,WAE/B,GAAC,CAAAr+G,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM5K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EAAGC,EAAItH,KAAKsH,EACjChB,EAAIQ,EAAEk/H,SAEN5+H,EAAI,GAAMd,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,IAAOgB,EAAIhB,EAAG,KAM3D,OAJAtG,KAAK9D,GAAMoK,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAAIhB,EAAG,KAASc,EAC9DpH,KAAKqH,GAAMf,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAAIhB,EAAG,KAASc,EAC9DpH,KAAKsH,GAAMhB,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,IAAOgB,EAAIhB,EAAG,KAASc,EAExDpH,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBwI,GAEhB,IAAM/K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EAAGC,EAAItH,KAAKsH,EACjC8/J,EAAKngK,EAAE/K,EAAGmrK,EAAKpgK,EAAEI,EAAGigK,EAAKrgK,EAAEK,EAAGigK,EAAKtgK,EAAEG,EAIrCogK,EAAKD,EAAKrrK,EAAImrK,EAAK//J,EAAIggK,EAAKjgK,EAC5BogK,EAAKF,EAAKlgK,EAAIigK,EAAKprK,EAAIkrK,EAAK9/J,EAC5BogK,EAAKH,EAAKjgK,EAAI8/J,EAAK//J,EAAIggK,EAAKnrK,EAC5ByrK,GAAOP,EAAKlrK,EAAImrK,EAAKhgK,EAAIigK,EAAKhgK,EAQpC,OAJAtH,KAAK9D,EAAIsrK,EAAKD,EAAKI,GAAOP,EAAKK,GAAOH,EAAKI,GAAOL,EAClDrnK,KAAKqH,EAAIogK,EAAKF,EAAKI,GAAON,EAAKK,GAAON,EAAKI,GAAOF,EAClDtnK,KAAKsH,EAAIogK,EAAKH,EAAKI,GAAOL,EAAKE,GAAOH,EAAKI,GAAOL,EAE3CpnK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASmpK,GAER,OAAO5nK,KAAK6nK,aAAcD,EAAOE,oBAAqBD,aAAcD,EAAOG,iBAE5E,GAAC,CAAAvlK,IAAA,YAAA/D,MAED,SAAWmpK,GAEV,OAAO5nK,KAAK6nK,aAAcD,EAAOI,yBAA0BH,aAAcD,EAAOK,YAEjF,GAAC,CAAAzlK,IAAA,qBAAA/D,MAED,SAAoBqI,GAKnB,IAAM5K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EAAGC,EAAItH,KAAKsH,EACjChB,EAAIQ,EAAEk/H,SAMZ,OAJAhmI,KAAK9D,EAAIoK,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAC5CtH,KAAKqH,EAAIf,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAC5CtH,KAAKsH,EAAIhB,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,IAAOgB,EAEtCtH,KAAK6gH,WAEb,GAAC,CAAAr+G,IAAA,SAAA/D,MAED,SAAQ0I,GAMP,OAJAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EAELtH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc22J,GAEb,OAAOp1J,KAAKu1J,eAAgB,EAAIH,EAEjC,GAAC,CAAA5yJ,IAAA,MAAA/D,MAED,SAAK0I,GAMJ,OAJAnH,KAAK9D,EAAIe,KAAKiuC,IAAKlrC,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKiuC,IAAKlrC,KAAKqH,EAAGF,EAAEE,GAC7BrH,KAAKsH,EAAIrK,KAAKiuC,IAAKlrC,KAAKsH,EAAGH,EAAEG,GAEtBtH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAMJ,OAJAnH,KAAK9D,EAAIe,KAAKC,IAAK8C,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKC,IAAK8C,KAAKqH,EAAGF,EAAEE,GAC7BrH,KAAKsH,EAAIrK,KAAKC,IAAK8C,KAAKsH,EAAGH,EAAEG,GAEtBtH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOysC,EAAKhuC,GAQX,OAJA8C,KAAK9D,EAAIe,KAAKC,IAAKguC,EAAIhvC,EAAGe,KAAKiuC,IAAKhuC,EAAIhB,EAAG8D,KAAK9D,IAChD8D,KAAKqH,EAAIpK,KAAKC,IAAKguC,EAAI7jC,EAAGpK,KAAKiuC,IAAKhuC,EAAImK,EAAGrH,KAAKqH,IAChDrH,KAAKsH,EAAIrK,KAAKC,IAAKguC,EAAI5jC,EAAGrK,KAAKiuC,IAAKhuC,EAAIoK,EAAGtH,KAAKsH,IAEzCtH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAa+2J,EAAQC,GAMpB,OAJAz1J,KAAK9D,EAAIe,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAK9D,IAClD8D,KAAKqH,EAAIpK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKqH,IAClDrH,KAAKsH,EAAIrK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKsH,IAE3CtH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAaysC,EAAKhuC,GAEjB,IAAMtF,EAASoI,KAAKpI,SAEpB,OAAOoI,KAAK01J,aAAc99J,GAAU,GAAI29J,eAAgBt4J,KAAKC,IAAKguC,EAAKjuC,KAAKiuC,IAAKhuC,EAAKtF,IAEvF,GAAC,CAAA4K,IAAA,QAAA/D,MAED,WAMC,OAJAuB,KAAK9D,EAAIe,KAAKwf,MAAOzc,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAKwf,MAAOzc,KAAKqH,GAC1BrH,KAAKsH,EAAIrK,KAAKwf,MAAOzc,KAAKsH,GAEnBtH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAMC,OAJAuB,KAAK9D,EAAIe,KAAKurD,KAAMxoD,KAAK9D,GACzB8D,KAAKqH,EAAIpK,KAAKurD,KAAMxoD,KAAKqH,GACzBrH,KAAKsH,EAAIrK,KAAKurD,KAAMxoD,KAAKsH,GAElBtH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAMC,OAJAuB,KAAK9D,EAAIe,KAAK83J,MAAO/0J,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAK83J,MAAO/0J,KAAKqH,GAC1BrH,KAAKsH,EAAIrK,KAAK83J,MAAO/0J,KAAKsH,GAEnBtH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAMC,OAJAuB,KAAK9D,EAAM8D,KAAK9D,EAAI,EAAMe,KAAKurD,KAAMxoD,KAAK9D,GAAMe,KAAKwf,MAAOzc,KAAK9D,GACjE8D,KAAKqH,EAAMrH,KAAKqH,EAAI,EAAMpK,KAAKurD,KAAMxoD,KAAKqH,GAAMpK,KAAKwf,MAAOzc,KAAKqH,GACjErH,KAAKsH,EAAMtH,KAAKsH,EAAI,EAAMrK,KAAKurD,KAAMxoD,KAAKsH,GAAMrK,KAAKwf,MAAOzc,KAAKsH,GAE1DtH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAMC,OAJAuB,KAAK9D,GAAM8D,KAAK9D,EAChB8D,KAAKqH,GAAMrH,KAAKqH,EAChBrH,KAAKsH,GAAMtH,KAAKsH,EAETtH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAEJ,OAAOnH,KAAK9D,EAAIiL,EAAEjL,EAAI8D,KAAKqH,EAAIF,EAAEE,EAAIrH,KAAKsH,EAAIH,EAAEG,CAEjD,GAEA,CAAA9E,IAAA,WAAA/D,MAEA,WAEC,OAAOuB,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,EAAIrH,KAAKsH,EAAItH,KAAKsH,CAE1D,GAAC,CAAA9E,IAAA,SAAA/D,MAED,WAEC,OAAOxB,KAAK04J,KAAM31J,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,EAAIrH,KAAKsH,EAAItH,KAAKsH,EAErE,GAAC,CAAA9E,IAAA,kBAAA/D,MAED,WAEC,OAAOxB,KAAK4f,IAAK7c,KAAK9D,GAAMe,KAAK4f,IAAK7c,KAAKqH,GAAMpK,KAAK4f,IAAK7c,KAAKsH,EAEjE,GAAC,CAAA9E,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAK01J,aAAc11J,KAAKpI,UAAY,EAE5C,GAAC,CAAA4K,IAAA,YAAA/D,MAED,SAAW7G,GAEV,OAAOoI,KAAK6gH,YAAY00C,eAAgB39J,EAEzC,GAAC,CAAA4K,IAAA,OAAA/D,MAED,SAAM0I,EAAG4uJ,GAMR,OAJA/1J,KAAK9D,IAAOiL,EAAEjL,EAAI8D,KAAK9D,GAAM65J,EAC7B/1J,KAAKqH,IAAOF,EAAEE,EAAIrH,KAAKqH,GAAM0uJ,EAC7B/1J,KAAKsH,IAAOH,EAAEG,EAAItH,KAAKsH,GAAMyuJ,EAEtB/1J,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAau3J,EAAIC,EAAIF,GAMpB,OAJA/1J,KAAK9D,EAAI85J,EAAG95J,GAAM+5J,EAAG/5J,EAAI85J,EAAG95J,GAAM65J,EAClC/1J,KAAKqH,EAAI2uJ,EAAG3uJ,GAAM4uJ,EAAG5uJ,EAAI2uJ,EAAG3uJ,GAAM0uJ,EAClC/1J,KAAKsH,EAAI0uJ,EAAG1uJ,GAAM2uJ,EAAG3uJ,EAAI0uJ,EAAG1uJ,GAAMyuJ,EAE3B/1J,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO0I,GAEN,OAAOnH,KAAKkoK,aAAcloK,KAAMmH,EAEjC,GAAC,CAAA3E,IAAA,eAAA/D,MAED,SAAczC,EAAGuK,GAEhB,IAAM4hK,EAAKnsK,EAAEE,EAAGksK,EAAKpsK,EAAEqL,EAAGghK,EAAKrsK,EAAEsL,EAC3BghK,EAAK/hK,EAAErK,EAAGqsK,EAAKhiK,EAAEc,EAAGmhK,EAAKjiK,EAAEe,EAMjC,OAJAtH,KAAK9D,EAAIksK,EAAKI,EAAKH,EAAKE,EACxBvoK,KAAKqH,EAAIghK,EAAKC,EAAKH,EAAKK,EACxBxoK,KAAKsH,EAAI6gK,EAAKI,EAAKH,EAAKE,EAEjBtoK,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiB0I,GAEhB,IAAMshK,EAActhK,EAAEuhK,WAEtB,GAAqB,IAAhBD,EAAoB,OAAOzoK,KAAKivB,IAAK,EAAG,EAAG,GAEhD,IAAMmmI,EAASjuJ,EAAE88J,IAAKjkK,MAASyoK,EAE/B,OAAOzoK,KAAK07J,KAAMv0J,GAAIouJ,eAAgBH,EAEvC,GAAC,CAAA5yJ,IAAA,iBAAA/D,MAED,SAAgBkqK,GAIf,OAFAC,GAAUlN,KAAM17J,MAAO6oK,gBAAiBF,GAEjC3oK,KAAK8oK,IAAKF,GAElB,GAAC,CAAApmK,IAAA,UAAA/D,MAED,SAASsqK,GAKR,OAAO/oK,KAAK8oK,IAAKF,GAAUlN,KAAMqN,GAASxT,eAAgB,EAAIv1J,KAAKikK,IAAK8E,IAEzE,GAAC,CAAAvmK,IAAA,UAAA/D,MAED,SAAS0I,GAER,IAAMshK,EAAcxrK,KAAK04J,KAAM31J,KAAK0oK,WAAavhK,EAAEuhK,YAEnD,GAAqB,IAAhBD,EAAoB,OAAOxrK,KAAK00J,GAAK,EAE1C,IAAM8H,EAAQz5J,KAAKikK,IAAK98J,GAAMshK,EAI9B,OAAOxrK,KAAK4iK,KAAM3N,GAAOuH,GAAS,EAAG,GAEtC,GAAC,CAAAj3J,IAAA,aAAA/D,MAED,SAAY0I,GAEX,OAAOlK,KAAK04J,KAAM31J,KAAK81J,kBAAmB3uJ,GAE3C,GAAC,CAAA3E,IAAA,oBAAA/D,MAED,SAAmB0I,GAElB,IAAMmnI,EAAKtuI,KAAK9D,EAAIiL,EAAEjL,EAAGmyI,EAAKruI,KAAKqH,EAAIF,EAAEE,EAAG2hK,EAAKhpK,KAAKsH,EAAIH,EAAEG,EAE5D,OAAOgnI,EAAKA,EAAKD,EAAKA,EAAK26B,EAAKA,CAEjC,GAAC,CAAAxmK,IAAA,sBAAA/D,MAED,SAAqB0I,GAEpB,OAAOlK,KAAK4f,IAAK7c,KAAK9D,EAAIiL,EAAEjL,GAAMe,KAAK4f,IAAK7c,KAAKqH,EAAIF,EAAEE,GAAMpK,KAAK4f,IAAK7c,KAAKsH,EAAIH,EAAEG,EAEnF,GAAC,CAAA9E,IAAA,mBAAA/D,MAED,SAAkBhD,GAEjB,OAAOuE,KAAKipK,uBAAwBxtK,EAAEytK,OAAQztK,EAAE0tK,IAAK1tK,EAAEg+J,MAExD,GAAC,CAAAj3J,IAAA,yBAAA/D,MAED,SAAwByqK,EAAQC,EAAK1P,GAEpC,IAAM2P,EAAensK,KAAKm3J,IAAK+U,GAAQD,EAMvC,OAJAlpK,KAAK9D,EAAIktK,EAAensK,KAAKm3J,IAAKqF,GAClCz5J,KAAKqH,EAAIpK,KAAKk3J,IAAKgV,GAAQD,EAC3BlpK,KAAKsH,EAAI8hK,EAAensK,KAAKk3J,IAAKsF,GAE3Bz5J,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBxC,GAEnB,OAAO+D,KAAKqpK,yBAA0BptK,EAAEitK,OAAQjtK,EAAEw9J,MAAOx9J,EAAEoL,EAE5D,GAAC,CAAA7E,IAAA,2BAAA/D,MAED,SAA0ByqK,EAAQzP,EAAOpyJ,GAMxC,OAJArH,KAAK9D,EAAIgtK,EAASjsK,KAAKm3J,IAAKqF,GAC5Bz5J,KAAKqH,EAAIA,EACTrH,KAAKsH,EAAI4hK,EAASjsK,KAAKk3J,IAAKsF,GAErBz5J,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuBqI,GAEtB,IAAMR,EAAIQ,EAAEk/H,SAMZ,OAJAhmI,KAAK9D,EAAIoK,EAAG,IACZtG,KAAKqH,EAAIf,EAAG,IACZtG,KAAKsH,EAAIhB,EAAG,IAELtG,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBqI,GAEnB,IAAMsyJ,EAAKp5J,KAAKspK,oBAAqBxiK,EAAG,GAAIlP,SACtCyhK,EAAKr5J,KAAKspK,oBAAqBxiK,EAAG,GAAIlP,SACtC2xK,EAAKvpK,KAAKspK,oBAAqBxiK,EAAG,GAAIlP,SAM5C,OAJAoI,KAAK9D,EAAIk9J,EACTp5J,KAAKqH,EAAIgyJ,EACTr5J,KAAKsH,EAAIiiK,EAEFvpK,IAER,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,SAAqBqI,EAAG8H,GAEvB,OAAO5O,KAAK25J,UAAW7yJ,EAAEk/H,SAAkB,EAARp3H,EAEpC,GAAC,CAAApM,IAAA,uBAAA/D,MAED,SAAsBqI,EAAG8H,GAExB,OAAO5O,KAAK25J,UAAW7yJ,EAAEk/H,SAAkB,EAARp3H,EAEpC,GAAC,CAAApM,IAAA,eAAA/D,MAED,SAAc6H,GAMb,OAJAtG,KAAK9D,EAAIoK,EAAE8tD,GACXp0D,KAAKqH,EAAIf,EAAE08J,GACXhjK,KAAKsH,EAAIhB,EAAE28J,GAEJjjK,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0I,GAEP,OAAWA,EAAEjL,IAAM8D,KAAK9D,GAASiL,EAAEE,IAAMrH,KAAKqH,GAASF,EAAEG,IAAMtH,KAAKsH,CAErE,GAAC,CAAA9E,IAAA,YAAA/D,MAED,SAAWsE,GAAoB,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAM1B,OAJAD,KAAK9D,EAAI6G,EAAOgnC,GAChB/pC,KAAKqH,EAAItE,EAAOgnC,EAAS,GACzB/pC,KAAKsH,EAAIvE,EAAOgnC,EAAS,GAElB/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAM7B,OAJA8C,EAAOgnC,GAAW/pC,KAAK9D,EACvB6G,EAAOgnC,EAAS,GAAM/pC,KAAKqH,EAC3BtE,EAAOgnC,EAAS,GAAM/pC,KAAKsH,EAEpBvE,CAER,GAAC,CAAAP,IAAA,sBAAA/D,MAED,SAAqBy3J,EAAWtnJ,GAM/B,OAJA5O,KAAK9D,EAAIg6J,EAAUC,KAAMvnJ,GACzB5O,KAAKqH,EAAI6uJ,EAAUE,KAAMxnJ,GACzB5O,KAAKsH,EAAI4uJ,EAAUyG,KAAM/tJ,GAElB5O,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAMC,OAJAuB,KAAK9D,EAAIe,KAAKuxC,SACdxuC,KAAKqH,EAAIpK,KAAKuxC,SACdxuC,KAAKsH,EAAIrK,KAAKuxC,SAEPxuC,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,WAIC,IAAM8I,EAA8B,GAAxBtK,KAAKuxC,SAAW,IACtBl3C,EAAI2F,KAAKuxC,SAAWvxC,KAAK00J,GAAK,EAC9BlrJ,EAAIxJ,KAAK04J,KAAM,EAAC14J,KAAAs1J,IAAGhrJ,EAAK,IAM9B,OAJAvH,KAAK9D,EAAIuK,EAAIxJ,KAAKk3J,IAAK78J,GACvB0I,KAAKqH,EAAIZ,EAAIxJ,KAAKm3J,IAAK98J,GACvB0I,KAAKsH,EAAIC,EAEFvH,IAER,GAAC,CAAAwC,IAEE1B,OAAOrE,SAAQgC,MAAAq+E,EAAAA,MAAlB,SAAAr+E,IAAA,OAAAq+E,EAAAA,MAAA,SAAAi9L,GAAA,cAAAA,EAAA92Q,KAAA82Q,EAAA72Q,MAAA,OAEC,OAFD62Q,EAAA72Q,KAAA,EAEOlD,KAAK9D,EAAC,OACZ,OADY69Q,EAAA72Q,KAAA,EACNlD,KAAKqH,EAAC,OACZ,OADY0yQ,EAAA72Q,KAAA,EACNlD,KAAKsH,EAAC,wBAAAyyQ,EAAAtrM,OAAA,GAAAhwE,EAAA,YAEZqoK,CAAA,CAhsBW,GAosBP8B,GAA0B,IAAI9B,GAC9BG,GAA8B,IAAIlE,GAElC2G,GAAI,WAET,SAAAA,IAAgI,IAAnHx+H,EAAGjrC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAW39G,IAAYA,IAAYA,KAAYjsD,EAAG+C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,IAAW39G,KAAYA,KAAYA,KAAU1+C,EAAA,KAAAi/J,GAE5H1pK,KAAKysK,QAAS,EAEdzsK,KAAKkrC,IAAMA,EACXlrC,KAAK9C,IAAMA,CAEZ,CA0cC,OA1cAqM,EAAAmgK,EAAA,EAAAlnK,IAAA,MAAA/D,MAED,SAAKysC,EAAKhuC,GAKT,OAHA8C,KAAKkrC,IAAIwwH,KAAMxwH,GACflrC,KAAK9C,IAAIw+J,KAAMx+J,GAER8C,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcsE,GAUb,IARA,IAAI4mK,EAASxgH,IACTygH,EAASzgH,IACT0gH,EAAS1gH,IAET2gH,GAAS3gH,IACT4gH,GAAS5gH,IACT6gH,GAAS7gH,IAEHzsD,EAAI,EAAGmK,EAAI9D,EAAMnL,OAAQ8E,EAAImK,EAAGnK,GAAK,EAAI,CAElD,IAAMR,EAAI6G,EAAOrG,GACX2K,EAAItE,EAAOrG,EAAI,GACf4K,EAAIvE,EAAOrG,EAAI,GAEhBR,EAAIytK,IAAOA,EAAOztK,GAClBmL,EAAIuiK,IAAOA,EAAOviK,GAClBC,EAAIuiK,IAAOA,EAAOviK,GAElBpL,EAAI4tK,IAAOA,EAAO5tK,GAClBmL,EAAI0iK,IAAOA,EAAO1iK,GAClBC,EAAI0iK,IAAOA,EAAO1iK,EAExB,CAKA,OAHAtH,KAAKkrC,IAAIjc,IAAK06I,EAAMC,EAAMC,GAC1B7pK,KAAK9C,IAAI+xB,IAAK66I,EAAMC,EAAMC,GAEnBhqK,IAER,GAAC,CAAAwC,IAAA,yBAAA/D,MAED,SAAwBy3J,GAUvB,IARA,IAAIyT,EAASxgH,IACTygH,EAASzgH,IACT0gH,EAAS1gH,IAET2gH,GAAS3gH,IACT4gH,GAAS5gH,IACT6gH,GAAS7gH,IAEHzsD,EAAI,EAAGmK,EAAIqvJ,EAAUv4E,MAAOjhF,EAAImK,EAAGnK,IAAO,CAEnD,IAAMR,EAAIg6J,EAAUC,KAAMz5J,GACpB2K,EAAI6uJ,EAAUE,KAAM15J,GACpB4K,EAAI4uJ,EAAUyG,KAAMjgK,GAErBR,EAAIytK,IAAOA,EAAOztK,GAClBmL,EAAIuiK,IAAOA,EAAOviK,GAClBC,EAAIuiK,IAAOA,EAAOviK,GAElBpL,EAAI4tK,IAAOA,EAAO5tK,GAClBmL,EAAI0iK,IAAOA,EAAO1iK,GAClBC,EAAI0iK,IAAOA,EAAO1iK,EAExB,CAKA,OAHAtH,KAAKkrC,IAAIjc,IAAK06I,EAAMC,EAAMC,GAC1B7pK,KAAK9C,IAAI+xB,IAAK66I,EAAMC,EAAMC,GAEnBhqK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAewrK,GAEdjqK,KAAKkqK,YAEL,IAAM,IAAIxtK,EAAI,EAAGowD,EAAKm9G,EAAOryK,OAAQ8E,EAAIowD,EAAIpwD,IAE5CsD,KAAKmqK,cAAeF,EAAQvtK,IAI7B,OAAOsD,IAER,GAAC,CAAAwC,IAAA,uBAAA/D,MAED,SAAsB43J,EAAQ9wG,GAE7B,IAAM6kH,EAAWC,GAAU3O,KAAMn2G,GAAOgwG,eAAgB,IAKxD,OAHAv1J,KAAKkrC,IAAIwwH,KAAMrF,GAASyS,IAAKsB,GAC7BpqK,KAAK9C,IAAIw+J,KAAMrF,GAASjqI,IAAKg+I,GAEtBpqK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAe0D,GAA0B,IAAlBmoK,EAAOrqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAI7B,OAFAD,KAAKkqK,YAEElqK,KAAKuqK,eAAgBpoK,EAAQmoK,EAErC,GAAC,CAAA9nK,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+rK,GAKL,OAHAxqK,KAAKkrC,IAAIwwH,KAAM8O,EAAIt/H,KACnBlrC,KAAK9C,IAAIw+J,KAAM8O,EAAIttK,KAEZ8C,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,WAKC,OAHAuB,KAAKkrC,IAAIhvC,EAAI8D,KAAKkrC,IAAI7jC,EAAIrH,KAAKkrC,IAAI5jC,EAAM6hD,IACzCnpD,KAAK9C,IAAIhB,EAAI8D,KAAK9C,IAAImK,EAAIrH,KAAK9C,IAAIoK,GAAM6hD,IAElCnpD,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAIC,OAASuB,KAAK9C,IAAIhB,EAAI8D,KAAKkrC,IAAIhvC,GAAS8D,KAAK9C,IAAImK,EAAIrH,KAAKkrC,IAAI7jC,GAASrH,KAAK9C,IAAIoK,EAAItH,KAAKkrC,IAAI5jC,CAE9F,GAAC,CAAA9E,IAAA,YAAA/D,MAED,SAAW8C,GAEV,OAAOvB,KAAKyqK,UAAYlpK,EAAO0tB,IAAK,EAAG,EAAG,GAAM1tB,EAAO8zJ,WAAYr1J,KAAKkrC,IAAKlrC,KAAK9C,KAAMq4J,eAAgB,GAEzG,GAAC,CAAA/yJ,IAAA,UAAA/D,MAED,SAAS8C,GAER,OAAOvB,KAAKyqK,UAAYlpK,EAAO0tB,IAAK,EAAG,EAAG,GAAM1tB,EAAO+zJ,WAAYt1J,KAAK9C,IAAK8C,KAAKkrC,IAEnF,GAAC,CAAA1oC,IAAA,gBAAA/D,MAED,SAAeisK,GAKd,OAHA1qK,KAAKkrC,IAAIA,IAAKw/H,GACd1qK,KAAK9C,IAAIA,IAAKwtK,GAEP1qK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBksK,GAKf,OAHA3qK,KAAKkrC,IAAI49H,IAAK6B,GACd3qK,KAAK9C,IAAIkvB,IAAKu+I,GAEP3qK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB22J,GAKf,OAHAp1J,KAAKkrC,IAAI0/H,WAAaxV,GACtBp1J,KAAK9C,IAAI0tK,UAAWxV,GAEbp1J,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB0D,GAA0B,IAAlBmoK,EAAOrqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAK9BkC,EAAO0oK,mBAAmB,GAAO,GAEjC,IAAMC,EAAW3oK,EAAO2oK,SAExB,QAAkB1gK,IAAb0gK,EAEJ,GAAKR,QAAkClgK,GAAvB0gK,EAAS54F,iBAA4D9nE,IAAjC0gK,EAAS54F,WAAW3S,SAGvE,IADA,IAAMA,EAAWurG,EAAS54F,WAAW3S,SAC3B7iE,EAAI,EAAGmK,EAAI04D,EAASoe,MAAOjhF,EAAImK,EAAGnK,IAE3C2tK,GAAUU,oBAAqBxrG,EAAU7iE,GAAImrK,aAAc1lK,EAAO8lK,aAClEjoK,KAAKmqK,cAAeE,SAMS,OAAzBS,EAASE,aAEbF,EAASG,qBAIVC,GAAOxP,KAAMoP,EAASE,aACtBE,GAAOrD,aAAc1lK,EAAO8lK,aAE5BjoK,KAAKmrK,MAAOD,IAQd,IAFA,IAAMttJ,EAAWzb,EAAOyb,SAEdlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5CsD,KAAKuqK,eAAgB3sJ,EAAUlhB,GAAK4tK,GAIrC,OAAOtqK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeisK,GAEd,QAAOA,EAAMxuK,EAAI8D,KAAKkrC,IAAIhvC,GAAKwuK,EAAMxuK,EAAI8D,KAAK9C,IAAIhB,GACjDwuK,EAAMrjK,EAAIrH,KAAKkrC,IAAI7jC,GAAKqjK,EAAMrjK,EAAIrH,KAAK9C,IAAImK,GAC3CqjK,EAAMpjK,EAAItH,KAAKkrC,IAAI5jC,GAAKojK,EAAMpjK,EAAItH,KAAK9C,IAAIoK,EAE7C,GAAC,CAAA9E,IAAA,cAAA/D,MAED,SAAa+rK,GAEZ,OAAOxqK,KAAKkrC,IAAIhvC,GAAKsuK,EAAIt/H,IAAIhvC,GAAKsuK,EAAIttK,IAAIhB,GAAK8D,KAAK9C,IAAIhB,GACvD8D,KAAKkrC,IAAI7jC,GAAKmjK,EAAIt/H,IAAI7jC,GAAKmjK,EAAIttK,IAAImK,GAAKrH,KAAK9C,IAAImK,GACjDrH,KAAKkrC,IAAI5jC,GAAKkjK,EAAIt/H,IAAI5jC,GAAKkjK,EAAIttK,IAAIoK,GAAKtH,KAAK9C,IAAIoK,CAEnD,GAAC,CAAA9E,IAAA,eAAA/D,MAED,SAAcisK,EAAOnpK,GAKpB,OAAOA,EAAO0tB,KACXy7I,EAAMxuK,EAAI8D,KAAKkrC,IAAIhvC,IAAQ8D,KAAK9C,IAAIhB,EAAI8D,KAAKkrC,IAAIhvC,IACjDwuK,EAAMrjK,EAAIrH,KAAKkrC,IAAI7jC,IAAQrH,KAAK9C,IAAImK,EAAIrH,KAAKkrC,IAAI7jC,IACjDqjK,EAAMpjK,EAAItH,KAAKkrC,IAAI5jC,IAAQtH,KAAK9C,IAAIoK,EAAItH,KAAKkrC,IAAI5jC,GAGrD,GAAC,CAAA9E,IAAA,gBAAA/D,MAED,SAAe+rK,GAGd,QAAOA,EAAIttK,IAAIhB,EAAI8D,KAAKkrC,IAAIhvC,GAAKsuK,EAAIt/H,IAAIhvC,EAAI8D,KAAK9C,IAAIhB,GACrDsuK,EAAIttK,IAAImK,EAAIrH,KAAKkrC,IAAI7jC,GAAKmjK,EAAIt/H,IAAI7jC,EAAIrH,KAAK9C,IAAImK,GAC/CmjK,EAAIttK,IAAIoK,EAAItH,KAAKkrC,IAAI5jC,GAAKkjK,EAAIt/H,IAAI5jC,EAAItH,KAAK9C,IAAIoK,EAEjD,GAAC,CAAA9E,IAAA,mBAAA/D,MAED,SAAkB2sK,GAMjB,OAHAprK,KAAKqrK,WAAYD,EAAO/U,OAAQgU,IAGzBA,GAAUvU,kBAAmBsV,EAAO/U,SAAc+U,EAAOlC,OAASkC,EAAOlC,MAEjF,GAAC,CAAA1mK,IAAA,kBAAA/D,MAED,SAAiB6sK,GAKhB,IAAIpgI,EAAKhuC,EAsCT,OApCKouK,EAAMvC,OAAO7sK,EAAI,GAErBgvC,EAAMogI,EAAMvC,OAAO7sK,EAAI8D,KAAKkrC,IAAIhvC,EAChCgB,EAAMouK,EAAMvC,OAAO7sK,EAAI8D,KAAK9C,IAAIhB,IAIhCgvC,EAAMogI,EAAMvC,OAAO7sK,EAAI8D,KAAK9C,IAAIhB,EAChCgB,EAAMouK,EAAMvC,OAAO7sK,EAAI8D,KAAKkrC,IAAIhvC,GAI5BovK,EAAMvC,OAAO1hK,EAAI,GAErB6jC,GAAOogI,EAAMvC,OAAO1hK,EAAIrH,KAAKkrC,IAAI7jC,EACjCnK,GAAOouK,EAAMvC,OAAO1hK,EAAIrH,KAAK9C,IAAImK,IAIjC6jC,GAAOogI,EAAMvC,OAAO1hK,EAAIrH,KAAK9C,IAAImK,EACjCnK,GAAOouK,EAAMvC,OAAO1hK,EAAIrH,KAAKkrC,IAAI7jC,GAI7BikK,EAAMvC,OAAOzhK,EAAI,GAErB4jC,GAAOogI,EAAMvC,OAAOzhK,EAAItH,KAAKkrC,IAAI5jC,EACjCpK,GAAOouK,EAAMvC,OAAOzhK,EAAItH,KAAK9C,IAAIoK,IAIjC4jC,GAAOogI,EAAMvC,OAAOzhK,EAAItH,KAAK9C,IAAIoK,EACjCpK,GAAOouK,EAAMvC,OAAOzhK,EAAItH,KAAKkrC,IAAI5jC,GAIzB4jC,IAASogI,EAAMC,UAAYruK,IAASouK,EAAMC,QAEpD,GAAC,CAAA/oK,IAAA,qBAAA/D,MAED,SAAoB+sK,GAEnB,GAAKxrK,KAAKyqK,UAET,OAAO,EAKRzqK,KAAKyrK,UAAWC,IAChBC,GAASrW,WAAYt1J,KAAK9C,IAAKwuK,IAG/BE,GAAMtW,WAAYkW,EAASxvK,EAAG0vK,IAC9BG,GAAMvW,WAAYkW,EAASjlK,EAAGmlK,IAC9Bg1M,GAAMprN,WAAYkW,EAASvvK,EAAGyvK,IAG9BK,GAAIzW,WAAYuW,GAAOD,IACvBI,GAAI1W,WAAYorN,GAAO70M,IACvBI,GAAI3W,WAAYsW,GAAO80M,IAKvB,IAAIx0M,EAAO,CACV,GAAKH,GAAIzkK,EAAGykK,GAAI1kK,EAAG,GAAK2kK,GAAI1kK,EAAG0kK,GAAI3kK,EAAG,GAAK4kK,GAAI3kK,EAAG2kK,GAAI5kK,EACtD0kK,GAAIzkK,EAAG,GAAKykK,GAAI7vK,EAAG8vK,GAAI1kK,EAAG,GAAK0kK,GAAI9vK,EAAG+vK,GAAI3kK,EAAG,GAAK2kK,GAAI/vK,GACpD6vK,GAAI1kK,EAAG0kK,GAAI7vK,EAAG,GAAK8vK,GAAI3kK,EAAG2kK,GAAI9vK,EAAG,GAAK+vK,GAAI5kK,EAAG4kK,GAAI/vK,EAAG,GAEvD,QAAOiwK,GAAYD,EAAMN,GAAOC,GAAO60M,GAAO/0M,QAQvCQ,GADPD,EAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACRN,GAAOC,GAAO60M,GAAO/0M,MAQ9CS,GAAgBlE,aAAc6D,GAAKC,IAG5BG,GAFPD,EAAO,CAAEE,GAAgBlwK,EAAGkwK,GAAgB/kK,EAAG+kK,GAAgB9kK,GAEtCskK,GAAOC,GAAO60M,GAAO/0M,KAE/C,GAAC,CAAAnpK,IAAA,aAAA/D,MAED,SAAYisK,EAAOnpK,GAElB,OAAOA,EAAOm6J,KAAMgP,GAAQxY,MAAOlyJ,KAAKkrC,IAAKlrC,KAAK9C,IAEnD,GAAC,CAAAsF,IAAA,kBAAA/D,MAED,SAAiBisK,GAIhB,OAFqBL,GAAU3O,KAAMgP,GAAQxY,MAAOlyJ,KAAKkrC,IAAKlrC,KAAK9C,KAE/C4rK,IAAK4B,GAAQ9yK,QAElC,GAAC,CAAA4K,IAAA,oBAAA/D,MAED,SAAmB8C,GAMlB,OAJAvB,KAAKyrK,UAAWlqK,EAAO80J,QAEvB90J,EAAO2nK,OAA8C,GAArClpK,KAAKqsK,QAAShC,IAAYzyK,SAEnC2J,CAER,GAAC,CAAAiB,IAAA,YAAA/D,MAED,SAAW+rK,GAQV,OANAxqK,KAAKkrC,IAAIhuC,IAAKstK,EAAIt/H,KAClBlrC,KAAK9C,IAAIguC,IAAKs/H,EAAIttK,KAGb8C,KAAKyqK,WAAYzqK,KAAKkqK,YAEpBlqK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO+rK,GAKN,OAHAxqK,KAAKkrC,IAAIA,IAAKs/H,EAAIt/H,KAClBlrC,KAAK9C,IAAIA,IAAKstK,EAAIttK,KAEX8C,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAci7J,GAGb,OAAK15J,KAAKyqK,YAGV6B,GAAS,GAAIr9I,IAAKjvB,KAAKkrC,IAAIhvC,EAAG8D,KAAKkrC,IAAI7jC,EAAGrH,KAAKkrC,IAAI5jC,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAKkrC,IAAIhvC,EAAG8D,KAAKkrC,IAAI7jC,EAAGrH,KAAK9C,IAAIoK,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAKkrC,IAAIhvC,EAAG8D,KAAK9C,IAAImK,EAAGrH,KAAKkrC,IAAI5jC,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAKkrC,IAAIhvC,EAAG8D,KAAK9C,IAAImK,EAAGrH,KAAK9C,IAAIoK,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAK9C,IAAIhB,EAAG8D,KAAKkrC,IAAI7jC,EAAGrH,KAAKkrC,IAAI5jC,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAK9C,IAAIhB,EAAG8D,KAAKkrC,IAAI7jC,EAAGrH,KAAK9C,IAAIoK,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAK9C,IAAIhB,EAAG8D,KAAK9C,IAAImK,EAAGrH,KAAKkrC,IAAI5jC,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAK9C,IAAIhB,EAAG8D,KAAK9C,IAAImK,EAAGrH,KAAK9C,IAAIoK,GAAIugK,aAAcnO,GAErE15J,KAAKusK,cAAeD,KAZStsK,IAgB9B,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsrC,GAKV,OAHA/pC,KAAKkrC,IAAI9e,IAAK2d,GACd/pC,KAAK9C,IAAIkvB,IAAK2d,GAEP/pC,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ+rK,GAEP,OAAOA,EAAIt/H,IAAIshI,OAAQxsK,KAAKkrC,MAASs/H,EAAIttK,IAAIsvK,OAAQxsK,KAAK9C,IAE3D,KAACwsK,CAAA,CAndQ,GAudJ4C,GAAU,CACD,IAAIxF,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,IAGbuD,GAA0B,IAAIvD,GAE9BoE,GAAuB,IAAIxB,GAI3BkC,GAAsB,IAAI9E,GAC1B+E,GAAsB,IAAI/E,GAC1B45M,GAAsB,IAAI55M,GAI1BiF,GAAoB,IAAIjF,GACxBkF,GAAoB,IAAIlF,GACxBmF,GAAoB,IAAInF,GAExB4E,GAAwB,IAAI5E,GAC5B6E,GAAyB,IAAI7E,GAC7BsF,GAAgC,IAAItF,GACpC4F,GAA0B,IAAI5F,GAEpC,SAASqF,GAAYD,EAAMS,EAAI3W,EAAIC,EAAI2W,GAEtC,IAAM,IAAIlwK,EAAI,EAAGmT,EAAIq8J,EAAKt0K,OAAS,EAAG8E,GAAKmT,EAAGnT,GAAK,EAAI,CAEtDgwK,GAAU/S,UAAWuS,EAAMxvK,GAE3B,IAAMwK,EAAI0lK,EAAQ1wK,EAAIe,KAAK4f,IAAK6vJ,GAAUxwK,GAAM0wK,EAAQvlK,EAAIpK,KAAK4f,IAAK6vJ,GAAUrlK,GAAMulK,EAAQtlK,EAAIrK,KAAK4f,IAAK6vJ,GAAUplK,GAEhHulK,EAAKF,EAAG1I,IAAKyI,IACbp1C,EAAK0+B,EAAGiO,IAAKyI,IACbn1C,EAAK0+B,EAAGgO,IAAKyI,IAEnB,GAAKzvK,KAAKC,KAAOD,KAAKC,IAAK2vK,EAAIv1C,EAAIC,GAAMt6H,KAAKiuC,IAAK2hI,EAAIv1C,EAAIC,IAASrwH,EAInE,OAAO,CAIT,CAEA,OAAO,CAER,CAEA,IAAM4lK,GAAuB,IAAIpD,GAC3BqD,GAAsB,IAAIjG,GAC1BgF,GAAsB,IAAIhF,GAE1BoG,GAAM,WAEX,SAAAA,IAAoD,IAAvC7W,EAAMp2J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAWoC,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,IAAK,EAACwK,EAAA,KAAAyiK,GAEhDltK,KAAKq2J,OAASA,EACdr2J,KAAKkpK,OAASA,CAEf,CAgOC,OAhOA3/J,EAAA2jK,EAAA,EAAA1qK,IAAA,MAAA/D,MAED,SAAK43J,EAAQ6S,GAKZ,OAHAlpK,KAAKq2J,OAAOqF,KAAMrF,GAClBr2J,KAAKkpK,OAASA,EAEPlpK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAewrK,EAAQkD,GAEtB,IAAM9W,EAASr2J,KAAKq2J,YAEIjsJ,IAAnB+iK,EAEJ9W,EAAOqF,KAAMyR,GAIbL,GAAOP,cAAetC,GAASwB,UAAWpV,GAM3C,IAFA,IAAI+W,EAAc,EAER1wK,EAAI,EAAGowD,EAAKm9G,EAAOryK,OAAQ8E,EAAIowD,EAAIpwD,IAE5C0wK,EAAcnwK,KAAKC,IAAKkwK,EAAa/W,EAAOP,kBAAmBmU,EAAQvtK,KAMxE,OAFAsD,KAAKkpK,OAASjsK,KAAK04J,KAAMyX,GAElBptK,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM2sK,GAKL,OAHAprK,KAAKq2J,OAAOqF,KAAM0P,EAAO/U,QACzBr2J,KAAKkpK,OAASkC,EAAOlC,OAEdlpK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAEC,OAASuB,KAAKkpK,OAAS,CAExB,GAAC,CAAA1mK,IAAA,YAAA/D,MAED,WAKC,OAHAuB,KAAKq2J,OAAOpnI,IAAK,EAAG,EAAG,GACvBjvB,KAAKkpK,QAAW,EAETlpK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeisK,GAEd,OAASA,EAAM5U,kBAAmB91J,KAAKq2J,SAAcr2J,KAAKkpK,OAASlpK,KAAKkpK,MAEzE,GAAC,CAAA1mK,IAAA,kBAAA/D,MAED,SAAiBisK,GAEhB,OAASA,EAAM2C,WAAYrtK,KAAKq2J,QAAWr2J,KAAKkpK,MAEjD,GAAC,CAAA1mK,IAAA,mBAAA/D,MAED,SAAkB2sK,GAEjB,IAAMkC,EAAYttK,KAAKkpK,OAASkC,EAAOlC,OAEvC,OAAOkC,EAAO/U,OAAOP,kBAAmB91J,KAAKq2J,SAAciX,EAAYA,CAExE,GAAC,CAAA9qK,IAAA,gBAAA/D,MAED,SAAe+rK,GAEd,OAAOA,EAAI+C,iBAAkBvtK,KAE9B,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiB6sK,GAEhB,OAAOruK,KAAK4f,IAAKyuJ,EAAMkC,gBAAiBxtK,KAAKq2J,UAAcr2J,KAAKkpK,MAEjE,GAAC,CAAA1mK,IAAA,aAAA/D,MAED,SAAYisK,EAAOnpK,GAElB,IAAMksK,EAAgBztK,KAAKq2J,OAAOP,kBAAmB4U,GAWrD,OATAnpK,EAAOm6J,KAAMgP,GAER+C,EAAkBztK,KAAKkpK,OAASlpK,KAAKkpK,SAEzC3nK,EAAOunK,IAAK9oK,KAAKq2J,QAASx1C,YAC1Bt/G,EAAOg0J,eAAgBv1J,KAAKkpK,QAAS98I,IAAKpsB,KAAKq2J,SAIzC90J,CAER,GAAC,CAAAiB,IAAA,iBAAA/D,MAED,SAAgB8C,GAEf,OAAKvB,KAAKyqK,WAGTlpK,EAAO2oK,YACA3oK,IAIRA,EAAO0tB,IAAKjvB,KAAKq2J,OAAQr2J,KAAKq2J,QAC9B90J,EAAOmsK,eAAgB1tK,KAAKkpK,QAErB3nK,EAER,GAAC,CAAAiB,IAAA,eAAA/D,MAED,SAAci7J,GAKb,OAHA15J,KAAKq2J,OAAOwR,aAAcnO,GAC1B15J,KAAKkpK,OAASlpK,KAAKkpK,OAASxP,EAAOiU,oBAE5B3tK,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsrC,GAIV,OAFA/pC,KAAKq2J,OAAOjqI,IAAK2d,GAEV/pC,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeisK,GAEd,GAAK1qK,KAAKyqK,UAMT,OAJAzqK,KAAKq2J,OAAOqF,KAAMgP,GAElB1qK,KAAKkpK,OAAS,EAEPlpK,KAIR+sK,GAAMzX,WAAYoV,EAAO1qK,KAAKq2J,QAE9B,IAAMqS,EAAWqE,GAAMrE,WAEvB,GAAKA,EAAa1oK,KAAKkpK,OAASlpK,KAAKkpK,OAAW,CAI/C,IAAMtxK,EAASqF,KAAK04J,KAAM+S,GAEpBtrK,EAAmC,IAAzBxF,EAASoI,KAAKkpK,QAE9BlpK,KAAKq2J,OAAOqkB,gBAAiB3N,GAAO3vK,EAAQxF,GAE5CoI,KAAKkpK,QAAU9rK,CAEhB,CAEA,OAAO4C,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO2sK,GAEN,OAAKA,EAAOX,UAEJzqK,KAIHA,KAAKyqK,WAETzqK,KAAK07J,KAAM0P,GAEJprK,QAIqC,IAAxCA,KAAKq2J,OAAOmW,OAAQpB,EAAO/U,QAE9Br2J,KAAKkpK,OAASjsK,KAAKC,IAAK8C,KAAKkpK,OAAQkC,EAAOlC,SAI7C4C,GAAMxW,WAAY8V,EAAO/U,OAAQr2J,KAAKq2J,QAASwlI,UAAWzwH,EAAOlC,QAEjElpK,KAAKmqK,cAAe4C,GAAMrR,KAAM0P,EAAO/U,QAASjqI,IAAK0/I,KAErD9rK,KAAKmqK,cAAe4C,GAAMrR,KAAM0P,EAAO/U,QAASyS,IAAKgD,MAI/C9rK,KAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ2sK,GAEP,OAAOA,EAAO/U,OAAOmW,OAAQxsK,KAAKq2J,SAAc+U,EAAOlC,SAAWlpK,KAAKkpK,MAExE,GAAC,CAAA1mK,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACktK,CAAA,CAvOU,GA2ONW,GAA0B,IAAI/G,GAC9BgH,GAA2B,IAAIhH,GAC/BiH,GAAwB,IAAIjH,GAC5BkH,GAAsB,IAAIlH,GAE1BmH,GAAuB,IAAInH,GAC3BoH,GAAuB,IAAIpH,GAC3BqH,GAA0B,IAAIrH,GAE9BsH,GAAG,WAER,SAAAA,IAA4E,IAA/Dh2E,EAAMn4F,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAWuH,EAASpuK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAS,EAAG,GAAK,GAAGr8J,EAAA,KAAA2jK,GAExEpuK,KAAKo4F,OAASA,EACdp4F,KAAKquK,UAAYA,CAElB,CAsdC,OAtdA9kK,EAAA6kK,EAAA,EAAA5rK,IAAA,MAAA/D,MAED,SAAK25F,EAAQi2E,GAKZ,OAHAruK,KAAKo4F,OAAOsjE,KAAMtjE,GAClBp4F,KAAKquK,UAAU3S,KAAM2S,GAEdruK,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM6vK,GAKL,OAHAtuK,KAAKo4F,OAAOsjE,KAAM4S,EAAIl2E,QACtBp4F,KAAKquK,UAAU3S,KAAM4S,EAAID,WAElBruK,IAER,GAAC,CAAAwC,IAAA,KAAA/D,MAED,SAAInH,EAAGiK,GAEN,OAAOA,EAAOm6J,KAAM17J,KAAKquK,WAAY9Y,eAAgBj+J,GAAI80B,IAAKpsB,KAAKo4F,OAEpE,GAAC,CAAA51F,IAAA,SAAA/D,MAED,SAAQ0I,GAIP,OAFAnH,KAAKquK,UAAU3S,KAAMv0J,GAAI2hK,IAAK9oK,KAAKo4F,QAASyoB,YAErC7gH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQnH,GAIP,OAFA0I,KAAKo4F,OAAOsjE,KAAM17J,KAAKymE,GAAInvE,EAAGu2K,KAEvB7tK,IAER,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,SAAqBisK,EAAOnpK,GAE3BA,EAAO+zJ,WAAYoV,EAAO1qK,KAAKo4F,QAE/B,IAAMm2E,EAAoBhtK,EAAO0iK,IAAKjkK,KAAKquK,WAE3C,OAAKE,EAAoB,EAEjBhtK,EAAOm6J,KAAM17J,KAAKo4F,QAInB72F,EAAOm6J,KAAM17J,KAAKquK,WAAY9Y,eAAgBgZ,GAAoBniJ,IAAKpsB,KAAKo4F,OAEpF,GAAC,CAAA51F,IAAA,kBAAA/D,MAED,SAAiBisK,GAEhB,OAAOztK,KAAK04J,KAAM31J,KAAKwuK,kBAAmB9D,GAE3C,GAAC,CAAAloK,IAAA,oBAAA/D,MAED,SAAmBisK,GAElB,IAAM6D,EAAoBV,GAAUvY,WAAYoV,EAAO1qK,KAAKo4F,QAAS6rE,IAAKjkK,KAAKquK,WAI/E,OAAKE,EAAoB,EAEjBvuK,KAAKo4F,OAAO09D,kBAAmB4U,IAIvCmD,GAAUnS,KAAM17J,KAAKquK,WAAY9Y,eAAgBgZ,GAAoBniJ,IAAKpsB,KAAKo4F,QAExEy1E,GAAU/X,kBAAmB4U,GAErC,GAAC,CAAAloK,IAAA,sBAAA/D,MAED,SAAqBkuK,EAAI3W,EAAIyY,EAAoBC,GAShDZ,GAAWpS,KAAMiR,GAAKvgJ,IAAK4pI,GAAKT,eAAgB,IAChDwY,GAAQrS,KAAM1F,GAAK8S,IAAK6D,GAAK9rD,YAC7BmtD,GAAMtS,KAAM17J,KAAKo4F,QAAS0wE,IAAKgF,IAE/B,IAMIa,EAAIhL,EAAIiL,EAASC,EANfC,EAAkC,GAAtBnC,EAAGU,WAAYrX,GAC3B+Y,GAAQ/uK,KAAKquK,UAAUpK,IAAK8J,IAC5BiB,EAAKhB,GAAM/J,IAAKjkK,KAAKquK,WACrBxb,GAAOmb,GAAM/J,IAAK8J,IAClB9xK,EAAI+xK,GAAMtF,WACV9P,EAAM37J,KAAK4f,IAAK,EAAIkyJ,EAAMA,GAGhC,GAAKnW,EAAM,EAQV,GAHA+K,EAAKoL,EAAMC,EAAKnc,EAChBgc,EAASC,EAAYlW,GAFrB+V,EAAKI,EAAMlc,EAAKmc,IAIL,EAEV,GAAKrL,IAAQkL,EAEZ,GAAKlL,GAAMkL,EAAS,CAKnB,IAAMI,EAAS,EAAIrW,EAGnBgW,GAFAD,GAAMM,IAEWN,EAAKI,GADtBpL,GAAMsL,GAC2B,EAAID,GAAOrL,GAAOoL,EAAMJ,EAAKhL,EAAK,EAAI9Q,GAAO52J,CAE/E,MAIC0nK,EAAKmL,EAELF,IADAD,EAAK1xK,KAAKC,IAAK,IAAO6xK,EAAMpL,EAAKqL,KAChBL,EAAKhL,GAAOA,EAAK,EAAI9Q,GAAO52J,OAQ9C0nK,GAAOmL,EAEPF,IADAD,EAAK1xK,KAAKC,IAAK,IAAO6xK,EAAMpL,EAAKqL,KAChBL,EAAKhL,GAAOA,EAAK,EAAI9Q,GAAO52J,OAMzC0nK,IAAQkL,EAMZD,IAFAD,EAAK1xK,KAAKC,IAAK,KAAS6xK,EAAMD,EAAYE,KAEzBL,GADjBhL,EAAOgL,EAAK,GAAQG,EAAY7xK,KAAKiuC,IAAKjuC,KAAKC,KAAO4xK,GAAajc,GAAMic,KAC5CnL,EAAK,EAAI9Q,GAAO52J,EAElC0nK,GAAMkL,GAIjBF,EAAK,EAELC,GADAjL,EAAK1mK,KAAKiuC,IAAKjuC,KAAKC,KAAO4xK,GAAajc,GAAMic,KAC7BnL,EAAK,EAAI9Q,GAAO52J,GAQjC2yK,IAFAD,EAAK1xK,KAAKC,IAAK,IAAO6xK,EAAMD,EAAYE,KAEvBL,GADjBhL,EAAOgL,EAAK,EAAMG,EAAY7xK,KAAKiuC,IAAKjuC,KAAKC,KAAO4xK,GAAajc,GAAMic,KAC1CnL,EAAK,EAAI9Q,GAAO52J,OAU/C0nK,EAAOoL,EAAM,GAAQD,EAAYA,EAEjCF,IADAD,EAAK1xK,KAAKC,IAAK,IAAO6xK,EAAMpL,EAAKqL,KAChBL,EAAKhL,GAAOA,EAAK,EAAI9Q,GAAO52J,EAgB9C,OAZKwyK,GAEJA,EAAmB/S,KAAM17J,KAAKquK,WAAY9Y,eAAgBoZ,GAAKviJ,IAAKpsB,KAAKo4F,QAIrEs2E,GAEJA,EAAuBhT,KAAMqS,IAAUxY,eAAgBoO,GAAKv3I,IAAK0hJ,IAI3Dc,CAER,GAAC,CAAApsK,IAAA,kBAAA/D,MAED,SAAiB2sK,EAAQ7pK,GAExBssK,GAAUvY,WAAY8V,EAAO/U,OAAQr2J,KAAKo4F,QAC1C,IAAM82E,EAAMrB,GAAU5J,IAAKjkK,KAAKquK,WAC1Brc,EAAK6b,GAAU5J,IAAK4J,IAAcqB,EAAMA,EACxCC,EAAU/D,EAAOlC,OAASkC,EAAOlC,OAEvC,GAAKlX,EAAKmd,EAAU,OAAO,KAE3B,IAAMC,EAAMnyK,KAAK04J,KAAMwZ,EAAUnd,GAG3Bqd,EAAKH,EAAME,EAGXE,EAAKJ,EAAME,EAGjB,OAAKC,EAAK,GAAKC,EAAK,EAAW,KAK1BD,EAAK,EAAWrvK,KAAKymE,GAAI6oG,EAAI/tK,GAG3BvB,KAAKymE,GAAI4oG,EAAI9tK,EAErB,GAAC,CAAAiB,IAAA,mBAAA/D,MAED,SAAkB2sK,GAEjB,OAAOprK,KAAKwuK,kBAAmBpD,EAAO/U,SAAc+U,EAAOlC,OAASkC,EAAOlC,MAE5E,GAAC,CAAA1mK,IAAA,kBAAA/D,MAED,SAAiB6sK,GAEhB,IAAM7C,EAAc6C,EAAMvC,OAAO9E,IAAKjkK,KAAKquK,WAE3C,GAAqB,IAAhB5F,EAGJ,OAA8C,IAAzC6C,EAAMkC,gBAAiBxtK,KAAKo4F,QAEzB,EAMD,KAIR,IAAM9gG,IAAQ0I,KAAKo4F,OAAO6rE,IAAKqH,EAAMvC,QAAWuC,EAAMC,UAAa9C,EAInE,OAAOnxK,GAAK,EAAIA,EAAI,IAErB,GAAC,CAAAkL,IAAA,iBAAA/D,MAED,SAAgB6sK,EAAO/pK,GAEtB,IAAMjK,EAAI0I,KAAKuvK,gBAAiBjE,GAEhC,OAAW,OAANh0K,EAEG,KAID0I,KAAKymE,GAAInvE,EAAGiK,EAEpB,GAAC,CAAAiB,IAAA,kBAAA/D,MAED,SAAiB6sK,GAIhB,IAAMkE,EAAclE,EAAMkC,gBAAiBxtK,KAAKo4F,QAEhD,OAAqB,IAAhBo3E,GAMelE,EAAMvC,OAAO9E,IAAKjkK,KAAKquK,WAExBmB,EAAc,CAUlC,GAAC,CAAAhtK,IAAA,eAAA/D,MAED,SAAc+rK,EAAKjpK,GAElB,IAAIkuK,EAAMC,EAAMC,EAAOC,EAAOC,EAAOC,EAE/BC,EAAU,EAAI/vK,KAAKquK,UAAUnyK,EAClC8zK,EAAU,EAAIhwK,KAAKquK,UAAUhnK,EAC7B4oK,EAAU,EAAIjwK,KAAKquK,UAAU/mK,EAExB8wF,EAASp4F,KAAKo4F,OA0BpB,OAxBK23E,GAAW,GAEfN,GAASjF,EAAIt/H,IAAIhvC,EAAIk8F,EAAOl8F,GAAM6zK,EAClCL,GAASlF,EAAIttK,IAAIhB,EAAIk8F,EAAOl8F,GAAM6zK,IAIlCN,GAASjF,EAAIttK,IAAIhB,EAAIk8F,EAAOl8F,GAAM6zK,EAClCL,GAASlF,EAAIt/H,IAAIhvC,EAAIk8F,EAAOl8F,GAAM6zK,GAI9BC,GAAW,GAEfL,GAAUnF,EAAIt/H,IAAI7jC,EAAI+wF,EAAO/wF,GAAM2oK,EACnCJ,GAAUpF,EAAIttK,IAAImK,EAAI+wF,EAAO/wF,GAAM2oK,IAInCL,GAAUnF,EAAIttK,IAAImK,EAAI+wF,EAAO/wF,GAAM2oK,EACnCJ,GAAUpF,EAAIt/H,IAAI7jC,EAAI+wF,EAAO/wF,GAAM2oK,GAI7BP,EAAOG,GAAaD,EAAQD,EAAgB,OAE9CC,EAAQF,GAAQn4J,MAAOm4J,MAASA,EAAOE,IAEvCC,EAAQF,GAAQp4J,MAAOo4J,MAASA,EAAOE,GAEvCK,GAAW,GAEfJ,GAAUrF,EAAIt/H,IAAI5jC,EAAI8wF,EAAO9wF,GAAM2oK,EACnCH,GAAUtF,EAAIttK,IAAIoK,EAAI8wF,EAAO9wF,GAAM2oK,IAInCJ,GAAUrF,EAAIttK,IAAIoK,EAAI8wF,EAAO9wF,GAAM2oK,EACnCH,GAAUtF,EAAIt/H,IAAI5jC,EAAI8wF,EAAO9wF,GAAM2oK,GAI7BR,EAAOK,GAAaD,EAAQH,EAAgB,OAE9CG,EAAQJ,GAAQA,IAASA,KAAOA,EAAOI,IAEvCC,EAAQJ,GAAQA,IAASA,KAAOA,EAAOI,GAIvCJ,EAAO,EAAW,KAEhB1vK,KAAKymE,GAAIgpG,GAAQ,EAAIA,EAAOC,EAAMnuK,IAE1C,GAAC,CAAAiB,IAAA,gBAAA/D,MAED,SAAe+rK,GAEd,OAA+C,OAAxCxqK,KAAKkwK,aAAc1F,EAAKqD,GAEhC,GAAC,CAAArrK,IAAA,oBAAA/D,MAED,SAAmBzC,EAAGuK,EAAGtK,EAAGk0K,EAAiB5uK,GAM5C0sK,GAAO3Y,WAAY/uJ,EAAGvK,GACtBkyK,GAAO5Y,WAAYr5J,EAAGD,GACtBmyK,GAAUjG,aAAc+F,GAAQC,IAOhC,IACIkC,EADAC,EAAMrwK,KAAKquK,UAAUpK,IAAKkK,IAG9B,GAAKkC,EAAM,EAAI,CAEd,GAAKF,EAAkB,OAAO,KAC9BC,EAAO,CAER,KAAO,MAAKC,EAAM,GAOjB,OAAO,KALPD,GAAS,EACTC,GAAQA,CAMT,CAEArC,GAAM1Y,WAAYt1J,KAAKo4F,OAAQp8F,GAC/B,IAAMs0K,EAASF,EAAOpwK,KAAKquK,UAAUpK,IAAKiK,GAAOhG,aAAc8F,GAAOE,KAGtE,GAAKoC,EAAS,EAEb,OAAO,KAIR,IAAMC,EAASH,EAAOpwK,KAAKquK,UAAUpK,IAAKgK,GAAOuC,MAAOxC,KAGxD,GAAKuC,EAAS,EAEb,OAAO,KAKR,GAAKD,EAASC,EAASF,EAEtB,OAAO,KAKR,IAAMI,GAAQL,EAAOpC,GAAM/J,IAAKkK,IAGhC,OAAKsC,EAAM,EAEH,KAKDzwK,KAAKymE,GAAIgqG,EAAMJ,EAAK9uK,EAE5B,GAAC,CAAAiB,IAAA,eAAA/D,MAED,SAAcs6J,GAKb,OAHA/4J,KAAKo4F,OAAOyvE,aAAc9O,GAC1B/4J,KAAKquK,UAAUqC,mBAAoB3X,GAE5B/4J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ6vK,GAEP,OAAOA,EAAIl2E,OAAOo0E,OAAQxsK,KAAKo4F,SAAYk2E,EAAID,UAAU7B,OAAQxsK,KAAKquK,UAEvE,GAAC,CAAA7rK,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACouK,CAAA,CA7dO,GAieHuC,GAAO,WAEZ,SAAAA,IAAclmK,EAAA,KAAAkmK,GAEbA,EAAQ/zK,UAAUm3K,WAAY,EAE9B/zK,KAAKgmI,SAAW,CAEf,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EAIX,CA8zBC,OA9zBAz8H,EAAAonK,EAAA,EAAAnuK,IAAA,MAAA/D,MAED,SAAKg4J,EAAKC,EAAKC,EAAKia,EAAKha,EAAKC,EAAKC,EAAK+Z,EAAK9Z,EAAKC,EAAKC,EAAK6Z,EAAKC,EAAKC,EAAKC,EAAKC,GAE/E,IAAMroI,EAAK7oC,KAAKgmI,SAOhB,OALAn9F,EAAI,GAAM4tH,EAAK5tH,EAAI,GAAM6tH,EAAK7tH,EAAI,GAAM8tH,EAAK9tH,EAAI,IAAO+nI,EACxD/nI,EAAI,GAAM+tH,EAAK/tH,EAAI,GAAMguH,EAAKhuH,EAAI,GAAMiuH,EAAKjuH,EAAI,IAAOgoI,EACxDhoI,EAAI,GAAMkuH,EAAKluH,EAAI,GAAMmuH,EAAKnuH,EAAI,IAAOouH,EAAKpuH,EAAI,IAAOioI,EACzDjoI,EAAI,GAAMkoI,EAAKloI,EAAI,GAAMmoI,EAAKnoI,EAAI,IAAOooI,EAAKpoI,EAAI,IAAOqoI,EAElDlxK,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,WAWC,OATAuB,KAAKivB,IAEJ,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GAIHjvB,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIkyK,GAAUhX,UAAW35J,KAAKgmI,SAEtC,GAAC,CAAAxjI,IAAA,OAAA/D,MAED,SAAMqI,GAEL,IAAM+hC,EAAK7oC,KAAKgmI,SACV59F,EAAKthC,EAAEk/H,SAOb,OALAn9F,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GACvES,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GACvES,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,IAAOT,EAAI,IAAMS,EAAI,IAAOT,EAAI,IAC1ES,EAAI,IAAOT,EAAI,IAAMS,EAAI,IAAOT,EAAI,IAAMS,EAAI,IAAOT,EAAI,IAAMS,EAAI,IAAOT,EAAI,IAEvEpoC,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM+hC,EAAK7oC,KAAKgmI,SAAU59F,EAAKthC,EAAEk/H,SAMjC,OAJAn9F,EAAI,IAAOT,EAAI,IACfS,EAAI,IAAOT,EAAI,IACfS,EAAI,IAAOT,EAAI,IAERpoC,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBqI,GAEf,IAAMshC,EAAKthC,EAAEk/H,SAWb,OATAhmI,KAAKivB,IAEJmZ,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAK,EAC3BA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAK,EAC3BA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAK,EAC3B,EAAG,EAAG,EAAG,GAIHpoC,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcy4J,EAAOC,EAAOC,GAM3B,OAJAF,EAAMoS,oBAAqBtpK,KAAM,GACjCm3J,EAAMmS,oBAAqBtpK,KAAM,GACjCo3J,EAAMkS,oBAAqBtpK,KAAM,GAE1BA,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWy4J,EAAOC,EAAOC,GASxB,OAPAp3J,KAAKivB,IACJioI,EAAMh7J,EAAGi7J,EAAMj7J,EAAGk7J,EAAMl7J,EAAG,EAC3Bg7J,EAAM7vJ,EAAG8vJ,EAAM9vJ,EAAG+vJ,EAAM/vJ,EAAG,EAC3B6vJ,EAAM5vJ,EAAG6vJ,EAAM7vJ,EAAG8vJ,EAAM9vJ,EAAG,EAC3B,EAAG,EAAG,EAAG,GAGHtH,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBqI,GAIhB,IAAM+hC,EAAK7oC,KAAKgmI,SACV59F,EAAKthC,EAAEk/H,SAEPmrC,EAAS,EAAIC,GAAM9H,oBAAqBxiK,EAAG,GAAIlP,SAC/Cy5K,EAAS,EAAID,GAAM9H,oBAAqBxiK,EAAG,GAAIlP,SAC/C05K,EAAS,EAAIF,GAAM9H,oBAAqBxiK,EAAG,GAAIlP,SAsBrD,OApBAixC,EAAI,GAAMT,EAAI,GAAM+oI,EACpBtoI,EAAI,GAAMT,EAAI,GAAM+oI,EACpBtoI,EAAI,GAAMT,EAAI,GAAM+oI,EACpBtoI,EAAI,GAAM,EAEVA,EAAI,GAAMT,EAAI,GAAMipI,EACpBxoI,EAAI,GAAMT,EAAI,GAAMipI,EACpBxoI,EAAI,GAAMT,EAAI,GAAMipI,EACpBxoI,EAAI,GAAM,EAEVA,EAAI,GAAMT,EAAI,GAAMkpI,EACpBzoI,EAAI,GAAMT,EAAI,GAAMkpI,EACpBzoI,EAAI,IAAOT,EAAI,IAAOkpI,EACtBzoI,EAAI,IAAO,EAEXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EAEJ7oC,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuB4kK,GAEtB,IAAMx6H,EAAK7oC,KAAKgmI,SAEV9pI,EAAImnK,EAAMnnK,EAAGmL,EAAIg8J,EAAMh8J,EAAGC,EAAI+7J,EAAM/7J,EACpCtL,EAAIiB,KAAKk3J,IAAKj4J,GAAKqK,EAAItJ,KAAKm3J,IAAKl4J,GACjCD,EAAIgB,KAAKk3J,IAAK9sJ,GAAKb,EAAIvJ,KAAKm3J,IAAK/sJ,GACjCf,EAAIrJ,KAAKk3J,IAAK7sJ,GAAKb,EAAIxJ,KAAKm3J,IAAK9sJ,GAEvC,GAAqB,QAAhB+7J,EAAM91J,MAAkB,CAE5B,IAAMs5B,EAAK7qC,EAAIsK,EAAG+mC,EAAKrxC,EAAIyK,EAAGqgC,EAAKvgC,EAAID,EAAGgnC,EAAK/mC,EAAIE,EAEnDoiC,EAAI,GAAM5sC,EAAIqK,EACduiC,EAAI,IAAQ5sC,EAAIwK,EAChBoiC,EAAI,GAAMriC,EAEVqiC,EAAI,GAAMwE,EAAKvG,EAAKtgC,EACpBqiC,EAAI,GAAMhC,EAAKyG,EAAK9mC,EACpBqiC,EAAI,IAAQtiC,EAAItK,EAEhB4sC,EAAI,GAAMyE,EAAKzG,EAAKrgC,EACpBqiC,EAAI,GAAM/B,EAAKuG,EAAK7mC,EACpBqiC,EAAI,IAAO7sC,EAAIC,CAEhB,MAAO,GAAqB,QAAhBonK,EAAM91J,MAAkB,CAEnC,IAAMy5B,EAAK/qC,EAAIqK,EAAGinC,EAAKtxC,EAAIwK,EAAGwgC,EAAKzgC,EAAIF,EAAGknC,EAAKhnC,EAAIC,EAEnDoiC,EAAI,GAAM7B,EAAKwG,EAAKjnC,EACpBsiC,EAAI,GAAM5B,EAAK1gC,EAAIgnC,EACnB1E,EAAI,GAAM7sC,EAAIwK,EAEdqiC,EAAI,GAAM7sC,EAAIyK,EACdoiC,EAAI,GAAM7sC,EAAIsK,EACduiC,EAAI,IAAQtiC,EAEZsiC,EAAI,GAAM0E,EAAKhnC,EAAI0gC,EACnB4B,EAAI,GAAM2E,EAAKxG,EAAKzgC,EACpBsiC,EAAI,IAAO7sC,EAAIC,CAEhB,MAAO,GAAqB,QAAhBonK,EAAM91J,MAAkB,CAEnC,IAAMy5B,EAAK/qC,EAAIqK,EAAGinC,EAAKtxC,EAAIwK,EAAGwgC,EAAKzgC,EAAIF,EAAGknC,EAAKhnC,EAAIC,EAEnDoiC,EAAI,GAAM7B,EAAKwG,EAAKjnC,EACpBsiC,EAAI,IAAQ7sC,EAAIyK,EAChBoiC,EAAI,GAAM5B,EAAKsG,EAAKhnC,EAEpBsiC,EAAI,GAAM0E,EAAKtG,EAAK1gC,EACpBsiC,EAAI,GAAM7sC,EAAIsK,EACduiC,EAAI,GAAM2E,EAAKxG,EAAKzgC,EAEpBsiC,EAAI,IAAQ7sC,EAAIwK,EAChBqiC,EAAI,GAAMtiC,EACVsiC,EAAI,IAAO7sC,EAAIC,CAEhB,MAAO,GAAqB,QAAhBonK,EAAM91J,MAAkB,CAEnC,IAAMs5B,EAAK7qC,EAAIsK,EAAG+mC,EAAKrxC,EAAIyK,EAAGqgC,EAAKvgC,EAAID,EAAGgnC,EAAK/mC,EAAIE,EAEnDoiC,EAAI,GAAM5sC,EAAIqK,EACduiC,EAAI,GAAM/B,EAAKtgC,EAAI6mC,EACnBxE,EAAI,GAAMhC,EAAKrgC,EAAI8mC,EAEnBzE,EAAI,GAAM5sC,EAAIwK,EACdoiC,EAAI,GAAMyE,EAAK9mC,EAAIqgC,EACnBgC,EAAI,GAAMwE,EAAK7mC,EAAIsgC,EAEnB+B,EAAI,IAAQriC,EACZqiC,EAAI,GAAMtiC,EAAItK,EACd4sC,EAAI,IAAO7sC,EAAIC,CAEhB,MAAO,GAAqB,QAAhBonK,EAAM91J,MAAkB,CAEnC,IAAMksB,EAAKz9B,EAAIC,EAAG0iC,EAAK3iC,EAAIwK,EAAGmzB,EAAKpzB,EAAItK,EAAG2iC,EAAKr4B,EAAIC,EAEnDqiC,EAAI,GAAM5sC,EAAIqK,EACduiC,EAAI,GAAMjK,EAAKnF,EAAKhzB,EACpBoiC,EAAI,GAAMlP,EAAKlzB,EAAIk4B,EAEnBkK,EAAI,GAAMpiC,EACVoiC,EAAI,GAAM7sC,EAAIsK,EACduiC,EAAI,IAAQtiC,EAAID,EAEhBuiC,EAAI,IAAQriC,EAAIF,EAChBuiC,EAAI,GAAMlK,EAAKl4B,EAAIkzB,EACnBkP,EAAI,IAAOpP,EAAKmF,EAAKn4B,CAEtB,MAAO,GAAqB,QAAhB48J,EAAM91J,MAAkB,CAEnC,IAAMksB,EAAKz9B,EAAIC,EAAG0iC,EAAK3iC,EAAIwK,EAAGmzB,EAAKpzB,EAAItK,EAAG2iC,EAAKr4B,EAAIC,EAEnDqiC,EAAI,GAAM5sC,EAAIqK,EACduiC,EAAI,IAAQpiC,EACZoiC,EAAI,GAAMriC,EAAIF,EAEduiC,EAAI,GAAMpP,EAAKhzB,EAAIm4B,EACnBiK,EAAI,GAAM7sC,EAAIsK,EACduiC,EAAI,GAAMlK,EAAKl4B,EAAIkzB,EAEnBkP,EAAI,GAAMlP,EAAKlzB,EAAIk4B,EACnBkK,EAAI,GAAMtiC,EAAID,EACduiC,EAAI,IAAOjK,EAAKn4B,EAAIgzB,CAErB,CAaA,OAVAoP,EAAI,GAAM,EACVA,EAAI,GAAM,EACVA,EAAI,IAAO,EAGXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EAEJ7oC,IAER,GAAC,CAAAwC,IAAA,6BAAA/D,MAED,SAA4BwI,GAE3B,OAAOjH,KAAKuxK,QAASC,GAAOvqK,EAAGwqK,GAEhC,GAAC,CAAAjvK,IAAA,SAAA/D,MAED,SAAQizK,EAAKnwK,EAAQowK,GAEpB,IAAM9oI,EAAK7oC,KAAKgmI,SAyChB,OAvCAi9B,GAAG3N,WAAYoc,EAAKnwK,GAEG,IAAlB0hK,GAAGyF,aAIPzF,GAAG37J,EAAI,GAIR27J,GAAGpiD,YACHzsD,GAAG8zG,aAAcyJ,EAAI1O,IAEE,IAAlB7uG,GAAGs0G,aAImB,IAArBzrK,KAAK4f,IAAK80J,EAAGrqK,GAEjB27J,GAAG/mK,GAAK,KAIR+mK,GAAG37J,GAAK,KAIT27J,GAAGpiD,YACHzsD,GAAG8zG,aAAcyJ,EAAI1O,KAItB7uG,GAAGysD,YACHmiD,GAAGkF,aAAcjF,GAAI7uG,IAErBvrB,EAAI,GAAMurB,GAAGl4D,EAAG2sC,EAAI,GAAMm6H,GAAG9mK,EAAG2sC,EAAI,GAAMo6H,GAAG/mK,EAC7C2sC,EAAI,GAAMurB,GAAG/sD,EAAGwhC,EAAI,GAAMm6H,GAAG37J,EAAGwhC,EAAI,GAAMo6H,GAAG57J,EAC7CwhC,EAAI,GAAMurB,GAAG9sD,EAAGuhC,EAAI,GAAMm6H,GAAG17J,EAAGuhC,EAAI,IAAOo6H,GAAG37J,EAEvCtH,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAUqI,GAET,OAAO9G,KAAKs3J,iBAAkBt3J,KAAM8G,EAErC,GAAC,CAAAtE,IAAA,cAAA/D,MAED,SAAaqI,GAEZ,OAAO9G,KAAKs3J,iBAAkBxwJ,EAAG9G,KAElC,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBzC,EAAGuK,GAEpB,IAAMsgC,EAAK7qC,EAAEgqI,SACPl/F,EAAKvgC,EAAEy/H,SACPn9F,EAAK7oC,KAAKgmI,SAEVuxB,EAAM1wH,EAAI,GAAK2wH,EAAM3wH,EAAI,GAAK4wH,EAAM5wH,EAAI,GAAK+qI,EAAM/qI,EAAI,IACvD6wH,EAAM7wH,EAAI,GAAK8wH,EAAM9wH,EAAI,GAAK+wH,EAAM/wH,EAAI,GAAKgrI,EAAMhrI,EAAI,IACvDgxH,EAAMhxH,EAAI,GAAKixH,EAAMjxH,EAAI,GAAKkxH,EAAMlxH,EAAI,IAAMirI,EAAMjrI,EAAI,IACxDkrI,EAAMlrI,EAAI,GAAKmrI,EAAMnrI,EAAI,GAAKorI,EAAMprI,EAAI,IAAMqrI,EAAMrrI,EAAI,IAExDmxH,EAAMlxH,EAAI,GAAKmxH,EAAMnxH,EAAI,GAAKoxH,EAAMpxH,EAAI,GAAKqrI,EAAMrrI,EAAI,IACvDqxH,EAAMrxH,EAAI,GAAKsxH,EAAMtxH,EAAI,GAAKuxH,EAAMvxH,EAAI,GAAKsrI,EAAMtrI,EAAI,IACvDwxH,EAAMxxH,EAAI,GAAKyxH,EAAMzxH,EAAI,GAAK0xH,EAAM1xH,EAAI,IAAMurI,EAAMvrI,EAAI,IACxDwrI,EAAMxrI,EAAI,GAAKyrI,EAAMzrI,EAAI,GAAK0rI,EAAM1rI,EAAI,IAAM2rI,EAAM3rI,EAAI,IAsB9D,OApBA+B,EAAI,GAAM0uH,EAAMS,EAAMR,EAAMW,EAAMV,EAAMa,EAAMsZ,EAAMU,EACpDzpI,EAAI,GAAM0uH,EAAMU,EAAMT,EAAMY,EAAMX,EAAMc,EAAMqZ,EAAMW,EACpD1pI,EAAI,GAAM0uH,EAAMW,EAAMV,EAAMa,EAAMZ,EAAMe,EAAMoZ,EAAMY,EACpD3pI,EAAI,IAAO0uH,EAAM4a,EAAM3a,EAAM4a,EAAM3a,EAAM4a,EAAMT,EAAMa,EAErD5pI,EAAI,GAAM6uH,EAAMM,EAAML,EAAMQ,EAAMP,EAAMU,EAAMuZ,EAAMS,EACpDzpI,EAAI,GAAM6uH,EAAMO,EAAMN,EAAMS,EAAMR,EAAMW,EAAMsZ,EAAMU,EACpD1pI,EAAI,GAAM6uH,EAAMQ,EAAMP,EAAMU,EAAMT,EAAMY,EAAMqZ,EAAMW,EACpD3pI,EAAI,IAAO6uH,EAAMya,EAAMxa,EAAMya,EAAMxa,EAAMya,EAAMR,EAAMY,EAErD5pI,EAAI,GAAMgvH,EAAMG,EAAMF,EAAMK,EAAMJ,EAAMO,EAAMwZ,EAAMQ,EACpDzpI,EAAI,GAAMgvH,EAAMI,EAAMH,EAAMM,EAAML,EAAMQ,EAAMuZ,EAAMS,EACpD1pI,EAAI,IAAOgvH,EAAMK,EAAMJ,EAAMO,EAAMN,EAAMS,EAAMsZ,EAAMU,EACrD3pI,EAAI,IAAOgvH,EAAMsa,EAAMra,EAAMsa,EAAMra,EAAMsa,EAAMP,EAAMW,EAErD5pI,EAAI,GAAMkpI,EAAM/Z,EAAMga,EAAM7Z,EAAM8Z,EAAM3Z,EAAM4Z,EAAMI,EACpDzpI,EAAI,GAAMkpI,EAAM9Z,EAAM+Z,EAAM5Z,EAAM6Z,EAAM1Z,EAAM2Z,EAAMK,EACpD1pI,EAAI,IAAOkpI,EAAM7Z,EAAM8Z,EAAM3Z,EAAM4Z,EAAMzZ,EAAM0Z,EAAMM,EACrD3pI,EAAI,IAAOkpI,EAAMI,EAAMH,EAAMI,EAAMH,EAAMI,EAAMH,EAAMO,EAE9CzyK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBhD,GAEf,IAAMotC,EAAK7oC,KAAKgmI,SAOhB,OALAn9F,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,KAAQptC,EACtDotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,KAAQptC,EACtDotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,KAAQptC,EAAGotC,EAAI,KAAQptC,EACvDotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,KAAQptC,EAAGotC,EAAI,KAAQptC,EAEhDuE,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAEC,IAAMoqC,EAAK7oC,KAAKgmI,SAEVywB,EAAM5tH,EAAI,GAAK6tH,EAAM7tH,EAAI,GAAK8tH,EAAM9tH,EAAI,GAAK+nI,EAAM/nI,EAAI,IACvD+tH,EAAM/tH,EAAI,GAAKguH,EAAMhuH,EAAI,GAAKiuH,EAAMjuH,EAAI,GAAKgoI,EAAMhoI,EAAI,IACvDkuH,EAAMluH,EAAI,GAAKmuH,EAAMnuH,EAAI,GAAKouH,EAAMpuH,EAAI,IAAMioI,EAAMjoI,EAAI,IAM9D,OALYA,EAAI,KAOZ+nI,EAAM9Z,EAAME,EACXL,EAAMka,EAAM7Z,EACZ4Z,EAAM/Z,EAAMI,EACZP,EAAMma,EAAM5Z,EACZN,EAAME,EAAMia,EACZpa,EAAMI,EAAMga,GAZUjoI,EAAI,KAe3B4tH,EAAMK,EAAMga,EACXra,EAAMoa,EAAM5Z,EACZ2Z,EAAMha,EAAMK,EACZN,EAAMC,EAAMka,EACZna,EAAMka,EAAM9Z,EACZ6Z,EAAM9Z,EAAMC,GApByBluH,EAAI,MAuB1C4tH,EAAMoa,EAAM7Z,EACXP,EAAMI,EAAMia,EACZF,EAAMha,EAAMI,EACZN,EAAME,EAAMka,EACZF,EAAM/Z,EAAME,EACZL,EAAMma,EAAM9Z,GA5ByCluH,EAAI,MA+B1D8tH,EAAME,EAAME,EACXN,EAAMK,EAAME,EACZP,EAAMI,EAAMI,EACZN,EAAMC,EAAMI,EACZN,EAAME,EAAMK,EACZP,EAAMI,EAAMC,EAKlB,GAAC,CAAAv0J,IAAA,YAAA/D,MAED,WAEC,IACIq6J,EADEjwH,EAAK7oC,KAAKgmI,SAWhB,OARA8yB,EAAMjwH,EAAI,GAAKA,EAAI,GAAMA,EAAI,GAAKA,EAAI,GAAMiwH,EAC5CA,EAAMjwH,EAAI,GAAKA,EAAI,GAAMA,EAAI,GAAKA,EAAI,GAAMiwH,EAC5CA,EAAMjwH,EAAI,GAAKA,EAAI,GAAMA,EAAI,GAAKA,EAAI,GAAMiwH,EAE5CA,EAAMjwH,EAAI,GAAKA,EAAI,GAAMA,EAAI,IAAMA,EAAI,IAAOiwH,EAC9CA,EAAMjwH,EAAI,GAAKA,EAAI,GAAMA,EAAI,IAAMA,EAAI,IAAOiwH,EAC9CA,EAAMjwH,EAAI,IAAMA,EAAI,IAAOA,EAAI,IAAMA,EAAI,IAAOiwH,EAEzC94J,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAavC,EAAGmL,EAAGC,GAElB,IAAMuhC,EAAK7oC,KAAKgmI,SAgBhB,OAdK9pI,EAAEutK,WAEN5gI,EAAI,IAAO3sC,EAAEA,EACb2sC,EAAI,IAAO3sC,EAAEmL,EACbwhC,EAAI,IAAO3sC,EAAEoL,IAIbuhC,EAAI,IAAO3sC,EACX2sC,EAAI,IAAOxhC,EACXwhC,EAAI,IAAOvhC,GAILtH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAGC,IAAMoqC,EAAK7oC,KAAKgmI,SAEfywB,EAAM5tH,EAAI,GAAK+tH,EAAM/tH,EAAI,GAAKkuH,EAAMluH,EAAI,GAAKkoI,EAAMloI,EAAI,GACvD6tH,EAAM7tH,EAAI,GAAKguH,EAAMhuH,EAAI,GAAKmuH,EAAMnuH,EAAI,GAAKmoI,EAAMnoI,EAAI,GACvD8tH,EAAM9tH,EAAI,GAAKiuH,EAAMjuH,EAAI,GAAKouH,EAAMpuH,EAAI,IAAMooI,EAAMpoI,EAAI,IACxD+nI,EAAM/nI,EAAI,IAAMgoI,EAAMhoI,EAAI,IAAMioI,EAAMjoI,EAAI,IAAMqoI,EAAMroI,EAAI,IAE1D4vH,EAAM3B,EAAMga,EAAME,EAAMH,EAAM5Z,EAAM+Z,EAAMH,EAAM7Z,EAAMia,EAAMpa,EAAMia,EAAMG,EAAMna,EAAME,EAAMka,EAAMra,EAAMI,EAAMia,EAC5GxY,EAAMkY,EAAM3Z,EAAM+Z,EAAMra,EAAMma,EAAME,EAAMJ,EAAM5Z,EAAMia,EAAMva,EAAMoa,EAAMG,EAAMta,EAAMK,EAAMka,EAAMxa,EAAMO,EAAMia,EAC5GvY,EAAMhC,EAAMka,EAAMG,EAAMJ,EAAM9Z,EAAMka,EAAMJ,EAAM/Z,EAAMoa,EAAMva,EAAMma,EAAMI,EAAMta,EAAME,EAAMqa,EAAMxa,EAAMI,EAAMoa,EAC5GwB,EAAM9B,EAAM9Z,EAAME,EAAML,EAAMka,EAAM7Z,EAAM4Z,EAAM/Z,EAAMI,EAAMP,EAAMma,EAAM5Z,EAAMN,EAAME,EAAMia,EAAMpa,EAAMI,EAAMga,EAEvGlY,EAAMnC,EAAMgC,EAAM7B,EAAM8B,EAAM3B,EAAM4B,EAAMoY,EAAM2B,EAEtD,GAAa,IAAR9Z,EAAY,OAAO54J,KAAKivB,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAE/E,IAAM4pI,EAAS,EAAID,EAsBnB,OApBA/vH,EAAI,GAAM4vH,EAAMI,EAChBhwH,EAAI,IAAQgoI,EAAM5Z,EAAM8Z,EAAMja,EAAMga,EAAMC,EAAMF,EAAM9Z,EAAMka,EAAMra,EAAMka,EAAMG,EAAMna,EAAMC,EAAMma,EAAMta,EAAMK,EAAMia,GAAQrY,EAC1HhwH,EAAI,IAAQguH,EAAMia,EAAMC,EAAMF,EAAM7Z,EAAM+Z,EAAMF,EAAM9Z,EAAMia,EAAMpa,EAAMka,EAAME,EAAMna,EAAME,EAAMma,EAAMta,EAAMI,EAAMka,GAAQrY,EAC1HhwH,EAAI,IAAQiuH,EAAME,EAAM+Z,EAAMla,EAAMI,EAAM8Z,EAAMja,EAAMC,EAAMia,EAAMpa,EAAMK,EAAM+Z,EAAMna,EAAME,EAAMka,EAAMra,EAAMI,EAAMia,GAAQpY,EAE1HhwH,EAAI,GAAM6vH,EAAMG,EAChBhwH,EAAI,IAAQ8tH,EAAMma,EAAMC,EAAMH,EAAM3Z,EAAM8Z,EAAMH,EAAM7Z,EAAMka,EAAMxa,EAAMqa,EAAMG,EAAMta,EAAMI,EAAMma,EAAMza,EAAMQ,EAAMia,GAAQrY,EAC1HhwH,EAAI,IAAQ+nI,EAAM5Z,EAAM+Z,EAAMra,EAAMoa,EAAMC,EAAMH,EAAM7Z,EAAMia,EAAMva,EAAMqa,EAAME,EAAMta,EAAMK,EAAMma,EAAMza,EAAMO,EAAMka,GAAQrY,EAC1HhwH,EAAI,IAAQ6tH,EAAMO,EAAM8Z,EAAMpa,EAAMK,EAAM+Z,EAAMpa,EAAMI,EAAMia,EAAMva,EAAMQ,EAAM+Z,EAAMta,EAAMK,EAAMka,EAAMxa,EAAMO,EAAMia,GAAQpY,EAE1HhwH,EAAI,GAAM8vH,EAAME,EAChBhwH,EAAI,IAAQ+nI,EAAM9Z,EAAMia,EAAMpa,EAAMka,EAAME,EAAMH,EAAMha,EAAMqa,EAAMxa,EAAMoa,EAAMI,EAAMta,EAAMC,EAAMsa,EAAMza,EAAMK,EAAMoa,GAAQrY,EAC1HhwH,EAAI,KAAS6tH,EAAMma,EAAME,EAAMH,EAAM/Z,EAAMka,EAAMH,EAAMha,EAAMoa,EAAMva,EAAMoa,EAAMG,EAAMta,EAAME,EAAMsa,EAAMza,EAAMI,EAAMqa,GAAQrY,EAC3HhwH,EAAI,KAAS8tH,EAAME,EAAMka,EAAMra,EAAMI,EAAMia,EAAMpa,EAAMC,EAAMoa,EAAMva,EAAMK,EAAMka,EAAMta,EAAME,EAAMqa,EAAMxa,EAAMI,EAAMoa,GAAQpY,EAE3HhwH,EAAI,IAAO6pI,EAAM7Z,EACjBhwH,EAAI,KAAS8tH,EAAMka,EAAM9Z,EAAM6Z,EAAM9Z,EAAMC,EAAM6Z,EAAMha,EAAMK,EAAMR,EAAMoa,EAAM5Z,EAAMN,EAAMC,EAAMka,EAAMra,EAAMK,EAAMga,GAAQjY,EAC3HhwH,EAAI,KAAS+nI,EAAM/Z,EAAME,EAAML,EAAMma,EAAM9Z,EAAM6Z,EAAMha,EAAMI,EAAMP,EAAMoa,EAAM7Z,EAAMN,EAAME,EAAMka,EAAMra,EAAMI,EAAMia,GAAQjY,EAC3HhwH,EAAI,KAAS6tH,EAAMI,EAAMC,EAAMJ,EAAME,EAAME,EAAMJ,EAAMC,EAAMI,EAAMP,EAAMK,EAAME,EAAMN,EAAME,EAAMK,EAAMR,EAAMI,EAAMI,GAAQ4B,EAEpH74J,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO0I,GAEN,IAAM0hC,EAAK7oC,KAAKgmI,SACV9pI,EAAIiL,EAAEjL,EAAGmL,EAAIF,EAAEE,EAAGC,EAAIH,EAAEG,EAO9B,OALAuhC,EAAI,IAAO3sC,EAAG2sC,EAAI,IAAOxhC,EAAGwhC,EAAI,IAAOvhC,EACvCuhC,EAAI,IAAO3sC,EAAG2sC,EAAI,IAAOxhC,EAAGwhC,EAAI,IAAOvhC,EACvCuhC,EAAI,IAAO3sC,EAAG2sC,EAAI,IAAOxhC,EAAGwhC,EAAI,KAAQvhC,EACxCuhC,EAAI,IAAO3sC,EAAG2sC,EAAI,IAAOxhC,EAAGwhC,EAAI,KAAQvhC,EAEjCtH,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,WAEC,IAAMoqC,EAAK7oC,KAAKgmI,SAEV2sC,EAAW9pI,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GACjE+pI,EAAW/pI,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GACjEgqI,EAAWhqI,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,IAAOA,EAAI,IAExE,OAAO5rC,KAAK04J,KAAM14J,KAAKC,IAAKy1K,EAAUC,EAAUC,GAEjD,GAAC,CAAArwK,IAAA,kBAAA/D,MAED,SAAiBvC,EAAGmL,EAAGC,GAWtB,OATAtH,KAAKivB,IAEJ,EAAG,EAAG,EAAG/yB,EACT,EAAG,EAAG,EAAGmL,EACT,EAAG,EAAG,EAAGC,EACT,EAAG,EAAG,EAAG,GAIHtH,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeg7J,GAEd,IAAMx9J,EAAIgB,KAAKk3J,IAAKsF,GAASh+J,EAAIwB,KAAKm3J,IAAKqF,GAW3C,OATAz5J,KAAKivB,IAEJ,EAAG,EAAG,EAAG,EACT,EAAGhzB,GAAKR,EAAG,EACX,EAAGA,EAAGQ,EAAG,EACT,EAAG,EAAG,EAAG,GAIH+D,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeg7J,GAEd,IAAMx9J,EAAIgB,KAAKk3J,IAAKsF,GAASh+J,EAAIwB,KAAKm3J,IAAKqF,GAW3C,OATAz5J,KAAKivB,IAEHhzB,EAAG,EAAGR,EAAG,EACT,EAAG,EAAG,EAAG,GACRA,EAAG,EAAGQ,EAAG,EACV,EAAG,EAAG,EAAG,GAIJ+D,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeg7J,GAEd,IAAMx9J,EAAIgB,KAAKk3J,IAAKsF,GAASh+J,EAAIwB,KAAKm3J,IAAKqF,GAW3C,OATAz5J,KAAKivB,IAEJhzB,GAAKR,EAAG,EAAG,EACXA,EAAGQ,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GAIH+D,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBolK,EAAMjO,GAIvB,IAAM35J,EAAIgB,KAAKk3J,IAAKyB,GACdn6J,EAAIwB,KAAKm3J,IAAKwB,GACdt+J,EAAI,EAAI2E,EACRC,EAAI2nK,EAAK3nK,EAAGmL,EAAIw8J,EAAKx8J,EAAGC,EAAIu8J,EAAKv8J,EACjC4xJ,EAAK5hK,EAAI4E,EAAGi9J,EAAK7hK,EAAI+P,EAW3B,OATArH,KAAKivB,IAEJiqI,EAAKh9J,EAAID,EAAGi9J,EAAK7xJ,EAAI5L,EAAI6L,EAAG4xJ,EAAK5xJ,EAAI7L,EAAI4L,EAAG,EAC5C6xJ,EAAK7xJ,EAAI5L,EAAI6L,EAAG6xJ,EAAK9xJ,EAAIpL,EAAGk9J,EAAK7xJ,EAAI7L,EAAIS,EAAG,EAC5Cg9J,EAAK5xJ,EAAI7L,EAAI4L,EAAG8xJ,EAAK7xJ,EAAI7L,EAAIS,EAAG5E,EAAIgQ,EAAIA,EAAIrL,EAAG,EAC/C,EAAG,EAAG,EAAG,GAIH+D,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWvC,EAAGmL,EAAGC,GAWhB,OATAtH,KAAKivB,IAEJ/yB,EAAG,EAAG,EAAG,EACT,EAAGmL,EAAG,EAAG,EACT,EAAG,EAAGC,EAAG,EACT,EAAG,EAAG,EAAG,GAIHtH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWiiK,EAAIC,EAAImS,EAAIlS,EAAImS,EAAIC,GAW9B,OATAhzK,KAAKivB,IAEJ,EAAG6jJ,EAAIC,EAAI,EACXrS,EAAI,EAAGsS,EAAI,EACXrS,EAAIC,EAAI,EAAG,EACX,EAAG,EAAG,EAAG,GAIH5gK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAAS8gE,EAAU6jG,EAAY/rB,GAE9B,IAAMxuG,EAAK7oC,KAAKgmI,SAEV9pI,EAAIknK,EAAWhvG,GAAI/sD,EAAI+7J,EAAWJ,GAAI17J,EAAI87J,EAAWH,GAAI77J,EAAIg8J,EAAWF,GACxE+P,EAAK/2K,EAAIA,EAAGg3K,EAAK7rK,EAAIA,EAAG8rK,EAAK7rK,EAAIA,EACjCknI,EAAKtyI,EAAI+2K,EAAIvS,EAAKxkK,EAAIg3K,EAAIvS,EAAKzkK,EAAIi3K,EACnC1kC,EAAKpnI,EAAI6rK,EAAItS,EAAKv5J,EAAI8rK,EAAI1S,EAAKn5J,EAAI6rK,EACnCC,EAAKhsK,EAAI6rK,EAAII,EAAKjsK,EAAI8rK,EAAII,EAAKlsK,EAAI+rK,EAEnC/Z,EAAK/hB,EAAMn7I,EAAGm9J,EAAKhiB,EAAMhwI,EAAGkiK,EAAKlyB,EAAM/vI,EAsB7C,OApBAuhC,EAAI,IAAQ,GAAM4lG,EAAKgyB,IAASrH,EAChCvwH,EAAI,IAAQ63H,EAAK4S,GAAOla,EACxBvwH,EAAI,IAAQ83H,EAAK0S,GAAOja,EACxBvwH,EAAI,GAAM,EAEVA,EAAI,IAAQ63H,EAAK4S,GAAOja,EACxBxwH,EAAI,IAAQ,GAAM2lG,EAAKiyB,IAASpH,EAChCxwH,EAAI,IAAQ+3H,EAAKwS,GAAO/Z,EACxBxwH,EAAI,GAAM,EAEVA,EAAI,IAAQ83H,EAAK0S,GAAO9J,EACxB1gI,EAAI,IAAQ+3H,EAAKwS,GAAO7J,EACxB1gI,EAAI,KAAS,GAAM2lG,EAAKC,IAAS86B,EACjC1gI,EAAI,IAAO,EAEXA,EAAI,IAAO02B,EAASrjE,EACpB2sC,EAAI,IAAO02B,EAASl4D,EACpBwhC,EAAI,IAAO02B,EAASj4D,EACpBuhC,EAAI,IAAO,EAEJ7oC,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW8gE,EAAU6jG,EAAY/rB,GAEhC,IAAMxuG,EAAK7oC,KAAKgmI,SAEZozB,EAAKgY,GAAMniJ,IAAK4Z,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAMjxC,SAC1CyhK,EAAK+X,GAAMniJ,IAAK4Z,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAMjxC,SAC5C2xK,EAAK6H,GAAMniJ,IAAK4Z,EAAI,GAAKA,EAAI,GAAKA,EAAI,KAAOjxC,SAGvCoI,KAAKuzK,cACN,IAAIna,GAAOA,GAEtB75F,EAASrjE,EAAI2sC,EAAI,IACjB02B,EAASl4D,EAAIwhC,EAAI,IACjB02B,EAASj4D,EAAIuhC,EAAI,IAGjB2qI,GAAM9X,KAAM17J,MAEZ,IAAMyzK,EAAQ,EAAIra,EACZsa,EAAQ,EAAIra,EACZsa,EAAQ,EAAIpK,EAoBlB,OAlBAiK,GAAMxtC,SAAU,IAAOytC,EACvBD,GAAMxtC,SAAU,IAAOytC,EACvBD,GAAMxtC,SAAU,IAAOytC,EAEvBD,GAAMxtC,SAAU,IAAO0tC,EACvBF,GAAMxtC,SAAU,IAAO0tC,EACvBF,GAAMxtC,SAAU,IAAO0tC,EAEvBF,GAAMxtC,SAAU,IAAO2tC,EACvBH,GAAMxtC,SAAU,IAAO2tC,EACvBH,GAAMxtC,SAAU,KAAQ2tC,EAExBvQ,EAAWwQ,sBAAuBJ,IAElCn8B,EAAMn7I,EAAIk9J,EACV/hB,EAAMhwI,EAAIgyJ,EACVhiB,EAAM/vI,EAAIiiK,EAEHvpK,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiButC,EAAMwzB,EAAOtzB,EAAKuzB,EAAQo0G,EAAMC,GAEhD,IAAMjrI,EAAK7oC,KAAKgmI,SACV9pI,EAAI,EAAI23K,GAASr0G,EAAQxzB,GACzB3kC,EAAI,EAAIwsK,GAAS3nI,EAAMuzB,GAEvBzjE,GAAMwjE,EAAQxzB,IAAWwzB,EAAQxzB,GACjCzlC,GAAM2lC,EAAMuzB,IAAavzB,EAAMuzB,GAC/BxjE,IAAQ63K,EAAMD,IAAWC,EAAMD,GAC/BrtK,GAAM,EAAIstK,EAAMD,GAASC,EAAMD,GAOrC,OALAhrI,EAAI,GAAM3sC,EAAG2sC,EAAI,GAAM,EAAGA,EAAI,GAAM7sC,EAAG6sC,EAAI,IAAO,EAClDA,EAAI,GAAM,EAAGA,EAAI,GAAMxhC,EAAGwhC,EAAI,GAAMtiC,EAAGsiC,EAAI,IAAO,EAClDA,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,IAAO5sC,EAAG4sC,EAAI,IAAOriC,EACnDqiC,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,KAAS,EAAGA,EAAI,IAAO,EAE9C7oC,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkButC,EAAMwzB,EAAOtzB,EAAKuzB,EAAQo0G,EAAMC,GAEjD,IAAMjrI,EAAK7oC,KAAKgmI,SACV5+H,EAAI,GAAQo4D,EAAQxzB,GACpBrlC,EAAI,GAAQulC,EAAMuzB,GAClBz4D,EAAI,GAAQ8sK,EAAMD,GAElB33K,GAAMsjE,EAAQxzB,GAAS5kC,EACvBC,GAAM6kC,EAAMuzB,GAAW94D,EACvBW,GAAMwsK,EAAMD,GAAS7sK,EAO3B,OALA6hC,EAAI,GAAM,EAAIzhC,EAAGyhC,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,KAAS3sC,EACxD2sC,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAIliC,EAAGkiC,EAAI,GAAM,EAAGA,EAAI,KAASxhC,EACxDwhC,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,KAAS,EAAI7hC,EAAG6hC,EAAI,KAASvhC,EAC3DuhC,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,IAAO,EAAGA,EAAI,IAAO,EAE5C7oC,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQi7J,GAKP,IAHA,IAAM7wH,EAAK7oC,KAAKgmI,SACV59F,EAAKsxH,EAAO1zB,SAERtpI,EAAI,EAAGA,EAAI,GAAIA,IAExB,GAAKmsC,EAAInsC,KAAQ0rC,EAAI1rC,GAAM,OAAO,EAInC,OAAO,CAER,GAAC,CAAA8F,IAAA,YAAA/D,MAED,SAAWsE,GAEV,IAF8B,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEhBvD,EAAI,EAAGA,EAAI,GAAIA,IAExBsD,KAAKgmI,SAAUtpI,GAAMqG,EAAOrG,EAAIqtC,GAIjC,OAAO/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEvB4oC,EAAK7oC,KAAKgmI,SAsBhB,OApBAjjI,EAAOgnC,GAAWlB,EAAI,GACtB9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAE1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAE1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAC3B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAE3B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAC3B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAC3B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAC3B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAEpB9lC,CAER,KAAC4tK,CAAA,CA70BW,GAi1BPS,GAAsB,IAAItK,GAC1B0M,GAAsB,IAAI7C,GAC1Ba,GAAsB,IAAI1K,GAAS,EAAG,EAAG,GACzC2K,GAAqB,IAAI3K,GAAS,EAAG,EAAG,GACxC1yG,GAAmB,IAAI0yG,GACvB9D,GAAmB,IAAI8D,GACvB7D,GAAmB,IAAI6D,GAEvBkN,GAA0B,IAAIrD,GAC9BsD,GAA8B,IAAIlR,GAElCmR,GAAK,WAEV,SAAAA,IAA+D,IAAlDh4K,EAAC+D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqH,EAACrH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGsN,EAAKtN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGi0K,EAAMC,aAAY1pK,EAAA,KAAAypK,GAE3Dl0K,KAAKujK,SAAU,EAEfvjK,KAAKo0D,GAAKl4D,EACV8D,KAAKgjK,GAAK37J,EACVrH,KAAKijK,GAAK37J,EACVtH,KAAKwjK,OAASj2J,CAEf,CA0SC,OA1SAhE,EAAA2qK,EAAA,EAAA1xK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKo0D,EAEb,EAACnlC,IAED,SAAOxwB,GAENuB,KAAKo0D,GAAK31D,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKgjK,EAEb,EAAC/zI,IAED,SAAOxwB,GAENuB,KAAKgjK,GAAKvkK,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKijK,EAEb,EAACh0I,IAED,SAAOxwB,GAENuB,KAAKijK,GAAKxkK,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAKwjK,MAEb,EAACv0I,IAED,SAAWxwB,GAEVuB,KAAKwjK,OAAS/kK,EACduB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,MAAA/D,MAED,SAAKvC,EAAGmL,EAAGC,GAAyB,IAAtBiG,EAAKtN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGD,KAAKwjK,OAS1B,OAPAxjK,KAAKo0D,GAAKl4D,EACV8D,KAAKgjK,GAAK37J,EACVrH,KAAKijK,GAAK37J,EACVtH,KAAKwjK,OAASj2J,EAEdvN,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAKo0D,GAAIp0D,KAAKgjK,GAAIhjK,KAAKijK,GAAIjjK,KAAKwjK,OAE9D,GAAC,CAAAhhK,IAAA,OAAA/D,MAED,SAAM4kK,GASL,OAPArjK,KAAKo0D,GAAKivG,EAAMjvG,GAChBp0D,KAAKgjK,GAAKK,EAAML,GAChBhjK,KAAKijK,GAAKI,EAAMJ,GAChBjjK,KAAKwjK,OAASH,EAAMG,OAEpBxjK,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuBqI,GAAwC,IAArCyG,EAAKtN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGD,KAAKwjK,OAAQF,IAAMrjK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GAI9C4oC,EAAK/hC,EAAEk/H,SACPg6B,EAAMn3H,EAAI,GAAKo3H,EAAMp3H,EAAI,GAAKq3H,EAAMr3H,EAAI,GACxCs3H,EAAMt3H,EAAI,GAAKu3H,EAAMv3H,EAAI,GAAKw3H,EAAMx3H,EAAI,GACxCy3H,EAAMz3H,EAAI,GAAK03H,EAAM13H,EAAI,GAAK23H,EAAM33H,EAAI,IAE9C,OAASt7B,GAER,IAAK,MAEJvN,KAAKgjK,GAAK/lK,KAAKm3K,KAAMliB,GAAOgO,GAAO,EAAG,IAEjCjjK,KAAK4f,IAAKqjJ,GAAQ,UAEtBlgK,KAAKo0D,GAAKn3D,KAAK44J,OAASwK,EAAKG,GAC7BxgK,KAAKijK,GAAKhmK,KAAK44J,OAASoK,EAAKD,KAI7BhgK,KAAKo0D,GAAKn3D,KAAK44J,MAAO0K,EAAKH,GAC3BpgK,KAAKijK,GAAK,GAIX,MAED,IAAK,MAEJjjK,KAAKo0D,GAAKn3D,KAAKm3K,MAAQliB,GAAOmO,GAAO,EAAG,IAEnCpjK,KAAK4f,IAAKwjJ,GAAQ,UAEtBrgK,KAAKgjK,GAAK/lK,KAAK44J,MAAOqK,EAAKM,GAC3BxgK,KAAKijK,GAAKhmK,KAAK44J,MAAOsK,EAAKC,KAI3BpgK,KAAKgjK,GAAK/lK,KAAK44J,OAASyK,EAAKN,GAC7BhgK,KAAKijK,GAAK,GAIX,MAED,IAAK,MAEJjjK,KAAKo0D,GAAKn3D,KAAKm3K,KAAMliB,GAAOqO,GAAO,EAAG,IAEjCtjK,KAAK4f,IAAK0jJ,GAAQ,UAEtBvgK,KAAKgjK,GAAK/lK,KAAK44J,OAASyK,EAAKE,GAC7BxgK,KAAKijK,GAAKhmK,KAAK44J,OAASoK,EAAKG,KAI7BpgK,KAAKgjK,GAAK,EACVhjK,KAAKijK,GAAKhmK,KAAK44J,MAAOsK,EAAKH,IAI5B,MAED,IAAK,MAEJhgK,KAAKgjK,GAAK/lK,KAAKm3K,MAAQliB,GAAOoO,GAAO,EAAG,IAEnCrjK,KAAK4f,IAAKyjJ,GAAQ,UAEtBtgK,KAAKo0D,GAAKn3D,KAAK44J,MAAO0K,EAAKC,GAC3BxgK,KAAKijK,GAAKhmK,KAAK44J,MAAOsK,EAAKH,KAI3BhgK,KAAKo0D,GAAK,EACVp0D,KAAKijK,GAAKhmK,KAAK44J,OAASoK,EAAKG,IAI9B,MAED,IAAK,MAEJpgK,KAAKijK,GAAKhmK,KAAKm3K,KAAMliB,GAAOiO,GAAO,EAAG,IAEjCljK,KAAK4f,IAAKsjJ,GAAQ,UAEtBngK,KAAKo0D,GAAKn3D,KAAK44J,OAASwK,EAAKD,GAC7BpgK,KAAKgjK,GAAK/lK,KAAK44J,OAASyK,EAAKN,KAI7BhgK,KAAKo0D,GAAK,EACVp0D,KAAKgjK,GAAK/lK,KAAK44J,MAAOqK,EAAKM,IAI5B,MAED,IAAK,MAEJxgK,KAAKijK,GAAKhmK,KAAKm3K,MAAQliB,GAAO+N,GAAO,EAAG,IAEnChjK,KAAK4f,IAAKojJ,GAAQ,UAEtBjgK,KAAKo0D,GAAKn3D,KAAK44J,MAAO0K,EAAKH,GAC3BpgK,KAAKgjK,GAAK/lK,KAAK44J,MAAOqK,EAAKF,KAI3BhgK,KAAKo0D,GAAKn3D,KAAK44J,OAASwK,EAAKG,GAC7BxgK,KAAKgjK,GAAK,GAIX,MAED,QAECjvJ,QAAQk/C,KAAM,uEAAyE1lD,GAQzF,OAJAvN,KAAKwjK,OAASj2J,GAEE,IAAX+1J,GAAkBtjK,KAAKmjK,oBAErBnjK,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBwI,EAAGsG,EAAO+1J,GAI5B,OAFA0Q,GAAUK,2BAA4BptK,GAE/BjH,KAAK4zK,sBAAuBI,GAAWzmK,EAAO+1J,EAEtD,GAAC,CAAA9gK,IAAA,iBAAA/D,MAED,SAAgB0I,GAAyB,IAAtBoG,EAAKtN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGD,KAAKwjK,OAE/B,OAAOxjK,KAAKivB,IAAK9nB,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,EAAGiG,EAEjC,GAAC,CAAA/K,IAAA,UAAA/D,MAED,SAAS61K,GAMR,OAFAL,GAAc/M,aAAclnK,MAErBA,KAAKu0K,kBAAmBN,GAAeK,EAE/C,GAAC,CAAA9xK,IAAA,SAAA/D,MAED,SAAQ4kK,GAEP,OAASA,EAAMjvG,KAAOp0D,KAAKo0D,IAAUivG,EAAML,KAAOhjK,KAAKgjK,IAAUK,EAAMJ,KAAOjjK,KAAKijK,IAAUI,EAAMG,SAAWxjK,KAAKwjK,MAEpH,GAAC,CAAAhhK,IAAA,YAAA/D,MAED,SAAWsE,GASV,OAPA/C,KAAKo0D,GAAKrxD,EAAO,GACjB/C,KAAKgjK,GAAKjgK,EAAO,GACjB/C,KAAKijK,GAAKlgK,EAAO,QACGqH,IAAfrH,EAAO,KAAoB/C,KAAKwjK,OAASzgK,EAAO,IAErD/C,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAO7B,OALA8C,EAAOgnC,GAAW/pC,KAAKo0D,GACvBrxD,EAAOgnC,EAAS,GAAM/pC,KAAKgjK,GAC3BjgK,EAAOgnC,EAAS,GAAM/pC,KAAKijK,GAC3BlgK,EAAOgnC,EAAS,GAAM/pC,KAAKwjK,OAEpBzgK,CAER,GAAC,CAAAP,IAAA,YAAA/D,MAED,SAAW05C,GAIV,OAFAn4C,KAAKmjK,kBAAoBhrH,EAElBn4C,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,WAAqB,GAAC,CAAA+D,IAEnB1B,OAAOrE,SAAQgC,MAAAq+E,EAAAA,MAAlB,SAAAr+E,IAAA,OAAAq+E,EAAAA,MAAA,SAAAk+L,GAAA,cAAAA,EAAA/3Q,KAAA+3Q,EAAA93Q,MAAA,OAEC,OAFD83Q,EAAA93Q,KAAA,EAEOlD,KAAKo0D,GAAE,OACb,OADa4mN,EAAA93Q,KAAA,EACPlD,KAAKgjK,GAAE,OACb,OADag4G,EAAA93Q,KAAA,EACPlD,KAAKijK,GAAE,OACb,OADa+3G,EAAA93Q,KAAA,EACPlD,KAAKwjK,OAAM,wBAAAw3G,EAAAvsM,OAAA,GAAAhwE,EAAA,UAIlB,CAAA+D,IAAA,YAAA/D,MAEA,WAECsV,QAAQwN,MAAO,iFAEhB,KAAC2yJ,CAAA,CArTS,GAyTXA,GAAMC,aAAe,MACrBD,GAAMM,eAAiB,CAAE,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,IAE9DC,GAAM,WAEX,SAAAA,IAAchqK,EAAA,KAAAgqK,GAEbz0K,KAAKs6H,KAAO,CAEb,CAgDC,OAhDA/wH,EAAAkrK,EAAA,EAAAjyK,IAAA,MAAA/D,MAED,SAAKi2K,GAEJ10K,KAAKs6H,MAAS,GAAKo6C,EAAU,KAAQ,CAEtC,GAAC,CAAAlyK,IAAA,SAAA/D,MAED,SAAQi2K,GAEP10K,KAAKs6H,MAAQ,GAAKo6C,EAAU,CAE7B,GAAC,CAAAlyK,IAAA,YAAA/D,MAED,WAECuB,KAAKs6H,MAAO,CAEb,GAAC,CAAA93H,IAAA,SAAA/D,MAED,SAAQi2K,GAEP10K,KAAKs6H,MAAQ,GAAKo6C,EAAU,CAE7B,GAAC,CAAAlyK,IAAA,UAAA/D,MAED,SAASi2K,GAER10K,KAAKs6H,QAAY,GAAKo6C,EAAU,EAEjC,GAAC,CAAAlyK,IAAA,aAAA/D,MAED,WAECuB,KAAKs6H,KAAO,CAEb,GAAC,CAAA93H,IAAA,OAAA/D,MAED,SAAMk2K,GAEL,OAAuC,KAA9B30K,KAAKs6H,KAAOq6C,EAAOr6C,KAE7B,GAAC,CAAA93H,IAAA,YAAA/D,MAED,SAAWi2K,GAEV,OAAgD,KAAvC10K,KAAKs6H,MAAS,GAAKo6C,EAAU,GAEvC,KAACD,CAAA,CAtDU,GA0DRG,GAAc,EAEZC,GAAsB,IAAI/N,GAC1BgO,GAAoB,IAAI/R,GACxBgS,GAAsB,IAAIpE,GAC1BhmE,GAAwB,IAAIm8D,GAE5BkO,GAA4B,IAAIlO,GAChCmO,GAAyB,IAAInO,GAC7BoO,GAA8B,IAAInS,GAElCoS,GAAuB,IAAIrO,GAAS,EAAG,EAAG,GAC1CsO,GAAuB,IAAItO,GAAS,EAAG,EAAG,GAC1CuO,GAAuB,IAAIvO,GAAS,EAAG,EAAG,GAE1CwO,GAAc,CAAE1wK,KAAM,SACtB2wK,GAAgB,CAAE3wK,KAAM,WAExB4wK,GAAQ,SAAAC,GAAAz5J,EAAAw5J,EAAAC,GAAA,IAAAC,EAAA/6J,EAAA66J,GAEb,SAAAA,IAAc,IAAAtpD,EAAAzhH,EAAA,KAAA+qK,IAEbtpD,EAAAwpD,EAAA74K,KAAA,OAEKo6K,YAAa,EAElB14K,OAAOC,eAAcgd,EAAA0wG,GAAQ,KAAM,CAAEztH,MAAOm2K,OAE5C1oD,EAAKrQ,KAAOg2C,KAEZ3lC,EAAK/yH,KAAO,GACZ+yH,EAAKtnH,KAAO,WAEZsnH,EAAKhvD,OAAS,KACdgvD,EAAKtuG,SAAW,GAEhBsuG,EAAKylD,GAAK6D,EAASG,UAAUz0K,QAE7B,IAAMq+D,EAAW,IAAIunG,GACfxN,EAAW,IAAI4a,GACf9Q,EAAa,IAAIL,GACjB1rB,EAAQ,IAAIyvB,GAAS,EAAG,EAAG,GAiEd,OAnDnBxN,EAASpuB,WAZT,WAECk4B,EAAW8D,aAAc5N,GAAU,EAEpC,IASA8J,EAAWl4B,WAPX,WAECouB,EAASib,kBAAmBnR,OAAYh5J,GAAW,EAEpD,IAKA7L,OAAOiL,iBAAgBgS,EAAA0wG,GAAQ,CAC9B3sD,SAAU,CACT51D,cAAc,EACdD,YAAY,EACZjL,MAAO8gE,GAER+5F,SAAU,CACT3vJ,cAAc,EACdD,YAAY,EACZjL,MAAO66J,GAER8J,WAAY,CACXz5J,cAAc,EACdD,YAAY,EACZjL,MAAO2kK,GAER/rB,MAAO,CACN1tI,cAAc,EACdD,YAAY,EACZjL,MAAO44I,GAERu+B,gBAAiB,CAChBn3K,MAAO,IAAIkyK,IAEZkF,aAAc,CACbp3K,MAAO,IAAI+3J,MAIbtqC,EAAKwtC,OAAS,IAAIiX,GAClBzkD,EAAK+7C,YAAc,IAAI0I,GAEvBzkD,EAAK0yC,iBAAmB4W,EAASM,wBACjC5pD,EAAK6pD,wBAAyB,EAE9B7pD,EAAKy0P,sBAAwBnrM,EAASorM,6BAEtC10P,EAAKyoD,OAAS,IAAIF,GAClBvoD,EAAKviD,SAAU,EAEfuiD,EAAK8pD,YAAa,EAClB9pD,EAAK+pD,eAAgB,EAErB/pD,EAAKgqD,eAAgB,EACrBhqD,EAAKiqD,YAAc,EAEnBjqD,EAAKkqD,WAAa,GAElBlqD,EAAK+yC,SAAW,CAAC,EAAE/yC,CAEpB,CAkzBC,OAlzBA3iH,EAAAisK,EAAA,EAAAhzK,IAAA,iBAAA/D,MAED,WAA4E,GAAC,CAAA+D,IAAA,gBAAA/D,MAE7E,WAA2E,GAAC,CAAA+D,IAAA,eAAA/D,MAE5E,SAAci7J,GAER15J,KAAK4+J,kBAAmB5+J,KAAKq2K,eAElCr2K,KAAK05J,OAAO4c,YAAa5c,GAEzB15J,KAAK05J,OAAO6c,UAAWv2K,KAAKu/D,SAAUv/D,KAAKojK,WAAYpjK,KAAKq3I,MAE7D,GAAC,CAAA70I,IAAA,kBAAA/D,MAED,SAAiBwI,GAIhB,OAFAjH,KAAKojK,WAAWkT,YAAarvK,GAEtBjH,IAER,GAAC,CAAAwC,IAAA,2BAAA/D,MAED,SAA0BolK,EAAMjO,GAI/B51J,KAAKojK,WAAW+D,iBAAkBtD,EAAMjO,EAEzC,GAAC,CAAApzJ,IAAA,uBAAA/D,MAED,SAAsB4kK,GAErBrjK,KAAKojK,WAAW8D,aAAc7D,GAAO,EAEtC,GAAC,CAAA7gK,IAAA,wBAAA/D,MAED,SAAuBqI,GAItB9G,KAAKojK,WAAWwQ,sBAAuB9sK,EAExC,GAAC,CAAAtE,IAAA,4BAAA/D,MAED,SAA2BwI,GAI1BjH,KAAKojK,WAAW1H,KAAMz0J,EAEvB,GAAC,CAAAzE,IAAA,eAAA/D,MAED,SAAcolK,EAAMjO,GASnB,OAJAkf,GAAI3N,iBAAkBtD,EAAMjO,GAE5B51J,KAAKojK,WAAWoT,SAAU1B,IAEnB90K,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBolK,EAAMjO,GAUxB,OAJAkf,GAAI3N,iBAAkBtD,EAAMjO,GAE5B51J,KAAKojK,WAAWkT,YAAaxB,IAEtB90K,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASm3J,GAER,OAAO51J,KAAKy2K,aAActB,GAAQvf,EAEnC,GAAC,CAAApzJ,IAAA,UAAA/D,MAED,SAASm3J,GAER,OAAO51J,KAAKy2K,aAAcrB,GAAQxf,EAEnC,GAAC,CAAApzJ,IAAA,UAAA/D,MAED,SAASm3J,GAER,OAAO51J,KAAKy2K,aAAcpB,GAAQzf,EAEnC,GAAC,CAAApzJ,IAAA,kBAAA/D,MAED,SAAiBolK,EAAM6S,GAStB,OAJA7B,GAAMnZ,KAAMmI,GAAOmD,gBAAiBhnK,KAAKojK,YAEzCpjK,KAAKu/D,SAASnzC,IAAKyoJ,GAAMtf,eAAgBmhB,IAElC12K,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYi4K,GAEX,OAAO12K,KAAK22K,gBAAiBxB,GAAQuB,EAEtC,GAAC,CAAAl0K,IAAA,aAAA/D,MAED,SAAYi4K,GAEX,OAAO12K,KAAK22K,gBAAiBvB,GAAQsB,EAEtC,GAAC,CAAAl0K,IAAA,aAAA/D,MAED,SAAYi4K,GAEX,OAAO12K,KAAK22K,gBAAiBtB,GAAQqB,EAEtC,GAAC,CAAAl0K,IAAA,eAAA/D,MAED,SAAcksK,GAEb,OAAOA,EAAO9C,aAAc7nK,KAAKioK,YAElC,GAAC,CAAAzlK,IAAA,eAAA/D,MAED,SAAcksK,GAEb,OAAOA,EAAO9C,aAAckN,GAAMrZ,KAAM17J,KAAKioK,aAAcn4B,SAE5D,GAAC,CAAAttI,IAAA,SAAA/D,MAED,SAAQvC,EAAGmL,EAAGC,GAIRpL,EAAEutK,UAEN9+D,GAAQ+wD,KAAMx/J,GAIdyuG,GAAQ17E,IAAK/yB,EAAGmL,EAAGC,GAIpB,IAAM41D,EAASl9D,KAAKk9D,OAEpBl9D,KAAK6qK,mBAAmB,GAAM,GAE9BmK,GAAY4B,sBAAuB52K,KAAKioK,aAEnCjoK,KAAK62K,UAAY72K,KAAK82K,QAE1B/B,GAAMgC,OAAQ/B,GAAarqE,GAAS3qG,KAAK2xK,IAIzCoD,GAAMgC,OAAQpsE,GAASqqE,GAAah1K,KAAK2xK,IAI1C3xK,KAAKojK,WAAWwQ,sBAAuBmB,IAElC73G,IAEJ63G,GAAMiC,gBAAiB95G,EAAO+qG,aAC9B6M,GAAIlB,sBAAuBmB,IAC3B/0K,KAAKojK,WAAWkT,YAAaxB,GAAIhlC,UAInC,GAAC,CAAAttI,IAAA,MAAA/D,MAED,SAAK0D,GAEJ,GAAKlC,UAAUrI,OAAS,EAAI,CAE3B,IAAM,IAAI8E,EAAI,EAAGA,EAAIuD,UAAUrI,OAAQ8E,IAEtCsD,KAAKosB,IAAKnsB,UAAWvD,IAItB,OAAOsD,IAER,CAEA,OAAKmC,IAAWnC,MAEf+T,QAAQwN,MAAO,kEAAoEpf,GAC5EnC,OAIHmC,GAAUA,EAAO80K,YAEE,OAAlB90K,EAAO+6D,QAEX/6D,EAAO+6D,OAAO0D,OAAQz+D,GAIvBA,EAAO+6D,OAASl9D,KAChBA,KAAK4d,SAAS9gB,KAAMqF,GAEpBA,EAAOo8B,cAAe+2I,KAItBvhK,QAAQwN,MAAO,gEAAiEpf,GAI1EnC,KAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0D,GAEP,GAAKlC,UAAUrI,OAAS,EAAI,CAE3B,IAAM,IAAI8E,EAAI,EAAGA,EAAIuD,UAAUrI,OAAQ8E,IAEtCsD,KAAK4gE,OAAQ3gE,UAAWvD,IAIzB,OAAOsD,IAER,CAEA,IAAM4O,EAAQ5O,KAAK4d,SAASpR,QAASrK,GAWrC,OATiB,IAAZyM,IAEJzM,EAAO+6D,OAAS,KAChBl9D,KAAK4d,SAASiwC,OAAQj/C,EAAO,GAE7BzM,EAAOo8B,cAAeg3I,KAIhBv1K,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,WAEC,IAAMy+D,EAASl9D,KAAKk9D,OAQpB,OANgB,OAAXA,GAEJA,EAAO0D,OAAQ5gE,MAITA,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,IAAM,IAAI/B,EAAI,EAAGA,EAAIsD,KAAK4d,SAAShmB,OAAQ8E,IAAO,CAEjD,IAAMyF,EAASnC,KAAK4d,SAAUlhB,GAE9ByF,EAAO+6D,OAAS,KAEhB/6D,EAAOo8B,cAAeg3I,GAEvB,CAIA,OAFAv1K,KAAK4d,SAAShmB,OAAS,EAEhBoI,IAGR,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0D,GAwBP,OAlBAnC,KAAK6qK,mBAAmB,GAAM,GAE9BkK,GAAMrZ,KAAM17J,KAAKioK,aAAcn4B,SAER,OAAlB3tI,EAAO+6D,SAEX/6D,EAAO+6D,OAAO2tG,mBAAmB,GAAM,GAEvCkK,GAAMyB,SAAUr0K,EAAO+6D,OAAO+qG,cAI/B9lK,EAAO0lK,aAAckN,IAErB/0K,KAAKosB,IAAKjqB,GAEVA,EAAO0oK,mBAAmB,GAAO,GAE1B7qK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAe2gC,GAEd,OAAOp/B,KAAKk3K,oBAAqB,KAAM93I,EAExC,GAAC,CAAA58B,IAAA,kBAAA/D,MAED,SAAiBtF,GAEhB,OAAO6G,KAAKk3K,oBAAqB,OAAQ/9K,EAE1C,GAAC,CAAAqJ,IAAA,sBAAA/D,MAED,SAAqBtF,EAAMsF,GAE1B,GAAKuB,KAAM7G,KAAWsF,EAAQ,OAAOuB,KAErC,IAAM,IAAItD,EAAI,EAAGmK,EAAI7G,KAAK4d,SAAShmB,OAAQ8E,EAAImK,EAAGnK,IAAO,CAExD,IACMyF,EADQnC,KAAK4d,SAAUlhB,GACRw6K,oBAAqB/9K,EAAMsF,GAEhD,QAAgB2L,IAAXjI,EAEJ,OAAOA,CAIT,CAID,GAAC,CAAAK,IAAA,mBAAA/D,MAED,SAAkB8C,GAIjB,OAFAvB,KAAK6qK,mBAAmB,GAAM,GAEvBtpK,EAAOq1K,sBAAuB52K,KAAKioK,YAE3C,GAAC,CAAAzlK,IAAA,qBAAA/D,MAED,SAAoB8C,GAMnB,OAJAvB,KAAK6qK,mBAAmB,GAAM,GAE9B7qK,KAAKioK,YAAYsO,UAAWvB,GAAazzK,EAAQ0zK,IAE1C1zK,CAER,GAAC,CAAAiB,IAAA,gBAAA/D,MAED,SAAe8C,GAMd,OAJAvB,KAAK6qK,mBAAmB,GAAM,GAE9B7qK,KAAKioK,YAAYsO,UAAWvB,GAAaE,GAAe3zK,GAEjDA,CAER,GAAC,CAAAiB,IAAA,oBAAA/D,MAED,SAAmB8C,GAElBvB,KAAK6qK,mBAAmB,GAAM,GAE9B,IAAMvkK,EAAItG,KAAKioK,YAAYjiC,SAE3B,OAAOzkI,EAAO0tB,IAAK3oB,EAAG,GAAKA,EAAG,GAAKA,EAAG,KAAOu6G,WAE9C,GAAC,CAAAr+G,IAAA,UAAA/D,MAED,WAAwC,GAAC,CAAA+D,IAAA,WAAA/D,MAEzC,SAAU05C,GAETA,EAAUn4C,MAIV,IAFA,IAAM4d,EAAW5d,KAAK4d,SAEZlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5CkhB,EAAUlhB,GAAIy6K,SAAUh/H,EAI1B,GAAC,CAAA31C,IAAA,kBAAA/D,MAED,SAAiB05C,GAEhB,IAAsB,IAAjBn4C,KAAK2pE,QAAV,CAEAxxB,EAAUn4C,MAIV,IAFA,IAAM4d,EAAW5d,KAAK4d,SAEZlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5CkhB,EAAUlhB,GAAI06K,gBAAiBj/H,EARI,CAYrC,GAAC,CAAA31C,IAAA,oBAAA/D,MAED,SAAmB05C,GAElB,IAAM+kB,EAASl9D,KAAKk9D,OAEJ,OAAXA,IAEJ/kB,EAAU+kB,GAEVA,EAAOm6G,kBAAmBl/H,GAI5B,GAAC,CAAA31C,IAAA,eAAA/D,MAED,WAECuB,KAAK05J,OAAO6X,QAASvxK,KAAKu/D,SAAUv/D,KAAKojK,WAAYpjK,KAAKq3I,OAE1Dr3I,KAAK+1K,wBAAyB,CAE/B,GAAC,CAAAvzK,IAAA,oBAAA/D,MAED,SAAmB64K,GAEbt3K,KAAK4+J,kBAAmB5+J,KAAKq2K,gBAE7Br2K,KAAK+1K,wBAA0BuB,KAEd,OAAhBt3K,KAAKk9D,OAETl9D,KAAKioK,YAAYvM,KAAM17J,KAAK05J,QAI5B15J,KAAKioK,YAAY3Q,iBAAkBt3J,KAAKk9D,OAAO+qG,YAAajoK,KAAK05J,QAIlE15J,KAAK+1K,wBAAyB,EAE9BuB,GAAQ,GAQT,IAFA,IAAM15J,EAAW5d,KAAK4d,SAEZlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEnD,IAAM08B,EAAQxb,EAAUlhB,IAEa,IAAhC08B,EAAMunV,wBAA4C,IAAVrpM,GAE5Cl+I,EAAMm+I,kBAAmBD,EAI3B,CAED,GAAC,CAAA90K,IAAA,oBAAA/D,MAED,SAAmB+4K,EAAeC,GAEjC,IAAMv6G,EAASl9D,KAAKk9D,OAsBpB,IApBuB,IAAlBs6G,GAAqC,OAAXt6G,IAAoD,IAAjCA,EAAOyjT,uBAExDzjT,EAAO2tG,mBAAmB,GAAM,GAI5B7qK,KAAK4+J,kBAAmB5+J,KAAKq2K,eAEb,OAAhBr2K,KAAKk9D,OAETl9D,KAAKioK,YAAYvM,KAAM17J,KAAK05J,QAI5B15J,KAAKioK,YAAY3Q,iBAAkBt3J,KAAKk9D,OAAO+qG,YAAajoK,KAAK05J,SAM1C,IAAnB+d,EAIJ,IAFA,IAAM75J,EAAW5d,KAAK4d,SAEZlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEnD,IAAM08B,EAAQxb,EAAUlhB,IAEa,IAAhC08B,EAAMunV,uBAEVvnV,EAAMyxI,mBAAmB,GAAO,EAIlC,CAIF,GAAC,CAAAroK,IAAA,SAAA/D,MAED,SAAQ63B,GAGP,IAAMknI,OAA0BpzJ,IAATksB,GAAsC,kBAATA,EAE9CuoD,EAAS,CAAC,EAKX2+E,IAGJlnI,EAAO,CACNohJ,WAAY,CAAC,EACbC,UAAW,CAAC,EACZpY,SAAU,CAAC,EACX9B,OAAQ,CAAC,EACTma,OAAQ,CAAC,EACTC,UAAW,CAAC,EACZzB,WAAY,CAAC,EACb5rE,MAAO,CAAC,GAGT3rB,EAAO4/B,SAAW,CACjBplH,QAAS,IACTuL,KAAM,SACNgrF,UAAW,oBAOb,IAAMztF,EAAS,CAAC,EA+BhB,SAAS21K,EAAWC,EAASr2K,GAQ5B,YANiC0I,IAA5B2tK,EAASr2K,EAAQm6G,QAErBk8D,EAASr2K,EAAQm6G,MAASn6G,EAAQ89J,OAAQlpI,IAIpC50B,EAAQm6G,IAEhB,CAEA,GAzCA15G,EAAO05G,KAAO77G,KAAK67G,KACnB15G,EAAOyC,KAAO5E,KAAK4E,KAEA,KAAd5E,KAAK7G,OAAcgJ,EAAOhJ,KAAO6G,KAAK7G,OAClB,IAApB6G,KAAKg2K,aAAsB7zK,EAAO6zK,YAAa,IACxB,IAAvBh2K,KAAKi2K,gBAAyB9zK,EAAO8zK,eAAgB,IACpC,IAAjBj2K,KAAK2pE,UAAoBxnE,EAAOwnE,SAAU,IACnB,IAAvB3pE,KAAKk2K,gBAA0B/zK,EAAO+zK,eAAgB,GACjC,IAArBl2K,KAAKm2K,cAAoBh0K,EAAOg0K,YAAcn2K,KAAKm2K,aACf,OAApCpoH,KAAKC,UAAWhuD,KAAKi/J,YAAsB98J,EAAO88J,SAAWj/J,KAAKi/J,UAEvE98J,EAAOwyK,OAAS30K,KAAK20K,OAAOr6C,KAC5Bn4H,EAAOu3J,OAAS15J,KAAK05J,OAAOnyE,WAEG,IAA1BvnF,KAAK4+J,mBAA6Bz8J,EAAOy8J,kBAAmB,GAI5D5+J,KAAKg4K,kBAET71K,EAAOyC,KAAO,gBACdzC,EAAOw7E,MAAQ39E,KAAK29E,MACpBx7E,EAAO81K,eAAiBj4K,KAAKi4K,eAAezY,SAChB,OAAvBx/J,KAAKk4K,gBAAyB/1K,EAAO+1K,cAAgBl4K,KAAKk4K,cAAc1Y,WAkBzEx/J,KAAKm4K,QAEJn4K,KAAK4/D,aAEJ5/D,KAAK4/D,WAAW67F,QAEpBt5J,EAAOy9D,WAAa5/D,KAAK4/D,WAAW4/F,SAEzBx/J,KAAK4/D,WAAW+/F,YAE3Bx9J,EAAOy9D,WAAa5/D,KAAK4/D,WAAW4/F,OAAQlpI,GAAOulF,OAMhD77G,KAAKo4K,aAAep4K,KAAKo4K,YAAYzY,YAAwD,IAA3C3/J,KAAKo4K,YAAYjZ,wBAEvEh9J,EAAOi2K,YAAcp4K,KAAKo4K,YAAY5Y,OAAQlpI,GAAOulF,WAIhD,GAAK77G,KAAKq4K,QAAUr4K,KAAKs4K,QAAUt4K,KAAKu4K,SAAW,CAEzDp2K,EAAO2oK,SAAWgN,EAAWxhJ,EAAKohJ,WAAY13K,KAAK8qK,UAEnD,IAAM0N,EAAax4K,KAAK8qK,SAAS0N,WAEjC,QAAoBpuK,IAAfouK,QAAkDpuK,IAAtBouK,EAAWZ,OAAuB,CAElE,IAAMA,EAASY,EAAWZ,OAE1B,GAAKj7K,MAAM0E,QAASu2K,GAEnB,IAAM,IAAIl7K,EAAI,EAAGmK,EAAI+wK,EAAOhgL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAMmd,EAAQ+9J,EAAQl7K,GAEtBo7K,EAAWxhJ,EAAKshJ,OAAQ/9J,EAEzB,MAIAi+J,EAAWxhJ,EAAKshJ,OAAQA,EAI1B,CAED,CAiBA,GAfK53K,KAAKy4K,gBAETt2K,EAAOu2K,SAAW14K,KAAK04K,SACvBv2K,EAAOw2K,WAAa34K,KAAK24K,WAAWpxF,eAEbn9E,IAAlBpK,KAAK44K,WAETd,EAAWxhJ,EAAKuhJ,UAAW73K,KAAK44K,UAEhCz2K,EAAOy2K,SAAW54K,KAAK44K,SAAS/8D,YAMXzxG,IAAlBpK,KAAK64K,SAET,GAAKl8K,MAAM0E,QAASrB,KAAK64K,UAAa,CAIrC,IAFA,IAAMC,EAAQ,GAEJp8K,EAAI,EAAGmK,EAAI7G,KAAK64K,SAASjhL,OAAQ8E,EAAImK,EAAGnK,IAEjDo8K,EAAMh8K,KAAMg7K,EAAWxhJ,EAAKqhJ,UAAW33K,KAAK64K,SAAUn8K,KAIvDyF,EAAO02K,SAAWC,CAEnB,MAEC32K,EAAO02K,SAAWf,EAAWxhJ,EAAKqhJ,UAAW33K,KAAK64K,UAQpD,GAAK74K,KAAK4d,SAAShmB,OAAS,EAAI,CAE/BuK,EAAOyb,SAAW,GAElB,IAAM,IAAIlhB,EAAI,EAAGA,EAAIsD,KAAK4d,SAAShmB,OAAQ8E,IAE1CyF,EAAOyb,SAAS9gB,KAAMkD,KAAK4d,SAAUlhB,GAAI8iK,OAAQlpI,GAAOn0B,OAI1D,CAIA,GAAKnC,KAAKo2K,WAAWx+K,OAAS,EAAI,CAEjCuK,EAAOi0K,WAAa,GAEpB,IAAM,IAAI15K,EAAI,EAAGA,EAAIsD,KAAKo2K,WAAWx+K,OAAQ8E,IAAO,CAEnD,IAAMywC,EAAYntC,KAAKo2K,WAAY15K,GAEnCyF,EAAOi0K,WAAWt5K,KAAMg7K,EAAWxhJ,EAAK8/I,WAAYjpI,GAErD,CAED,CAEA,GAAKqwH,EAAe,CAEnB,IAAMka,EAAaqB,EAAkBziJ,EAAKohJ,YACpCC,EAAYoB,EAAkBziJ,EAAKqhJ,WACnCpY,EAAWwZ,EAAkBziJ,EAAKipI,UAClC9B,EAASsb,EAAkBziJ,EAAKmnI,QAChCma,EAASmB,EAAkBziJ,EAAKshJ,QAChCC,EAAYkB,EAAkBziJ,EAAKuhJ,WACnCzB,EAAa2C,EAAkBziJ,EAAK8/I,YACpC5rE,EAAQuuE,EAAkBziJ,EAAKk0E,OAEhCktE,EAAW9/K,OAAS,IAAIinF,EAAO64F,WAAaA,GAC5CC,EAAU//K,OAAS,IAAIinF,EAAO84F,UAAYA,GAC1CpY,EAAS3nK,OAAS,IAAIinF,EAAO0gF,SAAWA,GACxC9B,EAAO7lK,OAAS,IAAIinF,EAAO4+E,OAASA,GACpCma,EAAOhgL,OAAS,IAAIinF,EAAO+4F,OAASA,GACpCC,EAAUjgL,OAAS,IAAIinF,EAAOg5F,UAAYA,GAC1CzB,EAAWx+K,OAAS,IAAIinF,EAAOu3F,WAAaA,GAC5C5rE,EAAM5yG,OAAS,IAAIinF,EAAO2rB,MAAQA,EAExC,CAIA,OAFA3rB,EAAO18E,OAASA,EAET08E,EAKP,SAASk6F,EAAkB3vK,GAE1B,IAAM2D,EAAS,GACf,IAAM,IAAMvK,KAAO4G,EAAQ,CAE1B,IAAMs6B,EAAOt6B,EAAO5G,UACbkhC,EAAK+6E,SACZ1xG,EAAOjQ,KAAM4mC,EAEd,CAEA,OAAO32B,CAER,CAED,GAAC,CAAAvK,IAAA,QAAA/D,MAED,SAAOu6K,GAEN,OAAO,IAAIh5K,KAAKma,aAAcuhJ,KAAM17J,KAAMg5K,EAE3C,GAAC,CAAAx2K,IAAA,OAAA/D,MAED,SAAM+C,GAA2B,IAAnBw3K,IAAS/4K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GA8BtB,GA5BAD,KAAK7G,KAAOqI,EAAOrI,KAEnB6G,KAAK2xK,GAAGjW,KAAMl6J,EAAOmwK,IAErB3xK,KAAKu/D,SAASm8F,KAAMl6J,EAAO+9D,UAC3Bv/D,KAAKs5J,SAAS/rJ,MAAQ/L,EAAO83J,SAAS/rJ,MACtCvN,KAAKojK,WAAW1H,KAAMl6J,EAAO4hK,YAC7BpjK,KAAKq3I,MAAMqkB,KAAMl6J,EAAO61I,OAExBr3I,KAAK05J,OAAOgC,KAAMl6J,EAAOk4J,QACzB15J,KAAKioK,YAAYvM,KAAMl6J,EAAOymK,aAE9BjoK,KAAK4+J,iBAAmBp9J,EAAOo9J,iBAC/B5+J,KAAK+1K,uBAAyBv0K,EAAOu0K,uBAErC/1K,KAAK2gX,sBAAwBn/W,EAAOm/W,sBAEpC3gX,KAAK20K,OAAOr6C,KAAO94H,EAAOmzK,OAAOr6C,KACjCt6H,KAAK2pE,QAAUnoE,EAAOmoE,QAEtB3pE,KAAKg2K,WAAax0K,EAAOw0K,WACzBh2K,KAAKi2K,cAAgBz0K,EAAOy0K,cAE5Bj2K,KAAKk2K,cAAgB10K,EAAO00K,cAC5Bl2K,KAAKm2K,YAAc30K,EAAO20K,YAE1Bn2K,KAAKi/J,SAAWlxG,KAAK4yC,MAAO5yC,KAAKC,UAAWxsD,EAAOy9J,YAEhC,IAAd+Z,EAEJ,IAAM,IAAIt8K,EAAI,EAAGA,EAAI8E,EAAOoc,SAAShmB,OAAQ8E,IAAO,CAEnD,IAAM08B,EAAQ53B,EAAOoc,SAAUlhB,GAC/BsD,KAAKosB,IAAKgN,EAAMl4B,QAEjB,CAID,OAAOlB,IAER,KAACw1K,CAAA,CA54BY,CAASlkB,IAg5BvBkkB,GAASG,UAA0B,IAAI7O,GAAS,EAAG,EAAG,GACtD0O,GAASM,yBAA0B,EACnCN,GAASorM,8BAA+B,EAExC,IAAM3nM,GAAsB,IAAInS,GAC1BoS,GAAsB,IAAIpS,GAC1BqS,GAAsB,IAAIrS,GAC1BsS,GAAsB,IAAItS,GAE1BuS,GAAqB,IAAIvS,GACzBwS,GAAqB,IAAIxS,GACzByS,GAAqB,IAAIzS,GACzB0S,GAAqB,IAAI1S,GACzB2S,GAAqB,IAAI3S,GACzB4S,GAAqB,IAAI5S,GAEzB6S,GAAQ,WAEb,SAAAA,IAAuE,IAA1D39K,EAACiE,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAWvgK,EAACtG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAW7qK,EAACgE,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAASr8J,EAAA,KAAAkvK,GAEnE35K,KAAKhE,EAAIA,EACTgE,KAAKuG,EAAIA,EACTvG,KAAK/D,EAAIA,CAEV,CAkFC,OAlFAsN,EAAAowK,EAAA,EAAAn3K,IAAA,MAAA/D,MAoFD,SAAKzC,EAAGuK,EAAGtK,GAMV,OAJA+D,KAAKhE,EAAE0/J,KAAM1/J,GACbgE,KAAKuG,EAAEm1J,KAAMn1J,GACbvG,KAAK/D,EAAEy/J,KAAMz/J,GAEN+D,IAER,GAAC,CAAAwC,IAAA,0BAAA/D,MAED,SAAyBwrK,EAAQ2P,EAAIC,EAAIC,GAMxC,OAJA95K,KAAKhE,EAAE0/J,KAAMuO,EAAQ2P,IACrB55K,KAAKuG,EAAEm1J,KAAMuO,EAAQ4P,IACrB75K,KAAK/D,EAAEy/J,KAAMuO,EAAQ6P,IAEd95K,IAER,GAAC,CAAAwC,IAAA,6BAAA/D,MAED,SAA4By3J,EAAW0jB,EAAIC,EAAIC,GAM9C,OAJA95K,KAAKhE,EAAE+uK,oBAAqB7U,EAAW0jB,GACvC55K,KAAKuG,EAAEwkK,oBAAqB7U,EAAW2jB,GACvC75K,KAAK/D,EAAE8uK,oBAAqB7U,EAAW4jB,GAEhC95K,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+sK,GAML,OAJAxrK,KAAKhE,EAAE0/J,KAAM8P,EAASxvK,GACtBgE,KAAKuG,EAAEm1J,KAAM8P,EAASjlK,GACtBvG,KAAK/D,EAAEy/J,KAAM8P,EAASvvK,GAEf+D,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAKC,OAHAw6K,GAAM3jB,WAAYt1J,KAAK/D,EAAG+D,KAAKuG,GAC/B2yK,GAAM5jB,WAAYt1J,KAAKhE,EAAGgE,KAAKuG,GAEQ,GAAhC0yK,GAAMzI,MAAO0I,IAAQthL,QAE7B,GAAC,CAAA4K,IAAA,cAAA/D,MAED,SAAa8C,GAEZ,OAAOA,EAAO8zJ,WAAYr1J,KAAKhE,EAAGgE,KAAKuG,GAAI6lB,IAAKpsB,KAAK/D,GAAIs5J,eAAgB,EAAI,EAE9E,GAAC,CAAA/yJ,IAAA,YAAA/D,MAED,SAAW8C,GAEV,OAAOo4K,EAASI,UAAW/5K,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAAGsF,EAEpD,GAAC,CAAAiB,IAAA,WAAA/D,MAED,SAAU8C,GAET,OAAOA,EAAOy4K,sBAAuBh6K,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAE3D,GAAC,CAAAuG,IAAA,eAAA/D,MAED,SAAcisK,EAAOnpK,GAEpB,OAAOo4K,EAASM,aAAcvP,EAAO1qK,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAAGsF,EAE9D,GAAC,CAAAiB,IAAA,QAAA/D,MAED,SAAOisK,EAAOwP,EAAKC,EAAKC,EAAK74K,GAE5B,OAAOo4K,EAASU,MAAO3P,EAAO1qK,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAAGi+K,EAAKC,EAAKC,EAAK74K,EAEtE,GAAC,CAAAiB,IAAA,gBAAA/D,MAED,SAAeisK,GAEd,OAAOiP,EAASW,cAAe5P,EAAO1qK,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAE5D,GAAC,CAAAuG,IAAA,gBAAA/D,MAED,SAAe4vK,GAEd,OAAOsL,EAASY,cAAev6K,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAAGoyK,EAExD,GAAC,CAAA7rK,IAAA,gBAAA/D,MAED,SAAe+rK,GAEd,OAAOA,EAAIgQ,mBAAoBx6K,KAEhC,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,SAAqBuI,EAAGzF,GAEvB,IACI4F,EAAGC,EADDpL,EAAIgE,KAAKhE,EAAGuK,EAAIvG,KAAKuG,EAAGtK,EAAI+D,KAAK/D,EASvCo9K,GAAK/jB,WAAY/uJ,EAAGvK,GACpBs9K,GAAKhkB,WAAYr5J,EAAGD,GACpBw9K,GAAKlkB,WAAYtuJ,EAAGhL,GACpB,IAAM+1J,EAAKsnB,GAAKpV,IAAKuV,IACfxnB,EAAKsnB,GAAKrV,IAAKuV,IACrB,GAAKznB,GAAM,GAAKC,GAAM,EAGrB,OAAOzwJ,EAAOm6J,KAAM1/J,GAIrBy9K,GAAKnkB,WAAYtuJ,EAAGT,GACpB,IAAM0rJ,EAAKonB,GAAKpV,IAAKwV,IACfgB,EAAKnB,GAAKrV,IAAKwV,IACrB,GAAKxnB,GAAM,GAAKwoB,GAAMxoB,EAGrB,OAAO1wJ,EAAOm6J,KAAMn1J,GAIrB,IAAMw1B,EAAKg2H,EAAK0oB,EAAKxoB,EAAKD,EAC1B,GAAKj2H,GAAM,GAAKg2H,GAAM,GAAKE,GAAM,EAIhC,OAFA9qJ,EAAI4qJ,GAAOA,EAAKE,GAET1wJ,EAAOm6J,KAAM1/J,GAAI0+K,gBAAiBrB,GAAMlyK,GAIhDuyK,GAAKpkB,WAAYtuJ,EAAG/K,GACpB,IAAM0+K,EAAKtB,GAAKpV,IAAKyV,IACfkB,EAAKtB,GAAKrV,IAAKyV,IACrB,GAAKkB,GAAM,GAAKD,GAAMC,EAGrB,OAAOr5K,EAAOm6J,KAAMz/J,GAIrB,IAAM06B,EAAKgkJ,EAAK3oB,EAAKD,EAAK6oB,EAC1B,GAAKjkJ,GAAM,GAAKq7H,GAAM,GAAK4oB,GAAM,EAIhC,OAFAxzK,EAAI4qJ,GAAOA,EAAK4oB,GAETr5K,EAAOm6J,KAAM1/J,GAAI0+K,gBAAiBpB,GAAMlyK,GAIhD,IAAMumB,EAAKskI,EAAK2oB,EAAKD,EAAKF,EAC1B,GAAK9sJ,GAAM,GAAO8sJ,EAAKxoB,GAAQ,GAAO0oB,EAAKC,GAAQ,EAKlD,OAHArB,GAAKjkB,WAAYr5J,EAAGsK,GACpBa,GAAMqzK,EAAKxoB,IAAWwoB,EAAKxoB,GAAS0oB,EAAKC,IAElCr5K,EAAOm6J,KAAMn1J,GAAIm0K,gBAAiBnB,GAAMnyK,GAKhD,IAAMyzK,EAAQ,GAAMltJ,EAAKgJ,EAAKoF,GAK9B,OAHA50B,EAAIwvB,EAAKkkJ,EACTzzK,EAAI20B,EAAK8+I,EAEFt5K,EAAOm6J,KAAM1/J,GAAI0+K,gBAAiBrB,GAAMlyK,GAAIuzK,gBAAiBpB,GAAMlyK,EAE3E,GAAC,CAAA5E,IAAA,SAAA/D,MAED,SAAQ+sK,GAEP,OAAOA,EAASxvK,EAAEwwK,OAAQxsK,KAAKhE,IAAOwvK,EAASjlK,EAAEimK,OAAQxsK,KAAKuG,IAAOilK,EAASvvK,EAAEuwK,OAAQxsK,KAAK/D,EAE9F,IAAC,EAAAuG,IAAA,YAAA/D,MA9QD,SAAkBzC,EAAGuK,EAAGtK,EAAGsF,GAE1BA,EAAO+zJ,WAAYr5J,EAAGsK,GACtB0yK,GAAM3jB,WAAYt5J,EAAGuK,GACrBhF,EAAOivK,MAAOyI,IAEd,IAAM6B,EAAiBv5K,EAAOmnK,WAC9B,OAAKoS,EAAiB,EAEdv5K,EAAOg0J,eAAgB,EAAIt4J,KAAK04J,KAAMmlB,IAIvCv5K,EAAO0tB,IAAK,EAAG,EAAG,EAE1B,GAGA,CAAAzsB,IAAA,eAAA/D,MACA,SAAqBisK,EAAO1uK,EAAGuK,EAAGtK,EAAGsF,GAEpC03K,GAAM3jB,WAAYr5J,EAAGD,GACrBk9K,GAAM5jB,WAAY/uJ,EAAGvK,GACrBm9K,GAAM7jB,WAAYoV,EAAO1uK,GAEzB,IAAM++K,EAAQ9B,GAAMhV,IAAKgV,IACnB+B,EAAQ/B,GAAMhV,IAAKiV,IACnB+B,EAAQhC,GAAMhV,IAAKkV,IACnB+B,EAAQhC,GAAMjV,IAAKiV,IACnBiC,EAAQjC,GAAMjV,IAAKkV,IAEnB0B,EAAUE,EAAQG,EAAQF,EAAQA,EAGxC,GAAe,IAAVH,EAIJ,OAAOt5K,EAAO0tB,KAAO,GAAK,GAAK,GAIhC,IAAMmsJ,EAAW,EAAIP,EACftzK,GAAM2zK,EAAQD,EAAQD,EAAQG,GAAUC,EACxCj0K,GAAM4zK,EAAQI,EAAQH,EAAQC,GAAUG,EAG9C,OAAO75K,EAAO0tB,IAAK,EAAI1nB,EAAIJ,EAAGA,EAAGI,EAElC,GAAC,CAAA/E,IAAA,gBAAA/D,MAED,SAAsBisK,EAAO1uK,EAAGuK,EAAGtK,GAIlC,OAFA+D,KAAKi6K,aAAcvP,EAAO1uK,EAAGuK,EAAGtK,EAAGm9K,IAE1BA,GAAMl9K,GAAK,GAASk9K,GAAM/xK,GAAK,GAAW+xK,GAAMl9K,EAAIk9K,GAAM/xK,GAAO,CAE3E,GAAC,CAAA7E,IAAA,QAAA/D,MAED,SAAcisK,EAAOpzC,EAAIC,EAAI8jD,EAAInB,EAAKC,EAAKC,EAAK74K,GAS/C,OAPAvB,KAAKi6K,aAAcvP,EAAOpzC,EAAIC,EAAI8jD,EAAIjC,IAEtC73K,EAAO0tB,IAAK,EAAG,GACf1tB,EAAOm5K,gBAAiBR,EAAKd,GAAMl9K,GACnCqF,EAAOm5K,gBAAiBP,EAAKf,GAAM/xK,GACnC9F,EAAOm5K,gBAAiBN,EAAKhB,GAAM9xK,GAE5B/F,CAER,GAAC,CAAAiB,IAAA,gBAAA/D,MAED,SAAsBzC,EAAGuK,EAAGtK,EAAGoyK,GAM9B,OAJA4K,GAAM3jB,WAAYr5J,EAAGsK,GACrB2yK,GAAM5jB,WAAYt5J,EAAGuK,GAGZ0yK,GAAMzI,MAAO0I,IAAQjV,IAAKoK,GAAc,CAElD,KAACsL,CAAA,CA1FY,GA4RV2B,GAAa,EAEXC,GAAQ,SAAAC,GAAAx/J,EAAAu/J,EAAAC,GAAA,IAAAC,EAAA9gK,EAAA4gK,GAEb,SAAAA,IAAc,IAAAG,EAmEO,OAnEPjxK,EAAA,KAAA8wK,IAEbG,EAAAD,EAAA5+K,KAAA,OAEKilL,YAAa,EAElBvjL,OAAOC,eAAcgd,EAAAkgK,GAAQ,KAAM,CAAEj9K,MAAO68K,OAE5CI,EAAK7/D,KAAOg2C,KAEZ6pB,EAAKviL,KAAO,GACZuiL,EAAK92K,KAAO,WAEZ82K,EAAKE,SAAWn0B,GAChBi0B,EAAKG,KAAO10B,GACZu0B,EAAKI,cAAe,EAEpBJ,EAAKlnJ,QAAU,EACfknJ,EAAKK,aAAc,EAEnBL,EAAKM,SAAWzzB,GAChBmzB,EAAKO,SAAWzzB,GAChBkzB,EAAKQ,cAAgBp0B,GACrB4zB,EAAKS,cAAgB,KACrBT,EAAKU,cAAgB,KACrBV,EAAKW,mBAAqB,KAE1BX,EAAKY,UAAYrzB,GACjByyB,EAAKa,WAAY,EACjBb,EAAKc,YAAa,EAElBd,EAAKe,iBAAmB,IACxBf,EAAKgB,YA10QmB,IA20QxBhB,EAAKiB,WAAa,EAClBjB,EAAKkB,gBAAkB,IACvBlB,EAAKmB,YAAcltB,GACnB+rB,EAAKoB,aAAentB,GACpB+rB,EAAKqB,aAAeptB,GACpB+rB,EAAKsB,cAAe,EAEpBtB,EAAKuB,eAAiB,KACtBvB,EAAKwB,kBAAmB,EACxBxB,EAAKyB,aAAc,EAEnBzB,EAAK0B,WAAa,KAElB1B,EAAK2B,YAAa,EAElB3B,EAAK1+K,UAAY,KAEjB0+K,EAAK4B,eAAgB,EACrB5B,EAAK6B,oBAAsB,EAC3B7B,EAAK8B,mBAAqB,EAE1B9B,EAAK+B,WAAY,EAEjB/B,EAAKgC,iBAAkB,EACvBhC,EAAKiC,oBAAqB,EAE1BjC,EAAK/xG,SAAU,EAEf+xG,EAAKkC,YAAa,EAElBlC,EAAKzc,SAAW,CAAC,EAEjByc,EAAKriL,QAAU,EAEfqiL,EAAKmC,WAAa,EAAEnC,CAErB,CA2ZC,OA3ZAnyK,EAAAgyK,EAAA,EAAA/4K,IAAA,YAAAutB,IAED,WAEC,OAAO/vB,KAAK69K,UAEb,EAAC5uJ,IAED,SAAexwB,GAETuB,KAAK69K,WAAa,IAAMp/K,EAAQ,GAEpCuB,KAAK3G,UAIN2G,KAAK69K,WAAap/K,CAEnB,GAAC,CAAA+D,IAAA,UAAA/D,MAED,WAAyC,GAAC,CAAA+D,IAAA,iBAAA/D,MAE1C,WAA0E,GAAC,CAAA+D,IAAA,kBAAA/D,MAE3E,WAAiD,GAAC,CAAA+D,IAAA,wBAAA/D,MAElD,WAEC,OAAOuB,KAAK89K,gBAAgBr9K,UAE7B,GAAC,CAAA+B,IAAA,YAAA/D,MAED,SAAWsO,GAEV,QAAgB3C,IAAX2C,EAEL,IAAM,IAAMvK,KAAOuK,EAAS,CAE3B,IAAMgxK,EAAWhxK,EAAQvK,GAEzB,QAAkB4H,IAAb2zK,EAAL,CAOA,IAAMC,EAAeh+K,KAAMwC,QAEL4H,IAAjB4zK,EAOAA,GAAgBA,EAAaviB,QAEjCuiB,EAAa/uJ,IAAK8uJ,GAELC,GAAgBA,EAAavU,WAAiBsU,GAAYA,EAAStU,UAEhFuU,EAAatiB,KAAMqiB,GAInB/9K,KAAMwC,GAAQu7K,EAfdhqK,QAAQk/C,KAAM,SAAWjzD,KAAK4E,KAAO,MAASpC,EAAM,wCANrD,MAHCuR,QAAQk/C,KAAM,oBAAuBzwD,EAAM,4BA4B7C,CAED,GAAC,CAAAA,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMknI,OAA0BpzJ,IAATksB,GAAsC,kBAATA,EAE/CknI,IAEJlnI,EAAO,CACNipI,SAAU,CAAC,EACX9B,OAAQ,CAAC,IAKX,IAAM/5H,EAAO,CACZ+6E,SAAU,CACTplH,QAAS,IACTuL,KAAM,WACNgrF,UAAW,oBAqMb,SAASmpF,EAAkB3vK,GAE1B,IAAM2D,EAAS,GAEf,IAAM,IAAMvK,KAAO4G,EAAQ,CAE1B,IAAMs6B,EAAOt6B,EAAO5G,UACbkhC,EAAK+6E,SACZ1xG,EAAOjQ,KAAM4mC,EAEd,CAEA,OAAO32B,CAER,CAEA,GAhNA22B,EAAKm4E,KAAO77G,KAAK67G,KACjBn4E,EAAK9+B,KAAO5E,KAAK4E,KAEE,KAAd5E,KAAK7G,OAAcuqC,EAAKvqC,KAAO6G,KAAK7G,MAEpC6G,KAAKwnC,OAASxnC,KAAKwnC,MAAMi0H,UAAU/3H,EAAK8D,MAAQxnC,KAAKwnC,MAAM40H,eAExChyJ,IAAnBpK,KAAKk+K,YAA0Bx6I,EAAKw6I,UAAYl+K,KAAKk+K,gBAClC9zK,IAAnBpK,KAAKm+K,YAA0Bz6I,EAAKy6I,UAAYn+K,KAAKm+K,gBAEtC/zK,IAAfpK,KAAKo+K,QAAsB16I,EAAK06I,MAAQp+K,KAAKo+K,OAC7Cp+K,KAAKq+K,YAAcr+K,KAAKq+K,WAAW5iB,UAAU/3H,EAAK26I,WAAar+K,KAAKq+K,WAAWjiB,eACvDhyJ,IAAxBpK,KAAKs+K,iBAA+B56I,EAAK46I,eAAiBt+K,KAAKs+K,gBAC/Dt+K,KAAKu+K,UAAYv+K,KAAKu+K,SAAS9iB,UAAU/3H,EAAK66I,SAAWv+K,KAAKu+K,SAASniB,UACvEp8J,KAAKw+K,mBAAgD,IAA3Bx+K,KAAKw+K,oBAA0B96I,EAAK86I,kBAAoBx+K,KAAKw+K,mBAEvFx+K,KAAKy+K,UAAYz+K,KAAKy+K,SAAShjB,UAAU/3H,EAAK+6I,SAAWz+K,KAAKy+K,SAASriB,eAC5ChyJ,IAA3BpK,KAAK0+K,oBAAkCh7I,EAAKg7I,kBAAoB1+K,KAAK0+K,mBACrE1+K,KAAK2+K,eAAiB3+K,KAAK2+K,cAAcljB,UAAU/3H,EAAKi7I,cAAgB3+K,KAAK2+K,cAAcviB,eACxEhyJ,IAAnBpK,KAAK4+K,YAA0Bl7I,EAAKk7I,UAAY5+K,KAAK4+K,gBAClCx0K,IAAnBpK,KAAK6+K,YAA0Bn7I,EAAKm7I,UAAY7+K,KAAK6+K,gBACzBz0K,IAA5BpK,KAAK8+K,qBAAmCp7I,EAAKo7I,mBAAqB9+K,KAAK8+K,oBAEvE9+K,KAAK++K,cAAgB/+K,KAAK++K,aAAapf,YAE3Cj8H,EAAKq7I,aAAe/+K,KAAK++K,aAAavf,OAAQlpI,GAAOulF,MAIjD77G,KAAKg/K,uBAAyBh/K,KAAKg/K,sBAAsBrf,YAE7Dj8H,EAAKs7I,sBAAwBh/K,KAAKg/K,sBAAsBxf,OAAQlpI,GAAOulF,MAInE77G,KAAKi/K,oBAAsBj/K,KAAKi/K,mBAAmBtf,YAEvDj8H,EAAKu7I,mBAAqBj/K,KAAKi/K,mBAAmBzf,OAAQlpI,GAAOulF,KACjEn4E,EAAKw7I,qBAAuBl/K,KAAKk/K,qBAAqB33F,gBAI7Bn9E,IAArBpK,KAAK6gX,cAA4Bn9U,EAAKm9U,YAAc7gX,KAAK6gX,kBACjCz2W,IAAxBpK,KAAK8gX,iBAA+Bp9U,EAAKo9U,eAAiB9gX,KAAK8gX,qBAC5B12W,IAAnCpK,KAAK+gX,4BAA0Cr9U,EAAKq9U,0BAA4B/gX,KAAK+gX,2BAErF/gX,KAAKghX,gBAAkBhhX,KAAKghX,eAAerhN,YAE/Cj8H,EAAKs9U,eAAiBhhX,KAAKghX,eAAexhN,OAAQlpI,GAAOulF,MAIrD77G,KAAKihX,yBAA2BjhX,KAAKihX,wBAAwBthN,YAEjEj8H,EAAKu9U,wBAA0BjhX,KAAKihX,wBAAwBzhN,OAAQlpI,GAAOulF,MAIvE77G,KAAKzD,KAAOyD,KAAKzD,IAAIojK,YAAYj8H,EAAKnnC,IAAMyD,KAAKzD,IAAIijK,OAAQlpI,GAAOulF,MACpE77G,KAAKm/K,QAAUn/K,KAAKm/K,OAAOxf,YAAYj8H,EAAKy7I,OAASn/K,KAAKm/K,OAAO3f,OAAQlpI,GAAOulF,MAChF77G,KAAKo/K,UAAYp/K,KAAKo/K,SAASzf,YAAYj8H,EAAK07I,SAAWp/K,KAAKo/K,SAAS5f,OAAQlpI,GAAOulF,MAExF77G,KAAKq/K,UAAYr/K,KAAKq/K,SAAS1f,YAEnCj8H,EAAK27I,SAAWr/K,KAAKq/K,SAAS7f,OAAQlpI,GAAOulF,KAC7Cn4E,EAAK47I,kBAAoBt/K,KAAKs/K,mBAI1Bt/K,KAAKu/K,OAASv/K,KAAKu/K,MAAM5f,YAE7Bj8H,EAAK67I,MAAQv/K,KAAKu/K,MAAM/f,OAAQlpI,GAAOulF,KACvCn4E,EAAK87I,eAAiBx/K,KAAKw/K,gBAIvBx/K,KAAKy/K,SAAWz/K,KAAKy/K,QAAQ9f,YAEjCj8H,EAAK+7I,QAAUz/K,KAAKy/K,QAAQjgB,OAAQlpI,GAAOulF,KAC3Cn4E,EAAKg8I,UAAY1/K,KAAK0/K,WAIlB1/K,KAAK2/K,WAAa3/K,KAAK2/K,UAAUhgB,YAErCj8H,EAAKi8I,UAAY3/K,KAAK2/K,UAAUngB,OAAQlpI,GAAOulF,KAC/Cn4E,EAAKk8I,cAAgB5/K,KAAK4/K,cAC1Bl8I,EAAKm8I,YAAc7/K,KAAK6/K,YAAYt4F,WAIhCvnF,KAAK8/K,iBAAmB9/K,KAAK8/K,gBAAgBngB,YAEjDj8H,EAAKo8I,gBAAkB9/K,KAAK8/K,gBAAgBtgB,OAAQlpI,GAAOulF,KAC3Dn4E,EAAKq8I,kBAAoB//K,KAAK+/K,kBAC9Br8I,EAAKs8I,iBAAmBhgL,KAAKggL,kBAIzBhgL,KAAKigL,cAAgBjgL,KAAKigL,aAAatgB,YAAYj8H,EAAKu8I,aAAejgL,KAAKigL,aAAazgB,OAAQlpI,GAAOulF,MACxG77G,KAAKkgL,cAAgBlgL,KAAKkgL,aAAavgB,YAAYj8H,EAAKw8I,aAAelgL,KAAKkgL,aAAa1gB,OAAQlpI,GAAOulF,MAExG77G,KAAKmgL,aAAengL,KAAKmgL,YAAYxgB,YAAYj8H,EAAKy8I,YAAcngL,KAAKmgL,YAAY3gB,OAAQlpI,GAAOulF,MACpG77G,KAAKogL,aAAepgL,KAAKogL,YAAYzgB,YAAYj8H,EAAK08I,YAAcpgL,KAAKogL,YAAY5gB,OAAQlpI,GAAOulF,MACpG77G,KAAKqgL,sBAAwBrgL,KAAKqgL,qBAAqB1gB,YAAYj8H,EAAK28I,qBAAuBrgL,KAAKqgL,qBAAqB7gB,OAAQlpI,GAAOulF,MACxI77G,KAAKsgL,kBAAoBtgL,KAAKsgL,iBAAiB3gB,YAAYj8H,EAAK48I,iBAAmBtgL,KAAKsgL,iBAAiB9gB,OAAQlpI,GAAOulF,MAExH77G,KAAKugL,QAAUvgL,KAAKugL,OAAO5gB,YAE/Bj8H,EAAK68I,OAASvgL,KAAKugL,OAAO/gB,OAAQlpI,GAAOulF,UAEnBzxG,IAAjBpK,KAAKwgL,UAAwB98I,EAAK88I,QAAUxgL,KAAKwgL,eAIzBp2K,IAAzBpK,KAAKygL,kBAAgC/8I,EAAK+8I,gBAAkBzgL,KAAKygL,sBAC3Cr2K,IAAtBpK,KAAK0gL,eAA6Bh9I,EAAKg9I,aAAe1gL,KAAK0gL,mBAClCt2K,IAAzBpK,KAAK2gL,kBAAgCj9I,EAAKi9I,gBAAkB3gL,KAAK2gL,iBAEjE3gL,KAAK4gL,aAAe5gL,KAAK4gL,YAAYjhB,YAEzCj8H,EAAKk9I,YAAc5gL,KAAK4gL,YAAYphB,OAAQlpI,GAAOulF,WAIzBzxG,IAAtBpK,KAAK6gL,eAA6Bn9I,EAAKm9I,aAAe7gL,KAAK6gL,cAC3D7gL,KAAK8gL,iBAAmB9gL,KAAK8gL,gBAAgBnhB,YAAYj8H,EAAKo9I,gBAAkB9gL,KAAK8gL,gBAAgBthB,OAAQlpI,GAAOulF,WACjGzxG,IAAnBpK,KAAK+gL,YAA0Br9I,EAAKq9I,UAAY/gL,KAAK+gL,WACrD/gL,KAAKghL,cAAgBhhL,KAAKghL,aAAarhB,YAAYj8H,EAAKs9I,aAAehhL,KAAKghL,aAAaxhB,OAAQlpI,GAAOulF,WAC3EzxG,IAA7BpK,KAAKihL,qBAAqCjhL,KAAKihL,sBAAwB93H,MAAWzlB,EAAKu9I,oBAAsBjhL,KAAKihL,0BACxF72K,IAA1BpK,KAAKkhL,mBAAiCx9I,EAAKw9I,iBAAmBlhL,KAAKkhL,iBAAiB9kB,eAEtEhyJ,IAAdpK,KAAKulD,OAAqB7hB,EAAK6hB,KAAOvlD,KAAKulD,MACvB,OAApBvlD,KAAKo9K,aAAsB15I,EAAK05I,WAAap9K,KAAKo9K,iBACzBhzK,IAAzBpK,KAAKmhL,kBAAgCz9I,EAAKy9I,gBAAkBnhL,KAAKmhL,iBAEjEnhL,KAAK47K,WAAan0B,KAAiB/jH,EAAKk4I,SAAW57K,KAAK47K,UACxD57K,KAAK67K,OAAS10B,KAAYzjH,EAAKm4I,KAAO77K,KAAK67K,MAC3C77K,KAAK87K,eAAep4I,EAAKo4I,cAAe,GAExC97K,KAAKw0B,QAAU,IAAIkP,EAAKlP,QAAUx0B,KAAKw0B,UAClB,IAArBx0B,KAAK+7K,cAAuBr4I,EAAKq4I,YAAc/7K,KAAK+7K,aAEzDr4I,EAAK44I,UAAYt8K,KAAKs8K,UACtB54I,EAAK64I,UAAYv8K,KAAKu8K,UACtB74I,EAAK84I,WAAax8K,KAAKw8K,WACvB94I,EAAK25I,WAAar9K,KAAKq9K,WAEvB35I,EAAKs5I,aAAeh9K,KAAKg9K,aACzBt5I,EAAK+4I,iBAAmBz8K,KAAKy8K,iBAC7B/4I,EAAKg5I,YAAc18K,KAAK08K,YACxBh5I,EAAKi5I,WAAa38K,KAAK28K,WACvBj5I,EAAKk5I,gBAAkB58K,KAAK48K,gBAC5Bl5I,EAAKm5I,YAAc78K,KAAK68K,YACxBn5I,EAAKo5I,aAAe98K,KAAK88K,aACzBp5I,EAAKq5I,aAAe/8K,KAAK+8K,kBAGF3yK,IAAlBpK,KAAKs5J,UAA4C,IAAlBt5J,KAAKs5J,WAAiB51H,EAAK41H,SAAWt5J,KAAKs5J,WAEnD,IAAvBt5J,KAAKs9K,gBAAyB55I,EAAK45I,eAAgB,GACtB,IAA7Bt9K,KAAKu9K,sBAA4B75I,EAAK65I,oBAAsBv9K,KAAKu9K,qBACrC,IAA5Bv9K,KAAKw9K,qBAA2B95I,EAAK85I,mBAAqBx9K,KAAKw9K,yBAE5CpzK,IAAnBpK,KAAKohL,WAA8C,IAAnBphL,KAAKohL,YAAkB19I,EAAK09I,UAAYphL,KAAKohL,gBAC3Dh3K,IAAlBpK,KAAKqhL,WAAyB39I,EAAK29I,SAAWrhL,KAAKqhL,eAClCj3K,IAAjBpK,KAAKshL,UAAwB59I,EAAK49I,QAAUthL,KAAKshL,cAClCl3K,IAAfpK,KAAKq3I,QAAsB3zG,EAAK2zG,MAAQr3I,KAAKq3I,QAE1B,IAAnBr3I,KAAKy9K,YAAqB/5I,EAAK+5I,WAAY,GAE3Cz9K,KAAKuhL,UAAY,IAAI79I,EAAK69I,UAAYvhL,KAAKuhL,YAClB,IAAzBvhL,KAAK09K,kBAA2Bh6I,EAAKg6I,gBAAkB19K,KAAK09K,kBAChC,IAA5B19K,KAAK29K,qBAA8Bj6I,EAAKi6I,mBAAqB39K,KAAK29K,qBAE/C,IAAnB39K,KAAKwhL,YAAqB99I,EAAK89I,UAAYxhL,KAAKwhL,WAChDxhL,KAAKyhL,mBAAqB,IAAI/9I,EAAK+9I,mBAAqBzhL,KAAKyhL,oBACnC,UAA1BzhL,KAAK0hL,mBAA+Bh+I,EAAKg+I,iBAAmB1hL,KAAK0hL,kBACtC,UAA3B1hL,KAAK2hL,oBAAgCj+I,EAAKi+I,kBAAoB3hL,KAAK2hL,oBAE9C,IAArB3hL,KAAKi+K,cAAuBv6I,EAAKu6I,YAAcj+K,KAAKi+K,cAEnC,IAAjBj+K,KAAK2pE,UAAoBjmC,EAAKimC,SAAU,IAEpB,IAApB3pE,KAAK49K,aAAuBl6I,EAAKk6I,YAAa,IAEjC,IAAb59K,KAAK27K,MAAgBj4I,EAAKi4I,KAAM,GAEI,OAApC5tH,KAAKC,UAAWhuD,KAAKi/J,YAAsBv7H,EAAKu7H,SAAWj/J,KAAKi/J,UAoBhEzB,EAAe,CAEnB,IAAM+B,EAAWwZ,EAAkBziJ,EAAKipI,UAClC9B,EAASsb,EAAkBziJ,EAAKmnI,QAEjC8B,EAAS3nK,OAAS,IAAI8rC,EAAK67H,SAAWA,GACtC9B,EAAO7lK,OAAS,IAAI8rC,EAAK+5H,OAASA,EAExC,CAEA,OAAO/5H,CAER,GAAC,CAAAlhC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAELxB,KAAK7G,KAAOqI,EAAOrI,KAEnB6G,KAAK47K,SAAWp6K,EAAOo6K,SACvB57K,KAAK67K,KAAOr6K,EAAOq6K,KACnB77K,KAAK87K,aAAet6K,EAAOs6K,aAE3B97K,KAAKw0B,QAAUhzB,EAAOgzB,QACtBx0B,KAAK+7K,YAAcv6K,EAAOu6K,YAE1B/7K,KAAKg8K,SAAWx6K,EAAOw6K,SACvBh8K,KAAKi8K,SAAWz6K,EAAOy6K,SACvBj8K,KAAKk8K,cAAgB16K,EAAO06K,cAC5Bl8K,KAAKm8K,cAAgB36K,EAAO26K,cAC5Bn8K,KAAKo8K,cAAgB56K,EAAO46K,cAC5Bp8K,KAAKq8K,mBAAqB76K,EAAO66K,mBAEjCr8K,KAAKs8K,UAAY96K,EAAO86K,UACxBt8K,KAAKu8K,UAAY/6K,EAAO+6K,UACxBv8K,KAAKw8K,WAAah7K,EAAOg7K,WAEzBx8K,KAAKy8K,iBAAmBj7K,EAAOi7K,iBAC/Bz8K,KAAK08K,YAAcl7K,EAAOk7K,YAC1B18K,KAAK28K,WAAan7K,EAAOm7K,WACzB38K,KAAK48K,gBAAkBp7K,EAAOo7K,gBAC9B58K,KAAK68K,YAAcr7K,EAAOq7K,YAC1B78K,KAAK88K,aAAet7K,EAAOs7K,aAC3B98K,KAAK+8K,aAAev7K,EAAOu7K,aAC3B/8K,KAAKg9K,aAAex7K,EAAOw7K,aAE3B,IAAM4E,EAAYpgL,EAAOy7K,eACrB4E,EAAY,KAEhB,GAAmB,OAAdD,EAAqB,CAEzB,IAAM76K,EAAI66K,EAAUhqL,OACpBiqL,EAAY,IAAIllL,MAAOoK,GAEvB,IAAM,IAAIrK,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5BmlL,EAAWnlL,GAAMklL,EAAWllL,GAAIwE,OAIlC,CA4BA,OA1BAlB,KAAKi9K,eAAiB4E,EACtB7hL,KAAKk9K,iBAAmB17K,EAAO07K,iBAC/Bl9K,KAAKm9K,YAAc37K,EAAO27K,YAE1Bn9K,KAAKo9K,WAAa57K,EAAO47K,WAEzBp9K,KAAKq9K,WAAa77K,EAAO67K,WAEzBr9K,KAAKhD,UAAYwE,EAAOxE,UAExBgD,KAAKs9K,cAAgB97K,EAAO87K,cAC5Bt9K,KAAKu9K,oBAAsB/7K,EAAO+7K,oBAClCv9K,KAAKw9K,mBAAqBh8K,EAAOg8K,mBAEjCx9K,KAAKy9K,UAAYj8K,EAAOi8K,UAExBz9K,KAAKuhL,UAAY//K,EAAO+/K,UACxBvhL,KAAK09K,gBAAkBl8K,EAAOk8K,gBAC9B19K,KAAK29K,mBAAqBn8K,EAAOm8K,mBAEjC39K,KAAK2pE,QAAUnoE,EAAOmoE,QAEtB3pE,KAAK49K,WAAap8K,EAAOo8K,WAEzB59K,KAAKi/J,SAAWlxG,KAAK4yC,MAAO5yC,KAAKC,UAAWxsD,EAAOy9J,WAE5Cj/J,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAECuB,KAAKu+B,cAAe,CAAE35B,KAAM,WAE7B,GAAC,CAAApC,IAAA,cAAAysB,IAED,SAAiBxwB,IAED,IAAVA,GAAiBuB,KAAK3G,SAE5B,KAACkiL,CAAA,CAleY,CAASjqB,IAsejB0wB,GAAiB,SAAAC,GAAAjmK,EAAAgmK,EAAAC,GAAA,IAAAC,EAAAvnK,EAAAqnK,GAEtB,SAAAA,EAAaxJ,GAAa,IAAA2J,EAkCI,OAlCJ13K,EAAA,KAAAu3K,IAEzBG,EAAAD,EAAArlL,KAAA,OAEKwlL,qBAAsB,EAE3BF,EAAKv9K,KAAO,oBAEZu9K,EAAK36I,MAAQ,IAAI+zH,GAAO,UAExB4mB,EAAK5lL,IAAM,KAEX4lL,EAAK9C,SAAW,KAChB8C,EAAK7C,kBAAoB,EAEzB6C,EAAK5C,MAAQ,KACb4C,EAAK3C,eAAiB,EAEtB2C,EAAK/B,YAAc,KAEnB+B,EAAK/C,SAAW,KAEhB+C,EAAK5B,OAAS,KACd4B,EAAK3B,QAAUl3B,GACf64B,EAAKzB,aAAe,EACpByB,EAAKxB,gBAAkB,IAEvBwB,EAAKX,WAAY,EACjBW,EAAKV,mBAAqB,EAC1BU,EAAKT,iBAAmB,QACxBS,EAAKR,kBAAoB,QAEzBQ,EAAKxG,KAAM,EAEXwG,EAAKC,UAAW5J,GAAa2J,CAE9B,CAkCC,OAlCA54K,EAAAy4K,EAAA,EAAAx/K,IAAA,OAAA/D,MAED,SAAM+C,GA8BL,OA5BA0lI,GAAA5rH,EAAA0mK,EAAAplL,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OAExBxnC,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKq/K,SAAW79K,EAAO69K,SACvBr/K,KAAKs/K,kBAAoB99K,EAAO89K,kBAEhCt/K,KAAKu/K,MAAQ/9K,EAAO+9K,MACpBv/K,KAAKw/K,eAAiBh+K,EAAOg+K,eAE7Bx/K,KAAKogL,YAAc5+K,EAAO4+K,YAE1BpgL,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAKugL,OAAS/+K,EAAO++K,OACrBvgL,KAAKwgL,QAAUh/K,EAAOg/K,QACtBxgL,KAAK0gL,aAAel/K,EAAOk/K,aAC3B1gL,KAAK2gL,gBAAkBn/K,EAAOm/K,gBAE9B3gL,KAAKwhL,UAAYhgL,EAAOggL,UACxBxhL,KAAKyhL,mBAAqBjgL,EAAOigL,mBACjCzhL,KAAK0hL,iBAAmBlgL,EAAOkgL,iBAC/B1hL,KAAK2hL,kBAAoBngL,EAAOmgL,kBAEhC3hL,KAAK27K,IAAMn6K,EAAOm6K,IAEX37K,IAER,KAACgiL,CAAA,CAxEqB,CAASzG,IA4E1B+G,GAA0B,IAAIxb,GAC9Byb,GAA2B,IAAIptB,GAE/BqtB,GAAe,WAEpB,SAAAA,EAAaz/K,EAAO0/K,EAAU7lB,GAE7B,GAF0CnyJ,EAAA,KAAA+3K,GAErC7lL,MAAM0E,QAAS0B,GAEnB,MAAM,IAAIyH,UAAW,yDAItBxK,KAAKmjL,mBAAoB,EAEzBnjL,KAAK7G,KAAO,GAEZ6G,KAAK+C,MAAQA,EACb/C,KAAKyiL,SAAWA,EAChBziL,KAAK29E,WAAkBvzE,IAAVrH,EAAsBA,EAAMnL,OAAS6qL,EAAW,EAC7DziL,KAAK48J,YAA4B,IAAfA,EAElB58J,KAAK0iL,MAAQhyB,GACb1wJ,KAAK2iL,YAAc,CAAE54I,OAAQ,EAAG4zC,OAAS,GAEzC39E,KAAK3G,QAAU,CAEhB,CAiVC,OAjVAkQ,EAAAi5K,EAAA,EAAAhgL,IAAA,mBAAA/D,MAED,WAAoB,GAAC,CAAA+D,IAAA,cAAAysB,IAErB,SAAiBxwB,IAED,IAAVA,GAAiBuB,KAAK3G,SAE5B,GAAC,CAAAmJ,IAAA,WAAA/D,MAED,SAAUA,GAIT,OAFAuB,KAAK0iL,MAAQjkL,EAENuB,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAUL,OARAxB,KAAK7G,KAAOqI,EAAOrI,KACnB6G,KAAK+C,MAAQ,IAAIvB,EAAOuB,MAAMoX,YAAa3Y,EAAOuB,OAClD/C,KAAKyiL,SAAWjhL,EAAOihL,SACvBziL,KAAK29E,MAAQn8E,EAAOm8E,MACpB39E,KAAK48J,WAAap7J,EAAOo7J,WAEzB58J,KAAK0iL,MAAQlhL,EAAOkhL,MAEb1iL,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQmkL,EAAQ1sB,EAAW2sB,GAE1BD,GAAU5iL,KAAKyiL,SACfI,GAAU3sB,EAAUusB,SAEpB,IAAM,IAAI/lL,EAAI,EAAGmK,EAAI7G,KAAKyiL,SAAU/lL,EAAImK,EAAGnK,IAE1CsD,KAAK+C,MAAO6/K,EAASlmL,GAAMw5J,EAAUnzJ,MAAO8/K,EAASnmL,GAItD,OAAOsD,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsE,GAIV,OAFA/C,KAAK+C,MAAMksB,IAAKlsB,GAET/C,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcqI,GAEb,GAAuB,IAAlB9G,KAAKyiL,SAET,IAAM,IAAI/lL,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvC6lL,GAAWxX,oBAAqB/qK,KAAMtD,GACtC6lL,GAAW7iB,aAAc54J,GAEzB9G,KAAK+iL,MAAOrmL,EAAG6lL,GAAWrmL,EAAGqmL,GAAWl7K,QAInC,GAAuB,IAAlBrH,KAAKyiL,SAEhB,IAAM,IAAI/lL,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvC4lL,GAAUvX,oBAAqB/qK,KAAMtD,GACrC4lL,GAAU5iB,aAAc54J,GAExB9G,KAAKgjL,OAAQtmL,EAAG4lL,GAAUpmL,EAAGomL,GAAUj7K,EAAGi7K,GAAUh7K,GAMtD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvC4lL,GAAUvX,oBAAqB/qK,KAAMtD,GAErC4lL,GAAUza,aAAc/gK,GAExB9G,KAAKgjL,OAAQtmL,EAAG4lL,GAAUpmL,EAAGomL,GAAUj7K,EAAGi7K,GAAUh7K,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBqI,GAElB,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvC4lL,GAAUvX,oBAAqB/qK,KAAMtD,GAErC4lL,GAAUW,kBAAmBn8K,GAE7B9G,KAAKgjL,OAAQtmL,EAAG4lL,GAAUpmL,EAAGomL,GAAUj7K,EAAGi7K,GAAUh7K,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBqI,GAEnB,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvC4lL,GAAUvX,oBAAqB/qK,KAAMtD,GAErC4lL,GAAU5R,mBAAoB5pK,GAE9B9G,KAAKgjL,OAAQtmL,EAAG4lL,GAAUpmL,EAAGomL,GAAUj7K,EAAGi7K,GAAUh7K,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAKA,GAAoB,IAAbsrC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAKpB,OAFAD,KAAK+C,MAAMksB,IAAKxwB,EAAOsrC,GAEhB/pC,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAI1S,EAAI8D,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,UAIjC,OAFKziL,KAAK48J,aAAa1gK,EAAIg5J,GAAah5J,EAAG8D,KAAK+C,QAEzC7G,CAER,GAAC,CAAAsG,IAAA,OAAA/D,MAED,SAAMmQ,EAAO1S,GAMZ,OAJK8D,KAAK48J,aAAa1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,QAE9C/C,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,UAAavmL,EAE/B8D,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAIvH,EAAIrH,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,GAI5C,OAFKziL,KAAK48J,aAAav1J,EAAI6tJ,GAAa7tJ,EAAGrH,KAAK+C,QAEzCsE,CAER,GAAC,CAAA7E,IAAA,OAAA/D,MAED,SAAMmQ,EAAOvH,GAMZ,OAJKrH,KAAK48J,aAAav1J,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,QAE9C/C,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,GAAMp7K,EAEnCrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAItH,EAAItH,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,GAI5C,OAFKziL,KAAK48J,aAAat1J,EAAI4tJ,GAAa5tJ,EAAGtH,KAAK+C,QAEzCuE,CAER,GAAC,CAAA9E,IAAA,OAAA/D,MAED,SAAMmQ,EAAOtH,GAMZ,OAJKtH,KAAK48J,aAAat1J,EAAIu5G,GAAWv5G,EAAGtH,KAAK+C,QAE9C/C,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,GAAMn7K,EAEnCtH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAIxH,EAAIpH,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,GAI5C,OAFKziL,KAAK48J,aAAax1J,EAAI8tJ,GAAa9tJ,EAAGpH,KAAK+C,QAEzCqE,CAER,GAAC,CAAA5E,IAAA,OAAA/D,MAED,SAAMmQ,EAAOxH,GAMZ,OAJKpH,KAAK48J,aAAax1J,EAAIy5G,GAAWz5G,EAAGpH,KAAK+C,QAE9C/C,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,GAAMr7K,EAEnCpH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOmQ,EAAO1S,EAAGmL,GAchB,OAZAuH,GAAS5O,KAAKyiL,SAETziL,KAAK48J,aAET1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,OACvBsE,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,QAIxB/C,KAAK+C,MAAO6L,EAAQ,GAAM1S,EAC1B8D,KAAK+C,MAAO6L,EAAQ,GAAMvH,EAEnBrH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQmQ,EAAO1S,EAAGmL,EAAGC,GAgBpB,OAdAsH,GAAS5O,KAAKyiL,SAETziL,KAAK48J,aAET1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,OACvBsE,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,OACvBuE,EAAIu5G,GAAWv5G,EAAGtH,KAAK+C,QAIxB/C,KAAK+C,MAAO6L,EAAQ,GAAM1S,EAC1B8D,KAAK+C,MAAO6L,EAAQ,GAAMvH,EAC1BrH,KAAK+C,MAAO6L,EAAQ,GAAMtH,EAEnBtH,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASmQ,EAAO1S,EAAGmL,EAAGC,EAAGF,GAkBxB,OAhBAwH,GAAS5O,KAAKyiL,SAETziL,KAAK48J,aAET1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,OACvBsE,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,OACvBuE,EAAIu5G,GAAWv5G,EAAGtH,KAAK+C,OACvBqE,EAAIy5G,GAAWz5G,EAAGpH,KAAK+C,QAIxB/C,KAAK+C,MAAO6L,EAAQ,GAAM1S,EAC1B8D,KAAK+C,MAAO6L,EAAQ,GAAMvH,EAC1BrH,KAAK+C,MAAO6L,EAAQ,GAAMtH,EAC1BtH,KAAK+C,MAAO6L,EAAQ,GAAMxH,EAEnBpH,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU05C,GAIT,OAFAn4C,KAAKkjL,iBAAmB/qI,EAEjBn4C,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAK+C,MAAO/C,KAAKyiL,UAAW/mB,KAAM17J,KAEhE,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAO,CACZ++I,SAAUziL,KAAKyiL,SACf79K,KAAM5E,KAAK+C,MAAMoX,YAAYhhB,KAC7B4J,MAAOpG,MAAM0lB,KAAMriB,KAAK+C,OACxB65J,WAAY58J,KAAK48J,YAOlB,MAJmB,KAAd58J,KAAK7G,OAAcuqC,EAAKvqC,KAAO6G,KAAK7G,MACpC6G,KAAK0iL,QAAUhyB,KAAkBhtH,EAAKg/I,MAAQ1iL,KAAK0iL,OACvB,IAA5B1iL,KAAK2iL,YAAY54I,SAA6C,IAA7B/pC,KAAK2iL,YAAYhlG,QAAgBj6C,EAAKi/I,YAAc3iL,KAAK2iL,aAExFj/I,CAER,GAEA,CAAAlhC,IAAA,kBAAA/D,MAEA,WAECsV,QAAQwN,MAAO,gEAEhB,GAAC,CAAA/e,IAAA,oBAAA/D,MAED,WAECsV,QAAQwN,MAAO,kEAEhB,GAAC,CAAA/e,IAAA,oBAAA/D,MAED,WAECsV,QAAQwN,MAAO,kEAEhB,GAAC,CAAA/e,IAAA,oBAAA/D,MAED,WAECsV,QAAQwN,MAAO,kEAEhB,KAACihK,CAAA,CAzWmB,GAuZfwB,GAAqB,SAAAC,GAAAjoK,EAAAgoK,EAAAC,GAAA,IAAAC,EAAAvpK,EAAAqpK,GAE1B,SAAAA,EAAajhL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAAu5K,GAAAE,EAAArnL,KAAA,KAEnC,IAAIi4J,YAAa/xJ,GAAS0/K,EAAU7lB,EAE5C,CAAC,OAAArzJ,EAAAy6K,EAAA,CANyB,CAASxB,IAoB9B8B,GAAqB,SAAAC,GAAAvoK,EAAAsoK,EAAAC,GAAA,IAAAC,EAAA7pK,EAAA2pK,GAE1B,SAAAA,EAAavhL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAA65K,GAAAE,EAAA3nL,KAAA,KAEnC,IAAI0qG,YAAaxkG,GAAS0/K,EAAU7lB,EAE5C,CAAC,OAAArzJ,EAAA+6K,EAAA,CANyB,CAAS9B,IAuB9BqC,GAAsB,SAAAC,GAAA9oK,EAAA6oK,EAAAC,GAAA,IAAAC,EAAApqK,EAAAkqK,GAE3B,SAAAA,EAAa9hL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAAo6K,GAAAE,EAAAloL,KAAA,KAEnC,IAAIg4J,aAAc9xJ,GAAS0/K,EAAU7lB,EAE7C,CAAC,OAAArzJ,EAAAs7K,EAAA,CAN0B,CAASrC,IAoBjC2C,GAAQ,EAENC,GAAoB,IAAIzU,GACxB0U,GAAqB,IAAI7P,GACzB8P,GAAwB,IAAIxe,GAC5Bye,GAAuB,IAAI7b,GAC3B8b,GAAiC,IAAI9b,GACrC+b,GAA0B,IAAI3e,GAE9B4e,GAAc,SAAAC,GAAA3pK,EAAA0pK,EAAAC,GAAA,IAAAC,EAAAjrK,EAAA+qK,GAEnB,SAAAA,IAAc,IAAA2F,EA0BM,OA1BN5gL,EAAA,KAAAi7K,IAEb2F,EAAAzF,EAAA/oL,KAAA,OAEKosL,kBAAmB,EAExB1qL,OAAOC,eAAcgd,EAAA6vK,GAAQ,KAAM,CAAE5sL,MAAO0mL,OAE5CkG,EAAKxvE,KAAOg2C,KAEZw5B,EAAKlyL,KAAO,GACZkyL,EAAKzmL,KAAO,iBAEZymL,EAAKz8K,MAAQ,KACby8K,EAAKn5G,WAAa,CAAC,EAEnBm5G,EAAKvF,gBAAkB,CAAC,EACxBuF,EAAKtF,sBAAuB,EAE5BsF,EAAKrF,OAAS,GAEdqF,EAAKrgB,YAAc,KACnBqgB,EAAKpF,eAAiB,KAEtBoF,EAAKnF,UAAY,CAAEp7I,MAAO,EAAG6yC,MAAOx0B,KAEpCkiI,EAAKpsB,SAAW,CAAC,EAAEosB,CAEpB,CA4gCC,OA5gCA9hL,EAAAm8K,EAAA,EAAAljL,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAK4O,KAEb,GAAC,CAAApM,IAAA,WAAA/D,MAED,SAAUmQ,GAYT,OAVKjS,MAAM0E,QAASuN,GAEnB5O,KAAK4O,MAAQ,IAAMgrJ,GAAkBhrJ,GAAU01K,GAAwBN,IAAyBp1K,EAAO,GAIvG5O,KAAK4O,MAAQA,EAIP5O,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAActF,GAEb,OAAO6G,KAAKkyE,WAAY/4E,EAEzB,GAAC,CAAAqJ,IAAA,eAAA/D,MAED,SAActF,EAAM+8J,GAInB,OAFAl2J,KAAKkyE,WAAY/4E,GAAS+8J,EAEnBl2J,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBtF,GAIhB,cAFO6G,KAAKkyE,WAAY/4E,GAEjB6G,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAActF,GAEb,YAAmCiR,IAA5BpK,KAAKkyE,WAAY/4E,EAEzB,GAAC,CAAAqJ,IAAA,WAAA/D,MAED,SAAUqsC,EAAO6yC,GAA2B,IAApBwoG,EAAalmL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEvCD,KAAKgmL,OAAOlpL,KAAM,CAEjBguC,MAAOA,EACP6yC,MAAOA,EACPwoG,cAAeA,GAIjB,GAAC,CAAA3jL,IAAA,cAAA/D,MAED,WAECuB,KAAKgmL,OAAS,EAEf,GAAC,CAAAxjL,IAAA,eAAA/D,MAED,SAAcqsC,EAAO6yC,GAEpB39E,KAAKkmL,UAAUp7I,MAAQA,EACvB9qC,KAAKkmL,UAAUvoG,MAAQA,CAExB,GAAC,CAAAn7E,IAAA,eAAA/D,MAED,SAAci7J,GAEb,IAAMn6F,EAAWv/D,KAAKkyE,WAAW3S,cAEfn1D,IAAbm1D,IAEJA,EAASsoG,aAAcnO,GAEvBn6F,EAAS+/F,aAAc,GAIxB,IAAMyJ,EAAS/oK,KAAKkyE,WAAW62F,OAE/B,QAAgB3+J,IAAX2+J,EAAuB,CAE3B,IAAM8M,GAAe,IAAIrf,IAAU4vB,gBAAiB1sB,GAEpDqP,EAAOka,kBAAmBpN,GAE1B9M,EAAOzJ,aAAc,CAEtB,CAEA,IAAM+mB,EAAUrmL,KAAKkyE,WAAWm0G,QAsBhC,YApBiBj8K,IAAZi8K,IAEJA,EAAQ3V,mBAAoBhX,GAE5B2sB,EAAQ/mB,aAAc,GAIG,OAArBt/J,KAAKgrK,aAEThrK,KAAKirK,qBAIuB,OAAxBjrK,KAAKimL,gBAETjmL,KAAKsmL,wBAICtmL,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBwI,GAMhB,OAJAm+K,GAAI/Q,2BAA4BptK,GAEhCjH,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASm3J,GAQR,OAJAwvB,GAAImB,cAAe3wB,GAEnB51J,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASm3J,GAQR,OAJAwvB,GAAIoB,cAAe5wB,GAEnB51J,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASm3J,GAQR,OAJAwvB,GAAIqB,cAAe7wB,GAEnB51J,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWvC,EAAGmL,EAAGC,GAQhB,OAJA89K,GAAIsB,gBAAiBxqL,EAAGmL,EAAGC,GAE3BtH,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOvC,EAAGmL,EAAGC,GAQZ,OAJA89K,GAAIuB,UAAWzqL,EAAGmL,EAAGC,GAErBtH,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQksK,GAQP,OANA0a,GAAKtO,OAAQpM,GAEb0a,GAAKhP,eAELr2K,KAAK6nK,aAAcwd,GAAK3rB,QAEjB15J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAQC,OANAuB,KAAKirK,qBAELjrK,KAAKgrK,YAAYS,UAAW6Z,IAAUsB,SAEtC5mL,KAAK6mL,UAAWvB,GAAQppL,EAAGopL,GAAQj+K,EAAGi+K,GAAQh+K,GAEvCtH,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAewrK,GAId,IAFA,IAAM1qG,EAAW,GAEP7iE,EAAI,EAAGmK,EAAIojK,EAAOryK,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAMguK,EAAQT,EAAQvtK,GACtB6iE,EAASziE,KAAM4tK,EAAMxuK,EAAGwuK,EAAMrjK,EAAGqjK,EAAMpjK,GAAK,EAE7C,CAIA,OAFAtH,KAAK8S,aAAc,WAAY,IAAI+xK,GAAwBtlH,EAAU,IAE9Dv/D,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,WAE2B,OAArBuB,KAAKgrK,cAEThrK,KAAKgrK,YAAc,IAAItB,IAIxB,IAAMnqG,EAAWv/D,KAAKkyE,WAAW3S,SAC3BunH,EAA0B9mL,KAAK8lL,gBAAgBvmH,SAErD,GAAKA,GAAYA,EAASwnH,oBASzB,OAPAhzK,QAAQwN,MAAO,kJAAmJvhB,WAElKA,KAAKgrK,YAAY/7I,IAChB,IAAI63I,IAAW39G,KAAYA,KAAYA,KACvC,IAAI29G,GAAW39G,IAAYA,IAAYA,MAOzC,QAAkB/+C,IAAbm1D,GAMJ,GAJAv/D,KAAKgrK,YAAYgc,uBAAwBznH,GAIpCunH,EAEJ,IAAM,IAAIpqL,EAAI,EAAGowD,EAAKg6H,EAAwBlvL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEpE,IAAMuqL,EAAiBH,EAAyBpqL,GAChD6oL,GAAOyB,uBAAwBC,GAE1BjnL,KAAK+lL,sBAETN,GAAUpwB,WAAYr1J,KAAKgrK,YAAY9/H,IAAKq6I,GAAOr6I,KACnDlrC,KAAKgrK,YAAYb,cAAesb,IAEhCA,GAAUpwB,WAAYr1J,KAAKgrK,YAAY9tK,IAAKqoL,GAAOroL,KACnD8C,KAAKgrK,YAAYb,cAAesb,MAIhCzlL,KAAKgrK,YAAYb,cAAeob,GAAOr6I,KACvClrC,KAAKgrK,YAAYb,cAAeob,GAAOroL,KAIzC,OAMD8C,KAAKgrK,YAAYd,aAIb5yJ,MAAOtX,KAAKgrK,YAAY9/H,IAAIhvC,IAAOob,MAAOtX,KAAKgrK,YAAY9/H,IAAI7jC,IAAOiQ,MAAOtX,KAAKgrK,YAAY9/H,IAAI5jC,KAEtGyM,QAAQwN,MAAO,sIAAuIvhB,KAIxJ,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,WAE8B,OAAxBuB,KAAKimL,iBAETjmL,KAAKimL,eAAiB,IAAI/Y,IAI3B,IAAM3tG,EAAWv/D,KAAKkyE,WAAW3S,SAC3BunH,EAA0B9mL,KAAK8lL,gBAAgBvmH,SAErD,GAAKA,GAAYA,EAASwnH,oBAMzB,OAJAhzK,QAAQwN,MAAO,wJAAyJvhB,WAExKA,KAAKimL,eAAeh3J,IAAK,IAAI63I,GAAW39G,KAMzC,GAAKoW,EAAW,CAIf,IAAM82F,EAASr2J,KAAKimL,eAAe5vB,OAMnC,GAJAkvB,GAAOyB,uBAAwBznH,GAI1BunH,EAEJ,IAAM,IAAIpqL,EAAI,EAAGowD,EAAKg6H,EAAwBlvL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEpE,IAAMuqL,EAAiBH,EAAyBpqL,GAChD8oL,GAAiBwB,uBAAwBC,GAEpCjnL,KAAK+lL,sBAETN,GAAUpwB,WAAYkwB,GAAOr6I,IAAKs6I,GAAiBt6I,KACnDq6I,GAAOpb,cAAesb,IAEtBA,GAAUpwB,WAAYkwB,GAAOroL,IAAKsoL,GAAiBtoL,KACnDqoL,GAAOpb,cAAesb,MAItBF,GAAOpb,cAAeqb,GAAiBt6I,KACvCq6I,GAAOpb,cAAeqb,GAAiBtoL,KAIzC,CAIDqoL,GAAO9Z,UAAWpV,GAOlB,IAFA,IAAI+W,EAAc,EAER1wK,EAAI,EAAGowD,EAAKyS,EAASoe,MAAOjhF,EAAIowD,EAAIpwD,IAE7C+oL,GAAU1a,oBAAqBxrG,EAAU7iE,GAEzC0wK,EAAcnwK,KAAKC,IAAKkwK,EAAa/W,EAAOP,kBAAmB2vB,KAMhE,GAAKqB,EAEJ,IAAM,IAAIpqL,EAAI,EAAGowD,EAAKg6H,EAAwBlvL,OAAQ8E,EAAIowD,EAAIpwD,IAK7D,IAHA,IAAMuqL,EAAiBH,EAAyBpqL,GAC1CqpL,EAAuB/lL,KAAK+lL,qBAExBl2K,EAAI,EAAGq3K,EAAKD,EAAetpG,MAAO9tE,EAAIq3K,EAAIr3K,IAEnD41K,GAAU1a,oBAAqBkc,EAAgBp3K,GAE1Ck2K,IAEJT,GAAQva,oBAAqBxrG,EAAU1vD,GACvC41K,GAAUr5J,IAAKk5J,KAIhBlY,EAAcnwK,KAAKC,IAAKkwK,EAAa/W,EAAOP,kBAAmB2vB,KAQlEzlL,KAAKimL,eAAe/c,OAASjsK,KAAK04J,KAAMyX,GAEnC91J,MAAOtX,KAAKimL,eAAe/c,SAE/Bn1J,QAAQwN,MAAO,+HAAgIvhB,KAIjJ,CAED,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,WAEC,IAAMmQ,EAAQ5O,KAAK4O,MACbsjE,EAAalyE,KAAKkyE,WAKxB,GAAe,OAAVtjE,QACqBxE,IAAxB8nE,EAAW3S,eACWn1D,IAAtB8nE,EAAW62F,aACO3+J,IAAlB8nE,EAAWutF,GAHb,CAUA,IAAM0nB,EAAUv4K,EAAM7L,MAChBqkL,EAAYl1G,EAAW3S,SAASx8D,MAChCskL,EAAUn1G,EAAW62F,OAAOhmK,MAC5BukL,EAAMp1G,EAAWutF,GAAG18J,MAEpBwkL,EAAYH,EAAUxvL,OAAS,GAEG,IAAnCoI,KAAK8pG,aAAc,YAEvB9pG,KAAK8S,aAAc,UAAW,IAAI0vK,GAAiB,IAAI3tB,aAAc,EAAI0yB,GAAa,IAQvF,IAJA,IAAMC,EAAWxnL,KAAK4pE,aAAc,WAAY7mE,MAE1C0kL,EAAO,GAAIC,EAAO,GAEdhrL,EAAI,EAAGA,EAAI6qL,EAAW7qL,IAE/B+qL,EAAM/qL,GAAM,IAAIoqK,GAChB4gB,EAAMhrL,GAAM,IAAIoqK,GAIjB,IAAM6gB,EAAK,IAAI7gB,GACd8gB,EAAK,IAAI9gB,GACT+gB,EAAK,IAAI/gB,GAETghB,EAAM,IAAI3yB,GACV4yB,EAAM,IAAI5yB,GACV6yB,EAAM,IAAI7yB,GAEV8yB,EAAO,IAAInhB,GACXohB,EAAO,IAAIphB,GAqCRkf,EAAShmL,KAAKgmL,OAEK,IAAlBA,EAAOpuL,SAEXouL,EAAS,CAAE,CACVl7I,MAAO,EACP6yC,MAAOwpG,EAAQvvL,UAKjB,IAAM,IAAI8E,EAAI,EAAGowD,EAAKk5H,EAAOpuL,OAAQ8E,EAAIowD,IAAOpwD,EAO/C,IALA,IAAM+qG,EAAQu+E,EAAQtpL,GAEhBouC,EAAQ28D,EAAM38D,MAGVj7B,EAAIi7B,EAAOo8I,EAAKp8I,EAFZ28D,EAAM9pB,MAEqB9tE,EAAIq3K,EAAIr3K,GAAK,EAErDs4K,EACChB,EAASt3K,EAAI,GACbs3K,EAASt3K,EAAI,GACbs3K,EAASt3K,EAAI,IAmChB,IA5BA,IAAMipJ,EAAM,IAAIgO,GAAWshB,EAAO,IAAIthB,GAChC//J,EAAI,IAAI+/J,GAAWuhB,EAAK,IAAIvhB,GA2BxBpqK,EAAI,EAAGowD,EAAKk5H,EAAOpuL,OAAQ8E,EAAIowD,IAAOpwD,EAO/C,IALA,IAAM+qG,EAAQu+E,EAAQtpL,GAEhBouC,EAAQ28D,EAAM38D,MAGVj7B,EAAIi7B,EAAOo8I,EAAKp8I,EAFZ28D,EAAM9pB,MAEqB9tE,EAAIq3K,EAAIr3K,GAAK,EAErDy4K,EAAcnB,EAASt3K,EAAI,IAC3By4K,EAAcnB,EAASt3K,EAAI,IAC3By4K,EAAcnB,EAASt3K,EAAI,GA7I7B,MAHCkE,QAAQwN,MAAO,gHAwChB,SAAS4mK,EAAgBnsL,EAAGuK,EAAGtK,GAE9B0rL,EAAGhuB,UAAWytB,EAAe,EAAJprL,GACzB4rL,EAAGjuB,UAAWytB,EAAe,EAAJ7gL,GACzBshL,EAAGluB,UAAWytB,EAAe,EAAJnrL,GAEzB6rL,EAAInuB,UAAW2tB,EAAS,EAAJtrL,GACpB+rL,EAAIpuB,UAAW2tB,EAAS,EAAJ/gL,GACpByhL,EAAIruB,UAAW2tB,EAAS,EAAJrrL,GAEpB2rL,EAAG9e,IAAK6e,GACRE,EAAG/e,IAAK6e,GAERI,EAAIjf,IAAKgf,GACTE,EAAIlf,IAAKgf,GAET,IAAM5gL,EAAI,GAAQ6gL,EAAI7rL,EAAI8rL,EAAI3gL,EAAI2gL,EAAI9rL,EAAI6rL,EAAI1gL,GAIvCkhL,SAAUrhL,KAEjB+gL,EAAKvsB,KAAMksB,GAAKryB,eAAgByyB,EAAI3gL,GAAIqzK,gBAAiBmN,GAAME,EAAI1gL,GAAIkuJ,eAAgBruJ,GACvFghL,EAAKxsB,KAAMmsB,GAAKtyB,eAAgBwyB,EAAI7rL,GAAIw+K,gBAAiBkN,GAAMI,EAAI9rL,GAAIq5J,eAAgBruJ,GAEvFugL,EAAMzrL,GAAIowB,IAAK67J,GACfR,EAAMlhL,GAAI6lB,IAAK67J,GACfR,EAAMxrL,GAAImwB,IAAK67J,GAEfP,EAAM1rL,GAAIowB,IAAK87J,GACfR,EAAMnhL,GAAI6lB,IAAK87J,GACfR,EAAMzrL,GAAImwB,IAAK87J,GAEhB,CAmCA,SAASI,EAAcnhL,GAEtBJ,EAAE4yJ,UAAW0tB,EAAa,EAAJlgL,GACtBkhL,EAAG3sB,KAAM30J,GAET,IAAMzP,EAAImwL,EAAMtgL,GAIhB2xJ,EAAI4C,KAAMpkK,GACVwhK,EAAIgQ,IAAK/hK,EAAEwuJ,eAAgBxuJ,EAAEk9J,IAAK3sK,KAAQupH,YAI1CunE,EAAKlgB,aAAcmgB,EAAI/wL,GACvB,IACM8P,EADOghL,EAAKnkB,IAAKyjB,EAAMvgL,IACV,GAAU,EAAM,EAEnCqgL,EAAc,EAAJrgL,GAAU2xJ,EAAI58J,EACxBsrL,EAAc,EAAJrgL,EAAQ,GAAM2xJ,EAAIzxJ,EAC5BmgL,EAAc,EAAJrgL,EAAQ,GAAM2xJ,EAAIxxJ,EAC5BkgL,EAAc,EAAJrgL,EAAQ,GAAMC,CAEzB,CAmBD,GAAC,CAAA5E,IAAA,uBAAA/D,MAED,WAEC,IAAMmQ,EAAQ5O,KAAK4O,MACb45K,EAAoBxoL,KAAK4pE,aAAc,YAE7C,QAA2Bx/D,IAAtBo+K,EAAkC,CAEtC,IAAIC,EAAkBzoL,KAAK4pE,aAAc,UAEzC,QAAyBx/D,IAApBq+K,EAEJA,EAAkB,IAAIjG,GAAiB,IAAI3tB,aAAwC,EAA1B2zB,EAAkB7qG,OAAa,GACxF39E,KAAK8S,aAAc,SAAU21K,QAM7B,IAAM,IAAI/rL,EAAI,EAAGowD,EAAK27H,EAAgB9qG,MAAOjhF,EAAIowD,EAAIpwD,IAEpD+rL,EAAgBzF,OAAQtmL,EAAG,EAAG,EAAG,GAMnC,IAAMgsL,EAAK,IAAI5hB,GAAW6hB,EAAK,IAAI7hB,GAAW8hB,EAAK,IAAI9hB,GACjD+hB,EAAK,IAAI/hB,GAAWgiB,EAAK,IAAIhiB,GAAWiiB,EAAK,IAAIjiB,GACjD90J,EAAK,IAAI80J,GAAW71I,EAAK,IAAI61I,GAInC,GAAKl4J,EAEJ,IAAM,IAAIlS,EAAI,EAAGowD,EAAKl+C,EAAM+uE,MAAOjhF,EAAIowD,EAAIpwD,GAAK,EAAI,CAEnD,IAAMirL,EAAK/4K,EAAMunJ,KAAMz5J,EAAI,GACrBkrL,EAAKh5K,EAAMunJ,KAAMz5J,EAAI,GACrBmrL,EAAKj5K,EAAMunJ,KAAMz5J,EAAI,GAE3BgsL,EAAG3d,oBAAqByd,EAAmBb,GAC3CgB,EAAG5d,oBAAqByd,EAAmBZ,GAC3CgB,EAAG7d,oBAAqByd,EAAmBX,GAE3C71K,EAAGsjJ,WAAYszB,EAAID,GACnB13J,EAAGqkI,WAAYozB,EAAIC,GACnB32K,EAAGw+J,MAAOv/I,GAEV43J,EAAG9d,oBAAqB0d,EAAiBd,GACzCmB,EAAG/d,oBAAqB0d,EAAiBb,GACzCmB,EAAGhe,oBAAqB0d,EAAiBZ,GAEzCgB,EAAGz8J,IAAKpa,GACR82K,EAAG18J,IAAKpa,GACR+2K,EAAG38J,IAAKpa,GAERy2K,EAAgBzF,OAAQ2E,EAAIkB,EAAG3sL,EAAG2sL,EAAGxhL,EAAGwhL,EAAGvhL,GAC3CmhL,EAAgBzF,OAAQ4E,EAAIkB,EAAG5sL,EAAG4sL,EAAGzhL,EAAGyhL,EAAGxhL,GAC3CmhL,EAAgBzF,OAAQ6E,EAAIkB,EAAG7sL,EAAG6sL,EAAG1hL,EAAG0hL,EAAGzhL,EAE5C,MAMA,IAAM,IAAI5K,EAAI,EAAGowD,EAAK07H,EAAkB7qG,MAAOjhF,EAAIowD,EAAIpwD,GAAK,EAE3DgsL,EAAG3d,oBAAqByd,EAAmB9rL,EAAI,GAC/CisL,EAAG5d,oBAAqByd,EAAmB9rL,EAAI,GAC/CksL,EAAG7d,oBAAqByd,EAAmB9rL,EAAI,GAE/CsV,EAAGsjJ,WAAYszB,EAAID,GACnB13J,EAAGqkI,WAAYozB,EAAIC,GACnB32K,EAAGw+J,MAAOv/I,GAEVw3J,EAAgBzF,OAAQtmL,EAAI,EAAGsV,EAAG9V,EAAG8V,EAAG3K,EAAG2K,EAAG1K,GAC9CmhL,EAAgBzF,OAAQtmL,EAAI,EAAGsV,EAAG9V,EAAG8V,EAAG3K,EAAG2K,EAAG1K,GAC9CmhL,EAAgBzF,OAAQtmL,EAAI,EAAGsV,EAAG9V,EAAG8V,EAAG3K,EAAG2K,EAAG1K,GAMhDtH,KAAKgpL,mBAELP,EAAgBnpB,aAAc,CAE/B,CAED,GAEA,CAAA98J,IAAA,QAAA/D,MAEA,WAGC,OADAsV,QAAQwN,MAAO,iHACRvhB,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,WAIC,IAFA,IAAM4oL,EAAUrnL,KAAKkyE,WAAW62F,OAEtBrsK,EAAI,EAAGowD,EAAKu6H,EAAQ1pG,MAAOjhF,EAAIowD,EAAIpwD,IAE5C+oL,GAAU1a,oBAAqBsc,EAAS3qL,GAExC+oL,GAAU5kE,YAEVwmE,EAAQrE,OAAQtmL,EAAG+oL,GAAUvpL,EAAGupL,GAAUp+K,EAAGo+K,GAAUn+K,EAIzD,GAAC,CAAA9E,IAAA,eAAA/D,MAED,WAEC,SAAS6qL,EAAwBpzB,EAAWixB,GAU3C,IARA,IAAMpkL,EAAQmzJ,EAAUnzJ,MAClB0/K,EAAWvsB,EAAUusB,SACrB7lB,EAAa1G,EAAU0G,WAEvB2sB,EAAS,IAAIxmL,EAAMoX,YAAagtK,EAAQvvL,OAAS6qL,GAEnD7zK,EAAQ,EAAGi0K,EAAS,EAEdnmL,EAAI,EAAGmK,EAAIsgL,EAAQvvL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAIjDkS,EAFIsnJ,EAAUszB,6BAENrC,EAASzqL,GAAMw5J,EAAUxyH,KAAK+lJ,OAASvzB,EAAUnsH,OAIjDo9I,EAASzqL,GAAM+lL,EAIxB,IAAM,IAAI5yK,EAAI,EAAGA,EAAI4yK,EAAU5yK,IAE9B05K,EAAQ1G,KAAc9/K,EAAO6L,IAI/B,CAEA,OAAO,IAAI4zK,GAAiB+G,EAAQ9G,EAAU7lB,EAE/C,CAIA,GAAoB,OAAf58J,KAAK4O,MAGT,OADAmF,QAAQk/C,KAAM,+EACPjzD,KAIR,IAAM0pL,EAAY,IAAIhE,EAEhByB,EAAUnnL,KAAK4O,MAAM7L,MACrBmvE,EAAalyE,KAAKkyE,WAIxB,IAAM,IAAM/4E,KAAQ+4E,EAAa,CAEhC,IAEMy3G,EAAeL,EAFHp3G,EAAY/4E,GAE0BguL,GAExDuC,EAAU52K,aAAc3Z,EAAMwwL,EAE/B,CAIA,IAAM7D,EAAkB9lL,KAAK8lL,gBAE7B,IAAM,IAAM3sL,KAAQ2sL,EAAkB,CAKrC,IAHA,IAAM8D,EAAa,GACb3C,EAAiBnB,EAAiB3sL,GAE9BuD,EAAI,EAAGowD,EAAKm6H,EAAervL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAE3D,IAEMitL,EAAeL,EAFHrC,EAAgBvqL,GAEsByqL,GAExDyC,EAAW9sL,KAAM6sL,EAElB,CAEAD,EAAU5D,gBAAiB3sL,GAASywL,CAErC,CAEAF,EAAU3D,qBAAuB/lL,KAAK+lL,qBAMtC,IAFA,IAAMC,EAAShmL,KAAKgmL,OAEVtpL,EAAI,EAAGmK,EAAIm/K,EAAOpuL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAM+qG,EAAQu+E,EAAQtpL,GACtBgtL,EAAUG,SAAUpiF,EAAM38D,MAAO28D,EAAM9pB,MAAO8pB,EAAM0+E,cAErD,CAEA,OAAOuD,CAER,GAAC,CAAAlnL,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAO,CACZ+6E,SAAU,CACTplH,QAAS,IACTuL,KAAM,iBACNgrF,UAAW,0BAWb,GALAlsD,EAAKm4E,KAAO77G,KAAK67G,KACjBn4E,EAAK9+B,KAAO5E,KAAK4E,KACE,KAAd5E,KAAK7G,OAAcuqC,EAAKvqC,KAAO6G,KAAK7G,MACpCoF,OAAOqD,KAAM5B,KAAKi/J,UAAWrnK,OAAS,IAAI8rC,EAAKu7H,SAAWj/J,KAAKi/J,eAE3C70J,IAApBpK,KAAKw4K,WAA2B,CAEpC,IAAMA,EAAax4K,KAAKw4K,WAExB,IAAM,IAAMh2K,KAAOg2K,OAESpuK,IAAtBouK,EAAYh2K,KAAsBkhC,EAAMlhC,GAAQg2K,EAAYh2K,IAIlE,OAAOkhC,CAER,CAIAA,EAAKA,KAAO,CAAEwuC,WAAY,CAAC,GAE3B,IAAMtjE,EAAQ5O,KAAK4O,MAEJ,OAAVA,IAEJ80B,EAAKA,KAAK90B,MAAQ,CACjBhK,KAAMgK,EAAM7L,MAAMoX,YAAYhhB,KAC9B4J,MAAOpG,MAAMC,UAAUgU,MAAM/T,KAAM+R,EAAM7L,SAK3C,IAAMmvE,EAAalyE,KAAKkyE,WAExB,IAAM,IAAM1vE,KAAO0vE,EAAa,CAE/B,IAAMgkF,EAAYhkF,EAAY1vE,GAE9BkhC,EAAKA,KAAKwuC,WAAY1vE,GAAQ0zJ,EAAUsJ,OAAQ97H,EAAKA,KAEtD,CAEA,IAAMoiJ,EAAkB,CAAC,EACrBgE,GAAqB,EAEzB,IAAM,IAAMtnL,KAAOxC,KAAK8lL,gBAAkB,CAMzC,IAJA,IAAMiE,EAAiB/pL,KAAK8lL,gBAAiBtjL,GAEvCO,EAAQ,GAEJrG,EAAI,EAAGowD,EAAKi9H,EAAenyL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAE3D,IAAMw5J,EAAY6zB,EAAgBrtL,GAElCqG,EAAMjG,KAAMo5J,EAAUsJ,OAAQ97H,EAAKA,MAEpC,CAEK3gC,EAAMnL,OAAS,IAEnBkuL,EAAiBtjL,GAAQO,EAEzB+mL,GAAqB,EAIvB,CAEKA,IAEJpmJ,EAAKA,KAAKoiJ,gBAAkBA,EAC5BpiJ,EAAKA,KAAKqiJ,qBAAuB/lL,KAAK+lL,sBAIvC,IAAMC,EAAShmL,KAAKgmL,OAEfA,EAAOpuL,OAAS,IAEpB8rC,EAAKA,KAAKsiJ,OAASj4H,KAAK4yC,MAAO5yC,KAAKC,UAAWg4H,KAIhD,IAAMC,EAAiBjmL,KAAKimL,eAW5B,OATwB,OAAnBA,IAEJviJ,EAAKA,KAAKuiJ,eAAiB,CAC1B5vB,OAAQ4vB,EAAe5vB,OAAO9uE,UAC9B2hF,OAAQ+c,EAAe/c,SAKlBxlI,CAER,GAAC,CAAAlhC,IAAA,QAAA/D,MAED,WAEE,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAEtC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAILxB,KAAK4O,MAAQ,KACb5O,KAAKkyE,WAAa,CAAC,EACnBlyE,KAAK8lL,gBAAkB,CAAC,EACxB9lL,KAAKgmL,OAAS,GACdhmL,KAAKgrK,YAAc,KACnBhrK,KAAKimL,eAAiB,KAItB,IAAMviJ,EAAO,CAAC,EAId1jC,KAAK7G,KAAOqI,EAAOrI,KAInB,IAAMyV,EAAQpN,EAAOoN,MAEN,OAAVA,GAEJ5O,KAAKgqL,SAAUp7K,EAAM1N,MAAOwiC,IAM7B,IAAMwuC,EAAa1wE,EAAO0wE,WAE1B,IAAM,IAAM/4E,KAAQ+4E,EAAa,CAEhC,IAAMgkF,EAAYhkF,EAAY/4E,GAC9B6G,KAAK8S,aAAc3Z,EAAM+8J,EAAUh1J,MAAOwiC,GAE3C,CAIA,IAAMoiJ,EAAkBtkL,EAAOskL,gBAE/B,IAAM,IAAM3sL,KAAQ2sL,EAAkB,CAKrC,IAHA,IAAM/iL,EAAQ,GACRkkL,EAAiBnB,EAAiB3sL,GAE9BuD,EAAI,EAAGmK,EAAIogL,EAAervL,OAAQ8E,EAAImK,EAAGnK,IAElDqG,EAAMjG,KAAMmqL,EAAgBvqL,GAAIwE,MAAOwiC,IAIxC1jC,KAAK8lL,gBAAiB3sL,GAAS4J,CAEhC,CAEA/C,KAAK+lL,qBAAuBvkL,EAAOukL,qBAMnC,IAFA,IAAMC,EAASxkL,EAAOwkL,OAEZtpL,EAAI,EAAGmK,EAAIm/K,EAAOpuL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAM+qG,EAAQu+E,EAAQtpL,GACtBsD,KAAK6pL,SAAUpiF,EAAM38D,MAAO28D,EAAM9pB,MAAO8pB,EAAM0+E,cAEhD,CAIA,IAAMnb,EAAcxpK,EAAOwpK,YAEN,OAAhBA,IAEJhrK,KAAKgrK,YAAcA,EAAY9pK,SAMhC,IAAM+kL,EAAiBzkL,EAAOykL,eAqB9B,OAnBwB,OAAnBA,IAEJjmL,KAAKimL,eAAiBA,EAAe/kL,SAMtClB,KAAKkmL,UAAUp7I,MAAQtpC,EAAO0kL,UAAUp7I,MACxC9qC,KAAKkmL,UAAUvoG,MAAQn8E,EAAO0kL,UAAUvoG,MAIxC39E,KAAKi/J,SAAWz9J,EAAOy9J,cAII70J,IAAtB5I,EAAOg3K,aAA2Bx4K,KAAKw4K,WAAaj6K,OAAOmgB,OAAQ,CAAC,EAAGld,EAAOg3K,aAE5Ex4K,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAECuB,KAAKu+B,cAAe,CAAE35B,KAAM,WAE7B,KAAC8gL,CAAA,CA1iCkB,CAASp0B,IA8iCvB24B,GAAiC,IAAItZ,GACrCuZ,GAAuB,IAAI9b,GAC3B+b,GAA0B,IAAIjd,GAE9Bkd,GAAsB,IAAItjB,GAC1BujB,GAAsB,IAAIvjB,GAC1BwjB,GAAsB,IAAIxjB,GAE1ByjB,GAAuB,IAAIzjB,GAC3B0jB,GAAuB,IAAI1jB,GAC3B2jB,GAAuB,IAAI3jB,GAE3B4jB,GAAwB,IAAI5jB,GAC5B6jB,GAAwB,IAAI7jB,GAC5B8jB,GAAwB,IAAI9jB,GAE5B+jB,GAAuB,IAAI11B,GAC3B21B,GAAuB,IAAI31B,GAC3B41B,GAAuB,IAAI51B,GAE3B61B,GAAmC,IAAIlkB,GACvCmkB,GAAwC,IAAInkB,GAE5CokB,GAAI,SAAAC,GAAAnvK,EAAAkvK,EAAAC,GAAA,IAAAC,EAAAzwK,EAAAuwK,GAET,SAAAA,IAAmF,IAAA0B,EAAtE9hB,EAAQ7qK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIylL,GAAkB7M,EAAQ54K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI+hL,GAWlC,OAXqDv3K,EAAA,KAAAygL,IAE/E0B,EAAAxB,EAAAvuL,KAAA,OAEKw7K,QAAS,EAEduU,EAAKhoL,KAAO,OAEZgoL,EAAK9hB,SAAWA,EAChB8hB,EAAK/T,SAAWA,EAEhB+T,EAAKtB,qBAAqBsB,CAE3B,CAuNC,OAvNArjL,EAAA2hL,EAAA,EAAA1oL,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAmBb,OAjBA9xC,GAAA5rH,EAAA4vK,EAAAtuL,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,QAEkB5uK,IAAjC5I,EAAO+pL,wBAEXvrL,KAAKurL,sBAAwB/pL,EAAO+pL,sBAAsB36K,cAIrBxG,IAAjC5I,EAAOgqL,wBAEXxrL,KAAKwrL,sBAAwBjtL,OAAOmgB,OAAQ,CAAC,EAAGld,EAAOgqL,wBAIxDxrL,KAAK64K,SAAWr3K,EAAOq3K,SACvB74K,KAAK8qK,SAAWtpK,EAAOspK,SAEhB9qK,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,WAEC,IAEMqnL,EAFW9lL,KAAK8qK,SAEWgb,gBAC3BlkL,EAAOrD,OAAOqD,KAAMkkL,GAE1B,GAAKlkL,EAAKhK,OAAS,EAAI,CAEtB,IAAMqvL,EAAiBnB,EAAiBlkL,EAAM,IAE9C,QAAwBwI,IAAnB68K,EAA+B,CAEnCjnL,KAAKurL,sBAAwB,GAC7BvrL,KAAKwrL,sBAAwB,CAAC,EAE9B,IAAM,IAAI1kL,EAAI,EAAGumD,EAAK45H,EAAervL,OAAQkP,EAAIumD,EAAIvmD,IAAO,CAE3D,IAAM3N,EAAO8tL,EAAgBngL,GAAI3N,MAAQ4E,OAAQ+I,GAEjD9G,KAAKurL,sBAAsBzuL,KAAM,GACjCkD,KAAKwrL,sBAAuBryL,GAAS2N,CAEtC,CAED,CAED,CAED,GAAC,CAAAtE,IAAA,UAAA/D,MAED,SAASitL,EAAWC,GAEnB,IAAM7gB,EAAW9qK,KAAK8qK,SAChB+N,EAAW74K,KAAK64K,SAChB5Q,EAAcjoK,KAAKioK,YAEzB,QAAkB79J,IAAbyuK,IAI4B,OAA5B/N,EAASmb,gBAA0Bnb,EAASwb,wBAEjD6D,GAAUzuB,KAAMoP,EAASmb,gBACzBkE,GAAUtiB,aAAcI,IAE6B,IAAhDyjB,EAAUpd,IAAIf,iBAAkB4c,MAIrCF,GAAiBvuB,KAAMuM,GAAcn4B,SACrCo6C,GAAOxuB,KAAMgwB,EAAUpd,KAAMzG,aAAcoiB,IAIb,OAAzBnf,EAASE,cAEyC,IAAjDkf,GAAO2B,cAAe/gB,EAASE,eAFrC,CAMA,IAAI4gB,EAEEh9K,EAAQk8J,EAASl8J,MACjB2wD,EAAWurG,EAAS54F,WAAW3S,SAC/BusH,EAAgBhhB,EAASgb,gBAAgBvmH,SACzCwmH,EAAuBjb,EAASib,qBAChCtmB,EAAKqL,EAAS54F,WAAWutF,GACzB0a,EAAMrP,EAAS54F,WAAWioG,IAC1B6L,EAASlb,EAASkb,OAClBE,EAAYpb,EAASob,UAE3B,GAAe,OAAVt3K,EAIJ,GAAKjS,MAAM0E,QAASw3K,GAEnB,IAAM,IAAIn8K,EAAI,EAAGowD,EAAKk5H,EAAOpuL,OAAQ8E,EAAIowD,EAAIpwD,IAQ5C,IANA,IAAM+qG,EAAQu+E,EAAQtpL,GAChBqvL,EAAgBlT,EAAUpxE,EAAM0+E,eAK5Bt2K,EAHI5S,KAAKC,IAAKuqG,EAAM38D,MAAOo7I,EAAUp7I,OAG1Bo8I,EAFTjqL,KAAKiuC,IAAKt8B,EAAM+uE,MAAO1gF,KAAKiuC,IAAOu8D,EAAM38D,MAAQ28D,EAAM9pB,MAAWuoG,EAAUp7I,MAAQo7I,EAAUvoG,QAE3E9tE,EAAIq3K,EAAIr3K,GAAK,EAAI,CAE/C,IAAM7T,EAAI4S,EAAMunJ,KAAMtmJ,GAChBtJ,EAAIqI,EAAMunJ,KAAMtmJ,EAAI,GACpB5T,EAAI2S,EAAMunJ,KAAMtmJ,EAAI,IAE1B+7K,EAAeI,GAAiChsL,KAAM+rL,EAAeL,EAAWxB,GAAQ3qH,EAAUusH,EAAe/F,EAAsBtmB,EAAI0a,EAAKn+K,EAAGuK,EAAGtK,MAIrJ2vL,EAAaK,UAAYhvL,KAAKwf,MAAO5M,EAAI,GACzC+7K,EAAaM,KAAK/F,cAAgB1+E,EAAM0+E,cACxCwF,EAAW7uL,KAAM8uL,GAInB,MASD,IAHA,IAGUlvL,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBgiB,EAFT7vD,KAAKiuC,IAAKt8B,EAAM+uE,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAElCjhF,EAAIowD,EAAIpwD,GAAK,EAAI,CAE/C,IAAMV,EAAI4S,EAAMunJ,KAAMz5J,GAChB6J,EAAIqI,EAAMunJ,KAAMz5J,EAAI,GACpBT,EAAI2S,EAAMunJ,KAAMz5J,EAAI,IAE1BkvL,EAAeI,GAAiChsL,KAAM64K,EAAU6S,EAAWxB,GAAQ3qH,EAAUusH,EAAe/F,EAAsBtmB,EAAI0a,EAAKn+K,EAAGuK,EAAGtK,MAIhJ2vL,EAAaK,UAAYhvL,KAAKwf,MAAO/f,EAAI,GACzCivL,EAAW7uL,KAAM8uL,GAInB,MAIK,QAAkBxhL,IAAbm1D,EAIX,GAAK5iE,MAAM0E,QAASw3K,GAEnB,IAAM,IAAIn8K,EAAI,EAAGowD,EAAKk5H,EAAOpuL,OAAQ8E,EAAIowD,EAAIpwD,IAQ5C,IANA,IAAM+qG,EAAQu+E,EAAQtpL,GAChBqvL,EAAgBlT,EAAUpxE,EAAM0+E,eAK5Bt2K,EAHI5S,KAAKC,IAAKuqG,EAAM38D,MAAOo7I,EAAUp7I,OAG1Bo8I,EAFTjqL,KAAKiuC,IAAKq0B,EAASoe,MAAO1gF,KAAKiuC,IAAOu8D,EAAM38D,MAAQ28D,EAAM9pB,MAAWuoG,EAAUp7I,MAAQo7I,EAAUvoG,QAE9E9tE,EAAIq3K,EAAIr3K,GAAK,EAAI,EAM/C+7K,EAAeI,GAAiChsL,KAAM+rL,EAAeL,EAAWxB,GAAQ3qH,EAAUusH,EAAe/F,EAAsBtmB,EAAI0a,EAJjItqK,EACAA,EAAI,EACJA,EAAI,MAMb+7K,EAAaK,UAAYhvL,KAAKwf,MAAO5M,EAAI,GACzC+7K,EAAaM,KAAK/F,cAAgB1+E,EAAM0+E,cACxCwF,EAAW7uL,KAAM8uL,GAInB,MASD,IAHA,IAGUlvL,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBgiB,EAFT7vD,KAAKiuC,IAAKq0B,EAASoe,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAErCjhF,EAAIowD,EAAIpwD,GAAK,EAAI,EAM/CkvL,EAAeI,GAAiChsL,KAAM64K,EAAU6S,EAAWxB,GAAQ3qH,EAAUusH,EAAe/F,EAAsBtmB,EAAI0a,EAJ5Hz9K,EACAA,EAAI,EACJA,EAAI,MAMbkvL,EAAaK,UAAYhvL,KAAKwf,MAAO/f,EAAI,GACzCivL,EAAW7uL,KAAM8uL,GAInB,CA7HF,CAmID,KAACV,CAAA,CAtOQ,CAAS1V,IAyQnB,SAASwW,GAAiC7pL,EAAQ02K,EAAU6S,EAAWpd,EAAK/uG,EAAUusH,EAAe/F,EAAsBtmB,EAAI0a,EAAKn+K,EAAGuK,EAAGtK,GAEzImuL,GAAMrf,oBAAqBxrG,EAAUvjE,GACrCquL,GAAMtf,oBAAqBxrG,EAAUh5D,GACrC+jL,GAAMvf,oBAAqBxrG,EAAUtjE,GAErC,IAAMmwL,EAAkBjqL,EAAOopL,sBAE/B,GAAKO,GAAiBM,EAAkB,CAEvC1B,GAAQz7J,IAAK,EAAG,EAAG,GACnB07J,GAAQ17J,IAAK,EAAG,EAAG,GACnB27J,GAAQ37J,IAAK,EAAG,EAAG,GAEnB,IAAM,IAAIvyB,EAAI,EAAGowD,EAAKg/H,EAAcl0L,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAE1D,IAAM2vL,EAAYD,EAAiB1vL,GAC7BuqL,EAAiB6E,EAAepvL,GAEnB,IAAd2vL,IAEL9B,GAAOxf,oBAAqBkc,EAAgBjrL,GAC5CwuL,GAAOzf,oBAAqBkc,EAAgB1gL,GAC5CkkL,GAAO1f,oBAAqBkc,EAAgBhrL,GAEvC8pL,GAEJ2E,GAAQhQ,gBAAiB6P,GAAQ8B,GACjC1B,GAAQjQ,gBAAiB8P,GAAQ6B,GACjCzB,GAAQlQ,gBAAiB+P,GAAQ4B,KAIjC3B,GAAQhQ,gBAAiB6P,GAAOzhB,IAAKshB,IAASiC,GAC9C1B,GAAQjQ,gBAAiB8P,GAAO1hB,IAAKuhB,IAASgC,GAC9CzB,GAAQlQ,gBAAiB+P,GAAO3hB,IAAKwhB,IAAS+B,IAIhD,CAEAjC,GAAMh+J,IAAKs+J,IACXL,GAAMj+J,IAAKu+J,IACXL,GAAMl+J,IAAKw+J,GAEZ,CAEKzoL,EAAOs2K,gBAEXt2K,EAAOmqL,cAAetwL,EAAGouL,IACzBjoL,EAAOmqL,cAAe/lL,EAAG8jL,IACzBloL,EAAOmqL,cAAerwL,EAAGquL,KAI1B,IAAMsB,EAtFP,SAA4BzpL,EAAQ02K,EAAU6S,EAAWpd,EAAKoa,EAAIC,EAAIC,EAAIle,GAczE,GAAmB,QAVdmO,EAASgD,OAASz0B,GAEVknB,EAAIie,kBAAmB3D,EAAID,EAAID,GAAI,EAAMhe,GAIzC4D,EAAIie,kBAAmB7D,EAAIC,EAAIC,EAAI/P,EAASgD,OAASx0B,GAAYqjB,IAIpD,OAAO,KAEjCugB,GAAwBvvB,KAAMgP,GAC9BugB,GAAwBpjB,aAAc1lK,EAAO8lK,aAE7C,IAAMyO,EAAWgV,EAAUpd,IAAIl2E,OAAOi1E,WAAY4d,IAElD,OAAKvU,EAAWgV,EAAU7X,MAAQ6C,EAAWgV,EAAU5X,IAAa,KAE7D,CACN4C,SAAUA,EACVhM,MAAOugB,GAAwB/pL,QAC/BiB,OAAQA,EAGV,CAyDsBqqL,CAAmBrqL,EAAQ02K,EAAU6S,EAAWpd,EAAK8b,GAAOC,GAAOC,GAAOU,IAE/F,GAAKY,EAAe,CAEdnsB,IAEJorB,GAAO9f,oBAAqBtL,EAAIzjK,GAChC8uL,GAAO/f,oBAAqBtL,EAAIl5J,GAChCwkL,GAAOhgB,oBAAqBtL,EAAIxjK,GAEhC2vL,EAAansB,GAAKka,GAASU,MAAO2Q,GAAoBZ,GAAOC,GAAOC,GAAOO,GAAQC,GAAQC,GAAQ,IAAI51B,KAInGglB,IAEJ0Q,GAAO9f,oBAAqBoP,EAAKn+K,GACjC8uL,GAAO/f,oBAAqBoP,EAAK5zK,GACjCwkL,GAAOhgB,oBAAqBoP,EAAKl+K,GAEjC2vL,EAAazR,IAAMR,GAASU,MAAO2Q,GAAoBZ,GAAOC,GAAOC,GAAOO,GAAQC,GAAQC,GAAQ,IAAI51B,KAIzG,IAAM+2B,EAAO,CACZlwL,EAAGA,EACHuK,EAAGA,EACHtK,EAAGA,EACH8sK,OAAQ,IAAIjC,GACZqf,cAAe,GAGhBxM,GAASI,UAAWqQ,GAAOC,GAAOC,GAAO4B,EAAKnjB,QAE9C6iB,EAAaM,KAAOA,CAErB,CAEA,OAAON,CAER,CAAC,IAEKa,GAAW,SAAAC,GAAA1wK,EAAAywK,EAAAC,GAAA,IAAAC,EAAAhyK,EAAA8xK,GAEhB,SAAAA,IAA0G,IAAAiC,EAA7FvgL,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGsuG,EAAKtuG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG4sL,EAAa5sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG6sL,EAAc7sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG8sL,EAAa9sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAgiL,IAEtGiC,EAAA/B,EAAA9vL,KAAA,OAEK+H,KAAO,cAEZ8pL,EAAKlW,WAAa,CACjBrqK,MAAOA,EACPC,OAAQA,EACRmgG,MAAOA,EACPs+E,cAAeA,EACfC,eAAgBA,EAChBC,cAAeA,GAGhB,IAAMC,EAAKxxK,EAAAkzK,GAIX7B,EAAgB5vL,KAAKwf,MAAOowK,GAC5BC,EAAiB7vL,KAAKwf,MAAOqwK,GAC7BC,EAAgB9vL,KAAKwf,MAAOswK,GAI5B,IAAM5F,EAAU,GACV8F,EAAW,GACX5F,EAAU,GACVC,EAAM,GAIR4F,EAAmB,EACnBC,EAAa,EAkBjB,SAASC,EAAY7lL,EAAGJ,EAAGC,EAAGimL,EAAMC,EAAMn/K,EAAOC,EAAQmgG,EAAOg/E,EAAOC,EAAOrH,GAmB7E,IAjBA,IAAMsH,EAAet/K,EAAQo/K,EACvBG,EAAgBt/K,EAASo/K,EAEzBG,EAAYx/K,EAAQ,EACpBy/K,EAAax/K,EAAS,EACtBy/K,EAAYt/E,EAAQ,EAEpBu/E,EAASP,EAAQ,EACjBQ,EAASP,EAAQ,EAEnBQ,EAAgB,EAChBC,EAAa,EAEXtjB,EAAS,IAAI7D,GAITW,EAAK,EAAGA,EAAKsmB,EAAQtmB,IAI9B,IAFA,IAAMpgK,EAAIogK,EAAKimB,EAAgBE,EAErBpmB,EAAK,EAAGA,EAAKsmB,EAAQtmB,IAAQ,CAEtC,IAAMtrK,EAAIsrK,EAAKimB,EAAeE,EAI9BhjB,EAAQpjK,GAAMrL,EAAImxL,EAClB1iB,EAAQxjK,GAAME,EAAIimL,EAClB3iB,EAAQvjK,GAAMymL,EAIdZ,EAASnwL,KAAM6tK,EAAOzuK,EAAGyuK,EAAOtjK,EAAGsjK,EAAOrjK,GAI1CqjK,EAAQpjK,GAAM,EACdojK,EAAQxjK,GAAM,EACdwjK,EAAQvjK,GAAMmnG,EAAQ,EAAI,GAAM,EAIhC84E,EAAQvqL,KAAM6tK,EAAOzuK,EAAGyuK,EAAOtjK,EAAGsjK,EAAOrjK,GAIzCggL,EAAIxqL,KAAM0qK,EAAK+lB,GACfjG,EAAIxqL,KAAM,EAAM2qK,EAAK+lB,GAIrBQ,GAAiB,CAElB,CAUD,IAAM,IAAIvmB,EAAK,EAAGA,EAAK+lB,EAAO/lB,IAE7B,IAAM,IAAID,EAAK,EAAGA,EAAK+lB,EAAO/lB,IAAQ,CAErC,IAAMxrK,EAAIkxL,EAAmB1lB,EAAKsmB,EAASrmB,EACrClhK,EAAI2mL,EAAmB1lB,EAAKsmB,GAAWrmB,EAAK,GAC5CxrK,EAAIixL,GAAqB1lB,EAAK,GAAMsmB,GAAWrmB,EAAK,GACpDjhK,EAAI0mL,GAAqB1lB,EAAK,GAAMsmB,EAASrmB,EAInD0f,EAAQrqL,KAAMd,EAAGuK,EAAGC,GACpB2gL,EAAQrqL,KAAMyJ,EAAGtK,EAAGuK,GAIpBynL,GAAc,CAEf,CAMDjB,EAAMnD,SAAUsD,EAAYc,EAAY9H,GAIxCgH,GAAcc,EAIdf,GAAoBc,CAErB,CAAC,OAlHDZ,EAAY,IAAK,IAAK,KAAO,GAAK,EAAG7+E,EAAOngG,EAAQD,EAAO4+K,EAAeD,EAAgB,GAC1FM,EAAY,IAAK,IAAK,IAAK,GAAK,EAAG7+E,EAAOngG,GAAUD,EAAO4+K,EAAeD,EAAgB,GAC1FM,EAAY,IAAK,IAAK,IAAK,EAAG,EAAGj/K,EAAOogG,EAAOngG,EAAQy+K,EAAeE,EAAe,GACrFK,EAAY,IAAK,IAAK,IAAK,GAAK,EAAGj/K,EAAOogG,GAASngG,EAAQy+K,EAAeE,EAAe,GACzFK,EAAY,IAAK,IAAK,IAAK,GAAK,EAAGj/K,EAAOC,EAAQmgG,EAAOs+E,EAAeC,EAAgB,GACxFM,EAAY,IAAK,IAAK,KAAO,GAAK,EAAGj/K,EAAOC,GAAUmgG,EAAOs+E,EAAeC,EAAgB,GAI5F4B,EAAK1E,SAAU7C,GACfuH,EAAK57K,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACrEyB,EAAK57K,aAAc,SAAU,IAAI+xK,GAAwBwC,EAAS,IAClEqH,EAAK57K,aAAc,KAAM,IAAI+xK,GAAwByC,EAAK,IAsGzDoH,CAEF,CAMC,OANAnlL,EAAAkjL,EAAA,OAAAjqL,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAI+oJ,EAAa/oJ,EAAKv1B,MAAOu1B,EAAKt1B,OAAQs1B,EAAK6qE,MAAO7qE,EAAKmpJ,cAAenpJ,EAAKopJ,eAAgBppJ,EAAKqpJ,cAE5G,KAACN,CAAA,CAjKe,CAAS/G,IAyK1B,SAASwI,GAAe/7K,GAEvB,IAAMyzJ,EAAM,CAAC,EAEb,IAAM,IAAMr+J,KAAK4K,EAIhB,IAAM,IAAMnL,KAFZ4+J,EAAKr+J,GAAM,CAAC,EAEK4K,EAAK5K,GAAM,CAE3B,IAAM7I,EAAWyT,EAAK5K,GAAKP,GAEtBtI,IAAcA,EAAS+8J,SAC3B/8J,EAASm7J,WAAan7J,EAASq1K,WAC/Br1K,EAAS63J,WAAa73J,EAAS+qK,WAAa/qK,EAASqiK,WACrDriK,EAASihK,WAAajhK,EAASmoK,cAE/BjB,EAAKr+J,GAAKP,GAAMtI,EAASwC,QAEdvE,MAAM0E,QAAS3C,GAE1BknK,EAAKr+J,GAAKP,GAAMtI,EAASkS,QAIzBg1J,EAAKr+J,GAAKP,GAAMtI,CAIlB,CAID,OAAOknK,CAER,CAEA,SAASuoB,GAAeC,GAIvB,IAFA,IAAMC,EAAS,CAAC,EAEN9mL,EAAI,EAAGA,EAAI6mL,EAASx2L,OAAQ2P,IAAO,CAE5C,IAAMuxJ,EAAMo1B,GAAeE,EAAU7mL,IAErC,IAAM,IAAMP,KAAK8xJ,EAEhBu1B,EAAQrnL,GAAM8xJ,EAAK9xJ,EAIrB,CAEA,OAAOqnL,CAER,CAkBA,IAAMC,GAAgB,CAAEptL,MAAOgtL,GAAer6E,MAAOs6E,IAM/CI,GAAc,SAAAC,GAAAxyK,EAAAuyK,EAAAC,GAAA,IAAAC,EAAA9zK,EAAA4zK,GAEnB,SAAAA,EAAa/V,GAAa,IAAAoX,EAgDxB,OAhDwBnlL,EAAA,KAAA8jL,IAEzBqB,EAAAnB,EAAA5xL,KAAA,OAEK2yL,kBAAmB,EAExBI,EAAKhrL,KAAO,iBAEZgrL,EAAKjB,QAAU,CAAC,EAChBiB,EAAKxB,SAAW,CAAC,EACjBwB,EAAKsxL,eAAiB,GAEtBtxL,EAAKhB,aAlBc,gGAmBnBgB,EAAKf,eAjBgB,iEAmBrBe,EAAKxO,UAAY,EAEjBwO,EAAKpO,WAAY,EACjBoO,EAAKnO,mBAAqB,EAE1BmO,EAAKjU,KAAM,EACXiU,EAAKd,QAAS,EACdc,EAAKb,UAAW,EAEhBa,EAAKtjG,WAAa,CACjB0iG,aAAa,EACbC,WAAW,EACXC,aAAa,EACbC,kBAAkB,GAKnBS,EAAKR,uBAAyB,CAC7B,MAAS,CAAE,EAAG,EAAG,GACjB,GAAM,CAAE,EAAG,GACX,IAAO,CAAE,EAAG,IAGbQ,EAAKP,yBAAsBjlL,EAC3BwlL,EAAKN,oBAAqB,EAE1BM,EAAKL,YAAc,UAECnlL,IAAfouK,GAEJoX,EAAKxN,UAAW5J,GAEhBoX,CAEF,CAuHC,OAvHArmL,EAAAglL,EAAA,EAAA/rL,IAAA,OAAA/D,MAED,SAAM+C,GAuBL,OArBA0lI,GAAA5rH,EAAAizK,EAAA3xL,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK6uL,eAAiBrtL,EAAOqtL,eAC7B7uL,KAAK4uL,aAAeptL,EAAOotL,aAE3B5uL,KAAKouL,SAAWF,GAAe1sL,EAAO4sL,UACtCpuL,KAAKkhX,eApFP,SAA8B/uW,GAI7B,IAFA,IAAMyzJ,EAAM,GAEFr+J,EAAI,EAAGA,EAAI4K,EAAIva,OAAQ2P,IAEhCq+J,EAAI9oK,KAAMqV,EAAK5K,GAAIrG,SAIpB,OAAO0kK,CAER,CAwEwBu7M,CAAqB3/W,EAAO0/W,gBAElDlhX,KAAK2uL,QAAUpwL,OAAOmgB,OAAQ,CAAC,EAAGld,EAAOmtL,SAEzC3uL,KAAKwhL,UAAYhgL,EAAOggL,UACxBxhL,KAAKyhL,mBAAqBjgL,EAAOigL,mBAEjCzhL,KAAK27K,IAAMn6K,EAAOm6K,IAClB37K,KAAK8uL,OAASttL,EAAOstL,OACrB9uL,KAAK+uL,SAAWvtL,EAAOutL,SAEvB/uL,KAAKssF,WAAa/tF,OAAOmgB,OAAQ,CAAC,EAAGld,EAAO8qF,YAE5CtsF,KAAKuvL,YAAc/tL,EAAO+tL,YAEnBvvL,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAAizK,EAAA3xL,WAAA,eAAAC,KAAA,KAAiBy5B,GAK3B,IAAM,IAAMn9B,KAHZuqC,EAAK6rJ,YAAcvvL,KAAKuvL,YACxB7rJ,EAAK0qJ,SAAW,CAAC,EAEGpuL,KAAKouL,SAAW,CAEnC,IACM3vL,EADUuB,KAAKouL,SAAUj1L,GACTsF,MAEjBA,GAASA,EAAMkhK,UAEnBj8H,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,IACNnG,MAAOA,EAAM+gK,OAAQlpI,GAAOulF,MAGlBp9G,GAASA,EAAMg9J,QAE1B/3H,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,IACNnG,MAAOA,EAAM29J,UAGH39J,GAASA,EAAM83J,UAE1B7yH,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,KACNnG,MAAOA,EAAM8oF,WAGH9oF,GAASA,EAAMgrK,UAE1B/lI,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,KACNnG,MAAOA,EAAM8oF,WAGH9oF,GAASA,EAAMsiK,UAE1Br9H,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,KACNnG,MAAOA,EAAM8oF,WAGH9oF,GAASA,EAAMo7J,UAE1Bn2H,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,KACNnG,MAAOA,EAAM8oF,WAGH9oF,GAASA,EAAMs1K,UAE1BrwI,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,KACNnG,MAAOA,EAAM8oF,WAKd7jD,EAAK0qJ,SAAUj1L,GAAS,CACvBsF,MAAOA,EAOV,CAEKF,OAAOqD,KAAM5B,KAAK2uL,SAAU/2L,OAAS,IAAI8rC,EAAKirJ,QAAU3uL,KAAK2uL,SAElEjrJ,EAAKkrJ,aAAe5uL,KAAK4uL,aACzBlrJ,EAAKmrJ,eAAiB7uL,KAAK6uL,eAE3B,IAAMviG,EAAa,CAAC,EAEpB,IAAM,IAAM9pF,KAAOxC,KAAKssF,YAES,IAA3BtsF,KAAKssF,WAAY9pF,KAAiB8pF,EAAY9pF,IAAQ,GAM5D,OAFKjE,OAAOqD,KAAM0qF,GAAa10F,OAAS,IAAI8rC,EAAK4oD,WAAaA,GAEvD5oD,CAER,KAAC6qJ,CAAA,CA3KkB,CAAShT,IA+KvBkU,GAAM,SAAAC,GAAA1zK,EAAAyzK,EAAAC,GAAA,IAAAC,EAAAh1K,EAAA80K,GAEX,SAAAA,IAAc,IAAAO,EAWgC,OAXhCvlL,EAAA,KAAAglL,IAEbO,EAAAL,EAAA9yL,KAAA,OAEKg6K,UAAW,EAEhBmZ,EAAKprL,KAAO,SAEZorL,EAAKloB,mBAAqB,IAAI6I,GAE9Bqf,EAAKjoB,iBAAmB,IAAI4I,GAC5Bqf,EAAKhoB,wBAA0B,IAAI2I,GAAUqf,CAE9C,CA6CC,OA7CAzmL,EAAAkmL,EAAA,EAAAjtL,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GASb,OAPA9xC,GAAA5rH,EAAAm0K,EAAA7yL,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAK8nK,mBAAmBpM,KAAMl6J,EAAOsmK,oBAErC9nK,KAAK+nK,iBAAiBrM,KAAMl6J,EAAOumK,kBACnC/nK,KAAKgoK,wBAAwBtM,KAAMl6J,EAAOwmK,yBAEnChoK,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmB8C,GAElBvB,KAAK6qK,mBAAmB,GAAM,GAE9B,IAAMvkK,EAAItG,KAAKioK,YAAYjiC,SAE3B,OAAOzkI,EAAO0tB,KAAO3oB,EAAG,IAAOA,EAAG,IAAOA,EAAG,KAAOu6G,WAEpD,GAAC,CAAAr+G,IAAA,oBAAA/D,MAED,SAAmB64K,GAElBpwC,GAAA5rH,EAAAm0K,EAAA7yL,WAAA,0BAAAC,KAAA,KAAyBy6K,GAEzBt3K,KAAK8nK,mBAAmBpM,KAAM17J,KAAKioK,aAAcn4B,QAElD,GAAC,CAAAttI,IAAA,oBAAA/D,MAED,SAAmB+4K,EAAeC,GAEjCvwC,GAAA5rH,EAAAm0K,EAAA7yL,WAAA,0BAAAC,KAAA,KAAyB26K,EAAeC,GAExCz3K,KAAK8nK,mBAAmBpM,KAAM17J,KAAKioK,aAAcn4B,QAElD,GAAC,CAAAttI,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACyvL,CAAA,CA5DU,CAASja,IAgEfqa,GAAiB,SAAAC,GAAA9zK,EAAA6zK,EAAAC,GAAA,IAAAC,EAAAp1K,EAAAk1K,GAEtB,SAAAA,IAA4D,IAAAyB,EAA/CrB,EAAGhwL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAIiwL,EAAMjwL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG4zK,EAAI5zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAK6zK,EAAG7zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAqBtB,OArB0BwK,EAAA,KAAAolL,IAExDyB,EAAAvB,EAAAlzL,KAAA,OAEKo0L,qBAAsB,EAE3BK,EAAK1sL,KAAO,oBAEZ0sL,EAAKrB,IAAMA,EACXqB,EAAKz8J,KAAO,EAEZy8J,EAAKzd,KAAOA,EACZyd,EAAKxd,IAAMA,EACXwd,EAAK53L,MAAQ,GAEb43L,EAAKpB,OAASA,EACdoB,EAAK/vJ,KAAO,KAEZ+vJ,EAAKnB,UAAY,GACjBmB,EAAKlB,WAAa,EAElBkB,EAAKjB,yBAAyBiB,CAE/B,CAwMC,OAxMA/nL,EAAAsmL,EAAA,EAAArtL,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAiBb,OAfA9xC,GAAA5rH,EAAAu0K,EAAAjzL,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAKiwL,IAAMzuL,EAAOyuL,IAClBjwL,KAAK60B,KAAOrzB,EAAOqzB,KAEnB70B,KAAK6zK,KAAOryK,EAAOqyK,KACnB7zK,KAAK8zK,IAAMtyK,EAAOsyK,IAClB9zK,KAAKtG,MAAQ8H,EAAO9H,MAEpBsG,KAAKkwL,OAAS1uL,EAAO0uL,OACrBlwL,KAAKuhC,KAAuB,OAAhB//B,EAAO+/B,KAAgB,KAAOhjC,OAAOmgB,OAAQ,CAAC,EAAGld,EAAO+/B,MAEpEvhC,KAAKmwL,UAAY3uL,EAAO2uL,UACxBnwL,KAAKowL,WAAa5uL,EAAO4uL,WAElBpwL,IAER,GAEA,CAAAwC,IAAA,iBAAA/D,MAQA,SAAgB6xL,GAGf,IAAMC,EAAe,GAAMvwL,KAAKwwL,gBAAkBF,EAElDtwL,KAAKiwL,IAAgB,EAAVr+B,GAAc30J,KAAKwzL,KAAMF,GACpCvwL,KAAKqwL,wBAEN,GAEA,CAAA7tL,IAAA,iBAAA/D,MAGA,WAEC,IAAM8xL,EAAetzL,KAAKyzL,IAAe,GAAVh/B,GAAgB1xJ,KAAKiwL,KAEpD,MAAO,GAAMjwL,KAAKwwL,gBAAkBD,CAErC,GAAC,CAAA/tL,IAAA,kBAAA/D,MAED,WAEC,OAAiB,EAAVmzJ,GAAc30J,KAAKwzL,KACzBxzL,KAAKyzL,IAAe,GAAVh/B,GAAgB1xJ,KAAKiwL,KAAQjwL,KAAK60B,KAE9C,GAAC,CAAAryB,IAAA,eAAA/D,MAED,WAGC,OAAOuB,KAAKmwL,UAAYlzL,KAAKiuC,IAAKlrC,KAAKkwL,OAAQ,EAEhD,GAAC,CAAA1tL,IAAA,gBAAA/D,MAED,WAGC,OAAOuB,KAAKmwL,UAAYlzL,KAAKC,IAAK8C,KAAKkwL,OAAQ,EAEhD,GAEA,CAAA1tL,IAAA,gBAAA/D,MAmCA,SAAekyL,EAAWC,EAAY10L,EAAGmL,EAAG8G,EAAOC,GAElDpO,KAAKkwL,OAASS,EAAYC,EAEP,OAAd5wL,KAAKuhC,OAETvhC,KAAKuhC,KAAO,CACXsvJ,SAAS,EACTF,UAAW,EACXC,WAAY,EACZp3E,QAAS,EACTE,QAAS,EACTvrG,MAAO,EACPC,OAAQ,IAKVpO,KAAKuhC,KAAKsvJ,SAAU,EACpB7wL,KAAKuhC,KAAKovJ,UAAYA,EACtB3wL,KAAKuhC,KAAKqvJ,WAAaA,EACvB5wL,KAAKuhC,KAAKi4E,QAAUt9G,EACpB8D,KAAKuhC,KAAKm4E,QAAUryG,EACpBrH,KAAKuhC,KAAKpzB,MAAQA,EAClBnO,KAAKuhC,KAAKnzB,OAASA,EAEnBpO,KAAKqwL,wBAEN,GAAC,CAAA7tL,IAAA,kBAAA/D,MAED,WAEoB,OAAduB,KAAKuhC,OAETvhC,KAAKuhC,KAAKsvJ,SAAU,GAIrB7wL,KAAKqwL,wBAEN,GAAC,CAAA7tL,IAAA,yBAAA/D,MAED,WAEC,IAAMo1K,EAAO7zK,KAAK6zK,KACd3nI,EAAM2nI,EAAO52K,KAAKyzL,IAAe,GAAVh/B,GAAgB1xJ,KAAKiwL,KAAQjwL,KAAK60B,KACzDzmB,EAAS,EAAI89B,EACb/9B,EAAQnO,KAAKkwL,OAAS9hL,EACtB49B,GAAS,GAAM79B,EACbozB,EAAOvhC,KAAKuhC,KAElB,GAAmB,OAAdvhC,KAAKuhC,MAAiBvhC,KAAKuhC,KAAKsvJ,QAAU,CAE9C,IAAMF,EAAYpvJ,EAAKovJ,UACtBC,EAAarvJ,EAAKqvJ,WAEnB5kJ,GAAQzK,EAAKi4E,QAAUrrG,EAAQwiL,EAC/BzkJ,GAAO3K,EAAKm4E,QAAUtrG,EAASwiL,EAC/BziL,GAASozB,EAAKpzB,MAAQwiL,EACtBviL,GAAUmzB,EAAKnzB,OAASwiL,CAEzB,CAEA,IAAME,EAAO9wL,KAAKowL,WACJ,IAATU,IAAa9kJ,GAAQ6nI,EAAOid,EAAO9wL,KAAK+wL,gBAE7C/wL,KAAK+nK,iBAAiBipB,gBAAiBhlJ,EAAMA,EAAO79B,EAAO+9B,EAAKA,EAAM99B,EAAQylK,EAAM7zK,KAAK8zK,KAEzF9zK,KAAKgoK,wBAAwBtM,KAAM17J,KAAK+nK,kBAAmBj4B,QAE5D,GAAC,CAAAttI,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAAu0K,EAAAjzL,WAAA,eAAAC,KAAA,KAAiBy5B,GAgB3B,OAdAoN,EAAKvhC,OAAO8tL,IAAMjwL,KAAKiwL,IACvBvsJ,EAAKvhC,OAAO0yB,KAAO70B,KAAK60B,KAExB6O,EAAKvhC,OAAO0xK,KAAO7zK,KAAK6zK,KACxBnwI,EAAKvhC,OAAO2xK,IAAM9zK,KAAK8zK,IACvBpwI,EAAKvhC,OAAOzI,MAAQsG,KAAKtG,MAEzBgqC,EAAKvhC,OAAO+tL,OAASlwL,KAAKkwL,OAEP,OAAdlwL,KAAKuhC,OAAgBmC,EAAKvhC,OAAOo/B,KAAOhjC,OAAOmgB,OAAQ,CAAC,EAAG1e,KAAKuhC,OAErEmC,EAAKvhC,OAAOguL,UAAYnwL,KAAKmwL,UAC7BzsJ,EAAKvhC,OAAOiuL,WAAapwL,KAAKowL,WAEvB1sJ,CAER,KAACmsJ,CAAA,CAjOqB,CAASJ,IAqO1BQ,GAAM,GAENiB,GAAU,SAAAC,GAAAn1K,EAAAk1K,EAAAC,GAAA,IAAAC,EAAAz2K,EAAAu2K,GAEf,SAAAA,EAAard,EAAMC,EAAKud,GAAe,IAAAwB,EAAApoL,EAAA,KAAAymL,IAEtC2B,EAAAzB,EAAAv0L,KAAA,OAEK+H,KAAO,aAEZiuL,EAAKxB,aAAeA,EAEpB,IAAMG,EAAW,IAAI3B,GAAmBI,GAZjB,EAY8Bpc,EAAMC,GAC3D0d,EAAS7c,OAASke,EAAKle,OACvB6c,EAAS7f,GAAG1iJ,IAAK,GAAK,EAAG,GACzBuiK,EAASza,OAAQ,IAAIjQ,GAAS,EAAG,EAAG,IACpC+rB,EAAKzmK,IAAKolK,GAEV,IAAMC,EAAW,IAAI5B,GAAmBI,GAlBjB,EAkB8Bpc,EAAMC,GAC3D2d,EAAS9c,OAASke,EAAKle,OACvB8c,EAAS9f,GAAG1iJ,IAAK,GAAK,EAAG,GACzBwiK,EAAS1a,OAAQ,IAAIjQ,IAAW,EAAG,EAAG,IACtC+rB,EAAKzmK,IAAKqlK,GAEV,IAAMC,EAAW,IAAI7B,GAAmBI,GAxBjB,EAwB8Bpc,EAAMC,GAC3D4d,EAAS/c,OAASke,EAAKle,OACvB+c,EAAS/f,GAAG1iJ,IAAK,EAAG,EAAG,GACvByiK,EAAS3a,OAAQ,IAAIjQ,GAAS,EAAG,EAAG,IACpC+rB,EAAKzmK,IAAKslK,GAEV,IAAMC,EAAW,IAAI9B,GAAmBI,GA9BjB,EA8B8Bpc,EAAMC,GAC3D6d,EAAShd,OAASke,EAAKle,OACvBgd,EAAShgB,GAAG1iJ,IAAK,EAAG,GAAK,GACzB0iK,EAAS5a,OAAQ,IAAIjQ,GAAS,GAAK,EAAG,IACtC+rB,EAAKzmK,IAAKulK,GAEV,IAAMC,EAAW,IAAI/B,GAAmBI,GApCjB,EAoC8Bpc,EAAMC,GAC3D8d,EAASjd,OAASke,EAAKle,OACvBid,EAASjgB,GAAG1iJ,IAAK,GAAK,EAAG,GACzB2iK,EAAS7a,OAAQ,IAAIjQ,GAAS,EAAG,EAAG,IACpC+rB,EAAKzmK,IAAKwlK,GAEV,IAAMC,EAAW,IAAIhC,GAAmBI,GA1CjB,EA0C8Bpc,EAAMC,GAItC,OAHrB+d,EAASld,OAASke,EAAKle,OACvBkd,EAASlgB,GAAG1iJ,IAAK,GAAK,EAAG,GACzB4iK,EAAS9a,OAAQ,IAAIjQ,GAAS,EAAG,GAAK,IACtC+rB,EAAKzmK,IAAKylK,GAAWgB,CAEtB,CAiDC,OAjDAtpL,EAAA2nL,EAAA,EAAA1uL,IAAA,SAAA/D,MAED,SAAQqzL,EAAUC,GAEI,OAAhB/xL,KAAKk9D,QAAkBl9D,KAAKu3K,oBAEjC,IAAM8Z,EAAerxL,KAAKqxL,aAE1BW,EAAAtwK,EAAuE1hB,KAAK4d,SAAQ,GAA5E4zK,EAAQQ,EAAA,GAAEP,EAAQO,EAAA,GAAEN,EAAQM,EAAA,GAAEL,EAAQK,EAAA,GAAEJ,EAAQI,EAAA,GAAEH,EAAQG,EAAA,GAE5DC,EAAsBH,EAASI,kBAE/BG,EAAqBP,EAASQ,YAC9BC,EAAmBT,EAASU,GAAG3B,QAErCiB,EAASQ,YAAc7oC,GACvBqoC,EAASU,GAAG3B,SAAU,EAEtB,IAAMhyB,EAAkBwyB,EAAahwB,QAAQxC,gBAE7CwyB,EAAahwB,QAAQxC,iBAAkB,EAEvCizB,EAASW,gBAAiBpB,EAAc,GACxCS,EAAStsL,OAAQusL,EAAOP,GAExBM,EAASW,gBAAiBpB,EAAc,GACxCS,EAAStsL,OAAQusL,EAAON,GAExBK,EAASW,gBAAiBpB,EAAc,GACxCS,EAAStsL,OAAQusL,EAAOL,GAExBI,EAASW,gBAAiBpB,EAAc,GACxCS,EAAStsL,OAAQusL,EAAOJ,GAExBG,EAASW,gBAAiBpB,EAAc,GACxCS,EAAStsL,OAAQusL,EAAOH,GAExBP,EAAahwB,QAAQxC,gBAAkBA,EAEvCizB,EAASW,gBAAiBpB,EAAc,GACxCS,EAAStsL,OAAQusL,EAAOF,GAExBC,EAASW,gBAAiBR,GAE1BH,EAASQ,YAAcD,EACvBP,EAASU,GAAG3B,QAAU0B,EAEtBlB,EAAahwB,QAAQjC,kBAAmB,CAEzC,KAAC8xB,CAAA,CA/Fc,CAAS1b,IAmGnBkd,GAAW,SAAAC,GAAA32K,EAAA02K,EAAAC,GAAA,IAAAC,EAAAj4K,EAAA+3K,GAEhB,SAAAA,EAAaj1B,EAAQnZ,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,EAAYC,GAAW,IAAAy0B,EASnF,OATmFzoL,EAAA,KAAAioL,GAEtGj1B,OAAoBrzJ,IAAXqzJ,EAAuBA,EAAS,GACzCnZ,OAAsBl6I,IAAZk6I,EAAwBA,EAAU0F,IAE5CkpC,EAAAN,EAAA/1L,KAAA,KAAO4gK,EAAQnZ,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,EAAYC,IAEjFq0B,eAAgB,EAErBI,EAAKn0B,OAAQ,EAAMm0B,CAEpB,CAYC,OAZA3pL,EAAAmpL,EAAA,EAAAlwL,IAAA,SAAAutB,IAED,WAEC,OAAO/vB,KAAKm5I,KAEb,EAAClqH,IAED,SAAYxwB,GAEXuB,KAAKm5I,MAAQ16I,CAEd,KAACi0L,CAAA,CAzBe,CAAS30B,IA6BpBg1B,GAAqB,SAAAC,GAAAh3K,EAAA+2K,EAAAC,GAAA,IAAAC,EAAAt4K,EAAAo4K,GAE1B,SAAAA,IAAsC,IAAA2E,EAAzBnyI,EAAItlD,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGgB,EAAOhB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAACwK,EAAA,KAAAsoL,IAElC2E,EAAAzE,EAAAp2L,KAAA,KAAO0oD,EAAMA,EAAMtkD,IAEdswL,yBAA0B,EAE/B,IAAMp4C,EAAQ,CAAEhrI,MAAOo3C,EAAMn3C,OAAQm3C,EAAMgpD,MAAO,GAC5CkvD,EAAS,CAAEtkB,EAAOA,EAAOA,EAAOA,EAAOA,EAAOA,GAewC,OAb5Fu+C,EAAKr2B,QAAU,IAAIqxB,GAAaj1B,EAAQx8J,EAAQqjJ,QAASrjJ,EAAQk9J,MAAOl9J,EAAQm9J,MAAOn9J,EAAQo9J,UAAWp9J,EAAQq9J,UAAWr9J,EAAQs9J,OAAQt9J,EAAQ2D,KAAM3D,EAAQu9J,WAAYv9J,EAAQw9J,UAUvLi5B,EAAKr2B,QAAQlC,uBAAwB,EAErCu4B,EAAKr2B,QAAQxC,qBAA8Cz0J,IAA5BnJ,EAAQ49J,iBAAgC59J,EAAQ49J,gBAC/E64B,EAAKr2B,QAAQ/C,eAAkCl0J,IAAtBnJ,EAAQq9J,UAA0Br9J,EAAQq9J,UAAYzT,GAAa6sC,CAE7F,CA0GC,OA1GAnuL,EAAAwpL,EAAA,EAAAvwL,IAAA,6BAAA/D,MAED,SAA4BqzL,EAAUzwB,GAErCrhK,KAAKqhK,QAAQz8J,KAAOy8J,EAAQz8J,KAC5B5E,KAAKqhK,QAAQ5C,SAAW4C,EAAQ5C,SAEhCz+J,KAAKqhK,QAAQxC,gBAAkBwC,EAAQxC,gBACvC7+J,KAAKqhK,QAAQ/C,UAAY+C,EAAQ/C,UACjCt+J,KAAKqhK,QAAQhD,UAAYgD,EAAQhD,UAEjC,IAAM80B,EAEK,CACTC,UAAW,CAAE30L,MAAO,OAHhB00L,EAMmB,qYANnBA,EA0BqB,+UAoBrBroB,EAAW,IAAI2hB,GAAa,EAAG,EAAG,GAElC5T,EAAW,IAAI0V,GAAgB,CAEpCp1L,KAAM,sBAENi1L,SAAUF,GAAeiF,GACzBvE,aAAcuE,EACdtE,eAAgBsE,EAChBtX,KAAMz0B,GACNw0B,SAAUp0B,KAIXqxB,EAASuV,SAASgF,UAAU30L,MAAQ4iK,EAEpC,IAAMgyB,EAAO,IAAInI,GAAMpgB,EAAU+N,GAE3Bya,EAAmBjyB,EAAQ/C,UAajC,OAVK+C,EAAQ/C,YAActT,KAA2BqW,EAAQ/C,UAAYzT,IAE3D,IAAIqmC,GAAY,EAAG,GAAIlxL,MAC/BsjK,OAAQwuB,EAAUuB,GAEzBhyB,EAAQ/C,UAAYg1B,EAEpBD,EAAKvoB,SAASpJ,UACd2xB,EAAKxa,SAASnX,UAEP1hK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOqzL,EAAUtqJ,EAAO+mE,EAAOglF,GAI9B,IAFA,IAAMtB,EAAsBH,EAASI,kBAE3Bx1L,EAAI,EAAGA,EAAI,EAAGA,IAEvBo1L,EAASW,gBAAiBzyL,KAAMtD,GAEhCo1L,EAAS3xL,MAAOqnC,EAAO+mE,EAAOglF,GAI/BzB,EAASW,gBAAiBR,EAE3B,KAACc,CAAA,CApIyB,CAAS/xB,IAwI9BwyB,GAAyB,IAAI1sB,GAC7B2sB,GAAyB,IAAI3sB,GAC7B4sB,GAA8B,IAAIl9B,GAElCm9B,GAAK,WAEV,SAAAA,IAA6D,IAAhD5qB,EAAM9oK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAS,EAAG,EAAG,GAAKyE,EAAQtrK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAkpL,GAEzD3zL,KAAKo0L,SAAU,EAIfp0L,KAAK+oK,OAASA,EACd/oK,KAAKurK,SAAWA,CAEjB,CAsLC,OAtLAhiK,EAAAoqL,EAAA,EAAAnxL,IAAA,MAAA/D,MAED,SAAKsqK,EAAQwC,GAKZ,OAHAvrK,KAAK+oK,OAAOrN,KAAMqN,GAClB/oK,KAAKurK,SAAWA,EAETvrK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAevC,EAAGmL,EAAGC,EAAGF,GAKvB,OAHApH,KAAK+oK,OAAO95I,IAAK/yB,EAAGmL,EAAGC,GACvBtH,KAAKurK,SAAWnkK,EAETpH,IAER,GAAC,CAAAwC,IAAA,gCAAA/D,MAED,SAA+BsqK,EAAQ2B,GAKtC,OAHA1qK,KAAK+oK,OAAOrN,KAAMqN,GAClB/oK,KAAKurK,UAAab,EAAMzG,IAAKjkK,KAAK+oK,QAE3B/oK,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuBzC,EAAGuK,EAAGtK,GAE5B,IAAM8sK,EAASyqB,GAASl+B,WAAYr5J,EAAGsK,GAAIiqK,MAAOijB,GAASn+B,WAAYt5J,EAAGuK,IAAMs6G,YAMhF,OAFA7gH,KAAK4zL,8BAA+B7qB,EAAQ/sK,GAErCgE,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM6sK,GAKL,OAHAtrK,KAAK+oK,OAAOrN,KAAM4P,EAAMvC,QACxB/oK,KAAKurK,SAAWD,EAAMC,SAEfvrK,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,WAIC,IAAMo1L,EAAsB,EAAM7zL,KAAK+oK,OAAOnxK,SAI9C,OAHAoI,KAAK+oK,OAAOxT,eAAgBs+B,GAC5B7zL,KAAKurK,UAAYsoB,EAEV7zL,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAKC,OAHAuB,KAAKurK,WAAc,EACnBvrK,KAAK+oK,OAAO6d,SAEL5mL,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBisK,GAEhB,OAAO1qK,KAAK+oK,OAAO9E,IAAKyG,GAAU1qK,KAAKurK,QAExC,GAAC,CAAA/oK,IAAA,mBAAA/D,MAED,SAAkB2sK,GAEjB,OAAOprK,KAAKwtK,gBAAiBpC,EAAO/U,QAAW+U,EAAOlC,MAEvD,GAAC,CAAA1mK,IAAA,eAAA/D,MAED,SAAcisK,EAAOnpK,GAEpB,OAAOA,EAAOm6J,KAAM17J,KAAK+oK,QAASxT,gBAAkBv1J,KAAKwtK,gBAAiB9C,IAAUt+I,IAAKs+I,EAE1F,GAAC,CAAAloK,IAAA,gBAAA/D,MAED,SAAe4vG,EAAM9sG,GAEpB,IAAM8sK,EAAYhgE,EAAKjxG,MAAOo2L,IAExB/qB,EAAczoK,KAAK+oK,OAAO9E,IAAKoK,GAErC,GAAqB,IAAhB5F,EAGJ,OAA4C,IAAvCzoK,KAAKwtK,gBAAiBn/D,EAAKvjE,OAExBvpC,EAAOm6J,KAAMrtD,EAAKvjE,OAKnB,KAIR,IAAMxzC,IAAQ+2G,EAAKvjE,MAAMm5H,IAAKjkK,KAAK+oK,QAAW/oK,KAAKurK,UAAa9C,EAEhE,OAAKnxK,EAAI,GAAKA,EAAI,EAEV,KAIDiK,EAAOm6J,KAAM2S,GAAY9Y,eAAgBj+J,GAAI80B,IAAKiiF,EAAKvjE,MAE/D,GAAC,CAAAtoC,IAAA,iBAAA/D,MAED,SAAgB4vG,GAIf,IAAMylF,EAAY9zL,KAAKwtK,gBAAiBn/D,EAAKvjE,OACvCipJ,EAAU/zL,KAAKwtK,gBAAiBn/D,EAAKtjE,KAE3C,OAAS+oJ,EAAY,GAAKC,EAAU,GAASA,EAAU,GAAKD,EAAY,CAEzE,GAAC,CAAAtxL,IAAA,gBAAA/D,MAED,SAAe+rK,GAEd,OAAOA,EAAIwpB,gBAAiBh0L,KAE7B,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB2sK,GAEjB,OAAOA,EAAO4oB,gBAAiBh0L,KAEhC,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAe8C,GAEd,OAAOA,EAAOm6J,KAAM17J,KAAK+oK,QAASxT,gBAAkBv1J,KAAKurK,SAE1D,GAAC,CAAA/oK,IAAA,eAAA/D,MAED,SAAci7J,EAAQu6B,GAErB,IAAMpe,EAAeoe,GAAwBP,GAActN,gBAAiB1sB,GAEtEw6B,EAAiBl0L,KAAKm0L,cAAeX,IAAW3rB,aAAcnO,GAE9DqP,EAAS/oK,KAAK+oK,OAAOrJ,aAAcmW,GAAeh1D,YAIxD,OAFA7gH,KAAKurK,UAAa2oB,EAAejwB,IAAK8E,GAE/B/oK,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsrC,GAIV,OAFA/pC,KAAKurK,UAAYxhI,EAAOk6H,IAAKjkK,KAAK+oK,QAE3B/oK,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ6sK,GAEP,OAAOA,EAAMvC,OAAOyD,OAAQxsK,KAAK+oK,SAAcuC,EAAMC,WAAavrK,KAAKurK,QAExE,GAAC,CAAA/oK,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAAC2zL,CAAA,CAjMS,GAqMLU,GAA0B,IAAInnB,GAC9BonB,GAA0B,IAAIxtB,GAE9BytB,GAAO,WAEZ,SAAAA,IAA0H,IAA7G1nB,EAAE5sK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAASr8D,EAAEr3H,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAASp8D,EAAEt3H,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAAStY,EAAEp7K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAASa,EAAEv0L,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAASc,EAAEx0L,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAAOlpL,EAAA,KAAA8pL,GAEtHv0L,KAAK00L,OAAS,CAAE7nB,EAAIv1C,EAAIC,EAAI8jD,EAAImZ,EAAIC,EAErC,CA+IC,OA/IAlrL,EAAAgrL,EAAA,EAAA/xL,IAAA,MAAA/D,MAED,SAAKouK,EAAIv1C,EAAIC,EAAI8jD,EAAImZ,EAAIC,GAExB,IAAMC,EAAS10L,KAAK00L,OASpB,OAPAA,EAAQ,GAAIh5B,KAAMmR,GAClB6nB,EAAQ,GAAIh5B,KAAMpkC,GAClBo9D,EAAQ,GAAIh5B,KAAMnkC,GAClBm9D,EAAQ,GAAIh5B,KAAM2f,GAClBqZ,EAAQ,GAAIh5B,KAAM84B,GAClBE,EAAQ,GAAIh5B,KAAM+4B,GAEXz0L,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMk2L,GAIL,IAFA,IAAMD,EAAS10L,KAAK00L,OAEVh4L,EAAI,EAAGA,EAAI,EAAGA,IAEvBg4L,EAAQh4L,GAAIg/J,KAAMi5B,EAAQD,OAAQh4L,IAInC,OAAOsD,IAER,GAAC,CAAAwC,IAAA,0BAAA/D,MAED,SAAyBqI,GAExB,IAAM4tL,EAAS10L,KAAK00L,OACdtsJ,EAAKthC,EAAEk/H,SACP4uD,EAAMxsJ,EAAI,GAAKysJ,EAAMzsJ,EAAI,GAAK0sJ,EAAM1sJ,EAAI,GAAK2sJ,EAAM3sJ,EAAI,GACvD4sJ,EAAM5sJ,EAAI,GAAK6sJ,EAAM7sJ,EAAI,GAAK8sJ,EAAM9sJ,EAAI,GAAK+sJ,EAAM/sJ,EAAI,GACvDgtJ,EAAMhtJ,EAAI,GAAKitJ,EAAMjtJ,EAAI,GAAKktJ,EAAOltJ,EAAI,IAAMmtJ,EAAOntJ,EAAI,IAC1DotJ,EAAOptJ,EAAI,IAAMqtJ,EAAOrtJ,EAAI,IAAMstJ,EAAOttJ,EAAI,IAAMutJ,EAAOvtJ,EAAI,IASpE,OAPAssJ,EAAQ,GAAIkB,cAAeb,EAAMH,EAAKO,EAAMH,EAAKO,EAAOH,EAAKO,EAAOH,GAAO30E,YAC3E6zE,EAAQ,GAAIkB,cAAeb,EAAMH,EAAKO,EAAMH,EAAKO,EAAOH,EAAKO,EAAOH,GAAO30E,YAC3E6zE,EAAQ,GAAIkB,cAAeb,EAAMF,EAAKM,EAAMF,EAAKM,EAAOF,EAAKM,EAAOF,GAAO50E,YAC3E6zE,EAAQ,GAAIkB,cAAeb,EAAMF,EAAKM,EAAMF,EAAKM,EAAOF,EAAKM,EAAOF,GAAO50E,YAC3E6zE,EAAQ,GAAIkB,cAAeb,EAAMD,EAAKK,EAAMD,EAAKK,EAAOD,EAAMK,EAAOD,GAAO70E,YAC5E6zE,EAAQ,GAAIkB,cAAeb,EAAMD,EAAKK,EAAMD,EAAKK,EAAOD,EAAMK,EAAOD,GAAO70E,YAErE7gH,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB0D,GAEjB,IAAM2oK,EAAW3oK,EAAO2oK,SAMxB,OAJiC,OAA5BA,EAASmb,gBAA0Bnb,EAASwb,wBAEjD+N,GAAU34B,KAAMoP,EAASmb,gBAAiBpe,aAAc1lK,EAAO8lK,aAExDjoK,KAAKutK,iBAAkB8mB,GAE/B,GAAC,CAAA7xL,IAAA,mBAAA/D,MAED,SAAkBo3L,GAMjB,OAJAxB,GAAUh+B,OAAOpnI,IAAK,EAAG,EAAG,GAC5BolK,GAAUnrB,OAAS,kBACnBmrB,GAAUxsB,aAAcguB,EAAO5tB,aAExBjoK,KAAKutK,iBAAkB8mB,GAE/B,GAAC,CAAA7xL,IAAA,mBAAA/D,MAED,SAAkB2sK,GAMjB,IAJA,IAAMspB,EAAS10L,KAAK00L,OACdr+B,EAAS+U,EAAO/U,OAChBy/B,GAAc1qB,EAAOlC,OAEjBxsK,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAI9B,GAFiBg4L,EAAQh4L,GAAI8wK,gBAAiBnX,GAE9By/B,EAEf,OAAO,CAIT,CAEA,OAAO,CAER,GAAC,CAAAtzL,IAAA,gBAAA/D,MAED,SAAe+rK,GAId,IAFA,IAAMkqB,EAAS10L,KAAK00L,OAEVh4L,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAM4uK,EAAQopB,EAAQh4L,GAQtB,GAJA43L,GAAUp4L,EAAIovK,EAAMvC,OAAO7sK,EAAI,EAAIsuK,EAAIttK,IAAIhB,EAAIsuK,EAAIt/H,IAAIhvC,EACvDo4L,GAAUjtL,EAAIikK,EAAMvC,OAAO1hK,EAAI,EAAImjK,EAAIttK,IAAImK,EAAImjK,EAAIt/H,IAAI7jC,EACvDitL,GAAUhtL,EAAIgkK,EAAMvC,OAAOzhK,EAAI,EAAIkjK,EAAIttK,IAAIoK,EAAIkjK,EAAIt/H,IAAI5jC,EAElDgkK,EAAMkC,gBAAiB8mB,IAAc,EAEzC,OAAO,CAIT,CAEA,OAAO,CAER,GAAC,CAAA9xL,IAAA,gBAAA/D,MAED,SAAeisK,GAId,IAFA,IAAMgqB,EAAS10L,KAAK00L,OAEVh4L,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAKg4L,EAAQh4L,GAAI8wK,gBAAiB9C,GAAU,EAE3C,OAAO,EAMT,OAAO,CAER,GAAC,CAAAloK,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACu0L,CAAA,CArJW,GAyJb,SAASwB,KAER,IAAIx2L,EAAU,KACVy2L,GAAc,EACdC,EAAgB,KAChBC,EAAY,KAEhB,SAASC,EAAkBluJ,EAAMmuJ,GAEhCH,EAAehuJ,EAAMmuJ,GAErBF,EAAY32L,EAAQkiE,sBAAuB00H,EAE5C,CAEA,MAAO,CAENrrJ,MAAO,YAEe,IAAhBkrJ,GACkB,OAAlBC,IAELC,EAAY32L,EAAQkiE,sBAAuB00H,GAE3CH,GAAc,EAEf,EAEAvnH,KAAM,WAELlvE,EAAQ2jE,qBAAsBgzH,GAE9BF,GAAc,CAEf,EAEAK,iBAAkB,SAAWl+I,GAE5B89I,EAAgB99I,CAEjB,EAEAm+I,WAAY,SAAW73L,GAEtBc,EAAUd,CAEX,EAIF,CAEA,SAAS83L,GAAiB3pI,EAAI4pI,GAE7B,IAAMC,EAAWD,EAAaC,SAExBC,EAAU,IAAI31I,QAiLpB,MAAO,CAENhxB,IAjED,SAAcmmI,GAIb,OAFKA,EAAUszB,+BAA+BtzB,EAAYA,EAAUxyH,MAE7DgzJ,EAAQ3mK,IAAKmmI,EAErB,EA4DCt1F,OA1DD,SAAiBs1F,GAEXA,EAAUszB,+BAA+BtzB,EAAYA,EAAUxyH,MAEpE,IAAMA,EAAOgzJ,EAAQ3mK,IAAKmmI,GAErBxyH,IAEJkpB,EAAG+pI,aAAcjzJ,EAAKy2H,QAEtBu8B,EAAQl5J,OAAQ04H,GAIlB,EA6CCoN,OA3CD,SAAiBpN,EAAW0gC,GAE3B,GAAK1gC,EAAU6wB,oBAAf,CAEC,IAAM8P,EAASH,EAAQ3mK,IAAKmmI,KAErB2gC,GAAUA,EAAOx9L,QAAU68J,EAAU78J,UAE3Cq9L,EAAQznK,IAAKinI,EAAW,CACvBiE,OAAQjE,EAAUiE,OAClBv1J,KAAMsxJ,EAAUtxJ,KAChBkyL,gBAAiB5gC,EAAU6gC,YAC3B19L,QAAS68J,EAAU78J,SAOtB,KAjBA,CAmBK68J,EAAUszB,+BAA+BtzB,EAAYA,EAAUxyH,MAEpE,IAAMA,EAAOgzJ,EAAQ3mK,IAAKmmI,QAEZ9rJ,IAATs5B,EAEJgzJ,EAAQznK,IAAKinI,EAnKf,SAAuBA,EAAW0gC,GAEjC,IAUIhyL,EAVE7B,EAAQmzJ,EAAUnzJ,MAClB2/K,EAAQxsB,EAAUwsB,MAElBvoB,EAASvtG,EAAGoqI,eASlB,GAPApqI,EAAGqqI,WAAYL,EAAYz8B,GAC3BvtG,EAAGsqI,WAAYN,EAAY7zL,EAAO2/K,GAElCxsB,EAAUgtB,mBAILngL,aAAiB8xJ,aAErBjwJ,EAAO,UAED,GAAK7B,aAAiB+xJ,YAE5B,GAAKoB,EAAU0uB,yBAA2B,CAEzC,IAAK6R,EAMJ,MAAM,IAAI34L,MAAO,2EAJjB8G,EAAO,IAQT,MAECA,EAAO,UAIF,GAAK7B,aAAiBiyJ,WAE5BpwJ,EAAO,UAED,GAAK7B,aAAiBwkG,YAE5B3iG,EAAO,UAED,GAAK7B,aAAiBi3J,WAE5Bp1J,EAAO,UAED,GAAK7B,aAAiBkyJ,UAE5BrwJ,EAAO,UAED,GAAK7B,aAAiBwyG,WAE5B3wG,EAAO,SAED,MAAK7B,aAAiBg3J,mBAM5B,MAAM,IAAIj8J,MAAO,0DAA4DiF,GAJ7E6B,EAAO,IAMR,CAEA,MAAO,CACNu1J,OAAQA,EACRv1J,KAAMA,EACNkyL,gBAAiB/zL,EAAMo0L,kBACvB99L,QAAS68J,EAAU78J,QAGrB,CAwF0B29L,CAAc9gC,EAAW0gC,IAEtClzJ,EAAKrqC,QAAU68J,EAAU78J,WAxFtC,SAAuB8gK,EAAQjE,EAAW0gC,GAEzC,IAAM7zL,EAAQmzJ,EAAUnzJ,MAClB4/K,EAAczsB,EAAUysB,YAE9B/1H,EAAGqqI,WAAYL,EAAYz8B,IAEE,IAAxBwoB,EAAYhlG,MAIhB/wB,EAAGwqI,cAAeR,EAAY,EAAG7zL,IAI5B0zL,EAEJ7pI,EAAGwqI,cAAeR,EAAYjU,EAAY54I,OAAShnC,EAAMo0L,kBACxDp0L,EAAO4/K,EAAY54I,OAAQ44I,EAAYhlG,OAIxC/wB,EAAGwqI,cAAeR,EAAYjU,EAAY54I,OAAShnC,EAAMo0L,kBACxDp0L,EAAMs0L,SAAU1U,EAAY54I,OAAQ44I,EAAY54I,OAAS44I,EAAYhlG,QAIvEglG,EAAYhlG,OAAU,EAIxB,CA2DE25G,CAAc5zJ,EAAKy2H,OAAQjE,EAAW0gC,GAEtClzJ,EAAKrqC,QAAU68J,EAAU78J,QAd1B,CAkBD,EAUD,CAAC,IAEKk+L,GAAa,SAAAC,GAAAx7K,EAAAu7K,EAAAC,GAAA,IAAAC,EAAA98K,EAAA48K,GAElB,SAAAA,IAA4E,IAAAwW,EAA/D5/L,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG4sL,EAAa5sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG6sL,EAAc7sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAA8sL,IAExEwW,EAAAtW,EAAA56L,KAAA,OAEK+H,KAAO,gBAEZmpM,EAAKv1B,WAAa,CACjBrqK,MAAOA,EACPC,OAAQA,EACRy+K,cAAeA,EACfC,eAAgBA,GAsBjB,IAnBA,IAAM6K,EAAaxpL,EAAQ,EACrBypL,EAAcxpL,EAAS,EAEvBm/K,EAAQtwL,KAAKwf,MAAOowK,GACpBW,EAAQvwL,KAAKwf,MAAOqwK,GAEpBgB,EAASP,EAAQ,EACjBQ,EAASP,EAAQ,EAEjBqK,EAAgB1pL,EAAQo/K,EACxBuK,EAAiB1pL,EAASo/K,EAI1BrG,EAAU,GACV8F,EAAW,GACX5F,EAAU,GACVC,EAAM,GAEF7f,EAAK,EAAGA,EAAKsmB,EAAQtmB,IAI9B,IAFA,IAAMpgK,EAAIogK,EAAKqwB,EAAiBF,EAEtBpwB,EAAK,EAAGA,EAAKsmB,EAAQtmB,IAAQ,CAEtC,IAAMtrK,EAAIsrK,EAAKqwB,EAAgBF,EAE/B1K,EAASnwL,KAAMZ,GAAKmL,EAAG,GAEvBggL,EAAQvqL,KAAM,EAAG,EAAG,GAEpBwqL,EAAIxqL,KAAM0qK,EAAK+lB,GACfjG,EAAIxqL,KAAM,EAAM2qK,EAAK+lB,EAEtB,CAID,IAAM,IAAI/lB,EAAK,EAAGA,EAAK+lB,EAAO/lB,IAE7B,IAAM,IAAID,EAAK,EAAGA,EAAK+lB,EAAO/lB,IAAQ,CAErC,IAAMxrK,EAAIwrK,EAAKsmB,EAASrmB,EAClBlhK,EAAIihK,EAAKsmB,GAAWrmB,EAAK,GACzBxrK,EAAMurK,EAAK,EAAMsmB,GAAWrmB,EAAK,GACjCjhK,EAAMghK,EAAK,EAAMsmB,EAASrmB,EAEhC0f,EAAQrqL,KAAMd,EAAGuK,EAAGC,GACpB2gL,EAAQrqL,KAAMyJ,EAAGtK,EAAGuK,EAErB,CAO+D,OAHhEunM,EAAK/jB,SAAU7C,GACf4mB,EAAKj7L,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACrE8gB,EAAKj7L,aAAc,SAAU,IAAI+xK,GAAwBwC,EAAS,IAClE0mB,EAAKj7L,aAAc,KAAM,IAAI+xK,GAAwByC,EAAK,IAAMymB,CAEjE,CAMC,OANAxkM,EAAAguL,EAAA,OAAA/0L,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAI6zJ,EAAe7zJ,EAAKv1B,MAAOu1B,EAAKt1B,OAAQs1B,EAAKmpJ,cAAenpJ,EAAKopJ,eAE7E,KAACyK,CAAA,CAhFiB,CAAS7R,IA4WtBqS,GAAc,CACnBC,kBAzRuB,iFA0RvBC,uBAxR4B,6DAyR5BC,mBAvRwB,6EAwRxBC,wBAtR6B,2DAuR7BC,eArRoB,maAsRpBC,oBApRyB,wFAqRzBC,aAnRkB,uCAoRlBC,mBAlRwB,+GAmRxBC,MAjRW,gzMAkRX4oL,qBAhR0B,w2FAiR1B3oL,sBA/Q2B,o2BAgR3BC,yBA9Q8B,6nBA+Q9BC,8BA7QmC,4HA8QnCC,4BA5QiC,qEA6QjCC,uBA3Q4B,2EA4Q5BC,eA1QoB,+HA2QpBC,oBAzQyB,qHA0QzBC,kBAxQuB,wJAyQvBC,aAvQkB,iRAwQlBC,OAtQY,mzEAuQZC,4BArQiC,2pHAsQjCC,qBApQ0B,2jBAqQ1BC,4BAnQiC,kJAoQjCC,uBAlQ4B,mKAmQ5BC,qBAjQ0B,uIAkQ1BC,0BAhQ+B,mEAiQ/BC,mBA/PwB,sDAgQxBC,wBA9P6B,6QA+P7BC,gBA7PqB,+qCA8PrBC,4BA5PiC,6MA6PjCC,qBA3P0B,+UA4P1BC,mBA1PwB,sTA2PxBC,8BAnOmC,04BAoOnCC,cA1PmB,4oBA2PnBC,WAzPgB,wDA0PhBC,gBAxPqB,qDAyPrBC,aAvPkB,2RAwPlBC,kBAtPuB,2MAuPvBC,0BArP+B,8cAsP/BC,kBApPuB,gNAqPvBC,uBAnP4B,iGAoP5B8mL,wBAlP6B,sHAmP7BC,6BAjPkC,64BAkPlC7mL,kBAhPuB,iwJAiPvBC,qBA7O0B,oEA8O1BC,0BA5O+B,20BA6O/BC,sBA3O2B,sMA4O3BC,2BA1OgC,mqCA2OhCC,yBAzO8B,ozFA0O9BC,8BAxOmC,0hQAyOnCC,sBAvO2B,mvKAwO3BC,qBAtO0B,gsBAuO1BC,oBArOyB,2QAsOzBC,qBApO0B,mLAqO1BC,0BAnO+B,yKAoO/BC,wBAlO6B,sLAmO7BC,mBAjOwB,+XAkOxBC,aAhOkB,8ZAiOlBC,kBA/NuB,mDAgOvBC,sBA9N2B,iSA+N3BC,2BA7NgC,uMA8NhCC,sBA5N2B,uKA6N3BC,2BA3NgC,qEA4NhCC,kBA1NuB,6eA2NvBC,mBAzNwB,+jBA0NxBC,wBAxN6B,k1BAyN7BC,mBAvNwB,u2BAwNxBC,sBAtN2B,4uBAuN3BC,qBArN0B,mqBAsN1BC,qBApN0B,iJAqN1BC,mBAnNwB,iJAoNxBC,cAlNmB,mOAmNnBC,wBAjN6B,q5BAkN7BC,gCAhNqC,yEAiNrCC,+BA/MoC,mXAgNpCC,wBA9M6B,mRA+M7B8kL,0BA7M+B,oKA8M/B7kL,gBA5MqB,4LA6MrBC,QA3Ma,wvDA4MbC,6BA1MkC,4EA2MlCC,eAzMoB,oNA0MpBC,mBAxMwB,gFAyMxBC,wBAvM6B,2UAwM7BC,sBAtM2B,uKAuM3BC,2BArMgC,qEAsMhCC,wBApM6B,uiSAqM7BC,sBAnM2B,kzCAoM3BC,iBAlMsB,88CAmMtBC,yBAjM8B,i5CAkM9BC,gBAhMqB,kOAiMrBC,qBA/L0B,qyBAgM1BC,gBA9LqB,+XA+LrBC,kBA7LuB,qdA8LvBC,qBA5L0B,0LA6L1BC,0BA3L+B,mEA4L/BC,qBA1L0B,6FA2L1BC,0BAzL+B,oyCA0L/BC,sBAxL2B,sjCAyL3BC,2BAvLgC,ymGAwLhCC,iBAtLsB,yFAuLtBC,eArLoB,wIAsLpBC,UApLe,qEAqLfC,kBAnLuB,oFAoLvBC,gBAlLqB,yIAmLrBC,WAjLgB,8GAkLhBC,gBAhLqB,+UAkLrBC,gBAhLgB,8JAiLhBC,gBA/KkB,gbAgLlBgjL,oBA9KgB,iOA+KhBC,oBA7KkB,isBA8KlBhjL,UA5KgB,iOA6KhBC,UA3KkB,0VA4KlBC,WA1KgB,wuBA2KhBC,WAzKkB,83BA0KlBC,kBAxKgB,ktBAyKhBC,kBAvKkB,iuBAwKlBC,cAtKgB,+LAuKhBC,cArKkB,yTAsKlBC,gBApKgB,+jBAqKhBC,gBAnKkB,wwBAoKlBC,eAlKgB,o7BAmKhBC,eAjKkB,qnDAkKlBC,iBAhKgB,koCAiKhBC,iBA/JkB,s7DAgKlBC,gBA9JgB,k7BA+JhBC,gBA7JkB,y+CA8JlBC,gBA5JgB,4+BA6JhBC,gBA3JkB,0qBA4JlBC,eA1JgB,goCA2JhBC,eAzJkB,oiEA0JlBC,kBAxJgB,itCAyJhBC,kBAvJkB,+2HAwJlBC,cAtJgB,okCAuJhBC,cArJkB,myDAsJlBC,YApJgB,qtBAqJhBC,YAnJkB,6vBAoJlBC,YAlJgB,yhBAmJhBC,YAjJkB,maAkJlBC,YAhJgB,snCAiJhBC,YA/IkB,ouBAsJbC,GAAc,CAEnBrH,OAAQ,CAEPsH,QAAS,CAAE/hM,MAAqB,IAAI88J,GAAO,WAC3C/mI,QAAS,CAAE/1B,MAAO,GAElBlC,IAAK,CAAEkC,MAAO,MACdgiM,YAAa,CAAEhiM,MAAqB,IAAI+3J,IACxCkqC,aAAc,CAAEjiM,MAAqB,IAAI+3J,IAEzC4oB,SAAU,CAAE3gL,MAAO,MACnB8iL,UAAW,CAAE9iL,MAAO,IAIrBkiM,YAAa,CAEZvgB,YAAa,CAAE3hL,MAAO,OAIvBmiM,OAAQ,CAEPrgB,OAAQ,CAAE9hL,MAAO,MACjBoiM,WAAY,CAAEpiM,OAAS,GACvBiiL,aAAc,CAAEjiL,MAAO,GACvBqiM,IAAK,CAAEriM,MAAO,KACdkiL,gBAAiB,CAAEliL,MAAO,MAI3BsiM,MAAO,CAENxhB,MAAO,CAAE9gL,MAAO,MAChB+gL,eAAgB,CAAE/gL,MAAO,IAI1BuiM,SAAU,CAET3hB,SAAU,CAAE5gL,MAAO,MACnB6gL,kBAAmB,CAAE7gL,MAAO,IAI7BwiM,YAAa,CAEZ9gB,YAAa,CAAE1hL,MAAO,OAIvByiM,QAAS,CAERzhB,QAAS,CAAEhhL,MAAO,MAClBihL,UAAW,CAAEjhL,MAAO,IAIrB0iM,UAAW,CAEVxhB,UAAW,CAAElhL,MAAO,MACpBohL,YAAa,CAAEphL,MAAqB,IAAI02J,GAAS,EAAG,KAIrDisC,gBAAiB,CAEhBthB,gBAAiB,CAAErhL,MAAO,MAC1BshL,kBAAmB,CAAEthL,MAAO,GAC5BuhL,iBAAkB,CAAEvhL,MAAO,IAI5B4iM,aAAc,CAEbphB,aAAc,CAAExhL,MAAO,OAIxB6iM,aAAc,CAEbphB,aAAc,CAAEzhL,MAAO,OAIxB8iM,YAAa,CAEZ3gB,YAAa,CAAEniL,MAAO,OAIvBk9K,IAAK,CAEJ6lB,WAAY,CAAE/iM,MAAO,OACrBgjM,QAAS,CAAEhjM,MAAO,GAClBijM,OAAQ,CAAEjjM,MAAO,KACjBkjM,SAAU,CAAEljM,MAAqB,IAAI88J,GAAO,YAI7CuzB,OAAQ,CAEP8S,kBAAmB,CAAEnjM,MAAO,IAE5BojM,WAAY,CAAEpjM,MAAO,IAErBqjM,kBAAmB,CAAErjM,MAAO,GAAIkP,WAAY,CAC3C0gK,UAAW,CAAC,EACZ7mI,MAAO,CAAC,IAGTu6J,wBAAyB,CAAEtjM,MAAO,GAAIkP,WAAY,CACjDq0L,WAAY,CAAC,EACbC,iBAAkB,CAAC,EACnBC,aAAc,CAAC,EACfC,cAAe,CAAC,IAGjBC,qBAAsB,CAAE3jM,MAAO,IAC/B4jM,wBAAyB,CAAE5jM,MAAO,IAElC6jM,WAAY,CAAE7jM,MAAO,GAAIkP,WAAY,CACpC65B,MAAO,CAAC,EACR+3B,SAAU,CAAC,EACX8uG,UAAW,CAAC,EACZqI,SAAU,CAAC,EACX6rB,QAAS,CAAC,EACVC,YAAa,CAAC,EACdC,MAAO,CAAC,IAGTC,iBAAkB,CAAEjkM,MAAO,GAAIkP,WAAY,CAC1Cq0L,WAAY,CAAC,EACbC,iBAAkB,CAAC,EACnBC,aAAc,CAAC,EACfC,cAAe,CAAC,IAGjBu/K,aAAc,CAAEjjX,MAAO,IACvBkkM,cAAe,CAAElkM,MAAO,IACxBkjX,gBAAiB,CAAEljX,MAAO,IAE1BokM,YAAa,CAAEpkM,MAAO,GAAIkP,WAAY,CACrC65B,MAAO,CAAC,EACR+3B,SAAU,CAAC,EACXkjI,MAAO,CAAC,EACR/rB,SAAU,CAAC,IAGZosB,kBAAmB,CAAErkM,MAAO,GAAIkP,WAAY,CAC3Cq0L,WAAY,CAAC,EACbC,iBAAkB,CAAC,EACnBC,aAAc,CAAC,EACfC,cAAe,CAAC,EAChBY,iBAAkB,CAAC,EACnBC,gBAAiB,CAAC,IAGnBC,eAAgB,CAAExkM,MAAO,IACzBykM,kBAAmB,CAAEzkM,MAAO,IAE5B0kM,iBAAkB,CAAE1kM,MAAO,GAAIkP,WAAY,CAC1C0gK,UAAW,CAAC,EACZ+0B,SAAU,CAAC,EACXC,YAAa,CAAC,IAIfC,eAAgB,CAAE7kM,MAAO,GAAIkP,WAAY,CACxC65B,MAAO,CAAC,EACR+3B,SAAU,CAAC,EACXpxD,MAAO,CAAC,EACRC,OAAQ,CAAC,IAGVm1L,MAAO,CAAE9kM,MAAO,MAChB+kM,MAAO,CAAE/kM,MAAO,OAIjBwrK,OAAQ,CAEPu2B,QAAS,CAAE/hM,MAAqB,IAAI88J,GAAO,WAC3C/mI,QAAS,CAAE/1B,MAAO,GAClB8mD,KAAM,CAAE9mD,MAAO,GACf44I,MAAO,CAAE54I,MAAO,GAChBlC,IAAK,CAAEkC,MAAO,MACd2gL,SAAU,CAAE3gL,MAAO,MACnB8iL,UAAW,CAAE9iL,MAAO,GACpBgiM,YAAa,CAAEhiM,MAAqB,IAAI+3J,KAIzCq/B,OAAQ,CAEP2K,QAAS,CAAE/hM,MAAqB,IAAI88J,GAAO,WAC3C/mI,QAAS,CAAE/1B,MAAO,GAClB43J,OAAQ,CAAE53J,MAAqB,IAAI02J,GAAS,GAAK,KACjDmE,SAAU,CAAE76J,MAAO,GACnBlC,IAAK,CAAEkC,MAAO,MACd2gL,SAAU,CAAE3gL,MAAO,MACnB8iL,UAAW,CAAE9iL,MAAO,GACpBgiM,YAAa,CAAEhiM,MAAqB,IAAI+3J,MAMpCitC,GAAY,CAEjBC,MAAO,CAENtV,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYI,YACZJ,GAAYK,OACZL,GAAYQ,MACZR,GAAYS,SACZT,GAAY5kB,MAGbiT,aAAcmJ,GAAYoH,eAC1BtQ,eAAgBkJ,GAAYqH,gBAI7BuE,QAAS,CAERvV,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYI,YACZJ,GAAYK,OACZL,GAAYQ,MACZR,GAAYS,SACZT,GAAYU,YACZV,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZb,GAAY5kB,IACZ4kB,GAAYzR,OACZ,CACCvQ,SAAU,CAAE9/K,MAAqB,IAAI88J,GAAO,OAI9CqzB,aAAcmJ,GAAYsH,iBAC1BxQ,eAAgBkJ,GAAYuH,kBAI7BsE,MAAO,CAENxV,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYI,YACZJ,GAAYK,OACZL,GAAYQ,MACZR,GAAYS,SACZT,GAAYU,YACZV,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZb,GAAY5kB,IACZ4kB,GAAYzR,OACZ,CACCvQ,SAAU,CAAE9/K,MAAqB,IAAI88J,GAAO,IAC5CkjB,SAAU,CAAEhgL,MAAqB,IAAI88J,GAAO,UAC5CqjB,UAAW,CAAEngL,MAAO,OAItBmwL,aAAcmJ,GAAY4H,eAC1B9Q,eAAgBkJ,GAAY6H,gBAI7BiE,SAAU,CAETzV,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYK,OACZL,GAAYQ,MACZR,GAAYS,SACZT,GAAYU,YACZV,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZb,GAAYc,aACZd,GAAYe,aACZf,GAAY5kB,IACZ4kB,GAAYzR,OACZ,CACCvQ,SAAU,CAAE9/K,MAAqB,IAAI88J,GAAO,IAC5C2iB,UAAW,CAAEz/K,MAAO,GACpB0/K,UAAW,CAAE1/K,MAAO,GACpBgiL,gBAAiB,CAAEhiL,MAAO,MAI5BmwL,aAAcmJ,GAAY8H,kBAC1BhR,eAAgBkJ,GAAY+H,mBAI7BgE,KAAM,CAEL1V,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYQ,MACZR,GAAYS,SACZT,GAAYU,YACZV,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZb,GAAYgB,YACZhB,GAAY5kB,IACZ4kB,GAAYzR,OACZ,CACCvQ,SAAU,CAAE9/K,MAAqB,IAAI88J,GAAO,OAI9CqzB,aAAcmJ,GAAYgI,cAC1BlR,eAAgBkJ,GAAYiI,eAI7B7gB,OAAQ,CAEPiP,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZb,GAAY5kB,IACZ,CACCwD,OAAQ,CAAE1gL,MAAO,SAInBmwL,aAAcmJ,GAAYwH,gBAC1B1Q,eAAgBkJ,GAAYyH,iBAI7Bv1B,OAAQ,CAEPmkB,SAAwBD,GAAe,CACtCoS,GAAYt2B,OACZs2B,GAAY5kB,MAGbiT,aAAcmJ,GAAYkI,YAC1BpR,eAAgBkJ,GAAYmI,aAI7B6D,OAAQ,CAEP3V,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAY5kB,IACZ,CACCtkC,MAAO,CAAE54I,MAAO,GAChB4iL,SAAU,CAAE5iL,MAAO,GACnBulM,UAAW,CAAEvlM,MAAO,MAItBmwL,aAAcmJ,GAAYkH,gBAC1BpQ,eAAgBkJ,GAAYmH,iBAI7B3wF,MAAO,CAEN6/E,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYa,kBAGbxS,aAAcmJ,GAAY4G,WAC1B9P,eAAgBkJ,GAAY6G,YAI7B71B,OAAQ,CAEPqlB,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZ,CACC5sK,QAAS,CAAE/1B,MAAO,MAIpBmwL,aAAcmJ,GAAY0H,gBAC1B5Q,eAAgBkJ,GAAY2H,iBAI7B7J,OAAQ,CAEPzH,SAAwBD,GAAe,CACtCoS,GAAY1K,OACZ0K,GAAY5kB,MAGbiT,aAAcmJ,GAAYsI,YAC1BxR,eAAgBkJ,GAAYuI,aAI7B1gI,WAAY,CAEXwuH,SAAU,CACTqS,YAAa,CAAEhiM,MAAqB,IAAI+3J,IACxCytC,IAAK,CAAExlM,MAAO,OAGfmwL,aAAcmJ,GAAYwG,gBAC1B1P,eAAgBkJ,GAAYyG,iBAI7BojL,eAAgB,CAEfxzL,SAAU,CACT7N,OAAQ,CAAE9hL,MAAO,MACjBoiM,WAAY,CAAEpiM,OAAS,GACvBojX,qBAAsB,CAAEpjX,MAAO,IAGhCmwL,aAAcmJ,GAAYypL,oBAC1B3yL,eAAgBkJ,GAAY0pL,qBAI7Bv9K,KAAM,CAEL9V,SAAU,CACT0zL,MAAO,CAAErjX,MAAO,MAChBsjX,MAAO,CAAEtjX,OAAS,GAClB+1B,QAAS,CAAE/1B,MAAO,IAGnBmwL,aAAcmJ,GAAY0G,UAC1B5P,eAAgBkJ,GAAY2G,WAI7ByF,SAAU,CAET/V,SAAU,CACTgF,UAAW,CAAE30L,MAAO,OAGrBmwL,aAAcmJ,GAAYgH,cAC1BlQ,eAAgBkJ,GAAYiH,eAI7BoF,aAAc,CAEbhW,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYa,gBACZ,CACCiD,kBAAmB,CAAE5lM,MAAqB,IAAIqoK,IAC9Cw9B,aAAc,CAAE7lM,MAAO,GACvB8lM,YAAa,CAAE9lM,MAAO,QAIxBmwL,aAAcmJ,GAAY8G,kBAC1BhQ,eAAgBkJ,GAAY+G,mBAI7Br7C,OAAQ,CAEP2qC,SAAwBD,GAAe,CACtCoS,GAAYzR,OACZyR,GAAY5kB,IACZ,CACCn0I,MAAO,CAAE/oC,MAAqB,IAAI88J,GAAO,IACzC/mI,QAAS,CAAE/1B,MAAO,MAIpBmwL,aAAcmJ,GAAYoI,YAC1BtR,eAAgBkJ,GAAYqI,cAgD9B,SAASoE,GAAiB1S,EAAU2S,EAAU8hB,EAAY3mM,EAAO8kL,EAAS3uC,EAAO4nB,GAEhF,IAGIgnB,EACAC,EAJEC,EAAa,IAAItpC,GAAO,GAC1BupC,GAAuB,IAAV/uC,EAAiB,EAAI,EAKlCgvC,EAAoB,KACpBC,EAA2B,EAC3BC,EAAqB,KA4KzB,SAASC,EAAU19J,EAAOuuH,GAEzBn2I,EAAM82K,QAAQlvJ,MAAM09J,SAAU19J,EAAMtgC,EAAGsgC,EAAM9gC,EAAG8gC,EAAMjhC,EAAGwvJ,EAAO4nB,EAEjE,CAEA,MAAO,CAENwnB,cAAe,WAEd,OAAON,CAER,EACAO,cAAe,SAAW59J,GAAmB,IAAZuuH,EAAK91J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAExC4kM,EAAW51K,IAAKuY,GAEhB09J,EAAUL,EADVC,EAAa/uC,EAGd,EACAsvC,cAAe,WAEd,OAAOP,CAER,EACAQ,cAAe,SAAWvvC,GAGzBmvC,EAAUL,EADVC,EAAa/uC,EAGd,EACAvwJ,OAzMD,SAAiB+/L,EAAYxT,GAE5B,IAAIyT,GAAa,EACb5lI,GAA+B,IAAlBmyH,EAAM5Z,QAAmB4Z,EAAMnyH,WAAa,KAExDA,GAAcA,EAAW+/F,YAG7B//F,GADiBmyH,EAAM8vL,qBAAuB,EACpBt7J,EAAa9hB,GAAW10K,IAAK6vC,IAOxD,IAAM4yH,EAAKV,EAASU,GACdiT,EAAUjT,EAAGkT,YAAclT,EAAGkT,aAE/BD,GAA4C,aAAjCA,EAAQE,uBAEvB/lI,EAAa,MAIM,OAAfA,EAEJslI,EAAUL,EAAYC,GAEXllI,GAAcA,EAAW67F,UAEpCypC,EAAUtlI,EAAY,GACtB4lI,GAAa,IAIT1T,EAAS8T,WAAaJ,IAE1B1T,EAAS3xL,MAAO2xL,EAAS+T,eAAgB/T,EAASgU,eAAgBhU,EAASiU,kBAIvEnmI,IAAgBA,EAAWkzH,eAAiBlzH,EAAW0kF,UAAY8F,UAEtDhgJ,IAAZw6L,KAEJA,EAAU,IAAI1Z,GACb,IAAIuB,GAAa,EAAG,EAAG,GACvB,IAAI8B,GAAgB,CACnBp1L,KAAM,yBACNi1L,SAAUF,GAAeuV,GAAUm+K,eAAexzL,UAClDQ,aAAc6U,GAAUm+K,eAAehzL,aACvCC,eAAgB4U,GAAUm+K,eAAe/yL,eACzChT,KAAMz0B,GACNm1B,WAAW,EACXC,YAAY,EACZb,KAAK,MAIC7Q,SAASk7B,gBAAiB,UAClCpB,EAAQ95B,SAASk7B,gBAAiB,MAElCpB,EAAQqB,eAAiB,SAAWnU,EAAUC,EAAOnqB,GAEpD5nK,KAAKioK,YAAYi+B,aAAct+B,EAAOK,YAEvC,EAGA1pK,OAAOC,eAAgBomM,EAAQ/rB,SAAU,SAAU,CAElD9oJ,IAAK,WAEJ,OAAO/vB,KAAKouL,SAAS7N,OAAO9hL,KAE7B,IAIDimM,EAAQphC,OAAQshC,IAIjBA,EAAQ/rB,SAASuV,SAAS7N,OAAO9hL,MAAQmhE,EACzCglI,EAAQ/rB,SAASuV,SAASyS,WAAWpiM,MAAUmhE,EAAWkzH,gBAAsD,IAArClzH,EAAWu/F,uBAAsC,EAAI,EAChIylC,EAAQ/rB,SAASuV,SAASyzL,qBAAqBpjX,MAAQszL,EAAM8vL,qBAExD98K,IAAsBnlI,GAC1BolI,IAA6BplI,EAAWvmE,SACxC4rM,IAAuBnT,EAASQ,cAEhCsS,EAAQ/rB,SAASvZ,aAAc,EAE/BylC,EAAoBnlI,EACpBolI,EAA2BplI,EAAWvmE,QACtC4rM,EAAqBnT,EAASQ,aAI/BsS,EAAQjwB,OAAOl+J,YAGf8uL,EAAWx1L,QAAS60L,EAASA,EAAQ95B,SAAU85B,EAAQ/rB,SAAU,EAAG,EAAG,OAE5Dj5G,GAAcA,EAAW+/F,iBAEjBv1J,IAAdu6L,KAEJA,EAAY,IAAIzZ,GACf,IAAIqM,GAAe,EAAG,GACtB,IAAIhJ,GAAgB,CACnBp1L,KAAM,qBACNi1L,SAAUF,GAAeuV,GAAU7jI,WAAWwuH,UAC9CQ,aAAc6U,GAAU7jI,WAAWgvH,aACnCC,eAAgB4U,GAAU7jI,WAAWivH,eACrChT,KAAM10B,GACNo1B,WAAW,EACXC,YAAY,EACZb,KAAK,MAIG7Q,SAASk7B,gBAAiB,UAGpCznM,OAAOC,eAAgBmmM,EAAU9rB,SAAU,MAAO,CAEjD9oJ,IAAK,WAEJ,OAAO/vB,KAAKouL,SAAS6V,IAAIxlM,KAE1B,IAIDimM,EAAQphC,OAAQqhC,IAIjBA,EAAU9rB,SAASuV,SAAS6V,IAAIxlM,MAAQmhE,GAEH,IAAhCA,EAAWg/F,kBAEfh/F,EAAWy2G,eAIZsuB,EAAU9rB,SAASuV,SAASqS,YAAYhiM,MAAMi9J,KAAM97F,EAAW85F,QAE1DqrC,IAAsBnlI,GAC1BolI,IAA6BplI,EAAWvmE,SACxC4rM,IAAuBnT,EAASQ,cAEhCqS,EAAU9rB,SAASvZ,aAAc,EAEjCylC,EAAoBnlI,EACpBolI,EAA2BplI,EAAWvmE,QACtC4rM,EAAqBnT,EAASQ,aAI/BqS,EAAUhwB,OAAOl+J,YAGjB8uL,EAAWx1L,QAAS40L,EAAWA,EAAU75B,SAAU65B,EAAU9rB,SAAU,EAAG,EAAG,MAI/E,EAqCD,CAEA,SAASstB,GAAoBv5I,EAAI0/B,EAAYpa,EAAYskH,GAExD,IAAM4P,EAAsBx5I,EAAGy5I,aAAc,OAEvCC,EAAY9P,EAAaC,SAAW,KAAOnqG,EAAWv8D,IAAK,2BAC3Dw2K,EAAe/P,EAAaC,UAA0B,OAAd6P,EAExCE,EAAgB,CAAC,EAEjBC,EAAeC,EAAoB,MACrCC,EAAeF,EACfv/G,GAAc,EAqElB,SAAS0/G,EAAuBC,GAE/B,OAAKrQ,EAAaC,SAAkB7pI,EAAGk6I,gBAAiBD,GAEjDP,EAAUS,mBAAoBF,EAEtC,CAEA,SAASG,EAAyBH,GAEjC,OAAKrQ,EAAaC,SAAkB7pI,EAAGq6I,kBAAmBJ,GAEnDP,EAAUY,qBAAsBL,EAExC,CAqCA,SAASH,EAAoBG,GAM5B,IAJA,IAAMM,EAAgB,GAChBC,EAAoB,GACpBC,EAAoB,GAEhB3qM,EAAI,EAAGA,EAAI0pM,EAAqB1pM,IAEzCyqM,EAAezqM,GAAM,EACrB0qM,EAAmB1qM,GAAM,EACzB2qM,EAAmB3qM,GAAM,EAI1B,MAAO,CAGNouK,SAAU,KACVw8B,QAAS,KACT9lB,WAAW,EAEX2lB,cAAeA,EACfC,kBAAmBA,EACnBC,kBAAmBA,EACnBllM,OAAQ0kM,EACR30H,WAAY,CAAC,EACbtjE,MAAO,KAIT,CA8FA,SAAS24L,IAIR,IAFA,IAAMJ,EAAgBR,EAAaQ,cAEzBzqM,EAAI,EAAGowD,EAAKq6I,EAAcvvM,OAAQ8E,EAAIowD,EAAIpwD,IAEnDyqM,EAAezqM,GAAM,CAIvB,CAEA,SAAS8qM,EAAiBtxC,GAEzBuxC,EAA2BvxC,EAAW,EAEvC,CAEA,SAASuxC,EAA2BvxC,EAAWwxC,GAE9C,IAAMP,EAAgBR,EAAaQ,cAC7BC,EAAoBT,EAAaS,kBACjCC,EAAoBV,EAAaU,mBAEvCF,EAAejxC,GAAc,EAEW,IAAnCkxC,EAAmBlxC,KAEvBtpG,EAAG+6I,wBAAyBzxC,GAC5BkxC,EAAmBlxC,GAAc,GAI7BmxC,EAAmBnxC,KAAgBwxC,MAErBlR,EAAaC,SAAW7pI,EAAK0/B,EAAWv8D,IAAK,2BAEpDymK,EAAaC,SAAW,sBAAwB,4BAA8BvgC,EAAWwxC,GACpGL,EAAmBnxC,GAAcwxC,EAInC,CAEA,SAASE,IAKR,IAHA,IAAMT,EAAgBR,EAAaQ,cAC7BC,EAAoBT,EAAaS,kBAE7B1qM,EAAI,EAAGowD,EAAKs6I,EAAkBxvM,OAAQ8E,EAAIowD,EAAIpwD,IAElD0qM,EAAmB1qM,KAAQyqM,EAAezqM,KAE9CkwD,EAAGi7I,yBAA0BnrM,GAC7B0qM,EAAmB1qM,GAAM,EAM5B,CAEA,SAASorM,EAAqBl5L,EAAO22C,EAAM3gD,EAAMg4J,EAAY6sB,EAAQ1/I,IAErC,IAA1BysJ,EAAaC,UAAgC,OAAT7xL,GAA0B,OAATA,EAMzDgoD,EAAGk7I,oBAAqBl5L,EAAO22C,EAAM3gD,EAAMg4J,EAAY6sB,EAAQ1/I,GAJ/D6iB,EAAGm7I,qBAAsBn5L,EAAO22C,EAAM3gD,EAAM6kL,EAAQ1/I,EAQtD,CA6PA,SAASwwB,IAERytI,IACA9gH,GAAc,EAETy/G,IAAiBF,GAGtBG,GADAD,EAAeF,GACqBtkM,OAErC,CAIA,SAAS6lM,IAERvB,EAAa37B,SAAW,KACxB27B,EAAaa,QAAU,KACvBb,EAAajlB,WAAY,CAE1B,CAEA,MAAO,CAENymB,MAjlBD,SAAgB9lM,EAAQ02K,EAAUyuB,EAASx8B,EAAUl8J,GAEpD,IAAIs5L,GAAgB,EAEpB,GAAK3B,EAAe,CAEnB,IAAM3mL,EA6ER,SAA0BkrJ,EAAUw8B,EAASzuB,GAE5C,IAAM2I,GAAqC,IAAvB3I,EAAS2I,UAEzB2mB,EAAa3B,EAAe17B,EAAS1rI,SAErBh1B,IAAf+9L,IAEJA,EAAa,CAAC,EACd3B,EAAe17B,EAAS1rI,IAAO+oK,GAIhC,IAAIC,EAAWD,EAAYb,EAAQloK,SAEjBh1B,IAAbg+L,IAEJA,EAAW,CAAC,EACZD,EAAYb,EAAQloK,IAAOgpK,GAI5B,IAAIxoL,EAAQwoL,EAAU5mB,QAEPp3K,IAAVwV,IAEJA,EAAQ8mL,EAhDJlQ,EAAaC,SAAkB7pI,EAAGy7I,oBAEhC/B,EAAUgC,wBA+ChBF,EAAU5mB,GAAc5hK,GAIzB,OAAOA,CAER,CA9GgB2oL,CAAiBz9B,EAAUw8B,EAASzuB,GAE7C8tB,IAAiB/mL,GAGrBgnL,GADAD,EAAe/mL,GACqBzd,QAIrC+lM,EAuIF,SAAsB/lM,EAAQ2oK,EAAUw8B,EAAS14L,GAEhD,IAAM45L,EAAmB7B,EAAaz0H,WAChCu2H,EAAqB39B,EAAS54F,WAEhCw2H,EAAgB,EAEdK,EAAoBzB,EAAQn1H,gBAElC,IAAM,IAAMh5E,KAAQ4vM,EAAoB,CAIvC,GAFyBA,EAAmB5vM,GAEtB4c,UAAY,EAAI,CAErC,IAAM4yL,EAAkBH,EAAkBrvM,GACtCyvM,EAAoBH,EAAoBtvM,GAS5C,QAP2BiR,IAAtBw+L,IAEU,mBAATzvM,GAA6BgJ,EAAO81K,iBAAiB2wB,EAAoBzmM,EAAO81K,gBACvE,kBAAT9+K,GAA4BgJ,EAAO+1K,gBAAgB0wB,EAAoBzmM,EAAO+1K,qBAI3D9tK,IAApBu+L,EAAgC,OAAO,EAE5C,GAAKA,EAAgBzyC,YAAc0yC,EAAoB,OAAO,EAE9D,GAAKA,GAAqBD,EAAgBjlK,OAASklK,EAAkBllK,KAAO,OAAO,EAEnFglK,GAED,CAED,CAEA,OAAK/B,EAAa+B,gBAAkBA,GAE/B/B,EAAa/3L,QAAUA,CAI7B,CAlLkB0wJ,CAAan9J,EAAQ2oK,EAAUw8B,EAAS14L,GAEnDs5L,GAkLP,SAAoB/lM,EAAQ2oK,EAAUw8B,EAAS14L,GAE9C,IAAMxF,EAAQ,CAAC,EACT8oE,EAAa44F,EAAS54F,WACxBw2H,EAAgB,EAEdK,EAAoBzB,EAAQn1H,gBAElC,IAAM,IAAMh5E,KAAQ4vM,EAAoB,CAIvC,GAFyBA,EAAmB5vM,GAEtB4c,UAAY,EAAI,CAErC,IAAImgJ,EAAYhkF,EAAY/4E,QAETiR,IAAd8rJ,IAEU,mBAAT/8J,GAA6BgJ,EAAO81K,iBAAiB/hB,EAAY/zJ,EAAO81K,gBAC/D,kBAAT9+K,GAA4BgJ,EAAO+1K,gBAAgBhiB,EAAY/zJ,EAAO+1K,gBAI5E,IAAMx0I,EAAO,CAAC,EACdA,EAAKwyH,UAAYA,EAEZA,GAAaA,EAAUxyH,OAE3BA,EAAKA,KAAOwyH,EAAUxyH,MAIvBt6B,EAAOjQ,GAASuqC,EAEhBglK,GAED,CAED,CAEA/B,EAAaz0H,WAAa9oE,EAC1Bu9L,EAAa+B,cAAgBA,EAE7B/B,EAAa/3L,MAAQA,CAEtB,CA/NuBi6L,CAAW1mM,EAAQ2oK,EAAUw8B,EAAS14L,EAE5D,KAAO,CAEN,IAAM4yK,GAAqC,IAAvB3I,EAAS2I,UAExBmlB,EAAa77B,WAAaA,EAAS1rI,IACvCunK,EAAaW,UAAYA,EAAQloK,IACjCunK,EAAanlB,YAAcA,IAE3BmlB,EAAa77B,SAAWA,EAAS1rI,GACjCunK,EAAaW,QAAUA,EAAQloK,GAC/BunK,EAAanlB,UAAYA,EAEzB0mB,GAAgB,EAIlB,CAEe,OAAVt5L,GAEJsjE,EAAWoxF,OAAQ10J,EAAO,QAItBs5L,GAAiBhhH,KAErBA,GAAc,EAiRhB,SAAgC/kF,EAAQ02K,EAAUyuB,EAASx8B,GAE1D,IAA+B,IAA1B0rB,EAAaC,WAAwBt0L,EAAO61K,iBAAmBlN,EAASg+B,4BAExB,OAA/Cx8G,EAAWv8D,IAAK,0BAAsC,OAI5Dw3K,IAEA,IAAMkB,EAAqB39B,EAAS54F,WAE9B62H,EAAoBzB,EAAQn1H,gBAE5B62H,EAAiCnwB,EAASuW,uBAEhD,IAAM,IAAMj2L,KAAQ4vM,EAAoB,CAEvC,IAAME,EAAmBF,EAAmB5vM,GAE5C,GAAK8vM,EAAiBlzL,UAAY,EAAI,CAErC,IAAI6yL,EAAoBH,EAAoBtvM,GAS5C,QAP2BiR,IAAtBw+L,IAEU,mBAATzvM,GAA6BgJ,EAAO81K,iBAAiB2wB,EAAoBzmM,EAAO81K,gBACvE,kBAAT9+K,GAA4BgJ,EAAO+1K,gBAAgB0wB,EAAoBzmM,EAAO+1K,qBAIzD9tK,IAAtBw+L,EAAkC,CAEtC,IAAMhsC,EAAagsC,EAAkBhsC,WAC/Br3G,EAAOqjJ,EAAkBnmB,SAEzBvsB,EAAYhkF,EAAWniD,IAAK64K,GAIlC,QAAmBx+L,IAAd8rJ,EAA0B,SAE/B,IAAMiE,EAASjE,EAAUiE,OACnBv1J,EAAOsxJ,EAAUtxJ,KACjBkyL,EAAkB5gC,EAAU4gC,gBAElC,GAAK8R,EAAkBpf,6BAA+B,CAErD,IAAM9lJ,EAAOklK,EAAkBllK,KACzB+lJ,EAAS/lJ,EAAK+lJ,OACd1/I,EAAS6+J,EAAkB7+J,OAEjC,GAAKrG,EAAKwlK,6BAA+B,CAExC,IAAM,IAAIxsM,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnD+qM,EAA2BwB,EAAiBlzL,SAAWrZ,EAAGgnC,EAAKgkK,mBAIhC,IAA3BvlM,EAAO61K,sBAA2D5tK,IAA/B0gK,EAASs+B,oBAEhDt+B,EAASs+B,kBAAoB1lK,EAAKgkK,iBAAmBhkK,EAAKi6C,MAI5D,MAEC,IAAM,IAAIjhF,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnD8qM,EAAiByB,EAAiBlzL,SAAWrZ,GAM/CkwD,EAAGqqI,WAAY,MAAO98B,GAEtB,IAAM,IAAIz9J,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnDorM,EACCmB,EAAiBlzL,SAAWrZ,EAC5B6oD,EAAO0jJ,EAAiBE,aACxBvkM,EACAg4J,EACA6sB,EAASqN,GACP/sJ,EAAWwb,EAAO0jJ,EAAiBE,aAAiBzsM,GAAMo6L,EAK/D,KAAO,CAEN,GAAK8R,EAAkBS,2BAA6B,CAEnD,IAAM,IAAI3sM,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnD+qM,EAA2BwB,EAAiBlzL,SAAWrZ,EAAGksM,EAAkBlB,mBAI7C,IAA3BvlM,EAAO61K,sBAA2D5tK,IAA/B0gK,EAASs+B,oBAEhDt+B,EAASs+B,kBAAoBR,EAAkBlB,iBAAmBkB,EAAkBjrH,MAItF,MAEC,IAAM,IAAIjhF,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnD8qM,EAAiByB,EAAiBlzL,SAAWrZ,GAM/CkwD,EAAGqqI,WAAY,MAAO98B,GAEtB,IAAM,IAAIz9J,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnDorM,EACCmB,EAAiBlzL,SAAWrZ,EAC5B6oD,EAAO0jJ,EAAiBE,aACxBvkM,EACAg4J,EACAr3G,EAAOuxI,EACLvxI,EAAO0jJ,EAAiBE,aAAiBzsM,EAAIo6L,EAKlD,CAED,MAAO,QAAwC1sL,IAAnC4+L,EAA+C,CAE1D,IAAMvqM,EAAQuqM,EAAgC7vM,GAE9C,QAAeiR,IAAV3L,EAEJ,OAASA,EAAM7G,QAEd,KAAK,EACJg1D,EAAG08I,gBAAiBL,EAAiBlzL,SAAUtX,GAC/C,MAED,KAAK,EACJmuD,EAAG28I,gBAAiBN,EAAiBlzL,SAAUtX,GAC/C,MAED,KAAK,EACJmuD,EAAG48I,gBAAiBP,EAAiBlzL,SAAUtX,GAC/C,MAED,QACCmuD,EAAG68I,gBAAiBR,EAAiBlzL,SAAUtX,GAMnD,CAED,CAED,CAEAmpM,GAED,CAxbE8B,CAAuBvnM,EAAQ02K,EAAUyuB,EAASx8B,GAEnC,OAAVl8J,GAEJg+C,EAAGqqI,WAAY,MAAO/kH,EAAWniD,IAAKnhB,GAAQurJ,QAMjD,EAyhBC5/F,MAAOA,EACPytI,kBAAmBA,EACnBtmC,QA3GD,WAIC,IAAM,IAAMioC,KAFZpvI,IAE0BisI,EAAgB,CAEzC,IAAM2B,EAAa3B,EAAemD,GAElC,IAAM,IAAMC,KAAazB,EAAa,CAErC,IAAMC,EAAWD,EAAYyB,GAE7B,IAAM,IAAMpoB,KAAa4mB,EAExBpB,EAAyBoB,EAAU5mB,GAAYr/K,eAExCimM,EAAU5mB,UAIX2mB,EAAYyB,EAEpB,QAEOpD,EAAemD,EAEvB,CAED,EAgFCE,wBA9ED,SAAkC/+B,GAEjC,QAAsC1gK,IAAjCo8L,EAAe17B,EAAS1rI,IAA7B,CAEA,IAAM+oK,EAAa3B,EAAe17B,EAAS1rI,IAE3C,IAAM,IAAMwqK,KAAazB,EAAa,CAErC,IAAMC,EAAWD,EAAYyB,GAE7B,IAAM,IAAMpoB,KAAa4mB,EAExBpB,EAAyBoB,EAAU5mB,GAAYr/K,eAExCimM,EAAU5mB,UAIX2mB,EAAYyB,EAEpB,QAEOpD,EAAe17B,EAAS1rI,GApByB,CAsBzD,EAuDC0qK,uBArDD,SAAiCxC,GAEhC,IAAM,IAAMqC,KAAcnD,EAAgB,CAEzC,IAAM2B,EAAa3B,EAAemD,GAElC,QAAkCv/L,IAA7B+9L,EAAYb,EAAQloK,IAAzB,CAEA,IAAMgpK,EAAWD,EAAYb,EAAQloK,IAErC,IAAM,IAAMoiJ,KAAa4mB,EAExBpB,EAAyBoB,EAAU5mB,GAAYr/K,eAExCimM,EAAU5mB,UAIX2mB,EAAYb,EAAQloK,GAZ2B,CAcvD,CAED,EAiCCmoK,eAAgBA,EAChBC,gBAAiBA,EACjBI,wBAAyBA,EAI3B,CAEA,SAASmC,GAAqBn9I,EAAI0/B,EAAY+B,EAAMmoG,GAEnD,IAEIhiJ,EAFEiiJ,EAAWD,EAAaC,SAmD9Bz2L,KAAKgqM,QA/CL,SAAkBvrM,GAEjB+1C,EAAO/1C,CAER,EA4CAuB,KAAKwF,OA1CL,SAAiBslC,EAAO6yC,GAEvB/wB,EAAGq9I,WAAYz1J,EAAM1J,EAAO6yC,GAE5B0Q,EAAKi1E,OAAQ3lF,EAAOnpC,EAAM,EAE3B,EAqCAx0C,KAAKkqM,gBAnCL,SAA0Bp/J,EAAO6yC,EAAOwsH,GAEvC,GAAmB,IAAdA,EAAL,CAEA,IAAI7D,EAAW5yL,EAEf,GAAK+iL,EAEJ6P,EAAY15I,EACZl5C,EAAa,2BAOb,GAFAA,EAAa,2BAEM,QAHnB4yL,EAAYh6G,EAAWv8D,IAAK,2BAM3B,YADAhc,QAAQwN,MAAO,kIAOjB+kL,EAAW5yL,GAAc8gC,EAAM1J,EAAO6yC,EAAOwsH,GAE7C97G,EAAKi1E,OAAQ3lF,EAAOnpC,EAAM21J,EAzBG,CA2B9B,CAQD,CAEA,SAASC,GAAmBx9I,EAAI0/B,EAAYksF,GAE3C,IAAI6xB,EAsBJ,SAASC,EAAiBttM,GAEzB,GAAmB,UAAdA,EAAwB,CAE5B,GAAK4vD,EAAG29I,yBAA0B,MAAO,OAAQvtM,UAAY,GAC5D4vD,EAAG29I,yBAA0B,MAAO,OAAQvtM,UAAY,EAExD,MAAO,QAIRA,EAAY,SAEb,CAEA,MAAmB,YAAdA,GAEC4vD,EAAG29I,yBAA0B,MAAO,OAAQvtM,UAAY,GAC5D4vD,EAAG29I,yBAA0B,MAAO,OAAQvtM,UAAY,EAEjD,UAMF,MAER,CAEA,IAAMy5L,EAA+C,qBAA3B+T,wBAA0C59I,aAAc49I,wBACtC,qBAAlCC,+BAAiD79I,aAAc69I,8BAErEztM,OAAqCoN,IAAzBouK,EAAWx7K,UAA0Bw7K,EAAWx7K,UAAY,QACtE0tM,EAAeJ,EAAiBttM,GAEjC0tM,IAAiB1tM,IAErB+W,QAAQk/C,KAAM,uBAAwBj2D,EAAW,uBAAwB0tM,EAAc,YACvF1tM,EAAY0tM,GAIb,IAAMxb,EAAcuH,GAAYnqG,EAAWl+C,IAAK,sBAE1Cu8J,GAA+D,IAAtCnyB,EAAWmyB,uBAEpCC,EAAch+I,EAAGy5I,aAAc,OAC/BwE,EAAoBj+I,EAAGy5I,aAAc,OACrCyE,EAAiBl+I,EAAGy5I,aAAc,MAClC0E,EAAiBn+I,EAAGy5I,aAAc,OAElC2E,EAAgBp+I,EAAGy5I,aAAc,OACjC4E,EAAoBr+I,EAAGy5I,aAAc,OACrC6E,EAAct+I,EAAGy5I,aAAc,OAC/B8E,EAAsBv+I,EAAGy5I,aAAc,OAEvC+E,EAAiBP,EAAoB,EACrCQ,EAAwB5U,GAAYnqG,EAAWl+C,IAAK,qBAK1D,MAAO,CAENqoJ,SAAUA,EAEVvH,YAAaA,EAEboc,iBAzFD,WAEC,QAAuBlhM,IAAlBigM,EAA8B,OAAOA,EAE1C,IAA4D,IAAvD/9G,EAAWl+C,IAAK,kCAA8C,CAElE,IAAMk4J,EAAYh6G,EAAWv8D,IAAK,kCAElCs6K,EAAgBz9I,EAAGy5I,aAAcC,EAAUiF,+BAE5C,MAEClB,EAAgB,EAIjB,OAAOA,CAER,EAwECC,gBAAiBA,EAEjBttM,UAAWA,EACX2tM,uBAAwBA,EAExBC,YAAaA,EACbC,kBAAmBA,EACnBC,eAAgBA,EAChBC,eAAgBA,EAEhBC,cAAeA,EACfC,kBAAmBA,EACnBC,YAAaA,EACbC,oBAAqBA,EAErBC,eAAgBA,EAChBC,sBAAuBA,EACvBG,oBA5B2BJ,GAAkBC,EA8B7CI,WA5BkBhV,EAAW7pI,EAAGy5I,aAAc,OAAU,EAgC1D,CAEA,SAASqF,GAAe/9L,GAEvB,IAAMq/K,EAAQhtL,KAEVytH,EAAc,KACjBk+E,EAAkB,EAClBC,GAAuB,EACvBC,GAAmB,EAEdvgC,EAAQ,IAAIqoB,GACjBmY,EAAmB,IAAIt1C,GAEvBu1C,EAAU,CAAEttM,MAAO,KAAM6gK,aAAa,GAyFvC,SAAS0sC,IAEHD,EAAQttM,QAAUgvH,IAEtBs+E,EAAQttM,MAAQgvH,EAChBs+E,EAAQzsC,YAAcqsC,EAAkB,GAIzC3e,EAAMif,UAAYN,EAClB3e,EAAMkf,gBAAkB,CAEzB,CAEA,SAASC,EAAezX,EAAQ9sB,EAAQ/B,EAAWumC,GAElD,IAAMC,EAAqB,OAAX3X,EAAkBA,EAAO98L,OAAS,EAC9C00M,EAAW,KAEf,GAAiB,IAAZD,EAAgB,CAIpB,GAFAC,EAAWP,EAAQttM,OAEI,IAAlB2tM,GAAuC,OAAbE,EAAoB,CAElD,IAAMC,EAAW1mC,EAAsB,EAAVwmC,EAC5BG,EAAa5kC,EAAOE,mBAErBgkC,EAAiB1lB,gBAAiBomB,IAEhB,OAAbF,GAAqBA,EAAS10M,OAAS20M,KAE3CD,EAAW,IAAIz3C,aAAc03C,IAI9B,IAAM,IAAI7vM,EAAI,EAAG+vM,EAAK5mC,EAAWnpK,IAAM2vM,IAAY3vM,EAAG+vM,GAAM,EAE3DnhC,EAAM5P,KAAMg5B,EAAQh4L,IAAMmrK,aAAc2kC,EAAYV,GAEpDxgC,EAAMvC,OAAOxhF,QAAS+kH,EAAUG,GAChCH,EAAUG,EAAK,GAAMnhC,EAAMC,QAI7B,CAEAwgC,EAAQttM,MAAQ6tM,EAChBP,EAAQzsC,aAAc,CAEvB,CAKA,OAHA0tB,EAAMif,UAAYI,EAClBrf,EAAMkf,gBAAkB,EAEjBI,CAER,CAhJAtsM,KAAK+rM,QAAUA,EACf/rM,KAAKisM,UAAY,EACjBjsM,KAAKksM,gBAAkB,EAEvBlsM,KAAKu0H,KAAO,SAAWmgE,EAAQgY,EAAqB9kC,GAEnD,IAAMipB,EACa,IAAlB6D,EAAO98L,QACP80M,GAGoB,IAApBf,GACAC,EAOD,OALAA,EAAuBc,EAEvBj/E,EAAc0+E,EAAezX,EAAQ9sB,EAAQ,GAC7C+jC,EAAkBjX,EAAO98L,OAElBi5L,CAER,EAEA7wL,KAAK2sM,aAAe,WAEnBd,GAAmB,EACnBM,EAAe,KAEhB,EAEAnsM,KAAK4sM,WAAa,WAEjBf,GAAmB,EACnBG,GAED,EAEAhsM,KAAKwf,SAAW,SAAWq5J,EAAUjR,EAAQilC,GAE5C,IAAMnY,EAAS7b,EAASoE,eACvBC,EAAmBrE,EAASqE,iBAC5BC,EAActE,EAASsE,YAElB2vB,EAAqBn/L,EAAWoiB,IAAK8oJ,GAE3C,IAAO+yB,GAAmC,OAAXlX,GAAqC,IAAlBA,EAAO98L,QAAgBi0M,IAAsB1uB,EAIzF0uB,EAIJM,EAAe,MAIfH,QAIK,CAEN,IAAMe,EAAUlB,EAAmB,EAAIF,EACtCqB,EAAoB,EAAVD,EAEPT,EAAWQ,EAAmBG,eAAiB,KAEnDlB,EAAQttM,MAAQ6tM,EAEhBA,EAAWH,EAAezX,EAAQ9sB,EAAQolC,EAASH,GAEnD,IAAM,IAAInwM,EAAI,EAAGA,IAAMswM,IAAYtwM,EAElC4vM,EAAU5vM,GAAM+wH,EAAa/wH,GAI9BowM,EAAmBG,cAAgBX,EACnCtsM,KAAKksM,gBAAkBhvB,EAAmBl9K,KAAKisM,UAAY,EAC3DjsM,KAAKisM,WAAac,CAEnB,CAGD,CA6DD,CAEA,SAASG,GAAepb,GAEvB,IAAI2S,EAAW,IAAI1jJ,QAEnB,SAASosJ,EAAmB9rC,EAAS/c,GAYpC,OAVKA,IAAY4F,GAEhBmX,EAAQ/c,QAAU0F,GAEP1F,IAAY6F,KAEvBkX,EAAQ/c,QAAU2F,IAIZoX,CAER,CA+CA,SAAS+rC,EAAkB7kK,GAE1B,IAAM84H,EAAU94H,EAAMhnC,OAEtB8/J,EAAQnpI,oBAAqB,UAAWk1K,GAExC,IAAMC,EAAU5I,EAAS10K,IAAKsxI,QAEbj3J,IAAZijM,IAEJ5I,EAASjnK,OAAQ6jI,GACjBgsC,EAAQ3rC,UAIV,CAQA,MAAO,CACN3xI,IArED,SAAcsxI,GAEb,GAAKA,GAAWA,EAAQ1B,YAA+C,IAAlC0B,EAAQlC,sBAAkC,CAE9E,IAAM7a,EAAU+c,EAAQ/c,QAExB,GAAKA,IAAY4F,IAAoC5F,IAAY6F,GAAmC,CAEnG,GAAKs6C,EAASr2J,IAAKizH,GAGlB,OAAO8rC,EADS1I,EAAS10K,IAAKsxI,GAAUA,QACLA,EAAQ/c,SAI3C,IAAMnL,EAAQkoB,EAAQloB,MAEtB,GAAKA,GAASA,EAAM/qI,OAAS,EAAI,CAEhC,IAAMijL,EAAe,IAAI0B,GAAuB55C,EAAM/qI,OAAS,GAM/D,OALAijL,EAAaic,2BAA4Bxb,EAAUzwB,GACnDojC,EAASx1K,IAAKoyI,EAASgwB,GAEvBhwB,EAAQz9J,iBAAkB,UAAWwpM,GAE9BD,EAAmB9b,EAAahwB,QAASA,EAAQ/c,QAEzD,CAIC,OAAO,IAMV,CAED,CAEA,OAAO+c,CAER,EA2BCK,QARD,WAEC+iC,EAAW,IAAI1jJ,OAEhB,EAOD,CAnyCA0iJ,GAAU8J,SAAW,CAEpBnf,SAAwBD,GAAe,CACtCsV,GAAUI,SAASzV,SACnB,CACCvP,UAAW,CAAEpgL,MAAO,GACpBsgL,aAAc,CAAEtgL,MAAO,MACvBqgL,mBAAoB,CAAErgL,MAAO,GAC7BugL,sBAAuB,CAAEvgL,MAAO,MAChCygL,qBAAsB,CAAEzgL,MAAqB,IAAI02J,GAAS,EAAG,IAC7D8pB,mBAAoB,CAAExgL,MAAO,MAC7BoiX,YAAa,CAAEpiX,MAAO,GACtBuiX,eAAgB,CAAEviX,MAAO,MACzBqiX,eAAgB,CAAEriX,MAAO,KACzBujX,4BAA6B,CAAEvjX,MAAO,KACtCwjX,4BAA6B,CAAExjX,MAAO,KACtCwiX,wBAAyB,CAAExiX,MAAO,MAClC2/K,MAAO,CAAE3/K,MAAO,GAChB4/K,WAAY,CAAE5/K,MAAqB,IAAI88J,GAAO,IAC9CiyC,cAAe,CAAE/uM,MAAO,MACxB6/K,eAAgB,CAAE7/K,MAAO,GACzBgvM,kBAAmB,CAAEhvM,MAAO,MAC5BoiL,aAAc,CAAEpiL,MAAO,GACvBqiL,gBAAiB,CAAEriL,MAAO,MAC1BivM,wBAAyB,CAAEjvM,MAAqB,IAAI02J,IACpDw4C,uBAAwB,CAAElvM,MAAO,MACjCsiL,UAAW,CAAEtiL,MAAO,GACpBuiL,aAAc,CAAEviL,MAAO,MACvBwiL,oBAAqB,CAAExiL,MAAO,GAC9ByiL,iBAAkB,CAAEziL,MAAqB,IAAI88J,GAAO,IACpDmjB,kBAAmB,CAAEjgL,MAAO,GAC5B4hL,qBAAsB,CAAE5hL,MAAO,MAC/BkgL,cAAe,CAAElgL,MAAqB,IAAI88J,GAAO,EAAG,EAAG,IACvD+kB,iBAAkB,CAAE7hL,MAAO,SAI7BmwL,aAAcmJ,GAAY8H,kBAC1BhR,eAAgBkJ,GAAY+H,mBA6vC5B,IAEK8N,GAAkB,SAAAC,GAAA7xL,EAAA4xL,EAAAC,GAAA,IAAAC,EAAAnzL,EAAAizL,GAEvB,SAAAA,IAAoF,IAAAwgB,EAAvEpiL,EAAI/rC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,IAAK,EAAGu/D,EAAKv/D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGisC,EAAGjsC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGw/D,EAAMx/D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,IAAK,EAAG4zK,EAAI5zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAK6zK,EAAG7zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAmB9C,OAnBkDwK,EAAA,KAAAmjM,IAEhFwgB,EAAAtgB,EAAAjxM,KAAA,OAEKsxM,sBAAuB,EAE5BigB,EAAKxpN,KAAO,qBAEZwpN,EAAKv5L,KAAO,EACZu5L,EAAK7sL,KAAO,KAEZ6sL,EAAKpiL,KAAOA,EACZoiL,EAAK5uJ,MAAQA,EACb4uJ,EAAKliL,IAAMA,EACXkiL,EAAK3uJ,OAASA,EAEd2uJ,EAAKv6C,KAAOA,EACZu6C,EAAKt6C,IAAMA,EAEXs6C,EAAK/9B,yBAAyB+9B,CAE/B,CA0GC,OA1GA7kN,EAAAqkM,EAAA,EAAAprM,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAcb,OAZA9xC,GAAA5rH,EAAAsyL,EAAAhxM,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAKgsC,KAAOxqC,EAAOwqC,KACnBhsC,KAAKw/D,MAAQh+D,EAAOg+D,MACpBx/D,KAAKksC,IAAM1qC,EAAO0qC,IAClBlsC,KAAKy/D,OAASj+D,EAAOi+D,OACrBz/D,KAAK6zK,KAAOryK,EAAOqyK,KACnB7zK,KAAK8zK,IAAMtyK,EAAOsyK,IAElB9zK,KAAK60B,KAAOrzB,EAAOqzB,KACnB70B,KAAKuhC,KAAuB,OAAhB//B,EAAO+/B,KAAgB,KAAOhjC,OAAOmgB,OAAQ,CAAC,EAAGld,EAAO+/B,MAE7DvhC,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAekyL,EAAWC,EAAY10L,EAAGmL,EAAG8G,EAAOC,GAE/B,OAAdpO,KAAKuhC,OAETvhC,KAAKuhC,KAAO,CACXsvJ,SAAS,EACTF,UAAW,EACXC,WAAY,EACZp3E,QAAS,EACTE,QAAS,EACTvrG,MAAO,EACPC,OAAQ,IAKVpO,KAAKuhC,KAAKsvJ,SAAU,EACpB7wL,KAAKuhC,KAAKovJ,UAAYA,EACtB3wL,KAAKuhC,KAAKqvJ,WAAaA,EACvB5wL,KAAKuhC,KAAKi4E,QAAUt9G,EACpB8D,KAAKuhC,KAAKm4E,QAAUryG,EACpBrH,KAAKuhC,KAAKpzB,MAAQA,EAClBnO,KAAKuhC,KAAKnzB,OAASA,EAEnBpO,KAAKqwL,wBAEN,GAAC,CAAA7tL,IAAA,kBAAA/D,MAED,WAEoB,OAAduB,KAAKuhC,OAETvhC,KAAKuhC,KAAKsvJ,SAAU,GAIrB7wL,KAAKqwL,wBAEN,GAAC,CAAA7tL,IAAA,yBAAA/D,MAED,WAEC,IAAM6vI,GAAOtuI,KAAKw/D,MAAQx/D,KAAKgsC,OAAW,EAAIhsC,KAAK60B,MAC7Cw5G,GAAOruI,KAAKksC,IAAMlsC,KAAKy/D,SAAa,EAAIz/D,KAAK60B,MAC7C0kI,GAAOv5J,KAAKw/D,MAAQx/D,KAAKgsC,MAAS,EAClCwtH,GAAOx5J,KAAKksC,IAAMlsC,KAAKy/D,QAAW,EAEpCzzB,EAAOutH,EAAKjrB,EACZ9uE,EAAQ+5F,EAAKjrB,EACbpiG,EAAMstH,EAAKnrB,EACX5uE,EAAS+5F,EAAKnrB,EAElB,GAAmB,OAAdruI,KAAKuhC,MAAiBvhC,KAAKuhC,KAAKsvJ,QAAU,CAE9C,IAAMmd,GAAWhuM,KAAKw/D,MAAQx/D,KAAKgsC,MAAShsC,KAAKuhC,KAAKovJ,UAAY3wL,KAAK60B,KACjEo5K,GAAWjuM,KAAKksC,IAAMlsC,KAAKy/D,QAAWz/D,KAAKuhC,KAAKqvJ,WAAa5wL,KAAK60B,KAGxE2qC,GADAxzB,GAAQgiK,EAAShuM,KAAKuhC,KAAKi4E,SACZw0F,EAAShuM,KAAKuhC,KAAKpzB,MAElCsxD,GADAvzB,GAAO+hK,EAASjuM,KAAKuhC,KAAKm4E,SACXu0F,EAASjuM,KAAKuhC,KAAKnzB,MAEnC,CAEApO,KAAK+nK,iBAAiBmmC,iBAAkBliK,EAAMwzB,EAAOtzB,EAAKuzB,EAAQz/D,KAAK6zK,KAAM7zK,KAAK8zK,KAElF9zK,KAAKgoK,wBAAwBtM,KAAM17J,KAAK+nK,kBAAmBj4B,QAE5D,GAAC,CAAAttI,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAAsyL,EAAAhxM,WAAA,eAAAC,KAAA,KAAiBy5B,GAY3B,OAVAoN,EAAKvhC,OAAO0yB,KAAO70B,KAAK60B,KACxB6O,EAAKvhC,OAAO6pC,KAAOhsC,KAAKgsC,KACxBtI,EAAKvhC,OAAOq9D,MAAQx/D,KAAKw/D,MACzB97B,EAAKvhC,OAAO+pC,IAAMlsC,KAAKksC,IACvBxI,EAAKvhC,OAAOs9D,OAASz/D,KAAKy/D,OAC1B/7B,EAAKvhC,OAAO0xK,KAAO7zK,KAAK6zK,KACxBnwI,EAAKvhC,OAAO2xK,IAAM9zK,KAAK8zK,IAEJ,OAAd9zK,KAAKuhC,OAAgBmC,EAAKvhC,OAAOo/B,KAAOhjC,OAAOmgB,OAAQ,CAAC,EAAG1e,KAAKuhC,OAE9DmC,CAER,KAACkqK,CAAA,CAjIsB,CAASne,IA2I3B2e,GAAkB,CAAE,KAAO,KAAO,IAAM,KAAO,KAAO,MAItDC,GAAc,GAEdC,GAA4B,IAAIV,GAChCW,GAA4B,IAAIhzC,GAClCizC,GAAa,KAGXC,IAAQ,EAAIxxM,KAAK04J,KAAM,IAAQ,EAC/B+4C,GAAU,EAAID,GAIdE,GAAkB,CACT,IAAI7nC,GAAS,EAAG,EAAG,GACnB,IAAIA,IAAW,EAAG,EAAG,GACrB,IAAIA,GAAS,EAAG,GAAK,GACrB,IAAIA,IAAW,EAAG,GAAK,GACvB,IAAIA,GAAS,EAAG2nC,GAAKC,IACrB,IAAI5nC,GAAS,EAAG2nC,IAAOC,IACvB,IAAI5nC,GAAS4nC,GAAS,EAAGD,IACzB,IAAI3nC,IAAW4nC,GAAS,EAAGD,IAC3B,IAAI3nC,GAAS2nC,GAAKC,GAAS,GAC3B,IAAI5nC,IAAW2nC,GAAKC,GAAS,IAiBtCE,GAAc,WAEnB,SAAAA,EAAa9c,GAAWrnL,EAAA,KAAAmkM,GAEvB5uM,KAAK6uM,UAAY/c,EACjB9xL,KAAK8uM,sBAAwB,KAE7B9uM,KAAK+uM,QAAU,EACf/uM,KAAKgvM,UAAY,EACjBhvM,KAAKivM,WAAa,GAClBjvM,KAAKkvM,UAAY,GACjBlvM,KAAKmvM,QAAU,GAEfnvM,KAAKovM,cAAgB,KACrBpvM,KAAKqvM,iBAAmB,KACxBrvM,KAAKsvM,kBAAoB,KAEzBtvM,KAAKuvM,iBAAkBvvM,KAAKovM,cAE7B,CA+cC,OA7cD7lM,EAAAqlM,EAAA,EAAApsM,IAAA,YAAA/D,MAOA,SAAWszL,GAA0C,IAAnCyd,EAAKvvM,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG4zK,EAAI5zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAK6zK,EAAG7zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAE9CuuM,GAAaxuM,KAAK6uM,UAAU3c,kBAE5BlyL,KAAKyvM,SAAU,KAEf,IAAMC,EAAqB1vM,KAAK2vM,mBAchC,OAbAD,EAAmBpuC,aAAc,EAEjCthK,KAAK4vM,eAAgB7d,EAAOle,EAAMC,EAAK47B,GAElCF,EAAQ,GAEZxvM,KAAK6vM,MAAOH,EAAoB,EAAG,EAAGF,GAIvCxvM,KAAK8vM,YAAaJ,GAClB1vM,KAAK+vM,SAAUL,GAERA,CAER,GAEA,CAAAltM,IAAA,sBAAA/D,MAKA,SAAqBuxM,GAAuC,IAAtB3e,EAAYpxL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAEpD,OAAOD,KAAKiwM,aAAcD,EAAiB3e,EAE5C,GAEA,CAAA7uL,IAAA,cAAA/D,MAKA,SAAa4uM,GAA+B,IAAtBhc,EAAYpxL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAEpC,OAAOD,KAAKiwM,aAAc5C,EAAShc,EAEpC,GAEA,CAAA7uL,IAAA,uBAAA/D,MAIA,WAEgC,OAA1BuB,KAAKqvM,mBAETrvM,KAAKqvM,iBAAmBa,KACxBlwM,KAAKuvM,iBAAkBvvM,KAAKqvM,kBAI9B,GAEA,CAAA7sM,IAAA,+BAAA/D,MAIA,WAEiC,OAA3BuB,KAAKsvM,oBAETtvM,KAAKsvM,kBAAoBa,KACzBnwM,KAAKuvM,iBAAkBvvM,KAAKsvM,mBAI9B,GAEA,CAAA9sM,IAAA,UAAA/D,MAKA,WAECuB,KAAKowM,WAE0B,OAA1BpwM,KAAKqvM,kBAA4BrvM,KAAKqvM,iBAAiB3tC,UAC5B,OAA3B1hK,KAAKsvM,mBAA6BtvM,KAAKsvM,kBAAkB5tC,SAE/D,GAEA,CAAAl/J,IAAA,WAAA/D,MAEA,SAAU4xM,GAETrwM,KAAK+uM,QAAU9xM,KAAKwf,MAAOxf,KAAKqzM,KAAMD,IACtCrwM,KAAKgvM,UAAY/xM,KAAKs1J,IAAK,EAAGvyJ,KAAK+uM,QAEpC,GAAC,CAAAvsM,IAAA,WAAA/D,MAED,WAE6B,OAAvBuB,KAAKovM,eAAyBpvM,KAAKovM,cAAc1tC,UAElB,OAA/B1hK,KAAK8uM,uBAAiC9uM,KAAK8uM,sBAAsBptC,UAEtE,IAAM,IAAIhlK,EAAI,EAAGA,EAAIsD,KAAKivM,WAAWr3M,OAAQ8E,IAE5CsD,KAAKivM,WAAYvyM,GAAIglK,SAIvB,GAAC,CAAAl/J,IAAA,WAAA/D,MAED,SAAU8xM,GAETvwM,KAAK6uM,UAAUpc,gBAAiB+b,IAChC+B,EAAapvC,aAAc,EAC3BqvC,GAAcD,EAAc,EAAG,EAAGA,EAAapiM,MAAOoiM,EAAaniM,OAEpE,GAAC,CAAA5L,IAAA,eAAA/D,MAED,SAAc4iK,EAASgwB,GAEjBhwB,EAAQ/c,UAAY0F,IAAyBqX,EAAQ/c,UAAY2F,GAErEjqJ,KAAKyvM,SAAmC,IAAzBpuC,EAAQloB,MAAMvhJ,OAAe,GAAOypK,EAAQloB,MAAO,GAAIhrI,OAASkzJ,EAAQloB,MAAO,GAAIA,MAAMhrI,OAIxGnO,KAAKyvM,SAAUpuC,EAAQloB,MAAMhrI,MAAQ,GAItCqgM,GAAaxuM,KAAK6uM,UAAU3c,kBAE5B,IAAMwd,EAAqBre,GAAgBrxL,KAAK2vM,mBAKhD,OAJA3vM,KAAKywM,iBAAkBpvC,EAASquC,GAChC1vM,KAAK8vM,YAAaJ,GAClB1vM,KAAK+vM,SAAUL,GAERA,CAER,GAAC,CAAAltM,IAAA,mBAAA/D,MAED,WAEC,IAAM0P,EAAQ,EAAIlR,KAAKC,IAAK8C,KAAKgvM,UAAW,KACtC5gM,EAAS,EAAIpO,KAAKgvM,UAElB90I,EAAS,CACdmkG,UAAWxT,GACXyT,UAAWzT,GACXgU,iBAAiB,EACjBj6J,KAAM6mJ,GACN8S,OAAQxS,GACR0S,SAAUxP,GACVqS,aAAa,GAGRouC,EAAqBgB,GAAqBviM,EAAOC,EAAQ8rD,GAE/D,GAAoC,OAA/Bl6D,KAAK8uM,uBAAkC9uM,KAAK8uM,sBAAsB3gM,QAAUA,EAAQ,CAEpD,OAA/BnO,KAAK8uM,uBAET9uM,KAAKowM,WAINpwM,KAAK8uM,sBAAwB4B,GAAqBviM,EAAOC,EAAQ8rD,GAEjE,IAAQ60I,EAAY/uM,KAAZ+uM,QAAiB4B,EAiS5B,SAAwBC,GAUvB,IARA,IAAMC,EAAY,GACZC,EAAW,GACXC,EAAS,GAEXC,EAAMJ,EAEJK,EAAYL,EAjiBH,EAiiBsB,EAAIxC,GAAgBx2M,OAE/C8E,EAAI,EAAGA,EAAIu0M,EAAWv0M,IAAO,CAEtC,IAAMw0M,EAAUj0M,KAAKs1J,IAAK,EAAGy+C,GAC7BF,EAASh0M,KAAMo0M,GACf,IAAI1B,EAAQ,EAAM0B,EAEbx0M,EAAIk0M,EAziBK,EA2iBbpB,EAAQpB,GAAiB1xM,EAAIk0M,EA3iBhB,EA2iBmC,GAE/B,IAANl0M,IAEX8yM,EAAQ,GAITuB,EAAOj0M,KAAM0yM,GAiBb,IAfA,IAAM2B,EAAY,GAAQD,EAAU,GAC9BhmK,GAAQimK,EACRj0M,EAAM,EAAIi0M,EACVj3B,EAAM,CAAEhvI,EAAKA,EAAKhuC,EAAKguC,EAAKhuC,EAAKA,EAAKguC,EAAKA,EAAKhuC,EAAKA,EAAKguC,EAAKhuC,GAE/Dk0M,EAAY,EACZnkB,EAAW,EACXokB,EAAe,EACfC,EAAS,EACTC,EAAgB,EAEhBhyI,EAAW,IAAIs1F,aAAcw8C,EAAepkB,EAAWmkB,GACvD3xC,EAAK,IAAI5K,aAAcy8C,EAASrkB,EAAWmkB,GAC3CnlB,EAAY,IAAIp3B,aAAc08C,EAAgBtkB,EAAWmkB,GAErDllB,EAAO,EAAGA,EAAOklB,EAAWllB,IAAU,CAE/C,IAAMhwL,EAAMgwL,EAAO,EAAM,EAAI,EAAI,EAC3B7kL,EAAI6kL,EAAO,EAAI,GAAM,EACrBslB,EAAc,CACnBt1M,EAAGmL,EAAG,EACNnL,EAAI,EAAI,EAAGmL,EAAG,EACdnL,EAAI,EAAI,EAAGmL,EAAI,EAAG,EAClBnL,EAAGmL,EAAG,EACNnL,EAAI,EAAI,EAAGmL,EAAI,EAAG,EAClBnL,EAAGmL,EAAI,EAAG,GAEXk4D,EAAStwC,IAAKuiL,EAAaH,EAAepkB,EAAWf,GACrDzsB,EAAGxwI,IAAKirJ,EAAKo3B,EAASrkB,EAAWf,GACjC,IAAM3wE,EAAO,CAAE2wE,EAAMA,EAAMA,EAAMA,EAAMA,EAAMA,GAC7CD,EAAUh9J,IAAKssF,EAAMg2F,EAAgBtkB,EAAWf,EAEjD,CAEA,IAAMwI,EAAS,IAAIhP,GACnBgP,EAAO5hL,aAAc,WAAY,IAAI0vK,GAAiBjjH,EAAU8xI,IAChE3c,EAAO5hL,aAAc,KAAM,IAAI0vK,GAAiB/iB,EAAI6xC,IACpD5c,EAAO5hL,aAAc,YAAa,IAAI0vK,GAAiByJ,EAAWslB,IAClEV,EAAU/zM,KAAM43L,GAEXsc,EA7lBS,GA+lBbA,GAIF,CAEA,MAAO,CAAEH,UAAAA,EAAWC,SAAAA,EAAUC,OAAAA,EAE/B,CA9WsFU,CAAe1C,GAApF/uM,KAAKkvM,UAASyB,EAAxBG,SAAqC9wM,KAAKivM,WAAU0B,EAA1BE,UAAoC7wM,KAAKmvM,QAAOwB,EAApBI,OAE1D/wM,KAAKovM,cA+XR,SAAyBwB,EAAQziM,EAAOC,GAEvC,IAAMsjM,EAAU,IAAI78C,aAAcw5C,IAC5BsD,EAAW,IAAI7qC,GAAS,EAAG,EAAG,GAC9B8qC,EAAiB,IAAIrjB,GAAgB,CAE1Cp1L,KAAM,wBAENw1L,QAAS,CACR,EAAK0f,GACL,mBAAsB,EAAMlgM,EAC5B,oBAAuB,EAAMC,EAC7B,eAAkB,GAAF3M,OAAKmvM,EAAM,OAG5BxiB,SAAU,CACT,OAAU,CAAE3vL,MAAO,MACnB,QAAW,CAAEA,MAAO,GACpB,QAAW,CAAEA,MAAOizM,GACpB,YAAe,CAAEjzM,OAAO,GACxB,OAAU,CAAEA,MAAO,GACnB,OAAU,CAAEA,MAAO,GACnB,SAAY,CAAEA,MAAOkzM,IAGtB/iB,aA4JgB,yoCA1JhBC,eAA0B,miDA8D1BjT,SAAUp0B,GACV+0B,WAAW,EACXC,YAAY,IAIb,OAAOo1B,CAER,CAhewBC,CAAgB9C,EAAS5gM,EAAOC,EAEtD,CAEA,OAAOshM,CAER,GAAC,CAAAltM,IAAA,mBAAA/D,MAED,SAAkBo6K,GAEjB,IAAMi5B,EAAU,IAAI5mB,GAAMlrL,KAAKivM,WAAY,GAAKp2B,GAChD74K,KAAK6uM,UAAUkD,QAASD,EAASxD,GAElC,GAAC,CAAA9rM,IAAA,iBAAA/D,MAED,SAAgBszL,EAAOle,EAAMC,EAAK47B,GAEjC,IAEMsC,EAAa,IAAIniB,GAFX,GACG,EACwChc,EAAMC,GACvDm+B,EAAS,CAAE,GAAK,EAAG,EAAG,EAAG,EAAG,GAC5BC,EAAc,CAAE,EAAG,EAAG,GAAK,GAAK,GAAK,GACrCpgB,EAAW9xL,KAAK6uM,UAEhBsD,EAAoBrgB,EAAS8T,UAC7BtT,EAAcR,EAASQ,YAC7BR,EAASqT,cAAeoJ,IAExBzc,EAASQ,YAAc7oC,GACvBqoC,EAAS8T,WAAY,EAErB,IAAMwM,EAAqB,IAAIpwB,GAAmB,CACjD7oL,KAAM,mBACN0iL,KAAMz0B,GACNo1B,YAAY,EACZD,WAAW,IAGN81B,EAAgB,IAAInnB,GAAM,IAAIuB,GAAe2lB,GAE/CE,GAAgB,EACd1yI,EAAamyH,EAAMnyH,WAEpBA,EAECA,EAAW67F,UAEf22C,EAAmB5qK,MAAMk0H,KAAM97F,GAC/BmyH,EAAMnyH,WAAa,KACnB0yI,GAAgB,IAMjBF,EAAmB5qK,MAAMk0H,KAAM6yC,IAC/B+D,GAAgB,GAIjB,IAAM,IAAI51M,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAMs5B,EAAMt5B,EAAI,EAEH,IAARs5B,GAEJg8K,EAAWrgC,GAAG1iJ,IAAK,EAAGgjL,EAAQv1M,GAAK,GACnCs1M,EAAWj7B,OAAQm7B,EAAax1M,GAAK,EAAG,IAErB,IAARs5B,GAEXg8K,EAAWrgC,GAAG1iJ,IAAK,EAAG,EAAGgjL,EAAQv1M,IACjCs1M,EAAWj7B,OAAQ,EAAGm7B,EAAax1M,GAAK,KAIxCs1M,EAAWrgC,GAAG1iJ,IAAK,EAAGgjL,EAAQv1M,GAAK,GACnCs1M,EAAWj7B,OAAQ,EAAG,EAAGm7B,EAAax1M,KAIvC,IAAM6oD,EAAOvlD,KAAKgvM,UAElBwB,GAAcd,EAAoB15K,EAAMuvB,EAAM7oD,EAAI,EAAI6oD,EAAO,EAAGA,EAAMA,GAEtEusI,EAASW,gBAAiBid,GAErB4C,GAEJxgB,EAAStsL,OAAQ6sM,EAAeL,GAIjClgB,EAAStsL,OAAQusL,EAAOigB,EAEzB,CAEAK,EAAcvnC,SAASpJ,UACvB2wC,EAAcx5B,SAASnX,UAEvBowB,EAASQ,YAAcA,EACvBR,EAAS8T,UAAYuM,EACrBpgB,EAAMnyH,WAAaA,CAEpB,GAAC,CAAAp9D,IAAA,mBAAA/D,MAED,SAAkB4iK,EAASquC,GAE1B,IAAM5d,EAAW9xL,KAAK6uM,UAEhB/b,EAAkBzxB,EAAQ/c,UAAY0F,IAAyBqX,EAAQ/c,UAAY2F,GAEpF6oC,GAE2B,OAA1B9yL,KAAKqvM,mBAETrvM,KAAKqvM,iBAAmBa,MAIzBlwM,KAAKqvM,iBAAiBjhB,SAASyS,WAAWpiM,OAA4C,IAAlC4iK,EAAQlC,uBAAsC,EAAI,GAItE,OAA3Bn/J,KAAKsvM,oBAETtvM,KAAKsvM,kBAAoBa,MAM3B,IAAMt3B,EAAWia,EAAgB9yL,KAAKqvM,iBAAmBrvM,KAAKsvM,kBACxDjc,EAAO,IAAInI,GAAMlrL,KAAKivM,WAAY,GAAKp2B,GAE5BA,EAASuV,SAER,OAAG3vL,MAAQ4iK,EAE7B,IAAM97G,EAAOvlD,KAAKgvM,UAElBwB,GAAcd,EAAoB,EAAG,EAAG,EAAInqJ,EAAM,EAAIA,GAEtDusI,EAASW,gBAAiBid,GAC1B5d,EAAStsL,OAAQ6tL,EAAMib,GAExB,GAAC,CAAA9rM,IAAA,cAAA/D,MAED,SAAaixM,GAEZ,IAAM5d,EAAW9xL,KAAK6uM,UAChBjJ,EAAY9T,EAAS8T,UAC3B9T,EAAS8T,WAAY,EAErB,IAAM,IAAIlpM,EAAI,EAAGA,EAAIsD,KAAKivM,WAAWr3M,OAAQ8E,IAAO,CAEnD,IAAM8yM,EAAQvyM,KAAK04J,KAAM31J,KAAKmvM,QAASzyM,GAAMsD,KAAKmvM,QAASzyM,GAAMsD,KAAKmvM,QAASzyM,EAAI,GAAMsD,KAAKmvM,QAASzyM,EAAI,IAErGi1M,EAAWhD,IAAmBjyM,EAAI,GAAMiyM,GAAgB/2M,QAE9DoI,KAAK6vM,MAAOH,EAAoBhzM,EAAI,EAAGA,EAAG8yM,EAAOmC,EAElD,CAEA7f,EAAS8T,UAAYA,CAEtB,GAEA,CAAApjM,IAAA,QAAA/D,MAOA,SAAOixM,EAAoB6C,EAAOC,EAAQhD,EAAOmC,GAEhD,IAAMc,EAAuBzyM,KAAK8uM,sBAElC9uM,KAAK0yM,UACJhD,EACA+C,EACAF,EACAC,EACAhD,EACA,cACAmC,GAED3xM,KAAK0yM,UACJD,EACA/C,EACA8C,EACAA,EACAhD,EACA,eACAmC,EAEF,GAAC,CAAAnvM,IAAA,YAAA/D,MAED,SAAWk0M,EAAUC,EAAWL,EAAOC,EAAQK,EAAcxkC,EAAWsjC,GAEvE,IAAM7f,EAAW9xL,KAAK6uM,UAChBiE,EAAe9yM,KAAKovM,cAEP,gBAAd/gC,GAA6C,iBAAdA,GAEnCt6J,QAAQwN,MACP,8DAKF,IAEMwxL,EAAW,IAAI7nB,GAAMlrL,KAAKivM,WAAYuD,GAAUM,GAChDE,EAAeF,EAAa1kB,SAE5B6kB,EAASjzM,KAAKkvM,UAAWqD,GAAU,EACnCW,EAAkB3qB,SAAUsqB,GAAiB51M,KAAK00J,IAAO,EAAIshD,GAAW,EAAIh2M,KAAK00J,GAAK,GACtFwhD,EAAcN,EAAeK,EAC7BzxC,EAAU8mB,SAAUsqB,GAAiB,EAAI51M,KAAKwf,MARxB,EAQqD02L,GAAgB9E,GAE5F5sC,EAAU4sC,IAEdt6L,QAAQk/C,KAAK,iBAADxxD,OACXoxM,EAAY,kDAAApxM,OACZggK,EAAO,wCAAAhgK,OAAuC4sM,KAOhD,IAHA,IAAMqD,EAAU,GACZ/gE,EAAM,EAEAj0I,EAAI,EAAGA,EAAI2xM,KAAgB3xM,EAAI,CAExC,IAAMR,EAAIQ,EAAIy2M,EACRC,EAASn2M,KAAKk2J,KAAOj3J,EAAIA,EAAI,GACnCw1M,EAAQ50M,KAAMs2M,GAEH,IAAN12M,EAEJi0I,GAAOyiE,EAEI12M,EAAI+kK,IAEf9wB,GAAO,EAAIyiE,EAIb,CAEA,IAAM,IAAI12M,EAAI,EAAGA,EAAIg1M,EAAQ95M,OAAQ8E,IAEpCg1M,EAASh1M,GAAMg1M,EAASh1M,GAAMi0I,EAI/BqiE,EAAsB,OAAGv0M,MAAQk0M,EAAStxC,QAC1C2xC,EAAuB,QAAGv0M,MAAQgjK,EAClCuxC,EAAuB,QAAGv0M,MAAQizM,EAClCsB,EAA2B,YAAGv0M,MAAsB,gBAAd4vK,EAEjCsjC,IAEJqB,EAAwB,SAAGv0M,MAAQkzM,GAIpC,IAAQ5C,EAAY/uM,KAAZ+uM,QACRiE,EAAsB,OAAGv0M,MAAQy0M,EACjCF,EAAsB,OAAGv0M,MAAQswM,EAAUwD,EAE3C,IAAMc,EAAarzM,KAAKkvM,UAAWsD,GAInChC,GAAcoC,EAHJ,EAAIS,GAAeb,EAASzD,EA5gBxB,EA4gB4CyD,EAASzD,EA5gBrD,EA4gByE,GAC7E,GAAM/uM,KAAKgvM,UAAYqE,GAEF,EAAIA,EAAY,EAAIA,GACnDvhB,EAASW,gBAAiBmgB,GAC1B9gB,EAAStsL,OAAQutM,EAAUzE,GAE5B,KAACM,CAAA,CAlekB,GAwjBpB,SAAS8B,GAAqBviM,EAAOC,EAAQ8rD,GAE5C,IAAMw1I,EAAqB,IAAI1uC,GAAmB7yJ,EAAOC,EAAQ8rD,GAIjE,OAHAw1I,EAAmBruC,QAAQ/c,QAAU8F,GACrCslD,EAAmBruC,QAAQloK,KAAO,eAClCu2M,EAAmBvuC,aAAc,EAC1BuuC,CAER,CAEA,SAASc,GAAcjvM,EAAQrF,EAAGmL,EAAG8G,EAAOC,GAE3C7M,EAAO6/J,SAASnyI,IAAK/yB,EAAGmL,EAAG8G,EAAOC,GAClC7M,EAAO2/J,QAAQjyI,IAAK/yB,EAAGmL,EAAG8G,EAAOC,EAElC,CAqGA,SAAS+hM,KAER,OAAO,IAAI5hB,GAAgB,CAE1Bp1L,KAAM,0BAENi1L,SAAU,CACT,OAAU,CAAE3vL,MAAO,OAGpBmwL,aAwEgB,yoCAtEhBC,eAA0B,yYAqB1BjT,SAAUp0B,GACV+0B,WAAW,EACXC,YAAY,GAId,CAEA,SAAS0zB,KAER,OAAO,IAAI3hB,GAAgB,CAE1Bp1L,KAAM,kBAENi1L,SAAU,CACT,OAAU,CAAE3vL,MAAO,MACnB,WAAc,CAAEA,OAAS,IAG1BmwL,aA8BgB,yoCA5BhBC,eAA0B,0UAkB1BjT,SAAUp0B,GACV+0B,WAAW,EACXC,YAAY,GAId,CA+DA,SAAS82B,GAAiBxhB,GAEzB,IAAIyhB,EAAa,IAAIxyJ,QAEjByyJ,EAAiB,KAqFrB,SAASpG,EAAkB7kK,GAE1B,IAAM84H,EAAU94H,EAAMhnC,OAEtB8/J,EAAQnpI,oBAAqB,UAAWk1K,GAExC,IAAMqG,EAAYF,EAAWxjL,IAAKsxI,QAEfj3J,IAAdqpM,IAEJF,EAAW/1K,OAAQ6jI,GACnBoyC,EAAU/xC,UAIZ,CAeA,MAAO,CACN3xI,IAlHD,SAAcsxI,GAEb,GAAKA,GAAWA,EAAQ1B,UAAY,CAEnC,IAAMrb,EAAU+c,EAAQ/c,QAElBovD,EAAkBpvD,IAAY4F,IAAoC5F,IAAY6F,GAC9EwpD,EAAcrvD,IAAY0F,IAAyB1F,IAAY2F,GAIrE,GAAKypD,GAAiBC,EAAY,CAEjC,GAAKtyC,EAAQlC,wBAAsD,IAA7BkC,EAAQjC,iBAA4B,CAEzEiC,EAAQjC,kBAAmB,EAE3B,IAAIiyB,EAAekiB,EAAWxjL,IAAKsxI,GAOnC,OALwB,OAAnBmyC,IAA0BA,EAAiB,IAAI5E,GAAgB9c,IAEpET,EAAeqiB,EAAgBF,EAAeI,oBAAqBvyC,EAASgwB,GAAiBmiB,EAAeK,YAAaxyC,EAASgwB,GAClIkiB,EAAWtkL,IAAKoyI,EAASgwB,GAElBA,EAAahwB,OAErB,CAEC,GAAKkyC,EAAWnlK,IAAKizH,GAEpB,OAAOkyC,EAAWxjL,IAAKsxI,GAAUA,QAIjC,IAAMloB,EAAQkoB,EAAQloB,MAEtB,GAAOu6D,GAAiBv6D,GAASA,EAAM/qI,OAAS,GAASulM,GAAax6D,GA+B3E,SAAgCA,GAK/B,IAHA,IAAIx7D,EAAQ,EACN/lF,EAAS,EAEL8E,EAAI,EAAGA,EAAI9E,EAAQ8E,SAER0N,IAAf+uI,EAAOz8I,IAAoBihF,IAIjC,OAAOA,IAAU/lF,CAGlB,CA7CoFk8M,CAAuB36D,GAAY,CAEzF,OAAnBq6D,IAA0BA,EAAiB,IAAI5E,GAAgB9c,IAEpE,IAAMT,EAAeqiB,EAAgBF,EAAeI,oBAAqBvyC,GAAYmyC,EAAeK,YAAaxyC,GAKjH,OAJAkyC,EAAWtkL,IAAKoyI,EAASgwB,GAEzBhwB,EAAQz9J,iBAAkB,UAAWwpM,GAE9B/b,EAAahwB,OAErB,CAIC,OAAO,IAQX,CAED,CAEA,OAAOA,CAER,EAkDCK,QAfD,WAEC6xC,EAAa,IAAIxyJ,QAEO,OAAnByyJ,IAEJA,EAAe9xC,UACf8xC,EAAiB,KAInB,EAOD,CAEA,SAASO,GAAiBnnJ,GAEzB,IAAM0/B,EAAa,CAAC,EAEpB,SAAS0nH,EAAc76M,GAEtB,QAA4BiR,IAAvBkiF,EAAYnzF,GAEhB,OAAOmzF,EAAYnzF,GAIpB,IAAImtM,EAEJ,OAASntM,GAER,IAAK,sBACJmtM,EAAY15I,EAAGonJ,aAAc,wBAA2BpnJ,EAAGonJ,aAAc,4BAA+BpnJ,EAAGonJ,aAAc,8BACzH,MAED,IAAK,iCACJ1N,EAAY15I,EAAGonJ,aAAc,mCAAsCpnJ,EAAGonJ,aAAc,uCAA0CpnJ,EAAGonJ,aAAc,yCAC/I,MAED,IAAK,gCACJ1N,EAAY15I,EAAGonJ,aAAc,kCAAqCpnJ,EAAGonJ,aAAc,sCAAyCpnJ,EAAGonJ,aAAc,wCAC7I,MAED,IAAK,iCACJ1N,EAAY15I,EAAGonJ,aAAc,mCAAsCpnJ,EAAGonJ,aAAc,yCACpF,MAED,QACC1N,EAAY15I,EAAGonJ,aAAc76M,GAM/B,OAFAmzF,EAAYnzF,GAASmtM,EAEdA,CAER,CAEA,MAAO,CAENl4J,IAAK,SAAWj1C,GAEf,OAAgC,OAAzB66M,EAAc76M,EAEtB,EAEAo7H,KAAM,SAAWiiE,GAEXA,EAAaC,SAEjBud,EAAc,2BAIdA,EAAc,uBACdA,EAAc,qBACdA,EAAc,0BACdA,EAAc,iCACdA,EAAc,4BACdA,EAAc,0BACdA,EAAc,2BACdA,EAAc,2BAIfA,EAAc,4BACdA,EAAc,+BACdA,EAAc,uCAEf,EAEAjkL,IAAK,SAAW52B,GAEf,IAAMmtM,EAAY0N,EAAc76M,GAQhC,OANmB,OAAdmtM,GAEJvyL,QAAQk/C,KAAM,wBAA0B95D,EAAO,6BAIzCmtM,CAER,EAIF,CAEA,SAAS2N,GAAiBrnJ,EAAIslB,EAAYmc,EAAMm4G,GAE/C,IAAM9uB,EAAa,CAAC,EACdw8B,EAAsB,IAAInzJ,QAEhC,SAASozJ,EAAmB5rK,GAE3B,IAAMuiI,EAAWviI,EAAMhnC,OAQvB,IAAM,IAAMpI,KANY,OAAnB2xK,EAASl8J,OAEbsjE,EAAWtR,OAAQkqG,EAASl8J,OAITk8J,EAAS54F,WAE5BA,EAAWtR,OAAQkqG,EAAS54F,WAAY/4E,IAIzC2xK,EAAS5yI,oBAAqB,UAAWi8K,UAElCz8B,EAAY5M,EAAS1rI,IAE5B,IAAM82H,EAAYg+C,EAAoBnkL,IAAK+6I,GAEtC5U,IAEJhkF,EAAWtR,OAAQs1F,GACnBg+C,EAAoB12K,OAAQstI,IAI7B07B,EAAcqD,wBAAyB/+B,IAEK,IAAvCA,EAASg+B,kCAENh+B,EAASs+B,kBAMjB/6G,EAAK+lH,OAAO18B,YAEb,CA8CA,SAAS28B,EAA0BvpC,GAElC,IAAMqc,EAAU,GAEVmtB,EAAgBxpC,EAASl8J,MACzB2lM,EAAmBzpC,EAAS54F,WAAW3S,SACzClmE,EAAU,EAEd,GAAuB,OAAlBi7M,EAAyB,CAE7B,IAAMvxM,EAAQuxM,EAAcvxM,MAC5B1J,EAAUi7M,EAAcj7M,QAExB,IAAM,IAAIqD,EAAI,EAAGmK,EAAI9D,EAAMnL,OAAQ8E,EAAImK,EAAGnK,GAAK,EAAI,CAElD,IAAMV,EAAI+G,EAAOrG,EAAI,GACf6J,EAAIxD,EAAOrG,EAAI,GACfT,EAAI8G,EAAOrG,EAAI,GAErByqL,EAAQrqL,KAAMd,EAAGuK,EAAGA,EAAGtK,EAAGA,EAAGD,EAE9B,CAED,KAAO,CAEN,IAAM+G,EAAQwxM,EAAiBxxM,MAC/B1J,EAAUk7M,EAAiBl7M,QAE3B,IAAM,IAAIqD,EAAI,EAAGmK,EAAM9D,EAAMnL,OAAS,EAAM,EAAG8E,EAAImK,EAAGnK,GAAK,EAAI,CAE9D,IAAMV,EAAIU,EAAI,EACR6J,EAAI7J,EAAI,EACRT,EAAIS,EAAI,EAEdyqL,EAAQrqL,KAAMd,EAAGuK,EAAGA,EAAGtK,EAAGA,EAAGD,EAE9B,CAED,CAEA,IAAMk6J,EAAY,IAAM0D,GAAkButB,GAAY7C,GAAwBN,IAAyBmD,EAAS,GAChHjxB,EAAU78J,QAAUA,EAMpB,IAAMm7M,EAAoBN,EAAoBnkL,IAAK+6I,GAE9C0pC,GAAoBtiI,EAAWtR,OAAQ4zI,GAI5CN,EAAoBjlL,IAAK67I,EAAU5U,EAEpC,CAgCA,MAAO,CAENnmI,IArID,SAAc5tB,EAAQ2oK,GAErB,OAAmC,IAA9B4M,EAAY5M,EAAS1rI,MAE1B0rI,EAASlnK,iBAAkB,UAAWuwM,GAEtCz8B,EAAY5M,EAAS1rI,KAAO,EAE5BivD,EAAK+lH,OAAO18B,cANqC5M,CAUlD,EA0HCxH,OAxHD,SAAiBwH,GAEhB,IAAM29B,EAAqB39B,EAAS54F,WAIpC,IAAM,IAAM/4E,KAAQsvM,EAEnBv2H,EAAWoxF,OAAQmlC,EAAoBtvM,GAAQ,OAMhD,IAAM2sL,EAAkBhb,EAASgb,gBAEjC,IAAM,IAAM3sL,KAAQ2sL,EAInB,IAFA,IAAM/iL,EAAQ+iL,EAAiB3sL,GAErBuD,EAAI,EAAGmK,EAAI9D,EAAMnL,OAAQ8E,EAAImK,EAAGnK,IAEzCw1E,EAAWoxF,OAAQvgK,EAAOrG,GAAK,MAMlC,EA8FC+3M,sBAnCD,SAAgC3pC,GAE/B,IAAM4pC,EAAmBR,EAAoBnkL,IAAK+6I,GAElD,GAAK4pC,EAAmB,CAEvB,IAAMJ,EAAgBxpC,EAASl8J,MAER,OAAlB0lM,GAICI,EAAiBr7M,QAAUi7M,EAAcj7M,SAE7Cg7M,EAA0BvpC,EAM7B,MAECupC,EAA0BvpC,GAI3B,OAAOopC,EAAoBnkL,IAAK+6I,EAEjC,EAWD,CAEA,SAAS6pC,GAA4B/nJ,EAAI0/B,EAAY+B,EAAMmoG,GAE1D,IAEIhiJ,EAQA5vC,EAAMkyL,EAVJL,EAAWD,EAAaC,SA4D9Bz2L,KAAKgqM,QAxDL,SAAkBvrM,GAEjB+1C,EAAO/1C,CAER,EAqDAuB,KAAKgqL,SAjDL,SAAmBvrL,GAElBmG,EAAOnG,EAAMmG,KACbkyL,EAAkBr4L,EAAMq4L,eAEzB,EA6CA92L,KAAKwF,OA3CL,SAAiBslC,EAAO6yC,GAEvB/wB,EAAGgoJ,aAAcpgK,EAAMmpC,EAAO/4E,EAAMkmC,EAAQgsJ,GAE5CzoG,EAAKi1E,OAAQ3lF,EAAOnpC,EAAM,EAE3B,EAsCAx0C,KAAKkqM,gBApCL,SAA0Bp/J,EAAO6yC,EAAOwsH,GAEvC,GAAmB,IAAdA,EAAL,CAEA,IAAI7D,EAAW5yL,EAEf,GAAK+iL,EAEJ6P,EAAY15I,EACZl5C,EAAa,6BAOb,GAFAA,EAAa,6BAEM,QAHnB4yL,EAAYh6G,EAAWv8D,IAAK,2BAM3B,YADAhc,QAAQwN,MAAO,yIAOjB+kL,EAAW5yL,GAAc8gC,EAAMmpC,EAAO/4E,EAAMkmC,EAAQgsJ,EAAiBqT,GAErE97G,EAAKi1E,OAAQ3lF,EAAOnpC,EAAM21J,EAzBG,CA2B9B,CASD,CAEA,SAAS0K,GAAWjoJ,GAEnB,IAKMpnD,EAAS,CACd4wL,MAAO,EACP0e,MAAO,EACPC,UAAW,EACX9qC,OAAQ,EACR+qC,MAAO,GA+CR,MAAO,CACNZ,OA1Dc,CACd18B,WAAY,EACZnY,SAAU,GAyDV/5J,OAAQA,EACRyvM,SAAU,KACVC,WAAW,EACX36I,MAfD,WAEC/0D,EAAO4wL,QACP5wL,EAAOsvM,MAAQ,EACftvM,EAAOuvM,UAAY,EACnBvvM,EAAOykK,OAAS,EAChBzkK,EAAOwvM,MAAQ,CAEhB,EAQC1xC,OAlDD,SAAiB3lF,EAAOnpC,EAAM2gK,GAI7B,OAFA3vM,EAAOsvM,QAEEtgK,GAER,KAAK,EACJhvC,EAAOuvM,WAAaI,GAAkBx3H,EAAQ,GAC9C,MAED,KAAK,EACJn4E,EAAOwvM,OAASG,GAAkBx3H,EAAQ,GAC1C,MAED,KAAK,EACJn4E,EAAOwvM,OAASG,GAAkBx3H,EAAQ,GAC1C,MAED,KAAK,EACJn4E,EAAOwvM,OAASG,EAAgBx3H,EAChC,MAED,KAAK,EACJn4E,EAAOykK,QAAUkrC,EAAgBx3H,EACjC,MAED,QACC5pE,QAAQwN,MAAO,sCAAuCizB,GAKzD,EAqBD,CAEA,SAAS4gK,GAAep5M,EAAGuK,GAE1B,OAAOvK,EAAG,GAAMuK,EAAG,EAEpB,CAEA,SAAS8uM,GAAkBr5M,EAAGuK,GAE7B,OAAOtJ,KAAK4f,IAAKtW,EAAG,IAAQtJ,KAAK4f,IAAK7gB,EAAG,GAE1C,CAEA,SAASu5M,GAAmB3oJ,EAAI4pI,EAAcj3B,GAS7C,IAPA,IAAMi2C,EAAiB,CAAC,EAClBppB,EAAkB,IAAIv3B,aAAc,GACpC4gD,EAAgB,IAAI10J,QACpBu0J,EAAQ,IAAI11C,GAEZ81C,EAAiB,GAEbh5M,EAAI,EAAGA,EAAI,EAAGA,IAEvBg5M,EAAgBh5M,GAAM,CAAEA,EAAG,GAsQ5B,MAAO,CAEN4mK,OApQD,SAAiBnhK,EAAQ2oK,EAAU+N,EAAUyuB,GAE5C,IAAMqO,EAAmBxzM,EAAOopL,sBAEhC,IAA+B,IAA1BiL,EAAaC,SAAoB,CAKrC,IAAMxP,EAAiBnc,EAASgb,gBAAgBvmH,UAAYurG,EAASgb,gBAAgB/c,QAAU+B,EAASgb,gBAAgBt+I,MAClHouK,OAAyCxrM,IAAnB68K,EAAiCA,EAAervL,OAAS,EAEjF+5F,EAAQ8jH,EAAc1lL,IAAK+6I,GAE/B,QAAe1gK,IAAVunF,GAAuBA,EAAMhU,QAAUi4H,EAAoB,MAEhDxrM,IAAVunF,GAAsBA,EAAM0vE,QAAQK,UAEzC,IAAMm0C,OAAyDzrM,IAAtC0gK,EAASgb,gBAAgBvmH,SAC5Cu2I,OAAsD1rM,IAApC0gK,EAASgb,gBAAgB/c,OAC3CgtC,OAAoD3rM,IAAnC0gK,EAASgb,gBAAgBt+I,MAE1CikJ,EAAe3gB,EAASgb,gBAAgBvmH,UAAY,GACpDy2I,EAAelrC,EAASgb,gBAAgB/c,QAAU,GAClDktC,EAAcnrC,EAASgb,gBAAgBt+I,OAAS,GAElD0uK,EAAkB,GAEI,IAArBL,IAA4BK,EAAkB,IAC1B,IAApBJ,IAA2BI,EAAkB,IAC1B,IAAnBH,IAA0BG,EAAkB,GAEjD,IAAI/nM,EAAQ28J,EAAS54F,WAAW3S,SAASoe,MAAQu4H,EAC7C9nM,EAAS,EAERD,EAAQqoL,EAAasU,iBAEzB18L,EAASnR,KAAKurD,KAAMr6C,EAAQqoL,EAAasU,gBACzC38L,EAAQqoL,EAAasU,gBAItB,IAAM3wC,EAAS,IAAItF,aAAc1mJ,EAAQC,EAAS,EAAIwnM,GAEhDv0C,EAAU,IAAIO,GAAkBzH,EAAQhsJ,EAAOC,EAAQwnM,GAC7Dv0C,EAAQz8J,KAAO4mJ,GACf6V,EAAQ/B,aAAc,EAMtB,IAFA,IAAM62C,EAAqC,EAAlBD,EAEfx5M,EAAI,EAAGA,EAAIk5M,EAAmBl5M,IAQvC,IANA,IAAM05M,EAAc3qB,EAAc/uL,GAC5B25M,EAAcL,EAAct5M,GAC5B45M,EAAaL,EAAav5M,GAE1BqtC,EAAS57B,EAAQC,EAAS,EAAI1R,EAE1BmT,EAAI,EAAGA,EAAIumM,EAAYz4H,MAAO9tE,IAAO,CAE9C,IAAM45K,EAAS55K,EAAIsmM,GAEO,IAArBN,IAEJP,EAAMvqC,oBAAqBqrC,EAAavmM,GAExCsqJ,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMp5M,EACtCi+J,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMjuM,EACtC8yJ,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMhuM,EACtC6yJ,EAAQpwH,EAAS0/I,EAAS,GAAM,IAIR,IAApBqsB,IAEJR,EAAMvqC,oBAAqBsrC,EAAaxmM,GAExCsqJ,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMp5M,EACtCi+J,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMjuM,EACtC8yJ,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMhuM,EACtC6yJ,EAAQpwH,EAAS0/I,EAAS,GAAM,IAIT,IAAnBssB,IAEJT,EAAMvqC,oBAAqBurC,EAAYzmM,GAEvCsqJ,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMp5M,EACtCi+J,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMjuM,EACtC8yJ,EAAQpwH,EAAS0/I,EAAS,IAAO6rB,EAAMhuM,EACvC6yJ,EAAQpwH,EAAS0/I,EAAS,IAAiC,IAAxB6sB,EAAW7zB,SAAmB6yB,EAAMluM,EAAI,EAI7E,CAIDuqF,EAAQ,CACPhU,MAAOi4H,EACPv0C,QAASA,EACT97G,KAAM,IAAI4vG,GAAShnJ,EAAOC,IAG3BqnM,EAAcxmL,IAAK67I,EAAUn5E,GAY7Bm5E,EAASlnK,iBAAkB,WAV3B,SAAS2yM,IAERl1C,EAAQK,UAER+zC,EAAcj4K,OAAQstI,GAEtBA,EAAS5yI,oBAAqB,UAAWq+K,EAE1C,GAID,CAMA,IAFA,IAAIC,EAAqB,EAEf95M,EAAI,EAAGA,EAAIi5M,EAAiB/9M,OAAQ8E,IAE7C85M,GAAsBb,EAAkBj5M,GAIzC,IAAM+5M,EAAqB3rC,EAASib,qBAAuB,EAAI,EAAIywB,EAEnElP,EAAQoP,cAAczmL,SAAU28B,EAAI,2BAA4B6pJ,GAChEnP,EAAQoP,cAAczmL,SAAU28B,EAAI,wBAAyB+oJ,GAE7DrO,EAAQoP,cAAczmL,SAAU28B,EAAI,sBAAuB+kC,EAAM0vE,QAAS9B,GAC1E+nC,EAAQoP,cAAczmL,SAAU28B,EAAI,0BAA2B+kC,EAAMpsC,KAGtE,KAAO,CAKN,IAAM3tD,OAA8BwS,IAArBurM,EAAiC,EAAIA,EAAiB/9M,OAEjE++M,EAAanB,EAAgB1qC,EAAS1rI,IAE1C,QAAoBh1B,IAAfusM,GAA4BA,EAAW/+M,SAAWA,EAAS,CAI/D++M,EAAa,GAEb,IAAM,IAAIj6M,EAAI,EAAGA,EAAI9E,EAAQ8E,IAE5Bi6M,EAAYj6M,GAAM,CAAEA,EAAG,GAIxB84M,EAAgB1qC,EAAS1rI,IAAOu3K,CAEjC,CAIA,IAAM,IAAIj6M,EAAI,EAAGA,EAAI9E,EAAQ8E,IAAO,CAEnC,IAAM2vL,EAAYsqB,EAAYj6M,GAE9B2vL,EAAW,GAAM3vL,EACjB2vL,EAAW,GAAMspB,EAAkBj5M,EAEpC,CAEAi6M,EAAWn9G,KAAM67G,IAEjB,IAAM,IAAI34M,EAAI,EAAGA,EAAI,EAAGA,IAElBA,EAAI9E,GAAU++M,EAAYj6M,GAAK,IAEnCg5M,EAAgBh5M,GAAK,GAAMi6M,EAAYj6M,GAAK,GAC5Cg5M,EAAgBh5M,GAAK,GAAMi6M,EAAYj6M,GAAK,KAI5Cg5M,EAAgBh5M,GAAK,GAAM2a,OAAOu/L,iBAClClB,EAAgBh5M,GAAK,GAAM,GAM7Bg5M,EAAel8G,KAAM47G,IAOrB,IALA,IAAM3pB,EAAe3gB,EAASgb,gBAAgBvmH,SACxCy2I,EAAelrC,EAASgb,gBAAgB/c,OAE1CytC,EAAqB,EAEf95M,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAM2vL,EAAYqpB,EAAgBh5M,GAC5BkS,EAAQy9K,EAAW,GACnB5tL,EAAQ4tL,EAAW,GAEpBz9K,IAAUyI,OAAOu/L,kBAAoBn4M,GAEpCgtL,GAAgB3gB,EAASlhG,aAAc,cAAgBltE,KAAQ+uL,EAAc78K,IAEjFk8J,EAASh4J,aAAc,cAAgBpW,EAAG+uL,EAAc78K,IAIpDonM,GAAgBlrC,EAASlhG,aAAc,cAAgBltE,KAAQs5M,EAAcpnM,IAEjFk8J,EAASh4J,aAAc,cAAgBpW,EAAGs5M,EAAcpnM,IAIzDw9K,EAAiB1vL,GAAM+B,EACvB+3M,GAAsB/3M,IAIjBgtL,IAA+D,IAA/C3gB,EAAShhE,aAAc,cAAgBptG,IAE3DouK,EAASk7B,gBAAiB,cAAgBtpM,GAItCs5M,IAA+D,IAA/ClrC,EAAShhE,aAAc,cAAgBptG,IAE3DouK,EAASk7B,gBAAiB,cAAgBtpM,GAI3C0vL,EAAiB1vL,GAAM,EAIzB,CAKA,IAAM+5M,EAAqB3rC,EAASib,qBAAuB,EAAI,EAAIywB,EAEnElP,EAAQoP,cAAczmL,SAAU28B,EAAI,2BAA4B6pJ,GAChEnP,EAAQoP,cAAczmL,SAAU28B,EAAI,wBAAyBw/H,EAE9D,CAED,EAQD,CAEA,SAASyqB,GAAcjqJ,EAAI8qH,EAAYxlG,EAAYmc,GAElD,IAAIyoH,EAAY,IAAI/1J,QA+CpB,SAASg2J,EAAwBxuK,GAEhC,IAAMyuK,EAAgBzuK,EAAMhnC,OAE5By1M,EAAc9+K,oBAAqB,UAAW6+K,GAE9C7kI,EAAWtR,OAAQo2I,EAAc/+B,gBAEI,OAAhC++B,EAAc9+B,eAAyBhmG,EAAWtR,OAAQo2I,EAAc9+B,cAE9E,CAEA,MAAO,CAEN5U,OA3DD,SAAiBnhK,GAEhB,IAAMi0L,EAAQ/nG,EAAK7oF,OAAO4wL,MAEpBtrB,EAAW3oK,EAAO2oK,SAClBmsC,EAAiBv/B,EAAW3nJ,IAAK5tB,EAAQ2oK,GA8B/C,OA1BKgsC,EAAU/mL,IAAKknL,KAAqB7gB,IAExC1e,EAAWpU,OAAQ2zC,GAEnBH,EAAU7nL,IAAKgoL,EAAgB7gB,IAI3Bj0L,EAAO61K,mBAE2D,IAAjE71K,EAAO+0M,iBAAkB,UAAWH,IAExC50M,EAAOyB,iBAAkB,UAAWmzM,GAIrC7kI,EAAWoxF,OAAQnhK,EAAO81K,eAAgB,OAEZ,OAAzB91K,EAAO+1K,eAEXhmG,EAAWoxF,OAAQnhK,EAAO+1K,cAAe,QAMpC++B,CAER,EAuBCv1C,QArBD,WAECo1C,EAAY,IAAI/1J,OAEjB,EAqBD,CA6CA,IAAMo2J,GAA6B,IAAIp5C,GACjCq5C,GAAkC,IAAIx1C,GACtCy1C,GAA+B,IAAIl1C,GACnCm1C,GAAiC,IAAI5kB,GAMrC6kB,GAAgB,GAChBC,GAAgB,GAIhBC,GAAY,IAAI5iD,aAAc,IAC9B6iD,GAAY,IAAI7iD,aAAc,GAC9B8iD,GAAY,IAAI9iD,aAAc,GAIpC,SAAS9nD,GAAShqG,EAAO60M,EAASC,GAEjC,IAAMC,EAAY/0M,EAAO,GAEzB,GAAK+0M,GAAa,GAAKA,EAAY,EAAI,OAAO/0M,EAI9C,IAAMgE,EAAI6wM,EAAUC,EAChB3wM,EAAIqwM,GAAexwM,GASvB,QAPWqD,IAANlD,IAEJA,EAAI,IAAI2tJ,aAAc9tJ,GACtBwwM,GAAexwM,GAAMG,GAIL,IAAZ0wM,EAAgB,CAEpBE,EAAUvwH,QAASrgF,EAAG,GAEtB,IAAM,IAAIxK,EAAI,EAAGqtC,EAAS,EAAGrtC,IAAMk7M,IAAYl7M,EAE9CqtC,GAAU8tK,EACV90M,EAAOrG,GAAI6qF,QAASrgF,EAAG6iC,EAIzB,CAEA,OAAO7iC,CAER,CAEA,SAAS6wM,GAAa/7M,EAAGuK,GAExB,GAAKvK,EAAEpE,SAAW2O,EAAE3O,OAAS,OAAO,EAEpC,IAAM,IAAI8E,EAAI,EAAGmK,EAAI7K,EAAEpE,OAAQ8E,EAAImK,EAAGnK,IAErC,GAAKV,EAAGU,KAAQ6J,EAAG7J,GAAM,OAAO,EAIjC,OAAO,CAER,CAEA,SAASs7M,GAAWh8M,EAAGuK,GAEtB,IAAM,IAAI7J,EAAI,EAAGmK,EAAIN,EAAE3O,OAAQ8E,EAAImK,EAAGnK,IAErCV,EAAGU,GAAM6J,EAAG7J,EAId,CAIA,SAASu7M,GAAe14C,EAAUx4J,GAEjC,IAAIG,EAAIswM,GAAezwM,QAEZqD,IAANlD,IAEJA,EAAI,IAAI8yJ,WAAYjzJ,GACpBywM,GAAezwM,GAAMG,GAItB,IAAM,IAAIxK,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5BwK,EAAGxK,GAAM6iK,EAAS24C,sBAInB,OAAOhxM,CAER,CASA,SAASixM,GAAavrJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEdA,EAAO,KAAQjC,IAEpBylD,EAAGwrJ,UAAWp4M,KAAKq4M,KAAMlxM,GAEzBiC,EAAO,GAAMjC,EAEd,CAIA,SAASmxM,GAAa1rJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,IAE3CulD,EAAG2rJ,UAAWv4M,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,GAEhC+B,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,OAIV,CAEN,GAAK0wM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAG4rJ,WAAYx4M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAEA,SAASsxM,GAAa7rJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,GAAK+B,EAAO,KAAQjC,EAAEG,IAEjEslD,EAAG8rJ,UAAW14M,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,GAErC8B,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,EACf+B,EAAO,GAAMjC,EAAEG,QAIV,QAAa8C,IAARjD,EAAED,EAERkC,EAAO,KAAQjC,EAAED,GAAKkC,EAAO,KAAQjC,EAAET,GAAK0C,EAAO,KAAQjC,EAAEZ,IAEjEqmD,EAAG8rJ,UAAW14M,KAAKq4M,KAAMlxM,EAAED,EAAGC,EAAET,EAAGS,EAAEZ,GAErC6C,EAAO,GAAMjC,EAAED,EACfkC,EAAO,GAAMjC,EAAET,EACf0C,EAAO,GAAMjC,EAAEZ,OAIV,CAEN,GAAKwxM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAG+rJ,WAAY34M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAEA,SAASyxM,GAAahsJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,GAAK+B,EAAO,KAAQjC,EAAEG,GAAK8B,EAAO,KAAQjC,EAAEC,IAEvFwlD,EAAGisJ,UAAW74M,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,EAAGH,EAAEC,GAE1CgC,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,EACf+B,EAAO,GAAMjC,EAAEG,EACf8B,EAAO,GAAMjC,EAAEC,OAIV,CAEN,GAAK2wM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGksJ,WAAY94M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAIA,SAAS4xM,GAAYnsJ,EAAIzlD,GAExB,IAAMiC,EAAQpJ,KAAKoJ,MACb48H,EAAW7+H,EAAE6+H,SAEnB,QAAkB57H,IAAb47H,EAAyB,CAE7B,GAAK+xE,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGosJ,iBAAkBh5M,KAAKq4M,MAAM,EAAOlxM,GAEvC6wM,GAAW5uM,EAAOjC,EAEnB,KAAO,CAEN,GAAK4wM,GAAa3uM,EAAO48H,GAAa,OAEtC2xE,GAAU1oL,IAAK+2G,GAEfp5E,EAAGosJ,iBAAkBh5M,KAAKq4M,MAAM,EAAOV,IAEvCK,GAAW5uM,EAAO48H,EAEnB,CAED,CAEA,SAASizE,GAAYrsJ,EAAIzlD,GAExB,IAAMiC,EAAQpJ,KAAKoJ,MACb48H,EAAW7+H,EAAE6+H,SAEnB,QAAkB57H,IAAb47H,EAAyB,CAE7B,GAAK+xE,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGssJ,iBAAkBl5M,KAAKq4M,MAAM,EAAOlxM,GAEvC6wM,GAAW5uM,EAAOjC,EAEnB,KAAO,CAEN,GAAK4wM,GAAa3uM,EAAO48H,GAAa,OAEtC0xE,GAAUzoL,IAAK+2G,GAEfp5E,EAAGssJ,iBAAkBl5M,KAAKq4M,MAAM,EAAOX,IAEvCM,GAAW5uM,EAAO48H,EAEnB,CAED,CAEA,SAASmzE,GAAYvsJ,EAAIzlD,GAExB,IAAMiC,EAAQpJ,KAAKoJ,MACb48H,EAAW7+H,EAAE6+H,SAEnB,QAAkB57H,IAAb47H,EAAyB,CAE7B,GAAK+xE,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGwsJ,iBAAkBp5M,KAAKq4M,MAAM,EAAOlxM,GAEvC6wM,GAAW5uM,EAAOjC,EAEnB,KAAO,CAEN,GAAK4wM,GAAa3uM,EAAO48H,GAAa,OAEtCyxE,GAAUxoL,IAAK+2G,GAEfp5E,EAAGwsJ,iBAAkBp5M,KAAKq4M,MAAM,EAAOZ,IAEvCO,GAAW5uM,EAAO48H,EAEnB,CAED,CAIA,SAASqzE,GAAazsJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEdA,EAAO,KAAQjC,IAEpBylD,EAAG0sJ,UAAWt5M,KAAKq4M,KAAMlxM,GAEzBiC,EAAO,GAAMjC,EAEd,CAIA,SAASoyM,GAAa3sJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,IAE3CulD,EAAGs1T,UAAWliX,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,GAEhC+B,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,OAIV,CAEN,GAAK0wM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAG4sJ,WAAYx5M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAEA,SAASsyM,GAAa7sJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,GAAK+B,EAAO,KAAQjC,EAAEG,IAEjEslD,EAAGu1T,UAAWniX,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,GAErC8B,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,EACf+B,EAAO,GAAMjC,EAAEG,OAIV,CAEN,GAAKywM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAG8sJ,WAAY15M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAEA,SAASwyM,GAAa/sJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,GAAK+B,EAAO,KAAQjC,EAAEG,GAAK8B,EAAO,KAAQjC,EAAEC,IAEvFwlD,EAAGw1T,UAAWpiX,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,EAAGH,EAAEC,GAE1CgC,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,EACf+B,EAAO,GAAMjC,EAAEG,EACf8B,EAAO,GAAMjC,EAAEC,OAIV,CAEN,GAAK2wM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGgtJ,WAAY55M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAIA,SAAS0yM,GAAcjtJ,EAAIzlD,GAE1B,IAAMiC,EAAQpJ,KAAKoJ,MAEdA,EAAO,KAAQjC,IAEpBylD,EAAGktJ,WAAY95M,KAAKq4M,KAAMlxM,GAE1BiC,EAAO,GAAMjC,EAEd,CAIA,SAAS4yM,GAAcntJ,EAAIzlD,GAE1B,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,IAE3CulD,EAAGy1T,WAAYriX,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,GAEjC+B,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,OAIV,CAEN,GAAK0wM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGotJ,YAAah6M,KAAKq4M,KAAMlxM,GAE3B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAEA,SAAS8yM,GAAcrtJ,EAAIzlD,GAE1B,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,GAAK+B,EAAO,KAAQjC,EAAEG,IAEjEslD,EAAG01T,WAAYtiX,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,GAEtC8B,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,EACf+B,EAAO,GAAMjC,EAAEG,OAIV,CAEN,GAAKywM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGstJ,YAAal6M,KAAKq4M,KAAMlxM,GAE3B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAEA,SAASgzM,GAAcvtJ,EAAIzlD,GAE1B,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,GAAK+B,EAAO,KAAQjC,EAAEG,GAAK8B,EAAO,KAAQjC,EAAEC,IAEvFwlD,EAAG21T,WAAYviX,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,EAAGH,EAAEC,GAE3CgC,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,EACf+B,EAAO,GAAMjC,EAAEG,EACf8B,EAAO,GAAMjC,EAAEC,OAIV,CAEN,GAAK2wM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGwtJ,YAAap6M,KAAKq4M,KAAMlxM,GAE3B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAKA,SAASkzM,GAAYztJ,EAAIzlD,EAAGo4J,GAE3B,IAAMn2J,EAAQpJ,KAAKoJ,MACbkxM,EAAO/6C,EAAS24C,sBAEjB9uM,EAAO,KAAQkxM,IAEnB1tJ,EAAG0sJ,UAAWt5M,KAAKq4M,KAAMiC,GACzBlxM,EAAO,GAAMkxM,GAId/6C,EAASg7C,aAAcpzM,GAAKgwM,GAAcmD,EAE3C,CAEA,SAASE,GAAc5tJ,EAAIzlD,EAAGo4J,GAE7B,IAAMn2J,EAAQpJ,KAAKoJ,MACbkxM,EAAO/6C,EAAS24C,sBAEjB9uM,EAAO,KAAQkxM,IAEnB1tJ,EAAG0sJ,UAAWt5M,KAAKq4M,KAAMiC,GACzBlxM,EAAO,GAAMkxM,GAId/6C,EAASk7C,aAActzM,GAAKkwM,GAAgBiD,EAE7C,CAEA,SAASI,GAAY9tJ,EAAIzlD,EAAGo4J,GAE3B,IAAMn2J,EAAQpJ,KAAKoJ,MACbkxM,EAAO/6C,EAAS24C,sBAEjB9uM,EAAO,KAAQkxM,IAEnB1tJ,EAAG0sJ,UAAWt5M,KAAKq4M,KAAMiC,GACzBlxM,EAAO,GAAMkxM,GAId/6C,EAASo7C,eAAgBxzM,GAAKmwM,GAAkBgD,EAEjD,CAEA,SAASM,GAAmBhuJ,EAAIzlD,EAAGo4J,GAElC,IAAMn2J,EAAQpJ,KAAKoJ,MACbkxM,EAAO/6C,EAAS24C,sBAEjB9uM,EAAO,KAAQkxM,IAEnB1tJ,EAAG0sJ,UAAWt5M,KAAKq4M,KAAMiC,GACzBlxM,EAAO,GAAMkxM,GAId/6C,EAASs7C,kBAAmB1zM,GAAKiwM,GAAmBkD,EAErD,CA0DA,SAASQ,GAAkBluJ,EAAIzlD,GAE9BylD,EAAGmuJ,WAAY/6M,KAAKq4M,KAAMlxM,EAE3B,CAIA,SAAS6zM,GAAkBpuJ,EAAIzlD,GAE9B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,GAEpCqH,EAAG4rJ,WAAYx4M,KAAKq4M,KAAM30K,EAE3B,CAEA,SAASu3K,GAAkBruJ,EAAIzlD,GAE9B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,GAEpCqH,EAAG+rJ,WAAY34M,KAAKq4M,KAAM30K,EAE3B,CAEA,SAASw3K,GAAkBtuJ,EAAIzlD,GAE9B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,GAEpCqH,EAAGksJ,WAAY94M,KAAKq4M,KAAM30K,EAE3B,CAIA,SAASy3K,GAAiBvuJ,EAAIzlD,GAE7B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,GAEpCqH,EAAGosJ,iBAAkBh5M,KAAKq4M,MAAM,EAAO30K,EAExC,CAEA,SAAS03K,GAAiBxuJ,EAAIzlD,GAE7B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,GAEpCqH,EAAGssJ,iBAAkBl5M,KAAKq4M,MAAM,EAAO30K,EAExC,CAEA,SAAS23K,GAAiBzuJ,EAAIzlD,GAE7B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,IAEpCqH,EAAGwsJ,iBAAkBp5M,KAAKq4M,MAAM,EAAO30K,EAExC,CAIA,SAAS43K,GAAkB1uJ,EAAIzlD,GAE9BylD,EAAG2uJ,WAAYv7M,KAAKq4M,KAAMlxM,EAE3B,CAIA,SAASq0M,GAAkB5uJ,EAAIzlD,GAE9BylD,EAAG4sJ,WAAYx5M,KAAKq4M,KAAMlxM,EAE3B,CAEA,SAASs0M,GAAkB7uJ,EAAIzlD,GAE9BylD,EAAG8sJ,WAAY15M,KAAKq4M,KAAMlxM,EAE3B,CAEA,SAASu0M,GAAkB9uJ,EAAIzlD,GAE9BylD,EAAGgtJ,WAAY55M,KAAKq4M,KAAMlxM,EAE3B,CAIA,SAASw0M,GAAmB/uJ,EAAIzlD,GAE/BylD,EAAGgvJ,YAAa57M,KAAKq4M,KAAMlxM,EAE5B,CAIA,SAAS00M,GAAmBjvJ,EAAIzlD,GAE/BylD,EAAGotJ,YAAah6M,KAAKq4M,KAAMlxM,EAE5B,CAEA,SAAS20M,GAAmBlvJ,EAAIzlD,GAE/BylD,EAAGstJ,YAAal6M,KAAKq4M,KAAMlxM,EAE5B,CAEA,SAAS40M,GAAmBnvJ,EAAIzlD,GAE/BylD,EAAGwtJ,YAAap6M,KAAKq4M,KAAMlxM,EAE5B,CAKA,SAAS60M,GAAiBpvJ,EAAIzlD,EAAGo4J,GAEhC,IAAMn2J,EAAQpJ,KAAKoJ,MAEbrC,EAAII,EAAEvP,OAENqkN,EAAQhE,GAAe14C,EAAUx4J,GAEhCgxM,GAAa3uM,EAAO6yM,KAE1BrvJ,EAAG2uJ,WAAYv7M,KAAKq4M,KAAM4D,GAE1BjE,GAAW5uM,EAAO6yM,IAInB,IAAM,IAAIv/M,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5B6iK,EAASg7C,aAAcpzM,EAAGzK,IAAOy6M,GAAc8E,EAAOv/M,GAIxD,CAEA,SAASw/M,GAAkBtvJ,EAAIzlD,EAAGo4J,GAEjC,IAAMn2J,EAAQpJ,KAAKoJ,MAEbrC,EAAII,EAAEvP,OAENqkN,EAAQhE,GAAe14C,EAAUx4J,GAEhCgxM,GAAa3uM,EAAO6yM,KAE1BrvJ,EAAG2uJ,WAAYv7M,KAAKq4M,KAAM4D,GAE1BjE,GAAW5uM,EAAO6yM,IAInB,IAAM,IAAIv/M,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5B6iK,EAASk7C,aAActzM,EAAGzK,IAAO26M,GAAgB4E,EAAOv/M,GAI1D,CAEA,SAASy/M,GAAiBvvJ,EAAIzlD,EAAGo4J,GAEhC,IAAMn2J,EAAQpJ,KAAKoJ,MAEbrC,EAAII,EAAEvP,OAENqkN,EAAQhE,GAAe14C,EAAUx4J,GAEhCgxM,GAAa3uM,EAAO6yM,KAE1BrvJ,EAAG2uJ,WAAYv7M,KAAKq4M,KAAM4D,GAE1BjE,GAAW5uM,EAAO6yM,IAInB,IAAM,IAAIv/M,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5B6iK,EAASo7C,eAAgBxzM,EAAGzK,IAAO46M,GAAkB2E,EAAOv/M,GAI9D,CAEA,SAAS0/M,GAAuBxvJ,EAAIzlD,EAAGo4J,GAEtC,IAAMn2J,EAAQpJ,KAAKoJ,MAEbrC,EAAII,EAAEvP,OAENqkN,EAAQhE,GAAe14C,EAAUx4J,GAEhCgxM,GAAa3uM,EAAO6yM,KAE1BrvJ,EAAG2uJ,WAAYv7M,KAAKq4M,KAAM4D,GAE1BjE,GAAW5uM,EAAO6yM,IAInB,IAAM,IAAIv/M,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5B6iK,EAASs7C,kBAAmB1zM,EAAGzK,IAAO06M,GAAmB6E,EAAOv/M,GAIlE,CAwDA,IAEM2/M,GAAa9yM,GAElB,SAAA8yM,EAAaj9K,EAAIk9K,EAAYjE,GAAO5tM,EAAA,KAAA4xM,GAEnCr8M,KAAKo/B,GAAKA,EACVp/B,KAAKq4M,KAAOA,EACZr4M,KAAKoJ,MAAQ,GACbpJ,KAAKiwB,SA1UP,SAA4BrrB,GAE3B,OAASA,GAER,KAAK,KAAQ,OAAOuzM,GACpB,KAAK,MAAQ,OAAOG,GACpB,KAAK,MAAQ,OAAOG,GACpB,KAAK,MAAQ,OAAOG,GAEpB,KAAK,MAAQ,OAAOG,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GAEpB,KAAK,KAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GAEjC,KAAK,KAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GAEpB,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOG,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,GAIV,CAyRkB2B,CAAmBD,EAAW13M,KAI/C,IAIK43M,GAAgBjzM,GAErB,SAAAizM,EAAap9K,EAAIk9K,EAAYjE,GAAO5tM,EAAA,KAAA+xM,GAEnCx8M,KAAKo/B,GAAKA,EACVp/B,KAAKq4M,KAAOA,EACZr4M,KAAKoJ,MAAQ,GACbpJ,KAAKulD,KAAO+2J,EAAW/2J,KACvBvlD,KAAKiwB,SA5EP,SAA6BrrB,GAE5B,OAASA,GAER,KAAK,KAAQ,OAAOk2M,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GAEpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GAEpB,KAAK,KAAQ,KAAK,MAAQ,OAAOC,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOC,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOC,GAEjC,KAAK,KAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GAEpB,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOC,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOC,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOC,GAIV,CA2BkBK,CAAoBH,EAAW13M,KAIhD,IAIK83M,GAAiB,WAEtB,SAAAA,EAAat9K,GAAK30B,EAAA,KAAAiyM,GAEjB18M,KAAKo/B,GAAKA,EAEVp/B,KAAK28M,IAAM,GACX38M,KAAKzD,IAAM,CAAC,CAEb,CAaC,OAbAgN,EAAAmzM,EAAA,EAAAl6M,IAAA,WAAA/D,MAED,SAAUmuD,EAAInuD,EAAO8gK,GAIpB,IAFA,IAAMo9C,EAAM38M,KAAK28M,IAEPjgN,EAAI,EAAGqK,EAAI41M,EAAI/kN,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEhD,IAAM6K,EAAIo1M,EAAKjgN,GACf6K,EAAE0oB,SAAU28B,EAAInuD,EAAO8I,EAAE63B,IAAMmgI,EAEhC,CAED,KAACm9C,CAAA,CAtBqB,GA8BjBG,GAAa,sBAWnB,SAASC,GAAY3gM,EAAW4gM,GAE/B5gM,EAAUwgM,IAAI7/M,KAAMigN,GACpB5gM,EAAU5f,IAAKwgN,EAAc39K,IAAO29K,CAErC,CAEA,SAASC,GAAcV,EAAYjE,EAAMl8L,GAExC,IAAM+6E,EAAOolH,EAAWnjN,KACvB8jN,EAAa/lH,EAAKt/F,OAKnB,IAFAilN,GAAWK,UAAY,IAER,CAEd,IAAMvlN,EAAQklN,GAAW7mM,KAAMkhF,GAC9BimH,EAAWN,GAAWK,UAEnB99K,EAAKznC,EAAO,GACVylN,EAA2B,MAAfzlN,EAAO,GACxB0lN,EAAY1lN,EAAO,GAIpB,GAFKylN,IAAYh+K,GAAU,QAERh1B,IAAdizM,GAAyC,MAAdA,GAAqBF,EAAW,IAAMF,EAAa,CAIlFH,GAAY3gM,OAAyB/R,IAAdizM,EACtB,IAAIhB,GAAej9K,EAAIk9K,EAAYjE,GACnC,IAAImE,GAAkBp9K,EAAIk9K,EAAYjE,IAEvC,KAED,CAIC,IACIn1M,EADQiZ,EAAU5f,IACN6iC,QAEFh1B,IAATlH,GAGJ45M,GAAY3gM,EADZjZ,EAAO,IAAIw5M,GAAmBt9K,IAK/BjjB,EAAYjZ,CAId,CAED,CAEA,IAEMo6M,GAAa,WAElB,SAAAA,EAAa1wJ,EAAI06I,GAAU78L,EAAA,KAAA6yM,GAE1Bt9M,KAAK28M,IAAM,GACX38M,KAAKzD,IAAM,CAAC,EAIZ,IAFA,IAAMwK,EAAI6lD,EAAG2wJ,oBAAqBjW,EAAS,OAEjC5qM,EAAI,EAAGA,EAAIqK,IAAMrK,EAAI,CAE9B,IAAM2xF,EAAOzhC,EAAG4wJ,iBAAkBlW,EAAS5qM,GAG3CsgN,GAAc3uH,EAFNzhC,EAAG6wJ,mBAAoBnW,EAASj5G,EAAKl1F,MAEnB6G,KAE3B,CAED,CAiDC,OAjDAuJ,EAAA+zM,EAAA,EAAA96M,IAAA,WAAA/D,MAED,SAAUmuD,EAAIzzD,EAAMsF,EAAO8gK,GAE1B,IAAMh4J,EAAIvH,KAAKzD,IAAKpD,QAETiR,IAAN7C,GAAkBA,EAAE0oB,SAAU28B,EAAInuD,EAAO8gK,EAE/C,GAAC,CAAA/8J,IAAA,cAAA/D,MAED,SAAamuD,EAAIzqD,EAAQhJ,GAExB,IAAMgO,EAAIhF,EAAQhJ,QAEPiR,IAANjD,GAAkBnH,KAAKiwB,SAAU28B,EAAIzzD,EAAMgO,EAEjD,IAAC,EAAA3E,IAAA,SAAA/D,MAED,SAAemuD,EAAI+vJ,EAAK5vM,EAAQwyJ,GAE/B,IAAM,IAAI7iK,EAAI,EAAGqK,EAAI41M,EAAI/kN,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEhD,IAAM6K,EAAIo1M,EAAKjgN,GACdyK,EAAI4F,EAAQxF,EAAE63B,KAEQ,IAAlBj4B,EAAEm4J,aAGN/3J,EAAE0oB,SAAU28B,EAAIzlD,EAAE1I,MAAO8gK,EAI3B,CAED,GAAC,CAAA/8J,IAAA,eAAA/D,MAED,SAAqBk+M,EAAK5vM,GAIzB,IAFA,IAAM7F,EAAI,GAEAxK,EAAI,EAAGqK,EAAI41M,EAAI/kN,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEhD,IAAM6K,EAAIo1M,EAAKjgN,GACV6K,EAAE63B,MAAMryB,GAAS7F,EAAEpK,KAAMyK,EAE/B,CAEA,OAAOL,CAER,KAACo2M,CAAA,CAnEiB,GAuEnB,SAASI,GAAa9wJ,EAAIhoD,EAAMwU,GAE/B,IAAM+5K,EAASvmI,EAAG+wJ,aAAc/4M,GAKhC,OAHAgoD,EAAGgxJ,aAAczqB,EAAQ/5K,GACzBwzC,EAAGixJ,cAAe1qB,GAEXA,CAER,CAEA,IAAI8qB,GAAiB,EAqCrB,SAASC,GAAiBtxJ,EAAIumI,EAAQvuL,GAErC,IAAM+5F,EAAS/xC,EAAGuxJ,mBAAoBhrB,EAAQ,OACxC/wF,EAASx1C,EAAGwxJ,iBAAkBjrB,GAAStkK,OAE7C,GAAK8vE,GAAqB,KAAXyD,EAAgB,MAAO,GAEtC,IAAMogR,EAAe,iBAAiBxsW,KAAMosF,GAC5C,GAAKogR,EAAe,CAKnB,IAAMnkK,EAAYltM,SAAUqxW,EAAc,IAC1C,OAAO59W,EAAK+L,cAAgB,OAASyxF,EAAS,OAjDhD,SAAuBhpF,EAAQilM,GAQ9B,IANA,IAAMrJ,EAAQ57L,EAAOtd,MAAO,MACtBwiN,EAAS,GAETj8L,EAAOplB,KAAKC,IAAKmhN,EAAY,EAAG,GAChCzzI,EAAK3tE,KAAKiuC,IAAKmzK,EAAY,EAAGrJ,EAAMp9M,QAEhC8E,EAAI2lB,EAAM3lB,EAAIkuE,EAAIluE,IAAO,CAElC,IAAM2xG,EAAO3xG,EAAI,EACjB4hN,EAAOxhN,KAAK,GAAD2E,OAAK4sG,IAASgwG,EAAY,IAAM,IAAG,KAAA58M,OAAI4sG,EAAI,MAAA5sG,OAAKuzM,EAAOt4M,IAEnE,CAEA,OAAO4hN,EAAOjhN,KAAM,KAErB,CAgCyDkhN,CAAc3xJ,EAAG4xJ,gBAAiBrrB,GAAUkrB,EAEpG,CAEC,OAAOj8G,CAIT,CAEA,SAASq8G,GAA0BC,EAAcjgD,GAEhD,IAAM1C,EA1CP,SAAgC0C,GAE/B,OAASA,GAER,KAAKxP,GACJ,MAAO,CAAE,SAAU,aACpB,KAAKC,GACJ,MAAO,CAAE,OAAQ,aAClB,QAEC,OADAn7I,QAAQk/C,KAAM,4CAA6CwrG,GACpD,CAAE,SAAU,aAItB,CA4BoBkgD,CAAuBlgD,GAC1C,MAAO,QAAUigD,EAAe,mCAAqC3iD,EAAY,GAAMA,EAAY,GAAM,KAE1G,CAEA,SAAS6iD,GAAwBF,EAAcpsB,GAE9C,IAAIusB,EAEJ,OAASvsB,GAER,KAAK5oC,GACJm1D,EAAkB,SAClB,MAED,KAAKl1D,GACJk1D,EAAkB,WAClB,MAED,KAAKj1D,GACJi1D,EAAkB,kBAClB,MAED,KAAKh1D,GACJg1D,EAAkB,aAClB,MAED,KAAK/0D,GACJ+0D,EAAkB,SAClB,MAED,QACC9qM,QAAQk/C,KAAM,+CAAgDq/H,GAC9DusB,EAAkB,SAIpB,MAAO,QAAUH,EAAe,2BAA6BG,EAAkB,yBAEhF,CA+DA,SAASC,GAAiB1lM,GAEzB,MAAkB,KAAXA,CAER,CAEA,SAAS2lM,GAAkB3lM,EAAQo/J,GAElC,IAAMiqM,EAAqBjqM,EAAW8mC,oBAAsB9mC,EAAWkqM,iBAAmBlqM,EAAWmqM,4BAErG,OAAOvpW,EACLzd,QAAS,kBAAmB68K,EAAWwmC,cACvCrjN,QAAS,mBAAoB68K,EAAWymC,eACxCtjN,QAAS,uBAAwB68K,EAAWkqM,kBAC5C/mX,QAAS,yBAA0B8mX,GACnC9mX,QAAS,wBAAyB68K,EAAW0mC,mBAC7CvjN,QAAS,oBAAqB68K,EAAW2mC,gBACzCxjN,QAAS,mBAAoB68K,EAAW4mC,eACxCzjN,QAAS,yBAA0B68K,EAAW6mC,oBAC9C1jN,QAAS,oCAAqC68K,EAAWmqM,6BACzDhnX,QAAS,0BAA2B68K,EAAW8mC,qBAC/C3jN,QAAS,2BAA4B68K,EAAW+mC,qBAEnD,CAEA,SAASC,GAA0BpmM,EAAQo/J,GAE1C,OAAOp/J,EACLzd,QAAS,uBAAwB68K,EAAWinC,mBAC5C9jN,QAAS,yBAA4B68K,EAAWinC,kBAAoBjnC,EAAWknC,oBAElF,CAIA,IAAMC,GAAiB,mCAEvB,SAASC,GAAiBxmM,GAEzB,OAAOA,EAAOzd,QAASgkN,GAAgBE,GAExC,CAEA,SAASA,GAAiBloN,EAAOmoN,GAEhC,IAAM1mM,EAAS2+K,GAAa+nB,GAE5B,QAAgB11M,IAAXgP,EAEJ,MAAM,IAAItb,MAAO,6BAA+BgiN,EAAU,KAI3D,OAAOF,GAAiBxmM,EAEzB,CAIA,IAAM4mM,GAAoB,+IAE1B,SAASC,GAAa7mM,GAErB,OAAOA,EAAOzd,QAASqkN,GAAmBE,GAE3C,CAEA,SAASA,GAAcvoN,EAAOmzC,EAAOC,EAAKq1K,GAIzC,IAFA,IAAIhnM,EAAS,GAEH1c,EAAIyU,SAAU25B,GAASpuC,EAAIyU,SAAU45B,GAAOruC,IAErD0c,GAAUgnM,EACRzkN,QAAS,eAAgB,KAAOe,EAAI,MACpCf,QAAS,uBAAwBe,GAIpC,OAAO0c,CAER,CAIA,SAASinM,GAAmB7nC,GAE3B,IAAI8nC,EAAkB,aAAe9nC,EAAWx7K,UAAY,sBAAwBw7K,EAAWx7K,UAAY,QAgB3G,MAd8B,UAAzBw7K,EAAWx7K,UAEfsjN,GAAmB,2BAEiB,YAAzB9nC,EAAWx7K,UAEtBsjN,GAAmB,6BAEiB,SAAzB9nC,EAAWx7K,YAEtBsjN,GAAmB,2BAIbA,CAER,CAkHA,SAASC,GAAczuB,EAAU0uB,EAAUhoC,EAAYguB,GAKtD,IAmBIia,EAAcC,EAnBZ9zJ,EAAKklI,EAAS74C,aAEd01C,EAAUnW,EAAWmW,QAEvBC,EAAepW,EAAWoW,aAC1BC,EAAiBrW,EAAWqW,eAE1B8xB,EA5HP,SAAsCnoC,GAErC,IAAImoC,EAAsB,uBAgB1B,OAdKnoC,EAAWooC,gBAAkB55D,GAEjC25D,EAAsB,qBAEXnoC,EAAWooC,gBAAkB35D,GAExC05D,EAAsB,0BAEXnoC,EAAWooC,gBAAkB15D,KAExCy5D,EAAsB,sBAIhBA,CAER,CAwG6BE,CAA6BroC,GACnDsoC,EAvGP,SAAmCtoC,GAElC,IAAIsoC,EAAmB,mBAEvB,GAAKtoC,EAAW+H,OAEf,OAAS/H,EAAWuoC,YAEnB,KAAK/2D,GACL,KAAKC,GACJ62D,EAAmB,mBACnB,MAED,KAAK12D,GACJ02D,EAAmB,sBAOtB,OAAOA,CAER,CAgF0BE,CAA0BxoC,GAC7CyoC,EA/EP,SAAmCzoC,GAElC,IAAIyoC,EAAmB,yBAElBzoC,EAAW+H,QAEN/H,EAAWuoC,aAEd92D,KAEJg3D,EAAmB,0BAOtB,OAAOA,CAER,CA4D0BC,CAA0B1oC,GAC7C2oC,EA3DP,SAAuC3oC,GAEtC,IAAI2oC,EAAuB,uBAE3B,GAAK3oC,EAAW+H,OAEf,OAAS/H,EAAWgI,SAEnB,KAAKl3B,GACJ63D,EAAuB,2BACvB,MAED,KAAK53D,GACJ43D,EAAuB,sBACvB,MAED,KAAK33D,GACJ23D,EAAuB,sBAO1B,OAAOA,CAER,CAiC8BC,CAA8B5oC,GACrD6oC,EAhCP,SAA6B7oC,GAE5B,IAAM8oC,EAAc9oC,EAAW+oC,mBAE/B,GAAqB,OAAhBD,EAAuB,OAAO,KAEnC,IAAME,EAASvkN,KAAKqzM,KAAMgR,GAAgB,EAEpCG,EAAc,EAAMH,EAI1B,MAAO,CAAEI,WAFU,GAAQ,EAAIzkN,KAAKC,IAAKD,KAAKs1J,IAAK,EAAGivD,GAAU,MAE3CC,YAAAA,EAAaD,OAAAA,EAEnC,CAkB0BG,CAAoBnpC,GAEvCopC,EAAmBppC,EAAWie,SAAW,GA1ShD,SAA6Bje,GAS5B,MAPe,CACZA,EAAWqpC,sBAA2BrpC,EAAW+oC,oBAAsB/oC,EAAWiH,SAAWjH,EAAWspC,uBAAyBtpC,EAAWyG,oBAAsBzG,EAAWyF,aAAuC,aAAxBzF,EAAWupC,SAA4B,kDAAoD,IACvRvpC,EAAWwpC,oBAAsBxpC,EAAWmyB,yBAA4BnyB,EAAWypC,2BAA6B,wCAA0C,GAC1JzpC,EAAW0pC,sBAAwB1pC,EAAW2pC,6BAAiC,2CAA6C,IAC5H3pC,EAAW4pC,2BAA6B5pC,EAAW+H,QAAU/H,EAAWqI,eAAkBrI,EAAW6pC,kCAAoC,gDAAkD,IAGhLvgN,OAAQg9M,IAAkBzhN,KAAM,KAE/C,CA+RqDilN,CAAoB9pC,GAElE+pC,EA/RP,SAA0B5zB,GAEzB,IAAMxxL,EAAS,GAEf,IAAM,IAAMhE,KAAQw1L,EAAU,CAE7B,IAAMlwL,EAAQkwL,EAASx1L,IAER,IAAVsF,GAELtB,EAAOL,KAAM,WAAa3D,EAAO,IAAMsF,EAExC,CAEA,OAAOtB,EAAOE,KAAM,KAErB,CA+QuBmlN,CAAiB7zB,GAEjC2Y,EAAU16I,EAAG61J,gBAGfC,EAAgBlqC,EAAW+W,YAAc,YAAc/W,EAAW+W,YAAc,KAAO,GAEtF/W,EAAWmqC,sBAEflC,EAAe,CAEd8B,GAECzgN,OAAQg9M,IAAkBzhN,KAAM,OAEhBzF,OAAS,IAE1B6oN,GAAgB,OAIjBC,EAAiB,CAEhBkB,EACAW,GAECzgN,OAAQg9M,IAAkBzhN,KAAM,OAEdzF,OAAS,IAE5B8oN,GAAkB,QAMnBD,EAAe,CAEdJ,GAAmB7nC,GAEnB,uBAAyBA,EAAWoqC,WAEpCL,EAEA/pC,EAAWqqC,WAAa,yBAA2B,GACnDrqC,EAAWsqC,gBAAkB,+BAAiC,GAE9DtqC,EAAWuqC,uBAAyB,0BAA4B,GAE9DvqC,EAAWyqC,QAAUzqC,EAAWmD,IAAQ,kBAAoB,GAC5DnD,EAAWyqC,QAAUzqC,EAAW0qC,QAAY,mBAAqB,GAEnE1qC,EAAWj8K,IAAM,kBAAoB,GACrCi8K,EAAW+H,OAAS,qBAAuB,GAC3C/H,EAAW+H,OAAS,WAAa0gC,EAAmB,GACpDzoC,EAAW6G,SAAW,uBAAyB,GAC/C7G,EAAW+G,MAAQ,oBAAsB,GACzC/G,EAAW2H,YAAc,0BAA4B,GACrD3H,EAAWiH,QAAU,sBAAwB,GAC7CjH,EAAWmH,UAAY,wBAA0B,GAC/CnH,EAAWmH,WAAanH,EAAW2qC,qBAAyB,gCAAkC,GAC9F3qC,EAAWmH,WAAanH,EAAWspC,sBAA0B,iCAAmC,GAElGtpC,EAAWuG,aAAe,2BAA6B,GACvDvG,EAAWwG,sBAAwB,qCAAuC,GAC1ExG,EAAWyG,mBAAqB,kCAAoC,GAEpEzG,EAAWwoM,eAAiB,6BAA+B,GAC3DxoM,EAAWyoM,wBAA0B,uCAAyC,GAE9EzoM,EAAWsH,iBAAmBtH,EAAWuqC,uBAAyB,8BAAgC,GAElGvqC,EAAW4H,YAAc,0BAA4B,GACrD5H,EAAW6H,qBAAuB,mCAAqC,GACvE7H,EAAW8H,iBAAmB,+BAAiC,GAE/D9H,EAAWyH,aAAe,2BAA6B,GACvDzH,EAAW0H,aAAe,2BAA6B,GACvD1H,EAAW4G,SAAW,uBAAyB,GAE/C5G,EAAWqI,aAAe,2BAA6B,GACvDrI,EAAWsI,gBAAkB,8BAAgC,GAC7DtI,EAAWwI,aAAe,2BAA6B,GAEvDxI,EAAWg1B,cAAgB,4BAA8B,GACzDh1B,EAAWi1B,kBAAoB,gCAAkC,GAEjEj1B,EAAW4qC,eAAiB,sBAAwB,GACpD5qC,EAAWsD,aAAe,oBAAsB,GAChDtD,EAAW6qC,aAAe,0BAA4B,GACtD7qC,EAAW8qC,UAAY,iBAAmB,GAC1C9qC,EAAW+qC,cAAgB,0BAA4B,GAEvD/qC,EAAWyF,YAAc,sBAAwB,GAEjDzF,EAAWgrC,SAAW,uBAAyB,GAE/ChrC,EAAWiT,aAAe,2BAA6B,GACvDjT,EAAWw9B,eAA2C,IAA3Bx9B,EAAWyF,YAAwB,2BAA6B,GACzFzF,EAAWy9B,aAAez9B,EAAWie,SAAa,0BAA4B,GAC9Eje,EAAWo9B,kBAAoB,GAAKp9B,EAAWie,SAAa,+BAAiC,GAC7Fje,EAAWo9B,kBAAoB,GAAKp9B,EAAWie,SAAa,uCAAyCje,EAAWkrC,mBAAqB,GACrIlrC,EAAWo9B,kBAAoB,GAAKp9B,EAAWie,SAAa,8BAAgCje,EAAWo9B,kBAAoB,GAC7Hp9B,EAAWmrC,YAAc,uBAAyB,GAClDnrC,EAAWorC,UAAY,qBAAuB,GAE9CprC,EAAWqrC,iBAAmB,wBAA0B,GACxDrrC,EAAWqrC,iBAAmB,WAAalD,EAAsB,GAEjEnoC,EAAW2I,gBAAkB,8BAAgC,GAE7D3I,EAAWmyB,uBAAyB,0BAA4B,GAC9DnyB,EAAWmyB,wBAA0BnyB,EAAWypC,2BAA+B,8BAAgC,GAEjH,4BACA,gCACA,iCACA,2BACA,6BACA,+BACA,+BAEA,wBAEA,mCAEA,SAEA,8BAEA,kCAEA,SAEA,2BACA,yBACA,qBAEA,qBAEA,4BAEA,SAEA,iCAEA,0BAEA,6BAEA,0BAEA,SAEA,2EAEA,iCACA,iCACA,iCACA,iCAEA,4BAEA,mCACA,mCACA,mCACA,mCAEA,UAEA,mCACA,mCACA,mCACA,mCAEA,WAEA,SAEA,sBAEA,8BACA,+BAEA,SAEA,MAECngN,OAAQg9M,IAAkBzhN,KAAM,MAElCqjN,EAAiB,CAEhBkB,EAEAvB,GAAmB7nC,GAEnB,uBAAyBA,EAAWoqC,WAEpCL,EAEE/pC,EAAWyqC,QAAUzqC,EAAWmD,IAAQ,kBAAoB,GAC5DnD,EAAWyqC,QAAUzqC,EAAW0qC,QAAY,mBAAqB,GAEnE1qC,EAAWj8K,IAAM,kBAAoB,GACrCi8K,EAAW2G,OAAS,qBAAuB,GAC3C3G,EAAW+H,OAAS,qBAAuB,GAC3C/H,EAAW+H,OAAS,WAAaugC,EAAmB,GACpDtoC,EAAW+H,OAAS,WAAa0gC,EAAmB,GACpDzoC,EAAW+H,OAAS,WAAa4gC,EAAuB,GACxDE,EAAmB,8BAAgCA,EAAiBK,WAAa,GACjFL,EAAmB,+BAAiCA,EAAiBI,YAAc,GACnFJ,EAAmB,0BAA4BA,EAAiBG,OAAS,KAAO,GAChFhpC,EAAW6G,SAAW,uBAAyB,GAC/C7G,EAAW+G,MAAQ,oBAAsB,GACzC/G,EAAW2H,YAAc,0BAA4B,GACrD3H,EAAWiH,QAAU,sBAAwB,GAC7CjH,EAAWmH,UAAY,wBAA0B,GAC/CnH,EAAWmH,WAAanH,EAAW2qC,qBAAyB,gCAAkC,GAC9F3qC,EAAWmH,WAAanH,EAAWspC,sBAA0B,iCAAmC,GAElGtpC,EAAWqG,UAAY,wBAA0B,GACjDrG,EAAWuG,aAAe,2BAA6B,GACvDvG,EAAWwG,sBAAwB,qCAAuC,GAC1ExG,EAAWyG,mBAAqB,kCAAoC,GAEpEzG,EAAWqoM,YAAc,0BAA4B,GACrDroM,EAAWwoM,eAAiB,6BAA+B,GAC3DxoM,EAAWyoM,wBAA0B,uCAAyC,GAE9EzoM,EAAW4H,YAAc,0BAA4B,GACrD5H,EAAW6H,qBAAuB,mCAAqC,GACvE7H,EAAW8H,iBAAmB,+BAAiC,GAC/D9H,EAAWyH,aAAe,2BAA6B,GACvDzH,EAAW0H,aAAe,2BAA6B,GAEvD1H,EAAW4G,SAAW,uBAAyB,GAC/C5G,EAAW+I,UAAY,wBAA0B,GAEjD/I,EAAW4F,MAAQ,oBAAsB,GACzC5F,EAAWg1B,cAAgB,4BAA8B,GACzDh1B,EAAWi1B,kBAAoB,gCAAkC,GAEjEj1B,EAAWqI,aAAe,2BAA6B,GACvDrI,EAAWsI,gBAAkB,8BAAgC,GAC7DtI,EAAWwI,aAAe,2BAA6B,GAEvDxI,EAAWsrC,mBAAqB,+BAAiC,GAEjEtrC,EAAW4qC,eAAiB,sBAAwB,GACpD5qC,EAAWsD,cAAgBtD,EAAWsqC,gBAAkB,oBAAsB,GAC9EtqC,EAAW6qC,aAAe,0BAA4B,GACtD7qC,EAAW8qC,UAAY,iBAAmB,GAC1C9qC,EAAW+qC,cAAgB,0BAA4B,GAEvD/qC,EAAWoI,YAAc,0BAA4B,GAErDpI,EAAWyF,YAAc,sBAAwB,GAEjDzF,EAAWmrC,YAAc,uBAAyB,GAClDnrC,EAAWorC,UAAY,qBAAuB,GAE9CprC,EAAWqrC,iBAAmB,wBAA0B,GACxDrrC,EAAWqrC,iBAAmB,WAAalD,EAAsB,GAEjEnoC,EAAWmF,mBAAqB,8BAAgC,GAEhEnF,EAAWurC,wBAA0B,oCAAsC,GAE3EvrC,EAAWmyB,uBAAyB,0BAA4B,GAC9DnyB,EAAWmyB,wBAA0BnyB,EAAWypC,2BAA+B,8BAAgC,GAEjH,2BACA,+BACA,+BAEEzpC,EAAW8Z,cAAgB7oC,GAAkB,uBAAyB,GACtE+uB,EAAW8Z,cAAgB7oC,GAAkBsuC,GAAwC,0BAAK,GAC1Fvf,EAAW8Z,cAAgB7oC,GAAkBm1D,GAAwB,cAAepmC,EAAW8Z,aAAgB,GAEjH9Z,EAAWiF,UAAY,oBAAsB,GAC7CjF,EAAWwrC,OAAS,iBAAmB,GAEvCjsB,GAAsC,wBACtC0mB,GAA0B,sBAAuBjmC,EAAW4Z,gBAE5D5Z,EAAWoqM,gBAAkB,yBAA2BpqM,EAAWyrC,aAAe,GAElF,MAECniN,OAAQg9M,IAAkBzhN,KAAM,OAMnCuxL,EAAe4wB,GADf5wB,EAAemwB,GADfnwB,EAAegxB,GAAiBhxB,GACepW,GACQA,GAIvDqW,EAAiB2wB,GADjB3wB,EAAiBkwB,GADjBlwB,EAAiB+wB,GAAiB/wB,GACiBrW,GACQA,GAE3DoW,EAAeqxB,GAAarxB,GAC5BC,EAAiBoxB,GAAapxB,GAEzBrW,EAAWie,WAA+C,IAAnCje,EAAWmqC,sBAItCD,EAAgB,oBAEhBjC,EAAe,CACd,oCACA,uBACA,sBACA,6BACCpjN,KAAM,MAAS,KAAOojN,EAExBC,EAAiB,CAChB,qBACEloC,EAAW+W,cAAgBn+B,GAAU,GAAK,oDAC1ConB,EAAW+W,cAAgBn+B,GAAU,GAAK,oCAC5C,uCACA,4BACA,8BACA,oCACA,qCACA,6CACA,uCACA,uCACA,+CACA,0CACC/zJ,KAAM,MAAS,KAAOqjN,GAIzB,IAqGIwD,EAgBA1b,EApHE2b,EAAezB,EAAgBhC,EAAiB7xB,EAKhDu1B,EAAiB1G,GAAa9wJ,EAAI,MANrB81J,EAAgBjC,EAAe7xB,GAO5Cy1B,EAAmB3G,GAAa9wJ,EAAI,MAAOu3J,GAqBjD,GAnBAv3J,EAAG03J,aAAchd,EAAS8c,GAC1Bx3J,EAAG03J,aAAchd,EAAS+c,QAIcj6M,IAAnCouK,EAAW6W,oBAEfziI,EAAG23J,mBAAoBjd,EAAS,EAAG9uB,EAAW6W,sBAEP,IAA5B7W,EAAWiT,cAGtB7+H,EAAG23J,mBAAoBjd,EAAS,EAAG,YAIpC16I,EAAG43J,YAAald,GAGXxV,EAASv9K,MAAMkwM,kBAAoB,CAEvC,IAAMC,EAAa93J,EAAG+3J,kBAAmBrd,GAAUz4K,OAC7C+1L,EAAYh4J,EAAGwxJ,iBAAkBgG,GAAiBv1L,OAClDg2L,EAAcj4J,EAAGwxJ,iBAAkBiG,GAAmBx1L,OAExDi2L,GAAW,EACXC,GAAkB,EAEtB,IAAkD,IAA7Cn4J,EAAG2wJ,oBAAqBjW,EAAS,OAAoB,CAEzDwd,GAAW,EAEX,IAAME,EAAe9G,GAAiBtxJ,EAAIw3J,EAAgB,UACpDa,EAAiB/G,GAAiBtxJ,EAAIy3J,EAAkB,YAE9DtwM,QAAQwN,MACP,oCAAsCqrC,EAAGs4J,WAAzC,sBACqBt4J,EAAG2wJ,oBAAqBjW,EAAS,OADtD,yBAEuBod,EAAa,KACpCM,EAAe,KACfC,EAGF,KAA2B,KAAfP,EAEX3wM,QAAQk/C,KAAM,wCAAyCyxJ,GAE9B,KAAdE,GAAoC,KAAhBC,IAE/BE,GAAkB,GAIdA,IAEJ/kN,KAAKmlN,YAAc,CAElBL,SAAUA,EAEVJ,WAAYA,EAEZ91B,aAAc,CAEb56K,IAAK4wM,EACL94M,OAAQ20M,GAIT5xB,eAAgB,CAEf76K,IAAK6wM,EACL/4M,OAAQ40M,IAQZ,CAgEA,OAxDA9zJ,EAAGw4J,aAAchB,GACjBx3J,EAAGw4J,aAAcf,GAMjBrkN,KAAK02M,YAAc,WAQlB,YANwBtsM,IAAnB85M,IAEJA,EAAiB,IAAI5G,GAAe1wJ,EAAI06I,IAIlC4c,CAER,EAMAlkN,KAAKmyE,cAAgB,WAQpB,YAN0B/nE,IAArBo+L,IAEJA,EAvtBH,SAAkC57I,EAAI06I,GAMrC,IAJA,IAAMp1H,EAAa,CAAC,EAEdnrE,EAAI6lD,EAAG2wJ,oBAAqBjW,EAAS,OAEjC5qM,EAAI,EAAGA,EAAIqK,EAAGrK,IAAO,CAE9B,IAAM2xF,EAAOzhC,EAAGy4J,gBAAiB/d,EAAS5qM,GACpCvD,EAAOk1F,EAAKl1F,KAEdgwM,EAAe,EACA,QAAd96G,EAAKzpF,OAAiBukM,EAAe,GACvB,QAAd96G,EAAKzpF,OAAiBukM,EAAe,GACvB,QAAd96G,EAAKzpF,OAAiBukM,EAAe,GAI1Cj3H,EAAY/4E,GAAS,CACpByL,KAAMypF,EAAKzpF,KACXmR,SAAU62C,EAAG04J,kBAAmBhe,EAASnuM,GACzCgwM,aAAcA,EAGhB,CAEA,OAAOj3H,CAER,CA2rBsBqzI,CAAyB34J,EAAI06I,IAI1CkB,CAER,EAIAxoM,KAAK28C,QAAU,WAEd6pJ,EAAcsD,uBAAwB9pM,MAEtC4sD,EAAG44J,cAAele,GAClBtnM,KAAKsnM,aAAUl9L,CAEhB,EAIApK,KAAK7G,KAAOq/K,EAAWoqC,WACvB5iN,KAAKo/B,GAAK6+K,KACVj+M,KAAKwgN,SAAWA,EAChBxgN,KAAKylN,UAAY,EACjBzlN,KAAKsnM,QAAUA,EACftnM,KAAK4uL,aAAew1B,EACpBpkN,KAAK6uL,eAAiBw1B,EAEfrkN,IAER,CAEA,IAAI0lN,GAAM,EAEJC,GAAgB,WAErB,SAAAA,IAAcl7M,EAAA,KAAAk7M,GAEb3lN,KAAK4lN,YAAc,IAAIzoL,IACvBn9B,KAAK6lN,cAAgB,IAAI1oL,GAE1B,CAiGC,OAjGA5zB,EAAAo8M,EAAA,EAAAnjN,IAAA,SAAA/D,MAED,SAAQo6K,GAEP,IAAM+V,EAAe/V,EAAS+V,aACxBC,EAAiBhW,EAASgW,eAE1Bi3B,EAAoB9lN,KAAK+lN,gBAAiBn3B,GAC1Co3B,EAAsBhmN,KAAK+lN,gBAAiBl3B,GAE5Co3B,EAAkBjmN,KAAKkmN,2BAA4BrtC,GAgBzD,OAdkD,IAA7CotC,EAAgB73K,IAAK03K,KAEzBG,EAAgB75L,IAAK05L,GACrBA,EAAkBL,cAIiC,IAA/CQ,EAAgB73K,IAAK43K,KAEzBC,EAAgB75L,IAAK45L,GACrBA,EAAoBP,aAIdzlN,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQo6K,GAEP,IAE0Cp0G,EAFiBC,EAAAoG,EAAnC9qE,KAAK6lN,cAAc91L,IAAK8oJ,IAEN,IAA1C,IAAAn0G,EAAAjpE,MAAAgpE,EAAAC,EAAA39D,KAAAkb,MAA6C,KAAjCkkM,EAAW1hJ,EAAAhmE,MAEtB0nN,EAAYV,YAEmB,IAA1BU,EAAYV,WAAkBzlN,KAAK4lN,YAAYpoL,OAAQ2oL,EAAYlhL,KAEzE,CAAC,OAAApsB,GAAA6rD,EAAAp+D,EAAAuS,EAAA,SAAA6rD,EAAAj+D,GAAA,CAID,OAFAzG,KAAK6lN,cAAcroL,OAAQq7I,GAEpB74K,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBo6K,GAElB,OAAO74K,KAAK+lN,gBAAiBltC,EAAS+V,cAAexvJ,EAEtD,GAAC,CAAA58B,IAAA,sBAAA/D,MAED,SAAqBo6K,GAEpB,OAAO74K,KAAK+lN,gBAAiBltC,EAASgW,gBAAiBzvJ,EAExD,GAAC,CAAA58B,IAAA,UAAA/D,MAED,WAECuB,KAAK4lN,YAAYzlN,QACjBH,KAAK6lN,cAAc1lN,OAEpB,GAAC,CAAAqC,IAAA,6BAAA/D,MAED,SAA4Bo6K,GAE3B,IAAMzvK,EAAQpJ,KAAK6lN,cACf52L,EAAM7lB,EAAM2mB,IAAK8oJ,GASrB,YAPazuK,IAAR6kB,IAEJA,EAAM,IAAIjD,IACV5iB,EAAM6lB,IAAK4pJ,EAAU5pJ,IAIfA,CAER,GAAC,CAAAzsB,IAAA,kBAAA/D,MAED,SAAiBwmC,GAEhB,IAAM77B,EAAQpJ,KAAK4lN,YACfQ,EAAQh9M,EAAM2mB,IAAKkV,GASvB,YAPe76B,IAAVg8M,IAEJA,EAAQ,IAAIC,GAAkBphL,GAC9B77B,EAAM6lB,IAAKgW,EAAMmhL,IAIXA,CAER,KAACT,CAAA,CAxGoB,GA4GhBU,GAAgB98M,GAErB,SAAA88M,EAAaphL,GAAOx6B,EAAA,KAAA47M,GAEnBrmN,KAAKo/B,GAAKsmL,KAEV1lN,KAAKilC,KAAOA,EACZjlC,KAAKylN,UAAY,CAElB,IAID,SAASa,GAAex0B,EAAU2S,EAAU8hB,EAAYj6H,EAAYkqG,EAAcgQ,EAAezX,GAEhG,IAAMy3B,EAAiB,IAAI/xC,GACrBgyC,EAAiB,IAAId,GACrB1Q,EAAW,GAEXxe,EAAWD,EAAaC,SACxBkU,EAAyBnU,EAAamU,uBACtCS,EAAiB5U,EAAa4U,eAChCpuM,EAAYw5L,EAAax5L,UAEvB0pN,EAAY,CACjBC,kBAAmB,QACnBC,qBAAsB,eACtBC,mBAAoB,SACpB7kC,kBAAmB,QACnB8kC,oBAAqB,UACrBC,kBAAmB,QACnBC,iBAAkB,OAClBC,qBAAsB,WACtBC,qBAAsB,WACtBC,mBAAoB,SACpBC,kBAAmB,QACnBC,mBAAoB,SACpBC,eAAgB,SAChBC,eAAgB,SAChBC,eAAgB,UA6ejB,MAAO,CACNC,cA3eD,SAAwB5uC,EAAUiW,EAAQ44B,EAAS31B,EAAO5vL,GAEzD,IAAMw5K,EAAMoW,EAAMpW,IACZ7Q,EAAW3oK,EAAO2oK,SAClBsN,EAAcS,EAAS8uC,uBAAyB51B,EAAM3Z,YAAc,KAEpEmI,GAAW1H,EAAS8uC,uBAAyBpB,EAAa9hB,GAAW10K,IAAK8oJ,EAAS0H,QAAUnI,GAC7FmpC,EAA0BhhC,GAAcA,EAAOj8B,UAAY8F,GAA4Bm2B,EAAOpnC,MAAM/qI,OAAS,KAE7G2zM,EAAW2E,EAAW7tC,EAASj0K,MAKT,OAAvBi0K,EAAS77K,YAEbA,EAAYw5L,EAAa8T,gBAAiBzxB,EAAS77K,cAEhC67K,EAAS77K,WAE3B+W,QAAQk/C,KAAM,oCAAqC4lH,EAAS77K,UAAW,uBAAwBA,EAAW,YAQ5G,IAWI4xL,EAAcC,EACdm5B,EAAsBC,EAZpBhhC,EAAiBnc,EAASgb,gBAAgBvmH,UAAYurG,EAASgb,gBAAgB/c,QAAU+B,EAASgb,gBAAgBt+I,MAClHouK,OAAyCxrM,IAAnB68K,EAAiCA,EAAervL,OAAS,EAEjF8rN,EAAqB,EAWzB,QAT2Ct5M,IAAtC0gK,EAASgb,gBAAgBvmH,WAAyBmkJ,EAAqB,QACnCt5M,IAApC0gK,EAASgb,gBAAgB/c,SAAuB26C,EAAqB,QAClCt5M,IAAnC0gK,EAASgb,gBAAgBt+I,QAAsBk8K,EAAqB,GAOpE3B,EAAW,CAEf,IAAM5uB,EAASsQ,GAAWse,GAE1BnzB,EAAeuE,EAAOvE,aACtBC,EAAiBsE,EAAOtE,cAEzB,MAECD,EAAe/V,EAAS+V,aACxBC,EAAiBhW,EAASgW,eAE1B43B,EAAenjD,OAAQuV,GAEvBmvC,EAAuBvB,EAAeyB,kBAAmBrvC,GACzDovC,EAAyBxB,EAAe0B,oBAAqBtvC,GAI9D,IAAMoZ,EAAsBH,EAASI,kBAE/Bk2B,EAAevvC,EAAS0I,UAAY,EACpC8mC,EAAexvC,EAASgG,UAAY,EACpCgkM,EAAiBhqM,EAASgoM,YAAc,EA+I9C,MA7ImB,CAElBpqL,SAAUA,EAEVsrB,SAAUA,EACVa,WAAY/pC,EAASj0K,KAErBgqL,aAAcA,EACdC,eAAgBA,EAChBF,QAAS9V,EAAS8V,QAElBq5B,qBAAsBA,EACtBC,uBAAwBA,EAExBtF,qBAAsD,IAAjC9pC,EAAS8pC,oBAC9BpzB,YAAa1W,EAAS0W,YAEtBvyL,UAAWA,EAEX6lN,YAAuC,IAA3B1gN,EAAO61K,gBACnB8qC,iBAA4C,IAA3B3gN,EAAO61K,iBAAqD,OAAzB71K,EAAO+1K,cAE3D6qC,uBAAwB3X,EACxBhZ,eAA0C,OAAxBH,EAAiCH,EAASM,gBAA4D,IAAzCH,EAAoBq2B,iBAA4Br2B,EAAoB5wB,QAAQ5C,SAAWxP,GACtK1yJ,MAAQs8K,EAASt8K,IACjB4iL,SAAWtG,EAASsG,OACpBoB,SAAWA,EACXwgC,WAAYxgC,GAAUA,EAAOj8B,QAC7Bi9D,mBAAoBA,EACpBliC,WAAaxG,EAASwG,SACtBE,QAAU1G,EAAS0G,MACnBY,cAAgBtH,EAASsH,YACzBV,UAAY5G,EAAS4G,QACrBE,YAAc9G,EAAS8G,UACvBwjC,qBAAsBtqC,EAAS+G,gBAAkBtwB,GACjDwyD,sBAAuBjpC,EAAS+G,gBAAkBvwB,GAElDy0D,qBAAuBjrC,EAASt8K,MAAyC,IAAhCs8K,EAASt8K,IAAIgsN,gBAA+B1vC,EAASt8K,IAAIkiK,WAAavP,GAE/G2vB,UAAWwpC,EACXtpC,aAAcspC,KAAmBxvC,EAASkG,aAC1CC,sBAAuBqpC,KAAmBxvC,EAASmG,sBACnDC,mBAAoBopC,KAAmBxvC,EAASoG,mBAEhD4hM,YAAagC,EACb7B,eAAgB6B,KAAqBhqM,EAASmoM,eAC9CC,wBAAyB4B,KAAqBhqM,EAASooM,wBAEvDnhM,kBAAoBjH,EAASiH,gBAC7BG,eAAiBpH,EAASoH,aAC1BC,eAAiBrH,EAASqH,aAC1BE,cAAgBvH,EAASuH,YACzBC,uBAAyBxH,EAASwH,qBAClCC,mBAAqBzH,EAASyH,iBAE9B0jC,QAAiC,IAAzBnrC,EAASkD,aAAyBlD,EAAS+C,WAAan0B,GAEhE23B,WAAavG,EAASuG,SACtBmC,UAAW6mC,EAEXxnC,cAAgB/H,EAAS+H,YAEzBxC,MAAOvF,EAASuF,MAAQ,EACxBovB,gBAAkB30B,EAAS20B,cAC3BC,oBAAsB50B,EAAS40B,kBAE/B5sB,aAAchI,EAASgI,aAAe,EACtCC,kBAAoBjI,EAASiI,gBAC7BE,eAAiBnI,EAASmI,aAE1BR,QAAS3H,EAAS2H,QAElB4iC,iBAAqBvqC,EAAS8G,aAAgB7U,EAAS54F,WAAWm0G,QAClEvK,aAAcjD,EAASiD,aACvBunC,cAAwC,IAA1BxqC,EAASiD,gBAA4BhR,EAAS54F,WAAW1qC,OAAgD,IAAvCsjI,EAAS54F,WAAW1qC,MAAMi7I,SAC1G6gC,YAAczqC,EAASt8K,OAAUs8K,EAAS4G,WAAc5G,EAAS8G,aAAgB9G,EAASuH,eAAkBvH,EAASuG,YAAevG,EAASsH,eAAkBtH,EAASoH,gBAAmBpH,EAASqH,gBAAmBrH,EAASkG,gBAAmBlG,EAASmG,yBAA4BnG,EAASoG,sBAAyBpG,EAASmoM,kBAAqBnoM,EAASooM,2BAA8BpoM,EAASiH,mBAAsBjH,EAASiI,mBAAsBjI,EAASmI,gBAAmBnI,EAASwH,wBAA2BxH,EAASyH,oBAAuBzH,EAAS20B,iBAAoB30B,EAAS40B,kBACnkB8V,gBAAsB1qC,EAASt8K,KAAUs8K,EAAS4G,SAAc5G,EAAS8G,WAAgB9G,EAASuH,aAAkBvH,EAASuG,UAAevG,EAASsH,aAAkBtH,EAASoH,cAAmBpH,EAASqH,cAAmBrH,EAASoG,oBAAyBpG,EAASmoM,gBAAqBnoM,EAASooM,yBAA2BpoM,EAASgI,aAAe,GAAQhI,EAASiI,iBAAsBjI,EAASmI,cAAmBnI,EAASwH,sBAA2BxH,EAASyH,kBAAoBzH,EAASuF,MAAQ,GAAQvF,EAAS20B,eAAoB30B,EAAS40B,sBAA0B50B,EAASiH,gBAEjkBnE,MAAQA,EACRsnC,QAAyB,IAAjBpqC,EAAS8C,IACjBunC,QAAWvnC,GAAOA,EAAI6sC,UAEtBvqC,cAAgBpF,EAASoF,YAEzBkD,gBAAiBtI,EAASsI,gBAC1BwpB,uBAAwBA,EAExB6Y,UAAmC,IAAzBrhN,EAAOs2K,cAEjBgT,kBAAoDrhL,IAAtC0gK,EAASgb,gBAAgBvmH,SACvCy2I,kBAAkD5rM,IAApC0gK,EAASgb,gBAAgB/c,OACvCktC,iBAAgD7rM,IAAnC0gK,EAASgb,gBAAgBt+I,MACtCouK,kBAAmBA,EACnB8N,mBAAoBA,EAEpB1E,aAAclwB,EAAO25B,YAAY7wN,OACjCunN,eAAgBrwB,EAAOpkB,MAAM9yK,OAC7BqnN,cAAenwB,EAAO45B,KAAK9wN,OAC3B8qX,iBAAkB5zL,EAAO4yL,aAAa9pX,OACtCsnN,kBAAmBpwB,EAAO65B,SAAS/wN,OACnCwnN,cAAetwB,EAAO85B,KAAKhxN,OAE3BynN,mBAAoBvwB,EAAOsT,qBAAqBxqM,OAChD2nN,qBAAsBzwB,EAAOmU,eAAerrM,OAC5C0nN,oBAAqBxwB,EAAO6T,cAAc/qM,OAC1C+qX,4BAA6B7zL,EAAO6zL,4BAEpCljK,kBAAmB1wB,EAASkd,UAC5ByT,oBAAqB3wB,EAASmd,gBAE9BzuB,UAAW5E,EAAS4E,UAEpBomC,iBAAkB/xB,EAAS+2B,UAAUh4B,SAAW62B,EAAQ9vN,OAAS,EACjEgpN,cAAe9uB,EAAS+2B,UAAUjkN,KAElC0tL,YAAazZ,EAAS+E,WAAakU,EAASQ,YAAc7oC,GAC1Ds6D,wBAAyBjyB,EAASiyB,wBAElCpmC,mBAAoB9E,EAAS8E,mBAE7BgmC,YAAa9qC,EAASgD,OAASx0B,GAC/Bu8D,UAAW/qC,EAASgD,OAASz0B,GAE7Bw7N,kBAAoB/pM,EAASorC,aAC7BA,aAAcprC,EAASorC,cAAgB,EAEvC50B,oBAAqBxW,EAASwW,oBAE9BwyB,qBAAsBhpC,EAASvsF,YAAcusF,EAASvsF,WAAW0iG,YACjEgzB,mBAAoBnpC,EAASvsF,YAAcusF,EAASvsF,WAAW2iG,UAC/DizB,qBAAsBrpC,EAASvsF,YAAcusF,EAASvsF,WAAW4iG,YACjEkzB,0BAA2BvpC,EAASvsF,YAAcusF,EAASvsF,WAAW6iG,iBAEtE8yB,2BAA4BxrB,GAAYnqG,EAAWl+C,IAAK,kBACxD+zK,6BAA8B1rB,GAAYnqG,EAAWl+C,IAAK,sBAC1Di0K,kCAAmC5rB,GAAYnqG,EAAWl+C,IAAK,0BAE/D06K,sBAAuBjwC,EAASiwC,wBAMlC,EA0RCC,mBAxRD,SAA6BvwC,GAE5B,IAAMz1K,EAAQ,GAad,GAXKy1K,EAAWupC,SAEfh/M,EAAMjG,KAAM07K,EAAWupC,WAIvBh/M,EAAMjG,KAAM07K,EAAWwvC,sBACvBjlN,EAAMjG,KAAM07K,EAAWyvC,8BAII79M,IAAvBouK,EAAWmW,QAEf,IAAM,IAAMx1L,KAAQq/K,EAAWmW,QAE9B5rL,EAAMjG,KAAM3D,GACZ4J,EAAMjG,KAAM07K,EAAWmW,QAASx1L,IAgBlC,OAVwC,IAAnCq/K,EAAWmqC,uBAcjB,SAAuC5/M,EAAOy1K,GAE7Cz1K,EAAMjG,KAAM07K,EAAWx7K,WACvB+F,EAAMjG,KAAM07K,EAAW4Z,gBACvBrvL,EAAMjG,KAAM07K,EAAWuoC,YACvBh+M,EAAMjG,KAAM07K,EAAW+oC,oBACvBx+M,EAAMjG,KAAM07K,EAAWgI,SACvBz9K,EAAMjG,KAAM07K,EAAW8qC,WACvBvgN,EAAMjG,KAAM07K,EAAW0qC,SACvBngN,EAAMjG,KAAM07K,EAAW2I,iBACvBp+K,EAAMjG,KAAM07K,EAAWo9B,mBACvB7yM,EAAMjG,KAAM07K,EAAWwwC,qBACvBjmN,EAAMjG,KAAM07K,EAAWwmC,cACvBj8M,EAAMjG,KAAM07K,EAAW2mC,gBACvBp8M,EAAMjG,KAAM07K,EAAWymC,eACvBl8M,EAAMjG,KAAM07K,EAAWkqM,kBACvB3/W,EAAMjG,KAAM07K,EAAW4mC,eACvBr8M,EAAMjG,KAAM07K,EAAW0mC,mBACvBn8M,EAAMjG,KAAM07K,EAAW6mC,oBACvBt8M,EAAMjG,KAAM07K,EAAW+mC,sBACvBx8M,EAAMjG,KAAM07K,EAAW8mC,qBACvBv8M,EAAMjG,KAAM07K,EAAWmqM,6BACvB5/W,EAAMjG,KAAM07K,EAAWooC,eACvB79M,EAAMjG,KAAM07K,EAAW8Z,aACvBvvL,EAAMjG,KAAM07K,EAAWinC,mBACvB18M,EAAMjG,KAAM07K,EAAWknC,qBACvB38M,EAAMjG,KAAM07K,EAAWyrC,aAExB,CAxCEgF,CAA8BlmN,EAAOy1K,GA0CvC,SAAqCz1K,EAAOy1K,GAE3CguC,EAAe7vM,aAEV6hK,EAAWie,UACf+vB,EAAe0C,OAAQ,GACnB1wC,EAAWuqC,wBACfyD,EAAe0C,OAAQ,GACnB1wC,EAAWqqC,YACf2D,EAAe0C,OAAQ,GACnB1wC,EAAWsqC,iBACf0D,EAAe0C,OAAQ,GACnB1wC,EAAWj8K,KACfiqN,EAAe0C,OAAQ,GACnB1wC,EAAW2G,QACfqnC,EAAe0C,OAAQ,GACnB1wC,EAAW+H,QACfimC,EAAe0C,OAAQ,GACnB1wC,EAAW6G,UACfmnC,EAAe0C,OAAQ,GACnB1wC,EAAW+G,OACfinC,EAAe0C,OAAQ,GACnB1wC,EAAW2H,aACfqmC,EAAe0C,OAAQ,GACnB1wC,EAAWiH,SACf+mC,EAAe0C,OAAQ,IACnB1wC,EAAWmH,WACf6mC,EAAe0C,OAAQ,IACnB1wC,EAAW2qC,sBACfqD,EAAe0C,OAAQ,IACnB1wC,EAAWspC,uBACf0E,EAAe0C,OAAQ,IACnB1wC,EAAWqG,WACf2nC,EAAe0C,OAAQ,IACnB1wC,EAAWuG,cACfynC,EAAe0C,OAAQ,IACnB1wC,EAAWwG,uBACfwnC,EAAe0C,OAAQ,IACnB1wC,EAAWyG,oBACfunC,EAAe0C,OAAQ,IACnB1wC,EAAWqoM,aACfr6J,EAAe0C,OAAQ,IACnB1wC,EAAWwoM,gBACfx6J,EAAe0C,OAAQ,IACnB1wC,EAAWyoM,yBACfz6J,EAAe0C,OAAQ,IACnB1wC,EAAWsH,iBACf0mC,EAAe0C,OAAQ,IACnB1wC,EAAW4H,aACfomC,EAAe0C,OAAQ,IACnB1wC,EAAWyH,cACfumC,EAAe0C,OAAQ,IACnB1wC,EAAW0H,cACfsmC,EAAe0C,OAAQ,IACnB1wC,EAAWoI,aACf4lC,EAAe0C,OAAQ,IACnB1wC,EAAW4G,UACfonC,EAAe0C,OAAQ,IACnB1wC,EAAW+I,WACfilC,EAAe0C,OAAQ,IACnB1wC,EAAWsD,cACf0qC,EAAe0C,OAAQ,IACnB1wC,EAAW6qC,cACfmD,EAAe0C,OAAQ,IACnB1wC,EAAW8qC,WACfkD,EAAe0C,OAAQ,IACnB1wC,EAAW4qC,gBACfoD,EAAe0C,OAAQ,IACnB1wC,EAAW+qC,eACfiD,EAAe0C,OAAQ,IAExBnmN,EAAMjG,KAAM0pN,EAAelsF,MAC3BksF,EAAe7vM,aAEV6hK,EAAWmD,KACf6qC,EAAe0C,OAAQ,GACnB1wC,EAAWyqC,QACfuD,EAAe0C,OAAQ,GACnB1wC,EAAWyF,aACfuoC,EAAe0C,OAAQ,GACnB1wC,EAAWmyB,wBACf6b,EAAe0C,OAAQ,GACnB1wC,EAAWgrC,UACfgD,EAAe0C,OAAQ,GACnB1wC,EAAWiT,cACf+6B,EAAe0C,OAAQ,GACnB1wC,EAAWw9B,cACfwQ,EAAe0C,OAAQ,GACnB1wC,EAAWy9B,aACfuQ,EAAe0C,OAAQ,GACnB1wC,EAAWmF,oBACf6oC,EAAe0C,OAAQ,GACnB1wC,EAAWqrC,kBACf2C,EAAe0C,OAAQ,GACnB1wC,EAAWurC,yBACfyC,EAAe0C,OAAQ,IACnB1wC,EAAWmrC,aACf6C,EAAe0C,OAAQ,IACnB1wC,EAAWorC,WACf4C,EAAe0C,OAAQ,IACnB1wC,EAAWoqM,iBACfp8J,EAAe0C,OAAQ,IACnB1wC,EAAWiF,WACf+oC,EAAe0C,OAAQ,IACnB1wC,EAAW6H,sBACfmmC,EAAe0C,OAAQ,IACnB1wC,EAAW8H,kBACfkmC,EAAe0C,OAAQ,IACnB1wC,EAAWqI,cACf2lC,EAAe0C,OAAQ,IACnB1wC,EAAWsI,iBACf0lC,EAAe0C,OAAQ,IACnB1wC,EAAWwI,cACfwlC,EAAe0C,OAAQ,IACnB1wC,EAAW4F,OACfooC,EAAe0C,OAAQ,IACnB1wC,EAAWg1B,eACfgZ,EAAe0C,OAAQ,IACnB1wC,EAAWi1B,mBACf+Y,EAAe0C,OAAQ,IACnB1wC,EAAWsrC,oBACf0C,EAAe0C,OAAQ,IACnB1wC,EAAWwrC,QACfwC,EAAe0C,OAAQ,IAExBnmN,EAAMjG,KAAM0pN,EAAelsF,KAE5B,CAxKE6uF,CAA4BpmN,EAAOy1K,GACnCz1K,EAAMjG,KAAMg1L,EAASM,iBAItBrvL,EAAMjG,KAAM07K,EAAWswC,uBAEhB/lN,EAAM1F,MAEd,EAmPCq5M,YAlFD,SAAsB79B,GAErB,IACIuV,EADE2zB,EAAW2E,EAAW7tC,EAASj0K,MAGrC,GAAKm9M,EAAW,CAEf,IAAM5uB,EAASsQ,GAAWse,GAC1B3zB,EAAWE,GAAcptL,MAAOiyL,EAAO/E,SAExC,MAECA,EAAWvV,EAASuV,SAIrB,OAAOA,CAER,EAiECg7B,eA/DD,SAAyB5wC,EAAYgoC,GAKpC,IAHA,IAAIlZ,EAGMtgM,EAAI,EAAGwmD,EAAKynJ,EAASr9M,OAAQoP,EAAIwmD,EAAIxmD,IAAO,CAErD,IAAMqiN,EAAqBpU,EAAUjuM,GAErC,GAAKqiN,EAAmB7I,WAAaA,EAAW,IAE/ClZ,EAAU+hB,GACC5D,UAEX,KAED,CAED,CASA,YAPiBr7M,IAAZk9L,IAEJA,EAAU,IAAIiZ,GAAczuB,EAAU0uB,EAAUhoC,EAAYguB,GAC5DyO,EAASn4M,KAAMwqM,IAITA,CAER,EAmCCgiB,eAjCD,SAAyBhiB,GAExB,GAA8B,MAAtBA,EAAQme,UAAkB,CAGjC,IAAM/oN,EAAIu4M,EAASzoM,QAAS86L,GAC5B2N,EAAUv4M,GAAMu4M,EAAUA,EAASr9M,OAAS,GAC5Cq9M,EAASjkJ,MAGTs2I,EAAQ3qJ,SAET,CAED,EAoBC4sK,mBAlBD,SAA6B1wC,GAE5B4tC,EAAe7lJ,OAAQi4G,EAExB,EAgBCo8B,SAAUA,EACVvzC,QAfD,WAEC+kD,EAAe/kD,SAEhB,EAcD,CAEA,SAAS8nD,KAER,IAAI77M,EAAa,IAAIozC,QAmCrB,MAAO,CACNhxB,IAlCD,SAAc5tB,GAEb,IAAI5F,EAAMoR,EAAWoiB,IAAK5tB,GAS1B,YAPaiI,IAAR7N,IAEJA,EAAM,CAAC,EACPoR,EAAWshB,IAAK9sB,EAAQ5F,IAIlBA,CAER,EAsBCqkE,OApBD,SAAiBz+D,GAEhBwL,EAAW6vB,OAAQr7B,EAEpB,EAiBCmhK,OAfD,SAAiBnhK,EAAQK,EAAK/D,GAE7BkP,EAAWoiB,IAAK5tB,GAAUK,GAAQ/D,CAEnC,EAYCijK,QAVD,WAEC/zJ,EAAa,IAAIozC,OAElB,EASD,CAEA,SAAS0oK,GAAmBztN,EAAGuK,GAE9B,OAAKvK,EAAE0tN,aAAenjN,EAAEmjN,WAEhB1tN,EAAE0tN,WAAanjN,EAAEmjN,WAEb1tN,EAAEm6K,cAAgB5vK,EAAE4vK,YAExBn6K,EAAEm6K,YAAc5vK,EAAE4vK,YAEdn6K,EAAE68K,SAASz5I,KAAO74B,EAAEsyK,SAASz5I,GAEjCpjC,EAAE68K,SAASz5I,GAAK74B,EAAEsyK,SAASz5I,GAEvBpjC,EAAEsL,IAAMf,EAAEe,EAEdtL,EAAEsL,EAAIf,EAAEe,EAIRtL,EAAEojC,GAAK74B,EAAE64B,EAIlB,CAEA,SAASuqL,GAA0B3tN,EAAGuK,GAErC,OAAKvK,EAAE0tN,aAAenjN,EAAEmjN,WAEhB1tN,EAAE0tN,WAAanjN,EAAEmjN,WAEb1tN,EAAEm6K,cAAgB5vK,EAAE4vK,YAExBn6K,EAAEm6K,YAAc5vK,EAAE4vK,YAEdn6K,EAAEsL,IAAMf,EAAEe,EAEdf,EAAEe,EAAItL,EAAEsL,EAIRtL,EAAEojC,GAAK74B,EAAE64B,EAIlB,CAGA,SAASwqL,KAER,IAAMC,EAAc,GAChBC,EAAmB,EAEjB9F,EAAS,GACT+F,EAAe,GACfhuC,EAAc,GAYpB,SAASiuC,EAAmB7nN,EAAQ2oK,EAAU+N,EAAU6wC,EAAYpiN,EAAGmgG,GAEtE,IAAIwiH,EAAaJ,EAAaC,GAgC9B,YA9BoB1/M,IAAf6/M,GAEJA,EAAa,CACZ7qL,GAAIj9B,EAAOi9B,GACXj9B,OAAQA,EACR2oK,SAAUA,EACV+N,SAAUA,EACV6wC,WAAYA,EACZvzC,YAAah0K,EAAOg0K,YACpB7uK,EAAGA,EACHmgG,MAAOA,GAGRoiH,EAAaC,GAAqBG,IAIlCA,EAAW7qL,GAAKj9B,EAAOi9B,GACvB6qL,EAAW9nN,OAASA,EACpB8nN,EAAWn/C,SAAWA,EACtBm/C,EAAWpxC,SAAWA,EACtBoxC,EAAWP,WAAaA,EACxBO,EAAW9zC,YAAch0K,EAAOg0K,YAChC8zC,EAAW3iN,EAAIA,EACf2iN,EAAWxiH,MAAQA,GAIpBqiH,IAEOG,CAER,CAsEA,MAAO,CAENjG,OAAQA,EACR+F,aAAcA,EACdhuC,YAAaA,EAEbxnD,KA1HD,WAECu1F,EAAmB,EAEnB9F,EAAOpsN,OAAS,EAChBmyN,EAAanyN,OAAS,EACtBmkL,EAAYnkL,OAAS,CAEtB,EAmHCkF,KA3ED,SAAeqF,EAAQ2oK,EAAU+N,EAAU6wC,EAAYpiN,EAAGmgG,GAEzD,IAAMwiH,EAAaD,EAAmB7nN,EAAQ2oK,EAAU+N,EAAU6wC,EAAYpiN,EAAGmgG,GAE5EoxE,EAASgI,aAAe,EAE5BkpC,EAAajtN,KAAMmtN,IAEiB,IAAzBpxC,EAASkD,YAEpBA,EAAYj/K,KAAMmtN,GAIlBjG,EAAOlnN,KAAMmtN,EAIf,EA0DCl6M,QAxDD,SAAkB5N,EAAQ2oK,EAAU+N,EAAU6wC,EAAYpiN,EAAGmgG,GAE5D,IAAMwiH,EAAaD,EAAmB7nN,EAAQ2oK,EAAU+N,EAAU6wC,EAAYpiN,EAAGmgG,GAE5EoxE,EAASgI,aAAe,EAE5BkpC,EAAah6M,QAASk6M,IAEc,IAAzBpxC,EAASkD,YAEpBA,EAAYhsK,QAASk6M,GAIrBjG,EAAOj0M,QAASk6M,EAIlB,EAuCC92H,OA7BD,WAIC,IAAM,IAAIz2F,EAAIotN,EAAkBh9J,EAAK+8J,EAAYjyN,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvE,IAAMutN,EAAaJ,EAAantN,GAEhC,GAAuB,OAAlButN,EAAW7qL,GAAc,MAE9B6qL,EAAW7qL,GAAK,KAChB6qL,EAAW9nN,OAAS,KACpB8nN,EAAWn/C,SAAW,KACtBm/C,EAAWpxC,SAAW,KACtBoxC,EAAWxiH,MAAQ,IAEpB,CAED,EAaCjO,KAvCD,SAAe0wH,EAAkBC,GAE3BnG,EAAOpsN,OAAS,GAAIosN,EAAOxqH,KAAM0wH,GAAoBT,IACrDM,EAAanyN,OAAS,GAAImyN,EAAavwH,KAAM2wH,GAAyBR,IACtE5tC,EAAYnkL,OAAS,GAAImkL,EAAYviF,KAAM2wH,GAAyBR,GAE1E,EAoCD,CAEA,SAASS,KAER,IAAIC,EAAQ,IAAItpK,QAqChB,MAAO,CACNhxB,IApCD,SAAcgiK,EAAOu4B,GAEpB,IACI95M,EADEsyW,EAAYz4J,EAAMt6L,IAAKgiK,GAuB7B,YApBmB3nL,IAAd04W,GAEJtyW,EAAO,IAAIo5M,GACXS,EAAMp7L,IAAK8iK,EAAO,CAAEvhL,KAIf85M,GAAmBw4J,EAAUlrX,QAEjC4Y,EAAO,IAAIo5M,GACXk5J,EAAUhmX,KAAM0T,IAIhBA,EAAOsyW,EAAWx4J,GAMb95M,CAER,EAUCkxJ,QARD,WAEC2oD,EAAQ,IAAItpK,OAEb,EAOD,CAEA,SAASwpK,KAER,IAAMz7B,EAAS,CAAC,EAEhB,MAAO,CAEN/+J,IAAK,SAAWmhD,GAEf,QAA4B9mE,IAAvB0kL,EAAQ59G,EAAM9xC,IAElB,OAAO0vJ,EAAQ59G,EAAM9xC,IAItB,IAAIgvJ,EAEJ,OAASl9G,EAAMtsE,MAEd,IAAK,mBACJwpL,EAAW,CACV/f,UAAW,IAAIvH,GACft/H,MAAO,IAAI+zH,IAEZ,MAED,IAAK,YACJ6yB,EAAW,CACV7uH,SAAU,IAAIunG,GACduH,UAAW,IAAIvH,GACft/H,MAAO,IAAI+zH,GACXmb,SAAU,EACV6rB,QAAS,EACTC,YAAa,EACbC,MAAO,GAER,MAED,IAAK,aACJrU,EAAW,CACV7uH,SAAU,IAAIunG,GACdt/H,MAAO,IAAI+zH,GACXmb,SAAU,EACV+rB,MAAO,GAER,MAED,IAAK,kBACJrU,EAAW,CACV/f,UAAW,IAAIvH,GACfs8B,SAAU,IAAI7nC,GACd8nC,YAAa,IAAI9nC,IAElB,MAED,IAAK,gBACJ6yB,EAAW,CACV5mJ,MAAO,IAAI+zH,GACXh8F,SAAU,IAAIunG,GACd0jD,UAAW,IAAI1jD,GACf2jD,WAAY,IAAI3jD,IAQnB,OAFAgoB,EAAQ59G,EAAM9xC,IAAOgvJ,EAEdA,CAER,EAIF,CAiEA,IAAIs8B,GAAc,EAElB,SAASq4J,GAAsCn4J,EAAQC,GAEtD,OAASA,EAAO70C,WAAa,EAAI,IAAQ40C,EAAO50C,WAAa,EAAI,IAAQ60C,EAAOtuN,IAAM,EAAI,IAAQquN,EAAOruN,IAAM,EAAI,EAEpH,CAEA,SAASuuN,GAAax+H,EAAYkqG,GA8CjC,IA5CA,IAAMptL,EAAQ,IAAImhN,GAEZQ,EA3EP,WAEC,IAAMj8B,EAAS,CAAC,EAEhB,MAAO,CAEN/+J,IAAK,SAAWmhD,GAEf,QAA4B9mE,IAAvB0kL,EAAQ59G,EAAM9xC,IAElB,OAAO0vJ,EAAQ59G,EAAM9xC,IAItB,IAAIgvJ,EAEJ,OAASl9G,EAAMtsE,MAEd,IAAK,mBASL,IAAK,YACJwpL,EAAW,CACV4T,WAAY,EACZC,iBAAkB,EAClBC,aAAc,EACdC,cAAe,IAAIhtC,IAEpB,MAED,IAAK,aACJi5B,EAAW,CACV4T,WAAY,EACZC,iBAAkB,EAClBC,aAAc,EACdC,cAAe,IAAIhtC,GACnB4tC,iBAAkB,EAClBC,gBAAiB,KAUpB,OAFAlU,EAAQ59G,EAAM9xC,IAAOgvJ,EAEdA,CAER,EAIF,CAgBqB48B,GAEdprM,EAAQ,CAEbvmB,QAAS,EAETy9F,KAAM,CACLm0H,mBAAqB,EACrBC,aAAe,EACfC,YAAc,EACdC,gBAAkB,EAClBC,YAAc,EAEdC,uBAAyB,EACzBC,iBAAmB,EACnBC,gBAAkB,EAClBw3J,aAAe,GAGhBv3J,QAAS,CAAE,EAAG,EAAG,GACjBC,MAAO,GACPjD,YAAa,GACbkD,kBAAmB,GACnBvpB,qBAAsB,GACtBC,wBAAyB,GACzBqmB,KAAM,GACNg5J,aAAc,GACd91J,WAAY,GACZjpB,cAAe,GACfg/K,gBAAiB,GACjBh5J,SAAU,GACVkD,aAAc,KACdC,aAAc,KACdphD,MAAO,GACPqhD,YAAa,GACb9oB,eAAgB,GAChBC,kBAAmB,GACnB0lB,KAAM,GACN+5J,4BAA6B,GAIpBjmX,EAAI,EAAGA,EAAI,EAAGA,IAAOkjB,EAAM8rM,MAAM5uN,KAAM,IAAIgqK,IAErD,IAAMklD,EAAU,IAAIllD,GACd/N,EAAU,IAAI4X,GACds7C,EAAW,IAAIt7C,GA0WrB,MAAO,CACNs3B,MAzWD,SAAgBnZ,EAAQi1B,GAIvB,IAFA,IAAI78M,EAAI,EAAGR,EAAI,EAAGH,EAAI,EAEZ7J,EAAI,EAAGA,EAAI,EAAGA,IAAOkjB,EAAM8rM,MAAOhvN,GAAIuyB,IAAK,EAAG,EAAG,GAE3D,IAAIg8L,EAAoB,EACpBC,EAAc,EACdC,EAAa,EACbC,EAAiB,EACjBC,EAAa,EAEbC,EAAwB,EACxBC,EAAkB,EAClBC,EAAiB,EACjBw3J,EAAc,EACdC,EAAyB,EAG7Bn0L,EAAOt1F,KAAMupR,IAKb,IAFA,IAAM72J,GAA4C,IAA5BnI,EAAqC9mN,KAAK00J,GAAK,EAE3Dj1J,EAAI,EAAGmK,EAAIioL,EAAOl3L,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAMw0E,EAAQ49G,EAAQpyL,GAEhB8qC,EAAQ0pC,EAAM1pC,MACd2kL,EAAYj7I,EAAMi7I,UAClBz1C,EAAWxlG,EAAMwlG,SAEjBmyC,EAAc33I,EAAMuyE,QAAUvyE,EAAMuyE,OAAOlnJ,IAAQ20E,EAAMuyE,OAAOlnJ,IAAI8kK,QAAU,KAEpF,GAAKnwF,EAAMk7I,eAEVllN,GAAKsgC,EAAMtgC,EAAIilN,EAAYD,EAC3BxlN,GAAK8gC,EAAM9gC,EAAIylN,EAAYD,EAC3B3lN,GAAKihC,EAAMjhC,EAAI4lN,EAAYD,OAErB,GAAKh7I,EAAMm7I,aAEjB,IAAM,IAAIx8M,EAAI,EAAGA,EAAI,EAAGA,IAEvB+P,EAAM8rM,MAAO77M,GAAI6qK,gBAAiBxpG,EAAMx4B,GAAG4zK,aAAcz8M,GAAKs8M,QAIzD,GAAKj7I,EAAMq7I,mBAAqB,CAEtC,IAAMn+B,EAAWhlL,EAAM2mB,IAAKmhD,GAI5B,GAFAk9G,EAAS5mJ,MAAMk0H,KAAMxqF,EAAM1pC,OAAQ+tH,eAAgBrkF,EAAMi7I,UAAYD,GAEhEh7I,EAAM8kG,WAAa,CAEvB,IAAMvyB,EAASvyE,EAAMuyE,OAEf+oE,EAAiBzB,EAAYh7L,IAAKmhD,GAExCs7I,EAAexqB,WAAav+C,EAAOgpE,KACnCD,EAAevqB,iBAAmBx+C,EAAOipE,WACzCF,EAAetqB,aAAez+C,EAAOylB,OACrCsjD,EAAerqB,cAAgB1+C,EAAOkpE,QAEtC/sM,EAAM+rM,kBAAmBV,GAAsBuB,EAC/C5sM,EAAMwiL,qBAAsB6oB,GAAsBpC,EAClDjpM,EAAMyiL,wBAAyB4oB,GAAsB/5I,EAAMuyE,OAAOiW,OAElE4xD,GAED,CAEA1rM,EAAM6oM,YAAawC,GAAsB78B,EAEzC68B,GAED,MAAO,GAAK/5I,EAAM07I,YAAc,CAE/B,IAAMx+B,EAAWhlL,EAAM2mB,IAAKmhD,GAE5Bk9G,EAAS7uH,SAASq3G,sBAAuB1lG,EAAM+2F,aAE/CmmB,EAAS5mJ,MAAMk0H,KAAMl0H,GAAQ+tH,eAAgB42D,EAAYD,GACzD99B,EAAS1X,SAAWA,EAEpB0X,EAASmU,QAAUtlM,KAAKk3J,IAAKjjF,EAAM0kF,OACnCw4B,EAASoU,YAAcvlM,KAAKk3J,IAAKjjF,EAAM0kF,OAAU,EAAI1kF,EAAM27I,WAC3Dz+B,EAASqU,MAAQvxH,EAAMuxH,MAEvB7iL,EAAM8oM,KAAMyC,GAAe/8B,EAE3B,IAAM3qC,EAASvyE,EAAMuyE,OAiBrB,GAfKvyE,EAAM30E,MAEVqjB,EAAM8hW,aAAcsB,GAAgB9xS,EAAM30E,IAC1CymX,IAIAv/N,EAAOuuE,eAAgB9gJ,GAElBA,EAAM8kG,YAAaitM,KAIzBrjW,EAAM+hW,gBAAiBx2J,GAAe1nE,EAAOiW,OAExCxoF,EAAM8kG,WAAa,CAEvB,IAAMw2C,EAAiBzB,EAAYh7L,IAAKmhD,GAExCs7I,EAAexqB,WAAav+C,EAAOgpE,KACnCD,EAAevqB,iBAAmBx+C,EAAOipE,WACzCF,EAAetqB,aAAez+C,EAAOylB,OACrCsjD,EAAerqB,cAAgB1+C,EAAOkpE,QAEtC/sM,EAAMgsM,WAAYT,GAAeqB,EACjC5sM,EAAM+iL,cAAewoB,GAAetC,EAEpC2C,GAED,CAEAL,GAED,MAAO,GAAKj6I,EAAM47I,gBAAkB,CAEnC,IAAM1+B,EAAWhlL,EAAM2mB,IAAKmhD,GAM5Bk9G,EAAS5mJ,MAAMk0H,KAAMl0H,GAAQ+tH,eAAgB42D,GAE7C/9B,EAASo8B,UAAUv7L,IAAmB,GAAdiiD,EAAM/iE,MAAa,EAAK,GAChDigL,EAASq8B,WAAWx7L,IAAK,EAAoB,GAAfiiD,EAAM9iE,OAAc,GAElDwR,EAAM+oM,SAAUyC,GAAmBh9B,EAEnCg9B,GAED,MAAO,GAAKl6I,EAAM67I,aAAe,CAEhC,IAAM3+B,EAAWhlL,EAAM2mB,IAAKmhD,GAM5B,GAJAk9G,EAAS5mJ,MAAMk0H,KAAMxqF,EAAM1pC,OAAQ+tH,eAAgBrkF,EAAMi7I,UAAYD,GACrE99B,EAAS1X,SAAWxlG,EAAMwlG,SAC1B0X,EAASqU,MAAQvxH,EAAMuxH,MAElBvxH,EAAM8kG,WAAa,CAEvB,IAAMvyB,EAASvyE,EAAMuyE,OAEf+oE,EAAiBzB,EAAYh7L,IAAKmhD,GAExCs7I,EAAexqB,WAAav+C,EAAOgpE,KACnCD,EAAevqB,iBAAmBx+C,EAAOipE,WACzCF,EAAetqB,aAAez+C,EAAOylB,OACrCsjD,EAAerqB,cAAgB1+C,EAAOkpE,QACtCH,EAAezpB,iBAAmBt/C,EAAOmkB,OAAOiM,KAChD24C,EAAexpB,gBAAkBv/C,EAAOmkB,OAAOkM,IAE/Cl0J,EAAMmsM,YAAab,GAAgBsB,EACnC5sM,EAAMqjL,eAAgBioB,GAAgBrC,EACtCjpM,EAAMsjL,kBAAmBgoB,GAAgBh6I,EAAMuyE,OAAOiW,OAEtD6xD,GAED,CAEA3rM,EAAM8qJ,MAAOwgD,GAAgB98B,EAE7B88B,GAED,MAAO,GAAKh6I,EAAM87I,kBAAoB,CAErC,IAAM5+B,EAAWhlL,EAAM2mB,IAAKmhD,GAE5Bk9G,EAASgV,SAAS1nC,KAAMxqF,EAAM1pC,OAAQ+tH,eAAgB42D,EAAYD,GAClE99B,EAASiV,YAAY3nC,KAAMxqF,EAAMmyH,aAAc9tC,eAAgB42D,EAAYD,GAE3EtsM,EAAMgpM,KAAMyC,GAAej9B,EAE3Bi9B,GAED,CAED,CAEKD,EAAiB,IAEhB50B,EAAaC,WAWqC,IAAjDnqG,EAAWl+C,IAAK,6BAPrBxuB,EAAMisM,aAAetrB,GAAY0sB,YACjCrtM,EAAMksM,aAAevrB,GAAY2sB,cAWiC,IAAtD5gI,EAAWl+C,IAAK,kCAE3BxuB,EAAMisM,aAAetrB,GAAY4sB,WACjCvtM,EAAMksM,aAAevrB,GAAY6sB,YAIjCr5M,QAAQwN,MAAO,gFAQlB3B,EAAM6rM,QAAS,GAAMvkN,EACrB0Y,EAAM6rM,QAAS,GAAM/kN,EACrBkZ,EAAM6rM,QAAS,GAAMllN,EAErB,IAAMuwF,EAAOl3E,EAAMk3E,KAEdA,EAAKm0H,oBAAsBA,GAC/Bn0H,EAAKo0H,cAAgBA,GACrBp0H,EAAKq0H,aAAeA,GACpBr0H,EAAKs0H,iBAAmBA,GACxBt0H,EAAKu0H,aAAeA,GACpBv0H,EAAKw0H,wBAA0BA,GAC/Bx0H,EAAKy0H,kBAAoBA,GACzBz0H,EAAK00H,iBAAmBA,GACxB10H,EAAKksR,cAAgBA,IAErBpjW,EAAM6oM,YAAY7wN,OAASqzN,EAC3BrrM,EAAM8oM,KAAK9wN,OAASuzN,EACpBvrM,EAAM+oM,SAAS/wN,OAASwzN,EACxBxrM,EAAM8qJ,MAAM9yK,OAASszN,EACrBtrM,EAAMgpM,KAAKhxN,OAASyzN,EAEpBzrM,EAAM+rM,kBAAkB/zN,OAAS0zN,EACjC1rM,EAAMwiL,qBAAqBxqM,OAAS0zN,EACpC1rM,EAAMmsM,YAAYn0N,OAAS2zN,EAC3B3rM,EAAMqjL,eAAerrM,OAAS2zN,EAC9B3rM,EAAMgsM,WAAWh0N,OAAS4zN,EAC1B5rM,EAAM+iL,cAAc/qM,OAAS4zN,EAC7B5rM,EAAMyiL,wBAAwBzqM,OAAS0zN,EACvC1rM,EAAMsjL,kBAAkBtrM,OAAS2zN,EACjC3rM,EAAM+hW,gBAAgB/pX,OAAS4zN,EAAiBw3J,EAAcC,EAC9DrjW,EAAM8hW,aAAa9pX,OAASorX,EAC5BpjW,EAAM+iW,4BAA8BM,EAEpCnsR,EAAKm0H,kBAAoBA,EACzBn0H,EAAKo0H,YAAcA,EACnBp0H,EAAKq0H,WAAaA,EAClBr0H,EAAKs0H,eAAiBA,EACtBt0H,EAAKu0H,WAAaA,EAElBv0H,EAAKw0H,sBAAwBA,EAC7Bx0H,EAAKy0H,gBAAkBA,EACvBz0H,EAAK00H,eAAiBA,EACtB10H,EAAKksR,YAAcA,EAEnBpjW,EAAMvmB,QAAUqxN,KAIlB,EAwFC2C,UAtFD,SAAoBv+B,EAAQlnB,GAU3B,IARA,IAAIqjD,EAAoB,EACpBC,EAAc,EACdC,EAAa,EACbC,EAAiB,EACjBC,EAAa,EAEX7e,EAAa5kC,EAAOE,mBAEhBprK,EAAI,EAAGmK,EAAIioL,EAAOl3L,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAMw0E,EAAQ49G,EAAQpyL,GAEtB,GAAKw0E,EAAMq7I,mBAAqB,CAE/B,IAAMn+B,EAAWxuK,EAAM6oM,YAAawC,GAEpC78B,EAAS/f,UAAUuI,sBAAuB1lG,EAAM+2F,aAChD+jD,EAAQp1C,sBAAuB1lG,EAAM3vE,OAAO0mK,aAC5CmmB,EAAS/f,UAAUvF,IAAKkjD,GACxB59B,EAAS/f,UAAUqC,mBAAoB87B,GAEvCye,GAED,MAAO,GAAK/5I,EAAM07I,YAAc,CAE/B,IAAMx+B,EAAWxuK,EAAM8oM,KAAMyC,GAE7B/8B,EAAS7uH,SAASq3G,sBAAuB1lG,EAAM+2F,aAC/CmmB,EAAS7uH,SAASsoG,aAAc2kC,GAEhCpe,EAAS/f,UAAUuI,sBAAuB1lG,EAAM+2F,aAChD+jD,EAAQp1C,sBAAuB1lG,EAAM3vE,OAAO0mK,aAC5CmmB,EAAS/f,UAAUvF,IAAKkjD,GACxB59B,EAAS/f,UAAUqC,mBAAoB87B,GAEvC2e,GAED,MAAO,GAAKj6I,EAAM47I,gBAAkB,CAEnC,IAAM1+B,EAAWxuK,EAAM+oM,SAAUyC,GAEjCh9B,EAAS7uH,SAASq3G,sBAAuB1lG,EAAM+2F,aAC/CmmB,EAAS7uH,SAASsoG,aAAc2kC,GAGhCyf,EAASqB,WACTv0D,EAAQ2C,KAAMxqF,EAAM+2F,aACpBlP,EAAQud,YAAak2B,GACrByf,EAASj1C,gBAAiBje,GAE1Bq1B,EAASo8B,UAAUv7L,IAAmB,GAAdiiD,EAAM/iE,MAAa,EAAK,GAChDigL,EAASq8B,WAAWx7L,IAAK,EAAoB,GAAfiiD,EAAM9iE,OAAc,GAElDggL,EAASo8B,UAAU3iD,aAAcokD,GACjC79B,EAASq8B,WAAW5iD,aAAcokD,GAElCb,GAED,MAAO,GAAKl6I,EAAM67I,aAAe,CAEhC,IAAM3+B,EAAWxuK,EAAM8qJ,MAAOwgD,GAE9B98B,EAAS7uH,SAASq3G,sBAAuB1lG,EAAM+2F,aAC/CmmB,EAAS7uH,SAASsoG,aAAc2kC,GAEhC0e,GAED,MAAO,GAAKh6I,EAAM87I,kBAAoB,CAErC,IAAM5+B,EAAWxuK,EAAMgpM,KAAMyC,GAE7Bj9B,EAAS/f,UAAUuI,sBAAuB1lG,EAAM+2F,aAChDmmB,EAAS/f,UAAUqC,mBAAoB87B,GAEvC6e,GAED,CAED,CAED,EAKCzrM,MAAOA,EAGT,CAEA,SAAS2tM,GAAkBjhI,EAAYkqG,GAEtC,IAAM1H,EAAS,IAAIg8B,GAAax+H,EAAYkqG,GAEtCg3B,EAAc,GACdC,EAAe,GAwCrB,MAAO,CACNl5F,KAvCD,WAECi5F,EAAY51N,OAAS,EACrB61N,EAAa71N,OAAS,CAEvB,EAmCCgoB,MATa,CACb4tM,YAAaA,EACbC,aAAcA,EAEd3+B,OAAQA,GAMR4+B,YAtBD,SAAsB3J,GAErBj1B,EAAOmZ,MAAOulB,EAAazJ,EAE5B,EAmBC4J,gBAjBD,SAA0B/lD,GAEzBknB,EAAOu+B,UAAWG,EAAa5lD,EAEhC,EAeCgmD,UArCD,SAAoB18I,GAEnBs8I,EAAY1wN,KAAMo0E,EAEnB,EAkCC28I,WAhCD,SAAqBC,GAEpBL,EAAa3wN,KAAMgxN,EAEpB,EA+BD,CAEA,SAASC,GAAmBzhI,EAAYkqG,GAEvC,IAAIw3B,EAAe,IAAIjtK,QAqCvB,MAAO,CACNhxB,IApCD,SAAcgiK,GAA6B,IAGtCk8B,EAHgB3D,EAAerqN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEhCijX,EAAmBl1J,EAAaj+L,IAAKgiK,GAuB3C,YApB0B3nL,IAArB84W,GAEJj1J,EAAc,IAAIV,GAAkBjhI,EAAYkqG,GAChDw3B,EAAa/+L,IAAK8iK,EAAO,CAAEk8B,KAItB3D,GAAmB44J,EAAiBtrX,QAExCq2N,EAAc,IAAIV,GAAkBjhI,EAAYkqG,GAChD0sL,EAAiBpmX,KAAMmxN,IAIvBA,EAAci1J,EAAkB54J,GAM3B2D,CAER,EAUCvsD,QARD,WAECssD,EAAe,IAAIjtK,OAEpB,EAOD,CAAC,IAEK4lK,GAAiB,SAAAuH,GAAAlyM,EAAA2qM,EAAAuH,GAAA,IAAAC,EAAAxzM,EAAAgsM,GAEtB,SAAAA,EAAanuC,GAAa,IAAAg2C,EAqBI,OArBJ/jN,EAAA,KAAAk8M,IAEzB6H,EAAAL,EAAAtxN,KAAA,OAEKwxN,qBAAsB,EAE3BG,EAAK5pN,KAAO,oBAEZ4pN,EAAKvK,aA1hoBmB,KA4hoBxBuK,EAAKjyN,IAAM,KAEXiyN,EAAKpvC,SAAW,KAEhBovC,EAAK1uC,gBAAkB,KACvB0uC,EAAKzuC,kBAAoB,EACzByuC,EAAKxuC,iBAAmB,EAExBwuC,EAAKhtC,WAAY,EACjBgtC,EAAK/sC,mBAAqB,EAE1B+sC,EAAKpsC,UAAW5J,GAAag2C,CAE9B,CAqBC,OArBAjlN,EAAAo9M,EAAA,EAAAnkN,IAAA,OAAA/D,MAED,SAAM+C,GAiBL,OAfA0lI,GAAA5rH,EAAAqrM,EAAA/pN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKikN,aAAeziN,EAAOyiN,aAE3BjkN,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAK8/K,gBAAkBt+K,EAAOs+K,gBAC9B9/K,KAAK+/K,kBAAoBv+K,EAAOu+K,kBAChC//K,KAAKggL,iBAAmBx+K,EAAOw+K,iBAE/BhgL,KAAKwhL,UAAYhgL,EAAOggL,UACxBxhL,KAAKyhL,mBAAqBjgL,EAAOigL,mBAE1BzhL,IAER,KAAC2mN,CAAA,CA9CqB,CAASprC,IAkD1BqrC,GAAoB,SAAA0H,GAAAtyM,EAAA4qM,EAAA0H,GAAA,IAAAC,EAAA5zM,EAAAisM,GAEzB,SAAAA,EAAapuC,GAAa,IAAAkqD,EAoBI,OApBJj4N,EAAA,KAAAm8M,IAEzB8b,EAAAnU,EAAA1xN,KAAA,OAEK4xN,wBAAyB,EAE9BiU,EAAK99N,KAAO,uBAEZ89N,EAAKr+B,kBAAoB,IAAIv9B,GAC7B47D,EAAKp+B,aAAe,EACpBo+B,EAAKn+B,YAAc,IAEnBm+B,EAAKnmO,IAAM,KAEXmmO,EAAKtjD,SAAW,KAEhBsjD,EAAK5iD,gBAAkB,KACvB4iD,EAAK3iD,kBAAoB,EACzB2iD,EAAK1iD,iBAAmB,EAExB0iD,EAAKtgD,UAAW5J,GAAakqD,CAE9B,CAoBC,OApBAn5N,EAAAq9M,EAAA,EAAApkN,IAAA,OAAA/D,MAED,SAAM+C,GAgBL,OAdA0lI,GAAA5rH,EAAAsrM,EAAAhqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKqkM,kBAAkB3oC,KAAMl6J,EAAO6iM,mBACpCrkM,KAAKskM,aAAe9iM,EAAO8iM,aAC3BtkM,KAAKukM,YAAc/iM,EAAO+iM,YAE1BvkM,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAK8/K,gBAAkBt+K,EAAOs+K,gBAC9B9/K,KAAK+/K,kBAAoBv+K,EAAOu+K,kBAChC//K,KAAKggL,iBAAmBx+K,EAAOw+K,iBAExBhgL,IAER,KAAC4mN,CAAA,CA5CwB,CAASrrC,IAgD7BmzC,GAAS,2DAETC,GAAW,kmCAEjB,SAASC,GAAgB/f,EAAWggB,EAAUC,GAE7C,IAAIC,EAAW,IAAIx6B,GAEby6B,EAAiB,IAAI75D,GAC1B85D,EAAgB,IAAI95D,GAEpB+5D,EAAY,IAAItvD,GAEhBuvD,EAAiB,IAAIxI,GAAmB,CAAE1C,aAAc70D,KACxDggE,EAAoB,IAAIxI,GAExByI,EAAiB,CAAC,EAElBC,EAAkBR,EAAchkB,eAE3B1tB,EAAa,CAAE,EAAGh2B,GAAU,EAAGD,GAAW,EAAGE,IAE7CkoE,EAAyB,IAAIhhC,GAAgB,CAClDI,QAAS,CACR6gC,YAAa,GAEdphC,SAAU,CACTqhC,YAAa,CAAEhxN,MAAO,MACtBixN,WAAY,CAAEjxN,MAAO,IAAI02J,IACzB+T,OAAQ,CAAEzqK,MAAO,IAGlBmwL,aAAc8/B,GACd7/B,eAAgB8/B,KAIXgB,EAA2BJ,EAAuBruN,QACxDyuN,EAAyBhhC,QAAQihC,gBAAkB,EAEnD,IAAMC,EAAgB,IAAInqC,GAC1BmqC,EAAc/8M,aACb,WACA,IAAI0vK,GACH,IAAI3tB,aAAc,EAAI,GAAK,EAAG,GAAK,GAAK,EAAG,IAAO,EAAG,EAAG,KACxD,IAIF,IAAMi7D,EAAiB,IAAI5kC,GAAM2kC,EAAeN,GAE1CviC,EAAQhtL,KA+Hd,SAAS+vN,EAAStsE,EAAQmkB,GAEzB,IAAMkD,EAAW+jD,EAASvrD,OAAQwsD,GAE7BP,EAAuB5gC,QAAQ6gC,cAAgB/rE,EAAOusE,cAE1DT,EAAuB5gC,QAAQ6gC,YAAc/rE,EAAOusE,YACpDL,EAAyBhhC,QAAQ6gC,YAAc/rE,EAAOusE,YAEtDT,EAAuBjwD,aAAc,EACrCqwD,EAAyBrwD,aAAc,GAIhB,OAAnB7b,EAAOwsE,UAEXxsE,EAAOwsE,QAAU,IAAIjvD,GAAmBguD,EAAe9yN,EAAG8yN,EAAe3nN,IAM1EkoN,EAAuBnhC,SAASqhC,YAAYhxN,MAAQglJ,EAAOlnJ,IAAI8kK,QAC/DkuD,EAAuBnhC,SAASshC,WAAWjxN,MAAQglJ,EAAOkpE,QAC1D4C,EAAuBnhC,SAASllB,OAAOzqK,MAAQglJ,EAAOylB,OACtD2lC,EAAUpc,gBAAiBhvC,EAAOwsE,SAClCphB,EAAU1uM,QACV0uM,EAAUqhB,mBAAoBtoD,EAAQ,KAAMkD,EAAUykD,EAAwBO,EAAgB,MAI9FH,EAAyBvhC,SAASqhC,YAAYhxN,MAAQglJ,EAAOwsE,QAAQ5uD,QACrEsuD,EAAyBvhC,SAASshC,WAAWjxN,MAAQglJ,EAAOkpE,QAC5DgD,EAAyBvhC,SAASllB,OAAOzqK,MAAQglJ,EAAOylB,OACxD2lC,EAAUpc,gBAAiBhvC,EAAOlnJ,KAClCsyM,EAAU1uM,QACV0uM,EAAUqhB,mBAAoBtoD,EAAQ,KAAMkD,EAAU6kD,EAA0BG,EAAgB,KAEjG,CAEA,SAASK,EAAkBhuN,EAAQ02K,EAAU3nG,EAAO6xH,EAAkBC,EAAiBp+L,GAEtF,IAAI9M,EAAS,KAEPs4N,GAA0C,IAAvBl/I,EAAM67I,aAA0B5qN,EAAOkuN,uBAAyBluN,EAAOmuN,oBAYhG,GARCx4N,OAFuBsS,IAAnBgmN,EAEKA,GAIyB,IAAvBl/I,EAAM67I,aAA0BqC,EAAoBD,EAIzDtgB,EAAUjD,uBAAiD,IAAzB/yB,EAASsE,aAAwBxgL,MAAM0E,QAASw3K,EAASoE,iBAAuD,IAAnCpE,EAASoE,eAAerlL,QAC3IihL,EAASiH,iBAAkD,IAA/BjH,EAASkH,mBACrClH,EAASuG,UAAYvG,EAAS0I,UAAY,EAAM,CAKlD,IAAMgvC,EAAOz4N,EAAO+jH,KAAM20G,EAAO33C,EAASh9D,KAEtC40G,EAAsBpB,EAAgBkB,QAEbnmN,IAAxBqmN,IAEJA,EAAsB,CAAC,EACvBpB,EAAgBkB,GAASE,GAI1B,IAAIC,EAAiBD,EAAqBD,QAElBpmN,IAAnBsmN,IAEJA,EAAiB54N,EAAOoJ,QACxBuvN,EAAqBD,GAASE,GAI/B54N,EAAS44N,CAEV,CAqCA,OAnCA54N,EAAO6xE,QAAUkvG,EAASlvG,QAC1B7xE,EAAO0pL,UAAY3I,EAAS2I,UAI3B1pL,EAAO+jL,KAFHj3K,IAASsiJ,GAE2B,OAAxB2xB,EAASuE,WAAwBvE,EAASuE,WAAavE,EAASgD,KAIxC,OAAxBhD,EAASuE,WAAwBvE,EAASuE,WAAaA,EAAYvE,EAASgD,MAI7F/jL,EAAOsnL,SAAWvG,EAASuG,SAC3BtnL,EAAOypL,UAAY1I,EAAS0I,UAE5BzpL,EAAOqlL,YAActE,EAASsE,YAC9BrlL,EAAOmlL,eAAiBpE,EAASoE,eACjCnlL,EAAOolL,iBAAmBrE,EAASqE,iBAEnCplL,EAAOgoL,gBAAkBjH,EAASiH,gBAClChoL,EAAOioL,kBAAoBlH,EAASkH,kBACpCjoL,EAAOkoL,iBAAmBnH,EAASmH,iBAEnCloL,EAAO2pL,mBAAqB5I,EAAS4I,mBACrC3pL,EAAOspL,UAAYvI,EAASuI,WAEA,IAAvBlwG,EAAM67I,eAA2D,IAAlCj1N,EAAO22N,yBAE1C32N,EAAOusM,kBAAkBztB,sBAAuB1lG,EAAM+2F,aACtDnwK,EAAOwsM,aAAevB,EACtBjrM,EAAOysM,YAAcvB,GAIflrM,CAER,CAEA,SAAS64N,EAAcxuN,EAAQylK,EAAQgpD,EAAc1/I,EAAOtsE,GAE3D,IAAwB,IAAnBzC,EAAOwnE,QAAZ,CAIA,GAFgBxnE,EAAOwyK,OAAOz8K,KAAM0vK,EAAO+M,UAEzBxyK,EAAOk2K,QAAUl2K,EAAOm2K,QAAUn2K,EAAOo2K,YAEnDp2K,EAAO6zK,YAAgB7zK,EAAO8zK,eAAiBrxK,IAASsiJ,OAAwB/kJ,EAAO+zK,eAAiB64C,EAAS8B,iBAAkB1uN,IAAa,CAEtJA,EAAOyzK,gBAAgBte,iBAAkBs5D,EAAa9oD,mBAAoB3lK,EAAO8lK,aAEjF,IAAM6C,EAAW+jD,EAASvrD,OAAQnhK,GAC5B02K,EAAW12K,EAAO02K,SAExB,GAAKl8K,MAAM0E,QAASw3K,GAInB,IAFA,IAAMmN,EAASlb,EAASkb,OAEdp/K,EAAI,EAAGqmD,EAAK+4H,EAAOpuL,OAAQgP,EAAIqmD,EAAIrmD,IAAO,CAEnD,IAAM6gG,EAAQu+E,EAAQp/K,GAChBmlL,EAAgBlT,EAAUpxE,EAAM0+E,eAEtC,GAAK4F,GAAiBA,EAAcpiH,QAAU,CAE7C,IAAMmnJ,EAAgBX,EAAkBhuN,EAAQ4pL,EAAe76G,EAAO0/I,EAAa/8C,KAAM+8C,EAAa98C,IAAKlvK,GAE3GiqM,EAAUqhB,mBAAoBU,EAAc,KAAM9lD,EAAUgmD,EAAe3uN,EAAQslG,EAEpF,CAED,MAEM,GAAKoxE,EAASlvG,QAAU,CAE9B,IAAMmnJ,EAAgBX,EAAkBhuN,EAAQ02K,EAAU3nG,EAAO0/I,EAAa/8C,KAAM+8C,EAAa98C,IAAKlvK,GAEtGiqM,EAAUqhB,mBAAoBU,EAAc,KAAM9lD,EAAUgmD,EAAe3uN,EAAQ,KAEpF,CAED,CAMD,IAFA,IAAMyb,EAAWzb,EAAOyb,SAEdlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5Ci0N,EAAc/yM,EAAUlhB,GAAKkrK,EAAQgpD,EAAc1/I,EAAOtsE,EAhDrB,CAoDvC,CAjTA5E,KAAK6wL,SAAU,EAEf7wL,KAAK+wN,YAAa,EAClB/wN,KAAKs/J,aAAc,EAEnBt/J,KAAK4E,KAAOoiJ,GAEZhnJ,KAAKwF,OAAS,SAAWspL,EAAQiD,EAAOnqB,GAEvC,IAAuB,IAAlBolB,EAAM6D,WACe,IAArB7D,EAAM+jC,aAA8C,IAAtB/jC,EAAM1tB,cAElB,IAAlBwvB,EAAOl3L,OAAZ,CAEA,IAAMq6L,EAAsB4c,EAAU3c,kBAChC8+B,EAAiBniB,EAAUoiB,oBAC3BC,EAAoBriB,EAAUsiB,uBAE9BC,EAASviB,EAAUjvL,MAGzBwxM,EAAOC,YAAa7pE,IACpB4pE,EAAO16B,QAAQlvJ,MAAM09J,SAAU,EAAG,EAAG,EAAG,GACxCksB,EAAO16B,QAAQnoF,MAAM+iH,SAAS,GAC9BF,EAAOG,gBAAgB,GAIvB,IAAM,IAAI70N,EAAI,EAAGowD,EAAKgiI,EAAOl3L,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEnD,IAAMw0E,EAAQ49G,EAAQpyL,GAChB+mJ,EAASvyE,EAAMuyE,OAErB,QAAgBr5I,IAAXq5I,GAOL,IAA2B,IAAtBA,EAAOstE,aAA+C,IAAvBttE,EAAO6b,YAA3C,CAEA0vD,EAAetzD,KAAMjY,EAAOkpE,SAE5B,IAAM6E,EAAqB/tE,EAAOguE,kBA0BlC,GAxBAzC,EAAex4C,SAAUg7C,GAEzBvC,EAAcvzD,KAAMjY,EAAOkpE,UAEtBqC,EAAe9yN,EAAIozN,GAAmBN,EAAe3nN,EAAIioN,KAExDN,EAAe9yN,EAAIozN,IAEvBL,EAAc/yN,EAAIe,KAAKwf,MAAO6yM,EAAkBkC,EAAmBt1N,GACnE8yN,EAAe9yN,EAAI+yN,EAAc/yN,EAAIs1N,EAAmBt1N,EACxDunJ,EAAOkpE,QAAQzwN,EAAI+yN,EAAc/yN,GAI7B8yN,EAAe3nN,EAAIioN,IAEvBL,EAAc5nN,EAAIpK,KAAKwf,MAAO6yM,EAAkBkC,EAAmBnqN,GACnE2nN,EAAe3nN,EAAI4nN,EAAc5nN,EAAImqN,EAAmBnqN,EACxDo8I,EAAOkpE,QAAQtlN,EAAI4nN,EAAc5nN,IAMf,OAAfo8I,EAAOlnJ,IAAe,CAE1B,IAAMo1N,EAAS3xN,KAAK4E,OAASsiJ,GAAiB,CAAEoX,UAAW9T,GAAe6T,UAAW7T,IAAkB,CAAC,EAExG/G,EAAOlnJ,IAAM,IAAIykK,GAAmBguD,EAAe9yN,EAAG8yN,EAAe3nN,EAAGsqN,GACxEluE,EAAOlnJ,IAAI8kK,QAAQloK,KAAO+3E,EAAM/3E,KAAO,aAEvCsqJ,EAAOmkB,OAAOyoB,wBAEf,CAEAwe,EAAUpc,gBAAiBhvC,EAAOlnJ,KAClCsyM,EAAU1uM,QAIV,IAFA,IAAMyxN,EAAgBnuE,EAAOouE,mBAEnBC,EAAK,EAAGA,EAAKF,EAAeE,IAAQ,CAE7C,IAAM1wD,EAAW3d,EAAOsuE,YAAaD,GAErC5C,EAAUjgM,IACTggM,EAAc/yN,EAAIklK,EAASllK,EAC3B+yN,EAAc5nN,EAAI+5J,EAAS/5J,EAC3B4nN,EAAc/yN,EAAIklK,EAAS95J,EAC3B2nN,EAAc5nN,EAAI+5J,EAASh6J,GAG5BgqN,EAAOhwD,SAAU8tD,GAEjBzrE,EAAOuuE,eAAgB9gJ,EAAO4gJ,GAE9B/C,EAAWtrE,EAAOwuE,aAElBtB,EAAc5+B,EAAOnqB,EAAQnkB,EAAOmkB,OAAQ12F,EAAOlxE,KAAK4E,KAEzD,EAImC,IAA9B6+I,EAAOiuE,oBAA+B1xN,KAAK4E,OAASsiJ,IAExD6oE,EAAStsE,EAAQmkB,GAIlBnkB,EAAO6b,aAAc,CA3EsD,OAL1EvrJ,QAAQk/C,KAAM,wBAAyBie,EAAO,iBAkFhD,CAEA87G,EAAM1tB,aAAc,EAEpBuvC,EAAUpc,gBAAiBR,EAAqB++B,EAAgBE,EA7G/B,CA+GlC,CAwLD,CAEA,SAASgB,GAAYtlK,EAAI0/B,EAAYkqG,GAAe,IAAA27B,EAAAC,EAE7C37B,EAAWD,EAAaC,SA2S9B,IAAM47B,EAAc,IAzSpB,WAEC,IAAIC,GAAS,EAEP9qL,EAAQ,IAAIo4H,GACd2yD,EAAmB,KACjBC,EAAoB,IAAI5yD,GAAS,EAAG,EAAG,EAAG,GAEhD,MAAO,CAEN6yD,QAAS,SAAWC,GAEdH,IAAqBG,GAAeJ,IAExC1lK,EAAG8lK,UAAWA,EAAWA,EAAWA,EAAWA,GAC/CH,EAAmBG,EAIrB,EAEAC,UAAW,SAAWC,GAErBN,EAASM,CAEV,EAEA1tB,SAAU,SAAWh+L,EAAGR,EAAGH,EAAGvK,EAAG2hL,IAEJ,IAAvBA,IAEJz2K,GAAKlL,EAAG0K,GAAK1K,EAAGuK,GAAKvK,GAItBwrC,EAAMvY,IAAK/nB,EAAGR,EAAGH,EAAGvK,IAEuB,IAAtCw2N,EAAkBhmD,OAAQhlI,KAE9BolB,EAAGi4I,WAAY39L,EAAGR,EAAGH,EAAGvK,GACxBw2N,EAAkB92D,KAAMl0H,GAI1B,EAEA+yB,MAAO,WAEN+3J,GAAS,EAETC,EAAmB,KACnBC,EAAkBvjM,KAAO,EAAG,EAAG,EAAG,EAEnC,EAIF,EAiPMqyI,EAAc,IA/OpB,WAEC,IAAIgxD,GAAS,EAETO,EAAmB,KACnBC,EAAmB,KACnBC,EAAoB,KAExB,MAAO,CAENzB,QAAS,SAAW/0C,GAEdA,EAEJ2sC,EAAQ,MAIR1gG,EAAS,KAIX,EAEAiqG,QAAS,SAAWO,GAEdH,IAAqBG,GAAeV,IAExC1lK,EAAGomK,UAAWA,GACdH,EAAmBG,EAIrB,EAEAC,QAAS,SAAW32C,GAEnB,GAAKw2C,IAAqBx2C,EAAY,CAErC,OAASA,GAER,KAAKxzB,GAEJl8F,EAAG0vH,UAAW,KACd,MAED,KAAKvzB,GAEJn8F,EAAG0vH,UAAW,KACd,MAED,KAAKtzB,GAEJp8F,EAAG0vH,UAAW,KACd,MAED,KAAKrzB,GAEJr8F,EAAG0vH,UAAW,KACd,MAED,KAAKpzB,GAEJt8F,EAAG0vH,UAAW,KACd,MAED,KAAKnzB,GAEJv8F,EAAG0vH,UAAW,KACd,MAED,KAAKlzB,GAEJx8F,EAAG0vH,UAAW,KACd,MAED,KAAKjzB,GAEJz8F,EAAG0vH,UAAW,KACd,MAED,QAEC1vH,EAAG0vH,UAAW,KAIhBw2C,EAAmBx2C,CAEpB,CAED,EAEAq2C,UAAW,SAAWC,GAErBN,EAASM,CAEV,EAEA1tB,SAAU,SAAW32F,GAEfwkH,IAAsBxkH,IAE1B3hD,EAAGsmK,WAAY3kH,GACfwkH,EAAoBxkH,EAItB,EAEAh0C,MAAO,WAEN+3J,GAAS,EAETO,EAAmB,KACnBC,EAAmB,KACnBC,EAAoB,IAErB,EAIF,EAsHMxxD,EAAgB,IApHtB,WAEC,IAAI+wD,GAAS,EAETa,EAAqB,KACrBC,EAAqB,KACrBC,EAAoB,KACpBC,EAAyB,KACzBC,EAAqB,KACrBC,EAAsB,KACtBC,EAAsB,KACtBC,EAAsB,KAE1B,MAAO,CAENpC,QAAS,SAAWqC,GAEZrB,IAEDqB,EAEJzK,EAAQ,MAIR1gG,EAAS,MAMZ,EAEAiqG,QAAS,SAAWmB,GAEdT,IAAuBS,GAAiBtB,IAE5C1lK,EAAGgnK,YAAaA,GAChBT,EAAqBS,EAIvB,EAEAX,QAAS,SAAWv2C,EAAaC,EAAYi3C,GAEvCR,IAAuB12C,GACvB22C,IAAsB12C,GACtB22C,IAA2BM,IAE/BhnK,EAAG8vH,YAAaA,EAAaC,EAAYi3C,GAEzCR,EAAqB12C,EACrB22C,EAAoB12C,EACpB22C,EAAyBM,EAI3B,EAEAC,MAAO,SAAWh3C,EAAaC,EAAcC,GAEvCw2C,IAAuB12C,GACvB22C,IAAwB12C,GACxB22C,IAAwB12C,IAE5BnwH,EAAGknK,UAAWj3C,EAAaC,EAAcC,GAEzCw2C,EAAqB12C,EACrB22C,EAAsB12C,EACtB22C,EAAsB12C,EAIxB,EAEA41C,UAAW,SAAWC,GAErBN,EAASM,CAEV,EAEA1tB,SAAU,SAAW3R,GAEfmgC,IAAwBngC,IAE5B3mI,EAAGmnK,aAAcxgC,GACjBmgC,EAAsBngC,EAIxB,EAEAh5H,MAAO,WAEN+3J,GAAS,EAETa,EAAqB,KACrBC,EAAqB,KACrBC,EAAoB,KACpBC,EAAyB,KACzBC,EAAqB,KACrBC,EAAsB,KACtBC,EAAsB,KACtBC,EAAsB,IAEvB,EAIF,EAQMyvJ,EAAc,IAAIpiU,QAClBqiU,EAAe,IAAIriU,QAErBizK,EAAsB,CAAC,EAEvBC,EAA2B,CAAC,EAC5BC,EAAqB,IAAInzK,QACzBozK,EAAqB,GAErBC,EAAiB,KAEjBC,GAAyB,EACzBC,EAAkB,KAClBC,EAAuB,KACvBC,EAAkB,KAClBC,EAAkB,KAClBC,EAA4B,KAC5BC,EAAuB,KACvBC,EAAuB,KACvBC,GAA2B,EAE3BC,EAAmB,KACnBC,EAAkB,KAElBC,EAAmB,KAEnBC,EAA6B,KAC7BC,EAA4B,KAE1BtqB,EAAch+I,EAAGy5I,aAAc,OAEjC8uB,GAAqB,EACrB97N,EAAU,EACR+7N,EAAYxoK,EAAGy5I,aAAc,OAEK,IAAnC+uB,EAAU5oN,QAAS,UAEvBnT,EAAU6X,WAAY,cAAc8E,KAAMo/M,GAAa,IACvDD,EAAuB97N,GAAW,IAEgB,IAAvC+7N,EAAU5oN,QAAS,eAE9BnT,EAAU6X,WAAY,kBAAkB8E,KAAMo/M,GAAa,IAC3DD,EAAuB97N,GAAW,GAInC,IAAIg8N,EAAqB,KACrBC,EAAuB,CAAC,EAEtBC,EAAe3oK,EAAGy5I,aAAc,MAChCmvB,EAAgB5oK,EAAGy5I,aAAc,MAEjCovB,GAAiB,IAAI71D,IAAUjG,UAAW47D,GAC1CG,GAAkB,IAAI91D,IAAUjG,UAAW67D,GAEjD,SAASG,EAAe/wN,EAAMrD,EAAQo8E,GAErC,IAAMj6C,EAAO,IAAI6xE,WAAY,GACvB8rD,EAAUz0G,EAAG+oK,gBAEnB/oK,EAAGgpK,YAAahxN,EAAMy8J,GACtBz0G,EAAGipK,cAAejxN,EAAM,MAAO,MAC/BgoD,EAAGipK,cAAejxN,EAAM,MAAO,MAE/B,IAAM,IAAIlI,EAAI,EAAGA,EAAIihF,EAAOjhF,IAE3BkwD,EAAGkpK,WAAYv0N,EAAS7E,EAAG,EAAG,KAAM,EAAG,EAAG,EAAG,KAAM,KAAMgnC,GAI1D,OAAO29H,CAER,CAEA,IAAM00D,EAAgB,CAAC,EAqBvB,SAAS7M,EAAQ9pL,IAEmB,IAA9B40L,EAAqB50L,KAEzBwtB,EAAGs8J,OAAQ9pL,GACX40L,EAAqB50L,IAAO,EAI9B,CAEA,SAASopF,EAASppF,IAEkB,IAA9B40L,EAAqB50L,KAEzBwtB,EAAG47D,QAASppF,GACZ40L,EAAqB50L,IAAO,EAI9B,CAxCA22L,EAAe,MAASJ,EAAe,KAAM,KAAM,GACnDI,EAAe,OAAUJ,EAAe,MAAO,MAAO,GAItDtD,EAAYntB,SAAU,EAAG,EAAG,EAAG,GAC/B5jC,EAAY4jC,SAAU,GACtB3jC,EAAc2jC,SAAU,GAExBgkB,EAAQ,MACR5nD,EAAY2xD,QAAShqE,IAErB+sE,GAAc,GACdC,EAAarvE,IACbsiE,EAAQ,MAERmI,EAAa7pE,IAwJb,IAAM0uE,GAAYv6M,EAAAw2M,EAAG,CAAC,EACnBrqE,GAAe,OAAKnsI,EAAAw2M,EACpBpqE,GAAoB,OAAKpsI,EAAAw2M,EACzBnqE,GAA2B,OAAKmqE,GAGnC,GAAK17B,EAEJy/B,EAAcjuE,IAAgB,MAC9BiuE,EAAchuE,IAAgB,UAExB,CAEN,IAAMo+C,EAAYh6G,EAAWv8D,IAAK,oBAEf,OAAdu2K,IAEJ4vB,EAAcjuE,IAAgBq+C,EAAU6vB,QACxCD,EAAchuE,IAAgBo+C,EAAU8vB,QAI1C,CAEA,IAAMC,GAAU16M,EAAAy2M,EAAG,CAAC,EACjBjqE,GAAc,GAACxsI,EAAAy2M,EACfhqE,GAAa,GAACzsI,EAAAy2M,EACd/pE,GAAkB,KAAG1sI,EAAAy2M,EACrB7pE,GAAkB,KAAG5sI,EAAAy2M,EACrBvpE,GAA0B,KAAGltI,EAAAy2M,EAC7BzpE,GAAkB,KAAGhtI,EAAAy2M,EACrB3pE,GAAkB,KAAG9sI,EAAAy2M,EACrB9pE,GAA0B,KAAG3sI,EAAAy2M,EAC7B5pE,GAA0B,KAAG7sI,EAAAy2M,EAC7BxpE,GAA0B,KAAGjtI,EAAAy2M,EAC7B1pE,GAA0B,KAAG0pE,GAGhC,SAASf,EAAaz1C,EAAUM,EAAeF,EAAUC,EAAUI,EAAoBF,EAAeC,EAAeuB,GAEpH,GAAK/B,IAAap0B,IAoBlB,IAPgC,IAA3B6sE,IAEJnL,EAAQ,MACRmL,GAAyB,GAIrBz4C,IAAa/zB,GAmFlBw0B,EAAqBA,GAAsBH,EAC3CC,EAAgBA,GAAiBH,EACjCI,EAAgBA,GAAiBH,EAE5BC,IAAkBq4C,GAAwBl4C,IAAuBq4C,IAErE9nK,EAAG0pK,sBAAuBJ,EAAch6C,GAAiBg6C,EAAc75C,IAEvEk4C,EAAuBr4C,EACvBw4C,EAA4Br4C,GAIxBL,IAAaw4C,GAAmBv4C,IAAaw4C,GAAmBt4C,IAAkBw4C,GAAwBv4C,IAAkBw4C,IAEhIhoK,EAAG2pK,kBAAmBF,EAAYr6C,GAAYq6C,EAAYp6C,GAAYo6C,EAAYl6C,GAAiBk6C,EAAYj6C,IAE/Go4C,EAAkBx4C,EAClBy4C,EAAkBx4C,EAClB04C,EAAuBx4C,EACvBy4C,EAAuBx4C,GAIxBk4C,EAAkB14C,EAClBi5C,EAA2B,UA1G1B,GAAKj5C,IAAa04C,GAAmB32C,IAAuBk3C,EAA2B,CAWtF,GATKN,IAAyBzsE,IAAe4sE,IAA8B5sE,KAE1El7F,EAAGsvH,cAAe,OAElBq4C,EAAuBzsE,GACvB4sE,EAA4B5sE,IAIxB61B,EAEJ,OAAS/B,GAER,KAAKn0B,GACJ76F,EAAG2pK,kBAAmB,EAAG,IAAK,EAAG,KACjC,MAED,KAAK7uE,GACJ96F,EAAG4pK,UAAW,EAAG,GACjB,MAED,KAAK7uE,GACJ/6F,EAAG2pK,kBAAmB,EAAG,IAAK,EAAG,GACjC,MAED,KAAK3uE,GACJh7F,EAAG2pK,kBAAmB,EAAG,IAAK,EAAG,KACjC,MAED,QACCxiN,QAAQwN,MAAO,uCAAwCq6J,QAOzD,OAASA,GAER,KAAKn0B,GACJ76F,EAAG2pK,kBAAmB,IAAK,IAAK,EAAG,KACnC,MAED,KAAK7uE,GACJ96F,EAAG4pK,UAAW,IAAK,GACnB,MAED,KAAK7uE,GACJ/6F,EAAG2pK,kBAAmB,EAAG,IAAK,EAAG,GACjC,MAED,KAAK3uE,GACJh7F,EAAG4pK,UAAW,EAAG,KACjB,MAED,QACCziN,QAAQwN,MAAO,uCAAwCq6J,GAO1D44C,EAAkB,KAClBC,EAAkB,KAClBE,EAAuB,KACvBC,EAAuB,KAEvBN,EAAkB14C,EAClBi5C,EAA2Bl3C,CAE5B,OA7FgC,IAA3B02C,IAEJ7rG,EAAS,MACT6rG,GAAyB,EA6H5B,CA0CA,SAAS2B,EAAcpS,GAEjBkR,IAAqBlR,IAEpBA,EAEJh3J,EAAG6pK,UAAW,MAId7pK,EAAG6pK,UAAW,MAIf3B,EAAmBlR,EAIrB,CAEA,SAASqS,EAAaS,GAEhBA,IAAa/vE,IAEjBuiE,EAAQ,MAEHwN,IAAa3B,IAEZ2B,IAAa9vE,GAEjBh6F,EAAG8pK,SAAU,MAEFA,IAAa7vE,GAExBj6F,EAAG8pK,SAAU,MAIb9pK,EAAG8pK,SAAU,QAQfluG,EAAS,MAIVusG,EAAkB2B,CAEnB,CAcA,SAASC,EAAkBr5C,EAAehqC,EAAQ2oE,GAE5C3+B,GAEJ4rC,EAAQ,OAEH+L,IAA+B3hF,GAAU4hF,IAA8BjZ,IAE3ErvJ,EAAG0wH,cAAehqC,EAAQ2oE,GAE1BgZ,EAA6B3hF,EAC7B4hF,EAA4BjZ,IAM7BzzF,EAAS,MAIX,CAmYA,MAAO,CAENkuE,QAAS,CACRlvJ,MAAO6qL,EACP9jH,MAAO+yD,EACPiyB,QAAShyB,GAGV2nD,OAAQA,EACR1gG,QAASA,EAETsuG,gBAvzBD,SAA0Bv1N,EAAQw1N,GAEjC,OAAK9C,EAA0B1yN,KAAaw1N,IAE3CnqK,EAAGkqK,gBAAiBv1N,EAAQw1N,GAE5B9C,EAA0B1yN,GAAWw1N,EAEhCtgC,IAIY,QAAXl1L,IAEJ0yN,EAA0B,OAAU8C,GAIrB,QAAXx1N,IAEJ0yN,EAA0B,OAAU8C,KAM/B,EAMT,EAwxBC7nC,YAtxBD,SAAsBmC,EAAc0lC,GAEnC,IAAI7nC,EAAcilC,EAEd70D,GAAc,EAElB,GAAK+xB,EAWJ,QAPqBjnL,KAFrB8kL,EAAcglC,EAAmBnkM,IAAKgnM,MAIrC7nC,EAAc,GACdglC,EAAmBjlM,IAAK8nM,EAAa7nC,IAIjCmC,EAAavuB,6BAA+B,CAEhD,IAAMvD,EAAW8xB,EAAahwB,QAE9B,GAAK6tB,EAAYt3L,SAAW2nK,EAAS3nK,QAA+B,QAArBs3L,EAAa,GAAgB,CAE3E,IAAM,IAAIxyL,EAAI,EAAGowD,EAAKyyG,EAAS3nK,OAAQ8E,EAAIowD,EAAIpwD,IAE9CwyL,EAAaxyL,GAAM,MAAQA,EAI5BwyL,EAAYt3L,OAAS2nK,EAAS3nK,OAE9B0nK,GAAc,CAEf,CAED,MAE2B,QAArB4vB,EAAa,KAEjBA,EAAa,GAAM,MAEnB5vB,GAAc,QAQU,OAArB4vB,EAAa,KAEjBA,EAAa,GAAM,KAEnB5vB,GAAc,GAMXA,IAECk3B,EAAaC,SAEjB7pI,EAAGsiI,YAAaA,GAIhB5iG,EAAWv8D,IAAK,sBAAuBinM,iBAAkB9nC,GAO5D,EA8sBC+nC,WA5sBD,SAAqB3vB,GAEpB,OAAK8sB,IAAmB9sB,IAEvB16I,EAAGqqK,WAAY3vB,GAEf8sB,EAAiB9sB,GAEV,EAMT,EAgsBC+pB,YAAaA,EACb6F,YAnhBD,SAAsBr+C,EAAUs+C,GAE/Bt+C,EAASgD,OAASx0B,GACf7+B,EAAS,MACT0gG,EAAQ,MAEX,IAAItF,EAAc/qC,EAASgD,OAASz0B,GAC/B+vE,IAAcvT,GAAcA,GAEjCoS,EAAcpS,GAEZ/qC,EAAS+C,WAAan0B,KAA2C,IAAzBoxB,EAASkD,YAChDs1C,EAAa7pE,IACb6pE,EAAax4C,EAAS+C,SAAU/C,EAASqD,cAAerD,EAASmD,SAAUnD,EAASoD,SAAUpD,EAASwD,mBAAoBxD,EAASsD,cAAetD,EAASuD,cAAevD,EAAS8E,oBAEvLrc,EAAY2xD,QAASp6C,EAASyD,WAC9Bhb,EAAYgwD,QAASz4C,EAAS0D,WAC9Bjb,EAAYmxD,QAAS55C,EAAS2D,YAC9B61C,EAAYI,QAAS55C,EAASwE,YAE9B,IAAML,EAAenE,EAASmE,aAC9Bzb,EAAc+vD,QAASt0C,GAClBA,IAEJzb,EAAckxD,QAAS55C,EAAS4D,kBAChClb,EAAc0xD,QAASp6C,EAAS6D,YAAa7D,EAAS8D,WAAY9D,EAAS+D,iBAC3Erb,EAAcsyD,MAAOh7C,EAASgE,YAAahE,EAASiE,aAAcjE,EAASkE,eAI5E45C,EAAkB99C,EAASyE,cAAezE,EAAS0E,oBAAqB1E,EAAS2E,qBAEpD,IAA7B3E,EAAS6E,gBACNwrC,EAAQ,OACR1gG,EAAS,MAEb,EAifCwtG,aAAcA,EACdC,YAAaA,EAEbmB,aA1bD,SAAuBjpN,GAEjBA,IAAU6mN,IAETG,GAAqBvoK,EAAGyqK,UAAWlpN,GAExC6mN,EAAmB7mN,EAIrB,EAibCwoN,iBAAkBA,EAElBpF,eA1ZD,SAAyBpwD,GAEnBA,EAEJ+nD,EAAQ,MAIR1gG,EAAS,KAIX,EAgZCouG,cA5YD,SAAwBC,QAEJzsN,IAAdysN,IAA0BA,EAAY,MAAQjsB,EAAc,GAE5DyqB,IAAuBwB,IAE3BjqK,EAAGgqK,cAAeC,GAClBxB,EAAqBwB,EAIvB,EAkYCjB,YAhYD,SAAsB0B,EAAWC,EAAcV,QAE3BzsN,IAAdysN,IAIHA,EAF2B,OAAvBxB,EAEQ,MAAQzqB,EAAc,EAItByqB,GAMd,IAAImC,EAAelC,EAAsBuB,QAEnBzsN,IAAjBotN,IAEJA,EAAe,CAAE5yN,UAAMwF,EAAWi3J,aAASj3J,GAC3CkrN,EAAsBuB,GAAcW,GAIhCA,EAAa5yN,OAAS0yN,GAAaE,EAAan2D,UAAYk2D,IAE3DlC,IAAuBwB,IAE3BjqK,EAAGgqK,cAAeC,GAClBxB,EAAqBwB,GAItBjqK,EAAGgpK,YAAa0B,EAAWC,GAAgBxB,EAAeuB,IAE1DE,EAAa5yN,KAAO0yN,EACpBE,EAAan2D,QAAUk2D,EAIzB,EAwVCE,cAtVD,WAEC,IAAMD,EAAelC,EAAsBD,QAErBjrN,IAAjBotN,QAAoDptN,IAAtBotN,EAAa5yN,OAE/CgoD,EAAGgpK,YAAa4B,EAAa5yN,KAAM,MAEnC4yN,EAAa5yN,UAAOwF,EACpBotN,EAAan2D,aAAUj3J,EAIzB,EA0UCstN,qBAxUD,WAEC,IAEC9qK,EAAG8qK,qBAAqB53N,MAAO8sD,EAAI3sD,UAEpC,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EA6TC8hW,qBA3TD,WAEC,IAECz2T,EAAGy2T,qBAAqBvjX,MAAO8sD,EAAI3sD,UAEpC,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAgTCu0M,WA1ND,WAEC,IAEClpK,EAAGkpK,WAAWh2N,MAAO8sD,EAAI3sD,UAE1B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EA+MCo2M,WA7MD,WAEC,IAEC/qK,EAAG+qK,WAAW73N,MAAO8sD,EAAI3sD,UAE1B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAmMC+hW,iBAzKD,SAA2BC,EAAej8K,GAEzC,IAAIhjD,EAAU8+N,EAAarzV,IAAKu3K,QAEfl9L,IAAZk6I,IAEJA,EAAU,IAAIvjG,QAEdqiU,EAAan0V,IAAKq4K,EAAShjD,IAI5B,IAAIk/N,EAAal/N,EAAQv0H,IAAKwzV,QAEVn5W,IAAfo5W,IAEJA,EAAa52T,EAAG62T,qBAAsBn8K,EAASi8K,EAAcpqX,MAE7DmrJ,EAAQr1H,IAAKs0V,EAAeC,GAI9B,EAoJCE,oBAlJD,SAA8BH,EAAej8K,GAE5C,IACMk8K,EADUJ,EAAarzV,IAAKu3K,GACPv3K,IAAKwzV,GAE3BJ,EAAYpzV,IAAKwzV,KAAoBC,IAIzC52T,EAAG82T,oBAAqBp8K,EAASk8K,EAAYD,EAAcI,qBAE3DR,EAAYl0V,IAAKs0V,EAAeC,GAIlC,EAqIC5rJ,aA5PD,WAEC,IAEChrK,EAAGgrK,aAAa93N,MAAO8sD,EAAI3sD,UAE5B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAiPCs2M,aA/OD,WAEC,IAECjrK,EAAGirK,aAAa/3N,MAAO8sD,EAAI3sD,UAE5B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAoOCu2M,cAtTD,WAEC,IAEClrK,EAAGkrK,cAAch4N,MAAO8sD,EAAI3sD,UAE7B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EA2SCw2M,cAzSD,WAEC,IAECnrK,EAAGmrK,cAAcj4N,MAAO8sD,EAAI3sD,UAE7B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EA8RCy2M,wBA5RD,WAEC,IAECprK,EAAGorK,wBAAwBl4N,MAAO8sD,EAAI3sD,UAEvC,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAiRCw1N,wBA/QD,WAEC,IAECnqL,EAAGmqL,wBAAwBj3O,MAAO8sD,EAAI3sD,UAEvC,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAqQC2/I,QAzMD,SAAkBA,IAEyB,IAArCu0D,EAAejpD,OAAQtL,KAE3Bt0G,EAAGs0G,QAASA,EAAQhlK,EAAGglK,EAAQ75J,EAAG65J,EAAQ55J,EAAG45J,EAAQ95J,GACrDquN,EAAe/5D,KAAMwF,GAIvB,EAiMCE,SA/LD,SAAmBA,IAE0B,IAAvCs0D,EAAgBlpD,OAAQpL,KAE5Bx0G,EAAGw0G,SAAUA,EAASllK,EAAGklK,EAAS/5J,EAAG+5J,EAAS95J,EAAG85J,EAASh6J,GAC1DsuN,EAAgBh6D,KAAM0F,GAIxB,EAwLC7mG,MA3ID,WAIC3N,EAAG47D,QAAS,MACZ57D,EAAG47D,QAAS,MACZ57D,EAAG47D,QAAS,MACZ57D,EAAG47D,QAAS,OACZ57D,EAAG47D,QAAS,MACZ57D,EAAG47D,QAAS,MACZ57D,EAAG47D,QAAS,OAEZ57D,EAAGsvH,cAAe,OAClBtvH,EAAG4pK,UAAW,EAAG,GACjB5pK,EAAG2pK,kBAAmB,EAAG,EAAG,EAAG,GAE/B3pK,EAAG8lK,WAAW,GAAM,GAAM,GAAM,GAChC9lK,EAAGi4I,WAAY,EAAG,EAAG,EAAG,GAExBj4I,EAAGomK,WAAW,GACdpmK,EAAG0vH,UAAW,KACd1vH,EAAGsmK,WAAY,GAEftmK,EAAGgnK,YAAa,YAChBhnK,EAAG8vH,YAAa,IAAK,EAAG,YACxB9vH,EAAGknK,UAAW,KAAM,KAAM,MAC1BlnK,EAAGmnK,aAAc,GAEjBnnK,EAAG8pK,SAAU,MACb9pK,EAAG6pK,UAAW,MAEd7pK,EAAG0wH,cAAe,EAAG,GAErB1wH,EAAGgqK,cAAe,OAElBhqK,EAAGkqK,gBAAiB,MAAO,OAET,IAAbrgC,IAEJ7pI,EAAGkqK,gBAAiB,MAAO,MAC3BlqK,EAAGkqK,gBAAiB,MAAO,OAI5BlqK,EAAGqqK,WAAY,MAEfrqK,EAAGyqK,UAAW,GAEdzqK,EAAGs0G,QAAS,EAAG,EAAGt0G,EAAGosF,OAAO7qI,MAAOy+C,EAAGosF,OAAO5qI,QAC7Cw+C,EAAGw0G,SAAU,EAAG,EAAGx0G,EAAGosF,OAAO7qI,MAAOy+C,EAAGosF,OAAO5qI,QAI9C4lN,EAAsB,CAAC,EAEvBqB,EAAqB,KACrBC,EAAuB,CAAC,EAExBrB,EAA2B,CAAC,EAC5BC,EAAqB,IAAInzK,QACzBozK,EAAqB,GAErBC,EAAiB,KAEjBC,GAAyB,EACzBC,EAAkB,KAClBC,EAAuB,KACvBC,EAAkB,KAClBC,EAAkB,KAClBC,EAA4B,KAC5BC,EAAuB,KACvBC,EAAuB,KACvBC,GAA2B,EAE3BC,EAAmB,KACnBC,EAAkB,KAElBC,EAAmB,KAEnBC,EAA6B,KAC7BC,EAA4B,KAE5BO,EAAexmM,IAAK,EAAG,EAAG29B,EAAGosF,OAAO7qI,MAAOy+C,EAAGosF,OAAO5qI,QACrDsnN,EAAgBzmM,IAAK,EAAG,EAAG29B,EAAGosF,OAAO7qI,MAAOy+C,EAAGosF,OAAO5qI,QAEtDikN,EAAY93J,QACZ+mG,EAAY/mG,QACZgnG,EAAchnG,OAEf,EAsDD,CAEA,SAAS09J,GAAeC,EAAK5rI,EAAY1sE,EAAOjS,EAAY6oL,EAAc2hC,EAAO9pI,GAAO,IAAA+pI,EAAAC,EAWnF3/E,EATE+9C,EAAWD,EAAaC,SACxBmU,EAAcpU,EAAaoU,YAC3BG,EAAiBvU,EAAauU,eAC9BD,EAAiBtU,EAAasU,eAC9BW,EAAajV,EAAaiV,WAC1B6sB,EAAqBhsI,EAAWl+C,IAAK,wCAA2Ck+C,EAAWv8D,IAAK,wCAA2C,KAC3IwoM,EAAgC,iBAAiBrgO,KAA2B,qBAAdkE,UAA4B,GAAKA,UAAUC,WAEzGm8N,EAAiB,IAAIz3K,QAGrB03K,EAAW,IAAI13K,QAMjB23K,GAAqB,EAEzB,IAECA,EAAgD,qBAApBC,iBAE+B,OAArD,IAAIA,gBAAiB,EAAG,GAAI1/E,WAAY,KAE/C,CAAE,MAAQpgI,GAET,CAID,SAAS+/M,EAAczqN,EAAOC,GAI7B,OAAOsqN,EAEN,IAAIC,gBAAiBxqN,EAAOC,GAAWo3C,GAAiB,SAE1D,CAEA,SAASqzK,EAAa1/E,EAAO2/E,EAAiBC,EAAgBC,GAE7D,IAAI3hF,EAAQ,EAYZ,IARK8B,EAAMhrI,MAAQ6qN,GAAW7/E,EAAM/qI,OAAS4qN,KAE5C3hF,EAAQ2hF,EAAU/7N,KAAKC,IAAKi8I,EAAMhrI,MAAOgrI,EAAM/qI,SAM3CipI,EAAQ,IAAyB,IAApByhF,EAA2B,CAI5C,GAAmC,qBAArB37D,kBAAoChkB,aAAiBgkB,kBACnC,qBAAtBJ,mBAAqC5jB,aAAiB4jB,mBACtC,qBAAhBK,aAA+BjkB,aAAiBikB,YAAgB,CAEzE,IAAM3gJ,EAAQq8M,EAAkBtmE,GAAkBv1J,KAAKwf,MAEjDtO,EAAQsO,EAAO46H,EAAQ8B,EAAMhrI,OAC7BC,EAASqO,EAAO46H,EAAQ8B,EAAM/qI,aAEnBhE,IAAZsuI,IAAwBA,EAAUkgF,EAAczqN,EAAOC,IAI5D,IAAM4qI,EAAS+/E,EAAiBH,EAAczqN,EAAOC,GAAWsqI,EAUhE,OARAM,EAAO7qI,MAAQA,EACf6qI,EAAO5qI,OAASA,EAEA4qI,EAAOC,WAAY,MAC3Ba,UAAWX,EAAO,EAAG,EAAGhrI,EAAOC,GAEvC2F,QAAQk/C,KAAM,uDAAyDkmF,EAAMhrI,MAAQ,IAAMgrI,EAAM/qI,OAAS,SAAWD,EAAQ,IAAMC,EAAS,MAErI4qI,CAER,CAQC,MANK,SAAUG,GAEdplI,QAAQk/C,KAAM,yDAA2DkmF,EAAMhrI,MAAQ,IAAMgrI,EAAM/qI,OAAS,MAItG+qI,CAIT,CAEA,OAAOA,CAER,CAEA,SAAS8/E,EAAgB9/E,GAExB,OAAOkZ,GAAclZ,EAAMhrI,QAAWkkJ,GAAclZ,EAAM/qI,OAE3D,CAWA,SAAS8qN,EAA6B73D,EAAS83D,GAE9C,OAAO93D,EAAQxC,iBAAmBs6D,GACjC93D,EAAQ/C,YAAc9T,IAAiB6W,EAAQ/C,YAAczT,EAE/D,CAEA,SAASuuE,EAAgB73N,GAExB22N,EAAIkB,eAAgB73N,EAErB,CAEA,SAAS83N,EAAmBC,EAAoBC,EAAUC,EAAQ/6D,GAAwC,IAA9BmlN,EAAmB3jX,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAE9F,IAAkB,IAAbw2L,EAAqB,OAAO8iC,EAEjC,GAA4B,OAAvBD,EAA8B,CAElC,QAAmClvN,IAA9B8tN,EAAKoB,GAAqC,OAAOpB,EAAKoB,GAE3DvlN,QAAQk/C,KAAM,2EAA8EqmK,EAAqB,IAElH,CAEA,IAAI36D,EAAiB46D,EAoCrB,OAlCkB,OAAbA,IAEY,OAAXC,IAAkB76D,EAAiB,OACxB,OAAX66D,IAAkB76D,EAAiB,OACxB,OAAX66D,IAAkB76D,EAAiB,QAIvB,QAAb46D,IAEY,OAAXC,IAAkB76D,EAAiB,OACxB,OAAX66D,IAAkB76D,EAAiB,OACxB,OAAX66D,IAAkB76D,EAAiB,QAIvB,OAAb46D,IAEY,OAAXC,IAAkB76D,EAAiB,OACxB,OAAX66D,IAAkB76D,EAAiB,OACxB,OAAX66D,IAAkB76D,EAAmBF,IAAavP,KAAwC,IAAxB00N,EAAkC,MAAQ,OACjG,QAAXpqJ,IAAmB76D,EAAiB,OACzB,QAAX66D,IAAmB76D,EAAiB,QAIlB,QAAnBA,GAA+C,QAAnBA,GACb,QAAnBA,GAA+C,QAAnBA,GACT,QAAnBA,GAA+C,QAAnBA,GAE5BryE,EAAWv8D,IAAK,0BAIV4uI,CAER,CAEA,SAAS86D,EAAcp4D,EAASloB,EAAOggF,GAEtC,OAA8D,IAAzDD,EAA6B73D,EAAS83D,IAA6B93D,EAAQq4D,sBAAwBr4D,EAAQ/C,YAAc9T,IAAiB6W,EAAQ/C,YAAczT,GAE7J5tJ,KAAKqzM,KAAMrzM,KAAKC,IAAKi8I,EAAMhrI,MAAOgrI,EAAM/qI,SAAa,OAE7BhE,IAApBi3J,EAAQ3C,SAAyB2C,EAAQ3C,QAAQ9mK,OAAS,EAI9DypK,EAAQ3C,QAAQ9mK,OAEZypK,EAAQs4D,qBAAuBh9N,MAAM0E,QAASggK,EAAQloB,OAE1DA,EAAMulB,QAAQ9mK,OAMd,CAIT,CAIA,SAASgiO,EAAgBnzN,GAExB,OAAKA,IAAM+jJ,IAAiB/jJ,IAAMgkJ,IAA8BhkJ,IAAMkkJ,GAE9D,KAID,IAER,CAIA,SAASyiD,EAAkB7kK,GAE1B,IAAM84H,EAAU94H,EAAMhnC,OAEtB8/J,EAAQnpI,oBAAqB,UAAWk1K,GAwBzC,SAA4B/rC,GAE3B,IAAMw4D,EAAoBlsN,EAAWoiB,IAAKsxI,GAE1C,QAAuCj3J,IAAlCyvN,EAAkBC,YAA4B,OAInD,IAAMt4N,EAAS6/J,EAAQ7/J,OACjBu4N,EAAgBtB,EAAS1oM,IAAKvuB,GAEpC,GAAKu4N,EAAgB,CAEpB,IAAMxC,EAAewC,EAAeF,EAAkBG,YACtDzC,EAAa9R,YAImB,IAA3B8R,EAAa9R,WAEjBwU,EAAe54D,GAM6B,IAAxC9iK,OAAOqD,KAAMm4N,GAAgBniO,QAEjC6gO,EAASj7L,OAAQh8B,EAInB,CAEAmM,EAAWizD,OAAQygG,EAEpB,CA1DC64D,CAAmB74D,GAEdA,EAAQknD,gBAEZiQ,EAAeh7L,OAAQ6jI,EAIzB,CAEA,SAAS84D,EAAuB5xL,GAE/B,IAAM8oJ,EAAe9oJ,EAAMhnC,OAE3B8vL,EAAan5J,oBAAqB,UAAWiiM,GA2D9C,SAAiC9oC,GAEhC,IAAMhwB,EAAUgwB,EAAahwB,QAEvB+4D,EAAyBzsN,EAAWoiB,IAAKshK,GACzCwoC,EAAoBlsN,EAAWoiB,IAAKsxI,QAEAj3J,IAArCyvN,EAAkBQ,iBAEtBnC,EAAI+B,cAAeJ,EAAkBQ,gBAErChsI,EAAK+lH,OAAO70C,YAIR8xB,EAAa7vB,cAEjB6vB,EAAa7vB,aAAaE,UAI3B,GAAK2vB,EAAaE,wBAEjB,IAAM,IAAI70L,EAAI,EAAGA,EAAI,EAAGA,IAEvBw7N,EAAIoC,kBAAmBF,EAAuBG,mBAAoB79N,IAC7D09N,EAAuBI,oBAAqBtC,EAAIuC,mBAAoBL,EAAuBI,mBAAoB99N,QAI/G,CAMN,GAJAw7N,EAAIoC,kBAAmBF,EAAuBG,oBACzCH,EAAuBI,oBAAqBtC,EAAIuC,mBAAoBL,EAAuBI,oBAC3FJ,EAAuBM,gCAAiCxC,EAAIoC,kBAAmBF,EAAuBM,gCAEtGN,EAAuBO,yBAE3B,IAAM,IAAIj+N,EAAI,EAAGA,EAAI09N,EAAuBO,yBAAyB/iO,OAAQ8E,IAEvE09N,EAAuBO,yBAA0Bj+N,IAAMw7N,EAAIuC,mBAAoBL,EAAuBO,yBAA0Bj+N,IAMlI09N,EAAuBQ,0BAA2B1C,EAAIuC,mBAAoBL,EAAuBQ,yBAEvG,CAEA,GAAKvpC,EAAavuB,6BAEjB,IAAM,IAAIpmK,EAAI,EAAGowD,EAAKu0G,EAAQzpK,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEpD,IAAMm+N,EAAuBltN,EAAWoiB,IAAKsxI,EAAS3kK,IAEjDm+N,EAAqBR,iBAEzBnC,EAAI+B,cAAeY,EAAqBR,gBAExChsI,EAAK+lH,OAAO70C,YAIb5xJ,EAAWizD,OAAQygG,EAAS3kK,GAE7B,CAIDiR,EAAWizD,OAAQygG,GACnB1zJ,EAAWizD,OAAQywH,EAEpB,CAlICypC,CAAwBzpC,EAEzB,CA0CA,SAAS4oC,EAAe54D,GAEvB,IAAMw4D,EAAoBlsN,EAAWoiB,IAAKsxI,GAC1C62D,EAAI+B,cAAeJ,EAAkBQ,gBAErC,IAAM74N,EAAS6/J,EAAQ7/J,cACDi3N,EAAS1oM,IAAKvuB,GACdq4N,EAAkBG,YAExC3rI,EAAK+lH,OAAO70C,UAEb,CA+EA,IAAIw7D,EAAe,EAiDnB,SAASxgB,EAAcl5C,EAAS25D,GAE/B,IAAMnB,EAAoBlsN,EAAWoiB,IAAKsxI,GAI1C,GAFKA,EAAQknD,gBAu7Cd,SAA6BlnD,GAE5B,IAAM+0B,EAAQ/nG,EAAK7oF,OAAO4wL,MAIrBoiC,EAAezoM,IAAKsxI,KAAc+0B,IAEtCoiC,EAAevpM,IAAKoyI,EAAS+0B,GAC7B/0B,EAAQiC,SAIV,CAp8C+B23D,CAAoB55D,IAEX,IAAlCA,EAAQlC,uBAAmCkC,EAAQhoK,QAAU,GAAKwgO,EAAkBqB,YAAc75D,EAAQhoK,QAAU,CAExH,IAAM8/I,EAAQkoB,EAAQloB,MAEtB,GAAe,OAAVA,EAEJplI,QAAQk/C,KAAM,+EAER,KAAwB,IAAnBkmF,EAAMjmD,SAOjB,YADAioI,EAAetB,EAAmBx4D,EAAS25D,GAJ3CjnN,QAAQk/C,KAAM,yEAOf,CAED,CAEArzC,EAAMg2M,YAAa,KAAMiE,EAAkBQ,eAAgB,MAAQW,EAEpE,CA+CA,IAAMI,GAAYz/M,EAAAy8M,EAAG,CAAC,EACnB/tE,GAAkB,OAAK1uI,EAAAy8M,EACvB9tE,GAAuB,OAAK3uI,EAAAy8M,EAC5B7tE,GAA0B,OAAK6tE,GAG5BiD,GAAU1/M,EAAA08M,EAAG,CAAC,EACjB7tE,GAAiB,MAAI7uI,EAAA08M,EACrB5tE,GAA8B,MAAI9uI,EAAA08M,EAClC1tE,GAA6B,MAAIhvI,EAAA08M,EAEjCxtE,GAAgB,MAAIlvI,EAAA08M,EACpBvtE,GAA6B,MAAInvI,EAAA08M,EACjCrtE,GAA4B,MAAIqtE,GAGnC,SAASiD,EAAsBC,EAAal6D,EAAS83D,GA4CpD,GA1CKA,GAEJjB,EAAIrC,cAAe0F,EAAa,MAAOH,EAAc/5D,EAAQlD,QAC7D+5D,EAAIrC,cAAe0F,EAAa,MAAOH,EAAc/5D,EAAQjD,QAExC,QAAhBm9D,GAAyC,QAAhBA,GAE7BrD,EAAIrC,cAAe0F,EAAa,MAAOH,EAAc/5D,EAAQS,QAI9Do2D,EAAIrC,cAAe0F,EAAa,MAAOF,EAAYh6D,EAAQhD,YAC3D65D,EAAIrC,cAAe0F,EAAa,MAAOF,EAAYh6D,EAAQ/C,cAI3D45D,EAAIrC,cAAe0F,EAAa,MAAO,OACvCrD,EAAIrC,cAAe0F,EAAa,MAAO,OAElB,QAAhBA,GAAyC,QAAhBA,GAE7BrD,EAAIrC,cAAe0F,EAAa,MAAO,OAInCl6D,EAAQlD,QAAU7T,IAAuB+W,EAAQjD,QAAU9T,IAE/Dv2I,QAAQk/C,KAAM,iIAIfilK,EAAIrC,cAAe0F,EAAa,MAAO3B,EAAgBv4D,EAAQhD,YAC/D65D,EAAIrC,cAAe0F,EAAa,MAAO3B,EAAgBv4D,EAAQ/C,YAE1D+C,EAAQ/C,YAAc9T,IAAiB6W,EAAQ/C,YAAczT,IAEjE92I,QAAQk/C,KAAM,qIAM4C,IAAvDq5B,EAAWl+C,IAAK,kCAA8C,CAElE,IAAMk4J,EAAYh6G,EAAWv8D,IAAK,kCAElC,GAAKsxI,EAAQz8J,OAAS4mJ,KAA8D,IAAjDl/D,EAAWl+C,IAAK,4BAAyC,OAC5F,IAAkB,IAAbqoJ,GAAwBp1B,EAAQz8J,OAAS6mJ,KAAuE,IAAtDn/D,EAAWl+C,IAAK,iCAAgD,QAE1HizH,EAAQ7C,WAAa,GAAK7wJ,EAAWoiB,IAAKsxI,GAAUm6D,uBAExDtD,EAAIuD,cAAeF,EAAaj1B,EAAUo1B,2BAA4Bz+N,KAAKiuC,IAAKm2H,EAAQ7C,WAAYg4B,EAAa8U,qBACjH39L,EAAWoiB,IAAKsxI,GAAUm6D,oBAAsBn6D,EAAQ7C,WAI1D,CAED,CAEA,SAASm9D,EAAa9B,EAAmBx4D,GAExC,IAAIu6D,GAAc,OAEqBxxN,IAAlCyvN,EAAkBC,cAEtBD,EAAkBC,aAAc,EAEhCz4D,EAAQz9J,iBAAkB,UAAWwpM,IAMtC,IAAM5rM,EAAS6/J,EAAQ7/J,OACnBu4N,EAAgBtB,EAAS1oM,IAAKvuB,QAEX4I,IAAlB2vN,IAEJA,EAAgB,CAAC,EACjBtB,EAASxpM,IAAKztB,EAAQu4N,IAMvB,IAAM8B,EA7MP,SAA6Bx6D,GAE5B,IAAMt+J,EAAQ,GAiBd,OAfAA,EAAMjG,KAAMukK,EAAQlD,OACpBp7J,EAAMjG,KAAMukK,EAAQjD,OACpBr7J,EAAMjG,KAAMukK,EAAQS,OAAS,GAC7B/+J,EAAMjG,KAAMukK,EAAQhD,WACpBt7J,EAAMjG,KAAMukK,EAAQ/C,WACpBv7J,EAAMjG,KAAMukK,EAAQ7C,YACpBz7J,EAAMjG,KAAMukK,EAAQ1C,gBACpB57J,EAAMjG,KAAMukK,EAAQ9C,QACpBx7J,EAAMjG,KAAMukK,EAAQz8J,MACpB7B,EAAMjG,KAAMukK,EAAQxC,iBACpB97J,EAAMjG,KAAMukK,EAAQvC,kBACpB/7J,EAAMjG,KAAMukK,EAAQtC,OACpBh8J,EAAMjG,KAAMukK,EAAQrC,iBACpBj8J,EAAMjG,KAAMukK,EAAQ5C,UAEb17J,EAAM1F,MAEd,CAwLyBy+N,CAAoBz6D,GAE5C,GAAKw6D,IAAoBhC,EAAkBG,WAAa,MAIb5vN,IAArC2vN,EAAe8B,KAInB9B,EAAe8B,GAAoB,CAClCx6D,QAAS62D,EAAIvC,gBACblQ,UAAW,GAGZp3H,EAAK+lH,OAAO70C,WAKZq8D,GAAc,GAIf7B,EAAe8B,GAAkBpW,YAKjC,IAAM8R,EAAewC,EAAeF,EAAkBG,iBAEhC5vN,IAAjBmtN,IAEJwC,EAAeF,EAAkBG,YAAavU,YAEd,IAA3B8R,EAAa9R,WAEjBwU,EAAe54D,IAQjBw4D,EAAkBG,WAAa6B,EAC/BhC,EAAkBQ,eAAiBN,EAAe8B,GAAkBx6D,OAErE,CAEA,OAAOu6D,CAER,CAEA,SAAST,EAAetB,EAAmBx4D,EAAS25D,GAEnD,IAAIO,EAAc,MAEbl6D,EAAQU,oBAAsBV,EAAQwiN,4BAA2BtoJ,EAAc,OAC/El6D,EAAQiB,kBAAkBi5D,EAAc,OAE7C,IAAMK,EAAcD,EAAa9B,EAAmBx4D,GAC9C7/J,EAAS6/J,EAAQ7/J,OAEvBoe,EAAMg2M,YAAa2F,EAAa1B,EAAkBQ,eAAgB,MAAQW,GAE1E,IAAM8oJ,EAAmBn2W,EAAWoiB,IAAKvuB,GAEzC,GAAKA,EAAOnI,UAAYyqX,EAAiB5oJ,YAA6B,IAAhBU,EAAuB,CAE5Eh8M,EAAMg3M,cAAe,MAAQoE,GAE7B9C,EAAI8D,YAAa,MAAO36D,EAAQtC,OAChCm5D,EAAI8D,YAAa,MAAO36D,EAAQvC,kBAChCo5D,EAAI8D,YAAa,KAAM36D,EAAQrC,iBAC/Bk5D,EAAI8D,YAAa,MAAO,GAExB,IAYIC,EAZEnD,EAlkBR,SAAiCz3D,GAEhC,OAAKo1B,IAEIp1B,EAAQlD,QAAU7T,IAAuB+W,EAAQjD,QAAU9T,IACjE+W,EAAQ/C,YAAc9T,IAAiB6W,EAAQ/C,YAAczT,GAEjE,CA2jB0BqxE,CAAwB76D,KAAiD,IAApC43D,EAAgB53D,EAAQloB,OACjFA,EAAQ0/E,EAAax3D,EAAQloB,MAAO2/E,GAAiB,EAAOhuB,GAG1DquB,EAAeF,EAFrB9/E,EAAQgjF,EAAkB96D,EAASloB,KAEas9C,EAC/C8iC,EAAWpB,EAAMv9D,QAASyG,EAAQ9C,OAAQ8C,EAAQ5C,UAE/C+6D,EAASrB,EAAMv9D,QAASyG,EAAQz8J,MACnCw3N,EAAmB/C,EAAmBh4D,EAAQ1C,eAAgB46D,EAAUC,EAAQn4D,EAAQ5C,SAAU4C,EAAQknD,gBAE3G+S,EAAsBC,EAAal6D,EAAS83D,GAG5C,IAAMz6D,EAAU2C,EAAQ3C,QAElB29D,EAAkB5lC,IAAuC,IAA3Bp1B,EAAQknD,eACtC+T,OAAkDlyN,IAA/B05W,EAAiB5oJ,YAA+C,IAAhBU,EACnEpnN,EAASilN,EAAcp4D,EAASloB,EAAOggF,GAE7C,GAAK93D,EAAQk7D,eAIZH,EAAmB,KAEd3lC,EAIH2lC,EAFI/6D,EAAQz8J,OAAS4mJ,GAEF,MAER6V,EAAQz8J,OAAS2mJ,GAET,MAER8V,EAAQz8J,OAASgnJ,GAET,MAIA,MAMfyV,EAAQz8J,OAAS4mJ,IAErBz3I,QAAQwN,MAAO,gEAQZ8/I,EAAQ9C,SAAWrS,IAAoC,OAArBkwE,GAKjC/6D,EAAQz8J,OAASymJ,IAAqBgW,EAAQz8J,OAAS2mJ,KAE3Dx3I,QAAQk/C,KAAM,+FAEdouG,EAAQz8J,KAAO2mJ,GACfiuE,EAASrB,EAAMv9D,QAASyG,EAAQz8J,OAM7By8J,EAAQ9C,SAAWpS,IAA2C,OAArBiwE,IAI7CA,EAAmB,MAKd/6D,EAAQz8J,OAASgnJ,KAErB73I,QAAQk/C,KAAM,oFAEdouG,EAAQz8J,KAAOgnJ,GACf4tE,EAASrB,EAAMv9D,QAASyG,EAAQz8J,QAQ7B03N,IAECD,EAEJz8M,EAAMg4M,aAAc,KAAM,EAAGwE,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,QAIlEwR,EAAMk2M,WAAY,KAAM,EAAGsG,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ,EAAGmrN,EAAUC,EAAQ,YAMzF,GAAKn4D,EAAQ3D,cAMnB,GAAKgB,EAAQ9mK,OAAS,GAAKuhO,EAAe,CAEpCkD,GAAiBC,GAErB18M,EAAMg4M,aAAc,KAAMpjN,EAAQ4nN,EAAkB19D,EAAS,GAAIvwJ,MAAOuwJ,EAAS,GAAItwJ,QAItF,IAAM,IAAI1R,EAAI,EAAGowD,EAAK4xG,EAAQ9mK,OAAQ8E,EAAIowD,EAAIpwD,IAE7Cu/N,EAASv9D,EAAShiK,GAEb2/N,EAEJz8M,EAAMk4M,cAAe,KAAMp7N,EAAG,EAAG,EAAGu/N,EAAO9tN,MAAO8tN,EAAO7tN,OAAQmrN,EAAUC,EAAQyC,EAAOv4L,MAI1F9jB,EAAMk2M,WAAY,KAAMp5N,EAAG0/N,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ,EAAGmrN,EAAUC,EAAQyC,EAAOv4L,MAMxG29H,EAAQxC,iBAAkB,CAE3B,MAEMw9D,GAECC,GAEJ18M,EAAMg4M,aAAc,KAAMpjN,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,QAIxEwR,EAAMk4M,cAAe,KAAM,EAAG,EAAG,EAAG3+E,EAAMhrI,MAAOgrI,EAAM/qI,OAAQmrN,EAAUC,EAAQrgF,EAAMz1G,OAIvF9jB,EAAMk2M,WAAY,KAAM,EAAGsG,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ,EAAGmrN,EAAUC,EAAQrgF,EAAMz1G,WAM/F,GAAK29H,EAAQs4D,oBAEnB,GAAKt4D,EAAQwiN,yBAA2B,CAElCxnJ,GAAiBC,GAErB18M,EAAMi4M,aAAc,MAAOrjN,EAAQ4nN,EAAkB19D,EAAS,GAAIvwJ,MAAOuwJ,EAAS,GAAItwJ,OAAQ+qI,EAAM5qC,OAIrG,IAAM,IAAI7xG,EAAI,EAAGowD,EAAK4xG,EAAQ9mK,OAAQ8E,EAAIowD,EAAIpwD,IAE7Cu/N,EAASv9D,EAAShiK,GAEb2kK,EAAQ9C,SAAWxS,GAEL,OAAbwtE,EAEC8C,EAEJz8M,EAAMm3N,wBAAyB,MAAOr6O,EAAG,EAAG,EAAG,EAAGu/N,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ+qI,EAAM5qC,MAAOgrH,EAAU0C,EAAOv4L,KAAM,EAAG,GAItH9jB,EAAMyjW,qBAAsB,MAAO3mX,EAAG0/N,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ+qI,EAAM5qC,MAAO,EAAG0tH,EAAOv4L,KAAM,EAAG,GAMtH3vB,QAAQk/C,KAAM,kGAMVopK,EAEJz8M,EAAMm4M,cAAe,MAAOr7N,EAAG,EAAG,EAAG,EAAGu/N,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ+qI,EAAM5qC,MAAOgrH,EAAUC,EAAQyC,EAAOv4L,MAI3G9jB,EAAM+3M,WAAY,MAAOj7N,EAAG0/N,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ+qI,EAAM5qC,MAAO,EAAGgrH,EAAUC,EAAQyC,EAAOv4L,KAQxH,KAAO,CAED24L,GAAiBC,GAErB18M,EAAMg4M,aAAc,KAAMpjN,EAAQ4nN,EAAkB19D,EAAS,GAAIvwJ,MAAOuwJ,EAAS,GAAItwJ,QAItF,IAAM,IAAI1R,EAAI,EAAGowD,EAAK4xG,EAAQ9mK,OAAQ8E,EAAIowD,EAAIpwD,IAE7Cu/N,EAASv9D,EAAShiK,GAEb2kK,EAAQ9C,SAAWxS,GAEL,OAAbwtE,EAEC8C,EAEJz8M,EAAMo4M,wBAAyB,KAAMt7N,EAAG,EAAG,EAAGu/N,EAAO9tN,MAAO8tN,EAAO7tN,OAAQmrN,EAAU0C,EAAOv4L,MAI5F9jB,EAAM83M,qBAAsB,KAAMh7N,EAAG0/N,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ,EAAG6tN,EAAOv4L,MAM/F3vB,QAAQk/C,KAAM,kGAMVopK,EAEJz8M,EAAMk4M,cAAe,KAAMp7N,EAAG,EAAG,EAAGu/N,EAAO9tN,MAAO8tN,EAAO7tN,OAAQmrN,EAAUC,EAAQyC,EAAOv4L,MAI1F9jB,EAAMk2M,WAAY,KAAMp5N,EAAG0/N,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ,EAAGmrN,EAAUC,EAAQyC,EAAOv4L,KAQ1G,MAEM,GAAK29H,EAAQU,mBAEds6D,GAECC,GAEJ18M,EAAMi4M,aAAc,MAAOrjN,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,OAIvF3uF,EAAMm4M,cAAe,MAAO,EAAG,EAAG,EAAG,EAAG5+E,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,MAAOgrH,EAAUC,EAAQrgF,EAAMz1G,OAIxG9jB,EAAM+3M,WAAY,MAAO,EAAGyE,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,MAAO,EAAGgrH,EAAUC,EAAQrgF,EAAMz1G,WAI5G,GAAK29H,EAAQiB,gBAEd+5D,GAECC,GAEJ18M,EAAMi4M,aAAc,MAAOrjN,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,OAIvF3uF,EAAMm4M,cAAe,MAAO,EAAG,EAAG,EAAG,EAAG5+E,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,MAAOgrH,EAAUC,EAAQrgF,EAAMz1G,OAIxG9jB,EAAM+3M,WAAY,MAAO,EAAGyE,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,MAAO,EAAGgrH,EAAUC,EAAQrgF,EAAMz1G,WAI5G,GAAK29H,EAAQq4D,sBAEnB,GAAK4C,EAEJ,GAAKD,EAEJz8M,EAAMg4M,aAAc,KAAMpjN,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,aAMvE,IAFA,IAAID,EAAQgrI,EAAMhrI,MAAOC,EAAS+qI,EAAM/qI,OAE9B1R,EAAI,EAAGA,EAAI8X,EAAQ9X,IAE5BkjB,EAAMk2M,WAAY,KAAMp5N,EAAG0/N,EAAkBjuN,EAAOC,EAAQ,EAAGmrN,EAAUC,EAAQ,MAEjFrrN,IAAU,EACVC,IAAW,OAgBd,GAAKswJ,EAAQ9mK,OAAS,GAAKuhO,EAAe,CAEpCkD,GAAiBC,GAErB18M,EAAMg4M,aAAc,KAAMpjN,EAAQ4nN,EAAkB19D,EAAS,GAAIvwJ,MAAOuwJ,EAAS,GAAItwJ,QAItF,IAAM,IAAI1R,EAAI,EAAGowD,EAAK4xG,EAAQ9mK,OAAQ8E,EAAIowD,EAAIpwD,IAE7Cu/N,EAASv9D,EAAShiK,GAEb2/N,EAEJz8M,EAAMk4M,cAAe,KAAMp7N,EAAG,EAAG,EAAG68N,EAAUC,EAAQyC,GAItDr8M,EAAMk2M,WAAY,KAAMp5N,EAAG0/N,EAAkB7C,EAAUC,EAAQyC,GAMjE56D,EAAQxC,iBAAkB,CAE3B,MAEMw9D,GAECC,GAEJ18M,EAAMg4M,aAAc,KAAMpjN,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,QAIxEwR,EAAMk4M,cAAe,KAAM,EAAG,EAAG,EAAGyB,EAAUC,EAAQrgF,IAItDv5H,EAAMk2M,WAAY,KAAM,EAAGsG,EAAkB7C,EAAUC,EAAQrgF,GAQ7D+/E,EAA6B73D,EAAS83D,IAE1CC,EAAgBmC,GAIjBuoJ,EAAiB5oJ,UAAY15N,EAAOnI,QAE/BgoK,EAAQnC,UAAWmC,EAAQnC,SAAUmC,EAE3C,CAEAw4D,EAAkBqB,UAAY75D,EAAQhoK,OAEvC,CAoNA,SAASmjO,EAAyBzF,EAAa1lC,EAAchwB,EAASo7D,EAAYC,GAEjF,IAAMnD,EAAWpB,EAAMv9D,QAASyG,EAAQ9C,OAAQ8C,EAAQ5C,UAClD+6D,EAASrB,EAAMv9D,QAASyG,EAAQz8J,MAChCw3N,EAAmB/C,EAAmBh4D,EAAQ1C,eAAgB46D,EAAUC,EAAQn4D,EAAQ5C,UAC/D9wJ,EAAWoiB,IAAKshK,GAEjBsrC,wBAEN,QAAlBD,GAA6C,QAAlBA,EAE/B98M,EAAM+3M,WAAY+E,EAAe,EAAGN,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,OAAQijL,EAAa9iF,MAAO,EAAGgrH,EAAUC,EAAQ,MAIxI55M,EAAMk2M,WAAY4G,EAAe,EAAGN,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,OAAQ,EAAGmrN,EAAUC,EAAQ,OAMtH55M,EAAMk3M,gBAAiB,MAAOC,GAEzB6F,EAAoBvrC,GAExBinC,EAAmBuE,mCAAoC,MAAOJ,EAAYC,EAAe/uN,EAAWoiB,IAAKsxI,GAAUg5D,eAAgB,EAAGyC,EAAwBzrC,KAEjI,OAAlBqrC,GAA4BA,GAAiB,OAASA,GAAiB,QAElFxE,EAAI6E,qBAAsB,MAAON,EAAYC,EAAe/uN,EAAWoiB,IAAKsxI,GAAUg5D,eAAgB,GAIvGz6M,EAAMk3M,gBAAiB,MAAO,KAE/B,CAIA,SAASkG,EAA0BC,EAAc5rC,EAAc6rC,GAI9D,GAFAhF,EAAIiF,iBAAkB,MAAOF,GAExB5rC,EAAa/vB,cAAiB+vB,EAAa9vB,cAAgB,CAE/D,IAAI66D,EAAmB,MAEvB,GAAKc,GAAiBN,EAAoBvrC,GAAiB,CAE1D,IAAM7vB,EAAe6vB,EAAa7vB,aAE7BA,GAAgBA,EAAa+6D,iBAE5B/6D,EAAa58J,OAAS4mJ,GAE1B4wE,EAAmB,MAER56D,EAAa58J,OAAS2mJ,KAEjC6wE,EAAmB,QAMrB,IAAM36D,EAAUq7D,EAAwBzrC,GAEnCurC,EAAoBvrC,GAExBinC,EAAmB8E,kCAAmC,MAAO37D,EAAS26D,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,QAIzH8pN,EAAImF,+BAAgC,MAAO57D,EAAS26D,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,OAIzG,MAEC8pN,EAAIoF,oBAAqB,MAAOlB,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,QAIpF8pN,EAAIqF,wBAAyB,MAAO,MAAO,MAAON,EAEnD,MAAO,GAAK5rC,EAAa/vB,aAAe+vB,EAAa9vB,cAAgB,CAEpE,IAAME,EAAUq7D,EAAwBzrC,GAEnC6rC,IAAwD,IAAvCN,EAAoBvrC,GAEzC6mC,EAAImF,+BAAgC,MAAO57D,EAAS,MAAO4vB,EAAaljL,MAAOkjL,EAAajjL,QAEjFwuN,EAAoBvrC,GAE/BinC,EAAmB8E,kCAAmC,MAAO37D,EAAS,MAAO4vB,EAAaljL,MAAOkjL,EAAajjL,QAI9G8pN,EAAIoF,oBAAqB,MAAO,MAAOjsC,EAAaljL,MAAOkjL,EAAajjL,QAKzE8pN,EAAIqF,wBAAyB,MAAO,MAAO,MAAON,EAEnD,MAIC,IAFA,IAAM19D,GAAyD,IAA9C8xB,EAAavuB,6BAAwCuuB,EAAahwB,QAAU,CAAEgwB,EAAahwB,SAElG3kK,EAAI,EAAGA,EAAI6iK,EAAS3nK,OAAQ8E,IAAO,CAE5C,IAAM2kK,EAAU9B,EAAU7iK,GAEpB68N,EAAWpB,EAAMv9D,QAASyG,EAAQ9C,OAAQ8C,EAAQ5C,UAClD+6D,EAASrB,EAAMv9D,QAASyG,EAAQz8J,MAChCw3N,EAAmB/C,EAAmBh4D,EAAQ1C,eAAgB46D,EAAUC,EAAQn4D,EAAQ5C,UACxFgD,EAAUq7D,EAAwBzrC,GAEnC6rC,IAAwD,IAAvCN,EAAoBvrC,GAEzC6mC,EAAImF,+BAAgC,MAAO57D,EAAS26D,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,QAE5FwuN,EAAoBvrC,GAE/BinC,EAAmB8E,kCAAmC,MAAO37D,EAAS26D,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,QAIzH8pN,EAAIoF,oBAAqB,MAAOlB,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,OAIrF,CAID8pN,EAAIiF,iBAAkB,MAAO,KAE9B,CAiEA,SAASK,EAAwBnsC,GAEhC,IAAM+oC,EAAyBzsN,EAAWoiB,IAAKshK,GACzCosC,GAAoD,IAAzCpsC,EAAaE,wBAE9B,GAAKF,EAAa7vB,eAAkB44D,EAAuBsD,0BAA4B,CAEtF,GAAKD,EAAS,MAAM,IAAI3/N,MAAO,6DArEjC,SAA4Bi5N,EAAa1lC,GAGxC,GADiBA,GAAgBA,EAAaE,wBAChC,MAAM,IAAIzzL,MAAO,2DAI/B,GAFA8hB,EAAMk3M,gBAAiB,MAAOC,IAErB1lC,EAAa7vB,eAAgB6vB,EAAa7vB,aAAa+6D,eAE/D,MAAM,IAAIz+N,MAAO,uEAKX6P,EAAWoiB,IAAKshK,EAAa7vB,cAAe64D,gBACjDhpC,EAAa7vB,aAAaroB,MAAMhrI,QAAUkjL,EAAaljL,OACvDkjL,EAAa7vB,aAAaroB,MAAM/qI,SAAWijL,EAAajjL,SAEzDijL,EAAa7vB,aAAaroB,MAAMhrI,MAAQkjL,EAAaljL,MACrDkjL,EAAa7vB,aAAaroB,MAAM/qI,OAASijL,EAAajjL,OACtDijL,EAAa7vB,aAAalC,aAAc,GAIzCi7C,EAAclpB,EAAa7vB,aAAc,GAEzC,IAAMm8D,EAAoBhwN,EAAWoiB,IAAKshK,EAAa7vB,cAAe64D,eAChE54D,EAAUq7D,EAAwBzrC,GAExC,GAAKA,EAAa7vB,aAAajD,SAAWrS,GAEpC0wE,EAAoBvrC,GAExBinC,EAAmBuE,mCAAoC,MAAO,MAAO,KAAMc,EAAmB,EAAGl8D,GAIjGy2D,EAAI6E,qBAAsB,MAAO,MAAO,KAAMY,EAAmB,OAI5D,IAAKtsC,EAAa7vB,aAAajD,SAAWpS,GAchD,MAAM,IAAIruJ,MAAO,+BAZZ8+N,EAAoBvrC,GAExBinC,EAAmBuE,mCAAoC,MAAO,MAAO,KAAMc,EAAmB,EAAGl8D,GAIjGy2D,EAAI6E,qBAAsB,MAAO,MAAO,KAAMY,EAAmB,EAQnE,CAED,CAYEC,CAAmBxD,EAAuBG,mBAAoBlpC,EAE/D,MAEC,GAAKosC,EAAS,CAEbrD,EAAuBI,mBAAqB,GAE5C,IAAM,IAAI99N,EAAI,EAAGA,EAAI,EAAGA,IAEvBkjB,EAAMk3M,gBAAiB,MAAOsD,EAAuBG,mBAAoB79N,IACzE09N,EAAuBI,mBAAoB99N,GAAMw7N,EAAI2F,qBACrDb,EAA0B5C,EAAuBI,mBAAoB99N,GAAK20L,GAAc,EAI1F,MAECzxK,EAAMk3M,gBAAiB,MAAOsD,EAAuBG,oBACrDH,EAAuBI,mBAAqBtC,EAAI2F,qBAChDb,EAA0B5C,EAAuBI,mBAAoBnpC,GAAc,GAMrFzxK,EAAMk3M,gBAAiB,MAAO,KAE/B,CA+VA,SAASgG,EAAwBzrC,GAEhC,OAAOp0L,KAAKiuC,IAAKugK,EAAYpa,EAAa5vB,QAE3C,CAEA,SAASm7D,EAAoBvrC,GAE5B,IAAM+oC,EAAyBzsN,EAAWoiB,IAAKshK,GAE/C,OAAOoF,GAAYpF,EAAa5vB,QAAU,IAAkE,IAA7Dn1E,EAAWl+C,IAAK,0CAAqG,IAAhDgsL,EAAuB0D,oBAE5I,CAiBA,SAAS3B,EAAkB96D,EAASloB,GAEnC,IAAMslB,EAAW4C,EAAQ5C,SACnBF,EAAS8C,EAAQ9C,OACjB35J,EAAOy8J,EAAQz8J,KAErB,OAAqC,IAAhCy8J,EAAQs4D,sBAA2D,IAA3Bt4D,EAAQknD,gBAA2BlnD,EAAQ9C,SAAWlN,IAE9FoN,IAAaxP,KAIZwP,IAAavP,IAEC,IAAbunC,GAIkC,IAAjCnqG,EAAWl+C,IAAK,aAAyBmwH,IAAWxS,IAExDsV,EAAQ9C,OAASlN,GAIjBgQ,EAAQ/C,UAAYzT,GACpBwW,EAAQxC,iBAAkB,GAM1B1lB,EAAQ2jB,GAAWihE,aAAc5kF,GAQ7BolB,IAAWxS,IAAcnnJ,IAASsmJ,IAEtCn3I,QAAQk/C,KAAM,2FAQhBl/C,QAAQwN,MAAO,qDAAsDk9I,IA3CkDtlB,CAmD1H,CAIAn5I,KAAKk4M,oBAhjDL,WAEC,IAAM8lB,EAAcjD,EAUpB,OARKiD,GAAepzB,GAEnB72L,QAAQk/C,KAAM,sCAAwC+qK,EAAc,+CAAiDpzB,GAItHmwB,GAAgB,EAETiD,CAER,EAmiDAh+N,KAAKi+N,kBAvjDL,WAEClD,EAAe,CAEhB,EAqjDA/6N,KAAKu6M,aAAeA,EACpBv6M,KAAK66M,kBA5+CL,SAA4Bx5C,EAAS25D,GAEpC,IAAMnB,EAAoBlsN,EAAWoiB,IAAKsxI,GAErCA,EAAQhoK,QAAU,GAAKwgO,EAAkBqB,YAAc75D,EAAQhoK,QAEnE8hO,EAAetB,EAAmBx4D,EAAS25D,GAK5Cp7M,EAAMg2M,YAAa,MAAOiE,EAAkBQ,eAAgB,MAAQW,EAErE,EAg+CAh7N,KAAKy6M,aA99CL,SAAuBp5C,EAAS25D,GAE/B,IAAMnB,EAAoBlsN,EAAWoiB,IAAKsxI,GAErCA,EAAQhoK,QAAU,GAAKwgO,EAAkBqB,YAAc75D,EAAQhoK,QAEnE8hO,EAAetB,EAAmBx4D,EAAS25D,GAK5Cp7M,EAAMg2M,YAAa,MAAOiE,EAAkBQ,eAAgB,MAAQW,EAErE,EAk9CAh7N,KAAK26M,eAh9CL,SAAyBt5C,EAAS25D,GAEjC,IAAMnB,EAAoBlsN,EAAWoiB,IAAKsxI,GAErCA,EAAQhoK,QAAU,GAAKwgO,EAAkBqB,YAAc75D,EAAQhoK,QA0kBrE,SAA4BwgO,EAAmBx4D,EAAS25D,GAEvD,GAA8B,IAAzB35D,EAAQloB,MAAMvhJ,OAAe,OAElC,IAAMgkO,EAAcD,EAAa9B,EAAmBx4D,GAC9C7/J,EAAS6/J,EAAQ7/J,OAEvBoe,EAAMg2M,YAAa,MAAOiE,EAAkBQ,eAAgB,MAAQW,GAEpE,IAAM8oJ,EAAmBn2W,EAAWoiB,IAAKvuB,GAEzC,GAAKA,EAAOnI,UAAYyqX,EAAiB5oJ,YAA6B,IAAhBU,EAAuB,CAE5Eh8M,EAAMg3M,cAAe,MAAQoE,GAE7B9C,EAAI8D,YAAa,MAAO36D,EAAQtC,OAChCm5D,EAAI8D,YAAa,MAAO36D,EAAQvC,kBAChCo5D,EAAI8D,YAAa,KAAM36D,EAAQrC,iBAC/Bk5D,EAAI8D,YAAa,MAAO,GAOxB,IALA,IAAMkC,EAAiB78D,EAAQs4D,qBAAuBt4D,EAAQloB,MAAO,GAAIwgF,oBACnEj8D,EAAkB2D,EAAQloB,MAAO,IAAOkoB,EAAQloB,MAAO,GAAIukB,cAE3DygE,EAAY,GAERzhO,EAAI,EAAGA,EAAI,EAAGA,IAQtByhO,EAAWzhO,GANLwhO,GAAkBxgE,EAMPA,EAAgB2D,EAAQloB,MAAOz8I,GAAIy8I,MAAQkoB,EAAQloB,MAAOz8I,GAJ1Dm8N,EAAax3D,EAAQloB,MAAOz8I,IAAK,GAAO,EAAMquM,GAQhEozB,EAAWzhO,GAAMy/N,EAAkB96D,EAAS88D,EAAWzhO,IAIxD,IAYIgiK,EAZEvlB,EAAQglF,EAAW,GACxBhF,EAAeF,EAAgB9/E,IAAWs9C,EAC1C8iC,EAAWpB,EAAMv9D,QAASyG,EAAQ9C,OAAQ8C,EAAQ5C,UAClD+6D,EAASrB,EAAMv9D,QAASyG,EAAQz8J,MAChCw3N,EAAmB/C,EAAmBh4D,EAAQ1C,eAAgB46D,EAAUC,EAAQn4D,EAAQ5C,UAEnF49D,EAAkB5lC,IAAuC,IAA3Bp1B,EAAQknD,eACtC+T,OAAkDlyN,IAA/B05W,EAAiB5oJ,YAA+C,IAAhBU,EACrEpnN,EAASilN,EAAcp4D,EAASloB,EAAOggF,GAM3C,GAJAmC,EAAsB,MAAOj6D,EAAS83D,GAIjC+E,EAAe,CAEd7B,GAAiBC,GAErB18M,EAAMg4M,aAAc,MAAOpjN,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,QAIzE,IAAM,IAAI1R,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9BgiK,EAAUy/D,EAAWzhO,GAAIgiK,QAEzB,IAAM,IAAI7uJ,EAAI,EAAGA,EAAI6uJ,EAAQ9mK,OAAQiY,IAAO,CAE3C,IAAMosN,EAASv9D,EAAS7uJ,GAEnBwxJ,EAAQ9C,SAAWxS,GAEL,OAAbwtE,EAEC8C,EAEJz8M,EAAMo4M,wBAAyB,MAAQt7N,EAAGmT,EAAG,EAAG,EAAGosN,EAAO9tN,MAAO8tN,EAAO7tN,OAAQmrN,EAAU0C,EAAOv4L,MAIjG9jB,EAAM83M,qBAAsB,MAAQh7N,EAAGmT,EAAGusN,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ,EAAG6tN,EAAOv4L,MAMpG3vB,QAAQk/C,KAAM,mGAMVopK,EAEJz8M,EAAMk4M,cAAe,MAAQp7N,EAAGmT,EAAG,EAAG,EAAGosN,EAAO9tN,MAAO8tN,EAAO7tN,OAAQmrN,EAAUC,EAAQyC,EAAOv4L,MAI/F9jB,EAAMk2M,WAAY,MAAQp5N,EAAGmT,EAAGusN,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ,EAAGmrN,EAAUC,EAAQyC,EAAOv4L,KAM9G,CAED,CAED,KAAO,CAENg7H,EAAU2C,EAAQ3C,QAEb29D,GAAiBC,IAMhB59D,EAAQ9mK,OAAS,GAAI4c,IAE1BoL,EAAMg4M,aAAc,MAAOpjN,EAAQ4nN,EAAkB+B,EAAW,GAAIhwN,MAAOgwN,EAAW,GAAI/vN,SAI3F,IAAM,IAAI1R,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAKghK,EAAgB,CAEf2+D,EAEJz8M,EAAMk4M,cAAe,MAAQp7N,EAAG,EAAG,EAAG,EAAGyhO,EAAWzhO,GAAIyR,MAAOgwN,EAAWzhO,GAAI0R,OAAQmrN,EAAUC,EAAQ2E,EAAWzhO,GAAIgnC,MAIvH9jB,EAAMk2M,WAAY,MAAQp5N,EAAG,EAAG0/N,EAAkB+B,EAAWzhO,GAAIyR,MAAOgwN,EAAWzhO,GAAI0R,OAAQ,EAAGmrN,EAAUC,EAAQ2E,EAAWzhO,GAAIgnC,MAIpI,IAAM,IAAI7zB,EAAI,EAAGA,EAAI6uJ,EAAQ9mK,OAAQiY,IAAO,CAE3C,IACMuuN,EADS1/D,EAAS7uJ,GACGspI,MAAOz8I,GAAIy8I,MAEjCkjF,EAEJz8M,EAAMk4M,cAAe,MAAQp7N,EAAGmT,EAAI,EAAG,EAAG,EAAGuuN,EAAYjwN,MAAOiwN,EAAYhwN,OAAQmrN,EAAUC,EAAQ4E,EAAY16L,MAIlH9jB,EAAMk2M,WAAY,MAAQp5N,EAAGmT,EAAI,EAAGusN,EAAkBgC,EAAYjwN,MAAOiwN,EAAYhwN,OAAQ,EAAGmrN,EAAUC,EAAQ4E,EAAY16L,KAIhI,CAED,KAAO,CAED24L,EAEJz8M,EAAMk4M,cAAe,MAAQp7N,EAAG,EAAG,EAAG,EAAG68N,EAAUC,EAAQ2E,EAAWzhO,IAItEkjB,EAAMk2M,WAAY,MAAQp5N,EAAG,EAAG0/N,EAAkB7C,EAAUC,EAAQ2E,EAAWzhO,IAIhF,IAAM,IAAImT,EAAI,EAAGA,EAAI6uJ,EAAQ9mK,OAAQiY,IAAO,CAE3C,IAAMosN,EAASv9D,EAAS7uJ,GAEnBwsN,EAEJz8M,EAAMk4M,cAAe,MAAQp7N,EAAGmT,EAAI,EAAG,EAAG,EAAG0pN,EAAUC,EAAQyC,EAAO9iF,MAAOz8I,IAI7EkjB,EAAMk2M,WAAY,MAAQp5N,EAAGmT,EAAI,EAAGusN,EAAkB7C,EAAUC,EAAQyC,EAAO9iF,MAAOz8I,GAIxF,CAED,CAIF,CAEKw8N,EAA6B73D,EAAS83D,IAG1CC,EAAgB,OAIjB0qJ,EAAiB5oJ,UAAY15N,EAAOnI,QAE/BgoK,EAAQnC,UAAWmC,EAAQnC,SAAUmC,EAE3C,CAEAw4D,EAAkBqB,UAAY75D,EAAQhoK,OAEvC,CArxBEglO,CAAmBxE,EAAmBx4D,EAAS25D,GAKhDp7M,EAAMg2M,YAAa,MAAOiE,EAAkBQ,eAAgB,MAAQW,EAErE,EAo8CAh7N,KAAKs+N,eA7bL,SAAyBjtC,EAAcktC,EAAc/8D,GAEpD,IAAM44D,EAAyBzsN,EAAWoiB,IAAKshK,QAEzBjnL,IAAjBm0N,GAEJ/B,EAAyBpC,EAAuBG,mBAAoBlpC,EAAcA,EAAahwB,QAAS,MAAO,WAI1Fj3J,IAAjBo3J,GAEJg8D,EAAwBnsC,EAI1B,EA8aArxL,KAAKw+N,kBA3aL,SAA4BntC,GAE3B,IAAMhwB,EAAUgwB,EAAahwB,QAEvB+4D,EAAyBzsN,EAAWoiB,IAAKshK,GACzCwoC,EAAoBlsN,EAAWoiB,IAAKsxI,GAE1CgwB,EAAaztL,iBAAkB,UAAWu2N,IAES,IAA9C9oC,EAAavuB,oCAEyB14J,IAArCyvN,EAAkBQ,iBAEtBR,EAAkBQ,eAAiBnC,EAAIvC,iBAIxCkE,EAAkBqB,UAAY75D,EAAQhoK,QACtCg1F,EAAK+lH,OAAO70C,YAIb,IAAMk+D,GAAoD,IAAzCpsC,EAAaE,wBACxBktC,GAA0E,IAA9CptC,EAAavuB,6BACzCq2D,EAAeF,EAAgB5nC,IAAkBoF,EAIvD,GAAKgnC,EAAS,CAEbrD,EAAuBG,mBAAqB,GAE5C,IAAM,IAAI79N,EAAI,EAAGA,EAAI,EAAGA,IAEvB09N,EAAuBG,mBAAoB79N,GAAMw7N,EAAIwG,mBAIvD,KAAO,CAIN,GAFAtE,EAAuBG,mBAAqBrC,EAAIwG,oBAE3CD,EAEJ,GAAKjoC,EAAatH,YAIjB,IAFA,IAAM3vB,EAAW8xB,EAAahwB,QAEpB3kK,EAAI,EAAGowD,EAAKyyG,EAAS3nK,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAErD,IAAMm+N,EAAuBltN,EAAWoiB,IAAKwvI,EAAU7iK,SAEV0N,IAAxCywN,EAAqBR,iBAEzBQ,EAAqBR,eAAiBnC,EAAIvC,gBAE1CtnI,EAAK+lH,OAAO70C,WAId,MAIAxrJ,QAAQk/C,KAAM,iHAMhB,GAAOwjI,GAAYpF,EAAa5vB,QAAU,IAA8C,IAAvCm7D,EAAoBvrC,GAA2B,CAE/F,IAAM9xB,EAAWk/D,EAA0Bp9D,EAAU,CAAEA,GAEvD+4D,EAAuBM,+BAAiCxC,EAAIwG,oBAC5DtE,EAAuBO,yBAA2B,GAElD/6M,EAAMk3M,gBAAiB,MAAOsD,EAAuBM,gCAErD,IAAM,IAAIh+N,EAAI,EAAGA,EAAI6iK,EAAS3nK,OAAQ8E,IAAO,CAE5C,IAAM2kK,EAAU9B,EAAU7iK,GAC1B09N,EAAuBO,yBAA0Bj+N,GAAMw7N,EAAI2F,qBAE3D3F,EAAIiF,iBAAkB,MAAO/C,EAAuBO,yBAA0Bj+N,IAE9E,IAAM68N,EAAWpB,EAAMv9D,QAASyG,EAAQ9C,OAAQ8C,EAAQ5C,UAClD+6D,EAASrB,EAAMv9D,QAASyG,EAAQz8J,MAChCw3N,EAAmB/C,EAAmBh4D,EAAQ1C,eAAgB46D,EAAUC,EAAQn4D,EAAQ5C,UAA4C,IAAlC4yB,EAAai3B,kBAC/G7mD,EAAUq7D,EAAwBzrC,GACxC6mC,EAAImF,+BAAgC,MAAO57D,EAAS26D,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,QAEvG8pN,EAAIqF,wBAAyB,MAAO,MAAQ7gO,EAAG,MAAO09N,EAAuBO,yBAA0Bj+N,GAExG,CAEAw7N,EAAIiF,iBAAkB,MAAO,MAExB9rC,EAAa/vB,cAEjB84D,EAAuBQ,yBAA2B1C,EAAI2F,qBACtDb,EAA0B5C,EAAuBQ,yBAA0BvpC,GAAc,IAI1FzxK,EAAMk3M,gBAAiB,MAAO,KAE/B,CAED,CAIA,GAAK2G,EAAS,CAEb79M,EAAMg2M,YAAa,MAAOiE,EAAkBQ,gBAC5CiB,EAAsB,MAAOj6D,EAAS83D,GAEtC,IAAM,IAAIz8N,EAAI,EAAGA,EAAI,EAAGA,IAEvB8/N,EAAyBpC,EAAuBG,mBAAoB79N,GAAK20L,EAAchwB,EAAS,MAAO,MAAQ3kK,GAI3Gw8N,EAA6B73D,EAAS83D,IAE1CC,EAAgB,OAIjBx5M,EAAM63M,eAEP,MAAO,GAAKgH,EAA0B,CAIrC,IAFA,IAAMl/D,EAAW8xB,EAAahwB,QAEpB3kK,EAAI,EAAGowD,EAAKyyG,EAAS3nK,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAErD,IAAM+/N,EAAal9D,EAAU7iK,GACvBm+N,EAAuBltN,EAAWoiB,IAAK0sM,GAE7C78M,EAAMg2M,YAAa,KAAMiF,EAAqBR,gBAC9CiB,EAAsB,KAAMmB,EAAYtD,GACxCqD,EAAyBpC,EAAuBG,mBAAoBlpC,EAAcorC,EAAY,MAAQ//N,EAAG,MAEpGw8N,EAA6BuD,EAAYtD,IAE7CC,EAAgB,KAIlB,CAEAx5M,EAAM63M,eAEP,KAAO,CAEN,IAAIkH,EAAgB,MAEfttC,EAAa3uB,uBAAyB2uB,EAAanvB,4BAElDu0B,EAEJkoC,EAAgBttC,EAAa3uB,sBAAwB,MAAQ,MAI7D3uJ,QAAQwN,MAAO,oGAMjB3B,EAAMg2M,YAAa+I,EAAe9E,EAAkBQ,gBACpDiB,EAAsBqD,EAAet9D,EAAS83D,GAC9CqD,EAAyBpC,EAAuBG,mBAAoBlpC,EAAchwB,EAAS,MAAOs9D,GAE7FzF,EAA6B73D,EAAS83D,IAE1CC,EAAgBuF,GAIjB/+M,EAAM63M,eAEP,CAIKpmC,EAAa/vB,aAEjBk8D,EAAwBnsC,EAI1B,EAyOArxL,KAAK4+N,yBAvOL,SAAmCvtC,GAMlC,IAJA,IAAM8nC,EAAeF,EAAgB5nC,IAAkBoF,EAEjDl3B,GAAyD,IAA9C8xB,EAAavuB,6BAAwCuuB,EAAahwB,QAAU,CAAEgwB,EAAahwB,SAElG3kK,EAAI,EAAGowD,EAAKyyG,EAAS3nK,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAErD,IAAM2kK,EAAU9B,EAAU7iK,GAE1B,GAAKw8N,EAA6B73D,EAAS83D,GAAiB,CAE3D,IAAM53N,EAAS8vL,EAAaE,wBAA0B,MAAQ,KACxDgmC,EAAe5pN,EAAWoiB,IAAKsxI,GAAUg5D,eAE/Cz6M,EAAMg2M,YAAar0N,EAAQg2N,GAC3B6B,EAAgB73N,GAChBqe,EAAM63M,eAEP,CAED,CAED,EAiNAz3N,KAAK6+N,8BA/ML,SAAwCxtC,GAEvC,GAAOoF,GAAYpF,EAAa5vB,QAAU,IAA8C,IAAvCm7D,EAAoBvrC,GAA2B,CAE/F,IAAM9xB,EAAW8xB,EAAavuB,6BAA+BuuB,EAAahwB,QAAU,CAAEgwB,EAAahwB,SAC7FlzJ,EAAQkjL,EAAaljL,MACrBC,EAASijL,EAAajjL,OACxBksH,EAAO,MACLwkG,EAAoB,GACpBC,EAAa1tC,EAAa9vB,cAAgB,MAAQ,MAClD64D,EAAyBzsN,EAAWoiB,IAAKshK,GACzCotC,GAA0E,IAA9CptC,EAAavuB,6BAG/C,GAAK27D,EAEJ,IAAM,IAAI/hO,EAAI,EAAGA,EAAI6iK,EAAS3nK,OAAQ8E,IAErCkjB,EAAMk3M,gBAAiB,MAAOsD,EAAuBM,gCACrDxC,EAAIqF,wBAAyB,MAAO,MAAQ7gO,EAAG,MAAO,MAEtDkjB,EAAMk3M,gBAAiB,MAAOsD,EAAuBG,oBACrDrC,EAAI6E,qBAAsB,MAAO,MAAQrgO,EAAG,KAAM,KAAM,GAM1DkjB,EAAMk3M,gBAAiB,MAAOsD,EAAuBM,gCACrD96M,EAAMk3M,gBAAiB,MAAOsD,EAAuBG,oBAErD,IAAM,IAAI79N,EAAI,EAAGA,EAAI6iK,EAAS3nK,OAAQ8E,IAAO,CAE5CoiO,EAAkBhiO,KAAM,MAAQJ,GAE3B20L,EAAa/vB,aAEjBw9D,EAAkBhiO,KAAMiiO,GAIzB,IAAMC,OAAqE50N,IAA/CgwN,EAAuB6E,qBAAsC7E,EAAuB6E,oBAsBhH,IApB2B,IAAtBD,IAEC3tC,EAAa/vB,cAAchnC,GAAQ,KACnC+2D,EAAa9vB,gBAAgBjnC,GAAQ,OAItCmkG,GAEJvG,EAAIqF,wBAAyB,MAAO,MAAO,MAAOnD,EAAuBO,yBAA0Bj+N,KAIzE,IAAtBsiO,IAEJ9G,EAAIgH,sBAAuB,MAAO,CAAEH,IACpC7G,EAAIgH,sBAAuB,MAAO,CAAEH,KAIhCN,EAA0B,CAE9B,IAAMlH,EAAe5pN,EAAWoiB,IAAKwvI,EAAU7iK,IAAM29N,eACrDnC,EAAI6E,qBAAsB,MAAO,MAAO,KAAMxF,EAAc,EAE7D,CAEAW,EAAIiH,gBAAiB,EAAG,EAAGhxN,EAAOC,EAAQ,EAAG,EAAGD,EAAOC,EAAQksH,EAAM,MAEhEi+F,GAEJL,EAAIgH,sBAAuB,MAAOJ,EAKpC,CAMA,GAJAl/M,EAAMk3M,gBAAiB,MAAO,MAC9Bl3M,EAAMk3M,gBAAiB,MAAO,MAGzB2H,EAEJ,IAAM,IAAI/hO,EAAI,EAAGA,EAAI6iK,EAAS3nK,OAAQ8E,IAAO,CAE5CkjB,EAAMk3M,gBAAiB,MAAOsD,EAAuBM,gCACrDxC,EAAIqF,wBAAyB,MAAO,MAAQ7gO,EAAG,MAAO09N,EAAuBO,yBAA0Bj+N,IAEvG,IAAM66N,EAAe5pN,EAAWoiB,IAAKwvI,EAAU7iK,IAAM29N,eAErDz6M,EAAMk3M,gBAAiB,MAAOsD,EAAuBG,oBACrDrC,EAAI6E,qBAAsB,MAAO,MAAQrgO,EAAG,KAAM66N,EAAc,EAEjE,CAID33M,EAAMk3M,gBAAiB,MAAOsD,EAAuBM,+BAEtD,CAED,EAuGA16N,KAAKw9N,uBAAyBA,EAC9Bx9N,KAAKw8N,wBAA0BA,EAC/Bx8N,KAAK48N,mBAAqBA,CAE3B,CAEA,SAASwC,GAAYxyK,EAAI0/B,EAAYkqG,GAEpC,IAAMC,EAAWD,EAAaC,SAgQ9B,MAAO,CAAE77B,QA9PT,SAAkB5zJ,GAAqB,IAElCs/L,EAFgB7nC,EAAQx+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAI/B,GAAK+G,IAAMkkJ,GAAmB,OAAO,KACrC,GAAKlkJ,IAAM0kJ,GAAwB,OAAO,MAC1C,GAAK1kJ,IAAM2kJ,GAAwB,OAAO,MAE1C,GAAK3kJ,IAAMmkJ,GAAW,OAAO,KAC7B,GAAKnkJ,IAAMokJ,GAAY,OAAO,KAC9B,GAAKpkJ,IAAMqkJ,GAAoB,OAAO,KACtC,GAAKrkJ,IAAMskJ,GAAU,OAAO,KAC5B,GAAKtkJ,IAAMukJ,GAAkB,OAAO,KACpC,GAAKvkJ,IAAMwkJ,GAAY,OAAO,KAE9B,GAAKxkJ,IAAMykJ,GAEV,OAAKgrC,EAAkB,KAIJ,QAFnB6P,EAAYh6G,EAAWv8D,IAAK,2BAIpBu2K,EAAU+4B,eAIV,KAMT,GAAKr4N,IAAM6kJ,GAAc,OAAO,KAChC,GAAK7kJ,IAAM+kJ,GAAa,OAAO,KAC/B,GAAK/kJ,IAAMglJ,GAAkB,OAAO,KACpC,GAAKhlJ,IAAMilJ,GAAuB,OAAO,KACzC,GAAKjlJ,IAAMklJ,GAAc,OAAO,KAChC,GAAKllJ,IAAMmlJ,GAAqB,OAAO,MACvC,GAAKnlJ,IAAMolJ,GAAY,OAAO,KAI9B,GAAKplJ,IAAM8kJ,GAGV,OADA/3I,QAAQk/C,KAAM,sIACP,KAMR,GAAKjsD,IAAMqqJ,GAIV,OAAmB,QAFnBi1C,EAAYh6G,EAAWv8D,IAAK,aAIpBu2K,EAAUg5B,eAIV,KAQT,GAAKt4N,IAAMqlJ,GAAmB,OAAO,MACrC,GAAKrlJ,IAAMslJ,GAAW,OAAO,MAC7B,GAAKtlJ,IAAMulJ,GAAkB,OAAO,MACpC,GAAKvlJ,IAAMwlJ,GAAoB,OAAO,MAItC,GAAKxlJ,IAAMylJ,IAAwBzlJ,IAAM0lJ,IAAyB1lJ,IAAM2lJ,IAAyB3lJ,IAAM4lJ,GAEtG,GAAK6R,IAAavP,GAAe,CAIhC,GAAmB,QAFnBo3C,EAAYh6G,EAAWv8D,IAAK,uCAW3B,OAAO,KAPP,GAAK/oB,IAAMylJ,GAAuB,OAAO65C,EAAUi5B,8BACnD,GAAKv4N,IAAM0lJ,GAAwB,OAAO45C,EAAUk5B,oCACpD,GAAKx4N,IAAM2lJ,GAAwB,OAAO25C,EAAUm5B,oCACpD,GAAKz4N,IAAM4lJ,GAAwB,OAAO05C,EAAUo5B,mCAQtD,KAAO,CAIN,GAAmB,QAFnBp5B,EAAYh6G,EAAWv8D,IAAK,kCAW3B,OAAO,KAPP,GAAK/oB,IAAMylJ,GAAuB,OAAO65C,EAAUq5B,6BACnD,GAAK34N,IAAM0lJ,GAAwB,OAAO45C,EAAUs5B,8BACpD,GAAK54N,IAAM2lJ,GAAwB,OAAO25C,EAAUu5B,8BACpD,GAAK74N,IAAM4lJ,GAAwB,OAAO05C,EAAUw5B,6BAQtD,CAMD,GAAK94N,IAAM6lJ,IAA2B7lJ,IAAM8lJ,IAA2B9lJ,IAAM+lJ,IAA4B/lJ,IAAMgmJ,GAA2B,CAIzI,GAAmB,QAFnBs5C,EAAYh6G,EAAWv8D,IAAK,mCAW3B,OAAO,KAPP,GAAK/oB,IAAM6lJ,GAA0B,OAAOy5C,EAAUy5B,gCACtD,GAAK/4N,IAAM8lJ,GAA0B,OAAOw5C,EAAU05B,gCACtD,GAAKh5N,IAAM+lJ,GAA2B,OAAOu5C,EAAU25B,iCACvD,GAAKj5N,IAAMgmJ,GAA2B,OAAOs5C,EAAU45B,gCAQzD,CAIA,GAAKl5N,IAAMimJ,GAIV,OAAmB,QAFnBq5C,EAAYh6G,EAAWv8D,IAAK,kCAIpBu2K,EAAU65B,0BAIV,KAQT,GAAKn5N,IAAMkmJ,IAAmBlmJ,IAAMmmJ,GAAuB,CAI1D,GAAmB,QAFnBm5C,EAAYh6G,EAAWv8D,IAAK,iCAS3B,OAAO,KALP,GAAK/oB,IAAMkmJ,GAAkB,OAASuR,IAAavP,GAAiBo3C,EAAU85B,sBAAwB95B,EAAU+5B,qBAChH,GAAKr5N,IAAMmmJ,GAAuB,OAASsR,IAAavP,GAAiBo3C,EAAUg6B,iCAAmCh6B,EAAUi6B,yBAQlI,CAIA,GAAKv5N,IAAMomJ,IAAwBpmJ,IAAMqmJ,IAAwBrmJ,IAAMsmJ,IACtEtmJ,IAAMumJ,IAAwBvmJ,IAAMwmJ,IAAwBxmJ,IAAMymJ,IAClEzmJ,IAAM0mJ,IAAwB1mJ,IAAM2mJ,IAAwB3mJ,IAAM4mJ,IAClE5mJ,IAAM6mJ,IAAyB7mJ,IAAM8mJ,IAAyB9mJ,IAAM+mJ,IACpE/mJ,IAAMgnJ,IAA0BhnJ,IAAMinJ,GAAyB,CAI/D,GAAmB,QAFnBq4C,EAAYh6G,EAAWv8D,IAAK,kCAqB3B,OAAO,KAjBP,GAAK/oB,IAAMomJ,GAAuB,OAASqR,IAAavP,GAAiBo3C,EAAUk6B,qCAAuCl6B,EAAUm6B,6BACpI,GAAKz5N,IAAMqmJ,GAAuB,OAASoR,IAAavP,GAAiBo3C,EAAUo6B,qCAAuCp6B,EAAUq6B,6BACpI,GAAK35N,IAAMsmJ,GAAuB,OAASmR,IAAavP,GAAiBo3C,EAAUs6B,qCAAuCt6B,EAAUu6B,6BACpI,GAAK75N,IAAMumJ,GAAuB,OAASkR,IAAavP,GAAiBo3C,EAAUw6B,qCAAuCx6B,EAAUy6B,6BACpI,GAAK/5N,IAAMwmJ,GAAuB,OAASiR,IAAavP,GAAiBo3C,EAAU06B,qCAAuC16B,EAAU26B,6BACpI,GAAKj6N,IAAMymJ,GAAuB,OAASgR,IAAavP,GAAiBo3C,EAAU46B,qCAAuC56B,EAAU66B,6BACpI,GAAKn6N,IAAM0mJ,GAAuB,OAAS+Q,IAAavP,GAAiBo3C,EAAU86B,qCAAuC96B,EAAU+6B,6BACpI,GAAKr6N,IAAM2mJ,GAAuB,OAAS8Q,IAAavP,GAAiBo3C,EAAUg7B,qCAAuCh7B,EAAUi7B,6BACpI,GAAKv6N,IAAM4mJ,GAAwB,OAAS6Q,IAAavP,GAAiBo3C,EAAUk7B,sCAAwCl7B,EAAUm7B,8BACtI,GAAKz6N,IAAM6mJ,GAAwB,OAAS4Q,IAAavP,GAAiBo3C,EAAUo7B,sCAAwCp7B,EAAUq7B,8BACtI,GAAK36N,IAAM8mJ,GAAwB,OAAS2Q,IAAavP,GAAiBo3C,EAAUs7B,sCAAwCt7B,EAAUu7B,8BACtI,GAAK76N,IAAM+mJ,GAAyB,OAAS0Q,IAAavP,GAAiBo3C,EAAUw7B,uCAAyCx7B,EAAUy7B,+BACxI,GAAK/6N,IAAMgnJ,GAAyB,OAASyQ,IAAavP,GAAiBo3C,EAAU07B,uCAAyC17B,EAAU27B,+BACxI,GAAKj7N,IAAMinJ,GAAyB,OAASwQ,IAAavP,GAAiBo3C,EAAU47B,uCAAyC57B,EAAU67B,8BAQ1I,CAIA,GAAKn7N,IAAMknJ,GAAmB,CAI7B,GAAmB,QAFnBo4C,EAAYh6G,EAAWv8D,IAAK,iCAQ3B,OAAO,KAJP,GAAK/oB,IAAMknJ,GAAmB,OAASuQ,IAAavP,GAAiBo3C,EAAU87B,qCAAuC97B,EAAU+7B,8BAQlI,CAIA,OAAKr7N,IAAM4kJ,GAEL6qC,EAAkB,MAIJ,QAFnB6P,EAAYh6G,EAAWv8D,IAAK,wBAIpBu2K,EAAUg8B,wBAIV,UAQYl4N,IAAZwiD,EAAI5lD,GAAsB4lD,EAAI5lD,GAAM,IAE9C,EAID,CAAC,IAEKu7N,GAAW,SAAAC,GAAAxmN,EAAAumN,EAAAC,GAAA,IAAAC,EAAA9nN,EAAA4nN,GAEhB,SAAAA,IAA0B,IAAAS,EAAbjgO,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAMC,OANCwK,EAAA,KAAA83N,IAEtBS,EAAAP,EAAA5lO,KAAA,OAEK+lO,eAAgB,EAErBI,EAAKL,QAAU5/N,EAAMigO,CAEtB,CAAC,OAAAz5N,EAAAg5N,EAAA,CAVe,CAAS1yC,IAcpBgzC,GAAK,SAAAC,GAAA9mN,EAAA6mN,EAAAC,GAAA,IAAAC,EAAApoN,EAAAkoN,GAEV,SAAAA,IAAc,IAAA0C,EAMO,OANP96N,EAAA,KAAAo4N,IAEb0C,EAAAxC,EAAAlmO,KAAA,OAEKomO,SAAU,EAEfsC,EAAK3gO,KAAO,QAAQ2gO,CAErB,CAAC,OAAAh8N,EAAAs5N,EAAA,CAVS,CAASrtD,IAcd0tD,GAAa,CAAEt+N,KAAM,QAErBu+N,GAAe,WAEpB,SAAAA,IAAc14N,EAAA,KAAA04N,GAEbnjO,KAAKojO,WAAa,KAClBpjO,KAAKqjO,MAAQ,KACbrjO,KAAKsjO,MAAQ,IAEd,CAgSC,OAhSA/5N,EAAA45N,EAAA,EAAA3gO,IAAA,eAAA/D,MAED,WAaC,OAXoB,OAAfuB,KAAKsjO,QAETtjO,KAAKsjO,MAAQ,IAAIT,GACjB7iO,KAAKsjO,MAAM1kE,kBAAmB,EAC9B5+J,KAAKsjO,MAAM35J,SAAU,EAErB3pE,KAAKsjO,MAAMC,OAAS,CAAC,EACrBvjO,KAAKsjO,MAAME,WAAa,CAAEC,UAAU,IAI9BzjO,KAAKsjO,KAEb,GAAC,CAAA9gO,IAAA,oBAAA/D,MAED,WAcC,OAZyB,OAApBuB,KAAKojO,aAETpjO,KAAKojO,WAAa,IAAIP,GACtB7iO,KAAKojO,WAAWxkE,kBAAmB,EACnC5+J,KAAKojO,WAAWz5J,SAAU,EAC1B3pE,KAAKojO,WAAWM,mBAAoB,EACpC1jO,KAAKojO,WAAWO,eAAiB,IAAI78D,GACrC9mK,KAAKojO,WAAWQ,oBAAqB,EACrC5jO,KAAKojO,WAAWS,gBAAkB,IAAI/8D,IAIhC9mK,KAAKojO,UAEb,GAAC,CAAA5gO,IAAA,eAAA/D,MAED,WAcC,OAZoB,OAAfuB,KAAKqjO,QAETrjO,KAAKqjO,MAAQ,IAAIR,GACjB7iO,KAAKqjO,MAAMzkE,kBAAmB,EAC9B5+J,KAAKqjO,MAAM15J,SAAU,EACrB3pE,KAAKqjO,MAAMK,mBAAoB,EAC/B1jO,KAAKqjO,MAAMM,eAAiB,IAAI78D,GAChC9mK,KAAKqjO,MAAMO,oBAAqB,EAChC5jO,KAAKqjO,MAAMQ,gBAAkB,IAAI/8D,IAI3B9mK,KAAKqjO,KAEb,GAAC,CAAA7gO,IAAA,gBAAA/D,MAED,SAAe8pC,GAoBd,OAlByB,OAApBvoC,KAAKojO,YAETpjO,KAAKojO,WAAW7kM,cAAegK,GAIZ,OAAfvoC,KAAKqjO,OAETrjO,KAAKqjO,MAAM9kM,cAAegK,GAIP,OAAfvoC,KAAKsjO,OAETtjO,KAAKsjO,MAAM/kM,cAAegK,GAIpBvoC,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYqlO,GAsBX,OApBA9jO,KAAKu+B,cAAe,CAAE35B,KAAM,eAAgB8+B,KAAMogM,IAEzB,OAApB9jO,KAAKojO,aAETpjO,KAAKojO,WAAWz5J,SAAU,GAIP,OAAf3pE,KAAKqjO,QAETrjO,KAAKqjO,MAAM15J,SAAU,GAIF,OAAf3pE,KAAKsjO,QAETtjO,KAAKsjO,MAAM35J,SAAU,GAIf3pE,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQqlO,EAAa1tC,EAAO2tC,GAE3B,IAAIC,EAAY,KACZC,EAAW,KACXC,EAAW,KAETC,EAAYnkO,KAAKojO,WACjBgB,EAAOpkO,KAAKqjO,MACZgB,EAAOrkO,KAAKsjO,MAElB,GAAKQ,GAAiD,oBAAlC1tC,EAAMqP,QAAQ6+B,gBAAwC,CAEzE,GAAKD,GAAQP,EAAYO,KAAO,CAE/BH,GAAW,EAAK,IAEmCp/J,EAFnCC,EAAA+F,EAEUg5J,EAAYO,KAAKt3N,UAAQ,IAAnD,IAAAg4D,EAAAtpE,MAAAqpE,EAAAC,EAAAh+D,KAAAkb,MAAsD,KAA1CwiN,EAAU3/J,EAAArmE,MAGfimO,EAAYtuC,EAAMuuC,aAAcF,EAAYV,GAElD,QAA6C35N,IAAxCi6N,EAAKd,OAAQkB,EAAWG,WAA4B,CAGxD,IAAMC,EAAQ,IAAIhC,GAClBgC,EAAMjmE,kBAAmB,EACzBimE,EAAMl7J,SAAU,EAChB06J,EAAKd,OAAQkB,EAAWG,WAAcC,EAEtCR,EAAKj4M,IAAKy4M,EAEX,CAEA,IAAMA,EAAQR,EAAKd,OAAQkB,EAAWG,WAEnB,OAAdF,IAEJG,EAAMnrE,OAAOC,UAAW+qE,EAAUpsG,UAAUohC,QAC5CmrE,EAAMnrE,OAAO6c,UAAWsuD,EAAMtlK,SAAUslK,EAAMvrE,SAAUurE,EAAMxtF,OAC9DwtF,EAAMC,YAAcJ,EAAUx7D,QAI/B27D,EAAMl7J,QAAwB,OAAd+6J,CAEjB,CAIA,OAAA7rN,GAAAksD,EAAAz+D,EAAAuS,EAAA,SAAAksD,EAAAt+D,GAAA,CACA,IAAMs+N,EAAWV,EAAKd,OAAQ,oBACxByB,EAAWX,EAAKd,OAAQ,aACxB7sD,EAAWquD,EAASxlK,SAAS8tG,WAAY23D,EAASzlK,UAKnD8kK,EAAKb,WAAWC,UAAY/sD,EAAWuuD,MAE3CZ,EAAKb,WAAWC,UAAW,EAC3BzjO,KAAKu+B,cAAe,CACnB35B,KAAM,WACNsgO,WAAYpB,EAAYoB,WACxB3jO,OAAQvB,SAGIqkO,EAAKb,WAAWC,UAAY/sD,GAAYuuD,OAErDZ,EAAKb,WAAWC,UAAW,EAC3BzjO,KAAKu+B,cAAe,CACnB35B,KAAM,aACNsgO,WAAYpB,EAAYoB,WACxB3jO,OAAQvB,OAKX,MAEe,OAATokO,GAAiBN,EAAYqB,WAIf,QAFlBlB,EAAW7tC,EAAMmuC,QAAST,EAAYqB,UAAWpB,MAIhDK,EAAK1qE,OAAOC,UAAWsqE,EAAS3rG,UAAUohC,QAC1C0qE,EAAK1qE,OAAO6c,UAAW6tD,EAAK7kK,SAAU6kK,EAAK9qE,SAAU8qE,EAAK/sF,OAErD4sF,EAASN,gBAEbS,EAAKV,mBAAoB,EACzBU,EAAKT,eAAejoE,KAAMuoE,EAASN,iBAInCS,EAAKV,mBAAoB,EAIrBO,EAASJ,iBAEbO,EAAKR,oBAAqB,EAC1BQ,EAAKP,gBAAgBnoE,KAAMuoE,EAASJ,kBAIpCO,EAAKR,oBAAqB,GAUX,OAAdO,IAKe,QAHnBH,EAAY5tC,EAAMmuC,QAAST,EAAYU,eAAgBT,KAGf,OAAbE,IAE1BD,EAAYC,GAIM,OAAdD,IAEJG,EAAUzqE,OAAOC,UAAWqqE,EAAU1rG,UAAUohC,QAChDyqE,EAAUzqE,OAAO6c,UAAW4tD,EAAU5kK,SAAU4kK,EAAU7qE,SAAU6qE,EAAU9sF,OAEzE2sF,EAAUL,gBAEdQ,EAAUT,mBAAoB,EAC9BS,EAAUR,eAAejoE,KAAMsoE,EAAUL,iBAIzCQ,EAAUT,mBAAoB,EAI1BM,EAAUH,iBAEdM,EAAUP,oBAAqB,EAC/BO,EAAUN,gBAAgBnoE,KAAMsoE,EAAUH,kBAI1CM,EAAUP,oBAAqB,EAIhC5jO,KAAKu+B,cAAe2kM,KAOvB,CAoBA,OAlBmB,OAAdiB,IAEJA,EAAUx6J,QAA0B,OAAdq6J,GAIT,OAATI,IAEJA,EAAKz6J,QAAyB,OAAbs6J,GAIJ,OAATI,IAEJA,EAAK16J,QAAyB,OAAbu6J,GAIXlkO,IAER,KAACmjO,CAAA,CAxSmB,GA4SfiC,GAAY,SAAAC,GAAArpN,EAAAopN,EAAAC,GAAA,IAAAC,EAAA3qN,EAAAyqN,GAEjB,SAAAA,EAAaj3N,EAAOC,EAAQxJ,EAAM0/I,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWE,EAAYD,GAAS,IAAAonE,EAInG,GAJmGl7N,EAAA,KAAA26N,IAEnG7mE,OAAoBn0J,IAAXm0J,EAAuBA,EAASrS,MAEzBA,IAAeqS,IAAWpS,GAEzC,MAAM,IAAIruJ,MAAO,oFAiBW,YAbfsM,IAATxF,GAAsB25J,IAAWrS,KAActnJ,EAAO2mJ,SAC7CnhJ,IAATxF,GAAsB25J,IAAWpS,KAAqBvnJ,EAAOgnJ,KAElE+5E,EAAAL,EAAAzoO,KAAA,KAAO,KAAMynJ,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,IAEnE+9D,gBAAiB,EAEtBoJ,EAAKxsF,MAAQ,CAAEhrI,MAAOA,EAAOC,OAAQA,GAErCu3N,EAAKtnE,eAA0Bj0J,IAAdi0J,EAA0BA,EAAY7T,GACvDm7E,EAAKrnE,eAA0Bl0J,IAAdk0J,EAA0BA,EAAY9T,GAEvDm7E,EAAK5mE,OAAQ,EACb4mE,EAAK9mE,iBAAkB,EAAM8mE,CAE9B,CAAC,OAAAp8N,EAAA67N,EAAA,CA3BgB,CAASrnE,IAgCrBynE,GAAY,SAAAC,GAAAzpN,EAAAwpN,EAAAC,GAAA,IAAAC,EAAA/qN,EAAA6qN,GAEjB,SAAAA,EAAa1zC,EAAUllI,GAAK,IAAA8qL,EAAAjtO,EAAA,KAAA+6N,GAI3B,IAAMx4C,EAAKxxK,EAFXk8N,EAAAhS,EAAA7oO,KAAA,OAII4oM,EAAU,KACVmgC,EAAyB,EAEzB7B,EAAiB,KACjB8B,EAAqB,cACrBk+I,EAAuB,KAEvBj+I,EAAO,KACPC,EAAY,KACZC,EAAc,KACdC,EAAc,KACdC,EAAU,KACRh0J,EAAatlB,EAAGu5K,uBAClBC,EAAsB,KACtBC,EAAkB,KAEhBC,EAAc,GACd09I,EAAyB,GAIzBx9I,EAAU,IAAI32C,GACpB22C,EAAQ7xD,OAAOu0C,OAAQ,GACvBsd,EAAQplE,SAAW,IAAIxB,GAEvB,IAAM6mE,EAAU,IAAI52C,GACpB42C,EAAQ9xD,OAAOu0C,OAAQ,GACvBud,EAAQrlE,SAAW,IAAIxB,GAEvB,IAAM+iE,EAAU,CAAE6D,EAASC,GAErBC,EAAW,IAAInE,GACrBmE,EAAS/xD,OAAOu0C,OAAQ,GACxBwd,EAAS/xD,OAAOu0C,OAAQ,GAExB,IAAIyd,EAAoB,KACpBC,EAAmB,KAwDvB,SAASC,EAAgBt+L,GAExB,IAAM07U,EAAkBD,EAAuBx3W,QAAS+7B,EAAMu7L,aAE9D,IAA2B,IAAtBmgJ,EAAL,CAMA,IAAMn9I,EAAaR,EAAa29I,QAEZ75W,IAAf08N,GAEJA,EAAWvoM,cAAe,CAAE35B,KAAM2jC,EAAM3jC,KAAM8+B,KAAM6E,EAAMu7L,aAN3D,CAUD,CAEA,SAASiD,IAERthC,EAAQvtK,oBAAqB,SAAU2uM,GACvCphC,EAAQvtK,oBAAqB,cAAe2uM,GAC5CphC,EAAQvtK,oBAAqB,YAAa2uM,GAC1CphC,EAAQvtK,oBAAqB,UAAW2uM,GACxCphC,EAAQvtK,oBAAqB,eAAgB2uM,GAC7CphC,EAAQvtK,oBAAqB,aAAc2uM,GAC3CphC,EAAQvtK,oBAAqB,MAAO6uM,GACpCthC,EAAQvtK,oBAAqB,qBAAsB+uM,GAEnD,IAAM,IAAIvqO,EAAI,EAAGA,EAAI4pO,EAAY1uO,OAAQ8E,IAAO,CAE/C,IAAMonO,EAAckgJ,EAAwBtnX,GAEvB,OAAhBonO,IAELkgJ,EAAwBtnX,GAAM,KAE9B4pO,EAAa5pO,GAAI8pF,WAAYs9I,GAE9B,CAEA6C,EAAoB,KACpBC,EAAmB,KAInB90C,EAASW,gBAAiB2zC,GAE1BH,EAAc,KACdD,EAAc,KACdD,EAAY,KACZtgC,EAAU,KACV4gC,EAAkB,KAIlBl5L,EAAUshC,OAEVu+G,EAAMg6C,cAAe,EAErBh6C,EAAMzuJ,cAAe,CAAE35B,KAAM,cAE9B,CA4KA,SAASqiO,EAAsB1+L,GAI9B,IAAM,IAAI7rC,EAAI,EAAGA,EAAI6rC,EAAM4+L,QAAQvvO,OAAQ8E,IAAO,CAEjD,IAAMonO,EAAcv7L,EAAM4+L,QAASzqO,GAC7BkS,EAAQo1W,EAAuBx3W,QAASs3N,GAEzCl1N,GAAS,IAEbo1W,EAAwBp1W,GAAU,KAClC03N,EAAa13N,GAAQ2vB,cAAe,CAAE35B,KAAM,eAAgB8+B,KAAMogM,IAIpE,CAIA,IAAM,IAAIpnO,EAAI,EAAGA,EAAI6rC,EAAM6+L,MAAMxvO,OAAQ8E,IAAO,CAE/C,IAAMonO,EAAcv7L,EAAM6+L,MAAO1qO,GAE7BunX,EAAkBD,EAAuBx3W,QAASs3N,GAEtD,IAA2B,IAAtBmgJ,EAA0B,CAI9B,IAAM,IAAIvnX,EAAI,EAAGA,EAAI4pO,EAAY1uO,OAAQ8E,IAAO,CAE/C,GAAKA,GAAKsnX,EAAuBpsX,OAAS,CAEzCosX,EAAuBlnX,KAAMgnO,GAC7BmgJ,EAAkBvnX,EAClB,KAED,CAAO,GAAqC,OAAhCsnX,EAAwBtnX,GAAe,CAElDsnX,EAAwBtnX,GAAMonO,EAC9BmgJ,EAAkBvnX,EAClB,KAED,CAED,CAIA,IAA2B,IAAtBunX,EAA0B,KAEhC,CAEA,IAAMn9I,EAAaR,EAAa29I,GAE3Bn9I,GAEJA,EAAWvoM,cAAe,CAAE35B,KAAM,YAAa8+B,KAAMogM,GAIvD,CAED,CAhWA4T,EAAKrQ,kBAAmB,EACxBqQ,EAAK7mD,SAAU,EAEf6mD,EAAK1Q,cAAe,EAEpB0Q,EAAKpQ,cAAgB,SAAW14N,GAE/B,IAAIk4N,EAAaR,EAAa13N,GAS9B,YAPoBxE,IAAf08N,IAEJA,EAAa,IAAI3D,GACjBmD,EAAa13N,GAAUk4N,GAIjBA,EAAWS,mBAEnB,EAEAmQ,EAAKlQ,kBAAoB,SAAW54N,GAEnC,IAAIk4N,EAAaR,EAAa13N,GAS9B,YAPoBxE,IAAf08N,IAEJA,EAAa,IAAI3D,GACjBmD,EAAa13N,GAAUk4N,GAIjBA,EAAWW,cAEnB,EAEAiQ,EAAKhQ,QAAU,SAAW94N,GAEzB,IAAIk4N,EAAaR,EAAa13N,GAS9B,YAPoBxE,IAAf08N,IAEJA,EAAa,IAAI3D,GACjBmD,EAAa13N,GAAUk4N,GAIjBA,EAAWa,cAEnB,EAsEA+P,EAAK9P,0BAA4B,SAAWnpO,GAE3CmnO,EAAyBnnO,GAEG,IAAvBuuL,EAAMg6C,cAEVjzN,QAAQk/C,KAAM,wEAIhB,EAEAykL,EAAK7P,sBAAwB,SAAWppO,GAEvConO,EAAqBpnO,GAEO,IAAvBuuL,EAAMg6C,cAEVjzN,QAAQk/C,KAAM,2EAIhB,EAEAykL,EAAK5P,kBAAoB,WAExB,OAAOi8I,GAAwBhgJ,CAEhC,EAEA2T,EAAKwsI,kBAAoB,SAAWC,GAEnCJ,EAAuBI,CAExB,EAEAzsI,EAAK3P,aAAe,WAEnB,OAAuB,OAAhB/B,EAAuBA,EAAcC,CAE7C,EAEAyR,EAAK1P,WAAa,WAEjB,OAAOjC,CAER,EAEA2R,EAAKzP,SAAW,WAEf,OAAO/B,CAER,EAEAwR,EAAKhyC,WAAa,WAEjB,OAAOD,CAER,EAEAiyC,EAAKxP,WAAU,eAAAl+N,EAAA6yE,GAAAC,EAAAA,MAAG,SAAAE,EAAiBv+E,GAAK,IAAA0pO,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAzrJ,EAAAA,MAAA,SAAAm/L,GAAA,cAAAA,EAAAh5Q,KAAAg5Q,EAAA/4Q,MAAA,OAEvB,GAEC,QAFjBuiM,EAAUhnM,GAEW,CAAAw9Q,EAAA/4Q,KAAA,SAWmD,GATvEkjO,EAAsBt0C,EAASI,kBAE/BuT,EAAQ7hM,iBAAkB,SAAUijO,GACpCphC,EAAQ7hM,iBAAkB,cAAeijO,GACzCphC,EAAQ7hM,iBAAkB,YAAaijO,GACvCphC,EAAQ7hM,iBAAkB,UAAWijO,GACrCphC,EAAQ7hM,iBAAkB,eAAgBijO,GAC1CphC,EAAQ7hM,iBAAkB,aAAcijO,GACxCphC,EAAQ7hM,iBAAkB,MAAOmjO,GACjCthC,EAAQ7hM,iBAAkB,qBAAsBqjO,IAEf,IAA5B/0J,EAAWu2J,aAAqB,CAAAwzC,EAAA/4Q,KAAA,gBAAA+4Q,EAAA/4Q,KAAA,GAE9B0pD,EAAG87K,mBAAkB,QA6EA,YAzEUt+N,IAA/Bq7L,EAAQwoB,YAAYt5C,SAA+D,IAAnCmd,EAAS0E,aAAaC,UAEtE0xC,EAAY,CACjBQ,eAA4Cv+N,IAA/Bq7L,EAAQwoB,YAAYt5C,QAAyBziG,EAAWy2J,UACrE5yE,MAAO7jF,EAAW6jF,MAClBxnD,MAAOr8B,EAAWq8B,MAClBglF,QAASrhH,EAAWqhH,QACpBqyC,uBAAwBA,GAGzBK,EAAc,IAAI2C,aAAcnjC,EAAS74I,EAAIu7K,GAE7C1iC,EAAQojC,kBAAmB,CAAEC,UAAW7C,IAExCI,EAAkB,IAAIrlE,GACrBilE,EAAY8C,iBACZ9C,EAAY+C,kBACZ,CACCzqE,OAAQxS,GACRnnJ,KAAMsmJ,GACNuT,SAAUqzB,EAASM,eACnB7wB,cAAervF,EAAWqhH,YAMxB60C,EAAc,KACdC,EAAY,KACZC,EAAgB,KAEfp2J,EAAWq8B,QAEf+5H,EAAgBp2J,EAAWqhH,QAAU,MAAQ,MAC7C60C,EAAcl2J,EAAWqhH,QAAUpnC,GAAqBD,GACxDm8E,EAAYn2J,EAAWqhH,QAAU3nC,GAAqBL,IAIjDg9E,EAAsB,CAC3BU,YAAa,MACbb,YAAaE,EACbpc,YAAa0Z,GAGdG,EAAY,IAAImD,eAAgBzjC,EAAS74I,GAEzCo5K,EAAcD,EAAUoD,sBAAuBZ,GAE/C9iC,EAAQojC,kBAAmB,CAAEl0D,OAAQ,CAAEqxD,KAEvCK,EAAkB,IAAIrlE,GACrBglE,EAAYoD,aACZpD,EAAYqD,cACZ,CACC9qE,OAAQxS,GACRnnJ,KAAMsmJ,GACNsW,aAAc,IAAI4jE,GAAcY,EAAYoD,aAAcpD,EAAYqD,cAAehB,OAAWj+N,OAAWA,OAAWA,OAAWA,OAAWA,OAAWA,EAAWg+N,GAClK7mE,cAAervF,EAAWqhH,QAC1B90B,SAAUqzB,EAASM,eACnB3wB,QAASvvF,EAAWy2J,UAAY,EAAI,IAGP72C,EAASnkL,WAAWoiB,IAAKs2M,GACjCpH,oBAAsB+G,EAAYhH,mBAI1DqH,EAAgB/d,kBAAmB,EAGnCtoN,KAAKspO,aAAc,GAEnBy6I,EAAuB,KAAK9nG,EAAA/4Q,KAAA,GACLuiM,EAAQ8jC,sBAAuB1D,GAAoB,QAA1E9B,EAAck4C,EAAAh/L,KAEd9vC,EAAUmpJ,WAAYmP,GACtBt4J,EAAUrC,QAEVkiJ,EAAMg6C,cAAe,EAErBh6C,EAAMzuJ,cAAe,CAAE35B,KAAM,iBAAmB,yBAAAq3Q,EAAAxtM,OAAA,GAAAuO,EAAA,UAIjD,gBAAAwsJ,GAAA,OAAAx/N,EAAAlK,MAAA,KAAAG,UAAA,EA5Gc,GAkLf,IAAMwpO,EAAa,IAAI3iE,GACjB4iE,EAAa,IAAI5iE,GAyDvB,SAAS6iE,EAAc/hE,EAAQ1qG,GAEd,OAAXA,EAEJ0qG,EAAOK,YAAYvM,KAAMkM,EAAOlO,QAIhCkO,EAAOK,YAAY3Q,iBAAkBp6F,EAAO+qG,YAAaL,EAAOlO,QAIjEkO,EAAOE,mBAAmBpM,KAAMkM,EAAOK,aAAcn4B,QAEtD,CAEA4nG,EAAK/N,aAAe,SAAW/hE,GAE9B,GAAiB,OAAZ69B,EAAL,CAEAihC,EAAS7yD,KAAO4yD,EAAQ5yD,KAAO2yD,EAAQ3yD,KAAOjM,EAAOiM,KACrD6yD,EAAS5yD,IAAM2yD,EAAQ3yD,IAAM0yD,EAAQ1yD,IAAMlM,EAAOkM,IAE7C6yD,IAAsBD,EAAS7yD,MAAQ+yD,IAAqBF,EAAS5yD,MAIzE2xB,EAAQojC,kBAAmB,CAC1Be,UAAWlD,EAAS7yD,KACpBg2D,SAAUnD,EAAS5yD,MAGpB6yD,EAAoBD,EAAS7yD,KAC7B+yD,EAAmBF,EAAS5yD,KAI7B,IAAM52G,EAAS0qG,EAAO1qG,OAChBylK,EAAU+D,EAAS/D,QAEzBgH,EAAcjD,EAAUxpK,GAExB,IAAM,IAAIxgE,EAAI,EAAGA,EAAIimO,EAAQ/qO,OAAQ8E,IAEpCitO,EAAchH,EAASjmO,GAAKwgE,GAI7BwpK,EAASz+D,YAAYsO,UAAWmwD,EAASnnK,SAAUmnK,EAAStjE,WAAYsjE,EAASrvF,OAIjFuwB,EAAOlO,OAAOgC,KAAMgrE,EAAShtE,QAC7BkO,EAAOlO,OAAO6c,UAAW3O,EAAOroG,SAAUqoG,EAAOxE,WAAYwE,EAAOvwB,OAIpE,IAFA,IAAMz5H,EAAWgqJ,EAAOhqJ,SAEdlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5CkhB,EAAUlhB,GAAI66K,mBAAmB,GAMV,IAAnBorD,EAAQ/qO,OAlHd,SAAiCgwK,EAAQ4+D,EAASC,GAEjDgD,EAAW7yD,sBAAuB4vD,EAAQv+D,aAC1CyhE,EAAW9yD,sBAAuB6vD,EAAQx+D,aAE1C,IAAM6hE,EAAML,EAAWp8D,WAAYq8D,GAE7BK,EAAQvD,EAAQz+D,iBAAiB/hC,SACjCgkG,EAAQvD,EAAQ1+D,iBAAiB/hC,SAKjC6tC,EAAOk2D,EAAO,KAASA,EAAO,IAAO,GACrCj2D,EAAMi2D,EAAO,KAASA,EAAO,IAAO,GACpCE,GAAWF,EAAO,GAAM,GAAMA,EAAO,GACrCG,GAAcH,EAAO,GAAM,GAAMA,EAAO,GAExCI,GAAYJ,EAAO,GAAM,GAAMA,EAAO,GACtCK,GAAaJ,EAAO,GAAM,GAAMA,EAAO,GACvCh+L,EAAO6nI,EAAOs2D,EACd3qK,EAAQq0G,EAAOu2D,EAIfC,EAAUP,IAAUK,EAAUC,GAC9BE,EAAUD,GAAYF,EAG5B3D,EAAQv+D,YAAYsO,UAAW3O,EAAOroG,SAAUqoG,EAAOxE,WAAYwE,EAAOvwB,OAC1EuwB,EAAO2iE,WAAYD,GACnB1iE,EAAO4iE,WAAYH,GACnBziE,EAAOK,YAAYsJ,QAAS3J,EAAOroG,SAAUqoG,EAAOxE,WAAYwE,EAAOvwB,OACvEuwB,EAAOE,mBAAmBpM,KAAMkM,EAAOK,aAAcn4B,SAKrD,IAAM26F,EAAQ52D,EAAOw2D,EACfK,EAAO52D,EAAMu2D,EACbM,EAAQ3+L,EAAOs+L,EACfM,EAASprK,GAAUsqK,EAAMQ,GACzBO,EAAOZ,EAASn2D,EAAM42D,EAAOD,EAC7BK,EAAUZ,EAAYp2D,EAAM42D,EAAOD,EAEzC7iE,EAAOG,iBAAiBipB,gBAAiB25C,EAAOC,EAAQC,EAAMC,EAASL,EAAOC,EAE/E,CAqEEK,CAAwBrE,EAAUF,EAASC,GAM3CC,EAAS3+D,iBAAiBrM,KAAM8qE,EAAQz+D,iBAvDX,CA2D/B,EAEA2vE,EAAK1M,UAAY,WAEhB,OAAOtE,CAER,EAEAgR,EAAKzM,aAAe,WAEnB,OAAqB,OAAhBjF,EAEGA,EAAYkF,eAIC,OAAhBjF,EAEGA,EAAYiF,oBAFpB,CAQD,EAEAwM,EAAKpO,aAAe,SAAW6B,GAKT,OAAhBnF,IAEJA,EAAYkF,eAAiBC,GAIT,OAAhBlF,QAAuD77N,IAA/B67N,EAAYiF,iBAExCjF,EAAYiF,eAAiBC,EAI/B,EAIA,IAAIC,EAA2B,KA8G/B,IAAMj+L,EAAY,IAAI4oJ,GAUQ,OAR9B5oJ,EAAUkpJ,kBA9GV,SAA2BpuJ,EAAMmuJ,GAKhC,GAHA0vC,EAAO1vC,EAAMi1C,cAAe04I,GAAwBhgJ,GACpDmC,EAAU9vC,EAEI,OAAT0vC,EAAgB,CAEpB,IAAMwF,EAAQxF,EAAKwF,MAEE,OAAhBrF,IAEJn0C,EAASy5C,2BAA4BlF,EAAiBJ,EAAYlP,aAClEjlC,EAASW,gBAAiB4zC,IAI3B,IAAImF,GAAsB,EAIrBF,EAAM1zO,SAAW8uO,EAAS/D,QAAQ/qO,SAEtC8uO,EAAS/D,QAAQ/qO,OAAS,EAC1B4zO,GAAsB,GAIvB,IAAM,IAAI9uO,EAAI,EAAGA,EAAI4uO,EAAM1zO,OAAQ8E,IAAO,CAEzC,IAAM6kC,EAAO+pM,EAAO5uO,GAEhB0kK,EAAW,KAEf,GAAqB,OAAhB6kE,EAEJ7kE,EAAW6kE,EAAYlU,YAAaxwL,OAE9B,CAEN,IAAMkqM,EAAa1F,EAAU2F,gBAAiB1F,EAAazkM,GAC3D6/H,EAAWqqE,EAAWrqE,SAGX,IAAN1kK,IAEJo1L,EAAS65C,wBACRtF,EACAoF,EAAWlN,aACXyH,EAAYhH,uBAAoB50N,EAAYqhO,EAAWG,qBAExD95C,EAASW,gBAAiB4zC,GAI5B,CAEA,IAAIz+D,EAAS+6D,EAASjmO,QAEN0N,IAAXw9J,KAEJA,EAAS,IAAIioB,IACNlb,OAAOu0C,OAAQxsN,GACtBkrK,EAAOxG,SAAW,IAAIxB,GACtB+iE,EAASjmO,GAAMkrK,GAIhBA,EAAOlO,OAAOC,UAAWp4H,EAAK+2F,UAAUohC,QACxCkO,EAAOG,iBAAiBpO,UAAWp4H,EAAKwmI,kBACxCH,EAAOxG,SAASnyI,IAAKmyI,EAASllK,EAAGklK,EAAS/5J,EAAG+5J,EAASjzJ,MAAOizJ,EAAShzJ,QAE3D,IAAN1R,GAEJgqO,EAAShtE,OAAOgC,KAAMkM,EAAOlO,SAID,IAAxB8xE,GAEJ9E,EAAS/D,QAAQ7lO,KAAM8qK,EAIzB,CAED,CAIA,IAAM,IAAIlrK,EAAI,EAAGA,EAAI4pO,EAAY1uO,OAAQ8E,IAAO,CAE/C,IAAMonO,EAAckgJ,EAAwBtnX,GACtCoqO,EAAaR,EAAa5pO,GAEX,OAAhBonO,QAAuC15N,IAAf08N,GAE5BA,EAAWxjE,OAAQwgE,EAAa1tC,EAAO2tL,GAAwBhgJ,EAIjE,CAEKqH,GAA2BA,EAA0BnjM,EAAMmuJ,GAEhE8vC,EAAU,IAEX,IAMAwR,EAAKrhD,iBAAmB,SAAWl+I,GAElCizL,EAA2BjzL,CAE5B,EAEAu/L,EAAKh2E,QAAU,WAAa,EAAEg2E,CAE/B,CAAC,OAAAnuO,EAAAi8N,EAAA,CApsBgB,CAASl0E,IAwsB3B,SAASu6E,GAAgB/5C,EAAUnkL,GAmGlC,SAASm+N,EAAuB19C,EAAUvV,GAEzCuV,EAAS55J,QAAQ/1B,MAAQo6K,EAASrkJ,QAE7BqkJ,EAASrxI,OAEb4mJ,EAASoS,QAAQ/hM,MAAMi9J,KAAMmd,EAASrxI,OAIlCqxI,EAAS0F,UAEb6P,EAAS7P,SAAS9/K,MAAMi9J,KAAMmd,EAAS0F,UAAWhpB,eAAgBsjB,EAAS2F,mBAIvE3F,EAASt8K,MAEb6xL,EAAS7xL,IAAIkC,MAAQo6K,EAASt8K,KAI1Bs8K,EAASuG,WAEbgP,EAAShP,SAAS3gL,MAAQo6K,EAASuG,UAI/BvG,EAAS4G,UAEb2O,EAAS3O,QAAQhhL,MAAQo6K,EAAS4G,QAClC2O,EAAS1O,UAAUjhL,MAAQo6K,EAAS6G,UAC/B7G,EAASgD,OAASz0B,KAAWgnC,EAAS1O,UAAUjhL,QAAW,IAI5Do6K,EAASiH,kBAEbsO,EAAStO,gBAAgBrhL,MAAQo6K,EAASiH,gBAC1CsO,EAASrO,kBAAkBthL,MAAQo6K,EAASkH,kBAC5CqO,EAASpO,iBAAiBvhL,MAAQo6K,EAASmH,kBAIvCnH,EAASsH,cAEbiO,EAASjO,YAAY1hL,MAAQo6K,EAASsH,aAIlCtH,EAAS8G,YAEbyO,EAASzO,UAAUlhL,MAAQo6K,EAAS8G,UACpCyO,EAASvO,YAAYphL,MAAMi9J,KAAMmd,EAASgH,aACrChH,EAASgD,OAASz0B,IAAWgnC,EAASvO,YAAYphL,MAAMmoL,UAIzD/N,EAASuH,cAEbgO,EAAShO,YAAY3hL,MAAQo6K,EAASuH,aAIlCvH,EAAS0I,UAAY,IAEzB6M,EAAS7M,UAAU9iL,MAAQo6K,EAAS0I,WAIrC,IAoDIwqD,EA2GAC,EA/JEzrD,EAAS5yK,EAAWoiB,IAAK8oJ,GAAW0H,OAc1C,GAZKA,IAEJ6N,EAAS7N,OAAO9hL,MAAQ8hL,EAExB6N,EAASyS,WAAWpiM,MAAU8hL,EAAOuS,gBAAkD,IAAjCvS,EAAOphB,uBAAsC,EAAI,EAEvGivB,EAAS1N,aAAajiL,MAAQo6K,EAAS6H,aACvC0N,EAAS0S,IAAIriM,MAAQo6K,EAASioB,IAC9B1S,EAASzN,gBAAgBliL,MAAQo6K,EAAS8H,iBAItC9H,EAASwG,SAAW,CAExB+O,EAAS/O,SAAS5gL,MAAQo6K,EAASwG,SAGnC,IAAM6sC,GAAqD,IAArCp6B,EAASiyB,wBAAqC9mN,KAAK00J,GAAK,EAE9Ey8B,EAAS9O,kBAAkB7gL,MAAQo6K,EAASyG,kBAAoB4sC,CAEjE,CAEKrzC,EAAS0G,QAEb6O,EAAS7O,MAAM9gL,MAAQo6K,EAAS0G,MAChC6O,EAAS5O,eAAe/gL,MAAQo6K,EAAS2G,gBA0BrC3G,EAASt8K,IAEbwvO,EAAalzD,EAASt8K,IAEXs8K,EAASuH,YAEpB2rD,EAAalzD,EAASuH,YAEXvH,EAASiH,gBAEpBisD,EAAalzD,EAASiH,gBAEXjH,EAAS8G,UAEpBosD,EAAalzD,EAAS8G,UAEX9G,EAAS4G,QAEpBssD,EAAalzD,EAAS4G,QAEX5G,EAASoH,aAEpB8rD,EAAalzD,EAASoH,aAEXpH,EAASqH,aAEpB6rD,EAAalzD,EAASqH,aAEXrH,EAASuG,SAEpB2sD,EAAalzD,EAASuG,SAEXvG,EAASsH,YAEpB4rD,EAAalzD,EAASsH,YAEXtH,EAASkG,aAEpBgtD,EAAalzD,EAASkG,aAEXlG,EAASoG,mBAEpB8sD,EAAalzD,EAASoG,mBAEXpG,EAASmG,sBAEpB+sD,EAAalzD,EAASmG,sBAEXnG,EAASmoM,eAEpBj1I,EAAalzD,EAASmoM,eAEXnoM,EAASooM,wBAEpBl1I,EAAalzD,EAASooM,wBAEXpoM,EAASwH,qBAEpB0rD,EAAalzD,EAASwH,qBAEXxH,EAASyH,iBAEpByrD,EAAalzD,EAASyH,iBAEXzH,EAASiI,gBAEpBirD,EAAalzD,EAASiI,gBAEXjI,EAASmI,aAEpB+qD,EAAalzD,EAASmI,aAEXnI,EAAS20B,cAEpBu+B,EAAalzD,EAAS20B,cAEX30B,EAAS40B,oBAEpBs+B,EAAalzD,EAAS40B,wBAIHrjM,IAAf2hO,IAGCA,EAAWpqE,sBAEfoqE,EAAaA,EAAW1qE,UAIY,IAAhC0qE,EAAWntE,kBAEfmtE,EAAW11D,eAIZ+X,EAASqS,YAAYhiM,MAAMi9J,KAAMqwE,EAAWryE,SAUxCmf,EAAS0G,MAEbysD,EAAcnzD,EAAS0G,MAEZ1G,EAASwG,WAEpB2sD,EAAcnzD,EAASwG,eAIHj1K,IAAhB4hO,IAGCA,EAAYrqE,sBAEhBqqE,EAAcA,EAAY3qE,UAIW,IAAjC2qE,EAAYptE,kBAEhBotE,EAAY31D,eAIb+X,EAASsS,aAAajiM,MAAMi9J,KAAMswE,EAAYtyE,QAIhD,CAoTA,MAAO,CACNuyE,mBA1pBD,SAA6B79C,EAAUzS,GAEtCyS,EAASuT,SAASljM,MAAMi9J,KAAMigB,EAAIn0I,OAE7Bm0I,EAAIuwD,OAER99C,EAASqT,QAAQhjM,MAAQk9K,EAAI9H,KAC7Bua,EAASsT,OAAOjjM,MAAQk9K,EAAI7H,KAEjB6H,EAAI6sC,YAEfp6B,EAASoT,WAAW/iM,MAAQk9K,EAAIwwD,QAIlC,EA4oBCC,wBA1oBD,SAAkCh+C,EAAUvV,EAAUt/B,EAAYnrI,EAAQi+N,GAEpExzD,EAASwJ,qBAIFxJ,EAASyzD,sBAFpBR,EAAuB19C,EAAUvV,GAMtBA,EAAS0zD,oBAEpBT,EAAuB19C,EAAUvV,GA6cnC,SAA8BuV,EAAUvV,GAElCA,EAAS+H,cAEbwN,EAASxN,YAAYniL,MAAQo6K,EAAS+H,YAIxC,CApdE4rD,CAAqBp+C,EAAUvV,IAEpBA,EAAS4zD,qBAEpBX,EAAuB19C,EAAUvV,GAicnC,SAA+BuV,EAAUvV,GAExCuV,EAAS3P,SAAShgL,MAAMi9J,KAAMmd,EAAS4F,UACvC2P,EAASxP,UAAUngL,MAAQxB,KAAKC,IAAK27K,EAAS+F,UAAW,KAE1D,CArcE8tD,CAAsBt+C,EAAUvV,IAErBA,EAAS8uC,wBAEpBmkB,EAAuB19C,EAAUvV,GA6cnC,SAAkCuV,EAAUvV,GAE3CuV,EAASlQ,UAAUz/K,MAAQo6K,EAASqF,UACpCkQ,EAASjQ,UAAU1/K,MAAQo6K,EAASsF,UAE/BtF,EAASoH,eAEbmO,EAASnO,aAAaxhL,MAAQo6K,EAASoH,cAInCpH,EAASqH,eAEbkO,EAASlO,aAAazhL,MAAQo6K,EAASqH,cAIxC,IAAMK,EAAS5yK,EAAWoiB,IAAK8oJ,GAAW0H,OAErCA,IAGJ6N,EAAS3N,gBAAgBhiL,MAAQo6K,EAAS4H,gBAI5C,CAteEksD,CAAyBv+C,EAAUvV,GAE9BA,EAAS+zD,wBAsehB,SAAkCx+C,EAAUvV,EAAUwzD,GAErDj+C,EAAS0S,IAAIriM,MAAQo6K,EAASioB,IAEzBjoB,EAASuF,MAAQ,IAErBgQ,EAAS/P,WAAW5/K,MAAMi9J,KAAMmd,EAASwF,YAAa9oB,eAAgBsjB,EAASuF,OAE/EgQ,EAAS9P,eAAe7/K,MAAQo6K,EAASyF,eAEpCzF,EAAS20B,gBAEbpf,EAASof,cAAc/uM,MAAQo6K,EAAS20B,eAIpC30B,EAAS40B,oBAEbrf,EAASqf,kBAAkBhvM,MAAQo6K,EAAS40B,oBAMzC50B,EAASgG,UAAY,IAEzBuP,EAASvP,UAAUpgL,MAAQo6K,EAASgG,UACpCuP,EAAStP,mBAAmBrgL,MAAQo6K,EAASiG,mBAExCjG,EAASkG,eAEbqP,EAASrP,aAAatgL,MAAQo6K,EAASkG,cAInClG,EAASmG,wBAEboP,EAASpP,sBAAsBvgL,MAAQo6K,EAASmG,uBAI5CnG,EAASoG,qBAEbmP,EAASlP,qBAAqBzgL,MAAMi9J,KAAMmd,EAASqG,sBACnDkP,EAASnP,mBAAmBxgL,MAAQo6K,EAASoG,mBAExCpG,EAASgD,OAASz0B,IAEtBgnC,EAASlP,qBAAqBzgL,MAAMmoL,WAQlC/N,EAASgoM,YAAc,IAE3BzyL,EAASyyL,YAAYpiX,MAAQo6K,EAASgoM,YACtCzyL,EAAS0yL,eAAeriX,MAAQo6K,EAASioM,eACzC1yL,EAAS4zL,4BAA4BvjX,MAAQo6K,EAASkoM,0BAA2B,GACjF3yL,EAAS6zL,4BAA4BxjX,MAAQo6K,EAASkoM,0BAA2B,GAE5EloM,EAASmoM,iBAEb5yL,EAAS4yL,eAAeviX,MAAQo6K,EAASmoM,gBAIrCnoM,EAASooM,0BAEb7yL,EAAS6yL,wBAAwBxiX,MAAQo6K,EAASooM,0BAM/CpoM,EAASgI,aAAe,IAE5BuN,EAASvN,aAAapiL,MAAQo6K,EAASgI,aACvCuN,EAASuf,uBAAuBlvM,MAAQ4tO,EAAyBhrE,QACjE+sB,EAASsf,wBAAwBjvM,MAAMwwB,IAAKo9M,EAAyBl+N,MAAOk+N,EAAyBj+N,QAEhGyqK,EAASiI,kBAEbsN,EAAStN,gBAAgBriL,MAAQo6K,EAASiI,iBAI3CsN,EAASrN,UAAUtiL,MAAQo6K,EAASkI,UAE/BlI,EAASmI,eAEboN,EAASpN,aAAaviL,MAAQo6K,EAASmI,cAIxCoN,EAASnN,oBAAoBxiL,MAAQo6K,EAASoI,oBAC9CmN,EAASlN,iBAAiBziL,MAAMi9J,KAAMmd,EAASqI,mBAIhDkN,EAAS1P,kBAAkBjgL,MAAQo6K,EAAS6F,kBAC5C0P,EAASzP,cAAclgL,MAAMi9J,KAAMmd,EAAS8F,eAEvC9F,EAASwH,uBAEb+N,EAAS/N,qBAAqB5hL,MAAQo6K,EAASwH,sBAI3CxH,EAASyH,mBAEb8N,EAAS9N,iBAAiB7hL,MAAQo6K,EAASyH,iBAI7C,CAzlBGusD,CAAyBz+C,EAAUvV,EAAUwzD,IAInCxzD,EAASi0D,sBAEpBhB,EAAuB19C,EAAUvV,GAqlBnC,SAAgCuV,EAAUvV,GAEpCA,EAASsG,SAEbiP,EAASjP,OAAO1gL,MAAQo6K,EAASsG,OAInC,CA5lBE4tD,CAAuB3+C,EAAUvV,IAEtBA,EAASw1C,oBAEpByd,EAAuB19C,EAAUvV,GAEtBA,EAAS41C,wBAEpBqd,EAAuB19C,EAAUvV,GAslBnC,SAAkCuV,EAAUvV,GAE3CuV,EAASiW,kBAAkB5lM,MAAMi9J,KAAMmd,EAASwrB,mBAChDjW,EAASkW,aAAa7lM,MAAQo6K,EAASyrB,aACvClW,EAASmW,YAAY9lM,MAAQo6K,EAAS0rB,WAEvC,CA3lBEyoC,CAAyB5+C,EAAUvV,IAExBA,EAASo0D,qBAEpBnB,EAAuB19C,EAAUvV,GAEtBA,EAASq0D,qBAqStB,SAA8B9+C,EAAUvV,GAEvCuV,EAASoS,QAAQ/hM,MAAMi9J,KAAMmd,EAASrxI,OACtC4mJ,EAAS55J,QAAQ/1B,MAAQo6K,EAASrkJ,OAEnC,CAxSE24M,CAAqB/+C,EAAUvV,GAE1BA,EAASu0D,sBAwShB,SAA8Bh/C,EAAUvV,GAEvCuV,EAAS/M,SAAS5iL,MAAQo6K,EAASwI,SACnC+M,EAAS4V,UAAUvlM,MAAQo6K,EAASwI,SAAWxI,EAASyI,QACxD8M,EAAS/2C,MAAM54I,MAAQo6K,EAASxhC,KAEjC,CA5SGg2F,CAAqBj/C,EAAUvV,IAIrBA,EAASy0D,iBA0StB,SAAgCl/C,EAAUvV,EAAUt/B,EAAYnrI,GAE/DggL,EAASoS,QAAQ/hM,MAAMi9J,KAAMmd,EAASrxI,OACtC4mJ,EAAS55J,QAAQ/1B,MAAQo6K,EAASrkJ,QAClC45J,EAAS7oI,KAAK9mD,MAAQo6K,EAAStzH,KAAOg0F,EACtC60C,EAAS/2C,MAAM54I,MAAiB,GAAT2P,EAElByqK,EAASt8K,MAEb6xL,EAAS7xL,IAAIkC,MAAQo6K,EAASt8K,KAI1Bs8K,EAASuG,WAEbgP,EAAShP,SAAS3gL,MAAQo6K,EAASuG,UAI/BvG,EAAS0I,UAAY,IAEzB6M,EAAS7M,UAAU9iL,MAAQo6K,EAAS0I,WAQrC,IAAIwqD,EAEClzD,EAASt8K,IAEbwvO,EAAalzD,EAASt8K,IAEXs8K,EAASuG,WAEpB2sD,EAAalzD,EAASuG,eAIHh1K,IAAf2hO,KAEiC,IAAhCA,EAAWntE,kBAEfmtE,EAAW11D,eAIZ+X,EAASqS,YAAYhiM,MAAMi9J,KAAMqwE,EAAWryE,QAI9C,CA7VE6zE,CAAuBn/C,EAAUvV,EAAUt/B,EAAYnrI,GAE5CyqK,EAAS20D,iBA6VtB,SAAiCp/C,EAAUvV,GAE1CuV,EAASoS,QAAQ/hM,MAAMi9J,KAAMmd,EAASrxI,OACtC4mJ,EAAS55J,QAAQ/1B,MAAQo6K,EAASrkJ,QAClC45J,EAAS90B,SAAS76J,MAAQo6K,EAASvf,SAE9Buf,EAASt8K,MAEb6xL,EAAS7xL,IAAIkC,MAAQo6K,EAASt8K,KAI1Bs8K,EAASuG,WAEbgP,EAAShP,SAAS3gL,MAAQo6K,EAASuG,UAI/BvG,EAAS0I,UAAY,IAEzB6M,EAAS7M,UAAU9iL,MAAQo6K,EAAS0I,WAQrC,IAAIwqD,EAEClzD,EAASt8K,IAEbwvO,EAAalzD,EAASt8K,IAEXs8K,EAASuG,WAEpB2sD,EAAalzD,EAASuG,eAIHh1K,IAAf2hO,KAEiC,IAAhCA,EAAWntE,kBAEfmtE,EAAW11D,eAIZ+X,EAASqS,YAAYhiM,MAAMi9J,KAAMqwE,EAAWryE,QAI9C,CA/YE+zE,CAAwBr/C,EAAUvV,GAEvBA,EAAS60D,kBAEpBt/C,EAAS5mJ,MAAM/oC,MAAMi9J,KAAMmd,EAASrxI,OACpC4mJ,EAAS55J,QAAQ/1B,MAAQo6K,EAASrkJ,SAEvBqkJ,EAAS2W,mBAEpB3W,EAASyW,oBAAqB,EAIhC,EA+jBD,CAEA,SAAS80L,GAAqBx3T,EAAIyhC,EAAMmoG,EAAc52K,GAErD,IAAI82K,EAAU,CAAC,EACX2tL,EAAa,CAAC,EACdC,EAAyB,GAEvBC,EAAqB/tL,EAAaC,SAAa7pI,EAAGy5I,aAAc,OAAU,EA+IhF,SAASm+K,EAAmBz4K,EAASn9L,EAAOxF,GAE3C,IAAM3K,EAAQstM,EAAQttM,MAEtB,QAAwB2L,IAAnBhB,EAAOwF,GAcX,OARCxF,EAAOwF,GAFc,kBAAVnQ,EAEMA,EAIAA,EAAMyC,SAIjB,EAMP,GAAsB,kBAAVzC,GAEX,GAAK2K,EAAOwF,KAAYnQ,EAGvB,OADA2K,EAAOwF,GAAUnQ,GACV,MAIF,CAEN,IAAMgmX,EAAer7W,EAAOwF,GAE5B,IAAsC,IAAjC61W,EAAaj4M,OAAQ/tK,GAGzB,OADAgmX,EAAa/oN,KAAMj9J,IACZ,CAIT,CAID,OAAO,CAER,CA+DA,SAASimX,EAAgB34K,GAExB,IAAMttM,EAAQstM,EAAQttM,MAEhB4vF,EAAO,CACZs2R,SAAU,EACVC,QAAS,GAyDV,MApDsB,kBAAVnmX,GAIX4vF,EAAKs2R,SAAW,EAChBt2R,EAAKu2R,QAAU,GAEJnmX,EAAM83J,WAIjBloE,EAAKs2R,SAAW,EAChBt2R,EAAKu2R,QAAU,GAEJnmX,EAAMgrK,WAAahrK,EAAMg9J,SAIpCptE,EAAKs2R,SAAW,GAChBt2R,EAAKu2R,QAAU,IAEJnmX,EAAMsiK,WAIjB1yE,EAAKs2R,SAAW,GAChBt2R,EAAKu2R,QAAU,IAEJnmX,EAAMo7J,WAIjBxrE,EAAKs2R,SAAW,GAChBt2R,EAAKu2R,QAAU,IAEJnmX,EAAMs1K,WAIjB1lF,EAAKs2R,SAAW,GAChBt2R,EAAKu2R,QAAU,IAEJnmX,EAAMkhK,UAEjB5rJ,QAAQk/C,KAAM,+EAIdl/C,QAAQk/C,KAAM,uDAAwDx0D,GAIhE4vF,CAER,CAEA,SAASw2R,EAAyBt8U,GAEjC,IAAMg7U,EAAgBh7U,EAAMhnC,OAE5BgiX,EAAcrrV,oBAAqB,UAAW2sV,GAE9C,IAAMj2W,EAAQ01W,EAAuB93W,QAAS+2W,EAAcI,qBAC5DW,EAAuBz2T,OAAQj/C,EAAO,GAEtCg+C,EAAG+pI,aAAcD,EAAS6sL,EAAcnkV,YAEjCs3J,EAAS6sL,EAAcnkV,WACvBilV,EAAYd,EAAcnkV,GAElC,CAgBA,MAAO,CAENxrB,KAjWD,SAAe2vW,EAAej8K,GAE7B,IAAMw9K,EAAex9K,EAAQA,QAC7B1nL,EAAM8jW,oBAAqBH,EAAeuB,EAE3C,EA6VCxhN,OA3VD,SAAiBigN,EAAej8K,GAE/B,IAAIntC,EAASu8B,EAAS6sL,EAAcnkV,SAEpBh1B,IAAX+vJ,KAsLN,SAA+BopN,GAW9B,IANA,IAAMn1L,EAAWm1L,EAAcn1L,SAE3BrkJ,EAAS,EACPg7U,EAAY,GACdC,EAAc,EAERtoX,EAAI,EAAGmK,EAAIunL,EAASx2L,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEnD,IAAMqvM,EAAU3d,EAAU1xL,GACpB2xF,EAAOq2R,EAAgB34K,GAS7B,GALAA,EAAQk5K,OAAS,IAAIpwN,aAAcxmE,EAAKu2R,QAAU/vN,aAAasiC,mBAC/D4U,EAAQm5K,SAAWn7U,EAIdrtC,EAAI,EAQa,KANrBsoX,EAAcj7U,EAASg7U,IAEMA,EAAYC,EAIU32R,EAAKs2R,SAAa,IAIpE56U,GAAYg7U,EAAYC,EACxBj5K,EAAQm5K,SAAWn7U,GAMrBA,GAAUskD,EAAKu2R,OAEhB,EAIAI,EAAcj7U,EAASg7U,GAEJ,IAAIh7U,GAAYg7U,EAAYC,GAI/CzB,EAAc4B,OAASp7U,EACvBw5U,EAAc6B,QAAU,CAAC,CAI1B,CA/OEC,CAAsB9B,GAEtBppN,EA0BF,SAAuBopN,GAItB,IAAM+B,EAgBP,WAEC,IAAM,IAAI5oX,EAAI,EAAGA,EAAI6nX,EAAkB7nX,IAEtC,IAA+C,IAA1C4nX,EAAuB93W,QAAS9P,GAGpC,OADA4nX,EAAuBxnX,KAAMJ,GACtBA,EAQT,OAFAqX,QAAQwN,MAAO,yFAER,CAER,CAjC2BgkW,GAC1BhC,EAAcI,oBAAsB2B,EAEpC,IAAMnrN,EAASvtG,EAAGoqI,eACZzxI,EAAOg+T,EAAc4B,OACrBziM,EAAQ6gM,EAAc7gM,MAO5B,OALA91H,EAAGqqI,WAAY,MAAO98B,GACtBvtG,EAAGsqI,WAAY,MAAO3xI,EAAMm9H,GAC5B91H,EAAGqqI,WAAY,MAAO,MACtBrqI,EAAG44T,eAAgB,MAAOF,EAAmBnrN,GAEtCA,CAER,CA5CW68B,CAAcusL,GACvB7sL,EAAS6sL,EAAcnkV,IAAO+6H,EAE9BopN,EAAc3/W,iBAAkB,UAAWihX,IAM5C,IAAMC,EAAex9K,EAAQA,QAC7B1nL,EAAM0jW,iBAAkBC,EAAeuB,GAIvC,IAAM1uL,EAAQ/nG,EAAK7oF,OAAO4wL,MAErBiuL,EAAYd,EAAcnkV,MAASg3J,KAiDzC,SAA2BmtL,GAE1B,IAAMppN,EAASu8B,EAAS6sL,EAAcnkV,IAChCgvJ,EAAWm1L,EAAcn1L,SACzBhlL,EAAQm6W,EAAc6B,QAE5Bx4T,EAAGqqI,WAAY,MAAO98B,GAEtB,IAAM,IAAIz9J,EAAI,EAAGowD,EAAKshI,EAASx2L,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAErD,IAAMqvM,EAAU3d,EAAU1xL,GAI1B,IAAgD,IAA3C8nX,EAAmBz4K,EAASrvM,EAAG0M,GAAmB,CAEtD,IAAM3K,EAAQstM,EAAQttM,MAChBsrC,EAASgiK,EAAQm5K,SAED,kBAAVzmX,GAEXstM,EAAQk5K,OAAQ,GAAMxmX,EACtBmuD,EAAGwqI,cAAe,MAAOrtJ,EAAQgiK,EAAQk5K,UAIpCl5K,EAAQttM,MAAMo7J,WAIlBkyC,EAAQk5K,OAAQ,GAAMl5K,EAAQttM,MAAMunI,SAAU,GAC9C+lE,EAAQk5K,OAAQ,GAAMl5K,EAAQttM,MAAMunI,SAAU,GAC9C+lE,EAAQk5K,OAAQ,GAAMl5K,EAAQttM,MAAMunI,SAAU,GAC9C+lE,EAAQk5K,OAAQ,GAAMl5K,EAAQttM,MAAMunI,SAAU,GAC9C+lE,EAAQk5K,OAAQ,GAAMl5K,EAAQttM,MAAMunI,SAAU,GAC9C+lE,EAAQk5K,OAAQ,GAAMl5K,EAAQttM,MAAMunI,SAAU,GAC9C+lE,EAAQk5K,OAAQ,GAAMl5K,EAAQttM,MAAMunI,SAAU,GAC9C+lE,EAAQk5K,OAAQ,GAAMl5K,EAAQttM,MAAMunI,SAAU,GAC9C+lE,EAAQk5K,OAAQ,GAAMl5K,EAAQttM,MAAMunI,SAAU,GAC9C+lE,EAAQk5K,OAAQ,GAAMl5K,EAAQttM,MAAMunI,SAAU,GAC9C+lE,EAAQk5K,OAAQ,IAAOl5K,EAAQttM,MAAMunI,SAAU,GAC/C+lE,EAAQk5K,OAAQ,IAAOl5K,EAAQttM,MAAMunI,SAAU,IAI/CvnI,EAAM8oF,QAASwkH,EAAQk5K,QAIxBr4T,EAAGwqI,cAAe,MAAOrtJ,EAAQgiK,EAAQk5K,QAI3C,CAED,CAEAr4T,EAAGqqI,WAAY,MAAO,KAEvB,CA1GEwuL,CAAkBlC,GAElBc,EAAYd,EAAcnkV,IAAOg3J,EAInC,EA6TC10B,QAnBD,WAEC,IAAM,IAAMtiI,KAAMs3J,EAEjB9pI,EAAG+pI,aAAcD,EAASt3J,IAI3BklV,EAAyB,GACzB5tL,EAAU,CAAC,EACX2tL,EAAa,CAAC,CAEf,EAWD,CAUA,SAAS12I,KAAiC,IAAlBn1D,EAAUv4K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAErCD,KAAKi3O,iBAAkB,EAEvB,IAWIrJ,EAXEl1F,OAAgCtuI,IAAtBouK,EAAWx/B,OAAuBw/B,EAAWx/B,OAZ9D,WAEC,IAAMA,EAASxzF,GAAiB,UAEhC,OADAwzF,EAAO3uI,MAAM29C,QAAU,QAChBgxF,CAER,CAMuE60F,GACrEv+M,OAAkCllB,IAAvBouK,EAAWj5K,QAAwBi5K,EAAWj5K,QAAU,KAEnEuuO,OAA8B1jO,IAArBouK,EAAWjqE,OAAsBiqE,EAAWjqE,MACrDw/H,OAAkC3jO,IAAvBouK,EAAW+a,SAAwB/a,EAAW+a,QACzDy6C,OAAsC5jO,IAAzBouK,EAAWmwD,WAA0BnwD,EAAWmwD,UAC7DsF,OAAwD7jO,IAAlCouK,EAAWmF,oBAAmCnF,EAAWmF,mBAC/EuwD,OAA8D9jO,IAArCouK,EAAW21D,uBAAsC31D,EAAW21D,sBACrFC,OAAkDhkO,IAA/BouK,EAAW61D,gBAAgC71D,EAAW61D,gBAAkB,UAC3FC,OAA4ElkO,IAA5CouK,EAAW+1D,8BAA6C/1D,EAAW+1D,6BAMnGX,EAFiB,OAAbt+M,EAEKA,EAAS62M,uBAAuBpwE,WAIX3rJ,IAArBouK,EAAWziB,OAAsByiB,EAAWziB,MAItD,IAAIy4E,EAAoB,KACpBC,EAAqB,KAKnBC,EAAkB,GAClBC,EAAmB,GAIzB3uO,KAAKq0G,WAAaqkC,EAGlB14I,KAAKuU,MAAQ,CAMZkwM,mBAAmB,GAKpBzkN,KAAK4lM,WAAY,EACjB5lM,KAAK6lM,gBAAiB,EACtB7lM,KAAK8lM,gBAAiB,EACtB9lM,KAAK+lM,kBAAmB,EAIxB/lM,KAAK4uO,aAAc,EAInB5uO,KAAKi9K,eAAiB,GACtBj9K,KAAK4rM,sBAAuB,EAI5B5rM,KAAKoyL,eAAiBnjC,GAItBjvJ,KAAK+jN,yBAA0B,EAI/B/jN,KAAKsyL,YAAc7oC,GACnBzpJ,KAAK6uO,oBAAsB,EAI3BtwO,OAAOiL,iBAAkBxJ,KAAM,CAI9B8qS,YAAa,CACZ/6Q,IAAK,WAGJ,OADAhc,QAAQk/C,KAAM,uDACP,CAER,EACAhkC,IAAK,WAEJlb,QAAQk/C,KAAM,sDAEf,KAOF,IAAM/2C,EAAQlc,KAEV8uO,GAAiB,EAIjBC,EAAyB,EACzBC,EAA4B,EAC5BC,EAAuB,KACvBC,GAAuB,EAEvBC,EAAiB,KAEfC,EAAmB,IAAIxvE,GACvByvE,EAAkB,IAAIzvE,GACxB0vE,EAAsB,KAItBC,EAAS72F,EAAQvqI,MACjBqhO,EAAU92F,EAAQtqI,OAElBqhO,EAAc,EACdC,EAAc,KACdC,EAAmB,KAEjBzgB,EAAY,IAAItvD,GAAS,EAAG,EAAG2vE,EAAQC,GACvCI,EAAW,IAAIhwE,GAAS,EAAG,EAAG2vE,EAAQC,GACxCK,GAAe,EAIb9gB,EAAW,IAAIx6B,GAIjBu7C,GAAmB,EACnBC,GAAwB,EAIxBC,EAA4B,KAI1BC,EAAoB,IAAIt/D,GAExB8iB,EAAW,IAAIt+B,GACf+6E,EAAW,IAAIppE,GAEfqpE,EAAc,CAAEvwK,WAAY,KAAM+7G,IAAK,KAAMvD,YAAa,KAAMg4D,iBAAkB,KAAMj4D,SAAS,GAEvG,SAASk4D,IAER,OAAgC,OAAzBpB,EAAgCQ,EAAc,CAEtD,CAIA,IAoFInjJ,EAAYkqG,EAAc52K,EAAOyuE,EACjC1gF,EAAY4xJ,EAAUklC,EAAU8hB,EAAYr0I,EAAYwlG,EAAYgtB,EACpE4rC,EAAc34D,GAAW44D,GAAaviB,GAAcj/B,GAAU85B,GAE9DjpJ,GAAY4wK,GAAcC,GAAgBC,GAE1CvY,GAAO3xB,GAAe06K,GA1FtBhpJ,GAAM5oM,EAEV,SAAS2pH,GAAY03F,EAAcC,GAElC,IAAM,IAAIl0O,EAAI,EAAGA,EAAIi0O,EAAa/4O,OAAQ8E,IAAO,CAEhD,IAAMm0O,EAAcF,EAAcj0O,GAC5B6C,EAAUm5I,EAAQO,WAAY43F,EAAaD,GACjD,GAAiB,OAAZrxO,EAAmB,OAAOA,CAEhC,CAEA,OAAO,IAER,CAEA,IAEC,IAAMqxO,GAAoB,CACzB76E,OAAO,EACPxnD,MAAOu/H,EACPv6C,QAASw6C,EACTpF,UAAWqF,EACXrwD,mBAAoBswD,EACpBE,sBAAuBD,EACvBG,gBAAiBD,EACjBG,6BAA8BD,GAW/B,GAPK,iBAAkB51F,GAAUA,EAAQ5lI,aAAc,cAAe,aAAFrR,OAAeukJ,KAGnFtN,EAAQ90I,iBAAkB,mBAAoBktO,IAAe,GAC7Dp4F,EAAQ90I,iBAAkB,uBAAwBmtO,IAAkB,GACpEr4F,EAAQ90I,iBAAkB,4BAA6B8hX,IAAwB,GAElE,OAARxtJ,GAAe,CAEnB,IAAMyY,GAAe,CAAE,SAAU,QAAS,sBAU1C,IARgC,IAA3Bz0N,EAAM80N,kBAEVL,GAAanyM,QAMD,QAFb05L,GAAMj/E,GAAY03F,GAAcC,KAI/B,MAAK33F,GAAY03F,IAEV,IAAI7yO,MAAO,+DAIX,IAAIA,MAAO,gCAMpB,MAIsCsM,IAAjC8tN,GAAI3tB,2BAER2tB,GAAI3tB,yBAA2B,WAE9B,MAAO,CAAE,SAAY,EAAG,SAAY,EAAG,UAAa,EAErD,EAIF,CAAE,MAAQhpL,IAGT,MADAxN,QAAQwN,MAAO,wBAA0BA,GAAMm/B,SACzCn/B,EAEP,CAUA,SAAS0vN,KAER3kJ,EAAa,IAAIynH,GAAiBmkB,IAElC1hC,EAAe,IAAI4T,GAAmB8tB,GAAK5rI,EAAYksF,GAEvDlsF,EAAWioC,KAAMiiE,GAEjB2hC,GAAQ,IAAIiH,GAAYlH,GAAK5rI,EAAYkqG,GAEzC52K,EAAQ,IAAIsyM,GAAYgG,GAAK5rI,EAAYkqG,GAEzCnoG,EAAO,IAAIwmH,GACXlnM,EAAa,IAAI67M,GACjBjqD,EAAW,IAAI04D,GAAeC,GAAK5rI,EAAY1sE,EAAOjS,EAAY6oL,EAAc2hC,GAAO9pI,GACvFo2G,EAAW,IAAIyI,GAAehxL,GAC9BqqM,EAAa,IAAIjT,GAAiBp3L,GAClCg2D,EAAa,IAAIqkH,GAAiB2hC,GAAK1hC,GACvCgQ,GAAgB,IAAIL,GAAoB+xB,GAAK5rI,EAAYpa,EAAYskH,GACrE9e,EAAa,IAAIu8B,GAAiBikB,GAAKhmJ,EAAYmc,EAAMm4G,IACzD9B,EAAU,IAAImS,GAAcqhB,GAAKxgD,EAAYxlG,EAAYmc,GACzDmiJ,GAAe,IAAIj7B,GAAmB2iB,GAAK1hC,EAAcj3B,GACzDwvB,GAAW,IAAI2c,GAAe/9L,GAC9B2iO,EAAe,IAAIhqB,GAAepqM,EAAOuoL,EAAU8hB,EAAYj6H,EAAYkqG,EAAcgQ,GAAezX,IACxGpX,GAAY,IAAIk0D,GAAgB3vN,EAAOvO,GACvC4iO,GAAc,IAAInmB,GAClB4D,GAAe,IAAID,GAAmBzhI,EAAYkqG,GAClD52H,GAAa,IAAI4kI,GAAiBtoL,EAAOuoL,EAAU8hB,EAAY3mM,EAAO8kL,EAASkpC,EAAQK,GACvFplB,GAAY,IAAI+F,GAAgB1yM,EAAOwoL,EAASlO,GAChD0qL,GAAiB,IAAIkD,GAAqBlsJ,GAAK7pI,EAAMmoG,EAAc52K,GAEnE6wN,GAAiB,IAAI1mC,GAAqBmuB,GAAK5rI,EAAY+B,EAAMmoG,GACjEk6C,GAAwB,IAAI/7B,GAA4BujB,GAAK5rI,EAAY+B,EAAMmoG,GAE/EnoG,EAAK4mH,SAAWq7B,EAAar7B,SAE7B/4L,EAAMs6K,aAAeA,EACrBt6K,EAAMowE,WAAaA,EACnBpwE,EAAMvO,WAAaA,EACnBuO,EAAMq0N,YAAcA,GACpBr0N,EAAM2sM,UAAYA,GAClB3sM,EAAM0D,MAAQA,EACd1D,EAAMmyE,KAAOA,CAEd,CAEA4iJ,KAIA,IAAMz+C,GAAK,IAAIgzC,GAActpN,EAAOg8M,IA0QpC,SAAS4Y,GAAevoM,GAEvBA,EAAM9H,iBAEN1sB,QAAQC,IAAK,sCAEb86N,GAAiB,CAElB,CAEA,SAASiC,KAERh9N,QAAQC,IAAK,0CAEb86N,GAAiB,EAEjB,IAAMoC,EAAgB7iJ,EAAK6mH,UACrB2O,EAAmBgF,GAAUh4B,QAC7BsgD,EAAsBtoB,GAAUkI,WAChCqgB,EAAuBvoB,GAAUvpD,YACjCshD,EAAgBiI,GAAUjkN,KAEhCqsO,KAEA5iJ,EAAK6mH,UAAYg8B,EACjBroB,GAAUh4B,QAAUgzB,EACpBgF,GAAUkI,WAAaogB,EACvBtoB,GAAUvpD,YAAc8xE,EACxBvoB,GAAUjkN,KAAOg8M,CAElB,CAEA,SAAS8kK,GAAwBn9U,GAEhCx0B,QAAQwN,MAAO,sEAAuEgnB,EAAMo9U,cAE7F,CAEA,SAASt0I,GAAmB9oM,GAE3B,IAAMswI,EAAWtwI,EAAMhnC,OAEvBs3K,EAAS3gJ,oBAAqB,UAAWm5M,IAQ1C,SAA6Bx4D,IAS7B,SAA2CA,GAE1C,IAAMo8B,EAAWtnM,EAAWoiB,IAAK8oJ,GAAWo8B,cAE1B7qM,IAAb6qM,IAEJA,EAAS1yM,SAAS,SAAW+kM,GAE5BgpC,EAAahnB,eAAgBhiB,EAE9B,IAEKzuB,EAAS2W,kBAEb8gD,EAAa/mB,mBAAoB1wC,GAMpC,EA3BCy4D,CAAkCz4D,GAElClrK,EAAWizD,OAAQi4G,EAEpB,CAZC04D,CAAoB14D,EAErB,CAtTA74K,KAAKwyL,GAAKA,GAIVxyL,KAAKi5I,WAAa,WAEjB,OAAOi/E,EAER,EAEAl4N,KAAKmmO,qBAAuB,WAE3B,OAAOjO,GAAIiO,sBAEZ,EAEAnmO,KAAKwxO,iBAAmB,WAEvB,IAAMlrC,EAAYh6G,EAAWv8D,IAAK,sBAC7Bu2K,GAAYA,EAAUmrC,aAE5B,EAEAzxO,KAAK0xO,oBAAsB,WAE1B,IAAMprC,EAAYh6G,EAAWv8D,IAAK,sBAC7Bu2K,GAAYA,EAAUqrC,gBAE5B,EAEA3xO,KAAK4xO,cAAgB,WAEpB,OAAOnC,CAER,EAEAzvO,KAAK6xO,cAAgB,SAAWpzO,QAEhB2L,IAAV3L,IAELgxO,EAAchxO,EAEduB,KAAK8xO,QAASvC,EAAQC,GAAS,GAEhC,EAEAxvO,KAAKqsK,QAAU,SAAW9qK,GAEzB,OAAOA,EAAO0tB,IAAKsgN,EAAQC,EAE5B,EAEAxvO,KAAK8xO,QAAU,SAAW3jO,EAAOC,EAAQ2jO,GAEnCv/C,GAAGw0C,aAEPjzN,QAAQk/C,KAAM,0EAKfs8K,EAASphO,EACTqhO,EAAUphO,EAEVsqI,EAAQvqI,MAAQlR,KAAKwf,MAAOtO,EAAQshO,GACpC/2F,EAAQtqI,OAASnR,KAAKwf,MAAOrO,EAASqhO,IAEjB,IAAhBsC,IAEJr5F,EAAQruI,MAAM8D,MAAQA,EAAQ,KAC9BuqI,EAAQruI,MAAM+D,OAASA,EAAS,MAIjCpO,KAAKgyO,YAAa,EAAG,EAAG7jO,EAAOC,GAEhC,EAEApO,KAAKiyO,qBAAuB,SAAW1wO,GAEtC,OAAOA,EAAO0tB,IAAKsgN,EAASE,EAAaD,EAAUC,GAAchzN,OAElE,EAEAzc,KAAKkyO,qBAAuB,SAAW/jO,EAAOC,EAAQmrI,GAErDg2F,EAASphO,EACTqhO,EAAUphO,EAEVqhO,EAAcl2F,EAEdb,EAAQvqI,MAAQlR,KAAKwf,MAAOtO,EAAQorI,GACpCb,EAAQtqI,OAASnR,KAAKwf,MAAOrO,EAASmrI,GAEtCv5I,KAAKgyO,YAAa,EAAG,EAAG7jO,EAAOC,EAEhC,EAEApO,KAAKmyO,mBAAqB,SAAW5wO,GAEpC,OAAOA,EAAOm6J,KAAM0zE,EAErB,EAEApvO,KAAK+xN,YAAc,SAAWxwN,GAE7B,OAAOA,EAAOm6J,KAAMwzD,EAErB,EAEAlvN,KAAKgyO,YAAc,SAAW91O,EAAGmL,EAAG8G,EAAOC,GAErClS,EAAE6kK,UAENmuD,EAAUjgM,IAAK/yB,EAAEA,EAAGA,EAAEmL,EAAGnL,EAAEoL,EAAGpL,EAAEkL,GAIhC8nN,EAAUjgM,IAAK/yB,EAAGmL,EAAG8G,EAAOC,GAI7BwR,EAAMwhJ,SAAUguE,EAAiB1zE,KAAMwzD,GAAY35D,eAAgBk6E,GAAchzN,QAElF,EAEAzc,KAAKoyO,WAAa,SAAW7wO,GAE5B,OAAOA,EAAOm6J,KAAMk0E,EAErB,EAEA5vO,KAAKqyO,WAAa,SAAWn2O,EAAGmL,EAAG8G,EAAOC,GAEpClS,EAAE6kK,UAEN6uE,EAAS3gN,IAAK/yB,EAAEA,EAAGA,EAAEmL,EAAGnL,EAAEoL,EAAGpL,EAAEkL,GAI/BwoO,EAAS3gN,IAAK/yB,EAAGmL,EAAG8G,EAAOC,GAI5BwR,EAAMshJ,QAASmuE,EAAgB3zE,KAAMk0E,GAAWr6E,eAAgBk6E,GAAchzN,QAE/E,EAEAzc,KAAKsyO,eAAiB,WAErB,OAAOzC,CAER,EAEA7vO,KAAKuxN,eAAiB,SAAWghB,GAEhC3yN,EAAM2xM,eAAgBse,EAAe0C,EAEtC,EAEAvyO,KAAKwyO,cAAgB,SAAW7+N,GAE/B+7N,EAAc/7N,CAEf,EAEA3T,KAAKyyO,mBAAqB,SAAW9+N,GAEpCg8N,EAAmBh8N,CAEpB,EAIA3T,KAAKmlM,cAAgB,SAAW5jM,GAE/B,OAAOA,EAAOm6J,KAAM97F,GAAWulI,gBAEhC,EAEAnlM,KAAKolM,cAAgB,WAEpBxlI,GAAWwlI,cAActlM,MAAO8/D,GAAY3/D,UAE7C,EAEAD,KAAKqlM,cAAgB,WAEpB,OAAOzlI,GAAWylI,eAEnB,EAEArlM,KAAKslM,cAAgB,WAEpB1lI,GAAW0lI,cAAcxlM,MAAO8/D,GAAY3/D,UAE7C,EAEAD,KAAKG,MAAQ,WAAwD,IAEhEguI,EAAO,KAFiBluI,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,MAIfkuI,GAAQ,UAJqBluI,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,MAK7BkuI,GAAQ,QALqCluI,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,MAM3CkuI,GAAQ,MAEvB+pF,GAAI/3N,MAAOguI,EAEZ,EAEAnuI,KAAK6kM,WAAa,WAEjB7kM,KAAKG,OAAO,GAAM,GAAO,EAE1B,EAEAH,KAAKkzN,WAAa,WAEjBlzN,KAAKG,OAAO,GAAO,GAAM,EAE1B,EAEAH,KAAK+zN,aAAe,WAEnB/zN,KAAKG,OAAO,GAAO,GAAO,EAE3B,EAIAH,KAAK0hK,QAAU,WAEdhpB,EAAQxgH,oBAAqB,mBAAoB44M,IAAe,GAChEp4F,EAAQxgH,oBAAqB,uBAAwB64M,IAAkB,GACvEr4F,EAAQxgH,oBAAqB,4BAA6BwtV,IAAwB,GAElFn1I,GAAY7uE,UACZssD,GAAatsD,UACb/zJ,EAAW+zJ,UACX+iC,EAAS/iC,UACT6kD,EAAW7kD,UACXgjC,EAAQhjC,UACR8kC,GAAc9kC,UACdw/M,GAAex/M,UACf4uE,EAAa5uE,UAEb8wB,GAAG9wB,UAEH8wB,GAAGt6J,oBAAqB,eAAgBw6M,IACxClgD,GAAGt6J,oBAAqB,aAAcy6M,IAEjC3C,IAEJA,EAA0BtuE,UAC1BsuE,EAA4B,MAI7B7iM,GAAUshC,MAEX,EAuFAzuE,KAAKkwN,mBAAqB,SAAWtoD,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,EAAQslG,GAEhE,OAAVsqF,IAAiBA,EAAQo+C,GAE9B,IAAMhZ,EAAgBh1N,EAAOk2K,QAAUl2K,EAAO8lK,YAAYsL,cAAgB,EAEpE+zB,EAowBP,SAAqB1/B,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,IAEhC,IAAlB4vL,EAAM5Z,UAAmB4Z,EAAQo+C,GAEtC5wE,EAAS0+D,oBAET,IAAMtiD,EAAMoW,EAAMpW,IACZvD,EAAcS,EAAS8uC,uBAAyB51B,EAAM3Z,YAAc,KACpE3Z,EAAsC,OAAzBwwE,EAAkC/yN,EAAMk2K,gBAA6D,IAA1C68C,EAAqB3mB,iBAA4B2mB,EAAqB5tE,QAAQ5C,SAAWxP,GACjKsxB,GAAW1H,EAAS8uC,uBAAyBpB,EAAa9hB,GAAW10K,IAAK8oJ,EAAS0H,QAAUnI,GAC7FirC,GAAyC,IAA1BxqC,EAASiD,gBAA4BhR,EAAS54F,WAAW1qC,OAAgD,IAAvCsjI,EAAS54F,WAAW1qC,MAAMi7I,SAC3G2gC,IAAoBvqC,EAAS8G,aAAgB7U,EAAS54F,WAAWm0G,QACjEoF,IAAkB3gB,EAASgb,gBAAgBvmH,SAC3Cy2I,IAAkBlrC,EAASgb,gBAAgB/c,OAC3CktC,IAAiBnrC,EAASgb,gBAAgBt+I,MAC1C8qJ,EAAczZ,EAAS+E,WAAa1hK,EAAMo2K,YAAc7oC,GAExDw9B,EAAiBnc,EAASgb,gBAAgBvmH,UAAYurG,EAASgb,gBAAgB/c,QAAU+B,EAASgb,gBAAgBt+I,MAClHouK,OAAyCxrM,IAAnB68K,EAAiCA,EAAervL,OAAS,EAE/Ek1M,EAAqBn/L,EAAWoiB,IAAK8oJ,GACrCiW,EAAS2/C,EAAmB7uN,MAAMkvK,OAExC,IAA0B,IAArBghD,KAE2B,IAA1BC,GAAkCnoE,IAAWunE,GAAiB,CAElE,IAAMtiC,EACLjlC,IAAWunE,GACXt2D,EAASz5I,KAAO8vM,EAKjBngD,GAASvvK,SAAUq5J,EAAUjR,EAAQilC,EAEtC,CAMD,IAAI+lC,GAAqB,EAEpB/5D,EAASx/K,UAAYyzM,EAAmBouB,UAEvCpuB,EAAmB+lC,aAAiB/lC,EAAmBgmC,qBAAuBhkD,EAAOlvK,MAAMvmB,SAIpFyzM,EAAmB1a,iBAAmB3zB,GAItCt8J,EAAO61K,kBAAqD,IAAlC80B,EAAmB+V,WANxD+vB,GAAqB,EAURzwO,EAAO61K,kBAAqD,IAAlC80B,EAAmB+V,WAI/C1gN,EAAOs2K,gBAAiD,IAAhCq0B,EAAmB0W,SAEtDovB,GAAqB,EAERzwO,EAAOs2K,gBAAiD,IAAhCq0B,EAAmB0W,SAI7C1W,EAAmBvsB,SAAWA,IAIb,IAAjB1H,EAAS8C,KAAgBmxB,EAAmBnxB,MAAQA,EAF/Di3D,GAAqB,OAM+BxoO,IAAzC0iM,EAAmB2S,mBAC5B3S,EAAmB2S,oBAAsB1wB,GAASkd,WACpDa,EAAmBZ,kBAAoBnd,GAASmd,iBAIrCY,EAAmBuW,eAAiBA,GAIpCvW,EAAmBsW,iBAAmBA,GAItCtW,EAAmBrhB,eAAiBA,GAIpCqhB,EAAmBkJ,eAAiBA,GAIpClJ,EAAmBmJ,cAAgBA,GAInCnJ,EAAmBxa,cAAgBA,IAIT,IAA1BkE,EAAaC,UAAqBqW,EAAmB8I,oBAAsBA,KAtBtFg9B,GAAqB,GAJrBA,GAAqB,EAdrBA,GAAqB,EARrBA,GAAqB,GAwDtBA,GAAqB,EACrB9lC,EAAmBouB,UAAYriD,EAASx/K,SAMzC,IAAIiuM,EAAUwF,EAAmBsnB,gBAEL,IAAvBwe,IAEJtrC,EAAUyrC,GAAYl6D,EAAUkZ,EAAO5vL,IAIxC,IAAI6wO,GAAiB,EACjBC,GAAkB,EAClBC,GAAgB,EAEdC,EAAa7rC,EAAQoP,cAC1B08B,EAAatmC,EAAmB1e,SAE5BxuK,EAAMq3M,WAAY3vB,EAAQA,WAE9B0rC,GAAiB,EACjBC,GAAkB,EAClBC,GAAgB,GAIZr6D,EAASz5I,KAAO8vM,IAEpBA,EAAqBr2D,EAASz5I,GAE9B6zM,GAAkB,GAInB,GAAKD,GAAkB7D,IAAmBvnE,EAAS,CA2BlD,GAzBAurE,EAAWljN,SAAUioM,GAAK,mBAAoBtwD,EAAOG,kBAEhDyuB,EAAamU,wBAEjBwoC,EAAWljN,SAAUioM,GAAK,gBACzB,GAAQj7N,KAAK+W,IAAK4zJ,EAAOkM,IAAM,GAAQ72K,KAAKo+B,MAIzC8zM,IAAmBvnE,IAEvBunE,EAAiBvnE,EAMjBqrE,GAAkB,EAClBC,GAAgB,GAOZr6D,EAAS2W,kBACb3W,EAAS4zD,qBACT5zD,EAAS0zD,oBACT1zD,EAAS8uC,wBACT9uC,EAAS0H,OAAS,CAElB,IAAM8yD,EAAUF,EAAW52O,IAAI+2O,oBAEdlpO,IAAZipO,GAEJA,EAAQpjN,SAAUioM,GACjBgY,EAASt5D,sBAAuBhP,EAAOK,aAI1C,EAEK4Q,EAAS4zD,qBACb5zD,EAAS0zD,oBACT1zD,EAASyzD,uBACTzzD,EAASwJ,qBACTxJ,EAAS8uC,wBACT9uC,EAAS2W,mBAET2jD,EAAWljN,SAAUioM,GAAK,kBAAkD,IAAhCtwD,EAAOumC,uBAI/Ct1B,EAAS4zD,qBACb5zD,EAAS0zD,oBACT1zD,EAASyzD,uBACTzzD,EAASwJ,qBACTxJ,EAAS8uC,wBACT9uC,EAAS2W,kBACT3W,EAAS60D,kBACTvrO,EAAOs2K,gBAEP06D,EAAWljN,SAAUioM,GAAK,aAActwD,EAAOE,mBAIjD,CAMA,GAAK3lK,EAAOs2K,cAAgB,CAE3B06D,EAAWr1B,YAAaoa,GAAK/1N,EAAQ,cACrCgxO,EAAWr1B,YAAaoa,GAAK/1N,EAAQ,qBAErC,IAAMy2K,EAAWz2K,EAAOy2K,SAEnBA,IAEC4d,EAAagV,qBAEa,OAAzB5yB,EAAS26D,aAAuB36D,EAAS46D,qBAE9CL,EAAWljN,SAAUioM,GAAK,cAAet/C,EAAS26D,YAAah0E,GAC/D4zE,EAAWljN,SAAUioM,GAAK,kBAAmBt/C,EAAS66D,kBAItD1/N,QAAQk/C,KAAM,2IAMjB,CAEA,IAAM6yH,EAAkBhb,EAASgb,sBAEC17K,IAA7B07K,EAAgBvmH,eAAqDn1D,IAA3B07K,EAAgB/c,aAAoD3+J,IAA1B07K,EAAgBt+I,QAAiD,IAA1BgvJ,EAAaC,WAE5I+5C,GAAaltE,OAAQnhK,EAAQ2oK,EAAU+N,EAAUyuB,IAI7C2rC,GAAmBnmC,EAAmB72B,gBAAkB9zK,EAAO8zK,iBAEnE62B,EAAmB72B,cAAgB9zK,EAAO8zK,cAC1Ck9D,EAAWljN,SAAUioM,GAAK,gBAAiB/1N,EAAO8zK,gBAM9C4C,EAAS+sM,uBAA6C,OAApB/sM,EAAS0H,SAE/C6yD,EAAW7yD,OAAO9hL,MAAQ8hL,EAE1B6yD,EAAWvyC,WAAWpiM,MAAU8hL,EAAOuS,gBAAkD,IAAjCvS,EAAOphB,uBAAsC,EAAI,GAIrG8zE,IAEJE,EAAWljN,SAAUioM,GAAK,sBAAuBh8M,EAAM2yN,qBAElD/hC,EAAmB+lC,cA+EwBp0O,EApEJy0O,GAoEN9kD,EApENglD,GAsExBxxC,kBAAkBtiC,YAAc7gK,EACzC2vL,EAASyT,WAAWviC,YAAc7gK,EAElC2vL,EAAS0T,kBAAkBxiC,YAAc7gK,EACzC2vL,EAAS2T,wBAAwBziC,YAAc7gK,EAC/C2vL,EAASyU,YAAYvjC,YAAc7gK,EACnC2vL,EAAS0U,kBAAkBxjC,YAAc7gK,EACzC2vL,EAASkU,WAAWhjC,YAAc7gK,EAClC2vL,EAASsU,iBAAiBpjC,YAAc7gK,EACxC2vL,EAASkV,eAAehkC,YAAc7gK,EACtC2vL,EAAS+U,iBAAiB7jC,YAAc7gK,GA1ElCk9K,IAAwB,IAAjB9C,EAAS8C,KAEpBhE,GAAUs0D,mBAAoBmH,EAAYz3D,GAI3ChE,GAAUy0D,wBAAyBgH,EAAYv6D,EAAU42D,EAAaD,EAASQ,GAE/E1yB,GAAcS,OAAQma,GAAKprB,EAAmB4mC,aAAcN,EAAY7zE,IAsD1E,IAAwC6uB,EAAU3vL,EAlD5Co6K,EAAS2W,mBAAoD,IAAhC3W,EAASyW,qBAE1CguB,GAAcS,OAAQma,GAAKprB,EAAmB4mC,aAAcN,EAAY7zE,GACxEsZ,EAASyW,oBAAqB,GAI1BzW,EAAS20D,kBAEb2F,EAAWljN,SAAUioM,GAAK,SAAU/1N,EAAOk0J,QAY5C,GANA88E,EAAWljN,SAAUioM,GAAK,kBAAmB/1N,EAAOyzK,iBACpDu9D,EAAWljN,SAAUioM,GAAK,eAAgB/1N,EAAO0zK,cACjDs9D,EAAWljN,SAAUioM,GAAK,cAAe/1N,EAAO8lK,aAI3C4Q,EAAS2W,kBAAoB3W,EAAS8pC,oBAI1C,IAFA,IAAM38B,EAASnN,EAASqoM,eAEdxkX,EAAI,EAAGmK,EAAIm/K,EAAOpuL,OAAQ8E,EAAImK,EAAGnK,IAE1C,GAAK85L,EAAaC,SAAW,CAE5B,IAAMhvF,EAAQu+E,EAAQtpL,GAEtBwkX,GAAe59M,OAAQ77D,EAAO6/F,GAC9B45K,GAAettW,KAAM6zF,EAAO6/F,EAE7B,MAECvzL,QAAQk/C,KAAM,8EAQjB,OAAOq0I,CAER,CA1mCiBqsC,CAAY/rE,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,GAE/Dyd,EAAMs3M,YAAar+C,EAAUs+C,GAI7B,IAAIvoN,EAAQk8J,EAASl8J,MACf2wD,EAAWurG,EAAS54F,WAAW3S,SAIrC,GAAe,OAAV3wD,GAEJ,QAAkBxE,IAAbm1D,GAA6C,IAAnBA,EAASoe,MAAc,YAEhD,GAAqB,IAAhB/uE,EAAM+uE,MAEjB,OAMD,IAWIu4E,EAXA09E,EAAc,GAEU,IAAvB/6D,EAAS2I,YAEb5yK,EAAQ8oK,EAAW+8B,sBAAuB3pC,GAC1C8oE,EAAc,GAIfptC,GAAcyB,MAAO9lM,EAAQ02K,EAAUyuB,EAASx8B,EAAUl8J,GAG1D,IAAIkjL,EAAW2+C,GAEA,OAAV7hO,IAEJsnJ,EAAYhkF,EAAWniD,IAAKnhB,IAE5BkjL,EAAW4+C,IACF1mD,SAAU9zB,IAMpB,IAAM29E,EAAwB,OAAVjlO,EAAmBA,EAAM+uE,MAAQpe,EAASoe,MAExDm2J,EAAahpE,EAASob,UAAUp7I,MAAQ8oM,EACxCtoM,EAAaw/H,EAASob,UAAUvoG,MAAQi2J,EAExCzmD,EAAuB,OAAV1lF,EAAiBA,EAAM38D,MAAQ8oM,EAAc,EAC1D3lD,EAAuB,OAAVxmF,EAAiBA,EAAM9pB,MAAQi2J,EAAczqL,IAE1D4qL,EAAY92O,KAAKC,IAAK42O,EAAY3mD,GAClC6mD,EAAU/2O,KAAKiuC,IAAK2oM,EAAWC,EAAaxoM,EAAY6hJ,EAAac,GAAe,EAEpFgmD,EAAYh3O,KAAKC,IAAK,EAAG82O,EAAUD,EAAY,GAErD,GAAmB,IAAdE,EAAL,CAIA,GAAK9xO,EAAOk2K,QAEiB,IAAvBQ,EAAS2I,WAEb5hK,EAAMw3M,aAAcv+C,EAAS4I,mBAAqB4uD,KAClDv+C,EAASkY,QAAS,IAIlBlY,EAASkY,QAAS,QAIb,GAAK7nM,EAAOm2K,OAAS,CAE3B,IAAI++C,EAAYx+C,EAASuI,eAENh3K,IAAditN,IAA0BA,EAAY,GAE3Cz3M,EAAMw3M,aAAcC,EAAYgZ,KAE3BluO,EAAO+xO,eAEXpiD,EAASkY,QAAS,GAEP7nM,EAAOgyO,WAElBriD,EAASkY,QAAS,GAIlBlY,EAASkY,QAAS,EAIpB,MAAY7nM,EAAOo2K,SAElBuZ,EAASkY,QAAS,GAEP7nM,EAAOiyO,UAElBtiD,EAASkY,QAAS,GAInB,GAAK7nM,EAAO61K,gBAEX8Z,EAASoY,gBAAiB6pC,EAAWE,EAAW9xO,EAAOw7E,YAEjD,GAAKmtF,EAASg+B,0BAA4B,CAEhD,IAAMqM,EAAgBl4M,KAAKiuC,IAAK4/H,EAASqqC,cAAerqC,EAASs+B,mBAEjEtX,EAASoY,gBAAiB6pC,EAAWE,EAAW9+B,EAEjD,MAECrjB,EAAStsL,OAAQuuO,EAAWE,EA7DA,CAiE9B,EAIAj0O,KAAK+xM,QAAU,SAAWhgB,EAAOnqB,GAEhC,SAASspI,EAASr4H,EAAUkZ,EAAO5vL,IAEJ,IAAzB02K,EAASkD,aAAwBlD,EAASgD,OAASx0B,IAEvDwxB,EAASgD,KAAOz0B,GAChByxB,EAASvZ,aAAc,EACvByzE,GAAYl6D,EAAUkZ,EAAO5vL,GAE7B02K,EAASgD,KAAO10B,GAChB0xB,EAASvZ,aAAc,EACvByzE,GAAYl6D,EAAUkZ,EAAO5vL,GAE7B02K,EAASgD,KAAOx0B,IAIhB0rF,GAAYl6D,EAAUkZ,EAAO5vL,EAI/B,EAEAssO,EAAqBzgB,GAAaj+L,IAAKgiK,IACpBx9D,OAEnBo6G,EAAiB7xO,KAAM2xO,GAEvB18C,EAAM3a,iBAAiB,SAAWj1K,GAE5BA,EAAO20K,SAAW30K,EAAOwyK,OAAOz8K,KAAM0vK,EAAO+M,UAEjD85D,EAAmB7gB,UAAWzrN,GAEzBA,EAAO6zK,YAEXy4D,EAAmB5gB,WAAY1rN,GAMlC,IAEAssO,EAAmB/gB,YAAaxxM,EAAM6nM,yBAEtChyB,EAAM5a,UAAU,SAAWh1K,GAE1B,IAAM02K,EAAW12K,EAAO02K,SAExB,GAAKA,EAEJ,GAAKl8K,MAAM0E,QAASw3K,GAEnB,IAAM,IAAIn8K,EAAI,EAAGA,EAAIm8K,EAASjhL,OAAQ8E,IAAO,CAI5Cw0S,EAFkBr4H,EAAUn8K,GAERq1L,EAAO5vL,EAE5B,MAIA+uS,EAASr4H,EAAUkZ,EAAO5vL,EAM7B,IAEAwsO,EAAiB39K,MACjBy9K,EAAqB,IAEtB,EAIA,IAAIrD,GAA2B,KAQ/B,SAASsH,KAERvlM,GAAUshC,MAEX,CAEA,SAASkkK,KAERxlM,GAAUrC,OAEX,CAEA,IAAMqC,GAAY,IAAI4oJ,GAqKtB,SAASs+C,GAAelyO,EAAQylK,EAAQ8hD,EAAYklB,GAEnD,IAAwB,IAAnBzsO,EAAOwnE,QAAZ,CAIA,GAFgBxnE,EAAOwyK,OAAOz8K,KAAM0vK,EAAO+M,QAI1C,GAAKxyK,EAAO8gO,QAEXvZ,EAAavnN,EAAOg0K,iBAEd,GAAKh0K,EAAOmyO,OAES,IAAtBnyO,EAAO4uN,YAAsB5uN,EAAOmhK,OAAQsE,QAE3C,GAAKzlK,EAAO20K,QAElB23D,EAAmB7gB,UAAWzrN,GAEzBA,EAAO6zK,YAEXy4D,EAAmB5gB,WAAY1rN,QAI1B,GAAKA,EAAOiyO,UAElB,IAAOjyO,EAAO+zK,eAAiB64C,EAASwlB,iBAAkBpyO,GAAW,CAE/DysO,GAEJsB,EAASt5D,sBAAuBz0K,EAAO8lK,aACrCJ,aAAcooE,GAIjB,IAAMnlE,EAAW45B,EAAQphC,OAAQnhK,GAC3B02K,EAAW12K,EAAO02K,SAEnBA,EAASlvG,SAEb6kK,EAAkB1xO,KAAMqF,EAAQ2oK,EAAU+N,EAAU6wC,EAAYwmB,EAAS5oO,EAAG,KAI9E,OAEM,IAAKnF,EAAOk2K,QAAUl2K,EAAOm2K,QAAUn2K,EAAOo2K,YAE/Cp2K,EAAOs2K,eAINt2K,EAAOy2K,SAASwd,QAAU/nG,EAAK7oF,OAAO4wL,QAE1Cj0L,EAAOy2K,SAAStV,SAChBnhK,EAAOy2K,SAASwd,MAAQ/nG,EAAK7oF,OAAO4wL,QAM/Bj0L,EAAO+zK,eAAiB64C,EAAS8B,iBAAkB1uN,IAAW,CAE/DysO,GAEJsB,EAASt5D,sBAAuBz0K,EAAO8lK,aACrCJ,aAAcooE,GAIjB,IAAMnlE,EAAW45B,EAAQphC,OAAQnhK,GAC3B02K,EAAW12K,EAAO02K,SAExB,GAAKl8K,MAAM0E,QAASw3K,GAInB,IAFA,IAAMmN,EAASlb,EAASkb,OAEdtpL,EAAI,EAAGmK,EAAIm/K,EAAOpuL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAM+qG,EAAQu+E,EAAQtpL,GAChBqvL,EAAgBlT,EAAUpxE,EAAM0+E,eAEjC4F,GAAiBA,EAAcpiH,SAEnC6kK,EAAkB1xO,KAAMqF,EAAQ2oK,EAAUihB,EAAe29B,EAAYwmB,EAAS5oO,EAAGmgG,EAInF,MAEWoxE,EAASlvG,SAEpB6kK,EAAkB1xO,KAAMqF,EAAQ2oK,EAAU+N,EAAU6wC,EAAYwmB,EAAS5oO,EAAG,KAI9E,CAQF,IAFA,IAAMsW,EAAWzb,EAAOyb,SAEdlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5C23O,GAAez2N,EAAUlhB,GAAKkrK,EAAQ8hD,EAAYklB,EA1Gb,CA8GvC,CAEA,SAAS4F,GAAahG,EAAmBz8C,EAAOnqB,EAAQxG,GAEvD,IAAMqzE,EAAgBjG,EAAkBxqB,OAClC0wB,EAAsBlG,EAAkBzkB,aACxC4qB,EAAqBnG,EAAkBzyD,YAE7C0yD,EAAmB9gB,gBAAiB/lD,GAE/B8sE,EAAoB98O,OAAS,GAkBnC,SAAiC68O,EAAe1iD,EAAOnqB,GAEtD,IAAM6uB,EAAWD,EAAaC,SAEK,OAA9Bu5C,IAEJA,EAA4B,IAAIhvE,GAAmB,EAAG,EAAG,CACxDnC,iBAAiB,EACjBj6J,KAAM0nF,EAAWl+C,IAAK,+BAAkCq9G,GAAgBP,GACxEoT,UAAWtT,GACXyW,QAAWg1B,IAA2B,IAAfu3C,EAAwB,EAAI,KAKrD9xN,EAAM+1N,qBAAsBx+C,GAEvBgD,EAEJu5C,EAA0B8B,QAASr+C,EAASv3L,EAAGu3L,EAASpsL,GAIxD2oO,EAA0B8B,QAASt/E,GAAiBihC,EAASv3L,GAAKs2J,GAAiBihC,EAASpsL,IAM7F,IAAM4qL,EAAsB/1K,EAAMg2K,kBAClCh2K,EAAMu2K,gBAAiBu9C,GACvB9zN,EAAM/b,QAIN,IAAMkyL,EAAqBn2K,EAAMo2K,YACjCp2K,EAAMo2K,YAAc7oC,GAEpBmrF,GAAeH,EAAe1iD,EAAOnqB,GAErC1rJ,EAAMo2K,YAAcD,EAEpB9yB,EAASs/D,8BAA+BmR,GACxCzwE,EAASq/D,yBAA0BoR,GAEnC9zN,EAAMu2K,gBAAiBR,EAExB,CAjEuC4iD,CAAwBJ,EAAe1iD,EAAOnqB,GAE/ExG,GAAWxhJ,EAAMwhJ,SAAUguE,EAAiB1zE,KAAM0F,IAElDqzE,EAAc78O,OAAS,GAAIg9O,GAAeH,EAAe1iD,EAAOnqB,GAChE8sE,EAAoB98O,OAAS,GAAIg9O,GAAeF,EAAqB3iD,EAAOnqB,GAC5E+sE,EAAmB/8O,OAAS,GAAIg9O,GAAeD,EAAoB5iD,EAAOnqB,GAI/EhoJ,EAAM82K,QAAQnoF,MAAM+iH,SAAS,GAC7B1xM,EAAM82K,QAAQnoF,MAAMkkH,SAAS,GAC7B7yM,EAAM82K,QAAQlvJ,MAAMirL,SAAS,GAE7B7yM,EAAM+2M,kBAAkB,EAEzB,CAmDA,SAASie,GAAervC,EAAYxT,EAAOnqB,GAI1C,IAFA,IAAMwoE,GAAqC,IAAlBr+C,EAAM5Z,QAAmB4Z,EAAMq+C,iBAAmB,KAEjE1zO,EAAI,EAAGmK,EAAI0+L,EAAW3tM,OAAQ8E,EAAImK,EAAGnK,IAAO,CAErD,IAAMutN,EAAa1kB,EAAY7oM,GAEzByF,EAAS8nN,EAAW9nN,OACpB2oK,EAAWm/C,EAAWn/C,SACtB+N,EAAgC,OAArBu3D,EAA4BnmB,EAAWpxC,SAAWu3D,EAC7D3oI,EAAQwiH,EAAWxiH,MAEpBtlG,EAAOwyK,OAAOz8K,KAAM0vK,EAAO+M,SAE/Bg8C,GAAcxuN,EAAQ4vL,EAAOnqB,EAAQkD,EAAU+N,EAAUpxE,EAI3D,CAED,CAEA,SAASkpH,GAAcxuN,EAAQ4vL,EAAOnqB,EAAQkD,EAAU+N,EAAUpxE,GAEjEtlG,EAAO8jM,eAAgB/pL,EAAO61K,EAAOnqB,EAAQkD,EAAU+N,EAAUpxE,GAEjEtlG,EAAOyzK,gBAAgBte,iBAAkBsQ,EAAOE,mBAAoB3lK,EAAO8lK,aAC3E9lK,EAAO0zK,aAAauQ,gBAAiBjkL,EAAOyzK,iBAE5CiD,EAASotB,eAAgB/pL,EAAO61K,EAAOnqB,EAAQkD,EAAU3oK,EAAQslG,IAEnC,IAAzBoxE,EAASkD,aAAwBlD,EAASgD,OAASx0B,IAEvDwxB,EAASgD,KAAOz0B,GAChByxB,EAASvZ,aAAc,EACvBpjJ,EAAMg0M,mBAAoBtoD,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,EAAQslG,GAErEoxE,EAASgD,KAAO10B,GAChB0xB,EAASvZ,aAAc,EACvBpjJ,EAAMg0M,mBAAoBtoD,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,EAAQslG,GAErEoxE,EAASgD,KAAOx0B,IAIhBnrI,EAAMg0M,mBAAoBtoD,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,EAAQslG,GAItEtlG,EAAO2yO,cAAe54N,EAAO61K,EAAOnqB,EAAQkD,EAAU+N,EAAUpxE,EAEjE,CAEA,SAASsrI,GAAYl6D,EAAUkZ,EAAO5vL,IAEd,IAAlB4vL,EAAM5Z,UAAmB4Z,EAAQo+C,GAEtC,IAAMrjC,EAAqBn/L,EAAWoiB,IAAK8oJ,GAErCiW,EAAS2/C,EAAmB7uN,MAAMkvK,OAClC2+B,EAAeghB,EAAmB7uN,MAAM6tM,aAExCqlB,EAAqBhkD,EAAOlvK,MAAMvmB,QAElCm/K,EAAa83D,EAAa7oB,cAAe5uC,EAAUiW,EAAOlvK,MAAO6tM,EAAc17B,EAAO5vL,GACtF4yO,EAAkBzE,EAAavnB,mBAAoBvwC,GAErDy8B,EAAWnI,EAAmBmI,SAIlCnI,EAAmB10B,YAAcS,EAAS8uC,uBAAyB51B,EAAM3Z,YAAc,KACvF00B,EAAmBnxB,IAAMoW,EAAMpW,IAC/BmxB,EAAmBvsB,QAAW1H,EAAS8uC,uBAAyBpB,EAAa9hB,GAAW10K,IAAK8oJ,EAAS0H,QAAUusB,EAAmB10B,kBAEjHhuK,IAAb6qM,IAIJp8B,EAASj1K,iBAAkB,UAAWytO,IAEtCp8B,EAAW,IAAI93K,IACf2vK,EAAmBmI,SAAWA,GAI/B,IAAI3N,EAAU2N,EAASllL,IAAKglN,GAE5B,QAAiB3qO,IAAZk9L,GAIJ,GAAKwF,EAAmBsnB,iBAAmB9sB,GAAWwF,EAAmBgmC,qBAAuBA,EAI/F,OAFAkC,GAAgCn8D,EAAUL,GAEnC8uB,OAMR9uB,EAAW4V,SAAWkiD,EAAa55B,YAAa79B,GAEhDA,EAASo8D,QAAS9yO,EAAQq2K,EAAYt8J,GAEtC28J,EAASiF,gBAAiBtF,EAAYt8J,GAEtCorL,EAAUgpC,EAAalnB,eAAgB5wC,EAAYu8D,GACnD9/B,EAAShmL,IAAK8lN,EAAiBztC,GAE/BwF,EAAmB1e,SAAW5V,EAAW4V,SAI1C,IAAMA,EAAW0e,EAAmB1e,UAE3BvV,EAAS2W,kBAAsB3W,EAAS8pC,uBAA+C,IAAtB9pC,EAASkW,WAElFX,EAASnR,eAAiB8R,GAASgd,SAIpCipC,GAAgCn8D,EAAUL,GAI1Cs0B,EAAmB+lC,YAsbpB,SAA8Bh6D,GAE7B,OAAOA,EAASyzD,uBAAyBzzD,EAAS0zD,oBAAsB1zD,EAAS4zD,qBAChF5zD,EAAS8uC,wBAA0B9uC,EAAS60D,kBAC1C70D,EAAS2W,mBAAwC,IAApB3W,EAASiW,MAE1C,CA5bkComD,CAAqBr8D,GACtDi0B,EAAmBgmC,mBAAqBA,EAEnChmC,EAAmB+lC,cAIvBzkD,EAASwT,kBAAkBnjM,MAAQqwL,EAAOlvK,MAAM6rM,QAChDr9B,EAASyT,WAAWpjM,MAAQqwL,EAAOlvK,MAAM8rM,MACzCt9B,EAAS0T,kBAAkBrjM,MAAQqwL,EAAOlvK,MAAM6oM,YAChDr6B,EAAS2T,wBAAwBtjM,MAAQqwL,EAAOlvK,MAAM+rM,kBACtDv9B,EAASkU,WAAW7jM,MAAQqwL,EAAOlvK,MAAM8oM,KACzCt6B,EAASsU,iBAAiBjkM,MAAQqwL,EAAOlvK,MAAMgsM,WAC/Cx9B,EAASkV,eAAe7kM,MAAQqwL,EAAOlvK,MAAM+oM,SAC7Cv6B,EAASmV,MAAM9kM,MAAQqwL,EAAOlvK,MAAMisM,aACpCz9B,EAASoV,MAAM/kM,MAAQqwL,EAAOlvK,MAAMksM,aACpC19B,EAASyU,YAAYpkM,MAAQqwL,EAAOlvK,MAAM8qJ,MAC1C0jB,EAAS0U,kBAAkBrkM,MAAQqwL,EAAOlvK,MAAMmsM,YAChD39B,EAAS+U,iBAAiB1kM,MAAQqwL,EAAOlvK,MAAMgpM,KAE/Cx6B,EAASgU,qBAAqB3jM,MAAQqwL,EAAOlvK,MAAMwiL,qBACnDhU,EAASiU,wBAAwB5jM,MAAQqwL,EAAOlvK,MAAMyiL,wBACtDjU,EAASuU,cAAclkM,MAAQqwL,EAAOlvK,MAAM+iL,cAC5CvU,EAASuzL,gBAAgBljX,MAAQqwL,EAAOlvK,MAAM+hW,gBAC9CvzL,EAASszL,aAAajjX,MAAQqwL,EAAOlvK,MAAM8hW,aAC3CtzL,EAAS6U,eAAexkM,MAAQqwL,EAAOlvK,MAAMqjL,eAC7C7U,EAAS8U,kBAAkBzkM,MAAQqwL,EAAOlvK,MAAMsjL,mBAKjD,IAAMiyC,EAAe7tC,EAAQoP,cACvBg9B,EAAep2B,GAAcU,aAAcm3B,EAAax4B,IAAKvuB,GAKnE,OAHA0e,EAAmBsnB,eAAiB9sB,EACpCwF,EAAmB4mC,aAAeA,EAE3BpsC,CAER,CAEA,SAAS0tC,GAAgCn8D,EAAUL,GAElD,IAAMs0B,EAAqBn/L,EAAWoiB,IAAK8oJ,GAE3Ci0B,EAAmB1a,eAAiB5Z,EAAW4Z,eAC/C0a,EAAmB+V,WAAarqC,EAAWqqC,WAC3C/V,EAAmB0W,SAAWhrC,EAAWgrC,SACzC1W,EAAmBrhB,aAAejT,EAAWiT,aAC7CqhB,EAAmBkJ,aAAex9B,EAAWw9B,aAC7ClJ,EAAmBmJ,YAAcz9B,EAAWy9B,YAC5CnJ,EAAmB8I,kBAAoBp9B,EAAWo9B,kBAClD9I,EAAmB2S,kBAAoBjnC,EAAWinC,kBAClD3S,EAAmBZ,gBAAkB1zB,EAAWknC,oBAChD5S,EAAmBuW,aAAe7qC,EAAW6qC,aAC7CvW,EAAmBsW,eAAiB5qC,EAAW4qC,eAC/CtW,EAAmBxa,YAAc9Z,EAAW8Z,WAE7C,CA3hBAnlJ,GAAUkpJ,kBAnBV,SAA2BpuJ,GAErBmjM,IAA2BA,GAA0BnjM,EAE3D,IAiBqB,qBAAT9yB,MAAuBg4B,GAAUmpJ,WAAYnhL,MAEzDnV,KAAKq2L,iBAAmB,SAAWl+I,GAElCizL,GAA2BjzL,EAC3Bq6I,GAAG6D,iBAAkBl+I,GAEN,OAAbA,EAAsBhL,GAAUshC,OAASthC,GAAUrC,OAEtD,EAEA0nJ,GAAG5uL,iBAAkB,eAAgB8uO,IACrClgD,GAAG5uL,iBAAkB,aAAc+uO,IAInC3yO,KAAKwF,OAAS,SAAWusL,EAAOnqB,GAE/B,QAAgBx9J,IAAXw9J,IAA4C,IAApBA,EAAOiP,UAOpC,IAAwB,IAAnBi4D,EAAL,EAIqC,IAAhC/8C,EAAM4uL,uBAAiC5uL,EAAMxa,oBAI3B,OAAlB3P,EAAO1qG,SAAoD,IAAjC0qG,EAAO+4M,uBAAiC/4M,EAAO2P,qBAE1D,IAAfib,GAAG3B,UAAwC,IAApB2B,GAAGw0C,gBAED,IAAxBx0C,GAAG60C,kBAA4B70C,GAAGm3C,aAAc/hE,GAErDA,EAAS4qB,GAAGw4C,cAKU,IAAlBj5C,EAAM5Z,SAAmB4Z,EAAMkU,eAAgB/pL,EAAO61K,EAAOnqB,EAAQqnE,IAE1ER,EAAqBzgB,GAAaj+L,IAAKgiK,EAAO48C,EAAiB/2O,SAC5C28H,OAEnBo6G,EAAiB7xO,KAAM2xO,GAEvBwB,EAAkB34E,iBAAkBsQ,EAAOG,iBAAkBH,EAAOE,oBACpEinD,EAASqmB,wBAAyBnF,GAElCF,EAAwB/vO,KAAK4rM,qBAC7BkkC,EAAmB/gD,GAASx6D,KAAMv0H,KAAKi9K,eAAgB8yD,EAAuBnoE,IAE9E4mE,EAAoB+B,GAAYxgN,IAAKgiK,EAAO28C,EAAgB92O,SAC1C28H,OAElBm6G,EAAgB5xO,KAAM0xO,GAEtB6F,GAAetiD,EAAOnqB,EAAQ,EAAG1rJ,EAAM0yN,aAEvCJ,EAAkBr7I,UAES,IAAtBj3E,EAAM0yN,aAEVJ,EAAkBh1I,KAAMk2I,EAAaC,IAMZ,IAArBG,GAA4B/gD,GAAS4d,eAE1C,IAAM8gB,EAAeghB,EAAmB7uN,MAAM6tM,aAkB9C,GAhBA5E,GAAUrjN,OAAQioN,EAAc17B,EAAOnqB,IAEb,IAArBkoE,GAA4B/gD,GAAS6d,cAIb,IAAxB5sM,KAAKquF,KAAK6mH,WAAqBl1M,KAAKquF,KAAK9zB,QAI9CqF,GAAWp6D,OAAQgpO,EAAmBz8C,GAItC08C,EAAmB/gB,YAAaxxM,EAAM6nM,yBAEjCn8C,EAAOg7D,cAIX,IAFA,IAAMD,EAAU/6D,EAAO+6D,QAEbjmO,EAAI,EAAGmK,EAAI87N,EAAQ/qO,OAAQ8E,EAAImK,EAAGnK,IAAO,CAElD,IAAM24O,EAAU1S,EAASjmO,GAEzB83O,GAAahG,EAAmBz8C,EAAOsjD,EAASA,EAAQj0E,SAEzD,MAIAozE,GAAahG,EAAmBz8C,EAAOnqB,GAMV,OAAzBqnE,IAIJ1vE,EAASs/D,8BAA+BoQ,GAIxC1vE,EAASq/D,yBAA0BqQ,KAMb,IAAlBl9C,EAAM5Z,SAAmB4Z,EAAM+iD,cAAe54N,EAAO61K,EAAOnqB,GAIjE4+B,GAAcwB,oBACdknC,GAAuB,EACvBC,EAAiB,KAEjBR,EAAiB39K,MAIhBy9K,EAFIE,EAAiB/2O,OAAS,EAET+2O,EAAkBA,EAAiB/2O,OAAS,GAI5C,KAItB82O,EAAgB19K,MAIfw9K,EAFIE,EAAgB92O,OAAS,EAET82O,EAAiBA,EAAgB92O,OAAS,GAI1C,IAnIgB,OALpCmc,QAAQwN,MAAO,yEA4IjB,EA6vBAvhB,KAAKixN,kBAAoB,WAExB,OAAO8d,CAER,EAEA/uO,KAAKmxN,qBAAuB,WAE3B,OAAO6d,CAER,EAEAhvO,KAAKkyL,gBAAkB,WAEtB,OAAO+8C,CAER,EAEAjvO,KAAK2rO,wBAA0B,SAAWt6C,EAAcktC,EAAc/8D,GAErE7zJ,EAAWoiB,IAAKshK,EAAahwB,SAAUg5D,eAAiBkE,EACxD5wN,EAAWoiB,IAAKshK,EAAa7vB,cAAe64D,eAAiB74D,EAE7D,IAAM44D,EAAyBzsN,EAAWoiB,IAAKshK,GAC/C+oC,EAAuBuC,uBAAwB,EAE1CvC,EAAuBuC,wBAE3BvC,EAAuBsD,+BAA6CtzN,IAAjBo3J,EAE5C44D,EAAuBsD,4BAIqC,IAA7DpxI,EAAWl+C,IAAK,0CAEpBr6B,QAAQk/C,KAAM,0GACdmnK,EAAuB0D,sBAAuB,GAQlD,EAEA99N,KAAKurO,2BAA6B,SAAWl6C,EAAcikD,GAE1D,IAAMlb,EAAyBzsN,EAAWoiB,IAAKshK,GAC/C+oC,EAAuBG,mBAAqB+a,EAC5Clb,EAAuBmb,6BAAiDnrO,IAAvBkrO,CAElD,EAEAt1O,KAAKyyL,gBAAkB,SAAWpB,GAA0D,IAA5C2/B,EAAc/wN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGixN,EAAiBjxN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEvFgvO,EAAuB59C,EACvB09C,EAAyB/d,EACzBge,EAA4B9d,EAE5B,IAAIskB,GAAwB,EACxBze,EAAc,KACd0G,GAAS,EACTgY,GAAmB,EAEvB,GAAKpkD,EAAe,CAEnB,IAAM+oC,EAAyBzsN,EAAWoiB,IAAKshK,QAESjnL,IAAnDgwN,EAAuBmb,yBAG3B31N,EAAMk3M,gBAAiB,MAAO,MAC9B0e,GAAwB,QAEiCprO,IAA9CgwN,EAAuBG,mBAElCh7D,EAASi/D,kBAAmBntC,GAEjB+oC,EAAuBuC,uBAGlCp9D,EAAS++D,eAAgBjtC,EAAc1jL,EAAWoiB,IAAKshK,EAAahwB,SAAUg5D,eAAgB1sN,EAAWoiB,IAAKshK,EAAa7vB,cAAe64D,gBAI3I,IAAMh5D,EAAUgwB,EAAahwB,SAExBA,EAAQiB,iBAAmBjB,EAAQU,oBAAsBV,EAAQwiN,4BAErEpuI,GAAmB,GAIpB,IAAMlb,EAAqB5sN,EAAWoiB,IAAKshK,GAAekpC,mBAErDlpC,EAAaE,yBAEjBwlC,EAAcwD,EAAoBvJ,GAClCyM,GAAS,GAIT1G,EAFavgC,EAAaC,UAAYpF,EAAa5vB,QAAU,IAAuD,IAAhDlC,EAASq9D,mBAAoBvrC,GAEnF1jL,EAAWoiB,IAAKshK,GAAeqpC,+BAI/BH,EAIf6U,EAAiB1zE,KAAM21B,EAAajwB,UACpCiuE,EAAgB3zE,KAAM21B,EAAanwB,SACnCouE,EAAsBj+C,EAAalwB,WAEpC,MAECiuE,EAAiB1zE,KAAMwzD,GAAY35D,eAAgBk6E,GAAchzN,QACjE4yN,EAAgB3zE,KAAMk0E,GAAWr6E,eAAgBk6E,GAAchzN,QAC/D6yN,EAAsBO,EAgBvB,GAZyBjwN,EAAMk3M,gBAAiB,MAAOC,IAE9BvgC,EAAatH,aAAesmD,GAEpD51N,EAAMsvK,YAAamC,EAAc0lC,GAIlCn3M,EAAMwhJ,SAAUguE,GAChBxvN,EAAMshJ,QAASmuE,GACfzvN,EAAM2xM,eAAgB+d,GAEjB7R,EAAS,CAEb,IAAM5D,EAAoBlsN,EAAWoiB,IAAKshK,EAAahwB,SACvD62D,GAAI6E,qBAAsB,MAAO,MAAO,MAAQ/L,EAAgB6I,EAAkBQ,eAAgBnJ,EAEnG,MAAO,GAAKukB,EAAmB,CAE9B,IAAM5b,EAAoBlsN,EAAWoiB,IAAKshK,EAAahwB,SACjDq0E,EAAQ1kB,GAAkB,EAChCkH,GAAIyd,wBAAyB,MAAO,MAAO9b,EAAkBQ,eAAgBnJ,GAAqB,EAAGwkB,EAEtG,CAEAxG,GAAuB,CAExB,EAEAlvO,KAAK41O,uBAAyB,SAAWvkD,EAAcn1L,EAAGmL,EAAG8G,EAAOC,EAAQ+rJ,EAAQ07E,GAEnF,GAASxkD,GAAgBA,EAAa1vB,oBAAtC,CAOA,IAAIo1D,EAAcppN,EAAWoiB,IAAKshK,GAAekpC,mBAQjD,GANKlpC,EAAaE,8BAAmDnnL,IAAxByrO,IAE5C9e,EAAcA,EAAa8e,IAIvB9e,EAAc,CAElBn3M,EAAMk3M,gBAAiB,MAAOC,GAE9B,IAEC,IAAM11D,EAAUgwB,EAAahwB,QACvBy0E,EAAgBz0E,EAAQ9C,OACxBg9D,EAAcl6D,EAAQz8J,KAE5B,GAAKkxO,IAAkB/pF,IAAcosE,GAAMv9D,QAASk7E,KAAoB5d,GAAI7xB,aAAc,OAGzF,YADAtyL,QAAQwN,MAAO,6GAKhB,IAAMw0N,EAA4Bxa,IAAgB9vE,KAAqBn/D,EAAWl+C,IAAK,gCAAqCooJ,EAAaC,UAAYnqG,EAAWl+C,IAAK,2BAErK,GAAKmtL,IAAgBrwE,IAAoBitE,GAAMv9D,QAAS2gE,KAAkBrD,GAAI7xB,aAAc,SACvFk1B,IAAgB/vE,MAAegrC,EAAaC,UAAYnqG,EAAWl+C,IAAK,sBAAyBk+C,EAAWl+C,IAAK,gCACnH2nM,EAGF,YADAhiO,QAAQwN,MAAO,uHAOTrlB,GAAK,GAAKA,GAAOm1L,EAAaljL,MAAQA,GAAe9G,GAAK,GAAKA,GAAOgqL,EAAajjL,OAASA,GAElG8pN,GAAI8d,WAAY95O,EAAGmL,EAAG8G,EAAOC,EAAQ+pN,GAAMv9D,QAASk7E,GAAiB3d,GAAMv9D,QAAS2gE,GAAephE,EAIrG,CAAE,QAID,IAAM48D,EAAyC,OAAzBkY,EAAkCthO,EAAWoiB,IAAKk/M,GAAuB1U,mBAAqB,KACpH36M,EAAMk3M,gBAAiB,MAAOC,EAE/B,CAED,CAvDA,MAHChjN,QAAQwN,MAAO,2FA4DjB,EAEAvhB,KAAKi2O,yBAA2B,SAAW12K,EAAU8hG,GAAqB,IAAZjtJ,EAAKnU,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE/Di2O,EAAaj5O,KAAKs1J,IAAK,GAAKn+I,GAC5BjG,EAAQlR,KAAKwf,MAAO4kJ,EAAQloB,MAAMhrI,MAAQ+nO,GAC1C9nO,EAASnR,KAAKwf,MAAO4kJ,EAAQloB,MAAM/qI,OAAS8nO,GAElD32E,EAASg7C,aAAcl5C,EAAS,GAEhC62D,GAAIie,kBAAmB,KAAM/hO,EAAO,EAAG,EAAGmrD,EAASrjE,EAAGqjE,EAASl4D,EAAG8G,EAAOC,GAEzEwR,EAAM63M,eAEP,EAEAz3N,KAAKo2O,qBAAuB,SAAW72K,EAAU82K,EAAYC,GAAwB,IAAZliO,EAAKnU,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE1EkO,EAAQkoO,EAAWl9F,MAAMhrI,MACzBC,EAASioO,EAAWl9F,MAAM/qI,OAC1BmrN,EAAWpB,GAAMv9D,QAAS07E,EAAW/3E,QACrCi7D,EAASrB,GAAMv9D,QAAS07E,EAAW1xO,MAEzC26J,EAASg7C,aAAc+7B,EAAY,GAInCpe,GAAI8D,YAAa,MAAOsa,EAAWv3E,OACnCm5D,GAAI8D,YAAa,MAAOsa,EAAWx3E,kBACnCo5D,GAAI8D,YAAa,KAAMsa,EAAWt3E,iBAE7Bq3E,EAAW34E,cAEfw6D,GAAIJ,cAAe,KAAM1jN,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAG8G,EAAOC,EAAQmrN,EAAUC,EAAQ6c,EAAWl9F,MAAMz1G,MAIrG2yM,EAAW1c,oBAEfzB,GAAIF,wBAAyB,KAAM5jN,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAGgvO,EAAW33E,QAAS,GAAIvwJ,MAAOkoO,EAAW33E,QAAS,GAAItwJ,OAAQmrN,EAAU8c,EAAW33E,QAAS,GAAIh7H,MAInKw0L,GAAIJ,cAAe,KAAM1jN,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAGkyN,EAAUC,EAAQ6c,EAAWl9F,OAOxE,IAAV/kI,GAAekiO,EAAWz3E,iBAAkBq5D,GAAIkB,eAAgB,MAErEx5M,EAAM63M,eAEP,EAEAz3N,KAAKu2O,uBAAyB,SAAWC,EAAWj3K,EAAU82K,EAAYC,GAAwB,IAAZliO,EAAKnU,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE7F,GAAKic,EAAM80N,iBAEVj9N,QAAQk/C,KAAM,iFAFf,CAOA,IAKIwjL,EALEtoO,EAAQqoO,EAAUt5O,IAAIhB,EAAIs6O,EAAUtrM,IAAIhvC,EAAI,EAC5CkS,EAASooO,EAAUt5O,IAAImK,EAAImvO,EAAUtrM,IAAI7jC,EAAI,EAC7CknG,EAAQioI,EAAUt5O,IAAIoK,EAAIkvO,EAAUtrM,IAAI5jC,EAAI,EAC5CiyN,EAAWpB,GAAMv9D,QAAS07E,EAAW/3E,QACrCi7D,EAASrB,GAAMv9D,QAAS07E,EAAW1xO,MAGzC,GAAK0xO,EAAWh0E,gBAEf/C,EAASk7C,aAAc67B,EAAY,GACnCG,EAAW,UAEL,KAAKH,EAAWv0E,mBAQtB,YADAhuJ,QAAQk/C,KAAM,+GALdssG,EAASs7C,kBAAmBy7B,EAAY,GACxCG,EAAW,KAOZ,CAEAve,GAAI8D,YAAa,MAAOsa,EAAWv3E,OACnCm5D,GAAI8D,YAAa,MAAOsa,EAAWx3E,kBACnCo5D,GAAI8D,YAAa,KAAMsa,EAAWt3E,iBAElC,IAAM03E,EAAexe,GAAI7xB,aAAc,MACjCswC,EAAoBze,GAAI7xB,aAAc,OACtCuwC,EAAmB1e,GAAI7xB,aAAc,MACrCwwC,EAAiB3e,GAAI7xB,aAAc,MACnCywC,EAAmB5e,GAAI7xB,aAAc,OAErCltD,EAAQk9F,EAAW1c,oBAAsB0c,EAAW33E,QAAS,GAAM23E,EAAWl9F,MAEpF++E,GAAI8D,YAAa,KAAM7iF,EAAMhrI,OAC7B+pN,GAAI8D,YAAa,MAAO7iF,EAAM/qI,QAC9B8pN,GAAI8D,YAAa,KAAMwa,EAAUtrM,IAAIhvC,GACrCg8N,GAAI8D,YAAa,KAAMwa,EAAUtrM,IAAI7jC,GACrC6wN,GAAI8D,YAAa,MAAOwa,EAAUtrM,IAAI5jC,GAEjC+uO,EAAW34E,eAAiB24E,EAAW/zE,gBAE3C41D,GAAIH,cAAe0e,EAAUriO,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAGk4D,EAASj4D,EAAG6G,EAAOC,EAAQmgG,EAAOgrH,EAAUC,EAAQrgF,EAAMz1G,MAIjH2yM,EAAWwtI,0BAEf9vW,QAAQk/C,KAAM,2FACdilK,GAAI6e,wBAAyBN,EAAUriO,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAGk4D,EAASj4D,EAAG6G,EAAOC,EAAQmgG,EAAOgrH,EAAUpgF,EAAMz1G,OAIxHw0L,GAAIH,cAAe0e,EAAUriO,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAGk4D,EAASj4D,EAAG6G,EAAOC,EAAQmgG,EAAOgrH,EAAUC,EAAQrgF,GAMlH++E,GAAI8D,YAAa,KAAM0a,GACvBxe,GAAI8D,YAAa,MAAO2a,GACxBze,GAAI8D,YAAa,KAAM4a,GACvB1e,GAAI8D,YAAa,KAAM6a,GACvB3e,GAAI8D,YAAa,MAAO8a,GAGT,IAAV1iO,GAAekiO,EAAWz3E,iBAAkBq5D,GAAIkB,eAAgBqd,GAErE72N,EAAM63M,eAxEN,CA0ED,EAEAz3N,KAAK27N,YAAc,SAAWt6D,GAExBA,EAAQyxB,cAEZvzB,EAASo7C,eAAgBt5C,EAAS,GAEvBA,EAAQiB,gBAEnB/C,EAASk7C,aAAcp5C,EAAS,GAErBA,EAAQU,oBAAsBV,EAAQwiN,yBAEjDtkN,EAASs7C,kBAAmBx5C,EAAS,GAIrC9B,EAASg7C,aAAcl5C,EAAS,GAIjCzhJ,EAAM63M,eAEP,EAEAz3N,KAAKgkE,WAAa,WAEjB+qK,EAAyB,EACzBC,EAA4B,EAC5BC,EAAuB,KAEvBrvN,EAAM26C,QACNisI,GAAcjsI,OAEf,EAEmC,qBAAvBy8K,oBAEXA,mBAAmBz4M,cAAe,IAAI43E,YAAa,UAAW,CAAE30E,OAAQxhC,OAI1E,CAAC,IAEKk3O,GAAc,SAAAC,GAAAn7N,EAAAk7N,EAAAC,GAAA,IAAAC,EAAAz8N,EAAAu8N,GAAA,SAAAA,IAAA,OAAAzsO,EAAA,KAAAysO,GAAAE,EAAAt3O,MAAA,KAAAG,UAAA,QAAAsJ,EAAA2tO,EAAA,EAASvJ,IAE7BuJ,GAAet6O,UAAUo0O,kBAAmB,EAAK,IAmE3CuG,GAAK,SAAAC,GAAAx7N,EAAAu7N,EAAAC,GAAA,IAAAC,EAAA98N,EAAA48N,GAEV,SAAAA,IAAc,IAAAgB,EAoBZ,OApBY9tO,EAAA,KAAA8sO,IAEbgB,EAAAd,EAAA56O,KAAA,OAEKs7K,SAAU,EAEfogE,EAAK3zO,KAAO,QAEZ2zO,EAAK34K,WAAa,KAClB24K,EAAKngE,YAAc,KACnBmgE,EAAK58D,IAAM,KAEX48D,EAAKspI,qBAAuB,EAE5BtpI,EAAKnI,iBAAmB,KAEW,qBAAvB4G,oBAEXA,mBAAmBz4M,cAAe,IAAI43E,YAAa,UAAW,CAAE30E,OAAMhmB,EAAA+8N,MAEtEA,CAEF,CA6CC,OA7CAhvO,EAAAguO,EAAA,EAAA/0O,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAcb,OAZA9xC,GAAA5rH,EAAAi8N,EAAA36O,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEO,OAAtBx3K,EAAOo+D,aAAsB5/D,KAAK4/D,WAAap+D,EAAOo+D,WAAW1+D,SAC1C,OAAvBM,EAAO42K,cAAuBp4K,KAAKo4K,YAAc52K,EAAO42K,YAAYl3K,SACrD,OAAfM,EAAOm6K,MAAe37K,KAAK27K,IAAMn6K,EAAOm6K,IAAIz6K,SAEjDlB,KAAK6hX,qBAAuBrgX,EAAOqgX,qBAEF,OAA5BrgX,EAAO4uO,mBAA4BpwO,KAAKowO,iBAAmB5uO,EAAO4uO,iBAAiBlvO,SAExFlB,KAAK4+J,iBAAmBp9J,EAAOo9J,iBAExB5+J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAAi8N,EAAA36O,WAAA,eAAAC,KAAA,KAAiBy5B,GAK3B,OAHkB,OAAbt2B,KAAK27K,MAAej4I,EAAKvhC,OAAOw5K,IAAM37K,KAAK27K,IAAInc,UAC/Cx/J,KAAK6hX,qBAAuB,IAAIn+U,EAAKm+U,qBAAuB7hX,KAAK6hX,sBAE/Dn+U,CAER,GAEA,CAAAlhC,IAAA,aAAAutB,IAEA,WAGC,OADAhc,QAAQk/C,KAAM,yEACPjzD,KAAK2gX,qBAEb,EAAC1xV,IAED,SAAgBxwB,GAEfsV,QAAQk/C,KAAM,yEACdjzD,KAAK2gX,sBAAwBliX,CAE9B,KAAC84O,CAAA,CArES,CAAS/hE,IAyEdmiE,GAAiB,WAEtB,SAAAA,EAAa50O,EAAO0mL,GAASh/K,EAAA,KAAAktO,GAE5B33O,KAAK+3O,qBAAsB,EAE3B/3O,KAAK+C,MAAQA,EACb/C,KAAKypL,OAASA,EACdzpL,KAAK29E,WAAkBvzE,IAAVrH,EAAsBA,EAAMnL,OAAS6xL,EAAS,EAE3DzpL,KAAK0iL,MAAQhyB,GACb1wJ,KAAK2iL,YAAc,CAAE54I,OAAQ,EAAG4zC,OAAS,GAEzC39E,KAAK3G,QAAU,EAEf2G,KAAK67G,KAAOg2C,IAEb,CAwHC,OAxHAtoJ,EAAAouO,EAAA,EAAAn1O,IAAA,mBAAA/D,MAED,WAAoB,GAAC,CAAA+D,IAAA,cAAAysB,IAErB,SAAiBxwB,IAED,IAAVA,GAAiBuB,KAAK3G,SAE5B,GAAC,CAAAmJ,IAAA,WAAA/D,MAED,SAAUA,GAIT,OAFAuB,KAAK0iL,MAAQjkL,EAENuB,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAOL,OALAxB,KAAK+C,MAAQ,IAAIvB,EAAOuB,MAAMoX,YAAa3Y,EAAOuB,OAClD/C,KAAK29E,MAAQn8E,EAAOm8E,MACpB39E,KAAKypL,OAASjoL,EAAOioL,OACrBzpL,KAAK0iL,MAAQlhL,EAAOkhL,MAEb1iL,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQmkL,EAAQ1sB,EAAW2sB,GAE1BD,GAAU5iL,KAAKypL,OACf5G,GAAU3sB,EAAUuzB,OAEpB,IAAM,IAAI/sL,EAAI,EAAGmK,EAAI7G,KAAKypL,OAAQ/sL,EAAImK,EAAGnK,IAExCsD,KAAK+C,MAAO6/K,EAASlmL,GAAMw5J,EAAUnzJ,MAAO8/K,EAASnmL,GAItD,OAAOsD,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAKA,GAAoB,IAAbsrC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAIpB,OAFAD,KAAK+C,MAAMksB,IAAKxwB,EAAOsrC,GAEhB/pC,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOilC,QAEqBt5B,IAAtBs5B,EAAKk0M,eAETl0M,EAAKk0M,aAAe,CAAC,QAIWxtO,IAA5BpK,KAAK+C,MAAMo3J,OAAO09E,QAEtB73O,KAAK+C,MAAMo3J,OAAO09E,MAAQhmF,WAI2BznJ,IAAjDs5B,EAAKk0M,aAAc53O,KAAK+C,MAAMo3J,OAAO09E,SAEzCn0M,EAAKk0M,aAAc53O,KAAK+C,MAAMo3J,OAAO09E,OAAU73O,KAAK+C,MAAM6N,MAAO,GAAIupJ,QAItE,IAAMp3J,EAAQ,IAAI/C,KAAK+C,MAAMoX,YAAaupB,EAAKk0M,aAAc53O,KAAK+C,MAAMo3J,OAAO09E,QAEzEhmN,EAAK,IAAI7xB,KAAKma,YAAapX,EAAO/C,KAAKypL,QAG7C,OAFA53J,EAAGimN,SAAU93O,KAAK0iL,OAEX7wJ,CAER,GAAC,CAAArvB,IAAA,WAAA/D,MAED,SAAU05C,GAIT,OAFAn4C,KAAKkjL,iBAAmB/qI,EAEjBn4C,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQilC,GAwBP,YAtB2Bt5B,IAAtBs5B,EAAKk0M,eAETl0M,EAAKk0M,aAAe,CAAC,QAMWxtO,IAA5BpK,KAAK+C,MAAMo3J,OAAO09E,QAEtB73O,KAAK+C,MAAMo3J,OAAO09E,MAAQhmF,WAI2BznJ,IAAjDs5B,EAAKk0M,aAAc53O,KAAK+C,MAAMo3J,OAAO09E,SAEzCn0M,EAAKk0M,aAAc53O,KAAK+C,MAAMo3J,OAAO09E,OAAUl7O,MAAM0lB,KAAM,IAAIklF,YAAavnG,KAAK+C,MAAMo3J,UAMjF,CACNt+C,KAAM77G,KAAK67G,KACXs+C,OAAQn6J,KAAK+C,MAAMo3J,OAAO09E,MAC1BjzO,KAAM5E,KAAK+C,MAAMoX,YAAYhhB,KAC7BswL,OAAQzpL,KAAKypL,OAGf,KAACkuD,CAAA,CAzIqB,GA6IjBK,GAA0B,IAAIlxE,GAE9BmxE,GAA0B,WAE/B,SAAAA,EAAaC,EAAmBz1D,EAAU14I,GAA6B,IAArB6yH,EAAU38J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAAQwK,EAAA,KAAAwtO,GAEnEj4O,KAAKwpL,8BAA+B,EAEpCxpL,KAAK7G,KAAO,GAEZ6G,KAAK0jC,KAAOw0M,EACZl4O,KAAKyiL,SAAWA,EAChBziL,KAAK+pC,OAASA,EAEd/pC,KAAK48J,YAA4B,IAAfA,CAEnB,CAiTC,OAjTArzJ,EAAA0uO,EAAA,EAAAz1O,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAK0jC,KAAKi6C,KAElB,GAAC,CAAAn7E,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAK0jC,KAAK3gC,KAElB,GAAC,CAAAP,IAAA,cAAAysB,IAED,SAAiBxwB,GAEhBuB,KAAK0jC,KAAK47H,YAAc7gK,CAEzB,GAAC,CAAA+D,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK0jC,KAAKi6C,MAAOjhF,EAAImK,EAAGnK,IAE5Cs7O,GAAUjtE,oBAAqB/qK,KAAMtD,GAErCs7O,GAAUnwE,aAAc/gK,GAExB9G,KAAKgjL,OAAQtmL,EAAGs7O,GAAU97O,EAAG87O,GAAU3wO,EAAG2wO,GAAU1wO,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBqI,GAElB,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvCs7O,GAAUjtE,oBAAqB/qK,KAAMtD,GAErCs7O,GAAU/0D,kBAAmBn8K,GAE7B9G,KAAKgjL,OAAQtmL,EAAGs7O,GAAU97O,EAAG87O,GAAU3wO,EAAG2wO,GAAU1wO,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBqI,GAEnB,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvCs7O,GAAUjtE,oBAAqB/qK,KAAMtD,GAErCs7O,GAAUtnE,mBAAoB5pK,GAE9B9G,KAAKgjL,OAAQtmL,EAAGs7O,GAAU97O,EAAG87O,GAAU3wO,EAAG2wO,GAAU1wO,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,EAAO1S,GAMZ,OAJK8D,KAAK48J,aAAa1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,QAE9C/C,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,QAAW7tC,EAErD8D,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,EAAOvH,GAMZ,OAJKrH,KAAK48J,aAAav1J,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,QAE9C/C,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,GAAM1iC,EAEzDrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,EAAOtH,GAMZ,OAJKtH,KAAK48J,aAAat1J,EAAIu5G,GAAWv5G,EAAGtH,KAAK+C,QAE9C/C,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,GAAMziC,EAEzDtH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,EAAOxH,GAMZ,OAJKpH,KAAK48J,aAAax1J,EAAIy5G,GAAWz5G,EAAGpH,KAAK+C,QAE9C/C,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,GAAM3iC,EAEzDpH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAI1S,EAAI8D,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,QAIzD,OAFK/pC,KAAK48J,aAAa1gK,EAAIg5J,GAAah5J,EAAG8D,KAAK+C,QAEzC7G,CAER,GAAC,CAAAsG,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAIvH,EAAIrH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,GAIlE,OAFK/pC,KAAK48J,aAAav1J,EAAI6tJ,GAAa7tJ,EAAGrH,KAAK+C,QAEzCsE,CAER,GAAC,CAAA7E,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAItH,EAAItH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,GAIlE,OAFK/pC,KAAK48J,aAAat1J,EAAI4tJ,GAAa5tJ,EAAGtH,KAAK+C,QAEzCuE,CAER,GAAC,CAAA9E,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAIxH,EAAIpH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,GAIlE,OAFK/pC,KAAK48J,aAAax1J,EAAI8tJ,GAAa9tJ,EAAGpH,KAAK+C,QAEzCqE,CAER,GAAC,CAAA5E,IAAA,QAAA/D,MAED,SAAOmQ,EAAO1S,EAAGmL,GAchB,OAZAuH,EAAQA,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAEnC/pC,KAAK48J,aAET1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,OACvBsE,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,QAIxB/C,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAM1S,EAC/B8D,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMvH,EAExBrH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQmQ,EAAO1S,EAAGmL,EAAGC,GAgBpB,OAdAsH,EAAQA,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAEnC/pC,KAAK48J,aAET1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,OACvBsE,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,OACvBuE,EAAIu5G,GAAWv5G,EAAGtH,KAAK+C,QAIxB/C,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAM1S,EAC/B8D,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMvH,EAC/BrH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMtH,EAExBtH,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASmQ,EAAO1S,EAAGmL,EAAGC,EAAGF,GAkBxB,OAhBAwH,EAAQA,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAEnC/pC,KAAK48J,aAET1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,OACvBsE,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,OACvBuE,EAAIu5G,GAAWv5G,EAAGtH,KAAK+C,OACvBqE,EAAIy5G,GAAWz5G,EAAGpH,KAAK+C,QAIxB/C,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAM1S,EAC/B8D,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMvH,EAC/BrH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMtH,EAC/BtH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMxH,EAExBpH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOilC,GAEN,QAAct5B,IAATs5B,EAAqB,CAEzB3vB,QAAQC,IAAK,oHAIb,IAFA,IAAMjR,EAAQ,GAEJrG,EAAI,EAAGA,EAAIsD,KAAK29E,MAAOjhF,IAIhC,IAFA,IAAMkS,EAAQlS,EAAIsD,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAEhCl6B,EAAI,EAAGA,EAAI7P,KAAKyiL,SAAU5yK,IAEnC9M,EAAMjG,KAAMkD,KAAK0jC,KAAK3gC,MAAO6L,EAAQiB,IAMvC,OAAO,IAAI2yK,GAAiB,IAAIxiL,KAAK+C,MAAMoX,YAAapX,GAAS/C,KAAKyiL,SAAUziL,KAAK48J,WAEtF,CAcC,YAZiCxyJ,IAA5Bs5B,EAAKy0M,qBAETz0M,EAAKy0M,mBAAqB,CAAC,QAIuB/tO,IAA9Cs5B,EAAKy0M,mBAAoBn4O,KAAK0jC,KAAKm4E,QAEvCn4E,EAAKy0M,mBAAoBn4O,KAAK0jC,KAAKm4E,MAAS77G,KAAK0jC,KAAKxiC,MAAOwiC,IAIvD,IAAIu0M,EAA4Bv0M,EAAKy0M,mBAAoBn4O,KAAK0jC,KAAKm4E,MAAQ77G,KAAKyiL,SAAUziL,KAAK+pC,OAAQ/pC,KAAK48J,WAIrH,GAAC,CAAAp6J,IAAA,SAAA/D,MAED,SAAQilC,GAEP,QAAct5B,IAATs5B,EAAqB,CAEzB3vB,QAAQC,IAAK,yHAIb,IAFA,IAAMjR,EAAQ,GAEJrG,EAAI,EAAGA,EAAIsD,KAAK29E,MAAOjhF,IAIhC,IAFA,IAAMkS,EAAQlS,EAAIsD,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAEhCl6B,EAAI,EAAGA,EAAI7P,KAAKyiL,SAAU5yK,IAEnC9M,EAAMjG,KAAMkD,KAAK0jC,KAAK3gC,MAAO6L,EAAQiB,IAQvC,MAAO,CACN4yK,SAAUziL,KAAKyiL,SACf79K,KAAM5E,KAAK+C,MAAMoX,YAAYhhB,KAC7B4J,MAAOA,EACP65J,WAAY58J,KAAK48J,WAGnB,CAgBC,YAZiCxyJ,IAA5Bs5B,EAAKy0M,qBAETz0M,EAAKy0M,mBAAqB,CAAC,QAIuB/tO,IAA9Cs5B,EAAKy0M,mBAAoBn4O,KAAK0jC,KAAKm4E,QAEvCn4E,EAAKy0M,mBAAoBn4O,KAAK0jC,KAAKm4E,MAAS77G,KAAK0jC,KAAK87H,OAAQ97H,IAIxD,CACN8lJ,8BAA8B,EAC9B/G,SAAUziL,KAAKyiL,SACf/+I,KAAM1jC,KAAK0jC,KAAKm4E,KAChB9xE,OAAQ/pC,KAAK+pC,OACb6yH,WAAY58J,KAAK48J,WAKpB,KAACq7E,CAAA,CA/T8B,GA+hBhC,IA8LMuC,GAA8B,IAAI1zE,GAElC2zE,GAA2B,IAAI76E,GAC/B86E,GAA4B,IAAI96E,GAEhC+6E,GAA0B,IAAI7zE,GAC9B8zE,GAAwB,IAAIjqE,GAE5BkqE,GAAW,SAAAC,GAAA9+N,EAAA6+N,EAAAC,GAAA,IAAAC,EAAApgO,EAAAkgO,GAEhB,SAAAA,EAAa/vE,EAAU+N,GAAW,IAAAgjE,EAUM,OAVNpxO,EAAA,KAAAowO,IAEjCgB,EAAAd,EAAAl+O,KAAA,KAAOiuK,EAAU+N,IAEZJ,eAAgB,EAErBojE,EAAKj3O,KAAO,cAEZi3O,EAAKnjE,SAAW,WAChBmjE,EAAKljE,WAAa,IAAIhI,GACtBkrE,EAAKZ,kBAAoB,IAAItqE,GAAUkrE,CAExC,CAuHC,OAvHAtyO,EAAAsxO,EAAA,EAAAr4O,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAUb,OARA9xC,GAAA5rH,EAAAu/N,EAAAj+O,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAK04K,SAAWl3K,EAAOk3K,SACvB14K,KAAK24K,WAAWjd,KAAMl6J,EAAOm3K,YAC7B34K,KAAKi7O,kBAAkBv/E,KAAMl6J,EAAOy5O,mBAEpCj7O,KAAK44K,SAAWp3K,EAAOo3K,SAEhB54K,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMm6K,EAAUD,GAEf34K,KAAK44K,SAAWA,OAEIxuK,IAAfuuK,IAEJ34K,KAAKu3K,mBAAmB,GAExBv3K,KAAK44K,SAASsiE,oBAEdviE,EAAa34K,KAAKioK,aAInBjoK,KAAK24K,WAAWjd,KAAMid,GACtB34K,KAAKi7O,kBAAkBv/E,KAAMid,GAAa7oC,QAE3C,GAAC,CAAAttI,IAAA,OAAA/D,MAED,WAECuB,KAAK44K,SAASktD,MAEf,GAAC,CAAAtjO,IAAA,uBAAA/D,MAED,WAMC,IAJA,IAAMksK,EAAS,IAAI/K,GAEbu7E,EAAan7O,KAAK8qK,SAAS54F,WAAWipK,WAElCz+O,EAAI,EAAGmK,EAAIs0O,EAAWx9J,MAAOjhF,EAAImK,EAAGnK,IAAO,CAEpDiuK,EAAOI,oBAAqBowE,EAAYz+O,GAExC,IAAM26I,EAAQ,EAAMszB,EAAOywE,kBAEtB/jG,IAAUluF,IAEdwhH,EAAOpV,eAAgBle,GAIvBszB,EAAO17I,IAAK,EAAG,EAAG,EAAG,GAItBksN,EAAWE,QAAS3+O,EAAGiuK,EAAOzuK,EAAGyuK,EAAOtjK,EAAGsjK,EAAOrjK,EAAGqjK,EAAOvjK,EAE7D,CAED,GAAC,CAAA5E,IAAA,oBAAA/D,MAED,SAAmB64K,GAElBpwC,GAAA5rH,EAAAu/N,EAAAj+O,WAAA,0BAAAC,KAAA,KAAyBy6K,GAEF,aAAlBt3K,KAAK04K,SAET14K,KAAKi7O,kBAAkBv/E,KAAM17J,KAAKioK,aAAcn4B,SAEnB,aAAlB9vI,KAAK04K,SAEhB14K,KAAKi7O,kBAAkBv/E,KAAM17J,KAAK24K,YAAa7oC,SAI/C/7H,QAAQk/C,KAAM,6CAA+CjzD,KAAK04K,SAIpE,GAAC,CAAAl2K,IAAA,gBAAA/D,MAED,SAAemQ,EAAOrN,GAErB,IAAMq3K,EAAW54K,KAAK44K,SAChB9N,EAAW9qK,KAAK8qK,SAEtB2vE,GAAW1vE,oBAAqBD,EAAS54F,WAAWopK,UAAW1sO,GAC/D8rO,GAAY3vE,oBAAqBD,EAAS54F,WAAWipK,WAAYvsO,GAEjE4rO,GAAc9+E,KAAMn6J,GAASsmK,aAAc7nK,KAAK24K,YAEhDp3K,EAAO0tB,IAAK,EAAG,EAAG,GAElB,IAAM,IAAIvyB,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAM02M,EAASsnC,GAAYa,aAAc7+O,GAEzC,GAAgB,IAAX02M,EAAe,CAEnB,IAAMooC,EAAYf,GAAWc,aAAc7+O,GAE3Ck+O,GAAQtjF,iBAAkBshB,EAASgvC,MAAO4zB,GAAYvzE,YAAa2Q,EAAS6iE,aAAcD,IAE1Fj6O,EAAOm5K,gBAAiBigE,GAAUj/E,KAAM8+E,IAAgB3yE,aAAc+yE,IAAWxnC,EAElF,CAED,CAEA,OAAO7xM,EAAOsmK,aAAc7nK,KAAKi7O,kBAElC,KAACJ,CAAA,CArIe,CAAS3vD,IAyIpBwwD,GAAI,SAAAC,GAAA3/N,EAAA0/N,EAAAC,GAAA,IAAAC,EAAAjhO,EAAA+gO,GAET,SAAAA,IAAc,IAAAQ,EAMM,OANNzxO,EAAA,KAAAixO,IAEbQ,EAAAN,EAAA/+O,KAAA,OAEKi/O,QAAS,EAEdI,EAAKt3O,KAAO,OAAOs3O,CAEpB,CAAC,OAAA3yO,EAAAmyO,EAAA,CAVQ,CAASlmE,IAcbumE,GAAW,SAAAC,GAAAhgO,EAAA+/N,EAAAC,GAAA,IAAAC,EAAAthO,EAAAohO,GAEhB,SAAAA,IAAmK,IAAAe,EAAtJp5M,EAAIzjC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAMkO,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGs+J,EAAMt+J,UAAArI,OAAA,EAAAqI,UAAA,QAAAmK,EAAExF,EAAI3E,UAAArI,OAAA,EAAAqI,UAAA,QAAAmK,EAAEk6I,EAAOrkJ,UAAArI,OAAA,EAAAqI,UAAA,QAAAmK,EAAE+zJ,EAAKl+J,UAAArI,OAAA,EAAAqI,UAAA,QAAAmK,EAAEg0J,EAAKn+J,UAAArI,OAAA,EAAAqI,UAAA,QAAAmK,EAAEi0J,EAASp+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuqJ,GAAe8T,EAASr+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuqJ,GAAegU,EAAUv+J,UAAArI,OAAA,GAAAqI,UAAA,SAAAmK,EAAEq0J,EAAQx+J,UAAArI,OAAA,GAAAqI,UAAA,SAAAmK,EAUtI,OAVsIK,EAAA,KAAAsxO,IAE/Je,EAAAb,EAAAp/O,KAAA,KAAO,KAAMynJ,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,EAAYC,IAE/Ef,eAAgB,EAErBo/E,EAAK3jG,MAAQ,CAAEz1G,KAAMA,EAAMv1B,MAAOA,EAAOC,OAAQA,GAEjD0uO,EAAKj+E,iBAAkB,EACvBi+E,EAAK/9E,OAAQ,EACb+9E,EAAK99E,gBAAkB,EAAE89E,CAE1B,CAAC,OAAAvzO,EAAAwyO,EAAA,CAde,CAASh+E,IAkBpBo+E,GAA8B,IAAIxrE,GAClCyrE,GAAgC,IAAIzrE,GAEpC0rE,GAAQ,WAEb,SAAAA,IAA6C,IAAhCz0B,EAAK3nN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAIw7O,EAAYx7O,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAEwK,EAAA,KAAA4xO,GAEzCr8O,KAAK67G,KAAOg2C,KAEZ7xJ,KAAK4nN,MAAQA,EAAMh3M,MAAO,GAC1B5Q,KAAKy7O,aAAeA,EACpBz7O,KAAKs8O,aAAe,KAEpBt8O,KAAKuzO,YAAc,KACnBvzO,KAAKyzO,gBAAkB,EAEvBzzO,KAAKo2L,OAAU,EAEfp2L,KAAKu0H,MAEN,CAuPC,OAvPAhrH,EAAA8yO,EAAA,EAAA75O,IAAA,OAAA/D,MAED,WAEC,IAAMmpN,EAAQ5nN,KAAK4nN,MACb6zB,EAAez7O,KAAKy7O,aAM1B,GAJAz7O,KAAKs8O,aAAe,IAAIznF,aAA6B,GAAf+yD,EAAMhwN,QAIf,IAAxB6jP,EAAa7jP,OAEjBoI,KAAKk7O,yBAML,GAAKtzB,EAAMhwN,SAAW6jP,EAAa7jP,OAAS,CAE3Cmc,QAAQk/C,KAAM,mFAEdjzD,KAAKy7O,aAAe,GAEpB,IAAM,IAAI/+O,EAAI,EAAGowD,EAAK9sD,KAAK4nN,MAAMhwN,OAAQ8E,EAAIowD,EAAIpwD,IAEhDsD,KAAKy7O,aAAa3+O,KAAM,IAAI6zK,GAI9B,CAIF,GAAC,CAAAnuK,IAAA,oBAAA/D,MAED,WAECuB,KAAKy7O,aAAa7jP,OAAS,EAE3B,IAAM,IAAI8E,EAAI,EAAGowD,EAAK9sD,KAAK4nN,MAAMhwN,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvD,IAAM6/O,EAAU,IAAI5rE,GAEf3wK,KAAK4nN,MAAOlrN,IAEhB6/O,EAAQ7gF,KAAM17J,KAAK4nN,MAAOlrN,GAAIurK,aAAcn4B,SAI7C9vI,KAAKy7O,aAAa3+O,KAAMy/O,EAEzB,CAED,GAAC,CAAA/5O,IAAA,OAAA/D,MAED,WAIC,IAAM,IAAI/B,EAAI,EAAGowD,EAAK9sD,KAAK4nN,MAAMhwN,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvD,IAAM8/O,EAAOx8O,KAAK4nN,MAAOlrN,GAEpB8/O,GAEJA,EAAKv0E,YAAYvM,KAAM17J,KAAKy7O,aAAc/+O,IAAMozI,QAIlD,CAIA,IAAM,IAAIpzI,EAAI,EAAGowD,EAAK9sD,KAAK4nN,MAAMhwN,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvD,IAAM8/O,EAAOx8O,KAAK4nN,MAAOlrN,GAEpB8/O,IAECA,EAAKt/K,QAAUs/K,EAAKt/K,OAAO4+K,QAE/BU,EAAK9iF,OAAOgC,KAAM8gF,EAAKt/K,OAAO+qG,aAAcn4B,SAC5C0sG,EAAK9iF,OAAO8c,SAAUgmE,EAAKv0E,cAI3Bu0E,EAAK9iF,OAAOgC,KAAM8gF,EAAKv0E,aAIxBu0E,EAAK9iF,OAAO6c,UAAWimE,EAAKj9K,SAAUi9K,EAAKp5E,WAAYo5E,EAAKnlG,OAI9D,CAED,GAAC,CAAA70I,IAAA,SAAA/D,MAED,WASC,IAPA,IAAMmpN,EAAQ5nN,KAAK4nN,MACb6zB,EAAez7O,KAAKy7O,aACpBa,EAAet8O,KAAKs8O,aACpB/I,EAAcvzO,KAAKuzO,YAIf72O,EAAI,EAAGowD,EAAK86J,EAAMhwN,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAIlD,IAAMg9J,EAASkuD,EAAOlrN,GAAMkrN,EAAOlrN,GAAIurK,YAAcm0E,GAErDD,GAAc7kF,iBAAkBoC,EAAQ+hF,EAAc/+O,IACtDy/O,GAAc50J,QAAS+0J,EAAkB,GAAJ5/O,EAEtC,CAEqB,OAAhB62O,IAEJA,EAAYj0E,aAAc,EAI5B,GAAC,CAAA98J,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAI49O,EAAUr8O,KAAK4nN,MAAO5nN,KAAKy7O,aAEvC,GAAC,CAAAj5O,IAAA,qBAAA/D,MAED,WASC,IAAI8mD,EAAOtoD,KAAK04J,KAA0B,EAApB31J,KAAK4nN,MAAMhwN,QACjC2tD,EAAO+sG,GAAgB/sG,GACvBA,EAAOtoD,KAAKC,IAAKqoD,EAAM,GAEvB,IAAM+2L,EAAe,IAAIznF,aAActvG,EAAOA,EAAO,GACrD+2L,EAAartN,IAAKjvB,KAAKs8O,cAEvB,IAAM/I,EAAc,IAAIwI,GAAaO,EAAc/2L,EAAMA,EAAMwmG,GAAYP,IAO3E,OANA+nF,EAAYj0E,aAAc,EAE1Bt/J,KAAKs8O,aAAeA,EACpBt8O,KAAKuzO,YAAcA,EACnBvzO,KAAKyzO,gBAAkBluL,EAEhBvlD,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAetF,GAEd,IAAM,IAAIuD,EAAI,EAAGowD,EAAK9sD,KAAK4nN,MAAMhwN,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvD,IAAM8/O,EAAOx8O,KAAK4nN,MAAOlrN,GAEzB,GAAK8/O,EAAKrjP,OAASA,EAElB,OAAOqjP,CAIT,CAID,GAAC,CAAAh6O,IAAA,UAAA/D,MAED,WAE2B,OAArBuB,KAAKuzO,cAETvzO,KAAKuzO,YAAY7xE,UAEjB1hK,KAAKuzO,YAAc,KAIrB,GAAC,CAAA/wO,IAAA,WAAA/D,MAED,SAAUg+O,EAAM70B,GAEf5nN,KAAK67G,KAAO4gI,EAAK5gI,KAEjB,IAAM,IAAIn/G,EAAI,EAAGmK,EAAI41O,EAAK70B,MAAMhwN,OAAQ8E,EAAImK,EAAGnK,IAAO,CAErD,IAAMm/G,EAAO4gI,EAAK70B,MAAOlrN,GACrB8/O,EAAO50B,EAAO/rG,QAEJzxG,IAAToyO,IAEJzoO,QAAQk/C,KAAM,2CAA4C4oD,GAC1D2gI,EAAO,IAAId,IAIZ17O,KAAK4nN,MAAM9qN,KAAM0/O,GACjBx8O,KAAKy7O,aAAa3+O,MAAM,IAAI6zK,IAAUhX,UAAW8iF,EAAKhB,aAAc/+O,IAErE,CAIA,OAFAsD,KAAKu0H,OAEEv0H,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAO,CACZ+6E,SAAU,CACTplH,QAAS,IACTuL,KAAM,WACNgrF,UAAW,mBAEZg4H,MAAO,GACP6zB,aAAc,IAGf/3M,EAAKm4E,KAAO77G,KAAK67G,KAKjB,IAHA,IAAM+rG,EAAQ5nN,KAAK4nN,MACb6zB,EAAez7O,KAAKy7O,aAEhB/+O,EAAI,EAAGmK,EAAI+gN,EAAMhwN,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEhD,IAAM8/O,EAAO50B,EAAOlrN,GACpBgnC,EAAKkkL,MAAM9qN,KAAM0/O,EAAK3gI,MAEtB,IAAM6gI,EAAcjB,EAAc/+O,GAClCgnC,EAAK+3M,aAAa3+O,KAAM4/O,EAAYn1J,UAErC,CAEA,OAAO7jD,CAER,KAAC24M,CAAA,CAxQY,GA4QRM,GAAwB,SAAAC,GAAA5gO,EAAA2gO,EAAAC,GAAA,IAAAC,EAAAliO,EAAAgiO,GAE7B,SAAAA,EAAa55O,EAAO0/K,EAAU7lB,GAAmC,IAAA0gF,EAAvB51C,EAAgBznM,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAMnB,OANoBwK,EAAA,KAAAkyO,IAE7DW,EAAAT,EAAAhgP,KAAA,KAAOkG,EAAO0/K,EAAU7lB,IAEnBysC,4BAA6B,EAElCi0C,EAAK51C,iBAAmBA,EAAiB41C,CAE1C,CAsBC,OAtBA/zO,EAAAozO,EAAA,EAAAn6O,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAAqhO,EAAA//O,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK0nM,iBAAmBlmM,EAAOkmM,iBAExB1nM,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAAqhO,EAAA//O,WAAA,eAAAC,KAAA,MAMV,OAJA6mC,EAAKgkK,iBAAmB1nM,KAAK0nM,iBAE7BhkK,EAAK2lK,4BAA6B,EAE3B3lK,CAER,KAACi5M,CAAA,CAhC4B,CAASn6D,IAoCjCu6D,GAAqC,IAAIpsE,GACzCqsE,GAAqC,IAAIrsE,GAEzCssE,GAAsB,GAEtB4oI,GAA0B,IAAIl1M,GAC9BusE,GAAsB,IAAIhyD,GAE1BiyD,GAAa,SAAAC,GAAAphO,EAAAmhO,EAAAC,GAAA,IAAAC,EAAA1iO,EAAAwiO,GAElB,SAAAA,EAAaryE,EAAU+N,EAAUl7F,GAAQ,IAAAigK,EAAAnzO,EAAA,KAAA0yO,IAExCS,EAAAP,EAAAxgP,KAAA,KAAOiuK,EAAU+N,IAEZb,iBAAkB,EAEvB4lE,EAAK3lE,eAAiB,IAAI0kE,GAA0B,IAAI9nF,aAAsB,GAARl3E,GAAc,IACpFigK,EAAK1lE,cAAgB,KAErB0lE,EAAKjgK,MAAQA,EAEbigK,EAAK1nE,eAAgB,EAErB,IAAM,IAAIx5K,EAAI,EAAGA,EAAIihF,EAAOjhF,IAE3BkhP,EAAKkoI,YAAappX,EAAGmpX,IAErB,OAAAjoI,CAEF,CA+FC,OA/FAr0O,EAAA4zO,EAAA,EAAA36O,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAUb,OARA9xC,GAAA5rH,EAAA6hO,EAAAvgP,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAKi4K,eAAevc,KAAMl6J,EAAOy2K,gBAEH,OAAzBz2K,EAAO02K,gBAAyBl4K,KAAKk4K,cAAgB12K,EAAO02K,cAAch3K,SAE/ElB,KAAK29E,MAAQn8E,EAAOm8E,MAEb39E,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYmQ,EAAO44B,GAElBA,EAAMmyH,UAAW35J,KAAKk4K,cAAcn1K,MAAe,EAAR6L,EAE5C,GAAC,CAAApM,IAAA,cAAA/D,MAED,SAAamQ,EAAO8qJ,GAEnBA,EAAOC,UAAW35J,KAAKi4K,eAAel1K,MAAe,GAAR6L,EAE9C,GAAC,CAAApM,IAAA,UAAA/D,MAED,SAASitL,EAAWC,GAEnB,IAAM1jB,EAAcjoK,KAAKioK,YACnBs1E,EAAev9O,KAAK29E,MAK1B,GAHAu/J,GAAMpyE,SAAW9qK,KAAK8qK,SACtBoyE,GAAMrkE,SAAW74K,KAAK64K,cAEEzuK,IAAnB8yO,GAAMrkE,SAEX,IAAM,IAAI2kE,EAAa,EAAGA,EAAaD,EAAcC,IAAgB,CAIpEx9O,KAAKy9O,YAAaD,EAAYT,IAE9BC,GAAqB1lF,iBAAkB2Q,EAAa80E,IAIpDG,GAAMj1E,YAAc+0E,GAEpBE,GAAM3C,QAAS7uD,EAAWuxD,IAI1B,IAAM,IAAIvgP,EAAI,EAAGmK,EAAIo2O,GAAoBrlP,OAAQ8E,EAAImK,EAAGnK,IAAO,CAE9D,IAAMi9O,EAAYsD,GAAqBvgP,GACvCi9O,EAAU6D,WAAaA,EACvB7D,EAAUx3O,OAASnC,KACnB2rL,EAAW7uL,KAAM68O,EAElB,CAEAsD,GAAoBrlP,OAAS,CAE9B,CAED,GAAC,CAAA4K,IAAA,aAAA/D,MAED,SAAYmQ,EAAO44B,GAEU,OAAvBxnC,KAAKk4K,gBAETl4K,KAAKk4K,cAAgB,IAAIykE,GAA0B,IAAI9nF,aAA0C,EAA5B70J,KAAKi4K,eAAet6F,OAAa,IAIvGn2C,EAAM+/C,QAASvnF,KAAKk4K,cAAcn1K,MAAe,EAAR6L,EAE1C,GAAC,CAAApM,IAAA,cAAA/D,MAED,SAAamQ,EAAO8qJ,GAEnBA,EAAOnyE,QAASvnF,KAAKi4K,eAAel1K,MAAe,GAAR6L,EAE5C,GAAC,CAAApM,IAAA,qBAAA/D,MAED,WAEA,GAAC,CAAA+D,IAAA,UAAA/D,MAED,WAECuB,KAAKu+B,cAAe,CAAE35B,KAAM,WAE7B,KAACu4O,CAAA,CApHiB,CAASjyD,IAwHtBk8B,GAAiB,SAAAs2B,GAAA1hO,EAAAorM,EAAAs2B,GAAA,IAAAC,EAAAhjO,EAAAysM,GAEtB,SAAAA,EAAa5uC,GAAa,IAAA+lE,EAgBI,OAhBJ9zO,EAAA,KAAA28M,IAEzBm3B,EAAAZ,EAAA9gP,KAAA,OAEKqwO,qBAAsB,EAE3BqR,EAAK35O,KAAO,oBAEZ25O,EAAK/2M,MAAQ,IAAI+zH,GAAO,UAExBgjF,EAAKn9D,UAAY,EACjBm9D,EAAKV,QAAU,QACfU,EAAKT,SAAW,QAEhBS,EAAK5iE,KAAM,EAEX4iE,EAAKn8D,UAAW5J,GAAa+lE,CAE9B,CAiBC,OAjBAh1O,EAAA69M,EAAA,EAAA5kN,IAAA,OAAA/D,MAGD,SAAM+C,GAYL,OAVA0lI,GAAA5rH,EAAA8rM,EAAAxqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OAExBxnC,KAAKohL,UAAY5/K,EAAO4/K,UACxBphL,KAAK69O,QAAUr8O,EAAOq8O,QACtB79O,KAAK89O,SAAWt8O,EAAOs8O,SAEvB99O,KAAK27K,IAAMn6K,EAAOm6K,IAEX37K,IAER,KAAConN,CAAA,CArCqB,CAAS7rC,IAyC1BwiE,GAAyB,IAAIj3E,GAC7Bk3E,GAAuB,IAAIl3E,GAC3Bm3E,GAAiC,IAAIttE,GACrCutE,GAAuB,IAAI9vE,GAC3B+vE,GAA0B,IAAIjxE,GAE9BkxE,GAAI,SAAAC,GAAAriO,EAAAoiO,EAAAC,GAAA,IAAAC,EAAA3jO,EAAAyjO,GAET,SAAAA,IAAmF,IAAAkB,EAAtEx0E,EAAQ7qK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIylL,GAAkB7M,EAAQ54K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAImnN,GAWlC,OAXqD38M,EAAA,KAAA2zO,IAE/EkB,EAAAhB,EAAAzhP,KAAA,OAEKy7K,QAAS,EAEdgnE,EAAK16O,KAAO,OAEZ06O,EAAKx0E,SAAWA,EAChBw0E,EAAKzmE,SAAWA,EAEhBymE,EAAKh0D,qBAAqBg0D,CAE3B,CA2LC,OA3LA/1O,EAAA60O,EAAA,EAAA57O,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAOb,OALA9xC,GAAA5rH,EAAA8iO,EAAAxhP,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAK64K,SAAWr3K,EAAOq3K,SACvB74K,KAAK8qK,SAAWtpK,EAAOspK,SAEhB9qK,IAER,GAAC,CAAAwC,IAAA,uBAAA/D,MAED,WAEC,IAAMqsK,EAAW9qK,KAAK8qK,SAItB,GAAwB,OAAnBA,EAASl8J,MAAiB,CAK9B,IAHA,IAAM45K,EAAoB1d,EAAS54F,WAAW3S,SACxCi/K,EAAgB,CAAE,GAEd9hP,EAAI,EAAGmK,EAAI2hL,EAAkB7qG,MAAOjhF,EAAImK,EAAGnK,IAEpDqhP,GAAShzE,oBAAqByd,EAAmB9rL,EAAI,GACrDshP,GAAOjzE,oBAAqByd,EAAmB9rL,GAE/C8hP,EAAe9hP,GAAM8hP,EAAe9hP,EAAI,GACxC8hP,EAAe9hP,IAAOqhP,GAAS1wE,WAAY2wE,IAI5ClzE,EAASh4J,aAAc,eAAgB,IAAI+xK,GAAwB25D,EAAe,GAEnF,MAECzqO,QAAQk/C,KAAM,iGAIf,OAAOjzD,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASitL,EAAWC,GAEnB,IAAM7gB,EAAW9qK,KAAK8qK,SAChB7C,EAAcjoK,KAAKioK,YACnBw2E,EAAY/yD,EAAUxxH,OAAOkkL,KAAKK,UAClCv4D,EAAYpb,EAASob,UAU3B,GANiC,OAA5Bpb,EAASmb,gBAA0Bnb,EAASwb,wBAEjD63D,GAAUziF,KAAMoP,EAASmb,gBACzBk4D,GAAUt2E,aAAcI,GACxBk2E,GAAUj1E,QAAUu1E,GAEiC,IAAhD/yD,EAAUpd,IAAIf,iBAAkB4wE,IAArC,CAIAF,GAAiBviF,KAAMuM,GAAcn4B,SACrCouG,GAAOxiF,KAAMgwB,EAAUpd,KAAMzG,aAAco2E,IAE3C,IAAMS,EAAiBD,IAAgBz+O,KAAKq3I,MAAMn7I,EAAI8D,KAAKq3I,MAAMhwI,EAAIrH,KAAKq3I,MAAM/vI,GAAM,GAChFq3O,EAAmBD,EAAiBA,EAEpCE,EAAS,IAAI93E,GACb+3E,EAAO,IAAI/3E,GACXg4E,EAAe,IAAIh4E,GACnBi4E,EAAW,IAAIj4E,GACfp4E,EAAO1uF,KAAKk0O,eAAiB,EAAI,EAEjCtlO,EAAQk8J,EAASl8J,MAEjB45K,EADa1d,EAAS54F,WACS3S,SAErC,GAAe,OAAV3wD,EAKJ,IAHA,IAGUlS,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBjkC,EAFT5J,KAAKiuC,IAAKt8B,EAAM+uE,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAElC,EAAGjhF,EAAImK,EAAGnK,GAAKgyF,EAAO,CAEpD,IAAM1yF,EAAI4S,EAAMunJ,KAAMz5J,GAChB6J,EAAIqI,EAAMunJ,KAAMz5J,EAAI,GAO1B,GALAkiP,EAAO7zE,oBAAqByd,EAAmBxsL,GAC/C6iP,EAAK9zE,oBAAqByd,EAAmBjiL,KAE9B23O,GAAOc,oBAAqBJ,EAAQC,EAAME,EAAUD,GAErDH,GAAd,CAEAI,EAASl3E,aAAc7nK,KAAKioK,aAE5B,IAAMyO,EAAWgV,EAAUpd,IAAIl2E,OAAOi1E,WAAY0xE,GAE7CroE,EAAWgV,EAAU7X,MAAQ6C,EAAWgV,EAAU5X,KAEvD6X,EAAW7uL,KAAM,CAEhB45K,SAAUA,EAGVhM,MAAOo0E,EAAa59O,QAAQ2mK,aAAc7nK,KAAKioK,aAC/Cr5J,MAAOlS,EACPwvL,KAAM,KACND,UAAW,KACX9pL,OAAQnC,MAjBgC,CAqB1C,MAOA,IAHA,IAGUtD,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBjkC,EAFT5J,KAAKiuC,IAAKs9I,EAAkB7qG,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAE9C,EAAGjhF,EAAImK,EAAGnK,GAAKgyF,EAAO,CAOpD,GALAkwJ,EAAO7zE,oBAAqByd,EAAmB9rL,GAC/CmiP,EAAK9zE,oBAAqByd,EAAmB9rL,EAAI,KAElCwhP,GAAOc,oBAAqBJ,EAAQC,EAAME,EAAUD,GAErDH,GAAd,CAEAI,EAASl3E,aAAc7nK,KAAKioK,aAE5B,IAAMyO,EAAWgV,EAAUpd,IAAIl2E,OAAOi1E,WAAY0xE,GAE7CroE,EAAWgV,EAAU7X,MAAQ6C,EAAWgV,EAAU5X,KAEvD6X,EAAW7uL,KAAM,CAEhB45K,SAAUA,EAGVhM,MAAOo0E,EAAa59O,QAAQ2mK,aAAc7nK,KAAKioK,aAC/Cr5J,MAAOlS,EACPwvL,KAAM,KACND,UAAW,KACX9pL,OAAQnC,MAjBgC,CAqB1C,CA3FkE,CA+FpE,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,WAEC,IAEMqnL,EAFW9lL,KAAK8qK,SAEWgb,gBAC3BlkL,EAAOrD,OAAOqD,KAAMkkL,GAE1B,GAAKlkL,EAAKhK,OAAS,EAAI,CAEtB,IAAMqvL,EAAiBnB,EAAiBlkL,EAAM,IAE9C,QAAwBwI,IAAnB68K,EAA+B,CAEnCjnL,KAAKurL,sBAAwB,GAC7BvrL,KAAKwrL,sBAAwB,CAAC,EAE9B,IAAM,IAAI1kL,EAAI,EAAGumD,EAAK45H,EAAervL,OAAQkP,EAAIumD,EAAIvmD,IAAO,CAE3D,IAAM3N,EAAO8tL,EAAgBngL,GAAI3N,MAAQ4E,OAAQ+I,GAEjD9G,KAAKurL,sBAAsBzuL,KAAM,GACjCkD,KAAKwrL,sBAAuBryL,GAAS2N,CAEtC,CAED,CAED,CAED,KAACs3O,CAAA,CA1MQ,CAAS5oE,IA8MbypE,GAAuB,IAAIn4E,GAC3Bo4E,GAAqB,IAAIp4E,GAEzBq4E,GAAY,SAAAC,GAAApjO,EAAAmjO,EAAAC,GAAA,IAAAC,EAAA1kO,EAAAwkO,GAEjB,SAAAA,EAAar0E,EAAU+N,GAAW,IAAA6mE,EAMN,OANMj1O,EAAA,KAAA00O,IAEjCO,EAAAL,EAAAxiP,KAAA,KAAOiuK,EAAU+N,IAEZq7D,gBAAiB,EAEtBwL,EAAK96O,KAAO,eAAe86O,CAE5B,CAiCC,OAjCAn2O,EAAA41O,EAAA,EAAA38O,IAAA,uBAAA/D,MAED,WAEC,IAAMqsK,EAAW9qK,KAAK8qK,SAItB,GAAwB,OAAnBA,EAASl8J,MAAiB,CAK9B,IAHA,IAAM45K,EAAoB1d,EAAS54F,WAAW3S,SACxCi/K,EAAgB,GAEZ9hP,EAAI,EAAGmK,EAAI2hL,EAAkB7qG,MAAOjhF,EAAImK,EAAGnK,GAAK,EAEzDuiP,GAAOl0E,oBAAqByd,EAAmB9rL,GAC/CwiP,GAAKn0E,oBAAqByd,EAAmB9rL,EAAI,GAEjD8hP,EAAe9hP,GAAc,IAANA,EAAY,EAAI8hP,EAAe9hP,EAAI,GAC1D8hP,EAAe9hP,EAAI,GAAM8hP,EAAe9hP,GAAMuiP,GAAO5xE,WAAY6xE,IAIlEp0E,EAASh4J,aAAc,eAAgB,IAAI+xK,GAAwB25D,EAAe,GAEnF,MAECzqO,QAAQk/C,KAAM,yGAIf,OAAOjzD,IAER,KAACm/O,CAAA,CA3CgB,CAASf,IA+CrBmB,GAAQ,SAAAC,GAAAxjO,EAAAujO,EAAAC,GAAA,IAAAC,EAAA9kO,EAAA4kO,GAEb,SAAAA,EAAaz0E,EAAU+N,GAAW,IAAAgnE,EAMV,OANUp1O,EAAA,KAAA80O,IAEjCM,EAAAJ,EAAA5iP,KAAA,KAAOiuK,EAAU+N,IAEZs7D,YAAa,EAElB0L,EAAKj7O,KAAO,WAAWi7O,CAExB,CAAC,OAAAt2O,EAAAg2O,EAAA,CAVY,CAASnB,IAcjB92B,GAAc,SAAAq4B,GAAA3jO,EAAAsrM,EAAAq4B,GAAA,IAAAC,EAAAjlO,EAAA2sM,GAEnB,SAAAA,EAAa9uC,GAAa,IAAA6nE,EAmBI,OAnBJ51O,EAAA,KAAA68M,IAEzB+4B,EAAAT,EAAA/iP,KAAA,OAEKywO,kBAAmB,EAExB+S,EAAKz7O,KAAO,iBAEZy7O,EAAK74M,MAAQ,IAAI+zH,GAAO,UAExB8kF,EAAK9jP,IAAM,KAEX8jP,EAAKjhE,SAAW,KAEhBihE,EAAK96L,KAAO,EACZ86L,EAAKl/D,iBAAkB,EAEvBk/D,EAAK1kE,KAAM,EAEX0kE,EAAKj+D,UAAW5J,GAAa6nE,CAE9B,CAmBC,OAnBA92O,EAAA+9M,EAAA,EAAA9kN,IAAA,OAAA/D,MAED,SAAM+C,GAeL,OAbA0lI,GAAA5rH,EAAAgsM,EAAA1qN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OAExBxnC,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAKulD,KAAO/jD,EAAO+jD,KACnBvlD,KAAKmhL,gBAAkB3/K,EAAO2/K,gBAE9BnhL,KAAK27K,IAAMn6K,EAAOm6K,IAEX37K,IAER,KAACsnN,CAAA,CA1CkB,CAAS/rC,IA8CvBukE,GAA+B,IAAInvE,GACnCovE,GAAqB,IAAI3xE,GACzB4xE,GAAwB,IAAI9yE,GAC5B+yE,GAA4B,IAAIn5E,GAEhCo5E,GAAM,SAAAC,GAAAnkO,EAAAkkO,EAAAC,GAAA,IAAAC,EAAAzlO,EAAAulO,GAEX,SAAAA,IAAgF,IAAAY,EAAnEh2E,EAAQ7qK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIylL,GAAkB7M,EAAQ54K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIqnN,GAWlC,OAXkD78M,EAAA,KAAAy1O,IAE5EY,EAAAV,EAAAvjP,KAAA,OAEK07K,UAAW,EAEhBuoE,EAAKl8O,KAAO,SAEZk8O,EAAKh2E,SAAWA,EAChBg2E,EAAKjoE,SAAWA,EAEhBioE,EAAKx1D,qBAAqBw1D,CAE3B,CAuGC,OAvGAv3O,EAAA22O,EAAA,EAAA19O,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAOb,OALA9xC,GAAA5rH,EAAA4kO,EAAAtjP,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAK64K,SAAWr3K,EAAOq3K,SACvB74K,KAAK8qK,SAAWtpK,EAAOspK,SAEhB9qK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASitL,EAAWC,GAEnB,IAAM7gB,EAAW9qK,KAAK8qK,SAChB7C,EAAcjoK,KAAKioK,YACnBw2E,EAAY/yD,EAAUxxH,OAAOgmL,OAAOzB,UACpCv4D,EAAYpb,EAASob,UAU3B,GANiC,OAA5Bpb,EAASmb,gBAA0Bnb,EAASwb,wBAEjD05D,GAAQtkF,KAAMoP,EAASmb,gBACvB+5D,GAAQn4E,aAAcI,GACtB+3E,GAAQ92E,QAAUu1E,GAEiC,IAA9C/yD,EAAUpd,IAAIf,iBAAkByyE,IAArC,CAIAF,GAAepkF,KAAMuM,GAAcn4B,SACnCiwG,GAAKrkF,KAAMgwB,EAAUpd,KAAMzG,aAAci4E,IAEzC,IAAMpB,EAAiBD,IAAgBz+O,KAAKq3I,MAAMn7I,EAAI8D,KAAKq3I,MAAMhwI,EAAIrH,KAAKq3I,MAAM/vI,GAAM,GAChFq3O,EAAmBD,EAAiBA,EAEpC9vO,EAAQk8J,EAASl8J,MAEjB45K,EADa1d,EAAS54F,WACS3S,SAErC,GAAe,OAAV3wD,EAKJ,IAHA,IAGUlS,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBgiB,EAFT7vD,KAAKiuC,IAAKt8B,EAAM+uE,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAElCjhF,EAAIowD,EAAIpwD,IAAO,CAE7C,IAAMV,EAAI4S,EAAMunJ,KAAMz5J,GAEtBujP,GAAYl1E,oBAAqByd,EAAmBxsL,GAEpDskP,GAAWL,GAAajkP,EAAG2iP,EAAkB12E,EAAayjB,EAAWC,EAAY3rL,KAElF,MAOA,IAHA,IAGUtD,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBjkC,EAFT5J,KAAKiuC,IAAKs9I,EAAkB7qG,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAE/CjhF,EAAImK,EAAGnK,IAEpCujP,GAAYl1E,oBAAqByd,EAAmB9rL,GAEpD4jP,GAAWL,GAAavjP,EAAGiiP,EAAkB12E,EAAayjB,EAAWC,EAAY3rL,KAtClB,CA4ClE,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,WAEC,IAEMqnL,EAFW9lL,KAAK8qK,SAEWgb,gBAC3BlkL,EAAOrD,OAAOqD,KAAMkkL,GAE1B,GAAKlkL,EAAKhK,OAAS,EAAI,CAEtB,IAAMqvL,EAAiBnB,EAAiBlkL,EAAM,IAE9C,QAAwBwI,IAAnB68K,EAA+B,CAEnCjnL,KAAKurL,sBAAwB,GAC7BvrL,KAAKwrL,sBAAwB,CAAC,EAE9B,IAAM,IAAI1kL,EAAI,EAAGumD,EAAK45H,EAAervL,OAAQkP,EAAIumD,EAAIvmD,IAAO,CAE3D,IAAM3N,EAAO8tL,EAAgBngL,GAAI3N,MAAQ4E,OAAQ+I,GAEjD9G,KAAKurL,sBAAsBzuL,KAAM,GACjCkD,KAAKwrL,sBAAuBryL,GAAS2N,CAEtC,CAED,CAED,CAED,KAACo5O,CAAA,CAtHU,CAAS1qE,IA0HrB,SAAS8qE,GAAW51E,EAAO97J,EAAO+vO,EAAkB12E,EAAayjB,EAAWC,EAAYxpL,GAEvF,IAAMo+O,EAAqBR,GAAKvxE,kBAAmB9D,GAEnD,GAAK61E,EAAqB5B,EAAmB,CAE5C,IAAM6B,EAAiB,IAAI15E,GAE3Bi5E,GAAKU,oBAAqB/1E,EAAO81E,GACjCA,EAAe34E,aAAcI,GAE7B,IAAMyO,EAAWgV,EAAUpd,IAAIl2E,OAAOi1E,WAAYmzE,GAElD,GAAK9pE,EAAWgV,EAAU7X,MAAQ6C,EAAWgV,EAAU5X,IAAM,OAE7D6X,EAAW7uL,KAAM,CAEhB45K,SAAUA,EACVgqE,cAAezjP,KAAK04J,KAAM4qF,GAC1B71E,MAAO81E,EACP5xO,MAAOA,EACPs9K,KAAM,KACN/pL,OAAQA,GAIV,CAED,CAAC,IA0EKm/O,GAAiB,SAAAC,GAAAvlO,EAAAslO,EAAAC,GAAA,IAAAC,EAAA7mO,EAAA2mO,GAEtB,SAAAA,EAAa5iF,EAASvwJ,EAAOC,EAAQmwJ,EAAQ35J,EAAM0/I,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWE,EAAYC,GAAW,IAAAojF,EAiBzF,OAjByFp3O,EAAA,KAAA62O,IAEtHO,EAAAL,EAAA3kP,KAAA,KAAO,KAAMynJ,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,EAAYC,IAE/Ek7D,qBAAsB,EAE3BkoB,EAAK1oG,MAAQ,CAAEhrI,MAAOA,EAAOC,OAAQA,GACrCyzO,EAAKnjF,QAAUA,EAKfmjF,EAAK9iF,OAAQ,EAKb8iF,EAAKhjF,iBAAkB,EAAMgjF,CAE9B,CAAC,OAAAt4O,EAAA+3O,EAAA,CArBqB,CAASvjF,IAyB1BgoN,GAAsB,SAAAC,GAAAhqW,EAAA+pW,EAAAC,GAAA,IAAApkI,EAAAjnO,EAAAorW,GAE3B,SAAAA,EAAarnN,EAASvwJ,EAAOC,EAAQmgG,EAAOgwD,EAAQ35J,GAAO,IAAAg/O,EAMzB,OANyBn5O,EAAA,KAAAs7W,IAE1DniI,EAAAhC,EAAA/kP,KAAA,KAAO6hK,EAASvwJ,EAAOC,EAAQmwJ,EAAQ35J,IAElCi/W,0BAA2B,EAChCjgI,EAAKzqG,MAAM5qC,MAAQA,EACnBq1I,EAAK9hF,MAAQxX,GAAoBs5F,CAElC,CAAC,OAAAr6O,EAAAw8W,EAAA,CAV0B,CAASzkI,IA0tLrC,IAwEMr6B,GAAoB,SAAA06C,GAAA3lP,EAAAirM,EAAA06C,GAAA,IAAAI,EAAApnP,EAAAssM,GAEzB,SAAAA,EAAazuC,GAAa,IAAA8pF,EAuDI,OAvDJ73P,EAAA,KAAAw8M,IAEzBq7C,EAAAP,EAAAllQ,KAAA,OAEK8qN,wBAAyB,EAE9B26C,EAAK3zE,QAAU,CAAE,SAAY,IAE7B2zE,EAAK19P,KAAO,uBAEZ09P,EAAK96N,MAAQ,IAAI+zH,GAAO,UACxB+mG,EAAKpkF,UAAY,EACjBokF,EAAKnkF,UAAY,EAEjBmkF,EAAK/lQ,IAAM,KAEX+lQ,EAAKjjF,SAAW,KAChBijF,EAAKhjF,kBAAoB,EAEzBgjF,EAAK/iF,MAAQ,KACb+iF,EAAK9iF,eAAiB,EAEtB8iF,EAAK/jF,SAAW,IAAIhjB,GAAO,GAC3B+mG,EAAK9jF,kBAAoB,EACzB8jF,EAAKniF,YAAc,KAEnBmiF,EAAK7iF,QAAU,KACf6iF,EAAK5iF,UAAY,EAEjB4iF,EAAK3iF,UAAY,KACjB2iF,EAAK1iF,cAAgBvwB,GACrBizG,EAAKziF,YAAc,IAAI1qB,GAAS,EAAG,GAEnCmtG,EAAKxiF,gBAAkB,KACvBwiF,EAAKviF,kBAAoB,EACzBuiF,EAAKtiF,iBAAmB,EAExBsiF,EAAKriF,aAAe,KAEpBqiF,EAAKpiF,aAAe,KAEpBoiF,EAAKljF,SAAW,KAEhBkjF,EAAK/hF,OAAS,KACd+hF,EAAK7hF,gBAAkB,EAEvB6hF,EAAK9gF,WAAY,EACjB8gF,EAAK7gF,mBAAqB,EAC1B6gF,EAAK5gF,iBAAmB,QACxB4gF,EAAK3gF,kBAAoB,QAEzB2gF,EAAKrkF,aAAc,EAEnBqkF,EAAK3mF,KAAM,EAEX2mF,EAAKlgF,UAAW5J,GAAa8pF,CAE9B,CAuDC,OAvDA/4P,EAAA09M,EAAA,EAAAzkN,IAAA,OAAA/D,MAED,SAAM+C,GAmDL,OAjDA0lI,GAAA5rH,EAAA2rM,EAAArqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK2uL,QAAU,CAAE,SAAY,IAE7B3uL,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OACxBxnC,KAAKk+K,UAAY18K,EAAO08K,UACxBl+K,KAAKm+K,UAAY38K,EAAO28K,UAExBn+K,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKq/K,SAAW79K,EAAO69K,SACvBr/K,KAAKs/K,kBAAoB99K,EAAO89K,kBAEhCt/K,KAAKu/K,MAAQ/9K,EAAO+9K,MACpBv/K,KAAKw/K,eAAiBh+K,EAAOg+K,eAE7Bx/K,KAAKu+K,SAAS7iB,KAAMl6J,EAAO+8K,UAC3Bv+K,KAAKmgL,YAAc3+K,EAAO2+K,YAC1BngL,KAAKw+K,kBAAoBh9K,EAAOg9K,kBAEhCx+K,KAAKy/K,QAAUj+K,EAAOi+K,QACtBz/K,KAAK0/K,UAAYl+K,EAAOk+K,UAExB1/K,KAAK2/K,UAAYn+K,EAAOm+K,UACxB3/K,KAAK4/K,cAAgBp+K,EAAOo+K,cAC5B5/K,KAAK6/K,YAAYnkB,KAAMl6J,EAAOq+K,aAE9B7/K,KAAK8/K,gBAAkBt+K,EAAOs+K,gBAC9B9/K,KAAK+/K,kBAAoBv+K,EAAOu+K,kBAChC//K,KAAKggL,iBAAmBx+K,EAAOw+K,iBAE/BhgL,KAAKigL,aAAez+K,EAAOy+K,aAE3BjgL,KAAKkgL,aAAe1+K,EAAO0+K,aAE3BlgL,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAKugL,OAAS/+K,EAAO++K,OACrBvgL,KAAKygL,gBAAkBj/K,EAAOi/K,gBAE9BzgL,KAAKwhL,UAAYhgL,EAAOggL,UACxBxhL,KAAKyhL,mBAAqBjgL,EAAOigL,mBACjCzhL,KAAK0hL,iBAAmBlgL,EAAOkgL,iBAC/B1hL,KAAK2hL,kBAAoBngL,EAAOmgL,kBAEhC3hL,KAAKi+K,YAAcz8K,EAAOy8K,YAE1Bj+K,KAAK27K,IAAMn6K,EAAOm6K,IAEX37K,IAER,KAACinN,CAAA,CAlHwB,CAAS1rC,IAsH7B2rC,GAAoB,SAAA46C,GAAA9lP,EAAAkrM,EAAA46C,GAAA,IAAAO,EAAA1nP,EAAAusM,GAEzB,SAAAA,EAAa1uC,GAAa,IAAAiqF,EA+DI,OA/DJh4P,EAAA,KAAAy8M,IAEzBu7C,EAAAJ,EAAAxlQ,KAAA,OAEK+vO,wBAAyB,EAE9B61B,EAAK9zE,QAAU,CAEd,SAAY,GACZ,SAAY,IAIb8zE,EAAK79P,KAAO,uBAEZ69P,EAAK1jF,aAAe,KACpB0jF,EAAK3jF,mBAAqB,EAC1B2jF,EAAKzjF,sBAAwB,KAC7ByjF,EAAKvjF,qBAAuB,IAAI/pB,GAAS,EAAG,GAC5CstG,EAAKxjF,mBAAqB,KAE1BwjF,EAAK3hE,IAAM,IAEXviM,OAAOC,eAAcgd,EAAAinP,GAAQ,eAAgB,CAC5C1yO,IAAK,WAEJ,OAASmiI,GAAO,KAAQlyJ,KAAK8gM,IAAM,IAAQ9gM,KAAK8gM,IAAM,GAAK,EAAG,EAE/D,EACA7xK,IAAK,SAAWyxJ,GAEf1gL,KAAK8gM,KAAQ,EAAI,GAAMpgB,IAAmB,EAAI,GAAMA,EAErD,IAGD+hF,EAAKu+G,eAAiB,KACtBv+G,EAAKq+G,eAAiB,IACtBr+G,EAAKs+G,0BAA4B,CAAE,IAAK,KACxCt+G,EAAKw+G,wBAA0B,KAE/Bx+G,EAAKpkF,WAAa,IAAI9iB,GAAO,GAC7BknG,EAAKj1D,cAAgB,KACrBi1D,EAAKnkF,eAAiB,EACtBmkF,EAAKh1D,kBAAoB,KAEzBg1D,EAAK3hF,gBAAkB,KAEvB2hF,EAAK1hF,UAAY,EACjB0hF,EAAKzhF,aAAe,KACpByhF,EAAKxhF,oBAAsB93H,IAC3Bs5M,EAAKvhF,iBAAmB,IAAI3lB,GAAO,EAAG,EAAG,GAEzCknG,EAAK/jF,kBAAoB,EACzB+jF,EAAKpiF,qBAAuB,KAC5BoiF,EAAK9jF,cAAgB,IAAIpjB,GAAO,EAAG,EAAG,GACtCknG,EAAKniF,iBAAmB,KAExBmiF,EAAKR,OAAS,EACdQ,EAAKP,WAAa,EAClBO,EAAKwjH,aAAe,EACpBxjH,EAAKN,cAAgB,EAErBM,EAAKrgF,UAAW5J,GAAaiqF,CAE9B,CAyHC,OAzHAl5P,EAAA29M,EAAA,EAAA1kN,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAKiiQ,MAEb,EAAChzO,IAED,SAAWxwB,GAELuB,KAAKiiQ,OAAS,IAAMxjQ,EAAQ,GAEhCuB,KAAK3G,UAIN2G,KAAKiiQ,OAASxjQ,CAEf,GAAC,CAAA+D,IAAA,YAAAutB,IAED,WAEC,OAAO/vB,KAAKkiQ,UAEb,EAACjzO,IAED,SAAexwB,GAETuB,KAAKkiQ,WAAa,IAAMzjQ,EAAQ,GAEpCuB,KAAK3G,UAIN2G,KAAKkiQ,WAAazjQ,CAEnB,GAAC,CAAA+D,IAAA,cAAAutB,IAED,WAEC,OAAO/vB,KAAKimX,YAEb,EAACh3V,IAED,SAAiBxwB,GAEXuB,KAAKimX,aAAe,IAAMxnX,EAAQ,GAEtCuB,KAAK3G,UAIN2G,KAAKimX,aAAexnX,CAErB,GAAC,CAAA+D,IAAA,eAAAutB,IAED,WAEC,OAAO/vB,KAAKmiQ,aAEb,EAAClzO,IAED,SAAkBxwB,GAEZuB,KAAKmiQ,cAAgB,IAAM1jQ,EAAQ,GAEvCuB,KAAK3G,UAIN2G,KAAKmiQ,cAAgB1jQ,CAEtB,GAAC,CAAA+D,IAAA,OAAA/D,MAED,SAAM+C,GA6CL,OA3CA0lI,GAAA5rH,EAAA4rM,EAAAtqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK2uL,QAAU,CAEd,SAAY,GACZ,SAAY,IAIb3uL,KAAK6+K,UAAYr9K,EAAOq9K,UACxB7+K,KAAK++K,aAAev9K,EAAOu9K,aAC3B/+K,KAAK8+K,mBAAqBt9K,EAAOs9K,mBACjC9+K,KAAKg/K,sBAAwBx9K,EAAOw9K,sBACpCh/K,KAAKi/K,mBAAqBz9K,EAAOy9K,mBACjCj/K,KAAKk/K,qBAAqBxjB,KAAMl6J,EAAO09K,sBAEvCl/K,KAAK8gM,IAAMt/L,EAAOs/L,IAElB9gM,KAAK6gX,YAAcr/W,EAAOq/W,YAC1B7gX,KAAKghX,eAAiBx/W,EAAOw/W,eAC7BhhX,KAAK8gX,eAAiBt/W,EAAOs/W,eAC7B9gX,KAAK+gX,0BAAyBhtT,EAAQvyD,EAAOu/W,2BAC7C/gX,KAAKihX,wBAA0Bz/W,EAAOy/W,wBAEtCjhX,KAAKo+K,MAAQ58K,EAAO48K,MACpBp+K,KAAKq+K,WAAW3iB,KAAMl6J,EAAO68K,YAC7Br+K,KAAKwtM,cAAgBhsM,EAAOgsM,cAC5BxtM,KAAKs+K,eAAiB98K,EAAO88K,eAC7Bt+K,KAAKytM,kBAAoBjsM,EAAOisM,kBAEhCztM,KAAK6gL,aAAer/K,EAAOq/K,aAC3B7gL,KAAK8gL,gBAAkBt/K,EAAOs/K,gBAE9B9gL,KAAK+gL,UAAYv/K,EAAOu/K,UACxB/gL,KAAKghL,aAAex/K,EAAOw/K,aAC3BhhL,KAAKihL,oBAAsBz/K,EAAOy/K,oBAClCjhL,KAAKkhL,iBAAiBxlB,KAAMl6J,EAAO0/K,kBAEnClhL,KAAK0+K,kBAAoBl9K,EAAOk9K,kBAChC1+K,KAAKqgL,qBAAuB7+K,EAAO6+K,qBACnCrgL,KAAK2+K,cAAcjjB,KAAMl6J,EAAOm9K,eAChC3+K,KAAKsgL,iBAAmB9+K,EAAO8+K,iBAExBtgL,IAER,KAACknN,CAAA,CA5LwB,CAASD,IAoqBnC,SAASu8C,GAAYzgQ,EAAOsf,EAAMuoD,GAEjC,OAAK64L,GAAc1gQ,GAIX,IAAIA,EAAMoX,YAAapX,EAAMs0L,SAAUh1K,OAAajY,IAAPwgE,EAAmBA,EAAK7nE,EAAMnL,SAI5EmL,EAAM6N,MAAOyR,EAAMuoD,EAE3B,CAGA,SAAS84L,GAAc3gQ,EAAO6B,EAAM++P,GAEnC,OAAO5gQ,IACJ4gQ,GAAc5gQ,EAAMoX,cAAgBvV,EAAc7B,EAEd,kBAA3B6B,EAAKuyL,kBAET,IAAIvyL,EAAM7B,GAIXpG,MAAMC,UAAUgU,MAAM/T,KAAMkG,EAEpC,CAEA,SAAS0gQ,GAActhQ,GAEtB,OAAOwwD,YAAYC,OAAQzwD,MACtBA,aAAkByhQ,SAExB,CAGA,SAASC,GAAkBC,GAU1B,IAFA,IAAM/8P,EAAI+8P,EAAMlsQ,OACVE,EAAS,IAAI6E,MAAOoK,GAChBrK,EAAI,EAAGA,IAAMqK,IAAMrK,EAAI5E,EAAQ4E,GAAMA,EAI/C,OAFA5E,EAAO0hG,MAVP,SAAsB98F,EAAGmT,GAExB,OAAOi0P,EAAOpnQ,GAAMonQ,EAAOj0P,EAE5B,IAQO/X,CAER,CAGA,SAASisQ,GAAah3P,EAAQ08K,EAAQl8K,GAKrC,IAHA,IAAMy2P,EAAUj3P,EAAOnV,OACjBE,EAAS,IAAIiV,EAAOoN,YAAa6pP,GAE7BtnQ,EAAI,EAAGmpK,EAAY,EAAGA,IAAcm+F,IAAYtnQ,EAIzD,IAFA,IAAMunQ,EAAY12P,EAAO7Q,GAAM+sL,EAErB55K,EAAI,EAAGA,IAAM45K,IAAW55K,EAEjC/X,EAAQ+tK,KAAiB94J,EAAQk3P,EAAYp0P,GAM/C,OAAO/X,CAER,CAGA,SAASosQ,GAAaC,EAAUL,EAAO/2P,EAAQq3P,GAI9C,IAFA,IAAI1nQ,EAAI,EAAG8F,EAAM2hQ,EAAU,QAEX/5P,IAAR5H,QAAkD4H,IAA7B5H,EAAK4hQ,IAEjC5hQ,EAAM2hQ,EAAUznQ,KAIjB,QAAa0N,IAAR5H,EAAL,CAEA,IAAI/D,EAAQ+D,EAAK4hQ,GACjB,QAAeh6P,IAAV3L,EAEL,GAAK9B,MAAM0E,QAAS5C,GAEnB,QAIgB2L,KAFf3L,EAAQ+D,EAAK4hQ,MAIZN,EAAMhnQ,KAAM0F,EAAIylC,MAChBl7B,EAAOjQ,KAAKgD,MAAOiN,EAAQtO,IAI5B+D,EAAM2hQ,EAAUznQ,gBAEC0N,IAAR5H,QAEJ,QAAuB4H,IAAlB3L,EAAM8oF,QAIjB,QAIgBn9E,KAFf3L,EAAQ+D,EAAK4hQ,MAIZN,EAAMhnQ,KAAM0F,EAAIylC,MAChBxpC,EAAM8oF,QAASx6E,EAAQA,EAAOnV,SAI/B4K,EAAM2hQ,EAAUznQ,gBAEC0N,IAAR5H,QAMV,QAIgB4H,KAFf3L,EAAQ+D,EAAK4hQ,MAIZN,EAAMhnQ,KAAM0F,EAAIylC,MAChBl7B,EAAOjQ,KAAM2B,IAId+D,EAAM2hQ,EAAUznQ,gBAEC0N,IAAR5H,EA1DoB,CA8DhC,CAoMA,IAiCMgkQ,GAAW,WAEhB,SAAAA,EAAaC,EAAoBC,EAAcC,EAAYT,GAAez7P,EAAA,KAAA+7P,GAEzExmQ,KAAKymQ,mBAAqBA,EAC1BzmQ,KAAK4mQ,aAAe,EAEpB5mQ,KAAKkmQ,kBAAgC97P,IAAjB87P,EACnBA,EAAe,IAAIQ,EAAavsP,YAAawsP,GAC9C3mQ,KAAK0mQ,aAAeA,EACpB1mQ,KAAK2kQ,UAAYgC,EAEjB3mQ,KAAK6mQ,SAAW,KAChB7mQ,KAAK8mQ,iBAAmB,CAAC,CAE1B,CAwMC,OAxMAv9P,EAAAi9P,EAAA,EAAAhkQ,IAAA,WAAA/D,MAED,SAAUnH,GAET,IAAMyvQ,EAAK/mQ,KAAKymQ,mBACZ5sF,EAAK75K,KAAK4mQ,aACbt3F,EAAKy3F,EAAIltF,GACTxK,EAAK03F,EAAIltF,EAAK,GAEfmtF,EAAmB,CAElBC,EAAM,CAEL,IAAIznM,EAEJ0nM,EAAa,CAMZC,EAAc,KAAS7vQ,EAAIg4K,GAAO,CAEjC,IAAM,IAAI83F,EAAWvtF,EAAK,IAAO,CAEhC,QAAYzvK,IAAPklK,EAAmB,CAEvB,GAAKh4K,EAAI+3K,EAAK,MAAM83F,EAMpB,OAFAttF,EAAKktF,EAAGnvQ,OACRoI,KAAK4mQ,aAAe/sF,EACb75K,KAAK2nQ,iBAAkB9tF,EAAK,EAEpC,CAEA,GAAKA,IAAOutF,EAAW,MAKvB,GAHA/3F,EAAKC,EAGAh4K,GAFLg4K,EAAKy3F,IAAOltF,IAKX,MAAMotF,CAIR,CAGAznM,EAAQunM,EAAGnvQ,OACX,MAAMsvQ,CAEP,CAIA,GAAS5vQ,GAAK+3K,EAiDd,MAAM23F,EA7CL,IAAMM,EAAWP,EAAI,GAEhBzvQ,EAAIgwQ,IAERztF,EAAK,EACLxK,EAAKi4F,GAMN,IAAM,IAAIF,EAAWvtF,EAAK,IAAO,CAEhC,QAAYzvK,IAAPilK,EAKJ,OADArvK,KAAK4mQ,aAAe,EACb5mQ,KAAK2nQ,iBAAkB,GAI/B,GAAK9tF,IAAOutF,EAAW,MAKvB,GAHA93F,EAAKD,EAGA/3K,IAFL+3K,EAAK03F,IAAOltF,EAAK,IAKhB,MAAMotF,CAIR,CAGAznM,EAAQq6G,EACRA,EAAK,CASP,CAIA,KAAQA,EAAKr6G,GAAQ,CAEpB,IAAMgoM,EAAQ3tF,EAAKr6G,IAAY,EAE1BloE,EAAIyvQ,EAAIS,GAEZhoM,EAAQgoM,EAIR3tF,EAAK2tF,EAAM,CAIb,CAOA,GALAl4F,EAAKy3F,EAAIltF,QAKGzvK,KAJZilK,EAAK03F,EAAIltF,EAAK,IAOb,OADA75K,KAAK4mQ,aAAe,EACb5mQ,KAAK2nQ,iBAAkB,GAI/B,QAAYv9P,IAAPklK,EAIJ,OAFAuK,EAAKktF,EAAGnvQ,OACRoI,KAAK4mQ,aAAe/sF,EACb75K,KAAK2nQ,iBAAkB9tF,EAAK,EAIrC,CAEA75K,KAAK4mQ,aAAe/sF,EAEpB75K,KAAKynQ,iBAAkB5tF,EAAIxK,EAAIC,EAEhC,CAEA,OAAOtvK,KAAK0nQ,aAAc7tF,EAAIxK,EAAI/3K,EAAGg4K,EAEtC,GAAC,CAAA9sK,IAAA,eAAA/D,MAED,WAEC,OAAOuB,KAAK6mQ,UAAY7mQ,KAAK8mQ,gBAE9B,GAAC,CAAAtkQ,IAAA,mBAAA/D,MAED,SAAkBmQ,GASjB,IALA,IAAM9W,EAASkI,KAAKkmQ,aACnBn5P,EAAS/M,KAAK0mQ,aACdj9E,EAASzpL,KAAK2kQ,UACd56N,EAASn7B,EAAQ66K,EAER/sL,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAEjC5E,EAAQ4E,GAAMqQ,EAAQg9B,EAASrtC,GAIhC,OAAO5E,CAER,GAEA,CAAA0K,IAAA,eAAA/D,MAEA,WAEC,MAAM,IAAIX,MAAO,0BAGlB,GAAC,CAAA0E,IAAA,mBAAA/D,MAED,WAEC,KAEA+nQ,CAAA,CAvNe,GAmOXoB,GAAgB,SAAAC,GAAA7rP,EAAA4rP,EAAAC,GAAA,IAAAyB,EAAA3uP,EAAAitP,GAErB,SAAAA,EAAanB,EAAoBC,EAAcC,EAAYT,GAAe,IAAAqO,EAcvE,OAduE9pQ,EAAA,KAAAm9P,IAEzE2M,EAAAjL,EAAAzsQ,KAAA,KAAO4pQ,EAAoBC,EAAcC,EAAYT,IAEhD8B,aAAgB,EACrBuM,EAAKtM,aAAgB,EACrBsM,EAAKrM,aAAgB,EACrBqM,EAAKpM,aAAgB,EAErBoM,EAAKzN,iBAAmB,CAEvBsB,YAAa35G,GACb45G,UAAW55G,IAEV8lH,CAEH,CAoHC,OApHAhrQ,EAAAq+P,EAAA,EAAAplQ,IAAA,mBAAA/D,MAED,SAAkBo7K,EAAIxK,EAAIC,GAEzB,IAAMy3F,EAAK/mQ,KAAKymQ,mBACZ6B,EAAQzuF,EAAK,EAChB0uF,EAAQ1uF,EAAK,EAEb2uF,EAAQzB,EAAIuB,GACZG,EAAQ1B,EAAIwB,GAEb,QAAen+P,IAAVo+P,EAEJ,OAASxoQ,KAAK0oQ,eAAeN,aAE5B,KAAK15G,GAGJ45G,EAAQzuF,EACR2uF,EAAQ,EAAIn5F,EAAKC,EAEjB,MAED,KAAK3gB,GAIJ65G,EAAQn5F,EAAK03F,EADbuB,EAAQvB,EAAGnvQ,OAAS,GACOmvQ,EAAIuB,EAAQ,GAEvC,MAED,QAGCA,EAAQzuF,EACR2uF,EAAQl5F,EAMX,QAAellK,IAAVq+P,EAEJ,OAASzoQ,KAAK0oQ,eAAeL,WAE5B,KAAK35G,GAGJ65G,EAAQ1uF,EACR4uF,EAAQ,EAAIn5F,EAAKD,EAEjB,MAED,KAAK1gB,GAGJ45G,EAAQ,EACRE,EAAQn5F,EAAKy3F,EAAI,GAAMA,EAAI,GAE3B,MAED,QAGCwB,EAAQ1uF,EAAK,EACb4uF,EAAQp5F,EAMX,IAAMs5F,EAAuB,IAAZr5F,EAAKD,GACrBoa,EAASzpL,KAAK2kQ,UAEf3kQ,KAAKgoQ,YAAcW,GAAWt5F,EAAKm5F,GACnCxoQ,KAAKkoQ,YAAcS,GAAWF,EAAQn5F,GACtCtvK,KAAKioQ,YAAcK,EAAQ7+E,EAC3BzpL,KAAKmoQ,YAAcI,EAAQ9+E,CAE5B,GAAC,CAAAjnL,IAAA,eAAA/D,MAED,SAAco7K,EAAIxK,EAAI/3K,EAAGg4K,GAuBxB,IArBA,IAAMx3K,EAASkI,KAAKkmQ,aACnBn5P,EAAS/M,KAAK0mQ,aACdj9E,EAASzpL,KAAK2kQ,UAEd1P,EAAKp7E,EAAK4P,EAASm/E,EAAK3T,EAAKxrE,EAC7Bo/E,EAAK7oQ,KAAKioQ,YAAca,EAAK9oQ,KAAKmoQ,YAClCY,EAAK/oQ,KAAKgoQ,YAAagB,EAAKhpQ,KAAKkoQ,YAEjClhQ,GAAM1P,EAAI+3K,IAASC,EAAKD,GACxB03F,EAAK//P,EAAIA,EACTiiQ,EAAMlC,EAAK//P,EAINkiQ,GAAOH,EAAKE,EAAM,EAAIF,EAAKhC,EAAKgC,EAAK/hQ,EACrC2nK,GAAO,EAAIo6F,GAAOE,IAAU,IAAM,EAAIF,GAAOhC,IAAS,GAAMgC,GAAO/hQ,EAAI,EACvE28J,IAAS,EAAIqlG,GAAOC,GAAQ,IAAMD,GAAOjC,EAAK,GAAM//P,EACpDmiQ,EAAKH,EAAKC,EAAMD,EAAKjC,EAIjBrqQ,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAEjC5E,EAAQ4E,GACNwsQ,EAAKn8P,EAAQ87P,EAAKnsQ,GAClBiyK,EAAK5hK,EAAQ67P,EAAKlsQ,GAClBinK,EAAK52J,EAAQkoP,EAAKv4P,GAClBysQ,EAAKp8P,EAAQ+7P,EAAKpsQ,GAIrB,OAAO5E,CAER,KAAC8vQ,CAAA,CAtIoB,CAASpB,IA0IzB4C,GAAiB,SAAAC,GAAArtP,EAAAotP,EAAAC,GAAA,IAAAQ,EAAAlvP,EAAAyuP,GAEtB,SAAAA,EAAa3C,EAAoBC,EAAcC,EAAYT,GAAe,OAAAz7P,EAAA,KAAA2+P,GAAAS,EAAAhtQ,KAAA,KAElE4pQ,EAAoBC,EAAcC,EAAYT,EAEtD,CAwBC,OAxBA38P,EAAA6/P,EAAA,EAAA5mQ,IAAA,eAAA/D,MAED,SAAco7K,EAAIxK,EAAI/3K,EAAGg4K,GAYxB,IAVA,IAAMx3K,EAASkI,KAAKkmQ,aACnBn5P,EAAS/M,KAAK0mQ,aACdj9E,EAASzpL,KAAK2kQ,UAEd4E,EAAU1vF,EAAK4P,EACf+/E,EAAUD,EAAU9/E,EAEpBggF,GAAYnyQ,EAAI+3K,IAASC,EAAKD,GAC9Bq6F,EAAU,EAAID,EAEL/sQ,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAEjC5E,EAAQ4E,GACNqQ,EAAQy8P,EAAU9sQ,GAAMgtQ,EACxB38P,EAAQw8P,EAAU7sQ,GAAM+sQ,EAI3B,OAAO3xQ,CAER,KAACsxQ,CAAA,CA9BqB,CAAS5C,IAwC1BmD,GAAmB,SAAAC,GAAA5tP,EAAA2tP,EAAAC,GAAA,IAAA+B,EAAAhxP,EAAAgvP,GAExB,SAAAA,EAAalD,EAAoBC,EAAcC,EAAYT,GAAe,OAAAz7P,EAAA,KAAAk/P,GAAAgC,EAAA9uQ,KAAA,KAElE4pQ,EAAoBC,EAAcC,EAAYT,EAEtD,CAMC,OANA38P,EAAAogQ,EAAA,EAAAnnQ,IAAA,eAAA/D,MAED,SAAco7K,GAEb,OAAO75K,KAAK2nQ,iBAAkB9tF,EAAK,EAEpC,KAAC8vF,CAAA,CAZuB,CAASnD,IAgB5BsD,GAAa,WAElB,SAAAA,EAAa3wQ,EAAM2qQ,EAAO/2P,EAAQg9P,GAEjC,GAFiDt/P,EAAA,KAAAq/P,QAEnC1/P,IAATjR,EAAqB,MAAM,IAAI2E,MAAO,gDAC3C,QAAesM,IAAV05P,GAAwC,IAAjBA,EAAMlsQ,OAAe,MAAM,IAAIkG,MAAO,oDAAsD3E,GAExH6G,KAAK7G,KAAOA,EAEZ6G,KAAK8jQ,MAAQJ,GAAcI,EAAO9jQ,KAAKgqQ,gBACvChqQ,KAAK+M,OAAS22P,GAAc32P,EAAQ/M,KAAKiqQ,iBAEzCjqQ,KAAKkqQ,iBAAkBH,GAAiB/pQ,KAAKmqQ,qBAE9C,CAyCC,OAtCD5gQ,EAAAugQ,EAAA,EAAAtnQ,IAAA,mCAAA/D,MAwCA,SAAkC3G,GAEjC,OAAO,IAAI6xQ,GAAqB3pQ,KAAK8jQ,MAAO9jQ,KAAK+M,OAAQ/M,KAAK4kQ,eAAgB9sQ,EAE/E,GAAC,CAAA0K,IAAA,iCAAA/D,MAED,SAAgC3G,GAE/B,OAAO,IAAIsxQ,GAAmBppQ,KAAK8jQ,MAAO9jQ,KAAK+M,OAAQ/M,KAAK4kQ,eAAgB9sQ,EAE7E,GAAC,CAAA0K,IAAA,iCAAA/D,MAED,SAAgC3G,GAE/B,OAAO,IAAI8vQ,GAAkB5nQ,KAAK8jQ,MAAO9jQ,KAAK+M,OAAQ/M,KAAK4kQ,eAAgB9sQ,EAE5E,GAAC,CAAA0K,IAAA,mBAAA/D,MAED,SAAkBsrQ,GAEjB,IAAIK,EAEJ,OAASL,GAER,KAAKz7G,GAEJ87G,EAAgBpqQ,KAAKqqQ,iCAErB,MAED,KAAK97G,GAEJ67G,EAAgBpqQ,KAAKsqQ,+BAErB,MAED,KAAK97G,GAEJ47G,EAAgBpqQ,KAAKuqQ,+BAMvB,QAAuBngQ,IAAlBggQ,EAA8B,CAElC,IAAM1pN,EAAU,iCACf1gD,KAAKulQ,cAAgB,yBAA2BvlQ,KAAK7G,KAEtD,QAAgCiR,IAA3BpK,KAAK2lQ,kBAAkC,CAG3C,GAAKoE,IAAkB/pQ,KAAKmqQ,qBAM3B,MAAM,IAAIrsQ,MAAO4iD,GAJjB1gD,KAAKkqQ,iBAAkBlqQ,KAAKmqQ,qBAQ9B,CAGA,OADAp2P,QAAQk/C,KAAM,uBAAwBvS,GAC/B1gD,IAER,CAIA,OAFAA,KAAK2lQ,kBAAoByE,EAElBpqQ,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,WAEC,OAASuB,KAAK2lQ,mBAEb,KAAK3lQ,KAAKqqQ,iCAET,OAAO/7G,GAER,KAAKtuJ,KAAKsqQ,+BAET,OAAO/7G,GAER,KAAKvuJ,KAAKuqQ,+BAET,OAAO/7G,GAIV,GAAC,CAAAhsJ,IAAA,eAAA/D,MAED,WAEC,OAAOuB,KAAK+M,OAAOnV,OAASoI,KAAK8jQ,MAAMlsQ,MAExC,GAEA,CAAA4K,IAAA,QAAA/D,MACA,SAAO+rQ,GAEN,GAAoB,IAAfA,EAIJ,IAFA,IAAM1G,EAAQ9jQ,KAAK8jQ,MAETpnQ,EAAI,EAAGqK,EAAI+8P,EAAMlsQ,OAAQ8E,IAAMqK,IAAMrK,EAE9ConQ,EAAOpnQ,IAAO8tQ,EAMhB,OAAOxqQ,IAER,GAEA,CAAAwC,IAAA,QAAA/D,MACA,SAAOgsQ,GAEN,GAAmB,IAAdA,EAIJ,IAFA,IAAM3G,EAAQ9jQ,KAAK8jQ,MAETpnQ,EAAI,EAAGqK,EAAI+8P,EAAMlsQ,OAAQ8E,IAAMqK,IAAMrK,EAE9ConQ,EAAOpnQ,IAAO+tQ,EAMhB,OAAOzqQ,IAER,GAGA,CAAAwC,IAAA,OAAA/D,MACA,SAAM2yD,EAAWs5M,GAQhB,IANA,IAAM5G,EAAQ9jQ,KAAK8jQ,MAClB6G,EAAQ7G,EAAMlsQ,OAEXyqB,EAAO,EACVuoD,EAAK+/L,EAAQ,EAENtoP,IAASsoP,GAAS7G,EAAOzhP,GAAS+uC,KAEtC/uC,EAIJ,MAAiB,IAATuoD,GAAck5L,EAAOl5L,GAAO8/L,KAEhC9/L,EAMJ,KAFGA,EAEW,IAATvoD,GAAcuoD,IAAO+/L,EAAQ,CAG5BtoP,GAAQuoD,IAGZvoD,GADAuoD,EAAK3tE,KAAKC,IAAK0tE,EAAI,IACP,GAIb,IAAM6+G,EAASzpL,KAAK4kQ,eACpB5kQ,KAAK8jQ,MAAQN,GAAYM,EAAOzhP,EAAMuoD,GACtC5qE,KAAK+M,OAASy2P,GAAYxjQ,KAAK+M,OAAQsV,EAAOonK,EAAQ7+G,EAAK6+G,EAE5D,CAEA,OAAOzpL,IAER,GAEA,CAAAwC,IAAA,WAAA/D,MACA,WAEC,IAAImsQ,GAAQ,EAENjG,EAAY3kQ,KAAK4kQ,eAClBD,EAAY1nQ,KAAKwf,MAAOkoP,KAAgB,IAE5C5wP,QAAQwN,MAAO,oDAAqDvhB,MACpE4qQ,GAAQ,GAIT,IAAM9G,EAAQ9jQ,KAAK8jQ,MAClB/2P,EAAS/M,KAAK+M,OAEd49P,EAAQ7G,EAAMlsQ,OAEA,IAAV+yQ,IAEJ52P,QAAQwN,MAAO,uCAAwCvhB,MACvD4qQ,GAAQ,GAMT,IAFA,IAAIC,EAAW,KAELnuQ,EAAI,EAAGA,IAAMiuQ,EAAOjuQ,IAAO,CAEpC,IAAMouQ,EAAWhH,EAAOpnQ,GAExB,GAAyB,kBAAbouQ,GAAyBxzP,MAAOwzP,GAAa,CAExD/2P,QAAQwN,MAAO,mDAAoDvhB,KAAMtD,EAAGouQ,GAC5EF,GAAQ,EACR,KAED,CAEA,GAAkB,OAAbC,GAAqBA,EAAWC,EAAW,CAE/C/2P,QAAQwN,MAAO,0CAA2CvhB,KAAMtD,EAAGouQ,EAAUD,GAC7ED,GAAQ,EACR,KAED,CAEAC,EAAWC,CAEZ,CAEA,QAAgB1gQ,IAAX2C,GAEC02P,GAAc12P,GAElB,IAAM,IAAIrQ,EAAI,EAAGqK,EAAIgG,EAAOnV,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEnD,IAAM+B,EAAQsO,EAAQrQ,GAEtB,GAAK4a,MAAO7Y,GAAU,CAErBsV,QAAQwN,MAAO,oDAAqDvhB,KAAMtD,EAAG+B,GAC7EmsQ,GAAQ,EACR,KAED,CAED,CAMF,OAAOA,CAER,GAGA,CAAApoQ,IAAA,WAAA/D,MACA,WAaC,IAVA,IAAMqlQ,EAAQN,GAAYxjQ,KAAK8jQ,OAC9B/2P,EAASy2P,GAAYxjQ,KAAK+M,QAC1B08K,EAASzpL,KAAK4kQ,eAEdmG,EAAsB/qQ,KAAKgrQ,qBAAuBx8G,GAElD0uD,EAAY4mD,EAAMlsQ,OAAS,EAExBqzQ,EAAa,EAEPvuQ,EAAI,EAAGA,EAAIwgN,IAAcxgN,EAAI,CAEtC,IAAIwuQ,GAAO,EAELjjO,EAAO67N,EAAOpnQ,GAKpB,GAAKurC,IAJY67N,EAAOpnQ,EAAI,KAIM,IAANA,GAAWurC,IAAS67N,EAAO,IAEtD,GAAOiH,EAwBNG,GAAO,OAhBP,IAJA,IAAMnhO,EAASrtC,EAAI+sL,EAClB0hF,EAAUphO,EAAS0/I,EACnB2hF,EAAUrhO,EAAS0/I,EAEV55K,EAAI,EAAGA,IAAM45K,IAAW55K,EAAI,CAErC,IAAMpR,EAAQsO,EAAQg9B,EAASl6B,GAE/B,GAAKpR,IAAUsO,EAAQo+P,EAAUt7P,IAChCpR,IAAUsO,EAAQq+P,EAAUv7P,GAAM,CAElCq7P,GAAO,EACP,KAED,CAED,CAYF,GAAKA,EAAO,CAEX,GAAKxuQ,IAAMuuQ,EAAa,CAEvBnH,EAAOmH,GAAenH,EAAOpnQ,GAK7B,IAHA,IAAM2uQ,EAAa3uQ,EAAI+sL,EACtB6hF,EAAcL,EAAaxhF,EAElB55K,EAAI,EAAGA,IAAM45K,IAAW55K,EAEjC9C,EAAQu+P,EAAcz7P,GAAM9C,EAAQs+P,EAAax7P,EAInD,GAEGo7P,CAEJ,CAED,CAIA,GAAK/tD,EAAY,EAAI,CAEpB4mD,EAAOmH,GAAenH,EAAO5mD,GAE7B,IAAM,IAAImuD,EAAanuD,EAAYzzB,EAAQ6hF,EAAcL,EAAaxhF,EAAQ55K,EAAI,EAAGA,IAAM45K,IAAW55K,EAErG9C,EAAQu+P,EAAcz7P,GAAM9C,EAAQs+P,EAAax7P,KAI/Co7P,CAEJ,CAcA,OAZKA,IAAenH,EAAMlsQ,QAEzBoI,KAAK8jQ,MAAQN,GAAYM,EAAO,EAAGmH,GACnCjrQ,KAAK+M,OAASy2P,GAAYz2P,EAAQ,EAAGk+P,EAAaxhF,KAIlDzpL,KAAK8jQ,MAAQA,EACb9jQ,KAAK+M,OAASA,GAIR/M,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,IAAMqlQ,EAAQN,GAAYxjQ,KAAK8jQ,MAAO,GAChC/2P,EAASy2P,GAAYxjQ,KAAK+M,OAAQ,GAGlCypB,EAAQ,IAAI+0O,EADSvrQ,KAAKma,aACMna,KAAK7G,KAAM2qQ,EAAO/2P,GAKxD,OAFAypB,EAAMmvO,kBAAoB3lQ,KAAK2lQ,kBAExBnvO,CAER,IAAC,EAAAh0B,IAAA,SAAA/D,MAxaD,SAAe+3B,GAEd,IAEIimN,EAFE+uB,EAAYh1O,EAAMrc,YAKxB,GAAKqxP,EAAUhsG,SAAWx/J,KAAKw/J,OAE9Bi9E,EAAO+uB,EAAUhsG,OAAQhpI,OAEnB,CAGNimN,EAAO,CAEN,KAAQjmN,EAAMr9B,KACd,MAASuqQ,GAAcltO,EAAMstO,MAAOnnQ,OACpC,OAAU+mQ,GAAcltO,EAAMzpB,OAAQpQ,QAIvC,IAAMotQ,EAAgBvzO,EAAMw0O,mBAEvBjB,IAAkBvzO,EAAM2zO,uBAE5B1tB,EAAKstB,cAAgBA,EAIvB,CAIA,OAFAttB,EAAK73O,KAAO4xB,EAAM+uO,cAEX9oB,CAER,KAACqtB,CAAA,CAvDiB,GA+bnBA,GAAcltQ,UAAUotQ,eAAiBn1G,aACzCi1G,GAAcltQ,UAAUqtQ,gBAAkBp1G,aAC1Ci1G,GAAcltQ,UAAUutQ,qBAAuB57G,GAE/C,IAGMk9G,GAAoB,SAAAC,GAAA1vP,EAAAyvP,EAAAC,GAAA,IAAAI,EAAAnxP,EAAA8wP,GAAA,SAAAA,IAAA,OAAAhhQ,EAAA,KAAAghQ,GAAAK,EAAAhsQ,MAAA,KAAAG,UAAA,QAAAsJ,EAAAkiQ,EAAA,EAAS3B,IAEnC2B,GAAqB7uQ,UAAU2oQ,cAAgB,OAC/CkG,GAAqB7uQ,UAAUqtQ,gBAAkBttQ,MACjD8uQ,GAAqB7uQ,UAAUutQ,qBAAuB77G,GACtDm9G,GAAqB7uQ,UAAU0tQ,oCAAiClgQ,EAChEqhQ,GAAqB7uQ,UAAU2tQ,oCAAiCngQ,EAEhE,IAGMwhQ,GAAkB,SAAAC,GAAA7vP,EAAA4vP,EAAAC,GAAA,IAAAI,EAAAtxP,EAAAixP,GAAA,SAAAA,IAAA,OAAAnhQ,EAAA,KAAAmhQ,GAAAK,EAAAnsQ,MAAA,KAAAG,UAAA,QAAAsJ,EAAAqiQ,EAAA,EAAS9B,IAEjC8B,GAAmBhvQ,UAAU2oQ,cAAgB,QAE7C,IAGMwG,GAAmB,SAAAC,GAAAhwP,EAAA+vP,EAAAC,GAAA,IAAAI,EAAAzxP,EAAAoxP,GAAA,SAAAA,IAAA,OAAAthQ,EAAA,KAAAshQ,GAAAK,EAAAtsQ,MAAA,KAAAG,UAAA,QAAAsJ,EAAAwiQ,EAAA,EAASjC,IAElCiC,GAAoBnvQ,UAAU2oQ,cAAgB,SAE9C,IAIM2G,GAA2B,SAAAC,GAAAnwP,EAAAkwP,EAAAC,GAAA,IAAAK,EAAA7xP,EAAAuxP,GAEhC,SAAAA,EAAazF,EAAoBC,EAAcC,EAAYT,GAAe,OAAAz7P,EAAA,KAAAyhQ,GAAAM,EAAA3vQ,KAAA,KAElE4pQ,EAAoBC,EAAcC,EAAYT,EAEtD,CAoBC,OApBA38P,EAAA2iQ,EAAA,EAAA1pQ,IAAA,eAAA/D,MAED,SAAco7K,EAAIxK,EAAI/3K,EAAGg4K,GAUxB,IARA,IAAMx3K,EAASkI,KAAKkmQ,aACnBn5P,EAAS/M,KAAK0mQ,aACdj9E,EAASzpL,KAAK2kQ,UAEd5uG,GAAUz+J,EAAI+3K,IAASC,EAAKD,GAEzBtlI,EAAS8vI,EAAK4P,EAER1+I,EAAMhB,EAAS0/I,EAAQ1/I,IAAWgB,EAAKhB,GAAU,EAE1Dg5H,GAAWspG,UAAWv0Q,EAAQ,EAAGiV,EAAQg9B,EAAS0/I,EAAQ18K,EAAQg9B,EAAQgsH,GAI3E,OAAOj+J,CAER,KAACo0Q,CAAA,CA1B+B,CAAS1F,IAiCpC8F,GAAuB,SAAAC,GAAAvwP,EAAAswP,EAAAC,GAAA,IAAAI,EAAAhyP,EAAA2xP,GAAA,SAAAA,IAAA,OAAA7hQ,EAAA,KAAA6hQ,GAAAK,EAAA7sQ,MAAA,KAAAG,UAAA,CAM3B,OAN2BsJ,EAAA+iQ,EAAA,EAAA9pQ,IAAA,iCAAA/D,MAE5B,SAAgC3G,GAE/B,OAAO,IAAIo0Q,GAA6BlsQ,KAAK8jQ,MAAO9jQ,KAAK+M,OAAQ/M,KAAK4kQ,eAAgB9sQ,EAEvF,KAACw0Q,CAAA,CAN2B,CAASxC,IAUtCwC,GAAwB1vQ,UAAU2oQ,cAAgB,aAElD+G,GAAwB1vQ,UAAUutQ,qBAAuB57G,GACzD+9G,GAAwB1vQ,UAAU2tQ,oCAAiCngQ,EAEnE,IAGMqiQ,GAAmB,SAAAC,GAAA1wP,EAAAywP,EAAAC,GAAA,IAAAI,EAAAnyP,EAAA8xP,GAAA,SAAAA,IAAA,OAAAhiQ,EAAA,KAAAgiQ,GAAAK,EAAAhtQ,MAAA,KAAAG,UAAA,QAAAsJ,EAAAkjQ,EAAA,EAAS3C,IAElC2C,GAAoB7vQ,UAAU2oQ,cAAgB,SAC9CkH,GAAoB7vQ,UAAUqtQ,gBAAkBttQ,MAChD8vQ,GAAoB7vQ,UAAUutQ,qBAAuB77G,GACrDm+G,GAAoB7vQ,UAAU0tQ,oCAAiClgQ,EAC/DqiQ,GAAoB7vQ,UAAU2tQ,oCAAiCngQ,EAE/D,IAGMwiQ,GAAmB,SAAAC,GAAA7wP,EAAA4wP,EAAAC,GAAA,IAAAuD,EAAAz1P,EAAAiyP,GAAA,SAAAA,IAAA,OAAAniQ,EAAA,KAAAmiQ,GAAAwD,EAAAtwQ,MAAA,KAAAG,UAAA,QAAAsJ,EAAAqjQ,EAAA,EAAS9C,IAElC8C,GAAoBhwQ,UAAU2oQ,cAAgB,SAAS,IAEjDwH,GAAa,WAElB,SAAAA,EAAa5zQ,GAAqE,IAA/DgzE,EAAQlsE,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,IAAK,EAAGu6E,EAAMv6E,UAAArI,OAAA,EAAAqI,UAAA,QAAAmK,EAAEm8P,EAAStmQ,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG2uJ,GAAwBnkJ,EAAA,KAAAsiQ,GAE9E/sQ,KAAK7G,KAAOA,EACZ6G,KAAKw6E,OAASA,EACdx6E,KAAKmsE,SAAWA,EAChBnsE,KAAKumQ,UAAYA,EAEjBvmQ,KAAK67G,KAAOg2C,KAGP7xJ,KAAKmsE,SAAW,GAEpBnsE,KAAK8kQ,eAIP,CA6RC,OA7RAv7P,EAAAwjQ,EAAA,EAAAvqQ,IAAA,gBAAA/D,MA+RD,WAKC,IAHA,IACI0tE,EAAW,EAELzvE,EAAI,EAAGqK,EAHF/G,KAAKw6E,OAGQ5iF,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEnD,IAAM85B,EAAQx2B,KAAKw6E,OAAQ99E,GAE3ByvE,EAAWlvE,KAAKC,IAAKivE,EAAU31C,EAAMstO,MAAOttO,EAAMstO,MAAMlsQ,OAAS,GAElE,CAIA,OAFAoI,KAAKmsE,SAAWA,EAETnsE,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAEC,IAAM,IAAI/B,EAAI,EAAGA,EAAIsD,KAAKw6E,OAAO5iF,OAAQ8E,IAExCsD,KAAKw6E,OAAQ99E,GAAImyB,KAAM,EAAG7uB,KAAKmsE,UAIhC,OAAOnsE,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,WAIC,IAFA,IAAImsQ,GAAQ,EAEFluQ,EAAI,EAAGA,EAAIsD,KAAKw6E,OAAO5iF,OAAQ8E,IAExCkuQ,EAAQA,GAAS5qQ,KAAKw6E,OAAQ99E,GAAIswQ,WAInC,OAAOpC,CAER,GAAC,CAAApoQ,IAAA,WAAA/D,MAED,WAEC,IAAM,IAAI/B,EAAI,EAAGA,EAAIsD,KAAKw6E,OAAO5iF,OAAQ8E,IAExCsD,KAAKw6E,OAAQ99E,GAAIuwQ,WAIlB,OAAOjtQ,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAIC,IAFA,IAAM+7E,EAAS,GAEL99E,EAAI,EAAGA,EAAIsD,KAAKw6E,OAAO5iF,OAAQ8E,IAExC89E,EAAO19E,KAAMkD,KAAKw6E,OAAQ99E,GAAIwE,SAI/B,OAAO,IAAIlB,KAAKma,YAAana,KAAK7G,KAAM6G,KAAKmsE,SAAUqO,EAAQx6E,KAAKumQ,UAErE,GAAC,CAAA/jQ,IAAA,SAAA/D,MAED,WAEC,OAAOuB,KAAKma,YAAYqlJ,OAAQx/J,KAEjC,IAAC,EAAAwC,IAAA,QAAA/D,MAvWD,SAAcg+O,GAMb,IAJA,IAAMjiK,EAAS,GACd0yL,EAAazwB,EAAKjiK,OAClB2yL,EAAY,GAAQ1wB,EAAKgoB,KAAO,GAEvB/nQ,EAAI,EAAGqK,EAAImmQ,EAAWt1Q,OAAQ8E,IAAMqK,IAAMrK,EAEnD89E,EAAO19E,KAAMswQ,GAAoBF,EAAYxwQ,IAAM26I,MAAO81H,IAI3D,IAAMzI,EAAO,IAAI1kQ,KAAMy8O,EAAKtjP,KAAMsjP,EAAKtwK,SAAUqO,EAAQiiK,EAAK8pB,WAG9D,OAFA7B,EAAK7oJ,KAAO4gI,EAAK5gI,KAEV6oJ,CAER,GAAC,CAAAliQ,IAAA,SAAA/D,MAED,SAAeimQ,GAed,IAbA,IAAMlqL,EAAS,GACd6yL,EAAa3I,EAAKlqL,OAEbiiK,EAAO,CAEZ,KAAQioB,EAAKvrQ,KACb,SAAYurQ,EAAKv4L,SACjB,OAAUqO,EACV,KAAQkqL,EAAK7oJ,KACb,UAAa6oJ,EAAK6B,WAIT7pQ,EAAI,EAAGqK,EAAIsmQ,EAAWz1Q,OAAQ8E,IAAMqK,IAAMrK,EAEnD89E,EAAO19E,KAAMgtQ,GAActqG,OAAQ6tG,EAAY3wQ,KAIhD,OAAO+/O,CAER,GAAC,CAAAj6O,IAAA,gCAAA/D,MAED,SAAsCtF,EAAMm0Q,EAAqB7I,EAAK8I,GAKrE,IAHA,IAAMC,EAAkBF,EAAoB11Q,OACtC4iF,EAAS,GAEL99E,EAAI,EAAGA,EAAI8wQ,EAAiB9wQ,IAAO,CAE5C,IAAIonQ,EAAQ,GACR/2P,EAAS,GAEb+2P,EAAMhnQ,MACHJ,EAAI8wQ,EAAkB,GAAMA,EAC9B9wQ,GACEA,EAAI,GAAM8wQ,GAEbzgQ,EAAOjQ,KAAM,EAAG,EAAG,GAEnB,IAAMyQ,EAAQs2P,GAAkBC,GAChCA,EAAQC,GAAaD,EAAO,EAAGv2P,GAC/BR,EAASg3P,GAAah3P,EAAQ,EAAGQ,GAI1BggQ,GAAyB,IAAfzJ,EAAO,KAEvBA,EAAMhnQ,KAAM0wQ,GACZzgQ,EAAOjQ,KAAMiQ,EAAQ,KAItBytE,EAAO19E,KACN,IAAIivQ,GACH,0BAA4BuB,EAAqB5wQ,GAAIvD,KAAO,IAC5D2qQ,EAAO/2P,GACNsqI,MAAO,EAAMotH,GAEjB,CAEA,OAAO,IAAIzkQ,KAAM7G,GAAQ,EAAGqhF,EAE7B,GAAC,CAAAh4E,IAAA,aAAA/D,MAED,SAAmBgvQ,EAAmBt0Q,GAErC,IAAIu0Q,EAAYD,EAEhB,IAAO9wQ,MAAM0E,QAASosQ,GAAsB,CAE3C,IAAMjzP,EAAIizP,EACVC,EAAYlzP,EAAEswJ,UAAYtwJ,EAAEswJ,SAASsL,YAAc57J,EAAE47J,UAEtD,CAEA,IAAM,IAAI15K,EAAI,EAAGA,EAAIgxQ,EAAU91Q,OAAQ8E,IAEtC,GAAKgxQ,EAAWhxQ,GAAIvD,OAASA,EAE5B,OAAOu0Q,EAAWhxQ,GAMpB,OAAO,IAER,GAAC,CAAA8F,IAAA,sCAAA/D,MAED,SAA4CgtL,EAAcg5E,EAAK8I,GAU9D,IARA,IAAMI,EAA0B,CAAC,EAI3BnwL,EAAU,qBAIN9gF,EAAI,EAAGowD,EAAK2+H,EAAa7zL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEzD,IAAM05M,EAAc3qB,EAAc/uL,GAC5B2sG,EAAQ+sG,EAAYj9M,KAAKxB,MAAO6lF,GAEtC,GAAK6rB,GAASA,EAAMzxG,OAAS,EAAI,CAEhC,IAAMuB,EAAOkwG,EAAO,GAEhBukK,EAAwBD,EAAyBx0Q,GAE9Cy0Q,IAEND,EAAyBx0Q,GAASy0Q,EAAwB,IAI3DA,EAAsB9wQ,KAAMs5M,EAE7B,CAED,CAEA,IAAMy3D,EAAQ,GAEd,IAAM,IAAM10Q,KAAQw0Q,EAEnBE,EAAM/wQ,KAAMkD,KAAK8tQ,8BAA+B30Q,EAAMw0Q,EAAyBx0Q,GAAQsrQ,EAAK8I,IAI7F,OAAOM,CAER,GAEA,CAAArrQ,IAAA,iBAAA/D,MACA,SAAuB0uC,EAAWy6K,GAEjC,IAAOz6K,EAGN,OADAp5B,QAAQwN,MAAO,yDACR,KAoCR,IAhCA,IAAMwsP,EAAmB,SAAWvC,EAAWwC,EAAWC,EAAenhP,EAAcohP,GAGtF,GAA8B,IAAzBD,EAAcr2Q,OAAe,CAEjC,IAAMksQ,EAAQ,GACR/2P,EAAS,GAEfm3P,GAAa+J,EAAenK,EAAO/2P,EAAQ+f,GAGrB,IAAjBg3O,EAAMlsQ,QAEVs2Q,EAAWpxQ,KAAM,IAAI0uQ,EAAWwC,EAAWlK,EAAO/2P,GAIpD,CAED,EAEMytE,EAAS,GAET2zL,EAAWhhO,EAAUh0C,MAAQ,UAC7BsrQ,EAAMt3N,EAAUs3N,KAAO,GACvB8B,EAAYp5N,EAAUo5N,UAGxBp6L,EAAWh/B,EAAUv1C,SAAY,EAE/Bw2Q,EAAkBjhO,EAAUkhO,WAAa,GAErC1nQ,EAAI,EAAGA,EAAIynQ,EAAgBx2Q,OAAQ+O,IAAO,CAEnD,IAAMsnQ,EAAgBG,EAAiBznQ,GAAI/E,KAG3C,GAAOqsQ,GAA0C,IAAzBA,EAAcr2Q,OAGtC,GAAKq2Q,EAAe,GAAIxiF,aAAe,CAGtC,IAAM6iF,EAAmB,CAAC,EAEtB1nQ,OAAC,EAEL,IAAMA,EAAI,EAAGA,EAAIqnQ,EAAcr2Q,OAAQgP,IAEtC,GAAKqnQ,EAAernQ,GAAI6kL,aAEvB,IAAM,IAAI3kL,EAAI,EAAGA,EAAImnQ,EAAernQ,GAAI6kL,aAAa7zL,OAAQkP,IAE5DwnQ,EAAkBL,EAAernQ,GAAI6kL,aAAc3kL,KAAU,EAWhE,IAAM,IAAMynQ,KAAmBD,EAAmB,CAKjD,IAHA,IAAMxK,EAAQ,GACR/2P,EAAS,GAELjG,EAAI,EAAGA,IAAMmnQ,EAAernQ,GAAI6kL,aAAa7zL,SAAWkP,EAAI,CAErE,IAAM0nQ,EAAeP,EAAernQ,GAEpCk9P,EAAMhnQ,KAAM0xQ,EAAavmO,MACzBl7B,EAAOjQ,KAAQ0xQ,EAAap4D,cAAgBm4D,EAAoB,EAAI,EAErE,CAEA/zL,EAAO19E,KAAM,IAAIivQ,GAAqB,yBAA2BwC,EAAkB,IAAKzK,EAAO/2P,GAEhG,CAEAo/D,EAAWmiM,EAAiB12Q,OAAS6sQ,CAEtC,KAAO,CAIN,IAAMgK,EAAW,UAAY7mD,EAAOjhN,GAAIxN,KAAO,IAE/C40Q,EACCnB,GAAqB6B,EAAW,YAChCR,EAAe,MAAOzzL,GAEvBuzL,EACCzB,GAAyBmC,EAAW,cACpCR,EAAe,MAAOzzL,GAEvBuzL,EACCnB,GAAqB6B,EAAW,SAChCR,EAAe,MAAOzzL,EAExB,CAED,CAEA,OAAuB,IAAlBA,EAAO5iF,OAEJ,KAIK,IAAIoI,KAAMmuQ,EAAUhiM,EAAUqO,EAAQ+rL,EAIpD,KAACwG,CAAA,CA/SiB,GA0anB,SAASK,GAAoB3wB,GAE5B,QAAmBryO,IAAdqyO,EAAK73O,KAET,MAAM,IAAI9G,MAAO,4DAIlB,IAAM0tQ,EAlDP,SAAuCkD,GAEtC,OAASA,EAAS12Q,eAEjB,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,UAEJ,OAAO+zQ,GAER,IAAK,SACL,IAAK,UACL,IAAK,UACL,IAAK,UAEJ,OAAOa,GAER,IAAK,QAEJ,OAAOhB,GAER,IAAK,aAEJ,OAAOU,GAER,IAAK,OACL,IAAK,UAEJ,OAAOb,GAER,IAAK,SAEJ,OAAOgB,GAIT,MAAM,IAAI3uQ,MAAO,8CAAgD4wQ,EAElE,CAUmBC,CAA8BlyB,EAAK73O,MAErD,QAAoBwF,IAAfqyO,EAAKqnB,MAAsB,CAE/B,IAAMA,EAAQ,GAAI/2P,EAAS,GAE3Bm3P,GAAaznB,EAAK76O,KAAMkiQ,EAAO/2P,EAAQ,SAEvC0vO,EAAKqnB,MAAQA,EACbrnB,EAAK1vO,OAASA,CAEf,CAGA,YAAyB3C,IAApBohQ,EAAU7qK,MAEP6qK,EAAU7qK,MAAO87I,GAKjB,IAAI+uB,EAAW/uB,EAAKtjP,KAAMsjP,EAAKqnB,MAAOrnB,EAAK1vO,OAAQ0vO,EAAKstB,cAIjE,CAEA,IAAM6E,GAAQ,CAEb/9E,SAAS,EAETg+E,MAAO,CAAC,EAERziP,IAAK,SAAW5pB,EAAKmyE,IAEE,IAAjB30E,KAAK6wL,UAIV7wL,KAAK6uQ,MAAOrsQ,GAAQmyE,EAErB,EAEA5kD,IAAK,SAAWvtB,GAEf,IAAsB,IAAjBxC,KAAK6wL,QAIV,OAAO7wL,KAAK6uQ,MAAOrsQ,EAEpB,EAEAo+D,OAAQ,SAAWp+D,UAEXxC,KAAK6uQ,MAAOrsQ,EAEpB,EAEArC,MAAO,WAENH,KAAK6uQ,MAAQ,CAAC,CAEf,GAIKC,GAAcvlQ,GAEnB,SAAAulQ,EAAa90H,EAAQvtE,EAAYr0C,GAAU3tB,EAAA,KAAAqkQ,GAE1C,IAAM9hF,EAAQhtL,KAEV8sE,GAAY,EACZiiM,EAAc,EACdC,EAAa,EACbC,OAAc7kQ,EACZ8kQ,EAAW,GAKjBlvQ,KAAKwtE,aAAUpjE,EACfpK,KAAKg6I,OAASA,EACdh6I,KAAKysE,WAAaA,EAClBzsE,KAAKo4B,QAAUA,EAEfp4B,KAAKmvQ,UAAY,SAAWjnO,GAE3B8mO,KAEmB,IAAdliM,QAEmB1iE,IAAlB4iL,EAAMx/G,SAEVw/G,EAAMx/G,QAAStlC,EAAK6mO,EAAaC,GAMnCliM,GAAY,CAEb,EAEA9sE,KAAKovQ,QAAU,SAAWlnO,GAEzB6mO,SAE0B3kQ,IAArB4iL,EAAMvgH,YAEVugH,EAAMvgH,WAAYvkC,EAAK6mO,EAAaC,GAIhCD,IAAgBC,IAEpBliM,GAAY,OAEU1iE,IAAjB4iL,EAAMhzC,QAEVgzC,EAAMhzC,SAMT,EAEAh6I,KAAKqvQ,UAAY,SAAWnnO,QAEJ99B,IAAlB4iL,EAAM50J,SAEV40J,EAAM50J,QAAS8P,EAIjB,EAEAloC,KAAKsvQ,WAAa,SAAWpnO,GAE5B,OAAK+mO,EAEGA,EAAa/mO,GAIdA,CAER,EAEAloC,KAAKuvQ,eAAiB,SAAWj3I,GAIhC,OAFA22I,EAAc32I,EAEPt4H,IAER,EAEAA,KAAKwvQ,WAAa,SAAW93Q,EAAOqsG,GAInC,OAFAmrK,EAASpyQ,KAAMpF,EAAOqsG,GAEf/jG,IAER,EAEAA,KAAKyvQ,cAAgB,SAAW/3Q,GAE/B,IAAMkX,EAAQsgQ,EAAS1iQ,QAAS9U,GAQhC,OANiB,IAAZkX,GAEJsgQ,EAASrhN,OAAQj/C,EAAO,GAIlB5O,IAER,EAEAA,KAAK0vQ,WAAa,SAAW/6L,GAE5B,IAAM,IAAIj4E,EAAI,EAAGmK,EAAIqoQ,EAASt3Q,OAAQ8E,EAAImK,EAAGnK,GAAK,EAAI,CAErD,IAAMhF,EAAQw3Q,EAAUxyQ,GAClBqnG,EAASmrK,EAAUxyQ,EAAI,GAI7B,GAFKhF,EAAMi5E,SAASj5E,EAAMwlN,UAAY,GAEjCxlN,EAAMQ,KAAMy8E,GAEhB,OAAOovB,CAIT,CAEA,OAAO,IAER,CAED,IAIK4rK,GAAsC,IAAIb,GAE1Cc,GAAM,WAEX,SAAAA,EAAaC,GAAUplQ,EAAA,KAAAmlQ,GAEtB5vQ,KAAK6vQ,aAAwBzlQ,IAAZylQ,EAA0BA,EAAUF,GAErD3vQ,KAAKy3I,YAAc,YACnBz3I,KAAK8vQ,iBAAkB,EACvB9vQ,KAAKk3F,KAAO,GACZl3F,KAAK+vQ,aAAe,GACpB/vQ,KAAKgwQ,cAAgB,CAAC,CAEvB,CAmDC,OAnDAzmQ,EAAAqmQ,EAAA,EAAAptQ,IAAA,OAAA/D,MAED,WAAgD,GAAC,CAAA+D,IAAA,YAAA/D,MAEjD,SAAWypC,EAAKukC,GAEf,IAAMugH,EAAQhtL,KAEd,OAAO,IAAIswC,SAAS,SAAWG,EAAS8tC,GAEvCyuG,EAAMphH,KAAM1jC,EAAKuI,EAASg8B,EAAY8R,EAEvC,GAED,GAAC,CAAA/7E,IAAA,QAAA/D,MAED,WAAqB,GAAC,CAAA+D,IAAA,iBAAA/D,MAEtB,SAAgBg5I,GAGf,OADAz3I,KAAKy3I,YAAcA,EACZz3I,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBA,GAGnB,OADAuB,KAAK8vQ,gBAAkBrxQ,EAChBuB,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASy4F,GAGR,OADAl3F,KAAKk3F,KAAOA,EACLl3F,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBsxQ,GAGhB,OADA/vQ,KAAK+vQ,aAAeA,EACb/vQ,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBuxQ,GAGjB,OADAhwQ,KAAKgwQ,cAAgBA,EACdhwQ,IAER,KAAC4vQ,CAAA,CA/DU,GAmENK,GAAU,CAAC,EAEXi2G,GAAS,SAAAC,GAAAnqW,EAAAkqW,EAAAC,GAAA,IAAA7zG,EAAA33P,EAAAurW,GAEd,SAAAA,EAAaxlU,EAASowN,GAAW,IAAA6D,EAGP,OAHOlqQ,EAAA,KAAAy7W,IAEhCvxG,EAAArC,EAAAz1Q,KAAA,KAAO6jD,IACFowN,SAAWA,EAAS6D,CAE1B,CAAC,OAAAprQ,EAAA28W,EAAA,CAPa,CAObE,EAPsBtoX,QAWlBoyQ,GAAU,SAAAC,GAAAn0P,EAAAk0P,EAAAC,GAAA,IAAAyC,EAAAj4P,EAAAu1P,GAEf,SAAAA,EAAaL,GAAU,OAAAplQ,EAAA,KAAAylQ,GAAA0C,EAAA/1Q,KAAA,KAEfgzQ,EAER,CA6PC,OA7PAtmQ,EAAA2mQ,EAAA,EAAA1tQ,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAAU,IAAAo9O,EAAA,UAE3BprQ,IAAR89B,IAAoBA,EAAM,SAEZ99B,IAAdpK,KAAKk3F,OAAqBhvD,EAAMloC,KAAKk3F,KAAOhvD,GAEjDA,EAAMloC,KAAK6vQ,QAAQP,WAAYpnO,GAE/B,IAAM2uJ,EAAS+3E,GAAM7+O,IAAKmY,GAE1B,QAAgB99B,IAAXysL,EAYJ,OAVA72L,KAAK6vQ,QAAQV,UAAWjnO,GAExBroC,YAAY,WAENm6I,GAASA,EAAQ68C,GAEtB2+E,EAAK3F,QAAQT,QAASlnO,EAEvB,GAAG,GAEI2uJ,EAMR,QAAwBzsL,IAAnB6lQ,GAAS/nO,GAAd,CAeA+nO,GAAS/nO,GAAQ,GAEjB+nO,GAAS/nO,GAAMprC,KAAM,CACpBk9I,OAAQA,EACRvtE,WAAYA,EACZr0C,QAASA,IAIV,IAAMk4O,EAAM,IAAIC,QAASroO,EAAK,CAC7BsoO,QAAS,IAAIC,QAASzwQ,KAAKgwQ,eAC3BU,YAAa1wQ,KAAK8vQ,gBAAkB,UAAY,gBAK3Ca,EAAW3wQ,KAAK2wQ,SAChBC,EAAe5wQ,KAAK4wQ,aAG1BC,MAAOP,GACL5/N,MAAM,SAAAogO,GAEN,GAAyB,MAApBA,EAASnyK,QAAsC,IAApBmyK,EAASnyK,OAAe,CAavD,GARyB,IAApBmyK,EAASnyK,QAEb5qF,QAAQk/C,KAAM,6CAMgB,qBAAnB89M,qBAAoD3mQ,IAAlB0mQ,EAAStgP,WAAkDpmB,IAA5B0mQ,EAAStgP,KAAKwgP,UAE1F,OAAOF,EAIR,IAAMG,EAAYhB,GAAS/nO,GACrBgpO,EAASJ,EAAStgP,KAAKwgP,YACvBG,EAAgBL,EAASN,QAAQzgP,IAAK,kBACtC6gH,EAAQugI,EAAgBhgQ,SAAUggQ,GAAkB,EACpDC,EAA6B,IAAVxgI,EACrBtkE,EAAS,EAGP+kM,EAAS,IAAIN,eAAgB,CAClCjmO,MAAK,SAAEg8L,IAIN,SAASwqC,IAERJ,EAAOK,OAAO7gO,MAAM,SAAArzB,GAAuB,IAAnB4E,EAAI5E,EAAJ4E,KAAMxjB,EAAK4e,EAAL5e,MAE7B,GAAKwjB,EAEJ6kN,EAAWnlK,YAEL,CAEN2K,GAAU7tE,EAAM+yQ,WAGhB,IADA,IAAMjpO,EAAQ,IAAIkpO,cAAe,WAAY,CAAEL,iBAAAA,EAAkB9kM,OAAAA,EAAQskE,MAAAA,IAC/Dl0I,EAAI,EAAGowD,EAAKmkN,EAAUr5Q,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEtD,IAAMy7C,EAAW84N,EAAWv0Q,GACvBy7C,EAASs0B,YAAat0B,EAASs0B,WAAYlkC,EAEjD,CAEAu+L,EAAW4qC,QAASjzQ,GACpB6yQ,GAED,CAED,GAED,CA7BAA,EA+BD,IAID,OAAO,IAAIK,SAAUN,EAEtB,CAEC,MAAM,IAAI60G,GAAU,cAADzkX,OAAgBqvQ,EAAS5oO,IAAG,qBAAAzmC,OAAoBqvQ,EAASnyK,OAAM,MAAAl9F,OAAKqvQ,EAASlyK,YAAckyK,EAIhH,IACCpgO,MAAM,SAAAogO,GAEN,OAASF,GAER,IAAK,cAEJ,OAAOE,EAASc,cAEjB,IAAK,OAEJ,OAAOd,EAASe,OAEjB,IAAK,WAEJ,OAAOf,EAAS99P,OACd09B,MAAM,SAAA19B,GAGN,OADe,IAAI8+P,WACLC,gBAAiB/+P,EAAM29P,EAEtC,IAEF,IAAK,OAEJ,OAAOG,EAASr0B,OAEjB,QAEC,QAAkBryO,IAAbumQ,EAEJ,OAAOG,EAAS99P,OAKhB,IACMgD,EADK,0BACKA,KAAM26P,GAChBv2M,EAAQpkD,GAAQA,EAAM,GAAMA,EAAM,GAAIhe,mBAAgBoS,EACtD4nQ,EAAU,IAAIC,YAAa73M,GACjC,OAAO02M,EAASc,cAAclhO,MAAM,SAAAzf,GAAE,OAAI+gP,EAAQE,OAAQjhP,EAAI,IAMlE,IACCyf,MAAM,SAAAhN,GAINkrO,GAAMxiP,IAAK8b,EAAKxE,GAEhB,IAAMutO,EAAYhB,GAAS/nO,UACpB+nO,GAAS/nO,GAEhB,IAAM,IAAIxrC,EAAI,EAAGowD,EAAKmkN,EAAUr5Q,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEtD,IAAMy7C,EAAW84N,EAAWv0Q,GACvBy7C,EAAS6hG,QAAS7hG,EAAS6hG,OAAQt2G,EAEzC,CAED,IACCiN,OAAO,SAAA93B,GAIP,IAAMo4P,EAAYhB,GAAS/nO,GAE3B,QAAmB99B,IAAd6mQ,EAIJ,MADAuE,EAAK3F,QAAQR,UAAWnnO,GAClBrvB,SAIAo3P,GAAS/nO,GAEhB,IAAM,IAAIxrC,EAAI,EAAGowD,EAAKmkN,EAAUr5Q,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEtD,IAAMy7C,EAAW84N,EAAWv0Q,GACvBy7C,EAAS/f,SAAU+f,EAAS/f,QAASvf,EAE3C,CAEA28P,EAAK3F,QAAQR,UAAWnnO,EAEzB,IACCiqO,SAAS,WAETqD,EAAK3F,QAAQT,QAASlnO,EAEvB,IAEDloC,KAAK6vQ,QAAQV,UAAWjnO,EAnMxB,MAVC+nO,GAAS/nO,GAAMprC,KAAM,CAEpBk9I,OAAQA,EACRvtE,WAAYA,EACZr0C,QAASA,GA2MZ,GAAC,CAAA51B,IAAA,kBAAA/D,MAED,SAAiBA,GAGhB,OADAuB,KAAK4wQ,aAAenyQ,EACbuB,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAaA,GAGZ,OADAuB,KAAK2wQ,SAAWlyQ,EACTuB,IAER,KAACkwQ,CAAA,CAnQc,CAASN,IAkcnBsD,GAAW,SAAAC,GAAAn3P,EAAAk3P,EAAAC,GAAA,IAAAY,EAAAp5P,EAAAu4P,GAEhB,SAAAA,EAAarD,GAAU,OAAAplQ,EAAA,KAAAyoQ,GAAAa,EAAAl3Q,KAAA,KAEfgzQ,EAER,CA2EC,OA3EAtmQ,EAAA2pQ,EAAA,EAAA1wQ,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,QAEXhuB,IAAdpK,KAAKk3F,OAAqBhvD,EAAMloC,KAAKk3F,KAAOhvD,GAEjDA,EAAMloC,KAAK6vQ,QAAQP,WAAYpnO,GAE/B,IAAM8kJ,EAAQhtL,KAER62L,EAAS+3E,GAAM7+O,IAAKmY,GAE1B,QAAgB99B,IAAXysL,EAYJ,OAVA7J,EAAM6iF,QAAQV,UAAWjnO,GAEzBroC,YAAY,WAENm6I,GAASA,EAAQ68C,GAEtB7J,EAAM6iF,QAAQT,QAASlnO,EAExB,GAAG,GAEI2uJ,EAIR,IAAM19C,EAAQ3zF,GAAiB,OAE/B,SAAS6tN,IAERC,IAEA1E,GAAMxiP,IAAK8b,EAAKloC,MAEXg6I,GAASA,EAAQh6I,MAEtBgtL,EAAM6iF,QAAQT,QAASlnO,EAExB,CAEA,SAASqrO,EAAchrO,GAEtB+qO,IAEKl7O,GAAUA,EAASmQ,GAExBykJ,EAAM6iF,QAAQR,UAAWnnO,GACzB8kJ,EAAM6iF,QAAQT,QAASlnO,EAExB,CAEA,SAASorO,IAERn6H,EAAMjhH,oBAAqB,OAAQm7O,GAAa,GAChDl6H,EAAMjhH,oBAAqB,QAASq7O,GAAc,EAEnD,CAeA,OAbAp6H,EAAMv1I,iBAAkB,OAAQyvQ,GAAa,GAC7Cl6H,EAAMv1I,iBAAkB,QAAS2vQ,GAAc,GAEpB,UAAtBrrO,EAAIt3B,MAAO,EAAG,SAEQxG,IAArBpK,KAAKy3I,cAA4B0B,EAAM1B,YAAcz3I,KAAKy3I,aAIhEu1C,EAAM6iF,QAAQV,UAAWjnO,GAEzBixG,EAAMhnI,IAAM+1B,EAELixG,CAER,KAAC+5H,CAAA,CAjFe,CAAStD,IA6IpBiE,GAAiB,SAAAC,GAAA93P,EAAA63P,EAAAC,GAAA,IAAAQ,EAAA35P,EAAAk5P,GAEtB,SAAAA,EAAahE,GAAU,OAAAplQ,EAAA,KAAAopQ,GAAAS,EAAAz3Q,KAAA,KAEfgzQ,EAER,CA2FC,OA3FAtmQ,EAAAsqQ,EAAA,EAAArxQ,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAE9B,IAAM40J,EAAQhtL,KAERqhK,EAAU,IAAI06E,GAEdh4I,EAAS,IAAImsK,GAAYlwQ,KAAK6vQ,SAiFpC,OAhFA9rK,EAAO8uK,gBAAiB,eACxB9uK,EAAOyuK,iBAAkBxyQ,KAAKgwQ,eAC9BjsK,EAAOwuK,QAASvyQ,KAAKk3F,MACrB6M,EAAO0uK,mBAAoBzlF,EAAM8iF,iBACjC/rK,EAAOn4B,KAAM1jC,GAAK,SAAWiyH,GAE5B,IAAM65G,EAAUhnF,EAAMrsF,MAAOw5D,GAEtB65G,SAEgB5pQ,IAAlB4pQ,EAAQ76H,MAEZkoB,EAAQloB,MAAQ66H,EAAQ76H,WAEI/uI,IAAjB4pQ,EAAQtwO,OAEnB29H,EAAQloB,MAAMhrI,MAAQ6lQ,EAAQ7lQ,MAC9BkzJ,EAAQloB,MAAM/qI,OAAS4lQ,EAAQ5lQ,OAC/BizJ,EAAQloB,MAAMz1G,KAAOswO,EAAQtwO,MAI9B29H,EAAQlD,WAA0B/zJ,IAAlB4pQ,EAAQ71G,MAAsB61G,EAAQ71G,MAAQ7T,GAC9D+W,EAAQjD,WAA0Bh0J,IAAlB4pQ,EAAQ51G,MAAsB41G,EAAQ51G,MAAQ9T,GAE9D+W,EAAQhD,eAAkCj0J,IAAtB4pQ,EAAQ31G,UAA0B21G,EAAQ31G,UAAYxT,GAC1EwW,EAAQ/C,eAAkCl0J,IAAtB4pQ,EAAQ11G,UAA0B01G,EAAQ11G,UAAYzT,GAE1EwW,EAAQ7C,gBAAoCp0J,IAAvB4pQ,EAAQx1G,WAA2Bw1G,EAAQx1G,WAAa,OAEnDp0J,IAArB4pQ,EAAQv1G,WAEZ4C,EAAQ5C,SAAWu1G,EAAQv1G,eAILr0J,IAAlB4pQ,EAAQj1G,QAEZsC,EAAQtC,MAAQi1G,EAAQj1G,YAID30J,IAAnB4pQ,EAAQz1G,SAEZ8C,EAAQ9C,OAASy1G,EAAQz1G,aAIJn0J,IAAjB4pQ,EAAQpvQ,OAEZy8J,EAAQz8J,KAAOovQ,EAAQpvQ,WAICwF,IAApB4pQ,EAAQt1G,UAEZ2C,EAAQ3C,QAAUs1G,EAAQt1G,QAC1B2C,EAAQ/C,UAAYtT,IAIQ,IAAxBgpH,EAAQhB,cAEZ3xG,EAAQ/C,UAAYzT,SAIYzgJ,IAA5B4pQ,EAAQn1G,kBAEZwC,EAAQxC,gBAAkBm1G,EAAQn1G,iBAInCwC,EAAQ/B,aAAc,EAEjBtlB,GAASA,EAAQqnB,EAAS2yG,GAEhC,GAAGvnM,EAAYr0C,GAGRipI,CAER,KAACwyG,CAAA,CAjGqB,CAASjE,IAqG1BqE,GAAa,SAAAC,GAAAl4P,EAAAi4P,EAAAC,GAAA,IAAAQ,EAAA/5P,EAAAs5P,GAElB,SAAAA,EAAapE,GAAU,OAAAplQ,EAAA,KAAAwpQ,GAAAS,EAAA73Q,KAAA,KAEfgzQ,EAER,CAyBC,OAzBAtmQ,EAAA0qQ,EAAA,EAAAzxQ,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAE9B,IAAMipI,EAAU,IAAItD,GAEdh6D,EAAS,IAAImvK,GAAalzQ,KAAK6vQ,SAiBrC,OAhBA9rK,EAAO6vK,eAAgB5zQ,KAAKy3I,aAC5B1zC,EAAOwuK,QAASvyQ,KAAKk3F,MAErB6M,EAAOn4B,KAAM1jC,GAAK,SAAWixG,GAE5BkoB,EAAQloB,MAAQA,EAChBkoB,EAAQ/B,aAAc,OAENl1J,IAAX4vI,GAEJA,EAAQqnB,EAIV,GAAG50F,EAAYr0C,GAERipI,CAER,KAAC4yG,CAAA,CA/BiB,CAASrE,IAmCtBwE,GAAK,SAAAC,GAAAr4P,EAAAo4P,EAAAC,GAAA,IAAAkB,EAAA56P,EAAAy5P,GAEV,SAAAA,EAAa5sO,GAAuB,IAAAquO,EAAhB1pD,EAASlsN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EASJ,OATKwK,EAAA,KAAA2pQ,IAEhCyB,EAAAN,EAAA14Q,KAAA,OAEKi6K,SAAU,EAEf++F,EAAKjxQ,KAAO,QAEZixQ,EAAKruO,MAAQ,IAAI+zH,GAAO/zH,GACxBquO,EAAK1pD,UAAYA,EAAU0pD,CAE5B,CAqCC,OArCAtsQ,EAAA6qQ,EAAA,EAAA5xQ,IAAA,UAAA/D,MAED,WAEC,GAEA,CAAA+D,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAOb,OALA9xC,GAAA5rH,EAAA84P,EAAAx3Q,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OACxBxnC,KAAKmsN,UAAY3qN,EAAO2qN,UAEjBnsN,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAA84P,EAAAx3Q,WAAA,eAAAC,KAAA,KAAiBy5B,GAc3B,OAZAoN,EAAKvhC,OAAOqlC,MAAQxnC,KAAKwnC,MAAM40H,SAC/B14H,EAAKvhC,OAAOgqN,UAAYnsN,KAAKmsN,eAEH/hN,IAArBpK,KAAKqjM,cAA4B3/J,EAAKvhC,OAAOkhM,YAAcrjM,KAAKqjM,YAAYjnC,eAE1DhyJ,IAAlBpK,KAAK02K,WAAyBhzI,EAAKvhC,OAAOu0K,SAAW12K,KAAK02K,eAC3CtsK,IAAfpK,KAAK41J,QAAsBlyH,EAAKvhC,OAAOyzJ,MAAQ51J,KAAK41J,YACrCxrJ,IAAfpK,KAAKyiM,QAAsB/+J,EAAKvhC,OAAOsgM,MAAQziM,KAAKyiM,YAClCr4L,IAAlBpK,KAAK6sN,WAAyBnpL,EAAKvhC,OAAO0qN,SAAW7sN,KAAK6sN,eAE1CziN,IAAhBpK,KAAKyjJ,SAAuB//G,EAAKvhC,OAAOshJ,OAASzjJ,KAAKyjJ,OAAO+b,UAE3D97H,CAER,KAAC0wO,CAAA,CAlDS,CAAS5+F,IAmFdo/F,GAAoC,IAAIjkG,GACxCkkG,GAAsC,IAAI/tG,GAC1CguG,GAA8B,IAAIhuG,GAElCiuG,GAAW,WAEhB,SAAAA,EAAantG,GAASn9J,EAAA,KAAAsqQ,GAErB/0Q,KAAK4nK,OAASA,EAEd5nK,KAAKysN,KAAO,EACZzsN,KAAK0sN,WAAa,EAClB1sN,KAAKkpK,OAAS,EACdlpK,KAAKgwN,YAAc,EAEnBhwN,KAAK2sN,QAAU,IAAIx3D,GAAS,IAAK,KAEjCn1J,KAAKzD,IAAM,KACXyD,KAAKiwN,QAAU,KACfjwN,KAAK05J,OAAS,IAAIiX,GAElB3wK,KAAK+wN,YAAa,EAClB/wN,KAAKs/J,aAAc,EAEnBt/J,KAAK+uN,SAAW,IAAIx6B,GACpBv0L,KAAKg1Q,cAAgB,IAAI7/G,GAAS,EAAG,GAErCn1J,KAAKi1Q,eAAiB,EAEtBj1Q,KAAKk1Q,WAAa,CAEjB,IAAIt1G,GAAS,EAAG,EAAG,EAAG,GAIxB,CAqGC,OArGAr2J,EAAAwrQ,EAAA,EAAAvyQ,IAAA,mBAAA/D,MAED,WAEC,OAAOuB,KAAKi1Q,cAEb,GAAC,CAAAzyQ,IAAA,aAAA/D,MAED,WAEC,OAAOuB,KAAK+uN,QAEb,GAAC,CAAAvsN,IAAA,iBAAA/D,MAED,SAAgByyE,GAEf,IAAM0/I,EAAe5wN,KAAK4nK,OACpButG,EAAen1Q,KAAK05J,OAE1Bm7G,GAAsBj+F,sBAAuB1lG,EAAM+2F,aACnD2oD,EAAarxJ,SAASm8F,KAAMm5G,IAE5BC,GAAcl+F,sBAAuB1lG,EAAM3vE,OAAO0mK,aAClD2oD,EAAa75C,OAAQ+9F,IACrBlkD,EAAar5C,oBAEbq9F,GAAoBt9G,iBAAkBs5D,EAAa7oD,iBAAkB6oD,EAAa9oD,oBAClF9nK,KAAK+uN,SAASqmB,wBAAyBw/B,IAEvCO,EAAalmP,IACZ,GAAK,EAAK,EAAK,GACf,EAAK,GAAK,EAAK,GACf,EAAK,EAAK,GAAK,GACf,EAAK,EAAK,EAAK,GAGhBkmP,EAAa3+F,SAAUo+F,GAExB,GAAC,CAAApyQ,IAAA,cAAA/D,MAED,SAAa22Q,GAEZ,OAAOp1Q,KAAKk1Q,WAAYE,EAEzB,GAAC,CAAA5yQ,IAAA,kBAAA/D,MAED,WAEC,OAAOuB,KAAKg1Q,aAEb,GAAC,CAAAxyQ,IAAA,UAAA/D,MAED,WAEMuB,KAAKzD,KAETyD,KAAKzD,IAAImlK,UAIL1hK,KAAKiwN,SAETjwN,KAAKiwN,QAAQvuD,SAIf,GAAC,CAAAl/J,IAAA,OAAA/D,MAED,SAAM+C,GASL,OAPAxB,KAAK4nK,OAASpmK,EAAOomK,OAAO1mK,QAE5BlB,KAAKysN,KAAOjrN,EAAOirN,KACnBzsN,KAAKkpK,OAAS1nK,EAAO0nK,OAErBlpK,KAAK2sN,QAAQjxD,KAAMl6J,EAAOmrN,SAEnB3sN,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAM0D,EAAS,CAAC,EAUhB,OARmB,IAAdnC,KAAKysN,OAAatqN,EAAOsqN,KAAOzsN,KAAKysN,MACjB,IAApBzsN,KAAK0sN,aAAmBvqN,EAAOuqN,WAAa1sN,KAAK0sN,YACjC,IAAhB1sN,KAAKkpK,SAAe/mK,EAAO+mK,OAASlpK,KAAKkpK,QACtB,MAAnBlpK,KAAK2sN,QAAQzwN,GAAgC,MAAnB8D,KAAK2sN,QAAQtlN,IAAYlF,EAAOwqN,QAAU3sN,KAAK2sN,QAAQplI,WAEtFplF,EAAOylK,OAAS5nK,KAAK4nK,OAAOpI,QAAQ,GAAQr9J,cACrCA,EAAOylK,OAAOlO,OAEdv3J,CAER,KAAC4yQ,CAAA,CApIe,GAwIXM,GAAe,SAAAC,GAAAt5P,EAAAq5P,EAAAC,GAAA,IAAAa,EAAAx7P,EAAA06P,GAEpB,SAAAA,IAAc,IAAAqB,EAME,OANFjsQ,EAAA,KAAA4qQ,IAEbqB,EAAAP,EAAAt5Q,KAAA,KAAO,IAAIgzL,GAAmB,GAAI,EAAG,GAAK,OAErC4lF,mBAAoB,EAEzBiB,EAAKh9Q,MAAQ,EAAEg9Q,CAEhB,CA+BC,OA/BAntQ,EAAA8rQ,EAAA,EAAA7yQ,IAAA,iBAAA/D,MAED,SAAgByyE,GAEf,IAAM02F,EAAS5nK,KAAK4nK,OAEdqoB,EAAgB,EAAVr+B,GAAc1gF,EAAM0kF,MAAQ51J,KAAKtG,MACvCw2L,EAASlwL,KAAK2sN,QAAQx+M,MAAQnO,KAAK2sN,QAAQv+M,OAC3C0lK,EAAM5iG,EAAMwlG,UAAY9O,EAAOkM,IAEhCmc,IAAQroB,EAAOqoB,KAAOC,IAAWtoB,EAAOsoB,QAAUpc,IAAQlM,EAAOkM,MAErElM,EAAOqoB,IAAMA,EACbroB,EAAOsoB,OAASA,EAChBtoB,EAAOkM,IAAMA,EACblM,EAAOyoB,0BAIRnpD,GAAA5rH,EAAA+5P,EAAAz4Q,WAAA,uBAAAC,KAAA,KAAsBq0E,EAEvB,GAAC,CAAA1uE,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAA+5P,EAAAz4Q,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKtG,MAAQ8H,EAAO9H,MAEbsG,IAER,KAACq1Q,CAAA,CAzCmB,CAASN,IA6CxBW,GAAS,SAAAC,GAAA35P,EAAA05P,EAAAC,GAAA,IAAAc,EAAA97P,EAAA+6P,GAEd,SAAAA,EAAaluO,EAAO2kL,GAAwE,IAAA+qD,EAA7DxgG,EAAQz2K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG21J,EAAK31J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGhD,KAAK00J,GAAK,EAAGk7D,EAAQ5sN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGwiM,EAAKxiM,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAoBnD,OApBoDwK,EAAA,KAAAirQ,IAExFwB,EAAAT,EAAA55Q,KAAA,KAAO2qC,EAAO2kL,IAETS,aAAc,EAEnBsqD,EAAKtyQ,KAAO,YAEZsyQ,EAAK33M,SAASm8F,KAAM8Z,GAASG,WAC7BuhG,EAAK7gG,eAEL6gG,EAAK31Q,OAAS,IAAIi0K,GAElB0hG,EAAKxgG,SAAWA,EAChBwgG,EAAKthH,MAAQA,EACbshH,EAAKrqD,SAAWA,EAChBqqD,EAAKz0E,MAAQA,EAEby0E,EAAK36Q,IAAM,KAEX26Q,EAAKzzH,OAAS,IAAI4xH,GAAkB6B,CAErC,CAsCC,OAtCA3tQ,EAAAmsQ,EAAA,EAAAlzQ,IAAA,QAAAutB,IAED,WAIC,OAAO/vB,KAAKmsN,UAAYlvN,KAAK00J,EAE9B,EAAC1iI,IAED,SAAW6mP,GAGV91Q,KAAKmsN,UAAY2pD,EAAQ74Q,KAAK00J,EAE/B,GAAC,CAAAnvJ,IAAA,UAAA/D,MAED,WAECuB,KAAKyjJ,OAAOie,SAEb,GAAC,CAAAl/J,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAab,OAXA9xC,GAAA5rH,EAAAo6P,EAAA94Q,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAK02K,SAAWl1K,EAAOk1K,SACvB12K,KAAK41J,MAAQp0J,EAAOo0J,MACpB51J,KAAK6sN,SAAWrrN,EAAOqrN,SACvB7sN,KAAKyiM,MAAQjhM,EAAOihM,MAEpBziM,KAAKuB,OAASC,EAAOD,OAAOL,QAE5BlB,KAAKyjJ,OAASjiJ,EAAOiiJ,OAAOviJ,QAErBlB,IAER,KAAC01Q,CAAA,CA9Da,CAAStB,IAkElBnkC,GAAkC,IAAIt/D,GACtColG,GAAoC,IAAIjvG,GACxCkvG,GAA4B,IAAIlvG,GAEhCmvG,GAAgB,SAAAC,GAAAl6P,EAAAi6P,EAAAC,GAAA,IAAAW,EAAAl8P,EAAAs7P,GAErB,SAAAA,IAAc,IAAAqB,EA8CX,OA9CW7sQ,EAAA,KAAAwrQ,IAEbqB,EAAAT,EAAAh6Q,KAAA,KAAO,IAAIgzL,GAAmB,GAAI,EAAG,GAAK,OAErC6hC,oBAAqB,EAE1B4lD,EAAKtC,cAAgB,IAAI7/G,GAAS,EAAG,GAErCmiH,EAAKrC,eAAiB,EAEtBqC,EAAKpC,WAAa,CAejB,IAAIt1G,GAAS,EAAG,EAAG,EAAG,GAEtB,IAAIA,GAAS,EAAG,EAAG,EAAG,GAEtB,IAAIA,GAAS,EAAG,EAAG,EAAG,GAEtB,IAAIA,GAAS,EAAG,EAAG,EAAG,GAEtB,IAAIA,GAAS,EAAG,EAAG,EAAG,GAEtB,IAAIA,GAAS,EAAG,EAAG,EAAG,IAGvB03G,EAAKjB,gBAAkB,CACtB,IAAIvvG,GAAS,EAAG,EAAG,GAAK,IAAIA,IAAW,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,EAAG,GACrE,IAAIA,GAAS,EAAG,GAAK,GAAK,IAAIA,GAAS,EAAG,EAAG,GAAK,IAAIA,GAAS,GAAK,EAAG,IAGxEwwG,EAAKhB,SAAW,CACf,IAAIxvG,GAAS,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,EAAG,GACnE,IAAIA,GAAS,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,EAAG,GAAK,IAAIA,GAAS,EAAG,GAAK,IACpEwwG,CAEH,CA8BC,OA9BA/tQ,EAAA0sQ,EAAA,EAAAzzQ,IAAA,iBAAA/D,MAED,SAAgByyE,GAA2B,IAApBkkM,EAAan1Q,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEhC2nK,EAAS5nK,KAAK4nK,OACdutG,EAAen1Q,KAAK05J,OAEpBoa,EAAM5iG,EAAMwlG,UAAY9O,EAAOkM,IAEhCA,IAAQlM,EAAOkM,MAEnBlM,EAAOkM,IAAMA,EACblM,EAAOyoB,0BAIR0lF,GAAoBn/F,sBAAuB1lG,EAAM+2F,aACjDL,EAAOroG,SAASm8F,KAAMq6G,IAEtBC,GAAYt6G,KAAMkM,EAAOroG,UACzBy2M,GAAY5pP,IAAKpsB,KAAKq2Q,gBAAiBjB,IACvCxtG,EAAO+J,GAAGjW,KAAM17J,KAAKs2Q,SAAUlB,IAC/BxtG,EAAOmP,OAAQi/F,IACfpuG,EAAO2P,oBAEP49F,EAAazuF,iBAAmBqvF,GAAoB75Q,GAAK65Q,GAAoB1uQ,GAAK0uQ,GAAoBzuQ,GAEtG2oO,GAAkB34E,iBAAkBsQ,EAAOG,iBAAkBH,EAAOE,oBACpE9nK,KAAK+uN,SAASqmB,wBAAyBnF,GAExC,KAACgmC,CAAA,CAhFoB,CAASlB,IAoFzBwB,GAAU,SAAAC,GAAAx6P,EAAAu6P,EAAAC,GAAA,IAAAS,EAAAt8P,EAAA47P,GAEf,SAAAA,EAAa/uO,EAAO2kL,GAAqC,IAAAurD,EAA1BhhG,EAAQz2K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGwiM,EAAKxiM,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAWf,OAXgBwK,EAAA,KAAA8rQ,IAErDmB,EAAAT,EAAAp6Q,KAAA,KAAO2qC,EAAO2kL,IAETY,cAAe,EAEpB2qD,EAAK9yQ,KAAO,aAEZ8yQ,EAAKhhG,SAAWA,EAChBghG,EAAKj1E,MAAQA,EAEbi1E,EAAKj0H,OAAS,IAAIwyH,GAAmByB,CAEtC,CAkCC,OAlCAnuQ,EAAAgtQ,EAAA,EAAA/zQ,IAAA,QAAAutB,IAED,WAIC,OAAwB,EAAjB/vB,KAAKmsN,UAAgBlvN,KAAK00J,EAElC,EAAC1iI,IAED,SAAW6mP,GAGV91Q,KAAKmsN,UAAY2pD,GAAU,EAAI74Q,KAAK00J,GAErC,GAAC,CAAAnvJ,IAAA,UAAA/D,MAED,WAECuB,KAAKyjJ,OAAOie,SAEb,GAAC,CAAAl/J,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GASb,OAPA9xC,GAAA5rH,EAAAi7P,EAAA35Q,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAK02K,SAAWl1K,EAAOk1K,SACvB12K,KAAKyiM,MAAQjhM,EAAOihM,MAEpBziM,KAAKyjJ,OAASjiJ,EAAOiiJ,OAAOviJ,QAErBlB,IAER,KAACu2Q,CAAA,CAjDc,CAASnC,IAqDnBuC,GAAsB,SAAAC,GAAA56P,EAAA26P,EAAAC,GAAA,IAAAS,EAAA18P,EAAAg8P,GAE3B,SAAAA,IAAc,IAAAuB,EAIwB,OAJxBztQ,EAAA,KAAAksQ,IAEbuB,EAAAb,EAAAx6Q,KAAA,KAAO,IAAI+wM,IAAsB,EAAG,EAAG,GAAK,EAAG,GAAK,OAE/CkpE,0BAA2B,EAAKoB,CAEtC,CAAC,OAAA3uQ,EAAAotQ,EAAA,CAR0B,CAAS5B,IAY/BgC,GAAgB,SAAAC,GAAAh7P,EAAA+6P,EAAAC,GAAA,IAAAS,EAAA98P,EAAAo8P,GAErB,SAAAA,EAAavvO,EAAO2kL,GAAY,IAAAmsD,EAaY,OAbZ7tQ,EAAA,KAAAssQ,IAE/BuB,EAAAb,EAAA56Q,KAAA,KAAO2qC,EAAO2kL,IAETI,oBAAqB,EAE1B+rD,EAAK1zQ,KAAO,mBAEZ0zQ,EAAK/4M,SAASm8F,KAAM8Z,GAASG,WAC7B2iG,EAAKjiG,eAELiiG,EAAK/2Q,OAAS,IAAIi0K,GAElB8iG,EAAK70H,OAAS,IAAIkzH,GAAyB2B,CAE5C,CAiBC,OAjBA/uQ,EAAAwtQ,EAAA,EAAAv0Q,IAAA,UAAA/D,MAED,WAECuB,KAAKyjJ,OAAOie,SAEb,GAAC,CAAAl/J,IAAA,OAAA/D,MAED,SAAM+C,GAOL,OALA0lI,GAAA5rH,EAAAy7P,EAAAn6Q,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKuB,OAASC,EAAOD,OAAOL,QAC5BlB,KAAKyjJ,OAASjiJ,EAAOiiJ,OAAOviJ,QAErBlB,IAER,KAAC+2Q,CAAA,CAlCoB,CAAS3C,IAmHzBuD,GAAmB,WAExB,SAAAA,IAAcltQ,EAAA,KAAAktQ,GAEb33Q,KAAK83Q,uBAAwB,EAE7B93Q,KAAKssN,aAAe,GAEpB,IAAM,IAAI5vN,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKssN,aAAaxvN,KAAM,IAAIgqK,GAI9B,CAoNC,OApNAv9J,EAAAouQ,EAAA,EAAAn1Q,IAAA,MAAA/D,MAED,SAAK6tN,GAEJ,IAAM,IAAI5vN,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKssN,aAAc5vN,GAAIg/J,KAAM4wD,EAAc5vN,IAI5C,OAAOsD,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAEC,IAAM,IAAI/B,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKssN,aAAc5vN,GAAIuyB,IAAK,EAAG,EAAG,GAInC,OAAOjvB,IAER,GAGA,CAAAwC,IAAA,QAAA/D,MACA,SAAOsqK,EAAQxnK,GAId,IAAMrF,EAAI6sK,EAAO7sK,EAAGmL,EAAI0hK,EAAO1hK,EAAGC,EAAIyhK,EAAOzhK,EAEvCswQ,EAAQ53Q,KAAKssN,aAiBnB,OAdA/qN,EAAOm6J,KAAMk8G,EAAO,IAAMriH,eAAgB,SAG1Ch0J,EAAOm5K,gBAAiBk9F,EAAO,GAAK,QAAWvwQ,GAC/C9F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,QAAWtwQ,GAC/C/F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,QAAW17Q,GAG/CqF,EAAOm5K,gBAAiBk9F,EAAO,GAAkB17Q,EAAImL,EAAjB,UACpC9F,EAAOm5K,gBAAiBk9F,EAAO,GAAkBvwQ,EAAIC,EAAjB,UACpC/F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,SAAa,EAAMtwQ,EAAIA,EAAI,IAC/D/F,EAAOm5K,gBAAiBk9F,EAAO,GAAkB17Q,EAAIoL,EAAjB,UACpC/F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,SAAa17Q,EAAIA,EAAImL,EAAIA,IAEtD9F,CAER,GAIA,CAAAiB,IAAA,kBAAA/D,MACA,SAAiBsqK,EAAQxnK,GAIxB,IAAMrF,EAAI6sK,EAAO7sK,EAAGmL,EAAI0hK,EAAO1hK,EAAGC,EAAIyhK,EAAOzhK,EAEvCswQ,EAAQ53Q,KAAKssN,aAiBnB,OAdA/qN,EAAOm6J,KAAMk8G,EAAO,IAAMriH,eAAgB,SAG1Ch0J,EAAOm5K,gBAAiBk9F,EAAO,GAAK,SAAiBvwQ,GACrD9F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,SAAiBtwQ,GACrD/F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,SAAiB17Q,GAGrDqF,EAAOm5K,gBAAiBk9F,EAAO,GAAK,QAAiB17Q,EAAImL,GACzD9F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,QAAiBvwQ,EAAIC,GACzD/F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,QAAWtwQ,EAAIA,EAAI,SACvD/F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,QAAiB17Q,EAAIoL,GACzD/F,EAAOm5K,gBAAiBk9F,EAAO,GAAK,SAAa17Q,EAAIA,EAAImL,EAAIA,IAEtD9F,CAER,GAAC,CAAAiB,IAAA,MAAA/D,MAED,SAAKi6C,GAEJ,IAAM,IAAIh8C,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKssN,aAAc5vN,GAAI0vB,IAAKssB,EAAG4zK,aAAc5vN,IAI9C,OAAOsD,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAai6C,EAAIj9C,GAEhB,IAAM,IAAIiB,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKssN,aAAc5vN,GAAIg+K,gBAAiBhiI,EAAG4zK,aAAc5vN,GAAKjB,GAI/D,OAAOuE,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOhD,GAEN,IAAM,IAAIiB,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKssN,aAAc5vN,GAAI64J,eAAgB95J,GAIxC,OAAOuE,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMi6C,EAAIq9G,GAET,IAAM,IAAIr5J,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKssN,aAAc5vN,GAAI01J,KAAM15G,EAAG4zK,aAAc5vN,GAAKq5J,GAIpD,OAAO/1J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQi6C,GAEP,IAAM,IAAIh8C,EAAI,EAAGA,EAAI,EAAGA,IAEvB,IAAOsD,KAAKssN,aAAc5vN,GAAI8vK,OAAQ9zH,EAAG4zK,aAAc5vN,IAEtD,OAAO,EAMT,OAAO,CAER,GAAC,CAAA8F,IAAA,OAAA/D,MAED,SAAMi6C,GAEL,OAAO14C,KAAKivB,IAAKypB,EAAG4zK,aAErB,GAAC,CAAA9pN,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsE,GAIV,IAJ8B,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEpBqsN,EAAetsN,KAAKssN,aAEhB5vN,EAAI,EAAGA,EAAI,EAAGA,IAEvB4vN,EAAc5vN,GAAIi9J,UAAW52J,EAAOgnC,EAAe,EAAJrtC,GAIhD,OAAOsD,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAIC,IAJiC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEvBqsN,EAAetsN,KAAKssN,aAEhB5vN,EAAI,EAAGA,EAAI,EAAGA,IAEvB4vN,EAAc5vN,GAAI6qF,QAASxkF,EAAOgnC,EAAe,EAAJrtC,GAI9C,OAAOqG,CAER,IAGA,EAAAP,IAAA,aAAA/D,MACA,SAAmBsqK,EAAQ8uG,GAI1B,IAAM37Q,EAAI6sK,EAAO7sK,EAAGmL,EAAI0hK,EAAO1hK,EAAGC,EAAIyhK,EAAOzhK,EAG7CuwQ,EAAS,GAAM,QAGfA,EAAS,GAAM,QAAWxwQ,EAC1BwwQ,EAAS,GAAM,QAAWvwQ,EAC1BuwQ,EAAS,GAAM,QAAW37Q,EAG1B27Q,EAAS,GAAM,SAAW37Q,EAAImL,EAC9BwwQ,EAAS,GAAM,SAAWxwQ,EAAIC,EAC9BuwQ,EAAS,GAAM,SAAa,EAAIvwQ,EAAIA,EAAI,GACxCuwQ,EAAS,GAAM,SAAW37Q,EAAIoL,EAC9BuwQ,EAAS,GAAM,SAAa37Q,EAAIA,EAAImL,EAAIA,EAEzC,KAACswQ,CAAA,CAlOuB,GAsOnBI,GAAU,SAAAC,GAAAh8P,EAAA+7P,EAAAC,GAAA,IAAAY,EAAAj+P,EAAAo9P,GAEf,SAAAA,IAA6D,IAAAkG,EAAhDvlO,EAAEz4C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI03Q,GAAuBxrD,EAASlsN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAM3C,OAN4CwK,EAAA,KAAAstQ,IAEzDkG,EAAArF,EAAA/7Q,KAAA,UAAOuN,EAAW+hN,IAEbE,cAAe,EAEpB4xD,EAAKvlO,GAAKA,EAAGulO,CAEd,CA6BC,OA7BA10Q,EAAAwuQ,EAAA,EAAAv1Q,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAAy8P,EAAAn7Q,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK04C,GAAGgjH,KAAMl6J,EAAOk3C,IAEd14C,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAUg+O,GAKT,OAHAz8O,KAAKmsN,UAAYswB,EAAKtwB,UACtBnsN,KAAK04C,GAAGihH,UAAW8iF,EAAK/jM,IAEjB14C,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAAy8P,EAAAn7Q,WAAA,eAAAC,KAAA,KAAiBy5B,GAI3B,OAFAoN,EAAKvhC,OAAOu2C,GAAK14C,KAAK04C,GAAG6uC,UAElB7jD,CAER,KAACq0O,CAAA,CAvCc,CAAS3D,IAgXnBqE,GAAW,oBAAAA,IAAAhuQ,EAAA,KAAAguQ,EAAA,CAsEf,OAtEelvQ,EAAAkvQ,EAAA,OAAAj2Q,IAAA,aAAA/D,MAEhB,SAAmBsE,GAElB,GAA4B,qBAAhBkvQ,YAEX,OAAO,IAAIA,aAAcC,OAAQnvQ,GASlC,IAFA,IAAItH,EAAI,GAEEiB,EAAI,EAAGowD,EAAK/pD,EAAMnL,OAAQ8E,EAAIowD,EAAIpwD,IAG3CjB,GAAKsC,OAAOinC,aAAcjiC,EAAOrG,IAIlC,IAIC,OAAOkgG,mBAAoBzV,OAAQ1rF,GAEpC,CAAE,MAAQ6K,KAET,OAAO7K,CAER,CAED,GAAC,CAAA+G,IAAA,iBAAA/D,MAED,SAAuBypC,GAEtB,IAAMt5B,EAAQs5B,EAAI2mE,YAAa,KAE/B,OAAiB,IAAZjgG,EAAuB,KAErBs5B,EAAIt3B,MAAO,EAAGhC,EAAQ,EAE9B,GAAC,CAAApM,IAAA,aAAA/D,MAED,SAAmBypC,EAAKgvD,GAGvB,MAAoB,kBAARhvD,GAA4B,KAARA,EAAoB,IAG/C,gBAAgBhwC,KAAMg/F,IAAU,MAAMh/F,KAAMgwC,KAEhDgvD,EAAOA,EAAKv7F,QAAS,0BAA2B,OAK5C,mBAAmBzD,KAAMgwC,IAGzB,gBAAgBhwC,KAAMgwC,IAGtB,aAAahwC,KAAMgwC,GANqBA,EAStCgvD,EAAOhvD,EAEf,KAACuwO,CAAA,CAtEe,GAo0CXoE,GAAiB,SAAAC,GAAA9gQ,EAAA6gQ,EAAAC,GAAA,IAAAkB,EAAArjQ,EAAAkiQ,GAEtB,SAAAA,EAAahN,GAAU,IAAA2R,EAkBsB,OAlBtB/2Q,EAAA,KAAAoyQ,IAEtB2E,EAAAxD,EAAAnhR,KAAA,KAAOgzQ,IAEFwN,qBAAsB,EAEO,qBAAtBJ,mBAEXlpQ,QAAQk/C,KAAM,+DAIO,qBAAV49M,OAEX98P,QAAQk/C,KAAM,mDAIfuuN,EAAKvgR,QAAU,CAAE69J,iBAAkB,QAAS0iH,CAE7C,CAqEC,OArEAj4Q,EAAAszQ,EAAA,EAAAr6Q,IAAA,aAAA/D,MAED,SAAYwC,GAIX,OAFAjB,KAAKiB,QAAUA,EAERjB,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,QAEjBhuB,IAAR89B,IAAoBA,EAAM,SAEZ99B,IAAdpK,KAAKk3F,OAAqBhvD,EAAMloC,KAAKk3F,KAAOhvD,GAEjDA,EAAMloC,KAAK6vQ,QAAQP,WAAYpnO,GAE/B,IAAM8kJ,EAAQhtL,KAER62L,EAAS+3E,GAAM7+O,IAAKmY,GAE1B,QAAgB99B,IAAXysL,EAYJ,OAVA7J,EAAM6iF,QAAQV,UAAWjnO,GAEzBroC,YAAY,WAENm6I,GAASA,EAAQ68C,GAEtB7J,EAAM6iF,QAAQT,QAASlnO,EAExB,GAAG,GAEI2uJ,EAIR,IAAMqmF,EAAe,CAAC,EACtBA,EAAaxM,YAAqC,cAArB1wQ,KAAKy3I,YAAgC,cAAgB,UAClFylI,EAAa1M,QAAUxwQ,KAAKgwQ,cAE5Ba,MAAO3oO,EAAKg1O,GAAexsO,MAAM,SAAWikB,GAE3C,OAAOA,EAAIk9M,MAEZ,IAAInhO,MAAM,SAAWmhO,GAEpB,OAAOoL,kBAAmBpL,EAAMtzQ,OAAOmgB,OAAQsuK,EAAM/rL,QAAS,CAAEk8Q,qBAAsB,SAEvF,IAAIzsO,MAAM,SAAW0sO,GAEpBxO,GAAMxiP,IAAK8b,EAAKk1O,GAEXpjI,GAASA,EAAQojI,GAEtBpwF,EAAM6iF,QAAQT,QAASlnO,EAExB,IAAIyI,OAAO,SAAWrqC,GAEhB8xB,GAAUA,EAAS9xB,GAExB0mL,EAAM6iF,QAAQR,UAAWnnO,GACzB8kJ,EAAM6iF,QAAQT,QAASlnO,EAExB,IAEA8kJ,EAAM6iF,QAAQV,UAAWjnO,EAE1B,KAAC20O,CAAA,CA3FqB,CAASjN,IA+XhC,IAkrBMgV,GAAa,WAElB,SAAAA,EAAaC,EAASnW,EAAU/J,GAK/B,IAAImgB,EACHC,EACAC,EAkBD,OAzB2Cv6Q,EAAA,KAAAm6Q,GAE3C5kR,KAAK6kR,QAAUA,EACf7kR,KAAK2kQ,UAAYA,EAsBR+J,GAER,IAAK,aACJoW,EAAc9kR,KAAKilR,OACnBF,EAAsB/kR,KAAKklR,eAC3BF,EAAchlR,KAAKmlR,+BAEnBnlR,KAAKm6J,OAAS,IAAIF,aAA0B,EAAZ0qG,GAChC3kQ,KAAKolR,WAAa,EAClB,MAED,IAAK,SACL,IAAK,OACJN,EAAc9kR,KAAKqlR,QAInBN,EAAsB/kR,KAAKqlR,QAE3BL,EAAchlR,KAAKslR,0BAEnBtlR,KAAKm6J,OAAS,IAAIx9J,MAAmB,EAAZgoQ,GACzB,MAED,QACCmgB,EAAc9kR,KAAKulR,MACnBR,EAAsB/kR,KAAKwlR,cAC3BR,EAAchlR,KAAKylR,4BAEnBzlR,KAAKm6J,OAAS,IAAIF,aAA0B,EAAZ0qG,GAIlC3kQ,KAAK0lR,iBAAmBZ,EACxB9kR,KAAK2lR,yBAA2BZ,EAChC/kR,KAAK4lR,aAAeZ,EACpBhlR,KAAK6lR,WAAa,EAClB7lR,KAAK8lR,UAAY,EAEjB9lR,KAAK+lR,iBAAmB,EACxB/lR,KAAKgmR,yBAA2B,EAEhChmR,KAAKimR,SAAW,EAChBjmR,KAAKkmR,eAAiB,CAEvB,CA8OC,OA5OD38Q,EAAAq7Q,EAAA,EAAApiR,IAAA,aAAA/D,MACA,SAAY0nR,EAAW/yE,GAKtB,IAAMj5C,EAASn6J,KAAKm6J,OACnBsvB,EAASzpL,KAAK2kQ,UACd56N,EAASo8O,EAAY18F,EAASA,EAE3B28F,EAAgBpmR,KAAK+lR,iBAEzB,GAAuB,IAAlBK,EAAsB,CAI1B,IAAM,IAAI1pR,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAEjCy9J,EAAQpwH,EAASrtC,GAAMy9J,EAAQz9J,GAIhC0pR,EAAgBhzE,CAEjB,KAAO,CAKN,IAAMizE,EAAMjzE,GADZgzE,GAAiBhzE,GAEjBpzM,KAAK0lR,iBAAkBvrH,EAAQpwH,EAAQ,EAAGs8O,EAAK58F,EAEhD,CAEAzpL,KAAK+lR,iBAAmBK,CAEzB,GAEA,CAAA5jR,IAAA,qBAAA/D,MACA,SAAoB20M,GAEnB,IAAMj5C,EAASn6J,KAAKm6J,OACnBsvB,EAASzpL,KAAK2kQ,UACd56N,EAAS0/I,EAASzpL,KAAK8lR,UAEe,IAAlC9lR,KAAKgmR,0BAIThmR,KAAK4lR,eAMN5lR,KAAK2lR,yBAA0BxrH,EAAQpwH,EAAQ,EAAGqpK,EAAQ3pB,GAC1DzpL,KAAKgmR,0BAA4B5yE,CAElC,GAEA,CAAA5wM,IAAA,QAAA/D,MACA,SAAO0nR,GAEN,IAAM18F,EAASzpL,KAAK2kQ,UACnBxqG,EAASn6J,KAAKm6J,OACdpwH,EAASo8O,EAAY18F,EAASA,EAE9B2pB,EAASpzM,KAAK+lR,iBACdO,EAAiBtmR,KAAKgmR,yBAEtBnB,EAAU7kR,KAAK6kR,QAKhB,GAHA7kR,KAAK+lR,iBAAmB,EACxB/lR,KAAKgmR,yBAA2B,EAE3B5yE,EAAS,EAAI,CAIjB,IAAMmzE,EAAsB98F,EAASzpL,KAAK6lR,WAE1C7lR,KAAK0lR,iBACJvrH,EAAQpwH,EAAQw8O,EAAqB,EAAInzE,EAAQ3pB,EAEnD,CAEK68F,EAAiB,GAIrBtmR,KAAK2lR,yBAA0BxrH,EAAQpwH,EAAQ/pC,KAAK8lR,UAAYr8F,EAAQ,EAAGA,GAI5E,IAAM,IAAI/sL,EAAI+sL,EAAQnjL,EAAImjL,EAASA,EAAQ/sL,IAAM4J,IAAM5J,EAEtD,GAAKy9J,EAAQz9J,KAAQy9J,EAAQz9J,EAAI+sL,GAAW,CAI3Co7F,EAAQ50P,SAAUkqI,EAAQpwH,GAC1B,KAED,CAIF,GAEA,CAAAvnC,IAAA,oBAAA/D,MACA,WAEC,IAAMomR,EAAU7kR,KAAK6kR,QAEf1qH,EAASn6J,KAAKm6J,OACnBsvB,EAASzpL,KAAK2kQ,UAEd4hB,EAAsB98F,EAASzpL,KAAK6lR,WAErChB,EAAQ70P,SAAUmqI,EAAQosH,GAG1B,IAAM,IAAI7pR,EAAI+sL,EAAQnjL,EAAIigR,EAAqB7pR,IAAM4J,IAAM5J,EAE1Dy9J,EAAQz9J,GAAMy9J,EAAQosH,EAAwB7pR,EAAI+sL,GAKnDzpL,KAAK4lR,eAEL5lR,KAAK+lR,iBAAmB,EACxB/lR,KAAKgmR,yBAA2B,CAEjC,GAEA,CAAAxjR,IAAA,uBAAA/D,MACA,WAEC,IAAM8nR,EAAuC,EAAjBvmR,KAAK2kQ,UACjC3kQ,KAAK6kR,QAAQ50P,SAAUjwB,KAAKm6J,OAAQosH,EAErC,GAAC,CAAA/jR,IAAA,8BAAA/D,MAED,WAKC,IAHA,IAAMo+F,EAAa78F,KAAK8lR,UAAY9lR,KAAK2kQ,UACnCx8J,EAAWtL,EAAa78F,KAAK2kQ,UAEzBjoQ,EAAImgG,EAAYngG,EAAIyrG,EAAUzrG,IAEvCsD,KAAKm6J,OAAQz9J,GAAM,CAIrB,GAAC,CAAA8F,IAAA,iCAAA/D,MAED,WAECuB,KAAKylR,8BACLzlR,KAAKm6J,OAAQn6J,KAAK8lR,UAAY9lR,KAAK2kQ,UAAY,GAAM,CAEtD,GAAC,CAAAniQ,IAAA,4BAAA/D,MAED,WAKC,IAHA,IAAMo+F,EAAa78F,KAAK6lR,WAAa7lR,KAAK2kQ,UACpC6hB,EAAcxmR,KAAK8lR,UAAY9lR,KAAK2kQ,UAEhCjoQ,EAAI,EAAGA,EAAIsD,KAAK2kQ,UAAWjoQ,IAEpCsD,KAAKm6J,OAAQqsH,EAAc9pR,GAAMsD,KAAKm6J,OAAQt9D,EAAangG,EAI7D,GAGA,CAAA8F,IAAA,UAAA/D,MAEA,SAAS07J,EAAQ0L,EAAWo+F,EAAW3sQ,EAAGmyL,GAEzC,GAAKnyL,GAAK,GAET,IAAM,IAAIoF,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAEjCy9J,EAAQ0L,EAAYnpK,GAAMy9J,EAAQ8pG,EAAYvnQ,EAMjD,GAAC,CAAA8F,IAAA,SAAA/D,MAED,SAAQ07J,EAAQ0L,EAAWo+F,EAAW3sQ,GAErCyrK,GAAWspG,UAAWlyG,EAAQ0L,EAAW1L,EAAQ0L,EAAW1L,EAAQ8pG,EAAW3sQ,EAEhF,GAAC,CAAAkL,IAAA,iBAAA/D,MAED,SAAgB07J,EAAQ0L,EAAWo+F,EAAW3sQ,EAAGmyL,GAEhD,IAAMg9F,EAAazmR,KAAKolR,WAAa37F,EAGrC1mB,GAAWsjG,wBAAyBlsG,EAAQssH,EAAYtsH,EAAQ0L,EAAW1L,EAAQ8pG,GAGnFlhG,GAAWspG,UAAWlyG,EAAQ0L,EAAW1L,EAAQ0L,EAAW1L,EAAQssH,EAAYnvR,EAEjF,GAAC,CAAAkL,IAAA,QAAA/D,MAED,SAAO07J,EAAQ0L,EAAWo+F,EAAW3sQ,EAAGmyL,GAIvC,IAFA,IAAMhuL,EAAI,EAAInE,EAEJoF,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAAI,CAErC,IAAMmT,EAAIg2J,EAAYnpK,EAEtBy9J,EAAQtqJ,GAAMsqJ,EAAQtqJ,GAAMpU,EAAI0+J,EAAQ8pG,EAAYvnQ,GAAMpF,CAE3D,CAED,GAAC,CAAAkL,IAAA,gBAAA/D,MAED,SAAe07J,EAAQ0L,EAAWo+F,EAAW3sQ,EAAGmyL,GAE/C,IAAM,IAAI/sL,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAAI,CAErC,IAAMmT,EAAIg2J,EAAYnpK,EAEtBy9J,EAAQtqJ,GAAMsqJ,EAAQtqJ,GAAMsqJ,EAAQ8pG,EAAYvnQ,GAAMpF,CAEvD,CAED,KAACstR,CAAA,CAtTiB,GA2Tb8B,GAAqB,gBACrBC,GAAc,IAAI3zN,OAAQ,IAAM0zN,GAAqB,IAAK,KAK1DE,GAAY,KAAOF,GAAqB,IACxCG,GAAiB,KAAOH,GAAmB/qR,QAAS,MAAO,IAAO,IAiBlEurR,GAAW,IAAIl0N,OAClB,IAdgC,kBAAkBxxD,OAAO7F,QAAS,KAAMirR,IAG7C,WAAWplR,OAAO7F,QAAS,OAAQkrR,IAIjC,4BAA4BrlR,OAAO7F,QAAS,KAAMirR,IAIhD,uBAAuBplR,OAAO7F,QAAS,KAAMirR,IAQ5E,KAGGO,GAAwB,CAAE,WAAY,YAAa,QAAS,OAE5DC,GAAS,WAEd,SAAAA,EAAaC,EAAanwL,EAAMowL,GAAqB78Q,EAAA,KAAA28Q,GAEpD,IAAMjwL,EAAamwL,GAAsBC,GAAgBC,eAAgBtwL,GAEzEl3F,KAAKynR,aAAeJ,EACpBrnR,KAAK0nR,UAAYL,EAAYM,WAAYzwL,EAAMC,EAEhD,CAgDC,OAhDA5tF,EAAA69Q,EAAA,EAAA5kR,IAAA,WAAA/D,MAED,SAAUsE,EAAOgnC,GAEhB/pC,KAAK4T,OAEL,IAAMg0Q,EAAkB5nR,KAAKynR,aAAaI,gBACzChD,EAAU7kR,KAAK0nR,UAAWE,QAGVx9Q,IAAZy6Q,GAAwBA,EAAQ70P,SAAUjtB,EAAOgnC,EAEvD,GAAC,CAAAvnC,IAAA,WAAA/D,MAED,SAAUsE,EAAOgnC,GAIhB,IAFA,IAAM+9O,EAAW9nR,KAAK0nR,UAEZhrR,EAAIsD,KAAKynR,aAAaI,gBAAiB9gR,EAAI+gR,EAASlwR,OAAQ8E,IAAMqK,IAAMrK,EAEjForR,EAAUprR,GAAIuzB,SAAUltB,EAAOgnC,EAIjC,GAAC,CAAAvnC,IAAA,OAAA/D,MAED,WAIC,IAFA,IAAMqpR,EAAW9nR,KAAK0nR,UAEZhrR,EAAIsD,KAAKynR,aAAaI,gBAAiB9gR,EAAI+gR,EAASlwR,OAAQ8E,IAAMqK,IAAMrK,EAEjForR,EAAUprR,GAAIkX,MAIhB,GAAC,CAAApR,IAAA,SAAA/D,MAED,WAIC,IAFA,IAAMqpR,EAAW9nR,KAAK0nR,UAEZhrR,EAAIsD,KAAKynR,aAAaI,gBAAiB9gR,EAAI+gR,EAASlwR,OAAQ8E,IAAMqK,IAAMrK,EAEjForR,EAAUprR,GAAIqrR,QAIhB,KAACX,CAAA,CAzDa,GAkETG,GAAe,WAEpB,SAAAA,EAAa/9M,EAAU0tB,EAAMC,GAAa1sF,EAAA,KAAA88Q,GAEzCvnR,KAAKk3F,KAAOA,EACZl3F,KAAKm3F,WAAaA,GAAcowL,EAAgBC,eAAgBtwL,GAEhEl3F,KAAKyZ,KAAO8tQ,EAAgBS,SAAUx+M,EAAUxpE,KAAKm3F,WAAWvnE,WAAc45C,EAE9ExpE,KAAKwpE,SAAWA,EAGhBxpE,KAAKgwB,SAAWhwB,KAAKioR,kBACrBjoR,KAAKiwB,SAAWjwB,KAAKkoR,iBAEtB,CAwIC,OAxIA3+Q,EAAAg+Q,EAAA,EAAA/kR,IAAA,wBAAA/D,MA2ID,WAAyB,GAAC,CAAA+D,IAAA,wBAAA/D,MAC1B,WAAyB,GAEzB,CAAA+D,IAAA,mBAAA/D,MAEA,SAAkB07J,EAAQpwH,GAEzBowH,EAAQpwH,GAAW/pC,KAAKmoR,aAAcnoR,KAAK8sB,aAE5C,GAAC,CAAAtqB,IAAA,kBAAA/D,MAED,SAAiB07J,EAAQpwH,GAIxB,IAFA,IAAMvoC,EAASxB,KAAKooR,iBAEV1rR,EAAI,EAAGqK,EAAIvF,EAAO5J,OAAQ8E,IAAMqK,IAAMrK,EAE/Cy9J,EAAQpwH,KAAcvoC,EAAQ9E,EAIhC,GAAC,CAAA8F,IAAA,yBAAA/D,MAED,SAAwB07J,EAAQpwH,GAE/BowH,EAAQpwH,GAAW/pC,KAAKooR,iBAAkBpoR,KAAKqoR,cAEhD,GAAC,CAAA7lR,IAAA,oBAAA/D,MAED,SAAmB07J,EAAQpwH,GAE1B/pC,KAAKooR,iBAAiB7gM,QAAS4yE,EAAQpwH,EAExC,GAEA,CAAAvnC,IAAA,mBAAA/D,MAEA,SAAkB07J,EAAQpwH,GAEzB/pC,KAAKmoR,aAAcnoR,KAAK8sB,cAAiBqtI,EAAQpwH,EAElD,GAAC,CAAAvnC,IAAA,kCAAA/D,MAED,SAAiC07J,EAAQpwH,GAExC/pC,KAAKmoR,aAAcnoR,KAAK8sB,cAAiBqtI,EAAQpwH,GACjD/pC,KAAKmoR,aAAa7oH,aAAc,CAEjC,GAAC,CAAA98J,IAAA,6CAAA/D,MAED,SAA4C07J,EAAQpwH,GAEnD/pC,KAAKmoR,aAAcnoR,KAAK8sB,cAAiBqtI,EAAQpwH,GACjD/pC,KAAKmoR,aAAapyG,wBAAyB,CAE5C,GAEA,CAAAvzK,IAAA,kBAAA/D,MAEA,SAAiB07J,EAAQpwH,GAIxB,IAFA,IAAMkzD,EAAOj9F,KAAKooR,iBAER1rR,EAAI,EAAGqK,EAAIk2F,EAAKrlG,OAAQ8E,IAAMqK,IAAMrK,EAE7CugG,EAAMvgG,GAAMy9J,EAAQpwH,IAItB,GAAC,CAAAvnC,IAAA,iCAAA/D,MAED,SAAgC07J,EAAQpwH,GAIvC,IAFA,IAAMkzD,EAAOj9F,KAAKooR,iBAER1rR,EAAI,EAAGqK,EAAIk2F,EAAKrlG,OAAQ8E,IAAMqK,IAAMrK,EAE7CugG,EAAMvgG,GAAMy9J,EAAQpwH,KAIrB/pC,KAAKmoR,aAAa7oH,aAAc,CAEjC,GAAC,CAAA98J,IAAA,4CAAA/D,MAED,SAA2C07J,EAAQpwH,GAIlD,IAFA,IAAMkzD,EAAOj9F,KAAKooR,iBAER1rR,EAAI,EAAGqK,EAAIk2F,EAAKrlG,OAAQ8E,IAAMqK,IAAMrK,EAE7CugG,EAAMvgG,GAAMy9J,EAAQpwH,KAIrB/pC,KAAKmoR,aAAapyG,wBAAyB,CAE5C,GAEA,CAAAvzK,IAAA,yBAAA/D,MAEA,SAAwB07J,EAAQpwH,GAE/B/pC,KAAKooR,iBAAkBpoR,KAAKqoR,eAAkBluH,EAAQpwH,EAEvD,GAAC,CAAAvnC,IAAA,wCAAA/D,MAED,SAAuC07J,EAAQpwH,GAE9C/pC,KAAKooR,iBAAkBpoR,KAAKqoR,eAAkBluH,EAAQpwH,GACtD/pC,KAAKmoR,aAAa7oH,aAAc,CAEjC,GAAC,CAAA98J,IAAA,mDAAA/D,MAED,SAAkD07J,EAAQpwH,GAEzD/pC,KAAKooR,iBAAkBpoR,KAAKqoR,eAAkBluH,EAAQpwH,GACtD/pC,KAAKmoR,aAAapyG,wBAAyB,CAE5C,GAEA,CAAAvzK,IAAA,sBAAA/D,MAEA,SAAqB07J,EAAQpwH,GAE5B/pC,KAAKooR,iBAAiBzuH,UAAWQ,EAAQpwH,EAE1C,GAAC,CAAAvnC,IAAA,qCAAA/D,MAED,SAAoC07J,EAAQpwH,GAE3C/pC,KAAKooR,iBAAiBzuH,UAAWQ,EAAQpwH,GACzC/pC,KAAKmoR,aAAa7oH,aAAc,CAEjC,GAAC,CAAA98J,IAAA,gDAAA/D,MAED,SAA+C07J,EAAQpwH,GAEtD/pC,KAAKooR,iBAAiBzuH,UAAWQ,EAAQpwH,GACzC/pC,KAAKmoR,aAAapyG,wBAAyB,CAE5C,GAAC,CAAAvzK,IAAA,oBAAA/D,MAED,SAAmBq4G,EAAa/sE,GAE/B/pC,KAAK4T,OACL5T,KAAKgwB,SAAU8mF,EAAa/sE,EAE7B,GAAC,CAAAvnC,IAAA,oBAAA/D,MAED,SAAmB6pR,EAAav+O,GAE/B/pC,KAAK4T,OACL5T,KAAKiwB,SAAUq4P,EAAav+O,EAE7B,GAEA,CAAAvnC,IAAA,OAAA/D,MACA,WAEC,IAAI0pR,EAAenoR,KAAKyZ,KAClB09E,EAAan3F,KAAKm3F,WAElBoxL,EAAapxL,EAAWoxL,WACxBz7P,EAAeqqE,EAAWrqE,aAC5Bu7P,EAAgBlxL,EAAWkxL,cAe/B,GAbOF,IAENA,EAAeZ,EAAgBS,SAAUhoR,KAAKwpE,SAAU2tB,EAAWvnE,WAAc5vB,KAAKwpE,SAEtFxpE,KAAKyZ,KAAO0uQ,GAKbnoR,KAAKgwB,SAAWhwB,KAAKwoR,sBACrBxoR,KAAKiwB,SAAWjwB,KAAKyoR,sBAGdN,EAAP,CAOA,GAAKI,EAAa,CAEjB,IAAIG,EAAcvxL,EAAWuxL,YAG7B,OAASH,GAER,IAAK,YAEJ,IAAOJ,EAAatvG,SAGnB,YADA9kK,QAAQwN,MAAO,oFAAqFvhB,MAKrG,IAAOmoR,EAAatvG,SAASlB,UAG5B,YADA5jK,QAAQwN,MAAO,8GAA+GvhB,MAK/HmoR,EAAeA,EAAatvG,SAASlB,UAErC,MAED,IAAK,QAEJ,IAAOwwG,EAAavvG,SAGnB,YADA7kK,QAAQwN,MAAO,iFAAkFvhB,MAQlGmoR,EAAeA,EAAavvG,SAASgvC,MAGrC,IAAM,IAAIlrN,EAAI,EAAGA,EAAIyrR,EAAavwR,OAAQ8E,IAEzC,GAAKyrR,EAAczrR,GAAIvD,OAASuvR,EAAc,CAE7CA,EAAchsR,EACd,KAED,CAID,MAED,IAAK,MAEJ,GAAK,QAASyrR,EAAe,CAE5BA,EAAeA,EAAa5rR,IAC5B,KAED,CAEA,IAAO4rR,EAAatvG,SAGnB,YADA9kK,QAAQwN,MAAO,oFAAqFvhB,MAKrG,IAAOmoR,EAAatvG,SAASt8K,IAG5B,YADAwX,QAAQwN,MAAO,4FAA6FvhB,MAK7GmoR,EAAeA,EAAatvG,SAASt8K,IACrC,MAED,QAEC,QAAoC6N,IAA/B+9Q,EAAcI,GAGlB,YADAx0Q,QAAQwN,MAAO,uEAAwEvhB,MAKxFmoR,EAAeA,EAAcI,GAK/B,QAAqBn+Q,IAAhBs+Q,EAA4B,CAEhC,QAAqCt+Q,IAAhC+9Q,EAAcO,GAGlB,YADA30Q,QAAQwN,MAAO,wFAAyFvhB,KAAMmoR,GAK/GA,EAAeA,EAAcO,EAE9B,CAED,CAGA,IAAMC,EAAeR,EAAcr7P,GAEnC,QAAsB1iB,IAAjBu+Q,EAAL,CAWA,IAAIC,EAAa5oR,KAAK6oR,WAAWC,KAEjC9oR,KAAKmoR,aAAeA,OAEc/9Q,IAA7B+9Q,EAAa7oH,YAEjBspH,EAAa5oR,KAAK6oR,WAAWE,iBAEsB3+Q,IAAxC+9Q,EAAapyG,yBAExB6yG,EAAa5oR,KAAK6oR,WAAWG,wBAK9B,IAAIC,EAAcjpR,KAAKkpR,YAAYC,OAEnC,QAAuB/+Q,IAAlBi+Q,EAA8B,CAIlC,GAAsB,0BAAjBv7P,EAA2C,CAK/C,IAAOq7P,EAAar9G,SAGnB,YADA/2J,QAAQwN,MAAO,sGAAuGvhB,MAKvH,IAAOmoR,EAAar9G,SAASgb,gBAG5B,YADA/xK,QAAQwN,MAAO,sHAAuHvhB,WAK1EoK,IAAxD+9Q,EAAa38F,sBAAuB68F,KAExCA,EAAgBF,EAAa38F,sBAAuB68F,GAItD,CAEAY,EAAcjpR,KAAKkpR,YAAYE,aAE/BppR,KAAKooR,iBAAmBO,EACxB3oR,KAAKqoR,cAAgBA,CAEtB,WAAuCj+Q,IAA3Bu+Q,EAAahvH,gBAAoDvvJ,IAAzBu+Q,EAAaphM,SAIhE0hM,EAAcjpR,KAAKkpR,YAAYG,eAE/BrpR,KAAKooR,iBAAmBO,GAEbhsR,MAAM0E,QAASsnR,IAE1BM,EAAcjpR,KAAKkpR,YAAYI,YAE/BtpR,KAAKooR,iBAAmBO,GAIxB3oR,KAAK8sB,aAAeA,EAKrB9sB,KAAKgwB,SAAWhwB,KAAKupR,oBAAqBN,GAC1CjpR,KAAKiwB,SAAWjwB,KAAKwpR,iCAAkCP,GAAeL,EA9EtE,KARA,CAEC,IAAMh5P,EAAWunE,EAAWvnE,SAE5B7b,QAAQwN,MAAO,+DAAiEqO,EAC/E,IAAM9C,EAAe,wBAA0Bq7P,EAGjD,CA3HA,MAHCp0Q,QAAQwN,MAAO,2DAA6DvhB,KAAKk3F,KAAO,wBA8M1F,GAAC,CAAA10F,IAAA,SAAA/D,MAED,WAECuB,KAAKyZ,KAAO,KAIZzZ,KAAKgwB,SAAWhwB,KAAKioR,kBACrBjoR,KAAKiwB,SAAWjwB,KAAKkoR,iBAEtB,IAAC,EAAA1lR,IAAA,SAAA/D,MAvhBD,SAAeyU,EAAMgkF,EAAMC,GAE1B,OAASjkF,GAAQA,EAAKu2Q,uBAMd,IAAIlC,EAAgBH,UAAWl0Q,EAAMgkF,EAAMC,GAJ3C,IAAIowL,EAAiBr0Q,EAAMgkF,EAAMC,EAQ1C,GAEA,CAAA30F,IAAA,mBAAA/D,MAOA,SAAyBtF,GAExB,OAAOA,EAAKwC,QAAS,MAAO,KAAMA,QAASgrR,GAAa,GAEzD,GAAC,CAAAnkR,IAAA,iBAAA/D,MAED,SAAuBuvQ,GAEtB,IAAMniL,EAAUq7L,GAASlxQ,KAAMg4P,GAE/B,GAAiB,OAAZniL,EAEJ,MAAM,IAAI/tF,MAAO,4CAA8CkwQ,GAIhE,IAAM0b,EAAU,CAEf95P,SAAUi8D,EAAS,GACnB08L,WAAY18L,EAAS,GACrB68L,YAAa78L,EAAS,GACtB/+D,aAAc++D,EAAS,GACvBw8L,cAAex8L,EAAS,IAGnB89L,EAAUD,EAAQ95P,UAAY85P,EAAQ95P,SAASi/E,YAAa,KAElE,QAAiBzkG,IAAZu/Q,IAAuC,IAAdA,EAAkB,CAE/C,IAAMpB,EAAamB,EAAQ95P,SAAS8F,UAAWi0P,EAAU,IAMF,IAAlDxC,GAAsB36Q,QAAS+7Q,KAEnCmB,EAAQ95P,SAAW85P,EAAQ95P,SAAS8F,UAAW,EAAGi0P,GAClDD,EAAQnB,WAAaA,EAIvB,CAEA,GAA8B,OAAzBmB,EAAQ58P,cAAyD,IAAhC48P,EAAQ58P,aAAal1B,OAE1D,MAAM,IAAIkG,MAAO,+DAAiEkwQ,GAInF,OAAO0b,CAER,GAAC,CAAAlnR,IAAA,WAAA/D,MAED,SAAiByU,EAAM0c,GAEtB,QAAkBxlB,IAAbwlB,GAAuC,KAAbA,GAAgC,MAAbA,IAAmC,IAAfA,GAAoBA,IAAa1c,EAAK/Z,MAAQy2B,IAAa1c,EAAK2oG,KAErI,OAAO3oG,EAKR,GAAKA,EAAK0lK,SAAW,CAEpB,IAAM4jE,EAAOtpO,EAAK0lK,SAASgxG,cAAeh6P,GAE1C,QAAcxlB,IAAToyO,EAEJ,OAAOA,CAIT,CAGA,GAAKtpO,EAAK0K,SAAW,CAEpB,IAsBMisQ,EAtBoB,SAApBC,EAA+BlsQ,GAEpC,IAAM,IAAIlhB,EAAI,EAAGA,EAAIkhB,EAAShmB,OAAQ8E,IAAO,CAE5C,IAAMqtR,EAAYnsQ,EAAUlhB,GAE5B,GAAKqtR,EAAU5wR,OAASy2B,GAAYm6P,EAAUluK,OAASjsF,EAEtD,OAAOm6P,EAIR,IAAMjyR,EAASgyR,EAAmBC,EAAUnsQ,UAE5C,GAAK9lB,EAAS,OAAOA,CAEtB,CAEA,OAAO,IAER,CAEoBgyR,CAAmB52Q,EAAK0K,UAE5C,GAAKisQ,EAEJ,OAAOA,CAIT,CAEA,OAAO,IAER,KAACtC,CAAA,CAvJmB,GA6iBrBA,GAAgBH,UAAYA,GAE5BG,GAAgB3qR,UAAUssR,YAAc,CACvCC,OAAQ,EACRG,YAAa,EACbF,aAAc,EACdC,eAAgB,GAGjB9B,GAAgB3qR,UAAUisR,WAAa,CACtCC,KAAM,EACNC,YAAa,EACbC,uBAAwB,GAGzBzB,GAAgB3qR,UAAU2sR,oBAAsB,CAE/ChC,GAAgB3qR,UAAUotR,iBAC1BzC,GAAgB3qR,UAAUqtR,gBAC1B1C,GAAgB3qR,UAAUstR,uBAC1B3C,GAAgB3qR,UAAUutR,mBAI3B5C,GAAgB3qR,UAAU4sR,iCAAmC,CAE5D,CAECjC,GAAgB3qR,UAAUwtR,iBAC1B7C,GAAgB3qR,UAAUytR,gCAC1B9C,GAAgB3qR,UAAU0tR,4CAExB,CAIF/C,GAAgB3qR,UAAU2tR,gBAC1BhD,GAAgB3qR,UAAU4tR,+BAC1BjD,GAAgB3qR,UAAU6tR,2CAExB,CAGFlD,GAAgB3qR,UAAU8tR,uBAC1BnD,GAAgB3qR,UAAU+tR,sCAC1BpD,GAAgB3qR,UAAUguR,kDAExB,CAGFrD,GAAgB3qR,UAAUiuR,oBAC1BtD,GAAgB3qR,UAAUkuR,mCAC1BvD,GAAgB3qR,UAAUmuR,gDAM5B,IA+XM0B,GAAe,WAEpB,SAAAA,EAAaC,EAAOhoB,GAAqD,IAA/CioB,EAAS1sR,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAMsmQ,EAAStmQ,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGykQ,EAAK6B,UAAS97P,EAAA,KAAAgiR,GAErEzsR,KAAK4sR,OAASF,EACd1sR,KAAK6sR,MAAQnoB,EACb1kQ,KAAK8sR,WAAaH,EAClB3sR,KAAKumQ,UAAYA,EAWjB,IATA,IAAM/rL,EAASkqL,EAAKlqL,OACnBuyM,EAAUvyM,EAAO5iF,OACjBo1R,EAAe,IAAIrwR,MAAOowR,GAErBE,EAAsB,CAC3B7kB,YAAa35G,GACb45G,UAAW55G,IAGF/xJ,EAAI,EAAGA,IAAMqwR,IAAYrwR,EAAI,CAEtC,IAAMspQ,EAAcxrL,EAAQ99E,GAAIipQ,kBAAmB,MACnDqnB,EAActwR,GAAMspQ,EACpBA,EAAYa,SAAWomB,CAExB,CAEAjtR,KAAKktR,qBAAuBD,EAE5BjtR,KAAKmtR,cAAgBH,EAGrBhtR,KAAKotR,kBAAoB,IAAIzwR,MAAOowR,GAEpC/sR,KAAKqtR,YAAc,KACnBrtR,KAAKstR,kBAAoB,KAEzBttR,KAAKutR,sBAAwB,KAC7BvtR,KAAKwtR,mBAAqB,KAE1BxtR,KAAKiuE,KAAOmgF,GACZpuJ,KAAKytR,YAAe,EAIpBztR,KAAK0tR,WAAa,KAIlB1tR,KAAKioC,KAAO,EAEZjoC,KAAKyqQ,UAAY,EACjBzqQ,KAAK2tR,oBAAsB,EAE3B3tR,KAAKozM,OAAS,EACdpzM,KAAK4tR,iBAAmB,EAExB5tR,KAAK6tR,YAAc1kO,IAEnBnpD,KAAK8tR,QAAS,EACd9tR,KAAK6wL,SAAU,EAEf7wL,KAAK+tR,mBAAoB,EAEzB/tR,KAAKguR,kBAAmB,EACxBhuR,KAAKiuR,gBAAiB,CAEvB,CAinBC,OA/mBD1kR,EAAAkjR,EAAA,EAAAjqR,IAAA,OAAA/D,MAEA,WAIC,OAFAuB,KAAK4sR,OAAOsB,gBAAiBluR,MAEtBA,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAIC,OAFAuB,KAAK4sR,OAAOuB,kBAAmBnuR,MAExBA,KAAKu6D,OAEb,GAAC,CAAA/3D,IAAA,QAAA/D,MAED,WASC,OAPAuB,KAAK8tR,QAAS,EACd9tR,KAAK6wL,SAAU,EAEf7wL,KAAKioC,KAAO,EACZjoC,KAAKytR,YAAe,EACpBztR,KAAK0tR,WAAa,KAEX1tR,KAAKouR,aAAaC,aAE1B,GAAC,CAAA7rR,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAK6wL,UAAa7wL,KAAK8tR,QAA6B,IAAnB9tR,KAAKyqQ,WACxB,OAApBzqQ,KAAK0tR,YAAuB1tR,KAAK4sR,OAAO0B,gBAAiBtuR,KAE3D,GAEA,CAAAwC,IAAA,cAAA/D,MACA,WAEC,OAAOuB,KAAK4sR,OAAO0B,gBAAiBtuR,KAErC,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASwpC,GAIR,OAFAjoC,KAAK0tR,WAAazlP,EAEXjoC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAAS+1C,EAAMq5O,GAKd,OAHA7tR,KAAKiuE,KAAOz5B,EACZx0C,KAAK6tR,YAAcA,EAEZ7tR,IAER,GAMA,CAAAwC,IAAA,qBAAA/D,MACA,SAAoB20M,GAOnB,OALApzM,KAAKozM,OAASA,EAGdpzM,KAAK4tR,iBAAmB5tR,KAAK6wL,QAAUuiB,EAAS,EAEzCpzM,KAAKouR,YAEb,GAEA,CAAA5rR,IAAA,qBAAA/D,MACA,WAEC,OAAOuB,KAAK4tR,gBAEb,GAAC,CAAAprR,IAAA,SAAA/D,MAED,SAAQ0tE,GAEP,OAAOnsE,KAAKuuR,gBAAiBpiN,EAAU,EAAG,EAE3C,GAAC,CAAA3pE,IAAA,UAAA/D,MAED,SAAS0tE,GAER,OAAOnsE,KAAKuuR,gBAAiBpiN,EAAU,EAAG,EAE3C,GAAC,CAAA3pE,IAAA,gBAAA/D,MAED,SAAe+vR,EAAeriN,EAAUsiN,GAKvC,GAHAD,EAAcE,QAASviN,GACvBnsE,KAAK2uR,OAAQxiN,GAERsiN,EAAO,CAEX,IAAMG,EAAiB5uR,KAAK6sR,MAAM1gN,SACjC0iN,EAAkBL,EAAc3B,MAAM1gN,SAEtC2iN,EAAgBD,EAAkBD,EAClCG,EAAgBH,EAAiBC,EAElCL,EAAcC,KAAM,EAAKK,EAAe3iN,GACxCnsE,KAAKyuR,KAAMM,EAAe,EAAK5iN,EAEhC,CAEA,OAAOnsE,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAauwR,EAAc7iN,EAAUsiN,GAEpC,OAAOO,EAAaC,cAAejvR,KAAMmsE,EAAUsiN,EAEpD,GAAC,CAAAjsR,IAAA,aAAA/D,MAED,WAEC,IAAMywR,EAAoBlvR,KAAKwtR,mBAS/B,OAP2B,OAAtB0B,IAEJlvR,KAAKwtR,mBAAqB,KAC1BxtR,KAAK4sR,OAAOuC,4BAA6BD,IAInClvR,IAER,GAMA,CAAAwC,IAAA,wBAAA/D,MACA,SAAuBgsQ,GAKtB,OAHAzqQ,KAAKyqQ,UAAYA,EACjBzqQ,KAAK2tR,oBAAsB3tR,KAAK8tR,OAAS,EAAIrjB,EAEtCzqQ,KAAKquR,aAEb,GAEA,CAAA7rR,IAAA,wBAAA/D,MACA,WAEC,OAAOuB,KAAK2tR,mBAEb,GAAC,CAAAnrR,IAAA,cAAA/D,MAED,SAAa0tE,GAIZ,OAFAnsE,KAAKyqQ,UAAYzqQ,KAAK6sR,MAAM1gN,SAAWA,EAEhCnsE,KAAKquR,aAEb,GAAC,CAAA7rR,IAAA,WAAA/D,MAED,SAAU48C,GAKT,OAHAr7C,KAAKioC,KAAOoT,EAAOpT,KACnBjoC,KAAKyqQ,UAAYpvN,EAAOovN,UAEjBzqQ,KAAKquR,aAEb,GAAC,CAAA7rR,IAAA,OAAA/D,MAED,SAAM0tE,GAEL,OAAOnsE,KAAKyuR,KAAMzuR,KAAK2tR,oBAAqB,EAAGxhN,EAEhD,GAAC,CAAA3pE,IAAA,OAAA/D,MAED,SAAM2wR,EAAgBC,EAAcljN,GAEnC,IAAMugN,EAAQ1sR,KAAK4sR,OAClBhtR,EAAM8sR,EAAMzkP,KACZwiO,EAAYzqQ,KAAKyqQ,UAEdzE,EAAchmQ,KAAKutR,sBAEF,OAAhBvnB,IAEJA,EAAc0mB,EAAM4C,0BACpBtvR,KAAKutR,sBAAwBvnB,GAI9B,IAAMlC,EAAQkC,EAAYS,mBACzB15P,EAASi5P,EAAYU,aAQtB,OANA5C,EAAO,GAAMlkQ,EACbkkQ,EAAO,GAAMlkQ,EAAMusE,EAEnBp/D,EAAQ,GAAMqiR,EAAiB3kB,EAC/B19P,EAAQ,GAAMsiR,EAAe5kB,EAEtBzqQ,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAEC,IAAM8wR,EAAuBvvR,KAAKutR,sBASlC,OAP8B,OAAzBgC,IAEJvvR,KAAKutR,sBAAwB,KAC7BvtR,KAAK4sR,OAAOuC,4BAA6BI,IAInCvvR,IAER,GAEA,CAAAwC,IAAA,WAAA/D,MAEA,WAEC,OAAOuB,KAAK4sR,MAEb,GAAC,CAAApqR,IAAA,UAAA/D,MAED,WAEC,OAAOuB,KAAK6sR,KAEb,GAAC,CAAArqR,IAAA,UAAA/D,MAED,WAEC,OAAOuB,KAAK8sR,YAAc9sR,KAAK4sR,OAAO5hJ,KAEvC,GAEA,CAAAxoI,IAAA,UAAA/D,MAEA,SAASwpC,EAAMunP,EAAWC,EAAetJ,GAIxC,GAAOnmR,KAAK6wL,QAAZ,CASA,IAAMz/H,EAAYpxD,KAAK0tR,WAEvB,GAAmB,OAAdt8N,EAAqB,CAIzB,IAAMs+N,GAAgBznP,EAAOmpB,GAAcq+N,EACtCC,EAAc,GAAuB,IAAlBD,EAEvBD,EAAY,GAKZxvR,KAAK0tR,WAAa,KAClB8B,EAAYC,EAAgBC,EAI9B,CAIAF,GAAaxvR,KAAK2vR,iBAAkB1nP,GACpC,IAAM2nP,EAAW5vR,KAAK6vR,YAAaL,GAK7Bp8E,EAASpzM,KAAK8vR,cAAe7nP,GAEnC,GAAKmrK,EAAS,EAAI,CAEjB,IAAM45E,EAAehtR,KAAKmtR,cACpB4C,EAAiB/vR,KAAKotR,kBAE5B,GAv75CgC,OAu75CvBptR,KAAKumQ,UAIZ,IAAM,IAAI12P,EAAI,EAAG/I,EAAIkmR,EAAap1R,OAAQiY,IAAM/I,IAAM+I,EAErDm9Q,EAAcn9Q,GAAIo2P,SAAU2pB,GAC5BG,EAAgBlgR,GAAImgR,mBAAoB58E,QASzC,IAAM,IAAIvjM,EAAI,EAAG/I,EAAIkmR,EAAap1R,OAAQiY,IAAM/I,IAAM+I,EAErDm9Q,EAAcn9Q,GAAIo2P,SAAU2pB,GAC5BG,EAAgBlgR,GAAIogR,WAAY9J,EAAW/yE,EAM/C,CA/DA,MAHCpzM,KAAK8vR,cAAe7nP,EAoEtB,GAAC,CAAAzlC,IAAA,gBAAA/D,MAED,SAAewpC,GAEd,IAAImrK,EAAS,EAEb,GAAKpzM,KAAK6wL,QAAU,CAEnBuiB,EAASpzM,KAAKozM,OACd,IAAM4yD,EAAchmQ,KAAKwtR,mBAEzB,GAAqB,OAAhBxnB,EAAuB,CAE3B,IAAMkqB,EAAmBlqB,EAAYC,SAAUh+N,GAAQ,GAEvDmrK,GAAU88E,EAELjoP,EAAO+9N,EAAYS,mBAAoB,KAE3CzmQ,KAAKouR,aAEqB,IAArB8B,IAGJlwR,KAAK6wL,SAAU,GAMlB,CAED,CAGA,OADA7wL,KAAK4tR,iBAAmBx6E,EACjBA,CAER,GAAC,CAAA5wM,IAAA,mBAAA/D,MAED,SAAkBwpC,GAEjB,IAAIwiO,EAAY,EAEhB,IAAOzqQ,KAAK8tR,OAAS,CAEpBrjB,EAAYzqQ,KAAKyqQ,UAEjB,IAAMzE,EAAchmQ,KAAKutR,sBAEzB,GAAqB,OAAhBvnB,EAIJyE,GAFyBzE,EAAYC,SAAUh+N,GAAQ,GAIlDA,EAAO+9N,EAAYS,mBAAoB,KAE3CzmQ,KAAKquR,cAEc,IAAd5jB,EAGJzqQ,KAAK8tR,QAAS,EAKd9tR,KAAKyqQ,UAAYA,EAQrB,CAGA,OADAzqQ,KAAK2tR,oBAAsBljB,EACpBA,CAER,GAAC,CAAAjoQ,IAAA,cAAA/D,MAED,SAAa+wR,GAEZ,IAAMrjN,EAAWnsE,KAAK6sR,MAAM1gN,SACtB8B,EAAOjuE,KAAKiuE,KAEdhmC,EAAOjoC,KAAKioC,KAAOunP,EACnBW,EAAYnwR,KAAKytR,WAEf2C,EAAaniN,IAASogF,GAE5B,GAAmB,IAAdmhI,EAEJ,OAAqB,IAAhBW,EAA2BloP,EAEvBmoP,GAAkC,KAAR,EAAZD,GAA0BhkN,EAAWlkC,EAAOA,EAIpE,GAhk6Ce,OAgk6CVgmC,EAAoB,EAEH,IAAhBkiN,IAIJnwR,KAAKytR,WAAa,EAClBztR,KAAKqwR,aAAa,GAAM,GAAM,IAI/BC,EAAa,CAEZ,GAAKroP,GAAQkkC,EAEZlkC,EAAOkkC,MAED,MAAKlkC,EAAO,GAIZ,CAENjoC,KAAKioC,KAAOA,EAEZ,MAAMqoP,CAEP,CARCroP,EAAO,CAQR,CAEKjoC,KAAK+tR,kBAAoB/tR,KAAK8tR,QAAS,EACvC9tR,KAAK6wL,SAAU,EAEpB7wL,KAAKioC,KAAOA,EAEZjoC,KAAK4sR,OAAOruP,cAAe,CAC1B35B,KAAM,WAAYy2C,OAAQr7C,KAC1BquK,UAAWmhH,EAAY,GAAM,EAAI,GAGnC,CAED,KAAO,CAwBN,IAtBqB,IAAhBW,IAICX,GAAa,GAEjBW,EAAY,EAEZnwR,KAAKqwR,aAAa,EAA2B,IAArBrwR,KAAK6tR,YAAmBuC,IAQhDpwR,KAAKqwR,YAAkC,IAArBrwR,KAAK6tR,aAAmB,EAAMuC,IAM7CnoP,GAAQkkC,GAAYlkC,EAAO,EAAI,CAInC,IAAMsoP,EAAYtzR,KAAKwf,MAAOwrB,EAAOkkC,GACrClkC,GAAQkkC,EAAWokN,EAEnBJ,GAAalzR,KAAK4f,IAAK0zQ,GAEvB,IAAM34O,EAAU53C,KAAK6tR,YAAcsC,EAEnC,GAAKv4O,GAAW,EAIV53C,KAAK+tR,kBAAoB/tR,KAAK8tR,QAAS,EACvC9tR,KAAK6wL,SAAU,EAEpB5oJ,EAAOunP,EAAY,EAAIrjN,EAAW,EAElCnsE,KAAKioC,KAAOA,EAEZjoC,KAAK4sR,OAAOruP,cAAe,CAC1B35B,KAAM,WAAYy2C,OAAQr7C,KAC1BquK,UAAWmhH,EAAY,EAAI,GAAM,QAG5B,CAIN,GAAiB,IAAZ53O,EAAgB,CAIpB,IAAM44O,EAAUhB,EAAY,EAC5BxvR,KAAKqwR,YAAaG,GAAWA,EAASJ,EAEvC,MAECpwR,KAAKqwR,aAAa,GAAO,EAAOD,GAIjCpwR,KAAKytR,WAAa0C,EAElBnwR,KAAKioC,KAAOA,EAEZjoC,KAAK4sR,OAAOruP,cAAe,CAC1B35B,KAAM,OAAQy2C,OAAQr7C,KAAMuwR,UAAWA,GAGzC,CAED,MAECvwR,KAAKioC,KAAOA,EAIb,GAAKmoP,GAAkC,KAAR,EAAZD,GAIlB,OAAOhkN,EAAWlkC,CAIpB,CAEA,OAAOA,CAER,GAAC,CAAAzlC,IAAA,cAAA/D,MAED,SAAa+xR,EAASC,EAAOL,GAE5B,IAAMvpB,EAAW7mQ,KAAKktR,qBAEjBkD,GAEJvpB,EAASuB,YAAc15G,GACvBm4G,EAASwB,UAAY35G,KAQpBm4G,EAASuB,YAFLooB,EAEmBxwR,KAAKguR,iBAAmBt/H,GAAkBD,GAI1CE,GAMvBk4G,EAASwB,UAFLooB,EAEiBzwR,KAAKiuR,eAAiBv/H,GAAkBD,GAItCE,GAM1B,GAAC,CAAAnsJ,IAAA,kBAAA/D,MAED,SAAiB0tE,EAAUukN,EAAWC,GAErC,IAAMjE,EAAQ1sR,KAAK4sR,OAAQhtR,EAAM8sR,EAAMzkP,KACnC+9N,EAAchmQ,KAAKwtR,mBAEF,OAAhBxnB,IAEJA,EAAc0mB,EAAM4C,0BACpBtvR,KAAKwtR,mBAAqBxnB,GAI3B,IAAMlC,EAAQkC,EAAYS,mBACzB15P,EAASi5P,EAAYU,aAOtB,OALA5C,EAAO,GAAMlkQ,EACbmN,EAAQ,GAAM2jR,EACd5sB,EAAO,GAAMlkQ,EAAMusE,EACnBp/D,EAAQ,GAAM4jR,EAEP3wR,IAER,KAACysR,CAAA,CAnrBmB,GAurBfqH,GAAmC,IAAIj/H,aAAc,GAGrD+7H,GAAc,SAAAC,GAAA70Q,EAAA40Q,EAAAC,GAAA,IAAA0F,EAAA57Q,EAAAi2Q,GAEnB,SAAAA,EAAa19Q,GAAO,IAAAwkR,EAQE,OARFjtR,EAAA,KAAAmmR,IAEnB8G,EAAAnB,EAAA15R,KAAA,OAEKmuI,MAAQ93H,EACbwkR,EAAK1G,qBACL0G,EAAKzG,WAAa,EAClByG,EAAKzvP,KAAO,EACZyvP,EAAKjtB,UAAY,EAAIitB,CAEtB,CAquBC,OAruBAnuR,EAAAqnR,EAAA,EAAApuR,IAAA,cAAA/D,MAED,SAAa48C,EAAQ61O,GAEpB,IAAMh+Q,EAAOmoC,EAAOyxO,YAAc9sR,KAAKgrI,MACtCxwD,EAASn/B,EAAOwxO,MAAMryM,OACtBuyM,EAAUvyM,EAAO5iF,OACjBkwR,EAAWzsO,EAAO+xO,kBAClBJ,EAAe3xO,EAAO8xO,cACtBgE,EAAWj+Q,EAAK2oG,KAChBu1K,EAAiBpxR,KAAKqxR,uBAEnBC,EAAiBF,EAAgBD,QAEb/mR,IAAnBknR,IAEJA,EAAiB,CAAC,EAClBF,EAAgBD,GAAaG,GAI9B,IAAM,IAAI50R,EAAI,EAAGA,IAAMqwR,IAAYrwR,EAAI,CAEtC,IAAM85B,EAAQgkD,EAAQ99E,GACrBsxQ,EAAYx3O,EAAMr9B,KAEf0rR,EAAUyM,EAAgBtjB,GAE9B,QAAiB5jQ,IAAZy6Q,IAEDA,EAAQqB,eACX4B,EAAUprR,GAAMmoR,MAEV,CAIN,QAAiBz6Q,KAFjBy6Q,EAAUiD,EAAUprR,IAES,CAIC,OAAxBmoR,EAAQwI,gBAETxI,EAAQqB,eACXlmR,KAAKuxR,oBAAqB1M,EAASsM,EAAUnjB,IAI9C,QAED,CAEA,IAAM92K,EAAOg6L,GAAmBA,EAC/B9D,kBAAmB1wR,GAAImoR,QAAQ1tL,cAEhC0tL,EAAU,IAAID,GACb2C,GAAgBxrQ,OAAQ7I,EAAM86P,EAAW92K,GACzC1gE,EAAM+uO,cAAe/uO,EAAMouO,iBAEjBshB,eACXlmR,KAAKuxR,oBAAqB1M,EAASsM,EAAUnjB,GAE7C8Z,EAAUprR,GAAMmoR,CAEjB,CAEAmI,EAActwR,GAAIwpQ,aAAe2e,EAAQ1qH,MAE1C,CAED,GAAC,CAAA33J,IAAA,kBAAA/D,MAED,SAAiB48C,GAEhB,IAAOr7C,KAAKsuR,gBAAiBjzO,GAAW,CAEvC,GAA4B,OAAvBA,EAAOgyO,YAAuB,CAKlC,IAAM8D,GAAa91O,EAAOyxO,YAAc9sR,KAAKgrI,OAAQnvB,KACpD21K,EAAWn2O,EAAOwxO,MAAMhxK,KACxB41K,EAAiBzxR,KAAK0xR,eAAgBF,GAEvCxxR,KAAK2xR,YAAat2O,EACjBo2O,GAAkBA,EAAeG,aAAc,IAEhD5xR,KAAK6xR,mBAAoBx2O,EAAQm2O,EAAUL,EAE5C,CAKA,IAHA,IAAMrJ,EAAWzsO,EAAO+xO,kBAGd1wR,EAAI,EAAGqK,EAAI+gR,EAASlwR,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAErD,IAAMmoR,EAAUiD,EAAUprR,GAEG,IAAxBmoR,EAAQoB,aAEZjmR,KAAK8xR,aAAcjN,GACnBA,EAAQkN,oBAIV,CAEA/xR,KAAKgyR,YAAa32O,EAEnB,CAED,GAAC,CAAA74C,IAAA,oBAAA/D,MAED,SAAmB48C,GAElB,GAAKr7C,KAAKsuR,gBAAiBjzO,GAAW,CAKrC,IAHA,IAAMysO,EAAWzsO,EAAO+xO,kBAGd1wR,EAAI,EAAGqK,EAAI+gR,EAASlwR,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAErD,IAAMmoR,EAAUiD,EAAUprR,GAEG,MAArBmoR,EAAQoB,WAEfpB,EAAQoN,uBACRjyR,KAAKkyR,iBAAkBrN,GAIzB,CAEA7kR,KAAKmyR,gBAAiB92O,EAEvB,CAED,GAEA,CAAA74C,IAAA,qBAAA/D,MAEA,WAECuB,KAAKoyR,SAAW,GAChBpyR,KAAKqyR,gBAAkB,EAEvBryR,KAAK0xR,eAAiB,CAAC,EAQvB1xR,KAAK0nR,UAAY,GACjB1nR,KAAKsyR,iBAAmB,EAExBtyR,KAAKqxR,uBAAyB,CAAC,EAG/BrxR,KAAKuyR,qBAAuB,GAC5BvyR,KAAKwyR,4BAA8B,EAEnC,IAAMxlG,EAAQhtL,KAEdA,KAAKqrR,MAAQ,CAEZoH,QAAS,CACR,SAAI7hJ,GAEH,OAAOo8C,EAAMolG,SAASx6R,MAEvB,EACA,SAAI0zR,GAEH,OAAOt+F,EAAMqlG,eAEd,GAEDvK,SAAU,CACT,SAAIl3I,GAEH,OAAOo8C,EAAM06F,UAAU9vR,MAExB,EACA,SAAI0zR,GAEH,OAAOt+F,EAAMslG,gBAEd,GAEDI,oBAAqB,CACpB,SAAI9hJ,GAEH,OAAOo8C,EAAMulG,qBAAqB36R,MAEnC,EACA,SAAI0zR,GAEH,OAAOt+F,EAAMwlG,2BAEd,GAKH,GAEA,CAAAhwR,IAAA,kBAAA/D,MAEA,SAAiB48C,GAEhB,IAAMzsC,EAAQysC,EAAOgyO,YACrB,OAAiB,OAAVz+Q,GAAkBA,EAAQ5O,KAAKqyR,eAEvC,GAAC,CAAA7vR,IAAA,qBAAA/D,MAED,SAAoB48C,EAAQm2O,EAAUL,GAErC,IAAMsB,EAAUzyR,KAAKoyR,SACpBO,EAAgB3yR,KAAK0xR,eAElBD,EAAiBkB,EAAenB,GAEpC,QAAwBpnR,IAAnBqnR,EAEJA,EAAiB,CAEhBG,aAAc,CAAEv2O,GAChBu3O,aAAc,CAAC,GAIhBv3O,EAAOiyO,kBAAoB,EAE3BqF,EAAenB,GAAaC,MAEtB,CAEN,IAAMG,EAAeH,EAAeG,aAEpCv2O,EAAOiyO,kBAAoBsE,EAAah6R,OACxCg6R,EAAa90R,KAAMu+C,EAEpB,CAEAA,EAAOgyO,YAAcoF,EAAQ76R,OAC7B66R,EAAQ31R,KAAMu+C,GAEdo2O,EAAemB,aAAczB,GAAa91O,CAE3C,GAAC,CAAA74C,IAAA,wBAAA/D,MAED,SAAuB48C,GAEtB,IAAMo3O,EAAUzyR,KAAKoyR,SACpBS,EAAqBJ,EAASA,EAAQ76R,OAAS,GAC/Ck7R,EAAaz3O,EAAOgyO,YAErBwF,EAAmBxF,YAAcyF,EACjCL,EAASK,GAAeD,EACxBJ,EAAQzhO,MAER3V,EAAOgyO,YAAc,KAGrB,IAAMmE,EAAWn2O,EAAOwxO,MAAMhxK,KAC7B82K,EAAgB3yR,KAAK0xR,eACrBD,EAAiBkB,EAAenB,GAChCuB,EAAsBtB,EAAeG,aAErCoB,EACCD,EAAqBA,EAAoBn7R,OAAS,GAEnDq7R,EAAmB53O,EAAOiyO,kBAE3B0F,EAAgB1F,kBAAoB2F,EACpCF,EAAqBE,GAAqBD,EAC1CD,EAAoB/hO,MAEpB3V,EAAOiyO,kBAAoB,YAGNmE,EAAemB,cACtBv3O,EAAOyxO,YAAc9sR,KAAKgrI,OAAQnvB,MAIZ,IAA/Bk3K,EAAoBn7R,eAEjB+6R,EAAenB,GAIvBxxR,KAAKkzR,iCAAkC73O,EAExC,GAAC,CAAA74C,IAAA,mCAAA/D,MAED,SAAkC48C,GAIjC,IAFA,IAAMysO,EAAWzsO,EAAO+xO,kBAEd1wR,EAAI,EAAGqK,EAAI+gR,EAASlwR,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAErD,IAAMmoR,EAAUiD,EAAUprR,GAES,MAA3BmoR,EAAQqB,gBAEflmR,KAAKmzR,uBAAwBtO,EAI/B,CAED,GAAC,CAAAriR,IAAA,cAAA/D,MAED,SAAa48C,GAQZ,IAAMo3O,EAAUzyR,KAAKoyR,SACpBgB,EAAY/3O,EAAOgyO,YAEnBgG,EAAkBrzR,KAAKqyR,kBAEvBiB,EAAsBb,EAASY,GAEhCh4O,EAAOgyO,YAAcgG,EACrBZ,EAASY,GAAoBh4O,EAE7Bi4O,EAAoBjG,YAAc+F,EAClCX,EAASW,GAAcE,CAExB,GAAC,CAAA9wR,IAAA,kBAAA/D,MAED,SAAiB48C,GAQhB,IAAMo3O,EAAUzyR,KAAKoyR,SACpBgB,EAAY/3O,EAAOgyO,YAEnBkG,IAAwBvzR,KAAKqyR,gBAE7BmB,EAAmBf,EAASc,GAE7Bl4O,EAAOgyO,YAAckG,EACrBd,EAASc,GAAuBl4O,EAEhCm4O,EAAiBnG,YAAc+F,EAC/BX,EAASW,GAAcI,CAExB,GAEA,CAAAhxR,IAAA,sBAAA/D,MAEA,SAAqBomR,EAASsM,EAAUnjB,GAEvC,IAAMojB,EAAiBpxR,KAAKqxR,uBAC3BvJ,EAAW9nR,KAAK0nR,UAEb+L,EAAgBrC,EAAgBD,QAEb/mR,IAAlBqpR,IAEJA,EAAgB,CAAC,EACjBrC,EAAgBD,GAAasC,GAI9BA,EAAezlB,GAAc6W,EAE7BA,EAAQwI,YAAcvF,EAASlwR,OAC/BkwR,EAAShrR,KAAM+nR,EAEhB,GAAC,CAAAriR,IAAA,yBAAA/D,MAED,SAAwBomR,GAEvB,IAAMiD,EAAW9nR,KAAK0nR,UACrBgM,EAAc7O,EAAQA,QACtBsM,EAAWuC,EAAYlqN,SAASqyC,KAChCmyJ,EAAY0lB,EAAYx8L,KACxBk6L,EAAiBpxR,KAAKqxR,uBACtBoC,EAAgBrC,EAAgBD,GAEhCwC,EAAsB7L,EAAUA,EAASlwR,OAAS,GAClDk7R,EAAajO,EAAQwI,YAEtBsG,EAAoBtG,YAAcyF,EAClChL,EAAUgL,GAAea,EACzB7L,EAAS92N,aAEFyiO,EAAezlB,GAEuB,IAAxCzvQ,OAAOqD,KAAM6xR,GAAgB77R,eAE1Bw5R,EAAgBD,EAIzB,GAAC,CAAA3uR,IAAA,eAAA/D,MAED,SAAcomR,GAEb,IAAMiD,EAAW9nR,KAAK0nR,UACrB0L,EAAYvO,EAAQwI,YAEpBgG,EAAkBrzR,KAAKsyR,mBAEvBsB,EAAuB9L,EAAUuL,GAElCxO,EAAQwI,YAAcgG,EACtBvL,EAAUuL,GAAoBxO,EAE9B+O,EAAqBvG,YAAc+F,EACnCtL,EAAUsL,GAAcQ,CAEzB,GAAC,CAAApxR,IAAA,mBAAA/D,MAED,SAAkBomR,GAEjB,IAAMiD,EAAW9nR,KAAK0nR,UACrB0L,EAAYvO,EAAQwI,YAEpBkG,IAAwBvzR,KAAKsyR,iBAE7BuB,EAAoB/L,EAAUyL,GAE/B1O,EAAQwI,YAAckG,EACtBzL,EAAUyL,GAAuB1O,EAEjCgP,EAAkBxG,YAAc+F,EAChCtL,EAAUsL,GAAcS,CAEzB,GAGA,CAAArxR,IAAA,0BAAA/D,MAEA,WAEC,IAAMuuR,EAAehtR,KAAKuyR,qBACzBc,EAAkBrzR,KAAKwyR,8BAEpBxsB,EAAcgnB,EAAcqG,GAahC,YAXqBjpR,IAAhB47P,KAEJA,EAAc,IAAIoD,GACjB,IAAIv0G,aAAc,GAAK,IAAIA,aAAc,GACzC,EAAGi/H,KAEQC,aAAeV,EAC3BrG,EAAcqG,GAAoBrtB,GAI5BA,CAER,GAAC,CAAAxjQ,IAAA,8BAAA/D,MAED,SAA6BunQ,GAE5B,IAAMgnB,EAAehtR,KAAKuyR,qBACzBa,EAAYptB,EAAY+tB,aAExBR,IAAwBvzR,KAAKwyR,4BAE7BwB,EAAwBhH,EAAcuG,GAEvCvtB,EAAY+tB,aAAeR,EAC3BvG,EAAcuG,GAAuBvtB,EAErCguB,EAAsBD,aAAeX,EACrCpG,EAAcoG,GAAcY,CAE7B,GAIA,CAAAxxR,IAAA,aAAA/D,MACA,SAAYimQ,EAAMuvB,EAAc1tB,GAE/B,IAAMrzP,EAAO+gR,GAAgBj0R,KAAKgrI,MACjCmmJ,EAAWj+Q,EAAK2oG,KAEbq4K,EAA6B,kBAATxvB,EAAoBqI,GAAconB,WAAYjhR,EAAMwxP,GAASA,EAE/E8sB,EAA0B,OAAf0C,EAAsBA,EAAWr4K,KAAO6oJ,EAEnD+sB,EAAiBzxR,KAAK0xR,eAAgBF,GACxCN,EAAkB,KAgBtB,QAdmB9mR,IAAdm8P,IAIHA,EAFmB,OAAf2tB,EAEQA,EAAW3tB,UAIX33G,SAMUxkJ,IAAnBqnR,EAA+B,CAEnC,IAAM2C,EAAiB3C,EAAemB,aAAczB,GAEpD,QAAwB/mR,IAAnBgqR,GAAgCA,EAAe7tB,YAAcA,EAEjE,OAAO6tB,EAMRlD,EAAkBO,EAAeG,aAAc,GAG3B,OAAfsC,IACJA,EAAahD,EAAgBrE,MAE/B,CAGA,GAAoB,OAAfqH,EAAsB,OAAO,KAGlC,IAAMG,EAAY,IAAI5H,GAAiBzsR,KAAMk0R,EAAYD,EAAc1tB,GAOvE,OALAvmQ,KAAK2xR,YAAa0C,EAAWnD,GAG7BlxR,KAAK6xR,mBAAoBwC,EAAW7C,EAAUL,GAEvCkD,CAER,GAEA,CAAA7xR,IAAA,iBAAA/D,MACA,SAAgBimQ,EAAMuvB,GAErB,IAAM/gR,EAAO+gR,GAAgBj0R,KAAKgrI,MACjCmmJ,EAAWj+Q,EAAK2oG,KAEhBq4K,EAA6B,kBAATxvB,EACnBqI,GAAconB,WAAYjhR,EAAMwxP,GAASA,EAE1C8sB,EAAW0C,EAAaA,EAAWr4K,KAAO6oJ,EAE1C+sB,EAAiBzxR,KAAK0xR,eAAgBF,GAEvC,YAAwBpnR,IAAnBqnR,GAEGA,EAAemB,aAAczB,IAI9B,IAER,GAEA,CAAA3uR,IAAA,gBAAA/D,MACA,WAKC,IAHA,IAAMg0R,EAAUzyR,KAAKoyR,SAGX11R,EAFEsD,KAAKqyR,gBAEQ,EAAG31R,GAAK,IAAMA,EAEtC+1R,EAAS/1R,GAAI+xE,OAId,OAAOzuE,IAER,GAEA,CAAAwC,IAAA,SAAA/D,MACA,SAAQ+wR,GAEPA,GAAaxvR,KAAKyqQ,UAYlB,IAVA,IAAMgoB,EAAUzyR,KAAKoyR,SACpBkC,EAAWt0R,KAAKqyR,gBAEhBpqP,EAAOjoC,KAAKioC,MAAQunP,EACpBC,EAAgBxyR,KAAKmzK,KAAMo/G,GAE3BrJ,EAAYnmR,KAAKixR,YAAc,EAItBv0R,EAAI,EAAGA,IAAM43R,IAAa53R,EAAI,CAExB+1R,EAAS/1R,GAEjB63R,QAAStsP,EAAMunP,EAAWC,EAAetJ,EAEjD,CAOA,IAHA,IAAM2B,EAAW9nR,KAAK0nR,UACrBgE,EAAY1rR,KAAKsyR,iBAER51R,EAAI,EAAGA,IAAMgvR,IAAchvR,EAEpCorR,EAAUprR,GAAIoD,MAAOqmR,GAItB,OAAOnmR,IAER,GAEA,CAAAwC,IAAA,UAAA/D,MACA,SAAS+1R,GAERx0R,KAAKioC,KAAO,EACZ,IAAM,IAAIvrC,EAAI,EAAGA,EAAIsD,KAAKoyR,SAASx6R,OAAQ8E,IAE1CsD,KAAKoyR,SAAU11R,GAAIurC,KAAO,EAI3B,OAAOjoC,KAAKsjK,OAAQkxH,EAErB,GAEA,CAAAhyR,IAAA,UAAA/D,MACA,WAEC,OAAOuB,KAAKgrI,KAEb,GAEA,CAAAxoI,IAAA,cAAA/D,MACA,SAAaimQ,GAEZ,IAAM+tB,EAAUzyR,KAAKoyR,SACpBZ,EAAW9sB,EAAK7oJ,KAChB82K,EAAgB3yR,KAAK0xR,eACrBD,EAAiBkB,EAAenB,GAEjC,QAAwBpnR,IAAnBqnR,EAA+B,CAQnC,IAFA,IAAMgD,EAAkBhD,EAAeG,aAE7Bl1R,EAAI,EAAGqK,EAAI0tR,EAAgB78R,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAE5D,IAAM2+C,EAASo5O,EAAiB/3R,GAEhCsD,KAAKmuR,kBAAmB9yO,GAExB,IAAMy3O,EAAaz3O,EAAOgyO,YACzBwF,EAAqBJ,EAASA,EAAQ76R,OAAS,GAEhDyjD,EAAOgyO,YAAc,KACrBhyO,EAAOiyO,kBAAoB,KAE3BuF,EAAmBxF,YAAcyF,EACjCL,EAASK,GAAeD,EACxBJ,EAAQzhO,MAERhxD,KAAKkzR,iCAAkC73O,EAExC,QAEOs3O,EAAenB,EAEvB,CAED,GAEA,CAAAhvR,IAAA,cAAA/D,MACA,SAAayU,GAEZ,IAAMi+Q,EAAWj+Q,EAAK2oG,KACrB82K,EAAgB3yR,KAAK0xR,eAEtB,IAAM,IAAMF,KAAYmB,EAAgB,CAEvC,IACCt3O,EADoBs3O,EAAenB,GAAWoB,aACvBzB,QAER/mR,IAAXixC,IAEJr7C,KAAKmuR,kBAAmB9yO,GACxBr7C,KAAK00R,sBAAuBr5O,GAI9B,CAEA,IACCo4O,EADsBzzR,KAAKqxR,uBACKF,GAEjC,QAAuB/mR,IAAlBqpR,EAEJ,IAAM,IAAMzlB,KAAaylB,EAAgB,CAExC,IAAM5O,EAAU4O,EAAezlB,GAC/B6W,EAAQoN,uBACRjyR,KAAKmzR,uBAAwBtO,EAE9B,CAIF,GAEA,CAAAriR,IAAA,gBAAA/D,MACA,SAAeimQ,EAAMuvB,GAEpB,IAAM54O,EAASr7C,KAAKo0R,eAAgB1vB,EAAMuvB,GAE1B,OAAX54O,IAEJr7C,KAAKmuR,kBAAmB9yO,GACxBr7C,KAAK00R,sBAAuBr5O,GAI9B,KAACu1O,CAAA,CAjvBkB,CAASt/H,IAm8BvB2jI,GAAS,WAEd,SAAAA,EAAa78L,EAAQi2E,GAAsC,IAA3BwF,EAAI5zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG6zK,EAAG7zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGkpD,IAAQ1+C,EAAA,KAAAwqR,GAEvDj1R,KAAKsuK,IAAM,IAAIF,GAAKh2E,EAAQi2E,GAG5BruK,KAAK6zK,KAAOA,EACZ7zK,KAAK8zK,IAAMA,EACX9zK,KAAK4nK,OAAS,KACd5nK,KAAK20K,OAAS,IAAIF,GAElBz0K,KAAKk6D,OAAS,CACbgxH,KAAM,CAAC,EACPkzD,KAAM,CAAEK,UAAW,GACnBzE,IAAK,CAAC,EACNkG,OAAQ,CAAEzB,UAAW,GACrBrF,OAAQ,CAAC,EAGX,CAsDC,OAtDA7vO,EAAA0rR,EAAA,EAAAzyR,IAAA,MAAA/D,MAED,SAAK25F,EAAQi2E,GAIZruK,KAAKsuK,IAAIr/I,IAAKmpE,EAAQi2E,EAEvB,GAAC,CAAA7rK,IAAA,gBAAA/D,MAED,SAAey2R,EAAQttH,GAEjBA,EAAOqpB,qBAEXjxL,KAAKsuK,IAAIl2E,OAAOw+E,sBAAuBhP,EAAOK,aAC9CjoK,KAAKsuK,IAAID,UAAUp/I,IAAKimQ,EAAOh5R,EAAGg5R,EAAO7tR,EAAG,IAAM8tR,UAAWvtH,GAASkB,IAAK9oK,KAAKsuK,IAAIl2E,QAASyoB,YAC7F7gH,KAAK4nK,OAASA,GAEHA,EAAOumC,sBAElBnuM,KAAKsuK,IAAIl2E,OAAOnpE,IAAKimQ,EAAOh5R,EAAGg5R,EAAO7tR,GAAKugK,EAAOiM,KAAOjM,EAAOkM,MAAUlM,EAAOiM,KAAOjM,EAAOkM,MAAQqhH,UAAWvtH,GAClH5nK,KAAKsuK,IAAID,UAAUp/I,IAAK,EAAG,GAAK,GAAIyhJ,mBAAoB9I,EAAOK,aAC/DjoK,KAAK4nK,OAASA,GAId7zJ,QAAQwN,MAAO,6CAA+CqmJ,EAAOhjK,KAIvE,GAAC,CAAApC,IAAA,kBAAA/D,MAED,SAAiB0D,GAA4C,IAAlBwpL,EAAU1rL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAMvD,OAJAm1R,GAAiBjzR,EAAQnC,KAAM2rL,IAFE1rL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,IAIjC0rL,EAAWnyF,KAAM67L,IAEV1pG,CAER,GAAC,CAAAnpL,IAAA,mBAAA/D,MAED,SAAkBimM,GAEjB,IAF8D,IAApC1rB,IAAS/4K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GAAS0rL,EAAU1rL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAE/CvD,EAAI,EAAGmK,EAAI69L,EAAQ9sM,OAAQ8E,EAAImK,EAAGnK,IAE3C04R,GAAiB1wF,EAAShoM,GAAKsD,KAAM2rL,EAAY3S,GAMlD,OAFA2S,EAAWnyF,KAAM67L,IAEV1pG,CAER,KAACspG,CAAA,CA1Ea,GA8Ef,SAASI,GAASr5R,EAAGuK,GAEpB,OAAOvK,EAAE06K,SAAWnwK,EAAEmwK,QAEvB,CAEA,SAAS0+G,GAAiBjzR,EAAQupL,EAAWC,EAAY3S,GAQxD,GANK72K,EAAOwyK,OAAOz8K,KAAMwzL,EAAU/W,SAElCxyK,EAAOo4O,QAAS7uD,EAAWC,IAIT,IAAd3S,EAIJ,IAFA,IAAMp7J,EAAWzb,EAAOyb,SAEdlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5C04R,GAAiBx3Q,EAAUlhB,GAAKgvL,EAAWC,GAAY,EAM1D,CAEA,IAOM2pG,GAAS,WAEd,SAAAA,IAA8C,IAAjCpsH,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGkpK,EAAGlpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGw5J,EAAKx5J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAMzC,OAN0CwK,EAAA,KAAA6qR,GAE1Ct1R,KAAKkpK,OAASA,EACdlpK,KAAKmpK,IAAMA,EACXnpK,KAAKy5J,MAAQA,EAENz5J,IAER,CA8DC,OA9DAuJ,EAAA+rR,EAAA,EAAA9yR,IAAA,MAAA/D,MAED,SAAKyqK,EAAQC,EAAK1P,GAMjB,OAJAz5J,KAAKkpK,OAASA,EACdlpK,KAAKmpK,IAAMA,EACXnpK,KAAKy5J,MAAQA,EAENz5J,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM82R,GAML,OAJAv1R,KAAKkpK,OAASqsH,EAAMrsH,OACpBlpK,KAAKmpK,IAAMosH,EAAMpsH,IACjBnpK,KAAKy5J,MAAQ87H,EAAM97H,MAEZz5J,IAER,GAEA,CAAAwC,IAAA,WAAA/D,MACA,WAEC,IAAM+2R,EAAM,KAGZ,OAFAx1R,KAAKmpK,IAAMlsK,KAAKC,IAAKs4R,EAAKv4R,KAAKiuC,IAAKjuC,KAAK00J,GAAK6jI,EAAKx1R,KAAKmpK,MAEjDnpK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB0I,GAEf,OAAOnH,KAAKy1R,uBAAwBtuR,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,EAEjD,GAAC,CAAA9E,IAAA,yBAAA/D,MAED,SAAwBvC,EAAGmL,EAAGC,GAgB7B,OAdAtH,KAAKkpK,OAASjsK,KAAK04J,KAAMz5J,EAAIA,EAAImL,EAAIA,EAAIC,EAAIA,GAExB,IAAhBtH,KAAKkpK,QAETlpK,KAAKy5J,MAAQ,EACbz5J,KAAKmpK,IAAM,IAIXnpK,KAAKy5J,MAAQx8J,KAAK44J,MAAO35J,EAAGoL,GAC5BtH,KAAKmpK,IAAMlsK,KAAK4iK,KAAM3N,GAAO7qJ,EAAIrH,KAAKkpK,QAAU,EAAG,KAI7ClpK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACs1R,CAAA,CAxEa,GAowCf,IAipBM+wF,GAAwBC,KAE9B,SAASA,KAWR,IAPA,IAAMnsN,EAAS,IAAIxnG,YAAa,GAC1B4zT,EAAY,IAAI1xN,aAAcsF,GAC9BqsN,EAAa,IAAIj/Q,YAAa4yD,GAE9BssN,EAAY,IAAIl/Q,YAAa,KAC7Bm/Q,EAAa,IAAIn/Q,YAAa,KAE1B7qG,EAAI,EAAGA,EAAI,MAAQA,EAAI,CAEhC,IAAM4J,EAAI5J,EAAI,IAIT4J,GAAM,IAEVmgX,EAAW/pX,GAAM,EACjB+pX,EAAe,IAAJ/pX,GAAc,MACzBgqX,EAAYhqX,GAAM,GAClBgqX,EAAgB,IAAJhqX,GAAc,IAIf4J,GAAM,IAEjBmgX,EAAW/pX,GAAM,OAAc4J,EAAI,GACnCmgX,EAAe,IAAJ/pX,GAAgB,OAAc4J,EAAI,GAAS,MACtDogX,EAAYhqX,IAAQ4J,EAAI,EACxBogX,EAAgB,IAAJhqX,IAAgB4J,EAAI,GAIrBA,GAAK,IAEhBmgX,EAAW/pX,GAAQ4J,EAAI,IAAQ,GAC/BmgX,EAAe,IAAJ/pX,GAAkB4J,EAAI,IAAQ,GAAO,MAChDogX,EAAYhqX,GAAM,GAClBgqX,EAAgB,IAAJhqX,GAAc,IAIf4J,EAAI,KAEfmgX,EAAW/pX,GAAM,MACjB+pX,EAAe,IAAJ/pX,GAAc,MACzBgqX,EAAYhqX,GAAM,GAClBgqX,EAAgB,IAAJhqX,GAAc,KAM1B+pX,EAAW/pX,GAAM,MACjB+pX,EAAe,IAAJ/pX,GAAc,MACzBgqX,EAAYhqX,GAAM,GAClBgqX,EAAgB,IAAJhqX,GAAc,GAI5B,CAQA,IAJA,IAAMiqX,EAAgB,IAAIp/Q,YAAa,MACjCq/Q,EAAgB,IAAIr/Q,YAAa,IACjCs/Q,EAAc,IAAIt/Q,YAAa,IAE3B7qG,EAAI,EAAGA,EAAI,OAASA,EAAI,CAMjC,IAJA,IAAIoK,EAAIpK,GAAK,GACT4J,EAAI,EAGuB,KAAjB,QAAJQ,IAETA,IAAM,EACNR,GAAK,QAINQ,IAAK,QACLR,GAAK,UAELqgX,EAAejqX,GAAMoK,EAAIR,CAE1B,CAEA,IAAM,IAAI5J,EAAI,KAAMA,EAAI,OAASA,EAEhCiqX,EAAejqX,GAAM,WAAiBA,EAAI,MAAU,IAIrD,IAAM,IAAIA,EAAI,EAAGA,EAAI,KAAOA,EAE3BkqX,EAAelqX,GAAMA,GAAK,GAI3BkqX,EAAe,IAAO,WACtBA,EAAe,IAAO,WAEtB,IAAM,IAAIlqX,EAAI,GAAIA,EAAI,KAAOA,EAE5BkqX,EAAelqX,GAAM,YAAiBA,EAAI,IAAQ,IAInDkqX,EAAe,IAAO,WAEtB,IAAM,IAAIlqX,EAAI,EAAGA,EAAI,KAAOA,EAEhB,KAANA,IAEJmqX,EAAanqX,GAAM,MAMrB,MAAO,CACN6pX,UAAWA,EACXC,WAAYA,EACZC,UAAWA,EACXC,WAAYA,EACZC,cAAeA,EACfC,cAAeA,EACfC,YAAaA,EAGf,CA2BA,IAAInoF,GAAyBngS,OAAOkjB,OAAO,CAC1C/G,UAAW,KACXosW,YAzBD,SAAsB1lX,GAEhBnE,KAAK4f,IAAKzb,GAAQ,OAAQ2S,QAAQk/C,KAAM,sDAE7C7xD,EAAM8wJ,GAAO9wJ,GAAO,MAAO,OAE3BilX,GAAQE,UAAW,GAAMnlX,EACzB,IAAMqF,EAAI4/W,GAAQG,WAAY,GACxBlgX,EAAMG,GAAK,GAAO,IACxB,OAAO4/W,GAAQI,UAAWngX,KAAc,QAAJG,IAAoB4/W,GAAQK,WAAYpgX,GAE7E,EAeCygX,cAXD,SAAwB3lX,GAEvB,IAAM0F,EAAI1F,GAAO,GAEjB,OADAilX,GAAQG,WAAY,GAAMH,GAAQM,cAAeN,GAAQQ,YAAa//W,IAAc,KAAN1F,IAAkBilX,GAAQO,cAAe9/W,GAChHu/W,GAAQE,UAAW,EAE3B,IAgTmC,qBAAvBvvI,oBAEXA,mBAAmBz4M,cAAe,IAAI43E,YAAa,WAAY,CAAE30E,OAAQ,CACxE2rQ,SAAUnnJ,OAKW,qBAAX3iJ,SAENA,OAAO+pS,UAEXr5R,QAAQk/C,KAAM,2DAId5vD,OAAO+pS,UAAYpnJ,IChzhDrB,UACMr1E,GAAkCttE,OAK3B2jX,GACXr2S,GAAOs2S,kBAAAA,IACNt2S,GAAOu2S,UAA0Bv2S,GAAOu2S,SAASC,eAClD,uBAAwBC,SAASxqX,WACjC,YAAayqX,cAAczqX,UAkBvB0qX,GAAoBxmX,SAEpBymX,GAAc,IAAIxmU,QASXymU,GAAAA,WAOXrtW,SAAAA,EACEmwF,EACAxU,EACA2xR,GAEA,GAFAA,EAAAA,KAAAA,GARFznX,KAAe0nX,cAAAA,EAUTD,IAAcH,GAChB,MAAUxpX,MACR,qEAGJkC,KAAKsqG,QAAUA,EACftqG,KAAK2nX,EAAW7xR,CACjB,CA4BA,OAxBG8W,EAAAA,EAAAA,CAAAA,CAAAA,IAAAA,aAAAA,IAAAA,WAGF,IAAIA,EAAa5sG,KAAK4nX,EAChB9xR,EAAU91F,KAAK2nX,EACrB,GAAIX,SAAAA,IAA+Bp6Q,EAA0B,CAC3D,IAAMi7Q,OAAAA,IAAY/xR,GAA4C,IAAnBA,EAAQl+F,OAC/CiwX,IACFj7Q,EAAa26Q,GAAYx3V,IAAI+lE,SAAAA,IAE3B8W,KACD5sG,KAAK4nX,EAAch7Q,EAAa,IAAIy6Q,eAAiBS,YACpD9nX,KAAKsqG,SAEHu9Q,GACFN,GAAYt4V,IAAI6mE,EAAS8W,GAG9B,CACD,OAAOA,CACR,GAEDnsG,CAAAA,IAAAA,WAAAA,MAAAA,WACE,OAAOT,KAAKsqG,OACb,OA/CUk9Q,GAwJAO,GACXf,GAEKvrX,SAAAA,GAAAA,OAAyBA,CAAAA,EACzBA,SAAAA,GAAAA,OACCA,aAAa4rX,cAbYp+Q,SAAAA,GAC/B,IACyBoB,EADrBC,EAAU,GACd,IAAmBrB,EAAMoB,UAAAA,IAAzB,IAAK,EAAL,sBACEC,GADSH,EAAAA,MACOG,OAElB,WAAA5lC,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,QArEwBjmE,SAAAA,GAAAA,OACxB,IAAK+oX,GACc,iBAAV/oX,EAAqBA,EAAeA,EAAPV,QAAAA,EAEpCupX,GAAAA,CAiEKU,CAAU19Q,EAAQ,CALMrB,CAa4BxtG,GAAKA,CAAAA,ECzK5Dk1E,GAAkCttE,OAiBlC4kX,GAAgBt3S,GACnBs3S,aAMGC,GAAiCD,GAClCA,GAAaE,YACd,GAEEC,GAEFz3S,GAAO03S,+BA8PEC,GAA8C,CACzDC,YAAAA,SAAY9pX,EAAgBmG,GAC1B,OAAQA,GACN,KAAKsW,QACHzc,EAAQA,EAAQypX,GAAiC,KACjD,MACF,KAAK3pX,OACL,KAAK5B,MAGH8B,EAAiB,MAATA,EAAgBA,EAAQsvD,KAAKC,UAAUvvD,GAGnD,OAAOA,CACR,EAED4nS,cAAAA,SAAc5nS,EAAsBmG,GAClC,IAAI4jX,EAAqB/pX,EACzB,OAAQmG,GACN,KAAKsW,QACHstW,EAAsB,OAAV/pX,EACZ,MACF,KAAK4Y,OACHmxW,EAAsB,OAAV/pX,EAAiB,KAAO4Y,OAAO5Y,GAC3C,MACF,KAAKF,OACL,KAAK5B,MAIH,IAEE6rX,EAAYz6T,KAAK4yC,MAAMliG,EACxB,CAAC,MAAO6H,GACPkiX,EAAY,IACb,EAGL,OAAOA,CACR,GAWUC,GAAuB,SAAChqX,EAAgB0tT,GAAAA,OAE5CA,IAAQ1tT,IAAU0tT,GAAQA,GAAO1tT,GAAUA,EAAAA,EAG9CiqX,GAAkD,CACtDxyN,WAAW,EACXtxJ,KAAM7G,OACN4qX,UAAWL,GACXM,SAAS,EACTC,WAAYJ,IASRK,GAAY,YAeIC,GAAAA,SAAAA,GAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EAAAA,EAAAA,GA+gBpB5uW,SAAAA,IAAAA,IAAAA,EAGC,OAHDA,EAAAA,KAAAA,IACE6uW,EAAAA,EAAAA,KAAAA,OA3CMhpX,KAAwC,IAAIm9B,IAUpDn9B,EAAeipX,iBAAAA,EAOfjpX,EAAUkpX,YAAAA,EAkBFlpX,EAAoBmpX,KAAuB,KASjDnpX,EAAKopX,OACN,EAMOA,OA1bRxpR,EAAAA,EAAAA,CAAAA,CAAAA,IAAAA,OAAAA,MA0bQwpR,WAAAA,IAAAA,EAAAA,EAAAA,KACNppX,KAAKqpX,KAAkB,IAAI/4U,SACxBqkB,SAAAA,GAAAA,OAAS30D,EAAKspX,eAAiB30T,CAAAA,IAElC30D,KAAKupX,KAAsB,IAAIpsV,IAC/Bn9B,KAAKwpX,OAGLxpX,KAAKypX,gBACqD,QAA1Dz4S,EAAChxE,KAAKma,YAAuCuvW,SAAAA,IAAa,KAAEnnX,SAAS7F,SAAAA,GAAAA,OACnEA,EAAEsD,EAAAA,GAEL,GAWD2pX,CAAAA,IAAAA,gBAAAA,MAAAA,SAAc7iJ,GAAAA,IAAAA,EAAAA,GACO,QAAnB91J,EAAChxE,KAAK4pX,YAAAA,IAAa,IAAlB5pX,KAAK4pX,KAAkB,IAAI9sX,KAAKgqO,QAAAA,IAK7B9mO,KAAK6pX,YAA4B7pX,KAAK8pX,cAChB,QAAxBtxO,EAAAA,EAAWuxO,qBAAAA,IAAa,aAE3B,GAMDC,CAAAA,IAAAA,mBAAAA,MAAAA,SAAiBljJ,GAAAA,IAAAA,EAAAA,QAGf91J,EAAAA,KAAK44S,YAAAA,IAAAA,GAAAA,EAAe/7T,OAAO7tD,KAAK4pX,KAAcp9W,QAAQs6N,KAAgB,EAAG,EAC1E,GAcO0iJ,CAAAA,IAAAA,OAAAA,MAAAA,WAAAA,IAAAA,EAAAA,KAGLxpX,KAAKma,YAAuC8vW,kBAAkB1nX,SAC7D,SAAC2nX,EAAIljX,GACChH,EAAKnC,eAAemJ,KACtBhH,EAAKmqX,KAAsBl7V,IAAIjoB,EAAGhH,EAAKgH,WAChChH,EAAKgH,GACb,GAGN,GAWSojX,CAAAA,IAAAA,mBAAAA,MAAAA,WAAAA,IAAAA,EACFP,EAEJ,QADA74S,EAAAA,KAAK5I,kBAAAA,IACL9wE,EAAAA,EAAA0I,KAAKqqX,aACFrqX,KAAKma,YAAuCmwW,mBAMjD,OD11BuB,SACzBT,EACAv9W,GAEI06W,GACD6C,EAA0BU,mBAAqBj+W,EAAO/P,KAAKd,SAAAA,GAAAA,OAC1DA,aAAa4rX,cAAgB5rX,EAAIA,EAAEmxG,UAAAA,IAGrCtgG,EAAO/J,SAAS9G,SAAAA,GACd,IAAM4O,EAAQ/G,SAASC,cAAc,SAE/B+xD,EAASqb,GAAyB65S,cAAA,IACpCl1T,GACFjrD,EAAMyI,aAAa,QAASwiD,GAE9BjrD,EAAM0nB,YAAet2B,EAAgB6uG,QACrCu/Q,EAAW52W,YAAY5I,EAAM,GAEhC,CCm0BCogX,CACEZ,EACC7pX,KAAKma,YAAuCuwW,eAExCb,CACR,GAODc,CAAAA,IAAAA,oBAAAA,MAAAA,WAAAA,IAAAA,OAAAA,IAEM3qX,KAAK6pX,aAEL7pX,KAGA6pX,WAAa7pX,KAAKoqX,oBAEtBpqX,KAAKspX,gBAAe,GACF,QAAlBt4S,EAAAA,KAAK44S,YAAAA,IAAa,KAAErnX,SAAStG,SAAAA,GAAAA,IAAAA,EAAM,mBAAE8tX,qBAAAA,IAAAA,OAAAA,EAAAA,EAAAA,KAAAA,EAAiB,GACvD,GAQST,CAAAA,IAAAA,iBAAAA,MAAAA,SAAesB,GAA6B,GAQtDC,CAAAA,IAAAA,uBAAAA,MAAAA,WAAAA,IAAAA,EACoB,QAAlB75S,EAAAA,KAAK44S,YAAAA,IAAa,KAAErnX,SAAStG,SAAAA,GAAAA,IAAAA,EAAM,mBAAE6uX,wBAAAA,IAAAA,OAAAA,EAAAA,EAAAA,KAAAA,EAAoB,GAC1D,GAcDC,CAAAA,IAAAA,2BAAAA,MAAAA,SACE5xX,EACA6xX,EACAvsX,GAEAuB,KAAKirX,KAAsB9xX,EAAMsF,EAClC,GAEOysX,CAAAA,IAAAA,OAAAA,MAAAA,SACN/xX,EACAsF,GAC+BiqX,IAAAA,EAA/BznX,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAA+BynX,GAEzB71W,EACJ7S,KAAKma,YACLgxW,KAA2BhyX,EAAM8H,GACnC,QAAI,IAAA4R,IAAAA,IAAsB5R,EAAQ2nX,QAAkB,CAClD,IAKMwC,QAAAA,KAHJhhX,QADA4mE,EAAC/vE,EAAQ0nX,iBAAAA,IAAAA,OAAAA,EAAAA,EAAyCJ,aAE7CtnX,EAAQ0nX,UACTL,IACsBC,YAAa9pX,EAAOwC,EAAQ2D,MAwBxD5E,KAAKmpX,KAAuBhwX,EACX,MAAbiyX,EACFprX,KAAKutB,gBAAgB1a,GAErB7S,KAAK8S,aAAaD,EAAMu4W,GAG1BprX,KAAKmpX,KAAuB,IAC7B,CACF,GAGD8B,CAAAA,IAAAA,OAAAA,MAAAA,SAAsB9xX,EAAcsF,GAAAA,IAAAA,EAC5B8zF,EAAOvyF,KAAKma,YAGZ1B,EAAY85E,EAAK84R,KAA0Ct7V,IAAI52B,GAGrE,QAAI,IAAAsf,GAA0BzY,KAAKmpX,OAAyB1wW,EAAU,CACpE,IAAMxX,EAAUsxF,EAAK+4R,mBAAmB7yW,GAClCkwW,EACyB,mBAAtB1nX,EAAQ0nX,UACX,CAACtiF,cAAeplS,EAAQ0nX,gBAAAA,KACP,QAAjB33S,EAAAA,EAAQ23S,iBAAAA,IAAS,WAAEtiF,eACnBplS,EAAQ0nX,UACRL,GAENtoX,KAAKmpX,KAAuB1wW,EAC5BzY,KAAKyY,GAA0BkwW,EAAUtiF,cACvC5nS,EACAwC,EAAQ2D,MAIV5E,KAAKmpX,KAAuB,IAC7B,CACF,GAgBDM,CAAAA,IAAAA,gBAAAA,MAAAA,SACEtwX,EACAoyX,EACAtqX,GAEA,IAAIuqX,GAAAA,OAAsB,IAEtBryX,MACF8H,EACEA,GACCjB,KAAKma,YAAuCmxW,mBAAmBnyX,IACvC0vX,YAAcJ,IAC1BzoX,KAAK7G,GAAqBoyX,IAClCvrX,KAAKupX,KAAoBn7U,IAAIj1C,IAChC6G,KAAKupX,KAAoBt6V,IAAI91B,EAAMoyX,IAAAA,IAMjCtqX,EAAQ2nX,SAAoB5oX,KAAKmpX,OAAyBhwX,SAAAA,IACxD6G,KAAKyrX,OACPzrX,KAAKyrX,KAAyB,IAAItuV,KAEpCn9B,KAAKyrX,KAAuBx8V,IAAI91B,EAAM8H,KAIxCuqX,GAAAA,IAGCxrX,KAAKipX,iBAAmBuC,IAC3BxrX,KAAKqpX,KAAkBrpX,KAAK0rX,OAO/B,GAKO/4W,CAAAA,IAAAA,OAAAA,MAAAA,WAAAA,IAAAA,EAAAA,GAAAA,EAAAA,MAAAA,SAAAA,IAAAA,IAAAA,EAAAA,OAAAA,EAAAA,MAAAA,SAAAA,GAAAA,OAAAA,OAAAA,EAAAA,KAAAA,EAAAA,MAAAA,KAAAA,EAEN,OADA3S,KAAKipX,iBAAkB,EACvB35V,EAAAA,KAAAA,EAAAA,EAAAA,KAAAA,EAGQtvB,KAAKqpX,KACZ,OAAA/5V,EAAAA,KAAAA,EAAA,aAAAA,EAAAA,KAAAA,EAAAA,EAAAA,GAAAA,EAAAA,MAAAA,GAKCghB,QAAQiuC,OAAO,EAAPA,IACT,OAKGzmF,GAJEA,EAASkI,KAAKmvD,iBAAAA,EAAAA,GAIN,MAAVr3D,GAAAA,EAAAA,GAAAA,CAAAA,EAAAA,KAAAA,GAAAA,KAAAA,CAAAA,OAAAA,EAAAA,KAAAA,GACIA,EAAAA,KAAAA,GAAAA,OAAAA,EAAAA,OAAAA,UAEAkI,KAAKipX,iBACd,yDAmBS95T,OAAAA,WAAAA,OAAAA,EAAAA,MAAAA,KAAAA,UAAAA,CAAAA,CAxCFx8C,IAwCEw8C,CAAAA,IAAAA,iBAAAA,MAAAA,WACR,OAAOnvD,KAAK2rX,eACb,GAmBSA,CAAAA,IAAAA,gBAAAA,MAAAA,WAAAA,IAAAA,EAAAA,EAAAA,KAIR,GAAK3rX,KAAKipX,gBAAV,CAKKjpX,KAAKkpX,WAyBNlpX,KAAKmqX,OAIPnqX,KAAKmqX,KAAsB5nX,SAAQ,SAAC4E,EAAGH,GAAAA,OAAQhH,EAAagH,GAAKG,CAAAA,IACjEnH,KAAKmqX,UAAAA,GAEP,IAAIyB,GAAAA,EACEC,EAAoB7rX,KAAKupX,KAC/B,KACEqC,EAAe5rX,KAAK4rX,aAAaC,KAE/B7rX,KAAK8rX,WAAWD,GACE,QAAlBrzO,EAAAA,KAAKoxO,YAAAA,IAAa,KAAErnX,SAAStG,SAAAA,GAAAA,IAAAA,EAAM,mBAAE8vX,kBAAAA,IAAAA,OAAAA,EAAAA,EAAAA,KAAAA,EAAc,IACnD/rX,KAAKsjK,OAAOuoN,IAEZ7rX,KAAKgsX,MAER,CAAC,MAAO1lX,GAMP,MAHAslX,GAAAA,EAEA5rX,KAAKgsX,OACC1lX,CACP,CAEGslX,GACF5rX,KAAKisX,KAAYJ,EAzDX,CA2DT,GAuBSC,CAAAA,IAAAA,aAAAA,MAAAA,SAAWI,GAA4C,GAIjED,CAAAA,IAAAA,OAAAA,MAAAA,SAAYJ,GAAAA,IAAAA,EACQ,QAAlB76S,EAAAA,KAAK44S,YAAAA,IAAa,KAAErnX,SAAStG,SAAAA,GAAAA,IAAAA,EAAM,mBAAEkwX,mBAAAA,IAAAA,OAAAA,EAAAA,EAAAA,KAAAA,EAAe,IAC/CnsX,KAAKkpX,aACRlpX,KAAKkpX,YAAa,EAClBlpX,KAAKosX,aAAaP,IAEpB7rX,KAAKqsX,QAAQR,EAiBd,GAEOG,CAAAA,IAAAA,OAAAA,MAAAA,WACNhsX,KAAKupX,KAAsB,IAAIpsV,IAC/Bn9B,KAAKipX,iBAAkB,CACxB,GAkBGqD,CAAAA,IAAAA,iBAAAA,IAAAA,WACF,OAAOtsX,KAAKusX,mBACb,GAyBSA,CAAAA,IAAAA,oBAAAA,MAAAA,WACR,OAAOvsX,KAAKqpX,IACb,GAUSuC,CAAAA,IAAAA,eAAAA,MAAAA,SAAaM,GACrB,OAAO,CACR,GAWS5oN,CAAAA,IAAAA,SAAAA,MAAAA,SAAO4oN,GAAAA,IAAAA,EAAAA,UAAAA,IACXlsX,KAAKyrX,OAGPzrX,KAAKyrX,KAAuBlpX,SAAQ,SAAC4E,EAAGP,GAAAA,OACtC5G,EAAKkrX,KAAsBtkX,EAAG5G,EAAK4G,GAAkBO,EAAAA,IAEvDnH,KAAKyrX,UAAAA,GAEPzrX,KAAKgsX,MACN,GAYSK,CAAAA,IAAAA,UAAAA,MAAAA,SAAQH,GAAsC,GAkB9CE,CAAAA,IAAAA,eAAAA,MAAAA,SAAaF,GAAsC,MAAA1pX,IAAAA,iBAAA/D,MAt/B7DmhG,SAAsB0gR,GAAAA,IAAAA,EACpBtgX,KAAKwsX,YACc,QAAnBx7S,EAAChxE,KAAK0pX,SAAAA,IAAa,IAAlB1pX,KAAK0pX,EAAkB,IAAI5sX,KAAKwjX,EAClC,GA0GUmM,CAAAA,IAAAA,qBAAAA,IAAAA,WAAAA,IAAAA,EAAAA,KAETzsX,KAAKwsX,WACL,IAAMt6S,EAAuB,GAU7B,OAPAlyE,KAAKiqX,kBAAkB1nX,SAAQ,SAAC4E,EAAGH,GACjC,IAAM6L,EAAO7S,EAAKmrX,KAA2BnkX,EAAGG,QAAAA,IAC5C0L,IACF7S,EAAKqrX,KAAyBp8V,IAAIpc,EAAM7L,GACxCkrE,EAAWp1E,KAAK+V,GACjB,IAEIq/D,CACR,GA2BD0tB,CAAAA,IAAAA,iBAAAA,MAAAA,SACEzmG,GAC+BuvX,IAA/BznX,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAA+BynX,GAiB/B,GAdIznX,EAAQ2e,QAGT3e,EAAgBi1J,WAAY,GAI/Bl2J,KAAKwsX,WACLxsX,KAAKiqX,kBAAkBh7V,IAAI91B,EAAM8H,IAM5BA,EAAQyrX,aAAe1sX,KAAKpD,UAAUiB,eAAe1E,GAAO,CAC/D,IAAMqJ,EAAsB,iBAATrJ,EAAoB2H,SAAW,KAAK3H,EACjDkN,EAAarG,KAAK2sX,sBAAsBxzX,EAAMqJ,EAAKvB,QAAAA,IACrDoF,GACF9H,OAAOC,eAAewB,KAAKpD,UAAWzD,EAAMkN,EAY/C,CACF,GA6BSu5F,CAAAA,IAAAA,wBAAAA,MAAAA,SACRzmG,EACAqJ,EACAvB,GAEA,MAAO,CAEL8uB,IAAAA,WACE,OAAQ/vB,KAAkCwC,EAC3C,EACDysB,IAAAA,SAA2BxwB,GACzB,IAAM8sX,EAAYvrX,KAChB7G,GAED6G,KAAwCwC,GAAiB/D,EACzDuB,KAAoCypX,cACnCtwX,EACAoyX,EACAtqX,EAEH,EACD0I,cAAc,EACdD,YAAY,EAEf,GAgBDk2F,CAAAA,IAAAA,qBAAAA,MAAAA,SAA0BzmG,GACxB,OAAO6G,KAAKiqX,kBAAkBl6V,IAAI52B,IAASuvX,EAC5C,GAQS9oR,CAAAA,IAAAA,WAAAA,MAAAA,WACR,GAAI5/F,KAAKnC,eAAeirX,IACtB,OAAO,EAET9oX,KAAK8oX,KAAAA,EAEL,IAAM8D,EAAYruX,OAAOqH,eAAe5F,MAexC,GAdA4sX,EAAUJ,gBAAAA,IAINI,EAAUlD,IACZ1pX,KAAK0pX,EAAAA,EAAoBkD,EAAUlD,IAErC1pX,KAAKiqX,kBAAoB,IAAI9sV,IAAIyvV,EAAU3C,mBAE3CjqX,KAAKqrX,KAA2B,IAAIluV,IAKhCn9B,KAAKnC,eAAyC,cAAsB,CACtE,IAOgBgvX,EAPVpjX,EAAQzJ,KAAK2N,WAOnB,IALMk/W,GAAAA,OAAAA,EACDtuX,OAAOmH,oBAAoB+D,IAAAA,EAC3BlL,OAAOsD,sBAAsB4H,MAGlBojX,IAAhB,IAAK,EAAL,0BAAW7lX,EAAAA,EAAAA,MAIThH,KAAKigX,eAAej5W,EAAIyC,EAAczC,GAEzC,WAAA09D,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EAkBD,OAjBA1kE,KAAK0qX,cAAgB1qX,KAAK8sX,eAAe9sX,KAAKsM,SAAAA,CAkB/C,GA4BSszF,CAAAA,IAAAA,iBAAAA,MAAAA,SACRtzF,GAEA,IAAMo+W,EAAgB,GACtB,GAAI/tX,MAAM0E,QAAQiL,GAAS,CAIzB,IAEgB2iB,EAAhB,IAFY,IAAIjD,IAAK1f,EAA0BkrS,KAAKruP,KAAU5rD,YAE9C0xB,IAAhB,IAAK,EAAL,0BAAWxzB,EAAAA,EAAAA,MACTivX,EAAc36W,QAAQg4W,GAAmBtsX,GAE5C,WAAAspE,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,gBAAUz4D,GACTo+W,EAAc5tX,KAAKirX,GAAmBz7W,IAExC,OAAOo+W,CACR,GAaO9qR,CAAAA,IAAAA,OAAAA,MAAAA,SACNzmG,EACA8H,GAEA,IAAMi1J,EAAYj1J,EAAQi1J,UAC1B,OAAO,IAAAA,OAAAA,EAEkB,iBAAdA,EACPA,EACgB,iBAAT/8J,EACPA,EAAKnB,mBAAAA,CAEV,KAqDOoxX,CAAAA,CAxhBYL,CAwhBZK,EA/gBAphT,cA6GS+gT,GAACD,KAAAA,EAQXC,GAAAA,kBAA4C,IAAI5rV,IAmChD4rV,GAAa2B,cAA6B,GAwQ1C3B,GAAAA,kBAAoC,CAACv0U,KAAM,QA+qBpD4zU,MAAAA,IAAAA,GAAkB,CAACW,gBAAAA,MAoCY,QAA/B/mW,GAAC2uD,GAAOo8S,+BAAAA,IAAuB,MAA9Bp8S,GAAOo8S,wBAA4B,IAAIjwX,KAAK,SC//C7C,IAAM6zE,GAAkCttE,OAmOlC4kX,GAAgBt3S,GAAsCs3S,aAUtD+E,GAAS/E,GACXA,GAAagF,aAAa,WAAY,CACpCC,WAAazxX,SAAAA,GAAAA,OAAMA,CAAAA,SAAAA,EA8EnB0xX,GAAuB,QAMvB5jR,GAAAA,OAAAA,QAAuBtsG,KAAKuxC,SAAZzwC,IAAsB6S,MAAM,QAG5Cw8W,GAAc,IAAM7jR,GAIpB8jR,GAAAA,IAAAA,OAAiBD,GAAAA,KAEjB5mX,GAOAlD,SAGAgqX,GAAe,WAAfA,OAAqB9mX,GAAE+mX,cAAc,KAIrC5yE,GAAel8S,SAAAA,GAAAA,OACT,OAAVA,GAAmC,iBAATA,GAAqC,mBAATA,CAAAA,EAClD4C,GAAU1E,MAAM0E,QAChBmsX,GAAc/uX,SAAAA,GAAAA,OAClB4C,GAAQ5C,IAEqC,mBAArCA,MAAAA,OAAAA,EAAAA,EAAgBqC,OAAOrE,UAAAA,EAE3BgxX,GAAa,cAkBbC,GAAe,sDAKfC,GAAkB,OAIlBC,GAAmB,KAwBnBC,GAAkB76T,OAAO,KAAPA,OACjBy6T,GAAAA,uBAAAA,OAAgCA,GAAAA,MAAAA,OAAeA,GAAAA,wCACpD,KAOIK,GAA0B,KAC1BC,GAA0B,KAO1BC,GAAiB,qCAgEjB5+V,GACmBxqB,SAAAA,GAAAA,OACvB,SAACkxF,GAAAA,IAAAA,IAAAA,EAAAA,UAAAA,OAAkC/oF,EAAAA,IAAAA,MAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,UAAAA,GAAAA,MAU1B,CAELkhX,WAAgBrpX,EAChBkxF,QAAAA,EACA/oF,OAAAA,EAAAA,CAAAA,EAiBO62G,GAAOx0F,GA9FA,GA6HP8+V,IANM9+V,GAtHA,GA4HKtuB,OAAOC,IAAI,iBAqBtBotX,GAAUrtX,OAAOC,IAAI,eAS5BqtX,GAAgB,IAAIrtU,QAqCpBstU,GAAS7nX,GAAE8nX,iBACf9nX,GACA,IACA,SAsBF,SAAS+nX,GACPC,EACAC,GAOA,IAAK9xX,MAAM0E,QAAQmtX,KAASA,EAAI3wX,eAAe,OAiB7C,MAAUC,MAhBI,kCAkBhB,YAAO,IAAAkvX,GACHA,GAAOE,WAAWuB,GACjBA,CACP,CAcA,IAAMC,GAAkB,SACtB54R,EACAlxF,GAwBA,IAhBA,IAUI+pX,EAVE9nX,EAAIivF,EAAQl+F,OAAS,EAIrBg3X,EAAuC,GACzChrQ,EApRa,IAoRNh/G,EAAsB,QAAU,GASvClN,EAAQg2X,GAEHhxX,EAAI,EAAGA,EAAImK,EAAGnK,IAAK,CAc1B,IAbA,IAAMjB,EAAIq6F,EAAQp5F,GAOdsqW,OAAAA,EAEArvW,OAAAA,EAHAk3X,GAAoB,EAEpB3xK,EAAY,EAKTA,EAAYzhN,EAAE7D,SAEnBF,EAAMwlN,UAAYA,EAEJ,QADdvlN,EAAQD,EAAMse,KAAKva,MAInByhN,EAAYxlN,EAAMwlN,UACdxlN,IAAUg2X,GACiB,QAAzB/1X,EA3WU,GA4WZD,EAAQi2X,QAAAA,IACCh2X,EA7WG,GA+WZD,EAAQk2X,QAAAA,IACCj2X,EA/WF,IAgXHq2X,GAAe91X,KAAKP,EAhXjB,MAmXLg3X,EAAsB37T,OAAO,KAAKr7D,EAnX7B,GAmXgD,MAEvDD,EAAQm2X,SAAAA,IACCl2X,EArXM,KA4XfD,EAAQm2X,IAEDn2X,IAAUm2X,GACS,MAAxBl2X,EA7VS,IAgWXD,EAAQi3X,MAAAA,EAAAA,EAAmBjB,GAG3BmB,GAAoB,YACXl3X,EAnWI,GAqWbk3X,GAAoB,GAEpBA,EAAmBn3X,EAAMwlN,UAAYvlN,EAtWrB,GAsW8CC,OAC9DovW,EAAWrvW,EAxWE,GAyWbD,OAAAA,IACEC,EAxWO,GAyWHk2X,GACsB,MAAtBl2X,EA1WG,GA2WHo2X,GACAD,IAGRp2X,IAAUq2X,IACVr2X,IAAUo2X,GAEVp2X,EAAQm2X,GACCn2X,IAAUi2X,IAAmBj2X,IAAUk2X,GAChDl2X,EAAQg2X,IAIRh2X,EAAQm2X,GACRc,OAAAA,GA8BJ,IAAM5jV,EACJrzC,IAAUm2X,IAAe/3R,EAAQp5F,EAAI,GAAG89F,WAAW,MAAQ,IAAM,GACnEopB,GACElsH,IAAUg2X,GACNjyX,EAAI4xX,GACJwB,GAAoB,GACnBD,EAAU9xX,KAAKkqW,GAChBvrW,EAAEmV,MAAM,EAAGi+W,GACT1B,GACA1xX,EAAEmV,MAAMi+W,GACVtlR,GACAx+D,GACAtvC,EACA8tG,KACuB,IAAtBslR,GAA2BD,EAAU9xX,UAAK,GAAYJ,GAAKquC,EACnE,CAMD,MAAO,CAACwjV,GAAwBz4R,EAH9B8tB,GAAQ9tB,EAAQjvF,IAAM,QA3ZP,IA2ZiBjC,EAAsB,SAAW,KAGbgqX,EAAU,EAK5DE,GAAAA,WAMJ30W,SAAAA,EAAAA,EAGElZ,GAAAA,IAEIwY,EAHHq8E,EAAAA,EAADA,QAA0BlxF,EAAAA,EAAhBqpX,WAAAA,EAAAA,KAAAA,GAJZjuX,KAAKqpG,MAAwB,GAQ3B,IAAIomN,EAAY,EACZs/D,EAAgB,EACdC,EAAYl5R,EAAQl+F,OAAS,EAC7ByxG,EAAQrpG,KAAKqpG,MAGgCzkG,EAAAA,EAAzB8pX,GAAgB54R,EAASlxF,GAAAA,GAA5Cg/G,EAAAA,EAAAA,GAAMgrQ,EAAAA,EAAAA,GAKb,GAJA5uX,KAAK0sD,GAAKoiU,EAASvrX,cAAcqgH,EAAM3iH,GACvCotX,GAAOY,YAAcjvX,KAAK0sD,GAAGtwC,QAvbd,IA0bXxX,EAAqB,CACvB,IAAMwX,EAAUpc,KAAK0sD,GAAGtwC,QAClB8yW,EAAa9yW,EAAQkW,WAC3B48V,EAAWtuT,SACXxkD,EAAQs6G,OAAAA,MAARt6G,EAAAA,EAAkB8yW,EAAWrlR,YAC9B,CAGD,KAAsC,QAA9BpwF,EAAO40W,GAAOc,aAAwB9lR,EAAMzxG,OAASo3X,GAAW,CACtE,GAAsB,IAAlBv1W,EAAKmZ,SAAgB,CAuBvB,GAAKnZ,EAAiB21W,gBAAiB,CAIrC,IACqCC,EAD/BC,EAAgB,GACtB,IAAoB71W,EAAiB41W,qBAAAA,IAArC,IAAK,EAAL,0BAAWl2X,EAAAA,EAAAA,MAQT,GACEA,EAAK6hG,SAASmyR,KACdh0X,EAAKqhG,WAAW+O,IAChB,CACA,IAAMgmR,EAAWX,EAAUG,KAE3B,GADAO,EAAcxyX,KAAK3D,QAAAA,IACfo2X,EAAwB,CAE1B,IAGMC,EAHS/1W,EAAiBmwD,aAC9B2lT,EAASv3X,cAAgBm1X,IAELrxX,MAAMytG,IACtBziG,EAAI,eAAekP,KAAKu5W,GAC9BlmR,EAAMvsG,KAAK,CACT8H,KA/eK,EAgfLgK,MAAO6gT,EACPt2T,KAAM2N,EAAE,GACRgvF,QAAS05R,EACTj9R,KACW,MAATzrF,EAAE,GACE2oX,GACS,MAAT3oX,EAAE,GACF4oX,GACS,MAAT5oX,EAAE,GACF6oX,GACAC,IAET,MACCvmR,EAAMvsG,KAAK,CACT8H,KAzfG,EA0fHgK,MAAO6gT,GAGZ,CAEH,WAAA/qP,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,KAAK,IAAL,MAAmB4qT,EAAAA,EAAAA,EAAAA,OAAAA,IAAAA,CAAd,IAAMn2X,EAAAA,EAAAA,GACRsgB,EAAiB8T,gBAAgBp0B,EAErC,EAGD,GAAI60X,GAAe91X,KAAMuhB,EAAiBw/B,SAAU,CAIlD,IAAM68C,EAAWr8E,EAAiBsY,YAAaj2B,MAAMytG,IAC/C2zG,EAAYpnH,EAAQl+F,OAAS,EACnC,GAAIslN,EAAY,EAAG,CAChBzjM,EAAiBsY,YAAck2V,GAC3BA,GAAaE,YACd,GAMJ,IAAK,IAAIzrX,EAAI,EAAGA,EAAIwgN,EAAWxgN,IAC5B+c,EAAiBi9G,OAAO5gC,EAAQp5F,GAAI4wX,MAErCe,GAAOc,WACP9lR,EAAMvsG,KAAK,CAAC8H,KA5hBP,EA4hByBgK,QAAS6gT,IAKxCh2S,EAAiBi9G,OAAO5gC,EAAQonH,GAAYowK,KAC9C,CACF,CACF,MAAM,GAAsB,IAAlB7zW,EAAKmZ,SAEd,GADcnZ,EAAiBiqB,OAClB0pV,GACX/jR,EAAMvsG,KAAK,CAAC8H,KAviBH,EAuiBqBgK,MAAO6gT,SAGrC,IADA,IAAI/yT,GAAK,GACuD,KAAxDA,EAAK+c,EAAiBiqB,KAAKl3B,QAAQ+8F,GAAQ7sG,EAAI,KAGrD2sG,EAAMvsG,KAAK,CAAC8H,KAxiBH,EAwiBuBgK,MAAO6gT,IAEvC/yT,GAAK6sG,GAAO3xG,OAAS,EAI3B63T,GACD,CAWF,CAQA,OAJD7vN,EAAAA,EAAAA,KAAAA,CAAAA,CAAAA,IAAAA,gBAAAA,MAAAA,SAAqBgkB,EAAmBisQ,GACtC,IAAMnjU,EAAKlmD,GAAEjD,cAAc,YAE3B,OADAmpD,EAAGr6B,UAAYuxF,EACRl3D,CACR,OA3KGoiU,GA2LN,SAASgB,GACPxmR,EACA7qG,GAEAsxX,IAAAA,EAAAA,EAAAA,EAAAA,EADA7yT,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAA0BosC,EAC1BymR,EAAAA,UAAAA,OAAAA,EAAAA,UAAAA,QAAAA,EAIA,GAAItxX,IAAUyvX,GACZ,OAAOzvX,EAET,IAAIuxX,OAAAA,IACFD,EAC0C,QAArC/+S,EAAAA,EAAyBi/S,YAAAA,IAAY,WAAGF,GACxC7yT,EAA+CgzT,KAChDC,EAA2Bx1E,GAAYl8S,QAAAA,EAGxCA,EAA2C2xX,gBAyBhD,OAxBIJ,MAAAA,OAAAA,EAAAA,EAAkB71W,eAAgBg2W,IAEoB,QAAxD33O,EAAAA,MAAAA,OAAAA,EAAAA,EAAuD63O,YAAAA,IAAC,qBAAG,IACvDF,EACFH,OAAAA,GAEAA,EAAmB,IAAIG,EAAyB7mR,IAC/BgnR,KAAahnR,EAAMpsC,EAAQ6yT,QAAAA,IAE1CA,GACyB,QAAzBQ,GAAAA,EAAAA,GAAyBN,YAAAA,IAAAA,EAAAA,EAAAA,EAAAA,KAAiB,IAAIF,GAC9CC,EAED9yT,EAAiCgzT,KAAcF,QAAAA,IAGhDA,IACFvxX,EAAQqxX,GACNxmR,EACA0mR,EAAiBQ,KAAUlnR,EAAO7qG,EAA0BsO,QAC5DijX,EACAD,IAGGtxX,CACT,CAOA,IAAMgyX,GAAAA,WASJt2W,SAAAA,EAAYu2W,EAAoBxzT,GAAAA,EAAAA,KAAAA,GAPhCl9D,KAAO2wX,KAA4B,GAKnC3wX,KAAwB4wX,UAAAA,EAGtB5wX,KAAK6wX,KAAaH,EAClB1wX,KAAK8wX,KAAW5zT,CACjB,CAuFA,OApFGjmC,EAAAA,EAAAA,CAAAA,CAAAA,IAAAA,aAAAA,IAAAA,WACF,OAAOj3B,KAAK8wX,KAAS75V,UACtB,GAGG85V,CAAAA,IAAAA,OAAAA,IAAAA,WACF,OAAO/wX,KAAK8wX,KAASC,IACtB,GAIDC,CAAAA,IAAAA,IAAAA,MAAAA,SAAO/vX,GAAAA,IAAAA,EACL,EAGIjB,KAAK6wX,KAFFz0W,EAAAA,EAALswC,GAAItwC,QACGitF,EAAAA,EAAPA,MAEIslH,GAAsC,QAA1B39I,EAAAA,MAAAA,OAAAA,EAAAA,EAASigT,qBAAAA,IAAiB,QAAGC,WAAW90W,GAAAA,GAC1DiyW,GAAOY,YAActgK,EAOrB,IALA,IAAIl1M,EAAO40W,GAAOc,WACd1/D,EAAY,EACZ0hE,EAAY,EACZC,EAAe/nR,EAAM,QAEzB,IAAO+nR,GAA4B,CACjC,GAAI3hE,IAAc2hE,EAAaxiX,MAAO,CACpC,IAAI06F,OAAAA,EAnrBO,IAorBP8nR,EAAaxsX,KACf0kG,EAAO,IAAI+nR,GACT53W,EACAA,EAAKuwB,YACLhqC,KACAiB,GA1rBW,IA4rBJmwX,EAAaxsX,KACtB0kG,EAAO,IAAI8nR,EAAa7+R,KACtB94E,EACA23W,EAAaj4X,KACbi4X,EAAat7R,QACb91F,KACAiB,GA7rBS,IA+rBFmwX,EAAaxsX,OACtB0kG,EAAO,IAAIgoR,GAAY73W,EAAqBzZ,KAAMiB,IAEpDjB,KAAK2wX,KAAQ7zX,KAAKwsG,GAClB8nR,EAAe/nR,IAAQ8nR,EACxB,CACG1hE,KAAc2hE,MAAAA,OAAAA,EAAAA,EAAcxiX,SAC9B6K,EAAO40W,GAAOc,WACd1/D,IAEH,CAKD,OADA4+D,GAAOY,YAAczoX,GACdmoN,CACR,GAED4lE,CAAAA,IAAAA,IAAAA,MAAAA,SAAQxnR,GACN,IACwB4jX,EADpBj0X,EAAI,EACR,IAAmBsD,KAAK2wX,MAAAA,IAAxB,IAAK,EAAL,0BAAWrnR,EAAAA,EAAAA,WAAaqnR,IAClBrnR,SAAAA,IASGA,EAAuBxT,SACzBwT,EAAuBioR,KAAWxkX,EAAQu8F,EAAuB5sG,GAIlEA,GAAM4sG,EAAuBxT,QAASl+F,OAAS,GAE/C0xG,EAAKioR,KAAWxkX,EAAOrQ,KAG3BA,GAEH,WAAAqoE,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,QAnGG0rT,GAiJAY,GAAAA,WA4CJl3W,SAAAA,EACEq3W,EACAC,EACAv0T,EACAj8D,GAAAA,IAAAA,EAAAA,EAAAA,KAAAA,GA/COjB,KAAI4E,KA5xBI,EA8xBjB5E,KAAgB0xX,KAAYvD,GA+B5BnuX,KAAwB4wX,UAAAA,EAgBtB5wX,KAAK2xX,KAAcH,EACnBxxX,KAAK4xX,KAAYH,EACjBzxX,KAAK8wX,KAAW5zT,EAChBl9D,KAAKiB,QAAUA,EAIfjB,KAAK6xX,KAAoC,QAApB7gT,EAAAA,MAAAA,OAAAA,EAAA/vE,EAAS6oX,mBAAAA,IAAW,IAK1C,CA+WA,OArZGiH,EAAAA,EAAAA,CAAAA,CAAAA,IAAAA,OAAAA,IAAAA,WAAAA,IAAAA,EAAAA,EAIF,OAAuC,QAAhCv4O,EAAe,QAAfxnE,EAAAA,KAAK8/S,YAAAA,IAAU,2BAAiB,IAAA9wX,KAAK6xX,IAC7C,GAqDG56V,CAAAA,IAAAA,aAAAA,IAAAA,WACF,IAAIA,EAAwBj3B,KAAK2xX,KAAa16V,WACxCimC,EAASl9D,KAAK8wX,KAUpB,YAAO,IARL5zT,GACyB,MAAzBjmC,MAAAA,OAAAA,EAAAA,EAAYrE,YAKZqE,EAAcimC,EAAwCjmC,YAEjDA,CACR,GAMGu6V,CAAAA,IAAAA,YAAAA,IAAAA,WACF,OAAOxxX,KAAK2xX,IACb,GAMGF,CAAAA,IAAAA,UAAAA,IAAAA,WACF,OAAOzxX,KAAK4xX,IACb,GAEDL,CAAAA,IAAAA,OAAAA,MAAAA,SAAW9yX,GAMTA,EAAQqxX,GAAiB9vX,KAAMvB,EANNqzX,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAmC9xX,MAOxD26S,GAAYl8S,GAIVA,IAAU0vX,IAAoB,MAAT1vX,GAA2B,KAAVA,GACpCuB,KAAK0xX,OAAqBvD,IAQ5BnuX,KAAK+xX,OAEP/xX,KAAK0xX,KAAmBvD,IACf1vX,IAAUuB,KAAK0xX,MAAoBjzX,IAAUyvX,IACtDluX,KAAKgyX,EAAYvzX,QAAAA,IAGTA,EAAqCwvX,WAC/CjuX,KAAKiyX,EAAsBxzX,QAAAA,IACjBA,EAAem0B,SAgBzB5yB,KAAKkyX,EAAYzzX,GACR+uX,GAAW/uX,GACpBuB,KAAKmyX,EAAgB1zX,GAGrBuB,KAAKgyX,EAAYvzX,EAEpB,GAEO2zX,CAAAA,IAAAA,IAAAA,MAAAA,SAAwB34W,GAC9B,OAAiBzZ,KAAK2xX,KAAa16V,WAAa8vB,aAC9CttC,EACAzZ,KAAK4xX,KAER,GAEOM,CAAAA,IAAAA,IAAAA,MAAAA,SAAYzzX,GACduB,KAAK0xX,OAAqBjzX,IAC5BuB,KAAK+xX,OAmCL/xX,KAAK0xX,KAAmB1xX,KAAKoyX,EAAQ3zX,GAExC,GAEOuzX,CAAAA,IAAAA,IAAAA,MAAAA,SAAYvzX,GAKhBuB,KAAK0xX,OAAqBvD,IAC1BxzE,GAAY36S,KAAK0xX,MAEC1xX,KAAK2xX,KAAa3nV,YAarBtG,KAAOjlC,EAqBpBuB,KAAKkyX,EAAY1rX,GAAEk/C,eAAejnD,IAStCuB,KAAK0xX,KAAmBjzX,CACzB,GAEOwzX,CAAAA,IAAAA,IAAAA,MAAAA,SACNn6X,GAAAA,IAAAA,EAGOiV,EAAgCjV,EAAjCiV,OAAyBnI,EAAQ9M,EAAxBm2X,WAKTyC,EACY,iBAAT9rX,EACH5E,KAAKqyX,KAAcv6X,SAAAA,IAClB8M,EAAK8nD,KACH9nD,EAAK8nD,GAAKoiU,GAASvrX,cAClBgrX,GAAwB3pX,EAAK+B,EAAG/B,EAAK+B,EAAE,IACvC3G,KAAKiB,UAET2D,GAEN,IAAiD,UAA5C5E,KAAK0xX,YAAAA,IAAuC,mBAAehB,EAS7D1wX,KAAK0xX,KAAsCn9F,EAAQxnR,OAC/C,CACL,IAAMxC,EAAW,IAAIkmX,GAAiBC,EAAsB1wX,MACtD2uN,EAAWpkN,EAASymX,EAAOhxX,KAAKiB,SAUtCsJ,EAASgqR,EAAQxnR,GAUjB/M,KAAKkyX,EAAYvjK,GACjB3uN,KAAK0xX,KAAmBnnX,CACzB,CACF,GAID8nX,CAAAA,IAAAA,OAAAA,MAAAA,SAAcv6X,GACZ,IAAI44X,EAAWtC,GAAcr+V,IAAIj4B,EAAOg+F,SAIxC,YAAO,IAHH46R,GACFtC,GAAcn/V,IAAIn3B,EAAOg+F,QAAU46R,EAAW,IAAI5B,GAASh3X,IAEtD44X,CACR,GAEOyB,CAAAA,IAAAA,IAAAA,MAAAA,SAAgB1zX,GAWjB4C,GAAQrB,KAAK0xX,QAChB1xX,KAAK0xX,KAAmB,GACxB1xX,KAAK+xX,QAKP,IAEIO,EAEe7zX,EAJb8zX,EAAYvyX,KAAK0xX,KACnBP,EAAY,EAGhB,IAAmB1yX,GAAAA,IAAnB,IAAK,EAAL,0BAAWgnE,EAAAA,EAAAA,MACL0rT,IAAcoB,EAAU36X,OAK1B26X,EAAUz1X,KACPw1X,EAAW,IAAIjB,EACdrxX,KAAKoyX,EAAQ9E,MACbttX,KAAKoyX,EAAQ9E,MACbttX,KACAA,KAAKiB,UAKTqxX,EAAWC,EAAUpB,GAEvBmB,EAASf,KAAW9rT,GACpB0rT,GAGEA,CAAAA,CAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,CAAAA,QAAAA,EAAAA,GAAAA,CAAAA,EAAYoB,EAAU36X,SAExBoI,KAAK+xX,KACHO,GAAiBA,EAASV,KAAY5nV,YACtCmnV,GAGFoB,EAAU36X,OAASu5X,EAEtB,GAaDY,CAAAA,IAAAA,OAAAA,MAAAA,WAEE1vW,IAAAA,EADAyoB,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAA+B9qC,KAAK2xX,KAAa3nV,YACjD3nB,EAAAA,UAAAA,OAAAA,EAAAA,UAAAA,QAAAA,EAGA,IADiC,QAAjC2uD,EAAAA,KAAKwhT,YAAAA,IAA4B,qBAAanwW,GACvCyoB,GAASA,IAAU9qC,KAAK4xX,MAAW,CACxC,IAAM7qX,EAAS+jC,EAAQd,YACjBc,EAAoB81B,SAC1B91B,EAAQ/jC,CACT,CACF,GAQD0rX,CAAAA,IAAAA,eAAAA,MAAAA,SAAa3I,GAAAA,IAAAA,OAAAA,IACP9pX,KAAK8wX,OACP9wX,KAAK6xX,KAAgB/H,EACY,QAAjC94S,EAAAA,KAAKwhT,YAAAA,IAA4B91X,GAAAA,EAAA,aAOpC,OA7aG20X,GAwcAzB,GAAAA,WAoCJz1W,SAAAA,EACEzY,EACAvI,EACA28F,EACA54B,EACAj8D,GAAAA,EAAAA,KAAAA,GAxCOjB,KAAI4E,KAruCQ,EAqvCrB5E,KAAgB0xX,KAA6BvD,GAM7CnuX,KAAwB4wX,UAAAA,EAoBtB5wX,KAAK0B,QAAUA,EACf1B,KAAK7G,KAAOA,EACZ6G,KAAK8wX,KAAW5zT,EAChBl9D,KAAKiB,QAAUA,EACX60F,EAAQl+F,OAAS,GAAoB,KAAfk+F,EAAQ,IAA4B,KAAfA,EAAQ,IACrD91F,KAAK0xX,KAAuB/0X,MAAMm5F,EAAQl+F,OAAS,GAAG2jH,KAAK,IAAIx9G,QAC/DiC,KAAK81F,QAAUA,GAEf91F,KAAK0xX,KAAmBvD,EAK3B,CAqGA,OAlIGl1U,EAAAA,EAAAA,CAAAA,CAAAA,IAAAA,UAAAA,IAAAA,WACF,OAAOj5C,KAAK0B,QAAQu3C,OACrB,GAGG83U,CAAAA,IAAAA,OAAAA,IAAAA,WACF,OAAO/wX,KAAK8wX,KAASC,IACtB,GA8CDQ,CAAAA,IAAAA,OAAAA,MAAAA,SACE9yX,GAGAi0X,IAFAZ,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAmC9xX,KACnC2yX,EAAAA,UAAAA,OAAAA,EAAAA,UAAAA,QAAAA,EACAD,EAAAA,UAAAA,OAAAA,EAAAA,UAAAA,QAAAA,EAEM58R,EAAU91F,KAAK81F,QAGjB88R,GAAAA,EAEJ,QAAI,IAAA98R,EAEFr3F,EAAQqxX,GAAiB9vX,KAAMvB,EAAOqzX,EAAiB,IACvDc,GACGj4E,GAAYl8S,IACZA,IAAUuB,KAAK0xX,MAAoBjzX,IAAUyvX,MAE9CluX,KAAK0xX,KAAmBjzX,OAErB,CAEL,IAGI/B,EAAGyK,EAHD4F,EAAStO,EAIf,IAHAA,EAAQq3F,EAAQ,GAGXp5F,EAAI,EAAGA,EAAIo5F,EAAQl+F,OAAS,EAAG8E,KAClCyK,EAAI2oX,GAAiB9vX,KAAM+M,EAAO4lX,EAAcj2X,GAAIo1X,EAAiBp1X,MAE3DwxX,KAER/mX,EAAKnH,KAAK0xX,KAAoCh1X,IAEhDk2X,IAAAA,GACGj4E,GAAYxzS,IAAMA,IAAOnH,KAAK0xX,KAAoCh1X,IACjEyK,IAAMgnX,GACR1vX,EAAQ0vX,GACC1vX,IAAU0vX,KACnB1vX,IAAU0I,MAAAA,EAAAA,EAAK,IAAM2uF,EAAQp5F,EAAI,IAIlCsD,KAAK0xX,KAAoCh1X,GAAKyK,CAElD,CACGyrX,IAAWF,GACb1yX,KAAK6yX,EAAap0X,EAErB,GAGDo0X,CAAAA,IAAAA,IAAAA,MAAAA,SAAap0X,GACPA,IAAU0vX,GACNnuX,KAAK0B,QAAqB6rB,gBAAgBvtB,KAAK7G,MAmB/C6G,KAAK0B,QAAqBoR,aAC9B9S,KAAK7G,KACJsF,MAAAA,EAAAA,EAAS,GAGf,OA7JGmxX,GAiKAH,GAAAA,SAAAA,GAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EAAAA,EAAAA,GAANt1W,SAAAA,IAAAA,IAAAA,EAyBC,OAzBDA,EAAAA,KAAAA,IAAAA,EAAAA,EAAAA,MAAAA,KAAAA,YACwBvV,KAp4CF,EA45CrB,EADE,OApBQiuX,EAAAA,EAAAA,CAAAA,CAAAA,IAAAA,IAAAA,MAAAA,SAAap0X,GAmBnBuB,KAAK0B,QAAgB1B,KAAK7G,MAAQsF,IAAU0vX,QAAAA,EAAsB1vX,CACpE,OAxBGgxX,CAAqBG,IA+BrB1H,GAAiCD,GAClCA,GAAaE,YACd,GAGEuH,GAAAA,SAAAA,GAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EAAAA,EAAAA,GAANv1W,SAAAA,IAAAA,IAAAA,EAqBC,OArBDA,EAAAA,KAAAA,IAAAA,EAAAA,EAAAA,MAAAA,KAAAA,YACwBvV,KAv6CO,EA27C9B,EADE,OAhBQiuX,EAAAA,EAAAA,CAAAA,CAAAA,IAAAA,IAAAA,MAAAA,SAAap0X,GAQhBA,GAASA,IAAU0vX,GACfnuX,KAAK0B,QAAqBoR,aAC9B9S,KAAK7G,KACL+uX,IAGIloX,KAAK0B,QAAqB6rB,gBAAgBvtB,KAAK7G,KAExD,OApBGu2X,CAA6BE,IAsC7BD,GAAAA,SAAAA,GAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EAAAA,EAAAA,GAGJx1W,SAAAA,EACEzY,EACAvI,EACA28F,EACA54B,EACAj8D,GAAAA,IAAAA,EAWD,OAXCA,EAAAA,KAAAA,IAEA+nX,EAAAA,EAAAA,KAAAA,KAAMtnX,EAASvI,EAAM28F,EAAS54B,EAAQj8D,IATlB2D,KA58CL,EA89ChB,EAqEA,OAhEQ2sX,EAAAA,EAAAA,CAAAA,CAAAA,IAAAA,OAAAA,MAAAA,SACPuB,GACmC9yX,IAAAA,EAInC,IAFA8yX,EAC6D,QAA3D9hT,EAAAA,GAAiBhxE,KAAM8yX,EAHzBhB,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAmC9xX,KAGoB,cAAM,UACzCkuX,GAApB,CAGA,IAAM6E,EAAc/yX,KAAK0xX,KAInBsB,EACHF,IAAgB3E,IAAW4E,IAAgB5E,IAC3C2E,EAAyCpkV,UACvCqkV,EAAyCrkV,SAC3CokV,EAAyCG,OACvCF,EAAyCE,MAC3CH,EAAyCnkV,UACvCokV,EAAyCpkV,QAIxCukV,EACJJ,IAAgB3E,KACf4E,IAAgB5E,IAAW6E,GAY1BA,GACFhzX,KAAK0B,QAAQw2B,oBACXl4B,KAAK7G,KACL6G,KACA+yX,GAGAG,GAIFlzX,KAAK0B,QAAQkC,iBACX5D,KAAK7G,KACL6G,KACA8yX,GAGJ9yX,KAAK0xX,KAAmBoB,CAhDhB,CAiDT,GAEDK,CAAAA,IAAAA,cAAAA,MAAAA,SAAY5qV,GAAAA,IAAAA,EAAAA,EAC2B,mBAA1BvoC,KAAK0xX,KACd1xX,KAAK0xX,KAAiB70X,KAAK,QAAA27I,EAAc,UAAdx4I,KAAKiB,eAAAA,IAAS,WAAAyoE,YAAA,QAAQ1pE,KAAK0B,QAAS6mC,GAE9DvoC,KAAK0xX,KAAyCyB,YAAY5qV,EAE9D,OAxFGonV,CAAkBC,IA4FlB0B,GAAAA,WAiBJn3W,SAAAA,EACSzY,EACPw7D,EACAj8D,GAAAA,EAAAA,KAAAA,GAFOjB,KAAO0B,QAAPA,EAjBA1B,KAAI4E,KAviDM,EAmjDnB5E,KAAwB4wX,UAAAA,EAStB5wX,KAAK8wX,KAAW5zT,EAChBl9D,KAAKiB,QAAUA,CAChB,CAeA,OAZG8vX,EAAAA,EAAAA,CAAAA,CAAAA,IAAAA,OAAAA,IAAAA,WACF,OAAO/wX,KAAK8wX,KAASC,IACtB,GAEDQ,CAAAA,IAAAA,OAAAA,MAAAA,SAAW9yX,GAOTqxX,GAAiB9vX,KAAMvB,EACxB,OAvCG6yX,GAgFAlJ,GAEFz3S,GAAOyiT,uBACXhL,MAAAA,IAAAA,GAAkB0G,GAAUuC,KAIL,QAAvBrvW,GAAC2uD,GAAO0iT,uBAAAA,IAAe,MAAtB1iT,GAAO0iT,gBAAoB,IAAIv2X,KAAK,SAkCxB,aAAS,SACpB2B,EACA0d,EACAlb,GAAAA,IAAAA,EAAAA,EAUMqyX,EAAyC,QAAzBtiT,EAAAA,MAAAA,OAAAA,EAAAA,EAASuiT,oBAAAA,IAAgB,MAG3CjqR,EAAmBgqR,EAAkCE,WASzD,QAAI,IAAAlqR,EAAoB,CACtB,IAAMmoR,EAAmC,QAAzBj5O,EAAAA,MAAAA,OAAAA,EAAAA,EAAS+6O,oBAAAA,IAAgB,SAGxCD,EAAkCE,WAAIlqR,EAAO,IAAI+nR,GAChDl1W,EAAU4qC,aAAaumU,KAAgBmE,GACvCA,OAAAA,EAEAxwX,MAAAA,EAAAA,EAAW,CAAC,EAEf,CAUD,OATAqoG,EAAKioR,KAAW9yX,GAST6qG,CAAgB,EC7hEZmqR,GAAAA,SAAAA,GAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EAAAA,EAAAA,GAAbt5W,SAAAA,IAAAA,IAAAA,EAgHC,OAhHDA,EAAAA,KAAAA,IAAAA,EAAAA,EAAAA,MAAAA,KAAAA,YAgBWna,cAA+B,CAAC0pE,KAAMA,EAAAA,IAEvC1pE,EAAW0zX,UAAAA,EA8FpB,EADE,OAxFkBtJ,EAAAA,EAAAA,CAAAA,CAAAA,IAAAA,mBAAAA,MAAAA,WAAAA,IAAAA,EAAAA,EACXP,EAAAA,GAAAA,EAAAA,EAAAA,WAAAA,mBAAAA,MAAAA,KAAAA,MAON,OADmB,QAAnB74S,GAAAA,EAAAA,KAAK2iT,eAAcJ,oBAAAA,IAAAA,IAAAA,EAAAA,aAAiB1J,EAAYv3V,YACzCu3V,CACR,GASkBvmN,CAAAA,IAAAA,SAAAA,MAAAA,SAAOuoN,GAIxB,IAAMptX,EAAQuB,KAAKwF,SACdxF,KAAKkpX,aACRlpX,KAAK2zX,cAAc7J,YAAc9pX,KAAK8pX,aAAAA,GAAAA,EAAAA,EAAAA,WAAAA,SAAAA,MAAAA,KAAAA,KAE3B+B,GACb7rX,KAAK0zX,KAAcluX,GAAO/G,EAAOuB,KAAK6pX,WAAY7pX,KAAK2zX,cACxD,GAsBQhJ,CAAAA,IAAAA,oBAAAA,MAAAA,WAAAA,IAAAA,EACP3B,GAAAA,EAAAA,EAAAA,WAAAA,oBAAAA,MAAAA,KAAAA,MACgB,QAAhBh4S,EAAAA,KAAK0iT,YAAAA,IAAW,KAAEjB,cAAa,EAChC,GAqBQ5H,CAAAA,IAAAA,uBAAAA,MAAAA,WAAAA,IAAAA,EACP7B,GAAAA,EAAAA,EAAAA,WAAAA,uBAAAA,MAAAA,KAAAA,MACgB,QAAhBh4S,EAAAA,KAAK0iT,YAAAA,IAAW,KAAEjB,cAAa,EAChC,GASSjtX,CAAAA,IAAAA,SAAAA,MAAAA,WACR,OAAO0oX,EACR,OA/GUuF,CAAmB1K,IAQJ0K,GAAY3K,WAAAA,EAG/B2K,GAAgBG,eAAAA,EAwGU,QAAnCp7O,GAAAA,WAAWq7O,gCAAAA,IAAwB,uBAAG,CAACJ,WAAAA,KAGvC,IAAMrL,GAEFr0R,WAAW+/R,0BACf1L,MAAAA,IAAAA,GAAkB,CAACqL,WAAAA,MAiEW,QAA9BlD,GAACx8R,WAAWggS,0BAAAA,IAAkB,MAA7BhgS,WAAWggS,mBAAuB,IAAIj3X,KAAK,SC1RrC,gBAAMk3X,GAAuC,MAAhB53X,UAAUo2L,IACf,MAA1Br9K,KAAa8+W,WAAwD,MAAnC73X,UAAUo2L,GAAG0hM,mBAEvCC,GAAyBH,IACwB,MAAzD7+W,KAAa8+W,UAAUr3X,UAAUw3X,qBAEzBC,GAA6C,MAAvBl/W,KAAKqsS,eAE3B8yE,GAAyD,MAA7Bn/W,KAAKo/W,qBAEjCC,GAAwBL,GAkBxBM,IAhBa,WACxB,IAAMp4X,EACFD,UAAUC,WAAaD,UAAU0oB,QAAW3P,KAAa/b,MACzD8E,GAAQ,GAER,2TACKhG,KAAKmE,IACV,0kDACKnE,KAAKmE,EAAUk3D,OAAO,EAAG,OAChCr1D,GAAQ,EAGZ,CAZ0B,GAcC,WAAWhG,KAAKkE,UAAUC,WAE3B,WAAWnE,KAAKkE,UAAUC,YAavC84E,GACR,mBAAmBj9E,KAAKkE,UAAUC,aAAgB8Y,KAAawP,UACxC,aAAvBvoB,UAAUqoB,UAA2BroB,UAAUsoB,eAAiB,EAIxDgwW,IADY,WAAWx8X,KAAKkE,UAAUC,WACzB,WAAWnE,KAAKkE,UAAUC,YACvCs4X,GAAY,gBAAgBz8X,KAAKkE,UAAUC,WAI3Cu4X,IAHgBz/S,IAAU,UAAUj9E,KAAKkE,UAAUC,WAGxBo4X,KAAeC,KAAeC,IAUzDE,GAAe35W,QAAQ7X,OAAOhI,QAAUgI,OAAOhI,OAAOy5X,iBAMtDC,GAA6B,WACtC,GAAG5/S,GAAO,CACN,GAAI0/S,GAIA,OAAQ35W,QAAQ,8CAA8ChjB,KAAKkE,UAAUC,YAH7E,IAAM24X,EAAa1xX,SAASC,cAAc,KAC1C,OAAO2X,QAAQ85W,EAAWC,SAAWD,EAAWC,QAAQC,UAAYF,EAAWC,QAAQC,SAAS,OAKpG,OAAO,CAEf,CAX0C,GC9D7BC,GAAiB,SAACjtV,GAAgB,OACxCA,GAAe,SAARA,EAAkBktV,GAAUltV,GAAO,IAAI,EAGxCmtV,GAAsB,WACjC,IAAIb,GAAJ,CAIA,IAAMc,EAAc,GAUpB,MARKtB,IACHsB,EAAYx4X,KAAK,oBAGdq3X,IACHmB,EAAYx4X,KAAK,sBAGb,IAAIgB,MAAM,4EAAD,OAEPw3X,EAAYj4X,KAAK,QAC3B,EASa+3X,GAAY,SAACG,GAExB,OADY,IAAIn8S,IAAIm8S,EAAYlyX,OAAO0S,SAAStV,YACrCA,UACb,EAiCaxB,GAAW,SAAC++E,EAAkC1tE,GACzD,IAAI40U,EAAqB,KAEzB,OAAO,WAAwB,2BAApB5lV,EAAgB,yBAAhBA,EAAgB,gBACZ,MAAT4lV,GACF/vU,KAAK/U,aAAa8kV,GAGpBA,EAAQ/vU,KAAKtV,YAAW,WACtBqlV,EAAQ,KACRlnQ,EAAE,aAAI1+E,EACR,GAAGgR,EACL,CACF,EAmBa4hJ,GACT,SAACzzJ,EAAe+2X,EAAoBC,GAAkB,OAClDx4X,KAAKC,IAAIs4X,EAAYv4X,KAAKiuC,IAAIuqV,EAAYh3X,GAAO,EA8B5Ci3X,GAA4B,WAGvC,IAAMC,EAAyB,iBAG7B,GAAqD,QAAjD,EAAAryX,SAASunC,gBAAgB++B,aAAa,mBAAW,eAC3C16C,SAAS,gCACjB,OAAO,EAGT,IAIwBu1C,EAFjB,IAFwB,MAAjBnhE,SAASkP,KACnB7V,MAAM0lB,KAAK/e,SAASkP,KAAKs7C,iBAAiB,SAC1C,IAEoB,IAAxB,IAAK,EAAL,qBAA0B,CACxB,GAAkB,aADL,QACJ30D,KACP,OAAO,EAEV,UAAAurE,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAED,OAAO,CACT,CAnB+B,GA0B/B,OALKixT,GACH5hX,QAAQk/C,KACJ,mFAGC,kBAAM0iU,EAAwBtyX,OAAOm2I,iBAvDL,CAwDuB,CAChE,CA/ByC,GA0C5Bo8O,GAAe,WAC1B,IACMC,EAAsB,IAAI7iU,OAAO,OAAD,OADN,0BACqC,UAErE,OAAO,kBAAQ79C,KAAa2gX,oBACb3gX,KAAa2gX,mBAAmBC,WAC1C5gX,KAAKY,UAAYZ,KAAKY,SAASgyB,QAC/B5yB,KAAKY,SAASgyB,OAAOpwC,MAAMk+X,EAAqB,CACvD,CAR4B,GA+CfG,GAAa,WAAH,IAAI1lX,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAa,EAAC,OACrC,IAAIggC,SAAQ,SAAAG,GAAO,OAAI5wC,WAAW4wC,EAASngC,EAAG,GAAC,EAOtC2lX,GAAe,SACxB10X,EACA20G,GAAiB,IACjBmsB,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAuC,KAAI,OAC3C,IAAI/xF,SAAQ,SAAAG,GAOVlvC,EAAOqC,iBAAiBsyG,GANxB,SAAS2gM,EAAQtuQ,GACV85F,IAAaA,EAAU95F,KAC1BkI,EAAQlI,GACRhnC,EAAO22B,oBAAoBg+E,EAAW2gM,GAE1C,GAEF,GAAE,2UC9OOq/E,GAAyBp1X,OAAO,yBAChCq1X,GAAqBr1X,OAAO,qBAC5Bs1X,GAAqBt1X,OAAO,qBACnCu1X,GAA2Bv1X,OAAO,2BCZxC,GAAe8iH,GAAI,64BCAnB,GAAeA,GAAI,ysKCAnB,GAAeA,GAAI,8hCCIb0yQ,GAAiB1yQ,GAAI,o0OAgTjB2yQ,GAeAC,GA+BEC,IC5WN1zD,GAAa,IAAIhiR,QAEjBiiR,GAAW,SAAA7yD,GAAAn0P,EAAAgnT,EAAA7yD,GAAA,IAAAl0P,EAAAtB,EAAAqoT,GAEhB,SAAAA,EAAanzD,GAAU,IAAA3zP,EAyBpB,OAzBoBzR,EAAA,KAAAu4T,IAEtB9mT,EAAAD,EAAApf,KAAA,KAAOgzQ,IAEFozD,YAAc,GACnB/mT,EAAKgnT,cAAgB,CAAC,EACtBhnT,EAAKinT,cAAgB,KACrBjnT,EAAKknT,eAAiB,KAEtBlnT,EAAKmnT,YAAc,EACnBnnT,EAAKonT,WAAa,GAClBpnT,EAAKqnT,iBAAmB,EACxBrnT,EAAKsnT,gBAAkB,GAEvBtnT,EAAKunT,oBAAsB,CAC1BlkQ,SAAU,WACVwpG,OAAQ,SACRvhI,MAAO,QACPi4H,GAAI,aAELvjJ,EAAKwnT,sBAAwB,CAC5BnkQ,SAAU,eACVwpG,OAAQ,eACRvhI,MAAO,eACPi4H,GAAI,gBACHvjJ,CAEH,CA6TC,OA7TA3S,EAAAy5T,EAAA,EAAAxgU,IAAA,iBAAA/D,MAED,SAAgBy4F,GAIf,OAFAl3F,KAAKijU,YAAc/rO,EAEZl3F,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB04D,GAIjB,OAFAn3D,KAAKkjU,cAAgB/rQ,EAEdn3D,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB4kU,GAIf,OAFArjU,KAAKqjU,YAAcA,EAEZrjU,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAAU,IAAAu2C,EAAA,KAElCo1B,EAAS,IAAImsK,GAAYlwQ,KAAK6vQ,SAEpC9rK,EAAOwuK,QAASvyQ,KAAKk3F,MACrB6M,EAAO8uK,gBAAiB,eACxB9uK,EAAOyuK,iBAAkBxyQ,KAAKgwQ,eAC9BjsK,EAAO0uK,mBAAoBzyQ,KAAK8vQ,iBAEhC/rK,EAAOn4B,KAAM1jC,GAAK,SAAEiyH,GAEnBxrF,EAAK2lP,gBAAiBn6J,EAAQngB,GAASrpG,MAAOvY,EAE/C,GAAGq0C,EAAYr0C,EAEhB,GAAC,CAAA51B,IAAA,kBAAA/D,MAED,SAAiB07J,EAAQhiH,EAAUyrR,EAAcC,GAEhD,IAAMF,EAAa,CAClBC,aAAcA,GAAgB5jU,KAAKyjU,oBACnCI,eAAgBA,GAAkB7jU,KAAK0jU,sBACvCI,eAAiBF,GAGlB,OAAO5jU,KAAK+jU,eAAgB5pK,EAAQwpK,GAAajzR,KAAMyH,EAExD,GAAC,CAAA31C,IAAA,iBAAA/D,MAED,SAAgB07J,EAAQwpK,GAAa,IAiChCK,EAjCgCx0P,EAAA,KAE9By0P,EAAUl2Q,KAAKC,UAAW21Q,GAIhC,GAAKZ,GAAW30R,IAAK+rH,GAAW,CAE/B,IAAM+pK,EAAanB,GAAWhzS,IAAKoqI,GAEnC,GAAK+pK,EAAW1hU,MAAQyhU,EAEvB,OAAOC,EAAW5qP,QAEZ,GAA2B,IAAtB6gF,EAAOq3G,WAMlB,MAAM,IAAI1zQ,MAET,gHAOH,CAKA,IAAMqmU,EAASnkU,KAAKujU,mBACda,EAAWjqK,EAAOq3G,WAIlB6yD,EAAkBrkU,KAAKskU,WAAYH,EAAQC,GAC/C1zR,MAAM,SAAE6zR,GAIR,OAFAP,EAASO,EAEF,IAAIj0R,SAAS,SAAEG,EAAS8tC,GAE9BylP,EAAOxjM,WAAY2jM,GAAW,CAAE1zR,QAAAA,EAAS8tC,OAAAA,GAEzCylP,EAAOnyQ,YAAa,CAAEjtD,KAAM,SAAUw6B,GAAI+kS,EAAQR,WAAAA,EAAYxpK,OAAAA,GAAU,CAAEA,GAI3E,GAED,IACCzpH,MAAM,SAAEgQ,GAAO,OAAM8uB,EAAKg1P,gBAAiB9jR,EAAQoqH,SAAU,IA0B/D,OAtBAu5J,EACE1zR,OAAO,kBAAM,CAAI,IACjBD,MAAM,WAEDszR,GAAUG,GAEd30P,EAAKi1P,aAAcT,EAAQG,EAM7B,IAGDpB,GAAW9zS,IAAKkrI,EAAQ,CAEvB33J,IAAKyhU,EACL3qP,QAAS+qP,IAIHA,CAER,GAAC,CAAA7hU,IAAA,kBAAA/D,MAED,SAAiBimU,GAEhB,IAAM55J,EAAW,IAAI4a,GAEhBg/I,EAAa91T,OAEjBk8J,EAASkf,SAAU,IAAIxH,GAAiBkiJ,EAAa91T,MAAM7L,MAAO,IAInE,IAAM,IAAIrG,EAAI,EAAGA,EAAIgoU,EAAaxyP,WAAWt6E,OAAQ8E,IAAO,CAE3D,IAAMw5J,EAAYwuK,EAAaxyP,WAAYx1E,GACrCvD,EAAO+8J,EAAU/8J,KACjB4J,EAAQmzJ,EAAUnzJ,MAClB0/K,EAAWvsB,EAAUusB,SAE3B3X,EAASh4J,aAAc3Z,EAAM,IAAIqpL,GAAiBz/K,EAAO0/K,GAE1D,CAEA,OAAO3X,CAER,GAAC,CAAAtoK,IAAA,eAAA/D,MAED,SAAcypC,EAAK0oO,GAElB,IAAM7sK,EAAS,IAAImsK,GAAYlwQ,KAAK6vQ,SAKpC,OAJA9rK,EAAOwuK,QAASvyQ,KAAKijU,aACrBl/N,EAAO8uK,gBAAiBjC,GACxB7sK,EAAO0uK,mBAAoBzyQ,KAAK8vQ,iBAEzB,IAAIx/N,SAAS,SAAEG,EAAS8tC,GAE9BwlB,EAAOn4B,KAAM1jC,EAAKuI,OAASrmC,EAAWm0E,EAEvC,GAED,GAAC,CAAA/7E,IAAA,UAAA/D,MAED,WAIC,OAFAuB,KAAK2kU,eAEE3kU,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,WAAe,IAAA2rH,EAAA,KAEd,GAAKpqH,KAAKojU,eAAiB,OAAOpjU,KAAKojU,eAEvC,IAAMwB,EAA+B,kBAAhBC,aAAwD,OAA5B7kU,KAAKkjU,cAAct+T,KAC9DkgU,EAAmB,GAsCzB,OApCKF,EAEJE,EAAiBhoU,KAAMkD,KAAK+kU,aAAc,mBAAoB,UAI9DD,EAAiBhoU,KAAMkD,KAAK+kU,aAAc,wBAAyB,SACnED,EAAiBhoU,KAAMkD,KAAK+kU,aAAc,qBAAsB,iBAIjE/kU,KAAKojU,eAAiB9yR,QAAQxtC,IAAKgiU,GACjCp0R,MAAM,SAAEs0R,GAER,IAAMC,EAAYD,EAAW,GAEtBJ,IAENx6M,EAAK84M,cAAcgC,WAAaF,EAAW,IAI5C,IAAMhnP,EAAKmnP,GAAY1kU,WAEjB+vB,EAAO,CACZ,sBACAy0S,EACA,GACA,eACAjnP,EAAGtoD,UAAWsoD,EAAGxxE,QAAS,KAAQ,EAAGwxE,EAAG6wB,YAAa,OACpDxxG,KAAM,MAER+sH,EAAKo5M,gBAAkBpqP,IAAIC,gBAAiB,IAAIqjP,KAAM,CAAElsS,IAEzD,IAEMxwB,KAAKojU,cAEb,GAAC,CAAA5gU,IAAA,aAAA/D,MAED,SAAY0lU,EAAQC,GAAW,IAAAj5M,EAAA,KAE9B,OAAOnrH,KAAK2kU,eAAej0R,MAAM,WAEhC,GAAKy6E,EAAKm4M,WAAW1rU,OAASuzH,EAAKk4M,YAAc,CAEhD,IAAMW,EAAS,IAAItgU,OAAQynH,EAAKq4M,iBAEhCQ,EAAOxjM,WAAa,CAAC,EACrBwjM,EAAOoB,WAAa,CAAC,EACrBpB,EAAOqB,UAAY,EAEnBrB,EAAOnyQ,YAAa,CAAEjtD,KAAM,OAAQs+T,cAAe/3M,EAAK+3M,gBAExDc,EAAOpyQ,UAAY,SAAWtrD,GAE7B,IAAMo6C,EAAUp6C,EAAEo9B,KAElB,OAASgd,EAAQ97C,MAEhB,IAAK,SACJo/T,EAAOxjM,WAAY9/E,EAAQthB,IAAKqR,QAASiQ,GACzC,MAED,IAAK,QACJsjR,EAAOxjM,WAAY9/E,EAAQthB,IAAKm/C,OAAQ79B,GACxC,MAED,QACC3sC,QAAQwN,MAAO,2CAA6Cm/B,EAAQ97C,KAAO,KAI9E,EAEAumH,EAAKm4M,WAAWxmU,KAAMknU,EAEvB,MAEC74M,EAAKm4M,WAAW9pO,MAAM,SAAWx9F,EAAGuK,GAEnC,OAAOvK,EAAEqpU,UAAY9+T,EAAE8+T,WAAc,EAAI,CAE1C,IAID,IAAMrB,EAAS74M,EAAKm4M,WAAYn4M,EAAKm4M,WAAW1rU,OAAS,GAGzD,OAFAosU,EAAOoB,WAAYjB,GAAWC,EAC9BJ,EAAOqB,WAAajB,EACbJ,CAER,GAED,GAAC,CAAAxhU,IAAA,eAAA/D,MAED,SAAculU,EAAQG,GAErBH,EAAOqB,WAAarB,EAAOoB,WAAYjB,UAChCH,EAAOxjM,WAAY2jM,UACnBH,EAAOoB,WAAYjB,EAE3B,GAAC,CAAA3hU,IAAA,QAAA/D,MAED,WAECsV,QAAQC,IAAK,cAAehU,KAAKsjU,WAAW/mU,KAAK,SAAEynU,GAAM,OAAMA,EAAOqB,SAAS,IAEhF,GAAC,CAAA7iU,IAAA,UAAA/D,MAED,WAEC,IAAM,IAAI/B,EAAI,EAAGA,EAAIsD,KAAKsjU,WAAW1rU,SAAW8E,EAE/CsD,KAAKsjU,WAAY5mU,GAAI4oU,YAMtB,OAFAtlU,KAAKsjU,WAAW1rU,OAAS,EAElBoI,IAER,KAACgjU,CAAA,CA1Ve,CAASpzD,IAgW1B,SAASu1D,KAER,IAAIjC,EACAE,EA6JJ,SAASmC,EAAiBC,EAAOxzD,EAASyzD,EAAe94S,EAAe+4S,EAAexvK,GAEtF,IAAMyvK,EAAgBzvK,EAAU0vK,iBAE1BC,EADYJ,EAAcK,aACFH,EACxBn0D,EAAaq0D,EAAYH,EAAcvuI,kBACvC4uI,EAeP,SAA2BP,EAAOE,GAEjC,OAASA,GAER,KAAK7wK,aAAc,OAAO2wK,EAAMQ,WAChC,KAAK/wK,UAAW,OAAOuwK,EAAMS,QAC7B,KAAKjxK,WAAY,OAAOwwK,EAAMU,SAC9B,KAAKlsK,WAAY,OAAOwrK,EAAMW,SAC9B,KAAK5wN,WAAY,OAAOiwN,EAAMY,SAC9B,KAAKtxK,YAAa,OAAO0wK,EAAMa,UAC/B,KAAK9+N,YAAa,OAAOi+N,EAAMc,UAIjC,CA7BkBC,CAAkBf,EAAOE,GAEpCc,EAAMhB,EAAMiB,QAASj1D,GAC3BQ,EAAQ00D,kCAAmCjB,EAAevvK,EAAW6vK,EAAUv0D,EAAYg1D,GAC3F,IAAMzjU,EAAQ,IAAI2iU,EAAeF,EAAMmB,QAAQxsK,OAAQqsK,EAAKX,GAAYj1T,QAGxE,OAFA40T,EAAMoB,MAAOJ,GAEN,CACNrtU,KAAMwzB,EACN5pB,MAAOA,EACP0/K,SAAUkjJ,EAGZ,CA9KA/zQ,UAAY,SAAWtrD,GAEtB,IAAMo6C,EAAUp6C,EAAEo9B,KAElB,OAASgd,EAAQ97C,MAEhB,IAAK,OACJs+T,EAAgBxiR,EAAQwiR,cACxBE,EAAiB,IAAI9yR,SAAS,SAAWG,GAExCyyR,EAAc2D,eAAiB,SAAWrB,GAGzC/0R,EAAS,CAAE+0R,MAAOA,GAEnB,EAEAsB,mBAAoB5D,EAErB,IACA,MAED,IAAK,SACJ,IAAM/oK,EAASz5G,EAAQy5G,OACjBwpK,EAAajjR,EAAQijR,WAC3BP,EAAe1yR,MAAM,SAAEtyC,GAEtB,IAAMonU,EAAQpnU,EAAOonU,MACfxzD,EAAU,IAAIwzD,EAAMuB,QACpBC,EAAgB,IAAIxB,EAAMyB,cAChCD,EAAcE,KAAM,IAAIjyK,UAAWkF,GAAUA,EAAOq3G,YAEpD,IAEC,IAAM1mG,EA4BX,SAAyB06J,EAAOxzD,EAASg1D,EAAerD,GAEvD,IAGI8B,EACA0B,EAJEvD,EAAeD,EAAWC,aAC1BC,EAAiBF,EAAWE,eAK5BuD,EAAep1D,EAAQq1D,uBAAwBL,GAErD,GAAKI,IAAiB5B,EAAM8B,gBAE3B7B,EAAgB,IAAID,EAAMt6I,KAC1Bi8I,EAAiBn1D,EAAQu1D,mBAAoBP,EAAevB,OAEtD,IAAK2B,IAAiB5B,EAAMgC,YAOlC,MAAM,IAAI1pU,MAAO,gDALjB2nU,EAAgB,IAAID,EAAM7lC,WAC1BwnC,EAAiBn1D,EAAQy1D,yBAA0BT,EAAevB,EAMnE,CAEA,IAAO0B,EAAex+Q,MAA8B,IAAtB88Q,EAAce,IAE3C,MAAM,IAAI1oU,MAAO,uCAAyCqpU,EAAeO,aAI1E,IAAM58J,EAAW,CAAEl8J,MAAO,KAAMsjE,WAAY,IAG5C,IAAM,IAAMvlD,KAAiBi3S,EAAe,CAE3C,IAAM8B,EAAgBvwT,KAAM0uT,EAAgBl3S,IAExCupI,OAAS,EACTyxK,OAAW,EAMf,GAAKhE,EAAWG,aAEf6D,EAAc/D,EAAcj3S,GAC5BupI,EAAY87G,EAAQ41D,uBAAwBnC,EAAekC,OAErD,CAIN,IAAuB,KAFvBA,EAAc31D,EAAQ61D,eAAgBpC,EAAeD,EAAO5B,EAAcj3S,MAE/C,SAE3BupI,EAAY87G,EAAQ81D,aAAcrC,EAAekC,EAElD,CAEA78J,EAAS54F,WAAWp1E,KAAMyoU,EAAiBC,EAAOxzD,EAASyzD,EAAe94S,EAAe+4S,EAAexvK,GAEzG,CAGKkxK,IAAiB5B,EAAM8B,kBAE3Bx8J,EAASl8J,MAUX,SAAsB42T,EAAOxzD,EAASyzD,GAErC,IAAMsC,EAAWtC,EAAcuC,YACzBC,EAAwB,EAAXF,EACbv2D,EAA0B,EAAby2D,EAEbzB,EAAMhB,EAAMiB,QAASj1D,GAC3BQ,EAAQk2D,wBAAyBzC,EAAej0D,EAAYg1D,GAC5D,IAAM53T,EAAQ,IAAI24F,YAAai+N,EAAMmB,QAAQxsK,OAAQqsK,EAAKyB,GAAar3T,QAGvE,OAFA40T,EAAMoB,MAAOJ,GAEN,CAAEzjU,MAAO6L,EAAO6zK,SAAU,EAElC,CAvBmB0lJ,CAAa3C,EAAOxzD,EAASyzD,IAM/C,OAFAD,EAAM7oR,QAAS8oR,GAER36J,CAER,CAxGsBi5J,CAAgByB,EAAOxzD,EAASg1D,EAAerD,GAE1DjtI,EAAU5rB,EAAS54F,WAAW31E,KAAK,SAAEsW,GAAI,OAAMA,EAAK9P,MAAMo3J,MAAM,IAEjE2Q,EAASl8J,OAAQ8nL,EAAQ55L,KAAMguK,EAASl8J,MAAM7L,MAAMo3J,QAEzDhlJ,KAAK08C,YAAa,CAAEjtD,KAAM,SAAUw6B,GAAIshB,EAAQthB,GAAI0rI,SAAAA,GAAY4rB,EAEjE,CAAE,MAAQn1K,IAETxN,QAAQwN,MAAOA,IAEfpM,KAAK08C,YAAa,CAAEjtD,KAAM,QAASw6B,GAAIshB,EAAQthB,GAAI7d,MAAOA,GAAMm/B,SAEjE,CAAE,QAED8kR,EAAM7oR,QAASqqR,GACfxB,EAAM7oR,QAASq1N,EAEhB,CAED,IAKH,CAoID,CC9ee,IAETo6C,GAAU,SAAAj8C,GAAAn0P,EAAAowS,EAAAj8C,GAAA,IAAAl0P,EAAAtB,EAAAyxS,GAEf,SAAAA,EAAav8C,GAAU,IAAA3zP,EAsFlB,OAtFkBzR,EAAA,KAAA2hT,IAEtBlwS,EAAAD,EAAApf,KAAA,KAAOgzQ,IAEFw8C,YAAc,KACnBnwS,EAAKowS,WAAa,KAClBpwS,EAAKqwS,eAAiB,KAEtBrwS,EAAKswS,gBAAkB,GAEvBtwS,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAI2+N,GAAiC3+N,EAE7C,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAI4+N,GAA4B5+N,EAExC,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAI6+N,GAA0B7+N,EAEtC,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAI8+N,GAA6B9+N,EAEzC,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAI++N,GAAoC/+N,EAEhD,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAIg/N,GAA8Bh/N,EAE1C,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAIi/N,GAA2Bj/N,EAEvC,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAI4oS,GAAwC5oS,EAEpD,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAIk/N,GAAgCl/N,EAE5C,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAI6oS,GAAmC7oS,EAE/C,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAIm/N,GAAqBn/N,EAEjC,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAIo/N,GAAwBp/N,EAEpC,IAEA5xE,EAAKknD,UAAU,SAAW0qB,GAEzB,OAAO,IAAI8oS,GAAuB9oS,EAEnC,IAAI5xE,CAEL,CAqQC,OArQA3S,EAAA6iT,EAAA,EAAA5pT,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAE9B,IAEI23O,EAFE/iF,EAAQhtL,KAMb+vQ,EAF0B,KAAtB/vQ,KAAK+vQ,aAEM/vQ,KAAK+vQ,aAEK,KAAd/vQ,KAAKk3F,KAEDl3F,KAAKk3F,KAILuhL,GAAYmB,eAAgB1xO,GAO5CloC,KAAK6vQ,QAAQV,UAAWjnO,GAExB,IAAMilR,EAAW,SAAW7mT,GAEtB8xB,EAEJA,EAAS9xB,GAITyN,QAAQwN,MAAOjb,GAIhB0mL,EAAM6iF,QAAQR,UAAWnnO,GACzB8kJ,EAAM6iF,QAAQT,QAASlnO,EAExB,EAEM67D,EAAS,IAAImsK,GAAYlwQ,KAAK6vQ,SAEpC9rK,EAAOwuK,QAASvyQ,KAAKk3F,MACrB6M,EAAO8uK,gBAAiB,eACxB9uK,EAAOyuK,iBAAkBxyQ,KAAKgwQ,eAC9BjsK,EAAO0uK,mBAAoBzyQ,KAAK8vQ,iBAEhC/rK,EAAOn4B,KAAM1jC,GAAK,SAAWxE,GAE5B,IAECspJ,EAAMrsF,MAAOj9D,EAAMqsO,GAAc,SAAWq9C,GAE3CpzK,EAAQozK,GAERpgI,EAAM6iF,QAAQT,QAASlnO,EAExB,GAAGilR,EAEJ,CAAE,MAAQ7mT,KAET6mT,EAAU7mT,IAEX,CAED,GAAGmmE,EAAY0gP,EAEhB,GAAC,CAAA3qT,IAAA,iBAAA/D,MAED,SAAgB4tT,GAGf,OADArsT,KAAKqsT,YAAcA,EACZrsT,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,WAEC,MAAM,IAAIX,MAET,mGAIF,GAAC,CAAA0E,IAAA,gBAAA/D,MAED,SAAe6tT,GAGd,OADAtsT,KAAKssT,WAAaA,EACXtsT,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmB8tT,GAGlB,OADAvsT,KAAKusT,eAAiBA,EACfvsT,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU05C,GAQT,OANoD,IAA/Cn4C,KAAKwsT,gBAAgBhgT,QAAS2rC,IAElCn4C,KAAKwsT,gBAAgB1vT,KAAMq7C,GAIrBn4C,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAY05C,GAQX,OANoD,IAA/Cn4C,KAAKwsT,gBAAgBhgT,QAAS2rC,IAElCn4C,KAAKwsT,gBAAgB3+P,OAAQ7tD,KAAKwsT,gBAAgBhgT,QAAS2rC,GAAY,GAIjEn4C,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOilC,EAAMwzD,EAAM8iD,EAAQ5hH,GAE1B,IAAIqkN,EACEnwJ,EAAa,CAAC,EACdpiF,EAAU,CAAC,EAEjB,GAAqB,kBAATw5B,EAEX+4M,EAAO1uL,KAAK4yC,MAAOj9D,QAEb,GAAKA,aAAgBivB,YAAc,CAIzC,GAFc8lN,GAAY40C,WAAY,IAAI93M,WAAY7xE,EAAM,EAAG,MAEhD4pR,GAAgC,CAE9C,IAEChhO,EAAYihO,GAAWC,iBAAoB,IAAIC,GAAqB/pR,EAErE,CAAE,MAAQniB,IAGT,YADK6W,GAAUA,EAAS7W,IAGzB,CAEAk7N,EAAO1uL,KAAK4yC,MAAOrU,EAAYihO,GAAWC,iBAAkBpxS,QAE7D,MAECqgO,EAAO1uL,KAAK4yC,MAAO83K,GAAY40C,WAAY,IAAI93M,WAAY7xE,IAI7D,MAEC+4M,EAAO/4M,EAIR,QAAoBt5B,IAAfqyO,EAAKixE,OAAuBjxE,EAAKixE,MAAMr0T,QAAS,GAAM,EAErD++B,GAAUA,EAAS,IAAIt6B,MAAO,gFAFpC,CAOA,IAAMgwF,EAAS,IAAI6/N,GAAYlxE,EAAM,CAEpCvlJ,KAAMA,GAAQl3F,KAAK+vQ,cAAgB,GACnCt4H,YAAaz3I,KAAKy3I,YAClBu4H,cAAehwQ,KAAKgwQ,cACpBH,QAAS7vQ,KAAK6vQ,QACdy8C,WAAYtsT,KAAKssT,WACjBC,eAAgBvsT,KAAKusT,iBAItBz+N,EAAO8/N,WAAWp7C,iBAAkBxyQ,KAAKgwQ,eAEzC,IAAM,IAAItzQ,EAAI,EAAGA,EAAIsD,KAAKwsT,gBAAgB50T,OAAQ8E,IAAO,CAExD,IAAMqyG,EAAS/uG,KAAKwsT,gBAAiB9vT,GAAKoxF,GAC1C5jF,EAAS6kG,EAAO51G,MAAS41G,EAMzBziB,EAAYyiB,EAAO51G,OAAS,CAE7B,CAEA,GAAKsjP,EAAKoxE,eAET,IAAM,IAAInxT,EAAI,EAAGA,EAAI+/O,EAAKoxE,eAAej2T,SAAW8E,EAAI,CAEvD,IAAMoxT,EAAgBrxE,EAAKoxE,eAAgBnxT,GACrCqxT,EAAqBtxE,EAAKsxE,oBAAsB,GAEtD,OAASD,GAER,KAAKP,GAAWS,oBACf1hO,EAAYwhO,GAAkB,IAAIG,GAClC,MAED,KAAKV,GAAWW,sCACf5hO,EAAYwhO,GAAkB,IAAIK,GAClC,MAED,KAAKZ,GAAWa,2BACf9hO,EAAYwhO,GAAkB,IAAIO,GAAmC5xE,EAAMz8O,KAAKqsT,aAChF,MAED,KAAKkB,GAAWe,sBACfhiO,EAAYwhO,GAAkB,IAAIS,GAClC,MAED,KAAKhB,GAAWiB,sBACfliO,EAAYwhO,GAAkB,IAAIW,GAClC,MAED,QAEMV,EAAmBvhT,QAASshT,IAAmB,QAAkC1jT,IAA7BF,EAAS4jT,IAEjE/5S,QAAQk/C,KAAM,wCAA0C66P,EAAgB,MAM5E,CAIDhgO,EAAO4gO,cAAepiO,GACtBwB,EAAO0hB,WAAYtlG,GACnB4jF,EAAO6S,MAAOq5C,EAAQ5hH,EAzEtB,CA2ED,GAAC,CAAA51B,IAAA,aAAA/D,MAED,SAAYilC,EAAMwzD,GAEjB,IAAM81F,EAAQhtL,KAEd,OAAO,IAAIswC,SAAS,SAAWG,EAAS8tC,GAEvCyuG,EAAMrsF,MAAOj9D,EAAMwzD,EAAMzmD,EAAS8tC,EAEnC,GAED,KAAC6tO,CAAA,CA/Vc,CAASx8C,IAqWzB,SAAS++C,KAER,IAAIjqH,EAAU,CAAC,EAEf,MAAO,CAEN30K,IAAK,SAAWvtB,GAEf,OAAOkiM,EAASliM,EAEjB,EAEA4pB,IAAK,SAAW5pB,EAAKL,GAEpBuiM,EAASliM,GAAQL,CAElB,EAEAy+D,OAAQ,SAAWp+D,UAEXkiM,EAASliM,EAEjB,EAEAosT,UAAW,WAEVlqH,EAAU,CAAC,CAEZ,EAIF,CAMA,IAAM6oH,GAAa,CAClBC,gBAAiB,kBACjBY,2BAA4B,6BAC5BS,oBAAqB,sBACrBC,wBAAyB,0BACzBC,kBAAmB,oBACnBb,sCAAuC,sCACvCc,oBAAqB,sBACrBC,uBAAwB,yBACxBC,2BAA4B,6BAC5B2nE,0BAA2B,4BAC3B7oE,oBAAqB,sBACrBmB,qBAAsB,uBACtBC,mBAAoB,qBACpBd,sBAAuB,wBACvBE,sBAAuB,wBACvBsoE,gCAAiC,kCACjCznE,iBAAkB,mBAClBC,wBAAyB,0BACzBynE,wBAAyB,2BAQpB9pE,GAAmB,WAExB,SAAAA,EAAan/N,GAASrjF,EAAA,KAAAwiT,GAErBjtT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAWsB,oBAGvB7uT,KAAKoJ,MAAQ,CAAEgsC,KAAM,CAAC,EAAGm6Q,KAAM,CAAC,EAEjC,CA6GC,OA7GAhmT,EAAA0jT,EAAA,EAAAzqT,IAAA,YAAA/D,MAED,WAKC,IAHA,IAAMqvF,EAAS9tF,KAAK8tF,OACd0hO,EAAWxvT,KAAK8tF,OAAO2uJ,KAAKjyI,OAAS,GAEjCilN,EAAY,EAAGC,EAAaF,EAAS53T,OAAQ63T,EAAYC,EAAYD,IAAe,CAE7F,IAAME,EAAUH,EAAUC,GAErBE,EAAQrjO,YACRqjO,EAAQrjO,WAAYtsF,KAAK7G,YACiBiR,IAA1CulT,EAAQrjO,WAAYtsF,KAAK7G,MAAO+3E,OAEpC4c,EAAO8hO,YAAa5vT,KAAKoJ,MAAOumT,EAAQrjO,WAAYtsF,KAAK7G,MAAO+3E,MAIlE,CAED,GAAC,CAAA1uE,IAAA,aAAA/D,MAED,SAAYoxT,GAEX,IAAM/hO,EAAS9tF,KAAK8tF,OACd0yH,EAAW,SAAWqvG,EACxBC,EAAahiO,EAAO1kF,MAAM2mB,IAAKywL,GAEnC,GAAKsvG,EAAa,OAAOA,EAEzB,IAIIC,EAJEtzE,EAAO3uJ,EAAO2uJ,KAGduzE,IAFevzE,EAAKnwJ,YAAcmwJ,EAAKnwJ,WAAYtsF,KAAK7G,OAAY,CAAC,GAC9C21L,QAAU,IACX+gI,GAGtBroR,EAAQ,IAAI+zH,GAAO,eAEDnxJ,IAAnB4lT,EAASxoR,OAAsBA,EAAMmyH,UAAWq2J,EAASxoR,OAE9D,IAAMM,OAA2B19B,IAAnB4lT,EAASloR,MAAsBkoR,EAASloR,MAAQ,EAE9D,OAASkoR,EAASprT,MAEjB,IAAK,eACJmrT,EAAY,IAAIh5C,GAAkBvvO,IACxBjmC,OAAOg+D,SAAStwC,IAAK,EAAG,GAAK,GACvC8gS,EAAU3jS,IAAK2jS,EAAUxuT,QACzB,MAED,IAAK,SACJwuT,EAAY,IAAIx5C,GAAY/uO,IAClBkvI,SAAW5uI,EACrB,MAED,IAAK,QACJioR,EAAY,IAAIr6C,GAAWluO,IACjBkvI,SAAW5uI,EAErBkoR,EAAStnG,KAAOsnG,EAAStnG,MAAQ,CAAC,EAClCsnG,EAAStnG,KAAKunG,oBAAkD7lT,IAAjC4lT,EAAStnG,KAAKunG,eAA+BD,EAAStnG,KAAKunG,eAAiB,EAC3GD,EAAStnG,KAAKwnG,oBAAkD9lT,IAAjC4lT,EAAStnG,KAAKwnG,eAA+BF,EAAStnG,KAAKwnG,eAAiBjzT,KAAK00J,GAAK,EACrHo+J,EAAUn6J,MAAQo6J,EAAStnG,KAAKwnG,eAChCH,EAAUljG,SAAW,EAAMmjG,EAAStnG,KAAKunG,eAAiBD,EAAStnG,KAAKwnG,eACxEH,EAAUxuT,OAAOg+D,SAAStwC,IAAK,EAAG,GAAK,GACvC8gS,EAAU3jS,IAAK2jS,EAAUxuT,QACzB,MAED,QACC,MAAM,IAAIzD,MAAO,4CAA8CkyT,EAASprT,MAkB1E,OAZAmrT,EAAUxwP,SAAStwC,IAAK,EAAG,EAAG,GAE9B8gS,EAAUttH,MAAQ,OAEUr4L,IAAvB4lT,EAAS7jG,YAA0B4jG,EAAU5jG,UAAY6jG,EAAS7jG,WAEvE4jG,EAAU52T,KAAO20F,EAAOqiO,iBAAkBH,EAAS72T,MAAU,SAAW02T,GAExEC,EAAax/Q,QAAQG,QAASs/Q,GAE9BjiO,EAAO1kF,MAAMgjB,IAAKo0L,EAAUsvG,GAErBA,CAER,GAAC,CAAAttT,IAAA,uBAAA/D,MAED,SAAsBgxT,GAErB,IAAMt6S,EAAOnV,KACP8tF,EAAS9tF,KAAK8tF,OAEd6hO,EADO7hO,EAAO2uJ,KACCjyI,MAAOilN,GAEtBI,GADaF,EAAQrjO,YAAcqjO,EAAQrjO,WAAYtsF,KAAK7G,OAAY,CAAC,GACnD+3E,MAE5B,YAAoB9mE,IAAfylT,EAAkC,KAEhC7vT,KAAKowT,WAAYP,GAAan/Q,MAAM,SAAWwgC,GAErD,OAAO4c,EAAOuiO,YAAal7S,EAAK/L,MAAOymT,EAAY3+O,EAEpD,GAED,KAAC+7O,CAAA,CAvHuB,GAgInBgB,GAA2B,WAEhC,SAAAA,IAAcxjT,EAAA,KAAAwjT,GAEbjuT,KAAK7G,KAAOo0T,GAAWS,mBAExB,CAsCC,OAtCAzkT,EAAA0kT,EAAA,EAAAzrT,IAAA,kBAAA/D,MAED,WAEC,OAAOujL,EAER,GAAC,CAAAx/K,IAAA,eAAA/D,MAED,SAAc6xT,EAAgBC,EAAaziO,GAE1C,IAAMl2C,EAAU,GAEhB04Q,EAAe9oR,MAAQ,IAAI+zH,GAAO,EAAK,EAAK,GAC5C+0J,EAAe97R,QAAU,EAEzB,IAAMg8R,EAAoBD,EAAYE,qBAEtC,GAAKD,EAAoB,CAExB,GAAK7zT,MAAM0E,QAASmvT,EAAkBE,iBAAoB,CAEzD,IAAM3tT,EAAQytT,EAAkBE,gBAEhCJ,EAAe9oR,MAAMmyH,UAAW52J,GAChCutT,EAAe97R,QAAUzxB,EAAO,EAEjC,MAE4CqH,IAAvComT,EAAkBG,kBAEtB/4Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,MAAOE,EAAkBG,iBAAkBzhK,IAIjG,CAEA,OAAO5+G,QAAQxtC,IAAK80C,EAErB,KAACq2Q,CAAA,CA5C+B,GAqD3ByoE,GAAsC,WAE3C,SAAAA,EAAa5oS,GAASrjF,EAAA,KAAAisX,GAErB12X,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAWupE,+BAExB,CAuBC,OAvBAvtX,EAAAmtX,EAAA,EAAAl0X,IAAA,uBAAA/D,MAED,SAAsB0nL,EAAemqI,GAEpC,IACMC,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,IAAOoqI,EAAYjkO,aAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAE/D,OAAOm3C,QAAQG,UAIhB,IAAMumV,EAAmBzmE,EAAYjkO,WAAYtsF,KAAK7G,MAAO69X,iBAQ7D,YAN0B5sX,IAArB4sX,IAEJ1mE,EAAe9xI,kBAAoBw4M,GAI7B1mV,QAAQG,SAEhB,KAACimV,CAAA,CA9B0C,GAuCtCjqE,GAA+B,WAEpC,SAAAA,EAAa3+N,GAASrjF,EAAA,KAAAgiT,GAErBzsT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAWuB,uBAExB,CAoEC,OApEAvlT,EAAAkjT,EAAA,EAAAjqT,IAAA,kBAAA/D,MAED,SAAiB0nL,GAEhB,IACMoqI,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,OAAOoqI,EAAYjkO,YAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAEzD+tN,GAFyE,IAIjF,GAAC,CAAA1kN,IAAA,uBAAA/D,MAED,SAAsB0nL,EAAemqI,GAEpC,IAAMxiO,EAAS9tF,KAAK8tF,OACdyiO,EAAcziO,EAAO2uJ,KAAK9kE,UAAWwO,GAE3C,IAAOoqI,EAAYjkO,aAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAE/D,OAAOm3C,QAAQG,UAIhB,IAAMmH,EAAU,GAEV0uJ,EAAYiqH,EAAYjkO,WAAYtsF,KAAK7G,MA0B/C,QAxBmCiR,IAA9Bk8L,EAAUuqH,kBAEdP,EAAezxI,UAAYynB,EAAUuqH,sBAIFzmT,IAA/Bk8L,EAAUwqH,kBAEdl5Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,eAAgBhqH,EAAUwqH,wBAInC1mT,IAAvCk8L,EAAUyqH,2BAEdT,EAAexxI,mBAAqBwnB,EAAUyqH,+BAIF3mT,IAAxCk8L,EAAU0qH,2BAEdp5Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,wBAAyBhqH,EAAU0qH,iCAI9C5mT,IAArCk8L,EAAU2qH,yBAEdr5Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,qBAAsBhqH,EAAU2qH,8BAEpC7mT,IAA3Ck8L,EAAU2qH,uBAAuB55K,OAAsB,CAE3D,IAAMA,EAAQivD,EAAU2qH,uBAAuB55K,MAE/Ci5K,EAAepxI,qBAAuB,IAAI/pB,GAAS9d,EAAOA,EAE3D,CAID,OAAO/mG,QAAQxtC,IAAK80C,EAErB,KAAC60Q,CAAA,CA3EmC,GAoF/BkqE,GAAiC,WAEtC,SAAAA,EAAa7oS,GAASrjF,EAAA,KAAAksX,GAErB32X,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAWspE,yBAExB,CAwEC,OAxEAttX,EAAAotX,EAAA,EAAAn0X,IAAA,kBAAA/D,MAED,SAAiB0nL,GAEhB,IACMoqI,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,OAAOoqI,EAAYjkO,YAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAEzD+tN,GAFyE,IAIjF,GAAC,CAAA1kN,IAAA,uBAAA/D,MAED,SAAsB0nL,EAAemqI,GAEpC,IAAMxiO,EAAS9tF,KAAK8tF,OACdyiO,EAAcziO,EAAO2uJ,KAAK9kE,UAAWwO,GAE3C,IAAOoqI,EAAYjkO,aAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAE/D,OAAOm3C,QAAQG,UAIhB,IAAMmH,EAAU,GAEV0uJ,EAAYiqH,EAAYjkO,WAAYtsF,KAAK7G,MA4C/C,YA1CqCiR,IAAhCk8L,EAAU2wL,oBAEd3mE,EAAeuwD,YAAcv6K,EAAU2wL,wBAIF7sX,IAAjCk8L,EAAU4wL,oBAEdt/U,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,iBAAkBhqH,EAAU4wL,0BAI/C9sX,IAA7Bk8L,EAAU6wL,iBAEd7mE,EAAewwD,eAAiBx6K,EAAU6wL,qBAIO/sX,IAA7CkmT,EAAeywD,4BAEnBzwD,EAAeywD,0BAA4B,CAAE,IAAK,WAIJ32W,IAA1Ck8L,EAAU07K,8BAEd1xD,EAAeywD,0BAA2B,GAAMz6K,EAAU07K,kCAIZ53W,IAA1Ck8L,EAAU27K,8BAEd3xD,EAAeywD,0BAA2B,GAAMz6K,EAAU27K,kCAIZ73W,IAA1Ck8L,EAAU8wL,6BAEdx/U,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,0BAA2BhqH,EAAU8wL,8BAInF9mV,QAAQxtC,IAAK80C,EAErB,KAAC++U,CAAA,CA/EqC,GAwFjC/pE,GAA2B,WAEhC,SAAAA,EAAa9+N,GAASrjF,EAAA,KAAAmiT,GAErB5sT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAWyB,mBAExB,CA0DC,OA1DAzlT,EAAAqjT,EAAA,EAAApqT,IAAA,kBAAA/D,MAED,SAAiB0nL,GAEhB,IACMoqI,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,OAAOoqI,EAAYjkO,YAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAEzD+tN,GAFyE,IAIjF,GAAC,CAAA1kN,IAAA,uBAAA/D,MAED,SAAsB0nL,EAAemqI,GAEpC,IAAMxiO,EAAS9tF,KAAK8tF,OACdyiO,EAAcziO,EAAO2uJ,KAAK9kE,UAAWwO,GAE3C,IAAOoqI,EAAYjkO,aAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAE/D,OAAOm3C,QAAQG,UAIhB,IAAMmH,EAAU,GAEhB04Q,EAAejyI,WAAa,IAAI9iB,GAAO,EAAG,EAAG,GAC7C+0J,EAAehyI,eAAiB,EAChCgyI,EAAelyI,MAAQ,EAEvB,IAAMkoB,EAAYiqH,EAAYjkO,WAAYtsF,KAAK7G,MA0B/C,YAxBoCiR,IAA/Bk8L,EAAU4qH,kBAEdZ,EAAejyI,WAAW1kB,UAAW2sC,EAAU4qH,uBAIR9mT,IAAnCk8L,EAAU6qH,uBAEdb,EAAehyI,eAAiBgoB,EAAU6qH,2BAIN/mT,IAAhCk8L,EAAU8qH,mBAEdx5Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,gBAAiBhqH,EAAU8qH,kBAAmBliK,UAI1D9kJ,IAApCk8L,EAAU+qH,uBAEdz5Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,oBAAqBhqH,EAAU+qH,wBAI7E/gR,QAAQxtC,IAAK80C,EAErB,KAACg1Q,CAAA,CAjE+B,GA2E3BC,GAAkC,WAEvC,SAAAA,EAAa/+N,GAASrjF,EAAA,KAAAoiT,GAErB7sT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAW2B,0BAExB,CA0CC,OA1CA3lT,EAAAsjT,EAAA,EAAArqT,IAAA,kBAAA/D,MAED,SAAiB0nL,GAEhB,IACMoqI,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,OAAOoqI,EAAYjkO,YAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAEzD+tN,GAFyE,IAIjF,GAAC,CAAA1kN,IAAA,uBAAA/D,MAED,SAAsB0nL,EAAemqI,GAEpC,IAAMxiO,EAAS9tF,KAAK8tF,OACdyiO,EAAcziO,EAAO2uJ,KAAK9kE,UAAWwO,GAE3C,IAAOoqI,EAAYjkO,aAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAE/D,OAAOm3C,QAAQG,UAIhB,IAAMmH,EAAU,GAEV0uJ,EAAYiqH,EAAYjkO,WAAYtsF,KAAK7G,MAc/C,YAZsCiR,IAAjCk8L,EAAUgrH,qBAEdhB,EAAezvI,aAAeylB,EAAUgrH,yBAIFlnT,IAAlCk8L,EAAUirH,qBAEd35Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,kBAAmBhqH,EAAUirH,sBAI3EjhR,QAAQxtC,IAAK80C,EAErB,KAACi1Q,CAAA,CAjDsC,GA0DlCC,GAA4B,WAEjC,SAAAA,EAAah/N,GAASrjF,EAAA,KAAAqiT,GAErB9sT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAW4B,oBAExB,CA2CC,OA3CA5lT,EAAAujT,EAAA,EAAAtqT,IAAA,kBAAA/D,MAED,SAAiB0nL,GAEhB,IACMoqI,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,OAAOoqI,EAAYjkO,YAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAEzD+tN,GAFyE,IAIjF,GAAC,CAAA1kN,IAAA,uBAAA/D,MAED,SAAsB0nL,EAAemqI,GAEpC,IAAMxiO,EAAS9tF,KAAK8tF,OACdyiO,EAAcziO,EAAO2uJ,KAAK9kE,UAAWwO,GAE3C,IAAOoqI,EAAYjkO,aAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAE/D,OAAOm3C,QAAQG,UAIhB,IAAMmH,EAAU,GAEV0uJ,EAAYiqH,EAAYjkO,WAAYtsF,KAAK7G,MAE/Cm3T,EAAevvI,eAA0C32K,IAA9Bk8L,EAAUkrH,gBAAgClrH,EAAUkrH,gBAAkB,OAE7DpnT,IAA/Bk8L,EAAUmrH,kBAEd75Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,eAAgBhqH,EAAUmrH,mBAI/EnB,EAAervI,oBAAsBqlB,EAAUrlB,qBAAuB93H,IAEtE,IAAMuoQ,EAAaprH,EAAUplB,kBAAoB,CAAE,EAAG,EAAG,GAGzD,OAFAovI,EAAepvI,iBAAmB,IAAI3lB,GAAOm2J,EAAY,GAAKA,EAAY,GAAKA,EAAY,IAEpFphR,QAAQxtC,IAAK80C,EAErB,KAACk1Q,CAAA,CAlDgC,GA2D5BC,GAAyB,WAE9B,SAAAA,EAAaj/N,GAASrjF,EAAA,KAAAsiT,GAErB/sT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAWwB,iBAExB,CA8BC,OA9BAxlT,EAAAwjT,EAAA,EAAAvqT,IAAA,kBAAA/D,MAED,SAAiB0nL,GAEhB,IACMoqI,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,OAAOoqI,EAAYjkO,YAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAEzD+tN,GAFyE,IAIjF,GAAC,CAAA1kN,IAAA,uBAAA/D,MAED,SAAsB0nL,EAAemqI,GAEpC,IACMC,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,IAAOoqI,EAAYjkO,aAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAE/D,OAAOm3C,QAAQG,UAIhB,IAAM61J,EAAYiqH,EAAYjkO,WAAYtsF,KAAK7G,MAI/C,OAFAm3T,EAAexvH,SAAwB12L,IAAlBk8L,EAAUxF,IAAoBwF,EAAUxF,IAAM,IAE5DxwJ,QAAQG,SAEhB,KAACs8Q,CAAA,CArC6B,GA8CzBC,GAA8B,WAEnC,SAAAA,EAAal/N,GAASrjF,EAAA,KAAAuiT,GAErBhtT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAW0B,sBAExB,CA+CC,OA/CA1lT,EAAAyjT,EAAA,EAAAxqT,IAAA,kBAAA/D,MAED,SAAiB0nL,GAEhB,IACMoqI,EADSvwT,KAAK8tF,OACO2uJ,KAAK9kE,UAAWwO,GAE3C,OAAOoqI,EAAYjkO,YAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAEzD+tN,GAFyE,IAIjF,GAAC,CAAA1kN,IAAA,uBAAA/D,MAED,SAAsB0nL,EAAemqI,GAEpC,IAAMxiO,EAAS9tF,KAAK8tF,OACdyiO,EAAcziO,EAAO2uJ,KAAK9kE,UAAWwO,GAE3C,IAAOoqI,EAAYjkO,aAAgBikO,EAAYjkO,WAAYtsF,KAAK7G,MAE/D,OAAOm3C,QAAQG,UAIhB,IAAMmH,EAAU,GAEV0uJ,EAAYiqH,EAAYjkO,WAAYtsF,KAAK7G,MAE/Cm3T,EAAe5xI,uBAAiDt0K,IAA7Bk8L,EAAUqrH,eAA+BrrH,EAAUqrH,eAAiB,OAEpEvnT,IAA9Bk8L,EAAUsrH,iBAEdh6Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,uBAAwBhqH,EAAUsrH,kBAIvF,IAAMF,EAAaprH,EAAUurH,qBAAuB,CAAE,EAAG,EAAG,GAS5D,OARAvB,EAAe3xI,cAAgB,IAAIpjB,GAAOm2J,EAAY,GAAKA,EAAY,GAAKA,EAAY,SAEhDtnT,IAAnCk8L,EAAUwrH,sBAEdl6Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,mBAAoBhqH,EAAUwrH,qBAAsB5iK,KAIlG5+G,QAAQxtC,IAAK80C,EAErB,KAACo1Q,CAAA,CAtDkC,GA+D9BN,GAA0B,WAE/B,SAAAA,EAAa5+N,GAASrjF,EAAA,KAAAiiT,GAErB1sT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAW6B,kBAExB,CAmCC,OAnCA7lT,EAAAmjT,EAAA,EAAAlqT,IAAA,cAAA/D,MAED,SAAaszT,GAEZ,IAAMjkO,EAAS9tF,KAAK8tF,OACd2uJ,EAAO3uJ,EAAO2uJ,KAEdu1E,EAAav1E,EAAKl9E,SAAUwyJ,GAElC,IAAOC,EAAW1lO,aAAgB0lO,EAAW1lO,WAAYtsF,KAAK7G,MAE7D,OAAO,KAIR,IAAMmtM,EAAY0rH,EAAW1lO,WAAYtsF,KAAK7G,MACxC4qG,EAASjW,EAAO7sF,QAAQqrT,WAE9B,IAAOvoN,EAAS,CAEf,GAAK04I,EAAKsxE,oBAAsBtxE,EAAKsxE,mBAAmBvhT,QAASxM,KAAK7G,OAAU,EAE/E,MAAM,IAAI2E,MAAO,+EAKjB,OAAO,IAIT,CAEA,OAAOgwF,EAAOmkO,iBAAkBF,EAAczrH,EAAU9kM,OAAQuiG,EAEjE,KAAC2oN,CAAA,CA1C8B,GAmD1BC,GAAwB,WAE7B,SAAAA,EAAa7+N,GAASrjF,EAAA,KAAAkiT,GAErB3sT,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAOo0T,GAAW8B,iBACvBrvT,KAAKkyT,YAAc,IAEpB,CAoEC,OApEA3oT,EAAAojT,EAAA,EAAAnqT,IAAA,cAAA/D,MAED,SAAaszT,GAEZ,IAAM54T,EAAO6G,KAAK7G,KACZ20F,EAAS9tF,KAAK8tF,OACd2uJ,EAAO3uJ,EAAO2uJ,KAEdu1E,EAAav1E,EAAKl9E,SAAUwyJ,GAElC,IAAOC,EAAW1lO,aAAgB0lO,EAAW1lO,WAAYnzF,GAExD,OAAO,KAIR,IAAMmtM,EAAY0rH,EAAW1lO,WAAYnzF,GACnCqI,EAASi7O,EAAKh/E,OAAQ6oC,EAAU9kM,QAElCuiG,EAASjW,EAAOqkO,cACpB,GAAK3wT,EAAO4wT,IAAM,CAEjB,IAAMvb,EAAU/oN,EAAO7sF,QAAQ4uQ,QAAQH,WAAYluQ,EAAO4wT,KACzC,OAAZvb,IAAmB9yM,EAAS8yM,EAElC,CAEA,OAAO72S,KAAKqyT,gBAAgB3hR,MAAM,SAAWwhR,GAE5C,GAAKA,EAAc,OAAOpkO,EAAOmkO,iBAAkBF,EAAczrH,EAAU9kM,OAAQuiG,GAEnF,GAAK04I,EAAKsxE,oBAAsBtxE,EAAKsxE,mBAAmBvhT,QAASrT,IAAU,EAE1E,MAAM,IAAI2E,MAAO,6DAKlB,OAAOgwF,EAAOglL,YAAai/C,EAE5B,GAED,GAAC,CAAAvvT,IAAA,gBAAA/D,MAED,WAsBC,OApBOuB,KAAKkyT,cAEXlyT,KAAKkyT,YAAc,IAAI5hR,SAAS,SAAWG,GAE1C,IAAM0oG,EAAQ,IAAIm5K,MAIlBn5K,EAAMhnI,IAAM,kFAEZgnI,EAAMlnI,OAASknI,EAAMjnI,QAAU,WAE9Bu+B,EAA0B,IAAjB0oG,EAAM/qI,OAEhB,CAED,KAIMpO,KAAKkyT,WAEb,KAACvF,CAAA,CA5E4B,GAqFxBO,GAAsB,WAE3B,SAAAA,EAAap/N,GAASrjF,EAAA,KAAAyiT,GAErBltT,KAAK7G,KAAOo0T,GAAW+B,wBACvBtvT,KAAK8tF,OAASA,CAEf,CAoEC,OApEAvkF,EAAA2jT,EAAA,EAAA1qT,IAAA,iBAAA/D,MAED,SAAgBmQ,GAEf,IAAM6tO,EAAOz8O,KAAK8tF,OAAO2uJ,KACnB81E,EAAa91E,EAAK+1E,YAAa5jT,GAErC,GAAK2jT,EAAWjmO,YAAcimO,EAAWjmO,WAAYtsF,KAAK7G,MAAS,CAElE,IAAMs5T,EAAeF,EAAWjmO,WAAYtsF,KAAK7G,MAE3CghK,EAASn6J,KAAK8tF,OAAO4kO,cAAe,SAAUD,EAAat4J,QAC3D63G,EAAUhyQ,KAAK8tF,OAAO7sF,QAAQsrT,eAEpC,IAAOv6C,IAAaA,EAAQ2gD,UAAY,CAEvC,GAAKl2E,EAAKsxE,oBAAsBtxE,EAAKsxE,mBAAmBvhT,QAASxM,KAAK7G,OAAU,EAE/E,MAAM,IAAI2E,MAAO,sFAKjB,OAAO,IAIT,CAEA,OAAOq8J,EAAOzpH,MAAM,SAAWikB,GAE9B,IAAMk+P,EAAaJ,EAAaI,YAAc,EACxCrhD,EAAaihD,EAAajhD,YAAc,EAExC7zL,EAAQ80O,EAAa90O,MACrB8rG,EAASgpI,EAAaK,WAEtBtxT,EAAS,IAAI+zG,WAAY5gD,EAAKk+P,EAAYrhD,GAEhD,OAAKQ,EAAQqlH,sBAELrlH,EAAQqlH,sBAAuB15S,EAAO8rG,EAAQjoL,EAAQixT,EAAaj+Q,KAAMi+Q,EAAa3wT,QAAS4uC,MAAM,SAAWikB,GAEtH,OAAOA,EAAIwlG,MAEZ,IAKO63G,EAAQ4gD,MAAMliR,MAAM,WAE1B,IAAM54C,EAAS,IAAI66D,YAAagrB,EAAQ8rG,GAExC,OADAuoF,EAAQ+gD,iBAAkB,IAAIx9M,WAAYz9G,GAAU6lF,EAAO8rG,EAAQjoL,EAAQixT,EAAaj+Q,KAAMi+Q,EAAa3wT,QACpGhK,CAER,GAIF,GAED,CAEC,OAAO,IAIT,KAACo1T,CAAA,CA3E0B,GAqFtB0pE,GAAqB,WAE1B,SAAAA,EAAa9oS,GAASrjF,EAAA,KAAAmsX,GAErB52X,KAAK7G,KAAOo0T,GAAWwpE,wBACvB/2X,KAAK8tF,OAASA,CAEf,CAyIC,OAzIAvkF,EAAAqtX,EAAA,EAAAp0X,IAAA,iBAAA/D,MAED,SAAgBgxT,GAAY,IAAA9gP,EAAA,KAErB8tK,EAAOz8O,KAAK8tF,OAAO2uJ,KACnBkzE,EAAUlzE,EAAKjyI,MAAOilN,GAE5B,IAAOE,EAAQrjO,aAAgBqjO,EAAQrjO,WAAYtsF,KAAK7G,YACtCiR,IAAjBulT,EAAQt8H,KAER,OAAO,KAIR,IAI2C5uH,EAF3CC,EAAAoG,EAFgB2xK,EAAKg9E,OAAQ9J,EAAQt8H,MAIJqrI,YAAU,IAA3C,IAAAh6P,EAAAjpE,MAAAgpE,EAAAC,EAAA39D,KAAAkb,MAA8C,KAAlCiwR,EAASztO,EAAAhmE,MAEpB,GAAKyzS,EAAU19P,OAAS4hR,GAAgBsa,WACtCx+B,EAAU19P,OAAS4hR,GAAgBkhE,gBACnCplF,EAAU19P,OAAS4hR,GAAgBmhE,mBAChBntX,IAAnB8nS,EAAU19P,KAEX,OAAO,IAIT,CAAC,OAAA37B,GAAA6rD,EAAAp+D,EAAAuS,EAAA,SAAA6rD,EAAAj+D,GAAA,CAED,IACM+wX,EADe7nE,EAAQrjO,WAAYtsF,KAAK7G,MACX+4E,WAI7Bt6B,EAAU,GACVs6B,EAAa,CAAC,EAAEnH,EAAA,SAEVvoE,GAEXo1C,EAAQ96C,KAAM6xE,EAAKmf,OAAO4kO,cAAe,WAAY8kE,EAAeh1X,IAAQkuC,MAAM,SAAAovR,GAGjF,OADA5tP,EAAY1vE,GAAQs9T,EACb5tP,EAAY1vE,EAEpB,IAAM,EAPP,IAAM,IAAMA,KAAOg1X,EAAgBzsT,EAAvBvoE,GAWZ,OAAKo1C,EAAQhgD,OAAS,EAEd,MAIRggD,EAAQ96C,KAAMkD,KAAK8tF,OAAOkzO,eAAgBvR,IAEnCn/Q,QAAQxtC,IAAK80C,GAAUlH,MAAM,SAAAg5O,GAEnC,IAK0B5kN,EALpB2yT,EAAa/tG,EAAQ14N,MACrByoQ,EAASg+D,EAAWx0J,QAAUw0J,EAAW75W,SAAW,CAAE65W,GACtD95S,EAAQ+rM,EAAS,GAAI/rM,MACrB+5S,EAAkB,GAAG3yT,EAAA+F,EAEP2uP,GAAM,IAA1B,IAAA10P,EAAAtpE,MAAAqpE,EAAAC,EAAAh+D,KAAAkb,MAA6B,CAU5B,IAV4B,IAAjBoxK,EAAIvuH,EAAArmE,MAGTqI,EAAI,IAAI6pK,GACR3pK,EAAI,IAAI8/J,GACR7/J,EAAI,IAAI87J,GACRtnK,EAAI,IAAIqrK,GAAS,EAAG,EAAG,GAEvBkwC,EAAgB,IAAImmC,GAAe9pD,EAAKvoB,SAAUuoB,EAAKxa,SAAUl7F,GAE7DjhF,EAAI,EAAGA,EAAIihF,EAAOjhF,IAEtBw1E,EAAWylT,aAEf3wX,EAAE+jK,oBAAqB74F,EAAWylT,YAAaj7X,GAI3Cw1E,EAAW0lT,UAEf3wX,EAAE8jK,oBAAqB74F,EAAW0lT,SAAUl7X,GAIxCw1E,EAAW2lT,OAEfp8X,EAAEsvK,oBAAqB74F,EAAW2lT,MAAOn7X,GAI1Cs6M,EAAc8uK,YAAappX,EAAGoK,EAAEyqK,QAASvqK,EAAGC,EAAGxL,IAKhD,IAAM,IAAMkxB,KAAiBulD,EAEL,gBAAlBvlD,GACe,aAAlBA,GACkB,UAAlBA,GAED0mK,EAAKvoB,SAASh4J,aAAc6Z,EAAeulD,EAAYvlD,IAOzD6oJ,GAAS54K,UAAU8+J,KAAK7+J,KAAMm6M,EAAe3jB,GAG7C2jB,EAAc9gC,eAAgB,EAC9BvnG,EAAKmf,OAAOqxO,oBAAqBnoH,GAEjC0gL,EAAgB56X,KAAMk6M,EAEvB,CAAC,OAAAn+L,GAAAksD,EAAAz+D,EAAAuS,EAAA,SAAAksD,EAAAt+D,GAAA,CAED,OAAKgxX,EAAWx0J,SAEfw0J,EAAWt3X,QAEXs3X,EAAWrrW,IAAGtsB,MAAd23X,EAAoBC,GAEbD,GAIDC,EAAiB,EAEzB,IAED,KAACd,CAAA,CAhJyB,GAqJrBtpE,GAAgC,OAEhC0F,GAAuC,WAAvCA,GAAwD,QAExDvF,GAAmBlkT,GAExB,SAAAkkT,EAAa/pR,GAAOj5B,EAAA,KAAAgjT,GAEnBztT,KAAK7G,KAAOo0T,GAAWC,gBACvBxtT,KAAKoc,QAAU,KACfpc,KAAKwwB,KAAO,KAEZ,IAAMyiS,EAAa,IAAIrvD,SAAUlgO,EAAM,EAXF,IAmBrC,GANA1jC,KAAKkzT,OAAS,CACbC,MAAO16C,GAAY40C,WAAY,IAAI93M,WAAY7xE,EAAK9yB,MAAO,EAAG,KAC9DvX,QAAS45T,EAAWG,UAAW,GAAG,GAClCx7T,OAAQq7T,EAAWG,UAAW,GAAG,IAG7BpzT,KAAKkzT,OAAOC,QAAU7F,GAE1B,MAAM,IAAIxvT,MAAO,qDAEX,GAAKkC,KAAKkzT,OAAO75T,QAAU,EAEjC,MAAM,IAAIyE,MAAO,kDAQlB,IAJA,IAAMu1T,EAAsBrzT,KAAKkzT,OAAOt7T,OA7BH,GA8B/B07T,EAAY,IAAI1vD,SAAUlgO,EA9BK,IA+BjC6vR,EAAa,EAETA,EAAaF,GAAsB,CAE1C,IAAMG,EAAcF,EAAUF,UAAWG,GAAY,GACrDA,GAAc,EAEd,IAAME,EAAYH,EAAUF,UAAWG,GAAY,GAGnD,GAFAA,GAAc,EAETE,IAAcT,GAAoC,CAEtD,IAAMU,EAAe,IAAIn+M,WAAY7xE,EA3CF,GA2CyC6vR,EAAYC,GACxFxzT,KAAKoc,QAAUq8P,GAAY40C,WAAYqG,EAExC,MAAO,GAAKD,IAAcT,GAAmC,CAE5D,IAAMH,EAhD6B,GAgDiBU,EACpDvzT,KAAKwwB,KAAOkT,EAAK9yB,MAAOiiT,EAAYA,EAAaW,EAElD,CAIAD,GAAcC,CAEf,CAEA,GAAsB,OAAjBxzT,KAAKoc,QAET,MAAM,IAAIte,MAAO,4CAInB,IASKuwT,GAAiC,WAEtC,SAAAA,EAAa5xE,EAAM4vE,GAElB,GAFgC5hT,EAAA,KAAA4jT,IAEzBhC,EAEN,MAAM,IAAIvuT,MAAO,uDAIlBkC,KAAK7G,KAAOo0T,GAAWa,2BACvBpuT,KAAKy8O,KAAOA,EACZz8O,KAAKqsT,YAAcA,EACnBrsT,KAAKqsT,YAAYhyO,SAElB,CA2DC,OA3DA9wE,EAAA8kT,EAAA,EAAA7rT,IAAA,kBAAA/D,MAED,SAAiByzS,EAAWpkN,GAE3B,IAAM2uJ,EAAOz8O,KAAKy8O,KACZ4vE,EAAcrsT,KAAKqsT,YACnBsH,EAAkBzhB,EAAU5lN,WAAYtsF,KAAK7G,MAAOo5T,WACpDqB,EAAmB1hB,EAAU5lN,WAAYtsF,KAAK7G,MAAO+4E,WACrD2hP,EAAoB,CAAC,EACrBC,EAAyB,CAAC,EAC1BC,EAAmB,CAAC,EAE1B,IAAM,IAAMpnS,KAAiBinS,EAAmB,CAE/C,IAAMI,EAAqBC,GAAYtnS,IAAmBA,EAAc30B,cAExE67T,EAAmBG,GAAuBJ,EAAkBjnS,EAE7D,CAEA,IAAM,IAAMA,KAAiBulR,EAAUhgO,WAAa,CAEnD,IAAM8hP,EAAqBC,GAAYtnS,IAAmBA,EAAc30B,cAExE,QAA2CoS,IAAtCwpT,EAAkBjnS,GAAgC,CAEtD,IAAMunS,EAAcz3E,EAAK03E,UAAWjiB,EAAUhgO,WAAYvlD,IACpDynS,EAAgBC,GAAuBH,EAAYE,eAEzDL,EAAkBC,GAAuBI,EAAcj7T,KACvD26T,EAAwBE,IAAkD,IAA3BE,EAAYt3J,UAE5D,CAED,CAEA,OAAO9uE,EAAO4kO,cAAe,aAAciB,GAAkBjjR,MAAM,SAAW6hR,GAE7E,OAAO,IAAIjiR,SAAS,SAAWG,GAE9B47Q,EAAYiI,gBAAiB/B,GAAY,SAAWznJ,GAEnD,IAAM,IAAMn+I,KAAiBm+I,EAAS54F,WAAa,CAElD,IAAMgkF,EAAY4U,EAAS54F,WAAYvlD,GACjCiwI,EAAak3J,EAAwBnnS,QAEvBviB,IAAfwyJ,IAA2B1G,EAAU0G,WAAaA,EAExD,CAEAnsH,EAASq6H,EAEV,GAAG+oJ,EAAmBE,EAEvB,GAED,GAED,KAAC1F,CAAA,CA1EqC,GAmFjCE,GAA6B,WAElC,SAAAA,IAAc9jT,EAAA,KAAA8jT,GAEbvuT,KAAK7G,KAAOo0T,GAAWe,qBAExB,CAyCC,OAzCA/kT,EAAAglT,EAAA,EAAA/rT,IAAA,gBAAA/D,MAED,SAAe4iK,EAAS/oC,GAQvB,YAN4BluH,IAAvBkuH,EAAUi8L,UAEdxgT,QAAQk/C,KAAM,wCAA0CjzD,KAAK7G,KAAO,uCAI3CiR,IAArBkuH,EAAUvuF,aAA+C3/B,IAAvBkuH,EAAUghC,eAA8ClvJ,IAApBkuH,EAAU+e,QAOrFgqB,EAAUA,EAAQngK,aAEQkJ,IAArBkuH,EAAUvuF,QAEds3H,EAAQt3H,OAAO4vH,UAAWrhC,EAAUvuF,aAIT3/B,IAAvBkuH,EAAUghC,WAEd+H,EAAQ/H,SAAWhhC,EAAUghC,eAILlvJ,IAApBkuH,EAAU+e,OAEdgqB,EAAQn8H,OAAOy0H,UAAWrhC,EAAU+e,OAIrCgqB,EAAQ/B,aAAc,GAxBd+B,CA4BT,KAACktJ,CAAA,CA/CiC,GA8D7BiG,GAA0B,SAAA1yD,GAAA9lP,EAAAw4S,EAAA1yD,GAAA,IAAA1kH,EAAAziI,EAAA65S,GAE/B,SAAAA,EAAat6P,GAAS,IAAAsV,EAAA/kE,EAAA,KAAA+pT,IAErBhlP,EAAA4tE,EAAAvgJ,KAAA,OAEK43T,kCAAmC,EAGxC,IAAMC,EAA+B,CACpC,yBACA,mCACA,UACCr3T,KAAM,MAEFs3T,EAAiC,CACtC,2BACA,qCACA,UACCt3T,KAAM,MAEFu3T,EAA2B,CAChC,kCACA,yBACA,wDACA,oFACA,yCACA,UACCv3T,KAAM,MAEFw3T,EAA6B,CAClC,uCACA,2BACA,4DACA,kFACA,2CACA,UACCx3T,KAAM,MAEFy3T,EAA6B,CAClC,6BACA,0HACA,kFACA,+DACA,sHACA,2CACA,uDACA,4CACCz3T,KAAM,MAEF+wL,EAAW,CAChB3P,SAAU,CAAEhgL,OAAO,IAAI88J,IAAQI,OAAQ,WACvCo5J,WAAY,CAAEt2T,MAAO,GACrB2hL,YAAa,CAAE3hL,MAAO,MACtBu2T,cAAe,CAAEv2T,MAAO,OA2GA,OAxGzB+wE,EAAKylP,eAAiB7mI,EAEtB5+G,EAAKsuG,gBAAkB,SAAWqV,GAEjC,IAAM,IAAM+hI,KAAe9mI,EAE1B+E,EAAO/E,SAAU8mI,GAAgB9mI,EAAU8mI,GAI5C/hI,EAAOtE,eAAiBsE,EAAOtE,eAC7BlzL,QAAS,2BAA4B,0BACrCA,QAAS,2BAA4B,6BACrCA,QAAS,wCAAyC+4T,GAClD/4T,QAAS,wCAAyCg5T,GAClDh5T,QAAS,mCAAoCi5T,GAC7Cj5T,QAAS,mCAAoCk5T,GAC7Cl5T,QAAS,sCAAuCm5T,EAEnD,EAEAv2T,OAAOiL,iBAAgBgS,EAAAg0D,GAAQ,CAE9BivG,SAAU,CACT1uJ,IAAK,WAEJ,OAAOq+J,EAAS3P,SAAShgL,KAE1B,EACAwwB,IAAK,SAAW9nB,GAEfinL,EAAS3P,SAAShgL,MAAQ0I,CAE3B,GAGDi5K,YAAa,CACZrwJ,IAAK,WAEJ,OAAOq+J,EAAShO,YAAY3hL,KAE7B,EACAwwB,IAAK,SAAW9nB,GAEfinL,EAAShO,YAAY3hL,MAAQ0I,EAExBA,EAEJnH,KAAK2uL,QAAQwmI,gBAAkB,UAIxBn1T,KAAK2uL,QAAQwmI,eAItB,GAGDJ,WAAY,CACXhlS,IAAK,WAEJ,OAAOq+J,EAAS2mI,WAAWt2T,KAE5B,EACAwwB,IAAK,SAAW9nB,GAEfinL,EAAS2mI,WAAWt2T,MAAQ0I,CAE7B,GAGD6tT,cAAe,CACdjlS,IAAK,WAEJ,OAAOq+J,EAAS4mI,cAAcv2T,KAE/B,EACAwwB,IAAK,SAAW9nB,GAEfinL,EAAS4mI,cAAcv2T,MAAQ0I,EAE1BA,GAEJnH,KAAK2uL,QAAQymI,kBAAoB,GACjCp1T,KAAK2uL,QAAQ0mI,OAAS,YAIfr1T,KAAK2uL,QAAQymI,yBACbp1T,KAAK2uL,QAAQ0mI,OAItB,YAKK7lP,EAAK2uG,iBACL3uG,EAAK0uG,iBACL1uG,EAAK0wG,oBACL1wG,EAAKywG,aAEZzwG,EAAK4yG,UAAWloH,GAASsV,CAE1B,CAgBC,OAhBAjmE,EAAAirT,EAAA,EAAAhyT,IAAA,OAAA/D,MAED,SAAM+C,GAYL,OAVA0lI,GAAA5rH,EAAAk5S,EAAA53T,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKogL,YAAc5+K,EAAO4+K,YAC1BpgL,KAAKy+K,SAAS/iB,KAAMl6J,EAAOi9K,UAC3Bz+K,KAAKg1T,cAAgBxzT,EAAOwzT,cAC5Bh1T,KAAK+0T,WAAavzT,EAAOuzT,kBAClB/0T,KAAKm+K,iBACLn+K,KAAKk+K,iBACLl+K,KAAKkgL,oBACLlgL,KAAKigL,aACLjgL,IAER,KAACw0T,CAAA,CAnL8B,CAASvtG,IAwLnCknG,GAA2C,WAEhD,SAAAA,IAAc1jT,EAAA,KAAA0jT,GAEbnuT,KAAK7G,KAAOo0T,GAAWW,sCAEvBluT,KAAKs1T,yBAA2B,CAC/B,QACA,MACA,WACA,oBACA,QACA,iBACA,WACA,oBACA,cACA,UACA,YACA,YACA,gBACA,kBACA,oBACA,mBACA,cACA,WACA,gBACA,aACA,WACA,SACA,kBAGF,CAkGC,OAlGA/rT,EAAA4kT,EAAA,EAAA3rT,IAAA,kBAAA/D,MAED,WAEC,OAAO+1T,EAER,GAAC,CAAAhyT,IAAA,eAAA/D,MAED,SAAc6xT,EAAgBC,EAAaziO,GAE1C,IAAMynO,EAAwBhF,EAAYjkO,WAAYtsF,KAAK7G,MAE3Dm3T,EAAe9oR,MAAQ,IAAI+zH,GAAO,EAAK,EAAK,GAC5C+0J,EAAe97R,QAAU,EAEzB,IAAMojB,EAAU,GAEhB,GAAKj7C,MAAM0E,QAASk0T,EAAsBC,eAAkB,CAE3D,IAAMzyT,EAAQwyT,EAAsBC,cAEpClF,EAAe9oR,MAAMmyH,UAAW52J,GAChCutT,EAAe97R,QAAUzxB,EAAO,EAEjC,CAkBA,QAhB8CqH,IAAzCmrT,EAAsBE,gBAE1B79Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,MAAOiF,EAAsBE,eAAgBvmK,KAIlGohK,EAAe/xI,SAAW,IAAIhjB,GAAO,EAAK,EAAK,GAC/C+0J,EAAeyE,gBAAwD3qT,IAA3CmrT,EAAsBG,iBAAiCH,EAAsBG,iBAAmB,EAC5HpF,EAAe7xI,SAAW,IAAIljB,GAAO,EAAK,EAAK,GAE1C5+J,MAAM0E,QAASk0T,EAAsB5D,iBAEzCrB,EAAe7xI,SAAS9kB,UAAW47J,EAAsB5D,qBAIDvnT,IAApDmrT,EAAsBI,0BAA0C,CAEpE,IAAMC,EAAkBL,EAAsBI,0BAC9C/9Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,gBAAiBsF,IACrEh+Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,cAAesF,EAAiB1mK,IAErF,CAEA,OAAO5+G,QAAQxtC,IAAK80C,EAErB,GAAC,CAAAp1C,IAAA,iBAAA/D,MAED,SAAgB6xT,GAEf,IAAMz3I,EAAW,IAAI27I,GAA4BlE,GAwCjD,OAvCAz3I,EAAS8C,KAAM,EAEf9C,EAASrxI,MAAQ8oR,EAAe9oR,MAEhCqxI,EAASt8K,SAA6B6N,IAAvBkmT,EAAe/zT,IAAoB,KAAO+zT,EAAe/zT,IAExEs8K,EAASwG,SAAW,KACpBxG,EAASyG,kBAAoB,EAE7BzG,EAAS0G,WAAiCn1K,IAAzBkmT,EAAe/wI,MAAsB,KAAO+wI,EAAe/wI,MAC5E1G,EAAS2G,eAAiB,EAE1B3G,EAAS0F,SAAW+xI,EAAe/xI,SACnC1F,EAAS2F,uBAAyDp0K,IAArCkmT,EAAe9xI,kBAAkC,EAAM8xI,EAAe9xI,kBACnG3F,EAASsH,iBAA6C/1K,IAA/BkmT,EAAenwI,YAA4B,KAAOmwI,EAAenwI,YAExFtH,EAAS4G,aAAqCr1K,IAA3BkmT,EAAe7wI,QAAwB,KAAO6wI,EAAe7wI,QAChF5G,EAAS6G,UAAY,EAErB7G,EAAS8G,eAAyCv1K,IAA7BkmT,EAAe3wI,UAA0B,KAAO2wI,EAAe3wI,UACpF9G,EAAS+G,cAAgBvwB,GAEpBihK,EAAezwI,cAAchH,EAASgH,YAAcywI,EAAezwI,aAExEhH,EAASiH,gBAAkB,KAC3BjH,EAASkH,kBAAoB,EAC7BlH,EAASmH,iBAAmB,EAE5BnH,EAASuH,iBAA6Ch2K,IAA/BkmT,EAAelwI,YAA4B,KAAOkwI,EAAelwI,YACxFvH,EAAS4F,SAAW6xI,EAAe7xI,SAEnC5F,EAASm8I,mBAAiD5qT,IAAjCkmT,EAAe0E,cAA8B,KAAO1E,EAAe0E,cAC5Fn8I,EAASk8I,WAAazE,EAAeyE,WAErCl8I,EAASuG,SAAW,KAEpBvG,EAAS0H,YAAmCn2K,IAA1BkmT,EAAe/vI,OAAuB,KAAO+vI,EAAe/vI,OAC9E1H,EAAS4H,gBAAkB,EAEpB5H,CAER,KAACs1I,CAAA,CAlI+C,GA2I3CM,GAA6BllT,GAElC,SAAAklT,IAAchkT,EAAA,KAAAgkT,GAEbzuT,KAAK7G,KAAOo0T,GAAWiB,qBAExB,IAUKqH,GAA0B,SAAAhuD,GAAA7rP,EAAA65S,EAAAhuD,GAAA,IAAAtqH,EAAA5iI,EAAAk7S,GAE/B,SAAAA,EAAapvD,EAAoBC,EAAcC,EAAYT,GAAe,OAAAz7P,EAAA,KAAAorT,GAAAt4K,EAAA1gJ,KAAA,KAElE4pQ,EAAoBC,EAAcC,EAAYT,EAEtD,CA4DC,OA5DA38P,EAAAssT,EAAA,EAAArzT,IAAA,mBAAA/D,MAED,SAAkBmQ,GAUjB,IALA,IAAM9W,EAASkI,KAAKkmQ,aACnBn5P,EAAS/M,KAAK0mQ,aACd/B,EAAY3kQ,KAAK2kQ,UACjB56N,EAASn7B,EAAQ+1P,EAAY,EAAIA,EAExBjoQ,EAAI,EAAGA,IAAMioQ,EAAWjoQ,IAEjC5E,EAAQ4E,GAAMqQ,EAAQg9B,EAASrtC,GAIhC,OAAO5E,CAER,GAAC,CAAA0K,IAAA,eAAA/D,MAED,SAAco7K,EAAIxK,EAAI/3K,EAAGg4K,GAyBxB,IAvBA,IAAMx3K,EAASkI,KAAKkmQ,aACdn5P,EAAS/M,KAAK0mQ,aACdj9E,EAASzpL,KAAK2kQ,UAEdmxD,EAAmB,EAATrsI,EACVssI,EAAmB,EAATtsI,EAEVpoJ,EAAKiuI,EAAKD,EAEVroK,GAAM1P,EAAI+3K,GAAOhuI,EACjB0lO,EAAK//P,EAAIA,EACTiiQ,EAAMlC,EAAK//P,EAEXuiQ,EAAU1vF,EAAKk8I,EACfvsD,EAAUD,EAAUwsD,EAEpBzhK,GAAO,EAAI20G,EAAM,EAAIlC,EACrBnjG,EAAKqlG,EAAMlC,EACXp4F,EAAK,EAAIra,EACTqP,EAAKC,EAAKmjG,EAAK//P,EAIXtK,EAAI,EAAGA,IAAM+sL,EAAQ/sL,IAAO,CAErC,IAAMmwK,EAAK9/J,EAAQy8P,EAAU9sQ,EAAI+sL,GAC3BusI,EAAKjpT,EAAQy8P,EAAU9sQ,EAAIo5T,GAAYz0R,EACvCi2F,EAAKvqH,EAAQw8P,EAAU7sQ,EAAI+sL,GAC3BjiE,EAAKz6G,EAAQw8P,EAAU7sQ,GAAM2kC,EAEnCvpC,EAAQ4E,GAAMiyK,EAAK9B,EAAKlJ,EAAKqyJ,EAAK1hK,EAAKh9B,EAAKssC,EAAKp8C,CAElD,CAEA,OAAO1vH,CAER,KAAC+9T,CAAA,CAlE8B,CAASrvD,IAsEnCyvD,GAAK,IAAIlzJ,GAETmzJ,GAAoC,SAAAC,GAAAn6S,EAAAk6S,EAAAC,GAAA,IAAAl4K,EAAAtjI,EAAAu7S,GAAA,SAAAA,IAAA,OAAAzrT,EAAA,KAAAyrT,GAAAj4K,EAAAn+I,MAAA,KAAAG,UAAA,CAUxC,OAVwCsJ,EAAA2sT,EAAA,EAAA1zT,IAAA,eAAA/D,MAEzC,SAAco7K,EAAIxK,EAAI/3K,EAAGg4K,GAExB,IAAMx3K,EAAMovI,GAAA5rH,EAAA46S,EAAAt5T,WAAA,qBAAAC,KAAA,KAAuBg9K,EAAIxK,EAAI/3K,EAAGg4K,GAI9C,OAFA2mJ,GAAGt8J,UAAW7hK,GAAS+oH,YAAYt5B,QAASzvF,GAErCA,CAER,KAACo+T,CAAA,CAVwC,CAASL,IAqB7CO,GAAkB,CACvBmZ,MAAO,KAEPuoD,WAAY,MACZC,WAAY,MACZC,WAAY,MACZC,WAAY,MACZC,WAAY,MACZ9gE,OAAQ,KACR+gE,OAAQ,MACRC,WAAY,MACZC,OAAQ,EACRC,MAAO,EACPC,UAAW,EACXC,WAAY,EACZ9nD,UAAW,EACX4mD,eAAgB,EAChBC,aAAc,EACdhnD,cAAe,KACfkoD,eAAgB,MAGXpkE,GAAwB,CAC7B,KAAMp/J,UACN,KAAM1/C,WACN,KAAMy/C,WACN,KAAMF,YACN,KAAMvtD,YACN,KAAMstD,cAGDwhK,GAAgB,CACrB,KAAM7rK,GACN,KAAMK,GACN,KAAMJ,GACN,KAAMK,GACN,KAAMH,GACN,KAAMK,IAGDsrK,GAAkB,CACvB,MAAOhsK,GACP,MAAOC,GACP,MAAOF,IAGFksK,GAAmB,CACxB,OAAU,EACV,KAAQ,EACR,KAAQ,EACR,KAAQ,EACR,KAAQ,EACR,KAAQ,EACR,KAAQ,IAGHtC,GAAa,CAClBuC,SAAU,WACVC,OAAQ,SACRC,QAAS,UACTC,WAAY,KACZC,WAAY,MACZC,QAAS,QACTC,UAAW,aACXC,SAAU,aAGLC,GAAkB,CACvB3/K,MAAO,QACP4/K,YAAa,WACb39J,SAAU,aACVo4C,QAAS,yBAGJwlH,GAAgB,CACrBC,iBAAa/sT,EAEbgtT,OAAQ7oK,GACR8oK,KAAM/oK,IAGDgpK,GACG,SADHA,GAEC,OAFDA,GAGE,QAMR,SAASC,GAAuBnuT,GAgB/B,YAdoCgB,IAA/BhB,EAAwB,kBAE5BA,EAAwB,gBAAK,IAAI69M,GAAsB,CACtDz/K,MAAO,SACP+2I,SAAU,EACVJ,UAAW,EACXD,UAAW,EACXnC,aAAa,EACbQ,WAAW,EACXV,KAAM10B,MAKD/9I,EAAwB,eAEhC,CAEA,SAASouT,GAAgCC,EAAiBt1T,EAAQu1T,GAIjE,IAAM,IAAMv+T,KAAQu+T,EAAUprO,gBAEIliF,IAA5BqtT,EAAiBt+T,KAErBgJ,EAAO88J,SAAS04J,eAAiBx1T,EAAO88J,SAAS04J,gBAAkB,CAAC,EACpEx1T,EAAO88J,SAAS04J,eAAgBx+T,GAASu+T,EAAUprO,WAAYnzF,GAMlE,CAMA,SAASy+T,GAAwBz1T,EAAQ01T,QAEhBztT,IAAnBytT,EAAQC,SAEmB,kBAAnBD,EAAQC,OAEnBv5T,OAAOmgB,OAAQvc,EAAO88J,SAAU44J,EAAQC,QAIxC/jT,QAAQk/C,KAAM,sDAAwD4kQ,EAAQC,QAMjF,CA+FA,SAASxsI,GAAoB+H,EAAM0kI,GAIlC,GAFA1kI,EAAK/H,0BAEoBlhL,IAApB2tT,EAAQrmH,QAEZ,IAAM,IAAIh1M,EAAI,EAAGowD,EAAKirQ,EAAQrmH,QAAQ95M,OAAQ8E,EAAIowD,EAAIpwD,IAErD22L,EAAK9H,sBAAuB7uL,GAAMq7T,EAAQrmH,QAASh1M,GAOrD,GAAKq7T,EAAQD,QAAUn7T,MAAM0E,QAAS02T,EAAQD,OAAOE,aAAgB,CAEpE,IAAMA,EAAcD,EAAQD,OAAOE,YAEnC,GAAK3kI,EAAK9H,sBAAsB3zL,SAAWogU,EAAYpgU,OAAS,CAE/Dy7L,EAAK7H,sBAAwB,CAAC,EAE9B,IAAM,IAAI9uL,EAAI,EAAGowD,EAAKkrQ,EAAYpgU,OAAQ8E,EAAIowD,EAAIpwD,IAEjD22L,EAAK7H,sBAAuBwsI,EAAat7T,IAAQA,CAInD,MAECqX,QAAQk/C,KAAM,uEAIhB,CAED,CAEA,SAASglQ,GAAoBC,GAE5B,IAAMC,EAAiBD,EAAa5rO,YAAc4rO,EAAa5rO,WAAYihO,GAAWa,4BAetF,OAZK+J,EAEU,SAAWA,EAAe5F,WACpC,IAAM4F,EAAehxI,QACrB,IAAMixI,GAAqBD,EAAejmP,YAIhCgmP,EAAa/wI,QAAU,IAAMixI,GAAqBF,EAAahmP,YAAe,IAAMgmP,EAAa1jR,IAMjH,CAEA,SAAS4jR,GAAqBlmP,GAM7B,IAJA,IAAImmP,EAAgB,GAEdz2T,EAAOrD,OAAOqD,KAAMswE,GAAasnB,OAE7B98F,EAAI,EAAGowD,EAAKlrD,EAAKhK,OAAQ8E,EAAIowD,EAAIpwD,IAE1C27T,GAAiBz2T,EAAMlF,GAAM,IAAMw1E,EAAYtwE,EAAMlF,IAAQ,IAI9D,OAAO27T,CAER,CAEA,SAASC,GAA6Bn+S,GAKrC,OAASA,GAER,KAAK86I,UACJ,OAAO,EAAI,IAEZ,KAAK1/C,WACJ,OAAO,EAAI,IAEZ,KAAKy/C,WACJ,OAAO,EAAI,MAEZ,KAAKF,YACJ,OAAO,EAAI,MAEZ,QACC,MAAM,IAAIh3J,MAAO,qEAIpB,CAWA,IAEM6vT,GAAU,WAEf,SAAAA,IAAuC,IAA1BlxE,EAAIx8O,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAGgB,EAAOhB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAACwK,EAAA,KAAAkjT,GAEnC3tT,KAAKy8O,KAAOA,EACZz8O,KAAKssF,WAAa,CAAC,EACnBtsF,KAAKkK,QAAU,CAAC,EAChBlK,KAAKiB,QAAUA,EAGfjB,KAAKoJ,MAAQ,IAAIulT,GAGjB3uT,KAAKu4T,aAAe,IAAIp7R,IAGxBn9B,KAAKw4T,eAAiB,CAAC,EAGvBx4T,KAAKy4T,UAAY,CAAErjR,KAAM,CAAC,EAAGm6Q,KAAM,CAAC,GACpCvvT,KAAK04T,YAAc,CAAEtjR,KAAM,CAAC,EAAGm6Q,KAAM,CAAC,GACtCvvT,KAAK24T,WAAa,CAAEvjR,KAAM,CAAC,EAAGm6Q,KAAM,CAAC,GAErCvvT,KAAK44T,YAAc,CAAC,EACpB54T,KAAK64T,aAAe,CAAC,EAGrB74T,KAAK84T,cAAgB,CAAC,EAKtB,IAAMzuS,GAA4E,IAAjE,iCAAiCnyB,KAAMkE,UAAUC,WAC5D+tB,EAAYhuB,UAAUC,UAAUmQ,QAAS,YAAgB,EACzDksX,EAAiBtuW,EAAYhuB,UAAUC,UAAU1E,MAAO,uBAAyB,IAAQ,EAE7D,qBAAtBslR,mBAAqC5yP,GAAcD,GAAasuW,EAAiB,GAE5F14X,KAAKmyT,cAAgB,IAAIl+C,GAAej0Q,KAAKiB,QAAQ4uQ,SAIrD7vQ,KAAKmyT,cAAgB,IAAIt1C,GAAmB78Q,KAAKiB,QAAQ4uQ,SAI1D7vQ,KAAKmyT,cAAcv+C,eAAgB5zQ,KAAKiB,QAAQw2I,aAChDz3I,KAAKmyT,cAAc3/C,iBAAkBxyQ,KAAKiB,QAAQ+uQ,eAElDhwQ,KAAK4tT,WAAa,IAAI19C,GAAYlwQ,KAAKiB,QAAQ4uQ,SAC/C7vQ,KAAK4tT,WAAW/6C,gBAAiB,eAEC,oBAA7B7yQ,KAAKiB,QAAQw2I,aAEjBz3I,KAAK4tT,WAAWn7C,oBAAoB,EAItC,CA0sDC,OA1sDAlpQ,EAAAokT,EAAA,EAAAnrT,IAAA,gBAAA/D,MAED,SAAe6tF,GAEdtsF,KAAKssF,WAAaA,CAEnB,GAAC,CAAA9pF,IAAA,aAAA/D,MAED,SAAYyL,GAEXlK,KAAKkK,QAAUA,CAEhB,GAAC,CAAA1H,IAAA,QAAA/D,MAED,SAAOu7I,EAAQ5hH,GAEd,IAAM01D,EAAS9tF,KACTy8O,EAAOz8O,KAAKy8O,KACZnwJ,EAAatsF,KAAKssF,WAGxBtsF,KAAKoJ,MAAMwlT,YAGX5uT,KAAK+4T,YAAY,SAAWC,GAE3B,OAAOA,EAAIC,WAAaD,EAAIC,WAE7B,IAEA3oR,QAAQxtC,IAAK9C,KAAK+4T,YAAY,SAAWC,GAExC,OAAOA,EAAIE,YAAcF,EAAIE,YAE9B,KAAMxoR,MAAM,WAEX,OAAOJ,QAAQxtC,IAAK,CAEnBgrF,EAAOqrO,gBAAiB,SACxBrrO,EAAOqrO,gBAAiB,aACxBrrO,EAAOqrO,gBAAiB,WAI1B,IAAIzoR,MAAM,SAAWgG,GAEpB,IAAM5+C,EAAS,CACdi6L,MAAOr7I,EAAc,GAAK+lM,EAAK1qD,OAAS,GACxCqnI,OAAQ1iR,EAAc,GACtB0/H,WAAY1/H,EAAc,GAC1BisL,QAASjsL,EAAc,GACvBg3Q,MAAOjxE,EAAKixE,MACZ5/N,OAAQA,EACRmxE,SAAU,CAAC,GAGZu4J,GAAgClrO,EAAYx0F,EAAQ2kP,GAEpDm7E,GAAwB9/T,EAAQ2kP,GAEhCnsM,QAAQxtC,IAAKgrF,EAAOirO,YAAY,SAAWC,GAE1C,OAAOA,EAAIK,WAAaL,EAAIK,UAAWvhU,EAExC,KAAM44C,MAAM,WAEXspG,EAAQliJ,EAET,GAED,IAAI64C,MAAOvY,EAEZ,GAEA,CAAA51B,IAAA,YAAA/D,MAGA,WAQC,IANA,IAAM+wT,EAAWxvT,KAAKy8O,KAAKjyI,OAAS,GAC9B8uN,EAAWt5T,KAAKy8O,KAAK88E,OAAS,GAC9BC,EAAWx5T,KAAKy8O,KAAKg9E,QAAU,GAI3Bn+E,EAAY,EAAGo+E,EAAaJ,EAAS1hU,OAAQ0jP,EAAYo+E,EAAYp+E,IAI9E,IAFA,IAAM/X,EAAS+1F,EAAUh+E,GAAY/X,OAE3B7mO,EAAI,EAAGowD,EAAKy2K,EAAO3rO,OAAQ8E,EAAIowD,EAAIpwD,IAE5C8yT,EAAUjsF,EAAQ7mO,IAAMo/O,QAAS,EAQnC,IAAM,IAAI2zE,EAAY,EAAGC,EAAaF,EAAS53T,OAAQ63T,EAAYC,EAAYD,IAAe,CAE7F,IAAME,EAAUH,EAAUC,QAEJrlT,IAAjBulT,EAAQt8H,OAEZrzL,KAAK4vT,YAAa5vT,KAAKy4T,UAAW9I,EAAQt8H,WAKpBjpL,IAAjBulT,EAAQgK,OAEZH,EAAU7J,EAAQt8H,MAAO5a,eAAgB,SAMnBruK,IAAnBulT,EAAQ/nJ,QAEZ5nK,KAAK4vT,YAAa5vT,KAAK04T,YAAa/I,EAAQ/nJ,OAI9C,CAED,GAEA,CAAAplK,IAAA,cAAA/D,MASA,SAAa2K,EAAOwF,QAEJxE,IAAVwE,SAEwBxE,IAAxBhB,EAAMgsC,KAAMxmC,KAEhBxF,EAAMgsC,KAAMxmC,GAAUxF,EAAMmmT,KAAM3gT,GAAU,GAI7CxF,EAAMgsC,KAAMxmC,KAEb,GAEA,CAAApM,IAAA,cAAA/D,MACA,SAAa2K,EAAOwF,EAAOzM,GAAS,IAAAioH,EAAA,KAEnC,GAAKhhH,EAAMgsC,KAAMxmC,IAAW,EAAI,OAAOzM,EAEvC,IAAM4b,EAAM5b,EAAOjB,QAyBnB,OArBuB,SAAjB04T,EAAmBC,EAAU34T,GAElC,IAAM44T,EAAW1vM,EAAKmuM,aAAaxoS,IAAK8pS,GACvB,MAAZC,GAEJ1vM,EAAKmuM,aAAatpS,IAAK/tB,EAAO44T,GAE9B,IAEsDrpL,EAFtDC,EAAA5lE,EAE2B+uP,EAASj8S,SAASm1C,WAAS,IAAvD,IAAA29E,EAAAj1I,MAAAg1I,EAAAC,EAAA3pI,KAAAkb,MAA0D,KAAA02W,EAAAj3W,EAAA+uH,EAAAhyI,MAAA,GAA5C/B,EAACi8X,EAAA,GAEd/+D,EAFqB++D,EAAA,GAEEz3X,EAAM0c,SAAUlhB,GAExC,CAAC,OAAAmc,GAAA63H,EAAApqI,EAAAuS,EAAA,SAAA63H,EAAAjqI,GAAA,CAEF,CAEAmzT,CAAgBz3T,EAAQ4b,GAExBA,EAAI5kB,MAAQ,aAAiBiQ,EAAMmmT,KAAM3gT,KAElCmP,CAER,GAAC,CAAAvb,IAAA,aAAA/D,MAED,SAAYS,GAEX,IAAMotF,EAAa/tF,OAAOwO,OAAQ/M,KAAKkK,SACvCoiF,EAAWxvF,KAAMkD,MAEjB,IAAM,IAAItD,EAAI,EAAGA,EAAI4vF,EAAW10F,OAAQ8E,IAAO,CAE9C,IAAM5E,EAASoH,EAAMotF,EAAY5vF,IAEjC,GAAK5E,EAAS,OAAOA,CAEtB,CAEA,OAAO,IAER,GAAC,CAAA0K,IAAA,aAAA/D,MAED,SAAYS,GAEX,IAAMotF,EAAa/tF,OAAOwO,OAAQ/M,KAAKkK,SACvCoiF,EAAWv8E,QAAS/P,MAIpB,IAFA,IAAM43C,EAAU,GAENl7C,EAAI,EAAGA,EAAI4vF,EAAW10F,OAAQ8E,IAAO,CAE9C,IAAM5E,EAASoH,EAAMotF,EAAY5vF,IAE5B5E,GAAS8/C,EAAQ96C,KAAMhF,EAE7B,CAEA,OAAO8/C,CAER,GAEA,CAAAp1C,IAAA,gBAAA/D,MAMA,SAAemG,EAAMgK,GAEpB,IAAM4xM,EAAW57M,EAAO,IAAMgK,EAC1BkhT,EAAa9vT,KAAKoJ,MAAM2mB,IAAKywL,GAEjC,IAAOsvG,EAAa,CAEnB,OAASlrT,GAER,IAAK,QACJkrT,EAAa9vT,KAAKg6T,UAAWprT,GAC7B,MAED,IAAK,OACJkhT,EAAa9vT,KAAKi6T,SAAUrrT,GAC5B,MAED,IAAK,OACJkhT,EAAa9vT,KAAKk6T,YAAY,SAAWlB,GAExC,OAAOA,EAAImB,UAAYnB,EAAImB,SAAUvrT,EAEtC,IACA,MAED,IAAK,WACJkhT,EAAa9vT,KAAKo6T,aAAcxrT,GAChC,MAED,IAAK,aACJkhT,EAAa9vT,KAAKk6T,YAAY,SAAWlB,GAExC,OAAOA,EAAIqB,gBAAkBrB,EAAIqB,eAAgBzrT,EAElD,IACA,MAED,IAAK,SACJkhT,EAAa9vT,KAAKs6T,WAAY1rT,GAC9B,MAED,IAAK,WACJkhT,EAAa9vT,KAAKk6T,YAAY,SAAWlB,GAExC,OAAOA,EAAIuB,cAAgBvB,EAAIuB,aAAc3rT,EAE9C,IACA,MAED,IAAK,UACJkhT,EAAa9vT,KAAKk6T,YAAY,SAAWlB,GAExC,OAAOA,EAAIlmD,aAAekmD,EAAIlmD,YAAalkQ,EAE5C,IACA,MAED,IAAK,OACJkhT,EAAa9vT,KAAKw6T,SAAU5rT,GAC5B,MAED,IAAK,YACJkhT,EAAa9vT,KAAKk6T,YAAY,SAAWlB,GAExC,OAAOA,EAAIyB,eAAiBzB,EAAIyB,cAAe7rT,EAEhD,IACA,MAED,IAAK,SACJkhT,EAAa9vT,KAAK06T,WAAY9rT,GAC9B,MAED,QACC,MAAM,IAAI9Q,MAAO,iBAAmB8G,GAItC5E,KAAKoJ,MAAMgjB,IAAKo0L,EAAUsvG,EAE3B,CAEA,OAAOA,CAER,GAEA,CAAAttT,IAAA,kBAAA/D,MAKA,SAAiBmG,GAEhB,IAAI8xC,EAAe12C,KAAKoJ,MAAM2mB,IAAKnrB,GAEnC,IAAO8xC,EAAe,CAErB,IAAMo3C,EAAS9tF,KACT26T,EAAO36T,KAAKy8O,KAAM73O,GAAkB,SAATA,EAAkB,KAAO,OAAW,GAErE8xC,EAAepG,QAAQxtC,IAAK63T,EAAKp+T,KAAK,SAAWm4F,EAAK9lF,GAErD,OAAOk/E,EAAO4kO,cAAe9tT,EAAMgK,EAEpC,KAEA5O,KAAKoJ,MAAMgjB,IAAKxnB,EAAM8xC,EAEvB,CAEA,OAAOA,CAER,GAEA,CAAAl0C,IAAA,aAAA/D,MAKA,SAAYm8T,GAEX,IAAMC,EAAY76T,KAAKy8O,KAAK/lD,QAASkkI,GAC/B72N,EAAS/jG,KAAK4tT,WAEpB,GAAKiN,EAAUj2T,MAA2B,gBAAnBi2T,EAAUj2T,KAEhC,MAAM,IAAI9G,MAAO,qBAAuB+8T,EAAUj2T,KAAO,kCAK1D,QAAuBwF,IAAlBywT,EAAUzI,KAAqC,IAAhBwI,EAEnC,OAAOtqR,QAAQG,QAASzwC,KAAKssF,WAAYihO,GAAWC,iBAAkBh9R,MAIvE,IAAMvvB,EAAUjB,KAAKiB,QAErB,OAAO,IAAIqvC,SAAS,SAAWG,EAAS8tC,GAEvCwlB,EAAOn4B,KAAM6sM,GAAYnJ,WAAYurD,EAAUzI,IAAKnxT,EAAQi2F,MAAQzmD,OAASrmC,GAAW,WAEvFm0E,EAAQ,IAAIzgF,MAAO,4CAA8C+8T,EAAUzI,IAAM,MAElF,GAED,GAED,GAEA,CAAA5vT,IAAA,iBAAA/D,MAKA,SAAgBk1T,GAEf,IAAMmH,EAAgB96T,KAAKy8O,KAAK+1E,YAAamB,GAE7C,OAAO3zT,KAAK0yT,cAAe,SAAUoI,EAAc3gK,QAASzpH,MAAM,SAAWypH,GAE5E,IAAMq3G,EAAaspD,EAActpD,YAAc,EACzCqhD,EAAaiI,EAAcjI,YAAc,EAC/C,OAAO14J,EAAOvpJ,MAAOiiT,EAAYA,EAAarhD,EAE/C,GAED,GAEA,CAAAhvQ,IAAA,eAAA/D,MAKA,SAAcs8T,GAEb,IAAMjtO,EAAS9tF,KACTy8O,EAAOz8O,KAAKy8O,KAEZy3E,EAAcl0T,KAAKy8O,KAAK03E,UAAW4G,GAEzC,QAAgC3wT,IAA3B8pT,EAAY3B,iBAAmDnoT,IAAvB8pT,EAAY8G,OAKxD,OAAO1qR,QAAQG,QAAS,MAIzB,IAAMwqR,EAAqB,GAmB3B,YAjBgC7wT,IAA3B8pT,EAAY3B,WAEhB0I,EAAmBn+T,KAAMkD,KAAK0yT,cAAe,aAAcwB,EAAY3B,aAIvE0I,EAAmBn+T,KAAM,WAIEsN,IAAvB8pT,EAAY8G,SAEhBC,EAAmBn+T,KAAMkD,KAAK0yT,cAAe,aAAcwB,EAAY8G,OAAO7zI,QAAQorI,aACtF0I,EAAmBn+T,KAAMkD,KAAK0yT,cAAe,aAAcwB,EAAY8G,OAAOjuT,OAAOwlT,cAI/EjiR,QAAQxtC,IAAKm4T,GAAqBvqR,MAAM,SAAW8hR,GAEzD,IAWIzvT,EAAOu2Q,EAXLi5C,EAAaC,EAAa,GAE1B/vI,EAAW8zI,GAAkBrC,EAAYtvT,MACzCs2T,EAAa7G,GAAuBH,EAAYE,eAGhD+G,EAAeD,EAAW/jI,kBAC1BikI,EAAYD,EAAe14I,EAC3BowI,EAAaqB,EAAYrB,YAAc,EACvCC,OAAwC1oT,IAA3B8pT,EAAY3B,WAA2B91E,EAAK+1E,YAAa0B,EAAY3B,YAAaO,gBAAa1oT,EAC5GwyJ,GAAwC,IAA3Bs3J,EAAYt3J,WAI/B,GAAKk2J,GAAcA,IAAesI,EAAY,CAI7C,IAAMC,EAAUp+T,KAAKwf,MAAOo2S,EAAaC,GACnCwI,EAAa,qBAAuBpH,EAAY3B,WAAa,IAAM2B,EAAYE,cAAgB,IAAMiH,EAAU,IAAMnH,EAAYv2O,MACnI9rD,EAAKi8D,EAAO1kF,MAAM2mB,IAAKurS,GAEpBzpS,IAEN9uB,EAAQ,IAAIm4T,EAAY3I,EAAY8I,EAAUvI,EAAYoB,EAAYv2O,MAAQm1O,EAAaqI,GAG3FtpS,EAAK,IAAI8lN,GAAmB50O,EAAO+vT,EAAaqI,GAEhDrtO,EAAO1kF,MAAMgjB,IAAKkvS,EAAYzpS,IAI/BynP,EAAkB,IAAIrhC,GAA4BpmN,EAAI4wJ,EAAYowI,EAAaC,EAAeqI,EAAcv+J,EAE7G,MAIE75J,EAFmB,OAAfwvT,EAEI,IAAI2I,EAAYhH,EAAYv2O,MAAQ8kG,GAIpC,IAAIy4I,EAAY3I,EAAYM,EAAYqB,EAAYv2O,MAAQ8kG,GAIrE62F,EAAkB,IAAI92F,GAAiBz/K,EAAO0/K,EAAU7lB,GAKzD,QAA4BxyJ,IAAvB8pT,EAAY8G,OAAuB,CAEvC,IAAMO,EAAkBhF,GAAiBiF,OACnCC,EAAoBpH,GAAuBH,EAAY8G,OAAO7zI,QAAQitI,eAEtEsH,EAAoBxH,EAAY8G,OAAO7zI,QAAQ0rI,YAAc,EAC7D8I,EAAmBzH,EAAY8G,OAAOjuT,OAAO8lT,YAAc,EAE3D+I,EAAgB,IAAIH,EAAmBjJ,EAAa,GAAKkJ,EAAmBxH,EAAY8G,OAAOr9O,MAAQ49O,GACvGM,EAAe,IAAIX,EAAY1I,EAAa,GAAKmJ,EAAkBzH,EAAY8G,OAAOr9O,MAAQ8kG,GAEhF,OAAf8vI,IAGJj5C,EAAkB,IAAI92F,GAAiB82F,EAAgBv2Q,MAAM6N,QAAS0oQ,EAAgB72F,SAAU62F,EAAgB18G,aAIjH,IAAM,IAAIlgK,EAAI,EAAGowD,EAAK8uQ,EAAchkU,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAE1D,IAAMkS,EAAQgtT,EAAel/T,GAM7B,GAJA48Q,EAAgBwiD,KAAMltT,EAAOitT,EAAcn/T,EAAI+lL,IAC1CA,GAAY,GAAI62F,EAAgByiD,KAAMntT,EAAOitT,EAAcn/T,EAAI+lL,EAAW,IAC1EA,GAAY,GAAI62F,EAAgB0iD,KAAMptT,EAAOitT,EAAcn/T,EAAI+lL,EAAW,IAC1EA,GAAY,GAAI62F,EAAgB2iD,KAAMrtT,EAAOitT,EAAcn/T,EAAI+lL,EAAW,IAC1EA,GAAY,EAAI,MAAM,IAAI3kL,MAAO,oEAEvC,CAED,CAEA,OAAOw7Q,CAER,GAED,GAEA,CAAA92Q,IAAA,cAAA/D,MAKA,SAAaszT,GAEZ,IAAMt1E,EAAOz8O,KAAKy8O,KACZx7O,EAAUjB,KAAKiB,QAEfi7T,EADaz/E,EAAKl9E,SAAUwyJ,GACHvwT,OACzB26T,EAAY1/E,EAAKh/E,OAAQy+J,GAE3Bn4N,EAAS/jG,KAAKmyT,cAElB,GAAKgK,EAAU/J,IAAM,CAEpB,IAAMvb,EAAU51S,EAAQ4uQ,QAAQH,WAAYysD,EAAU/J,KACrC,OAAZvb,IAAmB9yM,EAAS8yM,EAElC,CAEA,OAAO72S,KAAKiyT,iBAAkBF,EAAcmK,EAAan4N,EAE1D,GAAC,CAAAvhG,IAAA,mBAAA/D,MAED,SAAkBszT,EAAcmK,EAAan4N,GAE5C,IAAMjW,EAAS9tF,KACTy8O,EAAOz8O,KAAKy8O,KAEZu1E,EAAav1E,EAAKl9E,SAAUwyJ,GAC5BoK,EAAY1/E,EAAKh/E,OAAQy+J,GAEzB17G,GAAa27G,EAAU/J,KAAO+J,EAAU5J,YAAe,IAAMP,EAAWoK,QAE9E,GAAKp8T,KAAK64T,aAAcr4G,GAGvB,OAAOxgN,KAAK64T,aAAcr4G,GAI3B,IAAMlnI,EAAUt5E,KAAKq8T,gBAAiBH,EAAan4N,GAASrzD,MAAM,SAAW2wH,GAE5EA,EAAQtC,OAAQ,EAEhBsC,EAAQloK,KAAO64T,EAAW74T,MAAQgjU,EAAUhjU,MAAQ,GAEpD,IACMijU,GADW3/E,EAAK6/E,UAAY,CAAC,GACTtK,EAAWoK,UAAa,CAAC,EASnD,OAPA/6J,EAAQhD,UAAYg4J,GAAe+F,EAAQ/9J,YAAexT,GAC1DwW,EAAQ/C,UAAY+3J,GAAe+F,EAAQ99J,YAAetT,GAC1DqW,EAAQlD,MAAQm4J,GAAiB8F,EAAQj+J,QAAW9T,GACpDgX,EAAQjD,MAAQk4J,GAAiB8F,EAAQh+J,QAAW/T,GAEpDv8D,EAAOyqO,aAAatpS,IAAKoyI,EAAS,CAAE9B,SAAUwyJ,IAEvC1wJ,CAER,IAAI1wH,OAAO,WAEV,OAAO,IAER,IAIA,OAFA3wC,KAAK64T,aAAcr4G,GAAalnI,EAEzBA,CAER,GAAC,CAAA92E,IAAA,kBAAA/D,MAED,SAAiBy9T,EAAan4N,GAE7B,IACM04I,EAAOz8O,KAAKy8O,KACZx7O,EAAUjB,KAAKiB,QAErB,QAAyCmJ,IAApCpK,KAAK44T,YAAasD,GAEtB,OAAOl8T,KAAK44T,YAAasD,GAAcxrR,MAAM,SAAE2wH,GAAO,OAAMA,EAAQngK,OAAO,IAI5E,IAAMi7T,EAAY1/E,EAAKh/E,OAAQy+J,GAEzB9iP,EAAMjkE,KAAKikE,KAAOjkE,KAAKonT,UAEzBC,EAAYL,EAAU/J,KAAO,GAC7BqK,GAAc,EAElB,QAA8BryT,IAAzB+xT,EAAU5J,WAIdiK,EArBcx8T,KAqBK0yT,cAAe,aAAcyJ,EAAU5J,YAAa7hR,MAAM,SAAW6hR,GAEvFkK,GAAc,EACd,IAAM5qD,EAAO,IAAI6qD,KAAM,CAAEnK,GAAc,CAAE3tT,KAAMu3T,EAAUxrD,WAEzD,OADA6rD,EAAYpjP,EAAIC,gBAAiBw4L,EAGlC,SAEM,QAAuBznQ,IAAlB+xT,EAAU/J,IAErB,MAAM,IAAIt0T,MAAO,2BAA6Bo+T,EAAc,kCAI7D,IAAM5iP,EAAUhpC,QAAQG,QAAS+rR,GAAY9rR,MAAM,SAAW8rR,GAE7D,OAAO,IAAIlsR,SAAS,SAAWG,EAAS8tC,GAEvC,IAAIy7D,EAASvpG,GAEuB,IAA/BszD,EAAOs5K,sBAEXrjI,EAAS,SAAWojI,GAEnB,IAAM/7G,EAAU,IAAItD,GAASq/G,GAC7B/7G,EAAQ/B,aAAc,EAEtB7uH,EAAS4wH,EAEV,GAIDt9D,EAAOn4B,KAAM6sM,GAAYnJ,WAAYktD,EAAWv7T,EAAQi2F,MAAQ8iD,OAAQ5vI,EAAWm0E,EAEpF,GAED,IAAI7tC,MAAM,SAAW2wH,GA5tBvB,IAA8B+wJ,EAwuB3B,OARqB,IAAhBqK,GAEJrjP,EAAIujP,gBAAiBH,GAItBn7J,EAAQpC,SAAS0xG,SAAWwrD,EAAUxrD,YAtuBXyhD,EAsuB4C+J,EAAU/J,KApuB1ErqR,OAAQ,kBAAqB,GAA4C,IAAvCqqR,EAAIrqR,OAAQ,sBAAsC,aACxFqqR,EAAIrqR,OAAQ,iBAAoB,GAA4C,IAAvCqqR,EAAIrqR,OAAQ,sBAAsC,aAErF,aAmuBEs5H,CAER,IAAI1wH,OAAO,SAAWpvB,GAGrB,MADAxN,QAAQwN,MAAO,0CAA4Ci7S,GACrDj7S,CAEP,IAGA,OADAvhB,KAAK44T,YAAasD,GAAgB5iP,EAC3BA,CAER,GAEA,CAAA92E,IAAA,gBAAA/D,MAOA,SAAe6xT,EAAgBsM,EAASC,EAAQp+J,GAE/C,IAAM3wE,EAAS9tF,KAEf,OAAOA,KAAK0yT,cAAe,UAAWmK,EAAOjuT,OAAQ8hC,MAAM,SAAW2wH,GAUrE,QANyBj3J,IAApByyT,EAAOtI,UAA6C,GAAnBsI,EAAOtI,UAAiC,UAAZqI,GAA0C,GAAnBC,EAAOtI,UAE/FxgT,QAAQk/C,KAAM,mCAAqC4pQ,EAAOtI,SAAW,gBAAkBqI,EAAU,uBAI7F9uO,EAAOxB,WAAYihO,GAAWe,uBAA0B,CAE5D,IAAMh2L,OAAkCluH,IAAtByyT,EAAOvwO,WAA2BuwO,EAAOvwO,WAAYihO,GAAWe,4BAA0BlkT,EAE5G,GAAKkuH,EAAY,CAEhB,IAAMwkM,EAAgBhvO,EAAOyqO,aAAaxoS,IAAKsxI,GAC/CA,EAAUvzE,EAAOxB,WAAYihO,GAAWe,uBAAwByO,cAAe17J,EAAS/oC,GACxFxqC,EAAOyqO,aAAatpS,IAAKoyI,EAASy7J,EAEnC,CAED,CAUA,YARkB1yT,IAAbq0J,IAEJ4C,EAAQ5C,SAAWA,GAIpB6xJ,EAAgBsM,GAAYv7J,EAErBA,CAER,GAED,GAEA,CAAA7+J,IAAA,sBAAA/D,MAQA,SAAqB40L,GAEpB,IAAMvoB,EAAWuoB,EAAKvoB,SAClB+N,EAAWwa,EAAKxa,SAEdmkJ,OAAwD5yT,IAAhC0gK,EAAS54F,WAAWm0G,QAC5C42I,OAAgD7yT,IAA9B0gK,EAAS54F,WAAW1qC,MACtC01R,OAAgD9yT,IAA/B0gK,EAAS54F,WAAW62F,OAE3C,GAAKsqB,EAAK9a,SAAW,CAEpB,IAAMioC,EAAW,kBAAoB3nC,EAASh9D,KAE1CshN,EAAiBn9T,KAAKoJ,MAAM2mB,IAAKywL,GAE9B28G,IAENA,EAAiB,IAAI71G,GACrB/rC,GAAS3+K,UAAU8+J,KAAK7+J,KAAMsgU,EAAgBtkJ,GAC9CskJ,EAAe31R,MAAMk0H,KAAMmd,EAASrxI,OACpC21R,EAAe5gU,IAAMs8K,EAASt8K,IAC9B4gU,EAAeh8I,iBAAkB,EAEjCnhL,KAAKoJ,MAAMgjB,IAAKo0L,EAAU28G,IAI3BtkJ,EAAWskJ,CAEZ,MAAO,GAAK9pI,EAAK/a,OAAS,CAEzB,IAAMkoC,EAAW,qBAAuB3nC,EAASh9D,KAE7CuhN,EAAep9T,KAAKoJ,MAAM2mB,IAAKywL,GAE5B48G,IAENA,EAAe,IAAIh2G,GACnB7rC,GAAS3+K,UAAU8+J,KAAK7+J,KAAMugU,EAAcvkJ,GAC5CukJ,EAAa51R,MAAMk0H,KAAMmd,EAASrxI,OAElCxnC,KAAKoJ,MAAMgjB,IAAKo0L,EAAU48G,IAI3BvkJ,EAAWukJ,CAEZ,CAGA,GAAKJ,GAAyBC,GAAmBC,EAAiB,CAEjE,IAAI18G,EAAW,kBAAoB3nC,EAASh9D,KAAO,IAE9Cg9D,EAAS47I,mCAAmCj0G,GAAY,wBACxDw8G,IAAwBx8G,GAAY,wBACpCy8G,IAAkBz8G,GAAY,kBAC9B08G,IAAiB18G,GAAY,iBAElC,IAAIkQ,EAAiB1wN,KAAKoJ,MAAM2mB,IAAKywL,GAE9BkQ,IAENA,EAAiB73C,EAAS33K,QAErB+7T,IAAkBvsG,EAAe50C,cAAe,GAChDohJ,IAAiBxsG,EAAezyC,aAAc,GAE9C++I,IAGCtsG,EAAe7wC,cAAc6wC,EAAe7wC,YAAYx4K,IAAO,GAC/DqpN,EAAexxC,uBAAuBwxC,EAAexxC,qBAAqB73K,IAAO,IAIvFrH,KAAKoJ,MAAMgjB,IAAKo0L,EAAUkQ,GAE1B1wN,KAAKu4T,aAAatpS,IAAKyhM,EAAgB1wN,KAAKu4T,aAAaxoS,IAAK8oJ,KAI/DA,EAAW63C,CAEZ,CAIK73C,EAAS0G,YAAqCn1K,IAA5B0gK,EAAS54F,WAAWioG,UAAgD/vK,IAA3B0gK,EAAS54F,WAAWutF,IAEnFqL,EAASh4J,aAAc,MAAOg4J,EAAS54F,WAAWutF,IAInD4zB,EAAKxa,SAAWA,CAEjB,GAAC,CAAAr2K,IAAA,kBAAA/D,MAED,WAEC,OAAOwoN,EAER,GAEA,CAAAzkN,IAAA,eAAA/D,MAKA,SAAc0nL,GAEb,IAKIk3I,EALEvvO,EAAS9tF,KACTy8O,EAAOz8O,KAAKy8O,KACZnwJ,EAAatsF,KAAKssF,WAClBikO,EAAc9zE,EAAK9kE,UAAWwO,GAG9BmqI,EAAiB,CAAC,EAClBgN,EAAqB/M,EAAYjkO,YAAc,CAAC,EAEhD10C,EAAU,GAEhB,GAAK0lR,EAAoB/P,GAAWW,uCAA0C,CAE7E,IAAMqP,EAAcjxO,EAAYihO,GAAWW,uCAC3CmP,EAAeE,EAAYC,kBAC3B5lR,EAAQ96C,KAAMygU,EAAYE,aAAcnN,EAAgBC,EAAaziO,GAEtE,MAAO,GAAKwvO,EAAoB/P,GAAWS,qBAAwB,CAElE,IAAM0P,EAAepxO,EAAYihO,GAAWS,qBAC5CqP,EAAeK,EAAaF,kBAC5B5lR,EAAQ96C,KAAM4gU,EAAaD,aAAcnN,EAAgBC,EAAaziO,GAEvE,KAAO,CAKN,IAAM0iO,EAAoBD,EAAYE,sBAAwB,CAAC,EAK/D,GAHAH,EAAe9oR,MAAQ,IAAI+zH,GAAO,EAAK,EAAK,GAC5C+0J,EAAe97R,QAAU,EAEpB73B,MAAM0E,QAASmvT,EAAkBE,iBAAoB,CAEzD,IAAM3tT,EAAQytT,EAAkBE,gBAEhCJ,EAAe9oR,MAAMmyH,UAAW52J,GAChCutT,EAAe97R,QAAUzxB,EAAO,EAEjC,MAE4CqH,IAAvComT,EAAkBG,kBAEtB/4Q,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,MAAOE,EAAkBG,iBAAkBzhK,KAIhGohK,EAAenyI,eAAiD/zK,IAArComT,EAAkBmN,eAA+BnN,EAAkBmN,eAAiB,EAC/GrN,EAAepyI,eAAkD9zK,IAAtComT,EAAkBoN,gBAAgCpN,EAAkBoN,gBAAkB,OAE7DxzT,IAA/ComT,EAAkBqN,2BAEtBjmR,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,eAAgBE,EAAkBqN,2BACtFjmR,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,eAAgBE,EAAkBqN,4BAIvFR,EAAer9T,KAAKk6T,YAAY,SAAWlB,GAE1C,OAAOA,EAAIwE,iBAAmBxE,EAAIwE,gBAAiBr3I,EAEpD,IAEAvuI,EAAQ96C,KAAMwzC,QAAQxtC,IAAK9C,KAAK+4T,YAAY,SAAWC,GAEtD,OAAOA,EAAI8E,sBAAwB9E,EAAI8E,qBAAsB33I,EAAemqI,EAE7E,KAED,EAEiC,IAA5BC,EAAY5sG,cAEhB2sG,EAAez0I,KAAOx0B,IAIvB,IAAM02K,EAAYxN,EAAYwN,WAAazG,GAqB3C,GAnBKyG,IAAczG,IAElBhH,EAAev0I,aAAc,EAG7Bu0I,EAAe9zI,YAAa,IAI5B8zI,EAAev0I,aAAc,EAExBgiJ,IAAczG,KAElBhH,EAAe/uI,eAAwCn3K,IAA5BmmT,EAAYyN,YAA4BzN,EAAYyN,YAAc,UAM5D5zT,IAA9BmmT,EAAY0N,eAA+BZ,IAAiBr7I,KAEhEpqI,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,YAAaC,EAAY0N,gBAE7E3N,EAAezwI,YAAc,IAAI1qB,GAAS,EAAG,QAEJ/qJ,IAApCmmT,EAAY0N,cAAc5mL,OAAsB,CAEpD,IAAMA,EAAQk5K,EAAY0N,cAAc5mL,MAExCi5K,EAAezwI,YAAY5wJ,IAAKooH,EAAOA,EAExC,CA4BD,YAxBsCjtI,IAAjCmmT,EAAY2N,kBAAkCb,IAAiBr7I,KAEnEpqI,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,QAASC,EAAY2N,wBAE1B9zT,IAA1CmmT,EAAY2N,iBAAiBC,WAEjC7N,EAAe9wI,eAAiB+wI,EAAY2N,iBAAiBC,gBAM3B/zT,IAA/BmmT,EAAY6N,gBAAgCf,IAAiBr7I,KAEjEsuI,EAAe/xI,UAAW,IAAIhjB,IAAQ5B,UAAW42J,EAAY6N,sBAIzBh0T,IAAhCmmT,EAAY8N,iBAAiChB,IAAiBr7I,IAElEpqI,EAAQ96C,KAAMgxF,EAAO8iO,cAAeN,EAAgB,cAAeC,EAAY8N,gBAAiBnvK,KAI1F5+G,QAAQxtC,IAAK80C,GAAUlH,MAAM,WAEnC,IAAImoI,EAoBJ,OAhBCA,EAFIwkJ,IAAiB7I,GAEVloO,EAAYihO,GAAWW,uCAAwCoQ,eAAgBhO,GAI/E,IAAI+M,EAAc/M,GAIzBC,EAAYp3T,OAAO0/K,EAAS1/K,KAAOo3T,EAAYp3T,MAEpDy+T,GAAwB/+I,EAAU03I,GAElCziO,EAAOyqO,aAAatpS,IAAK4pJ,EAAU,CAAElB,UAAWwO,IAE3CoqI,EAAYjkO,YAAakrO,GAAgClrO,EAAYusF,EAAU03I,GAE7E13I,CAER,GAED,GAEA,CAAAr2K,IAAA,mBAAA/D,MACA,SAAkB8/T,GAMjB,IAJA,IAAMC,EAAgBj3C,GAAgBk3C,iBAAkBF,GAAgB,IAEpEplU,EAAOqlU,EAED9hU,EAAI,EAAGsD,KAAK84T,cAAe3/T,KAAWuD,EAE/CvD,EAAOqlU,EAAgB,IAAM9hU,EAM9B,OAFAsD,KAAK84T,cAAe3/T,IAAS,EAEtBA,CAER,GAEA,CAAAqJ,IAAA,iBAAA/D,MAQA,SAAgBigU,GAEf,IAAM5wO,EAAS9tF,KACTssF,EAAatsF,KAAKssF,WAClBljF,EAAQpJ,KAAKw4T,eAEnB,SAASmG,EAAsBzsB,GAE9B,OAAO5lN,EAAYihO,GAAWa,4BAC5BwQ,gBAAiB1sB,EAAWpkN,GAC5Bp9C,MAAM,SAAWo6H,GAEjB,OAAO+zJ,GAAwB/zJ,EAAUonI,EAAWpkN,EAErD,GAEF,CAIA,IAFA,IAAMl2C,EAAU,GAENl7C,EAAI,EAAGowD,EAAK4xQ,EAAW9mU,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvD,IAAMw1S,EAAYwsB,EAAYhiU,GACxB8jN,EAAWy3G,GAAoB/lB,GAG/Br7G,EAASztL,EAAOo3M,GAEtB,GAAK3pB,EAGJj/I,EAAQ96C,KAAM+5L,EAAOv9G,aAEf,CAEN,IAAIwlP,OAAe,EAKlBA,EAHI5sB,EAAU5lN,YAAc4lN,EAAU5lN,WAAYihO,GAAWa,4BAG3CuQ,EAAsBzsB,GAKtB2sB,GAAwB,IAAIn5I,GAAkBwsH,EAAWpkN,GAK5E1kF,EAAOo3M,GAAa,CAAE0xF,UAAWA,EAAW54N,QAASwlP,GAErDlnR,EAAQ96C,KAAMgiU,EAEf,CAED,CAEA,OAAOxuR,QAAQxtC,IAAK80C,EAErB,GAEA,CAAAp1C,IAAA,WAAA/D,MAKA,SAAUsgU,GAWT,IATA,IAAMjxO,EAAS9tF,KACTy8O,EAAOz8O,KAAKy8O,KACZnwJ,EAAatsF,KAAKssF,WAElByrO,EAAUt7E,EAAKg9E,OAAQsF,GACvBL,EAAa3G,EAAQ2G,WAErB9mR,EAAU,GAENl7C,EAAI,EAAGowD,EAAK4xQ,EAAW9mU,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvD,IAAMm8K,OAAwCzuK,IAA7Bs0T,EAAYhiU,GAAIm8K,SAC9B0+I,GAAuBv3T,KAAKoJ,OAC5BpJ,KAAK0yT,cAAe,WAAYgM,EAAYhiU,GAAIm8K,UAEnDjhI,EAAQ96C,KAAM+7K,EAEf,CAIA,OAFAjhI,EAAQ96C,KAAMgxF,EAAOkxO,eAAgBN,IAE9BpuR,QAAQxtC,IAAK80C,GAAUlH,MAAM,SAAWg5O,GAO9C,IALA,IAAM/xG,EAAY+xG,EAAQ94Q,MAAO,EAAG84Q,EAAQ9xR,OAAS,GAC/C8/K,EAAagyG,EAASA,EAAQ9xR,OAAS,GAEvC6hU,EAAS,GAEL/8T,EAAI,EAAGowD,EAAK4qH,EAAW9/K,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvD,IAAMouK,EAAW4M,EAAYh7K,GACvBw1S,EAAYwsB,EAAYhiU,GAI1B22L,OAAI,EAEFxa,EAAWlB,EAAWj7K,GAE5B,GAAKw1S,EAAU19P,OAAS4hR,GAAgBsa,WACtCx+B,EAAU19P,OAAS4hR,GAAgBkhE,gBACnCplF,EAAU19P,OAAS4hR,GAAgBmhE,mBAChBntX,IAAnB8nS,EAAU19P,MAOiB,KAJ5B6+I,GAAiC,IAA1B0kI,EAAQt/I,cACZ,IAAIoiE,GAAa/vE,EAAU+N,GAC3B,IAAIqS,GAAMpgB,EAAU+N,IAEbJ,eAA4B4a,EAAKvoB,SAAS54F,WAAWipK,WAAWv+E,YAIzEy2B,EAAK4rI,uBAID/sB,EAAU19P,OAAS4hR,GAAgBkhE,eAEvCjkM,EAAKvoB,SAAWo0J,GAAqB7rI,EAAKvoB,SbvkHlB,GaykHbonI,EAAU19P,OAAS4hR,GAAgBmhE,eAE9ClkM,EAAKvoB,SAAWo0J,GAAqB7rI,EAAKvoB,Sb1kHpB,Sa8kHjB,GAAKonI,EAAU19P,OAAS4hR,GAAgBkiE,MAE9CjlM,EAAO,IAAI8rD,GAAcr0E,EAAU+N,QAE7B,GAAKq5H,EAAU19P,OAAS4hR,GAAgBoiE,WAE9CnlM,EAAO,IAAI+qD,GAAMtzE,EAAU+N,QAErB,GAAKq5H,EAAU19P,OAAS4hR,GAAgBmiE,UAE9CllM,EAAO,IAAIksD,GAAUz0E,EAAU+N,OAEzB,IAAKq5H,EAAU19P,OAAS4hR,GAAgBiiE,OAM9C,MAAM,IAAIv6X,MAAO,iDAAmDo0S,EAAU19P,MAJ9E6+I,EAAO,IAAI6sD,GAAQp1E,EAAU+N,EAM9B,CAEKt6K,OAAOqD,KAAMyxL,EAAKvoB,SAASgb,iBAAkBluL,OAAS,GAE1D0zL,GAAoB+H,EAAM0kI,GAI3B1kI,EAAKl6L,KAAO20F,EAAOqiO,iBAAkB4H,EAAQ5+T,MAAU,QAAU4lU,GAEjEnH,GAAwBvkI,EAAM0kI,GAEzB7lB,EAAU5lN,YAAakrO,GAAgClrO,EAAY+mG,EAAM6+G,GAE9EpkN,EAAOqxO,oBAAqB9rI,GAE5BomI,EAAO38T,KAAMu2L,EAEd,CAEA,IAAM,IAAI32L,EAAI,EAAGowD,EAAK2sQ,EAAO7hU,OAAQ8E,EAAIowD,EAAIpwD,IAE5CoxF,EAAOyqO,aAAatpS,IAAKwqS,EAAQ/8T,GAAK,CACrC+8T,OAAQsF,EACRL,WAAYhiU,IAKd,GAAuB,IAAlB+8T,EAAO7hU,OAEX,OAAO6hU,EAAQ,GAIhB,IAAMhyN,EAAQ,IAAIo7H,GAElB/0I,EAAOyqO,aAAatpS,IAAKw4E,EAAO,CAAEgyN,OAAQsF,IAE1C,IAAM,IAAIriU,EAAI,EAAGowD,EAAK2sQ,EAAO7hU,OAAQ8E,EAAIowD,EAAIpwD,IAE5C+qG,EAAMr7E,IAAKqtS,EAAQ/8T,IAIpB,OAAO+qG,CAER,GAED,GAEA,CAAAjlG,IAAA,aAAA/D,MAKA,SAAY2gU,GAEX,IAAIx3J,EACEy3J,EAAYr/T,KAAKy8O,KAAK9Z,QAASy8F,GAC/BllQ,EAASmlQ,EAAWA,EAAUz6T,MAEpC,GAAOs1D,EAqBP,MAdwB,gBAAnBmlQ,EAAUz6T,KAEdgjK,EAAS,IAAIioB,GAAmBp9B,GAAUuB,SAAU95F,EAAOolQ,MAAQplQ,EAAOlnC,aAAe,EAAGknC,EAAOqlQ,OAAS,EAAGrlQ,EAAOslQ,MAAQ,KAEhG,iBAAnBH,EAAUz6T,OAErBgjK,EAAS,IAAIgmC,IAAsB1zI,EAAOulQ,KAAMvlQ,EAAOulQ,KAAMvlQ,EAAOwlQ,MAAQxlQ,EAAOwlQ,KAAMxlQ,EAAOqlQ,MAAOrlQ,EAAOslQ,OAI1GH,EAAUlmU,OAAOyuK,EAAOzuK,KAAO6G,KAAKmwT,iBAAkBkP,EAAUlmU,OAErEy+T,GAAwBhwJ,EAAQy3J,GAEzB/uR,QAAQG,QAASm3H,GAnBvB7zJ,QAAQk/C,KAAM,+CAqBhB,GAEA,CAAAzwD,IAAA,WAAA/D,MAKA,SAAU68O,GAET,IAAMqkF,EAAU3/T,KAAKy8O,KAAK88E,MAAOj+E,GAE3BskF,EAAY,CAAEr8F,OAAQo8F,EAAQp8F,QAEpC,YAAqCn5N,IAAhCu1T,EAAQE,oBAELvvR,QAAQG,QAASmvR,GAIlB5/T,KAAK0yT,cAAe,WAAYiN,EAAQE,qBAAsBnvR,MAAM,SAAWovR,GAIrF,OAFAF,EAAUC,oBAAsBC,EAEzBF,CAER,GAED,GAEA,CAAAp9T,IAAA,gBAAA/D,MAKA,SAAeshU,GAYd,IAVA,IAEMC,EAFOhgU,KAAKy8O,KAEQrmE,WAAY2pJ,GAEhCE,EAAe,GACfC,EAAwB,GACxBC,EAAyB,GACzBC,EAAkB,GAClBC,EAAiB,GAEb3jU,EAAI,EAAGowD,EAAKkzQ,EAAaM,SAAS1oU,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAElE,IAAMg4K,EAAUsrJ,EAAaM,SAAU5jU,GACjC0/T,EAAU4D,EAAa1D,SAAU5nJ,EAAQ0nJ,SACzC76T,EAASmzK,EAAQnzK,OACjBpI,EAAOoI,EAAOkY,KACdrD,OAAoChM,IAA5B41T,EAAaxnJ,WAA2BwnJ,EAAaxnJ,WAAY4jJ,EAAQhmT,OAAUgmT,EAAQhmT,MACnGyoE,OAAqCz0E,IAA5B41T,EAAaxnJ,WAA2BwnJ,EAAaxnJ,WAAY4jJ,EAAQv9O,QAAWu9O,EAAQv9O,OAE3GohP,EAAanjU,KAAMkD,KAAK0yT,cAAe,OAAQv5T,IAC/C+mU,EAAsBpjU,KAAMkD,KAAK0yT,cAAe,WAAYt8S,IAC5D+pT,EAAuBrjU,KAAMkD,KAAK0yT,cAAe,WAAY7zO,IAC7DuhP,EAAgBtjU,KAAMs/T,GACtBiE,EAAevjU,KAAMyE,EAEtB,CAEA,OAAO+uC,QAAQxtC,IAAK,CAEnBwtC,QAAQxtC,IAAKm9T,GACb3vR,QAAQxtC,IAAKo9T,GACb5vR,QAAQxtC,IAAKq9T,GACb7vR,QAAQxtC,IAAKs9T,GACb9vR,QAAQxtC,IAAKu9T,KAEV3vR,MAAM,SAAWgG,GAUpB,IARA,IAAM8zD,EAAQ9zD,EAAc,GACtB6pR,EAAiB7pR,EAAc,GAC/B8pR,EAAkB9pR,EAAc,GAChC4lR,EAAW5lR,EAAc,GACzB+pR,EAAU/pR,EAAc,GAExB8jC,EAAS,GAAG64D,EAAA,SAER32I,EAAOowD,GAEhB,IAAMrzC,EAAO+wF,EAAO9tG,GACdgkU,EAAgBH,EAAgB7jU,GAChCikU,EAAiBH,EAAiB9jU,GAClC0/T,EAAUE,EAAU5/T,GACpB6E,EAASk/T,EAAS/jU,GAExB,QAAc0N,IAATqP,EAAqB,iBAE1BA,EAAK48J,eAEL,IAAIk1F,OAAkB,EAEtB,OAASyrD,GAAiBz1T,EAAO21F,OAEhC,KAAK8/N,GAAgBtlH,QAEpB65D,EAAqBQ,GACrB,MAED,KAAKirD,GAAgB19J,SAEpBiyG,EAAqBe,GACrB,MAID,QAECf,EAAqBqB,GAKvB,IAAMg0D,EAAannT,EAAKtgB,KAAOsgB,EAAKtgB,KAAOsgB,EAAKoiG,KAE1CkuJ,OAA0C3/P,IAA1BgyT,EAAQryD,cAA8BmtD,GAAekF,EAAQryD,eAAkBx7G,GAE/FypK,EAAc,GAEfhB,GAAiBz1T,EAAO21F,QAAW8/N,GAAgBtlH,QAEvDj4L,EAAK09J,UAAU,SAAWh1K,GAEpBA,EAAOopL,uBAEXysI,EAAYl7T,KAAMqF,EAAOhJ,KAAOgJ,EAAOhJ,KAAOgJ,EAAO05G,KAIvD,IAIAm8M,EAAYl7T,KAAM8jU,GAInB,IAAIC,EAAcF,EAAe59T,MAEjC,GAAK49T,EAAe/jK,WAAa,CAKhC,IAHA,IAAMvlB,EAAQihL,GAA6BuI,EAAY1mT,aACjD2mT,EAAS,IAAIjsK,aAAcgsK,EAAYjpU,QAEnCiY,EAAI,EAAGq3K,EAAK25I,EAAYjpU,OAAQiY,EAAIq3K,EAAIr3K,IAEjDixT,EAAQjxT,GAAMgxT,EAAahxT,GAAMwnI,EAIlCwpL,EAAcC,CAEf,CAEA,IAAM,IAAIjxT,EAAI,EAAGq3K,EAAK8wI,EAAYpgU,OAAQiY,EAAIq3K,EAAIr3K,IAAO,CAExD,IAAM2mB,EAAQ,IAAI+0O,EACjBysD,EAAanoT,GAAM,IAAMmnT,GAAiBz1T,EAAO21F,MACjDwpO,EAAc39T,MACd89T,EACA92D,GAI8B,gBAA1BqyD,EAAQryD,gBAEZvzO,EAAMmvO,kBAAoB,SAAkD7tQ,GAQ3E,OAAO,IAFmBkI,gBAAgBssQ,GAA4B4pD,GAAuCL,IAEjF71T,KAAK8jQ,MAAO9jQ,KAAK+M,OAAQ/M,KAAK4kQ,eAAiB,EAAG9sQ,EAE/E,EAGA0+B,EAAMmvO,kBAAkBC,2CAA4C,GAIrEprL,EAAO19E,KAAM05B,EAEd,CAAC,EA3GQ95B,EAAI,EAAGowD,EAAK09C,EAAM5yG,OAAQ8E,EAAIowD,EAAIpwD,IAAO22I,EAAzC32I,GA+GV,IAAMvD,EAAO6mU,EAAa7mU,KAAO6mU,EAAa7mU,KAAO,aAAe4mU,EAEpE,OAAO,IAAIhzD,GAAe5zQ,OAAMiR,EAAWowE,EAE5C,GAED,GAAC,CAAAh4E,IAAA,iBAAA/D,MAED,SAAgBgxT,GAEf,IAAMhzE,EAAOz8O,KAAKy8O,KACZ3uJ,EAAS9tF,KACT2vT,EAAUlzE,EAAKjyI,MAAOilN,GAE5B,YAAsBrlT,IAAjBulT,EAAQt8H,KAA4B,KAElCvlG,EAAO4kO,cAAe,OAAQ/C,EAAQt8H,MAAO3iJ,MAAM,SAAW2iJ,GAEpE,IAAM55K,EAAOq0E,EAAOuiO,YAAaviO,EAAO2qO,UAAW9I,EAAQt8H,KAAMA,GAmBjE,YAhByBjpL,IAApBulT,EAAQj+G,SAEZj4L,EAAK09J,UAAU,SAAW38J,GAEzB,GAAOA,EAAE69J,OAET,IAAM,IAAI37K,EAAI,EAAGowD,EAAK6iQ,EAAQj+G,QAAQ95M,OAAQ8E,EAAIowD,EAAIpwD,IAErD8d,EAAE+wK,sBAAuB7uL,GAAMizT,EAAQj+G,QAASh1M,EAIlD,IAIM+c,CAER,GAED,GAEA,CAAAjX,IAAA,WAAA/D,MAKA,SAAUgxT,GAET,IAAMhzE,EAAOz8O,KAAKy8O,KACZnwJ,EAAatsF,KAAKssF,WAClBwB,EAAS9tF,KAET2vT,EAAUlzE,EAAKjyI,MAAOilN,GAGtB7/R,EAAW+/R,EAAQx2T,KAAO20F,EAAOqiO,iBAAkBR,EAAQx2T,MAAS,GAE1E,OAAS,WAER,IAAMy+C,EAAU,GAEVmpR,EAAcjzO,EAAOosO,YAAY,SAAWlB,GAEjD,OAAOA,EAAIgI,gBAAkBhI,EAAIgI,eAAgBvR,EAElD,IA4BA,OA1BKsR,GAEJnpR,EAAQ96C,KAAMikU,QAIS32T,IAAnBulT,EAAQ/nJ,QAEZhwH,EAAQ96C,KAAMgxF,EAAO4kO,cAAe,SAAU/C,EAAQ/nJ,QAASl3H,MAAM,SAAWk3H,GAE/E,OAAO95E,EAAOuiO,YAAaviO,EAAO4qO,YAAa/I,EAAQ/nJ,OAAQA,EAEhE,KAID95E,EAAOirO,YAAY,SAAWC,GAE7B,OAAOA,EAAIiI,sBAAwBjI,EAAIiI,qBAAsBxR,EAE9D,IAAIltT,SAAS,SAAW+2E,GAEvB1hC,EAAQ96C,KAAMw8E,EAEf,IAEOhpC,QAAQxtC,IAAK80C,EAErB,CAtCS,GAsCHlH,MAAM,SAAWg0J,GAEtB,IAAIjrL,EAqBJ,IAhBCA,GAFuB,IAAnBk2S,EAAQ7zE,OAEL,IAAIJ,GAEAh3C,EAAQ9sM,OAAS,EAErB,IAAIirO,GAEmB,IAAnBn+B,EAAQ9sM,OAEZ8sM,EAAS,GAIT,IAAIlvB,MAIEkvB,EAAS,GAEtB,IAAM,IAAIhoM,EAAI,EAAGowD,EAAK43I,EAAQ9sM,OAAQ8E,EAAIowD,EAAIpwD,IAE7C+c,EAAK2S,IAAKs4K,EAAShoM,IAiBrB,GAXKizT,EAAQx2T,OAEZsgB,EAAKwlJ,SAAS9lK,KAAOw2T,EAAQx2T,KAC7BsgB,EAAKtgB,KAAOy2B,GAIbgoS,GAAwBn+S,EAAMk2S,GAEzBA,EAAQrjO,YAAakrO,GAAgClrO,EAAY7yE,EAAMk2S,QAEpDvlT,IAAnBulT,EAAQj2J,OAAuB,CAEnC,IAAMA,EAAS,IAAIiX,GACnBjX,EAAOC,UAAWg2J,EAAQj2J,QAC1BjgJ,EAAKouJ,aAAcnO,EAEpB,WAE8BtvJ,IAAxBulT,EAAQsH,aAEZx9S,EAAK8lD,SAASo6F,UAAWg2J,EAAQsH,kBAIR7sT,IAArBulT,EAAQr2J,UAEZ7/I,EAAK2pJ,WAAWzJ,UAAWg2J,EAAQr2J,eAIblvJ,IAAlBulT,EAAQt4K,OAEZ59H,EAAK49H,MAAMsiB,UAAWg2J,EAAQt4K,OAchC,OAROvpD,EAAOyqO,aAAanqR,IAAK30B,IAE/Bq0E,EAAOyqO,aAAatpS,IAAKxV,EAAM,CAAC,GAIjCq0E,EAAOyqO,aAAaxoS,IAAKtW,GAAO+wF,MAAQilN,EAEjCh2S,CAER,GAED,GAEA,CAAAjX,IAAA,YAAA/D,MAKA,SAAWyiU,GAEV,IAAMzkF,EAAOz8O,KAAKy8O,KACZnwJ,EAAatsF,KAAKssF,WAClB60O,EAAWnhU,KAAKy8O,KAAK28E,OAAQ8H,GAC7BpzO,EAAS9tF,KAIT+xL,EAAQ,IAAI8wC,GACbs+F,EAAShoU,OAAO44L,EAAM54L,KAAO20F,EAAOqiO,iBAAkBgR,EAAShoU,OAEpEy+T,GAAwB7lI,EAAOovI,GAE1BA,EAAS70O,YAAakrO,GAAgClrO,EAAYylG,EAAOovI,GAM9E,IAJA,IAAMC,EAAUD,EAAS32N,OAAS,GAE5B5yD,EAAU,GAENl7C,EAAI,EAAGowD,EAAKs0Q,EAAQxpU,OAAQ8E,EAAIowD,EAAIpwD,IAE7Ck7C,EAAQ96C,KAAMukU,GAAoBD,EAAS1kU,GAAKq1L,EAAO0qD,EAAM3uJ,IAI9D,OAAOx9C,QAAQxtC,IAAK80C,GAAUlH,MAAM,WAoCnC,OAFAo9C,EAAOyqO,aA9BoB,SAAE9+S,GAE5B,IAEiD44H,EAF3CivL,EAAsB,IAAInkS,IAAMm1G,EAAAxnE,EAERgjB,EAAOyqO,cAAY,IAAjD,IAAAjmL,EAAA72I,MAAA42I,EAAAC,EAAAvrI,KAAAkb,MAAoD,KAAA22W,EAAAl3W,EAAA2wH,EAAA5zI,MAAA,GAAtC+D,EAAGo2X,EAAA,GAAEn6X,EAAKm6X,EAAA,IAElBp2X,aAAe+4K,IAAY/4K,aAAeu7J,KAE9CujK,EAAoBryS,IAAKzsB,EAAK/D,EAIhC,CAAC,OAAAoa,GAAAy5H,EAAAhsI,EAAAuS,EAAA,SAAAy5H,EAAA7rI,GAAA,CAcD,OAZAgT,EAAK09J,UAAU,SAAE19J,GAEhB,IAAMqgT,EAAWhsO,EAAOyqO,aAAaxoS,IAAKtW,GAEzB,MAAZqgT,GAEJwH,EAAoBryS,IAAKxV,EAAMqgT,EAIjC,IAEOwH,CAER,CAEsBE,CAAoBzvI,GAEnCA,CAER,GAED,KAAC47H,CAAA,CApwDc,GAwwDhB,SAAS0T,GAAoBI,EAAQC,EAAcjlF,EAAM3uJ,GAExD,IAAM6hO,EAAUlzE,EAAKjyI,MAAOi3N,GAE5B,OAAO3zO,EAAO4kO,cAAe,OAAQ+O,GAAS/wR,MAAM,SAAWj3B,GAE9D,YAAsBrP,IAAjBulT,EAAQgK,KAA4BlgT,EAMlCq0E,EAAO4kO,cAAe,OAAQ/C,EAAQgK,MAAOjpR,MAAM,SAAWipR,GAMpE,IAFA,IAAMgI,EAAgB,GAEZjlU,EAAI,EAAGowD,GAJjB8yQ,EAAYjG,GAIoBp2F,OAAO3rO,OAAQ8E,EAAIowD,EAAIpwD,IAEtDilU,EAAc7kU,KAAMgxF,EAAO4kO,cAAe,OAAQkN,EAAUr8F,OAAQ7mO,KAIrE,OAAO4zC,QAAQxtC,IAAK6+T,EAErB,IAAIjxR,MAAM,SAAWkxR,GAuCpB,OArCAnoT,EAAK09J,UAAU,SAAWkc,GAEzB,GAAOA,EAAKhb,OAAZ,CAKA,IAHA,IAAMuvC,EAAQ,GACR6zB,EAAe,GAEX5rO,EAAI,EAAGq3K,EAAK06I,EAAWhqU,OAAQiY,EAAIq3K,EAAIr3K,IAAO,CAEvD,IAAMgyT,EAAYD,EAAY/xT,GAE9B,GAAKgyT,EAAY,CAEhBj6G,EAAM9qN,KAAM+kU,GAEZ,IAAMz+E,EAAM,IAAIzyE,QAEuBvmK,IAAlCw1T,EAAUC,qBAEdz8E,EAAIzpF,UAAWimK,EAAUC,oBAAoB98T,MAAW,GAAJ8M,GAIrD4rO,EAAa3+O,KAAMsmP,EAEpB,MAECrvO,QAAQk/C,KAAM,mDAAoD2sQ,EAAUr8F,OAAQ1zN,GAItF,CAEAwjL,EAAKz/K,KAAM,IAAIyoO,GAAUz0B,EAAO6zB,GAAgBpoD,EAAKprB,YA/B1B,CAiC5B,IAEOxuJ,CAER,IAzDA,IAAImmT,CA2DL,IAAIlvR,MAAM,SAAWj3B,GAIpBioT,EAAat1S,IAAK3S,GAElB,IAAMm+B,EAAU,GAEhB,GAAK+3Q,EAAQ/xS,SAIZ,IAFA,IAAMA,EAAW+xS,EAAQ/xS,SAEflhB,EAAI,EAAGowD,EAAKlvC,EAAShmB,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAErD,IAAM08B,EAAQxb,EAAUlhB,GACxBk7C,EAAQ96C,KAAMukU,GAAoBjoS,EAAO3f,EAAMgjO,EAAM3uJ,GAEtD,CAID,OAAOx9C,QAAQxtC,IAAK80C,EAErB,GAED,CA2HA,SAASinR,GAAwB/zJ,EAAUotJ,EAAcpqO,GAExD,IAAM5b,EAAagmP,EAAahmP,WAE1Bt6B,EAAU,GAEhB,SAASkqR,EAAyB/G,EAAepuS,GAEhD,OAAOmhE,EAAO4kO,cAAe,WAAYqI,GACvCrqR,MAAM,SAAWovR,GAEjBh1J,EAASh4J,aAAc6Z,EAAemzS,EAEvC,GAEF,CAEA,IAAM,IAAMiC,KAAqB7vP,EAAa,CAE7C,IAAM8hP,EAAqBC,GAAY8N,IAAuBA,EAAkB/pU,cAG3Eg8T,KAAsBlpJ,EAAS54F,YAEpCt6B,EAAQ96C,KAAMglU,EAAyB5vP,EAAY6vP,GAAqB/N,GAEzE,CAEA,QAA8B5pT,IAAzB8tT,EAAa/wI,UAA2Brc,EAASl8J,MAAQ,CAE7D,IAAMkxT,EAAWhyO,EAAO4kO,cAAe,WAAYwF,EAAa/wI,SAAUz2I,MAAM,SAAWovR,GAE1Fh1J,EAASkf,SAAU81I,EAEpB,IAEAloR,EAAQ96C,KAAMgjU,EAEf,CAMA,OAJAlI,GAAwB9sJ,EAAUotJ,GA5JnC,SAAwBptJ,EAAUotJ,EAAcpqO,GAE/C,IAAM5b,EAAagmP,EAAahmP,WAE1Bs4F,EAAM,IAAId,GAEhB,QAA6Bt/J,IAAxB8nE,EAAWskP,SAAhB,CAEC,IAAMsJ,EAAWhyO,EAAO2uJ,KAAK03E,UAAWjiP,EAAWskP,UAE7CtrR,EAAM40R,EAAS50R,IACfhuC,EAAM4iU,EAAS5iU,IAIrB,QAAakN,IAAR8gC,QAA6B9gC,IAARlN,EAA1B,CAOC,GALAstK,EAAIv7I,IACH,IAAI63I,GAAS57H,EAAK,GAAKA,EAAK,GAAKA,EAAK,IACtC,IAAI47H,GAAS5pK,EAAK,GAAKA,EAAK,GAAKA,EAAK,KAGlC4iU,EAASljK,WAAa,CAE1B,IAAMolK,EAAW1J,GAA6BjE,GAAuByL,EAAS1L,gBAC9E5pJ,EAAIt/H,IAAIqqH,eAAgBysK,GACxBx3J,EAAIttK,IAAIq4J,eAAgBysK,EAEzB,CAgBF,IAAMvB,EAAUvI,EAAauI,QAE7B,QAAiBr2T,IAAZq2T,EAAwB,CAK5B,IAHA,IAAMwB,EAAkB,IAAIn7J,GACtB6D,EAAS,IAAI7D,GAETpqK,EAAI,EAAGowD,EAAK2zQ,EAAQ7oU,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEpD,IAAM6E,EAASk/T,EAAS/jU,GAExB,QAAyB0N,IAApB7I,EAAOi1T,SAAyB,CAEpC,IAAMsJ,EAAWhyO,EAAO2uJ,KAAK03E,UAAW5yT,EAAOi1T,UACzCtrR,EAAM40R,EAAS50R,IACfhuC,EAAM4iU,EAAS5iU,IAIrB,QAAakN,IAAR8gC,QAA6B9gC,IAARlN,EAAoB,CAQ7C,GALAytK,EAAOmxJ,KAAM7+T,KAAKC,IAAKD,KAAK4f,IAAKquB,EAAK,IAAOjuC,KAAK4f,IAAK3f,EAAK,MAC5DytK,EAAOoxJ,KAAM9+T,KAAKC,IAAKD,KAAK4f,IAAKquB,EAAK,IAAOjuC,KAAK4f,IAAK3f,EAAK,MAC5DytK,EAAOqxJ,KAAM/+T,KAAKC,IAAKD,KAAK4f,IAAKquB,EAAK,IAAOjuC,KAAK4f,IAAK3f,EAAK,MAGvD4iU,EAASljK,WAAa,CAE1B,IAAMolK,EAAW1J,GAA6BjE,GAAuByL,EAAS1L,gBAC9EzpJ,EAAOpV,eAAgBysK,EAExB,CAMAC,EAAgB/kU,IAAKytK,EAEtB,MAEC52J,QAAQk/C,KAAM,sEAIhB,CAED,CAGAu3G,EAAI03J,eAAgBD,EAErB,CAEAn3J,EAASE,YAAcR,EAEvB,IAAMY,EAAS,IAAI8B,GAEnB1C,EAAIiB,UAAWL,EAAO/U,QACtB+U,EAAOlC,OAASsB,EAAIt/H,IAAImiI,WAAY7C,EAAIttK,KAAQ,EAEhD4tK,EAASmb,eAAiB7a,CAtEzB,MAJCr3J,QAAQk/C,KAAM,sEAUhB,CAkED,CAkDCkvQ,CAAer3J,EAAUotJ,EAAcpqO,GAEhCx9C,QAAQxtC,IAAK80C,GAAUlH,MAAM,WAEnC,YAAgCtmC,IAAzB8tT,EAAauI,QArtEtB,SAA0B31J,EAAU21J,EAAS3yO,GAM5C,IAJA,IAAI+nH,GAAmB,EACnBusH,GAAiB,EACjBC,GAAgB,EAEV3lU,EAAI,EAAGowD,EAAK2zQ,EAAQ7oU,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEpD,IAAM6E,EAASk/T,EAAS/jU,GAMxB,QAJyB0N,IAApB7I,EAAOi1T,WAAyB3gH,GAAmB,QACjCzrM,IAAlB7I,EAAOk1T,SAAuB2L,GAAiB,QAC5Bh4T,IAAnB7I,EAAOs1T,UAAwBwL,GAAgB,GAE/CxsH,GAAoBusH,GAAkBC,EAAgB,KAE5D,CAEA,IAAOxsH,IAAsBusH,IAAoBC,EAAgB,OAAO/xR,QAAQG,QAASq6H,GAMzF,IAJA,IAAMw3J,EAA2B,GAC3BC,EAAyB,GACzBC,EAAwB,GAEpB9lU,EAAI,EAAGowD,EAAK2zQ,EAAQ7oU,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEpD,IAAM6E,EAASk/T,EAAS/jU,GAExB,GAAKm5M,EAAmB,CAEvB,IAAM4sH,OAAsCr4T,IAApB7I,EAAOi1T,SAC5B1oO,EAAO4kO,cAAe,WAAYnxT,EAAOi1T,UACzC1rJ,EAAS54F,WAAW3S,SAEvB+iQ,EAAyBxlU,KAAM2lU,EAEhC,CAEA,GAAKL,EAAiB,CAErB,IAAMK,OAAoCr4T,IAAlB7I,EAAOk1T,OAC5B3oO,EAAO4kO,cAAe,WAAYnxT,EAAOk1T,QACzC3rJ,EAAS54F,WAAW62F,OAEvBw5J,EAAuBzlU,KAAM2lU,EAE9B,CAEA,GAAKJ,EAAgB,CAEpB,IAAMI,OAAqCr4T,IAAnB7I,EAAOs1T,QAC5B/oO,EAAO4kO,cAAe,WAAYnxT,EAAOs1T,SACzC/rJ,EAAS54F,WAAW1qC,MAEvBg7R,EAAsB1lU,KAAM2lU,EAE7B,CAED,CAEA,OAAOnyR,QAAQxtC,IAAK,CACnBwtC,QAAQxtC,IAAKw/T,GACbhyR,QAAQxtC,IAAKy/T,GACbjyR,QAAQxtC,IAAK0/T,KACV9xR,MAAM,SAAWyjR,GAEpB,IAAMuO,EAAiBvO,EAAW,GAC5Bn+G,EAAem+G,EAAW,GAC1Bl+G,EAAck+G,EAAW,GAO/B,OALKt+G,IAAmB/qC,EAASgb,gBAAgBvmH,SAAWmjQ,GACvDN,IAAiBt3J,EAASgb,gBAAgB/c,OAASitC,GACnDqsH,IAAgBv3J,EAASgb,gBAAgBt+I,MAAQyuK,GACtDnrC,EAASib,sBAAuB,EAEzBjb,CAER,GAED,CAuoEK63J,CAAiB73J,EAAUotJ,EAAauI,QAAS3yO,GACjDg9E,CAEJ,GAED,CAOA,SAASo0J,GAAqBp0J,EAAUy8H,GAEvC,IAAI34R,EAAQk8J,EAAS9yE,WAIrB,GAAe,OAAVppF,EAAiB,CAErB,IAAMu4K,EAAU,GAEV5nH,EAAWurG,EAASlhG,aAAc,YAExC,QAAkBx/D,IAAbm1D,EAcJ,OADAxrD,QAAQwN,MAAO,kGACRupJ,EAZP,IAAM,IAAIpuK,EAAI,EAAGA,EAAI6iE,EAASoe,MAAOjhF,IAEpCyqL,EAAQrqL,KAAMJ,GAIfouK,EAASkf,SAAU7C,GACnBv4K,EAAQk8J,EAAS9yE,UASnB,CAIA,IAAM4qO,EAAoBh0T,EAAM+uE,MAAQ,EAClCklP,EAAa,GAEnB,Gbl7I2B,Iak7ItBt7B,EAIJ,IAAM,IAAI7qS,EAAI,EAAGA,GAAKkmU,EAAmBlmU,IAExCmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAM,IAC7B0sK,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,IAC7BmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,EAAI,SAQlC,IAAM,IAAIA,EAAI,EAAGA,EAAIkmU,EAAmBlmU,IAElCA,EAAI,IAAM,GAEdmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,IAC7BmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,EAAI,IACjCmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,EAAI,MAKjCmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,EAAI,IACjCmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,EAAI,IACjCmmU,EAAW/lU,KAAM8R,EAAMunJ,KAAMz5J,KAQzBmmU,EAAWjrU,OAAS,IAAQgrU,GAElC7uT,QAAQwN,MAAO,2FAMhB,IAAMuhT,EAAch4J,EAAS5pK,QAG7B,OAFA4hU,EAAY94I,SAAU64I,GAEfC,CAER,CC7mJO,IAAM+1D,GAAU,WAEtB,SAAAA,IAAwB,IAAXC,EAAI74X,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAouX,GAEpB74X,KAAK84X,KAAOA,EACZ94X,KAAKg7C,MAAQ,GACbh7C,KAAKorU,QAAU,GACfprU,KAAK+4X,eAAiB,GACtB/4X,KAAKg5X,aAAe,CAErB,CAqFC,OArFAzvX,EAAAsvX,EAAA,EAAAr2X,IAAA,cAAA/D,MAED,SAAa+sU,GAEZ,IAAOxrU,KAAKorU,QAASI,GAAa,CAEjC,IAAMxH,EAAShkU,KAAKi5X,gBACpBj1D,EAAOpgU,iBAAkB,UAAW5D,KAAKk5X,WAAWtlX,KAAM5T,KAAMwrU,IAChExrU,KAAKorU,QAASI,GAAaxH,CAE5B,CAED,GAAC,CAAAxhU,IAAA,iBAAA/D,MAED,WAEC,IAAM,IAAI/B,EAAI,EAAGA,EAAIsD,KAAK84X,KAAMp8X,IAC/B,KAASsD,KAAKg5X,aAAiB,GAAKt8X,GAAQ,OAAOA,EAEpD,OAAS,CAEV,GAAC,CAAA8F,IAAA,aAAA/D,MAED,SAAY+sU,EAAU2tD,GAErB,IAAM1oV,EAAUzwC,KAAK+4X,eAAgBvtD,GAGrC,GAFA/6R,GAAWA,EAAS0oV,GAEfn5X,KAAKg7C,MAAMpjD,OAAS,CAExB,IAAAwhY,EAAmCp5X,KAAKg7C,MAAMxc,QAAtCiS,EAAO2oV,EAAP3oV,QAAS0oV,EAAGC,EAAHD,IAAKE,EAAQD,EAARC,SACtBr5X,KAAK+4X,eAAgBvtD,GAAa/6R,EAClCzwC,KAAKorU,QAASI,GAAW35Q,YAAasnU,EAAKE,EAE5C,MAECr5X,KAAKg5X,cAAgB,GAAKxtD,CAI5B,GAAC,CAAAhpU,IAAA,mBAAA/D,MAED,SAAkBw6X,GAEjBj5X,KAAKi5X,cAAgBA,CAEtB,GAAC,CAAAz2X,IAAA,iBAAA/D,MAED,SAAgBq6X,GAEf94X,KAAK84X,KAAOA,CAEb,GAAC,CAAAt2X,IAAA,cAAA/D,MAED,SAAa06X,EAAKE,GAAW,IAAAn9W,EAAA,KAE5B,OAAO,IAAIo0B,SAAS,SAAEG,GAErB,IAAM+6R,EAAWtvT,EAAKo9W,kBAEF,IAAf9tD,GAEJtvT,EAAKq9W,YAAa/tD,GAClBtvT,EAAK88W,cAAgB,GAAKxtD,EAC1BtvT,EAAK68W,eAAgBvtD,GAAa/6R,EAClCv0B,EAAKkvT,QAASI,GAAW35Q,YAAasnU,EAAKE,IAI3Cn9W,EAAK8+B,MAAMl+C,KAAM,CAAE2zC,QAAAA,EAAS0oV,IAAAA,EAAKE,SAAAA,GAInC,GAED,GAAC,CAAA72X,IAAA,UAAA/D,MAED,WAECuB,KAAKorU,QAAQ7oU,SAAS,SAAEyhU,GAAM,OAAMA,EAAOsB,WAAW,IACtDtlU,KAAK+4X,eAAenhY,OAAS,EAC7BoI,KAAKorU,QAAQxzU,OAAS,EACtBoI,KAAKg7C,MAAMpjD,OAAS,EACpBoI,KAAKg5X,aAAe,CAErB,KAACH,CAAA,CA/FqB,GCJjBvhY,GAAE,EAAMyP,GAAE,EAAwrDw6C,GAAEh4C,GAAC,SAAAg4C,IAAa92C,EAAA,KAAA82C,GAACvhD,KAAKw5X,SAAS,EAAEx5X,KAAKy5X,SAAS,EAAEz5X,KAAK05X,WAAW,EAAE15X,KAAK25X,YAAY,EAAE35X,KAAK45X,WAAW,EAAE55X,KAAK65X,WAAW,EAAE75X,KAAK85X,UAAU,EAAE95X,KAAK+5X,uBAAuB,EAAE/5X,KAAKwU,OAAO,GAAGxU,KAAKg6X,qBAAqB,CAAC,CAACC,SAAS,EAAEC,eAAe,EAAEC,oBAAoB,EAAEC,cAAc,EAAEC,WAAW,EAAEC,eAAe,EAAEC,iBAAiB,EAAEzhW,MAAM,EAAE0hW,oBAAoB,CAAC,EAAE,EAAE,EAAE,GAAGC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGh5N,QAAQ,KAAKzhK,KAAK06X,SAAS,CAAC,EAAE16X,KAAK26X,WAAW,IAAI,IAAQv6U,GAAE,WAAC,SAAAA,EAAY9oD,EAAEgP,EAAES,EAAErK,GAAE+N,EAAA,KAAA21C,GAACpgD,KAAKunV,UAAU,IAAI3jF,SAAStsQ,EAAE6iK,OAAO7iK,EAAEu7T,WAAWvsT,EAAES,GAAG/G,KAAK46X,cAAcl+X,EAAEsD,KAAKslL,QAAQ,CAAC,CAA+yB,OAA9yB/7K,EAAA62C,EAAA,EAAA59C,IAAA,aAAA/D,MAAA,WAAa,IAAMnH,EAAE0I,KAAKunV,UAAUszC,SAAS76X,KAAKslL,SAAS,OAAOtlL,KAAKslL,SAAS,EAAEhuL,CAAC,GAAC,CAAAkL,IAAA,cAAA/D,MAAA,WAAc,IAAMnH,EAAE0I,KAAKunV,UAAUR,UAAU/mV,KAAKslL,QAAQtlL,KAAK46X,eAAe,OAAO56X,KAAKslL,SAAS,EAAEhuL,CAAC,GAAC,CAAAkL,IAAA,cAAA/D,MAAA,WAAc,IAAMnH,EAAE0I,KAAKunV,UAAUn0B,UAAUpzT,KAAKslL,QAAQtlL,KAAK46X,eAAe,OAAO56X,KAAKslL,SAAS,EAAEhuL,CAAC,GAAC,CAAAkL,IAAA,cAAA/D,MAAA,WAAc,IAAMnH,EAAE0I,KAAKunV,UAAUn0B,UAAUpzT,KAAKslL,QAAQtlL,KAAK46X,eAAe39X,KAAAs1J,IAAA,EAAG,IAAGvyJ,KAAKunV,UAAUn0B,UAAUpzT,KAAKslL,QAAQ,EAAEtlL,KAAK46X,eAAe,OAAO56X,KAAKslL,SAAS,EAAEhuL,CAAC,GAAC,CAAAkL,IAAA,aAAA/D,MAAA,WAAa,IAAMnH,EAAE0I,KAAKunV,UAAUZ,SAAS3mV,KAAKslL,QAAQtlL,KAAK46X,eAAe,OAAO56X,KAAKslL,SAAS,EAAEhuL,CAAC,GAAC,CAAAkL,IAAA,QAAA/D,MAAA,SAAMnH,GAAG,OAAO0I,KAAKslL,SAAShuL,EAAE0I,IAAI,GAAC,CAAAwC,IAAA,QAAA/D,MAAA,SAAMnH,GAAoC,IAA9B,IAAJgP,EAACrG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAC,EAAS8G,EAAE/G,KAAKslL,QAAY5oL,EAAE,EAAOsD,KAAKunV,UAAUszC,SAAS76X,KAAKslL,WAAWh/K,GAAG5J,EAAEpF,GAAGoF,IAAIsD,KAAKslL,UAAU,OAAO5oL,EAAEpF,GAAG0I,KAAKslL,UAAU,IAAI/vE,WAAWv1G,KAAKunV,UAAUptL,OAAOn6J,KAAKunV,UAAU10B,WAAW9rT,EAAErK,EAAE,KAAC0jD,CAAA,CAA/5B,GAA67BqB,IAApB,IAAI8zD,WAAW,CAAC,IAAO,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,KAAoG,SAASj2D,GAAGhoD,GAAG,MAAM,oBAAoB26Q,aAAa,IAAIA,aAAaC,OAAO56Q,GAAGwjY,OAAOz4W,KAAK/qB,GAAGmJ,SAAS,OAAO,CAAgK,SAASygD,GAAG5pD,GAAG,IAAMgP,EAAE,IAAIivG,WAAWj+G,EAAE6iK,OAAO7iK,EAAEu7T,WAAWpxQ,GAAG7pD,QAAQ,GAAG0O,EAAE,KAAKm7C,GAAG,IAAIn7C,EAAE,KAAKm7C,GAAG,IAAIn7C,EAAE,KAAKm7C,GAAG,IAAIn7C,EAAE,KAAKm7C,GAAG,IAAIn7C,EAAE,KAAKm7C,GAAG,IAAIn7C,EAAE,KAAKm7C,GAAG,IAAIn7C,EAAE,KAAKm7C,GAAG,IAAIn7C,EAAE,KAAKm7C,GAAG,IAAIn7C,EAAE,KAAKm7C,GAAG,IAAIn7C,EAAE,KAAKm7C,GAAG,IAAIn7C,EAAE,MAAMm7C,GAAG,KAAKn7C,EAAE,MAAMm7C,GAAG,IAAI,MAAM,IAAI3jD,MAAM,+BAA+B,IAAMiJ,EAAE,IAAIw6C,GAAG7kD,EAAE,GAAG6qG,YAAY4vF,kBAAkB17L,EAAE,IAAI2kD,GAAG9oD,EAAEmqD,GAAG7pD,OAAO8E,GAAE,GAAIqK,EAAEyyX,SAAS/9X,EAAEs/X,cAAch0X,EAAE0yX,SAASh+X,EAAEs/X,cAAch0X,EAAE2yX,WAAWj+X,EAAEs/X,cAAch0X,EAAE4yX,YAAYl+X,EAAEs/X,cAAch0X,EAAE6yX,WAAWn+X,EAAEs/X,cAAch0X,EAAE8yX,WAAWp+X,EAAEs/X,cAAch0X,EAAE+yX,UAAUr+X,EAAEs/X,cAAc,IAAM/+X,EAAEP,EAAEs/X,cAAch0X,EAAEgzX,uBAAuBt+X,EAAEs/X,cAAiK,IAAnJ,IAAM7zX,EAAEzL,EAAEs/X,cAAcvgX,EAAE/e,EAAEs/X,cAAcl0X,EAAEpL,EAAEs/X,cAAct0X,EAAEhL,EAAEs/X,cAAc/0U,EAAEvqD,EAAEu/X,cAAc/+X,EAAER,EAAEu/X,cAAcr0X,EAAE,IAAIy5C,GAAG9oD,EAAEmqD,GAAG7pD,OAAO8E,EAAE,EAAEV,EAAE,GAAE,GAAYsK,EAAE,EAAEA,EAAEtK,EAAEsK,IAAIS,EAAEyN,OAAO1X,KAAK,CAACm+X,UAAU,IAAI1lR,WAAWj+G,EAAE6iK,OAAO7iK,EAAEu7T,WAAWlsT,EAAEq0X,cAAcr0X,EAAEq0X,eAAeE,uBAAuBv0X,EAAEq0X,gBAA+hB,IAA/gB,IAAM54X,EAAE,IAAIg+C,GAAG9oD,EAAE4P,EAAEsT,GAAE,GAAIxT,EAAE,CAACizX,SAAS73X,EAAE+4X,MAAM,GAAGC,cAAclB,eAAe93X,EAAEg5X,cAAchB,cAAch4X,EAAEg5X,cAAcjB,oBAAoB/3X,EAAEg5X,cAAcf,WAAWj4X,EAAEi5X,aAAaf,eAAel4X,EAAEi5X,aAAad,iBAAiBn4X,EAAEi5X,aAAaviW,MAAM12B,EAAEi5X,aAAab,oBAAoB,CAACp4X,EAAEi5X,aAAaj5X,EAAEi5X,aAAaj5X,EAAEi5X,aAAaj5X,EAAEi5X,cAAcZ,WAAW,CAACr4X,EAAEi5X,aAAaj5X,EAAEi5X,aAAaj5X,EAAEi5X,aAAaj5X,EAAEi5X,aAAaj5X,EAAEi5X,aAAaj5X,EAAEi5X,aAAaj5X,EAAEi5X,aAAaj5X,EAAEi5X,cAAc55N,QAAQ,IAAI/6J,GAAGM,EAAEmzX,oBAAoB,EAAE,GAAG,EAAU7iY,EAAE,EAAEA,EAAEoP,EAAEpP,IAAI,CAAC,IAAMgP,EAAE,CAACg1X,UAAUl5X,EAAEg5X,cAAcG,UAAUn5X,EAAEi5X,aAAaG,YAAYp5X,EAAEi5X,aAAaI,eAAe,CAACr5X,EAAEi5X,aAAaj5X,EAAEi5X,aAAaj5X,EAAEi5X,aAAaj5X,EAAEi5X,cAAcK,aAAavyU,IAASwyU,YAAYxyU,KAAU,GAAG7iD,EAAEk1X,aAAal1X,EAAEo1X,YAAYt5X,EAAEw5X,aAAat1X,EAAEq1X,YAAYv5X,EAAEw5X,eAAet1X,EAAEo1X,YAAYt5X,EAAE24X,cAAcz0X,EAAEq1X,YAAYv5X,EAAE24X,eAAe/zX,EAAEy6J,QAAQnqK,GAAGgP,CAAC,CAACS,EAAEizX,qBAAqBpiY,OAAO,EAAEmP,EAAEizX,qBAAqBl9X,KAAKkK,GAA4B,IAAzB,IAAMK,EAAE,IAAI+4C,GAAG9oD,EAAEuP,EAAEJ,GAAE,GAASY,EAAEi+K,QAAQ7+K,GAAG,CAAC,IAAMnP,EAAE+P,EAAE0zX,cAAcz0X,EAAEe,EAAEw0X,MAAMvkY,GAAGoF,EAAE4iD,GAAGh5C,GAAG7K,EAAE4L,EAAEw0X,MAAMvkY,EAAEgP,EAAEkrQ,YAAYzqQ,EAAE2zX,SAASh+X,GAAGA,EAAE/E,MAAM,SAAS2nD,GAAG7jD,GAAGA,EAAE4L,EAAEi+K,QAAQ,GAAGj+K,EAAE8zX,MAAM,EAAE9zX,EAAEi+K,QAAQ,EAAE,CAAC,GAAGrpL,GAAG,EAAE,OAAO8K,EAA4I,IAA1I,IAAM7K,EAAE,IAAIkkD,GAAG9oD,EAAE0uD,EAAE/pD,GAAE,GAAIsL,EAAErL,EAAEk/X,cAAc70X,EAAErK,EAAEk/X,cAAc50X,EAAEtK,EAAE6+X,cAAcj0X,EAAE5K,EAAE6+X,cAAc3zX,EAAElL,EAAE6+X,cAAc7sV,EAAEhyC,EAAE6+X,cAAc9gW,EAAE,GAAW3iC,EAAE,EAAEA,EAAE0E,EAAE1E,IAAI2iC,EAAEn9B,KAAK,CAACg/X,WAAW5/X,EAAE6+X,cAAcgB,mBAAmB7/X,EAAE6+X,cAAciB,mBAAmB9/X,EAAE6+X,cAAckB,qBAAqB//X,EAAE6+X,cAAcmB,qBAAqBhgY,EAAE6+X,gBAAgB,IAAM1hV,EAAE2M,EAAE9pD,EAAEopL,QAAQ99K,EAAE6xC,EAAE7yC,EAAEI,EAAEY,EAAEV,EAAEK,EAAEP,EAAEQ,EAAE29C,EAAE,IAAIwwD,WAAWj+G,EAAE6iK,OAAO7iK,EAAEu7T,WAAWx5Q,EAAE7yC,GAAGstC,EAAE,IAAIyhE,WAAWj+G,EAAE6iK,OAAO7iK,EAAEu7T,WAAWrrT,EAAEV,GAAGmzC,EAAE,IAAIs7D,WAAWj+G,EAAE6iK,OAAO7iK,EAAEu7T,WAAWjsT,EAAEQ,GAAGu+C,EAAE,IAAI4vD,WAAWj+G,EAAE6iK,OAAO7iK,EAAEu7T,WAAW1rT,EAAE+mC,GAAG,OAAOnnC,EAAE4zX,WAAW,CAACwB,cAAc50X,EAAE60X,cAAc71X,EAAE81X,WAAWpiW,EAAEqiW,cAAcv3U,EAAEw3U,cAAczoV,EAAE0oV,WAAWviV,EAAEwiV,aAAa92U,GAAG5+C,CAAC,CAAkN,ICAj6MS,GAAEssC,GAAE7Z,GAAE,aCmENyiW,GDnEYh2X,GAAE,CAACi2X,IAAI,CAACC,gCAAgC,SAASp1X,GAAGyyB,GAAE,IAAIs7E,WAAWzhE,GAAEz1C,QAAQ+1M,OAAOj6C,OAAO,IAAUj+G,GAAC,oBAAAA,IAAAzxC,EAAA,KAAAyxC,EAAA,CAA4mB,OAA5mB3yC,EAAA2yC,EAAA,EAAA15C,IAAA,OAAA/D,MAAC,WAAO,OAAO+I,KAAIA,GAAE,oBAAoBqpQ,MAAMA,MAAM,gCAAgCv0O,IAAGoU,MAAK,SAAAlpC,GAAC,OAAEA,EAAEoqQ,aAAa,IAAElhO,MAAK,SAAAlpC,GAAC,OAAEq9T,YAAYg4D,YAAYr1X,EAAEd,GAAE,IAAEgqC,KAAK1wC,KAAKwvB,OAAOq1S,YAAYg4D,YAAY/B,OAAOz4W,KAAKia,GAAE,UAAU51B,IAAGgqC,KAAK1wC,KAAKwvB,OAAOhoB,GAAE,GAAC,CAAAhF,IAAA,QAAA/D,MAAA,SAAM+I,GAAGssC,GAAEtsC,EAAE+C,SAAS7D,GAAEi2X,IAAIC,gCAAgC,EAAE,GAAC,CAAAp6X,IAAA,SAAA/D,MAAA,SAAO+I,GAAM,IAAJd,EAACzG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAC,EAAG,IAAI6zC,GAAE,MAAM,IAAIh2C,MAAM,+CAA+C,IAAMo+C,EAAE10C,EAAEgqQ,WAAWl1O,EAAEwX,GAAEz1C,QAAQy+X,OAAO5gV,GAAGjiB,GAAEhL,IAAIznB,EAAE80B,GAAG51B,EAAEA,GAAG2Q,OAAOy8B,GAAEz1C,QAAQ0+X,0BAA0BzgW,EAAE4f,IAAI,IAAMzK,EAAEqC,GAAEz1C,QAAQy+X,OAAOp2X,GAAGhK,EAAEo3C,GAAEz1C,QAAQ2+X,gBAAgBvrV,EAAE/qC,EAAE41B,EAAE4f,GAAGhO,EAAEjU,GAAErpB,MAAM6gC,EAAEA,EAAE/0C,GAAG,OAAOo3C,GAAEz1C,QAAQ4+X,KAAK3gW,GAAGwX,GAAEz1C,QAAQ4+X,KAAKxrV,GAAGvD,CAAC,KAACgO,CAAA,CAA5mB,GAAmnB5f,GAAE,mksCC+DvuBymS,GAAa,IAAIhiR,QAEnBm8U,GAAiB,EAIfC,GAAU,SAAAhtH,GAAAn0P,EAAAmhX,EAAAhtH,GAAA,IAAAl0P,EAAAtB,EAAAwiX,GAEf,SAAAA,EAAattH,GAAU,IAAA3zP,EAqBrB,OArBqBzR,EAAA,KAAA0yX,IAEtBjhX,EAAAD,EAAApf,KAAA,KAAOgzQ,IAEFutH,eAAiB,GACtBlhX,EAAKmhX,iBAAmB,KACxBnhX,EAAKohX,kBAAoB,KAEzBphX,EAAKonT,WAAa,IAAIu1D,GACtB38W,EAAKsnT,gBAAkB,GACvBtnT,EAAKqhX,aAAe,KAEW,qBAAnBC,gBAEXzpX,QAAQk/C,KAEP,kIAKD/2C,CAEF,CA+MC,OA/MA3S,EAAA4zX,EAAA,EAAA36X,IAAA,oBAAA/D,MAED,SAAmBy4F,GAIlB,OAFAl3F,KAAKo9X,eAAiBlmS,EAEfl3F,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB62P,GAIf,OAFAt1P,KAAKsjU,WAAWm6D,eAAgBnoI,GAEzBt1P,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeqzL,GAoBd,OAlBA9xL,KAAKu9X,aAAe,CACnBG,cAAe5rM,EAASxlG,WAAWl+C,IAAK,iCACxCuvV,cAAe7rM,EAASxlG,WAAWl+C,IAAK,iCACxCwvV,cAAe9rM,EAASxlG,WAAWl+C,IAAK,gCACxCyvV,aAAc/rM,EAASxlG,WAAWl+C,IAAK,iCACvC0vV,cAAehsM,EAASxlG,WAAWl+C,IAAK,gCACxC2vV,eAAgBjsM,EAASxlG,WAAWl+C,IAAK,mCACrC0jJ,EAASxlG,WAAWl+C,IAAK,0CAIzB0jJ,EAAS0E,aAAaC,WAG1Bz2L,KAAKu9X,aAAaI,eAAgB,GAI5B39X,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAAO,IAAAkwE,EAAA,KAEN,IAAO3uE,KAAKs9X,kBAAoB,CAG/B,IAAMU,EAAW,IAAI9tH,GAAYlwQ,KAAK6vQ,SACtCmuH,EAASzrH,QAASvyQ,KAAKo9X,gBACvBY,EAASvrH,mBAAoBzyQ,KAAK8vQ,iBAClC,IAAMm1D,EAAY+4D,EAAShkH,UAAW,uBAGhCikH,EAAe,IAAI/tH,GAAYlwQ,KAAK6vQ,SAC1CouH,EAAa1rH,QAASvyQ,KAAKo9X,gBAC3Ba,EAAaprH,gBAAiB,eAC9BorH,EAAaxrH,mBAAoBzyQ,KAAK8vQ,iBACtC,IAAMouH,EAAgBD,EAAajkH,UAAW,yBAE9Ch6Q,KAAKs9X,kBAAoBhtV,QAAQxtC,IAAK,CAAEmiU,EAAWi5D,IACjDxtV,MAAM,SAAA1mC,GAAoC,IAAAqT,EAAAqE,EAAA1X,EAAA,GAAhCi7T,EAAS5nT,EAAA,GAAE6gX,EAAa7gX,EAAA,GAE5B2gE,EAAKm/S,EAAWgB,YAAY19X,WAE5B+vB,EAAO,CACZ,kBACA,uBAAyBu9B,KAAKC,UAAWmvU,EAAWiB,cACpD,2BAA6BrwU,KAAKC,UAAWmvU,EAAWkB,kBACxD,sBAAwBtwU,KAAKC,UAAWmvU,EAAWmB,aACnD,4BACAr5D,EACA,eACAjnP,EAAGtoD,UAAWsoD,EAAGxxE,QAAS,KAAQ,EAAGwxE,EAAG6wB,YAAa,OACpDxxG,KAAM,MAERsxE,EAAK60P,gBAAkBpqP,IAAIC,gBAAiB,IAAIqjP,KAAM,CAAElsS,KACxDm+C,EAAK0uT,iBAAmBa,EAExBvvT,EAAK20P,WAAWi7D,kBAAkB,WAEjC,IAAMv6D,EAAS,IAAItgU,OAAQirE,EAAK60P,iBAC1B65D,EAAmB1uT,EAAK0uT,iBAAiBzsX,MAAO,GAItD,OAFAozT,EAAOnyQ,YAAa,CAAEjtD,KAAM,OAAQuyD,OAAQwX,EAAK4uT,aAAcF,iBAAAA,GAAoB,CAAEA,IAE9Er5D,CAER,GAED,IAEIk5D,GAAiB,GAIrBnpX,QAAQk/C,KAEP,uJAOFiqU,IAED,CAEA,OAAOl9X,KAAKs9X,iBAEb,GAAC,CAAA96X,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAAU,IAAAo3C,EAAA,KAExC,GAA2B,OAAtBxvE,KAAKu9X,aAET,MAAM,IAAIz/X,MAAO,+EAIlB,IAAMimG,EAAS,IAAImsK,GAAYlwQ,KAAK6vQ,SAEpC9rK,EAAO8uK,gBAAiB,eACxB9uK,EAAO0uK,mBAAoBzyQ,KAAK8vQ,iBAEhC/rK,EAAOn4B,KAAM1jC,GAAK,SAAEiyH,GAInB,GAAK4oK,GAAW30R,IAAK+rH,GAIpB,OAFmB4oK,GAAWhzS,IAAKoqI,GAEjB7gF,QAAQ5oC,KAAMspG,GAASrpG,MAAOvY,GAIjDo3C,EAAKgvT,eAAgBrkO,GACnBzpH,MAAM,SAAE2wH,GAAO,OAAMrnB,EAASA,EAAQqnB,GAAY,IAAI,IACtD1wH,MAAOvY,EAEV,GAAGq0C,EAAYr0C,EAEhB,GAAC,CAAA51B,IAAA,qBAAA/D,MAED,SAAoBggY,EAAiBtiX,GAEpC,IAAQuiJ,EAAyE+/N,EAAzE//N,QAASvwJ,EAAgEswX,EAAhEtwX,MAAOC,EAAyDqwX,EAAzDrwX,OAAQmwJ,EAAiDkgO,EAAjDlgO,OAAQ35J,EAAyC65X,EAAzC75X,KAAM2c,EAAmCk9W,EAAnCl9W,MAAOm9W,EAA4BD,EAA5BC,cAAeC,EAAaF,EAAbE,SAEpE,GAAc,UAAT/5X,EAAmB,OAAO0rC,QAAQiuC,OAAQh9D,GAE/C,IAAM8/I,EAAUllJ,EAAU09W,WAAa,EACpC,IAAI9T,GAAwBrnN,EAASvwJ,EAAOC,EAAQ+N,EAAU09W,WAAYt7N,EAAQrT,IAClF,IAAIo2F,GAAmB5iF,EAASvwJ,EAAOC,EAAQmwJ,EAAQrT,IAW1D,OARAmW,EAAQ/C,UAA+B,IAAnBI,EAAQ9mK,OAAeizJ,GAAeG,GAC1DqW,EAAQhD,UAAYxT,GACpBwW,EAAQxC,iBAAkB,EAE1BwC,EAAQ/B,aAAc,EACtB+B,EAAQ5C,SF/P0E,IE+P/DigO,EAAyCxvO,GAAeD,GAC3EoS,EAAQvC,oBFhQ8D,EEgQtC6/N,GAEzBt9N,CAER,GAEA,CAAA7+J,IAAA,iBAAA/D,MAAA,eAAAmgY,EAAA/hT,GAAAC,EAAAA,MAKA,SAAAE,EAAsBm9E,GAAM,IAAAhjG,EAAAh7C,EAAAwnT,EAAAk7D,EAAAz0Q,EAAA,KAAA00Q,EAAA7+X,UAAA,OAAA68E,EAAAA,MAAA,SAAAxtD,GAAA,cAAAA,EAAArsB,KAAAqsB,EAAApsB,MAAA,OAEuB,GAFrBi0D,EAAM2nU,EAAAlnY,OAAA,QAAAwS,IAAA00X,EAAA,GAAAA,EAAA,GAAG,CAAC,EF3Q6N,KE6Q9P3iX,EAAYo1P,GAAM,IAAIh8J,WAAY4kD,KAEzBq/N,SAAgC,CAAAlqW,EAAApsB,KAAA,eAAAosB,EAAA4tD,OAAA,SAEvC6hT,GAAmB5iX,IAAW,OAagB,OARhDwnT,EAAaxsQ,EACb0nU,EAAiB7+X,KAAKu0H,OAAO7jF,MAAM,WAExC,OAAO05E,EAAKk5M,WAAWzxQ,YAAa,CAAEjtD,KAAM,YAAau1J,OAAAA,EAAQwpK,WAAYA,GAAc,CAAExpK,GAE9F,IAAIzpH,MAAM,SAAEpqC,GAAC,OAAM8jH,EAAK40Q,mBAAoB14X,EAAEo9B,KAAMvnB,EAAW,IAG/D4mT,GAAW9zS,IAAKkrI,EAAQ,CAAE7gF,QAASulT,IAAmBvvW,EAAA4tD,OAAA,SAE/C2hT,GAAc,wBAAAvvW,EAAAm/C,OAAA,GAAAuO,EAAA,UAErB,gBAAA5oB,GAAA,OAAAwqU,EAAA9+X,MAAA,KAAAG,UAAA,EA5BD,IA4BC,CAAAuC,IAAA,UAAA/D,MAED,WAOC,OALAuB,KAAKsjU,WAAW5hK,UACX1hK,KAAKwjU,iBAAkBpqP,IAAIujP,gBAAiB38T,KAAKwjU,iBAEtD05D,KAEOl9X,IAER,KAACm9X,CAAA,CAxOc,CAASvtH,IA+OzButH,GAAWmB,YAAc,CACxBW,MAAO,EACPC,UAAW,GAGZ/B,GAAWkB,iBAAmB,CAC7Bc,KAAM,EACNC,KAAM,EACNC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,mBAAoB,EACpBC,OAAQ,EACRC,aAAc,EACdC,cAAe,EACfC,SAAU,GACVC,QAAS,GACTC,4BAA6B,GAC7BC,OAAQ,GACRC,OAAQ,GACRC,OAAQ,GACRC,SAAU,IAGXhD,GAAWiB,aAAe,CACzBryO,WAAYA,GACZqB,qBAAsBA,GACtBc,iBAAkBA,GAClBf,qBAAsBA,GACtBJ,yBAA0BA,GAC1BH,sBAAuBA,GACvBK,gBAAiBA,GACjBC,gBAAiBA,GACjBL,wBAAyBA,GACzBJ,qBAAsBA,IAMvB0wO,GAAWgB,YAAc,WAExB,IAAIhnU,EACAmmU,EACA8C,EAEEhC,EAAeiC,cACfhC,EAAmBiC,kBACnBhC,EAAciC,aAEpBprX,KAAKvR,iBAAkB,WAAW,SAAW0C,GAE5C,IAyCc4+T,EAzCRxkR,EAAUp6C,EAAEo9B,KAElB,OAASgd,EAAQ97C,MAEhB,IAAK,OACJuyD,EAASzW,EAAQyW,OAoCL+tQ,EAnCNxkR,EAAQ28U,iBAqChBC,EAAoB,IAAIhtV,SAAS,SAAEG,GAElC2vV,EAAc,CAAEl7D,WAAAA,EAAYs7D,qBAAsB/vV,GAClDgwV,MAAOL,EAER,IAAI1vV,MAAM,WAET0vV,EAAYM,uBAEkBt2X,IAAzBg2X,EAAYO,UAEhB5sX,QAAQk/C,KAAM,8DAIhB,IAnDE,MAED,IAAK,YACJqqU,EAAkB5sV,MAAM,WAEvB,IAMC,IAJA,IAAAkwV,EAgDL,SAAoBzmO,GAEnB,IAAM0mO,EAAW,IAAIT,EAAYO,SAAU,IAAIprR,WAAY4kD,IAE3D,SAASo6M,IAERssB,EAASl/T,QACTk/T,EAASrjW,QAEV,CAEA,IAAOqjW,EAASC,UAGf,MADAvsB,IACM,IAAIz2W,MAAO,wDAIlB,IAAMijY,EAAcF,EAASG,UAAY1C,EAAYY,UAAYZ,EAAYW,MACvE9wX,EAAQ0yX,EAASI,WACjB7yX,EAASyyX,EAASK,YAClBvsN,EAASksN,EAASM,aAAe,EACjC3sX,EAASqsX,EAASO,YAClBC,EAAWR,EAASS,cACpB5C,EAAgBmC,EAASU,qBACzB5C,EAAWkC,EAASW,cAE1BC,EA2ID,SAA8BV,EAAa5yX,EAAOC,EAAQizX,GAOzD,IALA,IAAIK,EACAC,EAEE1gY,EAAU8/X,IAAgBzC,EAAYW,MAAQ2C,EAAgBC,EAE1DnlY,EAAI,EAAGA,EAAIuE,EAAQrJ,OAAQ8E,IAAO,CAE3C,IAAMolY,EAAM7gY,EAASvE,GAErB,GAAOy6D,EAAQ2qU,EAAIC,MACZD,EAAIf,YAAY7xW,SAAU6xW,MAC5BM,GAAYS,EAAIJ,iBAAiB9pY,OAAS,MAC1CkqY,EAAIhpK,iBAAuBzmE,EAAclkJ,IAAWkkJ,EAAcjkJ,KAKvE,MAAO,CAAEszX,iBAHTA,EAAmBI,EAAIJ,iBAAkBL,EAAW,EAAI,GAG7BM,aAF3BA,EAAeG,EAAIH,aAAcN,EAAW,EAAI,GAIjD,CAOA,OALAttX,QAAQk/C,KAAM,sFAEdyuU,EAAmBrD,EAAiB2B,OACpC2B,EAAevD,EAAaryO,WAErB,CAAE21O,iBAAAA,EAAkBC,aAAAA,EAE5B,CAzK4CK,CAAqBjB,EAAa5yX,EAAOC,EAAQizX,GAApFK,EAAgBD,EAAhBC,iBAAkBC,EAAYF,EAAZE,aAE1B,IAAOxzX,IAAWC,IAAYoG,EAG7B,MADA+/V,IACM,IAAIz2W,MAAO,sCAIlB,IAAO+iY,EAASoB,mBAGf,MADA1tB,IACM,IAAIz2W,MAAO,8CAMlB,IAFA,IAAM4gK,EAAU,GAENwjO,EAAM,EAAGA,EAAM1tX,EAAQ0tX,IAAS,CAMzC,IAJA,IAAMC,EAAY,GAEdC,OAAQ,EAAEC,OAAS,EAEb3sJ,EAAQ,EAAGA,EAAQ/gE,EAAQ+gE,IAAW,CAE/C,IAAM4sJ,EAAYzB,EAAS0B,kBAAmBL,EAAKxsJ,EAAO,GAC1D0sJ,EAAWE,EAAUE,UACrBH,EAAYC,EAAUG,WACtB,IAAM78N,EAAM,IAAIrwD,WAAYsrR,EAAS6B,8BAA+BR,EAAKxsJ,EAAO,EAAGgsJ,IAYnF,IAXeb,EAAS8B,eACvB/8N,EACAs8N,EACAxsJ,EACA,EACAgsJ,EACA,GACE,GACA,GAMF,MADAntB,IACM,IAAIz2W,MAAO,6CAIlBqkY,EAAUrlY,KAAM8oK,EAEjB,CAEAlH,EAAQ5hK,KAAM,CAAE4mC,KAAMjiC,EAAQ0gY,GAAah0X,MAAOi0X,EAAUh0X,OAAQi0X,GAErE,CAIA,OAFA9tB,IAEO,CAAEpmW,MAAAA,EAAOC,OAAAA,EAAQizX,SAAAA,EAAU3iO,QAAAA,EAASH,OAAQojO,EAAcjD,cAAAA,EAAeC,SAAAA,EAEjF,CAvImFiE,CAAWliV,EAAQy5G,QAAzFhsJ,EAAKyyX,EAALzyX,MAAOC,EAAMwyX,EAANxyX,OAAQizX,EAAQT,EAARS,SAAU3iO,EAAOkiO,EAAPliO,QAASH,EAAMqiO,EAANriO,OAAQmgO,EAAakC,EAAblC,cAAeC,EAAQiC,EAARjC,SAE3DjoM,EAAU,GAENh6L,EAAI,EAAGA,EAAIgiK,EAAQ9mK,SAAW8E,EAEvCg6L,EAAQ55L,KAAM4hK,EAAShiK,GAAIgnC,KAAKy2H,QAIjChlJ,KAAK08C,YAAa,CAAEjtD,KAAM,YAAaw6B,GAAIshB,EAAQthB,GAAIjxB,MAAAA,EAAOC,OAAAA,EAAQizX,SAAAA,EAAU3iO,QAAAA,EAASH,OAAAA,EAAQmgO,cAAAA,EAAeC,SAAAA,GAAYjoM,EAE7H,CAAE,MAAQn1K,IAETxN,QAAQwN,MAAOA,IAEfpM,KAAK08C,YAAa,CAAEjtD,KAAM,QAASw6B,GAAIshB,EAAQthB,GAAI7d,MAAOA,GAAMm/B,SAEjE,CAED,IAKH,IAyHA,IAAMmiV,EAAiB,CACtB,CACCd,GAAI,gBACJhB,YAAa,CAAEzC,EAAYY,WAC3BwC,iBAAkB,CAAErD,EAAiBwB,SAAUxB,EAAiBwB,UAChE8B,aAAc,CAAEvD,EAAahxO,qBAAsBgxO,EAAahxO,sBAChE01O,cAAe35U,IACf45U,cAAe,EACfjqK,iBAAiB,GAElB,CACCipK,GAAI,gBACJhB,YAAa,CAAEzC,EAAYW,MAAOX,EAAYY,WAC9CwC,iBAAkB,CAAErD,EAAiBqB,OAAQrB,EAAiBqB,QAC9DiC,aAAc,CAAEvD,EAAalwO,iBAAkBkwO,EAAalwO,kBAC5D40O,cAAe,EACfC,cAAe,EACfjqK,iBAAiB,GAElB,CACCipK,GAAI,eACJhB,YAAa,CAAEzC,EAAYW,MAAOX,EAAYY,WAC9CwC,iBAAkB,CAAErD,EAAiBgB,IAAKhB,EAAiBiB,KAC3DqC,aAAc,CAAEvD,EAAa3xO,qBAAsB2xO,EAAaxxO,uBAChEk2O,cAAe,EACfC,cAAe,EACfjqK,iBAAiB,GAElB,CACCipK,GAAI,gBACJhB,YAAa,CAAEzC,EAAYW,MAAOX,EAAYY,WAC9CwC,iBAAkB,CAAErD,EAAiBc,KAAMd,EAAiBe,MAC5DuC,aAAc,CAAEvD,EAAalxO,gBAAiBkxO,EAAajxO,sBAC3D21O,cAAe,EACfC,cAAe,EACfjqK,iBAAiB,GAElB,CACCipK,GAAI,gBACJhB,YAAa,CAAEzC,EAAYW,MAAOX,EAAYY,WAC9CwC,iBAAkB,CAAErD,EAAiBc,MACrCwC,aAAc,CAAEvD,EAAanxO,iBAC7B61O,cAAe,EACfC,cAAe,EACfjqK,iBAAiB,GAElB,CACCipK,GAAI,iBACJhB,YAAa,CAAEzC,EAAYW,MAAOX,EAAYY,WAC9CwC,iBAAkB,CAAErD,EAAiBsB,aAActB,EAAiBuB,eACpE+B,aAAc,CAAEvD,EAAavxO,wBAAyBuxO,EAAarxO,0BACnE+1O,cAAe,EACfC,cAAe,EACfjqK,iBAAiB,IAIb8oK,EAAgBiB,EAAerpS,MAAM,SAAWx9F,EAAGuK,GAExD,OAAOvK,EAAE8mY,cAAgBv8X,EAAEu8X,aAE5B,IACMjB,EAAgBgB,EAAerpS,MAAM,SAAWx9F,EAAGuK,GAExD,OAAOvK,EAAE+mY,cAAgBx8X,EAAEw8X,aAE5B,IAkCA,SAAS1wO,EAAc5zJ,GAEtB,OAAKA,GAAS,GAEuB,KAA5BA,EAAUA,EAAQ,IAAyB,IAAVA,CAE3C,CAGA,SAASgD,EAAQk9E,GAEhB,IAE2Bla,EAFvBu+T,EAAkB,EAAEt+T,EAAAoG,EAEH6T,GAAM,IAA3B,IAAAja,EAAAjpE,MAAAgpE,EAAAC,EAAA39D,KAAAkb,MAA8B,CAE7B+gX,GAFgBv+T,EAAAhmE,MAES+yQ,UAE1B,CAAC,OAAA34P,GAAA6rD,EAAAp+D,EAAAuS,EAAA,SAAA6rD,EAAAj+D,GAAA,CAED,IAI2Bq+D,EAJrBhtE,EAAS,IAAIy9G,WAAYytR,GAE3BnwE,EAAa,EAAE9tP,EAAA+F,EAEE6T,GAAM,IAA3B,IAAA5Z,EAAAtpE,MAAAqpE,EAAAC,EAAAh+D,KAAAkb,MAA8B,KAAlBlf,EAAK+hE,EAAArmE,MAEhB3G,EAAOm3B,IAAKlsB,EAAO8vT,GAEnBA,GAAc9vT,EAAMyuQ,UAErB,CAAC,OAAA34P,GAAAksD,EAAAz+D,EAAAuS,EAAA,SAAAksD,EAAAt+D,GAAA,CAED,OAAO3O,CAER,CAED,EAKA,UAAMmrY,IAAUtnX,EAAAunX,GAAG,CAAC,EFrpBqsB,IEupBrrBn3O,IAAUpwI,EAAAunX,GFvpB0lB,GEwpBpmBn3O,IAAUpwI,EAAAunX,GFxpB4X,GEypB3Yn3O,IAAUpwI,EAAAunX,GFzpByZ,GE0pBpan3O,IAAUpwI,EAAAunX,GF1pBuoB,IE4pBjpB52O,IAAQ3wI,EAAAunX,GF5pBsiB,GE6pB9iB52O,IAAQ3wI,EAAAunX,GF7pB0S,GE8pBrT52O,IAAQ3wI,EAAAunX,GF9pBqU,GE+pB9U52O,IAAQ3wI,EAAAunX,GF/pBwnB,IEiqB/nB92O,IAASzwI,EAAAunX,GFjqB0gB,GEkqBnhB92O,IAASzwI,EAAAunX,GFlqBsS,GEmqBlT92O,IAASzwI,EAAAunX,GFnqBkR,EEoqB1R92O,IAAS82O,IAI5BC,IAAQxnX,EAAAynX,GAAG,CAAC,EFxqBusB,IE0qBrrB53O,IAAS7vI,EAAAynX,GF1qB2lB,GE2qBpmB33O,IAAa9vI,EAAAynX,GF3qByX,GE4qB3Yl4O,IAAgBvvI,EAAAynX,GF5qBmZ,GE6qBpal4O,IAAgBvvI,EAAAynX,GF7qBioB,IE+qBjpB53O,IAAS7vI,EAAAynX,GF/qBqiB,GEgrB9iB33O,IAAa9vI,EAAAynX,GFhrBqS,GEirBrTl4O,IAAgBvvI,EAAAynX,GFjrB6T,GEkrB9Ul4O,IAAgBvvI,EAAAynX,GFlrBgnB,IEorB/nB53O,IAAS7vI,EAAAynX,GFprB0gB,GEqrBnhB33O,IAAa9vI,EAAAynX,GFrrBkS,GEsrBlTl4O,IAAgBvvI,EAAAynX,GFtrB2Q,EEurB1Rl4O,IAAgBk4O,IAInCC,IAAY1nX,EAAA2nX,GAAG,CAAC,EF3rB4a,GE6rBpap0O,IAAYvzI,EAAA2nX,GF7rB8T,GE8rB9Up0O,IAAYvzI,EAAA2nX,GF9rBoS,GE+rBlTp0O,IAAYo0O,IAElC,SAEavE,GAAiBwE,GAAA,OAAAC,GAAA1jY,MAAC,KAADG,UAAA,UAAAujY,KAkF/B,OAlF+BA,GAAA3mT,GAAAC,EAAAA,MAAhC,SAAAi+L,EAAkC5+P,GAAS,IAAAq9W,EAAAE,EAAAC,EAAAC,EAAAxlX,EAAA6mX,EAAA15V,EAAA8/H,EAAA,OAAAvkF,EAAAA,MAAA,SAAAgkF,GAAA,cAAAA,EAAA79J,KAAA69J,EAAA59J,MAAA,OAEW,GAA7Cs2X,EAAkDr9W,EAAlDq9W,SAAUE,EAAwCv9W,EAAxCu9W,WAAYC,EAA4Bx9W,EAA5Bw9W,YAAaC,EAAez9W,EAAfy9W,gBAEXxvX,IAA3B64X,GAAYzJ,GAAwB,CAAA14N,EAAA59J,KAAA,cAElC,IAAIpF,MAAO,2CAA2C,OAI1B,GAA7BsW,EAAQ+H,EAAU3H,OAAQ,GAK3B2H,EAAU49W,yBAA2B0J,GAAyB,CAAA3iO,EAAA59J,KAAA,QAElE+3X,EAAY7mX,EAAM6mX,UAAUn6N,EAAA59J,KAAA,mBAEjBiZ,EAAU49W,yBAA2B2J,GAAyB,CAAA5iO,EAAA59J,KAAA,SAYxE,OAVMw5X,KAENA,GAAQ,IAAIpsV,QAAO,eAAAnrB,EAAA03D,GAAAC,EAAAA,MAAE,SAAAg9L,EAAQrpO,GAAO,IAAAkzV,EAAA,OAAA7mT,EAAAA,MAAA,SAAAw5E,GAAA,cAAAA,EAAArzJ,KAAAqzJ,EAAApzJ,MAAA,OAEL,OAAxBygY,EAAO,IAAIC,GAAattO,EAAApzJ,KAAA,EACxBygY,EAAKpvQ,OAAM,OACjB9jF,EAASkzV,GAAO,wBAAArtO,EAAA7nF,OAAA,GAAAqrM,EAAA,KAEhB,gBAAAtwC,GAAA,OAAArkN,EAAArlB,MAAA,KAAAG,UAAA,EANkB,KAQnB6gK,EAAA59J,KAAA,GAEmBw5X,GAAK,QAAzBzB,EAASn6N,EAAA7jF,KAAmBi1L,OAAQ99P,EAAM6mX,UAAW7mX,EAAM8mX,wBAAsBp6N,EAAA59J,KAAA,uBAI3E,IAAIpF,MAAO,yDAAyD,QAyC3E,OAnCCyjC,EAFI4hW,GAAU3J,KAAehuO,GAEtB,IAAIqJ,aAEVomO,EAAU9gO,OACV8gO,EAAUpoE,WACVooE,EAAUzpH,WAAa38G,aAAasiC,mBAI1BgsM,GAAU3J,KAAe/tO,GAE7B,IAAIqJ,YAEVmmO,EAAU9gO,OACV8gO,EAAUpoE,WACVooE,EAAUzpH,WAAa18G,YAAYqiC,mBAM7B8jM,GAKF55N,EAAyB,IAAfu4N,EACb,IAAI79I,GAAax6M,EAAMm4V,EAAYC,GACnC,IAAIx3N,GAAe5gI,EAAMm4V,EAAYC,EAAaC,IAE7Ch1X,KAAOu+X,GAAU3J,GACzBn4N,EAAQ9C,OAAS0kO,GAAYzJ,GAC7Bn4N,EAAQ5C,SAAW4kO,GAAc7J,IAAcvqO,GAE/CoS,EAAQ/B,aAAc,EAEtBwB,EAAA5jF,OAAA,SAEO5sC,QAAQG,QAAS4wH,IAAS,yBAAAP,EAAAryF,OAAA,GAAAssM,EAAA,KAEjCyoH,GAAA1jY,MAAA,KAAAG,UAAA,CC9vBD,UC2CI4jY,GAGAC,GAGAC,GACAx3E,GDlDEy3E,GAAiBljY,OAAO,iBACxBmjY,GAAgBnjY,OAAO,gBACvBojY,GAASpjY,OAAO,SAChBqjY,GAAqBrjY,OAAO,qBAC5BsjY,GAAStjY,OAAO,SAUTujY,GAAmB,YAM9B,WAAYj7X,GAAqD,IAA7Bk7X,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAA4B,EAAC75X,EAAAA,KAAAA,GAL1D,SAAmB,IAAI0yB,IACvB,SAA4B,GAKjCn9B,KAAKokY,IAAUh7X,EACfpJ,KAAKmkY,IAAsBG,CAC7B,CA2FC,OAzFD/6X,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,oBAAAutB,IAWA,WACE,OAAO/vB,KAAKmkY,GACd,EAEAl1W,IATA,SAAsBxwB,GACpBuB,KAAKmkY,IAAsB1lY,EAC3BuB,KAAKkkY,KACP,GAAC,CAAA1hY,IAAAA,QAAAutB,IASD,WACE,OAAO/vB,KAAKokY,GACd,GAEA,CAAA5hY,IAAAA,gBAAA/D,MAGA,SAAc+D,GACZ,OAAOxC,KAAKgkY,IAAgBj0W,IAAIvtB,IAAQ,CAC1C,GAEA,CAAAA,IAAAA,QAAA/D,MAIA,WACEuB,KAAKgkY,IAAgB7jY,QACrBH,KAAKikY,IAAiB,EACxB,GAEA,CAAAzhY,IAAAA,SAAA/D,MAIA,SAAO+D,GACAxC,KAAKgkY,IAAgB51V,IAAI5rC,IAC5BxC,KAAKgkY,IAAgB/0W,IAAIzsB,EAAK,GAEhCxC,KAAKgkY,IAAgB/0W,IAAIzsB,EAAKxC,KAAKgkY,IAAgBj0W,IAAIvtB,GAAQ,GAE/D,IAAM+hY,EAAoBvkY,KAAKikY,IAAez3X,QAAQhK,IAE3B,IAAvB+hY,GACFvkY,KAAKikY,IAAep2U,OAAO02U,EAAmB,GAGhDvkY,KAAKikY,IAAel0X,QAAQvN,GAG5BxC,KAAKkkY,KACP,GAEA,CAAA1hY,IAAAA,UAAA/D,MAKA,SAAQ+D,GACFxC,KAAKgkY,IAAgB51V,IAAI5rC,IAC3BxC,KAAKgkY,IAAgB/0W,IACjBzsB,EAAKvF,KAAKC,IAAI8C,KAAKgkY,IAAgBj0W,IAAIvtB,GAAQ,EAAG,IAGxDxC,KAAKkkY,KACP,GAAC,CAAA1hY,IAAAA,EAAA/D,MAED,WACE,KAAIuB,KAAKikY,IAAersY,OAASoI,KAAKmkY,KAItC,IAAK,IAAIznY,EAAIsD,KAAKikY,IAAersY,OAAS,EAAG8E,GAAKsD,KAAKmkY,MAChDznY,EAAG,CACR,IAAM8F,EAAMxC,KAAKikY,IAAevnY,GAGV,IAFAsD,KAAKgkY,IAAgBj0W,IAAIvtB,KAG7CxC,KAAKokY,IAAQ5mW,OAAOh7B,GACpBxC,KAAKikY,IAAep2U,OAAOnxD,EAAG,IAGpC,KAAC,EApG6B,EAqF9Bs0E,GApFQgzT,GAAc,GACdC,GAmFPC,KE/CGM,GAAuB,SAAC/xE,GAE5B,IAC2C3tP,EADrC2/T,EAAQ,IAAItnW,IAAsC,IAClCs1R,EAAaqH,UAAQ,IAA3C,IAAK,EAAL,qBAA6C,KACLrpL,EAD7B6T,EAAO,YACMA,EAAQogP,UAAQ,IAAtC,IAAK,EAAL,qBAAwC,KAA7BC,EAAO,QAChBF,EAAMx1W,IAAI01W,EAAS,CAAC9rN,SAAU,KAAM+rN,kBAAmBtgP,EAAQu0B,WAChE,UAAAnoC,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EACF,UAAA3rE,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACD,OAAO0/T,CACT,EAEqBI,GAA8B,WAKjD,WAAY/2S,GAAkBrjF,EAAAA,KAAAA,GAC5BzK,KAAK8tF,OAASA,EACd9tF,KAAK7G,KAAO,wBACd,CAsDC,OAjDDoQ,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,YAAA/D,MACA,SAAU2uT,GAAU,WACZt/N,EAAS9tF,KAAK8tF,OACd2uJ,EAAO3uJ,EAAO2uJ,KAEpB,QAAwBryO,IAApBqyO,EAAKnwJ,iBAC0BliF,IAA/BqyO,EAAKnwJ,WAAWtsF,KAAK7G,MACvB,OAAO,KAGT,IAK+Bk5I,EAHzBqyP,EAhEgB,SAACI,GACzB,IAG+BrgU,EAHzBsgU,EAAc,GACdC,EAAa,IAAIh5W,IAAc,IAElB84W,GAAY,IAA/B,IAAK,EAAL,qBAAiC,CAM/B,IAN+B,IAAtB3rY,EAAI,QACT8rY,EAAa9rY,EACb+rY,EAAS,EAINF,EAAW52V,IAAI62V,IACpBA,EAAa9rY,EAAO,OAAS+rY,EAE/BF,EAAW54W,IAAI64W,GACfF,EAAYjoY,KAAKmoY,GAClB,UAAAvgU,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAED,OAAOqgU,CACT,CA+CQI,EAHiB1oJ,EAAKnwJ,WAAWtsF,KAAK7G,MACTurY,UAAY,IAEXnoY,KAAI,SAAC4K,GAAiB,OAAKA,EAAEhO,IAAI,KAAG,IAElDi0T,EAAKgM,QAAM,IAA/B,IAAK,EAAL,qBAAiC,CAAjB,QAERjiJ,UAAS,SAAAh1K,GACb,IAAMkxL,EAAOlxL,EAEb,GAAKkxL,EAAKhb,OAAV,CAIA,IAAM+sN,EAAct3S,EAAOyqO,aAAaxoS,IAAIsjK,GAG5C,GAAmB,MAAf+xM,GAA6C,MAAtBA,EAAY3rE,QACT,MAA1B2rE,EAAY1mE,WADhB,CAKA,IAGM2mE,EAHU5oJ,EAAKg9E,OAAO2rE,EAAY3rE,QACViF,WACK0mE,EAAY1mE,YACZpyO,WAE9B+4S,GAAkBA,EAAcnpX,EAAK/iB,QAI1Ck6L,EAAKp0B,SAASqmO,iBACVd,GAAqBa,EAAcnpX,EAAK/iB,SAC9C,IACD,UAAAm5I,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAID,OAFA86K,EAAKnuJ,SAASylO,SAAWA,EAElBp0V,QAAQG,SACjB,KAAC,EA9DgD,GDjDtC80V,GACT,SAACr9V,EACA67D,GACiD,IAAjDyhS,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAqC,WAAO,EACrC/4T,EAAa,SAAClkC,GAClB,IAAM+oC,EAAW/oC,EAAM+jC,OAAS/jC,EAAMqoG,MACtC40P,EACKvoY,KAAKC,IAAI,EAAGD,KAAKiuC,IAAI,EAAGq9I,SAASj3G,GAAYA,EAAW,IAC/D,EACA,OAAO,IAAIhhC,SAAc,SAACG,EAAS8tC,GACjCwlB,EAAOn4B,KAAK1jC,EAAKuI,EAASg8B,EAAY8R,EACxC,GACF,EAcEn1E,GAAQ,IAAI+zB,IACZsoW,GAAY,IAAItoW,IAGhBkvR,GAAc,IAAI2W,GAGlB1W,GAAa,IAAI6wE,GAcVuI,GAAU5kY,OAAO,UACjB6kY,GAAkB7kY,OAAO,kBAChC8kY,GAAgB9kY,OAAO,gBAEhB+kY,GACyD,cAAA7pX,EAAAA,EAAAA,GAAA,WAkFpE,WAAY8pX,GAAe,MAIe,OAJfr7X,EAAAA,KAAAA,IACzByR,EAAAA,EAAAA,KAAAA,OAMOA,KAAwB,IAAIkwS,IAAahpP,UAC9C,SAAA0qB,GAAM,OAAI,IAAI+2S,GAA+B/2S,EAAO,IANtD5xE,EAAK0pX,IAAiBE,EACtB5pX,EAAKwpX,IAASx3B,eAAe7hD,IAC7BnwS,EAAKwpX,IAASK,cAAcz5E,IAAY,CAC1C,CAPC,OAOA/iT,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,EAAAutB,IAMD,WACE,OAAQ/vB,KAAKma,YAAyCwrX,GACxD,GAEA,CAAAnjY,IAAAA,UAAA/D,MAAAA,WAAA,mBAIA,WACIypC,EAAaxmC,GAA+B,MAAAskY,EAAAF,EAAAG,EAAAnH,EAAAA,UAAA,iEAIqB,GAHjE0G,EAAAA,EAAAA,OAAAA,QAAAA,IAAAA,EAAAA,GAAAA,EAAAA,GAAqC,WAAO,EAC9CxlY,KAAK0lY,IAASjzH,mBAAmBozH,EAAkB/1H,iBACnD9vQ,KAAKu+B,cACD,CAAC35B,KAAM,UAAWlD,QAASA,EAASyQ,IAAK+1B,IACxC9+B,GAAMglC,IAAIlG,GAAM,CAAF5Y,EAAAA,KAAAA,GAAA,SACK,MAAlBi9R,GAAsB,CAAAj9R,EAAAA,KAAAA,GAAA,MACX,OADWA,EAAAA,GACxBtvB,KAAK0lY,IAAQp2W,EAAAA,KAAAA,EAAyBi9R,GAAc,OAAAj9R,EAAAA,GAAAA,EAAAA,KAAAA,EAAAA,GAAtC42W,kBAAiB,wBAG3BF,EACFT,GAAer9V,EAAKloC,KAAK0lY,KAAU,SAAC75T,GAClC25T,EAA4B,GAAX35T,EACnB,IAEEi6T,EAAe9lY,KAAK4lY,IACpBK,EAAoBD,EACKt1V,MAAK,SAACy1V,GACL,OAAOL,EAAa50F,QAAQi1F,EAC9B,IACCz1V,MAAK,SAAC01V,GAEL,OADAZ,EAAiB,IACV,IAAIM,EAAaM,EAC1B,IACCz1V,OAAO,SAAA+3R,GAEN,OADA30T,QAAQwN,MAAMmnT,GACP,IAAIo9D,CACb,IAC9B18X,GAAM6lB,IAAIiZ,EAAK+9V,GAAmB,eAAA32W,EAAAA,KAAAA,GAG9BlmB,GAAM2mB,IAAImY,GAAI,QAEpBu9V,GAAUx2W,IAAIiZ,GAAK,GAEfs9V,GACFA,EAAiB,GAClB,iDACF,qDA3CD/mY,IA6CA,CAAA+D,IAAAA,OAAA/D,MAAAA,WAAA,mBAKA,WACIypC,EAAaxmC,GAA+B,MAAA0rT,EAAAlsT,EAAA,OAAAmlY,EAAAA,UAAA,iEACC,OAA7Cb,EAAAA,EAAAA,OAAAA,QAAAA,IAAAA,EAAAA,GAAAA,EAAAA,GAAqC,WAAO,EAAClvO,EAAAA,KAAAA,EACzCt2J,KAAKq6E,QAAQnyC,EAAKxmC,EAAS8jY,GAAiB,cAAAlvO,EAAAA,KAAAA,EAE/BltJ,GAAM2mB,IAAImY,GAAK,OAAxB,OAAJklR,EAAO,EAAH,KAAA92J,EAAAA,KAAAA,EACU82J,EAAKlsT,QAA0B,OAQjD,OARIA,EAAQ,EAAH,KAEXlB,KAAK2lY,IAAiBW,OAAOp+V,GAI7BhnC,EAAMwgK,QAAU,WACd/yF,EAAKg3T,IAAiBY,QAAQr+V,EAChC,EAAE,kBAEKhnC,GAAK,iDACb,qDAtBDzC,KAsBC,EAAA+D,IAAAA,0BAAA/D,MAhKD,SAA+BypC,GAC7B27V,GAAuB37V,EACvBmkR,GAAY4hD,eAAe/lU,EAC7B,GAAC,CAAA1lC,IAAAA,0BAAA/D,MAED,WACE,OAAOolY,EACT,GAAC,CAAArhY,IAAAA,4BAAA/D,MAED,SAAiCypC,GAC/B47V,GAAyB57V,EACzBokR,GAAWk6E,kBAAkBt+V,EAC/B,GAAC,CAAA1lC,IAAAA,4BAAA/D,MAED,WACE,OAAOqlY,EACT,GAAC,CAAAthY,IAAAA,4BAAA/D,MAED,SAAiCypC,GAC3B67V,KAA2B77V,IAC7B67V,GAAyB77V,EACzBqkR,GA9Dc,SAACp6S,GACnB,OAAO,IAAIm+B,SAAQ,SAACG,EAAS8tC,GAC3B,IAAMxsE,EAASzO,SAASC,cAAc,UACtCD,SAASktB,KAAKvd,YAAYlB,GAC1BA,EAAOE,OAASw+B,EAChB1+B,EAAOG,QAAUqsE,EACjBxsE,EAAOY,OAAQ,EACfZ,EAAOI,IAAMA,CACf,GACF,CAqDuBksE,CAAYn2C,GACPwI,MAAK,kBAAM+1V,eAAe7zE,KAAK,IAC/BliR,MAAK,kBAAM+1V,cAAc,IAEnD,GAAC,CAAAjkY,IAAAA,4BAAA/D,MAED,WACE,OAAOslY,EACT,GAAC,CAAAvhY,IAAAA,uBAAA/D,MAED,SAA4BqzL,GAC1Bw6H,GAAW+F,cAAcvgI,EAC3B,GAAC,CAAAtvL,IAAAA,QAAAutB,IAKD,WACE,OAAO3mB,EACT,GAEA,CAAA5G,IAAAA,aAAA/D,MACA,WAAiB,WACf2K,GAAM7G,SAAQ,SAACmkY,EAAQx+V,GACrBsnC,EAAKhyC,OAAO0K,EACd,IACAloC,KAAK2lY,IAAiBprU,OACxB,GAAC,CAAA/3D,IAAAA,MAAA/D,MAED,SAAWypC,GACT,OAAO9+B,GAAMglC,IAAIlG,EACnB,GAEA,CAAA1lC,IAAAA,SAAA/D,MAAAA,WAAA,mBACA,WAAoBypC,GAAW,0EACxBloC,KAAKouC,IAAIlG,GAAM,CAAF44H,EAAAA,KAAAA,EAAA,uCAMA,OAFZ6lO,EAAYv9X,GAAM2mB,IAAImY,GAC5Bu9V,GAAUjoW,OAAO0K,GACjB9+B,GAAMo0B,OAAO0K,GAAK44H,EAAAA,KAAAA,EAEC6lO,EAAS,OAAf,EAAH,KAGJjlO,UAAU,gDACjB,mDAdDjjK,IAgBA,CAAA+D,IAAAA,qBAAA/D,MAIA,SAA0BypC,GACxB,QAASu9V,GAAU11W,IAAImY,EACzB,KAAC,EAhFmE,CAClEopH,IA4FWtgF,GAtDN20T,GAAe,GAkDZD,GAIIC,KAtDRE,GAAAA,IACF,IAAIxB,GAAoBwB,IE7Hf,IAETe,GAAW,SAAAz7M,GAAAnvK,EAAA4qX,EAAAz7M,GAAA,IAAAlvK,EAAAtB,EAAAisX,GAEhB,SAAAA,IAAyD,IAAAj4T,EAA5CjtE,EAAOzB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGqD,SAASC,cAAe,OAyB1C,OAzBiDkH,EAAA,KAAAm8X,IAErDj4T,EAAA1yD,EAAApf,KAAA,OAEKgqY,eAAgB,EAErBl4T,EAAKjtE,QAAUA,EAEfitE,EAAKjtE,QAAQ2I,MAAMk1D,SAAW,WAC9BoP,EAAKjtE,QAAQ2I,MAAMivH,WAAa,OAEhC3qD,EAAKjtE,QAAQoR,aAAc,aAAa,GAExC67D,EAAK/qE,iBAAkB,WAAW,WAEjC5D,KAAKm3K,UAAU,SAAWh1K,GAEpBA,EAAOT,mBAAmBmG,SAAyC,OAA9B1F,EAAOT,QAAQu1B,YAExD90B,EAAOT,QAAQu1B,WAAW1E,YAAapwB,EAAOT,QAIhD,GAED,IAAIitE,CAEL,CAUC,OAVAplE,EAAAq9X,EAAA,EAAApkY,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAMb,OAJA9xC,GAAA5rH,EAAAsrX,EAAAhqY,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAK0B,QAAUF,EAAOE,QAAQukE,WAAW,GAElCjmE,IAER,KAAC4mY,CAAA,CAvCe,CAASpxN,IA6CpB8jH,GAAU,IAAIxyH,GACdggO,GAAc,IAAIn2N,GAClBo2N,GAAwB,IAAIp2N,GAC5B3/F,GAAK,IAAI81F,GACTtuB,GAAK,IAAIsuB,GAETkgO,GAAaz9X,GAElB,SAAAy9X,IAA+B,IAAlBxuN,EAAUv4K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAACwK,EAAA,KAAAu8X,GAE3B,IAEIz3J,EAAQC,EACRy3J,EAAYC,EAHVhrX,EAAQlc,KAKRoJ,EAAQ,CACbs7L,QAAS,IAAI3jJ,SAGRszD,OAAoCjqG,IAAvBouK,EAAW92K,QAAwB82K,EAAW92K,QAAU4B,SAASC,cAAe,OAyCnG,SAASotN,EAAcxuN,EAAQ4vL,EAAOnqB,GAErC,GAAKzlK,EAAO0kY,cAAgB,CAE3BvtG,GAAQ1iH,sBAAuBz0K,EAAO8lK,aACtCqxH,GAAQzxH,aAAck/N,IAEtB,IAAMp9T,GAA+B,IAAnBxnE,EAAOwnE,SAAwB2vN,GAAQhyR,IAAO,GAAKgyR,GAAQhyR,GAAK,IAAiD,IAAxCnF,EAAOwyK,OAAOz8K,KAAM0vK,EAAO+M,QAGtH,GAFAxyK,EAAOT,QAAQ2I,MAAM29C,SAAwB,IAAZ2hB,EAAqB,GAAK,QAE1C,IAAZA,EAAmB,CAEvBxnE,EAAO8jM,eAAgB/pL,EAAO61K,EAAOnqB,GAErC,IAAMlmK,EAAUS,EAAOT,QAEvBA,EAAQ2I,MAAMiuH,UAAY,mCAAsCghK,GAAQp9R,EAAI+qY,EAAaA,GAAe,QAAY3tG,GAAQjyR,EAAI6/X,EAAcA,GAAgB,MAEzJxlY,EAAQu1B,aAAeo9E,GAE3BA,EAAWphG,YAAavR,GAIzBS,EAAO2yO,cAAe54N,EAAO61K,EAAOnqB,EAErC,CAEA,IAAMu/N,EAAa,CAClBC,wBAAyBC,EAAsBz/N,EAAQzlK,IAGxDiH,EAAMs7L,QAAQz1K,IAAK9sB,EAAQglY,EAE5B,CAEA,IAAM,IAAIzqY,EAAI,EAAGmK,EAAI1E,EAAOyb,SAAShmB,OAAQ8E,EAAImK,EAAGnK,IAEnDi0N,EAAcxuN,EAAOyb,SAAUlhB,GAAKq1L,EAAOnqB,EAI7C,CAEA,SAASy/N,EAAsBC,EAASC,GAKvC,OAHAv2T,GAAG4lG,sBAAuB0wN,EAAQr/N,aAClCzvB,GAAGo+B,sBAAuB2wN,EAAQt/N,aAE3Bj3F,GAAG8kF,kBAAmBtd,GAE9B,CA1FAnkC,EAAWhqG,MAAM+S,SAAW,SAE5Bpd,KAAKq0G,WAAaA,EAElBr0G,KAAKqsK,QAAU,WAEd,MAAO,CACNl+J,MAAOohO,EACPnhO,OAAQohO,EAGV,EAEAxvO,KAAKwF,OAAS,SAAWusL,EAAOnqB,IAEM,IAAhCmqB,EAAM4uL,uBAAiC5uL,EAAMxa,oBAC3B,OAAlB3P,EAAO1qG,SAAoD,IAAjC0qG,EAAO+4M,uBAAiC/4M,EAAO2P,oBAE9EuvN,GAAYprO,KAAMkM,EAAOE,oBACzBi/N,GAAsBzvO,iBAAkBsQ,EAAOG,iBAAkB++N,IAEjEn2K,EAAc5+B,EAAOA,EAAOnqB,GAqF7B,SAAiBmqB,GAmBhB,IAjBA,IAAMy1M,EAhBP,SAA2Bz1M,GAE1B,IAAMj6L,EAAS,GAQf,OANAi6L,EAAM5a,UAAU,SAAWh1K,GAErBA,EAAO0kY,eAAgB/uY,EAAOgF,KAAMqF,EAE1C,IAEOrK,CAER,CAIgB2vY,CAAkB11M,GAAQv4F,MAAM,SAAWx9F,EAAGuK,GAE5D,OAAKvK,EAAEm6K,cAAgB5vK,EAAE4vK,YAEjB5vK,EAAE4vK,YAAcn6K,EAAEm6K,YAIR/sK,EAAMs7L,QAAQ30K,IAAK/zB,GAAIorY,wBACvBh+X,EAAMs7L,QAAQ30K,IAAKxpB,GAAI6gY,uBAI1C,IAEMM,EAAOF,EAAO5vY,OAEV8E,EAAI,EAAGmK,EAAI2gY,EAAO5vY,OAAQ8E,EAAImK,EAAGnK,IAE1C8qY,EAAQ9qY,GAAIgF,QAAQ2I,MAAMuqB,OAAS8yW,EAAOhrY,CAI5C,CA7GCs2P,CAAQjhE,EAET,EAEA/xL,KAAK8xO,QAAU,SAAW3jO,EAAOC,GAKhC64X,GAHA13J,EAASphO,GAGa,EACtB+4X,GAHA13J,EAAUphO,GAGc,EAExBimG,EAAWhqG,MAAM8D,MAAQA,EAAQ,KACjCkmG,EAAWhqG,MAAM+D,OAASA,EAAS,IAEpC,CAgGD,ICpLKu5X,GAAY,WAEjB,SAAAA,IAAcl9X,EAAA,KAAAk9X,GAEb3nY,KAAKwsT,gBAAkB,GAEvBxsT,KAAKojE,UAAU,SAAWwkU,GAEzB,OAAO,IAAIC,GAAoBD,EAEhC,IAEA5nY,KAAKojE,UAAU,SAAWwkU,GAEzB,OAAO,IAAI35E,GAA6B25E,EAEzC,IAEA5nY,KAAKojE,UAAU,SAAWwkU,GAEzB,OAAO,IAAIE,GAAoCF,EAEhD,IAEA5nY,KAAKojE,UAAU,SAAWwkU,GAEzB,OAAO,IAAI/6E,GAAoC+6E,EAEhD,IAEA5nY,KAAKojE,UAAU,SAAWwkU,GAEzB,OAAO,IAAI96E,GAA8B86E,EAE1C,IAEA5nY,KAAKojE,UAAU,SAAWwkU,GAEzB,OAAO,IAAIn7E,GAAiCm7E,EAE7C,IAEA5nY,KAAKojE,UAAU,SAAWwkU,GAEzB,OAAO,IAAIjR,GAAmCiR,EAE/C,GAED,CA2DC,OA3DAr+X,EAAAo+X,EAAA,EAAAnlY,IAAA,WAAA/D,MAED,SAAU05C,GAQT,OANoD,IAA/Cn4C,KAAKwsT,gBAAgBhgT,QAAS2rC,IAElCn4C,KAAKwsT,gBAAgB1vT,KAAMq7C,GAIrBn4C,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAY05C,GAQX,OANoD,IAA/Cn4C,KAAKwsT,gBAAgBhgT,QAAS2rC,IAElCn4C,KAAKwsT,gBAAgB3+P,OAAQ7tD,KAAKwsT,gBAAgBhgT,QAAS2rC,GAAY,GAIjEn4C,IAER,GAEA,CAAAwC,IAAA,QAAA/D,MAOA,SAAO2X,EAAO2xX,EAAQ3vW,EAASn3B,GAK9B,IAHA,IAAM2mY,EAAS,IAAII,GACb99X,EAAU,GAENxN,EAAI,EAAGowD,EAAK9sD,KAAKwsT,gBAAgB50T,OAAQ8E,EAAIowD,EAAIpwD,IAE1DwN,EAAQpN,KAAMkD,KAAKwsT,gBAAiB9vT,GAAKkrY,IAI1CA,EAAOp4R,WAAYtlG,GACnB09X,EAAOvkR,MAAOjtG,EAAO2xX,EAAQ9mY,GAAU0vC,MAAOvY,EAE/C,GAAC,CAAA51B,IAAA,aAAA/D,MAED,SAAY2X,EAAOnV,GAElB,IAAM+rL,EAAQhtL,KAEd,OAAO,IAAIswC,SAAS,SAAWG,EAAS8tC,GAEvCyuG,EAAMrsF,MAAOvqF,EAAOq6B,EAAS8tC,EAAQt9E,EAEtC,GAED,KAAC0mY,CAAA,CA3GgB,GAmHZvxE,GACG,EADHA,GAEE,EAFFA,GAGM,EAHNA,GAIO,EAJPA,GAKM,EALNA,GASU,KATVA,GAUW,KAVXA,GAWE,KAXFA,GAYS,KAZTA,GAaS,MAbTA,GAciB,MAdjBA,GAgBI,KAhBJA,GAiBG,KAjBHA,GAkBmB,KAlBnBA,GAmBkB,KAnBlBA,GAoBkB,KApBlBA,GAqBiB,KArBjBA,GAuBU,MAvBVA,GAwBY,MAxBZA,GAyBG,MAGH6xE,GAAiB,CAAC,EAExBA,GAAgBz9O,IAAkB4rK,GAClC6xE,GAAgBx9O,IAA+B2rK,GAC/C6xE,GAAgBt9O,IAA8ByrK,GAC9C6xE,GAAgBp9O,IAAiBurK,GACjC6xE,GAAgBn9O,IAA8BsrK,GAC9C6xE,GAAgBj9O,IAA6BorK,GAE7C6xE,GAAgB39O,IAAwB8rK,GACxC6xE,GAAgB59O,IAAmB+rK,GACnC6xE,GAAgB19O,IAA2B6rK,GAE3C,IAAMY,GAAkB,CACvB3/K,MAAO,QACP93E,SAAU,cACV6jG,WAAY,WACZmoB,sBAAuB,WAwBxB,SAAS28M,GAAYC,EAAQ5+M,GAE5B,OAAS4+M,EAAOvwY,SAAW2xL,EAAO3xL,QAAYuwY,EAAOp0T,OAAO,SAAWryE,EAASkN,GAE/E,OAAOlN,IAAY6nL,EAAQ36K,EAE5B,GAED,CAiFA,SAASw5X,GAAqBC,GAE7B,OAAqC,EAA9BprY,KAAKurD,KAAM6/U,EAAa,EAEhC,CASA,SAASC,GAAsB12H,GAA+B,IAAlB22H,EAAWtoY,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEnDuoY,EAAeJ,GAAqBx2H,EAAYJ,YAEtD,GAAKg3H,IAAiB52H,EAAYJ,WAAa,CAE9C,IAAMzuQ,EAAQ,IAAIwyG,WAAYizR,GAG9B,GAFAzlY,EAAMksB,IAAK,IAAIsmF,WAAYq8J,IAEN,IAAhB22H,EAEJ,IAAM,IAAI7rY,EAAIk1Q,EAAYJ,WAAY90Q,EAAI8rY,EAAc9rY,IAEvDqG,EAAOrG,GAAM6rY,EAMf,OAAOxlY,EAAMo3J,MAEd,CAEA,OAAOy3G,CAER,CAEA,SAAS62H,KAER,MAAyB,qBAAbnlY,UAAuD,qBAApBq1N,gBAEvC,IAAIA,gBAAiB,EAAG,GAIzBr1N,SAASC,cAAe,SAEhC,CAEA,SAASmlY,GAAkB1vP,EAAQ23H,GAElC,YAAuBvmQ,IAAlB4uI,EAAO2vP,OAEJ,IAAIr4V,SAAS,SAAEG,GAAO,OAAMuoG,EAAO2vP,OAAQl4V,EAASkgO,EAAU,KAQpD,eAAbA,EAEJi4H,EAAU,IAEc,eAAbj4H,IAEXi4H,EAAU,IAIJ5vP,EAAO6vP,cAAe,CAE5BjkY,KAAM+rQ,EACNi4H,QAASA,KAjBV,IAAIA,CAqBL,CAEA,IAGMZ,GAAU,WAEf,SAAAA,IAAcv9X,EAAA,KAAAu9X,GAEbhoY,KAAKkK,QAAU,GAEflK,KAAKiB,QAAU,CAAC,EAChBjB,KAAK43C,QAAU,GACf53C,KAAK02L,QAAU,GAEf12L,KAAK6yT,WAAa,EAClB7yT,KAAK02L,QAAU,GACf12L,KAAK8oY,QAAU,IAAI3rW,IACnBn9B,KAAKu5T,MAAQ,GACbv5T,KAAK6tT,eAAiB,CAAC,EAEvB7tT,KAAK+oY,KAAO,IAAI5rW,IAChBn9B,KAAKm+G,IAAM,EAEXn+G,KAAKy8O,KAAO,CACXixE,MAAO,CACNr0T,QAAS,MACTu2F,UAAW,uBAIb5vF,KAAKoJ,MAAQ,CACZqwT,OAAQ,IAAIt8R,IACZ+0C,WAAY,IAAI/0C,IAChB6rW,qBAAsB,IAAI7rW,IAC1Bw6I,UAAW,IAAIx6I,IACfoiI,SAAU,IAAIpiI,IACdsgI,OAAQ,IAAItgI,IAGd,CAosDC,OApsDA5zB,EAAAy+X,EAAA,EAAAxlY,IAAA,aAAA/D,MAED,SAAYyL,GAEXlK,KAAKkK,QAAUA,CAEhB,GAEA,CAAA1H,IAAA,QAAA/D,MAAA,eAAAwqY,EAAApsT,GAAAC,EAAAA,MAMA,SAAAE,EAAa5mE,EAAO2xX,EAAQ9mY,GAAO,IAAA2mY,EAAAlxM,EAAA+lD,EAAAoxE,EAAAh8C,EAAAq3H,EAAAh4H,EAAAi4H,EAAA,OAAArsT,EAAAA,MAAA,SAAAxtD,GAAA,cAAAA,EAAArsB,KAAAqsB,EAAApsB,MAAA,OAmBP,OAjB3BlD,KAAKiB,QAAU1C,OAAOmgB,OAAQ,CAAC,EAAG,CAEjC0qX,QAAQ,EACRC,KAAK,EACLC,aAAa,EACbx+L,eAAgB3hJ,IAChBitH,WAAY,GACZmzN,yBAAyB,GACvBtoY,GAEEjB,KAAKiB,QAAQm1K,WAAWx+K,OAAS,IAGrCoI,KAAKiB,QAAQooY,KAAM,GAIpBrpY,KAAKwpY,aAAcpzX,GAAQkZ,EAAApsB,KAAA,EAErBotC,QAAQxtC,IAAK9C,KAAK43C,SAAS,OAG3B8+I,GADAkxM,EAAS5nY,MACQ02L,QACjB+lD,EAAOmrJ,EAAOnrJ,KACpBx7O,EAAU2mY,EAAO3mY,QACX4sT,EAAiB+5E,EAAO/5E,eAGxBh8C,EAAO,IAAI6qD,KAAMhmI,EAAS,CAAE9xL,KAAM,8BAGlCskY,EAAqB3qY,OAAOqD,KAAMisT,IAEhBj2T,OAAS,IAAI6kP,EAAKoxE,eAAiBq7E,GAGtDzsJ,EAAK/lD,SAAW+lD,EAAK/lD,QAAQ9+L,OAAS,IAAI6kP,EAAK/lD,QAAS,GAAI86E,WAAaK,EAAKtsN,OAE3D,IAAnBtkD,EAAQmoY,SAINl4H,EAAS,IAAIu4H,YACZC,kBAAmB73H,GAC1BX,EAAOy4H,UAAY,WAGlB,IAAMC,EAActB,GAAsBp3H,EAAOp5Q,QAC3C+xY,EAAoB,IAAIjmI,SAAU,IAAIjxM,YAhSjB,IAiS3Bk3U,EAAkB/zC,UAAW,EAAG8zC,EAAYp4H,YAAY,GACxDq4H,EAAkB/zC,UAAW,EAhSN,SAgS6B,GAGpD,IAxQ0B9iV,EAwQpB82X,EAAYxB,IAxQQt1X,EAwQmC+6C,KAAKC,UAAWyuL,IAtQzE,IAAIstJ,aAAcC,OAAQh3X,GAAOmnJ,QAsQkD,IACjF8vO,EAAkB,IAAIrmI,SAAU,IAAIjxM,YAtSf,IAuS3Bs3U,EAAgBn0C,UAAW,EAAGg0C,EAAUt4H,YAAY,GACpDy4H,EAAgBn0C,UAAW,EAvSH,YAuS2B,GAGnD,IAAM5iC,EAAS,IAAIvgQ,YA/SE,IAgTfsgQ,EAAa,IAAIrvD,SAAUsvD,GACjCD,EAAW6iC,UAAW,EAhTD,YAgTsB,GAC3C7iC,EAAW6iC,UAAW,EAhTN,GAgTsB,GACtC,IAAMktC,EAnTe,GAoTlBiH,EAAgBz4H,WAAas4H,EAAUt4H,WACvCq4H,EAAkBr4H,WAAao4H,EAAYp4H,WAC9CyhD,EAAW6iC,UAAW,EAAGktC,GAAiB,GAE1C,IAAMkH,EAAU,IAAIxtE,KAAM,CACzBxJ,EACA+2E,EACAH,EACAD,EACAD,GACE,CAAEhlY,KAAM,6BAELulY,EAAY,IAAIV,WACtBU,EAAUT,kBAAmBQ,GAC7BC,EAAUR,UAAY,WAErB5B,EAAQoC,EAAUryY,OAEnB,CAED,GAIK2kP,EAAK/lD,SAAW+lD,EAAK/lD,QAAQ9+L,OAAS,IAEpCs5Q,EAAS,IAAIu4H,YACZW,cAAev4H,GACtBX,EAAOy4H,UAAY,WAElB,IAAMU,EAAan5H,EAAOp5Q,OAC1B2kP,EAAK/lD,QAAS,GAAI07H,IAAMi4E,EACxBtC,EAAQtrJ,EAET,GAIAsrJ,EAAQtrJ,GAIT,yBAAAntN,EAAAm/C,OAAA,GAAAuO,EAAA,UAGD,gBAAA5oB,EAAAmvU,EAAA/5J,GAAA,OAAAy/J,EAAAnpY,MAAA,KAAAG,UAAA,EArHD,IAuHA,CAAAuC,IAAA,oBAAA/D,MAMA,SAAmB0D,EAAQu1T,GAE1B,GAA+C,IAA1Cn5T,OAAOqD,KAAMO,EAAO88J,UAAWrnK,OAApC,CAEA,IAAMqJ,EAAUjB,KAAKiB,QACf4sT,EAAiB7tT,KAAK6tT,eAE5B,IAEC,IAAMpxE,EAAO1uL,KAAK4yC,MAAO5yC,KAAKC,UAAW7rD,EAAO88J,WAEhD,GAAKh+J,EAAQsoY,yBAA2B9sJ,EAAKk7E,eAAiB,CAI7D,IAAM,IAAM7J,UAFkB1jT,IAAzBstT,EAAUprO,aAA2BorO,EAAUprO,WAAa,CAAC,GAErCmwJ,EAAKk7E,eAEjCD,EAAUprO,WAAYwhO,GAAkBrxE,EAAKk7E,eAAgB7J,GAC7DD,EAAgBC,IAAkB,SAI5BrxE,EAAKk7E,cAEb,CAEKp5T,OAAOqD,KAAM66O,GAAO7kP,OAAS,IAAI8/T,EAAUI,OAASr7E,EAE1D,CAAE,MAAQl7N,IAETxN,QAAQk/C,KAAM,oCAAuC9wD,EAAOhJ,KAA9C,2DAC+CooB,GAAMm/B,QAEpE,CA/ByD,CAiC1D,GAEA,CAAAl+C,IAAA,SAAA/D,MAKA,SAAQy3J,GAAoC,IAAzBo0O,EAAcrqY,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAEhC,IAAoC,IAA/BD,KAAK+oY,KAAK36V,IAAK8nH,GAAwB,CAE3C,IAAM6yO,EAAO,IAAI5rW,IAEjB4rW,EAAK95W,KAAK,EAAMjvB,KAAKm+G,OACrB4qR,EAAK95W,KAAK,EAAOjvB,KAAKm+G,OAEtBn+G,KAAK+oY,KAAK95W,IAAKinI,EAAW6yO,EAE3B,CAIA,OAFa/oY,KAAK+oY,KAAKh5W,IAAKmmI,GAEhBnmI,IAAKu6W,EAElB,GAEA,CAAA9nY,IAAA,8BAAA/D,MAMA,SAA6BsqK,GAI5B,GAFc/oK,KAAKoJ,MAER4/X,qBAAqB56V,IAAK26H,GAAW,OAAO,EAIvD,IAFA,IAAM5hK,EAAI,IAAI2/J,GAEJpqK,EAAI,EAAGowD,EAAKi8G,EAAOprF,MAAOjhF,EAAIowD,EAAIpwD,IAG3C,GAAKO,KAAK4f,IAAK1V,EAAE4jK,oBAAqBhC,EAAQrsK,GAAI9E,SAAW,GAAQ,KAAS,OAAO,EAItF,OAAO,CAER,GAEA,CAAA4K,IAAA,kCAAA/D,MAOA,SAAiCsqK,GAEhC,IAAM3/J,EAAQpJ,KAAKoJ,MAEnB,GAAKA,EAAM4/X,qBAAqB56V,IAAK26H,GAAW,OAAO3/J,EAAM4/X,qBAAqBj5W,IAAKg5I,GAKvF,IAHA,IAAM7S,EAAY6S,EAAO7nK,QACnBiG,EAAI,IAAI2/J,GAEJpqK,EAAI,EAAGowD,EAAKopG,EAAUv4E,MAAOjhF,EAAIowD,EAAIpwD,IAE9CyK,EAAE4jK,oBAAqB7U,EAAWx5J,GAErB,IAARyK,EAAEjL,GAAmB,IAARiL,EAAEE,GAAmB,IAARF,EAAEG,EAGhCH,EAAE20T,KAAM,GAIR30T,EAAE05G,YAIHq1C,EAAU8sB,OAAQtmL,EAAGyK,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,GAMlC,OAFA8B,EAAM4/X,qBAAqB/5W,IAAK85I,EAAQ7S,GAEjCA,CAER,GAEA,CAAA1zJ,IAAA,wBAAA/D,MAOA,SAAuBo+T,EAAQx7J,GAE9B,IAAIkpO,GAAe,EACbC,EAAe,CAAC,EAEI,IAArBnpO,EAAQt3H,OAAO7tC,GAAgC,IAArBmlK,EAAQt3H,OAAO1iC,IAE7CmjY,EAAazgW,OAASs3H,EAAQt3H,OAAOw9C,UACrCgjT,GAAe,GAIU,IAArBlpO,EAAQ/H,WAEZkxO,EAAalxO,SAAW+H,EAAQ/H,SAChCixO,GAAe,GAIU,IAArBlpO,EAAQn8H,OAAOhpC,GAAgC,IAArBmlK,EAAQn8H,OAAO79B,IAE7CmjY,EAAanzP,MAAQgqB,EAAQn8H,OAAOqiD,UACpCgjT,GAAe,GAIXA,IAEJ1tE,EAAOvwO,WAAauwO,EAAOvwO,YAAc,CAAC,EAC1CuwO,EAAOvwO,WAAmC,sBAAKk+S,EAC/CxqY,KAAK6tT,eAAuC,uBAAK,EAInD,GAAC,CAAArrT,IAAA,yBAAA/D,MAED,SAAwByhL,EAAcD,GAErC,GAAKC,IAAiBD,EAAe,OAAOC,EAE5C,SAASuqN,EAAuBluY,GAE/B,OAAKA,EAAIkiK,WAAavP,GAEd,SAAuBjzJ,GAE7B,OAASA,EAAI,OAAgB,YAAJA,EAAmBgB,KAAKs1J,IAAS,YAAJt2J,EAAmB,YAAc,IAExF,EAIM,SAAyBA,GAE/B,OAAOA,CAER,CAED,CAEA8X,QAAQk/C,KAAM,sEAEd,IAAMkrH,EAAwB,OAAZ+B,QAAY,IAAZA,OAAY,EAAZA,EAAc/mC,MAC1B+kC,EAAwB,OAAZ+B,QAAY,IAAZA,OAAY,EAAZA,EAAc9mC,MAE1BhrI,EAAQlR,KAAKC,KAAc,OAATihL,QAAS,IAATA,OAAS,EAATA,EAAWhwK,QAAS,GAAY,OAAT+vK,QAAS,IAATA,OAAS,EAATA,EAAW/vK,QAAS,GAC7DC,EAASnR,KAAKC,KAAc,OAATihL,QAAS,IAATA,OAAS,EAATA,EAAW/vK,SAAU,GAAY,OAAT8vK,QAAS,IAATA,OAAS,EAATA,EAAW9vK,SAAU,GAEhE4qI,EAASyvP,KACfzvP,EAAO7qI,MAAQA,EACf6qI,EAAO5qI,OAASA,EAEhB,IAAM7O,EAAUy5I,EAAOC,WAAY,MACnC15I,EAAQk6I,UAAY,UACpBl6I,EAAQm6I,SAAU,EAAG,EAAGvrI,EAAOC,GAE/B,IAAMs8X,EAAYnrY,EAAQ+9J,aAAc,EAAG,EAAGnvJ,EAAOC,GAErD,GAAK+vK,EAAY,CAEhB5+K,EAAQu6I,UAAWqkC,EAAW,EAAG,EAAGhwK,EAAOC,GAK3C,IAHA,IAAMwsJ,EAAU6vO,EAAuBvqN,GACjCx8I,EAAOnkC,EAAQ+9J,aAAc,EAAG,EAAGnvJ,EAAOC,GAASs1B,KAE/ChnC,EAAI,EAAGA,EAAIgnC,EAAK9rC,OAAQ8E,GAAK,EAEtCguY,EAAUhnW,KAAMhnC,GAAmC,IAA7Bk+J,EAASl3H,EAAMhnC,GAAM,IAI7C,CAEA,GAAKwhL,EAAY,CAEhB3+K,EAAQu6I,UAAWokC,EAAW,EAAG,EAAG/vK,EAAOC,GAK3C,IAHA,IAAMwsJ,EAAU6vO,EAAuBxqN,GACjCv8I,EAAOnkC,EAAQ+9J,aAAc,EAAG,EAAGnvJ,EAAOC,GAASs1B,KAE/ChnC,EAAI,EAAGA,EAAIgnC,EAAK9rC,OAAQ8E,GAAK,EAEtCguY,EAAUhnW,KAAMhnC,GAAmC,IAA7Bk+J,EAASl3H,EAAMhnC,GAAM,IAI7C,CAEA6C,EAAQ09J,aAAcytO,EAAW,EAAG,GAIpC,IAEMrpO,GAFY6e,GAAgBD,GAER/+K,QAK1B,OAHAmgK,EAAQ7/J,OAAS,IAAI+7J,GAAQvkB,GAC7BqoB,EAAQ5C,SAAWxP,GAEZoS,CAER,GAEA,CAAA7+J,IAAA,gBAAA/D,MAKA,SAAe07J,GAEd,IAAMsiF,EAAOz8O,KAAKy8O,KACZ/lD,EAAU12L,KAAK02L,QAOrB,OALO+lD,EAAK/lD,UAAU+lD,EAAK/lD,QAAU,CAAE,CAAE86E,WAAY,KAGrD96E,EAAQ55L,KAAMq9J,GAEP,CAER,GAEA,CAAA33J,IAAA,oBAAA/D,MASA,SAAmBy3J,EAAWk+J,EAAetpR,EAAO6yC,EAAOp8E,GAE1D,IAMIopY,EANEluJ,EAAOz8O,KAAKy8O,KAEXA,EAAK+1E,cAAc/1E,EAAK+1E,YAAc,IAQ5Cm4E,EAFIv2E,IAAkBgC,GAEN,EAELhC,IAAkBgC,GAEb,EAIA,EAQjB,IAJA,IAAM5kD,EAAa42H,GAAqBzqT,EAAQu4E,EAAUusB,SAAWkoN,GAC/DC,EAAW,IAAIhnI,SAAU,IAAIjxM,YAAa6+M,IAC5CznO,EAAS,EAEHrtC,EAAIouC,EAAOpuC,EAAIouC,EAAQ6yC,EAAOjhF,IAEvC,IAAM,IAAIV,EAAI,EAAGA,EAAIk6J,EAAUusB,SAAUzmL,IAAO,CAE/C,IAAIyC,OAAK,EAEJy3J,EAAUusB,SAAW,EAIzBhkL,EAAQy3J,EAAUnzJ,MAAOrG,EAAIw5J,EAAUusB,SAAWzmL,GAIvC,IAANA,EAAUyC,EAAQy3J,EAAUC,KAAMz5J,GACvB,IAANV,EAAUyC,EAAQy3J,EAAUE,KAAM15J,GAC5B,IAANV,EAAUyC,EAAQy3J,EAAUyG,KAAMjgK,GAC5B,IAANV,IAAUyC,EAAQy3J,EAAU2K,KAAMnkK,IAIxC03T,IAAkBgC,GAEtBw0E,EAASC,WAAY9gW,EAAQtrC,GAAO,GAEzB21T,IAAkBgC,GAE7Bw0E,EAAS90C,UAAW/rT,EAAQtrC,GAAO,GAExB21T,IAAkBgC,GAE7Bw0E,EAAS/0C,UAAW9rT,EAAQtrC,GAAO,GAExB21T,IAAkBgC,IAE7Bw0E,EAASE,SAAU/gW,EAAQtrC,GAI5BsrC,GAAU4gW,CAEX,CAID,IAAM7vE,EAAgB,CAErB3gK,OAAQn6J,KAAK+qY,cAAeH,EAASzwO,QACrC04J,WAAY7yT,KAAK6yT,WACjBrhD,WAAYA,GAyBb,YArBgBpnQ,IAAX7I,IAAuBu5T,EAAcv5T,OAASA,GAE9CA,IAAW60T,KAGf0E,EAAchI,WAAa58J,EAAUusB,SAAWkoN,GAIjD3qY,KAAK6yT,YAAcrhD,EAEnB/0B,EAAK+1E,YAAY11T,KAAMg+T,GAGR,CAEd17R,GAAIq9M,EAAK+1E,YAAY56T,OAAS,EAC9B45Q,WAAY,EAMd,GAEA,CAAAhvQ,IAAA,yBAAA/D,MAKA,SAAwBozQ,GAEvB,IAAM+1H,EAAS5nY,KACTy8O,EAAOmrJ,EAAOnrJ,KAIpB,OAFOA,EAAK+1E,cAAc/1E,EAAK+1E,YAAc,IAEtC,IAAIliR,SAAS,SAAWG,GAE9B,IAAMygO,EAAS,IAAIu4H,WACnBv4H,EAAOw4H,kBAAmB73H,GAC1BX,EAAOy4H,UAAY,WAElB,IAAMxvO,EAASmuO,GAAsBp3H,EAAOp5Q,QAEtCgjU,EAAgB,CACrB3gK,OAAQytO,EAAOmD,cAAe5wO,GAC9B04J,WAAY+0E,EAAO/0E,WACnBrhD,WAAYr3G,EAAOq3G,YAGpBo2H,EAAO/0E,YAAc14J,EAAOq3G,WAC5B/gO,EAASgsM,EAAK+1E,YAAY11T,KAAMg+T,GAAkB,EAEnD,CAED,GAED,GAEA,CAAAt4T,IAAA,kBAAA/D,MAQA,SAAiBy3J,EAAW4U,EAAUhgI,EAAO6yC,GAE5C,IAYIy2O,EAZE33E,EAAOz8O,KAAKy8O,KAelB,GAAKvmF,EAAUnzJ,MAAMoX,cAAgB06I,aAEpCu/J,EAAgBgC,QAEV,GAAKlgK,EAAUnzJ,MAAMoX,cAAgBotF,YAE3C6sN,EAAgBgC,QAEV,GAAKlgK,EAAUnzJ,MAAMoX,cAAgB26I,YAE3Cs/J,EAAgBgC,OAEV,IAAKlgK,EAAUnzJ,MAAMoX,cAAgBo7F,WAM3C,MAAM,IAAIz3G,MAAO,mEAJjBs2T,EAAgBgC,EAMjB,CAMA,QAJehsT,IAAV0gC,IAAsBA,EAAQ,QACpB1gC,IAAVuzE,IAAsBA,EAAQu4E,EAAUv4E,OAG9B,IAAVA,EAAc,OAAO,KAE1B,IACIqtT,EADEC,EA9wBR,SAAoB/0O,EAAWprH,EAAO6yC,GASrC,IAPA,IAAMkB,EAAS,CAEd3zC,IAAK,IAAIvuC,MAAOu5J,EAAUusB,UAAWlnE,KAAMlkG,OAAO6zX,mBAClDhuY,IAAK,IAAIP,MAAOu5J,EAAUusB,UAAWlnE,KAAMlkG,OAAO8zX,oBAIzCzuY,EAAIouC,EAAOpuC,EAAIouC,EAAQ6yC,EAAOjhF,IAEvC,IAAM,IAAIV,EAAI,EAAGA,EAAIk6J,EAAUusB,SAAUzmL,IAAO,CAE/C,IAAIyC,OAAK,EAEJy3J,EAAUusB,SAAW,EAIzBhkL,EAAQy3J,EAAUnzJ,MAAOrG,EAAIw5J,EAAUusB,SAAWzmL,GAIvC,IAANA,EAAUyC,EAAQy3J,EAAUC,KAAMz5J,GACvB,IAANV,EAAUyC,EAAQy3J,EAAUE,KAAM15J,GAC5B,IAANV,EAAUyC,EAAQy3J,EAAUyG,KAAMjgK,GAC5B,IAANV,IAAUyC,EAAQy3J,EAAU2K,KAAMnkK,IAI7CmiF,EAAO3zC,IAAKlvC,GAAMiB,KAAKiuC,IAAK2zC,EAAO3zC,IAAKlvC,GAAKyC,GAC7CogF,EAAO3hF,IAAKlB,GAAMiB,KAAKC,IAAK2hF,EAAO3hF,IAAKlB,GAAKyC,EAE9C,CAID,OAAOogF,CAER,CAuuBiBusT,CAAWl1O,EAAWprH,EAAO6yC,QAK1BvzE,IAAb0gK,IAEJkgO,EAAmB90O,IAAc4U,EAASl8J,MAAQwnT,GAAuCA,IAI1F,IAAM7D,EAAavyT,KAAKqrY,kBAAmBn1O,EAAWk+J,EAAetpR,EAAO6yC,EAAOqtT,GAE7E92E,EAAc,CAEnB3B,WAAYA,EAAWnzR,GACvByzR,WAAYN,EAAWM,WACvBuB,cAAeA,EACfz2O,MAAOA,EACPzgF,IAAK+tY,EAAO/tY,IACZguC,IAAK+/V,EAAO//V,IACZtmC,KA9Da,CAEb,EAAG,SACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,GAAI,QAwDSsxJ,EAAUusB,WAOxB,OAH8B,IAAzBvsB,EAAU0G,aAAsBs3J,EAAYt3J,YAAa,GACvD6/E,EAAK03E,YAAY13E,EAAK03E,UAAY,IAElC13E,EAAK03E,UAAUr3T,KAAMo3T,GAAgB,CAE7C,GAEA,CAAA1xT,IAAA,eAAA/D,MAQA,SAAc06I,EAAOolB,EAAQQ,GAAgC,IAAzB4xG,EAAQ1wQ,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,YAExC2nY,EAAS5nY,KACToJ,EAAQw+X,EAAOx+X,MACfqzO,EAAOmrJ,EAAOnrJ,KACdx7O,EAAU2mY,EAAO3mY,QACjB22C,EAAUgwV,EAAOhwV,QAEhBxuC,EAAMq0J,OAAOrvH,IAAK+qG,IAAU/vI,EAAMq0J,OAAOxuI,IAAKkqH,EAAO,CAAC,GAE7D,IAAMmyP,EAAeliY,EAAMq0J,OAAO1tI,IAAKopH,GAEjC32I,EAAMmuQ,EAAW,UAAY5xG,EAAMt+J,WAEzC,QAA6B2J,IAAxBkhY,EAAc9oY,GAAsB,OAAO8oY,EAAc9oY,GAEvDi6O,EAAKh/E,SAASg/E,EAAKh/E,OAAS,IAEnC,IAAM8tO,EAAW,CAAE56H,SAAUA,GAEvB33H,EAASyvP,KAEfzvP,EAAO7qI,MAAQlR,KAAKiuC,IAAKiuG,EAAMhrI,MAAOlN,EAAQ6pM,gBAC9C9xD,EAAO5qI,OAASnR,KAAKiuC,IAAKiuG,EAAM/qI,OAAQnN,EAAQ6pM,gBAEhD,IAAMzmG,EAAM20C,EAAOC,WAAY,MAS/B,IAPe,IAAV8lB,IAEJ16D,EAAIwiF,UAAW,EAAG7tC,EAAO5qI,QACzBi2F,EAAIgzC,MAAO,GAAK,SAIGjtI,IAAf+uI,EAAMz1G,KAAqB,CAE1B66H,IAAWxS,IAEfh4I,QAAQwN,MAAO,gDAIX43H,EAAMhrI,MAAQlN,EAAQ6pM,gBAAkB3xD,EAAM/qI,OAASnN,EAAQ6pM,iBAEnE/2L,QAAQk/C,KAAM,yDAA0DkmF,GAMzE,IAFA,IAAMz1G,EAAO,IAAIq2H,kBAAmB5gB,EAAM/qI,OAAS+qI,EAAMhrI,MAAQ,GAEvDzR,EAAI,EAAGA,EAAIgnC,EAAK9rC,OAAQ8E,GAAK,EAEtCgnC,EAAMhnC,EAAI,GAAMy8I,EAAMz1G,KAAMhnC,EAAI,GAChCgnC,EAAMhnC,EAAI,GAAMy8I,EAAMz1G,KAAMhnC,EAAI,GAChCgnC,EAAMhnC,EAAI,GAAMy8I,EAAMz1G,KAAMhnC,EAAI,GAChCgnC,EAAMhnC,EAAI,GAAMy8I,EAAMz1G,KAAMhnC,EAAI,GAIjC2nG,EAAI44D,aAAc,IAAID,UAAWt5H,EAAMy1G,EAAMhrI,MAAOgrI,EAAM/qI,QAAU,EAAG,EAExE,MAECi2F,EAAIy1C,UAAWX,EAAO,EAAG,EAAGH,EAAO7qI,MAAO6qI,EAAO5qI,SAI1B,IAAnBnN,EAAQmoY,OAEZxxV,EAAQ96C,KAEP4rY,GAAkB1vP,EAAQ23H,GACxBjgO,MAAM,SAAAmhO,GAAI,OAAI+1H,EAAO4D,uBAAwB35H,EAAM,IACnDnhO,MAAM,SAAAijR,GAEN43E,EAASh5E,WAAaoB,CAEvB,UAMwBvpT,IAArB4uI,EAAOkkB,UAEXquO,EAASn5E,IAAMp5K,EAAOkkB,UAAWyzG,GAIjC/4N,EAAQ96C,KAEP4rY,GAAkB1vP,EAAQ23H,GACxBjgO,MAAM,SAAAmhO,GAAI,OAAI,IAAI43H,YAAaW,cAAev4H,EAAM,IACpDnhO,MAAM,SAAA+6V,GAENF,EAASn5E,IAAMq5E,CAEhB,KAQJ,IAAM78X,EAAQ6tO,EAAKh/E,OAAO3gK,KAAMyuY,GAAa,EAE7C,OADAD,EAAc9oY,GAAQoM,EACfA,CAER,GAEA,CAAApM,IAAA,iBAAA/D,MAKA,SAAgBlC,GAEf,IAAMkgP,EAAOz8O,KAAKy8O,KAEXA,EAAK6/E,WAAW7/E,EAAK6/E,SAAW,IAEvC,IAAMovE,EAAa,CAClBrtO,UAAW4pO,GAAgB1rY,EAAI8hK,WAC/BC,UAAW2pO,GAAgB1rY,EAAI+hK,WAC/BH,MAAO8pO,GAAgB1rY,EAAI4hK,OAC3BC,MAAO6pO,GAAgB1rY,EAAI6hK,QAG5B,OAAOq+E,EAAK6/E,SAASx/T,KAAM4uY,GAAe,CAE3C,GAEA,CAAAlpY,IAAA,iBAAA/D,MAKA,SAAgBlC,GAEf,IAAM6M,EAAQpJ,KAAKoJ,MACbqzO,EAAOz8O,KAAKy8O,KAElB,GAAKrzO,EAAMm2J,SAASnxH,IAAK7xC,GAAQ,OAAO6M,EAAMm2J,SAASxvI,IAAKxzB,GAErDkgP,EAAKl9E,WAAWk9E,EAAKl9E,SAAW,IAEvC,IAAIoxG,EAAWp0Q,EAAI0iK,SAAS0xG,SAEV,eAAbA,IAA4BA,EAAW,aAE5C,IAAMqhD,EAAa,CAClBoK,QAASp8T,KAAK2rY,eAAgBpvY,GAC9BiF,OAAQxB,KAAK4rY,aAAcrvY,EAAI48I,MAAO58I,EAAIgiK,OAAQhiK,EAAIwiK,MAAO4xG,IAGzDp0Q,EAAIpD,OAAO64T,EAAW74T,KAAOoD,EAAIpD,MAEtC6G,KAAK+4T,YAAY,SAAWC,GAE3BA,EAAI6yE,cAAgB7yE,EAAI6yE,aAActvY,EAAKy1T,EAE5C,IAEA,IAAMpjT,EAAQ6tO,EAAKl9E,SAASziK,KAAMk1T,GAAe,EAEjD,OADA5oT,EAAMm2J,SAAStwI,IAAK1yB,EAAKqS,GAClBA,CAER,GAEA,CAAApM,IAAA,kBAAA/D,MAKA,SAAiBo6K,GAEhB,IAAMzvK,EAAQpJ,KAAKoJ,MACbqzO,EAAOz8O,KAAKy8O,KAElB,GAAKrzO,EAAMuuK,UAAUvpI,IAAKyqI,GAAa,OAAOzvK,EAAMuuK,UAAU5nJ,IAAK8oJ,GAEnE,GAAKA,EAAS2W,iBAGb,OADAz7K,QAAQk/C,KAAM,qDACP,KAIDwpL,EAAK9kE,YAAY8kE,EAAK9kE,UAAY,IAGzC,IAAM44I,EAAc,CAAEE,qBAAsB,CAAC,IAEJ,IAApC53I,EAAS8uC,yBAAoE,IAAjC9uC,EAASwJ,qBAEzDtuK,QAAQk/C,KAAM,iFAKf,IAAMzrB,EAAQqxI,EAASrxI,MAAM+/C,UAAU9lF,OAAQ,CAAEo3K,EAASrkJ,UAqB1D,GAnBO0zW,GAAY1gW,EAAO,CAAE,EAAG,EAAG,EAAG,MAEpC+oR,EAAYE,qBAAqBC,gBAAkBlpR,GAI/CqxI,EAAS8uC,wBAEb4oG,EAAYE,qBAAqBkN,eAAiB9kJ,EAASsF,UAC3DoyI,EAAYE,qBAAqBmN,gBAAkB/kJ,EAASqF,YAI5DqyI,EAAYE,qBAAqBkN,eAAiB,GAClDpN,EAAYE,qBAAqBmN,gBAAkB,IAK/C/kJ,EAASqH,cAAgBrH,EAASoH,aAAe,CAErD,IAAM6rN,EAAoB9rY,KAAK+rY,uBAAwBlzN,EAASqH,aAAcrH,EAASoH,cAEjF+rN,EAAmB,CAAEp9X,MAAO5O,KAAKisY,eAAgBH,IACvD9rY,KAAKksY,sBAAuBF,EAAkBF,GAC9Cv7E,EAAYE,qBAAqBoN,yBAA2BmuE,CAE7D,CAGA,GAAKnzN,EAASt8K,IAAM,CAEnB,IAAM4vY,EAAkB,CAAEv9X,MAAO5O,KAAKisY,eAAgBpzN,EAASt8K,MAC/DyD,KAAKksY,sBAAuBC,EAAiBtzN,EAASt8K,KACtDg0T,EAAYE,qBAAqBE,iBAAmBw7E,CAErD,CAEA,GAAKtzN,EAAS0F,SAAW,CAGxB,IAAMA,EAAW1F,EAAS0F,SAASr9K,QAAQq0J,eAAgBsjB,EAAS2F,mBAC9D4tN,EAAuBnvY,KAAKC,IAAKqhL,EAASr3K,EAAGq3K,EAAS73K,EAAG63K,EAASh4K,GAiBxE,GAfK6lY,EAAuB,IAE3B7tN,EAAShpB,eAAgB,EAAI62O,GAE7Br4X,QAAQk/C,KAAM,qFAIVm5U,EAAuB,IAE3B77E,EAAY6N,eAAiB7/I,EAASh3F,WAKlCsxF,EAASsH,YAAc,CAE3B,IAAMksN,EAAiB,CAAEz9X,MAAO5O,KAAKisY,eAAgBpzN,EAASsH,cAC9DngL,KAAKksY,sBAAuBG,EAAgBxzN,EAASsH,aACrDowI,EAAY8N,gBAAkBguE,CAE/B,CAED,CAGA,GAAKxzN,EAAS8G,UAAY,CAEzB,IAAM2sN,EAAe,CAAE19X,MAAO5O,KAAKisY,eAAgBpzN,EAAS8G,YAEvD9G,EAASgH,aAA0C,IAA3BhH,EAASgH,YAAY3jL,IAIjDowY,EAAaj1P,MAAQwhC,EAASgH,YAAY3jL,GAI3C8D,KAAKksY,sBAAuBI,EAAczzN,EAAS8G,WACnD4wI,EAAY0N,cAAgBquE,CAE7B,CAGA,GAAKzzN,EAAS0G,MAAQ,CAErB,IAAMgtN,EAAkB,CACvB39X,MAAO5O,KAAKisY,eAAgBpzN,EAAS0G,OACrCg1I,SAAU,GAGsB,IAA5B17I,EAAS2G,iBAEb+sN,EAAgBpuE,SAAWtlJ,EAAS2G,gBAIrCx/K,KAAKksY,sBAAuBK,EAAiB1zN,EAAS0G,OACtDgxI,EAAY2N,iBAAmBquE,CAEhC,CAGK1zN,EAASkD,YAEbw0I,EAAYwN,UAAY,QAInBllJ,EAAS0I,UAAY,IAEzBgvI,EAAYwN,UAAY,OACxBxN,EAAYyN,YAAcnlJ,EAAS0I,WAOhC1I,EAASgD,OAASx0B,KAAakpK,EAAY5sG,aAAc,GACvC,KAAlB9qC,EAAS1/K,OAAco3T,EAAYp3T,KAAO0/K,EAAS1/K,MAExD6G,KAAKwsY,kBAAmB3zN,EAAU03I,GAElCvwT,KAAK+4T,YAAY,SAAWC,GAE3BA,EAAIyzE,eAAiBzzE,EAAIyzE,cAAe5zN,EAAU03I,EAEnD,IAEA,IAAM3hT,EAAQ6tO,EAAK9kE,UAAU76K,KAAMyzT,GAAgB,EAEnD,OADAnnT,EAAMuuK,UAAU1oJ,IAAK4pJ,EAAUjqK,GACxBA,CAER,GAEA,CAAApM,IAAA,cAAA/D,MAKA,SAAa40L,GAEZ,IAAMjqL,EAAQpJ,KAAKoJ,MACbqzO,EAAOz8O,KAAKy8O,KAEZiwJ,EAAoB,CAAEr5M,EAAKvoB,SAASjvD,MAE1C,GAAKl/G,MAAM0E,QAASgyL,EAAKxa,UAExB,IAAM,IAAIn8K,EAAI,EAAGmK,EAAIwsL,EAAKxa,SAASjhL,OAAQ8E,EAAImK,EAAGnK,IAEjDgwY,EAAkB5vY,KAAMu2L,EAAKxa,SAAUn8K,GAAIm/G,WAM5C6wR,EAAkB5vY,KAAMu2L,EAAKxa,SAASh9D,MAIvC,IAAM8wR,EAAeD,EAAkBrvY,KAAM,KAE7C,GAAK+L,EAAMqwT,OAAOrrR,IAAKu+V,GAAiB,OAAOvjY,EAAMqwT,OAAO1pS,IAAK48W,GAEjE,IAEIn4V,EAFEs2H,EAAWuoB,EAAKvoB,SAOrBt2H,EAFI6+I,EAAK6gD,eAEFkiF,GAEI/iI,EAAK8gD,WAETiiF,GAEI/iI,EAAK/a,OAET89I,GAEI/iI,EAAK9a,SAET69I,GAIA/iI,EAAKxa,SAAS2I,UAAY40I,GAAwBA,GAI1D,IAAM2B,EAAU,CAAC,EACX7lP,EAAa,CAAC,EACdwsP,EAAa,GACb+B,EAAU,GAGVmsE,EAAiB,CACtBntO,GAAI,aACJ0a,IAAK,aACL3yI,MAAO,UACP2zM,WAAY,YACZG,UAAW,YAGNuxJ,EAAiB/hO,EAASlhG,aAAc,eAEtBx/D,IAAnByiY,GAAkC7sY,KAAK8sY,4BAA6BD,KAExE94X,QAAQk/C,KAAM,yFAEd63G,EAASh4J,aAAc,SAAU9S,KAAK+sY,gCAAiCF,KAMxE,IAAIG,EAAoB,KAExB,IAAM,IAAIrgX,KAAiBm+I,EAAS54F,WAGnC,GAAqC,UAAhCvlD,EAAc/b,MAAO,EAAG,GAA7B,CAEA,IAAMslJ,EAAY4U,EAAS54F,WAAYvlD,GACvCA,EAAgBigX,EAAgBjgX,IAAmBA,EAAchc,cASjE,GAJE,4EAE2BzY,KAAMy0B,KAAkBA,EAAgB,IAAMA,GAEtEvjB,EAAM8oE,WAAW9jC,IAAKpuC,KAAKitY,OAAQ/2O,IAEvChkF,EAAYvlD,GAAkBvjB,EAAM8oE,WAAWniD,IAAK/vB,KAAKitY,OAAQ/2O,QAFlE,CAQA82O,EAAoB,KACpB,IAAMjqY,EAAQmzJ,EAAUnzJ,MAED,aAAlB4pB,GACA5pB,aAAiB+xJ,aACjB/xJ,aAAiBwyG,aAErBxhG,QAAQk/C,KAAM,yEACd+5U,EAAoB,IAAIxqN,GAAiB,IAAI1tB,YAAa/xJ,GAASmzJ,EAAUusB,SAAUvsB,EAAU0G,aAIlG,IAAMkjK,EAAW9/T,KAAKktY,gBAAiBF,GAAqB92O,EAAW4U,GAErD,OAAbg1J,IAEJ5tP,EAAYvlD,GAAkBmzS,EAC9B12T,EAAM8oE,WAAWjjD,IAAKjvB,KAAKitY,OAAQ/2O,GAAa4pK,GApBjD,CAjBuD,CA8CxD,QAHwB11T,IAAnByiY,GAA+B/hO,EAASh4J,aAAc,SAAU+5X,GAG3B,IAArCtuY,OAAOqD,KAAMswE,GAAat6E,OAAe,OAAO,KAGrD,QAAoCwS,IAA/BipL,EAAK9H,uBAAuC8H,EAAK9H,sBAAsB3zL,OAAS,EAAI,CAExF,IAAM85M,EAAU,GACVsmH,EAAc,GACdm1E,EAAoB,CAAC,EAE3B,QAAoC/iY,IAA/BipL,EAAK7H,sBAET,IAAM,IAAMhpL,KAAO6wL,EAAK7H,sBAEvB2hN,EAAmB95M,EAAK7H,sBAAuBhpL,IAAUA,EAM3D,IAAM,IAAI9F,EAAI,EAAGA,EAAI22L,EAAK9H,sBAAsB3zL,SAAW8E,EAAI,CAE9D,IAAM6E,EAAS,CAAC,EACZujV,GAAS,EAEb,IAAM,IAAMn4T,KAAiBm+I,EAASgb,gBAKrC,GAAuB,aAAlBn5J,GAAkD,WAAlBA,EAArC,CAaA,IAAMupI,EAAY4U,EAASgb,gBAAiBn5J,GAAiBjwB,GACvDqlU,EAAoBp1S,EAAchc,cAOlCy8X,EAAgBtiO,EAAS54F,WAAYvlD,GAE3C,GAAKvjB,EAAM8oE,WAAW9jC,IAAKpuC,KAAKitY,OAAQ/2O,GAAW,IAElD30J,EAAQwgU,GAAsB34T,EAAM8oE,WAAWniD,IAAK/vB,KAAKitY,OAAQ/2O,GAAW,QAF7E,CAQA,IAAMm3O,EAAoBn3O,EAAUh1J,QAEpC,IAAO4pK,EAASib,qBAEf,IAAM,IAAIl2K,EAAI,EAAGq3K,EAAKhxB,EAAUv4E,MAAO9tE,EAAIq3K,EAAIr3K,IAE9Cw9X,EAAkBrqN,OACjBnzK,EACAqmJ,EAAUC,KAAMtmJ,GAAMu9X,EAAcj3O,KAAMtmJ,GAC1CqmJ,EAAUE,KAAMvmJ,GAAMu9X,EAAch3O,KAAMvmJ,GAC1CqmJ,EAAUyG,KAAM9sJ,GAAMu9X,EAAczwO,KAAM9sJ,IAO7CtO,EAAQwgU,GAAsB/hU,KAAKktY,gBAAiBG,EAAmBviO,GACvE1hK,EAAM8oE,WAAWjjD,IAAKjvB,KAAKitY,OAAQG,GAAe,GAAQ7rY,EAAQwgU,GArBlE,CAjBA,MATQ+iB,IAEN/wU,QAAQk/C,KAAM,+DACd6xR,GAAS,GAgDZrkB,EAAQ3jU,KAAMyE,GAEdmwM,EAAQ50M,KAAMu2L,EAAK9H,sBAAuB7uL,SAEN0N,IAA/BipL,EAAK7H,uBAAsCwsI,EAAYl7T,KAAMqwY,EAAmBzwY,GAEtF,CAEAq7T,EAAQrmH,QAAUA,EAEbsmH,EAAYpgU,OAAS,IAEzBmgU,EAAQD,OAAS,CAAC,EAClBC,EAAQD,OAAOE,YAAcA,EAI/B,CAEA,IAAMt4B,EAAkB/iS,MAAM0E,QAASgyL,EAAKxa,UAE5C,GAAK6mH,GAA8C,IAA3B50H,EAASkb,OAAOpuL,OAAe,OAAO,KAK9D,IAHA,IAAM+/K,EAAY+nH,EAAkBrsG,EAAKxa,SAAW,CAAEwa,EAAKxa,UACrDmN,EAAS05G,EAAkB50H,EAASkb,OAAS,CAAE,CAAEG,cAAe,EAAGr7I,WAAO1gC,EAAWuzE,WAAOvzE,IAExF1N,EAAI,EAAGowD,EAAKk5H,EAAOpuL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEnD,IAAMw1S,EAAY,CACjB19P,KAAMA,EACN09B,WAAYA,GAOb,GAJAlyE,KAAKwsY,kBAAmB1hO,EAAUonI,GAE7BuuB,EAAQ7oU,OAAS,IAAIs6S,EAAUuuB,QAAUA,GAEtB,OAAnB31J,EAASl8J,MAAiB,CAE9B,IAAI4xM,EAAWxgN,KAAKitY,OAAQniO,EAASl8J,YAEVxE,IAAtB47K,EAAQtpL,GAAIouC,YAA6C1gC,IAAtB47K,EAAQtpL,GAAIihF,QAEnD6iI,GAAY,IAAMx6B,EAAQtpL,GAAIouC,MAAQ,IAAMk7I,EAAQtpL,GAAIihF,OAIpDv0E,EAAM8oE,WAAW9jC,IAAKoyK,GAE1B0xF,EAAU/qH,QAAU/9K,EAAM8oE,WAAWniD,IAAKywL,IAI1C0xF,EAAU/qH,QAAUnnL,KAAKktY,gBAAiBpiO,EAASl8J,MAAOk8J,EAAUkb,EAAQtpL,GAAIouC,MAAOk7I,EAAQtpL,GAAIihF,OACnGv0E,EAAM8oE,WAAWjjD,IAAKuxL,EAAU0xF,EAAU/qH,UAIhB,OAAtB+qH,EAAU/qH,gBAA0B+qH,EAAU/qH,OAEpD,CAEA,IAAMtO,EAAW74K,KAAKstY,gBAAiB31N,EAAWqO,EAAQtpL,GAAIypL,gBAE5C,OAAbtN,IAAoBq5H,EAAUr5H,SAAWA,GAE9C6lJ,EAAW5hU,KAAMo1S,EAElB,CAEA6lB,EAAQ2G,WAAaA,EAEdjiF,EAAKg9E,SAASh9E,EAAKg9E,OAAS,IAEnCz5T,KAAK+4T,YAAY,SAAWC,GAE3BA,EAAIu0E,WAAav0E,EAAIu0E,UAAWl6M,EAAM0kI,EAEvC,IAEA,IAAMnpT,EAAQ6tO,EAAKg9E,OAAO38T,KAAMi7T,GAAY,EAE5C,OADA3uT,EAAMqwT,OAAOxqS,IAAK09W,EAAc/9X,GACzBA,CAER,GAEA,CAAApM,IAAA,gBAAA/D,MAKA,SAAempK,GAEd,IAAM60E,EAAOz8O,KAAKy8O,KAEXA,EAAK9Z,UAAU8Z,EAAK9Z,QAAU,IAErC,IAAM6qK,EAAU5lO,EAAOumC,qBAEjBkxH,EAAY,CACjBz6T,KAAM4oY,EAAU,eAAiB,eA0BlC,OAvBKA,EAEJnuE,EAAUvhB,aAAe,CACxB2hB,KAAqB,EAAf73J,EAAOpoG,MACbkgQ,KAAmB,EAAb93J,EAAO17H,IACbszR,KAAM53J,EAAOkM,KAAO,EAAI,KAAQlM,EAAOkM,IACvCyrJ,MAAO33J,EAAOiM,KAAO,EAAI,EAAIjM,EAAOiM,MAKrCwrJ,EAAU1mM,YAAc,CACvB3lG,YAAa40I,EAAOsoB,OACpBovI,KAAM7sK,GAAUqB,SAAU8T,EAAOqoB,KACjCuvI,KAAM53J,EAAOkM,KAAO,EAAI,KAAQlM,EAAOkM,IACvCyrJ,MAAO33J,EAAOiM,KAAO,EAAI,EAAIjM,EAAOiM,MAMjB,KAAhBjM,EAAOzuK,OAAckmU,EAAUlmU,KAAOyuK,EAAOhjK,MAE3C63O,EAAK9Z,QAAQ7lO,KAAMuiU,GAAc,CAEzC,GAEA,CAAA78T,IAAA,mBAAA/D,MAUA,SAAkBimQ,EAAMxxP,GAEvB,IAAMupO,EAAOz8O,KAAKy8O,KACZqsJ,EAAU9oY,KAAK8oY,QAEdrsJ,EAAKrmE,aAAaqmE,EAAKrmE,WAAa,IAQ3C,IAJA,IAAM57F,GAFNkqL,EAAOijI,GAAa8F,MAAMC,uBAAwBhpI,EAAKxjQ,QAASgS,IAE5CsnE,OACd8lP,EAAW,GACXhE,EAAW,GAEP5/T,EAAI,EAAGA,EAAI89E,EAAO5iF,SAAW8E,EAAI,CAE1C,IAAM85B,EAAQgkD,EAAQ99E,GAChBixY,EAAepmH,GAAgBC,eAAgBhxP,EAAMr9B,MACvDy0Y,EAAYrmH,GAAgBS,SAAU90Q,EAAMy6X,EAAa/9W,UACvDi+W,EAAgB72E,GAAiB22E,EAAa7gX,cAgBpD,GAdiC,UAA5B6gX,EAAaplH,aAIhBqlH,GAFgC,IAA5BA,EAAUn1N,cAEFm1N,EAAUh1N,SAASgxG,cAAe+jH,EAAajlH,kBAI/Ct+Q,IAMPwjY,IAAeC,EAGrB,OADA95X,QAAQk/C,KAAM,6DAA8Dz8B,EAAMr9B,MAC3E,KAIR,IACI20Y,EAAiBt3W,EAAMzpB,OAAOnV,OAAS4+B,EAAMstO,MAAMlsQ,OAElDi2Y,IAAkB72E,GAAgBzrI,wBAEtCuiN,GAAkBF,EAAUriN,sBAAsB3zL,QAInD,IAAImyQ,OAAa,GAO0D,IAAtEvzO,EAAMmvO,kBAAkBC,2CAE5BmE,EAAgB,cAKhB+jI,GAAkB,GAIlB/jI,EAFWvzO,EAAMw0O,qBAAuB18G,GAExB,OAIA,SAIjBguK,EAASx/T,KAAM,CACdsZ,MAAOpW,KAAKktY,gBAAiB,IAAI1qN,GAAiBhsJ,EAAMstO,MApCnC,IAqCrBjlL,OAAQ7+E,KAAKktY,gBAAiB,IAAI1qN,GAAiBhsJ,EAAMzpB,OAAQ+gY,IACjE/jI,cAAeA,IAGhBu2D,EAASxjU,KAAM,CACds/T,QAASE,EAAS1kU,OAAS,EAC3B2J,OAAQ,CACPkY,KAAMqvX,EAAQ/4W,IAAK69W,GACnB12S,KAAM22S,IAIT,CAQA,OANApxJ,EAAKrmE,WAAWt5K,KAAM,CACrB3D,KAAMurQ,EAAKvrQ,MAAQ,QAAUsjP,EAAKrmE,WAAWx+K,OAC7C0kU,SAAUA,EACVgE,SAAUA,IAGJ7jF,EAAKrmE,WAAWx+K,OAAS,CAEjC,GAEA,CAAA4K,IAAA,cAAA/D,MAIC,SAAa0D,GAEb,IAAMs6O,EAAOz8O,KAAKy8O,KACZqsJ,EAAU9oY,KAAK8oY,QAEfrvX,EAAOgjO,EAAKjyI,MAAOs+R,EAAQ/4W,IAAK5tB,IAEhCy2K,EAAWz2K,EAAOy2K,SAExB,QAAkBxuK,IAAbwuK,EAAyB,OAAO,KAErC,IAAMm1N,EAAY5rY,EAAOy2K,SAASgvC,MAAO,GAEzC,QAAmBx9M,IAAd2jY,EAA0B,OAAO,KAMtC,IAJA,IAAMxqK,EAAS,GACTs8F,EAAsB,IAAIhrK,aAAsC,GAAxB+jB,EAASgvC,MAAMhwN,QACvDo2Y,EAAuB,IAAIr9N,GAEvBj0K,EAAI,EAAGA,EAAIk8K,EAASgvC,MAAMhwN,SAAW8E,EAE9C6mO,EAAOzmO,KAAMgsY,EAAQ/4W,IAAK6oJ,EAASgvC,MAAOlrN,KAC1CsxY,EAAqBtyO,KAAMkd,EAAS6iE,aAAc/+O,IAClDsxY,EAAqBx3N,SAAUr0K,EAAOw2K,YAAapxF,QAASs4O,EAAyB,GAAJnjU,GAclF,YAVoB0N,IAAfqyO,EAAK88E,QAAsB98E,EAAK88E,MAAQ,IAE7C98E,EAAK88E,MAAMz8T,KAAM,CAChB+iU,oBAAqB7/T,KAAKktY,gBAAiB,IAAI1qN,GAAiBq9I,EAAqB,KACrFt8F,OAAQA,EACR3qD,SAAUkwN,EAAQ/4W,IAAKg+W,KAGNt0X,EAAKkgT,KAAOl9E,EAAK88E,MAAM3hU,OAAS,CAInD,GAEA,CAAA4K,IAAA,cAAA/D,MAKA,SAAa0D,GAEZ,IAAMs6O,EAAOz8O,KAAKy8O,KACZx7O,EAAUjB,KAAKiB,QACf6nY,EAAU9oY,KAAK8oY,QAEdrsJ,EAAKjyI,QAAQiyI,EAAKjyI,MAAQ,IAEjC,IAAMmlN,EAAU,CAAC,EAEjB,GAAK1uT,EAAQooY,IAAM,CAElB,IAAM/vO,EAAWn3J,EAAOihK,WAAW77E,UAC7BhoB,EAAWp9D,EAAOo9D,SAASgoB,UAC3B8vD,EAAQl1I,EAAOk1I,MAAM9vD,UAEpB2gT,GAAY5uO,EAAU,CAAE,EAAG,EAAG,EAAG,MAEvCq2J,EAAQr2J,SAAWA,GAIb4uO,GAAY3oU,EAAU,CAAE,EAAG,EAAG,MAEpCowP,EAAQsH,YAAc13P,GAIhB2oU,GAAY7wP,EAAO,CAAE,EAAG,EAAG,MAEjCs4K,EAAQt4K,MAAQA,EAIlB,MAEMl1I,EAAOy8J,kBAEXz8J,EAAOk0K,gBAImC,IA9rDtC6xN,GA8rDkB/lY,EAAOu3J,OA9rDN1zB,SAAU,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAgsDhF2pL,EAAQj2J,OAASv3J,EAAOu3J,OAAO1zB,UAWjC,GAJqB,KAAhB7jI,EAAOhJ,OAAcw2T,EAAQx2T,KAAO4E,OAAQoE,EAAOhJ,OAExD6G,KAAKwsY,kBAAmBrqY,EAAQwtT,GAE3BxtT,EAAOk2K,QAAUl2K,EAAOm2K,QAAUn2K,EAAOo2K,SAAW,CAExD,IAAMwmJ,EAAY/+T,KAAKiuY,YAAa9rY,GAEjB,OAAd48T,IAAqBpP,EAAQt8H,KAAO0rI,EAE1C,MAAY58T,EAAO00K,WAElB84I,EAAQ/nJ,OAAS5nK,KAAKkuY,cAAe/rY,IAMtC,GAFKA,EAAOs2K,eAAgBz4K,KAAKu5T,MAAMz8T,KAAMqF,GAExCA,EAAOyb,SAAShmB,OAAS,EAAI,CAIjC,IAFA,IAAMgmB,EAAW,GAEPlhB,EAAI,EAAGmK,EAAI1E,EAAOyb,SAAShmB,OAAQ8E,EAAImK,EAAGnK,IAAO,CAE1D,IAAM08B,EAAQj3B,EAAOyb,SAAUlhB,GAE/B,GAAK08B,EAAMuwC,UAAmC,IAAxB1oE,EAAQqoY,YAAwB,CAErD,IAAM75E,EAAYzvT,KAAKmuY,YAAa/0W,GAEjB,OAAdq2R,GAAqB7xS,EAAS9gB,KAAM2yT,EAE1C,CAED,CAEK7xS,EAAShmB,OAAS,IAAI+3T,EAAQ/xS,SAAWA,EAE/C,CAEA5d,KAAK+4T,YAAY,SAAWC,GAE3BA,EAAIo1E,WAAap1E,EAAIo1E,UAAWjsY,EAAQwtT,EAEzC,IAEA,IAAMF,EAAYhzE,EAAKjyI,MAAM1tG,KAAM6yT,GAAY,EAE/C,OADAm5E,EAAQ75W,IAAK9sB,EAAQstT,GACdA,CAER,GAEA,CAAAjtT,IAAA,eAAA/D,MAIA,SAAcszL,GAEb,IAAM0qD,EAAOz8O,KAAKy8O,KACZx7O,EAAUjB,KAAKiB,QAEdw7O,EAAK28E,SAEX38E,EAAK28E,OAAS,GACd38E,EAAK1qD,MAAQ,GAId,IAAMovI,EAAW,CAAC,EAEE,KAAfpvI,EAAM54L,OAAcgoU,EAAShoU,KAAO44L,EAAM54L,MAE/CsjP,EAAK28E,OAAOt8T,KAAMqkU,GAIlB,IAFA,IAAM32N,EAAQ,GAEJ9tG,EAAI,EAAGmK,EAAIkrL,EAAMn0K,SAAShmB,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEzD,IAAM08B,EAAQ24J,EAAMn0K,SAAUlhB,GAE9B,GAAK08B,EAAMuwC,UAAmC,IAAxB1oE,EAAQqoY,YAAwB,CAErD,IAAM75E,EAAYzvT,KAAKmuY,YAAa/0W,GAEjB,OAAdq2R,GAAqBjlN,EAAM1tG,KAAM2yT,EAEvC,CAED,CAEKjlN,EAAM5yG,OAAS,IAAIupU,EAAS32N,MAAQA,GAEzCxqG,KAAKwsY,kBAAmBz6M,EAAOovI,EAEhC,GAEA,CAAA3+T,IAAA,iBAAA/D,MAIA,SAAgBimM,GAEf,IAAM3S,EAAQ,IAAIwlD,GAClBxlD,EAAM54L,KAAO,WAEb,IAAM,IAAIuD,EAAI,EAAGA,EAAIgoM,EAAQ9sM,OAAQ8E,IAIpCq1L,EAAMn0K,SAAS9gB,KAAM4nM,EAAShoM,IAI/BsD,KAAKquY,aAAct8M,EAEpB,GAEA,CAAAvvL,IAAA,eAAA/D,MAGA,SAAc2X,GAEb,IAAMnV,EAAUjB,KAAKiB,QAErBmV,EAAQA,aAAiBzZ,MAAQyZ,EAAQ,CAAEA,GAE3CpW,KAAK+4T,YAAY,SAAWC,GAE3BA,EAAIs1E,aAAet1E,EAAIs1E,YAAal4X,EAErC,IAIA,IAFA,IAAMm4X,EAAsB,GAElB7xY,EAAI,EAAGA,EAAI0Z,EAAMxe,OAAQ8E,IAE7B0Z,EAAO1Z,aAAe66O,GAE1Bv3O,KAAKquY,aAAcj4X,EAAO1Z,IAI1B6xY,EAAoBzxY,KAAMsZ,EAAO1Z,IAM9B6xY,EAAoB32Y,OAAS,GAAIoI,KAAKwuY,eAAgBD,GAE3D,IAAM,IAAI7xY,EAAI,EAAGA,EAAIsD,KAAKu5T,MAAM3hU,SAAW8E,EAE1CsD,KAAKyuY,YAAazuY,KAAKu5T,MAAO78T,IAI/B,IAAM,IAAIA,EAAI,EAAGA,EAAIuE,EAAQm1K,WAAWx+K,SAAW8E,EAElDsD,KAAK0uY,iBAAkBztY,EAAQm1K,WAAY15K,GAAK0Z,EAAO,IAIxDpW,KAAK+4T,YAAY,SAAWC,GAE3BA,EAAI21E,YAAc31E,EAAI21E,WAAYv4X,EAEnC,GAED,GAAC,CAAA5T,IAAA,aAAA/D,MAED,SAAYS,GAEX,IAAM,IAAIxC,EAAI,EAAGowD,EAAK9sD,KAAKkK,QAAQtS,OAAQ8E,EAAIowD,EAAIpwD,IAElDwC,EAAMc,KAAKkK,QAASxN,GAItB,KAACsrY,CAAA,CAvuDc,GAgvDVH,GAAkB,WAEvB,SAAAA,EAAaD,GAASn9X,EAAA,KAAAo9X,GAErB7nY,KAAK4nY,OAASA,EACd5nY,KAAK7G,KAAO,qBAEb,CA+EC,OA/EAoQ,EAAAs+X,EAAA,EAAArlY,IAAA,YAAA/D,MAED,SAAWyyE,EAAOy+O,GAEjB,GAAOz+O,EAAM4lG,QAEb,GAAO5lG,EAAMq7I,oBAAwBr7I,EAAM67I,cAAkB77I,EAAM07I,YAAnE,CAOA,IAAMg7K,EAAS5nY,KAAK4nY,OACdnrJ,EAAOmrJ,EAAOnrJ,KACdoxE,EAAiB+5E,EAAO/5E,eAExBmC,EAAW,CAAC,EAEb9+O,EAAM/3E,OAAO62T,EAAS72T,KAAO+3E,EAAM/3E,MAExC62T,EAASxoR,MAAQ0pC,EAAM1pC,MAAM+/C,UAE7ByoO,EAAS7jG,UAAYj7I,EAAMi7I,UAEtBj7I,EAAMq7I,mBAEVyjG,EAASprT,KAAO,cAELssE,EAAM67I,cAEjBijG,EAASprT,KAAO,QAEXssE,EAAMwlG,SAAW,IAAIs5I,EAASloR,MAAQopC,EAAMwlG,WAEtCxlG,EAAM07I,cAEjBojG,EAASprT,KAAO,OAEXssE,EAAMwlG,SAAW,IAAIs5I,EAASloR,MAAQopC,EAAMwlG,UAEjDs5I,EAAStnG,KAAO,CAAC,EACjBsnG,EAAStnG,KAAKunG,gBAAmB/+O,EAAM27I,SAAW,GAAQ37I,EAAM0kF,OAAU,EAC1Eo6J,EAAStnG,KAAKwnG,eAAiBh/O,EAAM0kF,YAIjBxrJ,IAAhB8mE,EAAMuxH,OAAuC,IAAhBvxH,EAAMuxH,OAEvC1uL,QAAQk/C,KAAM,sGAKVie,EAAM3vE,QACJ2vE,EAAM3vE,OAAO27D,SAAWgU,GACE,IAA5BA,EAAM3vE,OAAOg+D,SAASrjE,GACM,IAA5Bg1E,EAAM3vE,OAAOg+D,SAASl4D,IACQ,IAA9B6pE,EAAM3vE,OAAOg+D,SAASj4D,GAE1ByM,QAAQk/C,KAAM,mIAKR46P,EAAgB7tT,KAAK7G,QAE3BsjP,EAAKnwJ,WAAamwJ,EAAKnwJ,YAAc,CAAC,EACtCmwJ,EAAKnwJ,WAAYtsF,KAAK7G,MAAS,CAAE21L,OAAQ,IACzC++H,EAAgB7tT,KAAK7G,OAAS,GAI/B,IAAM21L,EAAS2tD,EAAKnwJ,WAAYtsF,KAAK7G,MAAO21L,OAC5CA,EAAOhyL,KAAMkzT,GAEbL,EAAQrjO,WAAaqjO,EAAQrjO,YAAc,CAAC,EAC5CqjO,EAAQrjO,WAAYtsF,KAAK7G,MAAS,CAAE+3E,MAAO49G,EAAOl3L,OAAS,EAlE3D,MAHCmc,QAAQk/C,KAAM,8EAA+Eie,EAuE/F,KAAC22T,CAAA,CAtFsB,GA+FlB55E,GAA2B,WAEhC,SAAAA,EAAa25E,GAASn9X,EAAA,KAAAwjT,GAErBjuT,KAAK4nY,OAASA,EACd5nY,KAAK7G,KAAO,qBAEb,CAiBC,OAjBAoQ,EAAA0kT,EAAA,EAAAzrT,IAAA,gBAAA/D,MAED,SAAeo6K,EAAU03I,GAExB,GAAO13I,EAASwJ,oBAAhB,CAEA,IACMwrI,EADS7tT,KAAK4nY,OACU/5E,eAE9B0C,EAAYjkO,WAAaikO,EAAYjkO,YAAc,CAAC,EACpDikO,EAAYjkO,WAAYtsF,KAAK7G,MAAS,CAAC,EAEvC00T,EAAgB7tT,KAAK7G,OAAS,EAE9Bo3T,EAAYE,qBAAqBkN,eAAiB,EAClDpN,EAAYE,qBAAqBmN,gBAAkB,EAXP,CAa7C,KAAC3P,CAAA,CAxB+B,GAiC3B65E,GAAkC,WAEvC,SAAAA,EAAaF,GAASn9X,EAAA,KAAAq9X,GAErB9nY,KAAK4nY,OAASA,EACd5nY,KAAK7G,KAAO,qCAEb,CAwCC,OAxCAoQ,EAAAu+X,EAAA,EAAAtlY,IAAA,gBAAA/D,MAED,SAAeo6K,EAAU03I,GAExB,GAAO13I,EAAS47I,iCAAhB,CAEA,IAAMmzE,EAAS5nY,KAAK4nY,OACd/5E,EAAiB+5E,EAAO/5E,eAExB4E,EAAe,CAAC,EAEjBlC,EAAYE,qBAAqBC,kBAErC+B,EAAa+C,cAAgBjF,EAAYE,qBAAqBC,iBAI/D,IAAMiB,EAAiB,CAAE,EAAG,EAAG,GAW/B,GAVA94I,EAAS4F,SAASl3F,QAASoqO,EAAgB,GAC3Cc,EAAad,eAAiBA,EAC9Bc,EAAaiD,iBAAmB78I,EAASk8I,WAEpCxE,EAAYE,qBAAqBE,mBAErC8B,EAAagD,eAAiBlF,EAAYE,qBAAqBE,kBAI3D93I,EAASuH,YAAc,CAE3B,IAAMwuN,EAAiB,CAAEhgY,MAAOg5X,EAAOqE,eAAgBpzN,EAASuH,cAChEwnN,EAAOsE,sBAAuB0C,EAAgB/1N,EAASuH,aACvDqyI,EAAakD,0BAA4Bi5E,CAE1C,CAEAr+E,EAAYjkO,WAAaikO,EAAYjkO,YAAc,CAAC,EACpDikO,EAAYjkO,WAAYtsF,KAAK7G,MAASs5T,EACtC5E,EAAgB7tT,KAAK7G,OAAS,CAlC2B,CAoC1D,KAAC2uY,CAAA,CA/CsC,GAwDlCr7E,GAA+B,WAEpC,SAAAA,EAAam7E,GAASn9X,EAAA,KAAAgiT,GAErBzsT,KAAK4nY,OAASA,EACd5nY,KAAK7G,KAAO,yBAEb,CA6CC,OA7CAoQ,EAAAkjT,EAAA,EAAAjqT,IAAA,gBAAA/D,MAED,SAAeo6K,EAAU03I,GAExB,GAAO13I,EAAS+zD,uBAAhB,CAEA,IAAMg7J,EAAS5nY,KAAK4nY,OACd/5E,EAAiB+5E,EAAO/5E,eAExB4E,EAAe,CAAC,EAItB,GAFAA,EAAa5B,gBAAkBh4I,EAASgG,UAEnChG,EAASkG,aAAe,CAE5B,IAAM8vN,EAAkB,CAAEjgY,MAAOg5X,EAAOqE,eAAgBpzN,EAASkG,eACjE6oN,EAAOsE,sBAAuB2C,EAAiBh2N,EAASkG,cACxD0zI,EAAa3B,iBAAmB+9E,CAEjC,CAIA,GAFAp8E,EAAa1B,yBAA2Bl4I,EAASiG,mBAE5CjG,EAASmG,sBAAwB,CAErC,IAAM8vN,EAA2B,CAAElgY,MAAOg5X,EAAOqE,eAAgBpzN,EAASmG,wBAC1E4oN,EAAOsE,sBAAuB4C,EAA0Bj2N,EAASmG,uBACjEyzI,EAAazB,0BAA4B89E,CAE1C,CAEA,GAAKj2N,EAASoG,mBAAqB,CAElC,IAAM8vN,EAAwB,CAAEngY,MAAOg5X,EAAOqE,eAAgBpzN,EAASoG,qBACvE2oN,EAAOsE,sBAAuB6C,EAAuBl2N,EAASoG,oBAC9DwzI,EAAaxB,uBAAyB89E,CAEvC,CAEAx+E,EAAYjkO,WAAaikO,EAAYjkO,YAAc,CAAC,EACpDikO,EAAYjkO,WAAYtsF,KAAK7G,MAASs5T,EAEtC5E,EAAgB7tT,KAAK7G,OAAS,CAtCiB,CAyChD,KAACszT,CAAA,CApDmC,GA6D/BkqE,GAAiC,WAEtC,SAAAA,EAAaiR,GAASn9X,EAAA,KAAAksX,GAErB32X,KAAK4nY,OAASA,EACd5nY,KAAK7G,KAAO,2BAEb,CAsCC,OAtCAoQ,EAAAotX,EAAA,EAAAn0X,IAAA,gBAAA/D,MAED,SAAeo6K,EAAU03I,GAExB,GAAO13I,EAAS+zD,uBAAhB,CAEA,IAAMg7J,EAAS5nY,KAAK4nY,OACd/5E,EAAiB+5E,EAAO/5E,eAExB4E,EAAe,CAAC,EAItB,GAFAA,EAAawkE,kBAAoBp+M,EAASgoM,YAErChoM,EAASmoM,eAAiB,CAE9B,IAAMguB,EAAoB,CAAEpgY,MAAOg5X,EAAOqE,eAAgBpzN,EAASmoM,iBACnE4mB,EAAOsE,sBAAuB8C,EAAmBn2N,EAASmoM,gBAC1DvuD,EAAaykE,mBAAqB8X,CAEnC,CAMA,GAJAv8E,EAAa0kE,eAAiBt+M,EAASioM,eACvCruD,EAAauvD,4BAA8BnpM,EAASkoM,0BAA2B,GAC/EtuD,EAAawvD,4BAA8BppM,EAASkoM,0BAA2B,GAE1EloM,EAASooM,wBAA0B,CAEvC,IAAMguB,EAA6B,CAAErgY,MAAOg5X,EAAOqE,eAAgBpzN,EAASooM,0BAC5E2mB,EAAOsE,sBAAuB+C,EAA4Bp2N,EAASooM,yBACnExuD,EAAa2kE,4BAA8B6X,CAE5C,CAEA1+E,EAAYjkO,WAAaikO,EAAYjkO,YAAc,CAAC,EACpDikO,EAAYjkO,WAAYtsF,KAAK7G,MAASs5T,EAEtC5E,EAAgB7tT,KAAK7G,OAAS,CAhCiB,CAkChD,KAACw9X,CAAA,CA7CqC,GAsDjC9pE,GAAkC,WAEvC,SAAAA,EAAa+6E,GAASn9X,EAAA,KAAAoiT,GAErB7sT,KAAK4nY,OAASA,EACd5nY,KAAK7G,KAAO,4BAEb,CA0BC,OA1BAoQ,EAAAsjT,EAAA,EAAArqT,IAAA,gBAAA/D,MAED,SAAeo6K,EAAU03I,GAExB,GAAO13I,EAAS+zD,wBAAoD,IAA1B/zD,EAASgI,aAAnD,CAEA,IAAM+mN,EAAS5nY,KAAK4nY,OACd/5E,EAAiB+5E,EAAO/5E,eAExB4E,EAAe,CAAC,EAItB,GAFAA,EAAanB,mBAAqBz4I,EAASgI,aAEtChI,EAASiI,gBAAkB,CAE/B,IAAMouN,EAAqB,CAAEtgY,MAAOg5X,EAAOqE,eAAgBpzN,EAASiI,kBACpE8mN,EAAOsE,sBAAuBgD,EAAoBr2N,EAASiI,iBAC3D2xI,EAAalB,oBAAsB29E,CAEpC,CAEA3+E,EAAYjkO,WAAaikO,EAAYjkO,YAAc,CAAC,EACpDikO,EAAYjkO,WAAYtsF,KAAK7G,MAASs5T,EAEtC5E,EAAgB7tT,KAAK7G,OAAS,CApBgD,CAsB/E,KAAC0zT,CAAA,CAjCsC,GA0ClCC,GAA4B,WAEjC,SAAAA,EAAa86E,GAASn9X,EAAA,KAAAqiT,GAErB9sT,KAAK4nY,OAASA,EACd5nY,KAAK7G,KAAO,sBAEb,CA6BC,OA7BAoQ,EAAAujT,EAAA,EAAAtqT,IAAA,gBAAA/D,MAED,SAAeo6K,EAAU03I,GAExB,GAAO13I,EAAS+zD,wBAAoD,IAA1B/zD,EAASgI,aAAnD,CAEA,IAAM+mN,EAAS5nY,KAAK4nY,OACd/5E,EAAiB+5E,EAAO/5E,eAExB4E,EAAe,CAAC,EAItB,GAFAA,EAAajB,gBAAkB34I,EAASkI,UAEnClI,EAASmI,aAAe,CAE5B,IAAMmuN,EAAkB,CAAEvgY,MAAOg5X,EAAOqE,eAAgBpzN,EAASmI,eACjE4mN,EAAOsE,sBAAuBiD,EAAiBt2N,EAASmI,cACxDyxI,EAAahB,iBAAmB09E,CAEjC,CAEA18E,EAAaxxI,oBAAsBpI,EAASoI,oBAC5CwxI,EAAavxI,iBAAmBrI,EAASqI,iBAAiB35F,UAE1DgpO,EAAYjkO,WAAaikO,EAAYjkO,YAAc,CAAC,EACpDikO,EAAYjkO,WAAYtsF,KAAK7G,MAASs5T,EAEtC5E,EAAgB7tT,KAAK7G,OAAS,CAvBgD,CAyB/E,KAAC2zT,CAAA,CApCgC,GA2ClC66E,GAAa8F,MAAQ,CAEpB2B,eAAgB,SAAW54W,EAAOyR,GAEjC,IAOIr5B,EAPEygY,EAAY,KACZ1qI,EAAYnuO,EAAMouO,eAElBd,EAAQ,IAAIttO,EAAMwzO,eAAgBxzO,EAAMstO,MAAMlsQ,OAAS,GACvDmV,EAAS,IAAIypB,EAAMyzO,gBAAiBzzO,EAAMzpB,OAAOnV,OAAS+sQ,GAC1DqB,EAAcxvO,EAAMmvO,kBAAmB,IAAInvO,EAAMyzO,gBAAiBtF,IAIxE,GAA4B,IAAvBnuO,EAAMstO,MAAMlsQ,OAAe,CAE/BksQ,EAAO,GAAM77N,EAEb,IAAM,IAAIvrC,EAAI,EAAGA,EAAIioQ,EAAWjoQ,IAE/BqQ,EAAQrQ,GAAM,EAIfkS,EAAQ,CAET,MAAO,GAAKq5B,EAAOzR,EAAMstO,MAAO,GAAM,CAErC,GAAK7mQ,KAAK4f,IAAK2Z,EAAMstO,MAAO,GAAM77N,GAASonW,EAAY,OAAO,EAE9DvrI,EAAO,GAAM77N,EACb67N,EAAM70O,IAAKuH,EAAMstO,MAAO,GAExB/2P,EAAOkiB,IAAK+2O,EAAYC,SAAUh+N,GAAQ,GAC1Cl7B,EAAOkiB,IAAKuH,EAAMzpB,OAAQ43P,GAE1B/1P,EAAQ,CAET,MAAO,GAAKq5B,EAAOzR,EAAMstO,MAAOttO,EAAMstO,MAAMlsQ,OAAS,GAAM,CAE1D,GAAKqF,KAAK4f,IAAK2Z,EAAMstO,MAAOttO,EAAMstO,MAAMlsQ,OAAS,GAAMqwC,GAASonW,EAE/D,OAAO74W,EAAMstO,MAAMlsQ,OAAS,EAI7BksQ,EAAOA,EAAMlsQ,OAAS,GAAMqwC,EAC5B67N,EAAM70O,IAAKuH,EAAMstO,MAAO,GAExB/2P,EAAOkiB,IAAKuH,EAAMzpB,OAAQ,GAC1BA,EAAOkiB,IAAK+2O,EAAYC,SAAUh+N,GAAQzR,EAAMzpB,OAAOnV,QAEvDgX,EAAQk1P,EAAMlsQ,OAAS,CAExB,MAEC,IAAM,IAAI8E,EAAI,EAAGA,EAAI85B,EAAMstO,MAAMlsQ,OAAQ8E,IAAO,CAE/C,GAAKO,KAAK4f,IAAK2Z,EAAMstO,MAAOpnQ,GAAMurC,GAASonW,EAAY,OAAO3yY,EAE9D,GAAK85B,EAAMstO,MAAOpnQ,GAAMurC,GAAQzR,EAAMstO,MAAOpnQ,EAAI,GAAMurC,EAAO,CAE7D67N,EAAM70O,IAAKuH,EAAMstO,MAAMlzP,MAAO,EAAGlU,EAAI,GAAK,GAC1ConQ,EAAOpnQ,EAAI,GAAMurC,EACjB67N,EAAM70O,IAAKuH,EAAMstO,MAAMlzP,MAAOlU,EAAI,GAAKA,EAAI,GAE3CqQ,EAAOkiB,IAAKuH,EAAMzpB,OAAO6D,MAAO,GAAKlU,EAAI,GAAMioQ,GAAa,GAC5D53P,EAAOkiB,IAAK+2O,EAAYC,SAAUh+N,IAAUvrC,EAAI,GAAMioQ,GACtD53P,EAAOkiB,IAAKuH,EAAMzpB,OAAO6D,OAASlU,EAAI,GAAMioQ,IAAejoQ,EAAI,GAAMioQ,GAErE/1P,EAAQlS,EAAI,EAEZ,KAED,CAED,CAOD,OAHA85B,EAAMstO,MAAQA,EACdttO,EAAMzpB,OAASA,EAER6B,CAER,EAEA8+X,uBAAwB,SAAWhpI,EAAMxxP,GAMxC,IAJA,IAAMsnE,EAAS,GACT80T,EAAe,CAAC,EAChBC,EAAe7qI,EAAKlqL,OAEhB99E,EAAI,EAAGA,EAAI6yY,EAAa33Y,SAAW8E,EAAI,CAEhD,IAAI8yY,EAAcD,EAAc7yY,GAC1B+yY,EAAqBloH,GAAgBC,eAAgBgoH,EAAYr2Y,MACjEu2Y,EAAkBnoH,GAAgBS,SAAU90Q,EAAMu8X,EAAmB7/W,UAE3E,GAAyC,0BAApC6/W,EAAmB3iX,mBAAiF1iB,IAArCqlY,EAAmBpnH,cAAvF,CAQA,GAAKmnH,EAAY7pI,oBAAsB6pI,EAAYnlI,kCAC/CmlI,EAAY7pI,oBAAsB6pI,EAAYllI,+BAAiC,CAElF,GAAKklI,EAAY7pI,kBAAkBC,0CAIlC,MAAM,IAAI9nQ,MAAO,gFAIlBiW,QAAQk/C,KAAM,iGAEdu8U,EAAcA,EAAYtuY,SACdgpQ,iBAAkB37G,GAE/B,CAEA,IAAMohP,EAAcD,EAAgBnkN,sBAAsB3zL,OACpD4uR,EAAckpH,EAAgBlkN,sBAAuBikN,EAAmBpnH,eAE9E,QAAqBj+Q,IAAhBo8Q,EAEJ,MAAM,IAAI1oR,MAAO,oDAAsD2xY,EAAmBpnH,eAI3F,IAAIunH,OAAW,EAIf,QAA8CxlY,IAAzCklY,EAAcI,EAAgB7zR,MAAnC,CAwBA,IAAMg0R,EAAoBL,EAAY7pI,kBAAmB,IAAI6pI,EAAYvlI,gBAAiB,IAE1F2lI,EAAcN,EAAcI,EAAgB7zR,MAI5C,IAAM,IAAIhsG,EAAI,EAAGA,EAAI+/X,EAAY9rI,MAAMlsQ,OAAQiY,IAE9C+/X,EAAY7iY,OAAQ8C,EAAI8/X,EAAcnpH,GAAgBqpH,EAAkB5pI,SAAU2pI,EAAY9rI,MAAOj0P,IAOtG,IAAM,IAAIA,EAAI,EAAGA,EAAI2/X,EAAY1rI,MAAMlsQ,OAAQiY,IAAO,CAErD,IAAMigY,EAAgB9vY,KAAKovY,eAAgBQ,EAAaJ,EAAY1rI,MAAOj0P,IAC3E+/X,EAAY7iY,OAAQ+iY,EAAgBH,EAAcnpH,GAAgBgpH,EAAYziY,OAAQ8C,EAEvF,CAtBA,KAtBA,CAMC,IAFA,IAAM9C,EAAS,KAFf6iY,EAAcJ,EAAYtuY,SAEK+oQ,iBAAiB0lI,EAAcC,EAAY9rI,MAAMlsQ,QAEtEiY,EAAI,EAAGA,EAAI+/X,EAAY9rI,MAAMlsQ,OAAQiY,IAE9C9C,EAAQ8C,EAAI8/X,EAAcnpH,GAAgBopH,EAAY7iY,OAAQ8C,GAM/D+/X,EAAYz2Y,MAASs2Y,EAAmB7/W,UAAY,IAAO,yBAC3DggX,EAAY7iY,OAASA,EAErBuiY,EAAcI,EAAgB7zR,MAAS+zR,EACvCp1T,EAAO19E,KAAM8yY,EAId,CAvDA,MAHCp1T,EAAO19E,KAAM0yY,EAkFf,CAIA,OAFA9qI,EAAKlqL,OAASA,EAEPkqL,CAER,GCtoFD,IAAMqrI,GAAmB,SAAC5tY,GAExB,YACIiI,IADIjI,EAAgB02K,UAGpB12K,EAAO88J,UACP98J,EAAO88J,SAASqmO,oBAEd3oY,MACK0lB,KAAMlgB,EAAO88J,SAASqmO,iBAEZv4X,UACVjL,QAAO,SAAAgF,GAAC,OAAIkpY,GAAmBlpY,EAAE+xK,SAAS,GACvD,EAMMm3N,GAAqB,SAACn3N,GAE1B,OAAOA,GAAYA,EAASiJ,aAAenlL,MAAM0E,QAAQw3K,EAC3D,EAEqBo3N,GAAsC,WAMzD,WAAYrI,GAAWn9X,EAAAA,KAAAA,GACrBzK,KAAK4nY,OAASA,EACd5nY,KAAK7G,KAAO,yBACZ6G,KAAK8kY,aAAe,EACtB,CAqGC,OArGAv7X,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,cAAA/D,MAED,SAAYimM,GAAmB,IAGDjgI,EAHC,OAEvByrU,EAAiB,IAAIlkX,IAAc,IACpB04K,GAAO,IAA5B,IAAK,EAAL,qBAA8B,CAAb,QACRvtB,UAAS,SAAA38J,GACd,GAAKu1X,GAAiBv1X,GAAtB,CAGA,IAIuDsqD,EAJjDwgU,EACF9qX,EAAEykJ,SAASqmO,iBAEwC,IAAnD9qX,EAAEykJ,SAASkxO,aACwC,IAAvD,IAAK,EAAL,qBAAyD,oBAA7CC,EAAW,KAAED,EAAW,KAC5BE,EAAkB/K,EAAiBv1W,IAAIogX,EAAYvhY,OAErDyhY,GAAmBL,GAAmBK,EAAgBx3N,WACxDq3N,EAAe9jX,IAAIgkX,GAEtB,UAAArrU,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EACH,IAEF,UAAAL,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACAwrU,EAAe3tY,SAAQ,SAAApJ,GAAI,OAAI+iB,EAAK4oX,aAAahoY,KAAK3D,EAAK,GAC7D,GAAC,CAAAqJ,IAAAA,YAAA/D,MAED,SAAU40L,EAAY0kI,GACpB,GAAKg4E,GAAiB18M,GAAtB,CAIA,IAYiD5iD,EAZ3CwuB,EAAWo0B,EAAKp0B,SAChBqmO,EACFrmO,EAASqmO,iBACPgL,EAAiBrxO,EAASkxO,YAC1BI,EACF,IAAIpzW,IAGFqzW,EAAoB,IAAIrzW,IACxBunW,EAAW/nY,MAAM0lB,KAAKiuX,EAAevjY,UAAUysF,MAAK,SAACx9F,EAAGuK,GAC5D,OAAOvK,EAAE4S,MAAQrI,EAAEqI,KACrB,IAAG,IAC4B81X,EAAS3xU,WAAS,IAAjD,IAAK,EAAL,qBAAmD,oBAAvCr2D,EAAC,KAAEyzY,EAAW,KACxBK,EAAkBvhX,IAAIkhX,EAAYvhY,MAAOlS,GAC1C,UAAAg0I,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,KAEgD2B,EAFhD,IAEyBi+P,EAAevjY,UAAQ,IAAjD,IAAK,EAAL,qBAAmD,KAAxCojY,EAAW,QACdM,EAAkBnL,EAAiBv1W,IAAIogX,EAAYvhY,OACzD,GAAK6hY,GAAoBT,GAAmBS,EAAgB53N,UAA5D,CAIA,IAAMsN,EACFnmL,KAAK4nY,OAAO0F,gBAAgBmD,EAAgB53N,UAC3C03N,EAAaniW,IAAI+3I,IACpBoqN,EAAathX,IACTk3J,EAAe,CAACtN,SAAUsN,EAAeu+M,SAAU,KAEzD6L,EAAaxgX,IAAIo2J,GAAgBu+M,SAAS5nY,KACtC0zY,EAAkBzgX,IAAIogX,EAAYvhY,SACvC,UAAA0jI,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAED,IAAMo+P,EACF/zY,MAAM0lB,KAAKkuX,EAAaxjY,UACnBxQ,KAAK,SAAAuK,GAAM,OAAOA,EAAE49X,SAASlrS,MAAK,SAACx9F,EAAGuK,GAAC,OAAKvK,EAAIuK,CAAC,KAAKO,CAAC,IACvD0yF,MAAK,SAACx9F,EAAGuK,GAAC,OAAKvK,EAAE68K,SAAWtyK,EAAEsyK,QAAQ,IAE/C,GAA2B,IAAvB63N,EAAY94Y,OAAhB,CAIA,IAK6C+6I,EALvCg+P,EACFX,GAAmB/wO,EAAS2xO,kBAC5B5wY,KAAK4nY,OAAO0F,gBAAgBruO,EAAS2xO,mBACpC,EAAE,IAEoB74E,EAAQ2G,YAAU,IAA7C,IAAK,EAAL,qBAA+C,KAApCxG,EAAY,QAEjBy4E,GAAyB,IAC3Bz4E,EAAar/I,SAAW83N,GAE1Bz4E,EAAa5rO,WAAa4rO,EAAa5rO,YAAc,CAAC,EACtD4rO,EAAa5rO,WAAWtsF,KAAK7G,MAAQ,CAAC2gU,SAAU42E,GACjD,UAAA99P,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,GACH,GAAC,CAAApwI,IAAAA,aAAA/D,MAED,WACE,GAAiC,IAA7BuB,KAAK8kY,aAAaltY,OAAtB,CAIA,IAAMsb,EAAOlT,KAAK4nY,OAAOnrJ,KACzBvpO,EAAKo5E,WAAap5E,EAAKo5E,YAAc,CAAC,EAEtC,IAAMukT,EAAc7wY,KAAK8kY,aAAavoY,KAAI,SAAAwK,GACxC,MAAO,CAAC5N,KAAM4N,EAChB,IACAmM,EAAKo5E,WAAWtsF,KAAK7G,MAAQ,CAACurY,SAAUmM,GACxC7wY,KAAK4nY,OAAO/5E,eAAe7tT,KAAK7G,OAAQ,EAC1C,KAAC,EA/GwD,GCxDrD23Y,GAAiB,WAEtB,SAAAA,EAAaC,EAASj/M,EAAU+P,EAAYmvM,EAAuBC,GAA0B,IAAA/0X,EAAA,KAAAzR,EAAA,KAAAqmY,GAE5F9wY,KAAK+wY,QAAUA,EACf/wY,KAAK8xL,SAAWA,EAChB9xL,KAAK6hM,WAAaA,EAClB7hM,KAAKkxY,eAAiB,KACtBlxY,KAAKixY,wBAA0BA,EAC/BjxY,KAAKmxY,cAAgBnxY,KAAKoxY,UAAUx9X,KAAM5T,MAE1C,IAAMylM,EAAU3T,EAASU,GAAGkT,aAI5B,GAAKsrM,GAAyB,mBAAoB3tY,OAAS,CAG1D,IAAMguY,EAAmB,IAAIt+M,GAAuB,IACpDg+M,EAAQ34N,YAAci5N,EAAiBhwO,QAEvC,IAAMz0G,EAAKklI,EAAS74C,aAGpB,OAASwsD,EAAQ6rM,2BAEhB,IAAK,SACJ1kV,EAAGonJ,aAAc,YACjB,MAED,IAAK,UACJpnJ,EAAGonJ,aAAc,0BAKnBh0M,KAAKkxY,eAAiB,IAAIhoK,eAAgBzjC,EAAS74I,GAEnD5sD,KAAK6hM,WAAWj+L,iBAAkB,oBAAoB,WAErDsY,EAAKq1X,kBAEN,GAED,CAIA9rM,EAAQhkI,sBAAuBzhE,KAAKmxY,cAErC,CA0EC,OA1EA5nY,EAAAunY,EAAA,EAAAtuY,IAAA,mBAAA/D,MAED,WAEC,IAAMo7N,EAAoB75N,KAAK8xL,SAASnkL,WAAWoiB,IAAK/vB,KAAK+wY,QAAQ34N,aAErE,GAAKyhD,EAAoB,CAExB,IAAM23K,EAAUxxY,KAAKkxY,eAAeO,qBAAsBzxY,KAAK6hM,YAE1D2vM,IAEJ33K,EAAkBQ,eAAiBm3K,EAEnCxxY,KAAK+wY,QAAQ34N,YAAYhZ,kBAAmB,EAI9C,CAED,GAAC,CAAA58J,IAAA,YAAA/D,MAED,SAAWwpC,EAAMi+L,GAIhB,GAAOlmO,KAAK+wY,QAAZ,CAMgB7qK,EAAQzgC,QAChBhkI,sBAAuBzhE,KAAKmxY,eAEpC,IAAMO,EAAgBxrK,EAAQyrK,iBAAkB3xY,KAAK6hM,YACrD,GAAK6vM,EAAgB,CAGpB1xY,KAAK+wY,QAAQlvM,WAAWnpJ,GAAGihH,UAAW+3O,EAAcE,gCACpD5xY,KAAK+wY,QAAQlvM,WAAWsqB,UAAY,EAIpC,IAAM0lL,EAAkB50Y,KAAKC,IAAK,EACjCD,KAAKC,IAAKw0Y,EAAcI,sBAAsB51Y,EAC7Ce,KAAKC,IAAKw0Y,EAAcI,sBAAsBzqY,EAC7CqqY,EAAcI,sBAAsBxqY,KAEvCtH,KAAK+wY,QAAQgB,iBAAiBvqW,MAAMg0H,OACnCk2O,EAAcI,sBAAsB51Y,EAAI21Y,EACxCH,EAAcI,sBAAsBzqY,EAAIwqY,EACxCH,EAAcI,sBAAsBxqY,EAAIuqY,GACzC7xY,KAAK+wY,QAAQgB,iBAAiB5lL,UAAY0lL,EAC1C7xY,KAAK+wY,QAAQgB,iBAAiBxyU,SAASm8F,KAAMg2O,EAAcM,uBAEtDhyY,KAAKixY,0BAETjxY,KAAKixY,0BACLjxY,KAAKixY,wBAA0B,KAIjC,CAjCA,CAmCD,GAAC,CAAAzuY,IAAA,UAAA/D,MAED,WAECuB,KAAK+wY,QAAU,KACf/wY,KAAK8xL,SAAW,KAChB9xL,KAAK6hM,WAAa,KAClB7hM,KAAKkxY,eAAiB,IAEvB,KAACJ,CAAA,CA5HqB,GAgIVmB,GAAgB,SAAAC,GAAAl2X,EAAAi2X,EAAAC,GAAA,IAAAj2X,EAAAtB,EAAAs3X,GAE5B,SAAAA,EAAangN,GAAyC,IAAAnjH,EAA/BqiU,IAAqB/wY,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GAAOwK,EAAA,KAAAwnY,IAElDtjU,EAAA1yD,EAAApf,KAAA,OAEKglM,WAAa,IAAIk2E,GACtBppM,EAAKkzH,WAAWsqB,UAAY,EAC5Bx9I,EAAKviD,IAAKuiD,EAAKkzH,YAEflzH,EAAKojU,iBAAmB,IAAIh7H,GAC5BpoM,EAAKojU,iBAAiB5lL,UAAY,EAClCx9I,EAAKviD,IAAKuiD,EAAKojU,kBAIfpjU,EAAKypG,YAAc,KAEnB,IAAI+5N,EAAoB,KACpBC,GAAoB,EAgEtB,OA/DFtgN,EAASU,GAAG5uL,iBAAkB,gBAAgB,WAE7C,IAAM6hM,EAAU3T,EAASU,GAAGkT,aAEvB,sBAAuBD,GAE3BA,EAAQ4sM,kBAAmB,CAE1BC,iBAAkB7sM,EAAQ6rM,4BAEvB5gW,MAAM,SAAEg7K,GAEXymL,EAAoB,IAAIrB,GAAiBt1X,EAAAmzD,GAAQmjH,EAAU45B,EAAOslL,GAAuB,WAExFoB,GAAoB,EAGpBzjU,EAAKpwC,cAAe,CAAE35B,KAAM,mBAE7B,GAED,GAIF,IAEAktL,EAASU,GAAG5uL,iBAAkB,cAAc,WAEtCuuY,IAEJA,EAAkBzwO,UAClBywO,EAAoB,MAIhBC,GAGJzjU,EAAKpwC,cAAe,CAAE35B,KAAM,iBAI9B,IAGA+pE,EAAK+yF,QAAU,WAETywO,IAEJA,EAAkBzwO,UAClBywO,EAAoB,MAIrBxjU,EAAK/N,OAAQ+N,EAAKkzH,YAClBlzH,EAAKkzH,WAAa,KAElBlzH,EAAK/N,OAAQ+N,EAAKojU,kBAClBpjU,EAAKojU,iBAAmB,KAExBpjU,EAAKypG,YAAc,IAEpB,EAAEzpG,CAEH,CAAC,OAAAplE,EAAA0oY,EAAA,CArF2B,CAASpvK,IC5GzB0vK,GAAM,WAIjB,aAA0D,IAA9CC,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAdoB,GAc0B/nY,EAAAA,KAAAA,GAHlD,KAAAipW,SAAmB,EACnB,KAAA++B,iBAA2B,EAGjCzyY,KAAK0yY,aAAaF,EACpB,CA6CC,OA7CAjpY,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,eAAA/D,MAED,SAAa+zY,GACXxyY,KAAKyyY,iBACD,EAAIx1Y,KAAKC,IArBc,KAqBcs1Y,EAC3C,GAAC,CAAAhwY,IAAAA,SAAA/D,MAED,SACIvC,EACAy2Y,EACAC,EACAC,GAEF,IAAMC,EAAW,KAAS9yY,KAAKyyY,iBAE/B,GAAS,MAALv2Y,GAAgC,IAAnB22Y,EACf,OAAOF,EAET,GAAIz2Y,IAAMy2Y,GAA2B,IAAlB3yY,KAAK0zW,SACtB,OAAOi/B,EAET,GAAIC,EAAuB,EACzB,OAAO12Y,EAKT,IAAMkqC,EAAUlqC,EAAIy2Y,EACdI,EAAuB/yY,KAAK0zW,SAAW1zW,KAAKyyY,iBAAmBrsW,EAC/D4sW,EAAgB5sW,EAASwsW,EAAuBG,EAChDtwM,EAAQxlM,KAAKk2J,KAAKnzJ,KAAKyyY,iBAAmBG,GAC1CK,GACDF,EAAuB/yY,KAAKyyY,iBAAmBO,GAAiBvwM,EAC/DywM,GACDlzY,KAAKyyY,kBAAoBQ,EAAcF,EAAuBtwM,GACnE,OAAIxlM,KAAK4f,IAAIo2X,GAAeH,EAAW71Y,KAAK4f,IAAIg2X,IAC5CK,EAAe9sW,GAAU,GAG3BpmC,KAAK0zW,SAAW,EACTi/B,IAEP3yY,KAAK0zW,SAAWu/B,EACTN,EAAQK,EAAgBvwM,EAEnC,KAAC,EAnDgB,GCNb0wM,GAAS,GAITC,GAAYn2Y,KAAK00J,GAAK,GAEtByoG,GAAU,IAAIjlG,GAMdk+O,GACF,SAACpmN,EAAyBqmN,EAAiBC,GAGzC,IAFA,IAAIpqO,EAAMmqO,EAAU,EAAKC,EAAU,EAAI,GAAKt2Y,KAAK00J,GAAK,EAC7B4hP,EAAU,EAAIt2Y,KAAK00J,GAAK,EAAI10J,KAAK00J,GACjDj1J,EAAI,EAAGA,GAbL,KAasBA,EAC/BuwL,EAASnwL,KACLw2Y,EAAU,IAAwBr2Y,KAAKk3J,IAAIgV,GAC3CoqO,EAAU,IAAwBt2Y,KAAKm3J,IAAI+U,GAC3C,EACAmqO,EAAUH,GAASl2Y,KAAKk3J,IAAIgV,GAC5BoqO,EAAUJ,GAASl2Y,KAAKm3J,IAAI+U,GAC5B,GACJA,GAAOiqO,EAEX,EAcSI,GAAa,YAAAx3X,EAAAA,EAAAA,GAAA,WAOxB,WAAY+1K,EAAmBlW,GAAU,MAAApxK,EAAAA,KAAAA,GACvC,IAAMqgK,EAAW,IAAI4a,GACfqvB,EAA2B,GAC3B9nB,EAA0B,GACzB1nI,EAAqBwsI,EAArBxsI,KAAMylH,EAAe+mB,EAAf/mB,YAEP9uK,EAAIqpD,EAAKrpD,EAAI,EACbmL,GAAc,SAATw0K,EAAkBt2H,EAAKl+C,EAAIk+C,EAAKj+C,GAAK,EAChD+rY,GAAUpmN,EAAU/wL,EAAGmL,GACvBgsY,GAAUpmN,GAAW/wL,EAAGmL,GACxBgsY,GAAUpmN,GAAW/wL,GAAImL,GACzBgsY,GAAUpmN,EAAU/wL,GAAImL,GAGxB,IADA,IAAMosY,EAAcxmN,EAASr1L,OAAS,EAC7B8E,EAAI,EAAGA,EAAI+2Y,EAAc,EAAG/2Y,GAAK,EACxCq4M,EAAUj4M,KAAKJ,EAAGA,EAAI,EAAGA,EAAI,EAAGA,EAAGA,EAAI,EAAGA,EAAI,GAEhD,IAAMA,EAAI+2Y,EAAc,EACxB1+L,EAAUj4M,KAAKJ,EAAGA,EAAI,EAAG,EAAGA,EAAG,EAAG,GAElCouK,EAASh4J,aAAa,WAAY,IAAI+xK,GAAuBoI,EAAU,IACvEniB,EAASkf,SAAS+qB,IAElB74L,EAAAA,EAAAA,KAAAA,KAAM4uJ,IAED+Q,KAAOA,EACZ,IAAMhD,EAAW38J,EAAK28J,SAetB,OAdAA,EAASgD,KAAOx0B,GAChBwxB,EAASkD,aAAc,EACvBlD,EAASrkJ,QAAU,EACnBtY,EAAKw3X,YAAc,EACnBx3X,EAAKy3X,cAAgB,IAAIpB,GAEzBr2X,EAAK03X,SACD,IAAI1oN,GAAK,IAAIqM,GAAc,GAAKr7L,EAAIi3Y,IAAS,GAAK9rY,EAAI8rY,MAC1Dj3X,EAAK03X,SAASjqU,SAAU,EACvBztD,EAAK03X,SAAS/6N,SAAsBgD,KAAOx0B,GAC5CnrI,EAAKkQ,IAAIlQ,EAAK03X,UAEd5oO,EAAYS,UAAUvvJ,EAAKqjD,UAEnBs8G,GACN,IAAK,SACH3/J,EAAKmpR,SAASpoS,KAAK00J,GAAK,GACxBz1I,EAAK23X,aAAe7oO,EAAY9/H,IAAI7jC,EACpC6U,EAAKqjD,SAASl4D,EAAI6U,EAAK23X,aACvB,MACF,IAAK,OACH33X,EAAK23X,aAAe7oO,EAAY9/H,IAAI5jC,EACpC4U,EAAKqjD,SAASj4D,EAAI4U,EAAK23X,aAIL,OADtB9hN,EAAMxwL,OAAO6qB,IAAI,MACjBlQ,EAAK4sD,aAAe,EAAE,CACxB,CAuEC,OArEDv/D,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,SAAA/D,MAIA,SAAOszL,EAAmBpwJ,EAAiBC,GACzCw4N,GAAQnrO,IAAI0S,GAAUC,GACtB5hC,KAAK4zY,SAASjqU,SAAU,EACxB,IAAMmqU,EAAY/hN,EAAMgiN,2BAA2B35I,GAASp6P,KAAK4zY,UAEjE,OADA5zY,KAAK4zY,SAASjqU,SAAU,EACJ,MAAbmqU,EAAoB,KAAOA,EAAUv0U,QAC9C,GAAC,CAAA/8D,IAAAA,iBAAA/D,MAED,SAAeszL,EAAmBpwJ,EAAiBC,GAEjD5hC,KAAK4zY,SAASv8P,MAAMpoH,IAAI,IAAM,IAAM,KACpCjvB,KAAK4zY,SAASr8N,oBACd,IAAMu8N,EAAY9zY,KAAKg0Y,OAAOjiN,EAAOpwJ,EAASC,GAE9C,OADA5hC,KAAK4zY,SAASv8P,MAAMpoH,IAAI,EAAG,EAAG,GACvB6kX,CACT,GAEA,CAAAtxY,IAAAA,eAAAutB,IAaA,WACE,MAAkB,SAAd/vB,KAAK67K,KACA77K,KAAKu/D,SAASj4D,EAAItH,KAAK6zY,aAEvB7zY,KAAKu/D,SAASl4D,EAAIrH,KAAK6zY,YAElC,EAEA5kX,IAjBA,SAAiB8a,GACfA,GAAU,KACQ,SAAd/pC,KAAK67K,KACP77K,KAAKu/D,SAASj4D,EAAItH,KAAK6zY,aAAe9pW,EAEtC/pC,KAAKu/D,SAASl4D,EAAIrH,KAAK6zY,aAAe9pW,CAE1C,GAAC,CAAAvnC,IAAAA,OAAAysB,IAaD,SAAS06C,GACP3pE,KAAK0zY,YAAc/pU,EAnJH,IAmJ2B,CAC7C,GAEA,CAAAnnE,IAAAA,gBAAA/D,MAGA,SAAcrB,GACZ,IAAMy7K,EAAW74K,KAAK64K,SACtBA,EAASrkJ,QACLx0B,KAAK2zY,cAAcrwO,OAAOuV,EAASrkJ,QAASx0B,KAAK0zY,YAAat2Y,EAAO,GACzE4C,KAAK2pE,QAAUkvG,EAASrkJ,QAAU,CACpC,GAEA,CAAAhyB,IAAAA,UAAA/D,MAGA,iBACE,EAA6BuB,KAAK4zY,SAA3B9oO,EAAQ,EAARA,SAAU+N,EAAQ,EAARA,SACjB/N,EAASpJ,UACRmX,EAAsBnX,UACvB1hK,KAAK8qK,SAASpJ,UACb1hK,KAAK64K,SAAsBnX,UACjB,QAAX,EAAA1hK,KAAKk9D,cAAM,SAAE0D,OAAO5gE,KACtB,KAAC,EApIuB,CAAQkrL,ICVrB+oN,GACK,iBADLA,GAEM,kBAFNA,GAGI,gBAHJA,GAIH,SASGC,GACD,WADCA,GAEG,eAOVloL,GAAU,IAAIllD,GACd/N,GAAU,IAAI4X,GACdwjO,GAAc,IAAIrtO,GAClBc,GAAS,IAAIioB,GAAkB,GAAI,EAAG,GAAK,KAEpCukN,GAAW,YAAAp4X,EAAAA,EAAAA,GAAA,WAyCtB,WAAoB81K,GAAkB,MAGC,OAHDrnL,EAAAA,KAAAA,IACpCyR,EAAAA,EAAAA,KAAAA,OADkBA,SAAA41K,EAvCb51K,EAAAA,eAAiC,KACjCA,EAAAA,aAAc,EAEbA,EAAAA,aAAkC,KAClCA,EAAAA,SAAwB,KACxBA,EAAAA,kBAAiC,KACjCA,EAAAA,mBAAkC,KAClCA,EAAAA,MAAsB,KACtBA,EAAAA,iBAAyC,KACzCA,EAAAA,uBAA6D,KAC7DA,EAAAA,YAAkC,KAClCA,EAAAA,gBAAmC,KACnCA,EAAAA,eAAkD,KAClDA,EAAAA,yBAA6C,KAC7CA,EAAAA,QAA4B,KAC5BA,EAAAA,QAAiC,KAEjCA,EAAAA,UAAW,EACXA,EAAAA,OAAS,EACTA,EAAAA,aAAc,EACdA,EAAAA,UAAY,IAAI4qJ,GAChB5qJ,EAAAA,mBAAoB,EACpBA,EAAAA,eAAgB,EAChBA,EAAAA,YAAa,EACbA,EAAAA,gBAAiB,EACjBA,EAAAA,iBAAmB,IAAI4qJ,GACvB5qJ,EAAAA,WAAa,EACbA,EAAAA,UAAY,EACZA,EAAAA,aAAe,IAAI4qJ,GACnB5qJ,EAAAA,QAAU,EACVA,EAAAA,UAAY,EACZA,EAAAA,QAAU,IAAIq2X,GACdr2X,EAAAA,QAAU,IAAIq2X,GACdr2X,EAAAA,QAAU,IAAIq2X,GACdr2X,EAAAA,UAAY,IAAIq2X,GAChBr2X,EAAAA,YAAc,IAAIq2X,GAElBr2X,EAAAA,gCAAkC,kBAAMA,EAAKm4X,gBAAgB,EA8LrEn4X,EAAAA,cAAgB,WACW,MAArBA,EAAKo4X,cAAwBp4X,EAAK8qN,eACpC9qN,EAAKo4X,aAAc5yO,UACnBxlJ,EAAKo4X,aAAe,IAAId,GACpBt3X,EAAKq4X,eAAiBr4X,EAAKs4X,YAAc,OAAS,UAE1D,EA0NQt4X,EAAAA,cAAgB,SAACqsB,GACvB,IAAMksW,EAAYv4X,EAAKw4X,uBACvB,GAAiB,MAAbD,EAAJ,CAGA,IAAME,EAAUz4X,EAAKk6K,MAAOw+M,mCAAmCH,GACzD1iN,EAAQ71K,EAAKq4X,eACb/pO,EAAMtuJ,EAAKo4X,aAEjB,GAAuB,IAAnBK,EAAQ/8Y,OAAc,CACxBskB,EAAK4nN,YAAev7L,EAA6Bu7L,YACjD,IAAO53D,EAAQhwJ,EAAK4nN,YAAa+wK,QAA1B3oO,KAEDioO,EAAc3pO,EAAIwpO,OAAO93X,EAAKq4X,eAAiBroO,EAAK,GAAIA,EAAK,IACnE1B,EAAI3pG,MAAO,EAEQ,MAAfszU,GACFj4X,EAAK44X,eAAgB,EACrB54X,EAAK64X,iBAAiBr5O,KAAKy4O,KACG,IAArBj4X,EAAKs4X,cACdt4X,EAAK84X,YAAa,EAClB94X,EAAK+4X,UAvgBS,IAugBG/oO,EAAK,SAEnB,GAAuB,IAAnByoO,EAAQ/8Y,OAAc,CAC/B4yK,EAAI3pG,MAAO,EACX3kD,EAAKg5X,gBAAiB,EACtB,IAAOC,EAAcj5X,EAAKk5X,YAAYT,GAA/BQ,WACPj5X,EAAKm5X,WAAaF,EAAapjN,EAAM16C,MAAMn7I,GAE/C,EAEQggB,EAAAA,YAAc,WACpBA,EAAK44X,eAAgB,EACrB54X,EAAK84X,YAAa,EAClB94X,EAAKg5X,gBAAiB,EACtBh5X,EAAK4nN,YAAc,KACnB5nN,EAAKo5X,aAAajuY,GACd6U,EAAKo4X,aAAcxrU,aAAe5sD,EAAKq4X,eAAgBl9P,MAAMn7I,EACjEggB,EAAKo4X,aAAczzU,MAAO,CAC5B,EAjcE3kD,EAAKq5X,cAAgBzjN,EAASyjN,cAC9Br5X,EAAKq5X,cAAc/iN,GAAG3B,SAAU,EAAK,CACvC,CAioBC,OAjoBAtnL,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,mBAAA/D,MAAAA,WAAA,mBAED,oFACwB,OAAtB42X,KAAsB/lW,EAAAA,KAAAA,EAGZlzB,UAAUo2L,GAAIgjN,eAAgB,eAAgB,CAClDC,iBAAkB,CAAC,YACnBC,iBAAkB,CAAC,cAAe,oBAClCC,WAAY31Y,KAAKg+D,QAAU,CAAC9qD,KAAMlT,KAAKg+D,cAAW5zD,IAClD,OAE+C,OAP/Cq7L,EAAO,OAObzlM,KAAKu1Y,cAAc/iN,GAAGq1C,sBAAsB,SAASv4M,EAAAA,KAAAA,EAE/CtvB,KAAKu1Y,cAAc/iN,GAAG01C,WAAWziC,GAAQ,OAEA,OAA/CzlM,KAAKu1Y,cAAc/iN,GAAG60C,kBAAmB,EAAM,kBAExC5hC,GAAO,gDACf,kDAnBAhnM,IAqBD,CAAA+D,IAAAA,iBAAAutB,IAGA,WACE,OAAO/vB,KAAK41Y,eACd,GAEA,CAAApzY,IAAAA,uBAAA/D,MAAAA,WAAA,mBAIA,8EAE0B,OAF1B63J,EAAAA,KAAAA,EAEI++N,KAAsB/+N,EAAAA,KAAAA,EACTl6J,UAAUo2L,GAAI0hM,mBAAmB,gBAAe,+CAIhB,OAJgB59N,EAAAA,KAAAA,EAAAA,EAAAA,GAAAA,EAAAA,MAAAA,GAE7DviJ,QAAQk/C,KAAK,uCACbl/C,QAAQk/C,KAAK,EAAD,IACZl/C,QAAQk/C,KAAK,gCAAgC,mBACtC,GAAK,yDAEf,kDAdDx0D,IAgBA,CAAA+D,IAAAA,UAAA/D,MAAAA,WAAA,mBAGA,WAAcszL,GAAiB,MAAA8jN,EAAAC,EAAAC,EAAAC,EAAA/hP,EAAAqa,EAAA,OAAA2nO,EAAAA,UAAA,iEAY7B,OAZ+BjF,EAAAA,EAAAA,OAAAA,QAAAA,IAAAA,EAAAA,IAAAA,EAAAA,GAE3BhxY,KAAKgnO,cACPjzN,QAAQk/C,KAAK,sDAGX4iV,EAAwB,IAAIvlW,SAAc,SAACG,EAASylW,GACtDz0U,uBAAsB,kBAAMhxB,GAAS,GACvC,IAEAshJ,EAAMokN,uBAAsB,GAC5BpkN,EAAMqkN,cACNt1O,EAAAA,KAAAA,EACM+0O,EAAqB,OAmB1B,OAhBD71Y,KAAK41Y,gBAAkB7jN,EACvB/xL,KAAKg+D,QAAU+zH,EAAMrwL,QAAQ0mE,WAAY0hD,cAAc,gBAEzB,IAA1BknR,IACFhxY,KAAK+wY,QAAU,IAAIkB,GAAiBjyY,KAAKu1Y,eAEzCv1Y,KAAK+wY,QAAQntY,iBAAiB,mBAAmB,WAC/C,GAAK+qE,EAAKq4J,cAAgC,MAAhBr4J,EAAKoiU,QAA/B,CAIA,IAAMh/M,EAAQpjH,EAAK4lU,eACnBxiN,EAAM3lK,IAAIuiD,EAAKoiU,SAEfh/M,EAAM3Z,YAAczpG,EAAKoiU,QAAQ34N,YACnC,KACDtX,EAAAA,KAAAA,GAE4B9gK,KAAKq2Y,mBAAkB,QAUT,OAVrCP,EAAiB,EAAH,MAELlyY,iBAAiB,OAAO,WACrC+qE,EAAK2nU,oBACP,GAAG,CAACrjB,MAAM,KAEJ8iB,EAAahkN,EAAMrwL,QAAQ0mE,WAAY0hD,cACtB,+BACZ3pD,UAAU/zC,IAAI,WACzB2pX,EAAWnyY,iBAAiB,QAAS5D,KAAKu2Y,iCAC1Cv2Y,KAAKw2Y,yBAA2BT,EAAWj1O,EAAAA,KAAAA,GAEdg1O,EAAevsK,sBAAsB,UAAS,QAArEysK,EAAiB,EAAH,KAEpBh2Y,KAAKy2Y,UAAW,EAChBz2Y,KAAKo/P,OAAS,EACdp/P,KAAKqjG,aAAc,EAEnBrjG,KAAK02Y,kBAAoB3kN,EAAM4kN,IAC/B32Y,KAAK42Y,QAAU7kN,EAAM4kN,IACrB32Y,KAAK62Y,UAAY,EAEjB9kN,EAAMnyH,WAAa,KAEnB5/D,KAAK82Y,mBAAqB/kN,EAAMglN,gBAChChlN,EAAMilN,mBAAmB,KAEzBh3Y,KAAKi3Y,UAAUv7O,KAAKq2B,EAAMmlN,aAE1BnlN,EAAMrwL,QAAQkC,iBAAiB,OAAQ5D,KAAKm3Y,eAEtCljP,EApMY,GAoMch3J,KAAK00J,GAAK,IACpC2c,GAA2B,IAArBtuK,KAAKw0Y,iBACbpqY,EACA,IAAIgtY,MACA,IAAIC,SAAS,EAAG,EAAG,GACnB,CAACn7Y,EAAG,EAAGmL,GAAIpK,KAAKm3J,IAAIH,GAAU3sJ,GAAIrK,KAAKk3J,IAAIF,KACnD6hP,EACK1hB,qBACA,CAACjQ,MAAO6xB,EAAgBsB,UAAWhpO,IAAO59H,MAAK,SAAA6mW,GAC9C5oU,EAAK6oU,iBAAmBD,CAC1B,IAEJv3Y,KAAK81Y,eAAiBA,EACtB91Y,KAAKs0Y,aACD,IAAId,GAAazhN,EAAO/xL,KAAKw0Y,YAAc,OAAS,UACxDx0Y,KAAKy3Y,mBAAoB,EAEzBz3Y,KAAK03Y,SAAWxmV,YAAYtxD,MAC5BI,KAAKu+B,cAAc,CAAC35B,KAAM,SAAU+5F,OAAQs1S,KAA2B,iDACxE,mDAvFDx1Y,IAyFA,CAAA+D,IAAAA,iBAAA/D,MAAAA,WAAA,mBAGA,8FACOuB,KAAKgnO,aAAc,CAAFx9D,EAAAA,KAAAA,EAAA,uCAMpB,OAFImuO,EAAiB,IAAIrnW,SAAQ,SAACG,GAClC++B,EAAKooU,eAAiBnnW,CACxB,IAAE+4H,EAAAA,KAAAA,EAAAA,EAAAA,KAAAA,EAGMxpK,KAAK81Y,eAAgB/qW,MAAK,cAAAy+H,EAAAA,KAAAA,EAC1BmuO,EAAc,OAAAnuO,EAAAA,KAAAA,GAAA,cAAAA,EAAAA,KAAAA,GAAAA,EAAAA,GAAAA,EAAAA,MAAAA,GAEpBz1J,QAAQk/C,KAAK,8CACbl/C,QAAQk/C,KAAK,EAAD,IAEZjzD,KAAKs2Y,qBAAqB,0DAE7B,kDArBD73Y,IAuBA,CAAA+D,IAAAA,eAAAutB,IAGA,WACE,OAA8B,MAAvB/vB,KAAKu0Y,cACd,GAAC,CAAA/xY,IAAAA,SAAAutB,IAED,WACE,OAAO/vB,KAAKi3Y,SACd,GAAC,CAAAz0Y,IAAAA,eAAA/D,MAED,WACE,IAAMszL,EAAQ/xL,KAAKu0Y,eACnB,GAAa,MAATxiN,EAAe,CACjB,IAAMxwL,EAASwwL,EAAMmlN,YACrBl3Y,KAAKi3Y,UAAUv7O,KAAKn6J,GAChBvB,KAAKw0Y,YAGPjzY,EAAO+F,EAAIyqL,EAAM/mB,YAAY9/H,IAAI5jC,EAGjC/F,EAAO8F,EAAI0qL,EAAM/mB,YAAY9/H,IAAI7jC,EAEnC0qL,EAAM8lN,UAAUt2Y,EAAOrF,EAAGqF,EAAO8F,EAAG9F,EAAO+F,GAE/C,GAAC,CAAA9E,IAAAA,qBAAA/D,MAUO,WACN,IAAMgnM,EAAUzlM,KAAK81Y,eACN,MAAXrwM,IACFA,EAAQvtK,oBAAoB,cAAel4B,KAAK83Y,eAChDryM,EAAQvtK,oBAAoB,YAAal4B,KAAK+3Y,aAC9C/3Y,KAAK81Y,eAAiB,MAGxB,IAAM/jN,EAAQ/xL,KAAKu0Y,eAEnB,GADAv0Y,KAAK41Y,gBAAkB,KACV,MAAT7jN,EAAe,CACjB,IAAOrwL,EAAWqwL,EAAXrwL,QAEa,MAAhB1B,KAAK+wY,UACPh/M,EAAMnxH,OAAO5gE,KAAK+wY,SACjB/wY,KAAK+wY,QAAgBrvO,UACtB1hK,KAAK+wY,QAAU,MAGjBh/M,EAAMxyH,SAAStwC,IAAI,EAAG,EAAG,GACzB8iK,EAAM16C,MAAMpoH,IAAI,EAAG,EAAG,GACtB8iK,EAAMimN,gBAAgB,GACtB,IAAMrB,EAAM32Y,KAAK02Y,kBACN,MAAPC,IACF5kN,EAAM4kN,IAAMA,GAEd,IAAMxqL,EAAYnsN,KAAK82Y,mBACN,MAAb3qL,GACFp6B,EAAMilN,mBAAmB7qL,GAE3Bp6B,EAAMkmN,wBACDv2Y,EAAgBw0X,IAChBx0X,EAAgBy0X,KACrB,IAAMzrN,EAAQ1qK,KAAKi3Y,UACnBllN,EAAM8lN,UAAUntO,EAAMxuK,EAAGwuK,EAAMrjK,EAAGqjK,EAAMpjK,GACxCyqL,EAAMmmN,SAAW,KAEjBnmN,EAAMrwL,QAAQw2B,oBAAoB,OAAQl4B,KAAKm3Y,eAC/CplN,EAAMomN,eAAe,GACrBz2Y,EAAQ+nX,cAAc,gBACtB/nX,EAAQ+nX,cAAc,kBACtB/nX,EAAQ02Y,IAAW12Y,EAAQ+4G,yBAI7Bz6G,KAAK8xL,SAAS1jL,OAAS,EAEvB,IAAM2nY,EAAa/1Y,KAAKw2Y,yBACN,MAAdT,IACFA,EAAW51U,UAAUS,OAAO,WAC5Bm1U,EAAW79W,oBACP,QAASl4B,KAAKu2Y,iCAClBv2Y,KAAKw2Y,yBAA2B,MAGlC,IAAM/B,EAAYz0Y,KAAK00Y,uBACN,MAAbD,IACFA,EAAU4D,SACVr4Y,KAAK00Y,uBAAyB,MAGhC,IAAM4D,EAAmBt4Y,KAAKw3Y,iBACN,MAApBc,IACFA,EAAiBD,SACjBr4Y,KAAKw3Y,iBAAmB,MAGD,MAArBx3Y,KAAKs0Y,eACPt0Y,KAAKs0Y,aAAc5yO,UACnB1hK,KAAKs0Y,aAAe,MAGtBt0Y,KAAK03Y,SAAW,KAChB13Y,KAAK02Y,kBAAoB,KACzB12Y,KAAK82Y,mBAAqB,KAC1B92Y,KAAKo2L,MAAQ,KACbp2L,KAAK8jO,YAAc,KACnB9jO,KAAKg+D,QAAU,KAEY,MAAvBh+D,KAAK43Y,gBACP53Y,KAAK43Y,iBAGP53Y,KAAKu+B,cAAc,CAAC35B,KAAM,SAAU+5F,OAAQs1S,IAC9C,GAAC,CAAAzxY,IAAAA,aAAA/D,MAEO,SAAW8iC,GACjB,IAAMwwJ,EAAQ/xL,KAAKu0Y,eACb/hN,EAAKxyL,KAAKu1Y,cAAc/iN,GAE9BA,EAAGm3C,aAAa/hE,IAChBmqB,EAAMmmN,SAAW1lN,EAAGw4C,YACpB,IAAOhlG,EAAY+rD,EAAMi5C,YAAY/iE,YAA9BjiC,SASP,GARA+rD,EAAMomN,eAAel7Y,KAAK44J,MAAM7vB,EAAS,GAAIA,EAAS,KAEjDhmI,KAAKqjG,cACRrjG,KAAKu4Y,iBACLv4Y,KAAKqjG,aAAc,GAIjB9hE,EAAKi3W,sBAAwBj3W,EAAKk3W,yBAA0B,CAC9D,IAAMphQ,EAAQ91G,EAAKk3W,yBACnBl3W,EAAKi3W,qBAAqBv7Y,KAAKC,IAAIm6I,EAtXd,MAwXvB,IACM+pB,EADQphK,KAAK81Y,eAAgB7nL,YAAY6a,UACvB/W,YAAYxwL,GACpCvhC,KAAKu1Y,cAAcvjK,YACf5wE,EAASllK,EAAGklK,EAAS/5J,EAAG+5J,EAASjzJ,MAAOizJ,EAAShzJ,OACvD,GAAC,CAAA5L,IAAAA,iBAAA/D,MAEO,WAAc,WACdszL,EAAQ/xL,KAAKu0Y,eACZh1U,EAAqBwyH,EAArBxyH,SAAU79D,EAAWqwL,EAAXrwL,QACXw2Y,EAAWnmN,EAAMi5C,YAEvB,EAAwBhrO,KAAKg+D,QAASy8C,wBAA/BtsG,EAAK,EAALA,MAAOC,EAAM,EAANA,OACd2jL,EAAM+/C,QAAQ3jO,EAAOC,GAErB8pY,EAASlwO,wBAAwBtM,KAAKw8O,EAASnwO,kBAAkBj4B,SAEjE,MACKpuI,EACIg3Y,iBAFFj/O,EAAK,EAALA,MAAOyP,EAAM,EAANA,OAIRyvO,EAAkBT,EAASU,kBAAkB5sL,IACnDj6B,EAAM4kN,IAAM15Y,KAAK44J,OAAO8iP,EAAgBz8Y,GAAIy8Y,EAAgBrxY,GAAKmyJ,EACjEz5J,KAAK42Y,QAAU7kN,EAAM4kN,IAErBp3U,EAASm8F,KAAKw8O,EAAS34U,UAClBnzC,IAAIusX,EAAgBpjP,eAAe2T,IAExClpK,KAAK64Y,eACL,IAAMt3Y,EAASwwL,EAAMmlN,YACrB33U,EAASnzC,IAAI7qB,GAAQunK,IAAI9oK,KAAKi3Y,WAE9Bj3Y,KAAKs1Y,aAAa55O,KAAKn8F,GAEvBwyH,EAAMokN,uBAAsB,GAE5B,IAAO1wM,EAAWzlM,KAAKo2L,MAAhBqP,QACPA,EAAQ7hM,iBAAiB,cAAe5D,KAAK83Y,eAC7CryM,EAAQ7hM,iBAAiB,YAAa5D,KAAK+3Y,aAC3CtyM,EACKqzM,sCACA,CAACC,QAAS,wBAAyBroW,MAAK,SAAA6mW,GACvCntR,EAAKsqR,uBAAyB6C,CAChC,GACN,GAAC,CAAA/0Y,IAAAA,mBAAA/D,MAEO,WACN,IAAOytK,EAAQlsK,KAAK8jO,YAAa+wK,QAA1B3oO,KACHn2J,EAAW/V,KAAKs0Y,aAAc0E,eAC9Bh5Y,KAAKu0Y,eAAiBroO,EAAK,GAAIA,EAAK,IACxC,OAAgB,MAAZn2J,IACFi2M,GAAQtwD,KAAK3lJ,GAAU+yJ,IAAI9oK,KAAKu0Y,eAAgBvpK,YAAYzrK,UACxDysJ,GAAQp0N,SAzaG,IA0aN,KAEJme,CACT,GAAC,CAAAvT,IAAAA,cAAA/D,MAEO,SAAYq1Y,GAClB,IAAMmF,EAAWj5Y,KAAKu1Y,cAAc/iN,GAAGs1C,oBACjChC,EAAOguK,EAAUvvK,QAAQ00K,GAC/B,GAAY,MAARnzK,EACF,OAAO,KAGT,IAAMozK,EAAYngP,GAAQY,UAAUmsE,EAAKxtG,UAAUohC,QAQnD,OANyB,IAArB15J,KAAKw0Y,cAEPx0Y,KAAK42Y,QAAU35Y,KAAK44J,MAAMqjP,EAAUlzQ,SAAS,GAAIkzQ,EAAUlzQ,SAAS,KAI/DkzQ,EAAUlzQ,SAAS,GAAK,MAAShmI,KAAKw0Y,YACzCL,GAAYv9N,sBAAsBsiO,GAClC,IACN,GAAC,CAAA12Y,IAAAA,cAAA/D,MAEM,SAAY23L,GACjB,IAAMq+M,EAAYz0Y,KAAKw3Y,iBACvB,GAAiB,MAAb/C,EAAJ,CAIA,IAAM0E,EAAiB/iN,EAAMgjN,kBAAkB3E,GAC/C,GAA6B,GAAzB0E,EAAevhZ,OAAnB,CAIA,IAAM28S,EAAM4kG,EAAe,GACrBE,EAAWr5Y,KAAKs5Y,YAAY/kG,GAClB,MAAZ8kG,IAIJr5Y,KAAKs0Y,aAAczzU,MAAO,EAIrB7gE,KAAK80Y,gBACJ90Y,KAAKw0Y,YACPx0Y,KAAKs1Y,aAAa55O,KAAK29O,GAEvBr5Y,KAAKs1Y,aAAajuY,EAAIgyY,EAAShyY,GAInCotY,EAAU4D,SACVr4Y,KAAKw3Y,iBAAmB,KACxBx3Y,KAAKu+B,cAAc,CAAC35B,KAAM,SAAU+5F,OAAQs1S,OAC9C,GAAC,CAAAzxY,IAAAA,cAAA/D,MA2CO,SAAYk2Y,GAElB,IAAM4E,EAAY5E,EAAQ,GAAG7wK,YAAY+wK,QAAS3oO,KAC5CstO,EAAY7E,EAAQ,GAAG7wK,YAAY+wK,QAAS3oO,KAC5C9lI,EAASozW,EAAU,GAAKD,EAAU,GAClCjzW,EAASkzW,EAAU,GAAKD,EAAU,GAClC3jP,EAAQ34J,KAAK44J,MAAMvvH,EAAQF,GAC7BqzW,EAAWz5Y,KAAKi1Y,UAAYr/O,EAOhC,OANI6jP,EAAWx8Y,KAAK00J,GAClB8nP,GAAY,EAAIx8Y,KAAK00J,GACZ8nP,GAAYx8Y,KAAK00J,KAC1B8nP,GAAY,EAAIx8Y,KAAK00J,IAEvB3xJ,KAAKi1Y,UAAYr/O,EACV,CACLu/O,WAAYl4Y,KAAK04J,KAAKvvH,EAASA,EAASE,EAASA,GACjDmzW,SAAUA,EAEd,GAAC,CAAAj3Y,IAAAA,eAAA/D,MAEO,SAAa23L,GAAc,WAC3Bq+M,EAAYz0Y,KAAK00Y,uBACvB,GAAiB,MAAbD,IAGCz0Y,KAAK80Y,eAAkB90Y,KAAKk1Y,gBAAmBl1Y,KAAKg1Y,YAAzD,CAGA,IAAML,EAAUv+M,EAAMw+M,mCAAmCH,GACnD1iN,EAAQ/xL,KAAKu0Y,eACbl9P,EAAQ06C,EAAM16C,MAAMn7I,EAI1B,GAAI8D,KAAKk1Y,eACP,GAAIP,EAAQ/8Y,OAAS,EAGnBoI,KAAKk1Y,gBAAiB,MACjB,CACL,MAA+Bl1Y,KAAKo1Y,YAAYT,GAAzCQ,EAAU,EAAVA,WAAYsE,EAAQ,EAARA,SAInB,IAHyB,IAArBz5Y,KAAKw0Y,cACPx0Y,KAAK42Y,SAAW6C,GAEd1nN,EAAM2nN,SAAU,CAClB,IAAMriQ,EAAQ89P,EAAan1Y,KAAKq1Y,WAChCr1Y,KAAK62Y,UACAx/P,EAnkBS,KAmkBkBA,EAlkBnB,kBAkkB6C,EAAIA,QAI7D,GAAuB,IAAnBs9P,EAAQ/8Y,OAWnB,GAAIoI,KAAKg1Y,WAAY,CACnB,IAAMp/O,EA1lBU,IA0lBF51J,KAAK8jO,YAAa+wK,QAAS3oO,KAAK,GAC9ClsK,KAAK42Y,SAAWhhP,EAAQ51J,KAAKi1Y,UAC7Bj1Y,KAAKi1Y,UAAYr/O,OACR51J,KAAK80Y,eACdH,EAAQpyY,SAAQ,SAAAo3Y,GACd,GAAIA,EAAO71K,cAAgB34G,EAAK24G,YAAhC,CAIA,IAAIywE,EAAM,KAOV,GANIolG,EAAOjwH,QAAQ9xR,OAAS,IAC1B28S,EAAMppL,EAAKmuR,YAAYK,EAAOjwH,QAAQ,KAE7B,MAAP6qB,IACFA,EAAMppL,EAAKyuR,oBAEF,MAAPrlG,EAAJ,CAMA,GAFAppL,EAAKmqR,aAAaxsO,IAAI39C,EAAK4pR,mBAEF,IAArB5pR,EAAKqpR,YAAuB,CAC9B,IAAMzqW,EAASwqQ,EAAIltS,EAAI8jH,EAAK4pR,iBAAiB1tY,EAG7C,GAAI0iC,EAAS,EAAG,CACdohF,EAAKmpR,aAAcxrU,aAAe/+B,EAASstG,EAC3ClsB,EAAKopR,eAAgByD,gBAAgBjuW,GAErC,IAAMupM,EAAiBtnB,GAAQtwD,KAAKq2B,EAAMi5C,YAAYzrK,UAChDw2F,GAAShsH,GAAUupM,EAAejsO,EAAIktS,EAAIltS,GAChDisO,EAAe/9E,eAAeQ,GAC9Bw+I,EAAIh/I,eAAe,EAAIQ,GAAO3pI,IAAIknN,IAItCnoH,EAAKmqR,aAAalpX,IAAImoR,GACtBppL,EAAK4pR,iBAAiBr5O,KAAK64I,IAC7B,QAnDK,CAGLv0S,KAAK80Y,eAAgB,EACrB90Y,KAAKg1Y,YAAa,EAClBh1Y,KAAKk1Y,gBAAiB,EACtB,IAAOC,EAAcn1Y,KAAKo1Y,YAAYT,GAA/BQ,WACPn1Y,KAAKq1Y,WAAaF,EAAa99P,GA8CnC,GAAC,CAAA70I,IAAAA,YAAA/D,MAEO,SAAUrB,GAChB,IAAM20L,EAAQ/xL,KAAKu0Y,eACZh1U,EAAiBwyH,EAAjBxyH,SAAUo3U,EAAO5kN,EAAP4kN,IACXkD,EAAiB9nN,EAAM9L,eAAe/c,OACtC4wO,EAAO95Y,KAAKs1Y,aACZyE,EAAWhoN,EAAM16C,MAAMn7I,EACvBsuK,EAAMxqK,KAAKs0Y,aAEjB,IAAKwF,EAAKttO,OAAOjtG,IAAav/D,KAAK62Y,YAAckD,EAAU,CACzD,IAAK79Y,EAAWqjE,EAAXrjE,EAAGmL,EAAQk4D,EAARl4D,EAAGC,EAAKi4D,EAALj4D,EACXpL,EAAI8D,KAAKg6Y,QAAQ12O,OAAOpnK,EAAG49Y,EAAK59Y,EAAGkB,EAAOy8Y,GAC1CxyY,EAAIrH,KAAKi6Y,QAAQ32O,OAAOj8J,EAAGyyY,EAAKzyY,EAAGjK,EAAOy8Y,GAC1CvyY,EAAItH,KAAKk6Y,QAAQ52O,OAAOh8J,EAAGwyY,EAAKxyY,EAAGlK,EAAOy8Y,GAC1Ct6U,EAAStwC,IAAI/yB,EAAGmL,EAAGC,GAEnB,IAAM6yY,EACFn6Y,KAAKo6Y,YAAY92O,OAAOy2O,EAAU/5Y,KAAK62Y,UAAWz5Y,EAAO,GAG7D,GAFA20L,EAAM16C,MAAMpoH,IAAIkrX,EAAUA,EAAUA,IAE/Bn6Y,KAAK80Y,cAAe,CACvB,IAAM/qW,EAAS+vW,EAAKzyY,EAAIA,EACpBrH,KAAKy3Y,oBAA0C,IAArBz3Y,KAAKw0Y,aACjChqO,EAAI1hG,aAAe/+B,EAASowW,EAC5BpoN,EAAMimN,gBAAgBjuW,IACF,IAAXA,IACT/pC,KAAKy3Y,mBAAoB,EACzBjtO,EAAI3pG,MAAO,EACXkxH,EAAMilN,mBAjqBY,MAqqBxBxsO,EAAI6vO,cAAcj9Y,GAClB20L,EAAM8mN,aAAaz7Y,GAEnB20L,EAAM4kN,IAAM32Y,KAAKs6Y,UAAUh3O,OAAOqzO,EAAK32Y,KAAK42Y,QAASx5Y,EAAOH,KAAK00J,GACnE,GAEA,CAAAnvJ,IAAAA,eAAA/D,MAGO,SAAawpC,EAAcmuJ,GAChCp2L,KAAKo2L,MAAQA,IACXp2L,KAAKo/P,OACP,IAAM65I,EAAWj5Y,KAAKu1Y,cAAc/iN,GAAGs1C,oBACjChC,EAAO1vC,EAAMi1C,cAAc4tK,GAErB,MAARnzK,IAAkC,IAAlB9lO,KAAKy2Y,UAAqBz2Y,KAAKo/P,OAvrBnC,KAwrBdp/P,KAAKy2Y,UAAW,EAChBz2Y,KAAKu+B,cAAc,CAAC35B,KAAM,WAAY+5F,OAAQu1S,MAGhD,IAAMniN,EAAQ/xL,KAAKu0Y,eACnB,GAAY,MAARzuK,GAAyB,MAAT/zC,GAAkBA,EAAMrwL,QAAQ4qE,OAApD,EAKsB,IAAlBtsE,KAAKy2Y,WACPz2Y,KAAKy2Y,UAAW,EAChBz2Y,KAAKu+B,cAAc,CAAC35B,KAAM,WAAY+5F,OAAQu1S,MAOhD,IAC6BzvU,EADzB81U,GAAuB,EAAK,IACbz0K,EAAKwF,OAAK,IAA7B,IAAK,EAAL,qBAA+B,KAApB/pM,EAAI,QAGb,GAFAvhC,KAAKw6Y,WAAWj5W,GAEZg5W,EAAa,CACfv6Y,KAAKy6Y,YAAYrkN,GAEjBp2L,KAAKwpY,aAAapzM,GAElB,IAAMh5L,EAAQ6qC,EAAOjoC,KAAK03Y,SAC1B13Y,KAAK06Y,UAAUt9Y,GACf4C,KAAK8xL,SAAS6oN,UAAU5oN,EAAO9pJ,EAAM7qC,GACrC4C,KAAK03Y,SAAWzvW,EAEhB8pJ,EAAM6oN,aAAa56Y,KAAKu1Y,eAG1Bv1Y,KAAKu1Y,cAAc/vY,OAAOusL,EAAOA,EAAMi5C,aACvCuvK,GAAc,EACf,UAAA71U,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,OAhCC1kE,KAAKu1Y,cAAcp1Y,OAiCvB,KAAC,EA9qBqB,CAAQmxJ,IC9BnBupP,GAAQ,WACnB,WAAY/oN,GAAkBrnL,EAAAA,KAAAA,GAE5BqnL,EAASyjN,cAAchhY,MAAQ,CAACkwM,mBAAmB,GAInDn0K,QAAQG,UAAUC,MAAK,WACrBv7B,KAAKopB,cAAc,IAAI43E,YACnB,8BAA+B,CAC7B30E,OAAQ,CACNswJ,SAAAA,EACA+gH,MAAO,CACLtkH,eAAAA,GACAxwB,QAAAA,GACAmtB,KAAAA,GACAqsD,MAAAA,GACAhgD,cAAAA,GACAqW,mBAAAA,GACA5sC,kBAAAA,OAIZ,GACF,CAUC,OAVAz3J,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,WAAA/D,MAED,SAASszL,GACP58K,KAAKopB,cAAc,IAAI43E,YACnB,iCAAkC,CAAC30E,OAAQ,CAACuwJ,MAAAA,KAClD,GAAC,CAAAvvL,IAAAA,cAAA/D,MAED,SAAYszL,GACV58K,KAAKopB,cAAc,IAAI43E,YACnB,mCAAoC,CAAC30E,OAAQ,CAACuwJ,MAAAA,KACpD,KAAC,EAlCkB,GCierB,SAAS7wL,GAAOM,GAEf,IAAMs5Y,EAAe,IAAI39W,IACnB49W,EAAc,IAAI59W,IAElBj8B,EAAQM,EAAON,QA8BrB,OA5BA85Y,GAAkBx5Y,EAAQN,GAAO,SAAW+5Y,EAAYC,GAEvDJ,EAAa7rX,IAAKisX,EAAYD,GAC9BF,EAAY9rX,IAAKgsX,EAAYC,EAE9B,IAEAh6Y,EAAMi2K,UAAU,SAAW19J,GAE1B,GAAOA,EAAKg/J,cAAZ,CAEA,IAAM0iO,EAAa1hY,EACb2hY,EAAaN,EAAa/qX,IAAKtW,GAC/B4hY,EAAcD,EAAWxiO,SAASgvC,MAExCuzL,EAAWviO,SAAWwiO,EAAWxiO,SAAS13K,QAC1Ci6Y,EAAWxiO,WAAWjd,KAAM0/O,EAAWziO,YAEvCwiO,EAAWviO,SAASgvC,MAAQyzL,EAAY9+Y,KAAK,SAAWigP,GAEvD,OAAOu+J,EAAYhrX,IAAKysN,EAEzB,IAEA2+J,EAAWvnY,KAAMunY,EAAWviO,SAAUuiO,EAAWxiO,WAff,CAiBnC,IAEOz3K,CAER,CAKA,SAAS85Y,GAAkBh/Y,EAAGuK,EAAG4xC,GAEhCA,EAAUn8C,EAAGuK,GAEb,IAAM,IAAI7J,EAAI,EAAGA,EAAIV,EAAE4hB,SAAShmB,OAAQ8E,IAEvCs+Y,GAAkBh/Y,EAAE4hB,SAAUlhB,GAAK6J,EAAEqX,SAAUlhB,GAAKy7C,EAItD,CC9iBO,IAAMmjW,GAAYx6Y,OAAO,YAMnBy6Y,GAAWz6Y,OAAO,WAClB06Y,GAAgB16Y,OAAO,gBACvB26Y,GAAS36Y,OAAO,SAehBglY,GAAY,WAmEvB,WAAYM,GAA0B37X,EAAAA,KAAAA,GACpCzK,KAAKw7Y,IAAiBpV,CACxB,CAlCC,OAlCD78X,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,SAAAutB,IAsCA,WACE,OAAO/vB,KAAKw7Y,IAAe1tT,MAC7B,GAAC,CAAAtrF,IAAAA,aAAAutB,IAED,WACE,OAAO/vB,KAAKw7Y,IAAeplO,UAC7B,GAAC,CAAA5zK,IAAAA,QAAAutB,IAED,WACE,OAAO/vB,KAAKw7Y,IAAezpN,KAC7B,GAAC,CAAAvvL,IAAAA,SAAAutB,IAED,WACE,OAAO/vB,KAAKw7Y,IAAepiF,MAC7B,GAAC,CAAA52T,IAAAA,UAAAutB,IAED,WACE,OAAO/vB,KAAKw7Y,IAAe74K,OAC7B,GAAC,CAAAngO,IAAAA,QAAAutB,IAED,WACE,OAAO/vB,KAAKw7Y,IAAe9tF,KAC7B,GAAC,CAAAlrT,IAAAA,WAAAutB,IAED,WACE,OAAO/vB,KAAKw7Y,IAAev8O,QAC7B,GAMA,CAAAz8J,IAAAA,QAAA/D,MAGA,WAIE,OAAO,IAAIi9Y,EAHqB17Y,KAAKma,aAClBna,KAAKy7Y,MAG1B,GAEA,CAAAj5Y,IAAAA,UAAA/D,MAIA,WACEuB,KAAKo5T,OAAO72T,SAAQ,SAACwvL,GACnBA,EAAM5a,UAAS,SAACh1K,GACd,GAAMA,EAAgBk2K,OAAtB,CAGA,IAAMgb,EAAOlxL,GAETxF,MAAM0E,QAAQgyL,EAAKxa,UAAYwa,EAAKxa,SAAW,CAACwa,EAAKxa,WAC/Ct2K,SAAQ,SAAAs2K,GAEhB,IAAK,IAAM/rJ,KAAgB+rJ,EAAU,CACnC,IAAMxX,EAAWwX,EAAiB/rJ,GAClC,GAAIu0I,aAAmBtD,GAAS,CAC9B,IAAM5kB,EAAQkoB,EAAQ7/J,OAAOkiC,KACV,MAAfy1G,EAAMx3E,OACRw3E,EAAMx3E,QAER0/F,EAAQK,WAGZmX,EAASnX,SACX,IACA2xB,EAAKvoB,SAASpJ,UAChB,GACF,GACF,GAEA,CAAAl/J,IAGUi5Y,GAAMh9Y,MAAP,WACP,IAAM+C,EAASxB,KAAKw7Y,IAGdzpN,EAAQ4pN,GAAoB37Y,KAAK+xL,OACvC6pN,GAAsB7pN,EAAO/xL,KAAK+xL,OAClC,IAAMqnI,EAAS,CAACrnI,GACV9yB,EAAWz9J,EAAOy9J,SAAU1gK,OAAAA,OAAAA,CAAAA,EAAKiD,EAAOy9J,UAAY,CAAC,EAC3D,OAAO,OAAP,wBAAWz9J,GAAM,CAAEuwL,MAAAA,EAAOqnI,OAAAA,EAAQn6J,SAAAA,GACpC,IAAC,EAAAz8J,IAAAA,UAAA/D,MAvHD,SAAe+C,GACb,GAAoB,MAAhBA,EAAOuwL,MACT,MAAM,IAAIj0L,MAAM,+BAGlB,GAAK0D,EAAwB85Y,IAC3B,OAAO95Y,EAGT,IAAMq6Y,EAAW77Y,KAAKu7Y,IAAU/5Y,GAMhC,OAFAq6Y,EAASP,KAAa,EAEfO,CACT,GAEA,CAAAr5Y,IAIiB+4Y,GAAQ98Y,MAAf,SAAiB+C,GAGzB,IAAOuwL,EAASvwL,EAATuwL,MACDqnI,EAAS,CAACrnI,GAEhB,OAAO,OAAP,wBAAWvwL,GAAM,CAAEuwL,MAAAA,EAAOqnI,OAAAA,GAC5B,KAAC,EAnCsB,GAoInBwiF,GAAwB,SAACh2O,EAAezzJ,GAC5C2pY,GAAal2O,EAAKzzJ,GAAK,SAACyzJ,EAAKzzJ,QACW/H,IAAlC+H,EAAI8sJ,SAASqmO,mBACf1/N,EAAI3G,SAASqmO,iBAAmB,IAAInoW,IAAIhrB,EAAI8sJ,SAASqmO,wBAEtBl7X,IAA7B+H,EAAI8sJ,SAASkxO,cACfvqO,EAAI3G,SAASkxO,YAAch+X,EAAI8sJ,SAASkxO,kBAEJ/lY,IAAlC+H,EAAI8sJ,SAAS2xO,mBACfhrO,EAAI3G,SAAS2xO,iBAAmBz+X,EAAI8sJ,SAAS2xO,iBAEjD,GACF,EAEMkL,GACF,SADEA,EACDC,EACAC,EACA7jW,GACCA,EAAS4jW,EAAMC,GAEf,IAAK,IAAIt/Y,EAAI,EAAGA,EAAIq/Y,EAAKn+X,SAAShmB,OAAQ8E,IACxCo/Y,EAAaC,EAAKn+X,SAASlhB,GAAIs/Y,EAAKp+X,SAASlhB,GAAIy7C,EAErD,ECxLE8jW,GAAan7Y,OAAO,aACpBo7Y,GAAQp7Y,OAAO,QACfq7Y,GAAkBr7Y,OAAO,kBACzBs7Y,GAAkBt7Y,OAAO,kBACzBu7Y,GAA8Bv7Y,OAAO,8BAErCw7Y,GAA8Bx7Y,OAAO,8BACrCy7Y,GAA2Bz7Y,OAAO,2BAW3B07Y,GAAoB,WAoN/B,WACIC,EAAsBrvF,EACtBsvF,EACAC,GAA2ClyY,EAAAA,KAAAA,GAC7CzK,KAAKi8Y,IAAcQ,EACnBz8Y,KAAKk8Y,IAAS9uF,EACdptT,KAAKm8Y,IAAmBQ,EACxB38Y,KAAKo8Y,IAAmBM,CAC1B,CA/CC,OA5KDnzY,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,YAAAutB,IAsLA,WACE,OAAO/vB,KAAKi8Y,GACd,GAEA,CAAAz5Y,IAAAA,OAAAutB,IAGA,WACE,OAAO/vB,KAAKk8Y,GACd,GAEA,CAAA15Y,IAAAA,iBAAAutB,IAMA,WACE,OAAO/vB,KAAKm8Y,GACd,GAEA,CAAA35Y,IAAAA,iBAAAutB,IAIA,WACE,OAAO/vB,KAAKo8Y,GACd,IAAC,EAAA55Y,IAAAA,OAAA/D,MAvMD,SACIg+Y,EACAG,GAEF,OAAoC,MAAhCA,EACK58Y,KAAKu8Y,IACRE,EAAWG,GAER58Y,KAAKs8Y,IAA6BG,EAE7C,GAAC,CAAAj6Y,IAEc85Y,GAA2B79Y,MAAlC,SAAoCg+Y,GAE1C,IAS+Ch4U,EATzC2oP,EAAOqvF,EAAU3uT,OAAO2uJ,KAExB87E,EACFkkF,EAAU3uT,OAAOyqO,aACfokF,EAA8C,IAAIx/W,IAElDkqU,EAAkB,CAACluW,KAAM,WACzB0jZ,EAAmB,CAACj4Y,KAAM,YAAagK,OAAQ,GAAG,IAE5B2pT,EAAa32T,QAAM,IAA/C,IAAK,EAAL,qBAAiD,KAAtCk7Y,EAAa,QAKlBA,aAAyBvhO,IACU,MAAnCg9I,EAAaxoS,IAAI+sX,KACfD,EAAiBjuY,MAAQ,IACL,MAAlBw+S,EAAKz1I,YACPy1I,EAAKz1I,UAAY,IAEnBklO,EAAiBjuY,MAAQw+S,EAAKz1I,UAAU//K,OACxCw1T,EAAKz1I,UAAU76K,KAAKuqW,IAGtBy1C,EAAc3jZ,KAAOkuW,EAAgBluW,KACrCo/T,EAAatpS,IAAI6tX,EAAe,CAACnlO,UAAWklO,EAAiBjuY,SAIjE,UAAA81D,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,KACsDI,EADtD,IAC0CyzP,GAAY,IAAtD,IAAK,EAAL,qBAAwD,oBAA5CwkF,EAAW,KAAEC,EAAY,KACnC,GAAIA,EAAc,CAChB,IAAMC,EAAkBF,EACxBE,EAAgBh+O,SAAWg+O,EAAgBh+O,UAAY,CAAC,EACxDg+O,EAAgBh+O,SAASs5J,aAAeykF,EAG1C,IAAK,IAAM14P,KAAW04P,EACpB,GAAe,MAAX14P,GAA+B,eAAZA,EAA0B,CAC/C,IAAM1/I,EAAO0/I,EAEP44P,GADe9vF,EAAKxoT,IAAS,IACFo4Y,EAAap4Y,IAC9C,GAAmB,MAAfs4Y,EAEF,SAGF,IAAIC,EAAeR,EAAe5sX,IAAImtX,GAElB,MAAhBC,IACFA,EAAe,IAAInxX,IACnB2wX,EAAe1tX,IAAIiuX,EAAaC,IAGlCA,EAAa/wX,IAAI2wX,IAGtB,UAAAh4U,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAED,OAAO,IAAIy3U,EACPC,EAAWrvF,EAAMmL,EAAcokF,EACrC,GAEA,CAAAn6Y,IAKe+5Y,GAAwB99Y,MAA/B,SACJ2+Y,EACAR,GAQF,IANA,IAAMS,EAAoBT,EAA6BH,UACjDa,EAAeV,EAA6BxvF,KAC5CmwF,EAAkBxvV,KAAK4yC,MAAM5yC,KAAKC,UAAUsvV,IAC5CE,EAAyD,IAAIrgX,IAC7DsgX,EAAmD,IAAItgX,IAEpDzgC,EAAI,EAAGA,EAAI2gZ,EAAkBjkF,OAAOxhU,OAAQ8E,IACnDsD,KAAKq8Y,IACDgB,EAAkBjkF,OAAO18T,GACzB0gZ,EAAehkF,OAAO18T,IACtB,SAACyF,EAA0Bu7Y,GACzB,IAAMC,EACFf,EAA6BF,eAAe3sX,IAAI5tB,GAEpD,GAAwB,MAApBw7Y,EAIJ,IAAK,IAAMr5P,KAAWq5P,EACpB,GAAe,MAAXr5P,GAA+B,eAAZA,EAA0B,CAC/C,IAAM1/I,EAAO0/I,EACP11I,EAAQ+uY,EAAiB/4Y,GACzB8iF,EAAe61T,EAAU34Y,GAAOgK,GAEhCkrT,EACF0jF,EAAoBztX,IAAI2tX,IAAgB,CAAC,EAC7C5jF,EAASl1T,GAAQgK,EACjB4uY,EAAoBvuX,IAAIyuX,EAAa5jF,GAErC,IAAM8jF,EACFH,EAAoB1tX,IAAI23D,IAAiB,IAAI17D,IACjD4xX,EAAaxxX,IAAIsxX,GAEjBD,EAAoBxuX,IAAIy4D,EAAck2T,GAG5C,IAGN,OAAO,IAAIpB,EACPY,EAAgBG,EAAWC,EAAqBC,EACtD,GAEA,CAAAj7Y,IAMe65Y,GAA2B59Y,MAAlC,SACJo/Y,EAAiBC,EAAiB3lW,IAInB,SAAXg/H,EAAYn7K,EAAqBuK,GAGrC,GAFA4xC,EAASn8C,EAAGuK,GAEPvK,EAAei7K,WAAY,CAC9B,GAAWj7K,EANWq8K,OAOpB,GAAI17K,MAAM0E,QAAQrF,EAAE68K,UAClB,IAAK,IAAIn8K,EAAI,EAAGA,EAAIV,EAAE68K,SAASjhL,SAAU8E,EACvCy6K,EACIn7K,EAAE68K,SAASn8K,GAAM6J,EAAesyK,SAAwBn8K,SAG9Dy6K,EAASn7K,EAAE68K,SAAWtyK,EAAesyK,UAIzC,IAAK,IAAIn8K,EAAI,EAAGA,EAAKV,EAAe4hB,SAAShmB,SAAU8E,EACrDy6K,EAAUn7K,EAAe4hB,SAASlhB,GAAK6J,EAAeqX,SAASlhB,IAGrE,CAEAy6K,CAAS0mO,EAAUC,EACrB,KAAC,EA7K8B,GCb3BC,GAAwBj9Y,OAAO,wBAWxBk9Y,GAAwB,YAAAhiY,EAAAA,EAAAA,GAAA,+BAAAvR,EAAAA,KAAAA,GAAA,wBAsElC,OAtEkClB,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,uBAAAutB,IAwEnC,WACE,OACI/vB,KAAKw7Y,IAA2CuC,GACtD,GAEA,CAAAv7Y,IAGCi5Y,GAAMh9Y,MAAP,WACE,IAAMyC,EAAK,kBAAkCu6Y,GAAM,iBAC7CwC,EAA6B,IAAI9gX,IA4BvC,OA1BAj8B,EAAM6wL,MAAM5a,UAAS,SAAC19J,GAKpB,GAAKA,EAAc4+J,OAAQ,CACzB,IAAMgb,EAAO55K,EACPo/J,EAAWwa,EAAKxa,SACtB,GAAgB,MAAZA,EAAkB,CACpB,GAAIolO,EAA2B7vW,IAAIyqI,EAASh9D,MAE1C,YADAw3E,EAAKxa,SAAWolO,EAA2BluX,IAAI8oJ,EAASh9D,OAI1Dw3E,EAAKxa,SAAWA,EAAS33K,QACzB+8Y,EAA2BhvX,IAAI4pJ,EAASh9D,KAAMw3E,EAAKxa,WAGzD,IAKA33K,EAAM68Y,IACFvB,GAAqBn6X,KAAKnhB,EAAOlB,KAAKk+Y,sBAEnCh9Y,CACT,IAAC,EAAAsB,IA3GgB+4Y,GAAQ98Y,MAAf,SAAiB+C,GACzB,IAAMq6Y,EAAW,QAAMN,GAAQ,gBAAE/5Y,GAEM,MAAnCq6Y,EAASkC,MACXlC,EAASkC,IAAyBvB,GAAqBn6X,KAAKw5X,IAG9D,IAAO9pN,EAAS8pN,EAAT9pN,MAEDosN,EAAa,IAAIjxO,QAAO9iK,EAAW++C,KAwDzC,OAtDA4oI,EAAM5a,UAAS,SAAC19J,GAGdA,EAAK08J,YAAc,IAKnB18J,EAAKy8J,eAAgB,EAIhBz8J,EAAKtgB,OACRsgB,EAAKtgB,KAAOsgB,EAAKoiG,MAEnB,IAAMw3E,EAAO55K,EACb,GAAI45K,EAAKhb,OAAQ,CACf,IAAOvN,EAAYuoB,EAAZvoB,SACPuoB,EAAKrd,YAAa,EACbqd,EAAa5a,gBAGhB3N,EAASmb,eAAiBk4N,EAG1BrzO,EAASE,YAAc,MAGzB,IAAM6N,EAAWwa,EAAKxa,SAUtB,IAT8C,IAAzCA,EAAiBwJ,sBACpBxJ,EAAS+E,YAAa,GAGxB/E,EAASuE,WAAaj2B,GAKlB0xB,EAAS0G,MAAO,CAClB,MAA+Bs8N,EAASkC,IAAjC3wF,EAAI,EAAJA,KACDgxF,EADqB,EAAd1B,eACkB3sX,IAAI8oJ,GACnC,GAAsB,MAAlBu0I,EAAKz1I,WAAgC,MAAXymO,GACL,MAArBA,EAAQzmO,UAAmB,CAC7B,IAAM0mO,EAAejxF,EAAKz1I,UAAUymO,EAAQzmO,WACxC0mO,EAAangF,kBAC8B,IAA3CmgF,EAAangF,iBAAiB3J,UACJ,MAA1BzpJ,EAAS54F,WAAWutF,IACtBqL,EAASh4J,aAAa,MAAOg4J,EAAS54F,WAAWutF,MAK3D,IAEOo8O,CACT,KAAC,EAtEkC,CAAQ/V,ICrBvCwY,GAAU,SAAAp6G,GAAAloR,EAAAsiY,EAAAp6G,GAAA,IAAAjoR,EAAAtB,EAAA2jY,GAEf,SAAAA,EAAazuI,GAAU,IAAA3zP,EAII,OAJJzR,EAAA,KAAA6zY,IAEtBpiY,EAAAD,EAAApf,KAAA,KAAOgzQ,IAEFjrQ,KAAO6mJ,GAAcvvI,CAE3B,CA2bC,OAzbD3S,EAAA+0Y,EAAA,EAAA97Y,IAAA,QAAA/D,MAEA,SAAO07J,GAEN,IAUCokP,EAAa,SAAWC,EAAiBrlB,GAExC,OAASqlB,GAER,KARgB,EAQMzqY,QAAQwN,MAAO,iCAAoC43W,GAAO,KAC/E,MACD,KATiB,EASMplX,QAAQwN,MAAO,kCAAqC43W,GAAO,KACjF,MACD,KAVkB,EAUMplX,QAAQwN,MAAO,sCAAyC43W,GAAO,KACtF,MACD,QACwBplX,QAAQwN,MAAO,6BAAgC43W,GAAO,KAI/E,OAtBqB,CAwBtB,EAiBAslB,EAAQ,SAAWtkP,EAAQukP,EAAWC,GAIrCD,EAAcA,GAAY,KAK1B,IAJA,IAAI13Y,EAAImzJ,EAAOrpB,IACdp0I,GAAM,EAAGsP,EAAM,EAAGvQ,EAAI,GACtB6B,EAAQS,OAAOinC,aAAallC,MAAO,KAAM,IAAIg1J,YAAaqF,EAAOk9B,SAAUrwL,EAAGA,EAL7D,OAOR,GAAMtK,EAAIY,EAAMkP,QAXjB,QAW6CR,EAAM0yY,GAAiB13Y,EAAImzJ,EAAOq3G,YAEvF/1Q,GAAK6B,EAAO0O,GAAO1O,EAAM1F,OACzBoP,GAViB,IAWjB1J,GAASS,OAAOinC,aAAallC,MAAO,KAAM,IAAIg1J,YAAaqF,EAAOk9B,SAAUrwL,EAAGA,EAX9D,OAelB,OAAO,EAAItK,KAQL,IAAUiiZ,IAAUxkP,EAAOrpB,KAAO9kI,EAAMtP,EAAI,GAC1CjB,EAAI6B,EAAMsT,MAAO,EAAGlU,GAM7B,EAyOKkiZ,EAAqB,SAAWt2H,EAAau2H,EAAcC,EAAWC,GAE3E,IAAMz4Y,EAAIgiR,EAAau2H,EAAe,GAChCxnQ,EAAQp6I,KAAKs1J,IAAK,EAAKjsJ,EAAI,KAAU,IAE3Cw4Y,EAAWC,EAAa,GAAMz2H,EAAau2H,EAAe,GAAMxnQ,EAChEynQ,EAAWC,EAAa,GAAMz2H,EAAau2H,EAAe,GAAMxnQ,EAChEynQ,EAAWC,EAAa,GAAMz2H,EAAau2H,EAAe,GAAMxnQ,EAChEynQ,EAAWC,EAAa,GAAM,CAE/B,EAEMC,EAAoB,SAAW12H,EAAau2H,EAAcC,EAAWC,GAE1E,IAAMz4Y,EAAIgiR,EAAau2H,EAAe,GAChCxnQ,EAAQp6I,KAAKs1J,IAAK,EAAKjsJ,EAAI,KAAU,IAG3Cw4Y,EAAWC,EAAa,GAAMrgH,GAAUooF,YAAa7pX,KAAKiuC,IAAKo9O,EAAau2H,EAAe,GAAMxnQ,EAAO,QACxGynQ,EAAWC,EAAa,GAAMrgH,GAAUooF,YAAa7pX,KAAKiuC,IAAKo9O,EAAau2H,EAAe,GAAMxnQ,EAAO,QACxGynQ,EAAWC,EAAa,GAAMrgH,GAAUooF,YAAa7pX,KAAKiuC,IAAKo9O,EAAau2H,EAAe,GAAMxnQ,EAAO,QACxGynQ,EAAWC,EAAa,GAAMrgH,GAAUooF,YAAa,EAEtD,EAEMm4B,EAAY,IAAI1pS,WAAY4kD,GAClC8kP,EAAUnuQ,IAAM,EAChB,IAAMouQ,EAjQa,SAAW/kP,GAI5B,IA2BI9rD,EAAM12G,EA1BTwnZ,EAAW,oCACXC,EAAc,uCACdC,EAAY,uBACZC,EAAgB,oCAGhBpsF,EAAS,CAERtoD,MAAO,EAEPxxP,OAAQ,GAERmmY,SAAU,GAEVC,YAAa,OAEbjhP,OAAQ,GAERkhP,MAAO,EAEPC,SAAU,EAEVvxY,MAAO,EAAGC,OAAQ,GAMpB,GAAK+rJ,EAAOrpB,KAAOqpB,EAAOq3G,cAAkBnjK,EAAOowS,EAAOtkP,IAEzD,OAAOokP,EA5GS,EA4GoB,mBAKrC,KAAS5mZ,EAAQ02G,EAAK12G,MApCC,cAsCtB,OAAO4mZ,EAjHW,EAiHoB,qBAQvC,IAJArrF,EAAOtoD,OAvFiB,EAwFxBsoD,EAAOssF,YAAc7nZ,EAAO,GAC5Bu7T,EAAO95S,QAAUi1F,EAAO,MAKlB,KADLA,EAAOowS,EAAOtkP,KAId,GAFA+4J,EAAO95S,QAAUi1F,EAAO,KAEnB,MAAQA,EAAK39F,OAAQ,IAkC1B,IA3BK/Y,EAAQ02G,EAAK12G,MAAOwnZ,MAExBjsF,EAAOusF,MAAQvuY,WAAYvZ,EAAO,MAI9BA,EAAQ02G,EAAK12G,MAAOynZ,MAExBlsF,EAAOwsF,SAAWxuY,WAAYvZ,EAAO,MAIjCA,EAAQ02G,EAAK12G,MAAO0nZ,MAExBnsF,EAAOtoD,OArHU,EAsHjBsoD,EAAO30J,OAAS5mK,EAAO,KAInBA,EAAQ02G,EAAK12G,MAAO2nZ,MAExBpsF,EAAOtoD,OA3Hc,EA4HrBsoD,EAAO9kT,OAAS+C,SAAUxZ,EAAO,GAAK,IACtCu7T,EAAO/kT,MAAQgD,SAAUxZ,EAAO,GAAK,KA9HpB,EAkIXu7T,EAAOtoD,OAjIQ,EAiIyBsoD,EAAOtoD,MAAkC,WAhCvFsoD,EAAOqsF,UAAYlxS,EAAO,KAoC5B,OAtImB,EAsIV6kN,EAAOtoD,MArIO,EA2IdsoD,EAAOtoD,MAMTsoD,EAJCqrF,EA7KW,EA6KoB,gCAN/BA,EAvKW,EAuKoB,2BAYxC,CAqJwBoB,CAAiBV,GAE1C,IA/UuB,IA+UMC,EAAmB,CAE/C,IAAM93Y,EAAI83Y,EAAiB/wY,MAC1BxH,EAAIu4Y,EAAiB9wY,OACrBwxY,EAzJqB,SAAWzlP,EAAQ/yJ,EAAGT,GAE3C,IAAMk5Y,EAAiBz4Y,EAEvB,GAEKy4Y,EAAiB,GAASA,EAAiB,OAE3C,IAAM1lP,EAAQ,IAAW,IAAMA,EAAQ,IAAyB,IAAdA,EAAQ,GAI9D,OAAO,IAAI5kD,WAAY4kD,GAIxB,GAAK0lP,KAAuB1lP,EAAQ,IAAO,EAAMA,EAAQ,IAExD,OAAOokP,EAvMW,EAuMoB,wBAIvC,IAAMuB,EAAY,IAAIvqS,WAAY,EAAInuG,EAAIT,GAE1C,IAAOm5Y,EAAUloZ,OAEhB,OAAO2mZ,EA9MW,EA8MoB,mCAYvC,IARA,IAAIx0W,EAAS,EAAG+mG,EAAM,EAEhBivQ,EAAU,EAAIF,EACdG,EAAY,IAAIzqS,WAAY,GAC5B0qS,EAAkB,IAAI1qS,WAAYwqS,GACpCG,EAAgBv5Y,EAGVu5Y,EAAgB,GAASpvQ,EAAMqpB,EAAOq3G,YAAe,CAE9D,GAAK1gI,EAAM,EAAIqpB,EAAOq3G,WAErB,OAAO+sI,EAjOQ,GA0OhB,GALAyB,EAAW,GAAM7lP,EAAQrpB,KACzBkvQ,EAAW,GAAM7lP,EAAQrpB,KACzBkvQ,EAAW,GAAM7lP,EAAQrpB,KACzBkvQ,EAAW,GAAM7lP,EAAQrpB,KAElB,GAAKkvQ,EAAW,IAAW,GAAKA,EAAW,KAAeA,EAAW,IAAO,EAAMA,EAAW,KAASH,EAE5G,OAAOtB,EA1OU,EA0OqB,4BAQvC,IAFA,IAAI/3E,EAAM,EAAG7oP,OAAK,EAER6oP,EAAMu5E,GAAejvQ,EAAMqpB,EAAOq3G,YAAe,CAG1D,IAAM2uI,GADNxiU,EAAQw8E,EAAQrpB,MACa,IAG7B,GAFKqvQ,IAAexiU,GAAS,KAEtB,IAAMA,GAAa6oP,EAAM7oP,EAAQoiU,EAEvC,OAAOxB,EA1PS,EA0PsB,qBAIvC,GAAK4B,EAIJ,IADA,IAAMC,EAAYjmP,EAAQrpB,KAChBp0I,EAAI,EAAGA,EAAIihF,EAAOjhF,IAE3BujZ,EAAiBz5E,KAAW45E,OAQ7BH,EAAgBhxX,IAAKkrI,EAAOk9B,SAAUvmD,EAAKA,EAAMnzD,GAAS6oP,GAC1DA,GAAO7oP,EAAOmzD,GAAOnzD,CAIvB,CAMA,IADA,IAAM92E,EAAIg5Y,EACAnjZ,EAAI,EAAGA,EAAImK,EAAGnK,IAAO,CAE9B,IAAI2jZ,EAAM,EACVP,EAAW/1W,GAAWk2W,EAAiBvjZ,EAAI2jZ,GAC3CA,GAAOR,EACPC,EAAW/1W,EAAS,GAAMk2W,EAAiBvjZ,EAAI2jZ,GAC/CA,GAAOR,EACPC,EAAW/1W,EAAS,GAAMk2W,EAAiBvjZ,EAAI2jZ,GAC/CA,GAAOR,EACPC,EAAW/1W,EAAS,GAAMk2W,EAAiBvjZ,EAAI2jZ,GAC/Ct2W,GAAU,CAEX,CAEAm2W,GAED,CAEA,OAAOJ,CAER,CAmCmBQ,CAAqBrB,EAAU5nN,SAAU4nN,EAAUnuQ,KAAO1pI,EAAGT,GAEhF,IArVsB,IAqVOi5Y,EAAkB,CAE9C,IAAIl8W,EAAM9+B,EACN27Y,EAEJ,OAASvgZ,KAAK4E,MAEb,KAAK4mJ,GAEJ+0P,EAAcX,EAAgBhoZ,OAAS,EAGvC,IAFA,IAAM4oZ,EAAa,IAAI3rP,aAA4B,EAAd0rP,GAE3B1wY,EAAI,EAAGA,EAAI0wY,EAAa1wY,IAEjC+uY,EAAoBgB,EAAqB,EAAJ/vY,EAAO2wY,EAAgB,EAAJ3wY,GAIzD6zB,EAAO88W,EACP57Y,EAAO4mJ,GACP,MAED,KAAKC,GAEJ80P,EAAcX,EAAgBhoZ,OAAS,EAGvC,IAFA,IAAM6oZ,EAAY,IAAI3rP,YAA2B,EAAdyrP,GAEzB1wY,EAAI,EAAGA,EAAI0wY,EAAa1wY,IAEjCmvY,EAAmBY,EAAqB,EAAJ/vY,EAAO4wY,EAAe,EAAJ5wY,GAIvD6zB,EAAO+8W,EACP77Y,EAAO6mJ,GACP,MAED,QAEC13I,QAAQwN,MAAO,uCAAwCvhB,KAAK4E,MAK9D,MAAO,CACNuJ,MAAO/G,EAAGgH,OAAQzH,EAClB+8B,KAAMA,EACNwvR,OAAQgsF,EAAiB9lY,OACzBqmY,MAAOP,EAAiBO,MACxBC,SAAUR,EAAiBQ,SAC3B96Y,KAAMA,EAGR,CAED,CAEA,OAAO,IAER,GAAC,CAAApC,IAAA,cAAA/D,MAED,SAAaA,GAGZ,OADAuB,KAAK4E,KAAOnG,EACLuB,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMypC,EAAK8xG,EAAQvtE,EAAYr0C,GAuB9B,OAAA8uG,GAAA5rH,EAAAgjY,EAAA1hZ,WAAA,aAAAC,KAAA,KAAmBqrC,GArBnB,SAAyBm5H,EAAS2yG,GAEjC,OAAS3yG,EAAQz8J,MAEhB,KAAK4mJ,GACL,KAAKC,GAEJ4V,EAAQ5C,SAAWxP,GACnBoS,EAAQ/C,UAAYzT,GACpBwW,EAAQhD,UAAYxT,GACpBwW,EAAQxC,iBAAkB,EAC1BwC,EAAQtC,OAAQ,EAMb/kB,GAASA,EAAQqnB,EAAS2yG,EAEhC,GAEwCvnM,EAAYr0C,EAErD,KAACkmX,CAAA,CAncc,CAASzqI,ICKJ6sI,GAAiB,YAAA1kY,EAAAA,EAAAA,GAAA,WACpC,mBAAAvR,EAAAA,KAAAA,IACEyR,EAAAA,EAAAA,KAAAA,OAEKqjD,SAASl4D,GAAK,IAEnB,IAAMyjK,EAAW,IAAI2hB,GACrB3hB,EAASk7B,gBAAgB,MAEzB,IAAM26M,EACF,IAAI15L,GAAqB,CAAC9oC,UAAW,EAAGtC,KAAMz0B,KAC5Cw5P,EAAc,IAAI35L,GAAqB,CAAC9oC,UAAW,IAEnD0iO,EAAY,IAAItqI,GAAW,SAAU,IAAO,GAAI,GACtDsqI,EAAUthV,SAAStwC,IAAI,KAAO,OAAQ,IACtC/S,EAAKkQ,IAAIy0X,GAET,IAAMC,EAAO,IAAI51N,GAAKpgB,EAAU61O,GAChCG,EAAKvhV,SAAStwC,KAAK,KAAO,OAAQ,MAClC6xX,EAAKzpQ,MAAMpoH,IAAI,OAAQ,OAAQ,QAC/B/S,EAAKkQ,IAAI00X,GAET,IAAMC,EAAO,IAAI71N,GAAKpgB,EAAU81O,GAChCG,EAAKxhV,SAAStwC,KAAK,OAAQ,MAAO,OAClC8xX,EAAKznP,SAASrqI,IAAI,GAAI,KAAO,GAC7B8xX,EAAK1pQ,MAAMpoH,IAAI,MAAO,MAAO,OAC7B/S,EAAKkQ,IAAI20X,GAET,IAAMC,EAAO,IAAI91N,GAAKpgB,EAAU81O,GAChCI,EAAKzhV,SAAStwC,KAAK,OAAQ,MAAQ,MACnC+xX,EAAK1nP,SAASrqI,IAAI,EAAG,KAAO,GAC5B+xX,EAAK3pQ,MAAMpoH,IAAI,KAAO,MAAO,OAC7B/S,EAAKkQ,IAAI40X,GAET,IAAMC,EAAO,IAAI/1N,GAAKpgB,EAAU81O,GAChCK,EAAK1hV,SAAStwC,IAAI,MAAO,KAAO,OAChCgyX,EAAK3nP,SAASrqI,IAAI,EAAG,KAAO,GAC5BgyX,EAAK5pQ,MAAMpoH,IAAI,MAAO,MAAO,OAC7B/S,EAAKkQ,IAAI60X,GAET,IAAMC,EAAO,IAAIh2N,GAAKpgB,EAAU81O,GAChCM,EAAK3hV,SAAStwC,KAAK,MAAO,KAAO,OACjCiyX,EAAK5nP,SAASrqI,IAAI,EAAG,KAAO,GAC5BiyX,EAAK7pQ,MAAMpoH,IAAI,MAAO,MAAO,OAC7B/S,EAAKkQ,IAAI80X,GAET,IAAMC,EAAO,IAAIj2N,GAAKpgB,EAAU81O,GAChCO,EAAK5hV,SAAStwC,IAAI,OAAQ,MAAQ,OAClCkyX,EAAK7nP,SAASrqI,IAAI,GAAI,KAAO,GAC7BkyX,EAAK9pQ,MAAMpoH,IAAI,MAAO,MAAO,OAC7B/S,EAAKkQ,IAAI+0X,GAET,IAAMC,EAAO,IAAIl2N,GAAKpgB,EAAU81O,GAChCQ,EAAK7hV,SAAStwC,KAAK,OAAQ,MAAQ,OACnCmyX,EAAK9nP,SAASrqI,IAAI,EAAG,KAAO,GAC5BmyX,EAAK/pQ,MAAMpoH,IAAI,MAAO,MAAO,OAC7B/S,EAAKkQ,IAAIg1X,GAIT,IAAMC,EAAS,IAAIn2N,GAAKpgB,EAAU5uJ,EAAKolY,wBAAwB,KAC/DD,EAAO9hV,SAAStwC,KAAK,OAAQ,MAAO,OACpCoyX,EAAOhqQ,MAAMpoH,IAAI,GAAK,MAAO,OAC7B/S,EAAKkQ,IAAIi1X,GAGT,IAAME,EAAS,IAAIr2N,GAAKpgB,EAAU5uJ,EAAKolY,wBAAwB,KAC/DC,EAAOhiV,SAAStwC,KAAK,OAAQ,QAAS,OACtCsyX,EAAOlqQ,MAAMpoH,IAAI,GAAK,MAAO,OAC7B/S,EAAKkQ,IAAIm1X,GAGT,IAAMC,EAAS,IAAIt2N,GAAKpgB,EAAU5uJ,EAAKolY,wBAAwB,KAC/DE,EAAOjiV,SAAStwC,IAAI,OAAQ,QAAS,OACrCuyX,EAAOnqQ,MAAMpoH,IAAI,IAAM,MAAO,OAC9B/S,EAAKkQ,IAAIo1X,GAGT,IAAMC,EAAS,IAAIv2N,GAAKpgB,EAAU5uJ,EAAKolY,wBAAwB,KAC/DG,EAAOliV,SAAStwC,KAAK,KAAO,KAAM,OAClCwyX,EAAOpqQ,MAAMpoH,IAAI,KAAM,MAAO,MAC9B/S,EAAKkQ,IAAIq1X,GAGT,IAAMC,EAAS,IAAIx2N,GAAKpgB,EAAU5uJ,EAAKolY,wBAAwB,KAC/DI,EAAOniV,SAAStwC,IAAI,MAAO,QAAS,QACpCyyX,EAAOrqQ,MAAMpoH,IAAI,IAAK,EAAK,IAC3B/S,EAAKkQ,IAAIs1X,GAGT,IAAMC,EAAS,IAAIz2N,GAAKpgB,EAAU5uJ,EAAKolY,wBAAwB,MAG9C,OAFjBK,EAAOpiV,SAAStwC,IAAI,EAAK,GAAM,GAC/B0yX,EAAOtqQ,MAAMpoH,IAAI,EAAK,GAAK,GAC3B/S,EAAKkQ,IAAIu1X,GAAQ,CACnB,CAMC,OANAp4Y,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,0BAAA/D,MAED,SAAwB0tN,GACtB,IAAMtzC,EAAW,IAAImJ,GAErB,OADAnJ,EAASrxI,MAAMurQ,UAAU5mF,GAClBtzC,CACT,KAAC,EApGmC,CAAQ0+D,ICAzBqqK,GAAoB,YAAA5lY,EAAAA,EAAAA,GAAA,WACvC,mBAAAvR,EAAAA,KAAAA,IACEyR,EAAAA,EAAAA,KAAAA,OAEKqjD,SAASl4D,GAAK,IAEnB,IAAMyjK,EAAW,IAAI2hB,GACrB3hB,EAASk7B,gBAAgB,MAEzB,IAAM26M,EACF,IAAI15L,GAAqB,CAAC9oC,UAAW,EAAGtC,KAAMz0B,KAC5Cw5P,EAAc,IAAI35L,GAAqB,CAAC9oC,UAAW,IAEnD0iO,EAAY,IAAItqI,GAAW,SAAU,IAAO,GAAI,GACtDsqI,EAAUthV,SAAStwC,IAAI,GAAK,GAAM,IAClC/S,EAAKkQ,IAAIy0X,GAET,IAAMC,EAAO,IAAI51N,GAAKpgB,EAAU61O,GAChCG,EAAKvhV,SAAStwC,IAAI,EAAK,KAAM,GAC7B6xX,EAAKzpQ,MAAMpoH,IAAI,KAAM,KAAM,MAC3B/S,EAAKkQ,IAAI00X,GAET,IAAMC,EAAO,IAAI71N,GAAKpgB,EAAU81O,GAChCG,EAAKxhV,SAAStwC,KAAK,QAAS,EAAK,OACjC8xX,EAAKznP,SAASrqI,IAAI,GAAI,KAAO,GAC7B8xX,EAAK1pQ,MAAMpoH,IAAI,MAAO,MAAO,OAC7B/S,EAAKkQ,IAAI20X,GAET,IAAMC,EAAO,IAAI91N,GAAKpgB,EAAU81O,GAChCI,EAAKzhV,SAAStwC,KAAK,OAAQ,MAAQ,MACnC+xX,EAAK1nP,SAASrqI,IAAI,EAAG,KAAO,GAC5B+xX,EAAK3pQ,MAAMpoH,IAAI,KAAO,MAAO,OAC7B/S,EAAKkQ,IAAI40X,GAET,IAAMC,EAAO,IAAI/1N,GAAKpgB,EAAU81O,GAChCK,EAAK1hV,SAAStwC,IAAI,OAAQ,IAAM,OAChCgyX,EAAK3nP,SAASrqI,IAAI,EAAG,KAAO,GAC5BgyX,EAAK5pQ,MAAMpoH,IAAI,MAAO,MAAO,OAC7B/S,EAAKkQ,IAAI60X,GAET,IAAMC,EAAO,IAAIh2N,GAAKpgB,EAAU81O,GAChCM,EAAK3hV,SAAStwC,KAAK,MAAO,KAAO,OACjCiyX,EAAK5nP,SAASrqI,IAAI,EAAG,KAAO,GAC5BiyX,EAAK7pQ,MAAMpoH,IAAI,MAAO,MAAO,OAC7B/S,EAAKkQ,IAAI80X,GAET,IAAMC,EAAO,IAAIj2N,GAAKpgB,EAAU81O,GAChCO,EAAK5hV,SAAStwC,IAAI,OAAQ,MAAQ,OAClCkyX,EAAK7nP,SAASrqI,IAAI,GAAI,KAAO,GAC7BkyX,EAAK9pQ,MAAMpoH,IAAI,MAAO,MAAO,OAC7B/S,EAAKkQ,IAAI+0X,GAET,IAAMC,EAAO,IAAIl2N,GAAKpgB,EAAU81O,GAChCQ,EAAK7hV,SAAStwC,KAAK,OAAQ,MAAQ,OACnCmyX,EAAK9nP,SAASrqI,IAAI,EAAG,KAAO,GAC5BmyX,EAAK/pQ,MAAMpoH,IAAI,MAAO,MAAO,OAC7B/S,EAAKkQ,IAAIg1X,GAGT,IAAMC,EAAS,IAAIn2N,GAAKpgB,EAAU5uJ,EAAKolY,wBAAwB,KAC/DD,EAAO9hV,SAAStwC,KAAK,GAAM,GAAM,GACjCoyX,EAAOhqQ,MAAMpoH,IAAI,GAAK,IAAK,KAC3B/S,EAAKkQ,IAAIi1X,GAGT,IAAME,EAAS,IAAIr2N,GAAKpgB,EAAU5uJ,EAAKolY,wBAAwB,KAC/DC,EAAOhiV,SAAStwC,KAAK,GAAM,IAAO,GAClCsyX,EAAOlqQ,MAAMpoH,IAAI,GAAK,IAAK,KAC3B/S,EAAKkQ,IAAIm1X,GAKT,IAAMC,EAAS,IAAIt2N,GAAKpgB,EAAU5uJ,EAAKolY,wBAAwB,KAC/DE,EAAOjiV,SAAStwC,IAAI,GAAM,GAAM,GAChCuyX,EAAOnqQ,MAAMpoH,IAAI,GAAK,EAAK,GAC3B/S,EAAKkQ,IAAIo1X,GAGT,IAAMC,EAAS,IAAIv2N,GAAKpgB,EAAU5uJ,EAAKolY,wBAAwB,KAC/DG,EAAOliV,SAAStwC,IAAI,EAAK,EAAK,IAC9BwyX,EAAOpqQ,MAAMpoH,IAAI,EAAK,EAAK,IAC3B/S,EAAKkQ,IAAIq1X,GAGT,IAAMC,EAAS,IAAIx2N,GAAKpgB,EAAU5uJ,EAAKolY,wBAAwB,KAC/DI,EAAOniV,SAAStwC,IAAI,EAAK,GAAM,IAC/ByyX,EAAOrqQ,MAAMpoH,IAAI,IAAK,IAAK,IAC3B/S,EAAKkQ,IAAIs1X,GAGT,IAAMC,EAAS,IAAIz2N,GAAKpgB,EAAU5uJ,EAAKolY,wBAAwB,KAC/DK,EAAOpiV,SAAStwC,KAAK,EAAK,IAAO,IACjC0yX,EAAOtqQ,MAAMpoH,IAAI,IAAK,IAAK,IAC3B/S,EAAKkQ,IAAIu1X,GAGT,IAAME,EAAS,IAAI32N,GAAKpgB,EAAU5uJ,EAAKolY,wBAAwB,IAG9C,OAFjBO,EAAOtiV,SAAStwC,IAAI,EAAK,GAAM,GAC/B4yX,EAAOxqQ,MAAMpoH,IAAI,GAAK,GAAK,IAC3B/S,EAAKkQ,IAAIy1X,GAAQ,CACnB,CAMC,OANAt4Y,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,0BAAA/D,MAED,SAAwB0tN,GACtB,IAAMtzC,EAAW,IAAImJ,GAErB,OADAnJ,EAASrxI,MAAMurQ,UAAU5mF,GAClBtzC,CACT,KAAC,EA3GsC,CAAQ0+D,ICc3ClpC,GAAc,GAEdyzM,GAAc,gBACdC,GAAY,IAAI9tI,GAChB+tI,GAAY,IAAI1D,GACtB0D,GAAUC,YAAYx2P,IAAe,IAEhBy2P,GAAa,YAAAlmY,EAAAA,EAAAA,GAAA,WAShC,WAAoBu5X,GAA4B,MAFX,OAEW9qY,EAAAA,KAAAA,IAC9CyR,EAAAA,EAAAA,KAAAA,OADkBA,cAAAq5X,EARZr5X,EAAAA,wBAAqD,KACrDA,EAAAA,2BAAwD,KAExDA,EAAAA,YAAc,IAAIihB,IAElBjhB,EAAAA,aAAoC,KACpCA,EAAAA,UAAwB,KAAK,CAIrC,CA0UC,OA1UA3S,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,OAAA/D,MAAAA,WAAA,mBAED,WACIypC,GAAW,MAAAi6W,EAAAp+S,EAAAs9D,EAAAy9N,EAAAA,UAAA,iEAIiC,OAJ/B0G,EAAAA,EAAAA,OAAAA,QAAAA,IAAAA,EAAAA,GAAAA,EAAAA,GAA+C,WAAO,EAACl2W,EAAAA,KAAAA,EAG9D6yX,EAAiBL,GAAY5pZ,KAAKgwC,GAClC67D,EAASo+S,EAAQH,GAAYD,GAASzyX,EAAAA,KAAAA,EACb,IAAIghB,SAC/B,SAACG,EAAS8tC,GAAM,OAAKwlB,EAAOn4B,KACxB1jC,EAAKuI,GAAS,SAAClI,GACbi9V,EAAiBj9V,EAAM+jC,OAAS/jC,EAAMqoG,MAAQ,GAChD,GAAGryD,EAAO,IAAC,OASlB,OAbK8iF,EAAO,OAMbmkO,EAAiB,GAEjBnkO,EAAQloK,KAAO+uC,EACfm5H,EAAQ/c,QAAU4F,GAEbi4P,IACH9gP,EAAQ5C,SAAWvP,IACpB,kBAEMmS,GAAO,QAKb,OALa/xI,EAAAA,KAAAA,GAGVk2W,GACFA,EAAiB,GAClB,2EAEJ,mDA9BA/mY,IAgCD,CAAA+D,IAAAA,kCAAA/D,MAAAA,WAAA,mBAKA,mBAAA2jZ,EAAA5c,EAAA6c,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAtc,EAAAA,UAAA,iEA+BG,OA9BCuc,EAAAA,EAAAA,OAAAA,QAAAA,IAAAA,EAAAA,GAAAA,EAAAA,GAAyB,KACzBpd,EAAAA,EAAAA,OAAAA,QAAAA,IAAAA,EAAAA,GAAAA,EAAAA,GAA+C,WAAO,EAElD6c,EAA0C,YAHfD,EAAAA,EAAAA,OAAAA,QAAAA,IAAAA,EAAAA,GAAAA,EAAAA,GAAiC,MAIxC,WAAtBA,GAAwD,YAAtBA,IACpCA,EAAoB,MAEtBA,EAAoBjtB,GAAeitB,GAE/BE,EAAqChyW,QAAQG,QAAQ,MAInDmyW,IACJN,EAActiZ,KAAK6iZ,oBAAoBD,EAAWpd,IAKlD+c,EAFIH,EAGApiZ,KAAK6iZ,oBAAoBT,EAAmB5c,GACrCod,EAGP5iZ,KAAK6iZ,oBAAoBD,EAAWpd,GAGlB6c,EAClBriZ,KAAK8iZ,iCACL9iZ,KAAK+iZ,8BACVzsP,EAAAA,KAAAA,GAGShmH,QAAQxtC,IAAI,CAACy/Y,EAAqBD,IAAa,QAD5B,GAC4BE,EAAAA,EAAAA,KAAAC,EAAAA,EAAAA,EAAAA,GADlDC,EAAc,KAAEC,EAAM,KAGP,MAAlBD,EAAsB,CAAApsP,EAAAA,KAAAA,GAAA,YAClB,IAAIx4J,MAAM,mCAAkC,iCAG7C,CAAC4kZ,eAAAA,EAAgBC,OAAAA,IAAO,iDAChC,kDA9CDlkZ,IAgDA,CAAA+D,IAAAA,sBAAA/D,MAAAA,WAAA,mBAGQ,WACJypC,EACAs9V,GAA4C,uEAK7C,OAJIxlY,KAAKgjZ,YAAY50W,IAAIlG,KAClB+6W,EAAiBjjZ,KAAK4rE,KAAK1jC,EAAKs9V,GAEtCxlY,KAAKgjZ,YAAY/zX,IAAIiZ,EAAK+6W,IAC3B,kBAEMjjZ,KAAKgjZ,YAAYjzX,IAAImY,IAAK,gDAClC,qDAbDzpC,IAaC,CAAA+D,IAAAA,yBAAA/D,MAAAA,WAAA,mBAEO,WAA6BszL,EAAc54L,GAAY,wFAAAqwK,EAAAA,KAAAA,EACvDwsN,KAAY,OAwBuB,OAtBnClkM,EAAW9xL,KAAKu1Y,cAChB2N,EAAa,IAAInwN,GAAsB,IAAK,CAChDl0B,iBAAiB,EACjBj6J,KAAM6mJ,GACN8S,OAAQxS,GACR0S,SAAUxP,GACVqS,aAAa,IAET0wC,EAAa,IAAI9gB,GAAW,GAAK,IAAKgyN,IACtCC,EAA0BnxM,EAAW3gB,aAAahwB,SAChCloK,KAAOA,EAEzBi5L,EAAiBN,EAASM,eAC1BE,EAAcR,EAASQ,YAC7BR,EAASQ,YAAc7oC,GACvBqoC,EAASM,eAAiBnjC,GAE1B+iD,EAAW1uC,OAAOwuB,EAAUC,GAE5B/xL,KAAKojZ,YAAYF,EA1IG,KA4IpBpxN,EAASQ,YAAcA,EACvBR,EAASM,eAAiBA,EAAe,kBAElC+wN,GAAuB,iDAC/B,qDA9BA1kZ,IAgCD,CAAA+D,IAAAA,8BAAA/D,MAAAA,WAAA,mBAGQ,8EAIL,OAHmC,MAAhCuB,KAAKmjZ,0BACPnjZ,KAAKmjZ,wBACDnjZ,KAAKqjZ,uBAAuB,IAAI3C,GAAoB,WACzD,kBACM1gZ,KAAKmjZ,yBAAuB,gDACpC,kDATD1kZ,IAWA,CAAA+D,IAAAA,iCAAA/D,MAAAA,WAAA,mBAKQ,8EAIL,OAHsC,MAAnCuB,KAAKsjZ,6BACPtjZ,KAAKsjZ,2BACDtjZ,KAAKqjZ,uBAAuB,IAAIzB,GAAuB,YAC5D,kBACM5hZ,KAAKsjZ,4BAA0B,gDACvC,kDAXD7kZ,IAWC,CAAA+D,IAAAA,cAAA/D,MAEO,SAAYykZ,EAAmC1zM,GACrD,GAAyB,MAArBxvM,KAAK8yM,aAAsB,CAC7B9yM,KAAK8yM,aAAe9yM,KAAKujZ,cAAcl1M,IACvC,IAAM7jC,EAAM,IAAIiiB,GACVsmB,EAAW,IAAI7nB,GAAK1gB,EAAKxqK,KAAK8yM,cACpC9yM,KAAKwjZ,UAAY,IAAIjsK,GACrBv3O,KAAKwjZ,UAAUp3X,IAAI2mL,GAErB,IAAMkkG,EAAaisG,EAAWhiZ,QAC9BlB,KAAKyjZ,SAASP,EAAYjsG,EAAYznG,EAAO,eAC7CxvM,KAAKyjZ,SAASxsG,EAAYisG,EAAY1zM,EAAO,eAO/C,GAAC,CAAAhtM,IAAAA,WAAA/D,MAEO,SACJk0M,EAAiCC,EACjCC,EAAsBxkC,GAGxB,IAEM4kC,EAASN,EAASxkM,MAClB+kM,EAAkB3qB,SAASsqB,GAC7B51M,KAAK00J,IAAM,EAAIshD,GACf,EAAIh2M,KAAK00J,GAAK,GACZwhD,EAAcN,EAAeK,EAC7BzxC,EAAU8mB,SAASsqB,GACrB,EAAI51M,KAAKwf,MARe,EAQa02L,GACrC9E,GAEA5sC,EAAU4sC,IACZt6L,QAAQk/C,KAAK,iBAAD,OACR4/I,EAAY,yDACZpxC,EAAO,+CAAuC4sC,KAMpD,IAHA,IAAMqD,EAAU,GACZ/gE,EAAM,EAEDj0I,EAAI,EAAGA,EAAI2xM,KAAe3xM,EAAG,CACpC,IAAMR,EAAIQ,EAAIy2M,EACRC,EAASn2M,KAAKk2J,KAAKj3J,EAAIA,EAAI,GACjCw1M,EAAQ50M,KAAKs2M,GAEJ,GAAL12M,EACFi0I,GAAOyiE,EAEE12M,EAAI+kK,IACb9wB,GAAO,EAAIyiE,GAIf,IAAK,IAAI12M,EAAI,EAAGA,EAAIg1M,EAAQ95M,OAAQ8E,IAClCg1M,EAAQh1M,GAAKg1M,EAAQh1M,GAAKi0I,EAG5B,IAAMqiE,EAAehzM,KAAK8yM,aAAc1kB,SACxC4kB,EAAqB,OAAEv0M,MAAQk0M,EAAStxC,QACxC2xC,EAAsB,QAAEv0M,MAAQgjK,EAChCuxC,EAAsB,QAAEv0M,MAAQizM,EAChCsB,EAA0B,YAAEv0M,MAAsB,gBAAd4vK,EACpC2kC,EAAqB,OAAEv0M,MAAQy0M,EAEZ,IAAIhiB,GAAW,GAAK,IAAK0hB,GACjCtvC,OAAOtjK,KAAKu1Y,cAAev1Y,KAAKwjZ,UAC7C,GAAC,CAAAhhZ,IAAAA,gBAAA/D,MAEO,SAAcgtM,GACpB,IAAMiG,EAAU,IAAI78C,aAAa42C,GAC3BkG,EAAW,IAAI7qC,GAAQ,EAAG,EAAG,GAwFnC,OAvFuB,IAAIynB,GAAe,CAExCp1L,KAAM,wBAENw1L,QAAS,CAAC,EAAK8c,GAEfrd,SAAU,CACR,OAAU,CAAC3vL,MAAO,MAClB,QAAW,CAACA,MAAO,GACnB,QAAW,CAACA,MAAOizM,GACnB,YAAe,CAACjzM,OAAO,GACvB,OAAU,CAACA,MAAO,GAClB,SAAY,CAACA,MAAOkzM,IAGtB/iB,aAAwB,kOAYxBC,eAA0B,o9CAqD1BjT,SAAUp0B,GACV+0B,WAAW,EACXC,YAAY,EACZX,KAAMz0B,IAKV,GAAC,CAAA5kJ,IAAAA,UAAA/D,MAAAA,WAAA,mBAED,0FAAAimE,EAAAA,EAC4B1kE,KAAKgjZ,aAAWhoI,EAAAA,KAAAA,EAAAt2M,EAAAA,IAAA,0BAAAs2M,EAAAA,KAAAA,GAAA,MAArB,OAAqB++C,EAAAA,EAAAA,EAAAA,MAAAA,GAA5BzgP,EAAO,KAAA0hM,EAAAA,KAAAA,EACE1hM,EAAO,OAAb,EAAH,KACLooF,UAAU,OAAAs5G,EAAAA,KAAAA,EAAA,cAAAA,EAAAA,KAAAA,GAAA,cAAAA,EAAAA,KAAAA,GAAAA,EAAAA,GAAAA,EAAAA,MAAAA,GAAAt2M,EAAAA,EAAAA,EAAAA,IAAA,eAAAs2M,EAAAA,KAAAA,GAAAt2M,EAAAA,IAAA,wBAEiB,MAAhC1kE,KAAKmjZ,wBAA+B,CAAAnoI,EAAAA,KAAAA,GAAA,aAAAA,EAAAA,KAAAA,GAC/Bh7Q,KAAKmjZ,wBAAuB,QAAAnoI,EAAAA,KAAEt5G,UACrC1hK,KAAKmjZ,wBAA0B,KAAK,WAEC,MAAnCnjZ,KAAKsjZ,2BAAkC,CAAAtoI,EAAAA,KAAAA,GAAA,aAAAA,EAAAA,KAAAA,GAClCh7Q,KAAKsjZ,2BAA0B,QAAAtoI,EAAAA,KAAEt5G,UACxC1hK,KAAKsjZ,2BAA6B,KAAK,QAEhB,MAArBtjZ,KAAK8yM,cACP9yM,KAAK8yM,aAAapxC,UACnB,gEACF,kDAlBAjjK,MAkBA,EArV+B,CAAQ6yJ,ICMpCoyP,GAAc,CAAC,EAAG,IAAM,IAAM,GAAK,GAAK,IAAM,KAGvCC,GAAmC,mBAanCC,GAAS,YAAA5nY,EAAAA,EAAAA,GAAA,WAsEpB,WAAY/a,GAAwB,MAAAwJ,EAAAA,KAAAA,IAClCyR,EAAAA,EAAAA,KAAAA,OAnCKA,OAAS,IAAI2pX,GAAkBmY,IAC/B9hY,EAAAA,MAAQ,EACRA,EAAAA,OAAS,EACTA,EAAAA,IAAM,EAEHA,EAAAA,SAA0B,KAC5BA,EAAAA,OAA0B,IAAI8P,IAC9B9P,EAAAA,uBAAwB,EACxBA,EAAAA,SAAWg1C,YAAYtxD,MACvBsc,EAAAA,mBAAoB,EACpBA,EAAAA,UAAY,EACZA,EAAAA,SA9DgB,EA+DhBA,EAAAA,iBACJ,GA0aJA,EAAAA,mBAAqB,SAACqsB,GACpBrsB,EAAKqiB,cACD,CAAC35B,KAAM,cAAei/Y,YAAat7W,GACzC,EAEArsB,EAAAA,uBAAyB,iBACN,QAAjB,IAAK4nY,oBAAY,SAAEpiP,UACnBxlJ,EAAK4nY,aAAe,IAAI5B,GAAahmY,EAAKq5X,eAAe,IAC1B9wU,EAD0B,IACrCvoD,EAAKk9S,QAAM,IAA/B,IAAK,EAAL,qBAAiC,CAAjB,QACP13T,QAAgB00X,MACxB,UAAA1xT,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACH,EA7ZExoD,EAAK8zR,IAAM0lF,KAEXx5W,EAAK6nY,SAAWzgZ,SAASC,cAAc,UACvC2Y,EAAK6nY,SAAS3kX,GAAK,eACnBljB,EAAK6nY,SAAS5jV,UAAU/zC,IAAI,QAE5B,IACElQ,EAAKq5X,cAAgB,IAAI5nK,GAAc,CACrC30F,OAAQ98H,EAAK6nY,SACbhuP,OAAO,EACP4yE,WAAW,EACX0F,gBAAiBptO,EAAQotO,gBACzBF,uBAAuB,IAEzBjyN,EAAKq5X,cAAc3vM,WAAY,EAC/B1pL,EAAKq5X,cAAcnjN,eAAiBljC,GACpChzI,EAAKq5X,cAAcxxL,yBAA0B,EAC7C7nM,EAAKq5X,cAAc1jK,cAAc,GAEjC31N,EAAK8nY,SAAa/iZ,EAAQsT,MAAQ,IAAIsmY,GAAS,MAAQ,KACvD3+X,EAAKq5X,cAAchhY,MAAQ,CAACkwM,oBAAqBvoM,EAAK8nY,UAItD9nY,EAAKq5X,cAAcjjN,YAAczoC,GACjC,MAAOtoI,IACPxN,QAAQk/C,KAAK1xC,IAYW,OAT1BrF,EAAK+nY,WAAa,IAAI7P,GAAW,MACjCl4X,EAAK4nY,aACD5nY,EAAKgoY,UAAY,IAAIhC,GAAahmY,EAAKq5X,eAAiB,KAC5D1P,GAAkBse,qBAAqBjoY,EAAKq5X,eAE5Cr5X,EAAK6nY,SAASngZ,iBAAiB,mBAAoBsY,EAAKkoY,oBACxDloY,EAAK6nY,SAASngZ,iBACV,uBAAwBsY,EAAKmoY,wBAEjCnoY,EAAKooY,qBAAqB,CAC5B,CAlFC,OAkFA/6Y,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,YAAAutB,IA7DD,WACE,OAA6B,MAAtB/vB,KAAKu1Y,aACd,GAAC,CAAA/yY,IAAAA,cAAAutB,IAED,WACE,OAAO2zX,GAAY1jZ,KAAKukZ,UAC1B,GAAC,CAAA/hZ,IAAAA,WAAAysB,IAED,SAAaooH,GAEX,IADA,IAAI36I,EAAI,EACDA,EAAIgnZ,GAAY9rZ,UACjB8rZ,GAAYhnZ,GAAK26I,MAGnB36I,EAEJsD,KAAKwkZ,SAAW9nZ,EAAI,CACtB,GAAC,CAAA8F,IAAAA,gBAAA/D,MA8CD,SAAcszL,GAAiB,WAC7B/xL,KAAKo5T,OAAOhtS,IAAI2lK,GAEhBA,EAAM0yN,eAEN,IAAMl/V,EAAO,IAAI4vG,GACjBn1J,KAAKu1Y,cAAclpO,QAAQ9mH,GAC3BwsI,EAAM/4C,OAAO7qI,MAAQo3C,EAAKrpD,EAC1B61L,EAAM/4C,OAAO5qI,OAASm3C,EAAKl+C,EAEvBrH,KAAKkkZ,WAAalkZ,KAAKo5T,OAAO7zQ,KAAO,GACvCvlD,KAAKu1Y,cAAcl/M,kBACf,SAACpuJ,EAAcmuJ,GAAW,OAAKznH,EAAKnpE,OAAOyiC,EAAMmuJ,EAAM,IAGxC,MAAjBp2L,KAAKgkZ,UACPhkZ,KAAKgkZ,SAASU,SAAS3yN,EAE3B,GAAC,CAAAvvL,IAAAA,kBAAA/D,MAED,SAAgBszL,GACd/xL,KAAKo5T,OAAO57R,OAAOu0J,GAEf/xL,KAAK+jZ,SAAS79U,gBAAkB6rH,EAAM/4C,OAAO9yE,eAC/C6rH,EAAM/4C,OAAO9yE,cAAe3zC,YAAYvyB,KAAK+jZ,UAG3C/jZ,KAAKkkZ,WAAkC,IAArBlkZ,KAAKo5T,OAAO7zQ,MAChCvlD,KAAKu1Y,cAAcl/M,iBAAiB,MAGjB,MAAjBr2L,KAAKgkZ,UACPhkZ,KAAKgkZ,SAASW,YAAY5yN,EAE9B,GAAC,CAAAvvL,IAAAA,gBAAA/D,MAED,SAAcszL,GACZ,OAAO/xL,KAAK4kZ,sBAAwB7yN,EAAMrwL,QAAQmjZ,IAAW7kZ,KAAK+jZ,QACpE,GAEA,CAAAvhZ,IAAAA,qBAAA/D,MAMQ,WACN,IAG+BqmE,EAHxBi/U,EAAY/jZ,KAAZ+jZ,SACHe,EAAgB,EAChBC,EAAgB,KAAK,IACL/kZ,KAAKo5T,QAAM,IAA/B,IAAK,EAAL,qBAAiC,KAAtBrnI,EAAK,QACIA,EAAXrwL,QACKsjZ,gBAA4C,MAA1BjzN,EAAMkzN,oBAChCH,EAEAf,EAAS79U,gBAAkB6rH,EAAM/4C,OAAO9yE,gBAC1C6+U,EAAgBhzN,GAEnB,UAAAhtH,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACD,IAAM6/U,EAAwBE,EAAgB,EAE9C,GAAqB,MAAjBC,EAAuB,CACzB,IAAMG,EACFN,IAA0B5kZ,KAAK4kZ,sBAC7BO,GAAgBJ,EAAcrjZ,QAAQsjZ,eAC5C,GAAIE,GAAiBC,EAAc,CACjC,MAAwBnlZ,KAAKolZ,UAAUL,GAAhC52Y,EAAK,EAALA,MAAOC,EAAM,EAANA,OACdpO,KAAKqlZ,WAAWN,EAAe52Y,EAAOC,GACtC21Y,EAAS79U,cAAe3zC,YAAYwxX,IAGxC/jZ,KAAK4kZ,sBAAwBA,CAC/B,GAEA,CAAApiZ,IAAAA,qBAAA/D,MAIQ,WACN,IAAMuxS,EAAM0lF,KACZ,GAAI1lF,IAAQhwS,KAAKgwS,IAAK,CAGpB,IAC+Bv/J,EAD/B,IACoBzwI,KAAKo5T,QAAM,IAA/B,IAAK,EAAL,qBAAiC,KACxB13T,EADO,QACPA,QACPA,EAAQ4jZ,IAAa5jZ,EAAQ+4G,yBAC9B,UAAAi2B,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EAIH,IAE+B2B,EAF3BlkI,EAAQ,EACRC,EAAS,EAAE,IACKpO,KAAKo5T,QAAM,IAA/B,IAAK,EAAL,qBAAiC,KAAtBrnI,EAAK,QACd5jL,EAAQlR,KAAKC,IAAIiR,EAAO4jL,EAAM5jL,OAC9BC,EAASnR,KAAKC,IAAIkR,EAAQ2jL,EAAM3jL,QACjC,UAAAkkI,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAED,GAAInkI,IAAUnO,KAAKmO,OAASC,IAAWpO,KAAKoO,QAAU4hS,IAAQhwS,KAAKgwS,IAAnE,CAGAhwS,KAAKmO,MAAQA,EACbnO,KAAKoO,OAASA,EACdpO,KAAKgwS,IAAMA,EACX7hS,EAAQlR,KAAKurD,KAAKr6C,EAAQ6hS,GAC1B5hS,EAASnR,KAAKurD,KAAKp6C,EAAS4hS,GAExBhwS,KAAKkkZ,WACPlkZ,KAAKu1Y,cAAczjK,QAAQ3jO,EAAOC,GAAQ,GAK5C,IAC+BukI,EAD/B,IACoB3yI,KAAKo5T,QAAM,IAA/B,IAAK,EAAL,qBAAiC,KAAtBrnI,EAAK,QACP/4C,EAAU+4C,EAAV/4C,OACPA,EAAO7qI,MAAQA,EACf6qI,EAAO5qI,OAASA,EAChB2jL,EAAM0yN,eACP,UAAA7xQ,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EACH,GAAC,CAAApwI,IAAAA,sBAAA/D,MAEO,SAAoBrB,GAC1B,IAAMmnZ,EAAYvkZ,KAAKukZ,UAEvBvkZ,KAAKulZ,kBAAoBrzP,GAnQN,IAoQG90J,EAAQ4C,KAAKulZ,mBAjQb,KAqQlBvlZ,KAAKulZ,iBAtQkB,KAuQvBvlZ,KAAKukZ,UAELvkZ,KAAKulZ,iBA1QiB,IA0Q2BvlZ,KAAKukZ,UAAY,KAClEvkZ,KAAKukZ,UAETvkZ,KAAKukZ,UAAYtnZ,KAAKiuC,IAAIlrC,KAAKukZ,UAAWvkZ,KAAKwkZ,UAE3CD,IAAcvkZ,KAAKukZ,YACrBvkZ,KAAKulZ,iBACD,GAER,GAAC,CAAA/iZ,IAAAA,eAAA/D,MAEO,SAAaszL,GACnB,GAAKA,EAAMyzN,eASAzzN,EAAMwyN,WAAavkZ,KAAKukZ,YAEjCxyN,EAAMwyN,UAAYvkZ,KAAKukZ,UACvBvkZ,KAAKylZ,cAAc1zN,QAZM,CAGzB,GAAuB,GAAnBA,EAAMwyN,UAIR,OAAO,EAHPxyN,EAAMwyN,UAAY,EAClBvkZ,KAAKylZ,cAAc1zN,GASvB,OAAO,CACT,GAAC,CAAAvvL,IAAAA,gBAAA/D,MAEO,SAAcszL,GACpB,IAAM16C,EAAQqsQ,GAAY3xN,EAAMwyN,WAC1Bp2Y,EAAQlR,KAAKurD,KAAKxoD,KAAKmO,MAAQkpI,GAC/BjpI,EAASnR,KAAKurD,KAAKxoD,KAAKoO,OAASipI,GAEhChtI,EAAS0nL,EAAM/4C,OAAf3uI,MACPA,EAAM8D,MAAQ,GAAH,OAAMA,EAAK,MACtB9D,EAAM+D,OAAS,GAAH,OAAMA,EAAM,MACxBpO,KAAK+jZ,SAAS15Y,MAAM8D,MAAQ,GAAH,OAAMA,EAAK,MACpCnO,KAAK+jZ,SAAS15Y,MAAM+D,OAAS,GAAH,OAAMA,EAAM,MAEtC,IAAMs3Y,EAAc1lZ,KAAKgwS,IAAM34J,EACzBqxL,EAASrxL,EAAQ,EAAoB,iBACvCr3I,KAAKgwS,MAAQ3sS,OAAOm2I,iBAAmB,uBACA,GAC3Cu4C,EAAMrwL,QAAQ68B,cAAc,IAAI43E,YAAY,eAAgB,CAC1D30E,OAAQ,CACNmkX,YAAatiZ,OAAOm2I,iBACpBksQ,YAAaA,EACbE,WAAY5lZ,KAAKgwS,IAAM0zG,GAAY1jZ,KAAKwkZ,UACxC9qB,WAAYz8X,KAAKurD,KAAKupI,EAAM5jL,MAAQu3Y,GACpC/rB,YAAa18X,KAAKurD,KAAKupI,EAAM3jL,OAASs3Y,GACtCh9E,OAAQA,KAGd,GAAC,CAAAlmU,IAAAA,YAAA/D,MAEO,SAAUszL,GAChB,IAAOi+G,EAAOhwS,KAAPgwS,IACD9jF,EAAcw3L,GAAY3xN,EAAMwyN,WAOtC,MAAO,CAACp2Y,MAJMlR,KAAKiuC,IACfjuC,KAAKurD,KAAKupI,EAAM5jL,MAAQ+9M,EAAc8jF,GAAMhwS,KAAK+jZ,SAAS51Y,OAG/CC,OAFAnR,KAAKiuC,IAChBjuC,KAAKurD,KAAKupI,EAAM3jL,OAAS89M,EAAc8jF,GAAMhwS,KAAK+jZ,SAAS31Y,QAEjE,GAAC,CAAA5L,IAAAA,aAAA/D,MAEO,SAAWszL,EAAmB5jL,EAAeC,GACnD,IAAMy3Y,EAAY9zN,EAAMxyL,QACP,MAAbsmZ,GAIJA,EAAUC,UAAU,EAAG,EAAG33Y,EAAOC,GACjCy3Y,EAAU/rQ,UACN95I,KAAK+jZ,SAAU,EAAG,EAAG51Y,EAAOC,EAAQ,EAAG,EAAGD,EAAOC,GACrD2jL,EAAM/4C,OAAO74E,UAAU/zC,IAAI,SANzBrY,QAAQC,IAAI,+BAOhB,GAEA,CAAAxR,IAAAA,gBAAA/D,MAKQ,WAEN,IADA,IAAM26T,EAAS,GACf,MAAsB,EAAC,GAAO,GAAK,eAAE,CAAhC,IAC4BjmL,EADtBxpE,EAAO,SACI3pE,KAAKo5T,QAAM,IAA/B,IAAK,EAAL,qBAAiC,KAAtBrnI,EAAK,QACVA,EAAMrwL,QAAQsjZ,iBAAmBr7U,GACnCyvP,EAAOt8T,KAAKi1L,GAEf,UAAA3+C,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EAEH,OAAOgmL,CACT,GAAC,CAAA52T,IAAAA,eAAAutB,IAED,WACE,OAAO/vB,KAAKikZ,WAAWj9K,YACzB,GAEA,CAAAxkO,IAAAA,YAAA/D,MAIA,SAAUszL,EAAmBz6L,EAAW8F,GACtC,IAAOsE,EAAqBqwL,EAArBrwL,QAASg+Y,EAAY3tN,EAAZ2tN,SAEhBh+Y,EAAQqkZ,IAAOzuZ,EAAG8F,GAElB,IAAM4oZ,EACkB,kBAAbtG,IAA0BroY,OAAOC,MAAMooY,GAClD1/Y,KAAKu1Y,cAAc1mK,oBAAsBm3K,EAAmBtG,EAAW,CACzE,GAAC,CAAAl9Y,IAAAA,SAAA/D,MAED,SAAOnH,EAAW8+L,GAChB,GAAa,MAATA,EAAJ,CAKA,IAAMh5L,EAAQ9F,EAAI0I,KAAK03Y,SAGvB,GAFA13Y,KAAK03Y,SAAWpgZ,EAEX0I,KAAKkkZ,YAAalkZ,KAAKgnO,aAA5B,CAIAhnO,KAAKimZ,qBACLjmZ,KAAKskZ,qBACDtkZ,KAAKkmZ,oBACPlmZ,KAAKmmZ,oBAAoB/oZ,GACzB4C,KAAKkmZ,mBAAoB,GAG3B,IAEwCvyQ,EAFjCowQ,EAAY/jZ,KAAZ+jZ,SAAiB,IAEJ/jZ,KAAKomZ,iBAAe,IAAxC,IAAK,EAAL,qBAA0C,KAA/Br0N,EAAK,QACPrwL,EAAWqwL,EAAXrwL,QACP,MAAKA,EAAQ4qE,SACP5qE,EAAQsjZ,gBAAkBjzN,EAAMs0N,YAAc,KAIpDrmZ,KAAK26Y,UAAU5oN,EAAOz6L,EAAG8F,GAEpB4C,KAAKwlZ,aAAazzN,IAIvB,GAA8B,MAA1BA,EAAMkzN,iBAAV,CAiBA,IAAKvjZ,EAAQsjZ,iBAAmBhlZ,KAAK4kZ,sBAAuB,CAE1D,IACsChwQ,EADtC,IAC2B50I,KAAKo5T,QAAM,IAAtC,IAAK,EAAL,qBAAwC,KAA7BktF,EAAY,QACjBA,EAAa5kZ,QAAQsjZ,gBACvBsB,EAAalQ,cAEhB,UAAAvhQ,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EAGH,MAAwB70I,KAAKolZ,UAAUrzN,GAAhC5jL,EAAK,EAALA,MAAOC,EAAM,EAANA,OAEd2jL,EAAM6oN,aAAa56Y,KAAKu1Y,eAIxBv1Y,KAAKu1Y,cAAc9iN,gBAAgB,MACnCzyL,KAAKu1Y,cAAcvjK,YACf,EAAG/0O,KAAKurD,KAAKxoD,KAAKoO,OAASpO,KAAKgwS,KAAO5hS,EAAQD,EAAOC,GAC1DpO,KAAKu1Y,cAAc/vY,OAAOusL,EAAOA,EAAMnqB,QAEnC5nK,KAAK4kZ,uBAA+C,IAAtB7yN,EAAMs0N,YACtCrmZ,KAAKqlZ,WAAWtzN,EAAO5jL,EAAOC,GAE1B21Y,EAAS79U,gBAAkB6rH,EAAM/4C,OAAO9yE,gBAC1C6rH,EAAM/4C,OAAO9yE,cAAejzD,YAAY8wY,GACxChyN,EAAM/4C,OAAO74E,UAAUS,OAAO,SAIlCmxH,EAAMw0N,gBACJx0N,EAAMs0N,YACRrmZ,KAAKkmZ,mBAAoB,MAjDzB,CACE,IAAMt+O,EAASmqB,EAAMi5C,YACrBpjE,EAAOyO,eACP,IAAO3c,EAA4BkO,EAA5BlO,OAAQqO,EAAoBH,EAApBG,iBACTykC,EAAa9yC,EAAO1zB,SAASp1H,QAC7BrP,EAASwwL,EAAMmlN,YACrB1qM,EAAW,KAAOjrM,EAAOrF,EACzBswM,EAAW,KAAOjrM,EAAO8F,EACzBmlM,EAAW,KAAOjrM,EAAO+F,EAEzByqL,EAAMkzN,iBAAiBz/Y,OAAO,CAC5BgnM,WAAYA,EACZzkC,iBAAkBA,EAAiB/hC,YAsCxC,UAAA4N,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,QAnFC5zI,KAAKikZ,WAAWuC,aAAalvZ,EAAG8+L,EAoFpC,GAAC,CAAA5zL,IAAAA,UAAA/D,MAED,WAC2B,MAArBuB,KAAK8jZ,cACP9jZ,KAAK8jZ,aAAapiP,UAGM,MAAtB1hK,KAAKu1Y,eACPv1Y,KAAKu1Y,cAAc7zO,UAGrB1hK,KAAK8jZ,aAAe,KACnB9jZ,KAAau1Y,cAAgB,KAE9B,IAC+BkR,EADzBzgR,EAAW,GAAG,IACAhmI,KAAKo5T,QAAM,IAA/B,IAAK,EAAL,qBAAiC,KAAtBrnI,EAAK,QACd/rD,EAASlpI,KAAKi1L,EAAMrwL,SACrB,UAAAglZ,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAOD,OALA1mZ,KAAK+jZ,SAAS7rX,oBACV,mBAAoBl4B,KAAKokZ,oBAC7BpkZ,KAAK+jZ,SAAS7rX,oBACV,uBAAwBl4B,KAAKqkZ,wBAE1Br+Q,CACT,IAAC,EAAAxjI,IAAAA,YAAAutB,IAhdD,WACE,OAAO/vB,KAAK2mZ,UACd,GAAC,CAAAnkZ,IAAAA,iBAAA/D,MAED,WACE,IAC8BmoZ,EADxB5gR,EAAWhmI,KAAK2mZ,WAAWjlP,UAAU,IACrB17B,GAAQ,IAA9B,IAAK,EAAL,qBAAgC,CAAd,QACR6kP,uBACT,UAAAg8B,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAED7mZ,KAAK2mZ,WAAa,IAAI/C,EAAS,CAC7Bv1K,iBACOl5N,KAAa2gX,oBAAsB,CAAC,GAClCznJ,iBACLs1K,GACJpvY,MAAOqhX,OACN,IAE2BkxB,EAF3B,IAEmB9gR,GAAQ,IAA9B,IAAK,EAAL,qBAAgC,CAAd,QACR2kP,oBACT,UAAAo8B,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACH,KAAC,EA9BmB,CAAQz1P,IACbsyP,GAAAA,WAAa,IAAIA,GAAS,CACvCv1K,iBACOl5N,KAAa2gX,oBAAsB,CAAC,GAClCznJ,iBACLs1K,GACJpvY,MAAOqhX,OC7CJ,IC6DKoxB,GAqBAC,GDlFCC,GAAqBpmZ,OAAO,qBAC5BqmZ,GAAgBrmZ,OAAO,gBACvBsmZ,GAAYtmZ,OAAO,YAUnBumZ,GAAe,GAO1B,WACInoP,EAAsBx9J,GAC0B,IAAhD4lZ,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAA4C,KAAI78Y,EAAAA,KAAAA,GAClDzK,KAAKonZ,IAAaloP,EAClBl/J,KAAKmnZ,IAAiBzlZ,EACtB1B,KAAKknZ,IAAsBI,CAC7B,IErBIC,GAAe,IAAIvlO,GACnBwlO,GAAO,IAAIjwN,GAAc,EAAG,GAC9BkwN,GAAW,EAEFC,GAAgB5mZ,OAAO,gBAMvBwxT,IALgBxxT,OAAO,gBAKjB,YAAAkb,EAAAA,EAAAA,GAAA,WAQjB,WACIkjJ,EAAsBmC,EACtBsmP,GAQA,OARyBl9Y,EAAAA,KAAAA,GAC3Bk9Y,EAAqB,OAATA,QAAS,IAATA,EAAAA,EAAa,CACvBxuZ,KAAOkoK,GAAWA,EAAQloB,OAASkoB,EAAQloB,MAAMhnI,IAC7CkvJ,EAAQloB,MAAMhnI,IAAIrW,MAAM,KAAKk1D,MAC7B,cACJohQ,IAAM/wJ,GAAWA,EAAQloB,OAASkoB,EAAQloB,MAAMhnI,IAC5CkvJ,EAAQloB,MAAMhnI,IACd,cAAgBs1Y,MACpB,YACIvoP,EAAUyoP,EAAW,IAAI37X,IAAkBq1I,EAAU,CAACA,GAAW,IACzE,CAsDC,OAtDA93J,EAAAA,EAAAA,CAAAA,CAAA/G,IAnBGklZ,GAAa33X,IAAjB,iBAIE,OAHAhc,QAAQ05H,OACwB,MAA5BztI,KAAKknZ,KAA+BlnZ,KAAKknZ,IAAqB3hW,KAAO,EACrE,wCAC2B,QAAxB,EAAAvlD,KAAKknZ,WAAmB,eAAEn6Y,SAAS7J,OAAOzE,KACnD,GAAC,CAAA+D,IAAAA,OAAAutB,IAgBD,WACE,OAAQ/vB,KAAKmnZ,IAA6BhuZ,MAAQ,EACpD,GAAC,CAAAqJ,IAAAA,MAAAutB,IAED,WACE,OAAQ/vB,KAAKmnZ,IAA6B/0F,GAC5C,GAAC,CAAA5vT,IAAAA,aAAAutB,IAED,WACE,OAAQ/vB,KAAKmnZ,IAA6B50F,UAC5C,GAAC,CAAA/vT,IAAAA,OAAAutB,IAED,WACE,OAAmB,MAAZ/vB,KAAKoyT,IAAc,WAAa,UACzC,GAAC,CAAA5vT,IAAAA,OAAAysB,IAED,SAAS91B,GACN6G,KAAKmnZ,IAA6BhuZ,KAAOA,CAC5C,GAAC,CAAAqJ,IAAAA,kBAAA/D,MAAAA,WAAA,mBAED,WAAsB0P,EAAeC,GAAc,qFAsBP,OArBpC2jL,EAAQ,IAAIwlD,GAClBgwK,GAAahrZ,IAAMyD,KAAK0nZ,IAClBr0N,EAAO,IAAInI,GAAKs8N,GAAMD,IAC5Bx1N,EAAM3lK,IAAIinK,GACJzrB,EAAS,IAAIgmC,IAAoB,EAAG,EAAG,GAAI,EAAG,EAAG,GAEhD2nM,EAAiBqO,GAASgE,UAA1BrS,cACDlkN,EAAe,IAAIrwB,GAAkB7yJ,EAAOC,GAClDmnY,EAAc9iN,gBAAgBpB,GAC9BkkN,EAAc/vY,OAAOusL,EAAOnqB,GAC5B2tO,EAAc9iN,gBAAgB,MAExBt4B,EAAS,IAAI5kD,WAAWpnG,EAAQC,EAAS,GAC/CmnY,EAAc3/J,uBACVvkD,EAAc,EAAG,EAAGljL,EAAOC,EAAQ+rJ,GAEvC0tP,GAAW15Y,MAAQA,EACnB05Y,GAAWz5Y,OAASA,EACd05Y,EAAcD,GAAW5uQ,WAAW,OACpCokB,EAAYyqP,EAAYC,gBAAgB55Y,EAAOC,IAC3Cs1B,KAAKzU,IAAIkrI,GACnB2tP,EAAY7qP,aAAaI,EAAW,EAAG,GAAG,kBAEnC,IAAI/sH,QAAO,8BAAS,WAAOG,EAAS8tC,GAAM,iEAC/CspU,GAAWlf,QAAO,SAAA92H,GAChB,IAAKA,EACH,OAAOtzL,EAAO,gCAEhB9tC,EAAQ2oC,IAAIC,gBAAgBw4L,GAC9B,GAAG,aAAa,2CACjB,qDAPiB,KAOhB,iDACH,qDAlCApzQ,MAkCA,EA1EgB,CAAQ4oZ,MD+C3B,SAAYL,GACVA,EAAAA,EAAAA,QAAAA,MAAAA,UACAA,EAAAA,EAAAA,OAAAA,MAAAA,SACAA,EAAAA,EAAAA,qBAAAA,MAAAA,uBACAA,EAAAA,EAAAA,oBAAAA,MAAAA,sBACAA,EAAAA,EAAAA,oBAAAA,MAAAA,sBACAA,EAAAA,EAAAA,mBAAAA,MAAAA,oBACD,CAPD,CAAYA,KAAAA,GAAM,KAqBlB,SAAYC,GACVA,EAAAA,EAAAA,YAAAA,OAAAA,cACAA,EAAAA,EAAAA,eAAAA,OAAAA,iBACAA,EAAAA,EAAAA,OAAAA,OAAAA,QACD,CAJD,CAAYA,KAAAA,GAAI,KE9EhB,UCIYe,GDJNC,GAAe,WACnB,IAAMC,EAAoC,CACxClB,GAAOmB,QACPnB,GAAOoB,OACPpB,GAAOqB,qBACPrB,GAAOsB,mBACPtB,GAAOuB,oBACPvB,GAAOsB,oBAET,OAAO,SAAC7pZ,GAAc,OACXypZ,EAAgB17Y,QAAQ/N,IAAuB,CAAC,CAC7D,CAXqB,GAaf+pZ,GAAe,WACnB,IAAMC,EAAoC,CAACzB,GAAOmB,QAASnB,GAAOoB,QAClE,OAAO,SAAC3pZ,GAAc,OACXgqZ,EAAgBj8Y,QAAQ/N,IAAuB,CAAC,CAC7D,CAJqB,GAMfiqZ,GAAc,WAClB,IAAMC,EACF,CAAC1B,GAAK2B,YAAa3B,GAAK4B,eAAgB5B,GAAK6B,QACjD,OAAO,SAACrqZ,GAAc,OACXkqZ,EAAUn8Y,QAAQ/N,IAAsB,CAAC,CACtD,CALoB,GAsBdsqZ,GAAiBjoZ,OAAO,iBACxBkoZ,GAAeloZ,OAAO,eACtBmoZ,GAAiBnoZ,OAAO,iBAKjBooZ,GAAQ,YAAAltY,EAAAA,EAAAA,GAAA,WAanB,WACIkjJ,EAAsBmC,EACtB8nP,GAoBD,OApB8B1+Y,EAAAA,KAAAA,GAOF,OAN7B0+Y,EAAyB,OAAXA,QAAW,IAAXA,EAAAA,EAAe,CAAC,GAMd7qP,YACd6qP,EAAY7qP,UACR+C,EAAUA,EAAQ/C,UAAyB0oP,GAAOsB,oBAE3B,MAAzBa,EAAY9qP,YACd8qP,EAAY9qP,UACRgD,EAAUA,EAAQhD,UAAyB2oP,GAAOoB,QAE/B,MAArBe,EAAYhrP,QACdgrP,EAAYhrP,MAAQkD,EAAUA,EAAQlD,MAAoB8oP,GAAK6B,QAExC,MAArBK,EAAY/qP,QACd+qP,EAAY/qP,MAAQiD,EAAUA,EAAQjD,MAAoB6oP,GAAK6B,QAChE,YAGG5pP,EAAUiqP,EAAa,IAAIn9X,IAAkBq1I,EAAU,CAACA,GAAW,IACzE,CAoDC,OApDA93J,EAAAA,EAAAA,CAAAA,CAAA/G,IAtCWumZ,GAAch5X,IAA1B,WAIE,OAHAhc,QAAQ05H,OACwB,MAA5BztI,KAAKknZ,KAA+BlnZ,KAAKknZ,IAAqB3hW,KAAO,EACrE,0CACGvlD,KAAKknZ,GACd,GAAC,CAAA1kZ,IAEWymZ,GAAcl5X,IAA1B,WAEE,OADAhc,QAAQ05H,OAA8B,MAAvBztI,KAAKmnZ,IAAwB,+BACpCnnZ,KAAKmnZ,GACf,GAAC,CAAA3kZ,IAAAA,OAAAutB,IA8BD,WACE,OAAQ/vB,KAAKmnZ,IAA2BhuZ,MAAQ,EAClD,GAAC,CAAAqJ,IAAAA,YAAAutB,IAED,WACE,OAAO/vB,KAAKipZ,IAAgB3qP,SAC9B,GAAC,CAAA97J,IAAAA,YAAAutB,IAED,WACE,OAAO/vB,KAAKipZ,IAAgB5qP,SAC9B,GAAC,CAAA77J,IAAAA,QAAAutB,IAED,WACE,OAAO/vB,KAAKipZ,IAAgB9qP,KAC9B,GAAC,CAAA37J,IAAAA,QAAAutB,IAED,WACE,OAAO/vB,KAAKipZ,IAAgB7qP,KAC9B,GAAC,CAAA57J,IAAAA,eAAA/D,MAED,SAAaqD,GACX9B,KAAKgpZ,IAAc,YAAalnZ,EAClC,GAAC,CAAAU,IAAAA,eAAA/D,MAED,SAAaqD,GACX9B,KAAKgpZ,IAAc,YAAalnZ,EAClC,GAAC,CAAAU,IAAAA,WAAA/D,MAED,SAAS+1C,GACPx0C,KAAKgpZ,IAAc,QAASx0W,EAC9B,GAAC,CAAAhyC,IAAAA,WAAA/D,MAED,SAAS+1C,GACPx0C,KAAKgpZ,IAAc,QAASx0W,EAC9B,GAAC,CAAAhyC,IAEOwmZ,GAAYvqZ,MAAb,SACHC,EAAaD,GACf,IAAM29T,EAAUp8T,KAAKipZ,IACrB,GAAe,MAAX7sF,EAAiB,CACnB,GAvGsB,SACxB19T,EAAaD,GACf,OAAQC,GACN,IAAK,YACH,OAAOupZ,GAAYxpZ,GACrB,IAAK,YACH,OAAO+pZ,GAAY/pZ,GACrB,IAAK,QACL,IAAK,QACH,OAAOiqZ,GAAWjqZ,GACpB,QACE,MAAM,IAAIX,MAAM,8BAAD,OAA+BY,EAAQ,iBAE5D,CA0FU0qZ,CAAoB1qZ,EAAUD,GAAQ,CACxC29T,EAAQ19T,GAAYD,EAAM,IAEgBgmE,EAFhB,IAEJzkE,KAAK+oZ,KAAe,IAA1C,IAAK,EAAL,qBAA4C,KAAjC1nP,EAAO,QACfA,EAAQ3iK,GAAiDD,EAC1D4iK,EAAQ/B,aAAc,EACvB,UAAA56F,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EAEH1kE,KAAKonZ,MAET,KAAC,EA3FkB,CAAQC,IE/CvBgC,GAASvoZ,OAAO,SAChBwoZ,GAAWxoZ,OAAO,WAKXi9J,GAAQ,YAAA/hJ,EAAAA,EAAAA,GAAA,WAInB,WACIkjJ,EACAqqP,GAGgC,MAFhCC,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAgC,KAChCL,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAgC,KAChCxB,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAA4B,KAQ8B,OAR1Bl9Y,EAAAA,KAAAA,IAElCyR,EAAAA,EAAAA,KAAAA,KACIgjJ,EACAsqP,GAA4B,CAAC,EAC7B,IAAIx9X,IAAkBu9X,EAAe,CAACA,GAAgB,MAErDD,IAAY,IAAIJ,GAAQhqP,EAAUqqP,EAAcJ,GACrDjtY,EAAKmtY,IAAU,IAAI/2F,GAAMpzJ,EAAUqqP,EAAc5B,GAAW,CAC9D,CAgBC,OAhBAp+Y,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,OAAAutB,IAED,WACE,OAAQ/vB,KAAKmnZ,IAAuBhuZ,MAAQ,EAC9C,EAAC81B,IAED,SAAS91B,GACN6G,KAAKmnZ,IAAuBhuZ,KAAOA,CACtC,GAAC,CAAAqJ,IAAAA,UAAAutB,IAED,WACE,OAAO/vB,KAAKspZ,GACd,GAAC,CAAA9mZ,IAAAA,SAAAutB,IAED,WACE,OAAO/vB,KAAKqpZ,GACd,KAAC,EAlCkB,CAAQhC,IDTvBoC,GAAW3oZ,OAAO,WAClB4oZ,GAAa5oZ,OAAO,aACb6oZ,GAAa7oZ,OAAO,aACpB8oZ,GAAS9oZ,OAAO,UAG7B,SAAYknZ,GACVA,EAAAA,EAAAA,KAAAA,GAAAA,OACAA,EAAAA,EAAAA,kBAAAA,GAAAA,oBACAA,EAAAA,EAAAA,OAAAA,GAAAA,SACAA,EAAAA,EAAAA,UAAAA,GAAAA,YACAA,EAAAA,EAAAA,SAAAA,GAAAA,UACD,CAND,CAAYA,KAAAA,GAAY,KAiBjB,IAAM6B,GAAW,WAgBtB,WACI3qP,EAAsBwjB,EACtB6mO,EAAiC1wO,EACjCu0I,EAAY08F,GAEd,GAFmDr/Y,EAAAA,KAAAA,GAlB9C,SAA2B,KAC3B,SAAiC,CACtC6uJ,SAAU,EACVjiB,MAAO,IAAI8d,GAAQ,EAAG,GACtBprH,OAAQ,IAAIorH,GAAQ,EAAG,IAgBnB20P,GAAmBP,EAAc,CACnC,IAAMC,EACFp8F,EAAK7tJ,SAAW6tJ,EAAK7tJ,SAASuqP,EAAgBl7Y,OAAS,KACrDwtT,EAAUotF,GACXp8F,EAAKkP,SAAWlP,EAAKkP,SAASktF,EAAYptF,SAC3C,KACEjjL,EAAQqwQ,GACTp8F,EAAK3vJ,OAAS2vJ,EAAK3vJ,OAAO+rP,EAAYhoZ,QACvC,KAEJxB,KAAK0pZ,IAAYpwP,SAAWiwP,EAAajwP,SACzCt5J,KAAK0pZ,IAAYryQ,MAAMqkB,KAAK6tP,EAAarkX,QACzCllC,KAAK0pZ,IAAY3/W,OAAO2xH,KAAK6tP,EAAax/W,QAE1C/pC,KAAKypZ,IACD,IAAI1rP,GAAQmB,EAAUqqP,EAAcC,EAAaptF,EAASjjL,GAGhEn5I,KAAKk/J,SAAWA,EAChBl/J,KAAK2pZ,IAAc9wO,EACnB74K,KAAK4pZ,IAAUlnO,CACjB,CAgDC,OAhDAn5K,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,UAAAutB,IAED,WACE,OAAO/vB,KAAKypZ,GACd,GAAC,CAAAjnZ,IAAAA,aAAA/D,MAED,SAAW4iK,GACT,IAAMkoP,EACS,MAAXloP,EAAkBA,EAAQ7/J,OAAOkmZ,IAAiB,KAClDjpP,EAA4BvP,GAGhC,GAFAlvJ,KAAKypZ,IAAYpoP,EAEbrhK,KAAK2pZ,IAAa,KACoBllV,EADpB,IACGzkE,KAAK2pZ,KAAY,IAAxC,IAAK,EAAL,qBAA0C,KAA/B9wO,EAAQ,QACjB,OAAQ74K,KAAK4pZ,KACX,KAAK5B,GAAa+B,KAChBlxO,EAASt8K,IAAMgtZ,EACf,MACF,KAAKvB,GAAagC,kBAChBvrP,EAAWxP,GACX4pB,EAASqH,aAAeqpO,EACxB1wO,EAASoH,aAAespO,EACxB,MACF,KAAKvB,GAAaiC,OAChBxrP,EAAWxP,GACX4pB,EAAS8G,UAAY4pO,EACrB,MACF,KAAKvB,GAAakC,UAChBzrP,EAAWxP,GACX4pB,EAAS0G,MAAQgqO,EACjB,MACF,KAAKvB,GAAamC,SAChBtxO,EAASsH,YAAcopO,EAI3B1wO,EAASvZ,aAAc,EACxB,UAAA56F,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EAGC6kV,IAEFA,EAAa9qP,SAAWA,EACxB8qP,EAAajwP,SAAWt5J,KAAK0pZ,IAAYpwP,SACzCiwP,EAAarkX,OAASllC,KAAK0pZ,IAAYryQ,MACvCkyQ,EAAax/W,OAAS/pC,KAAK0pZ,IAAY3/W,QAEzC/pC,KAAKk/J,UACP,KAAC,EA1FqB,MACduqP,GAAQ,GACRC,GEtBV,sBAAMU,GAAkBtpZ,OAAO,kBACzBupZ,GAAoBvpZ,OAAO,oBAC3BwpZ,GAA4BxpZ,OAAO,4BAK5BypZ,GAAqB,YAAAvuY,EAAAA,EAAAA,GAAA,WAShC,WACIkjJ,EAAsBkuJ,EACtBqD,EACA+5F,GAA8C,MAAA//Y,EAAAA,KAAAA,GAChDyR,EAAAA,EAAAA,KAAAA,KAAMgjJ,EAAUuxJ,EAAsB+5F,GAGM,MAAxC/5F,EAAqBC,kBACvBD,EAAqBC,gBAAkB,CAAC,EAAG,EAAG,EAAG,IAEP,MAAxCD,EAAqBmN,kBACvBnN,EAAqBmN,gBAAkB,GAEE,MAAvCnN,EAAqBkN,iBACvBlN,EAAqBkN,eAAiB,GAGxC,IACoB8sF,EAEhBh6F,EAFFE,iBAC0B+5F,EACxBj6F,EADFoN,yBAGF,EAA4B2sF,EAAoBz9Y,SAAS7J,OAAOzE,MAAzDlC,EAAG,EAAHA,IAAK2jL,EAAY,EAAZA,aAgB4D,OAdxEhkK,EAAKmuY,IAAqB,IAAIR,GAC1B3qP,EACA8oP,GAAa+B,KACbxtZ,EACAiuZ,EACAp9F,EACAq9F,GAA8C,MAElDvuY,EAAKouY,IAA6B,IAAIT,GAClC3qP,EACA8oP,GAAagC,kBACb9pO,EACAsqO,EACAp9F,EACAs9F,GAA8D,MAAM,CAC1E,CAkEC,OAlEAnhZ,EAAAA,EAAAA,CAAAA,CAAA/G,IA3CW4nZ,GAAer6X,IAA3B,WACE,OAAO/vB,KAAKknZ,GACd,GAAC,CAAA1kZ,IAAAA,kBAAAutB,IA4CD,WACE,OAAQ/vB,KAAKmnZ,IACRz2F,eACP,GAAC,CAAAluT,IAAAA,iBAAAutB,IAED,WACE,OAAQ/vB,KAAKmnZ,IACRxpF,cACP,GAAC,CAAAn7T,IAAAA,kBAAAutB,IAED,WACE,OAAQ/vB,KAAKmnZ,IACRvpF,eACP,GAAC,CAAAp7T,IAAAA,mBAAAutB,IAED,WACE,OAAO/vB,KAAKqqZ,GACd,GAAC,CAAA7nZ,IAAAA,2BAAAutB,IAED,WACE,OAAO/vB,KAAKsqZ,GACd,GAAC,CAAA9nZ,IAAAA,qBAAA/D,MAED,SAAmBksZ,GACjB,IAAMnjX,EAAQ,IAAI+zH,GACdovP,aAAgBhuZ,MAClB6qC,EAAMmyH,UAAUgxP,GAEhBnjX,EAAMvY,IAAI07X,GAAM13G,sBACjB,IAC2CxuO,EAD3C,IACsBzkE,KAAKoqZ,KAAgB,IAA5C,IAAK,EAAL,qBAA8C,KAAnCvxO,EAAQ,QACjBA,EAASrxI,MAAMvY,IAAIuY,GACfmjX,aAAgBhuZ,MAClBk8K,EAASrkJ,QAAWm2X,EAAM,IAE1BA,EAAO,CAAC,EAAG,EAAG,EAAG9xO,EAASrkJ,SAC1BgT,EAAM+/C,QAAQojU,IAEjB,UAAAjmV,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAEG1kE,KAAKmnZ,IACYz2F,gBAAkBi6F,EACvC3qZ,KAAKonZ,KACP,GAAC,CAAA5kZ,IAAAA,oBAAA/D,MAED,SAAkBA,GAAa,IACeqmE,EADf,IACN9kE,KAAKoqZ,KAAgB,IAA5C,IAAK,EAAL,qBAA8C,CAA3B,QACRjsO,UAAY1/K,EACtB,UAAAsmE,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAEG/kE,KAAKmnZ,IACYxpF,eAAiBl/T,EACtCuB,KAAKonZ,KACP,GAAC,CAAA5kZ,IAAAA,qBAAA/D,MAED,SAAmBA,GAAa,IACcgyI,EADd,IACPzwI,KAAKoqZ,KAAgB,IAA5C,IAAK,EAAL,qBAA8C,CAA3B,QACRlsO,UAAYz/K,EACtB,UAAAiyI,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAEG1wI,KAAKmnZ,IACYvpF,gBAAkBn/T,EACvCuB,KAAKonZ,KACP,KAAC,EAlH+B,CAAQC,ICLpCuD,GAAwB9pZ,OAAO,wBAC/B+pZ,GAAiB/pZ,OAAO,iBACxBgqZ,GAAoBhqZ,OAAO,oBAC3BiqZ,GAAmBjqZ,OAAO,mBAC1BkqZ,GAAwBlqZ,OAAO,wBAC/BmqZ,GAAoBnqZ,OAAO,oBACpBoqZ,GAAoBpqZ,OAAO,oBAClCqqZ,GAAcrqZ,OAAO,cACdsqZ,GAAqBtqZ,OAAO,qBAC5BuqZ,GAA0BvqZ,OAAO,0BACjCwqZ,GAAaxqZ,OAAO,aACpByqZ,GAAazqZ,OAAO,aACpB0qZ,GAAkB1qZ,OAAO,kBAChC2qZ,GAAY3qZ,OAAO,YACZ4qZ,GAAc5qZ,OAAO,cAC5B6qZ,GAAiB7qZ,OAAO,iBAKjBy6K,GAAS,cAAAv/J,EAAAA,EAAAA,GAAA,WAkBpB,WACIkjJ,EAAsBkuJ,EAAYixF,EAClCuN,EAAmBC,EACnBC,EACAtB,GAC8C,MAA9CuB,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,QAAqC3hZ,EAUtC,OAV+CK,EAAAA,KAAAA,IAChDyR,EAAAA,EAAAA,KAAAA,KAAMgjJ,EAAUm/O,EAAcmM,IAhBzBtuY,IAAgB,IAAI8P,IAiBzB9P,EAAKovY,IAAcM,EACnB1vY,EAAKuvY,IAAaI,EAClB3vY,EAAKyvY,IAAkBG,EAEH,MAAhBC,EACF7vY,EAAKivY,IAAa/9F,GAElBlxS,EAAKgvY,IAAqBa,EAC3B,CACH,CAmQC,OAnQAxiZ,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,EAAAutB,IAvBD,WACE,OAAQ/vB,KAAKknZ,IACRn6Y,SACA7J,OACAzE,KACP,GAAC,CAAA+D,IAoBO2oZ,GAAW1sZ,MAAZ,SAAc2uT,GACnB,IAAMluJ,EAAWl/J,KAAKonZ,IAChB/I,EAAer+Y,KAAKmnZ,IACpBqD,EACFxqZ,KAAKknZ,IAEL7I,EAAa/xT,YACb+xT,EAAa/xT,WAAgD,qCAC/Dv4E,QAAQk/C,KAAK,YAAD,OAAaorV,EAAallZ,KAAI,qTAOH,MAArCklZ,EAAa5tF,uBACf4tF,EAAa5tF,qBAAuB,CAAC,GAEvCzwT,KAAK4qZ,IAAyB,IAAIL,GAC9BrrP,EAAUkuJ,EAAMixF,EAAa5tF,qBAAsB+5F,GAEpB,MAA/BnM,EAAajgF,iBACfigF,EAAajgF,eAAiB,CAAC,EAAG,EAAG,IAGP,MAA5BigF,EAAa16L,cACf06L,EAAa16L,aAAc,GAGC,MAA1B06L,EAAatgF,YACfsgF,EAAatgF,UAAY,UAGK,MAA5BsgF,EAAargF,cACfqgF,EAAargF,YAAc,IAG7B,IACiBguF,EAGb3N,EAHFpgF,cACkBguF,EAEhB5N,EAFFngF,iBACiBguF,EACf7N,EADFhgF,gBAGF,EACImsF,EAAoBz9Y,SAAS7J,OAAOzE,MADjCkhL,EAAS,EAATA,UAAWJ,EAAK,EAALA,MAAOY,EAAW,EAAXA,YAGzBngL,KAAK6qZ,IAAkB,IAAIhB,GACvB3qP,EACA8oP,GAAaiC,OACbtqO,EACA6qO,EACAp9F,EACA4+F,GAAwC,MAG5ChsZ,KAAK8qZ,IAAqB,IAAIjB,GAC1B3qP,EACA8oP,GAAakC,UACb3qO,EACAirO,EACAp9F,EACA6+F,GAA8C,MAGlDjsZ,KAAK+qZ,IAAoB,IAAIlB,GACzB3qP,EACA8oP,GAAamC,SACbhqO,EACAqqO,EACAp9F,EACA8+F,GAA4C,KAElD,GAAC,CAAA1pZ,IAEK4oZ,GAAkB3sZ,MAAAA,WAAA,mBAAxB,2FACiC,MAA3BuB,KAAKkrZ,IAA0B,CAAA50P,EAAAA,KAAAA,GAAA,aAAAA,EAAAA,KAAAA,EACHt2J,KAAKkrZ,IAAoBiB,aAAY,OAShC,OATgCC,EAAAA,EAAAA,KAA5Dn9X,EAAG,EAAHA,IAAK4pJ,EAAQ,EAARA,SAGZ74K,KAAKknZ,IAAsBj4X,EAE3BjvB,KAAKmrZ,IAAanrZ,KAAKkrZ,IAAoB99F,MAE3CptT,KAAKkrZ,SAAqB9gZ,EAE1BpK,KAAKqsZ,aAAY,aAAG,kHAAe,kBAC5BxzO,GAAgC,iCAElC74K,KAAKknZ,IAAqBn6Y,SAAS7J,OAAOzE,OAAK,iDACvD,kDAfuBA,IAevB,CAAA+D,IAEA6oZ,GAAuB5sZ,MAAxB,WACE,GAA+B,MAA3BuB,KAAKkrZ,IAGT,MAAM,IAAIptZ,MAAM,aAAD,OAAckC,KAAK7G,KAAI,0GAExC,GAAC,CAAAqJ,IAAAA,eAAA/D,MAAAA,WAAA,mBAED,qFAAAqiK,EAAAA,KAAAA,EACQ9gK,KAAKorZ,MAAqB,gDACjC,kDAJA3sZ,IAIA,CAAA+D,IAAAA,WAAAutB,IAED,WACE,OAAkC,MAA3B/vB,KAAKkrZ,GACd,GAAC,CAAA1oZ,IAAAA,WAAAutB,IAED,WACE,OAAO/vB,KAAKyrZ,GACd,GAAC,CAAAjpZ,IAEA+oZ,GAAU9sZ,MAAX,SAAaotZ,GACX7rZ,KAAKyrZ,IAAaI,CACpB,GAAC,CAAArpZ,IAAAA,OAAAutB,IAED,WACE,OAAQ/vB,KAAKmnZ,IAA4BhuZ,IAC3C,GAAC,CAAAqJ,IAAAA,OAAAysB,IAED,SAAS91B,GACP,IAAMmzZ,EAAkBtsZ,KAAKmnZ,IAK7B,GAJsB,MAAlBmF,IACFA,EAAenzZ,KAAOA,GAGQ,MAA5B6G,KAAKknZ,IAA6B,KACiBziV,EADjB,IACRzkE,KAAKknZ,KAAoB,IAArD,IAAK,EAAL,qBAAuD,CAA/B,QACR/tZ,KAAOA,EACtB,UAAAurE,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EAEL,GAAC,CAAAliE,IAAAA,uBAAAutB,IAED,WAEE,OADA/vB,KAAKqrZ,MACErrZ,KAAK4qZ,GACd,GAAC,CAAApoZ,IAAAA,gBAAAutB,IAED,WAEE,OADA/vB,KAAKqrZ,MACErrZ,KAAK6qZ,GACd,GAAC,CAAAroZ,IAAAA,mBAAAutB,IAED,WAEE,OADA/vB,KAAKqrZ,MACErrZ,KAAK8qZ,GACd,GAAC,CAAAtoZ,IAAAA,kBAAAutB,IAED,WAEE,OADA/vB,KAAKqrZ,MACErrZ,KAAK+qZ,GACd,GAAC,CAAAvoZ,IAAAA,iBAAAutB,IAED,WAEE,OADA/vB,KAAKqrZ,MACGrrZ,KAAKmnZ,IAAqC/oF,cACpD,GAAC,CAAA57T,IAAAA,QAAAutB,IAED,WACE,OAAO/vB,KAAKsrZ,GACd,GAAC,CAAA9oZ,IAEAgpZ,GAAe/sZ,MAAhB,WACE,OAAOuB,KAAK0rZ,GACd,GAAC,CAAAlpZ,IAAAA,aAAA/D,MAED,SAAWtF,GACT,IAAMg3Y,EAAcnwY,KAAK2rZ,IAAgB57X,IAAI52B,GAC7C,OAAsB,MAAfg3Y,GAAuBnwY,KAAK0rZ,IAAat9W,IAAI+hW,EAAYvhY,MAClE,GAAC,CAAApM,IAAAA,oBAAA/D,MAED,SAAkB8tZ,GAChBvsZ,KAAKqrZ,MACL,IAAM7jX,EAAQ,IAAI+zH,GACdgxP,aAAe5vZ,MACjB6qC,EAAMmyH,UAAU4yP,GAEhB/kX,EAAMvY,IAAIs9X,GAAKt5G,sBAChB,IAE6BnuO,EAF7B,IACsB9kE,KAAKknZ,KACE,IAD9B,IAAK,EAAL,qBACgC,CADb,QAER3oO,SAAStvJ,IAAIuY,GACvB,UAAAu9B,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACA/kE,KAAKmnZ,IAAqC/oF,eACvC52R,EAAM+/C,UACVvnF,KAAKonZ,KACP,GAAC,CAAA5kZ,IAEAyoZ,GAAiBxsZ,MAAlB,WACEuB,KAAKqrZ,MACL,IAE8B56Q,EAFxB4tQ,EAAer+Y,KAAKmnZ,IAAoC,IACvCnnZ,KAAKknZ,KACE,IAD9B,IAAK,EAAL,qBACgC,KADrBruO,EAAQ,QAE4C,SAAxD74K,KAAKmnZ,IAAqCppF,UAC7CllJ,EAAS0I,UAAY88N,EAAargF,YAEjCnlJ,EAAS0I,eAAmCn3K,EAG/CyuK,EAASvZ,aAAc,EACxB,UAAA5uB,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACH,GAAC,CAAAluI,IAAAA,iBAAA/D,MAED,SAAe+tZ,GACbxsZ,KAAKqrZ,MACJrrZ,KAAKmnZ,IAAqCnpF,YAAcwuF,EACzDxsZ,KAAKirZ,MACLjrZ,KAAKonZ,KACP,GAAC,CAAA5kZ,IAAAA,iBAAA/D,MAED,WAEE,OADAuB,KAAKqrZ,MACGrrZ,KAAKmnZ,IAAqCnpF,WACpD,GAAC,CAAAx7T,IAAAA,iBAAA/D,MAED,SAAeklN,GACb3jN,KAAKqrZ,MAA2B,IAEFh5Q,EAFE,IACTryI,KAAKknZ,KACE,IAD9B,IAAK,EAAL,qBACgC,KADrBruO,EAAQ,QAMjBA,EAASgD,KAAO8nC,EAAct8D,GAAaF,GAC3C0xB,EAASvZ,aAAc,EACxB,UAAAhtB,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACAtyI,KAAKmnZ,IAAqCxjM,YAAcA,EACzD3jN,KAAKonZ,KACP,GAAC,CAAA5kZ,IAAAA,iBAAA/D,MAED,WAEE,OADAuB,KAAKqrZ,MACGrrZ,KAAKmnZ,IAAqCxjM,WACpD,GAAC,CAAAnhN,IAAAA,eAAA/D,MAED,SAAas/T,GACX/9T,KAAKqrZ,MACL,IAAMoB,EACF,SAAC5zO,EAAgCgY,GAC/BhY,EAASkD,YAAc8U,EACvBhY,EAAS2D,YAAcqU,CACzB,EAEH7wL,KAAKmnZ,IAAqCppF,UAAYA,EAAU,IAGnCprL,EAHmC,IAE1C3yI,KAAKknZ,KACE,IAD9B,IAAK,EAAL,qBACgC,KADrBruO,EAAQ,QAEjB4zO,EAAmB5zO,EAAwB,UAAdklJ,GAC7B/9T,KAAKirZ,MACLpyO,EAASvZ,aAAc,EACxB,UAAA1sB,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAED5yI,KAAKonZ,KACP,GAAC,CAAA5kZ,IAAAA,eAAA/D,MAED,WAEE,OADAuB,KAAKqrZ,MACGrrZ,KAAKmnZ,IAAqCppF,SACpD,KAAC,EArSmB,CAAQspF,IAWzBr2U,GAHK06U,GAGJV,KCjCArB,GAAa7oZ,OAAO,aACpB4rZ,GAAwB5rZ,OAAO,wBAC/B6qZ,GAAiB7qZ,OAAO,iBACxB6rZ,GAAQ7rZ,OAAO,QAKR8rZ,IAJc9rZ,OAAO,cACNA,OAAO,eACMA,OAAO,4BAClBA,OAAO,iBACZA,OAAO,aACnB+rZ,GAAsB/rZ,OAAO,sBAC7BgsZ,GAAqBhsZ,OAAO,qBAG5By0P,GAAI,GAGf,WAAYp8P,GAAYsR,EAAAA,KAAAA,GAFxB,KAAAtR,KAAe,GACf,SAAc,IAAIwD,MAEhBqD,KAAK7G,KAAOA,CACd,OAHCyzZ,GAOI,sBAAMG,GAAc,YAAA/wY,EAAAA,EAAAA,GAAA,WAUzB,WACIq3K,EAAY25N,EACZlB,EACA5N,GAA0C,MAAAzzY,EAAAA,KAAAA,IAC5CyR,EAAAA,EAAAA,KAAAA,KAAMm3K,EAAKl6L,OAXb+iB,IAAe,IAAIihB,IAEZjhB,EAAAA,IAA0B,IAAIihB,IAC9BjhB,EAAAA,IAAwB,EACxBA,EAAAA,IAAuB,EAQ5BA,EAAKywY,IAASt5N,EACd,IAAO+5H,EAAmC8wF,EAAnC9wF,KAAMqvF,EAA6ByB,EAA7BzB,UAAWC,EAAkBwB,EAAlBxB,eACxBxgY,EAAKyvY,IAAkBG,EACvB5vY,EAAKm3K,KAAKp0B,SAASkxO,YAAc2b,EAEjC,IAAMmB,EACFvQ,EAAe3sX,IAAIsjK,EAAKxa,UACM,MAA9Bo0O,EAAiBt1O,UACnBz7J,EAAK2wY,IAAuB3wY,EAAK4wY,IAC7BG,EAAiBt1O,UAErB5jK,QAAQwN,MAAM,cAAD,OACK8xK,EAAKl6L,KAAI,0CAI7B,IAAMo/T,EACDllI,EAAKp0B,SAASs5J,cACf,CAAC,EAEL,GAA2B,MAAvBA,EAAakB,OAEf,OADA1lT,QAAQwN,MAAM,+CACd,KAGF,IAKM2rY,IALmB9/F,EAAa,QAAK,IAGrBmL,EAAakB,QAAQiF,YAAc,IAEpBnG,EAAamG,YAClD,GAAqB,MAAjBwuF,EAEF,OADAn5Y,QAAQwN,MAAM,yCACd,KAIF,GAA8B,MAA1B2rY,EAAcr0O,SAChB38J,EAAKytY,IAAY16X,IACbi+X,EAAcr0O,SAAUm0O,EAAYE,EAAcr0O,eACjD,CACL,IAAMs0O,EAAaH,EAAYxpT,WAAU,SAAC4/I,GACxC,MAAoB,YAAbA,EAAIjqP,IACb,IACIg0Z,GAAc,EAChBjxY,EAAKytY,IAAY16X,IAAIk+X,EAAYH,EAAYG,IAE7Cp5Y,QAAQk/C,KAAK,kCAIjB,GAAIi6V,EAAc5gU,YACd4gU,EAAc5gU,WAAmC,uBAAG,CACtD,IAOgD7nB,EAP1C2oV,EACFF,EAAc5gU,WAAmC,uBAG/Cw4S,EADa2X,EAAU3uT,OAAO2uJ,KAAKnwJ,WACe,uBAAEo4S,SAE1D,IACsB0oB,EAAkBtzF,UAAQ,IAAhD,IAAK,EAAL,qBAAkD,KAAvCx1K,EAAO,QACV+oQ,EAAaL,EAAY1oQ,EAAQu0B,UAEvC38J,EAAKytY,IAAY16X,IAAIq1H,EAAQu0B,SAAUw0O,GAAY,IACbvoV,EADa,IAC7Bw/E,EAAQogP,UAAQ,IAAtC,IAAK,EAAL,qBAAwC,KAA7BC,EAAO,QACTxrY,EAAQ2rY,EAAaH,GAArBxrY,KACP+iB,EAAKwwY,IAAuBz9X,IAAI01W,EAAS0oB,GAEzCA,EAAW7B,MAAmBp/X,IAAIu4W,GAE7BmnB,EAAc19W,IAAIj1C,IACrB2yZ,EAAc78X,IAAI91B,EAAM,CAACA,KAAAA,EAAMyV,MAAO+1X,IAEzC,UAAA5/T,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EACF,UAAAL,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EACF,QACH,CAkIC,OAlIAn7D,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,OAAAutB,IAED,WACE,OAAO/vB,KAAK2sZ,GACd,GAAC,CAAAnqZ,IAAAA,oBAAA/D,MAAAA,WAAA,mBAED,WAAwBo6K,GAAgB,uEACW,GAC/B,OADZw0O,EAAartZ,KAAK2pZ,IAAY55X,IAAI8oJ,IAClB,CAAAvpJ,EAAAA,KAAAA,EAAA,aAAAA,EAAAA,KAAAA,EACO+9X,EAAWjC,MAAqB,OAA3DprZ,KAAKqzL,KAAKxa,SAAW,EAAH,KAClB74K,KAAK8sZ,IAAsBj0O,EAAS,gCAE/B74K,KAAKqzL,KAAKxa,UAAyB,gDAC3C,mDATAp6K,IASA,CAAA+D,IAAAA,oBAAA/D,MAED,WACE,OAAOuB,KAAK2pZ,IAAY55X,IAAI/vB,KAAK8sZ,IACnC,GAAC,CAAAtqZ,IAAAA,cAAA/D,MAED,SAAYmQ,GACV,OAAO5O,KAAK2pZ,IAAY55X,IAAInhB,EAC9B,GAAC,CAAApM,IAAAA,gBAAA/D,MAAAA,WAAA,mBAED,WAAoBtF,GAAiB,0EACvB,MAARA,EAAY,CAAAm9J,EAAAA,KAAAA,EAAA,+BACPt2J,KAAKstZ,kBAAkBttZ,KAAK6sZ,MAAqB,UAEvB,MAA/B7sZ,KAAK0sZ,MAAkC1sZ,KAAK2rZ,IAAgBv9W,IAAIj1C,GAAK,CAAAm9J,EAAAA,KAAAA,EAAA,MAClB,OAA/Cw1P,EAAgB9rZ,KAAK2rZ,IAAgB57X,IAAI52B,GAAM,kBAC9C6G,KAAKutZ,oBAAoBzB,EAAcl9Y,QAAM,gCAE/C,MAAI,gDACZ,mDAXAnQ,IAWA,CAAA+D,IAAAA,sBAAA/D,MAAAA,WAAA,mBAEO,WAA0BmQ,GACI,0EACD,MAA/B5O,KAAK0sZ,KAA2C,MAAT99Y,EAAa,CAAAkyJ,EAAAA,KAAAA,EAAA,MACC,GACvC,OADV+X,EAAW74K,KAAK0sZ,IAAuB38X,IAAInhB,IAC7B,CAAAkyJ,EAAAA,KAAAA,EAAA,+BACX9gK,KAAKstZ,kBAAkBz0O,EAASjqK,QAAM,gCAG1C,MAAI,gDACZ,mDAXAnQ,IAWA,CAAA+D,IAAAA,sBAAA/D,MAAAA,WAAA,mBAED,+FACqC,MAA/BuB,KAAK0sZ,IAA8B,CAAAljP,EAAAA,KAAAA,EAAA,uCAAA94B,EAAAA,EAGnB1wI,KAAK0sZ,IAAuB9qZ,QAAM4nK,EAAAA,KAAAA,EAAA94B,EAAAA,IAAA,0BAAA84B,EAAAA,KAAAA,GAAA,MAE1B,GAFjB56J,EAAK,QAGkB,OAF1ByhY,EAAkBrwY,KAAKqzL,KAAKp0B,SAASqmO,iBAAiBv1W,IAAInhB,IAE5CiqK,SAAgB,CAAArP,EAAAA,KAAAA,GAAA,oDAAAA,EAAAA,KAAAA,GAGRxpK,KAAKutZ,oBAAoB3+Y,GAAM,QACtC,OADfkuY,EAAgB,EAAH,QAEjBzM,EAAgBx3N,SAAWikO,GAC5B,QAAAtzO,EAAAA,KAAAA,EAAA,cAAAA,EAAAA,KAAAA,GAAA,cAAAA,EAAAA,KAAAA,GAAAA,EAAAA,GAAAA,EAAAA,MAAAA,GAAA94B,EAAAA,EAAAA,EAAAA,IAAA,eAAA84B,EAAAA,KAAAA,GAAA94B,EAAAA,IAAA,6EAEJ,kDAjBAjyI,IAiBA,CAAA+D,IAAAA,cAAAutB,IAED,WACE,OAAO/vB,KAAK0sZ,GACd,GAAC,CAAAlqZ,IAAAA,aAAA/D,MAED,SAAW+uZ,EAA2Bpd,GACpC,IAAKpwY,KAAKytZ,sBAAsBrd,GAC9B,OAAO,EAIJpwY,KAAK2rZ,IAAgBv9W,IAAIgiW,IAC5BpwY,KAAK2rZ,IAAgB18X,IACjBmhX,EAAa,CAACj3Y,KAAMi3Y,EAAaxhY,MAAO5O,KAAK2rZ,IAAgBpmW,OAEnE,IACMmoW,EADmB1tZ,KAAK2rZ,IAAgB57X,IAAIqgX,GACZxhY,MAWtC,OARA4+Y,EAAgBhC,MAAmBp/X,IAAIshY,GAGvC1tZ,KAAK0sZ,IAAuBz9X,IAAIy+X,EAAcF,GAC9CxtZ,KAAK2pZ,IAAY16X,IAAIu+X,EAAgB5+Y,MAAO4+Y,GAE5CxtZ,KAAK2tZ,sBAAsBD,EAAcF,IAElC,CACT,GAAC,CAAAhrZ,IAAAA,gBAAA/D,MAED,SAAcivZ,GACZ,GAAI1tZ,KAAK4tZ,YAAYx/W,IAAIs/W,GAAe,CACtC1tZ,KAAK4tZ,YAAYpwX,OAAOkwX,GAExB,IAAMG,EAAc7tZ,KAAKqzL,KAAKp0B,SAASqmO,iBAEpB,MAAfuoB,GACFA,EAAYrwX,OAAOkwX,GAGzB,GAAC,CAAAlrZ,IAAAA,wBAAA/D,MAEO,SACJivZ,EAAsBF,GAExBA,EAAgBhC,MAAmBp/X,IAAIshY,GAEvC1tZ,KAAKqzL,KAAKp0B,SAASkxO,YAAcnwY,KAAK2rZ,IAEtC3rZ,KAAKqzL,KAAKp0B,SAASqmO,iBAAmBtlY,KAAKqzL,KAAKp0B,SAASqmO,kBACrD,IAAInoW,IACIn9B,KAAKqzL,KAAKp0B,SAASqmO,iBAE3Br2W,IAAIy+X,EAAc,CACpB70O,SAAU20O,EAAgBtG,IAAqBn6Y,SAAS7J,OAAOzE,MAC/DmmY,kBAAmB4oB,EAAgB5+Y,OAEvC,GAAC,CAAApM,IAAAA,wBAAA/D,MAEO,SAAsB2xY,GAC5B,IAAM0b,EAAgB9rZ,KAAK2rZ,IAAgB57X,IAAIqgX,GAE/C,OAAqB,MAAjB0b,IAAyB9rZ,KAAK4tZ,YAAYx/W,IAAI09W,EAAel9Y,SAC/DmF,QAAQk/C,KAAK,iCAAD,OACRm9U,EAAW,6CACR,EAIX,KAAC,EA7NwB,CAAQ76I,OAGhCo0J,GAAU,GAEH+C,GAAqB,GACrBG,GAAmB,GACnBC,GC5BH,IAAMnD,GAAa7oZ,OAAO,aAC3BgtZ,GAAahtZ,OAAO,aACpBitZ,GAASjtZ,OAAO,SACTktZ,GAAkBltZ,OAAO,cAEzBi9Y,IADej9Y,OAAO,eACEA,OAAO,yBAC/BmtZ,GAA4BntZ,OAAO,4BACnCotZ,GAAiBptZ,OAAO,iBACxBqtZ,GAAcrtZ,OAAO,cACrBstZ,GAAsBttZ,OAAO,sBAC7ButZ,GAAqBvtZ,OAAO,qBAC5BwtZ,GAAextZ,OAAO,eACtBytZ,GAAqBztZ,OAAO,qBACnC0tZ,GAAiB1tZ,OAAO,iBACxB2tZ,GAAiB3tZ,OAAO,iBAIjB4tZ,GAAU,GAKrB,WACIthG,EAAYuvF,EACZgS,EACAxC,GACiE1hZ,EAAAA,KAAAA,GACnEzK,KAAKotT,KAAOA,EACZptT,KAAK28Y,eAAiBA,EACtB38Y,KAAK2uZ,OAASA,EACd3uZ,KAAKmsZ,WAAaA,CACpB,IAgBWyC,GAAK,YAUhB,WACI1Q,GAC+B,WAA/Bh/O,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAuB,WAAO,EAACz0J,EAAAA,KAAAA,GAX5B,SAAe,IAAI9N,MACnB,SAAe,IAAIA,MACnB,SAAW,IAAIA,MACf,SAAoB,IAAIA,MAExB,SAA+B,WAAO,EAEtC,SAAiB,IAAIwgC,IAK1Bn9B,KAAKwuZ,IAAkBtvP,EACvBl/J,KAAK+9Y,IAAyBG,EAC9B,IAAO9wF,EAAmC8wF,EAAnC9wF,KAAMqvF,EAA6ByB,EAA7BzB,UAAWE,EAAkBuB,EAAlBvB,eACxB38Y,KAAKmuZ,IAAe1R,EAAU1qN,MAAM,IAEiBttH,EAFjB,IAER2oP,EAAKz1I,UAAW5kH,WAAS,IAArD,IAAK,EAAL,qBAAuD,oBAA3Cr2D,EAAC,KAAEm8K,EAAQ,KACfg2O,EACFlS,EAAe5sX,IAAI8oJ,GAEG,MAAtBg2O,EACF7uZ,KAAK2pZ,IAAY7sZ,KAAK,IAAIy+K,GACtBrc,EACAkuJ,EACAv0I,EACAn8K,GACA,EACAsD,KAAKsuZ,IACLO,IACC,WACL,IACMC,GADe1hG,EAAgB,WAAK,IACL1wT,GAG/BqyZ,EAAmBryZ,EACnBsyZ,EAAoB,8BAAG,6FAAA1/X,EAAAA,KAAAA,EAEjBmtX,EAAU3uT,OAAO4kO,cACnB,WAAYq8F,GAAyC,OAMzB,OAR9BjS,EAAa,OAMbmS,EAAmB,IAAIjjY,IAC7B2wX,EAAe1tX,IAAI6/X,EAAiBG,GACpCA,EAAiB7iY,IAAI0wX,GAAe,kBAE7B,CAAC7tX,IAAKggY,EAAkBp2O,SAAUikO,IAAc,2CACxD,kBAZyB,mCAe1B5gY,EAAKytY,IAAY7sZ,KAAK,IAAIy+K,GACtBrc,EACAkuJ,EACA0hG,EACApyZ,GACA,EACAwf,EAAKoyY,IACLO,EACA,IAAIH,GACAthG,EAAMuvF,EAAgBmS,EAAiBE,IAAwB,CA9BlE,GAsCT,UAAAtqV,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACA,IAE6CI,EAFvCoqV,EAAY,IAAI/xX,IAChBgyX,EAAY,IAAIxyZ,MAAkB,IACnB8/Y,EAAU1qN,MAAMn0K,UAAQ,IAA7C,IAAK,EAAL,qBAA+C,KAApCzb,EAAM,QACfgtZ,EAAUryZ,KAAKqF,GAGjB,UAAA4iE,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACA,KAAOoqV,EAAUv3Z,OAAS,GAAG,CAC3B,IAAMuK,EAASgtZ,EAAUn+V,MAErBv3C,EAAkB,KAElBtX,aAAkB+oL,IACpBzxK,EAAO,IAAIszY,GACP5qZ,EACAnC,KAAK23K,UACL33K,KAAKsuZ,IACLpQ,GACJl+Y,KAAKguZ,IAAiBlxZ,KAAK2c,IAE3BA,EAAO,IAAI87O,GAAKpzP,EAAOhJ,MAGzB,IAAM+jE,EAAyBgyV,EAAUn/X,IAAI5tB,GAC/B,MAAV+6D,EACFA,EAAO0vV,IAAW9vZ,KAAK2c,GAEvBzZ,KAAK+tZ,IAAQjxZ,KAAK2c,GAEpBzZ,KAAK8tZ,IAAYhxZ,KAAK2c,GAAM,IAEOg3H,EAFP,IAERtuI,EAAOyb,UAAQ,IAAnC,IAAK,EAAL,qBAAqC,KAA1Bwb,EAAK,QACd+1X,EAAUryZ,KAAKs8B,GACf81X,EAAUjgY,IAAI9sB,EAAQsX,GACvB,UAAAi3H,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EAEL,CAuPC,OArPDnnI,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,YAAAutB,IAMA,WACE,OAAO/vB,KAAK2pZ,GACd,GAAC,CAAAnnZ,IAAAA,EAAA/D,MAED,WACE,IAAMimY,EAAW/nY,MAAM0lB,KAAKriB,KAAKsuZ,IAAcvhZ,UAK/C,OAJA23X,EAASlrS,MAAK,SAACx9F,EAAGuK,GAChB,OAAOvK,EAAE4S,MAAQrI,EAAEqI,KACrB,IAEO81X,EAASnoY,KAAI,SAACmnC,GACnB,OAAOA,EAAKvqC,IACd,GACF,GAAC,CAAAqJ,IAAAA,oBAAA/D,MAED,SAAkBtF,GAChB,IAAM0yF,EAAU7rF,KAAK2pZ,IAAY7nZ,QAAO,SAAA+2K,GACtC,OAAOA,EAAS1/K,OAASA,CAC3B,IAEA,OAAI0yF,EAAQj0F,OAAS,EACZi0F,EAAQ,GAEV,IACT,GAGA,CAAArpF,IAIC4rZ,GAAmB3vZ,MAApB,SAAsBitL,GAAoB,WAKxC,OAJaA,EAAU0pG,gBAAgBp1R,KAAKmuZ,KAAc,GAI9C5xZ,KAAI,SAACg4S,GACf,IAAM66G,EAAQzgV,EAAKm/U,IAAYtrS,MAAK,SAAC/oG,GACnC,GAAIA,aAAgBszY,IACAtzY,EACJ45K,OAASkhH,EAAIpyS,OACzB,OAAO,EAGX,OAAO,CACT,IAEA,OAAa,MAATitZ,EACKA,EAAMC,oBAER,IACT,GACF,GAEA,CAAA7sZ,IAIC6rZ,GAAkB5vZ,MAAnB,SAAqBitL,GACnB,IAAM/T,EAAY33K,KAAKouZ,IAAqB1iO,GAE5C,OAAI/T,EAAU//K,OAAS,EACd+/K,EAAU,GAGZ,IACT,GAEA,CAAAn1K,IAIM0rZ,GAAczvZ,MAAAA,WAAA,mBAApB,WAAsB2xY,GAAwB,qFAAA99P,EAAAA,EACpBtyI,KAAKguZ,KAAgB13P,EAAAA,KAAAA,EAAAhkB,EAAAA,IAAA,0BAAAgkB,EAAAA,KAAAA,EAAA,MAAzB,OAAT47I,EAAS,QAAA57I,EAAAA,KAAAA,EACZ47I,EAAUo9G,cAAclf,GAAY,OAAA95O,EAAAA,KAAAA,EAAA,aAAAA,EAAAA,KAAAA,GAAA,cAAAA,EAAAA,KAAAA,GAAAA,EAAAA,GAAAA,EAAAA,MAAAA,GAAAhkB,EAAAA,EAAAA,EAAAA,IAAA,eAAAgkB,EAAAA,KAAAA,GAAAhkB,EAAAA,IAAA,qBAAAM,EAAAA,EAGrB5yI,KAAK23K,WAAS,IAArC,IAAK,EAAL,qBAAmB,QACR4zO,KAAY,EAEvB,UAAA34Q,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAAAQ,EAAAA,EACwBpzI,KAAKguZ,KAAgB,IAA7C,IAAK,EAAL,qBAAW97G,EAAS,QAClBlyS,KAAK23K,UAAUu6H,EAAUm9G,oBAAoBzgZ,OAAO28Y,KAAY,EACjE,UAAAn4Q,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,iEACF,mDAZmB30I,IAYnB,CAAA+D,IAEKyrZ,GAAyBxvZ,MAAAA,WAAA,mBAA/B,0FACQm2F,EAAW,IAAIj4F,MAAsBi3I,EAAAA,EACnB5zI,KAAKguZ,KAAgB,IAA7C,IAAK,EAAL,qBAAW97G,EAAS,QAClBt9M,EAAS93F,KAAKo1S,EAAUq9G,sBACzB,UAAA37Q,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,QAAAktB,EAAAA,KAAAA,EACKxwH,QAAQxtC,IAAI8xF,GAAS,gDAC5B,kDAN8Bn2F,IAM9B,CAAA+D,IAEAisZ,GAAchwZ,MAAf,SAAiBmQ,EAAe4gZ,GAC9B,IAAM32O,EAAW74K,KAAK23K,UAAU/oK,GAE3BiqK,EAASz6F,UACZrqE,QAAQwN,MAAM,wGAIhB,IAAM0tY,EACFp2O,EAASquO,IAGPuI,EACF1hW,KAAK4yC,MAAM5yC,KAAKC,UAAU6qH,EAASsuO,MACvCsI,EAAmBt2Z,KAAOq2Z,EAEbxvZ,KAAK+9Y,IAAuB3wF,KACpCz1I,UAAW76K,KAAK2yZ,GAErB,IAC2D76Q,EADrD86Q,EAAY,IAAI1jY,IAA4B,IACjBijY,EAAiBl8V,WAAS,IAA3D,IAAK,EAAL,qBAA6D,oBAAjDr2D,EAAC,KACLwE,EADoB,KACEA,QAC5BA,EAAM/H,KACFq2Z,GAAmBP,EAAiB1pW,KAAO,EAAI,QAAU7oD,EAAI,IACjEgzZ,EAAUtjY,IAAIlrB,GACf,UAAA2zI,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAED,IAAM86Q,EAAiB,IAAIp0O,GACvBv7K,KAAKwuZ,IACLxuZ,KAAK+9Y,IAAuB3wF,KAC5BqiG,EACAzvZ,KAAK2pZ,IAAY/xZ,QACjB,EACAoI,KAAKsuZ,IACLoB,GAIJ,OAFA1vZ,KAAK2pZ,IAAY7sZ,KAAK6yZ,GAEfA,CACT,GAAC,CAAAntZ,IAAAA,mCAAA/D,MAED,SACIkyY,EAA+B6e,EAC/Bpf,GAAoD,IAGTqW,EAHtBmJ,IAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,KAAAA,UAAAA,GACnBC,EAAyC,KAAK,IAE1B7vZ,KAAKguZ,KAAgB,IAA7C,IAAK,EAAL,qBAA+C,KAApC97G,EAAS,QACZi+F,EAAcnwY,KAAKsuZ,IAAcv+X,IAAIqgX,GAExB,MAAfD,GAAuBj+F,EAAU07G,YAAYx/W,IAAI+hW,EAAYvhY,QAKb,MAAhDsjS,EAAUz1B,YAAYk0H,KAIrB3wY,KAAK8vZ,WAAW1f,IACnBpwY,KAAK+vZ,cAAc3f,GAGU,MAA3Byf,IACFA,EACI7vZ,KAAKyuZ,IAAgB9d,EAAuB6e,IAElDt9G,EAAU89G,WAAWH,EAAyBzf,IAC/C,UAAAsW,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAED,GAAIkJ,GAA8C,MAA3BC,EAAiC,CACrDA,EAAqCtE,KAAY,GAClDvrZ,KAAK23K,UAAUg5N,GAAuB4a,KAAY,GAAO,IACZ3E,EADY,IACjC5mZ,KAAKguZ,KAAgB,IAA7C,IAAK,EAAL,qBAA+C,CAA3B,QACRsB,cAAclf,GACzB,UAAAyW,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EAGH,OAAOgJ,CACT,GAAC,CAAArtZ,IAAAA,gBAAA/D,MAED,SAAc2xY,GACPpwY,KAAKsuZ,IAAclgX,IAAIgiW,GAM1Br8X,QAAQk/C,KAAK,YAAD,OAAam9U,EAAW,sBAJpCpwY,KAAKsuZ,IAAcr/X,IACfmhX,EACA,CAACj3Y,KAAMi3Y,EAAaxhY,MAAO5O,KAAKsuZ,IAAc/oW,MAItD,GAAC,CAAA/iD,IAAAA,aAAA/D,MAED,SAAW2xY,GACT,OAAOpwY,KAAKsuZ,IAAclgX,IAAIgiW,EAChC,GAAC,CAAA5tY,IAAAA,uBAAA/D,MAED,SAAqB0nL,EAAuB8pO,GAC1C,GACI,MADAjwZ,KAAKuuZ,MAAsB/rS,MAAK,SAAArpH,GAAI,OAAIA,IAAS82Z,CAAiB,IAOtE,GAAI9pO,EAAgB,GAAKA,GAAiBnmL,KAAK23K,UAAU//K,OACvDmc,QAAQwN,MAAM,+DADhB,CAGC,IAE4CulY,EAF5C,IAEuB9mZ,KAAKguZ,KAAgB,IAA7C,IAAK,EAAL,qBAA+C,KAApC97G,EAAS,QACZr5H,EAAWq5H,EAAUz1B,YAAYt2F,GAGvB,MAAZtN,GACFq5H,EAAU89G,WAAWn3O,EAAUo3O,GAElC,UAAAlJ,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,OAjBChzY,QAAQk/C,KAAK,0BAAD,OACRg9V,EAAiB,mCAiBzB,GAAC,CAAAztZ,IAAAA,oBAAA/D,MAED,SAAkByxZ,EAAqBC,GACrC,IAAMhgB,EAAcnwY,KAAKsuZ,IAAcv+X,IAAImgY,GACxB,MAAf/f,IAGJA,EAAYh3Y,KAAOg3Z,EACnBnwZ,KAAKsuZ,IAAcr/X,IAAIkhY,EAAShgB,GAChCnwY,KAAKsuZ,IAAc9wX,OAAO0yX,GAC5B,GAAC,CAAA1tZ,IAAAA,gBAAA/D,MAED,SAAc2xY,GACZ,IAAMzL,EAAU3kY,KAAKsuZ,IAAcv+X,IAAIqgX,GACvC,GAAe,MAAXzL,EAAJ,CAEC,IAEoCyrB,EAFpC,IAEsBpwZ,KAAK23K,WAAS,IAArC,IAAK,EAAL,qBAAuC,KAA5BkB,EAAQ,QACbA,EAASi3O,WAAW1f,IACtBv3N,EAAS6yO,IAAaluX,OAAOmnW,EAAQ/1X,OAExC,UAAAyhZ,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,KAE4CC,EAF5C,IAEuBtwZ,KAAKguZ,KAAgB,IAA7C,IAAK,EAAL,qBAA+C,CAA3B,QACRuC,cAAc5rB,EAAQ/1X,OACjC,UAAA4hZ,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAEDxwZ,KAAKsuZ,IAAc9wX,OAAO4yW,GAC5B,KAAC,EAjWe,EAsHhBp/T,GArHQ24U,GAAU,GACVmE,GAAU,GACVC,GAAM,GACNC,GAAe,GAEfQ,GAAc,GAEdF,GA8GPC,8UCjKUkC,GAAe3vZ,OAAO,eACtB4vZ,GAAoB5vZ,OAAO,oBAC3B6vZ,GAAS7vZ,OAAO,SACvB8vZ,GAAqB9vZ,OAAO,qBAC5B+vZ,GAAiB/vZ,OAAO,iBCUjBgwZ,GACT,SAAiCryZ,EAAe67M,GAAO,MAClD,CAAC11M,KAAM,SAAUuU,OAAQ1a,EAAO67M,KAAAA,EAAK,EAgDjCy2M,GAAoB,WAC/B,IAAM3nZ,EAAkD,CAAC,EAGzD,OAAO,SAAC4nZ,GACN,IAAMxwM,EAAWwwM,EAEjB,GAAIxwM,KAAYp3M,EACd,OAAOA,EAAMo3M,GAMf,IAHA,IAAMywM,EAAqC,GACvCC,EAAkB,EAEfF,GAAa,CAClB,KAAME,EAbmB,IAaqB,CAE5CF,EAAc,GACd,MAGF,IAAMG,EAAwBC,GAAgBJ,GACxCK,EAAaF,EAAsB3mT,MAAM,GAE/C,GAAkB,MAAd6mT,GAAkD,IAA5BA,EAAWC,MAAM15Z,OACzC,MAGFq5Z,EAAYn0Z,KAAKu0Z,GACjBL,EAAcG,EAAsBI,eAGtC,OAAOnoZ,EAAMo3M,GAAYywM,CAC3B,CACF,CAlCiC,GA0C3BG,GAAmB,WACvB,IAAMI,EAAc,8BACdC,EAAiB,sBACjBC,EAAuB,SAI7B,OAAO,SAACV,GAGN,IAFA,IAAMM,EAA+B,GAE9BN,EAAYp5Z,SACjBo5Z,EAAcA,EAAYniY,QAEtB6iY,EAAqBx5Z,KAAK84Z,KAEvB,GAX4B,MAWxBA,EAAY,GAAuC,CAC5D,MAAgCW,GAAuBX,GAAhDxmT,EAAK,EAALA,MAEPwmT,EAF4B,EAAdO,eAIdD,EAAMx0Z,KAAK,CACT8H,KAAM,WACNzL,KAAM,CAACyL,KAAM,QAASnG,MAAO,QAC7BwB,UAAWuqG,SAER,GAAIgnT,EAAYt5Z,KAAK84Z,GAAc,CACxC,IAAMY,EAAmBC,GAAWb,GAC9Bc,EAAYF,EAAiBpnT,MAAM,GAIzC,GA3BiC,OAyBjCwmT,EAAcY,EAAiBL,gBAEf,GAAuC,CACrD,MAAgCI,GAAuBX,GAAhDxmT,EAAK,EAALA,MAAO+mT,EAAc,EAAdA,eACdD,EAAMx0Z,KAAK,CAAC8H,KAAM,WAAYzL,KAAM24Z,EAAW7xZ,UAAWuqG,IAC1DwmT,EAAcO,OAEdD,EAAMx0Z,KAAKg1Z,QAER,GAAIL,EAAev5Z,KAAK84Z,GAE7BM,EAAMx0Z,KAAK,CAAC8H,KAAM,WAAYnG,MAAOuyZ,EAAY,KACjDA,EAAcA,EAAYpgZ,MAAM,OAC3B,CACL,MAtCkB,MAsCcogZ,EAAY,GACxCe,GAASf,GACTgB,GAAYhB,GAFTxmT,EAAK,EAALA,MAAO+mT,EAAc,EAAdA,eAMd,GAAqB,IAAjB/mT,EAAM5yG,OACR,MAGF05Z,EAAMx0Z,KAAK0tG,EAAM,IACjBwmT,EAAcO,EAIlB,MAAO,CAAC/mT,MAAO,CAAC,CAAC5lG,KAAM,aAAc0sZ,MAAAA,IAASC,eAAgBP,EAChE,CACF,CA5DyB,GAkEnBa,GAAc,WAClB,IAAMI,EAAe,6BAErB,OAAO,SAACjB,GACN,IAAMr5Z,EAAQq5Z,EAAYr5Z,MAAMs6Z,GAMhC,MAAO,CAACznT,MAAO,CAAC,CAAC5lG,KAAM,QAASnG,MAJnB,MAAT9G,EAAgBq5Z,EAAcA,EAAYz9V,OAAO,EAAG57D,EAAMiX,SAId2iZ,eAFnC,MAAT55Z,EAAgB,GAAKq5Z,EAAYz9V,OAAO57D,EAAMiX,OAGpD,CACF,CAZoB,GAoBdojZ,GAAe,WAEnB,IAAME,EAAW,mDACXC,EAAU,YACVC,EAAgB,0BAEtB,OAAO,SAACpB,GACN,IAAMqB,EAAarB,EAAYr5Z,MAAMu6Z,GAC/BzzZ,EAAsB,MAAd4zZ,EAAqB,IAAMA,EAAW,GAG9CC,GAFNtB,EAAuB,MAATvyZ,EAAgBuyZ,EAAcA,EAAYpgZ,MAAMnS,EAAM7G,SAEtCD,MAAMw6Z,GAChC73M,EAAoB,MAAbg4M,GAAsC,KAAjBA,EAAU,GAAYA,EAAU,GAAK,KAC/Df,EACW,MAAbe,EAAoBtB,EAAcA,EAAYpgZ,MAAM0pM,EAAM1iN,QAM9D,OAJY,MAAR0iN,GAAiB83M,EAAcl6Z,KAAKoiN,KACtCA,EAAO,MAGF,CACL9vG,MAAO,CAAC,CACN5lG,KAAM,SACNuU,OAAQjI,WAAWzS,IAAU,EAC7B67M,KAAMA,IAERi3M,eAAAA,EAEJ,CACF,CA7BqB,GAmCfQ,GAAY,WAEhB,IAAMQ,EAAS,cAEf,OAAO,SAACvB,GAEN,IAAMwB,GADNxB,EAAcA,EAAYpgZ,MAAM,GAAGie,QACNl3B,MAAM46Z,GAInC,MAAO,CACL/nT,MAHc,MAAZgoT,EAAmB,GAAK,CAAC,CAAC5tZ,KAAM,MAAOnG,MAAO+zZ,EAAS,KAIzDjB,eAA4B,MAAZiB,EAAmBxB,EACAA,EAAYpgZ,MAAM4hZ,EAAS,GAAG56Z,QAErE,CACF,CAhBkB,GAuBZ+5Z,GACF,SAACX,GACC,IAAMyB,EAAyC,GAK/C,IAFAzB,EAAcA,EAAYpgZ,MAAM,GAAGie,OAE5BmiY,EAAYp5Z,QAAQ,CACzB,IAAMu5Z,EAAwBC,GAAgBJ,GAI9C,GAHAyB,EAAgB31Z,KAAKq0Z,EAAsB3mT,MAAM,IAG1B,OAFvBwmT,EAAcG,EAAsBI,eAAe1iY,QAEnC,GACdmiY,EAAcA,EAAYpgZ,MAAM,GAAGie,YAC9B,GAAuB,MAAnBmiY,EAAY,GAAY,CAEjCA,EAAcA,EAAYpgZ,MAAM,GAChC,OAIJ,MAAO,CAAC45F,MAAOioT,EAAiBlB,eAAgBP,EAClD,EAKE0B,GAAgB5xZ,OAAO,gBAOhB6xZ,GAAS,WAEpB,WAAYC,GAA2BnoZ,EAAAA,KAAAA,GACrCzK,KAAK0yZ,IAAiBE,CACxB,CAyBC,OAvBDrpZ,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,OAAA/D,MAIA,SAAKo0Z,EAA4B16W,GAG/B,IAFA,IAAM26W,EAA4BD,EAAIjiZ,QAE/BkiZ,EAAUl7Z,QAAQ,CACvB,IAAMsL,EAAO4vZ,EAAUt0X,QAMvB,OAJIx+B,KAAK0yZ,IAAelmZ,QAAQtJ,EAAK0B,OAAS,GAC5CuzC,EAASj1C,GAGHA,EAAK0B,MACX,IAAK,aACHkuZ,EAAU/iZ,QAAO,MAAjB+iZ,EAAS,EAAY5vZ,EAAKouZ,QAC1B,MACF,IAAK,WACHwB,EAAU/iZ,QAAO,MAAjB+iZ,EAAS,CAAS5vZ,EAAK/J,MAAI,SAAK+J,EAAKjD,cAI7C,KAAC,EA7BmB,GAgCT8yZ,GACTx0Z,OAAOkjB,OAAO,CAAC7c,KAAM,SAAUuU,OAAQ,EAAGmhM,KAAM,OCnUvC04M,GACT,SAAClC,GAAuE,IAA/CmC,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAA8B,EAChD95Y,EAAgB23Y,EAAhB33Y,OAAQmhM,EAAQw2M,EAARx2M,KACb,GAAK/xB,SAASpvK,IAGP,GAAwB,QAApB23Y,EAAWx2M,MAAqC,MAAnBw2M,EAAWx2M,KACjD,OAAOw2M,OAHP33Y,EAAS85Y,EACT34M,EAAO,MAST,MAAO,CAAC11M,KAAM,SAAUuU,QAJQ,QAATmhM,GAA4B,MAAVnhM,EACVA,EAAS,GAChBlc,KAAK00J,GAAK,IAEO2oD,KAAM,MACjD,EAsCS44M,GACT,SAACpC,GAAsE,IAUjEz5Q,EAVmB87Q,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAA6B,EAC/Ch6Y,EAAgB23Y,EAAhB33Y,OAAQmhM,EAAQw2M,EAARx2M,KAEb,GAAK/xB,SAASpvK,IAGP,GAAwB,MAApB23Y,EAAWx2M,KACpB,OAAOw2M,OAHP33Y,EAASg6Y,EACT74M,EAAO,IAOT,OAAQA,GACN,QACEjjE,EAAQ,EACR,MACF,IAAK,KACHA,EAAQ,IACR,MACF,IAAK,KACHA,EAAQ,KAKZ,MAAO,CAACzyI,KAAM,SAAUuU,OADVk+H,EAAQl+H,EACiBmhM,KAAM,IAC/C,EAUS84M,GAAiB,WAC5B,IAAM9lM,EAAW,SAAC7zM,GAAgB,OAAKA,CAAI,EACrC45Y,EAAuE,CAC3E,IAAO/lM,EACP,IAAO0lM,GACP,EAAK1lM,EACL,GAAM4lM,GACN,GAAMA,IAGR,OAAO,SAACz5Y,GAAiD,IAA/BtP,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAuB4oZ,GAC1CxqO,SAAS9uK,EAAKN,UACjBM,EAAKN,OAAShP,EAASgP,OACvBM,EAAK6gM,KAAOnwM,EAASmwM,MAGvB,IAAOA,EAAQ7gM,EAAR6gM,KAEP,GAAY,MAARA,EACF,OAAO7gM,EAGT,IAAMonG,EAAYwyS,EAAgB/4M,GAElC,OAAiB,MAAbz5F,EACK12G,EAGF02G,EAAUpnG,EACnB,CACF,CA9B8B,GC3EjB65Y,GAAQ,YAAAt3Y,EAAAA,EAAAA,GAAA,WAOnB,WAAYm7C,GAA4B,MAWL,OAXK1sD,EAAAA,KAAAA,IACtCyR,EAAAA,EAAAA,KAAAA,KAAM5Y,SAASC,cAAc,SAPxB2Y,OAAkB,IAAI4qJ,GAAQ,EAAG,EAAG,GACnC5qJ,EAAAA,aAAc,EACdA,EAAAA,eAAiB,EACjBA,EAAAA,MAAQ5Y,SAASC,cAAc,OAC/B2Y,EAAAA,KAAwB5Y,SAASC,cAAc,QAKrD2Y,EAAKxa,QAAQy+D,UAAU/zC,IAAI,sBAE3BlQ,EAAK8+M,KAAK7hO,KAAOg+D,EAAOh+D,KAExB+iB,EAAKxa,QAAQuR,YAAYiJ,EAAKq3Y,OAC9Br3Y,EAAKq3Y,MAAMtgZ,YAAYiJ,EAAK8+M,MAE5B9+M,EAAK2uG,eAAe1zD,EAAOoI,UAC3BrjD,EAAKs3Y,aAAar8V,EAAO4xG,QAAQ,CACnC,CAiHC,OAjHAx/J,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,eAAAutB,IAED,WACE,OAAQ/vB,KAAK0B,QAAQy+D,UAAUj2B,SAAS,OAC1C,GAEA,CAAA1nC,IAAAA,OAAA/D,MAGA,WACOuB,KAAKyzZ,cAAiBzzZ,KAAKqjG,aAC9BrjG,KAAK0zZ,kBAAiB,EAE1B,GAEA,CAAAlxZ,IAAAA,OAAA/D,MAGA,YACMuB,KAAKyzZ,cAAiBzzZ,KAAKqjG,aAC7BrjG,KAAK0zZ,kBAAiB,EAE1B,GAEA,CAAAlxZ,IAAAA,YAAA/D,MAGA,WACEuB,KAAKkmR,gBACP,GAEA,CAAA1jR,IAAAA,YAAA/D,MAIA,WAIE,OAHIuB,KAAKkmR,eAAiB,KACtBlmR,KAAKkmR,eAEsB,IAAxBlmR,KAAKkmR,cACd,GAEA,CAAA1jR,IAAAA,iBAAA/D,MAIA,SAAe8gE,GACb,GAAgB,MAAZA,EAAJ,CAGA,IADA,IAAMo0V,EAAgB5C,GAAiBxxV,GAAU,GAAG+xV,MAC3C50Z,EAAI,EAAGA,EAAI,IAAKA,EACvBsD,KAAKu/D,SAASq0V,aACVl3Z,EAAG02Z,GAAcO,EAAcj3Z,IAAuByc,QAE5DnZ,KAAKu3K,mBANG,CAOV,GAEA,CAAA/0K,IAAAA,eAAA/D,MAIA,SAAasqK,GACX,GAAc,MAAVA,EAGJ,IADA,IAAM8qP,EAAc9C,GAAiBhoP,GAAQ,GAAGuoP,MACvC50Z,EAAI,EAAGA,EAAI,IAAKA,EACvBsD,KAAK+oK,OAAO6qP,aACRl3Z,EAAG02Z,GAAcS,EAAYn3Z,IAAuByc,OAE5D,GAAC,CAAA3W,IAAAA,SAAA/D,MAED,SAAOw1J,GACLj0J,KAAKuzZ,MAAMlpZ,MAAMiuH,UAAY,UAAH,OAAa27B,EAAO,OAChD,GAAC,CAAAzxJ,IAAAA,mBAAA/D,MAED,SAAiBoiE,GAEXA,EACF7gE,KAAK0B,QAAQy+D,UAAUS,OAAO,QAE9B5gE,KAAK0B,QAAQy+D,UAAU/zC,IAAI,QAK7BpsB,KAAKg7N,KAAK84L,gBAAgBvxZ,SAAQ,SAACkX,GACjC,GAAIA,EAAKmZ,WAAa2iO,KAAKw+J,aAA3B,CAIA,IAAMryZ,EAAU+X,EAEVu6Y,EAAsBtyZ,EAAQqiD,QAAQiwW,oBAE5C,GAA2B,MAAvBA,EAA6B,CAC/B,IAAMrnY,EAAgB,QAAH,OAAWqnY,GAG1BnzV,EACFn/D,EAAQoR,aAAa6Z,EAAe,IAEpCjrB,EAAQ6rB,gBAAgBZ,GAI5BjrB,EAAQ68B,cAAc,IAAI43E,YAAY,qBAAsB,CAC1D30E,OAAQ,CACNmoC,QAAS9I,MAGf,IAEA7gE,KAAKqjG,aAAc,CACrB,KAAC,EApIkB,CAAQujS,ICThBqtB,GAAiB,SAC1BlvY,EAAiB7lB,EAAwC6xB,GAEvD,IAAItyB,EAAQsyB,EACN29L,EAAS,IAAI5nD,GAwCnB,OAvCA/hJ,EAAMqyJ,iBAAgB,SAACj1K,GACrB,IAAIzF,EAAGmK,EAEP1E,EAAO0oK,mBAAkB,GAAO,GAEhC,IAAMC,EAAW3oK,EAAO2oK,SAExB,QAAiB1gK,IAAb0gK,EACF,GAAIA,EAASqhB,WAAY,CACvB,IAAMc,EAAWniB,EAASmiB,SAE1B,IAAKvwL,EAAI,EAAGmK,EAAIomL,EAASr1L,OAAQ8E,EAAImK,EAAGnK,IACtCgyN,EAAOhzD,KAAKuxB,EAASvwL,IACjByF,EAAOs2K,cACTt2K,EAAOmqL,cAAc5vL,EAAGgyN,GAExBA,EAAO7mD,aAAa1lK,EAAO8lK,aAE7BxpK,EAAQS,EAAKT,EAAOiwN,QAGjB,GAAI5jD,EAASme,iBAAkB,CACpC,IAAO1pH,EAAYurG,EAAS54F,WAArB3S,SAEP,QAAiBn1D,IAAbm1D,EACF,IAAK7iE,EAAI,EAAGmK,EAAI04D,EAASoe,MAAOjhF,EAAImK,EAAGnK,IACrCgyN,EAAO3jD,oBAAoBxrG,EAAU7iE,GACjCyF,EAAOs2K,cACTt2K,EAAOmqL,cAAc5vL,EAAGgyN,GAExBA,EAAO7mD,aAAa1lK,EAAO8lK,aAG7BxpK,EAAQS,EAAKT,EAAOiwN,GAK9B,IACOjwN,CACT,ECpEEy1Z,GAAuB,CAE5B9lO,SAAU,CAET,SAAY,CAAE3vL,MAAO,MACrB,EAAK,CAAEA,MAAO,EAAM,MAIrBmwL,aAAwB,8JAWxBC,eAA0B,w2BCpBrBslO,GAAqB,CAE1B/lO,SAAU,CAET,SAAY,CAAE3vL,MAAO,MACrB,EAAK,CAAEA,MAAO,EAAM,MAIrBmwL,aAAwB,8JAWxBC,eAA0B,w2BCxBX5xL,KAAK00J,GACC10J,KAAK00J,GAwD3B,SAASS,GAAMl2J,EAAGmL,EAAG/P,GAEpB,OAAS,EAAIA,GAAM4E,EAAI5E,EAAI+P,CAE5B,CCxCA,2CAyBa+sZ,GAAO,YAAAp4Y,EAAAA,EAAAA,GAAA,WAkBlB,WAAY+1K,EAAmBsiO,EAAkBx4O,GAAU,MAAApxK,EAAAA,KAAAA,IACzDyR,EAAAA,EAAAA,KAAAA,OAlBMA,OAAS,IAAI0xL,GAEb1xL,EAAAA,aAAuC,KACvCA,EAAAA,iBAA2C,KAC3CA,EAAAA,cAAgB,IAAIyqM,GACpBzqM,EAAAA,uBAAyB,IAAIqyK,GAAe2lO,IAC5Ch4Y,EAAAA,qBAAuB,IAAIqyK,GAAe4lO,IAC1Cj4Y,EAAAA,UAAY,EACZA,EAAAA,SAAW,EAGXA,EAAAA,YAAc,IAAIwtJ,GAClBxtJ,EAAAA,KAAO,IAAI4qJ,GACX5qJ,EAAAA,aAAe,EACfA,EAAAA,YAAa,EACdA,EAAAA,aAAc,EAKnB,IAAO0rJ,EAAP,KAAOA,OACPA,EAAOtO,SAASp9J,EAAIe,KAAK00J,GAAK,EAC9BiW,EAAO57H,MAAQ,GACf47H,EAAOpoG,MAAQ,GACfooG,EAAOnoG,QAAU,GACjBmoG,EAAO17H,IAAM,GACbhwB,EAAKkQ,IAAIw7I,GAOT,IAAM0D,EAAQ,IAAIisB,GACZ+8N,EAAiB,IAAItyO,GAAkB,CAE3CxtJ,QAAS,EACTunJ,aAAa,EACbF,KAAMz0B,KAuB6B,OArBrClrI,EAAKO,MAAQ,IAAIyuK,GAAK5f,EAAOgpP,GAC7Bp4Y,EAAKO,MAAMwiJ,SAASxb,QAAS,EAC7BmkB,EAAOx7I,IAAIlQ,EAAKO,OAGhBP,EAAKq4Y,UAAY,IAAIrpO,GAAK5f,GAC1BpvJ,EAAKq4Y,UAAU5qV,SAAU,EACzBi+F,EAAOx7I,IAAIlQ,EAAKq4Y,WAEhBxiO,EAAMxwL,OAAO6qB,IAAI,MAGjBlQ,EAAK40M,cAAchzC,gBAAkB,SAASqV,GAC5CA,EAAOtE,eAAiBsE,EAAOtE,eAAelzL,QAC1C,4DACA,sEACN,EAEAugB,EAAKs4Y,uBAAuBj4O,WAAY,EACxCrgK,EAAKu4Y,qBAAqBl4O,WAAY,EAEtCrgK,EAAKw4Y,SAAS3iO,EAAOsiO,EAAUx4O,GAAM,CACvC,CAyOC,OAvODtyK,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,WAAA/D,MAIA,SAASszL,EAAmBsiO,EAAkBx4O,GAC5C,IAAO7Q,EAAyChrK,KAAzCgrK,YAAazlH,EAA4BvlD,KAA5BulD,KAAM+zG,EAAsBt5J,KAAtBs5J,SAAU/5F,EAAYv/D,KAAZu/D,SAUpC,GARAv/D,KAAK20Z,WAAa5iO,EAAM6iO,eAAeh9Z,OAAS,EAChDoI,KAAKgrK,YAAYtP,KAAKq2B,EAAM/mB,aAC5BhrK,KAAKulD,KAAKm2G,KAAKq2B,EAAMxsI,MACrBvlD,KAAK60Z,aAAe53Z,KAAKC,IAAIqoD,EAAKrpD,EAAGqpD,EAAKl+C,EAAGk+C,EAAKj+C,IAC7CtH,KAAK20Z,WA/FY,EA+FqB,GAE3C30Z,KAAKgrK,YAAYS,UAAUlsG,GAEd,SAATs8G,EAAiB,CACnB,IAAO3wI,EAAY8/H,EAAZ9/H,IAAKhuC,EAAO8tK,EAAP9tK,IAAmB,EACd,CAACguC,EAAI5jC,EAAG4jC,EAAI7jC,GAA5B6jC,EAAI7jC,EAAC,KAAE6jC,EAAI5jC,EAAC,WACI,CAACpK,EAAIoK,EAAGpK,EAAImK,GAA5BnK,EAAImK,EAAC,KAAEnK,EAAIoK,EAAC,WACM,CAACi+C,EAAKj+C,EAAGi+C,EAAKl+C,GAAhCk+C,EAAKl+C,EAAC,KAAEk+C,EAAKj+C,EAAC,KACfgyJ,EAASp9J,EAAIe,KAAK00J,GAAK,EACvB2H,EAASjyJ,EAAIpK,KAAK00J,QAElB2H,EAASp9J,EAAI,EACbo9J,EAASjyJ,EAAI,EAGf,GAAIrH,KAAK20Z,WAAY,CACnB,IAAM/qP,EAAOoB,EAAY9/H,IAAI7jC,EACvB0iK,EAAOiB,EAAY9tK,IAAImK,EAC7Bk+C,EAAKl+C,EAAIrH,KAAK60Z,aACd7pP,EAAYk3J,eACR38Q,EAAKuvW,UAAU90Z,KAAK60Z,cAAct/P,gBAAgB,KACtDyV,EAAY9/H,IAAI7jC,EAAIuiK,EACpBoB,EAAY9tK,IAAImK,EAAI0iK,EACpBxkH,EAAKt2B,IAAIjvB,KAAK60Z,aAAc9qP,EAAOH,EAAM5pK,KAAK60Z,cAGnC,WAATh5O,EACFt8G,EAASl4D,EAAI2jK,EAAY9/H,IAAI7jC,EAE7Bk4D,EAASj4D,EAAI0jK,EAAY9/H,IAAI7jC,EAG/BrH,KAAK+0Z,YAAYV,EACnB,GAEA,CAAA7xZ,IAAAA,cAAA/D,MAIA,SAAY41Z,GACVr0Z,KAAKq0Z,SAAWA,EAChB,IAAO9uW,EAAgBvlD,KAAhBulD,KAAMqiH,EAAU5nK,KAAV4nK,OACPyJ,EAAUrxK,KAAK20Z,WA1IC,EA0IgC,EAEhDjlM,EAAar+C,EACfp0K,KAAKs1J,IACD,EApJe,EAsJA,EAAX8hQ,GACZr0Z,KAAKg1Z,WAAWtlM,GAEhB,IAAMulM,EAAU1vW,EAAKl+C,EAAI,EACnB6tZ,EAAU3vW,EAAKl+C,EAAIgqK,EAEzBzJ,EAAOiM,KAAO,EACdjM,EAAOkM,IAAM1hB,GAAK8iQ,EAASD,EAASZ,GAEpCr0Z,KAAK8wN,cAAct8L,QAAU,EAAM6/X,EACnCzsP,EAAOyoB,yBAGPrwL,KAAKm1Z,aAAan1Z,KAAKmsN,WACvBnsN,KAAKo1Z,UAAU,EACjB,GAEA,CAAA5yZ,IAAAA,aAAA/D,MAGA,SAAW42Z,GACT,IAAO9vW,EAAQvlD,KAARulD,KAEHvlD,KAAK20Z,aACPU,GAxKoB,GA2KtB,IAAMC,EACFr4Z,KAAKwf,MAAM8oC,EAAKrpD,EAAIqpD,EAAKj+C,EAAI+tZ,EAAaA,EAAa9vW,EAAKrpD,EAAIqpD,EAAKj+C,GACnEiuZ,EACFt4Z,KAAKwf,MAAM8oC,EAAKrpD,EAAIqpD,EAAKj+C,EAAI+tZ,EAAa9vW,EAAKj+C,EAAIi+C,EAAKrpD,EAAIm5Z,GAG1DlnZ,EADY,GACQmnZ,EACpBlnZ,EAFY,GAESmnZ,EAW3B,GATyB,MAArBv1Z,KAAKqxL,cACJrxL,KAAKqxL,aAAaljL,QAAUA,GAC5BnO,KAAKqxL,aAAajjL,SAAWA,IAChCpO,KAAKqxL,aAAa3vB,UAClB1hK,KAAKqxL,aAAe,KACpBrxL,KAAKw1Z,iBAAkB9zP,UACvB1hK,KAAKw1Z,iBAAmB,MAGD,MAArBx1Z,KAAKqxL,aAAsB,CAC7B,IAAMn3H,EAAmC,CAACqkG,OAAQxS,IAClD/rJ,KAAKqxL,aAAe,IAAIrwB,GAAkB7yJ,EAAOC,EAAQ8rD,GACzDl6D,KAAKw1Z,iBAAmB,IAAIx0P,GAAkB7yJ,EAAOC,EAAQ8rD,GAE5Dl6D,KAAKyc,MAAMo8J,SAA+Bt8K,IACvCyD,KAAKqxL,aAAahwB,QAIxBrhK,KAAK4nK,OAAOvwB,MAAMpoH,IACds2B,EAAKrpD,GAAK,EAxBI,GAwBYo5Z,GAC1B/vW,EAAKj+C,GAAK,EAzBI,GAyBYiuZ,GAC1B,GACJv1Z,KAAKs/J,aAAc,CACrB,GAEA,CAAA98J,IAAAA,eAAA/D,MAIA,SAAa0tN,GACXnsN,KAAKmsN,UAAYA,EACbA,EAAY,GACdnsN,KAAK2pE,SAAU,EACf3pE,KAAKyc,MAAMktD,SAAU,EACpB3pE,KAAKyc,MAAMo8J,SAA+BrkJ,QAAU23L,EACjD/5D,GApNqB,GAoNQ,EAAGpyJ,KAAKq0Z,SAAWr0Z,KAAKq0Z,YAEzDr0Z,KAAK2pE,SAAU,EACf3pE,KAAKyc,MAAMktD,SAAU,EAEzB,GAAC,CAAAnnE,IAAAA,eAAA/D,MAED,WACE,OAAOuB,KAAKmsN,SACd,GAEA,CAAA3pN,IAAAA,YAAA/D,MAMA,SAAUsrC,GACR/pC,KAAKyc,MAAM8iD,SAASj4D,GAAKyiC,EAAS,KAAQ/pC,KAAK60Z,YACjD,GAAC,CAAAryZ,IAAAA,SAAA/D,MAED,SAAOqzL,EAAyBC,GAI9BA,EAAMq+C,iBAAmBpwO,KAAK8wN,cAG9B,IAAM2kM,EAAoB3jO,EAASuT,gBACnCvT,EAASwT,cAAc,GACvBtlM,KAAKyc,MAAMktD,SAAU,EAGrB,IAAM+rV,EAAY5jO,EAASU,GAAG3B,QAC9BiB,EAASU,GAAG3B,SAAU,EAGtB,IAAM8kO,EAAkB7jO,EAASI,kBACjCJ,EAASW,gBAAgBzyL,KAAKqxL,cAC9BS,EAAStsL,OAAOusL,EAAO/xL,KAAK4nK,QAG5BmqB,EAAMq+C,iBAAmB,KACzBpwO,KAAKyc,MAAMktD,SAAU,EAErB3pE,KAAK41Z,WAAW9jO,GAGhBA,EAASU,GAAG3B,QAAU6kO,EACtB5jO,EAASW,gBAAgBkjO,GACzB7jO,EAASwT,cAAcmwN,EAEzB,GAAC,CAAAjzZ,IAAAA,aAAA/D,MAED,SAAWqzL,GACT,IACElqB,EAME5nK,KANF4nK,OACA4sP,EAKEx0Z,KALFw0Z,uBACAC,EAIEz0Z,KAJFy0Z,qBACApjO,EAGErxL,KAHFqxL,aACAmkO,EAEEx1Z,KAFFw1Z,iBACAjB,EACEv0Z,KADFu0Z,UAEFA,EAAU5qV,SAAU,EAGpB4qV,EAAU17O,SAAW27O,EACrBA,EAAuBpmO,SAASznL,EAAElI,MAAQ,EAAIuB,KAAKqxL,aAAcljL,MACjEqmZ,EAAuBpmO,SAASynO,SAASp3Z,MAAQuB,KAAKqxL,aAAchwB,QAEpEywB,EAASW,gBAAgB+iO,GACzB1jO,EAAStsL,OAAO+uZ,EAAW3sP,GAG3B2sP,EAAU17O,SAAW47O,EACrBA,EAAqBrmO,SAASjnL,EAAE1I,MAAQ,EAAIuB,KAAKqxL,aAAcjjL,OAC/DqmZ,EAAqBrmO,SAASynO,SAASp3Z,MACnCuB,KAAKw1Z,iBAAkBn0P,QAE3BywB,EAASW,gBAAgBpB,GACzBS,EAAStsL,OAAO+uZ,EAAW3sP,GAE3B2sP,EAAU5qV,SAAU,CACtB,GAAC,CAAAnnE,IAAAA,UAAA/D,MAED,WAC2B,MAArBuB,KAAKqxL,cACPrxL,KAAKqxL,aAAa3vB,UAES,MAAzB1hK,KAAKw1Z,kBACPx1Z,KAAKw1Z,iBAAiB9zP,UAExB1hK,KAAK8wN,cAAcpvD,UACnB1hK,KAAKw0Z,uBAAuB9yP,UAC5B1hK,KAAKy0Z,qBAAqB/yP,UACzB1hK,KAAKyc,MAAMo8J,SAAsBnX,UAClC1hK,KAAKyc,MAAMquJ,SAASpJ,UACpB1hK,KAAKu0Z,UAAUzpP,SAASpJ,UACxB1hK,KAAK81Z,kBACP,KAAC,EAxSiB,CAAQtgP,ICAtBj0I,GAAO,IAAIulI,GACXvlK,GAAS,IAAIulK,GACbivP,GAAc,IAAIjvP,GAElB4kB,GAAY,IAAIupG,GAChBjpE,GAAU,IAAIllD,GACdkvP,GAAM,IAAI7gQ,GAOH8gQ,GAAW,YAAAj6Y,EAAAA,EAAAA,GAAA,WAgDtB,cAA8D,MAAjDg9H,EAAM,EAANA,OAAQt3I,EAAO,EAAPA,QAASyM,EAAK,EAALA,MAAOC,EAAM,EAANA,OAAM3D,EAAAA,KAAAA,IACzCyR,EAAAA,EAAAA,KAAAA,OA9CKA,mBAAqB,IAAI8qX,GACzB9qX,EAAAA,cAAgB5Y,SAASC,cAAc,UACvC2Y,EAAAA,MAAQ,EACRA,EAAAA,OAAS,EACTA,EAAAA,OAAS,EACTA,EAAAA,UAAY,EACZA,EAAAA,YAAc,EACdA,EAAAA,iBAA2C,KAI3CA,EAAAA,OAAS,IAAI2zK,GAAkB,GAAI,EAAG,GAAK,KAC3C3zK,EAAAA,SAAwB,KAExBA,EAAAA,IAAmB,KACnBA,EAAAA,OAAS,IAAIs5J,GACbt5J,EAAAA,eAAgC,GAChCA,EAAAA,YAAc,IAAIwtJ,GAClBxtJ,EAAAA,eAAiB,IAAIgxJ,GACrBhxJ,EAAAA,KAAO,IAAI4qJ,GACX5qJ,EAAAA,YAAc,EACdA,EAAAA,aAAe,EAEfA,EAAAA,OAAsB,KACtBA,EAAAA,gBAAkB,EAClBA,EAAAA,eAAiB,EACjBA,EAAAA,aAAe,IAAI8P,IAEnB9P,EAAAA,SAAW,EACXA,EAAAA,UAAW,EAEVA,EAAAA,SAAU,EAEVA,EAAAA,WAAa,IAAI4qJ,GACjB5qJ,EAAAA,cAAgB,IAAIq2X,GACpBr2X,EAAAA,cAAgB,IAAIq2X,GACpBr2X,EAAAA,cAAgB,IAAIq2X,GAEpBr2X,EAAAA,aAA6C,KAC7CA,EAAAA,OAAwB,KAExBA,EAAAA,0BAA+C,KAC/CA,EAAAA,iBAA+C,IAAIihB,IACnDjhB,EAAAA,uBAA+C,KAKrDA,EAAK/iB,KAAO,aAEZ+iB,EAAKxa,QAAUA,EACfwa,EAAK88H,OAASA,EAId98H,EAAK0rJ,OAAS,IAAIioB,GAAkB,GAAI,EAAG,GAAK,KAChD3zK,EAAK0rJ,OAAOzuK,KAAO,aAEnB+iB,EAAKkQ,IAAIlQ,EAAK3a,QAEd2a,EAAK41N,QAAQ3jO,EAAOC,GAEpB8N,EAAK3a,OAAOpI,KAAO,SAEnB+iB,EAAKwwQ,MAAQ,IAAIkE,GAAe10Q,EAAK3a,QAErC,IAAO8yG,EAAcn4F,EAAKg6Y,mBAAnB7hT,WACAhqG,EAASgqG,EAAThqG,MAOwD,OAN/DA,EAAM29C,QAAU,OAChB39C,EAAMw5S,cAAgB,OACtBx5S,EAAMk1D,SAAW,WACjBl1D,EAAM6hC,IAAM,IACZhwB,EAAKxa,QAAQ0mE,WAAY0hD,cAAc,YAAa72G,YAAYohG,GAEhEn4F,EAAKi6Y,cAAcrjZ,aAAa,OAAQ,uBAAuB,CACjE,CA+xBC,OA7xBDvJ,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,UAAAutB,IAMA,WACE,OAAO/vB,KAAKg5I,OAAOC,WAAW,KAChC,GAAC,CAAAz2I,IAAAA,YAAA/D,MAED,WACE,OAAwB,MAAjBuB,KAAKk4Y,SAAmBl4Y,KAAKk4Y,SAAWl4Y,KAAK4nK,MACtD,GAAC,CAAAplK,IAAAA,cAAA/D,MAED,WACEuB,KAAKo2Z,SAAU,CACjB,GAAC,CAAA5zZ,IAAAA,eAAA/D,MAED,WACE,OAAOuB,KAAKo2Z,OACd,GAAC,CAAA5zZ,IAAAA,cAAA/D,MAED,WACEuB,KAAKo2Z,SAAU,CACjB,GAAC,CAAA5zZ,IAAAA,eAAA/D,MAED,WACEuB,KAAKukZ,WAAa,EAClBvkZ,KAAKo2Y,aACP,GAEA,CAAA5zY,IAAAA,YAAA/D,MAAAA,WAAA,mBAIA,WAAgBsmB,GAAe,iEAGN,OAFvB/kB,KAAKu6D,QACLv6D,KAAKq2Z,OAAStxY,EACd/kB,KAAKuB,OAAO6qB,IAAIrH,GAAOuK,EAAAA,KAAAA,EACjBtvB,KAAKs2Z,aAAY,gDACxB,mDATD73Z,IAWA,CAAA+D,IAAAA,YAAA/D,MAAAA,WAAA,mBAIA,WACIypC,GAAgB,MAAAquX,EAAAnpG,EAAAh3I,EAAAogP,EAAA5B,EAAAlwV,EAAAD,EAAAt3B,EAAA,OAAA8oW,EAAAA,UAAA,iEACuC,GAAvDzQ,EAAAA,EAAAA,OAAAA,QAAAA,IAAAA,EAAAA,GAAAA,EAAAA,GAA+C,WAAO,EACnDt9V,GAAOA,IAAQloC,KAAKkoC,IAAG,CAAA44H,EAAAA,KAAAA,EAAA,MACN,OAApB0kO,EAAiB,GAAG,0BAIP,GADfxlY,KAAKu6D,QACLv6D,KAAKkoC,IAAMA,EAEkB,MAAzBloC,KAAKilZ,iBAAwB,CAAAnkP,EAAAA,KAAAA,GAAA,aAAAA,EAAAA,KAAAA,EACL9gK,KAAKilZ,iBAAiBr5U,KAAK45T,GAAiB,OAGrB,OAH3C+wB,EAAc,EAAH,KAEjBv2Z,KAAKimL,eAAe/c,OAASqtP,EAAYE,aACzCz2Z,KAAK02Z,YAAcH,EAAYI,kBAAkB,2BASlD,OAHqC,MAAlC32Z,KAAK42Z,4BACP52Z,KAAK42Z,4BACL52Z,KAAK42Z,0BAA4B,MAClC91P,EAAAA,KAAAA,GAAAA,EAAAA,KAAAA,GAKc,IAAIxwH,QAAO,8BACpB,WAAOG,EAAS8tC,GAAM,uEAC4B,OAAhD5P,EAAKioV,0BAA4B,kBAAMr4U,GAAQ,EAAC+3E,EAAAA,KAAAA,EAAAA,EAAAA,KAAAA,EAEzB3nF,EAAKjtE,QAAQm1Z,IAAW9yT,OAAOn4B,KAChD1jC,EAAKymC,EAAKjtE,QAAS8jY,GAAiB,OADlC1tY,EAAS,EAAH,KAEZ24C,EAAQ34C,GAAQw+J,EAAAA,KAAAA,GAAA,aAAAA,EAAAA,KAAAA,EAAAA,EAAAA,GAAAA,EAAAA,MAAAA,GAEhB/3E,EAAO,EAAD,IAAQ,yDAEjB,qDAVmB,IAUlB,QAVN6uO,EAAO,EAAH,KAAAtsJ,EAAAA,KAAAA,GAAA,iBAAAA,EAAAA,KAAAA,GAAAA,EAAAA,GAAAA,EAAAA,MAAAA,IAYS,MAATA,EAAAA,GAAa,CAAAA,EAAAA,KAAAA,GAAA,2DAQnB9gK,KAAK42Z,0BAA4B,KACjC52Z,KAAKu6D,QACLv6D,KAAKkoC,IAAMA,EACXloC,KAAK82Z,aAAe1pG,EAER,MAARA,IACFptT,KAAKq2Z,OAASjpG,EAAKr7H,MACnB/xL,KAAKuB,OAAO6qB,IAAIghS,EAAKr7H,QAGhB3b,EAAcg3I,EAAdh3I,WACDogP,EAAmB,IAAIr5X,IACvBy3X,EAAiB,GAAElwV,EAAAA,EAED0xG,GAAU,IAAlC,IAAK,EAAL,qBAAWjpI,EAAS,QAClBqpX,EAAiBvnY,IAAIke,EAAUh0C,KAAMg0C,GACrCynX,EAAe93Z,KAAKqwC,EAAUh0C,KAC/B,UAAAurE,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAIoC,OAFrC1kE,KAAKo2K,WAAaA,EAClBp2K,KAAKw2Z,iBAAmBA,EACxBx2Z,KAAK40Z,eAAiBA,EAAe9zP,EAAAA,KAAAA,GAE/B9gK,KAAKs2Z,aAAY,2DACxB,mDA5ED73Z,IA4EC,CAAA+D,IAAAA,aAAA/D,MAAAA,WAAA,mBAEO,8EAEmB,OADzBuB,KAAK+2Z,iBACL/2Z,KAAKg3Z,oBAAoBxtP,EAAAA,KAAAA,EAEnBxpK,KAAKi3Z,gBAAe,OAE1Bj3Z,KAAKk3Z,eACLl3Z,KAAKg3Y,mBAAmBh3Y,KAAK+2Y,iBAAiB,gDAC/C,kDAVAt4Y,IAUA,CAAA+D,IAAAA,QAAA/D,MAED,WACEuB,KAAKkoC,IAAM,KACXloC,KAAKo2Y,cACc,MAAfp2Y,KAAKyjJ,QACPzjJ,KAAKyjJ,OAAO0xQ,aAAa,GAE3Bn1Z,KAAKm3Z,aAAah3Z,QAElB,IAAOk2Z,EAAUr2Z,KAAVq2Z,OACO,MAAVA,IACFA,EAAOP,mBACP91Z,KAAKq2Z,OAAS,MAGhB,IAAMjpG,EAAOptT,KAAK82Z,aACN,MAAR1pG,IACFA,EAAK1rJ,UACL1hK,KAAK82Z,aAAe,MAGa,MAA/B92Z,KAAKo3Z,yBACPp3Z,KAAKo3Z,uBAAuB3oV,OAC5BzuE,KAAKo3Z,uBAAyB,MAGhCp3Z,KAAK0sR,MAAM2qI,gBACXr3Z,KAAK0sR,MAAM4qI,YAAYt3Z,KACzB,GAAC,CAAAwC,IAAAA,UAAA/D,MAED,WACEuB,KAAKu6D,QACc,MAAfv6D,KAAKyjJ,SACPzjJ,KAAKyjJ,OAAOie,UACZ1hK,KAAKyjJ,OAAS,MAEfzjJ,KAAK0B,QAAgB+uZ,IAAgB,KACrCzwZ,KAAK0B,QAAgBgvZ,IAAqB,KAC1C1wZ,KAAK0B,QAAgBivZ,IAAU,IAClC,GAAC,CAAAnuZ,IAAAA,cAAAutB,IAED,WACE,OAAO/vB,KAAK82Z,YACd,GAEA,CAAAt0Z,IAAAA,UAAA/D,MAGA,SAAQ0P,EAAeC,GACrB,GAAIpO,KAAKmO,QAAUA,GAASnO,KAAKoO,SAAWA,EAA5C,CASA,GANApO,KAAKmO,MAAQlR,KAAKC,IAAIiR,EAAO,GAC7BnO,KAAKoO,OAASnR,KAAKC,IAAIkR,EAAQ,GAC/BpO,KAAKk2Z,mBAAmBpkL,QAAQ3jO,EAAOC,GAEvCpO,KAAKkwL,OAASlwL,KAAKmO,MAAQnO,KAAKoO,OAEH,MAAzBpO,KAAKilZ,iBAA0B,CACjC,IAAMj1G,EAAM0lF,KACZ11X,KAAKilZ,iBAAiBjjG,OAAO7zS,EAAQ6hS,EAAK5hS,EAAS4hS,GAGrDhwS,KAAKo2Y,cACP,GAAC,CAAA5zY,IAAAA,kBAAA/D,MAED,SAAgB40L,GACdA,EAAKp0B,SAASxb,QAAS,EACvBzjJ,KAAKm3Z,aAAa/qY,IAAIinK,EACxB,GAAC,CAAA7wL,IAAAA,oBAAA/D,MAED,SAAkB40L,GAChBA,EAAKp0B,SAASxb,QAAS,EACvB4vC,EAAK1pH,SAAU,EACf3pE,KAAKm3Z,aAAa35X,OAAO61J,GACzBrzL,KAAKgrK,YAAYT,eAAe8oB,EAClC,GAAC,CAAA7wL,IAAAA,mBAAA/D,MAED,SAAiBgpG,GAAe,WACxBujE,EAAc,IAAItB,GAExBjiE,EAAM0vE,UAAS,SAACh1K,GACd,IAAMkxL,EAAOlxL,EACb,GAAKkxL,EAAKhb,QAGOgb,EAAKxa,SACRkD,YAAd,CAGA/Q,EAAY4vH,cAAcvnG,GAC1B,IAAM9tI,EAAOylH,EAAYqB,QAAQ2/C,IAC3BurM,EAASt6Z,KAAKiuC,IAAIqa,EAAKrpD,EAAGqpD,EAAKl+C,EAAGk+C,EAAKj+C,GAC9BrK,KAAKC,IAAIqoD,EAAKrpD,EAAGqpD,EAAKl+C,EAAGk+C,EAAKj+C,GA/U1B,IAgVaiwZ,GAGhC/nV,EAAKgoV,gBAAgBnkO,GACvB,GACF,GAAC,CAAA7wL,IAAAA,oBAAA/D,MAED,WACE,MAAmBuB,KAAKgrK,YAAjB9/H,EAAG,EAAHA,IAAKhuC,EAAG,EAAHA,IACNu6Z,EAAY,IAAI/tP,GACtB1pK,KAAKgrK,YAAYqB,QAAQrsK,KAAKulD,MAAM,IAEAuf,EAFA,IAEjB9kE,KAAKm3Z,cAAY,IAApC,IAAK,EAAL,qBAAsC,KAA3B9jO,EAAI,QACbokO,EAAU78H,cAAcvnG,GACpBokO,EAAUvsX,IAAI7jC,EAAI6jC,EAAI7jC,EAAIrH,KAAKulD,KAAKl+C,EA9VrB,KA+VfowZ,EAAUvsX,IAAIhvC,GAAKgvC,EAAIhvC,GAAKu7Z,EAAUv6Z,IAAIhB,GAAKgB,EAAIhB,GACnDu7Z,EAAUvsX,IAAI5jC,GAAK4jC,EAAI5jC,GAAKmwZ,EAAUv6Z,IAAIoK,GAAKpK,EAAIoK,IAInDmwZ,EAAUvsX,IAAI5jC,EAAI4jC,EAAI5jC,EAAItH,KAAKulD,KAAKj+C,EApWrB,KAqWfmwZ,EAAUvsX,IAAIhvC,GAAKgvC,EAAIhvC,GAAKu7Z,EAAUv6Z,IAAIhB,GAAKgB,EAAIhB,GACnDu7Z,EAAUvsX,IAAI7jC,GAAK6jC,EAAI7jC,GAAKowZ,EAAUv6Z,IAAImK,GAAKnK,EAAImK,GAIvDrH,KAAK03Z,kBAAkBrkO,IACxB,UAAAtuH,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACH,GAAC,CAAAviE,IAAAA,iBAAA/D,MAED,WACE,IAAOsmB,EAAS/kB,KAAT+kB,MACP,GAAa,MAATA,EAAJ,CAGA,IAAMy9R,EAAcuuG,GAAiB/wZ,KAAK0B,QAAQ8gT,aAAa,GACtC8uG,MAEnBqG,EAAOvE,GAAc5wG,EAAY,IAAIrpS,OACrCy+Y,EAAQxE,GAAc5wG,EAAY,IAAIrpS,OACtCw9X,EAAMyc,GAAc5wG,EAAY,IAAIrpS,OAE1C4L,EAAMq+I,WAAW8D,aAAa,IAAIgN,GAAM0jP,EAAOjhB,EAAKghB,EAAM,QAE1D,IAAMtgR,EAAQ05Q,GAAiB/wZ,KAAK0B,QAAQ21I,OAAO,GAChCi6Q,MAEnBvsY,EAAMsyH,MAAMpoH,IAAIooH,EAAM,GAAGl+H,OAAQk+H,EAAM,GAAGl+H,OAAQk+H,EAAM,GAAGl+H,QAC7D,GAAC,CAAA3W,IAAAA,oBAAA/D,MAED,WAAiB,WACRsmB,EAAS/kB,KAAT+kB,MACP,GAAa,MAATA,EAAJ,CAGA/kB,KAAKuB,OAAOq/D,OAAO77C,GAEnB/kB,KAAK63Z,iBAAiB9yY,GAEtB,IAAM+yY,EAAQ,SAACttP,EAAWkkD,GACxB,OAAOlkD,EAAIL,cAAcukD,EAC3B,EACA1uN,KAAK+3Z,0BAAyB,GAC9B/3Z,KAAKgrK,YAAcipP,GAAelvY,EAAO+yY,EAAO,IAAIpuP,IAEhD1pK,KAAKgrK,YAAYP,YACnBzqK,KAAK+3Z,0BAAyB,GAC9B/3Z,KAAKm3Z,aAAa50Z,SAAQ,SAAC8wL,GAAI,OAAKjpE,EAAKstS,kBAAkBrkO,EAAK,IAChErzL,KAAKgrK,YAAcipP,GAAelvY,EAAO+yY,EAAO,IAAIpuP,KAEtD1pK,KAAKg4Z,oBACLh4Z,KAAK+3Z,2BAEL/3Z,KAAKgrK,YAAYqB,QAAQrsK,KAAKulD,MAE9BvlD,KAAKuB,OAAO6qB,IAAIrH,GAClB,GAEA,CAAAviB,IAAAA,gBAAA/D,MAAAA,WAAA,mBAQA,iGACc,GACC,OADNsmB,EAAS/kB,KAAT+kB,OACU,CAAAyjN,EAAAA,KAAAA,EAAA,uCAO0B,OAJ3CxoO,KAAKuB,OAAOq/D,OAAO77C,GACnB/kB,KAAK+3Z,0BAAyB,GACvB1hQ,EAAUr2J,KAAKimL,eAAf5vB,OAEPr2J,KAAK0B,QAAQ+nX,cAAc,gBAAgBjhJ,EAAAA,KAAAA,EACrCxoO,KAAK0B,QAAQ4qX,eAAc,OACjCj2N,EAAOqF,KAAK17J,KAAKk3Y,aAEX+gB,EAAgB,SAACx5Z,EAAeiwN,GACpC,OAAOzxN,KAAKC,IAAIuB,EAAO43J,EAAQP,kBAAkB44D,GACnD,EACA1uN,KAAKimL,eAAe/c,OAChBjsK,KAAK04J,KAAKs+P,GAAelvY,EAAOkzY,EAAe,IAE7CC,EAAmB,SAACz5Z,EAAeiwN,GACvCA,EAAO5lD,IAAIzS,GACX,IAAM8hQ,EAAWl7Z,KAAK04J,KAAK+4D,EAAOxyN,EAAIwyN,EAAOxyN,EAAIwyN,EAAOpnN,EAAIonN,EAAOpnN,GACnE,OAAOrK,KAAKC,IACRuB,EAAO05Z,GAAYhtS,EAAKitS,sBAAwBn7Z,KAAK4f,IAAI6xM,EAAOrnN,IACtE,EACArH,KAAK02Z,YAAczC,GAAelvY,EAAOmzY,EAAkB,GACvDj7Z,KAAKyzL,IAAK1wL,KAAKq4Z,aAAe,EAAKp7Z,KAAK00J,GAAK,KAEjD3xJ,KAAK+3Z,2BACL/3Z,KAAKuB,OAAO6qB,IAAIrH,GAAO,iDACxB,kDAtCDtmB,IAsCC,CAAA+D,IAAAA,2BAAA/D,MAED,WAAqE,IAC7BgyI,EADf9mE,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAmB3pE,KAAK+2Y,iBAAmB,EAAC,IAC9C/2Y,KAAKm3Z,cAAY,IAAtC,IAAK,EAAL,qBAAwC,CAAvB,QACRxtV,QAAUA,EAClB,UAAA+mE,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACH,GAAC,CAAAluI,IAAAA,sBAAA/D,MAED,WACE,IAAM65Z,EAAct4Z,KAAKq4Z,aAAe,EAAKp7Z,KAAK00J,GAAK,IACvD,OAAO3xJ,KAAKimL,eAAe/c,OAASjsK,KAAKm3J,IAAIkkQ,EAC/C,GAEA,CAAA91Z,IAAAA,cAAA/D,MAIA,SAAY85Z,GACV,IAAMC,EAAWv7Z,KAAKyzL,IAAK6nO,EAAS,EAAKt7Z,KAAK00J,GAAK,KAC/C10J,KAAKC,IAAI,EAAG8C,KAAK02Z,YAAc12Z,KAAKkwL,QACxC,OAAO,EAAIjzL,KAAKwzL,KAAK+nO,GAAY,IAAMv7Z,KAAK00J,EAC9C,GAAC,CAAAnvJ,IAAAA,SAAA/D,MAED,SAAOojC,EAAiBC,GACtB,GAAqB,MAAjB9hC,KAAKk4Y,SACP8d,GAAI/mY,IAAI4S,EAAUx+B,OAAOU,OAAOoK,MAAO2zB,EAAUz+B,OAAOU,OAAOqK,YAC1D,CACL,IAAM61V,EAAOjkW,KAAK0B,QAAQ+4G,wBAC1Bu7S,GAAI/mY,KACC4S,EAAUoiU,EAAK/nW,GAAK8D,KAAKmO,OAAQ2zB,EAAUmiU,EAAK58V,GAAKrH,KAAKoO,QAKjE,OAFA4nZ,GAAIzgQ,eAAe,GAAGu/P,UAAU,GAChCkB,GAAI3uZ,IAAM,EACH2uZ,EACT,GAEA,CAAAxzZ,IAAAA,UAAA/D,MAGA,WACE,MAAO,CAAC0P,MAAOnO,KAAKmO,MAAOC,OAAQpO,KAAKoO,OAC1C,GAAC,CAAA5L,IAAAA,0BAAA/D,MAED,SAAwB25K,EAA2BuqO,GAC7C3iZ,KAAK0B,QAAQm1Z,IAAW5S,WAAW1P,iBAAmBv0Y,OAG1DA,KAAKo4K,YAAcA,EACnBp4K,KAAK4/D,WAAa+iV,EAClB3iZ,KAAKo2Y,cACP,GAEA,CAAA5zY,IAAAA,YAAA/D,MAGA,SAAUg6Z,EAAgBC,EAAgBC,GACxC34Z,KAAK44Z,WAAW3pY,KAAKwpY,GAASC,GAASC,EACzC,GAEA,CAAAn2Z,IAAAA,2BAAA/D,MAGA,SAAyB+zY,GACvBxyY,KAAK64Z,cAAcnmB,aAAaF,GAChCxyY,KAAK84Z,cAAcpmB,aAAaF,GAChCxyY,KAAK+4Z,cAAcrmB,aAAaF,EAClC,GAEA,CAAAhwY,IAAAA,YAAA/D,MAGA,WACE,OAAOuB,KAAK44Z,WAAW13Z,QAAQq0J,gBAAgB,EACjD,GAEA,CAAA/yJ,IAAAA,aAAA/D,MAGA,WACEuB,KAAK64Y,ahCpiBoB,IgCqiB3B,GAEA,CAAAr2Y,IAAAA,eAAA/D,MAIA,SAAarB,GACX,IAAM08Y,EAAO95Y,KAAK44Z,WACZr3Z,EAASvB,KAAKuB,OAAOg+D,SAC3B,GAAKu6U,EAAKttO,OAAOjrK,GAWf,OAAO,EAVP,IAAMy3Z,EAAgBh5Z,KAAKimL,eAAe/c,OAAS,GAC9ChtK,EAAWqF,EAAXrF,EAAGmL,EAAQ9F,EAAR8F,EAAGC,EAAK/F,EAAL+F,EAOX,OANApL,EAAI8D,KAAK64Z,cAAcv1P,OAAOpnK,EAAG49Y,EAAK59Y,EAAGkB,EAAO47Z,GAChD3xZ,EAAIrH,KAAK84Z,cAAcx1P,OAAOj8J,EAAGyyY,EAAKzyY,EAAGjK,EAAO47Z,GAChD1xZ,EAAItH,KAAK+4Z,cAAcz1P,OAAOh8J,EAAGwyY,EAAKxyY,EAAGlK,EAAO47Z,GAChDh5Z,KAAKuB,OAAOg+D,SAAStwC,IAAI/yB,EAAGmL,EAAGC,GAC/BtH,KAAKuB,OAAOg2K,oBACZv3K,KAAKo2Y,eACE,CAIX,GAEA,CAAA5zY,IAAAA,eAAA/D,MAGA,SAAaw6Z,EAAgBC,GAC3B,MAAel5Z,KAAKu/D,SAAbrjE,EAAC,EAADA,EAAGoL,EAAC,EAADA,EACVtH,KAAK22Y,IAAM15Y,KAAK44J,MAAMojQ,EAAS/8Z,EAAGg9Z,EAAS5xZ,EAC7C,GAAC,CAAA9E,IAAAA,QAAAutB,IAED,WACE,OAAO/vB,KAAKq2Z,MACd,GAEA,CAAA7zZ,IAAAA,MAAAutB,IASA,WACE,OAAO/vB,KAAKs5J,SAASjyJ,CACvB,EAAC4nB,IAPD,SAAQkqY,GACNn5Z,KAAKs5J,SAASjyJ,EAAI8xZ,EAClBn5Z,KAAKo2Y,aACP,GAAC,CAAA5zY,IAAAA,gBAAAutB,IAWD,WACE,GAAmC,MAA/B/vB,KAAKo3Z,uBAAgC,CACvC,IAAMjnI,EACFlzR,KAAKC,IAAK8C,KAAKo3Z,uBAA+B3pI,WAAY,GAC9D,OAAIztR,KAAKo3Z,uBAAuBnpV,OAASogF,IACjB,KAAP,EAAZ8hI,GACInwR,KAAKmsE,SAAWnsE,KAAKo3Z,uBAAuBnvX,KAE5CjoC,KAAKo3Z,uBAAuBnvX,KAIvC,OAAO,CACT,EAAChZ,IAlBD,SAAkBxwB,GAChBuB,KAAK0sR,MAAM0sI,QAAQ36Z,GACnBuB,KAAKq5Z,mBACP,GAAC,CAAA72Z,IAAAA,qBAAAutB,IAqBD,WACE,OAAO/vB,KAAK0sR,MAAMjiB,SACpB,EAACx7O,IAND,SAAuBxwB,GACrBuB,KAAK0sR,MAAMjiB,UAAYhsQ,CACzB,GAAC,CAAA+D,IAAAA,WAAAutB,IAMD,WACE,OAAmC,MAA/B/vB,KAAKo3Z,wBACLp3Z,KAAKo3Z,uBAAuBkC,UACvBt5Z,KAAKo3Z,uBAAuBkC,UAAUntV,SAGxC,CACT,GAAC,CAAA3pE,IAAAA,qBAAAutB,IAED,WACE,OAAsC,MAA/B/vB,KAAKo3Z,sBACd,GAEA,CAAA50Z,IAAAA,gBAAA/D,MAMA,WAEqE,IADjEtF,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAoB,KAAMoga,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAwB,EAClDC,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAmBprQ,GAAYqrQ,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAA0BtwW,IAC3D,GAAyB,MAArBnpD,KAAK82Z,aAAT,CAGA,IAAO1gP,EAAcp2K,KAAdo2K,WACP,GAAkB,MAAdA,GAA4C,IAAtBA,EAAWx+K,OAArC,CAMA,IAAI8ha,EAAgB,KAEpB,GAAY,MAARvga,GAGmB,OAFrBuga,EAAgB15Z,KAAKw2Z,iBAAiBzmY,IAAI52B,IAEf,CACzB,IAAMwga,EAAuBxoZ,SAAShY,IAEjCme,MAAMqiZ,IAAyBA,GAAwB,GACxDA,EAAuBvjP,EAAWx+K,SACpC8ha,EAAgBtjP,EAAWujP,IAKZ,MAAjBD,IACFA,EAAgBtjP,EAAW,IAG7B,IACE,IAA+BwjP,EAAuB55Z,KAA/Co3Z,uBAED/7W,EAASr7C,KAAK0sR,MAAMmtI,WAAWH,EAAe15Z,MACpDA,KAAKo3Z,uBAAyB/7W,EAE1Br7C,KAAK0B,QAAQosR,OACf9tR,KAAK0sR,MAAM2qI,iBAEXh8W,EAAOyyO,QAAS,EACW,MAAvB8rI,GAA+Bv+W,IAAWu+W,EAC5Cv+W,EAAO4zO,cAAc2qI,EAAqBL,GAAe,GAEvDv5Z,KAAK85Z,mBAAqB,GAC1B95Z,KAAK+5Z,eAAiB/5Z,KAAKmsE,WAE7BnsE,KAAK+5Z,cAAgB,IAIzB1+W,EAAOg0B,QAAQmqV,EAAUC,GAEzBp+W,EAAOw1I,SAAU,EACjBx1I,EAAO0yO,mBAAoB,EAE3B1yO,EAAOgyB,OACP,MAAO9rD,IACPxN,QAAQwN,MAAMA,UAnDdxN,QAAQk/C,KAAK,8DAqDjB,GAAC,CAAAzwD,IAAAA,gBAAA/D,MAED,WACEuB,KAAKo3Z,uBAAyB,KAC9Bp3Z,KAAK0sR,MAAM2qI,eACb,GAAC,CAAA70Z,IAAAA,kBAAA/D,MAED,SAAgBiwF,GACd1uF,KAAK0sR,MAAMppH,OAAO50E,GAClB1uF,KAAKq5Z,mBACP,GAAC,CAAA72Z,IAAAA,sBAAA/D,MAED,SAAoB8pC,EAAe4P,GACjCn4C,KAAK0sR,MAAM9oR,iBAAiB2kC,EAAO4P,EACrC,GAEA,CAAA31C,IAAAA,eAAA/D,MAIA,WACE,IAAMglJ,EAASzjJ,KAAKyjJ,OACpB,GAAc,MAAVA,EAAgB,CAClB,IAAMo4B,EAAoC,SAA7B77K,KAAK0B,QAAQs4Z,YAAyB,OAAS,SAC5Dv2Q,EAAOixQ,SAAS10Z,KAAMA,KAAKi6Z,eAAgBp+O,GAC3Cp4B,EAAO6b,aAAc,EAEzB,GAAC,CAAA98J,IAAAA,eAAA/D,MAED,SAAaqzL,GACX,IAAMruC,EAASzjJ,KAAKyjJ,OACN,MAAVA,GAAwC,GAAtBA,EAAO6b,cAC3B7b,EAAOj+I,OAAOssL,EAAU9xL,MACxByjJ,EAAO6b,aAAc,EAEzB,GAAC,CAAA98J,IAAAA,oBAAA/D,MAEO,WACa,MAAfuB,KAAKyjJ,SACPzjJ,KAAKyjJ,OAAO6b,aAAc,EAE9B,GAEA,CAAA98J,IAAAA,qBAAA/D,MAGA,SAAmBs4Y,GAEjB,GADA/2Y,KAAK+2Y,gBAAkBA,EACE,MAArB/2Y,KAAK82Z,eAGT92Z,KAAK+3Z,6BACDhhB,GAAmB,GAAoB,MAAf/2Y,KAAKyjJ,SAAjC,CAIA,GAAmB,MAAfzjJ,KAAKyjJ,OAAgB,CACvB,IAAMo4B,EAAoC,SAA7B77K,KAAK0B,QAAQs4Z,YAAyB,OAAS,SAC5Dh6Z,KAAKyjJ,OAAS,IAAI2wQ,GAAOp0Z,KAAMA,KAAKi6Z,eAAgBp+O,GAEtD77K,KAAKyjJ,OAAO0xQ,aAAape,GAC3B,GAEA,CAAAv0Y,IAAAA,oBAAA/D,MAKA,SAAkB41Z,GAChBr0Z,KAAKi6Z,eAAiB5F,EACtB,IAAM5wQ,EAASzjJ,KAAKyjJ,OACN,MAAVA,GACFA,EAAOsxQ,YAAYV,EAEvB,GAEA,CAAA7xZ,IAAAA,kBAAA/D,MAIA,SAAgBsrC,GACd,IAAM05G,EAASzjJ,KAAKyjJ,OACN,MAAVA,GACFA,EAAO2xQ,UAAUrrX,EAErB,GAAC,CAAAvnC,IAAAA,YAAAutB,IAED,WACE,OAAO27J,EACT,GAEA,CAAAlpL,IAAAA,6BAAA/D,MAMA,SAA2By7Z,GAA6C,IAAvB/3Z,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAmBnC,KAElEA,KAAK0rL,UAAUq0H,cAAcm6G,EAAal6Z,KAAKgrO,aAC/C,IAEMupE,EAFOv0S,KAAK0rL,UAAU0pG,gBAAgBjzR,GAAQ,GAG3CqgH,MAAK,SAAC+xL,GAAG,OAAKA,EAAIpyS,OAAOwnE,UAAY4qO,EAAIpyS,OAAO88J,SAASxb,MAAM,IACxE,OAAW,MAAP8wJ,GAA2B,MAAZA,EAAIroH,KACd,KAGK,MAAVqoH,EAAI90I,GACC,CAAClgG,SAAUg1O,EAAI7pI,MAAO3B,OAAQwrI,EAAIroH,KAAKnjB,OAAQtJ,GAAI,OAG5D80I,EAAIroH,KAAKnjB,OAAOka,mBACZ,IAAIzsB,IAAU4vB,gBAAgBmuH,EAAIpyS,OAAO8lK,cAEtC,CAAC1oG,SAAUg1O,EAAI7pI,MAAO3B,OAAQwrI,EAAIroH,KAAKnjB,OAAQtJ,GAAI80I,EAAI90I,IAChE,GAEA,CAAAj9J,IAAAA,aAAA/D,MAKA,SAAW07Z,GACTn6Z,KAAKuB,OAAO6qB,IAAI+tY,GAIhBn6Z,KAAKk2Z,mBAAmB7hT,WAAWphG,YAAYknZ,EAAQz4Z,QACzD,GAAC,CAAAc,IAAAA,gBAAA/D,MAED,SAAc07Z,GACZn6Z,KAAKuB,OAAOq/D,OAAOu5V,EACrB,GAEA,CAAA33Z,IAAAA,cAAA/D,MAGA,SAAYS,GAEV,IADA,IAAO0e,EAAY5d,KAAKuB,OAAjBqc,SACElhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAAK,CAC/C,IAAMy9Z,EAAUv8Y,EAASlhB,GACrBy9Z,aAAmB7G,IACrBp0Z,EAAKi7Z,GAGX,GAEA,CAAA33Z,IAAAA,iBAAA/D,MAIA,SAAe27Z,GAAuB,WACpCp6Z,KAAKq6Z,aAAY,SAACF,GAChB54X,GAAKm6H,KAAK0+P,GACV74Z,GAAOq1K,sBAAsBujP,EAAQlyP,aACrC1mI,GAAKunI,IAAIvnK,IACTw0Z,GAAYr6P,KAAKy+P,EAAQpxP,QACpB2H,mBAAmBplD,EAAK/pH,OAAO0mK,aAChC1mI,GAAK0iI,IAAI8xP,IAAe,EAC1BoE,EAAQh3V,OAERg3V,EAAQt5V,MAEZ,GACF,GAEA,CAAAr+D,IAAAA,iBAAA/D,MAIA,SAAew1J,GACbj0J,KAAKq6Z,aAAY,SAACF,GAChBA,EAAQpuD,OAAO93M,EACjB,GACF,GAEA,CAAAzxJ,IAAAA,wBAAA/D,MAIA,SAAsBkrE,GACpB3pE,KAAKq6Z,aAAY,SAACF,GAChBA,EAAQxwV,QAAUA,CACpB,GACF,GAAC,CAAAnnE,IAAAA,eAAA/D,MAED,SAAa0T,SACJgkZ,EAA0Bn2Z,KAA1Bm2Z,cAAez0Z,EAAW1B,KAAX0B,QACf8/I,EAAuB9/I,EAAvB8/I,IAAKtqE,EAAkBx1E,EAAlBw1E,OAAQojV,EAAU54Z,EAAV44Z,OACpB,GAAW,MAAPnoZ,EAAa,CACf,IAAMssJ,EAAW,CAAC,CAChB,QAAS,cACT87P,WAAYpoZ,EACZqoZ,eAAwD,UAApB,QAApB,EAAAroZ,EAAIrW,MAAM,KAAKk1D,aAAK,eAAEh5D,eAClC,kBACA,sBAGFsia,GACF77P,EAAS3hK,KAAK,CACZ,QAAS,cACTy9Z,WAAYD,EACZE,eAAgB,uBAIpB,IAAMC,EAAiB,CACrB,WAAY,qBACZ,QAAS,UACTthR,MAAa,OAANjiE,QAAM,IAANA,EAAAA,OAAU9sE,EACjBjR,KAAS,OAAHqoJ,QAAG,IAAHA,EAAAA,OAAOp3I,EACbq0J,SAAAA,GAGF03P,EAAcpkY,YAAcg8B,KAAKC,UAAUysW,GAC3Cn3Z,SAASkP,KAAKS,YAAYkjZ,QACc,MAA/BA,EAAcjwV,eACvBiwV,EAAcjwV,cAAc3zC,YAAY4jY,EAE5C,KAAC,EA72BqB,CAAQ5+K,IC7CnBmjL,GAAa,8BAAG,WAAMC,GAAqB,0FAC/C,IAAIrqX,SAAQ,SAACG,EAAS8tC,GAC3B,IACMq8U,EAAYD,EAAchja,MAAM,cAEtC,IAAKija,EACH,OAAOr8U,EAAO,IAAIzgF,MAAM,GAAD,OAAI68Z,EAAa,8BAS1C,IANA,IAAM/1Z,EAAOg2Z,EAAU,GACjBC,EAASF,EAAch/Z,QAAQ,0BAA2B,IAE1Dm/Z,EAAiBC,KAAKF,GACtBG,EAAa,GAEVjxX,EAAS,EAAGA,EAAS+wX,EAAelja,OAAQmyC,GAbnC,IAawD,CAIxE,IAHA,IAAMn5B,EAAQkqZ,EAAelqZ,MAAMm5B,EAAQA,EAd3B,KAgBVkxX,EAAc,IAAIt+Z,MAAMiU,EAAMhZ,QAC3B8E,EAAI,EAAGA,EAAIkU,EAAMhZ,OAAQ8E,IAChCu+Z,EAAYv+Z,GAAKkU,EAAMm1F,WAAWrpG,GAGpC,IAAMuiZ,EAAY,IAAI1pS,WAAW0lT,GACjCD,EAAWl+Z,KAAKmiZ,GAGlBxuW,EAAQ,IAAIisR,KAAKs+F,EAAY,CAACp2Z,KAAAA,IAChC,KAAE,2CACH,gBA7ByB81Z,GAAA,mCC2CbQ,GAAgB,YAAAl/Y,EAAAA,EAAAA,GAAA,WAA7B,mBAE4B,OAF5BvR,EAAAA,KAAAA,+BACUyR,kBAA0C,IAAI8P,IAC9C9P,EAAAA,cAAgB,EAAE,CAqF5B,CADG,OAlFD3S,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,uBAAAutB,IAGA,WACE,OAAO/vB,KAAKm7Z,kBAAkB51W,IAChC,GAEA,CAAA/iD,IAAAA,gBAAA/D,MAeA,WAAa,WACL28Z,EAA4B,CAACvvV,SAAU,EAAGwvV,WAAW,GAU3D,OARAr7Z,KAAKm7Z,kBAAkB/uY,IAAIgvY,GAEO,IAA9Bp7Z,KAAKs7Z,sBAGPt7Z,KAAKu7Z,sBAAsBH,EAAU,GAGhC,SAACvvV,GACN,IAAI2vV,EAQJ,OANAA,EAAev+Z,KAAKC,IAAIg1J,GAAMrmF,EAAU,EAAG,GAAIuvV,EAASvvV,aAEnCuvV,EAASvvV,UAC5B8C,EAAK4sV,sBAAsBH,EAAUI,GAGhCJ,EAASvvV,QAClB,CACF,GAAC,CAAArpE,IAAAA,wBAAA/D,MAEO,SACJg9Z,EAAkCD,GACpC,IAAIE,EAAe,EACfC,EAAsB,EAEN,GAAhBH,IACFC,EAAgBJ,WAAY,GAAK,IAEU52V,EAFV,IAEZzkE,KAAKm7Z,mBAAiB,IAA7C,IAAK,EAAL,qBAA+C,KAApCC,EAAQ,QAEjBM,GAAgB,EADGN,EAAZvvV,UAGoB,IAAvBuvV,EAASC,WACXM,IAEH,UAAAj3V,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAED,IAAMk3V,EAAeH,EAAgB5vV,SACrC4vV,EAAgB5vV,SAAW2vV,EAI3Bx7Z,KAAK67Z,gBAAkBL,EAAeI,IACjC,EAAM57Z,KAAK67Z,eAAiBH,EAEjC,IAAMG,EAAgBF,IAAwB37Z,KAAKs7Z,qBAC/C,EACAt7Z,KAAK67Z,cAET77Z,KAAKu+B,cAAc,IAAI43E,YACnB,WAAY,CAAC30E,OAAQ,CAACq6X,cAAAA,MAEtBF,IAAwB37Z,KAAKs7Z,uBAC/Bt7Z,KAAK67Z,cAAgB,EACrB77Z,KAAKm7Z,kBAAkBh7Z,QAE3B,KAAC,EAtF0B,CAsF1B,EAtFkC27Z,uVC3BxBjU,GAAavkZ,SAASC,cAAc,UAE3Cw4Z,GAAyBj7Z,OAAO,yBAChCk7Z,GAAoBl7Z,OAAO,oBAE3Bm7Z,GAAkBn7Z,OAAO,kBACzBo7Z,GAAqBp7Z,OAAO,qBAC5Bq7Z,GAAiBr7Z,OAAO,iBACxBs7Z,GAAUt7Z,OAAO,UACjBu7Z,GAAUv7Z,OAAO,UACjBw7Z,GAAWx7Z,OAAO,WAClBy7Z,GAAUz7Z,OAAO,UAEVwkZ,GAAcxkZ,OAAO,cACrB07Z,GAAwB17Z,OAAO,wBAC/B27Z,GAAuB37Z,OAAO,uBAC9B47Z,GAA2B57Z,OAAO,2BAClC67Z,GAAa77Z,OAAO,aACpB87Z,GAAgB97Z,OAAO,gBACvB+7Z,GAAiB/7Z,OAAO,iBACxBg8Z,GAAgBh8Z,OAAO,gBACvBi8Z,GAAcj8Z,OAAO,cACrBk8Z,GAAgBl8Z,OAAO,gBACvBm8Z,GAAcn8Z,OAAO,cACrBo8Z,GAAap8Z,OAAO,aACpBq8Z,GAAoBr8Z,OAAO,SAC3B+jZ,GAAU/jZ,OAAO,UACjBs8Z,GAASt8Z,OAAO,SAChBu8Z,GAAev8Z,OAAO,eACtBilZ,GAAQjlZ,OAAO,QACfw8Z,GAAex8Z,OAAO,eACtBs3Y,GAAYt3Y,OAAO,YACnB+1Z,GAAY/1Z,OAAO,YACnBy8Z,GAAmBz8Z,OAAO,mBAC1B08Z,GAAa18Z,OAAO,aACpB28Z,GAAqB38Z,OAAO,qBAC5B48Z,GAAwB58Z,OAAO,wBAS/B68Z,GAAa,SAACx2Z,GACzB,MAAO,CACLjL,EAAGiL,EAAEjL,EACLmL,EAAGF,EAAEE,EACLC,EAAGH,EAAEG,EACL7G,SAAQ,WACN,MAAO,GAAP,OAAUT,KAAK9D,EAAC,aAAK8D,KAAKqH,EAAC,aAAKrH,KAAKsH,EAAC,IACxC,EAEJ,EAyCqBs2Z,GAAuB,kBAAA5hZ,EAAAA,EAAAA,GAAA,WA+F1C,mBAAAvR,EAAAA,KAAAA,IACEyR,EAAAA,EAAAA,KAAAA,OA/DwBA,IAAmB,KAEnBA,EAAAA,IAAmB,KAG7CA,EAAAA,iBAA2B,EAQ3BA,EAAAA,gBAAiB,EAERA,EAAAA,KAAyB,EACzBA,EAAAA,KAAY,EACZA,EAAAA,IAAgB,EAMhBA,EAAAA,IAAY,GAEZA,EAAAA,IAAoC,KAEpCA,EAAAA,IAA2Bjd,IAAS,WAC3C,IAAM4+Z,EAAe3hZ,EAAKu+F,wBAC1Bv+F,EAAKopY,IAAauY,EACpB,GAnKwC,IAqK/B3hZ,EAAAA,IAA6Bjd,IAAS,SAAC6+Z,GAC9C,IAAMC,EAAgB7hZ,EAAK8oY,eACvB+Y,IAAkBD,GACpB5hZ,EAAKqiB,cAAc,IAAI43E,YACnB,mBAAoB,CAAC30E,OAAQ,CAACmoC,QAASo0V,KAE/C,GA1KmD,GA4K1C7hZ,EAAAA,IAAyC,KACzCA,EAAAA,IAAqD,KAErDA,EAAAA,IAAsC,IAAIg/Y,GA6VnDh/Y,EAAAA,IAAa,WACXA,EAAK2gZ,IAAgB9qY,YAAc7V,EAAKmgZ,GAC1C,EAEAngZ,EAAAA,IAAY,WACVA,EAAK2gZ,IAAgB9qY,YAAc,EACrC,EAMA7V,EAAAA,IAAmB,SAACqsB,GAClBrsB,EAAKqiB,cAAc,IAAI43E,YACnB,QACA,CAAC30E,OAAQ,CAAC58B,KAAM,mBAAoBo5Z,YAAaz1X,EAAMs7W,eAC7D,EAvVE3nY,EAAKmuW,aAAa,CAAC71U,KAAM,SAEzB,IAgBIrmC,EAAOC,EAhBLg6D,EAAalsD,EAAKksD,WAiBxB,GjDsIwB,SAACA,GAC3B5iE,GAAO8wX,GAAgBluT,EACzB,CiDvJI61V,CAAa71V,GAEblsD,EAAKghZ,IAAc90V,EAAW0hD,cAAc,cAC5C5tG,EAAKihZ,IACD/0V,EAAW0hD,cAAc,cAC7B5tG,EAAK2oY,IAAWz8U,EAAW0hD,cAAc,UACzC5tG,EAAK2gZ,IACDz0V,EAAW0hD,cAAc,WAC7B5tG,EAAK8/Y,IACD9/Y,EAAKihZ,IAAmBvzV,aAAa,cAMrC1tD,EAAK4tW,YAAa,CACpB,IAAM7lB,EAAO/nV,EAAKu+F,wBAClBtsG,EAAQ81V,EAAK91V,MACbC,EAAS61V,EAAK71V,YAEdD,EA5NsB,IA6NtBC,EA5NuB,IA0RxB,OA1DD8N,EAAKkhZ,IACD,IAAInH,GAAW,CAACj9Q,OAAQ98H,EAAK2oY,IAAUnjZ,QAAS,KAAMyM,MAAAA,EAAOC,OAAAA,IAIjEkiC,QAAQG,UAAUC,MAAK,WACrBx0B,EAAKopY,IAAappY,EAAKu+F,wBACzB,IAEI45Q,KAGFn4W,EAAK+/Y,IACD,IAAIz6G,gBAAe,SAACzuP,GAIlB,IAAI72C,EAAK26Y,IAAW7vL,aAApB,CAEC,IAEwBviK,EAFxB,IAEiB1R,GAAO,IAAzB,IAAK,EAAL,qBAA2B,KAAlB4+B,EAAK,QACRA,EAAMpwF,SAAW,MACnB2a,EAAKopY,IAAa3zT,EAAMusU,aAE3B,UAAAx5V,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EACH,KAGF4vT,GACFp4W,EAAKsgZ,IAAyB,IAAIjoC,sBAAqB,SAAAxhU,GAAU,IACtC+R,EADsC,IAC7C/R,GAAO,IAAzB,IAAK,EAAL,qBAA2B,KAAlB4+B,EAAK,QACZ,GAAIA,EAAMpwF,SAAW,KAAM,CACzB,IAAMu8Z,EAAgB5hZ,EAAK8oY,eAC3B9oY,EAAKugZ,IAAwB9qU,EAAMwsU,eACnCjiZ,EAAKwgZ,IAA0BoB,GAC3B5hZ,EAAKugZ,MAA0BvgZ,EAAKowD,QACtCpwD,EAAK8gZ,OAGV,UAAAj4V,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACH,GAAG,CACD7xD,KAAM,KAMNkrZ,WAAY,MAIZ3/K,UAAW,OAKbviO,EAAKugZ,KAAwB,EAC9B,CACH,CAhKC,OAgKAlzZ,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,SAAAutB,IA3GD,WACE,OAAO/vB,KAAKw9Z,KACd,GAAC,CAAAh7Z,IAAAA,EAAAutB,IAED,WACE,OAAO6zX,GAASgE,SAClB,GAEA,CAAAplZ,IAAAA,iBAAAutB,IACA,WACE,OAAO/vB,KAAKy9Z,KACd,GAAC,CAAAj7Z,IAAAA,oBAAA/D,MAkGD,WACEyoI,GAAAA,EAAAA,EAAAA,WAAAA,oBAAAA,OAAAA,GAAAA,EAAAA,EAAAA,WAAAA,oBAAAA,MAAAA,KAAAA,MACImtP,GACFr0X,KAAKi8Z,IAAkBr0S,QAAQ5nH,MAE/BmV,KAAKvR,iBAAiB,SAAU5D,KAAK+7Z,KAGnCznC,IACFt0X,KAAKw8Z,IAAwB50S,QAAQ5nH,MAGvCA,KAAK4D,iBAAiB,QAAS5D,KAAKs8Z,KACpCt8Z,KAAK4D,iBAAiB,OAAQ5D,KAAKu8Z,KAEnC,IAAMzqO,EAAW9xL,KAAK62Z,IACtB/kO,EAASluL,iBACL,cAAe5D,KAAKm8Z,KAExBrqO,EAASusO,cAAcr+Z,KAAKo9Z,KAEI,MAA5Bp9Z,KAAKk8Z,MACP/mZ,KAAK/U,aAAaJ,KAAKk8Z,KACvBl8Z,KAAKk8Z,IAAsB,KAG3Bl8Z,KAAKypX,cAAc,MAAO,MAE9B,GAAC,CAAAjnX,IAAAA,uBAAA/D,MAED,WAAoB,WAClByoI,GAAAA,EAAAA,EAAAA,WAAAA,uBAAAA,OAAAA,GAAAA,EAAAA,EAAAA,WAAAA,uBAAAA,MAAAA,KAAAA,MACImtP,GACFr0X,KAAKi8Z,IAAkBrqD,UAAU5xW,MAEjCmV,KAAK+iB,oBAAoB,SAAUl4B,KAAK+7Z,KAGtCznC,IACFt0X,KAAKw8Z,IAAwB5qD,UAAU5xW,MAGzCA,KAAKk4B,oBAAoB,QAASl4B,KAAKs8Z,KACvCt8Z,KAAKk4B,oBAAoB,OAAQl4B,KAAKu8Z,KAEtC,IAAMzqO,EAAW9xL,KAAK62Z,IACtB/kO,EAAS55J,oBACL,cAAel4B,KAAKm8Z,KAExBrqO,EAASwsO,gBAAgBt+Z,KAAKo9Z,KAE9Bp9Z,KAAKk8Z,IAAsB/mZ,KAAKtV,YAAW,WACzC8uE,EAAKyuV,IAAQ17P,UACb/yF,EAAKutV,IAAsB,IAC7B,GAvV2B,IAwV7B,GAAC,CAAA15Z,IAAAA,UAAA/D,MAED,SAAQotX,GACN3kP,GAAAA,EAAAA,EAAAA,WAAAA,UAAAA,MAAAA,KAAAA,KAAc2kP,GAMVA,EAAkBz9U,IAAI,SACR,MAAZpuC,KAAKmS,KACPnS,KAAKo8Z,KAAW,EAChBp8Z,KAAK+8Z,IAAe,EACpB/8Z,KAAKo9Z,IAAQ7iW,SACJv6D,KAAKmS,MAAQnS,KAAKo9Z,IAAQl1X,MACnCloC,KAAKo8Z,KAAW,EAChBp8Z,KAAK+8Z,IAAe,EACpB/8Z,KAAKg9Z,QAILnxC,EAAkBz9U,IAAI,QACxBpuC,KAAKm9Z,IAAmBrqZ,aAAa,aAAc9S,KAAK28Z,KAGtD9wC,EAAkBz9U,IAAI,qBACxBy3V,GAAkB/1H,gBAAkB9vQ,KAAK8vQ,iBAGvC+7G,EAAkBz9U,IAAI,oBACpBpuC,KAAKu+Z,eACPv+Z,KAAKo9Z,IAAQoB,aAAax+Z,KAAKmS,KAE/BnS,KAAKo9Z,IAAQoB,aAAa,MAGhC,GAEA,CAAAh8Z,IAAAA,YAAA/D,MACA,SAAUmG,EAAe65Z,GACvB,OAAOz+Z,KAAK62Z,IACP6H,cAAc1+Z,KAAKo9Z,KACnBlgQ,UAAUt4J,EAAM65Z,EACvB,GAEA,CAAAj8Z,IAAAA,SAAA/D,MAAAA,WAAA,mBACA,WAAawC,GAAuB,8GAuBD,OAtB3B0vQ,EAAW1vQ,EAAUA,EAAQ0vQ,cAAWvmQ,EACxCu0Z,EAAkB19Z,EAAUA,EAAQ09Z,qBAAkBv0Z,EACtDw0Z,EAAiB39Z,EAAUA,EAAQy1Z,iBAActsZ,EAASy0Z,EAEnB7+Z,KAAKo9Z,IAA3CjvZ,EAAK,EAALA,MAAOC,EAAM,EAANA,OAAQsoZ,EAAW,EAAXA,YAAaxmO,EAAM,EAANA,OAAM4uO,EACd9+Z,KAAK62Z,IAAzB7mH,EAAG,EAAHA,IAAK9jF,EAAW,EAAXA,YACR6yM,EAAc5wZ,EAAQ+9M,EAAc8jF,EACpCgvH,EAAe5wZ,EAAS89M,EAAc8jF,EACtCx2L,EAAU,EACVE,EAAU,GACS,IAAnBklT,IACElI,EAAcxmO,GACV+uO,EAAYD,EAClBA,EAAe/ha,KAAK83J,MAAMgqQ,EAAcrI,GACxCh9S,GAAWulT,EAAYD,GAAgB,IAEjCE,EAAWH,EACjBA,EAAc9ha,KAAK83J,MAAMiqQ,EAAetI,GACxCl9S,GAAW0lT,EAAWH,GAAe,IAGzClX,GAAW15Y,MAAQ4wZ,EACnBlX,GAAWz5Y,OAAS4wZ,EAAa1oQ,EAAAA,KAAAA,GAAA,kBAExB,IAAIhmH,QAAO,8BAAO,WAAOG,EAAS8tC,GAAM,iEAU3B,GATlBspU,GAAW5uQ,WAAW,MAAOa,UACzBtqE,EAAKqnV,IAAW6H,cAAclvV,EAAK4tV,KACnC5jT,EACAE,EACAqlT,EACAC,EACA,EACA,EACAD,EACAC,IACCnX,GAAmBsX,SAAU,CAAF7vY,EAAAA,KAAAA,EAAA,SAIzBqhP,GAAyB,cAAbA,EAAwB,CAAArhP,EAAAA,KAAAA,EAAA,+BAChCmhB,EAASo3W,GAAmBsX,aAAW,UAI7CtX,GAAWlf,OAAQ,CAAFr5W,EAAAA,KAAAA,GAAA,MACN,OADMA,EAAAA,GACbmhB,EAAOnhB,EAAAA,KAAAA,EAAOorY,GACjB7S,GAAW3qP,UAAUyzG,EAAUguJ,IAAiB,cAAArvY,EAAAA,GAAAA,EAAAA,KAAA,0CAGtDu4X,GAAWlf,QAAO,SAAC92H,GACjB,IAAKA,EACH,OAAOtzL,EAAO,IAAIzgF,MAAM,mCAG1B2yC,EAAQohO,EACV,GAAGlB,EAAUguJ,GAAiB,4CAC/B,qDAhCiB,KAgChB,QAEiC,OAFjCroQ,EAAAA,KAAAA,GAEFt2J,KAAKslZ,IAAa,CAACn3Y,MAAAA,EAAOC,OAAAA,IAAS,qBACnC,+DACH,mDA9DD3P,IA8DC,CAAA+D,IAAAA,mBAAA/D,MAED,SAAiBqzL,GACf9xL,KAAKo9Z,IAAQnY,iBAAmBnzN,CAClC,GAAC,CAAAtvL,IAAAA,qBAAA/D,MAED,WACEuB,KAAKo9Z,IAAQnY,iBAAmB,IAClC,GAAC,CAAAziZ,IAEGm6Z,GAAU5sY,IAAd,WACE,OAAO/vB,KAAK48Z,GACd,GAAC,CAAAp6Z,IAEGo6Z,GAAa7sY,IAAjB,WACE,OAAoB,MAAZ/vB,KAAKwhJ,KAA4B,SAAbxhJ,KAAKwhJ,IAAkBxhJ,KAAKg8Z,IACLh8Z,KAAKwhJ,GAC1D,GAKA,CAAAh/I,IACCg7Z,GAAU/+Z,MAAX,WACE,OAAOuB,KAAKo8Z,GACd,GAEA,CAAA55Z,IACCi7Z,GAAkBh/Z,MAAnB,WACE,OAAOuB,KAAKssE,QAAUtsE,KAAKy8Z,GAC7B,GAAC,CAAAj6Z,IAEAk7Z,GAAqBj/Z,MAAtB,WACE,QAASuB,KAAKmS,KAAOnS,KAAKy8Z,GAC5B,GAEA,CAAAj6Z,IAGC8iZ,GAAW7mZ,MAAZ,YAAwD,IAAzC0P,EAAK,EAALA,MAAOC,EAAM,EAANA,OACpBpO,KAAKk9Z,IAAY7yZ,MAAM8D,MAAQ,GAAH,OAAMA,EAAK,MACvCnO,KAAKk9Z,IAAY7yZ,MAAM+D,OAAS,GAAH,OAAMA,EAAM,MAEzCpO,KAAKo4Y,IAAW,CAACjqY,MAAO+C,WAAW/C,GAAQC,OAAQ8C,WAAW9C,IAChE,GAAC,CAAA5L,IAEAujZ,GAAKtnZ,MAAN,SAAQ2ga,EAAeC,GACvB,GAAC,CAAA78Z,IAEAy6Z,GAAWx+Z,MAAZ,WACMuB,KAAKo8Z,MAITp8Z,KAAKo8Z,KAAW,EAChBp8Z,KAAK+8Z,IAAe7rW,YAAYtxD,MAClC,GAAC,CAAA4C,IAEA66Z,GAAY5+Z,MAAb,WACEuB,KAAKo9Z,IAAQhnB,aACf,GAAC,CAAA5zY,IAEA86Z,GAAY7+Z,MAAb,WACA,GAAC,CAAA+D,IAEAs6Z,GAAar+Z,MAAd,SAAgBkgG,GACd3+F,KAAKq8Z,IAAW19T,EAChB,IAAMn1B,EAAWxpE,KAAKypE,cAEN,MAAZD,GAAoBA,EAASj5C,gBAAkBvwB,MAC/CA,KAAK68Z,IAAgB9qY,aAAe4sE,IACtC3+F,KAAK68Z,IAAgB9qY,YAAc4sE,EAEvC,GAAC,CAAAn8F,IAAAA,EAAA/D,MAUD,SAAY6H,GACVtG,KAAKo9Z,IAAQtrL,QAAQxrO,EAAE6H,MAAO7H,EAAE8H,OAClC,GAQA,CAAA5L,IAAAA,EAAA/D,MAAAA,WAAA,mBAIA,mGAC4B,GAApBszL,EAAQ/xL,KAAKo9Z,KACfp9Z,KAAKssE,QAAWtsE,KAAK09Z,OACrB19Z,KAAKmS,MAAQ4/K,EAAM7pJ,IAAG,CAAA44H,EAAAA,KAAAA,EAAA,uCAsB8B,OAlBpD9gK,KAAKu+Z,gBACPxsO,EAAMysO,aAAax+Z,KAAKmS,KAE1BnS,KAAK88Z,IAAe,WAKpB/qO,EAAMutO,gBAEAC,EAAuBv/Z,KAAKu9Z,IAAkBiC,gBAC9Ch+Z,EAASxB,KAAKmS,IAAG2uJ,EAAAA,KAAAA,EAEf2+P,EAAa1tO,EAAM2tO,UACrBl+Z,GACA,SAACqqE,GAAgB,OACb0zV,EAA6C,IAAxBrtQ,GAAMrmF,EAAU,EAAG,GAAU,IAEpD8zV,EAAc3/Z,KAAao2X,MAAqBt1N,EAAAA,KAAAA,GAEhDxwH,QAAQxtC,IAAI,CAAC28Z,EAAYE,IAAY,QAK3C,OAHA3/Z,KAAKi9Z,MACLj9Z,KAAKs9Z,MAELx8P,EAAAA,KAAAA,GACM,IAAIxwH,SAAc,SAAAG,GACtBgxB,uBAAsB,WACpBA,uBAAsB,WACpB2oD,EAAK7rF,cACD,IAAI43E,YAAY,OAAQ,CAAC30E,OAAQ,CAAC0G,IAAK1mC,MAC3CivC,GACF,GACF,GACF,IAAE,QAAAqwH,EAAAA,KAAAA,GAAA,cAAAA,EAAAA,KAAAA,GAAAA,EAAAA,GAAAA,EAAAA,MAAAA,GAEF9gK,KAAKu+B,cAAc,IAAI43E,YACnB,QAAS,CAAC30E,OAAQ,CAAC58B,KAAM,cAAeo5Z,YAAa,EAAF,OAAY,QAEzC,OAFyCl9P,EAAAA,KAAAA,GAEnEy+P,EAAqB,GAAK,6EAE7B,kDApDD9ga,KAoDC,EAAA+D,IAAAA,KAAAutB,IA9eD,WACE,MAAO,cACT,GAEA,CAAAvtB,IAAAA,iBAAAutB,IAMA,WACE,OAAO81W,GAAkBF,IAAiBrB,iBAC5C,EAEAr1W,IATA,SAA0BxwB,GACxBonY,GAAkBF,IAAiBrB,kBAAoB7lY,CACzD,GAAC,CAAA+D,IAAAA,qBAAAutB,IAqBD,WACE,OAAO6zX,GAASgE,UAAUgY,QAC5B,EAAC3wY,IAfD,SAA8BxwB,GACxBA,EAAQ,GACVsV,QAAQk/C,KACJ,+EAEFx0D,GAAS,GACXsV,QAAQk/C,KACJ,kFAEN2wV,GAASgE,UAAUgY,SAAWnha,CAChC,KAAC,EA1ByC,CAAQsqX,IAmF/C/3S,GAnCOyrV,GAAoB,GACpBL,GAAO,GACPW,GAAW,GAMXV,GAAO,GAEPH,GAAkB,GAElBH,GAAsB,GAKtBW,GAAwB,GAQxBT,GAAe,GACfO,GAAqB,GAErBe,GAON1G,KA8VJgJ,GARCvD,GAAQ,GAIRC,GAIAnkB,KAcI0nB,GAVJ3D,GAUKa,KA9ZoB+C,GAAAA,CAAzBrha,GAAS,CAACkG,KAAM7G,UAAQ,2BAECgia,GAAAA,CAAzBrha,GAAS,CAACkG,KAAM7G,UAAQ,2BAGzBgia,GAAAA,CADCrha,GAAS,CAACkG,KAAMsW,QAASg7I,UAAW,sBAAoB,uCASzD6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAMsW,QAASg7I,UAAW,qBAAmB,mXCxJpD8pQ,GAAmBl/Z,OAAO,mBAC1Bm/Z,GAAUn/Z,OAAO,UAMjBo/Z,GAA6C,CACjDryI,YAAa1kO,IACbiqG,UAAU,GCVN+sQ,GAAcr/Z,OAAO,cACrBs/Z,GAAoBt/Z,OAAO,oBAC3Bu/Z,GAAYv/Z,OAAO,YACnBw/Z,GAAcx/Z,OAAO,cACrBy/Z,GAAiBz/Z,OAAO,iBAExB0/Z,GAAe,IAAI7vP,GACnB8vP,GAAqB,IAAIjqQ,GCZ3BkqQ,GAAO,SAAUzka,GAAK,OAAOm9E,IAAIC,gBAAgB,IAAIqjP,KAAK,CAACzgU,GAAI,CAAE2I,KAAM,oBAAuB,EAElG,IACIw0E,IAAIujP,gBAAgB+jG,GAAK,IAC7B,CACA,MAAOp6Z,KAEHo6Z,GAAO,SAAUzka,GAAK,MAAO,6CAA+C84I,UAAU94I,EAAI,EAEpF,SAAUsL,GAAK,OAAO,IAAI7D,OAAO6D,EAAG,CAAE3C,KAAM,UAAa,CACnE,CACA,IASI+7Z,GAAKprT,WAAYqrT,GAAM9rQ,YAAa+rQ,GAAMt5T,YAE1Cu5T,GAAO,IAAIH,GAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAgB,EAAG,EAAoB,IAG1II,GAAO,IAAIJ,GAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAiB,EAAG,IAEjIK,GAAO,IAAIL,GAAG,CAAC,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,KAE7EM,GAAO,SAAU5vY,EAAIyZ,GAErB,IADA,IAAIvkC,EAAI,IAAIq6Z,GAAI,IACPlka,EAAI,EAAGA,EAAI,KAAMA,EACtB6J,EAAE7J,GAAKouC,GAAS,GAAKzZ,EAAG30B,EAAI,GAGhC,IAAIwK,EAAI,IAAI25Z,GAAIt6Z,EAAE,KAClB,IAAS7J,EAAI,EAAGA,EAAI,KAAMA,EACtB,IAAK,IAAImT,EAAItJ,EAAE7J,GAAImT,EAAItJ,EAAE7J,EAAI,KAAMmT,EAC/B3I,EAAE2I,GAAOA,EAAItJ,EAAE7J,IAAO,EAAKA,EAGnC,MAAO,CAAC6J,EAAGW,EACf,EACI8pE,GAAKiwV,GAAKH,GAAM,GAAIn0W,GAAKqkB,GAAG,GAAIkwV,GAAQlwV,GAAG,GAE/CrkB,GAAG,IAAM,IAAKu0W,GAAM,KAAO,GAI3B,IAHA,IAAI1oR,GAAKyoR,GAAKF,GAAM,GAAgBI,IAAP3oR,GAAG,GAAYA,GAAG,IAE3CmgO,GAAM,IAAIioD,GAAI,OACTlka,GAAI,EAAGA,GAAI,QAASA,GAAG,CAE5B,IAAIR,IAAU,MAAJQ,MAAgB,GAAW,MAAJA,KAAe,EAEhDR,IAAU,OADVA,IAAU,MAAJA,MAAgB,GAAW,MAAJA,KAAe,MACtB,GAAW,KAAJA,KAAe,EAC5Cy8W,GAAIj8W,MAAY,MAAJR,MAAgB,GAAW,IAAJA,KAAe,KAAQ,CAC9D,CAIA,IAAIkla,GAAQ,SAAUviY,EAAI3M,EAAIhrB,GAO1B,IANA,IAAIzL,EAAIojC,EAAGjnC,OAEP8E,EAAI,EAEJmK,EAAI,IAAI+5Z,GAAI1uY,GAETx1B,EAAIjB,IAAKiB,IACVmK,EAAEg4B,EAAGniC,GAAK,GAEhB,IAII2ka,EAJA95X,EAAK,IAAIq5X,GAAI1uY,GACjB,IAAKx1B,EAAI,EAAGA,EAAIw1B,IAAMx1B,EAClB6qC,EAAG7qC,GAAM6qC,EAAG7qC,EAAI,GAAKmK,EAAEnK,EAAI,IAAO,EAGtC,GAAIwK,EAAG,CAEHm6Z,EAAK,IAAIT,GAAI,GAAK1uY,GAElB,IAAIovY,EAAM,GAAKpvY,EACf,IAAKx1B,EAAI,EAAGA,EAAIjB,IAAKiB,EAEjB,GAAImiC,EAAGniC,GAQH,IANA,IAAI6ka,EAAM7ka,GAAK,EAAKmiC,EAAGniC,GAEnB8ka,EAAMtvY,EAAK2M,EAAGniC,GAEdyK,EAAIogC,EAAG1I,EAAGniC,GAAK,MAAQ8ka,EAElB16Z,EAAIK,GAAM,GAAKq6Z,GAAO,EAAIr6Z,GAAKL,IAAKK,EAEzCk6Z,EAAG1oD,GAAIxxW,KAAOm6Z,GAAOC,CAIrC,MAGI,IADAF,EAAK,IAAIT,GAAInla,GACRiB,EAAI,EAAGA,EAAIjB,IAAKiB,EACbmiC,EAAGniC,KACH2ka,EAAG3ka,GAAKi8W,GAAIpxU,EAAG1I,EAAGniC,GAAK,QAAW,GAAKmiC,EAAGniC,IAItD,OAAO2ka,CACX,EAEII,GAAM,IAAId,GAAG,KACjB,IAASjka,GAAI,EAAGA,GAAI,MAAOA,GACvB+ka,GAAI/ka,IAAK,EACb,IAASA,GAAI,IAAKA,GAAI,MAAOA,GACzB+ka,GAAI/ka,IAAK,EACb,IAASA,GAAI,IAAKA,GAAI,MAAOA,GACzB+ka,GAAI/ka,IAAK,EACb,IAASA,GAAI,IAAKA,GAAI,MAAOA,GACzB+ka,GAAI/ka,IAAK,EAEb,IAAIgla,GAAM,IAAIf,GAAG,IACjB,IAASjka,GAAI,EAAGA,GAAI,KAAMA,GACtBgla,GAAIhla,IAAK,EAEb,IAAIila,GAAoBP,GAAKK,GAAK,EAAG,GAEjCG,GAAoBR,GAAKM,GAAK,EAAG,GAqBjCG,GAAO,SAAU76Z,GAAK,OAASA,EAAI,EAAK,IAAU,EAAJA,GAAS,EAAI,EAG3D86Z,GAAM,SAAU36Z,EAAG1L,EAAG6K,IACb,MAAL7K,GAAaA,EAAI,KACjBA,EAAI,IACC,MAAL6K,GAAaA,EAAIa,EAAEvP,UACnB0O,EAAIa,EAAEvP,QAEV,IAAImP,EAAI,IAAKI,aAAay5Z,GAAMA,GAAMz5Z,aAAa05Z,GAAMA,GAAMF,IAAIr6Z,EAAI7K,GAEvE,OADAsL,EAAEkoB,IAAI9nB,EAAEkwL,SAAS57L,EAAG6K,IACbS,CACX,EAqLIg7Z,GAAQ,SAAUv7Z,EAAGQ,EAAGG,GACxBA,IAAU,EAAJH,EACN,IAAIwT,EAAKxT,EAAI,EAAK,EAClBR,EAAEgU,IAAMrT,EACRX,EAAEgU,EAAI,IAAMrT,IAAM,CACtB,EAEI66Z,GAAU,SAAUx7Z,EAAGQ,EAAGG,GAC1BA,IAAU,EAAJH,EACN,IAAIwT,EAAKxT,EAAI,EAAK,EAClBR,EAAEgU,IAAMrT,EACRX,EAAEgU,EAAI,IAAMrT,IAAM,EAClBX,EAAEgU,EAAI,IAAMrT,IAAM,EACtB,EAEI86Z,GAAQ,SAAUz7Z,EAAG0rB,GAGrB,IADA,IAAI56B,EAAI,GACCoF,EAAI,EAAGA,EAAI8J,EAAE5O,SAAU8E,EACxB8J,EAAE9J,IACFpF,EAAEwF,KAAK,CAAErB,EAAGiB,EAAG+J,EAAGD,EAAE9J,KAE5B,IAAIjB,EAAInE,EAAEM,OACNirP,EAAKvrP,EAAEsZ,QACX,IAAKnV,EACD,MAAO,CAACyma,GAAI,GAChB,GAAS,GAALzma,EAAQ,CACR,IAAI0L,EAAI,IAAIw5Z,GAAGrpa,EAAE,GAAGmE,EAAI,GAExB,OADA0L,EAAE7P,EAAE,GAAGmE,GAAK,EACL,CAAC0L,EAAG,EACf,CACA7P,EAAEkiG,MAAK,SAAUx9F,EAAGuK,GAAK,OAAOvK,EAAEyK,EAAIF,EAAEE,CAAG,IAG3CnP,EAAEwF,KAAK,CAAErB,GAAI,EAAGgL,EAAG,QACnB,IAAII,EAAIvP,EAAE,GAAI4P,EAAI5P,EAAE,GAAIsiL,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAO7C,IANAxiL,EAAE,GAAK,CAAEmE,GAAI,EAAGgL,EAAGI,EAAEJ,EAAIS,EAAET,EAAGI,EAAGA,EAAGK,EAAGA,GAMhC2yK,GAAMp+K,EAAI,GACboL,EAAIvP,EAAEA,EAAEsiL,GAAInzK,EAAInP,EAAEwiL,GAAIrzK,EAAImzK,IAAOE,KACjC5yK,EAAI5P,EAAEsiL,GAAMC,GAAMviL,EAAEsiL,GAAInzK,EAAInP,EAAEwiL,GAAIrzK,EAAImzK,IAAOE,KAC7CxiL,EAAEuiL,KAAQ,CAAEp+K,GAAI,EAAGgL,EAAGI,EAAEJ,EAAIS,EAAET,EAAGI,EAAGA,EAAGK,EAAGA,GAE9C,IAAIi7Z,EAASt/K,EAAG,GAAGpnP,EACnB,IAASiB,EAAI,EAAGA,EAAIjB,IAAKiB,EACjBmmP,EAAGnmP,GAAGjB,EAAI0ma,IACVA,EAASt/K,EAAGnmP,GAAGjB,GAGvB,IAAIk6V,EAAK,IAAIirE,GAAIuB,EAAS,GAEtBC,EAAMC,GAAG/qa,EAAEuiL,EAAK,GAAI87K,EAAI,GAC5B,GAAIysE,EAAMlwY,EAAI,CAINx1B,EAAI,EAAR,IAAWw2J,EAAK,EAEZovQ,EAAMF,EAAMlwY,EAAIqwY,EAAM,GAAKD,EAE/B,IADAz/K,EAAGrpJ,MAAK,SAAUx9F,EAAGuK,GAAK,OAAOovV,EAAGpvV,EAAE9K,GAAKk6V,EAAG35V,EAAEP,IAAMO,EAAEyK,EAAIF,EAAEE,CAAG,IAC1D/J,EAAIjB,IAAKiB,EAAG,CACf,IAAI8la,EAAO3/K,EAAGnmP,GAAGjB,EACjB,KAAIk6V,EAAG6sE,GAAQtwY,GAKX,MAJAghI,GAAMqvQ,GAAO,GAAMH,EAAMzsE,EAAG6sE,IAC5B7sE,EAAG6sE,GAAQtwY,CAInB,CAEA,IADAghI,KAAQovQ,EACDpvQ,EAAK,GAAG,CACX,IAAIuvQ,EAAO5/K,EAAGnmP,GAAGjB,EACbk6V,EAAG8sE,GAAQvwY,EACXghI,GAAM,GAAMhhI,EAAKyjU,EAAG8sE,KAAU,IAE5B/la,CACV,CACA,KAAOA,GAAK,GAAKw2J,IAAMx2J,EAAG,CACtB,IAAIgma,EAAO7/K,EAAGnmP,GAAGjB,EACbk6V,EAAG+sE,IAASxwY,MACVyjU,EAAG+sE,KACHxvQ,EAEV,CACAkvQ,EAAMlwY,CACV,CACA,MAAO,CAAC,IAAIyuY,GAAGhrE,GAAKysE,EACxB,EAEIC,GAAK,SAALA,EAAet7Z,EAAGF,EAAGL,GACrB,OAAe,GAARO,EAAEtL,EACHwB,KAAKC,IAAImla,EAAGt7Z,EAAEF,EAAGA,EAAGL,EAAI,GAAI67Z,EAAGt7Z,EAAEG,EAAGL,EAAGL,EAAI,IAC1CK,EAAEE,EAAEtL,GAAK+K,CACpB,EAEIw0B,GAAK,SAAU/+B,GAGf,IAFA,IAAIR,EAAIQ,EAAErE,OAEH6D,IAAMQ,IAAIR,KAMjB,IAJA,IAAIy0D,EAAK,IAAI0wW,KAAMnla,GAEfkna,EAAM,EAAGC,EAAM3ma,EAAE,GAAImqE,EAAM,EAC3Bh/D,EAAI,SAAUD,GAAK+oD,EAAGyyW,KAASx7Z,CAAG,EAC7BzK,EAAI,EAAGA,GAAKjB,IAAKiB,EACtB,GAAIT,EAAES,IAAMkma,GAAOlma,GAAKjB,IAClB2qE,MACD,CACD,IAAKw8V,GAAOx8V,EAAM,EAAG,CACjB,KAAOA,EAAM,IAAKA,GAAO,IACrBh/D,EAAE,OACFg/D,EAAM,IACNh/D,EAAEg/D,EAAM,GAAOA,EAAM,IAAO,EAAK,MAAUA,EAAM,GAAM,EAAK,OAC5DA,EAAM,EAEd,MACK,GAAIA,EAAM,EAAG,CAEd,IADAh/D,EAAEw7Z,KAAQx8V,EACHA,EAAM,EAAGA,GAAO,EACnBh/D,EAAE,MACFg/D,EAAM,IACNh/D,EAAIg/D,EAAM,GAAM,EAAK,MAAOA,EAAM,EAC1C,CACA,KAAOA,KACHh/D,EAAEw7Z,GACNx8V,EAAM,EACNw8V,EAAM3ma,EAAES,EACZ,CAEJ,MAAO,CAACwzD,EAAGmnI,SAAS,EAAGsrO,GAAMlna,EACjC,EAEIona,GAAO,SAAUt1X,EAAI2iB,GAErB,IADA,IAAIrpD,EAAI,EACCnK,EAAI,EAAGA,EAAIwzD,EAAGt4D,SAAU8E,EAC7BmK,GAAK0mC,EAAG7wC,GAAKwzD,EAAGxzD,GACpB,OAAOmK,CACX,EAGIi8Z,GAAQ,SAAUj5F,EAAK/4L,EAAKpB,GAE5B,IAAIj0I,EAAIi0I,EAAI93I,OACR4iB,EAAIqnZ,GAAK/wR,EAAM,GACnB+4L,EAAIrvT,GAAS,IAAJ/e,EACTouU,EAAIrvT,EAAI,GAAK/e,IAAM,EACnBouU,EAAIrvT,EAAI,GAAc,IAATqvT,EAAIrvT,GACjBqvT,EAAIrvT,EAAI,GAAkB,IAAbqvT,EAAIrvT,EAAI,GACrB,IAAK,IAAI9d,EAAI,EAAGA,EAAIjB,IAAKiB,EACrBmtU,EAAIrvT,EAAI9d,EAAI,GAAKgzI,EAAIhzI,GACzB,OAAqB,GAAb8d,EAAI,EAAI/e,EACpB,EAEIsna,GAAO,SAAUrzR,EAAKm6L,EAAKm5F,EAAOC,EAAMp1X,EAAIL,EAAInc,EAAI0rB,EAAI08M,EAAIltM,EAAIvlD,GAChE+6Z,GAAMl4F,EAAK7iU,IAAKg8Z,KACdn1X,EAAG,KAML,IALA,IAAImjC,EAAKixV,GAAMp0X,EAAI,IAAKq1X,EAAMlyV,EAAG,GAAImyV,EAAMnyV,EAAG,GAC1CwnE,EAAKypR,GAAMz0X,EAAI,IAAK41X,EAAM5qR,EAAG,GAAI6qR,EAAM7qR,EAAG,GAC1C+3O,EAAKv1V,GAAGkoY,GAAMI,EAAO/yC,EAAG,GAAIgzC,EAAMhzC,EAAG,GACrCvuW,EAAKgZ,GAAGooY,GAAMI,EAAOxhZ,EAAG,GAAIg0Y,EAAMh0Y,EAAG,GACrCyhZ,EAAS,IAAI7C,GAAI,IACZlka,EAAI,EAAGA,EAAI4ma,EAAK1ra,SAAU8E,EAC/B+ma,EAAiB,GAAVH,EAAK5ma,MAChB,IAASA,EAAI,EAAGA,EAAI8ma,EAAK5ra,SAAU8E,EAC/B+ma,EAAiB,GAAVD,EAAK9ma,MAGhB,IAFA,IAAImlB,EAAKogZ,GAAMwB,EAAQ,GAAIC,EAAM7hZ,EAAG,GAAI8hZ,EAAO9hZ,EAAG,GAC9C+hZ,EAAO,GACJA,EAAO,IAAMF,EAAI1C,GAAK4C,EAAO,MAAOA,GAE3C,IAKIC,EAAI12W,EAAI22W,EAAIr3W,EALZwrM,EAAQ1rM,EAAK,GAAM,EACnBw3W,EAAQlB,GAAKh1X,EAAI4zX,IAAOoB,GAAKr1X,EAAIk0X,IAAOrwY,EACxC2yY,EAAQnB,GAAKh1X,EAAIq1X,GAAOL,GAAKr1X,EAAI41X,GAAO/xY,EAAK,GAAK,EAAIuyY,EAAOf,GAAKY,EAAQC,IAAQ,EAAID,EAAO,IAAM,EAAIA,EAAO,IAAM,EAAIA,EAAO,KACnI,GAAIxrK,GAAQ8rK,GAAS9rK,GAAQ+rK,EACzB,OAAOlB,GAAMj5F,EAAK7iU,EAAG0oI,EAAI2nD,SAASoiE,EAAIA,EAAKltM,IAG/C,GADAw1W,GAAMl4F,EAAK7iU,EAAG,GAAKg9Z,EAAQD,IAAS/8Z,GAAK,EACrCg9Z,EAAQD,EAAO,CACfF,EAAKzC,GAAK8B,EAAKC,EAAK,GAAIh2W,EAAK+1W,EAAKY,EAAK1C,GAAKgC,EAAKC,EAAK,GAAI52W,EAAK22W,EAC/D,IAAIa,EAAM7C,GAAKsC,EAAKC,EAAM,GAC1B5B,GAAMl4F,EAAK7iU,EAAGu8Z,EAAM,KACpBxB,GAAMl4F,EAAK7iU,EAAI,EAAGgvZ,EAAM,GACxB+L,GAAMl4F,EAAK7iU,EAAI,GAAI48Z,EAAO,GAC1B58Z,GAAK,GACL,IAAStK,EAAI,EAAGA,EAAIkna,IAAQlna,EACxBqla,GAAMl4F,EAAK7iU,EAAI,EAAItK,EAAGgna,EAAI1C,GAAKtka,KACnCsK,GAAK,EAAI48Z,EAET,IADA,IAAIM,EAAO,CAACZ,EAAME,GACT1wW,EAAK,EAAGA,EAAK,IAAKA,EACvB,KAAIqxW,EAAOD,EAAKpxW,GAChB,IAASp2D,EAAI,EAAGA,EAAIyna,EAAKvsa,SAAU8E,EAAG,CAClC,IAAIsP,EAAgB,GAAVm4Z,EAAKzna,GACfqla,GAAMl4F,EAAK7iU,EAAGi9Z,EAAIj4Z,IAAOhF,GAAK08Z,EAAI13Z,GAC9BA,EAAM,KACN+1Z,GAAMl4F,EAAK7iU,EAAIm9Z,EAAKzna,KAAO,EAAK,KAAMsK,GAAKm9Z,EAAKzna,KAAO,GAC/D,CANmB,CAQ3B,MAEImna,EAAKlC,GAAKx0W,EAAKs0W,GAAKqC,EAAKlC,GAAKn1W,EAAKi1W,GAEvC,IAAShla,EAAI,EAAGA,EAAIqgD,IAAMrgD,EACtB,GAAIuma,EAAKvma,GAAK,IAAK,CACXsP,EAAOi3Z,EAAKvma,KAAO,GAAM,GAC7Bsla,GAAQn4F,EAAK7iU,EAAG68Z,EAAG73Z,EAAM,MAAOhF,GAAKmmD,EAAGnhD,EAAM,KAC1CA,EAAM,IACN+1Z,GAAMl4F,EAAK7iU,EAAIi8Z,EAAKvma,KAAO,GAAM,IAAKsK,GAAK85Z,GAAK90Z,IACpD,IAAI45J,EAAgB,GAAVq9P,EAAKvma,GACfsla,GAAQn4F,EAAK7iU,EAAG88Z,EAAGl+P,IAAO5+J,GAAKylD,EAAGm5G,GAC9BA,EAAM,IACNo8P,GAAQn4F,EAAK7iU,EAAIi8Z,EAAKvma,KAAO,EAAK,MAAOsK,GAAK+5Z,GAAKn7P,GAC3D,MAEIo8P,GAAQn4F,EAAK7iU,EAAG68Z,EAAGZ,EAAKvma,KAAMsK,GAAKmmD,EAAG81W,EAAKvma,IAInD,OADAsla,GAAQn4F,EAAK7iU,EAAG68Z,EAAG,MACZ78Z,EAAImmD,EAAG,IAClB,EAEIi3W,GAAoB,IAAIvD,GAAI,CAAC,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAAS,UAE/FqB,GAAmB,IAAIvB,GAAG,GAE1B0D,GAAO,SAAU30R,EAAKmqM,EAAKyqF,EAAMC,EAAK/wE,EAAMgxE,GAC5C,IAAI/oa,EAAIi0I,EAAI93I,OACR4iB,EAAI,IAAImmZ,GAAG4D,EAAM9oa,EAAI,GAAK,EAAIwB,KAAKurD,KAAK/sD,EAAI,MAAS+3V,GAErDpsV,EAAIoT,EAAE68K,SAASktO,EAAK/pZ,EAAE5iB,OAAS47V,GAC/B1iN,EAAM,EACV,IAAK+oM,GAAOp+U,EAAI,EACZ,IAAK,IAAIiB,EAAI,EAAGA,GAAKjB,EAAGiB,GAAK,MAAO,CAEhC,IAAI4J,EAAI5J,EAAI,MACR4J,EAAI7K,EAEJq1I,EAAMgyR,GAAM17Z,EAAG0pI,EAAKpB,EAAI2nD,SAAS36L,EAAG4J,KAIpCc,EAAE1K,GAAK8na,EACP1zR,EAAMgyR,GAAM17Z,EAAG0pI,EAAKpB,EAAI2nD,SAAS36L,EAAGjB,IAE5C,KAEC,CAeD,IAdA,IAAIqmY,EAAMsiC,GAAIvqF,EAAM,GAChB9yU,EAAI+6X,IAAQ,GAAI7lY,EAAU,KAAN6lY,EACpB2iC,GAAS,GAAKH,GAAQ,EAEtBrha,EAAO,IAAI29Z,GAAI,OAAQpuZ,EAAO,IAAIouZ,GAAI6D,EAAQ,GAC9CC,EAAQzna,KAAKurD,KAAK87W,EAAO,GAAIK,EAAQ,EAAID,EACzCE,EAAM,SAAUloa,GAAK,OAAQgzI,EAAIhzI,GAAMgzI,EAAIhzI,EAAI,IAAMgoa,EAAUh1R,EAAIhzI,EAAI,IAAMioa,GAAUF,CAAO,EAG9FxB,EAAO,IAAIpC,GAAI,MAEfhzX,EAAK,IAAI+yX,GAAI,KAAMpzX,EAAK,IAAIozX,GAAI,IAEhCiE,EAAO,EAAGxzY,EAAK,EAAU0rB,GAAPrgD,EAAI,EAAQ,GAAGghD,EAAK,EAAG+7M,EAAK,EAC3C/8P,EAAIjB,IAAKiB,EAAG,CAGf,IAAIooa,EAAKF,EAAIloa,GAETqoa,EAAW,MAAJroa,EAAWsoa,EAAQxyZ,EAAKsyZ,GAKnC,GAJA7ha,EAAK8ha,GAAQC,EACbxyZ,EAAKsyZ,GAAMC,EAGPrnX,GAAMhhD,EAAG,CAET,IAAIwxI,EAAMzyI,EAAIiB,EACd,IAAKmoa,EAAO,KAAQ9nX,EAAK,QAAUmxF,EAAM,IAAK,CAC1C4C,EAAMiyR,GAAKrzR,EAAKtoI,EAAG,EAAG67Z,EAAMp1X,EAAIL,EAAInc,EAAI0rB,EAAI08M,EAAI/8P,EAAI+8P,EAAI3oH,GACxD/zF,EAAK8nX,EAAOxzY,EAAK,EAAGooO,EAAK/8P,EACzB,IAAK,IAAImT,EAAI,EAAGA,EAAI,MAAOA,EACvBg+B,EAAGh+B,GAAK,EACZ,IAASA,EAAI,EAAGA,EAAI,KAAMA,EACtB29B,EAAG39B,GAAK,CAChB,CAEA,IAAIhJ,EAAI,EAAGL,EAAI,EAAGy+Z,EAAOhpa,EAAGipa,EAAOH,EAAOC,EAAS,MACnD,GAAI92R,EAAM,GAAK42R,GAAMF,EAAIloa,EAAIwoa,GAMzB,IALA,IAAIC,EAAOloa,KAAKiuC,IAAInkC,EAAGmnI,GAAO,EAC1Bk3R,EAAOnoa,KAAKiuC,IAAI,MAAOxuC,GAGvB2wD,EAAKpwD,KAAKiuC,IAAI,IAAKgjG,GAChBg3R,GAAOE,KAAUH,GAAQF,GAAQC,GAAO,CAC3C,GAAIt1R,EAAIhzI,EAAImK,IAAM6oI,EAAIhzI,EAAImK,EAAIq+Z,GAAM,CAEhC,IADA,IAAI53W,EAAK,EACFA,EAAKD,GAAMqiF,EAAIhzI,EAAI4wD,IAAOoiF,EAAIhzI,EAAI4wD,EAAK43W,KAAQ53W,GAEtD,GAAIA,EAAKzmD,EAAG,CAGR,GAFAA,EAAIymD,EAAI9mD,EAAI0+Z,EAER53W,EAAK63W,EACL,MAIJ,IAAIE,EAAMpoa,KAAKiuC,IAAIg6X,EAAK53W,EAAK,GACzB5tB,EAAK,EACT,IAAS7vB,EAAI,EAAGA,EAAIw1Z,IAAOx1Z,EAAG,CAC1B,IAAI0tC,EAAM7gD,EAAIwoa,EAAMr1Z,EAAI,MAAS,MAE7BgvB,EAAM0e,EADAt6C,EAAKs6C,GACM,MAAS,MAC1B1e,EAAKa,IACLA,EAAKb,EAAImmY,EAAQznX,EACzB,CACJ,CACJ,CAGA2nX,IADAH,EAAOC,IAAOA,EAAQ/ha,EAAK8ha,IACJ,MAAS,KACpC,CAGJ,GAAIv+Z,EAAG,CAGHy8Z,EAAKlmX,KAAQ,UAAamkX,GAAMr6Z,IAAM,GAAMs6Z,GAAM36Z,GAClD,IAAI8+Z,EAAiB,GAAXpE,GAAMr6Z,GAAS0+Z,EAAiB,GAAXpE,GAAM36Z,GACrC6qB,GAAMyvY,GAAKwE,GAAOvE,GAAKwE,KACrB13X,EAAG,IAAMy3X,KACT93X,EAAG+3X,GACL7nX,EAAKhhD,EAAImK,IACPg+Z,CACN,MAEI5B,EAAKlmX,KAAQ2yF,EAAIhzI,KACfmxC,EAAG6hG,EAAIhzI,GAEjB,CACJ,CACAo0I,EAAMiyR,GAAKrzR,EAAKtoI,EAAGo9Z,EAAKvB,EAAMp1X,EAAIL,EAAInc,EAAI0rB,EAAI08M,EAAI/8P,EAAI+8P,EAAI3oH,IAErD0zR,GAAa,EAAN1zR,IACRA,EAAMgyR,GAAM17Z,EAAG0pI,EAAM,EAAGoxR,IAChC,CACA,OAAOJ,GAAItnZ,EAAG,EAAG+pZ,EAAM1C,GAAK/wR,GAAO0iN,EACvC,EAEIgyE,GAAsB,WAEtB,IADA,IAAIlua,EAAI,IAAIupa,GAAI,KACPnka,EAAI,EAAGA,EAAI,MAAOA,EAAG,CAE1B,IADA,IAAIT,EAAIS,EAAGkK,EAAI,IACNA,GACL3K,GAAU,EAAJA,GAAU,YAAeA,IAAM,EACzC3E,EAAEoF,GAAKT,CACX,CACA,OAAO3E,CACX,CAT0B,GAWtBmua,GAAM,WACN,IAAIxpa,GAAK,EACT,MAAO,CACH+K,EAAG,SAAUR,GAGT,IADA,IAAIk/Z,EAAKzpa,EACAS,EAAI,EAAGA,EAAI8J,EAAE5O,SAAU8E,EAC5Bgpa,EAAKF,GAAW,IAALE,EAAYl/Z,EAAE9J,IAAOgpa,IAAO,EAC3Czpa,EAAIypa,CACR,EACAl/Z,EAAG,WAAc,OAAQvK,CAAG,EAEpC,EAyBI0pa,GAAO,SAAUj2R,EAAKoyP,EAAKyiC,EAAK/wE,EAAM7qB,GACtC,OAAO07F,GAAK30R,EAAkB,MAAboyP,EAAI1tX,MAAgB,EAAI0tX,EAAI1tX,MAAkB,MAAX0tX,EAAI8jC,IAAc3oa,KAAKurD,KAAuD,IAAlDvrD,KAAKC,IAAI,EAAGD,KAAKiuC,IAAI,GAAIjuC,KAAK+W,IAAI07H,EAAI93I,WAAoB,GAAKkqY,EAAI8jC,IAAMrB,EAAK/wE,GAAO7qB,EACzK,EAEIk9F,GAAM,SAAU7pa,EAAGuK,GACnB,IAAIiU,EAAI,CAAC,EACT,IAAK,IAAI5T,KAAK5K,EACVwe,EAAE5T,GAAK5K,EAAE4K,GACb,IAAK,IAAIA,KAAKL,EACViU,EAAE5T,GAAKL,EAAEK,GACb,OAAO4T,CACX,EAoHIsrZ,GAAS,SAAUt/Z,EAAGD,EAAGY,GACzB,KAAOA,IAAKZ,EACRC,EAAED,GAAKY,EAAGA,KAAO,CACzB,EAgHO,SAAS4+Z,GAAYriY,EAAMnxB,GAC9B,OAAOozZ,GAAKjiY,EAAMnxB,GAAQ,CAAC,EAAG,EAAG,EACrC,CAoeA,IAAIyzZ,GAAO,SAAPA,EAAiBx/Z,EAAGQ,EAAG1P,EAAGkjB,GAC1B,IAAK,IAAI5T,KAAKJ,EAAG,CACb,IAAIpF,EAAMoF,EAAEI,GAAIG,EAAIC,EAAIJ,EACpBxF,aAAeu/Z,GACfrpa,EAAEyP,GAAK,CAAC3F,EAAKoZ,GACR7d,MAAM0E,QAAQD,GACnB9J,EAAEyP,GAAK,CAAC3F,EAAI,GAAIyka,GAAIrrZ,EAAGpZ,EAAI,KAE3B4ka,EAAK5ka,EAAK2F,EAAI,IAAKzP,EAAGkjB,EAC9B,CACJ,EAEIquB,GAA2B,oBAAfkhW,aAA4C,IAAIA,YAE5D1oW,GAA2B,oBAAf4wO,aAA4C,IAAIA,YAGhE,IACI5wO,GAAG6wO,OAAOgwJ,GAAI,CAAE7wJ,QAAQ,IAClB,CACV,CACA,MAAO/qQ,KAAK,CAwGL,SAAS2/Z,GAAQx1Z,EAAKy1Z,GACzB,GAAIA,EAAQ,CAER,IADA,IAAIC,EAAO,IAAIxF,GAAGlwZ,EAAI7Y,QACb8E,EAAI,EAAGA,EAAI+T,EAAI7Y,SAAU8E,EAC9Bypa,EAAKzpa,GAAK+T,EAAIs1F,WAAWrpG,GAC7B,OAAOypa,CACX,CACA,GAAIt9X,GACA,OAAOA,GAAGmhW,OAAOv5X,GACrB,IAAI5J,EAAI4J,EAAI7Y,OACRwua,EAAK,IAAIzF,GAAGlwZ,EAAI7Y,QAAU6Y,EAAI7Y,QAAU,IACxCkkD,EAAK,EACL10C,EAAI,SAAUD,GAAKi/Z,EAAGtqX,KAAQ30C,CAAG,EACrC,IAASzK,EAAI,EAAGA,EAAImK,IAAKnK,EAAG,CACxB,GAAIo/C,EAAK,EAAIsqX,EAAGxua,OAAQ,CACpB,IAAImP,EAAI,IAAI45Z,GAAG7kX,EAAK,GAAMj1C,EAAInK,GAAM,IACpCqK,EAAEkoB,IAAIm3Y,GACNA,EAAKr/Z,CACT,CACA,IAAI9K,EAAIwU,EAAIs1F,WAAWrpG,GACnBT,EAAI,KAAOiqa,EACX9+Z,EAAEnL,GACGA,EAAI,MACTmL,EAAE,IAAOnL,GAAK,GAAKmL,EAAE,IAAW,GAAJnL,IACvBA,EAAI,OAASA,EAAI,OAElBmL,EAAE,KADNnL,EAAI,OAAa,QAAJA,GAAyC,KAAtBwU,EAAIs1F,aAAarpG,KAC/B,IAAM0K,EAAE,IAAQnL,GAAK,GAAM,IAAMmL,EAAE,IAAQnL,GAAK,EAAK,IAAMmL,EAAE,IAAW,GAAJnL,KAEtFmL,EAAE,IAAOnL,GAAK,IAAMmL,EAAE,IAAQnL,GAAK,EAAK,IAAMmL,EAAE,IAAW,GAAJnL,GAC/D,CACA,OAAO6la,GAAIsE,EAAI,EAAGtqX,EACtB,CA0BA,IAgBIuqX,GAAO,SAAUpmZ,GACjB,IAAIsnB,EAAK,EACT,GAAItnB,EACA,IAAK,IAAIrZ,KAAKqZ,EAAI,CACd,IAAIpZ,EAAIoZ,EAAGrZ,GAAGhP,OACd,GAAIiP,EAAI,MACJ,KAAM,uBACV0gC,GAAM1gC,EAAI,CACd,CAEJ,OAAO0gC,CACX,EAEI++X,GAAM,SAAU9/Z,EAAGD,EAAGE,EAAGu3E,EAAIz2E,EAAGtL,EAAG+qC,EAAIq6X,GACvC,IAAI10W,EAAKqxB,EAAGpmF,OAAQqoB,EAAKxZ,EAAE8/Z,MAAOvwY,EAAMqrY,GAAMA,EAAGzpa,OAC7C4ua,EAAMH,GAAKpmZ,GACf6lZ,GAAOt/Z,EAAGD,EAAS,MAANygC,EAAa,SAAY,UAAYzgC,GAAK,EAC7C,MAANygC,IACAxgC,EAAED,KAAO,GAAIC,EAAED,KAAOE,EAAEoa,IAC5Bra,EAAED,GAAK,GAAIA,GAAK,EAChBC,EAAED,KAAQE,EAAEyhV,MAAQ,GAAW,MAALjsV,GAAa,GAAIuK,EAAED,KAAOgB,GAAK,EACzDf,EAAED,KAAuB,IAAhBE,EAAEgga,YAAmBjga,EAAED,KAAOE,EAAEgga,aAAe,EACxD,IAAIvzQ,EAAK,IAAIvzJ,KAAgB,MAAX8G,EAAEiga,MAAgB/ma,KAAKC,MAAQ6G,EAAEiga,OAAQr/Z,EAAI6rJ,EAAGyzQ,cAAgB,KAClF,GAAIt/Z,EAAI,GAAKA,EAAI,IACb,KAAM,8BAgBV,GAfAy+Z,GAAOt/Z,EAAGD,EAAIc,GAAK,GAAQ6rJ,EAAG0zQ,WAAa,GAAM,GAAO1zQ,EAAG2zQ,WAAa,GAAO3zQ,EAAG4zQ,YAAc,GAAO5zQ,EAAG6zQ,cAAgB,EAAM7zQ,EAAG8zQ,eAAiB,GAAKzga,GAAK,EACrJ,MAALtK,IACA6pa,GAAOt/Z,EAAGD,EAAGE,EAAEg/Z,KACfK,GAAOt/Z,EAAGD,EAAI,EAAGtK,GACjB6pa,GAAOt/Z,EAAGD,EAAI,EAAGE,EAAE8+C,OAEvBugX,GAAOt/Z,EAAGD,EAAI,GAAIomD,GAClBm5W,GAAOt/Z,EAAGD,EAAI,GAAIiga,GAAMjga,GAAK,GACnB,MAANygC,IACA8+X,GAAOt/Z,EAAGD,EAAGyvB,GACb8vY,GAAOt/Z,EAAGD,EAAI,EAAGE,EAAEmM,OACnBkzZ,GAAOt/Z,EAAGD,EAAI,GAAIygC,GAAKzgC,GAAK,IAEhCC,EAAEyoB,IAAI+uD,EAAIz3E,GACVA,GAAKomD,EACD65W,EACA,IAAK,IAAI5/Z,KAAKqZ,EAAI,CACd,IAAIgnZ,EAAMhnZ,EAAGrZ,GAAIC,EAAIoga,EAAIrva,OACzBkua,GAAOt/Z,EAAGD,GAAIK,GACdk/Z,GAAOt/Z,EAAGD,EAAI,EAAGM,GACjBL,EAAEyoB,IAAIg4Y,EAAK1ga,EAAI,GAAIA,GAAK,EAAIM,CAChC,CAIJ,OAFImvB,IACAxvB,EAAEyoB,IAAIoyY,EAAI96Z,GAAIA,GAAKyvB,GAChBzvB,CACX,EAEI2ga,GAAM,SAAU1sZ,EAAGjU,EAAGtK,EAAGuK,EAAGF,GAC5Bw/Z,GAAOtrZ,EAAGjU,EAAG,WACbu/Z,GAAOtrZ,EAAGjU,EAAI,EAAGtK,GACjB6pa,GAAOtrZ,EAAGjU,EAAI,GAAItK,GAClB6pa,GAAOtrZ,EAAGjU,EAAI,GAAIC,GAClBs/Z,GAAOtrZ,EAAGjU,EAAI,GAAID,EACtB,EA0WO,SAAS6ga,GAAQzjY,EAAMnxB,GACrBA,IACDA,EAAO,CAAC,GACZ,IAAIrL,EAAI,CAAC,EACL2nQ,EAAQ,GACZm3J,GAAKtiY,EAAM,GAAIx8B,EAAGqL,GAClB,IAAIiI,EAAI,EACJ4sZ,EAAM,EACV,IAAK,IAAIppV,KAAM92E,EAAG,CACd,IAAI8pE,EAAK9pE,EAAE82E,GAAKrJ,EAAO3D,EAAG,GAAIhqE,EAAIgqE,EAAG,GACjCy1V,EAAyB,GAAXz/Z,EAAEoN,MAAa,EAAI,EAChB3Y,GAAjBgL,EAAIw/Z,GAAQjoV,IAAWpmF,OACvByva,EAAMrga,EAAEsga,QAASxga,EAAIuga,GAAOpB,GAAQoB,GAAM/2Z,EAAKxJ,GAAKA,EAAElP,OACtD4ua,EAAMH,GAAKr/Z,EAAEu/Z,OACjB,GAAI9qa,EAAI,MACJ,KAAM,oBACV,IAAI+K,EAAIiga,EAAcV,GAAYpxV,EAAM3tE,GAAK2tE,EAAM9tE,EAAIL,EAAE5O,OACrDqE,EAAIwpa,KACRxpa,EAAE+K,EAAE2tE,GACJk6L,EAAM/xQ,KAAK+oa,GAAI7+Z,EAAG,CACdu+C,KAAMovB,EAAK/8E,OACX6ta,IAAKxpa,EAAEuK,IACPvK,EAAGuK,EACHC,EAAGA,EACHK,EAAGA,EACHS,EAAG9L,GAAKuiF,EAAGpmF,QAAWkP,GAAMuga,EAAIzva,QAAU0Y,EAC1CkK,EAAGA,EACHisZ,YAAaA,KAEjBjsZ,GAAK,GAAK/e,EAAI+qa,EAAM3/Z,EACpBuga,GAAO,GAAK,GAAK3ra,EAAI+qa,IAAQl2Z,GAAM,GAAKzJ,CAC5C,CAEA,IADA,IAAIgjU,EAAM,IAAI82F,GAAGyG,EAAM,IAAK9+X,EAAK9tB,EAAG+sZ,EAAMH,EAAM5sZ,EACvC9d,EAAI,EAAGA,EAAImyQ,EAAMj3Q,SAAU8E,EAAG,CACnC,IAAI+J,EAAIooQ,EAAMnyQ,GACd4pa,GAAIz8F,EAAKpjU,EAAE+T,EAAG/T,EAAGA,EAAEA,EAAGA,EAAEc,EAAGd,EAAExK,EAAErE,QAC/B,IAAI4va,EAAO,GAAK/ga,EAAEA,EAAE7O,OAASyua,GAAK5/Z,EAAE8/Z,OACpC18F,EAAI56S,IAAIxoB,EAAExK,EAAGwK,EAAE+T,EAAIgtZ,GACnBlB,GAAIz8F,EAAKrvT,EAAG/T,EAAGA,EAAEA,EAAGA,EAAEc,EAAGd,EAAExK,EAAErE,OAAQ6O,EAAE+T,EAAG/T,EAAEK,GAAI0T,GAAK,GAAKgtZ,GAAQ/ga,EAAEK,EAAIL,EAAEK,EAAElP,OAAS,EACzF,CAEA,OADAsva,GAAIr9F,EAAKrvT,EAAGq0P,EAAMj3Q,OAAQ2va,EAAKj/X,GACxBuhS,CACX,CCtlEmD,IAE7C49F,GAAY,oBAAAA,IAAAh9Z,EAAA,KAAAg9Z,EAAA,CAsGhB,OAtGgBl+Z,EAAAk+Z,EAAA,EAAAjla,IAAA,QAAA/D,MAAA,eAAAipa,EAAA7qV,GAAAC,EAAAA,MAEjB,SAAAE,EAAa+0G,GAAK,IAAA88E,EAAA84J,EAAA9oV,EAAA84F,EAAApY,EAAAx0F,EAAA3rC,EAAA2K,EAAA69X,EAAAjzV,EAAAkzV,EAAAC,EAAA9nW,EAAA,OAAA8c,EAAAA,MAAA,SAAAw5E,GAAA,cAAAA,EAAArzJ,KAAAqzJ,EAAApzJ,MAAA,QAEX2rQ,EAAQ,CAAC,GACT84J,EAAgB,cAGG,KAErB9oV,EAmJE,iJAjJA84F,EAAY,CAAC,EACbpY,EAAW,CAAC,EAElBwyB,EAAM3a,iBAAiB,SAAEj1K,GAExB,GAAKA,EAAOk2K,OAAS,CAEpB,IAAMvN,EAAW3oK,EAAO2oK,SAClB+N,EAAW12K,EAAO02K,SAExB,GAAKA,EAAS8uC,uBAAyB,CAEtC,IAAMogN,EAAmB,uBAAyBj9P,EAAS1rI,GAAK,OAEhE,KAAS2oY,KAAoBl5J,GAAU,CAEtC,IAAMm5J,EAAaC,GAAiBn9P,GACpC+jG,EAAOk5J,GAAqBG,GAAsBF,EAEnD,CAESnvP,EAASh9D,QAAQ87D,IAEzBA,EAAWkB,EAASh9D,MAASg9D,GAI9Bh6F,GAAUspV,GAAYhma,EAAQ2oK,EAAU+N,EAEzC,MAEC9kK,QAAQk/C,KAAM,0FAA2F9wD,EAI3G,MAAYA,EAAO00K,WAElBh4F,GAAUupV,GAAajma,GAIzB,IAEA08E,GAAUwpV,GAAgB1wP,EAAWpY,GAErCsvG,EAAO84J,GAAkBW,GAAgBzpV,GACzCA,EAAS,KAAK9T,EAAA+R,EAAAA,MAAA,SAAA/R,EAEF3rC,GAAE,IAAAiiI,EAAA75H,EAAA+gY,EAAAvvR,EAAA64H,EAAA,OAAA/0L,EAAAA,MAAA,SAAAxtD,GAAA,cAAAA,EAAArsB,KAAAqsB,EAAApsB,MAAA,OAMuC,OAJ9Cm+J,EAAU9B,EAAUngI,GACpBoI,EAAQpI,EAAGtjC,MAAO,KAAO,GACzBysa,EAA4B,OAAnBlnQ,EAAQ9C,OAEjBvlB,EAASwvR,GAAennQ,EAAQloB,MAAO3xG,GAAOlY,EAAApsB,KAAA,EACjC,IAAIotC,SAAS,SAAAG,GAAO,OAAIuoG,EAAO2vP,OAAQl4V,EAAS83X,EAAS,YAAc,aAAc,EAAG,IAAE,OAE7B,OAF1E12J,EAAIviP,EAAA2tD,KAAA3tD,EAAA+/I,GAE4D95D,WAAUjmF,EAAApsB,KAAA,GAAQ2uQ,EAAKD,cAAa,QAAAtiP,EAAAggJ,GAAAhgJ,EAAA2tD,KAA1G4xL,EAAM,oBAADptQ,OAAuB29B,EAAE,KAAA39B,OAAM8ma,EAAS,MAAQ,QAAa,IAAHj5Y,EAAA+/I,GAAA//I,EAAAggJ,IAAA,yBAAAhgJ,EAAAm/C,OAAA,GAAA1D,EAAA,IAAAurF,EAAA+Y,GAAAvyF,EAAAA,KAT9CyiF,GAAQ,YAAAjJ,EAAAgZ,GAAAhZ,EAAA+Y,MAAAptJ,KAAA,CAAAq0I,EAAApzJ,KAAA,SAAZ,OAAFk8B,EAAEk3H,EAAAgZ,GAAA7wK,MAAA63J,EAAAjjE,cAAAtoB,EAAF3rC,GAAE,iBAAAk3H,EAAApzJ,KAAA,iBAkBd,IAAY0ka,KAFR79X,EAAS,EAEW8kO,EAEjBl6L,EAAOk6L,EAAO+4J,GACdC,EAAa,GAAKD,EAAShwa,OAMZ,KAFfkwa,EAAuB,IAF7B/9X,GAAU89X,MAOH7nW,EAAU,IAAIu1C,WADF,GAAKuyT,GAGvBj5J,EAAO+4J,GAAa,CAAEjzV,EAAM,CAAE4xV,MAAO,CAAE,MAAOvmW,MAI/Cj2B,EAAS4qC,EAAK/8E,OAEd,OAAA0+J,EAAAp5E,OAAA,SAEMorV,GAAgBz5J,EAAO,CAAEz6P,MAAO,KAAK,yBAAAkiJ,EAAA7nF,OAAA,GAAAuO,EAAA,KAE5C,gBAAA5oB,GAAA,OAAAszW,EAAA5na,MAAA,KAAAG,UAAA,EAtGgB,MAsGhBwna,CAAA,CAtGgB,GA0GlB,SAASe,GAAervR,EAAO3xG,GAE9B,GAAmC,qBAArB21H,kBAAoChkB,aAAiBgkB,kBACnC,qBAAtBJ,mBAAqC5jB,aAAiB4jB,mBAClC,qBAApB47D,iBAAmCx/E,aAAiBw/E,iBACpC,qBAAhBv7D,aAA+BjkB,aAAiBikB,YAAgB,CAEzE,IAAM/lB,EAAQ,KAAOp6I,KAAKC,IAAKi8I,EAAMhrI,MAAOgrI,EAAM/qI,QAE5C4qI,EAAS11I,SAASC,cAAe,UACvCy1I,EAAO7qI,MAAQgrI,EAAMhrI,MAAQlR,KAAKiuC,IAAK,EAAGmsG,GAC1C2B,EAAO5qI,OAAS+qI,EAAM/qI,OAASnR,KAAKiuC,IAAK,EAAGmsG,GAE5C,IAAM93I,EAAUy5I,EAAOC,WAAY,MAGnC,GAFA15I,EAAQu6I,UAAWX,EAAO,EAAG,EAAGH,EAAO7qI,MAAO6qI,EAAO5qI,aAEtChE,IAAVo9B,EAAsB,CAW1B,IATA,IAAMq0H,EAAM1qJ,SAAUq2B,EAAO,IAEvBtgC,GAAM20J,GAAO,GAAK,KAAQ,IAC1Bn1J,GAAMm1J,GAAO,EAAI,KAAQ,IACzBt1J,GAAY,IAANs1J,GAAc,IAEpB4sQ,EAAYlpa,EAAQ+9J,aAAc,EAAG,EAAGtkB,EAAO7qI,MAAO6qI,EAAO5qI,QAC7Ds1B,EAAO+kY,EAAU/kY,KAEbhnC,EAAI,EAAGA,EAAIgnC,EAAK9rC,OAAQ8E,GAAK,EAEtCgnC,EAAMhnC,EAAI,GAAMgnC,EAAMhnC,EAAI,GAAMwK,EAChCw8B,EAAMhnC,EAAI,GAAMgnC,EAAMhnC,EAAI,GAAMgK,EAChCg9B,EAAMhnC,EAAI,GAAMgnC,EAAMhnC,EAAI,GAAM6J,EAIjChH,EAAQ09J,aAAcwrQ,EAAW,EAAG,EAErC,CAEA,OAAOzvR,CAER,CAED,CAIA,IAAM0vR,GAAY,EAiBlB,SAASR,GAAsBS,GAE9B,IAAI9pV,EAfG,iJAiBP,OAAOypV,GADPzpV,GAAU8pV,EAGX,CAIA,SAASR,GAAYhma,EAAQ2oK,EAAU+N,GAEtC,IAAM1/K,EAAO,UAAYgJ,EAAOi9B,GAC1Bk5F,EAAYswS,GAAazma,EAAO8lK,aAQtC,OANK9lK,EAAO8lK,YAAYsL,cAAgB,GAEvCx/J,QAAQk/C,KAAM,4DAA6D9wD,GAIrE,cAAPV,OAAsBtI,EAAI,yDAAAsI,OACwBqpK,EAAS1rI,GAAE,6DAAA39B,OAG1B62H,EAAS,kHAAA72H,OAGMo3K,EAASz5I,GAAE,WAK9D,CAEA,SAASwpY,GAAalvQ,GAErB,IAAM32J,EAAQ22J,EAAO1zB,SAErB,MAAO,KAAPvkI,OAAaona,GAAgB9la,EAAO,GAAG,MAAAtB,OAAOona,GAAgB9la,EAAO,GAAG,MAAAtB,OAAOona,GAAgB9la,EAAO,GAAG,MAAAtB,OAAOona,GAAgB9la,EAAO,IAAI,KAE5I,CAEA,SAAS8la,GAAgB9la,EAAOgnC,GAE/B,MAAO,IAAPtoC,OAAYsB,EAAOgnC,EAAS,GAAG,MAAAtoC,OAAOsB,EAAOgnC,EAAS,GAAG,MAAAtoC,OAAOsB,EAAOgnC,EAAS,GAAG,MAAAtoC,OAAOsB,EAAOgnC,EAAS,GAAG,IAE9G,CAIA,SAASk+X,GAAiBn9P,GAEzB,IAAMuoB,EAUP,SAAoBvoB,GAEnB,IAAM3xK,EAAO,WACP+4E,EAAa44F,EAAS54F,WACtByL,EAAQzL,EAAW3S,SAASoe,MAElC,MAAO,mBAAPl8E,OACgBtI,EAAI,gDAAAsI,OAiBrB,SAA+BqpK,GAE9B,IAAMntF,EAA2B,OAAnBmtF,EAASl8J,MAAiBk8J,EAASl8J,MAAM+uE,MAAQmtF,EAAS54F,WAAW3S,SAASoe,MAE5F,OAAOhhF,MAAOghF,EAAQ,GAAI49B,KAAM,GAAIl+G,KAAM,KAE3C,CArBqCyra,CAAsBh+P,GAAU,0CAAArpK,OAuBrE,SAAiCqpK,GAEhC,IAAMl8J,EAAQk8J,EAASl8J,MACjB7L,EAAQ,GAEd,GAAe,OAAV6L,EAEJ,IAAM,IAAIlS,EAAI,EAAGA,EAAIkS,EAAM+uE,MAAOjhF,IAEjCqG,EAAMjG,KAAM8R,EAAMunJ,KAAMz5J,SAQzB,IAFA,IAAM9E,EAASkzK,EAAS54F,WAAW3S,SAASoe,MAElCjhF,EAAI,EAAGA,EAAI9E,EAAQ8E,IAE5BqG,EAAMjG,KAAMJ,GAMd,OAAOqG,EAAM1F,KAAM,KAEpB,CAjDsC0ra,CAAwBj+P,GAAU,qCAAArpK,OACvCuna,GAAmB92V,EAAW62F,OAAQprF,GAAO,sFAAAl8E,OAG/Cuna,GAAmB92V,EAAW3S,SAAUoe,GAAO,uCAAAl8E,OAwE9E,SAA4By0J,EAAWv4E,GAEtC,QAAmBvzE,IAAd8rJ,EAGJ,OADAniJ,QAAQk/C,KAAM,8BACPt2D,MAAOghF,GAAQ49B,KAAM,UAAWl+G,KAAM,MAM9C,IAFA,IAAM0F,EAAQ,GAEJrG,EAAI,EAAGA,EAAIw5J,EAAUv4E,MAAOjhF,IAAO,CAE5C,IAAMR,EAAIg6J,EAAUC,KAAMz5J,GACpB2K,EAAI6uJ,EAAUE,KAAM15J,GAE1BqG,EAAMjG,KAAK,IAAD2E,OAAOvF,EAAE+sa,YAAaP,IAAW,MAAAjna,OAAO,EAAI4F,EAAE4ha,YAAaP,IAAW,KAEjF,CAEA,OAAO3la,EAAM1F,KAAM,KAEpB,CA7FmC6ra,CAAmBh3V,EAAWutF,GAAI9hF,GAAO,kHAO5E,CAhCcwrV,CAAWr+P,GACxB,MAAO,0BAAPrpK,OAGG4xL,EAAI,QAIR,CA+DA,SAAS21O,GAAmB9yQ,EAAWv4E,GAEtC,QAAmBvzE,IAAd8rJ,EAGJ,OADAniJ,QAAQk/C,KAAM,kCACPt2D,MAAOghF,GAAQ49B,KAAM,aAAcl+G,KAAM,MAMjD,IAFA,IAAM0F,EAAQ,GAEJrG,EAAI,EAAGA,EAAIw5J,EAAUv4E,MAAOjhF,IAAO,CAE5C,IAAMR,EAAIg6J,EAAUC,KAAMz5J,GACpB2K,EAAI6uJ,EAAUE,KAAM15J,GACpB4K,EAAI4uJ,EAAUyG,KAAMjgK,GAE1BqG,EAAMjG,KAAK,IAAD2E,OAAOvF,EAAE+sa,YAAaP,IAAW,MAAAjna,OAAO4F,EAAE4ha,YAAaP,IAAW,MAAAjna,OAAO6F,EAAE2ha,YAAaP,IAAW,KAE9G,CAEA,OAAO3la,EAAM1F,KAAM,KAEpB,CA4BA,SAASgra,GAAgB1wP,EAAWpY,GAEnC,IAAMx8J,EAAQ,GAEd,IAAM,IAAM84G,KAAQ87D,EAAY,CAE/B,IAAMkB,EAAWlB,EAAW97D,GAE5B94G,EAAMjG,KAAMssa,GAAevwP,EAAUtZ,GAEtC,CAEA,MAAO,uBAAP99J,OAEEsB,EAAM1F,KAAM,IAAI,UAKnB,CAEA,SAAS+ra,GAAevwP,EAAUtZ,GAIjC,IAAMosM,EAAM,eACN09D,EAAS,GACT/sG,EAAW,GAEjB,SAASgtG,EAAcjoQ,EAASkoQ,EAAS/hY,GAExC,IAAMpI,EAAKiiI,EAAQjiI,IAAOoI,EAAQ,IAAMA,EAAMgiY,eAAiB,IACzDjB,EAA4B,OAAnBlnQ,EAAQ9C,OAIvB,OAFAgB,EAAUngI,GAAOiiI,EAEV,qCAAP5/J,OACiC8na,EAAO,mOAAA9na,OAOqBo3K,EAASz5I,GAAE,oEAAA39B,OACrCgoa,GAAcpoQ,EAAQn8H,QAAQ,8CAAAzjC,OACxBgoa,GAAcpoQ,EAAQt3H,QAAQ,kFAAAtoC,OAI1C4/J,EAAQjiI,GAAE,KAAA39B,OAAM8na,EAAO,wHAAA9na,OAGD29B,EAAE,KAAA39B,OAAM8ma,EAAS,MAAQ,MAAK,mEAAA9ma,OACpBo3K,EAASz5I,GAAE,iBAAA39B,OAAkB8na,EAAO,+OAAA9na,OAOpFo3K,EAASkD,aAAelD,EAAS0I,UAAY,EAAM,kBAAoB,GAAE,cAGvF,CAyGA,OAtGK1I,EAASgD,OAASx0B,IAEtBtzI,QAAQk/C,KAAM,mEAAoE4lH,GAI7D,OAAjBA,EAASt8K,KAEb8sa,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,+DAAAlqW,OAAgEo3K,EAASz5I,GAAE,aAAA39B,OAAco3K,EAASt8K,IAAI6iC,GAAE,0BAEvHy5I,EAASkD,YAEbstP,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,wDAAAlqW,OAAyDo3K,EAASz5I,GAAE,aAAA39B,OAAco3K,EAASt8K,IAAI6iC,GAAE,wBAE1Gy5I,EAAS0I,UAAY,IAEhC8nP,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,wDAAAlqW,OAAyDo3K,EAASz5I,GAAE,aAAA39B,OAAco3K,EAASt8K,IAAI6iC,GAAE,wBACrHiqY,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,oCAAAlqW,OAAoCo3K,EAAS0I,aAIlE+6I,EAASx/T,KAAMwsa,EAAczwP,EAASt8K,IAAK,UAAWs8K,EAASrxI,SAI/D6hY,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,kCAAAlqW,OAAmCioa,GAAY7wP,EAASrxI,SAI/C,OAAzBqxI,EAASsH,aAEbkpP,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,gEAAAlqW,OAAiEo3K,EAASz5I,GAAE,aAAA39B,OAAco3K,EAASsH,YAAY/gJ,GAAE,2BAErIk9R,EAASx/T,KAAMwsa,EAAczwP,EAASsH,YAAa,cAExCtH,EAAS0F,SAASniB,SAAW,GAExCitQ,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,mCAAAlqW,OAAoCioa,GAAY7wP,EAAS0F,YAIlD,OAAvB1F,EAAS8G,YAEb0pP,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,0DAAAlqW,OAA2Do3K,EAASz5I,GAAE,aAAA39B,OAAco3K,EAAS8G,UAAUvgJ,GAAE,yBAE7Hk9R,EAASx/T,KAAMwsa,EAAczwP,EAAS8G,UAAW,YAI1B,OAAnB9G,EAAS0G,QAEb8pP,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,0DAAAlqW,OAA2Do3K,EAASz5I,GAAE,aAAA39B,OAAco3K,EAAS0G,MAAMngJ,GAAE,0BAEzHk9R,EAASx/T,KAAMwsa,EAAczwP,EAAS0G,MAAO,eAIf,OAA1B1G,EAASoH,cAAgD,IAAvBpH,EAASqF,WAE/CmrP,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,0DAAAlqW,OAA2Do3K,EAASz5I,GAAE,aAAA39B,OAAco3K,EAASoH,aAAa7gJ,GAAE,0BAEhIk9R,EAASx/T,KAAMwsa,EAAczwP,EAASoH,aAAc,eAIpDopP,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,6BAAAlqW,OAA8Bo3K,EAASqF,YAI7B,OAA1BrF,EAASqH,cAAgD,IAAvBrH,EAASsF,WAE/CkrP,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,yDAAAlqW,OAA0Do3K,EAASz5I,GAAE,aAAA39B,OAAco3K,EAASqH,aAAa9gJ,GAAE,yBAE/Hk9R,EAASx/T,KAAMwsa,EAAczwP,EAASqH,aAAc,cAIpDmpP,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,4BAAAlqW,OAA6Bo3K,EAASsF,YAIhC,OAAtBtF,EAASuG,UAEbiqP,EAAOvsa,KAAK,GAAD2E,OAAKkqW,EAAG,wDAAAlqW,OAAuDo3K,EAASz5I,GAAE,aAAA39B,OAAYo3K,EAASuG,SAAShgJ,GAAE,wBACrHiqY,EAAOvsa,KAAK,GAAD2E,OAAKkqW,EAAG,2CAEnBrvC,EAASx/T,KAAMwsa,EAAczwP,EAASuG,SAAU,aAIhDiqP,EAAOvsa,KAAK,GAAD2E,OAAKkqW,EAAG,2BAAAlqW,OAA0Bo3K,EAASrkJ,UAIlDqkJ,EAAS+zD,yBAEby8L,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,6BAAAlqW,OAA8Bo3K,EAASgG,YAC3DwqP,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,sCAAAlqW,OAAuCo3K,EAASiG,qBACpEuqP,EAAOvsa,KAAK,GAAD2E,OAAMkqW,EAAG,uBAAAlqW,OAAwBo3K,EAASioB,OAI/C,gCAAPr/L,OAC6Bo3K,EAASz5I,GAAE,uHAAA39B,OAKtC4na,EAAOhsa,KAAM,MAAM,mKAAAoE,OAK0Co3K,EAASz5I,GAAE,qQAAA39B,OAMRo3K,EAASz5I,GAAE,mIAAA39B,OAK3E66T,EAASj/T,KAAM,MAAM,cAKxB,CAEA,SAASqsa,GAAYliY,GAEpB,MAAO,IAAP/lC,OAAY+lC,EAAMtgC,EAAC,MAAAzF,OAAO+lC,EAAM9gC,EAAC,MAAAjF,OAAO+lC,EAAMjhC,EAAC,IAEhD,CAEA,SAASkja,GAAc9+P,GAEtB,MAAO,IAAPlpK,OAAYkpK,EAAOzuK,EAAC,MAAAuF,OAAOkpK,EAAOtjK,EAAC,IAEpC,CAGA,SAAS+ga,GAAaxgQ,GAErB,IAAMzuK,EAAOyuK,EAAOzuK,KAAOyuK,EAAOzuK,KAAO,UAAYyuK,EAAOxoI,GAEtDk5F,EAAYswS,GAAahhQ,EAAOK,aAQtC,OANKL,EAAOK,YAAYsL,cAAgB,GAEvCx/J,QAAQk/C,KAAM,4DAA6D20G,GAIxEA,EAAOumC,qBACH,eAAP1sM,OAAsBtI,EAAI,iDAAAsI,OAEO62H,EAAS,oGAAA72H,OAGfmmK,EAAOiM,KAAI,MAAApyK,OAAKmmK,EAAOkM,IAAG,wCAAAryK,OAC4B,IAAlDxE,KAAK4f,IAAI+qJ,EAAO57H,MAAQ/uC,KAAK4f,IAAI+qJ,EAAOpoG,QAAY,qCAAA/9D,OACJ,IAAlDxE,KAAK4f,IAAI+qJ,EAAO17H,KAAOjvC,KAAK4f,IAAI+qJ,EAAOnoG,SAAa,4DAM1E,eAAPh+D,OAAsBtI,EAAI,iDAAAsI,OAEO62H,EAAS,oGAAA72H,OAGfmmK,EAAOiM,KAAI,MAAApyK,OAAKmmK,EAAOkM,IAAG,iCAAAryK,OAC9BmmK,EAAO+hQ,iBAAgB,kCAAAloa,OACrBmmK,EAAOluK,MAAK,uCAAA+H,OACPmmK,EAAOmpB,eAAc,6EAAAtvL,OAEvBmmK,EAAO4oB,gBAAe,kBAMpD,CCtjBO,IAAmDo5O,qVCbtDC,IAAiB,EACjBC,IAAuB,EACrBC,GAAkB,+BAIlBC,IDOoDJ,GCNtD,CAAC,aAAc,eAAgB,QAAS,QDOxC,SAACK,GACC,IACE,IAWwBxlW,EAXlBwsV,EAAcF,GAAiBkZ,GAC/B/gU,GAAS+nT,EAAYr5Z,OAASq5Z,EAAY,GAAGK,MAAQ,IACxCxvZ,QACG,SAACooa,GAAS,OACNA,GAAgC,UAAnBA,EAAUtla,IAAgB,IAC9CrI,KAAI,SAAA2ta,GAAS,OAAIA,EAAUzra,KAAU,IACrCqD,QAAO,SAAA3I,GAAI,OAAIywa,GAAap9Z,QAAQrT,IAAS,CAAC,IAI3DrB,EAAS,IAAIk0B,IAAS,IACTk9E,GAAK,IAAxB,IAAK,EAAL,qBAA0B,KAAf/vG,EAAI,QACbrB,EAAOs0B,IAAIjzB,GACZ,UAAAurE,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACD,OAAO5sE,EACP,MAAOsyG,GAAS,CAElB,OAAO,IAAIp+E,GACb,GCvBEm+Y,GACQ,aADRA,GAEU,eAFVA,GAGG,QAHHA,GAIE,OAWFC,GAAqBtpa,OAAO,qBAC5Bupa,GAAoBvpa,OAAO,oBACpBwpa,GAAmBxpa,OAAO,mBAC1Bypa,GAAsBzpa,OAAO,sBACpC0pa,GAAiB1pa,OAAO,iBACxB2pa,GAAU3pa,OAAO,UACjB4pa,GAAW5pa,OAAO,WAClB6pa,GAAY7pa,OAAO,YACnB8pa,GAAW9pa,OAAO,WAElB+pa,GAA4B/pa,OAAO,4BACnCgqa,GAAchqa,OAAO,cACrBiqa,GAAgBjqa,OAAO,gBACvBkqa,GAAWlqa,OAAO,WAClBmqa,GAAgBnqa,OAAO,gBACvBoqa,GAAepqa,OAAO,eCRtBqqa,GAAYrqa,OAAO,YACnBsqa,GAAatqa,OAAO,aAYJuqa,GAAS,WAA/B,aAAA5ga,EAAAA,KAAAA,GA8IW,SAAuB,IAqBlC,CAhCG,OAlIDlB,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,aAAAutB,IAyIA,WACE,OAAO,CACT,GAWA,CAAAvtB,IAAAA,WAAA/D,MAMA,WAIE,OAHKuB,KAAKsra,YAAkC,MAApBtra,KAAKora,MAC3Bpra,KAAKora,IAAcpra,KAAKmra,OAEnBnra,KAAKora,GACd,IAAC,EAAA5oa,IAAAA,iBAAA/D,MAzJD,SACIgb,GACwB,IAAxB8xZ,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAoBxY,GACtB,GAAIt5Y,aAAgB4xZ,EAClB,OAAO5xZ,EAGT,GAAkB,WAAdA,EAAK7U,KACP,MAAkB,MAAd6U,EAAK6gM,KACA,IAAIkxN,GAAoB/xZ,EAAyB8xZ,GAEnD9xZ,EAGT,OAASA,EAAsBtgB,KAAKsF,OAClC,IAAK,OACH,OAAO,IAAIgta,GAAchyZ,EAAsB8xZ,GACjD,IAAK,MACH,OAAO,IAAIG,GAAajyZ,GAG5B,OAAOs5Y,EACT,GAEA,CAAAvwZ,IAAAA,WAAA/D,MAOA,SAAgDkta,GAE9C,OAAIA,aAAuBN,EAClBM,EAAY1lK,WAGd0lK,CACT,GAEA,CAAAnpa,IAAAA,aAAA/D,MAIA,SAAqBkta,GACnB,QAAIA,aAAuBN,IAClBM,EAAYL,UAGvB,GAEA,CAAA9oa,IAAAA,kBAAA/D,MAyBA,SACImta,EAAuBC,GACzB,IAAON,EAAmBM,EAAnBN,MAAOO,EAAYD,EAAZC,SACPC,EAAQD,EAARC,KAEP,OAAOR,EAAMhva,KAAgB,SAACyva,EAAWp9Z,GAEvC,IAAMq9Z,EAAoC,MAAfF,EAAKn9Z,GAAiBo9Z,EAAYD,EAAKn9Z,GAI9Ds9Z,EACAN,EAAUh9Z,GAASg9Z,EAAUh9Z,GAASq9Z,EAG1C,GAA2B,UAAvBC,EAActna,KAAkB,CAClC,IAAMuna,EAAUD,EAAczta,MAE1B0ta,KAAWL,IACbI,EAAgBJ,EAASK,GAASv9Z,IAWtC,OALqB,MAAjBs9Z,GAAgD,UAAvBA,EAActna,OACzCsna,EAAgBD,GAIS,MAAvBC,EAAc5xN,KACTw2M,GACHob,EAAc/yZ,OAAS,IAAM6yZ,EAAU7yZ,OAAQ6yZ,EAAU1xN,OAI/D4xN,EAAgB9Y,GAAc8Y,EAAeF,IAG3B1xN,OAAS0xN,EAAU1xN,KAC5B0xN,EAIFE,CACT,GACF,KAAC,EAnI4B,MA8InBd,GAwBZ,gBAAMgB,GAActra,OAAO,cACrBura,GAASvra,OAAO,SAOT0qa,GAAoB,YAAAxvZ,EAAAA,EAAAA,GAAA,WAI/B,WAAY+vH,EAA6Bw/R,GAAiB,MAInC,OAJmC9ga,EAAAA,KAAAA,IACxDyR,EAAAA,EAAAA,KAAAA,OAEKkwZ,IAAergS,EACpB7vH,EAAKmwZ,IAAUd,EAAM,CACvB,CAUC,OAVAhia,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,aAAAutB,IAED,WACE,OAAO,CACT,GAAC,CAAAvtB,IAEA2oa,GAAS1sa,MAAV,WACE,OAAOqyZ,GACH9wZ,KAAKosa,IAAajzZ,OAAS,IAAMnZ,KAAKqsa,IAAQlzZ,OAC9CnZ,KAAKqsa,IAAQ/xN,KACnB,KAAC,EAnB8B,CAAQ+wN,IAuBnCiB,GAAaxra,OAAO,aAoBb4qa,GAAa,cAAA1vZ,EAAAA,EAAAA,GAAA,WAGxB,WAAYuwZ,GAAyB,MAAA9ha,EAAAA,KAAAA,IACnCkkE,EAAAA,EAAAA,KAAAA,OAHOA,IAA+B,KAKtC,IAAMmjV,EACFya,EAAYtsa,UAAUrI,OAAS20a,EAAYtsa,UAAU,GAAGqxZ,MAAM,GAAK,KAItE,OAFgB,MAAbQ,GAAwC,UAAnBA,EAAUltZ,OACjC+pE,EAAK29V,IAAcxa,GACpB,CACH,CA0BC,OA1BAvoZ,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,aAAAutB,IAED,WACE,OAAO,CACT,GAAC,CAAAvtB,IAAAA,EAAA/D,MAED,WACE,GAAwB,MAApBuB,KAAKssa,KAEA,oBADCtsa,KAAKssa,IAAa7ta,MAatB,MAAO,CAACmG,KAAM,SAAUuU,OAXO9V,OAAOmpa,aACZvva,KAAKC,IAC3BoG,SAASktB,KAAK24C,aACd7lE,SAASktB,KAAKs4C,aACdxlE,SAASunC,gBAAgBnuB,aACzBpZ,SAASunC,gBAAgBs+B,aACzB7lE,SAASunC,gBAAgBi+B,cAEAzlE,OAAO81G,cAChC,EAEqCmhG,KAAM,MAIrD,OAAOy4M,EACT,KAAC,EAtCuB,CAAQsY,IAkBhC7yR,GAjBU8zR,GAiBTnB,KAwBGsB,GAAuB,SACvBC,GAAa5ra,OAAO,aAcb2qa,GAAc,cAAAzvZ,EAAAA,EAAAA,GAAA,WAGzB,WAAY2wZ,GAAoD,MAAxBpB,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAoBxY,GAG1D,GAH8DtoZ,EAAAA,KAAAA,IAC9D+kE,EAAAA,EAAAA,KAAAA,OAHOA,IAA2C,KAKZ,IAAlCm9V,EAAa1sa,UAAUrI,OACzB,YAOF,IAJA,IAAM05Z,EACFqb,EAAa1sa,UAAU,GAAGqxZ,MAAM1gZ,QAC9Bg8Z,EAAgE,GAE/Dtb,EAAM15Z,QAAQ,CACnB,IAAMi1a,EAAuBvb,EAAM9yX,QAEnC,GAAIouY,EAAiBh1a,OAAS,EAAG,CAC/B,IAAMk1a,EACFF,EAAiBA,EAAiBh1a,OAAS,GAC/C,GAA0B,aAAtBk1a,EAAaloa,MACb6na,GAAqBv0a,KAAK40a,EAAarua,OAAQ,CACjD,IAAMsua,EAAWH,EAAiB57W,MAC5Bg8W,EAAYJ,EAAiB57W,MAEnC,GAAiB,MAAbg8W,EACF,YAGFJ,EAAiB9va,KAAK,IAAImwa,GACtBF,EACA1B,GAAU6B,eAAeF,EAAWzB,GACpCF,GAAU6B,eAAeL,EAAMtB,KACnC,UAIJqB,EAAiB9va,KACC,aAAd+va,EAAKjoa,KAAsBioa,EACAxB,GAAU6B,eAAeL,EAAMtB,IAGhE,KAAOqB,EAAiBh1a,OAAS,GAAG,CAClC,IAA6Du1a,EAAAA,EAA7BP,EAAiB/+W,OAAO,EAAG,GAAEs/W,GAAtDnhY,EAAI,KAAE+gY,EAAQ,KAAEvtW,EAAK,KAC5B,GAA0C,aAArCutW,EAA4Bnoa,KAC/B,YAGFgoa,EAAiB78Z,QAAQ,IAAIk9Z,GACzBF,EACA1B,GAAU6B,eAAelhY,EAAMu/X,GAC/BF,GAAU6B,eAAe1tW,EAAO+rW,KAMrC,OAF+B,IAA5BqB,EAAiBh1a,SACnB43E,EAAKk9V,IAAcE,EAAiB,IACrC,CACH,CASC,OATArja,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,aAAAutB,IAED,WACE,OAA2B,MAApB/vB,KAAK0sa,KAAuBrB,GAAUC,WAAWtra,KAAK0sa,IAC/D,GAAC,CAAAlqa,IAAAA,EAAA/D,MAED,WACE,OAA2B,MAApBuB,KAAK0sa,IAAsBrB,GAAUplK,SAASjmQ,KAAK0sa,KACxB3Z,EACpC,KAAC,EAnEwB,CAAQsY,IAgEjC96C,GA/DUm8C,GA+DTvB,KAQGiC,GAAYtsa,OAAO,YACnBusa,GAAQvsa,OAAO,QACfwsa,GAASxsa,OAAO,SAaTmsa,GAAkB,YAAAjxZ,EAAAA,EAAAA,GAAA,WAK7B,WACI+wZ,EAAwB/gY,EACxBwzB,GAA8B,MAIX,OAJW/0D,EAAAA,KAAAA,IAChC2/G,EAAAA,EAAAA,KAAAA,OACKgjT,IAAaL,EAClB3iT,EAAKijT,IAASrhY,EACdo+E,EAAKkjT,IAAU9tW,EAAM,CACvB,CA2CC,OA3CAj2D,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,aAAAutB,IAED,WACE,OAAOs7Y,GAAUC,WAAWtra,KAAKqta,MAC7BhC,GAAUC,WAAWtra,KAAKsta,IAChC,GAAC,CAAA9qa,IAEA2oa,GAAS1sa,MAAV,WACE,IAAM8ua,EAAWna,GAAciY,GAAUplK,SAASjmQ,KAAKqta,MACjDG,EAAYpa,GAAciY,GAAUplK,SAASjmQ,KAAKsta,MACzCN,EAA6BO,EAArCp0Z,OAAyBs0Z,EAAYF,EAAlBjzN,KACXozN,EAA+BF,EAAvCr0Z,OAA0Bw0Z,EAAaH,EAAnBlzN,KAG3B,GAAiB,MAAbqzN,GAAiC,MAAZF,GAAoBE,GAAaF,EACxD,OAAO1a,GAOT,IACIt0Z,EADE67M,EAAOmzN,GAAYE,EAGzB,OAAQ3ta,KAAKota,IAAW3ua,OACtB,IAAK,IACHA,EAAQuua,EAAYU,EACpB,MACF,IAAK,IACHjva,EAAQuua,EAAYU,EACpB,MACF,IAAK,IACHjva,EAAQuua,EAAYU,EACpB,MACF,IAAK,IACHjva,EAAQuua,EAAYU,EACpB,MACF,QACE,OAAO3a,GAGX,MAAO,CAACnuZ,KAAM,SAAUuU,OAAQ1a,EAAO67M,KAAAA,EACzC,KAAC,EAvD4B,CAAQ+wN,IA+DjCuC,GAAgB9sa,OAAO,gBACvB+sa,GAAc/sa,OAAO,cAadgta,GAAiD,YAAA9xZ,EAAAA,EAAAA,GAAA,WAK5D,WAAYi1Y,EAAoC4a,GAAa,MAAApha,EAAAA,KAAAA,IAC3D0gH,EAAAA,EAAAA,KAAAA,OAEK0iT,IAAehC,EAEpB,IAAMkC,EAAkB9c,EAAY,GAC9BK,EAA2B,MAAnByc,EAA0BA,EAAgBzc,MAAQ,GAerD,OAbXnmS,EAAKyiT,IACD/B,EAAWN,MAAMhva,KACb,SAACyva,EAAWp9Z,GACV,IAAMi+Z,EAAOvb,EAAM1iZ,GACnB,OAAY,MAARi+Z,EACK,CAACjoa,KAAM,QAASnG,MAAO,QAGd,UAAdoua,EAAKjoa,KACAioa,EAGFxB,GAAU6B,eAAeL,EAAMb,EACxC,IAAG,CACb,CAiBC,OAjBAzia,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,aAAAutB,IAED,WAAc,IACiC00C,EADjC,IACczkE,KAAK4ta,KAAc,IAA7C,IAAK,EAAL,qBAA+C,KAApCjC,EAAW,QACpB,IAAKN,GAAUC,WAAWK,GACxB,OAAO,EAEV,UAAAjnW,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACD,OAAO,CACT,GAAC,CAAAliE,IAEA2oa,GAAS1sa,MAAV,WACE,IAAMmta,EAAY5ra,KAAK4ta,IAAerxa,KAClC,SAAAova,GAAW,OAAIN,GAAUplK,SAAS0lK,EAAY,IAClD,OAAON,GAAU2C,gBAAgBpC,EAAW5ra,KAAK6ta,KACrCtxa,KAAY,SAAAu0Z,GAAU,OAAIA,EAAW33Y,MAAM,GAEzD,KAAC,EA5C2D,CAC1DkyZ,ICxeE4C,GAAanta,OAAO,aACpBota,GAAoBpta,OAAO,oBAC3Bqta,GAAsBrta,OAAO,sBAC7Bsta,GAAmBtta,OAAO,mBAC1Buta,GAAUvta,OAAO,UACjBwta,GAAkBxta,OAAO,YAYzByta,GAAc,YAgBlB,WAAYp2X,GAAgC1tC,EAAAA,KAAAA,GAC1CzK,KAAKsua,IAAmBn2X,CAC1B,CANC,OAMA5uC,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,UAAA/D,MAMD,WAC0C,IAApC8va,EAAeN,IAAY1oX,MAC7BgpX,EAAeL,MAEjBK,EAAeN,IAAY7hZ,IAAIpsB,KACjC,GAEA,CAAAwC,IAAAA,aAAA/D,MAGA,WACE8va,EAAeN,IAAYzwY,OAAOx9B,MACM,IAApCuua,EAAeN,IAAY1oX,MAC7BgpX,EAAeJ,KAEnB,GAAC,CAAA3ra,IAEO6ra,GAAO5va,MAAR,WACLuB,KAAKsua,KACP,IAAC,EAAA9ra,IA1Cc4ra,GAAgB3va,MAAvB,WAAwB,IACmBgmE,EADnB,IACP8pW,EAAeN,KAAW,IAAjD,IAAK,EAAL,qBAAmD,CAAhC,QACRI,MACV,UAAA3pW,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACH,GAAC,CAAAliE,IAAAA,EAAA/D,MAEO,WACN4E,OAAOO,iBAAiB,SAAU5D,KAAKoua,IAAmB,CAACz/X,SAAS,GACtE,GAAC,CAAAnsC,IACc2ra,GAAmB1va,MAA1B,WACN4E,OAAO60B,oBAAoB,SAAUl4B,KAAKoua,IAC5C,KAAC,EAZiB,EAOJp9V,GADCi9V,GACAC,KADDK,GAAAA,IAAoC,IAAIviZ,IAoDxD,IAAMwiZ,GAAwB1ta,OAAO,wBAC/B2ta,GAAa3ta,OAAO,aACpB4ta,GAAgB5ta,OAAO,gBAEvB6ta,GAAY7ta,OAAO,YAqBZ8ta,GAAa,WAMxB,WAAYz2X,GAA+B,WAAA1tC,EAAAA,KAAAA,GALlC,SAA2C,CAAC,EAG5C,SAAe,IAAIkoZ,GAAwB,CAAC,aA0D5C,SAAc,WACrBz2Y,EAAKsyZ,IAAuB,CAACK,aAAc,iBAC7C,EAzDE7ua,KAAKwua,IAAyBr2X,CAChC,CAoDC,OAlDD5uC,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,oBAAA/D,MAIA,SAAkBo0Z,GAA0B,WACpCic,EAA2C,CAAC,EAC5CC,EAAkB/ua,KAAK0ua,IA0B7B,IAAK,IAAMM,KAxBXhva,KAAKyua,IAAYQ,KAAKpc,GAAK,SAAAqc,GACzB,IAAO/1a,EAAQ+1a,EAAR/1a,KAEDg2a,EADgBD,EAAajva,UAAU,GACbqxZ,MAAM,GAEtC,GAAmB,QAAfn4Z,EAAKsF,OAAgC,MAAb0wa,GACL,UAAnBA,EAAUvqa,MAKP,oBADCuqa,EAAU1wa,MAEd,GAAwC,MAApCqwa,EAAgB,iBAA0B,CAC5C,IAAMxnT,EAAW,kBAAmBynT,EAChCA,EAAgB,iBAChB,IAAIR,GAAe5/V,EAAKggW,KAC5BrnT,EAAUM,iBACHmnT,EAAgB,iBACvBD,EAAgB,iBAAmBxnT,EAI3C,IAE+BynT,EAAiB,CAC7BA,EAAgBC,GACxBxoV,aAGXxmF,KAAK0ua,IAAiBI,CACxB,GAEA,CAAAtsa,IAAAA,UAAA/D,MAIA,WACE,IAAK,IAAMuwa,KAAoBhva,KAAK0ua,IAAgB,CAE9C1ua,KAAK0ua,IAAeM,GACfxoV,aAEb,KAAC,EA5DuB,MACdkoV,GAAa,GAGbD,GAAU,GA0DVE,GCrHL,aAAMtka,GACT,SACI8sD,GACF,IAAMi4W,EAA0Bj4W,EAAOi4W,iBAAkB,EACnDC,EAAgBl4W,EAAO00W,sBAAsBh4Z,SAC/CsjD,EAAO00W,WACN,kBAAM10W,EAAO00W,UAAU,EAE5B,OAAO,SACIjnT,EAAU93F,GAAwB,MACrCwiZ,EAAmB1qT,EAAcynQ,QACjCkjD,EAA4B3qT,EAAM+lQ,kBAClC6kD,EAA+B5qT,EAAMimQ,qBAErC4kD,EAAiB3ua,OAAO,GAAD,OAAIgsB,EAAY,kBACvC4iZ,EAAkB5ua,OAAO,GAAD,OAAIgsB,EAAY,mBACxC6iZ,EAAmB7ua,OAAO,GAAD,OAAIgsB,EAAY,oBACzC8iZ,EAAmB9ua,OAAO,GAAD,OAAIgsB,EAAY,oBAE/CvuB,OAAOiL,iBAAiBo7G,GAAK,OAC1B6qT,EACG,CAAChxa,MAAO,KAA8BmL,UAAU,IAAK,IACxD8la,EACG,CAACjxa,MAAO,KAAiCmL,UAAU,IAAK,IAE3D+la,EAAmB,CAClBlxa,MAAO,sBACCo0Z,EAAM9B,GACR/wZ,KAAK8sB,IACT9sB,KAAK0va,GACD,IAAI5B,GAAejb,EAAKwc,EAAcrva,OAEd,MAAxBA,KAAKyva,IAA2BL,IAClCpva,KAAKyva,GACD,IAAIb,IAAc,kBAAM1yZ,EAAK0zZ,IAAmB,KAG1B,MAAxB5va,KAAKyva,IACPzva,KAAKyva,GAAgBI,kBAAkBhd,EAE3C,IACD,IAEA+c,EAAmB,CAClBnxa,MAAO,WACL,GAA6B,MAAzBuB,KAAK0va,GAAT,CAIA,IAAM53a,EAASkI,KAAK0va,GAAiBzpK,WAIpCjmQ,KAGem3D,EAAO24W,eACnBh4a,GACN,IACD,cAEQ,CACP2G,MAAO,SAASotX,GAIVA,EAAkBz9U,IAAIthB,KACxB9sB,KAAK2va,KACL3va,KAAK4va,MAGPN,EAAgBzya,KAAKmD,KAAM6rX,EAC7B,IACD,wBAEkB,CACjBptX,MAAO,WACL8wa,EAA0B1ya,KAAKmD,MAC/BA,KAAKypX,cAAc38V,EAAc9sB,KAAK8sB,GACxC,IACD,2BAEqB,CACpBruB,MAAO,WACL+wa,EAA6B3ya,KAAKmD,MACN,MAAxBA,KAAKyva,KACPzva,KAAKyva,GAAgB/tQ,UACrB1hK,KAAKyva,GAAkB,KAE3B,IACD,GAEL,CACF,ECvIEr1K,GAAU,IAAIjlG,GACd62D,GAAU,IAAIllD,GA+BPipQ,GAAkBxxa,OAAOkjB,OAA8B,CAClEuuZ,cAAe,EACfC,cAAe9mX,IACf+mX,kBAAmBjza,KAAK00J,GAAK,EAC7Bw+Q,kBAAmBlza,KAAK00J,GAAK10J,KAAK00J,GAAK,EACvCy+Q,uBAAwBjnX,IACxBknX,sBAAuBlnX,IACvBmnX,mBAAoB,GACpBC,mBAAoB,GACpBjzS,YAAa,SAITkzS,GAA2Bvza,KAAK00J,GAAK,EACrC8+Q,GAAmB,IAgBZC,GACO,mBADPA,GAEL,OAFKA,GAGA,YAqCAC,GAAe,YAAA30Z,EAAAA,EAAAA,GAAA,WAkC1B,WACa4rJ,EAAoClmK,EACpCqwL,GAAiB,MAOV,OAPUtnL,EAAAA,KAAAA,IAC5ByR,EAAAA,EAAAA,KAAAA,OAFWA,OAAA0rJ,EAAoC1rJ,EAAAA,QAAAxa,EACpCwa,EAAAA,MAAA61K,EAnCN71K,EAAAA,iBAAmB,EACnBA,EAAAA,iBAAmB,EACnBA,EAAAA,aAAew0Z,GAEdx0Z,EAAAA,qBAA+B,EAE/BA,EAAAA,cAAe,EACfA,EAAAA,gBAAiB,EAGlBA,EAAAA,WAAY,EACZA,EAAAA,WAAY,EACXA,EAAAA,cAAgB,IAAIs6I,GACpBt6I,EAAAA,YAAc,EAGdA,EAAAA,UAAY,IAAIo5Q,GAChBp5Q,EAAAA,cAAgB,IAAIo5Q,GACpBp5Q,EAAAA,YAAc,IAAIq2X,GAClBr2X,EAAAA,UAAY,IAAIq2X,GAChBr2X,EAAAA,aAAe,IAAIq2X,GACnBr2X,EAAAA,OAASjf,KAAK+W,IAAI+7Z,GAAgBQ,oBAClCr0Z,EAAAA,WAAaA,EAAK00Z,OAClB10Z,EAAAA,UAAY,IAAIq2X,GAGhBr2X,EAAAA,UAAuB,KACvBA,EAAAA,SAAsB,GACtBA,EAAAA,UAAY,EACZA,EAAAA,qBAAuB,CAAC2lB,QAAS,EAAGC,QAAS,GAC7C5lB,EAAAA,eAAiB,EACjBA,EAAAA,cAAe,EAmEvBA,EAAAA,UAAY,SAACqsB,GACX,GAAIrsB,EAAK+sS,UACP1gR,EAAM9H,qBACD,KAC8BgkC,EAD9B,IACiBvoD,EAAKksS,UAAQ,IAAnC,IAAK,EAAL,qBAAqC,KAA1BtS,EAAO,QAGhB55R,EAAKyjS,YAAY,IAAIkxH,aACjB,gBAAe,+BACX30Z,EAAK40Z,sBAAoB,CAAErzY,UAAWq4Q,EAAQ12Q,OACvD,UAAAslC,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,EAEL,EAuSQxoD,EAAAA,cAA2B,SAACoyH,EAAYD,GAC9C,IAAKnyH,EAAK60Z,aAAc,CACtB,IAAMC,EACF90Z,EAAK+0Z,iBAAiB/0Z,EAAKksS,SAAS,GAAIlsS,EAAKksS,SAAS,IACpD8oH,EAAYT,IACbv0Z,EAAKi1Z,eAAiBH,GAAiB,GAAK90Z,EAAK61K,MAAM3jL,OAC5D8N,EAAKi1Z,eAAiBH,EAEtB90Z,EAAKk1Z,gBAAgB,EAAG,EAAGF,GAGzBh1Z,EAAKm1Z,YAAc,GACrBn1Z,EAAKo1Z,QAAQhjS,EAAID,EAErB,EAOQnyH,EAAAA,cAAgB,SAACqsB,GACvBA,EAAM9H,gBACR,EAEQvkB,EAAAA,gBAA6B,SAACoyH,EAAYD,GAChD,IAAO/Q,EAAephH,EAAK2zW,SAApBvyP,YACP,IAAKphH,EAAKq1Z,cAAgC,SAAhBj0S,EAAwB,CAChDphH,EAAKq1Z,cAAe,EACpB,IAAMC,EAAQv0a,KAAK4f,IAAIyxH,GACjBmjS,EAAQx0a,KAAK4f,IAAIwxH,GAEvB,GAAInyH,EAAKw1Z,eAAiBhB,KACJ,UAAhBpzS,GAA2Bm0S,EAAQD,GACnB,UAAhBl0S,GAA2Bk0S,EAAQC,GAEvC,YADAv1Z,EAAKy1Z,UAAY,MAGjBz1Z,EAAKxa,QAAQkC,iBACT,YAAasY,EAAK01Z,cAAe,CAACjjY,SAAS,IAGnDzyB,EAAK21Z,wBAAwBvjS,EAAID,EACnC,EAmGQnyH,EAAAA,cAAgB,SAACqsB,GACvB,KAAIrsB,EAAKksS,SAASxwT,OAAS,GAA3B,CAGA,IAAO8J,EAAP,KAAOA,QAEsB,IAAzBwa,EAAKksS,SAASxwT,SAChB8J,EAAQkC,iBAAiB,cAAesY,EAAK06R,eAC7Cl1S,EAAQkC,iBAAiB,YAAasY,EAAKyjS,aAC3CzjS,EAAKy1Z,UAAY,KACjBz1Z,EAAKq1Z,cAAe,EACpBr1Z,EAAK40Z,qBAAqBjvY,QAAU0G,EAAM1G,QAC1C3lB,EAAK40Z,qBAAqBhvY,QAAUyG,EAAMzG,QAC1C5lB,EAAKk1C,UAAYF,YAAYtxD,OAG/B,IACE8B,EAAQy0S,kBAAkB5tQ,EAAM9K,WAChC,UAAO,CAETvhB,EAAKksS,SAAStrT,KACV,CAAC+kC,QAAS0G,EAAM1G,QAASC,QAASyG,EAAMzG,QAAS1C,GAAImJ,EAAM9K,YAE/DvhB,EAAK41Z,gBAAiB,EAEI,UAAtBvpY,EAAM3C,aACR1pB,EAAKw1Z,aAAenpY,EAAMpG,OACtBuuY,GACAA,GACJx0Z,EAAK61Z,cAAcxpY,KAEnBrsB,EAAKw1Z,aAAehB,GACpBx0Z,EAAKunD,YAAYl7B,IAErB,EAEQrsB,EAAAA,cAAgB,SAACqsB,GACvB,IAAMutQ,EACF55R,EAAKksS,SAAS5lM,MAAK,SAACszL,GAAO,OAAKA,EAAQ12Q,KAAOmJ,EAAM9K,SAAS,IAClE,GAAe,MAAXq4Q,EAAJ,CAIA,IAAMk8H,EAAa91Z,EAAKksS,SAASxwT,OAC3B02I,GAAM/lG,EAAM1G,QAAUi0Q,EAAQj0Q,SAAWmwY,EACzC3jS,GAAM9lG,EAAMzG,QAAUg0Q,EAAQh0Q,SAAWkwY,EACpC,IAAP1jS,GAAmB,IAAPD,IAGhBynK,EAAQj0Q,QAAU0G,EAAM1G,QACxBi0Q,EAAQh0Q,QAAUyG,EAAMzG,QAEE,UAAtByG,EAAM3C,aACR1pB,EAAKw1Z,aAAenpY,EAAMpG,OACtBuuY,GACAA,GACmB,OAAnBx0Z,EAAKy1Z,WACPz1Z,EAAKy1Z,UAAUrjS,EAAID,KAGrBnyH,EAAKw1Z,aAAehB,GAChBx0Z,EAAKm1Z,YAAc,EACrBn1Z,EAAKo1Z,QAAQhjS,EAAID,GAEjBnyH,EAAK21Z,wBAAwBvjS,EAAID,KAGvC,EAEQnyH,EAAAA,YAAc,SAACqsB,GACrB,IAAO7mC,EAAP,KAAOA,QAEDkN,EACFsN,EAAKksS,SAAS5kN,WAAU,SAACsyM,GAAO,OAAKA,EAAQ12Q,KAAOmJ,EAAM9K,SAAS,KACxD,IAAX7uB,GACFsN,EAAKksS,SAASv6P,OAAOj/C,EAAO,GAK1BsN,EAAKm1Z,YAAc,IAAM9oY,EAAMpG,QACjCjmB,EAAK+1Z,cAEsB,IAAzB/1Z,EAAKksS,SAASxwT,QAChB8J,EAAQw2B,oBAAoB,cAAehc,EAAK06R,eAChDl1S,EAAQw2B,oBAAoB,YAAahc,EAAKyjS,aAC9Cj+S,EAAQw2B,oBAAoB,YAAahc,EAAK01Z,eAC1C11Z,EAAK+sS,WAAa/sS,EAAKg2Z,WACzBh2Z,EAAKi2Z,SAAS5pY,IAEY,OAAnBrsB,EAAKy1Z,WACdz1Z,EAAK61Z,cAAcxpY,GAGpBrsB,EAAK61K,MAAMrwL,QAAgB0wa,IAAa/na,MAAMmqB,QAAU,EACzD9yB,EAAQ2I,MAAM2tH,OAAS,OACvB97G,EAAKm1Z,YAAc,EAEfn1Z,EAAK41Z,gBACP51Z,EAAKqiB,cAAc,CAAC35B,KAAM,sBAE9B,EAwCQsX,EAAAA,QAAU,SAACqsB,GACjBrsB,EAAKw1Z,aAAehB,GAEpB,IAAMQ,EAAa3oY,EAAqBjC,QACA,GAAlCiC,EAAqB7B,UAAiB,GAAK,GAAK+pY,GAAmB,GACzEv0Z,EAAKk1Z,gBAAgB,EAAG,EAAGF,GAE3B3oY,EAAM9H,gBACR,EAEQvkB,EAAAA,UAAY,SAACqsB,GAInB,IAAOmpY,EAAP,KAAOA,aACPx1Z,EAAKw1Z,aAAehB,IAECnoY,EAAMrG,UAAYhmB,EAAK+sS,UACxC/sS,EAAKm2Z,kBAAkB9pY,GACvBrsB,EAAKo2Z,wBAAwB/pY,IAG/BA,EAAM9H,iBAENvkB,EAAKw1Z,aAAeA,CAExB,EApqBEx1Z,EAAK2zW,SAAWtxX,OAAOmgB,OAAO,CAAC,EAAGqxZ,IAElC7zZ,EAAKq2Z,SAAS,EAAGt1a,KAAK00J,GAAK,EAAG,GAC9Bz1I,EAAKs2Z,eAAe,KACpBt2Z,EAAKu2Z,aAAa,CACpB,CAkuBC,OAluBAlpa,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,qBAAAutB,IAED,WACE,OAAO/vB,KAAK0ya,mBACd,GAAC,CAAAlwa,IAAAA,oBAAA/D,MAED,WACE,IAAiC,IAA7BuB,KAAK0ya,oBAA+B,CACtC,IAAOhxa,EAAW1B,KAAX0B,QACPA,EAAQkC,iBAAiB,cAAe5D,KAAK0/S,eAC7Ch+S,EAAQkC,iBAAiB,gBAAiB5D,KAAK2/S,aAE1C3/S,KAAK+wa,cACRrva,EAAQkC,iBAAiB,QAAS5D,KAAKy/S,SAEzC/9S,EAAQkC,iBAAiB,UAAW5D,KAAK4jE,WAGzCliE,EAAQkC,iBAAiB,aAAa,WAAO,GAAG,CAAC+qC,SAAS,IAC1DjtC,EAAQkC,iBAAiB,cAAe5D,KAAK2ya,WAE7C3ya,KAAK0B,QAAQ2I,MAAM2tH,OAAS,OAC5Bh4H,KAAK0ya,qBAAsB,EAE3B1ya,KAAK4ya,yBAET,GAAC,CAAApwa,IAAAA,qBAAA/D,MAED,WACE,IAAiC,IAA7BuB,KAAK0ya,oBAA8B,CACrC,IAAOhxa,EAAW1B,KAAX0B,QAEPA,EAAQw2B,oBAAoB,cAAel4B,KAAK0/S,eAChDh+S,EAAQw2B,oBAAoB,cAAel4B,KAAK42S,eAChDl1S,EAAQw2B,oBAAoB,YAAal4B,KAAK2/S,aAC9Cj+S,EAAQw2B,oBAAoB,gBAAiBl4B,KAAK2/S,aAClDj+S,EAAQw2B,oBAAoB,QAASl4B,KAAKy/S,SAC1C/9S,EAAQw2B,oBAAoB,UAAWl4B,KAAK4jE,WAC5CliE,EAAQw2B,oBAAoB,cAAel4B,KAAK2ya,WAEhDjxa,EAAQ2I,MAAM2tH,OAAS,GACvBh4H,KAAK2xa,UAAY,KACjB3xa,KAAK0ya,qBAAsB,EAE3B1ya,KAAK4ya,yBAET,GAEA,CAAApwa,IAAAA,UAAAutB,IAGA,WACE,OAAO/vB,KAAK6vX,QACd,GAAC,CAAArtX,IAAAA,cAAAysB,IAgBD,SAAgBu5F,GACVxoH,KAAK+wa,cAAgBvoT,IACvBxoH,KAAK+wa,aAAevoT,GACJ,IAAZA,EACFxoH,KAAK0B,QAAQw2B,oBAAoB,QAASl4B,KAAKy/S,SAE/Cz/S,KAAK0B,QAAQkC,iBAAiB,QAAS5D,KAAKy/S,SAG9Cz/S,KAAK4ya,yBAET,GAEA,CAAApwa,IAAAA,qBAAA/D,MAOA,WACE,OADiB8C,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAoB,IAAI+zR,IAC3B55H,KAAK17J,KAAK0kT,UAC1B,GAEA,CAAAliT,IAAAA,iBAAA/D,MAGA,WACE,OAAOuB,KAAK4nK,OAAOqoB,GACrB,GAEA,CAAAztL,IAAAA,eAAA/D,MAKA,SAAaoxX,GACXtxX,OAAOmgB,OAAO1e,KAAK6vX,SAAUA,GAG7B7vX,KAAKuya,WACLvya,KAAKwya,eAAev1a,KAAKk2J,IAAInzJ,KAAK6ya,YACpC,GAEA,CAAArwa,IAAAA,gBAAA/D,MAGA,SAAcq0a,EAAmBC,GAC/B/ya,KAAK4nK,OAAOiM,KAAO52K,KAAKC,IAAI41a,EAAWC,EAAW,KAClD/ya,KAAK4nK,OAAOkM,IAAMi/P,EAClB/ya,KAAK4nK,OAAOyoB,wBACd,GAEA,CAAA7tL,IAAAA,eAAA/D,MAGA,SAAayxL,GACXlwL,KAAK4nK,OAAOsoB,OAASA,EACrBlwL,KAAK4nK,OAAOyoB,wBACd,GAEA,CAAA7tL,IAAAA,WAAA/D,MAQA,WAGkD,IAF9Cu0a,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAoBhza,KAAKiza,cAAcx5Q,MACvCy5Q,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAkBlza,KAAKiza,cAAc9pQ,IACrCgqQ,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAqBnza,KAAKiza,cAAc/pQ,OAC1C,EAOIlpK,KAAK6vX,SANPugD,EAAqB,EAArBA,sBACAC,EAAqB,EAArBA,sBACAH,EAAiB,EAAjBA,kBACAC,EAAiB,EAAjBA,kBACAH,EAAa,EAAbA,cACAC,EAAa,EAAbA,cAGF,EAA6Bjwa,KAAKiza,cAA3Bx5Q,EAAK,EAALA,MAAO0P,EAAG,EAAHA,IAAKD,EAAM,EAANA,OAEbkqQ,EACFlhR,GAAM8gR,EAAW5C,EAAwBC,GACxC9nP,SAAS6nP,IACT7nP,SAAS8nP,KACZrwa,KAAK0kT,UAAUjrJ,MACXz5J,KAAKqza,UAAUrza,KAAK0kT,UAAUjrJ,MAAQ25Q,GAAaA,GAGzD,IAAME,EAAUphR,GAAMghR,EAAShD,EAAoBC,GAC7CoD,EAAarhR,GAAMihR,EAAYnD,EAAgBC,GAErD,OAAImD,IAAc35Q,GAAS65Q,IAAYnqQ,GAAOoqQ,IAAerqQ,KAI7DlpK,KAAKiza,cAAcx5Q,MAAQ25Q,EAC3Bpza,KAAKiza,cAAc9pQ,IAAMmqQ,EACzBtza,KAAKiza,cAAc/pQ,OAASqqQ,EAC5Bvza,KAAKiza,cAAcxsH,YAEZ,EACT,GAEA,CAAAjkT,IAAAA,YAAA/D,MAGA,SAAUyqK,GACRlpK,KAAKiza,cAAc/pQ,OAASA,EAC5BlpK,KAAKuya,UACP,GAEA,CAAA/va,IAAAA,iBAAA/D,MAGA,SAAewxL,GACb,MAAiDjwL,KAAK6vX,SAA/CygD,EAAkB,EAAlBA,mBAAoBC,EAAkB,EAAlBA,mBAC3BtgP,EAAM/9B,GAAM+9B,EAAKqgP,EAAqBC,GACtCvwa,KAAK6ya,WAAa51a,KAAK+W,IAAIi8K,EAC7B,GAEA,CAAAztL,IAAAA,qBAAA/D,MAGA,SAAmB+zY,GACjBxyY,KAAKwza,YAAY9gC,aAAaF,GAC9BxyY,KAAKyza,UAAU/gC,aAAaF,GAC5BxyY,KAAK0za,aAAahhC,aAAaF,GAC/BxyY,KAAK2za,UAAUjhC,aAAaF,EAC9B,GAEA,CAAAhwY,IAAAA,cAAA/D,MAOA,SAAYm1a,EAAoBC,EAAkB3C,GAChD,MAA6Blxa,KAAKiza,cAA3Bx5Q,EAAK,EAALA,MAAO0P,EAAG,EAAHA,IAAKD,EAAM,EAANA,OACnB,EAKIlpK,KAAK6vX,SAJPmgD,EAAa,EAAbA,cACAC,EAAa,EAAbA,cACAK,EAAkB,EAAlBA,mBACAC,EAAkB,EAAlBA,mBAGIuD,EAAS9za,KAAK0kT,UAAUjrJ,MAAQA,EAChCs6Q,EAAc92a,KAAK00J,GAAK,KACxBqhR,EACFv5Q,EAAQvH,GAAM0hR,GAAaG,EAAcD,EAAQC,EAAcD,GAC7DZ,EAAU/pQ,EAAM0qQ,EAEhBG,EAA2B,IAAd9C,EACf,IACEA,EAAY,EAAIjB,EAAiBD,GAAkB9mQ,IAChDjsK,KAAK+W,IACDk9Z,EAAY,EAAIX,EAAsBD,GAC1Ctwa,KAAK6ya,YAERM,EAAajqQ,EACfgoQ,GACK3oP,SAASyrP,GAAcA,EACoC,GAAnC/D,EAAiBD,IAGlD,GAFAhwa,KAAKuya,SAASS,EAAWE,EAASC,GAEhB,IAAdjC,EAAiB,CACnB,IAAM2B,EAAa7ya,KAAK6ya,WAAa3B,EACrClxa,KAAKwya,eAAev1a,KAAKk2J,IAAI0/Q,IAEjC,GAEA,CAAArwa,IAAAA,aAAA/D,MAIA,WACEuB,KAAKsjK,OAAO,E7CrZa,I6CsZ3B,GAEA,CAAA9gK,IAAAA,SAAA/D,MAOA,SAAO2ga,EAAehia,GACpB,IAAI4C,KAAKi0a,eAAT,CAGA,MAA2Cj0a,KAAK6vX,SAAzCsgD,EAAiB,EAAjBA,kBAAmBF,EAAa,EAAbA,cAEpB6D,EAAS9za,KAAK0kT,UAAUjrJ,MAAQz5J,KAAKiza,cAAcx5Q,MACrDx8J,KAAK4f,IAAIi3Z,GAAU72a,KAAK00J,KACvB42B,SAASvoL,KAAK6vX,SAASugD,yBACvB7nP,SAASvoL,KAAK6vX,SAASwgD,yBAC1Brwa,KAAK0kT,UAAUjrJ,OAA6B,EAApBx8J,KAAKmzK,KAAK0jQ,GAAc72a,KAAK00J,IAGvD3xJ,KAAK0kT,UAAUjrJ,MAAQz5J,KAAKwza,YAAYlwQ,OACpCtjK,KAAK0kT,UAAUjrJ,MAAOz5J,KAAKiza,cAAcx5Q,MAAOr8J,EAAOH,KAAK00J,IAEhE3xJ,KAAK0kT,UAAUv7I,IAAMnpK,KAAKyza,UAAUnwQ,OAChCtjK,KAAK0kT,UAAUv7I,IAAKnpK,KAAKiza,cAAc9pQ,IAAK/rK,EAAO+ya,GAEvDnwa,KAAK0kT,UAAUx7I,OAASlpK,KAAK0za,aAAapwQ,OACtCtjK,KAAK0kT,UAAUx7I,OAAQlpK,KAAKiza,cAAc/pQ,OAAQ9rK,EAAO6ya,GAG7Djwa,KAAK4wa,OAAS5wa,KAAK2za,UAAUrwQ,OAAOtjK,KAAK4wa,OAAQ5wa,KAAK6ya,WAAYz1a,EAAO,GAEzE4C,KAAKk0a,aACP,GAAC,CAAA1xa,IAAAA,yBAAA/D,MAED,WACE,IAAO4L,EAASrK,KAAK0B,QAAd2I,MAEP,GAAIrK,KAAK0ya,oBAAqB,CAC5B,IAAOp1S,EAAet9H,KAAK6vX,SAApBvyP,YACHt9H,KAAK+wa,cAAgC,SAAhBzzS,EACvBjzH,EAAMizH,YAAc,eAEpBjzH,EAAMizH,YAAcA,OAGtBjzH,EAAMizH,YAAc,EAExB,GAAC,CAAA96H,IAAAA,eAAA/D,MAEO,WACN,OAAOuB,KAAKiza,cAAcx5Q,QAAUz5J,KAAK0kT,UAAUjrJ,OAC/Cz5J,KAAKiza,cAAc9pQ,MAAQnpK,KAAK0kT,UAAUv7I,KAC1CnpK,KAAKiza,cAAc/pQ,SAAWlpK,KAAK0kT,UAAUx7I,QAC7ClpK,KAAK6ya,aAAe7ya,KAAK4wa,MAC/B,GAAC,CAAApua,IAAAA,iBAAA/D,MAEO,WACNuB,KAAKu+B,cAAc,CAAC35B,KAAM,SAAUpD,OAAQxB,KAAK0xa,cACnD,GAAC,CAAAlva,IAAAA,aAAA/D,MAEO,WAENuB,KAAK0kT,UAAU+B,WACfzmT,KAAK4nK,OAAOroG,SAASqnP,iBAAiB5mT,KAAK0kT,WAC3C1kT,KAAK4nK,OAAOusQ,qBAAqB,IAAIjgQ,GACjCl0K,KAAK0kT,UAAUv7I,IAAMlsK,KAAK00J,GAAK,EAAG3xJ,KAAK0kT,UAAUjrJ,MAAO,EAAG,QAE3Dz5J,KAAK4nK,OAAOqoB,MAAQhzL,KAAKk2J,IAAInzJ,KAAK4wa,UACpC5wa,KAAK4nK,OAAOqoB,IAAMhzL,KAAKk2J,IAAInzJ,KAAK4wa,QAChC5wa,KAAK4nK,OAAOyoB,0BAGdrwL,KAAKo0a,gBACP,GAAC,CAAA5xa,IAAAA,kBAAA/D,MAEO,SACJm1a,EAAoBC,EAAkB3C,GACxClxa,KAAKq0a,YACDT,EAAa5za,KAAKs0a,iBAAmBt0a,KAAKu0a,iBAC1CV,EAAW7za,KAAKs0a,iBAAmBt0a,KAAKu0a,iBACxCrD,EAAYlxa,KAAKu0a,kBAMrBv0a,KAAKo0a,gBACP,GAEA,CAAA5xa,IAAAA,YAAA/D,MACQ,SAAUw1J,GAChB,IAAM2I,GAAc3I,EAAUh3J,KAAK00J,KAAO,EAAI10J,KAAK00J,IAEnD,OAAiB,GADDiL,EAAa3/J,KAAKwf,MAAMmgJ,IACnB3/J,KAAK00J,GAAK10J,KAAK00J,EACtC,GAAC,CAAAnvJ,IAAAA,8BAAA/D,MAEO,SAA4B+1a,GAClC,OAAO,EAAIv3a,KAAK00J,GAAK6iR,EAAcx0a,KAAK0B,QAAQgb,YAClD,GAAC,CAAAla,IAAAA,mBAAA/D,MAEO,SAAiBg2a,EAAmBC,GAC1C,IAAgBC,EAAuBF,EAAhC5yY,QAAwB+yY,EAAQH,EAAjB3yY,QAEhB+yY,EADiCH,EAAhC7yY,QACe8yY,EAChBG,EAFiCJ,EAAjB5yY,QAEA8yY,EAEtB,OAAO33a,KAAK04J,KAAKk/Q,EAASA,EAASC,EAASA,EAC9C,GAAC,CAAAtya,IAAAA,0BAAA/D,MA+CO,SAAwB6vI,EAAYD,GAC1C,IAAMulS,EAAa5za,KAAK+0a,4BAA4BzmS,GAC9CulS,EAAW7za,KAAK+0a,4BAA4B1mS,IAEtB,IAAxBruI,KAAK8xa,iBACP9xa,KAAK8xa,gBAAiB,EACtB9xa,KAAKu+B,cAAc,CAAC35B,KAAM,0BAG5B5E,KAAKoxa,gBAAgBwC,EAAYC,EAAU,EAC7C,GAAC,CAAArxa,IAAAA,gBAAA/D,MAEO,WACN,MAAqBuB,KAAK0kT,UAAnBjrJ,EAAK,EAALA,MAAO0P,EAAG,EAAHA,IACR6rQ,EAAMv7Q,EAAQz5J,KAAK+xL,MAAM4kN,IAC/B32Y,KAAKqxa,YA3jBe,KA2jBiBrxa,KAAK+xL,MAAM3jL,OAChDpO,KAAKi1a,cAAchmZ,KACdhyB,KAAKk3J,IAAI6gR,IACT/3a,KAAKk3J,IAAIgV,GAAOlsK,KAAKm3J,IAAI4gR,GAC1B,EACA,EACA/3a,KAAKm3J,IAAI+U,GACT,EACAlsK,KAAKm3J,IAAI4gR,IACR/3a,KAAKk3J,IAAIgV,GAAOlsK,KAAKk3J,IAAI6gR,GAC1B,EACN,GAAC,CAAAxya,IAAAA,UAAA/D,MAEO,SAAQ6vI,EAAYD,GAC1B,IAAO0jD,EAAS/xL,KAAT+xL,MACDmjP,EAAMlpN,GAAQ/8L,IAAIq/G,EAAID,EAAI,GAAGknB,eAAev1J,KAAKu0a,kBACjDY,EACFn1a,KAAK0kT,UAAUx7I,OAASjsK,KAAKk2J,IAAInzJ,KAAK4wa,QAAU5wa,KAAKqxa,YACzD6D,EAAI3/Q,eAAe4/Q,GAEnB,IAAM5za,EAASwwL,EAAMmlN,YACrB31Y,EAAO6qB,IAAI8oZ,EAAIx1Q,aAAa1/J,KAAKi1a,gBACjCljP,EAAM9L,eAAe5a,WAAW9pK,EAAQA,GACxCwwL,EAAM8lN,UAAUt2Y,EAAOrF,EAAGqF,EAAO8F,EAAG9F,EAAO+F,GAE3CtH,KAAKo0a,gBACP,GAAC,CAAA5xa,IAAAA,WAAA/D,MAEO,SAASq3S,GACf,KAAI5kP,YAAYtxD,MAAQI,KAAKoxD,UAtlBlB,KAulBPn0D,KAAK4f,IAAIi5R,EAAQj0Q,QAAU7hC,KAAK8wa,qBAAqBjvY,SAxlBxC,GA0lBb5kC,KAAK4f,IAAIi5R,EAAQh0Q,QAAU9hC,KAAK8wa,qBAAqBhvY,SA1lBxC,GAulBjB,CAOA,IAAOiwJ,EAAS/xL,KAAT+xL,MAEDwiH,EAAMxiH,EAAMgiN,2BACdhiN,EAAMqjP,OAAOt/H,EAAQj0Q,QAASi0Q,EAAQh0Q,UAE1C,GAAW,MAAPyyQ,EAAa,CACf,IAAOm5D,EAAgB37K,EAAMrwL,QAAtBgsW,aACP37K,EAAMrwL,QAAQgsW,aAAe,GAC7B37K,EAAMrwL,QAAQgsW,aAAeA,EAE7B1tW,KAAKoxa,gBAAgB,EAAG,EAAG,QAE3Br/O,EAAMxwL,OAAOgrW,aAAah4D,EAAIh1O,UAC9BwyH,EAAM8lN,UAAUtjG,EAAIh1O,SAASrjE,EAAGq4S,EAAIh1O,SAASl4D,EAAGktS,EAAIh1O,SAASj4D,GAEjE,GAAC,CAAA9E,IAAAA,cAAA/D,MAEO,WACN,IAAOszL,EAAS/xL,KAAT+xL,MAEDwiH,EAAMxiH,EAAMgiN,2BAA2B35I,GAAQnrO,IAAI,EAAG,IAC5D,GAAW,MAAPslR,EAAJ,CAIAxiH,EAAMxwL,OAAOgrW,aAAah4D,EAAIh1O,UAC9B,IAAMq5V,EAAa7mO,EAAMmlN,YACzB,EAAqBl3Y,KAAK0kT,UAAnBjrJ,EAAK,EAALA,MAAO0P,EAAG,EAAHA,IAKR6rQ,EAAMv7Q,EAAQs4B,EAAM4kN,IACpB5vY,EAAIilN,GAAQ/8L,IACdhyB,KAAKm3J,IAAI+U,GAAOlsK,KAAKm3J,IAAI4gR,GACzB/3a,KAAKk3J,IAAIgV,GACTlsK,KAAKm3J,IAAI+U,GAAOlsK,KAAKk3J,IAAI6gR,IACvBK,EAAKtua,EAAEk9J,IAAIswI,EAAIh1O,SAASupG,IAAI8vP,IAClCA,EAAWxsY,IAAIrlB,EAAEwuJ,eAAe8/Q,IAEhCtjP,EAAM8lN,UAAU+gB,EAAW18Z,EAAG08Z,EAAWvxZ,EAAGuxZ,EAAWtxZ,GAGvDtH,KAAKuya,cAASnoa,OAAWA,EAAWpK,KAAKiza,cAAc/pQ,OAASmsQ,GAClE,GAAC,CAAA7ya,IAAAA,gBAAA/D,MAyGO,SAAc8pC,GACpB,GAA6B,IAAzBvoC,KAAKooT,SAASxwT,OAChBoI,KAAK2xa,UAAY3xa,KAAKs1a,oBACjB,CACL,GAAIt1a,KAAK+wa,aAGP,OAFA/wa,KAAK2xa,UAAY,UACjB3xa,KAAK0B,QAAQw2B,oBAAoB,YAAal4B,KAAK4xa,eAGrD5xa,KAAK2xa,UAAa3xa,KAAKuxa,cAAmC,OAAnBvxa,KAAK2xa,UACxC,KACA3xa,KAAKu1a,cACTv1a,KAAKuxa,cAAe,EACpBvxa,KAAK0B,QAAQkC,iBACT,YAAa5D,KAAK4xa,cAAe,CAACjjY,SAAS,IAC/C3uC,KAAKmxa,eACDnxa,KAAKixa,iBAAiBjxa,KAAKooT,SAAS,GAAIpoT,KAAKooT,SAAS,IAEtDpoT,KAAKipT,WAA+B,MAAlBjpT,KAAK2xa,YACzB3xa,KAAKw1a,gBACAjtY,EAAMpG,SACRniC,KAAK+xL,MAAMrwL,QAAgB0wa,IAAa/na,MAAMmqB,QAAU,IAIjE,GAAC,CAAAhyB,IAAAA,cAAA/D,MAEO,SAAY8pC,GAClBvoC,KAAKqxa,YAAc,EACfrxa,KAAKipT,YACa,IAAjB1gR,EAAMhG,QAAgBgG,EAAMtG,SAAWsG,EAAMnG,SAC7CmG,EAAMrG,YACTliC,KAAKw1a,gBACJx1a,KAAK+xL,MAAMrwL,QAAgB0wa,IAAa/na,MAAMmqB,QAAU,GAE3Dx0B,KAAK0B,QAAQ2I,MAAM2tH,OAAS,UAC9B,GA8BA,CAAAx1H,IAAAA,0BAAA/D,MAMQ,SAAwB8pC,GAC9B,IAAIktY,GAAc,EAClB,OAAQltY,EAAM/lC,KACZ,IAAK,SACHxC,KAAKoxa,gBAAgB,EAAG,EAAGX,IAC3B,MACF,IAAK,WACHzwa,KAAKoxa,gBAAgB,EAAG,GAAG,KAC3B,MACF,IAAK,UACHpxa,KAAKoxa,gBAAgB,GAAIZ,GAA0B,GACnD,MACF,IAAK,YACHxwa,KAAKoxa,gBAAgB,EAAGZ,GAA0B,GAClD,MACF,IAAK,YACHxwa,KAAKoxa,iBAAiBZ,GAA0B,EAAG,GACnD,MACF,IAAK,aACHxwa,KAAKoxa,gBAAgBZ,GAA0B,EAAG,GAClD,MACF,QACEiF,GAAc,EAGlB,OAAOA,CACT,GAEA,CAAAjza,IAAAA,oBAAA/D,MAMQ,SAAkB8pC,GACxBvoC,KAAKw1a,gBACL,IAAIC,GAAc,EAClB,OAAQltY,EAAM/lC,KACZ,IAAK,UACHxC,KAAKsxa,QACD,GACA,IAGJ,MACF,IAAK,YACHtxa,KAAKsxa,QAAQ,EAtzBK,IAuzBlB,MACF,IAAK,YACHtxa,KAAKsxa,SAAQ,GAAwB,GACrC,MACF,IAAK,aACHtxa,KAAKsxa,QA5zBa,GA4zBc,GAChC,MACF,QACEmE,GAAc,EAGlB,OAAOA,CACT,KAAC,EA9wByB,CAAQnkR,IC7GvBokR,GAAgC,SAACp+a,GAAS,OACnDA,EAAI,GAAK,EAAIA,EAAIA,GAAU,EAAI,EAAIA,GAAKA,EAAlB,CAAmB,EAYhCq+a,GACT,SAAC7qY,EAAeC,GAAW,IAAE6qY,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAuBF,GAAa,OAC3C,SAACztY,GAAY,OAAK6C,GAASC,EAAMD,GAAS8qY,EAAK3tY,EAAK,GA8CjE4tY,GAAW,SAAC3+U,GAMvB,IALA,IAAM1c,EAAgC,GAChCk3H,EAAyB,GAE3BokO,EAAY5+U,EAAKnmE,aAEZr0B,EAAI,EAAGA,EAAIw6F,EAAKqrC,UAAU3qI,SAAU8E,EAAG,CAC9C,IAAMq5a,EAAW7+U,EAAKqrC,UAAU7lI,GACzB+B,EAAiBs3a,EAAjBt3a,MAAO2gQ,EAAU22K,EAAV32K,OACRw2K,EAAOG,EAASH,MAAQF,GACxBl/Y,EAAQm/Y,GAAYG,EAAWr3a,EAAOm3a,GAE5Cp7V,EAAO19E,KAAK05B,GACZk7K,EAAQ50M,KAAKsiQ,GACb02K,EAAYr3a,EAGd,OAvDE,SAAC+7E,EAA+Bk3H,GAC9B,IAAwB/gE,EAClBmzH,EAAQpyD,EAAQn1M,KADEo0I,EACgB,EADA,SAAClyI,GAAa,OAAKkyI,GAAOlyI,CAAK,IAGvE,OAAO,SAACwpC,GACNA,EAAOiqH,GAAMjqH,EAAM,EAAG,GACtBA,GAAQ67N,EAAMA,EAAMlsQ,OAAS,GAC7B,IAAM8E,EAAIonQ,EAAMtgK,WAAU,SAACpiG,GAAG,OAAKA,GAAO6mC,CAAI,IAExC6C,EAAQpuC,EAAI,EAAI,EAAIonQ,EAAMpnQ,EAAI,GAC9BquC,EAAM+4N,EAAMpnQ,GAElB,OAAO89E,EAAO99E,IAAIurC,EAAO6C,IAAUC,EAAMD,GAC3C,CACF,CAyCKkrY,CAASx7V,EAAQk3H,EAC1B,2UC3DMukO,GAASJ,GAAS,CACtB9kZ,aAAc,EACdwxG,UAAW,CACT,CAAC68H,OAAQ,EAAG3gQ,OAAQ,GACpB,CAAC2gQ,OAAQ,EAAG3gQ,OAAQ,GACpB,CAAC2gQ,OAAQ,EAAG3gQ,MAAO,GACnB,CAAC2gQ,OAAQ,EAAG3gQ,MAAO,GACnB,CAAC2gQ,OAAQ,EAAG3gQ,MAAO,GACnB,CAAC2gQ,OAAQ,GAAI3gQ,MAAO,MAIlBy3a,GAAOL,GAAS,CACpB9kZ,aAAc,EACdwxG,UAAW,CACT,CAAC68H,OAAQ,EAAG3gQ,MAAO,GACnB,CAAC2gQ,OAAQ,EAAG3gQ,MAAO,GACnB,CAAC2gQ,OAAQ,EAAG3gQ,MAAO,GACnB,CAAC2gQ,OAAQ,EAAG3gQ,MAAO,MAOV03a,GAAuB,kBAM9BC,GAA4B,CAAC,QAAS,QAAS,OAAQ,QACvDC,GAAsB,CAAC,SAAU,GAAI,UAyB9BC,GAED,OAICC,GAEA,QAFAA,GAGC,SAGDC,GAGL,OAGKC,GAAwB,WACnC,MAAO,CACLlL,MACI,CAACvY,GAAiBlC,GAxDK,GAwDuB,SAElDgb,SAAU,CAACC,KAAM,CAAC,OAEtB,EAEM2K,GAA2B,WAC/B,MAAO,CACLnL,MACI,CAACvY,GAAiBlC,GAhES,GAgEuB,SAEtDgb,SAAU,CAACC,KAAM,CAAC,OAEtB,EAEa4K,GAAyB,WACpC,IAAMC,EACF7lB,GAAiBolB,IAAsB,GAClC7kB,MAEH73P,EAAQ25P,GAAcwjB,EAAa,IACnCztQ,EAAMiqP,GAAcwjB,EAAa,IAEvC,OAAO,SAACl1a,GACN,IAAMwnK,EAASxnK,EAAQ07Z,IAAQhF,sBAE/B,MAAO,CACLmT,MAAO,CAAC9xQ,EAAO0P,EAAK2nP,GAAW5nP,EAAQ,MACvC4iQ,SAAU,CAACC,KAAM,CAAC,KAAM,KAAMjb,GAAW,IAAK,OAElD,CACF,CAhBsC,GAkBhC+lB,GAA2B,SAACn1a,GAEhC,IAAMwnK,EApFqB,IAoFWxnK,EAAQ07Z,IAAQn3O,eAAe/c,OAErE,MAAO,CACLqiQ,MAAO,CACLza,IAAY3nW,IAAU,OACtB2nW,GAAW7zZ,KAAK00J,GAAK,EAAG,OACxBm/P,GAAW5nP,EAAQ,MAErB4iQ,SAAU,CAACC,KAAM,CAAC,KAAM,KAAM,OAElC,EAEM+K,GAA2B,SAACp1a,GAChC,IAAMq1a,EAAkBJ,GAAsBj1a,GAExCs1a,EADY,IAAIlJ,GAAe,GAAIiJ,GACT9wK,WAAW,GAE3C,MAAO,CACLslK,MAAO,CACLza,GAAW3nW,IAAU,OACrB2nW,GAAW7zZ,KAAK00J,GAAK10J,KAAK00J,GAAK,EAAG,OAClCm/P,GAAWkmB,EAAe,MAE5BlL,SAAU,CAACC,KAAM,CAAC,KAAM,KAAM,OAElC,EAEakL,GAAyB,SAACv1a,GACrC,IAAM20J,EAAS30J,EAAQ07Z,IAAQpyP,YAAYS,UAAU,IAAI3E,IAEzD,MAAO,CACLykQ,MAAO,CACLza,GAAWz6P,EAAOn6J,EAAG,KACrB40Z,GAAWz6P,EAAOhvJ,EAAG,KACrBypZ,GAAWz6P,EAAO/uJ,EAAG,MAEvBwka,SAAU,CAACC,KAAM,CAAC,KAAM,KAAM,OAElC,EAEMmL,GAAUj6a,KAAK00J,GAAK,EACpBwlR,GAAWl6a,KAAK00J,GAAK,EACrBylR,GAAaF,GAAU,EACvBG,GAAM,EAAMp6a,KAAK00J,GAEV2lR,GAAYx2a,OAAO,YACnBsxa,GAActxa,OAAO,cACrBy2a,GAAiBz2a,OAAO,iBACxB02a,GAA2B12a,OAAO,2BAClC22a,GAA4B32a,OAAO,4BAE1C42a,GAA0B52a,OAAO,0BACjC62a,GAAc72a,OAAO,cACrB82a,GAAyB92a,OAAO,yBAEhC+2a,GAAY/2a,OAAO,YACnBg3a,GAAmBh3a,OAAO,mBAE1Bi3a,GAAuBj3a,OAAO,uBAC9Bk3a,GAAqBl3a,OAAO,qBAC5Bm3a,GAA4Bn3a,OAAO,4BACnCo3a,GAAoBp3a,OAAO,oBAE3Bq3a,GAAiBr3a,OAAO,iBACxBs3a,GAAct3a,OAAO,cACrBu3a,GAAev3a,OAAO,eACtBw3a,GAAoBx3a,OAAO,oBAE3By3a,GAAmBz3a,OAAO,mBAC1B03a,GAAmB13a,OAAO,mBAC1B23a,GAAoB33a,OAAO,oBAE3B43a,GAAsB53a,OAAO,sBAC7B63a,GAAsB73a,OAAO,sBAC7B83a,GAAsB93a,OAAO,sBAC7B+3a,GAAsB/3a,OAAO,+VC/L7Bg4a,GACE,OAIFC,GACE,OADFA,GAGG,QAGIC,GAA6Bl4a,OAAO,6BAEpCm4a,GAA0Bn4a,OAAO,0BACjCo4a,GAAwBp4a,OAAO,wBAEtCq4a,GAAuBr4a,OAAO,uBAC9Bs4a,GAAct4a,OAAO,cACrBu4a,GAAmBv4a,OAAO,mBAC1Bw4a,GAAqBx4a,OAAO,qBAE5By4a,GAAyBz4a,OAAO,yBAEhC04a,GAAc14a,OAAO,uVC5BrB24a,GAAyBx8a,KAAK00J,GAAK,GAGnC+nR,GAAyB,CAC7BnO,MACI,CAACvY,GAAiBlC,GAAW2oB,GAAwB,SAEzD3N,SAAU,CAACC,KAAM,CAAC,QAGd4N,GAAuB74a,OAAO,uBAC9B84a,GAAoB94a,OAAO,oBAC3B+4a,GAAoB/4a,OAAO,oBAC3Bg5a,GAAkBh5a,OAAO,kBCblBg1X,GbsBkB,SAC3BA,aACIikD,EAA6B,cAAA/9Z,EAAAA,EAAAA,GAAA,WAAnC,mBAkBqE,OAlBrEvR,EAAAA,KAAAA,+BACSyR,GAAgB,IAAIihB,IACpBjhB,EAAAA,GAAsB,SAACqrG,GAC5BA,EAAUhlH,SAAQ,SAACklH,GAGXA,aAAoBuyT,gBACJ,cAAlBvyT,EAAS7iH,OACV6iH,EAA4BwyT,WAAW13a,SAAQ,SAACkX,GAC/CyC,EAAKokZ,IAAa7mZ,EACpB,IACCguG,EAA4BE,aAAaplH,SAAQ,SAACkX,GACjDyC,EAAKqkZ,IAAgB9mZ,EACvB,IACAyC,EAAKmhZ,MAET,GACF,EACOnhZ,EAAAA,GAAc,IAAIirG,iBAAiBjrG,EAAKkkZ,KAAoB,CA4KrE,CADG,OACF72Z,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,oBAAA/D,MA1KC,WACEyoI,GAAAA,EAAAA,EAAAA,WAAAA,oBAAAA,MAAAA,KAAAA,MAEA,IAAK,IAAIxqI,EAAI,EAAGA,EAAIsD,KAAK4d,SAAShmB,SAAU8E,EAC1CsD,KAAKsga,IAAatga,KAAK4d,SAASlhB,IAGlC,IAAOw9a,EAAY/ka,KAAZ+ka,SAES,MAAZA,EACFl6a,KAAKqga,IAAWz4S,QAAQ5nH,KAAM,CAAC6nH,WAAW,IAE1C7nH,KAAKqga,IACD6Z,EAASC,gBAAgBn6a,KAAMA,KAAKoga,IAE5C,GAAC,CAAA59Z,IAAAA,uBAAA/D,MAED,WACEyoI,GAAAA,EAAAA,EAAAA,WAAAA,uBAAAA,MAAAA,KAAAA,MAEA,IAAOgzS,EAAY/ka,KAAZ+ka,SAES,MAAZA,EACFl6a,KAAKqga,IAAW75U,aAEhB0zV,EAASE,kBAAkBp6a,KAAKqga,IAEpC,GAAC,CAAA79Z,IAAAA,EAAA/D,MAED,SAAQwpC,EAAc7qC,GACpB8pI,GAAAA,EAAAA,EAAAA,WAAM6+Q,GAAK,gBAAE99W,EAAM7qC,GACnB,IAAM20L,EAAQ/xL,KAAKo9Z,IACZlH,EAAsBnkO,EAAtBmkO,mBACDtuP,EAASmqB,EAAMi5C,YAEjBj5C,EAAMyzN,iBACRzzN,EAAMsoP,eAAezyQ,EAAOroG,UAC5B22V,EAAmB7hT,WAAWhqG,MAAM29C,QAAU,GAC9CkuW,EAAmB1wZ,OAAOusL,EAAOnqB,GAErC,GAEA,CAAAplK,IAAAA,gBAAA/D,MAMA,SAAc04D,GACZ,IAAMgjW,EAAUn6Z,KAAKmga,IAAapwY,IAAIonC,EAAOh+D,MAE9B,MAAXgha,IAIJA,EAAQtvS,eAAe1zD,EAAOoI,UAC9B46V,EAAQ3G,aAAar8V,EAAO4xG,QAC5B/oK,KAAKq9Z,MACP,GAEA,CAAA76Z,IAAAA,eAAA/D,MAIA,SAAatF,GACX,IAAMgha,EAAUn6Z,KAAKmga,IAAapwY,IAAI52B,GACtC,GAAe,MAAXgha,EACF,OAAO,KAGT,IAAM56V,EAAWo+V,GAAWxD,EAAQ56V,UAC9BwpG,EAAS40P,GAAWxD,EAAQpxP,QAC5B0qP,EAAe0G,EAAQ1G,aAEvB1hO,EAAQ/xL,KAAKo9Z,IACbx1P,EAASmqB,EAAMi5C,YACfrgE,EAAS,IAAI7D,GAEnB6D,EAAOiM,sBAAsBujP,EAAQlyP,aACrC0C,EAAO2vQ,QAAQ1yQ,GAEf,IAAM+lB,EAAYoE,EAAM5jL,MAAQ,EAC1By/K,EAAamE,EAAM3jL,OAAS,EAElCu8J,EAAOzuK,EAAKyuK,EAAOzuK,EAAIyxL,EAAaA,EACpChjB,EAAOtjK,GAAMsjK,EAAOtjK,EAAIumL,EAAcA,EAEtC,IAAM2sP,EACF5c,GAAW,IAAI72P,GAAQ6D,EAAOzuK,EAAGyuK,EAAOtjK,EAAGsjK,EAAOrjK,IAEtD,OAAK+P,OAAOkxK,SAASgyP,EAAer+a,IAC/Bmb,OAAOkxK,SAASgyP,EAAelza,GAI7B,CAACk4D,SAAAA,EAAUwpG,OAAAA,EAAQwxQ,eAAAA,EAAgB9mB,aAAAA,GAHjC,IAIX,GAEA,CAAAjxZ,IAAAA,6BAAA/D,MAQA,SAA2B+7a,EAAgBC,GAEzC,IAAM1oP,EAAQ/xL,KAAKo9Z,IACblD,EAAcnoO,EAAMqjP,OAAOoF,EAAQC,GAEnClmI,EAAMxiH,EAAMgiN,2BAA2BmmB,GAC7C,GAAW,MAAP3lH,EACF,OAAO,KAGTisH,GAAa9kQ,KAAKq2B,EAAMxwL,OAAO0mK,aAAan4B,SAC5C,IAAMvwE,EAAWo+V,GAAWppH,EAAIh1O,SAASsoG,aAAa24P,KAEtDC,GAAmBr6O,gBAAgBo6O,IACnC,IAAMz3P,EACF40P,GAAWppH,EAAIxrI,OAAOka,kBAAkBw9O,KAExChhQ,EAAK,KAKT,OAJc,MAAV80I,EAAI90I,KACNA,EFtGkB,SAACt4J,GACzB,MAAO,CACLI,EAAGJ,EAAEjL,EACLiL,EAAGA,EAAEE,EACL5G,SAAQ,WACN,MAAO,GAAP,OAAUT,KAAKuH,EAAC,YAAIvH,KAAKmH,EAC3B,EAEJ,CE8Fauza,CAAWnmI,EAAI90I,KAGf,CAAClgG,SAAUA,EAAUwpG,OAAQA,EAAQtJ,GAAIA,EAClD,GAAC,CAAAj9J,IAEO89Z,GAAW7ha,MAAZ,SAAcgb,GACnB,GAAMA,aAAgBuuD,aACiB,IAAjCvuD,EAAKuhN,KAAKxuN,QAAQ,WADxB,CAKA,IAAI2tZ,EAAUn6Z,KAAKmga,IAAapwY,IAAItW,EAAKuhN,MAE1B,MAAXm/L,EACFA,EAAQwgB,aAERxgB,EAAU,IAAI7G,GAAQ,CACpBn6Z,KAAMsgB,EAAKuhN,KACXz7J,SAAU9lD,EAAKsqC,QAAQwb,SACvBwpG,OAAQtvJ,EAAKsqC,QAAQglH,SAEvB/oK,KAAKmga,IAAalxY,IAAIxV,EAAKuhN,KAAMm/L,GACjCn6Z,KAAKo9Z,IAAQwd,WAAWzgB,IAE1Bn6Z,KAAKo9Z,IAAQhnB,cACf,GAAC,CAAA5zY,IAEO+9Z,GAAc9ha,MAAf,SAAiBgb,GACtB,GAAMA,aAAgBuuD,YAAtB,CAIA,IAAMmyV,EAAUn6Z,KAAKmga,IAAapwY,IAAItW,EAAKuhN,MAEtCm/L,IAIDA,EAAQ0gB,cACV76a,KAAKo9Z,IAAQ0d,cAAc3gB,GAC3Bn6Z,KAAKmga,IAAa3iY,OAAO/jB,EAAKuhN,OAEhCh7N,KAAKo9Z,IAAQhnB,eACf,KAAC,EA7LgC,CAAQtgB,GAiDzC9kT,EAhDQmvV,GAAW,EACXC,GAAiB,EAgBjBC,GA+BPta,KA+IH,OAAOg0B,CACT,CazNkCgB,C3BqCH,SAC3BjlD,eACIklD,EAA6B,cAAAh/Z,EAAAA,EAAAA,GAAA,WAAnC,mBAYwE,OAZxEvR,EAAAA,KAAAA,+BACWyR,QAA4B9R,EAC5B8R,EAAAA,GAA+C,KACjDA,EAAAA,GAAmB,IAAI+3P,GACvB/3P,EAAAA,GAAiC,KAGxCA,EAAAA,YAA2B,KAG3BA,EAAAA,YAAsB,QAEwBA,EAAAA,MAAgB,QAAQ,CA8KxE,CADG,OA1KD3S,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,QAAAutB,IACA,WACE,OAAO/vB,KAAK2wZ,GACd,GAAC,CAAAnuZ,IAAAA,oBAAAutB,IAED,WACE,OAAO/vB,KAAK+kB,MAAQ/kB,KAAK+kB,MAAMwpY,MAAwB,EACzD,GAEA,CAAA/rZ,IAAAA,mBAAAutB,IAIA,WACE,OAAO/vB,KAAK0wZ,GACd,GAAC,CAAAluZ,IAAAA,EAAA/D,MAcM,WAAoB,WACzB,OAAO,WACLkwE,EAAK0uV,KACP,CACF,GAAC,CAAA76Z,IAAAA,gBAAA/D,MAAAA,WAAA,mBAED,WAAoB2zT,GAAW,MAAA6oH,EAAA55Q,EAAA,OAAAy9N,EAAAA,UAAA,iEAES,OAFPl6X,EAAAA,EAAAA,OAAAA,QAAAA,IAAAA,EAAAA,GAAAA,EAAAA,GAAe,YAExCq2a,EAAcj7a,KAAKywZ,IAAanhY,EAAAA,KAAAA,EACP,IAAIghB,SAC/B,SAACG,GAAO,OAAK++B,EAAKqhV,IAAgBjlV,KAAKwmP,EAAK3hR,EAAQ,IAAC,OAD5C,GAAP4wH,EAAO,OAER45Q,GAAgB55Q,EAAO,CAAA/xI,EAAAA,KAAAA,EAAA,+BACnB,MAAI,OAOoB,OAJjC+xI,EAAQ5C,SAAWvP,GACnBmS,EAAQlD,MAAQ9T,GAChBgX,EAAQjD,MAAQ/T,GAChBgX,EAAQtC,OAAQ,EAChBsC,EAAQpC,SAAS0xG,SAAW/rQ,EAAK,kBAE1B,IAAIs2a,GAAmBl7a,KAAK4wZ,MAAuBvvP,IAAQ,iDACnE,mDAlBA5iK,IAkBA,CAAA+D,IAAAA,UAAA/D,MAAAA,WAAA,mBAED,WAAcotX,GAAmC,6EACd,GAAjC3kP,GAAAA,EAAAA,EAAAA,WAAAA,UAAAA,MAAAA,KAAAA,KAAc2kP,IAEVA,EAAkBz9U,IAAI,eAAgB,CAAFkoH,EAAAA,KAAAA,GAAA,MAIpB,IAHZ6kR,EAAwBn7a,KAAKu9Z,IAAkBiC,iBAC/B,IAChBz6Y,EAAQ/kB,KAAK2wZ,IACZvgB,EAAepwY,KAAfowY,YAEM,MAATrrX,EAAa,CAAAuxI,EAAAA,KAAAA,GAAA,aAAAA,EAAAA,KAAAA,EACTvxI,EAAMmpY,IAAgB9d,GAAa,OACzCpwY,KAAKq9Z,MACLr9Z,KAAKu+B,cAAc,IAAI43E,YAAY,oBAAoB,QAEzDglU,EAAsB,GAAK,YAGzBtvD,EAAkBz9U,IAAI,iBACtBy9U,EAAkBz9U,IAAI,SAAQ,CAAAkoH,EAAAA,KAAAA,GAAA,SAC3Bt2J,KAAKssE,OAAQ,CAAFgqF,EAAAA,KAAAA,GAAA,yCAGVy7B,EAAQ/xL,KAAKo9Z,KACbrG,iBACNhlO,EAAMilO,oBACNjlO,EAAMmlO,eACNl3Z,KAAK62Z,IAAW5S,WAAW9M,gBAC3Bn3Y,KAAKq9Z,MAAgB,iDAExB,mDA/BA5+Z,IA+BA,CAAA+D,IAEA86Z,GAAY7+Z,MAAb,WACEyoI,GAAAA,EAAAA,EAAAA,WAAMo2R,GAAY,iBAElB,IAAO2d,EAAej7a,KAAKo9Z,IAApB6d,YAEP,GAAmB,MAAfA,EAAqB,CACvB,IAAO/8B,EAAwB+8B,EAAxB/8B,qBAEqB,MAAxBA,GACA+8B,IAAgBj7a,KAAKywZ,MACvBzwZ,KAAK2wZ,IACD,IAAI/B,GAAM1Q,EAAsBl+Y,KAAK4wZ,OACzC5wZ,KAAK0wZ,IACD3iW,KAAK4yC,MAAM5yC,KAAKC,UAAUkwV,EAAqB9wF,QAMjD,aAAc6tH,EAAYh8Q,UAC5Bj/J,KAAKypX,cAAc,eAIvBzpX,KAAKywZ,IAAgBwqB,CACvB,GAEA,CAAAz4a,IAAAA,cAAA/D,MAAAA,WAAA,mBACA,WAAkBwC,GAA4B,8EAClB,OAApB8wL,EAAQ/xL,KAAKo9Z,IAAO,kBACnB,IAAI9sX,QAAO,8BAAO,WAAOG,EAAS8tC,GAAM,2EAqB5C,OAnBKhsE,EAAO,CACX62X,QAAQ,EACRE,aAAa,EACbx+L,eAAgB3hJ,IAChBogV,yBAAyB,EACzB6xC,cAAc,GAGhB78a,OAAOmgB,OAAOnM,EAAMtR,GAEpBsR,EAAK6jK,WAAa2b,EAAM3b,WACxB7jK,EAAK8oa,mBAAoB,EAEnB53R,EAASsuC,EAAMtuC,OACjB95E,GAAU,EAEA,MAAV85E,IACF95E,EAAU85E,EAAO95E,QACjB85E,EAAO95E,SAAU,GAClBm3F,EAAAA,KAAAA,EAEK12C,EAAKumS,IAAS1C,MAA4B,QAG3C,IAAItmB,IACAvkU,UACG,SAACwkU,GAAW,OACR,IAAIqI,GAAuCrI,EAAO,IACzDjnS,MACLoxF,EAAMhtK,OACN,SAACqoS,GACC,OAAO38Q,EAAQ,IAAIisR,KACf,CAACnqT,EAAK62X,OAASh8E,EAAer/P,KAAKC,UAAUo/P,IAAQ,CACnDxoT,KAAM2N,EAAK62X,OAAS,2BACA,qBAE5B,IACA,WACE,OAAO7qT,EAAO,qBAChB,GACAhsE,GAEU,MAAVkxI,IACFA,EAAO95E,QAAUA,GAClB,4CACF,qDA/CiB,KA+ChB,gDACH,mDAnDDlrE,IAmDC,CAAA+D,IAAAA,oBAAA/D,MAED,SAAkB+7a,EAAgBC,GAChC,IAAM1oP,EAAQ/xL,KAAKo9Z,IACbke,EAAYvpP,EAAMqjP,OAAOoF,EAAQC,GAGvC,OAFA1oP,EAAMrG,UAAUq0H,cAAcu7H,EAAWvpP,EAAMi5C,aAExChrO,KAAK2wZ,IAAStC,IAAoBt8N,EAAMrG,UACjD,KAAC,EAzLgC,CAAQoqM,GA4ClC9kT,EA3CG2/U,GAAM,EACNF,GAAY,EACdI,GAAc,EACdH,GAwCAE,KAgJV,OArLEmP,GAAAA,CADCrha,GAAS,CAACkG,KAAM7G,OAAQm4J,UAAW,kBAAgB,kCAIpD6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAM7G,OAAQm4J,UAAW,iBAAe,kCAGL6pQ,GAAAA,CAA7Crha,GAAS,CAACkG,KAAM7G,OAAQm4J,UAAW,WAAS,4BAgLxC8kR,CACT,C2BpOkDO,CDsBtB,SACxBzlD,aACI0lD,EAA0B,cAAAx/Z,EAAAA,EAAAA,GAAA,WAAhC,mBAkEI,OAlEJvR,EAAAA,KAAAA,+BAEEyR,YAAsB,EAGtBA,EAAAA,gBA5BqC,IAiCrCA,EAAAA,kBAA4B,OAErBA,EAAAA,GAAyBg1C,YAAYtxD,MACrCsc,EAAAA,GAAsB,EA6C7BA,EAAAA,GAAoB,SAACqsB,GACdrsB,EAAK8pS,YAIkB,qBAAxBz9Q,EAAM/G,OAAOhgC,SACf0a,EAAKy9Z,IAAwBzoX,YAAYtxD,MAE7C,EAAE,CASJ,CADG,OACF2J,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,oBAAA/D,MA5DC,WACEyoI,GAAAA,EAAAA,EAAAA,WAAAA,oBAAAA,MAAAA,KAAAA,MACAlnI,KAAK4D,iBACD,gBAAiB5D,KAAK85a,KAC1B95a,KAAK25a,IAAwBzoX,YAAYtxD,KAC3C,GAAC,CAAA4C,IAAAA,uBAAA/D,MAED,WACEyoI,GAAAA,EAAAA,EAAAA,WAAAA,uBAAAA,MAAAA,KAAAA,MACAlnI,KAAKk4B,oBACD,gBAAiBl4B,KAAK85a,KAC1B95a,KAAK25a,IAAwBzoX,YAAYtxD,KAC3C,GAAC,CAAA4C,IAAAA,UAAA/D,MAED,SAAQotX,GACN3kP,GAAAA,EAAAA,EAAAA,WAAAA,UAAAA,MAAAA,KAAAA,KAAc2kP,GAEVA,EAAkBz9U,IAAI,gBACxBpuC,KAAK25a,IAAwBzoX,YAAYtxD,MAE7C,GAAC,CAAA4C,IAAAA,EAAA/D,MAED,SAAoB4L,GAClBrK,KAAK45a,IAAqBvva,EAAM,EAClC,GAAC,CAAA7H,IAEAujZ,GAAKtnZ,MAAN,SAAQwpC,EAAc7qC,GAGpB,GAFA8pI,GAAAA,EAAAA,EAAAA,WAAM6+Q,GAAK,gBAAE99W,EAAM7qC,GAEd4C,KAAKgmT,YAAehmT,KAAKy9Z,QAC1Bz9Z,KAAK62Z,IAAW7vL,aADpB,CAKA,IAAMy0M,EAAgBx+a,KAAKiuC,IACvB9tC,EAAO6qC,EAAOjoC,KAAK25a,IAAwB35a,KAAK07a,iBAEhDD,EAAgB,IAClBz7a,KAAKo9Z,IAAQzmB,IAAM32Y,KAAK02Y,kBACpB12Y,KAAK45a,IAAqB6B,EAAgB,MAElD,GAAC,CAAAj5a,IAAAA,oBAAAutB,IAYD,WACE,OAAO/vB,KAAKo9Z,IAAQzmB,GACtB,GAAC,CAAAn0Y,IAAAA,yBAAA/D,MAED,WAAgC,IAATg7J,EAAQ,UAAH,6CAAG,EAC7Bz5J,KAAKo9Z,IAAQzmB,IAAMl9O,CACrB,KAAC,EA1E6B,CAAQq8N,GAqCtC9kT,EAzBQ2oW,GAAoB,EACpBC,GAwBPC,KAwCH,SAnBGC,GAxDD/Z,GAAAA,CADCrha,GAAS,CAACkG,KAAMsW,QAASg7I,UAAW,iBAAe,iCAIpD6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAMyS,OAAQ6+I,UAAW,uBAAqB,sCAMzD6pQ,GAAAA,CAHC11Z,GACG,CAACwha,WAAY6N,GAAwB5J,cAAe+J,KACvDn7a,GAAS,CAACkG,KAAM7G,OAAQm4J,UAAW,yBAAuB,wCAoEtDslR,CACT,CCtGkEG,CpEUlC,SAC5B7lD,aACI8lD,EAA8B,cAAA5/Z,EAAAA,EAAAA,GAAA,WAApC,mBAqB2E,OArB3EvR,EAAAA,KAAAA,+BAEEyR,iBAAgC,KAGhCA,EAAAA,YAA2B,KAG3BA,EAAAA,gBA5B6B,EA+B7BA,EAAAA,eA9B4B,EAmC5BA,EAAAA,SAlCqB,EAoCZA,EAAAA,GAAyC,KACzCA,EAAAA,GAAqC,KAEvCA,EAAAA,GAA6D,KAAK,CA+E3E,CADG,OACF3S,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,UAAA/D,MA7EC,SAAQotX,GACN3kP,GAAAA,EAAAA,EAAAA,WAAAA,UAAAA,MAAAA,KAAAA,KAAc2kP,GAEVA,EAAkBz9U,IAAI,qBACxBpuC,KAAKo9Z,IAAQpmB,mBAhDO,GAgDYh3Y,KAAK+2Y,iBACrC/2Y,KAAKq9Z,OAGHxxC,EAAkBz9U,IAAI,oBACxBpuC,KAAKo9Z,IAAQye,kBAAkB77a,KAAKi6Z,gBACpCj6Z,KAAKq9Z,OAGHxxC,EAAkBz9U,IAAI,cACxBpuC,KAAKo9Z,IAAQ1d,SAAW1/Y,KAAK0/Y,SAC7B1/Y,KAAKq9Z,QAGFxxC,EAAkBz9U,IAAI,qBACtBy9U,EAAkBz9U,IAAI,iBACvBpuC,KAAK09Z,OACP19Z,KAAKo2X,KAET,GAAC,CAAA5zX,IAAAA,iBAAA/D,MAED,WACE,OAAOuB,KAAKo9Z,IAAQjG,aAAa5xW,KAAO,CAC1C,GAAC,CAAA/iD,IAAAA,EAAA/D,MAAAA,WAAA,mBAED,gGAQqB,GAPZq9a,EAAiC97a,KAAjC87a,YAAaC,EAAoB/7a,KAApB+7a,iBAEkB,MAAlC/7a,KAAKq2X,MACPr2X,KAAKq2X,MACLr2X,KAAKq2X,IAA4B,MAKf,OAFbytB,EAAgB9jZ,KAAK62Z,IAArB/S,cAEiB,CAAAx0X,EAAAA,KAAAA,EAAA,uCAIwC,OAA1D0sZ,EAAoBh8a,KAAKu9Z,IAAkBiC,gBAAelwY,EAAAA,KAAAA,EAAAA,EAAAA,KAAAA,EAIpDw0X,EAAam4B,gCACf9mD,GAAe2mD,GACfC,GACA,SAAClwW,GAAgB,OAAKmwW,EAAkB9pR,GAAMrmF,EAAU,EAAG,GAAG,IAAC,OAAAqwW,EAAAA,EAAAA,KAJhEx5B,EAAc,EAAdA,eAAgBC,EAAM,EAANA,OAMnB3iZ,KAAKk2X,MAA4BwsB,IACnC1iZ,KAAKk2X,IAA0BwsB,EAC/B1iZ,KAAKu+B,cAAc,IAAI43E,YAAY,wBAKnCn2G,KAAKm2X,IAHO,MAAVwsB,EAIEA,EAAOxpZ,OAASupZ,EAAevpZ,KAAOupZ,EAAiBC,EAEhC,KAG7B3iZ,KAAKo9Z,IAAQnlB,wBACTj4Y,KAAKk2X,IAAyBl2X,KAAKm2X,KACvCn2X,KAAKo9Z,IAAQ7+X,cAAc,CAAC35B,KAAM,kBAAkB0qB,EAAAA,KAAAA,GAAA,iBAAAA,EAAAA,KAAAA,GAAAA,EAAAA,GAAAA,EAAAA,MAAAA,KAEhDA,EAAAA,cAA0BxxB,OAAK,CAAAwxB,EAAAA,KAAAA,GAAA,MACgB,MAAjDtvB,KAAKo9Z,IAAQnlB,wBAAwB,KAAM,MAAM,aAI5B,OAJ4B3oX,EAAAA,KAAAA,GAInD0sZ,EAAkB,GAAK,6EAE1B,kDAjDAv9a,MAiDA,EAnGiC,CAAQq3X,GAoDrC9kT,EAlCKklT,GAAsB,EACtBC,GAAkB,EAEpBE,GA+BFD,KAkDR,OApGE2pC,GAAAA,CADCrha,GAAS,CAACkG,KAAM7G,OAAQm4J,UAAW,uBAAqB,uCAIzD6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAM7G,OAAQm4J,UAAW,kBAAgB,kCAIpD6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAMyS,OAAQ6+I,UAAW,sBAAoB,sCAIxD6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAMyS,OAAQ6+I,UAAW,qBAAmB,qCAMvD6pQ,GAAAA,CAHCrha,GAAS,CACRkG,KAAMyS,UACN,+BAuFGuka,CACT,CoElHIO,CHqOyB,SACzBrmD,qCACIsmD,EAA2B,cAAApga,EAAAA,EAAAA,GAAA,WAAjC,mBAqlBI,OArlBJvR,EAAAA,KAAAA,+BAEEyR,gBAA0B,EAQ1BA,EAAAA,YAAsBi6Z,GAStBj6Z,EAAAA,aAzN0B,iBAkO1BA,EAAAA,YAjO0B,OAyO1BA,EAAAA,eAAyB,OAQzBA,EAAAA,eAAyB,OAQzBA,EAAAA,eAAyB,OAMzBA,EAAAA,eAAyB,OAGzBA,EAAAA,2BA3PgD,IA8PhDA,EAAAA,kBACIo6Z,GAGJp6Z,EAAAA,uBACIq6Z,GAGJr6Z,EAAAA,iBAA2B,EAG3BA,EAAAA,YAA2Bs6Z,GAG3Bt6Z,EAAAA,aAAuB,EAGvBA,EAAAA,YAAsB,EAGtBA,EAAAA,YAAsB,EAGtBA,EAAAA,mB/C5U8B,G+C8UrBA,EAAAA,GACLA,EAAKksD,WAAY0hD,cAAc,uBAC1B5tG,EAAAA,GACLA,EAAKksD,WAAY0hD,cAAc,WAC1B5tG,EAAAA,GAA6C,CACpDA,EAAKksD,WAAY0hD,cAAc,YAC/B5tG,EAAKksD,WAAY0hD,cAAc,aAExB5tG,EAAAA,GACLA,EAAKksD,WAAY0hD,cAAc,eAE1B5tG,EAAAA,GAAsB,EACtBA,EAAAA,GAA8BitC,IAC9BjtC,EAAAA,IAAuB,EACvBA,EAAAA,IAAyB,EAEzBA,EAAAA,GAAc,IAAIy0Z,GACvBz0Z,EAAKkhZ,IAAQx1P,OAA6B1rJ,EAAKihZ,IAC/CjhZ,EAAKkhZ,KAEAlhZ,EAAAA,GAAmB,IAAIo5Q,GACvBp5Q,EAAAA,IAAgB,EAChBA,EAAAA,IAAiB,EACjBA,EAAAA,IAAsB,EAkd/BA,EAAAA,GAAc,YAA0B,IAAxB1a,EAAM,EAANA,OACd0a,EAAKy7Z,MACLz7Z,EAAKmhZ,MAED77Z,IAAWkva,KACbx0Z,EAAK87Z,KAAsB,EAC3B97Z,EAAKw7Z,OAGPx7Z,EAAKqiB,cAAc,IAAI43E,YACnB,gBAAiB,CAAC30E,OAAQ,CAAChgC,OAAAA,KACjC,EAEA0a,EAAAA,GAAqB,SAACqsB,GACD,yBAAfA,EAAM3jC,KACRsX,EAAKghZ,IAAY/8V,UAAU/zC,IAAI,oBAE/BlQ,EAAKghZ,IAAY/8V,UAAUS,OAAO,mBAEtC,EAAE,CACJ,CAtBG,OAsBFr3D,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,mBAAAutB,IApeC,WACE,OAAO/vB,KAAKs3a,IAAW/C,gBACzB,EAACtlZ,IAED,SAAqBxwB,GACnBuB,KAAKs3a,IAAW/C,iBAAmB91a,CACrC,GAAC,CAAA+D,IAAAA,iBAAA/D,MAED,WACE,MAA6BuB,KAAKm4a,IAClC,MAAO,CACL1+Q,MAFU,EAALA,MAGL0P,IAHe,EAAHA,IAIZD,OAJuB,EAANA,OAKjBzoK,SAAQ,WACN,MAAO,GAAP,OAAUT,KAAKy5J,MAAK,eAAOz5J,KAAKmpK,IAAG,eAAOnpK,KAAKkpK,OAAM,IACvD,EAEJ,GAAC,CAAA1mK,IAAAA,kBAAA/D,MAED,WACE,OAAOk/Z,GACH39Z,KAAK62Z,IAAW7vL,aAAehnO,KAAK62Z,IAAW5S,WAAW1iZ,OAC3BvB,KAAKo9Z,IAAQlmB,YAClD,GAAC,CAAA10Y,IAAAA,iBAAA/D,MAED,WACE,OAAOuB,KAAKs3a,IAAW+E,gBACzB,GAEA,CAAA75a,IAAAA,wBAAA/D,MACA,WACE,OAAOuB,KAAKs3a,IAAWr2a,QAAQqva,kBACjC,GAAC,CAAA9ta,IAAAA,wBAAA/D,MAED,WACE,OAAOuB,KAAKs3a,IAAWr2a,QAAQsva,kBACjC,GAAC,CAAA/ta,IAAAA,iBAAA/D,MAED,WACE,OAAOuB,KAAKo9Z,IAAQ1G,WACtB,GAAC,CAAAl0Z,IAAAA,mBAAA/D,MAED,WACEuB,KAAKo4a,KAAe,EACpBp4a,KAAKypX,cAAc2uD,IAAa,EAClC,GAAC,CAAA51a,IAAAA,yBAAA/D,MAED,WACEuB,KAAKk4a,IAAqB,EAC1Bl4a,KAAKi4a,IAA6B9uX,IAClCnpD,KAAKg4a,KAAsB,EAC3Bh4a,KAAK+3a,IACD/3a,KAAKs8a,oBAAsBhG,IAC3Bt2a,KAAKu8a,cACX,GAAC,CAAA/5a,IAAAA,OAAA/D,MAED,SAAK+9a,GACH,IAAMj0Y,EAAQ,IAAIk0Y,WAAW,QAAS,CAACn2Y,QAAS,GAAKk2Y,IACrDx8a,KAAKm9Z,IAAmB5+X,cAAcgK,EACxC,GAAC,CAAA/lC,IAAAA,oBAAA/D,MAED,WACEyoI,GAAAA,EAAAA,EAAAA,WAAAA,oBAAAA,MAAAA,KAAAA,MAEAlnI,KAAKs3a,IAAW1za,iBACZ,SAAU5D,KAAK63a,KACnB73a,KAAKs3a,IAAW1za,iBACZ,uBACA5D,KAAK83a,KACT93a,KAAKs3a,IAAW1za,iBACZ,qBACA5D,KAAK83a,IACX,GAAC,CAAAt1a,IAAAA,uBAAA/D,MAED,WACEyoI,GAAAA,EAAAA,EAAAA,WAAAA,uBAAAA,MAAAA,KAAAA,MAEAlnI,KAAKs3a,IAAWp/Y,oBACZ,SAAUl4B,KAAK63a,KACnB73a,KAAKs3a,IAAWp/Y,oBACZ,uBACAl4B,KAAK83a,KACT93a,KAAKs3a,IAAWp/Y,oBACZ,qBACAl4B,KAAK83a,IACX,GAAC,CAAAt1a,IAAAA,UAAA/D,MAED,SAAQotX,GAAqD,WAC3D3kP,GAAAA,EAAAA,EAAAA,WAAAA,UAAAA,MAAAA,KAAAA,KAAc2kP,GAEd,IAAMzxS,EAAWp6E,KAAKs3a,IAChBvlP,EAAQ/xL,KAAKo9Z,IA4CnB,GA1CIvxC,EAAkBz9U,IAAI,oBACpBpuC,KAAKu8a,gBACPniW,EAASsiW,oBACL18a,KAAKs8a,oBAAsBhG,KAC7Bt2a,KAAK+3a,KAAwB,KAG/B39V,EAASuiW,qBACT38a,KAAK03a,OAEP13a,KAAKm9Z,IAAmBrqZ,aAAa,aAAc9S,KAAK28Z,MAGtD9wC,EAAkBz9U,IAAI,iBACxBgsC,EAASwiW,YAAc58a,KAAK48a,aAG1B/wD,EAAkBz9U,IAAI,gBACxBgsC,EAAS6uO,WAAajpT,KAAK68a,YAGzBhxD,EAAkBz9U,IAAI,gBACxBgsC,EAAS83V,WAAalya,KAAK88a,aAGzBjxD,EAAkBz9U,IAAI,sBACtBy9U,EAAkBz9U,IAAI,mBACtBy9U,EAAkBz9U,IAAI,UACpBpuC,KAAKs8a,oBAAsBhG,IAC3Bt2a,KAAKu8a,iBAAmBv8a,KAAKg4a,IAC/Bh4a,KAAK+3a,KAAwB,EAE7B/3a,KAAK03a,OAIL7rD,EAAkBz9U,IAAI,4BACxBpuC,KAAKw3a,IAA0Bnta,MAAMmqB,QACjCx0B,KAAK+8a,wBAA0BxG,GAA+B,IACA,KAGhE1qD,EAAkBz9U,IAAI,eAAgB,CACxC,IAAMkvF,EAAct9H,KAAKs9H,YACzBljD,EAAS4iW,aAAa,CAAC1/S,YAAAA,IACvBljD,EAASw4V,yBAGP/mD,EAAkBz9U,IAAI,sBACxBgsC,EAASk6V,iBAAmBt0a,KAAKs0a,kBAG/BzoD,EAAkBz9U,IAAI,wBACxBgsC,EAAS6iW,mBAAmBj9a,KAAKk9a,oBACjCnrP,EAAMorP,yBAAyBn9a,KAAKk9a,sBAGZ,IAAtBl9a,KAAKo4a,KACP9nY,QAAQG,UAAUC,MAAK,WACrB0pC,EAASq4V,aACT1gP,EAAM0gP,aACN9jW,EAAKypW,KAAe,CACtB,GAEJ,GAAC,CAAA51a,IAAAA,gBAAA/D,MAAAA,WAAA,mBAED,0FAE4D,OADpDszL,EAAQ/xL,KAAKo9Z,IACbggB,EAAerrP,EAAMsrP,YAAYtrP,EAAMsmO,cAAa/oY,EAAAA,KAAAA,EAEpDyiK,EAAMklO,gBAAe,OAWO,OAT5BqmB,EAAevrP,EAAMsrP,YAAYtrP,EAAMsmO,cACvCxjY,EAAO70B,KAAKs3a,IAAW+E,iBAAmBe,EAChDp9a,KAAKs3a,IAAW9E,eAAe8K,EAAezoZ,GAC9C70B,KAAKs4a,KAAqB,EAE1Bt4a,KAAKypX,cAAc,kBACnBzpX,KAAKypX,cAAc,eACnBzpX,KAAKypX,cAAc,kBACnBzpX,KAAKypX,cAAc,kBACnBzpX,KAAKypX,cAAc,eAAen6V,EAAAA,KAAAA,GAC5BtvB,KAAKssX,eAAc,iDAC1B,kDAnBA7tX,IAmBA,CAAA+D,IAAAA,WAAA/D,MAED,SAAS0tE,EAAkBoxW,EAAiBC,GAAgB,WACpDC,EAAez9a,KAAKm9Z,IACpBugB,EAAiB19a,KAAKy3a,IAE5B,GAAwC,MAApCiG,EAAe,GAAGrza,MAAMmqB,QAA5B,CAMA,IAAMksI,EAAK,IAAI/jK,MACf+jK,EAAG5jK,KAAK,CAACZ,EAAG25a,GAAS0H,EAAQrhb,GAAImL,EAAGwua,GAAS0H,EAAQl2a,KACrD,IAAM+/K,EAAY,CAAC,CAAClrL,EAAGwkK,EAAG,GAAGxkK,EAAE,GAAImL,EAAGq5J,EAAG,GAAGr5J,EAAE,KAE/B,MAAXm2a,IACF98Q,EAAG5jK,KAAK,CAACZ,EAAG25a,GAAS2H,EAAQthb,GAAImL,EAAGwua,GAAS2H,EAAQn2a,KACrD+/K,EAAUtqL,KAAK,CAACZ,EAAGwkK,EAAG,GAAGxkK,EAAE,GAAImL,EAAGq5J,EAAG,GAAGr5J,EAAE,MAG5C,IAAI+pD,EAAYF,YAAYtxD,MAC5B,EAAwBI,KAAKo9Z,IAAtBjvZ,EAAK,EAALA,MAAOC,EAAM,EAANA,OAERuva,EAAkB,SAAC/4a,GAAgB,IACQ6/D,EADR,IACX2iH,EAAUr0H,WAAS,IAA/C,IAAK,EAAL,qBAAiD,oBAArCr2D,EAAC,KAAE6iE,EAAQ,KACdl1D,EAASqza,EAAehhb,GAAxB2N,MACPA,EAAMiuH,UAAY,cAAH,OAAiBnqH,EAAQoxD,EAASrjE,EAAC,0BAC9CkS,EAASmxD,EAASl4D,EAAC,OACV,gBAATzC,EACFyF,EAAMmqB,QAAU,IACE,cAAT5vB,IACTyF,EAAMmqB,QAAU,KAGlB,IAAM+/F,EAAO,CACX92F,UAAW/gC,EAAI,KACfkpC,YAAa,QACbrkC,OAAQk8a,EACR57Y,QAAS1zB,EAAQoxD,EAASrjE,EAC1B4lC,QAAS1zB,EAASmxD,EAASl4D,EAC3B86B,QAAQ,GAGVs7Y,EAAal/Y,cAAc,IAAIsyY,aAAajsa,EAAM2vH,IACnD,UAAA7vD,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACH,EAmCMk5W,EAAqB,WACzB,IAAIC,EAAU,EACmB,WAA7Bv6a,SAASghO,gBACXu5M,EAAU3sX,YAAYtxD,MAAQwxD,EAE9BA,EAAYF,YAAYtxD,MAAQi+a,CAEpC,EAEAv6a,SAASM,iBAAiB,mBAAoBg6a,GAE9CD,EAAgB,eAEhBl8W,uBA9CoB,SAAdq8W,IAGJ,IAAOpM,EAAgBliW,EAAK8nW,IAArB5F,aACP,GAAIA,IAAiBhB,KAChB+M,EAAa3zD,YAAa,KAC8BhlT,EAD9B,IACD0K,EAAKioW,KAA0B,IAA3D,IAAK,EAAL,qBAA6D,CAArC,QACRpta,MAAMmqB,QAAU,IAC/B,UAAAuwC,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CAKD,OAJA44W,EAAgB,iBAChBnuW,EAAKjxC,cAAc,IAAI43E,YACnB,mBAAoB,CAAC30E,OAAQ,CAAChgC,OAAQkwa,WAC1Cpua,SAAS40B,oBAAoB,mBAAoB0lZ,GAInD,IAC+CntS,EADzCxoG,EAAOhrC,KAAKiuC,IAAI,GAAIgmB,YAAYtxD,MAAQwxD,GAAa+a,GAAU,IACzCi7G,EAAUr0H,WAAS,IAA/C,IAAK,EAAL,qBAAiD,oBAArCr2D,EAAC,KAAE6iE,EAAQ,KACrBA,EAASrjE,EAAIwkK,EAAGhkK,GAAGR,EAAE+rC,GACrBs3B,EAASl4D,EAAIq5J,EAAGhkK,GAAG2K,EAAE4gC,GACtB,UAAAyoG,EAAAA,EAAAA,EAAA,SAAAA,EAAAA,GAAA,CACDitS,EAAgB,eAEZ11Y,EAAO,EACTw5B,sBAAsBq8W,IAEtBH,EAAgB,aAChBnuW,EAAKjxC,cAAc,IAAI43E,YACnB,mBAAoB,CAAC30E,OAAQ,CAAChgC,OAAQkwa,MAC1Cpua,SAAS40B,oBAAoB,mBAAoB0lZ,GAErD,SAxEE7pa,QAAQk/C,KACJ,gEAuFR,GAAC,CAAAzwD,IAAAA,EAAA/D,MAED,SAAmB4L,GACjB,IAAM0nL,EAAQ/xL,KAAKo9Z,IACnBrrO,EAAMsmO,aAA0B,IAAXhuZ,EAAM,GAAWpN,KAAK00J,GAC3C3xJ,KAAKs3a,IAAW9E,eAAezgP,EAAMsrP,YAAYtrP,EAAMsmO,cACzD,GAAC,CAAA71Z,IAEA+1a,GAAgB95a,MAAjB,SAAmB4L,GACjB,IAAM+vE,EAAWp6E,KAAKs3a,IACtB,GAAIt3a,KAAKs4a,IAAoB,CAC3B,MAAqBt4a,KAAK04Y,iBAAnBj/O,EAAK,EAALA,MAAO0P,EAAG,EAAHA,IACd9+J,EAAM,GAAKovJ,EACXpvJ,EAAM,GAAK8+J,EACXnpK,KAAKs4a,KAAqB,EAE5Bl+V,EAASs3V,aAAehB,GACxBt2V,EAASm4V,SAASloa,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAC9C,GAAC,CAAA7H,IAEAk2a,GAAmBj6a,MAApB,SAAsB4L,GACpBrK,KAAKs3a,IAAW0F,aAAa,CAC3B5M,sBAAuB/la,EAAM,GAC7B6la,kBAAmB7la,EAAM,GACzB2la,cAAe3la,EAAM,KAEvBrK,KAAK+9a,kBACP,GAAC,CAAAv7a,IAEAm2a,GAAmBl6a,MAApB,SAAsB4L,GACpBrK,KAAKs3a,IAAW0F,aAAa,CAC3B3M,sBAAuBhma,EAAM,GAC7B8la,kBAAmB9la,EAAM,GACzB4la,cAAe5la,EAAM,KAEvBrK,KAAK43a,IAAwBvta,EAAM,IACnCrK,KAAK+9a,kBACP,GAAC,CAAAv7a,IAEAo2a,GAAmBn6a,MAApB,SAAsB4L,GACpBrK,KAAKs3a,IAAW0F,aACZ,CAAC1M,mBAA+B,IAAXjma,EAAM,GAAWpN,KAAK00J,KAC/C3xJ,KAAK+9a,kBACP,GAAC,CAAAv7a,IAEAq2a,GAAmBp6a,MAApB,SAAsB4L,GACpB,IAAM4lL,EAAMjwL,KAAKo9Z,IAAQigB,YAAuB,IAAXhza,EAAM,GAAWpN,KAAK00J,IAC3D3xJ,KAAKs3a,IAAW0F,aAAa,CAACzM,mBAAoBtgP,IAClDjwL,KAAK+9a,kBACP,GAAC,CAAAv7a,IAEAi2a,GAAiBh6a,MAAlB,SAAoB4L,GAClB,QAAkBA,EAAK,GAAhBnO,EAAC,KAAEmL,EAAC,KAAEC,EAAC,KACTtH,KAAK62Z,IAAW5S,WAAWj9K,cAC9BhnO,KAAKo9Z,IAAQvlB,UAAU37Y,EAAGmL,EAAGC,GAE/BtH,KAAKs3a,IAAW5F,aAAehB,GAC/B1wa,KAAK62Z,IAAW5S,WAAWpL,cAC7B,GAAC,CAAAr2Y,IAEAujZ,GAAKtnZ,MAAN,SAAQwpC,EAAc7qC,GAGpB,GAFA8pI,GAAAA,EAAAA,EAAAA,WAAM6+Q,GAAK,gBAAE99W,EAAM7qC,IAEf4C,KAAK62Z,IAAW7vL,cAAiBhnO,KAAKy9Z,MAA1C,CAIA,IAAMrjV,EAAWp6E,KAAKs3a,IAChBvlP,EAAQ/xL,KAAKo9Z,IAEbx9Z,EAAMsxD,YAAYtxD,MAWxB,GAVII,KAAK+3a,KACH/3a,KAAKssE,QACL1sE,EAAMI,KAAK+8Z,IAAe/8Z,KAAKg+a,6BACjCh+a,KAAK+3a,KAAwB,EAC7B/3a,KAAKi4a,IAA6Br4a,EAElCI,KAAKu3a,IAAgBp3W,UAAU/zC,IAAI,YAInCm8J,SAASvoL,KAAKi4a,MACdj4a,KAAK+8a,yBAA2BxG,GAA+B,CACjE,IAAMxc,GACAn6Z,EAAMI,KAAKi4a,KA1rBK,IA2rBlB,EACEluY,EAASksY,GAAOlc,GAChBvlY,EAAU0hZ,GAAKnc,GAIrB,GAFA/5Z,KAAKw3a,IAA0Bnta,MAAMmqB,QAAU,GAAH,OAAMA,GAE9CuV,IAAW/pC,KAAKk4a,IAAoB,CACtC,IAAM5tM,EAAUvgM,EAASgoJ,EAAM5jL,MAAQ,IACjCyla,GAAc7pY,EAAS/pC,KAAKk4a,KAAsBj7a,KAAK00J,GAAK,GAElE3xJ,KAAKw3a,IAA0Bnta,MAAMiuH,UAAS,qBAC5BgyG,EAAO,OAEzBlwJ,EAASs3V,aAAehB,GACxBt2V,EAASi6V,YAAYT,EAAY,EAAG,GAEpC5za,KAAKk4a,IAAqBnuY,GAI9BqwC,EAASkpF,OAAOr7H,EAAM7qC,GAClB20L,EAAM8mN,aAAaz7Y,IACrB4C,KAAK63a,IAAW,CAACjza,KAAM,SAAUpD,OAAQ44E,EAASs3V,eAEtD,GAAC,CAAAlva,IAEAk1a,GAAuBj5a,MAAxB,WAEEuB,KAAK+3a,KAAwB,EAC7B/3a,KAAKu3a,IAAgBp3W,UAAUS,OAAO,WACtC5gE,KAAKi4a,IAA6B9uX,GACpC,GAEA,CAAA3mD,IAICo1a,GAAsBn5a,MAAvB,SAAyByqK,GACvB,IAIM4K,EAAM,EAHR72K,KAAKC,IAAI8C,KAAKo9Z,IAAQn3O,eAAe/c,OAAQA,GAIjDlpK,KAAKs3a,IAAW2G,cAFH,EAEuBnqQ,EACtC,GAAC,CAAAtxK,IAEAm1a,GAAWl5a,MAAZ,WACE,MACIuB,KAAKs3a,IAAY4G,mBAAmBl+a,KAAKm4a,KADtC1+Q,EAAK,EAALA,MAAO0P,EAAG,EAAHA,IAGRg1Q,GACD,EAAIlhb,KAAKwf,OAAQg9I,EAAQ49Q,GAAOD,IAAcF,KAAY,EAEzDkH,EAAcnhb,KAAKwf,MAAM0sJ,EAAMguQ,IAE/BkH,EACFjI,GAA0B+H,GACxBG,EAAmBjI,GAAoB+H,GAE7Cp+a,KAAK88Z,IAAe,mBAAD,OACIwhB,GAAgB,OAAGD,GAC5C,GAAC,CAAA77a,IAEGm6Z,GAAU5sY,IAAd,WACE,OAAOm3G,GAAAA,EAAAA,EAAAA,WAAMy1R,GAAU,OAClB38Z,KAAKu8a,eArtBkB,4CAqtBoB,GAClD,GAAC,CAAA/5a,IAEK41Y,GAAS35Y,MAAAA,WAAA,mBAAf,WAAiB8pC,GAAU,+EAeiC,OAdpD6xC,EAAWp6E,KAAKs3a,IAChBvlP,EAAQ/xL,KAAKo9Z,IACbggB,EAAerrP,EAAMsrP,YAAYtrP,EAAMsmO,cAI7CnxR,GAAAA,EAAAA,EAAAA,WAAMkxQ,GAAS,gBAAE7vW,GAEXg2Y,EAAWxsP,EAAMsrP,YAAYtrP,EAAMsmO,cAAgB+kB,EACnDntP,EACF71G,EAASiiW,kBAAoB9zP,SAASg2P,GAAYA,EAAW,GAEjEnkW,EAASokW,aAAax+a,KAAKo9Z,IAAQltO,QAEnClwL,KAAKypX,cAAc,iBAAkBzpX,KAAKy+a,gBAAgBnoR,EAAAA,KAAAA,GACpDt2J,KAAKssX,eAAc,QACzBtsX,KAAKs3a,IAAW9E,eAAeviP,GAE/BjwL,KAAK+9a,mBAAmB,iDACzB,mDApBct/a,IAoBd,CAAA+D,IAEA86Z,GAAY7+Z,MAAb,WACEyoI,GAAAA,EAAAA,EAAAA,WAAMo2R,GAAY,iBAEdt9Z,KAAKq4a,IACPr4a,KAAKs4a,KAAqB,EAE1Bt4a,KAAKq4a,KAAgB,EAEvBr4a,KAAKypX,cAAc,iBAAkBzpX,KAAKy+a,gBAC1Cz+a,KAAKypX,cAAc,cAAezpX,KAAK0+a,aACvC1+a,KAAKypX,cAAc,iBAAkBzpX,KAAK2+a,gBAC1C3+a,KAAKypX,cAAc,iBAAkBzpX,KAAK4+a,gBAC1C5+a,KAAKypX,cAAc,cAAezpX,KAAK6+a,aACvC7+a,KAAKypX,cAAc,eAAgBzpX,KAAK0tW,cACxC1tW,KAAK+9a,kBACP,KAAC,EAhkB8B,CAAQjoD,GAoYvC9kT,EA3SUumW,GAAc,EAEdC,GAAwB,EAExBC,GAAyB,EAIzBrF,GAAW,EAGX8F,GAAiB,EACjBD,GAAyB,EACzBD,GAAkB,EAClBD,GAAoB,EAEpBT,GAAS,EAITa,GAAc,EACdC,GAAW,EACXC,GAAY,EACZC,GAoRTE,KAoNH,SAtBGX,GAAS,EAaTC,GA7kBD/X,GAAAA,CADCrha,GAAS,CAACkG,KAAMsW,QAASg7I,UAAW,qBAAmB,qCASxD6pQ,GAAAA,CANC11Z,GAAM,CACLwha,WAAY8K,GACZvH,gBAAgB,EAChBU,cAAeyI,KAEhB75a,GAAS,CAACkG,KAAM7G,OAAQm4J,UAAW,eAAgB2yN,WAAY,kBAAM,CAAI,KAAE,kCAU5Ek3C,GAAAA,CAPC11Z,GAAM,CACLwha,WAAYoL,GACZ7H,gBAAgB,EAChBU,cAAe2I,KAEhB/5a,GACG,CAACkG,KAAM7G,OAAQm4J,UAAW,gBAAiB2yN,WAAY,kBAAM,CAAI,KAAE,mCAUvEk3C,GAAAA,CAPC11Z,GAAM,CACLwha,WAAY4K,GACZrH,gBAAgB,EAChBU,cAAe0I,KAEhB95a,GACG,CAACkG,KAAM7G,OAAQm4J,UAAW,gBAAiB2yN,WAAY,kBAAM,CAAI,KAAE,kCASvEk3C,GAAAA,CANC11Z,GAAM,CACLwha,WAAYgL,GACZ/G,cAAe4I,KAEhBh6a,GACG,CAACkG,KAAM7G,OAAQm4J,UAAW,mBAAoB2yN,WAAY,kBAAM,CAAI,KAAE,qCAS1Ek3C,GAAAA,CANC11Z,GAAM,CACLwha,WAAYiL,GACZhH,cAAe6I,KAEhBj6a,GACG,CAACkG,KAAM7G,OAAQm4J,UAAW,mBAAoB2yN,WAAY,kBAAM,CAAI,KAAE,qCAS1Ek3C,GAAAA,CANC11Z,GAAM,CACLwha,WAAY6K,GACZ5G,cAAe8I,KAEhBl6a,GACG,CAACkG,KAAM7G,OAAQm4J,UAAW,oBAAqB2yN,WAAY,kBAAM,CAAI,KAAE,qCAO3Ek3C,GAAAA,CAJC11Z,GACG,CAACwha,WAAY4K,GAAuB3G,cAAe+I,KACtDn6a,GACG,CAACkG,KAAM7G,OAAQm4J,UAAW,oBAAqB2yN,WAAY,kBAAM,CAAI,KAAE,qCAI3Ek3C,GAAAA,CADCrha,GAAS,CAACkG,KAAMyS,OAAQ6+I,UAAW,kCAAgC,iDAIpE6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAM7G,OAAQm4J,UAAW,wBAAsB,wCAK1D6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAM7G,OAAQm4J,UAAW,8BAA4B,6CAKhE6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAMyS,OAAQ6+I,UAAW,uBAAqB,uCAIzD6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAM7G,OAAQm4J,UAAW,kBAAgB,kCAIpD6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAMsW,QAASg7I,UAAW,kBAAgB,kCAIrD6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAMsW,QAASg7I,UAAW,iBAAe,iCAIpD6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAMsW,QAASg7I,UAAW,iBAAe,iCAIpD6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAMyS,OAAQ6+I,UAAW,yBAAuB,yCAkgBtDkmR,CACT,CGh0BqB0C,CTgDE,SACnBhpD,2BACIipD,EAAqB,cAAA/ia,EAAAA,EAAAA,GAAA,WAA3B,mBA8DI,OA9DJvR,EAAAA,KAAAA,+BAC8CyR,IAAc,EAETA,EAAAA,QAAkB,OAGnEA,EAAAA,YAAsB,QAGtBA,EAAAA,QAxDqB,gCA0D2BA,EAAAA,OAAsB,KAGtEA,EAAAA,eAAyB,EAMhBA,EAAAA,IAA4B,EAI5BA,EAAAA,GACLA,EAAKksD,WAAY0hD,cAAc,cAE1B5tG,EAAAA,GAAc5Y,SAASC,cAAc,KAErC2Y,EAAAA,GAA0B,IAAI8P,IAC9B9P,EAAAA,GAAoBiuZ,GACpBjuZ,EAAAA,IAAa,EAEfA,EAAAA,GAA8B,SAACqsB,GACpCA,EAAM9H,iBACNvkB,EAAK8ia,YACP,EAEO9ia,EAAAA,GAAgB,YAAyB,IAAvByiF,EAAM,EAANA,OACnBA,IAAWs1S,IACX/3X,EAAK26Y,IAAW5S,WAAW1P,iBAAmBr4X,EAAKkhZ,MACrDlhZ,EAAKpJ,aAAa,YAAa6rF,GAC/BziF,EAAKqiB,cACD,IAAI43E,YAA6B,YAAa,CAAC30E,OAAQ,CAACm9D,OAAAA,MACxDA,IAAWs1S,GACb/3X,EAAKqR,gBAAgB,eACZoxE,IAAWs1S,IACpB/3X,EAAKpJ,aAAa,cAAeohY,IAGvC,EAEOh4X,EAAAA,GAAkB,YAAyB,IAAvByiF,EAAM,EAANA,OACzBziF,EAAKpJ,aAAa,cAAe6rF,GACjCziF,EAAKqiB,cAAc,IAAI43E,YACnB,cAAe,CAAC30E,OAAQ,CAACm9D,OAAAA,KAC/B,EAEOziF,EAAAA,GAAa,SAACqsB,GACQ,qCAAtBA,EAAc7E,MACjBxnB,EAAKqiB,cAAc,IAAI43E,YAAY,4BAEvC,EAAE,CAkTJ,CADG,OACF5sG,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,gBAAAutB,IAhWC,WACE,OAAO/vB,KAAKyqa,MAAaN,EAC3B,GAAC,CAAA3na,IAAAA,oBAAA/D,MA8CD,WACEyoI,GAAAA,EAAAA,EAAAA,WAAAA,oBAAAA,MAAAA,KAAAA,MAEAlnI,KAAK62Z,IAAW5S,WAAWrgZ,iBAAiB,SAAU5D,KAAK8qa,KAC3D9qa,KAAK8S,aAAa,YAAamhY,IAE/Bj0Y,KAAK62Z,IAAW5S,WAAWrgZ,iBACvB,WAAY5D,KAAK+qa,KAErB/qa,KAAK2qa,IAAW/ma,iBAAiB,UAAW5D,KAAKgra,IACnD,GAAC,CAAAxoa,IAAAA,uBAAA/D,MAED,WACEyoI,GAAAA,EAAAA,EAAAA,WAAAA,uBAAAA,MAAAA,KAAAA,MAEAlnI,KAAK62Z,IAAW5S,WAAW/rX,oBACvB,SAAUl4B,KAAK8qa,KACnB9qa,KAAK62Z,IAAW5S,WAAW/rX,oBACvB,WAAYl4B,KAAK+qa,KAErB/qa,KAAK2qa,IAAWzyY,oBAAoB,UAAWl4B,KAAKgra,IACtD,GAAC,CAAAxoa,IAAAA,SAAA/D,MAED,SAAOotX,GACL3kP,GAAAA,EAAAA,EAAAA,WAAAA,SAAAA,MAAAA,KAAAA,KAAa2kP,GAETA,EAAkBz9U,IAAI,aACxBpuC,KAAKo9Z,IAAQ1jB,SAA4B,UAAjB15Y,KAAKi/a,SAG3BpzD,EAAkBz9U,IAAI,iBACxBpuC,KAAKo9Z,IAAQlG,eACbl3Z,KAAKq9Z,OAGHxxC,EAAkBz9U,IAAI,aACxBpuC,KAAK0qa,IAAYV,GAAmBhqa,KAAKk/a,WAGvCrzD,EAAkBz9U,IAAI,OAASy9U,EAAkBz9U,IAAI,YACrDy9U,EAAkBz9U,IAAI,QAAUy9U,EAAkBz9U,IAAI,YACxDpuC,KAAKira,KAET,GAEA,CAAAzoa,IAAAA,aAAA/D,MAAAA,WAAA,mBAMA,8EAAA6wB,EAAAA,GACUtvB,KAAKyqa,IAAQn7Y,EAAAA,KAAAA,EAAAA,KACd66Y,GAAiB,SAGjBA,GAAY,SAGZA,GAAmB,kBALM,OAA5Bnqa,KAAKuqa,MAAuB,mCAAAj7Y,EAAAA,KAAAA,EAGtBtvB,KAAKqqa,MAAoB,0CAGN,OAAzBrqa,KAAKsqa,MAAoB,6BAKI,OAF7Bv2Z,QAAQk/C,KACJ,qGACyB,sEAGlC,kDAvBDx0D,IAuBC,CAAA+D,IAAAA,EAAA/D,MAAAA,WAAA,mBAED,4FAC0B,GAApB0gb,EAAShV,IACTnqa,KAAKoma,GAAI,CAAF9vQ,EAAAA,KAAAA,GAAA,SACO,MAAZt2J,KAAKmS,IAAW,CAAAmkJ,EAAAA,KAAAA,GAAA,MAAA5xF,EAAAA,EACE1kE,KAAK0qa,KAASp0Q,EAAAA,KAAAA,EAAA5xF,EAAAA,IAAA,0BAAA4xF,EAAAA,KAAAA,GAAA,MACiC,GADxD73J,EAAK,QAAA63J,EAAAA,GACA,UAAV73J,GAAqB+1X,KAA0Bq1C,IAAc,MAAAvzQ,EAAAA,KAAAA,GAAA,aAAAA,EAAAA,KAAAA,GACvDt2J,KAAK62Z,IAAW5S,WAAWm7B,uBAAsB,QAAA9oR,EAAAA,GAAAA,EAAAA,KAAA,kBAAAA,EAAAA,KAAAA,GAAA,MACnC,OAAtB6oR,EAAShV,GAAa,gCAGV,iBAAV1ra,IAA4Bm2X,IAC3Bk1C,GAAoB,CAAAxzQ,EAAAA,KAAAA,GAAA,MACM,OAA7B6oR,EAAShV,GAAoB,gCAGjB,eAAV1ra,IAA0Bs2X,GAAyB,CAAAz+N,EAAAA,KAAAA,GAAA,MAC1B,OAA3B6oR,EAAShV,GAAkB,6BAAA7zQ,EAAAA,KAAAA,EAAA,cAAAA,EAAAA,KAAAA,GAAA,cAAAA,EAAAA,KAAAA,GAAAA,EAAAA,GAAAA,EAAAA,MAAAA,GAAA5xF,EAAAA,EAAAA,EAAAA,IAAA,eAAA4xF,EAAAA,KAAAA,GAAA5xF,EAAAA,IAAA,qBAQ7By6W,IAAWhV,IAA8B,MAAfnqa,KAAKs6Z,QAC/BvlC,KACFoqD,EAAShV,IACV,QAGCgV,IAAWhV,IACbnqa,KAAKoqa,IAAoBjqW,UAAU/zC,IAAI,WACvCpsB,KAAKoqa,IAAoBxma,iBACrB,QAAS5D,KAAK6qa,MACT7qa,KAAKoqa,IAAoBjqW,UAAUj2B,SAAS,aACrDlqC,KAAKoqa,IAAoBlyY,oBACrB,QAASl4B,KAAK6qa,KAClB7qa,KAAKoqa,IAAoBjqW,UAAUS,OAAO,WAGpC+9B,EAASs1S,GACfj0Y,KAAK8S,aAAa,YAAa6rF,GAC/B3+F,KAAKu+B,cACD,IAAI43E,YAA6B,YAAa,CAAC30E,OAAQ,CAACm9D,OAAAA,OAE9D3+F,KAAKyqa,IAAW0U,EAAO,gEACxB,kDAhDA1gb,IAgDA,CAAA+D,IAEe6na,GAAiB5ra,MAAAA,WAAA,mBAAvB,oFACiD,OAAzDsV,QAAQC,IAAI,6CAA6C8sJ,EAAAA,KAAAA,EAEnD9gK,KAAKkra,MAAe,OAM6B,OAN7BpqQ,EAAAA,KAAAA,EAGxB9gK,KAAKoqa,IAAoBlyY,oBACrB,QAASl4B,KAAK6qa,MACX5mB,EAAcjkZ,KAAK62Z,IAAnB5S,YACIzP,YAAmC,SAArBx0Y,KAAKg6Z,YAAuBl5P,EAAAA,KAAAA,EAC/CmjP,EAAWo7B,QAAQr/a,KAAKo9Z,IAASp9Z,KAAKs/a,eAAc,OAAAx+Q,EAAAA,KAAAA,GAAA,cAGrC,OAHqCA,EAAAA,KAAAA,GAAAA,EAAAA,GAAAA,EAAAA,MAAAA,GAE1D/sJ,QAAQk/C,KAAK,kDACbl/C,QAAQwN,MAAM,EAAD,IAAQu/I,EAAAA,KAAAA,GACf9gK,KAAK62Z,IAAW5S,WAAW5P,iBAAgB,QAEJ,OAD7Cw1B,IAAiB,EACjB91Z,QAAQk/C,KAAK,gCAAgC6tG,EAAAA,KAAAA,GACvC9gK,KAAKira,MAAgB,QAC3Bjra,KAAKg/a,aAAa,QAEI,OAFJl+Q,EAAAA,KAAAA,GAElB9gK,KAAKira,MAAiB,6EAEzB,kDAtBgCxsa,IAsBhC,CAAA+D,IAEK0oa,GAAYzsa,MAAAA,WAAA,mBAAlB,iFACOuB,KAAKssE,OAAQ,CAAFk9F,EAAAA,KAAAA,EAAA,MAEQ,OADtBxpK,KAAK4qa,KAAY,EACjB5qa,KAAKg9Z,MAAiBxzP,EAAAA,KAAAA,EAChBysN,GAAaj2X,KAAM,QAAO,OAChCA,KAAK4qa,KAAY,EAAM,gDAE1B,kDAPiBnsa,IAOjB,CAAA+D,IAEAk7Z,GAAqBj/Z,MAAtB,WACE,OAAOyoI,GAAAA,EAAAA,EAAAA,WAAMw2R,GAAqB,kBAAO19Z,KAAK4qa,GAChD,GAEA,CAAApoa,IAIC8na,GAAgB7ra,MAAjB,WAAkB,WACVsX,EAAWZ,KAAKY,SAAStV,WACzB8+a,EAAc,IAAInmW,IAAIrjE,GACtBypa,EAAW,IAAIpmW,IAAIp5E,KAAKmS,IAAM4D,GAC9BmkD,EAAS,IAAIs6D,gBAAgBgrT,EAASz3Y,QAe5C,GAbAw3Y,EAAYzoV,KAAOizU,GAGnB7vW,EAAOjrC,IAAI,OAAQ,gBACdirC,EAAO9rB,IAAI,sBACd8rB,EAAOjrC,IAAI,oBAAqB,QAEb,UAAjBjvB,KAAKi/a,SACP/kX,EAAOjrC,IAAI,YAAa,SAED,SAArBjvB,KAAKg6Z,aACP9/V,EAAOjrC,IAAI,4BAA6B,QAEtCirC,EAAO9rB,IAAI,SAAU,CACvB,IAAMqxY,EAAW,IAAIrmW,IAAIlf,EAAOnqC,IAAI,SAAWha,GAC/CmkD,EAAOjrC,IAAI,QAASwwZ,EAASh/a,YAE/B,GAAIy5D,EAAO9rB,IAAI,QAAS,CACtB,IAAMsxY,EAAU,IAAItmW,IAAIlf,EAAOnqC,IAAI,QAAUha,GAC7CmkD,EAAOjrC,IAAI,OAAQywZ,EAAQj/a,YAG7B,IAAMk/a,EAAS,6CAAH,OACRzlX,EAAOz5D,WAAa,SACpBkV,mBACI6pa,EACK/+a,YAAW,oHACpBkV,mBAAmB4pa,EAAY9+a,YAAW,SAmB9C0U,KAAKvR,iBAAiB,cAjBC,WACjBuR,KAAKY,SAAS+gF,OAASizU,KACzBD,IAAuB,EAMvB30Z,KAAK2iF,QAAQ+tQ,OACb9xV,QAAQk/C,KAAK,yDACbl/C,QAAQk/C,KAAK,gCACb0b,EAAKs8V,MAIT,GAEoD,CAACh4C,MAAM,IAE3DjzX,KAAK2qa,IAAW73Z,aAAa,OAAQ6sa,GACrC5ra,QAAQC,IAAI,oDACZhU,KAAK2qa,IAAWiV,OAClB,GAEA,CAAAp9a,IAIM+na,GAAmB9ra,MAAAA,WAAA,mBAAzB,kGAGuD,GAF/Cohb,GAAgB7/a,KAAKs6Z,OAE3Bt6Z,KAAKoqa,IAAoBjqW,UAAUS,OAAO,YAExBi/W,EAAY,CAAAr3M,EAAAA,KAAAA,EAAA,aAAAA,EAAAA,KAAAA,EAASxoO,KAAK8/a,cAAa,OAAAt3M,EAAAA,GAAAA,EAAAA,KAAAA,EAAAA,KAAAA,EAAA,aAAAA,EAAAA,GAAGxoO,KAAKs6Z,OAAO,OAAlEylB,EAAY,EAAH,GACTP,EAAW,IAAIpmW,IAAI2mW,EAAW5qa,KAAKY,SAAStV,YAE9Co/a,IACI9pa,EAAWZ,KAAKY,SAAStV,WACzB8+a,EAAc,IAAInmW,IAAIrjE,IACtBiqa,EAAS,IAAI5mW,IAAIp5E,KAAKmS,IAAMota,IACvBzoV,OACT0oV,EAAS1oV,KAAOkpV,EAAOlpV,OAIN,UAAjB92F,KAAKi/a,UACHO,EAAS1oV,OACX0oV,EAAS1oV,MAAQ,KAEnB0oV,EAAS1oV,MAAQ,2BAGbmpV,EAASjgb,KAAK2qa,KACb73Z,aAAa,MAAO,MACrBqjB,EAAM7yB,SAASC,cAAc,OACnC08a,EAAOhta,YAAYkjB,GACnB8pZ,EAAOnta,aAAa,OAAQ0sa,EAAS/+a,YACjCo/a,GACFI,EAAOnta,aAAa,WAAY,cAIlCmta,EAAO51a,MAAM29C,QAAU,OACnBi4X,EAAOn2D,aAAa9pX,KAAKooE,WAAYn1D,YAAYgta,GAErDlsa,QAAQC,IAAI,kDACZisa,EAAOL,QACPK,EAAO1tZ,YAAY4D,GACf0pZ,GACFzmW,IAAIujP,gBAAgBojH,GAEtB//a,KAAKoqa,IAAoBjqW,UAAU/zC,IAAI,WAAW,iDACnD,kDA5CwB3tB,IA4CxB,CAAA+D,IAAAA,cAAA/D,MAAAA,WAAA,mBAED,oGACqE,OAA7D8ga,EAAuBv/Z,KAAKu9Z,IAAkBiC,gBAAezlJ,EAAAA,KAAAA,EAE7D/5Q,KAAKkra,MAAe,OAEN,GAFMrM,EAEF7+Z,KAAKo9Z,IAAtBr4Y,EAAK,EAALA,MAAO0+H,EAAM,EAANA,OACD,MAAT1+H,EAAa,CAAAg1P,EAAAA,KAAAA,EAAA,+BACR,IAAE,OAawB,OAV/BpwM,GAAU,EAGA,MAAV85E,IACF95E,EAAU85E,EAAO95E,QACjB85E,EAAO95E,SAAU,GAGnB41V,EAAqB,IAEf2gB,EAAW,IAAIzY,GAAc1tJ,EAAAA,KAAAA,GACTmmK,EAASv/U,MAAM57E,GAAM,QAW9C,OAXKo7Z,EAAc,EAAH,KACXtuK,EAAO,IAAI6qD,KAAK,CAACyjH,GAAc,CACnCv7a,KAAM,uBAGFsjC,EAAMkxC,IAAIC,gBAAgBw4L,GAEhC0tJ,EAAqB,GAEP,MAAV97Q,IACFA,EAAO95E,QAAUA,GAClB,kBAEMzhC,GAAG,iDACX,kDArCAzpC,MAqCA,EA/WwB,CAAQq3X,GAsI5B9kT,EAlHKw5V,GAAc,EAIdJ,GAAkB,EAGlBO,GAAS,EAETD,GAAQ,EACRD,GAAO,EACPG,GAAQ,EAEVC,GAAyB,EAKzBC,GAAW,EAcXC,GAAa,EAMbC,GA4EFC,KA4OR,OAjX8ClL,GAAAA,CAA3Crha,GAAS,CAACkG,KAAMsW,QAASg7I,UAAW,QAAM,yBAEM6pQ,GAAAA,CAAhDrha,GAAS,CAACkG,KAAM7G,OAAQm4J,UAAW,cAAY,8BAGhD6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAM7G,OAAQm4J,UAAW,kBAAgB,kCAIpD6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAM7G,OAAQm4J,UAAW,cAAY,8BAGA6pQ,GAAAA,CAA/Crha,GAAS,CAACkG,KAAM7G,OAAQm4J,UAAW,aAAW,6BAG/C6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAMsW,QAASg7I,UAAW,oBAAkB,oCAqWlD6oR,CACT,CSramCqB,CFwGP,SACxBtqD,uBAEIuqD,EAA0B,cAAArka,EAAAA,EAAAA,GAAA,WA8J9B,aAA+B,MAAAvR,EAAAA,KAAAA,GAAA,2BAAhBnL,EAAgB,yBAAhBA,EAAgB,iBAC7B4c,EAAAA,EAAAA,KAAAA,MAAAA,EAAAA,CAAAA,MAAAA,OAAS5c,KAxHe4c,OAAsB,KAUhDA,EAAAA,OAA+B48Z,GAY/B58Z,EAAAA,QAAiC68Z,GAkDxB78Z,EAAAA,IAAqB,EAErBA,EAAAA,IAAyB,EAIzBA,EAAAA,GACLA,EAAKksD,WAAY0hD,cAAc,gBAE1B5tG,EAAAA,GACLA,EAAKksD,WAAY0hD,cAAc,mBAE1B5tG,EAAAA,GACLA,EAAKksD,WAAY0hD,cAAc,gCAG1B5tG,EAAAA,GACLA,EAAKg9Z,IAAuBtvW,aAAa,cAEpC1tD,EAAAA,GnExMW,SAAC8hE,EAAkC1tE,GACzD,IAAI40U,EAAqB,KAEnBo7F,EAAY,WACH,MAATp7F,IAIJlnQ,EAAE,wBAEFknQ,EAAQ/vU,KAAKtV,YAAW,kBAAMqlV,EAAQ,IAAI,GAAE50U,GAC9C,EASA,OAPAgwa,EAAUjgb,MAAQ,WACH,MAAT6kV,IACF/vU,KAAK/U,aAAa8kV,GAClBA,EAAQ,KAEZ,EAEOo7F,CACT,CmEmLoCC,EAAS,SAAC10W,GACxC,IAAM50C,EAAa/a,EAAK88Z,IAA4B/hZ,WAEpDwqC,uBAAsB,WACpBvlD,EAAK88Z,IAA4B3ua,MAAMiuH,UAAS,iBAClCzsD,EAAQ,KAEL,IAAbA,IAMF50C,EAAW1E,YAAYrW,EAAK88Z,KAC5B/hZ,EAAWhkB,YAAYiJ,EAAK88Z,MAMb,IAAbntW,EACF3vD,EAAK88Z,IAA4B74W,UAAU/zC,IAAI,QAE/ClQ,EAAK88Z,IAA4B74W,UAAUS,OAAO,OAEtD,GACF,GA3QyC,KAkUzC1kD,EAAAA,GAAgB,SAACqsB,GACf,IAAMsjC,EAAYtjC,EAAc/G,OAAOq6X,cAEtB,IAAbhwV,IACF3vD,EAAKo9Z,IAAoBj5a,QACrB6b,EAAKowD,SACJpwD,EAAKi9Z,KACLj9Z,EAAKska,SAAW1H,KACnB58Z,EAAKk9Z,OAITl9Z,EAAKo9Z,IAAoBztW,GAEzB3vD,EAAKqiB,cACD,IAAI43E,YAAY,WAAY,CAAC30E,OAAQ,CAACq6X,cAAehwV,KAC3D,EAlEE,IAAMiqT,EACD3gX,KAAa2gX,oBAAsB,CAAC,EAEnC+N,EAAuB/N,EAAmB+N,sBAhRlD,0DAkREgC,GAAkB46C,wBAAwB58C,GAE1C,IAAMC,EACFhO,EAAmBgO,wBAlRzB,wEAyRG,OALD+B,GAAkB66C,0BAA0B58C,GAExChO,EAAmBiO,wBACrB8B,GAAkB86C,0BACd7qD,EAAmBiO,wBACxB,CACH,CAhJC,OAgJAx6X,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,gBAAA/D,MA7GD,WACMuB,KAAKssE,OACPtsE,KAAKo5a,OAELp5a,KAAKm5a,KAAwB,EAC7Bn5a,KAAKg9Z,MAET,GAEA,CAAAx6Z,IAAAA,aAAA/D,MAKA,WACE,IAAMmib,EAAyB5gb,KAAKi5a,IACpC,IAAI2H,EAAuBzgX,UAAUj2B,SAAS,QAA9C,CAGA02Y,EAAuBzgX,UAAU/zC,IAAI,QACrCpsB,KAAKm9Z,IAAmBh9V,UAAUS,OAAO,QAEzC,IAAMigX,EAAuB7gb,KAAKk5a,IAClC2H,EAAqBtzZ,gBAAgB,YACrCszZ,EAAqBtzZ,gBAAgB,eAErC,IAAMuwY,EAAgB99Z,KAAKglZ,eAC3BhlZ,KAAKq5a,KAAoB,EACzBr5a,KAAK08Z,IAA0BoB,GACjC,GAEA,CAAAt7Z,IAAAA,gBAAA/D,MAIA,WACE,OAAOk/Z,GAAW39Z,KAAKo9Z,IAAQ73W,KACjC,GAAC,CAAA/iD,IAAAA,uBAAA/D,MAED,WACE,OAAOk/Z,GAAW39Z,KAAKo9Z,IAAQpyP,YAAYS,UAAU,IAAI3E,IAC3D,GAAC,CAAAtkK,IAAAA,oBAAA/D,MAsED,WACEyoI,GAAAA,EAAAA,EAAAA,WAAAA,oBAAAA,MAAAA,KAAAA,MAEAlnI,KAAK8gb,aAEL9gb,KAAKu9Z,IAAkB35Z,iBAAiB,WAAY5D,KAAKw5a,IAC3D,GAAC,CAAAh3a,IAAAA,uBAAA/D,MAED,WACEyoI,GAAAA,EAAAA,EAAAA,WAAAA,uBAAAA,MAAAA,KAAAA,MAEAlnI,KAAKu9Z,IAAkBrlY,oBAAoB,WAAYl4B,KAAKw5a,IAC9D,GAAC,CAAAh3a,IAAAA,UAAA/D,MAAAA,WAAA,mBAED,WAAcotX,GAAmC,iEAC/C3kP,GAAAA,EAAAA,EAAAA,WAAAA,UAAAA,MAAAA,KAAAA,KAAc2kP,GAEVA,EAAkBz9U,IAAI,WAA4B,MAAfpuC,KAAKk3E,SAC1Cl3E,KAAKk5a,IAAuB7ua,MAAM02a,gBAAe,cACtC/gb,KAAKk3E,OAAM,MAGpB20S,EAAkBz9U,IAAI,QACxBpuC,KAAKk5a,IAAuBpma,aACxB,aAAc9S,KAAK48Z,MAGrB/wC,EAAkBz9U,IAAI,WAAay9U,EAAkBz9U,IAAI,aAC3DpuC,KAAKg9Z,MACN,gDACF,mDAlBAv+Z,IAkBA,CAAA+D,IAAAA,EAAA/D,MAoBD,WACE,QAASuB,KAAKmS,MACTnS,KAAKm5a,KACLn5a,KAAKiwQ,UAAY8oK,IAChB/4a,KAAKwgb,SAAW1H,IAAuB94a,KAAKy8Z,IACpD,GAAC,CAAAj6Z,IAEA42a,GAAW36a,MAAZ,WACEuB,KAAKm5a,KAAwB,EAC7B,IAAMyH,EAAyB5gb,KAAKi5a,IACpC,GAAK2H,EAAuBzgX,UAAUj2B,SAAS,QAA/C,CAGA02Y,EAAuBzgX,UAAUS,OAAO,QACxC5gE,KAAKm9Z,IAAmBh9V,UAAU/zC,IAAI,QAEtC,IAAM0xY,EAAgB99Z,KAAKglZ,eAC3BhlZ,KAAKq5a,KAAoB,EACzBr5a,KAAK08Z,IAA0BoB,GAE/B,IAAM5qZ,EAAOlT,KAAKypE,cAIdv2D,GAASA,EAA+Bqd,gBAAkBvwB,MAC5DA,KAAKm9Z,IAAmBzja,QAK1B,IAAMmnb,EAAuB7gb,KAAKk5a,IAClC2H,EAAqB/ta,aAAa,cAAe,QACjD+ta,EAAqBl9W,UAAY,EACjC3jE,KAAKu+B,cAAc,IAAI43E,YAAY,qBACrC,GAAC,CAAA3zG,IAEAi7Z,GAAkBh/Z,MAAnB,WACE,OAAOyoI,GAAAA,EAAAA,EAAAA,WAAMu2R,GAAkB,kBAAOz9Z,KAAKq5a,GAC7C,IAAC,EAAA72a,IAAAA,uBAAAutB,IAtQD,WACE,OAAO81W,GAAkBm7C,yBAC3B,EAAC/xZ,IAND,SAAgCxwB,GAC9BonY,GAAkB46C,wBAAwBhib,EAC5C,GAAC,CAAA+D,IAAAA,yBAAAutB,IAUD,WACE,OAAO81W,GAAkBo7C,2BAC3B,EAAChyZ,IAND,SAAkCxwB,GAChConY,GAAkB66C,0BAA0Bjib,EAC9C,GAAC,CAAA+D,IAAAA,yBAAAutB,IAUD,WACE,OAAO81W,GAAkBq7C,2BAC3B,EAEAjyZ,IARA,SAAkCxwB,GAChConY,GAAkB86C,0BAA0Blib,EAC9C,GAAC,CAAA+D,IAAAA,UAAA/D,MAYD,SAAe05C,GACbyrW,GAASgE,UAAU7jT,OAAO2hS,IAAS71H,QAAQN,eAAep3N,EAC5D,KAAC,EAjC6B,CAAQ29U,GAqOtC9kT,EAtHUqoW,GAAgB,EAEhBF,GAAoB,EAIpBF,GAAuB,EAGvBC,GAAqB,EAGrBF,GAA0B,EAI1BO,GAAsB,EAGtBD,GAAkB,EAiF3BE,GAkBA9b,KAyCH,OAvO4BqC,GAAAA,CAAzBrha,GAAS,CAACkG,KAAM7G,UAAQ,6BAUzBgia,GAAAA,CADCrha,GAAS,CAACkG,KAAM7G,UAAQ,6BAazBgia,GAAAA,CADCrha,GAAS,CAACkG,KAAM7G,UAAQ,8BAkNpBsib,CACT,CE1X2Cc,CdiBb,SAC1BrrD,SACIsrD,EAA4B,cAAApla,EAAAA,EAAAA,GAAA,WAShC,aAA0B,MAAAvR,EAAAA,KAAAA,GAAA,2BAAXnL,EAAW,yBAAXA,EAAW,gBAUrB,OATH4c,EAAAA,EAAAA,KAAAA,KAAM5c,IATmB4c,UAAoB,EAE/CA,EAAAA,mBAAkC9R,EAElC8R,EAAAA,2BAAqC,IAE5BA,EAAAA,IAAqB,EAK5BA,EAAKkhZ,IAAQikB,oBAAoB,QAAQ,SAAC/6a,GACxC,IAAMq3E,EAAQr3E,EAAE+0C,OAAOoyO,WACvBvxQ,EAAKqiB,cAAc,IAAI43E,YAAY,OAAQ,CAAC30E,OAAQ,CAACm8C,MAAAA,KACvD,IACAzhE,EAAKkhZ,IAAQikB,oBAAoB,YAAY,WAC3Cnla,EAAK+jZ,KAAW,EAChB/jZ,EAAKqiB,cAAc,IAAI43E,YAAY,YACrC,IAAG,CACL,CA6GC,OA3GD5sG,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,sBAAAutB,IAGA,WACE,OAAI/vB,KAAKssE,OACAtsE,KAAKo9Z,IAAQxI,eAGf,EACT,GAAC,CAAApyZ,IAAAA,WAAAutB,IAED,WACE,OAAO/vB,KAAKo9Z,IAAQjxV,QACtB,GAAC,CAAA3pE,IAAAA,SAAAutB,IAED,WACE,OAAO/vB,KAAKiga,GACd,GAAC,CAAAz9Z,IAAAA,cAAAutB,IAED,WACE,OAAO/vB,KAAKo9Z,IAAQrD,aACtB,EAAC9qY,IAED,SAAgBxwB,GACduB,KAAKo9Z,IAAQrD,cAAgBt7Z,EAC7BuB,KAAKq9Z,KACP,GAAC,CAAA76Z,IAAAA,YAAAutB,IAED,WACE,OAAO/vB,KAAKo9Z,IAAQtD,kBACtB,EAAC7qY,IAED,SAAcxwB,GACZuB,KAAKo9Z,IAAQtD,mBAAqBr7Z,CACpC,GAAC,CAAA+D,IAAAA,QAAA/D,MAED,WACMuB,KAAKiga,MAITjga,KAAKiga,KAAW,EAChBjga,KAAKu+B,cAAc,IAAI43E,YAAY,UACrC,GAAC,CAAA3zG,IAAAA,OAAA/D,MAED,SAAKwC,GACCjB,KAAKshb,oBAAoB1pb,OAAS,IACpCoI,KAAKiga,KAAW,EAEhBjga,KAAKgga,IAAkB/+Z,GAEvBjB,KAAKu+B,cAAc,IAAI43E,YAAY,SAEvC,GAAC,CAAA3zG,IAAAA,EAAA/D,MAED,WACEyoI,GAAAA,EAAAA,EAAAA,WAAMo2R,GAAY,iBAElBt9Z,KAAKiga,KAAW,EAEZjga,KAAK0hR,UACP1hR,KAAKqtE,MAET,GAAC,CAAA7qE,IAEAujZ,GAAKtnZ,MAAN,SAAQ2ga,EAAehia,GACrB8pI,GAAAA,EAAAA,EAAAA,WAAM6+Q,GAAK,gBAAEqZ,EAAOhia,GAEhB4C,KAAKiga,MACHjga,KAAKy9Z,QAA0Bz9Z,KAAK62Z,IAAW7vL,eAIrDhnO,KAAKo9Z,IAAQmkB,gBAAgBnkb,EA5HH,KA8H1B4C,KAAKq9Z,MACP,GAAC,CAAA76Z,IAAAA,UAAA/D,MAED,SAAQotX,GACN3kP,GAAAA,EAAAA,EAAAA,WAAAA,UAAAA,MAAAA,KAAAA,KAAc2kP,GAEVA,EAAkBz9U,IAAI,aAAepuC,KAAK0hR,UAC5C1hR,KAAKqtE,OAGHw+S,EAAkBz9U,IAAI,kBACxBpuC,KAAKgga,KAET,GAAC,CAAAx9Z,IAEAw9Z,GAAgBvha,MAAjB,WAAuE,MAApDwC,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAgCi/Z,GAC3CryI,EAAiC,QAAnB,EAAA5sR,EAAQ4sR,mBAAW,QAAI1kO,IACrC3U,EAAOvzC,EAAQmyJ,SACjB/E,GACiB,IAAhBw/H,E7DtCM,K6DsCyBz/H,GACpCpuJ,KAAKo9Z,IAAQokB,cACTxhb,KAAKmjC,cACLnjC,KAAKyhb,2BApJiB,IAqJtBjtY,EACAq5O,GAIA7tR,KAAKiga,MACPjga,KAAKo9Z,IAAQmkB,gBAAgB,GAC7Bvhb,KAAKq9Z,MAET,KAAC,EAjI+B,CAAQvnC,GA6ExC9kT,EAtEUivV,GAsET3C,KAuDH,OAnI6ByC,GAAAA,CAA1Brha,GAAS,CAACkG,KAAMsW,WAAS,+BAE1B6kZ,GAAAA,CADCrha,GAAS,CAACkG,KAAM7G,OAAQm4J,UAAW,oBAAkB,oCAGtD6pQ,GAAAA,CADCrha,GAAS,CAACkG,KAAMyS,OAAQ6+I,UAAW,kCAAgC,iDAgI/DkrR,CACT,CcxJwDM,CCOpD,SAA0CC,SAqClCC,EAA2B9gb,OAAO,2BAKlC+gb,EAAwB,YAAA7la,EAAAA,EAAAA,GAAA,WAA9B,mBAEkB,OAFlBvR,EAAAA,KAAAA,+BACSyR,GACI,KAAK,CAmBlB,CADG,OAhBD3S,EAAAA,EAAAA,CAAAA,CAAA/G,IAAAA,oBAAA/D,MACA,WACEyoI,GAAAA,EAAAA,EAAAA,WAAAA,oBAAAA,OAAAA,GAAAA,EAAAA,EAAAA,WAAAA,oBAAAA,MAAAA,KAAAA,MACsC,MAAlClnI,KAAK4hb,KACP5hb,KAAK4hb,GAhDP,SAACr3a,GAIC,GAA2B,MAAvBA,EAAS69D,YACT79D,EAASu/F,aAAa,yBACxB,OAAO,WAAO,EAKhB,IAAK30F,KAAa2sa,0BAEX,CACL,IAAMC,EAAsB,WACzB5sa,KAAa2sa,0BAA0Bv3a,EAAS69D,WACnD,EAUA,OALAjzD,KAAKvR,iBACD,+BACAm+a,EACA,CAAC9uD,MAAM,IAEJ,WACL99W,KAAK+iB,oBACD,+BAAgC6pZ,EACtC,EAGF,OApBG5sa,KAAa2sa,0BAA0Bv3a,EAAS69D,YAoB5C,WAAO,CAChB,CAemC45W,CAAuBhib,MAE5D,GAAC,CAAAwC,IAAAA,uBAAA/D,MAED,WACEyoI,GAAAA,EAAAA,EAAAA,WAAAA,uBAAAA,OAAAA,GAAAA,EAAAA,EAAAA,WAAAA,uBAAAA,MAAAA,KAAAA,MAGsC,MAAlClnI,KAAK4hb,KACP5hb,KAAK4hb,KACL5hb,KAAK4hb,GAA4B,KAErC,KAAC,EApB2B,CAAQD,GAuBtC,SAtBUC,EAsBHC,CACT,CDxEII,CAA0BrkB,YEfnB,SAASskB,KACvB,IAAQz0T,GAAgBtvE,EAAAA,EAAAA,YAAWqvE,KAA3BC,YACAy1B,EAAcpiD,KAAdoiD,UACD5sB,EAAiC50G,EAAjBw0G,KAAiB,GAArB,GACb0uB,EAAwBrmJ,OAAO6/W,YAAY,IAAI5pP,gBAAgB8B,IAGZoS,EAAAhnH,GAAfi9B,EAAAA,EAAAA,WAAS,GAAM,GAAlDknG,EAAand,EAAA,GAAEuc,EAAgBvc,EAAA,GACS8X,EAAA9+H,GAAfi9B,EAAAA,EAAAA,WAAS,GAAM,GAAxCwjY,EAAQ3hS,EAAA,GAAE4hS,EAAW5hS,EAAA,GACuBovN,EAAAluV,GAAjBi9B,EAAAA,EAAAA,UAAS,SAAQ,GAA5C2kG,EAASssN,EAAA,GAAEyyE,EAAYzyE,EAAA,GACWE,EAAApuV,GAAfi9B,EAAAA,EAAAA,WAAS,GAAM,GAAlCkgG,EAAKixN,EAAA,GAAEhqN,EAAQgqN,EAAA,IAOtB1xT,EAAAA,EAAAA,YAAU,YvHsBJ,SAAsB8kG,GAC5B6B,GAAAA,GAAQx8G,MAAM,CACb8S,OAAQ,YACR8e,SAAU+oF,GAEZ,CuHzBEo/R,CAAap/R,GACbk/R,EAAYx+R,GAAWV,EAAWyB,GAAmBzB,EAAW0B,KAChEkB,EAAS3B,GAAMjB,EAAW0B,IAG1By9R,EAAah/R,GAAeH,GAE7B,GAAG,IAEH,IAAMq/R,EAAWz9T,GAAc,gCAE/B,OACCi3B,EAAAA,GAAAA,KAAA,OAAAn+H,UACCk+H,EAAAA,GAAAA,MAAC4jO,GAAQ,CAAA9hW,SAAA,EAERm+H,EAAAA,GAAAA,KAACymS,GAAK,CAAA5ka,UACLm+H,EAAAA,GAAAA,KAAA,gBACC5pI,IAAKgwa,EACL,UAAQ,GACR3gS,IAAI,GACJ,mBAAkB,KAClB,kBAAiB,OACjB,cAAa,OACb,oBAAmB+gS,EAEnBnc,GAAI,OACJ,WAAU,gCACV,WAAU,OACV1mB,SAAU,KACV,eAAcp8P,EACdj5I,MAAO,CACN8D,MAAO,OACPC,OAAQ,OACR45C,QAAS,OACT16C,eAAgB,SAChByoI,OAAQ,kBACRr2E,gBAAiB,oBAIpBq8E,EAAAA,GAAAA,KAAC0mS,GAAe,CAAA7ka,UACfm+H,EAAAA,GAAAA,KAAC0C,GAAkB,CAClBzrI,KAAMgpI,GACL,6EACAvuB,EAAYyuB,UAEbwC,cArDL,WACCuG,GAAiB,GACjBJ,GAAU3B,EAAW,eACtB,EAmDKhH,SAAUzuB,EAAYyuB,cAGxBH,EAAAA,GAAAA,KAAC4C,GAAiB,CACjBjhF,OAAQmoF,EACRjH,UAAWqG,EACXpG,MAAOA,EACP3C,SAAUzuB,EAAYyuB,eAK3B,CFzDAwmS,eAAepkb,OAAO,eAAgBw3X,IE2DtC,yBAAMpW,GAAW3rQ,GAAOqrC,IAAGvrB,KAAAA,GAAAh+B,EAAA,4FAENn2B,IAKf8iX,GAAQzuU,GAAOqrC,IAAGrrB,KAAAA,GAAAl+B,EAAA,yFAOlB4sV,GAAkB1uU,GAAOqrC,IAAGnrB,KAAAA,GAAAp+B,EAAA,gHCnGnB,SAAS8sV,KACvB,IAAQl1T,GAAgBtvE,EAAAA,EAAAA,YAAWqvE,KAA3BC,YAEgCib,EAAAhnH,GAAVi9B,EAAAA,EAAAA,YAAU,GAAjCikY,EAAOl6S,EAAA,GAAEm6S,EAAUn6S,EAAA,GAgE1B,OA9DAtqF,EAAAA,EAAAA,YAAU,YxK2KJ,SAA8B0kY,GACpC,IAAMC,EAAmBD,EAAU,SAAW,OAC9Cx/a,SAAS0/a,eAAe,qBAAqB34a,MAAM+S,SAAW2la,CAC/D,CwK7KEE,EAAqB,GAErB,IAAMC,EAAc,CACnB,CAAC,OAAQ,KAAM,OACf,CAAC,UAAW,KAAM,OAClB,CAAC,OAAQ,KAAM,OACf,CAAC,SAAU,KAAM,OACjB,CAAC,gBAAiB,KAAM,OACxB,CAAC,WAAY,KAAM,OACnB,CAAC,UAAW,KAAM,OAClB,CAAC,aAAc,KAAM,OACrB,CAAC,QAAS,KAAM,OAChB,CAAC,QAAS,KAAM,OAChB,CAAC,aAAc,KAAM,QAGhBvgS,E1H6IAP,G0H5IJtmJ,MAAM,MACNgG,QAAO,SAACusG,GAAI,MAAqB,KAAhBA,EAAKx/E,MAAa,IACrC8zH,EAAYnkH,QAGZ,IAAM2kZ,EAAgB,GACtBxgS,EAAYpgJ,SAAQ,SAAC6gb,GACpB,IAAMC,EAAeD,EAAMtnb,MAAM,KAC3Bwnb,EAASD,EAAa,GAAGx0Z,OACzB00Z,EAAaF,EAAa,GAE1BG,EADaN,EAAY1gU,MAAK,SAACihU,GAAI,OAAKA,EAAK,KAAOH,CAAM,IAC/B,GAC3BI,EAAM,GAAAjib,OAAM6hb,EAAM,KAAA7hb,OAAI+hb,EAAa,KAAA/hb,OAAI8hb,GAC7CJ,EAAcrmb,KAAK,CAAC4mb,EAAqB1nS,GAASqnS,EAAa,GAAI51T,EAAYyuB,UAAUrtH,OAASw0Z,EAAa,IAChH,IAEAR,GACC9mS,EAAAA,GAAAA,KAAA,OAAAn+H,SACEsla,EACC3mb,KAAI,SAAConb,GAAY,OACjB7nS,EAAAA,GAAAA,MAAC8nS,GAAe,CAAAhma,SAAA,EACfm+H,EAAAA,GAAAA,KAAC8nS,GAAgB,CAAAjma,SAAe+la,EAAa,MAC7C5nS,EAAAA,GAAAA,KAAC+nS,GAAa,CAAAlma,SACZula,EACCrhb,QAAO,SAACiib,GAAQ,OAAKA,EAAS,GAAGvpV,WAAWmpV,EAAa,GAAG,IAC5Dpnb,KAAI,SAACynb,GAAa,OAClBjoS,EAAAA,GAAAA,KAAC7mB,GAAI,CACJtqD,IzHhCqBs4E,EyHgCD8gS,EAAc,GzH/BhClgS,GAAQ,SAAUZ,EAAW,CAAC,EAAGp+B,IAClCjuB,UyH+BDt1F,OAAO,SACP8I,MAAO,CAAE+C,UAAW,SAAUqvI,eAAgB,QAAS7+H,UAGvDm+H,EAAAA,GAAAA,KAACkoS,GAAU,CAAArma,UACVm+H,EAAAA,GAAAA,KAACmoS,GAAW,CAAAtma,SAAEoma,EAAc,QAHxBA,EAAc,IzHnCvB,IAAyB9gS,CyHwCf,QAfWygS,EAAa,GAkBjB,MAIvB,GAAG,CAACl2T,KAGHquB,EAAAA,GAAAA,MAACqoS,GAAQ,CAAAvma,SAAA,EACRm+H,EAAAA,GAAAA,KAACqoS,GAAW,CAAC/jS,iBAAiB,KAC9BtE,EAAAA,GAAAA,KAACsoS,GAAU,CAAAzma,SACTgla,MAIL,CAEA,OAAMuB,GAAWpwU,GAAOqrC,IAAGvrB,KAAAA,GAAAh+B,EAAA,uEAMrBwuV,GAAatwU,GAAOqrC,IAAGrrB,KAAAA,GAAAl+B,EAAA,iFAGRn2B,IAEfkkX,GAAkB7vU,GAAOqrC,IAAGnrB,KAAAA,GAAAp+B,EAAA,QAE5BguV,GAAmB9vU,GAAO/sG,EAACmtH,KAAAA,GAAAt+B,EAAA,oMAW3BiuV,GAAgB/vU,GAAOqrC,IAAG/qB,KAAAA,GAAAx+B,EAAA,oGAO1BouV,GAAalwU,GAAOqrC,IAAG67N,KAAAA,GAAAplR,EAAA,yNAWvBquV,GAAcnwU,GAAO/sG,EAACk0W,KAAAA,GAAArlR,EAAA,gPC9HtBmwD,GAAW,MAEXC,GAAgD,EAAhDA,GAA0D,EAA1DA,GAAkE,EAClEO,GAAkB,EAAlBA,GAA0B,EAA1BA,GAAwC,EAAxCA,GAAyD,EAMzDQ,GAAe,EACfC,GAAmB,EACnBC,GAAe,EACfC,GAAY,EACZC,GAAW,EAQXU,GAAc,IA4BdwB,GAAoB,EACpBC,GAAe,EACfC,GAAe,EACfC,GAAgB,EAChBC,GAAoB,EACpBC,GAAsB,EACtBC,GAAoB,EACpBC,GAAwB,EACxBC,GAAoB,EACpBw6R,GAAiB,EAKjBt6R,GAAwB,IACxBC,GAAwB,IACxBC,GAAmC,IACnCC,GAAmC,IACnCC,GAA0B,IAC1BC,GAAiB,IACjBC,GAAsB,KACtBC,GAAyB,KACzBC,GAAgB,KAChBC,GAA6B,KAE7BE,GAA4B,KAE5BE,GAAe,KACfC,GAA4B,KAE5BE,GAA2B,KAE3BE,GAAmB,KAGnBG,GAAoB,KACpBC,GAAU,KACVC,GAAkB,KAClBC,GAAY,KACZC,GAAgB,KAGhBG,GAAqB,KAErBG,GAAa,KAGbG,GAAc,KACdC,GAAqB,KAOrBM,GAAuB,MACvBC,GAAwB,MACxBC,GAAwB,MACxBC,GAAwB,MAsBxBsB,GAAmB,MAUnBI,GAAsB,KACtBC,GAAoB,KACpBC,GAAoB,KACpBC,GAAsB,KACtBC,GAAkB,KAClBC,GAAmB,KASnBO,GAAe,KAOfK,GAAe,GACfC,GAAiB,OACjBC,GAAuB,cACvB80R,GAAsB,aACtBC,GAA4B,oBAE5BC,GAAiB,SACjBC,GAAe,OAEfC,GAAkB,SAClBC,GAAc,KAGdj1R,GAAgB,KA0BhBe,GAAkB,MAWlBU,GAAQ,SAERC,GAAe,KAEfwzR,GAAwB,IACxBC,GAAyB,KAMzBxzR,GAAe,oBAAAA,IAAA7mJ,EAAA,KAAA6mJ,EAAA,CA6EnB,OA7EmB/nJ,EAAA+nJ,EAAA,EAAA9uJ,IAAA,mBAAA/D,MAEpB,SAAkBmG,EAAMqpC,QAEE7jC,IAApBpK,KAAK2qI,aAA2B3qI,KAAK2qI,WAAa,CAAC,GAExD,IAAMniG,EAAYxoC,KAAK2qI,gBAEIvgI,IAAtBo+B,EAAW5jC,KAEf4jC,EAAW5jC,GAAS,KAI4B,IAA5C4jC,EAAW5jC,GAAO4H,QAASyhC,IAE/BzF,EAAW5jC,GAAO9H,KAAMmxC,EAI1B,GAAC,CAAAzrC,IAAA,mBAAA/D,MAED,SAAkBmG,EAAMqpC,GAEvB,QAAyB7jC,IAApBpK,KAAK2qI,WAA2B,OAAO,EAE5C,IAAMniG,EAAYxoC,KAAK2qI,WAEvB,YAA6BvgI,IAAtBo+B,EAAW5jC,KAAoE,IAA5C4jC,EAAW5jC,GAAO4H,QAASyhC,EAEtE,GAAC,CAAAzrC,IAAA,sBAAA/D,MAED,SAAqBmG,EAAMqpC,GAE1B,QAAyB7jC,IAApBpK,KAAK2qI,WAAV,CAEA,IACM4mB,EADYvxJ,KAAK2qI,WACU/lI,GAEjC,QAAuBwF,IAAlBmnJ,EAA8B,CAElC,IAAM3iJ,EAAQ2iJ,EAAc/kJ,QAASyhC,IAEpB,IAAZr/B,GAEJ2iJ,EAAc1jG,OAAQj/C,EAAO,EAI/B,CAf2C,CAiB5C,GAAC,CAAApM,IAAA,gBAAA/D,MAED,SAAe8pC,GAEd,QAAyBn+B,IAApBpK,KAAK2qI,WAAV,CAEA,IACM4mB,EADYvxJ,KAAK2qI,WACUpiG,EAAM3jC,MAEvC,QAAuBwF,IAAlBmnJ,EAA8B,CAElChpH,EAAMhnC,OAASvB,KAKf,IAFA,IAAM+C,EAAQwuJ,EAAc3gJ,MAAO,GAEzBlU,EAAI,EAAGmK,EAAI9D,EAAMnL,OAAQ8E,EAAImK,EAAGnK,IAEzCqG,EAAOrG,GAAIG,KAAMmD,KAAMuoC,GAIxBA,EAAMhnC,OAAS,IAEhB,CApB2C,CAsB5C,KAAC+vJ,CAAA,CA7EmB,GAiFfE,GAAO,CAAE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAKngDE,GAAUz0J,KAAK00J,GAAK,IACpBC,GAAU,IAAM30J,KAAK00J,GAG3B,SAASE,KAER,IAAMC,EAAqB,WAAhB70J,KAAKuxC,SAAwB,EAClCujH,EAAqB,WAAhB90J,KAAKuxC,SAAwB,EAClCwjH,EAAqB,WAAhB/0J,KAAKuxC,SAAwB,EAClCyjH,EAAqB,WAAhBh1J,KAAKuxC,SAAwB,EAOxC,OANagjH,GAAW,IAALM,GAAcN,GAAMM,GAAM,EAAI,KAASN,GAAMM,GAAM,GAAK,KAASN,GAAMM,GAAM,GAAK,KAAS,IAC5GN,GAAW,IAALO,GAAcP,GAAMO,GAAM,EAAI,KAAS,IAAMP,GAAMO,GAAM,GAAK,GAAO,IAASP,GAAMO,GAAM,GAAK,KAAS,IAC9GP,GAAW,GAALQ,EAAY,KAASR,GAAMQ,GAAM,EAAI,KAAS,IAAMR,GAAMQ,GAAM,GAAK,KAASR,GAAMQ,GAAM,GAAK,KACrGR,GAAW,IAALS,GAAcT,GAAMS,GAAM,EAAI,KAAST,GAAMS,GAAM,GAAK,KAAST,GAAMS,GAAM,GAAK,MAG9Ej6J,aAEb,CAEA,SAASk6J,GAAOzzJ,EAAOysC,EAAKhuC,GAE3B,OAAOD,KAAKC,IAAKguC,EAAKjuC,KAAKiuC,IAAKhuC,EAAKuB,GAEtC,CAIA,SAAS0zJ,GAAiBprJ,EAAGD,GAE5B,OAAWC,EAAID,EAAMA,GAAMA,CAE5B,CAyBA,SAASsrJ,GAAMl2J,EAAGmL,EAAG/P,GAEpB,OAAS,EAAIA,GAAM4E,EAAI5E,EAAI+P,CAE5B,CAyFA,SAASgrJ,GAAc5zJ,GAEtB,OAAqC,KAA5BA,EAAUA,EAAQ,IAAyB,IAAVA,CAE3C,CAQA,SAAS+zJ,GAAiB/zJ,GAEzB,OAAOxB,KAAKs1J,IAAK,EAAGt1J,KAAKwf,MAAOxf,KAAK+W,IAAKvV,GAAUxB,KAAKo+B,KAE1D,CA0DA,SAAS65H,GAAaz2J,EAAOsE,GAE5B,OAASA,EAAMoX,aAEd,KAAK06I,aAEJ,OAAOp2J,EAER,KAAK8oG,YAEJ,OAAO9oG,EAAQ,WAEhB,KAAKq2J,YAEJ,OAAOr2J,EAAQ,MAEhB,KAAK82G,WAEJ,OAAO92G,EAAQ,IAEhB,KAAKu7J,WAEJ,OAAO/8J,KAAKC,IAAKuB,EAAQ,YAAgB,GAE1C,KAAKu2J,WAEJ,OAAO/3J,KAAKC,IAAKuB,EAAQ,OAAW,GAErC,KAAKw2J,UAEJ,OAAOh4J,KAAKC,IAAKuB,EAAQ,KAAS,GAEnC,QAEC,MAAM,IAAIX,MAAO,2BAIpB,CAEA,SAAS+iH,GAAWpiH,EAAOsE,GAE1B,OAASA,EAAMoX,aAEd,KAAK06I,aAEJ,OAAOp2J,EAER,KAAK8oG,YAEJ,OAAOtqG,KAAK83J,MAAe,WAARt2J,GAEpB,KAAKq2J,YAEJ,OAAO73J,KAAK83J,MAAe,MAARt2J,GAEpB,KAAK82G,WAEJ,OAAOt4G,KAAK83J,MAAe,IAARt2J,GAEpB,KAAKu7J,WAEJ,OAAO/8J,KAAK83J,MAAe,WAARt2J,GAEpB,KAAKu2J,WAEJ,OAAO/3J,KAAK83J,MAAe,MAARt2J,GAEpB,KAAKw2J,UAEJ,OAAOh4J,KAAK83J,MAAe,IAARt2J,GAEpB,QAEC,MAAM,IAAIX,MAAO,2BAIpB,CAEA,IA2BMq3J,GAAO,WAEZ,SAAAA,IAA4B,IAAfj5J,EAAC+D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAA0qJ,GAExBA,EAAQv4J,UAAU25J,WAAY,EAE9Bv2J,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,CAEV,CAgdC,OAhdAkC,EAAA4rJ,EAAA,EAAA3yJ,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAK9D,CAEb,EAAC+yB,IAED,SAAWxwB,GAEVuB,KAAK9D,EAAIuC,CAEV,GAAC,CAAA+D,IAAA,SAAAutB,IAED,WAEC,OAAO/vB,KAAKqH,CAEb,EAAC4nB,IAED,SAAYxwB,GAEXuB,KAAKqH,EAAI5I,CAEV,GAAC,CAAA+D,IAAA,MAAA/D,MAED,SAAKvC,EAAGmL,GAKP,OAHArH,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EAEFrH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW22J,GAKV,OAHAp1J,KAAK9D,EAAIk5J,EACTp1J,KAAKqH,EAAI+tJ,EAEFp1J,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMvC,GAIL,OAFA8D,KAAK9D,EAAIA,EAEF8D,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM4I,GAIL,OAFArH,KAAKqH,EAAIA,EAEFrH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,EAAOnQ,GAEpB,OAASmQ,GAER,KAAK,EAAG5O,KAAK9D,EAAIuC,EAAO,MACxB,KAAK,EAAGuB,KAAKqH,EAAI5I,EAAO,MACxB,QAAS,MAAM,IAAIX,MAAO,0BAA4B8Q,GAIvD,OAAO5O,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,GAEb,OAASA,GAER,KAAK,EAAG,OAAO5O,KAAK9D,EACpB,KAAK,EAAG,OAAO8D,KAAKqH,EACpB,QAAS,MAAM,IAAIvJ,MAAO,0BAA4B8Q,GAIxD,GAAC,CAAApM,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAK9D,EAAG8D,KAAKqH,EAE3C,GAAC,CAAA7E,IAAA,OAAA/D,MAED,SAAM0I,GAKL,OAHAnH,KAAK9D,EAAIiL,EAAEjL,EACX8D,KAAKqH,EAAIF,EAAEE,EAEJrH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAKJ,OAHAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EAELrH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAKV,OAHAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAKd,OAHAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EAEVrH,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiB0I,EAAG1L,GAKnB,OAHAuE,KAAK9D,GAAKiL,EAAEjL,EAAIT,EAChBuE,KAAKqH,GAAKF,EAAEE,EAAI5L,EAETuE,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAKJ,OAHAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EAELrH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAKV,OAHAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAKd,OAHAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EAEVrH,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU0I,GAKT,OAHAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EAELrH,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB22J,GAKf,OAHAp1J,KAAK9D,GAAKk5J,EACVp1J,KAAKqH,GAAK+tJ,EAEHp1J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0I,GAKP,OAHAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EAELrH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc22J,GAEb,OAAOp1J,KAAKu1J,eAAgB,EAAIH,EAEjC,GAAC,CAAA5yJ,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM5K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EACrBf,EAAIQ,EAAEk/H,SAKZ,OAHAhmI,KAAK9D,EAAIoK,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GACtCtG,KAAKqH,EAAIf,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAE/BtG,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAKJ,OAHAnH,KAAK9D,EAAIe,KAAKiuC,IAAKlrC,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKiuC,IAAKlrC,KAAKqH,EAAGF,EAAEE,GAEtBrH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAKJ,OAHAnH,KAAK9D,EAAIe,KAAKC,IAAK8C,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKC,IAAK8C,KAAKqH,EAAGF,EAAEE,GAEtBrH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOysC,EAAKhuC,GAOX,OAHA8C,KAAK9D,EAAIe,KAAKC,IAAKguC,EAAIhvC,EAAGe,KAAKiuC,IAAKhuC,EAAIhB,EAAG8D,KAAK9D,IAChD8D,KAAKqH,EAAIpK,KAAKC,IAAKguC,EAAI7jC,EAAGpK,KAAKiuC,IAAKhuC,EAAImK,EAAGrH,KAAKqH,IAEzCrH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAa+2J,EAAQC,GAKpB,OAHAz1J,KAAK9D,EAAIe,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAK9D,IAClD8D,KAAKqH,EAAIpK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKqH,IAE3CrH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAaysC,EAAKhuC,GAEjB,IAAMtF,EAASoI,KAAKpI,SAEpB,OAAOoI,KAAK01J,aAAc99J,GAAU,GAAI29J,eAAgBt4J,KAAKC,IAAKguC,EAAKjuC,KAAKiuC,IAAKhuC,EAAKtF,IAEvF,GAAC,CAAA4K,IAAA,QAAA/D,MAED,WAKC,OAHAuB,KAAK9D,EAAIe,KAAKwf,MAAOzc,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAKwf,MAAOzc,KAAKqH,GAEnBrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAKC,OAHAuB,KAAK9D,EAAIe,KAAKurD,KAAMxoD,KAAK9D,GACzB8D,KAAKqH,EAAIpK,KAAKurD,KAAMxoD,KAAKqH,GAElBrH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAKC,OAHAuB,KAAK9D,EAAIe,KAAK83J,MAAO/0J,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAK83J,MAAO/0J,KAAKqH,GAEnBrH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAKC,OAHAuB,KAAK9D,EAAIe,KAAK8nb,MAAO/kb,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAK8nb,MAAO/kb,KAAKqH,GAEnBrH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAKC,OAHAuB,KAAK9D,GAAM8D,KAAK9D,EAChB8D,KAAKqH,GAAMrH,KAAKqH,EAETrH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAEJ,OAAOnH,KAAK9D,EAAIiL,EAAEjL,EAAI8D,KAAKqH,EAAIF,EAAEE,CAElC,GAAC,CAAA7E,IAAA,QAAA/D,MAED,SAAO0I,GAEN,OAAOnH,KAAK9D,EAAIiL,EAAEE,EAAIrH,KAAKqH,EAAIF,EAAEjL,CAElC,GAAC,CAAAsG,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,CAExC,GAAC,CAAA7E,IAAA,SAAA/D,MAED,WAEC,OAAOxB,KAAK04J,KAAM31J,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,EAEnD,GAAC,CAAA7E,IAAA,kBAAA/D,MAED,WAEC,OAAOxB,KAAK4f,IAAK7c,KAAK9D,GAAMe,KAAK4f,IAAK7c,KAAKqH,EAE5C,GAAC,CAAA7E,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAK01J,aAAc11J,KAAKpI,UAAY,EAE5C,GAAC,CAAA4K,IAAA,QAAA/D,MAED,WAIC,IAAMm3J,EAAQ34J,KAAK44J,OAAS71J,KAAKqH,GAAKrH,KAAK9D,GAAMe,KAAK00J,GAEtD,OAAOiE,CAER,GAAC,CAAApzJ,IAAA,UAAA/D,MAED,SAAS0I,GAER,IAAMshK,EAAcxrK,KAAK04J,KAAM31J,KAAK0oK,WAAavhK,EAAEuhK,YAEnD,GAAqB,IAAhBD,EAAoB,OAAOxrK,KAAK00J,GAAK,EAE1C,IAAM8H,EAAQz5J,KAAKikK,IAAK98J,GAAMshK,EAI9B,OAAOxrK,KAAK4iK,KAAM3N,GAAOuH,GAAS,EAAG,GAEtC,GAAC,CAAAj3J,IAAA,aAAA/D,MAED,SAAY0I,GAEX,OAAOlK,KAAK04J,KAAM31J,KAAK81J,kBAAmB3uJ,GAE3C,GAAC,CAAA3E,IAAA,oBAAA/D,MAED,SAAmB0I,GAElB,IAAMmnI,EAAKtuI,KAAK9D,EAAIiL,EAAEjL,EAAGmyI,EAAKruI,KAAKqH,EAAIF,EAAEE,EACzC,OAAOinI,EAAKA,EAAKD,EAAKA,CAEvB,GAAC,CAAA7rI,IAAA,sBAAA/D,MAED,SAAqB0I,GAEpB,OAAOlK,KAAK4f,IAAK7c,KAAK9D,EAAIiL,EAAEjL,GAAMe,KAAK4f,IAAK7c,KAAKqH,EAAIF,EAAEE,EAExD,GAAC,CAAA7E,IAAA,YAAA/D,MAED,SAAW7G,GAEV,OAAOoI,KAAK6gH,YAAY00C,eAAgB39J,EAEzC,GAAC,CAAA4K,IAAA,OAAA/D,MAED,SAAM0I,EAAG4uJ,GAKR,OAHA/1J,KAAK9D,IAAOiL,EAAEjL,EAAI8D,KAAK9D,GAAM65J,EAC7B/1J,KAAKqH,IAAOF,EAAEE,EAAIrH,KAAKqH,GAAM0uJ,EAEtB/1J,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAau3J,EAAIC,EAAIF,GAKpB,OAHA/1J,KAAK9D,EAAI85J,EAAG95J,GAAM+5J,EAAG/5J,EAAI85J,EAAG95J,GAAM65J,EAClC/1J,KAAKqH,EAAI2uJ,EAAG3uJ,GAAM4uJ,EAAG5uJ,EAAI2uJ,EAAG3uJ,GAAM0uJ,EAE3B/1J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0I,GAEP,OAAWA,EAAEjL,IAAM8D,KAAK9D,GAASiL,EAAEE,IAAMrH,KAAKqH,CAE/C,GAAC,CAAA7E,IAAA,YAAA/D,MAED,SAAWsE,GAAoB,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAK1B,OAHAD,KAAK9D,EAAI6G,EAAOgnC,GAChB/pC,KAAKqH,EAAItE,EAAOgnC,EAAS,GAElB/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAK7B,OAHA8C,EAAOgnC,GAAW/pC,KAAK9D,EACvB6G,EAAOgnC,EAAS,GAAM/pC,KAAKqH,EAEpBtE,CAER,GAAC,CAAAP,IAAA,sBAAA/D,MAED,SAAqBy3J,EAAWtnJ,GAK/B,OAHA5O,KAAK9D,EAAIg6J,EAAUC,KAAMvnJ,GACzB5O,KAAKqH,EAAI6uJ,EAAUE,KAAMxnJ,GAElB5O,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc43J,EAAQT,GAErB,IAAM35J,EAAIgB,KAAKk3J,IAAKyB,GAASn6J,EAAIwB,KAAKm3J,IAAKwB,GAErC15J,EAAI8D,KAAK9D,EAAIm6J,EAAOn6J,EACpBmL,EAAIrH,KAAKqH,EAAIgvJ,EAAOhvJ,EAK1B,OAHArH,KAAK9D,EAAIA,EAAID,EAAIoL,EAAI5L,EAAI46J,EAAOn6J,EAChC8D,KAAKqH,EAAInL,EAAIT,EAAI4L,EAAIpL,EAAIo6J,EAAOhvJ,EAEzBrH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAKC,OAHAuB,KAAK9D,EAAIe,KAAKuxC,SACdxuC,KAAKqH,EAAIpK,KAAKuxC,SAEPxuC,IAER,GAAC,CAAAwC,IAEE1B,OAAOrE,SAAQgC,MAAAq+E,EAAAA,MAAlB,SAAAr+E,IAAA,OAAAq+E,EAAAA,MAAA,SAAAw5E,GAAA,cAAAA,EAAArzJ,KAAAqzJ,EAAApzJ,MAAA,OAEC,OAFDozJ,EAAApzJ,KAAA,EAEOlD,KAAK9D,EAAC,OACZ,OADYo6J,EAAApzJ,KAAA,EACNlD,KAAKqH,EAAC,wBAAAivJ,EAAA7nF,OAAA,GAAAhwE,EAAA,YAEZ02J,CAAA,CAzdW,GA6dPqB,GAAO,WAEZ,SAAAA,EAAaC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAAMxsJ,EAAA,KAAA+rJ,GAE1DA,EAAQ55J,UAAUi9J,WAAY,EAE9B75J,KAAKgmI,SAAW,CAEf,EAAG,EAAG,EACN,EAAG,EAAG,EACN,EAAG,EAAG,QAIM57H,IAARqsJ,GAEJz2J,KAAKivB,IAAKwnI,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAIpD,CAyWC,OAzWA1tJ,EAAAitJ,EAAA,EAAAh0J,IAAA,MAAA/D,MAED,SAAKg4J,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAE5C,IAAMpuH,EAAK7oC,KAAKgmI,SAMhB,OAJAn9F,EAAI,GAAM4tH,EAAK5tH,EAAI,GAAM+tH,EAAK/tH,EAAI,GAAMkuH,EACxCluH,EAAI,GAAM6tH,EAAK7tH,EAAI,GAAMguH,EAAKhuH,EAAI,GAAMmuH,EACxCnuH,EAAI,GAAM8tH,EAAK9tH,EAAI,GAAMiuH,EAAKjuH,EAAI,GAAMouH,EAEjCj3J,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,WAUC,OARAuB,KAAKivB,IAEJ,EAAG,EAAG,EACN,EAAG,EAAG,EACN,EAAG,EAAG,GAIAjvB,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMqI,GAEL,IAAM+hC,EAAK7oC,KAAKgmI,SACV59F,EAAKthC,EAAEk/H,SAMb,OAJAn9F,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GACpDS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GACpDS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAE7CpoC,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcy4J,EAAOC,EAAOC,GAM3B,OAJAF,EAAMG,qBAAsBr3J,KAAM,GAClCm3J,EAAME,qBAAsBr3J,KAAM,GAClCo3J,EAAMC,qBAAsBr3J,KAAM,GAE3BA,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBqI,GAEf,IAAMshC,EAAKthC,EAAEk/H,SAUb,OARAhmI,KAAKivB,IAEJmZ,EAAI,GAAKA,EAAI,GAAKA,EAAI,GACtBA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GACtBA,EAAI,GAAKA,EAAI,GAAKA,EAAI,KAIhBpoC,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAUqI,GAET,OAAO9G,KAAKs3J,iBAAkBt3J,KAAM8G,EAErC,GAAC,CAAAtE,IAAA,cAAA/D,MAED,SAAaqI,GAEZ,OAAO9G,KAAKs3J,iBAAkBxwJ,EAAG9G,KAElC,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBzC,EAAGuK,GAEpB,IAAMsgC,EAAK7qC,EAAEgqI,SACPl/F,EAAKvgC,EAAEy/H,SACPn9F,EAAK7oC,KAAKgmI,SAEVuxB,EAAM1wH,EAAI,GAAK2wH,EAAM3wH,EAAI,GAAK4wH,EAAM5wH,EAAI,GACxC6wH,EAAM7wH,EAAI,GAAK8wH,EAAM9wH,EAAI,GAAK+wH,EAAM/wH,EAAI,GACxCgxH,EAAMhxH,EAAI,GAAKixH,EAAMjxH,EAAI,GAAKkxH,EAAMlxH,EAAI,GAExCmxH,EAAMlxH,EAAI,GAAKmxH,EAAMnxH,EAAI,GAAKoxH,EAAMpxH,EAAI,GACxCqxH,EAAMrxH,EAAI,GAAKsxH,EAAMtxH,EAAI,GAAKuxH,EAAMvxH,EAAI,GACxCwxH,EAAMxxH,EAAI,GAAKyxH,EAAMzxH,EAAI,GAAK0xH,EAAM1xH,EAAI,GAc9C,OAZA+B,EAAI,GAAM0uH,EAAMS,EAAMR,EAAMW,EAAMV,EAAMa,EACxCzvH,EAAI,GAAM0uH,EAAMU,EAAMT,EAAMY,EAAMX,EAAMc,EACxC1vH,EAAI,GAAM0uH,EAAMW,EAAMV,EAAMa,EAAMZ,EAAMe,EAExC3vH,EAAI,GAAM6uH,EAAMM,EAAML,EAAMQ,EAAMP,EAAMU,EACxCzvH,EAAI,GAAM6uH,EAAMO,EAAMN,EAAMS,EAAMR,EAAMW,EACxC1vH,EAAI,GAAM6uH,EAAMQ,EAAMP,EAAMU,EAAMT,EAAMY,EAExC3vH,EAAI,GAAMgvH,EAAMG,EAAMF,EAAMK,EAAMJ,EAAMO,EACxCzvH,EAAI,GAAMgvH,EAAMI,EAAMH,EAAMM,EAAML,EAAMQ,EACxC1vH,EAAI,GAAMgvH,EAAMK,EAAMJ,EAAMO,EAAMN,EAAMS,EAEjCx4J,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBhD,GAEf,IAAMotC,EAAK7oC,KAAKgmI,SAMhB,OAJAn9F,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EACvCotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EACvCotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAEhCuE,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAEC,IAAMoqC,EAAK7oC,KAAKgmI,SAEVhqI,EAAI6sC,EAAI,GAAKtiC,EAAIsiC,EAAI,GAAK5sC,EAAI4sC,EAAI,GACvCriC,EAAIqiC,EAAI,GAAKviC,EAAIuiC,EAAI,GAAKpiC,EAAIoiC,EAAI,GAClCniC,EAAImiC,EAAI,GAAKliC,EAAIkiC,EAAI,GAAKnsC,EAAImsC,EAAI,GAEnC,OAAO7sC,EAAIsK,EAAI5J,EAAIV,EAAIyK,EAAIE,EAAIJ,EAAIC,EAAI9J,EAAI6J,EAAIE,EAAIC,EAAIzK,EAAIuK,EAAIG,EAAI1K,EAAIqK,EAAII,CAE5E,GAAC,CAAAlE,IAAA,SAAA/D,MAED,WAEC,IAAMoqC,EAAK7oC,KAAKgmI,SAEfywB,EAAM5tH,EAAI,GAAK+tH,EAAM/tH,EAAI,GAAKkuH,EAAMluH,EAAI,GACxC6tH,EAAM7tH,EAAI,GAAKguH,EAAMhuH,EAAI,GAAKmuH,EAAMnuH,EAAI,GACxC8tH,EAAM9tH,EAAI,GAAKiuH,EAAMjuH,EAAI,GAAKouH,EAAMpuH,EAAI,GAExC4vH,EAAMxB,EAAMJ,EAAMG,EAAMF,EACxB4B,EAAM1B,EAAML,EAAMM,EAAMP,EACxBiC,EAAM7B,EAAMJ,EAAMG,EAAMF,EAExBiC,EAAMnC,EAAMgC,EAAM7B,EAAM8B,EAAM3B,EAAM4B,EAErC,GAAa,IAARC,EAAY,OAAO54J,KAAKivB,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAE1D,IAAM4pI,EAAS,EAAID,EAcnB,OAZA/vH,EAAI,GAAM4vH,EAAMI,EAChBhwH,EAAI,IAAQkuH,EAAMD,EAAMG,EAAML,GAAQiC,EACtChwH,EAAI,IAAQmuH,EAAMJ,EAAMG,EAAMF,GAAQgC,EAEtChwH,EAAI,GAAM6vH,EAAMG,EAChBhwH,EAAI,IAAQouH,EAAMR,EAAMM,EAAMJ,GAAQkC,EACtChwH,EAAI,IAAQkuH,EAAML,EAAMM,EAAMP,GAAQoC,EAEtChwH,EAAI,GAAM8vH,EAAME,EAChBhwH,EAAI,IAAQ+tH,EAAMD,EAAMG,EAAML,GAAQoC,EACtChwH,EAAI,IAAQguH,EAAMJ,EAAMG,EAAMF,GAAQmC,EAE/B74J,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,WAEC,IAAIq6J,EACEhyJ,EAAI9G,KAAKgmI,SAMf,OAJA8yB,EAAMhyJ,EAAG,GAAKA,EAAG,GAAMA,EAAG,GAAKA,EAAG,GAAMgyJ,EACxCA,EAAMhyJ,EAAG,GAAKA,EAAG,GAAMA,EAAG,GAAKA,EAAG,GAAMgyJ,EACxCA,EAAMhyJ,EAAG,GAAKA,EAAG,GAAMA,EAAG,GAAKA,EAAG,GAAMgyJ,EAEjC94J,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBs6J,GAEhB,OAAO/4J,KAAKg5J,eAAgBD,GAAUjpB,SAASmpB,WAEhD,GAAC,CAAAz2J,IAAA,qBAAA/D,MAED,SAAoByI,GAEnB,IAAMJ,EAAI9G,KAAKgmI,SAYf,OAVA9+H,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GACZI,EAAG,GAAMJ,EAAG,GAEL9G,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBy6J,EAAIC,EAAIC,EAAIC,EAAIC,EAAUC,EAAIC,GAE7C,IAAMv9J,EAAIgB,KAAKk3J,IAAKmF,GACd79J,EAAIwB,KAAKm3J,IAAKkF,GAQpB,OANAt5J,KAAKivB,IACJmqI,EAAKn9J,EAAGm9J,EAAK39J,GAAK29J,GAAOn9J,EAAIs9J,EAAK99J,EAAI+9J,GAAOD,EAAKL,GAChDG,EAAK59J,EAAG49J,EAAKp9J,GAAKo9J,IAAS59J,EAAI89J,EAAKt9J,EAAIu9J,GAAOA,EAAKL,EACtD,EAAG,EAAG,GAGAn5J,IAER,GAEA,CAAAwC,IAAA,QAAA/D,MAEA,SAAO26J,EAAIC,GAIV,OAFAr5J,KAAKs2K,YAAa0uQ,GAAIr+P,UAAWvtB,EAAIC,IAE9Br5J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQg7J,GAIP,OAFAz5J,KAAKs2K,YAAa0uQ,GAAIC,cAAgBxrR,IAE/Bz5J,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWy6J,EAAIC,GAId,OAFAn5J,KAAKs2K,YAAa0uQ,GAAIt+P,gBAAiBxtB,EAAIC,IAEpCn5J,IAER,GAEA,CAAAwC,IAAA,kBAAA/D,MAEA,SAAiBvC,EAAGmL,GAwBnB,OAtBKnL,EAAEq6J,UAENv2J,KAAKivB,IAEJ,EAAG,EAAG/yB,EAAEA,EACR,EAAG,EAAGA,EAAEmL,EACR,EAAG,EAAG,GAMPrH,KAAKivB,IAEJ,EAAG,EAAG/yB,EACN,EAAG,EAAGmL,EACN,EAAG,EAAG,GAMDrH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcg7J,GAIb,IAAMx9J,EAAIgB,KAAKk3J,IAAKsF,GACdh+J,EAAIwB,KAAKm3J,IAAKqF,GAUpB,OARAz5J,KAAKivB,IAEJhzB,GAAKR,EAAG,EACRA,EAAGQ,EAAG,EACN,EAAG,EAAG,GAIA+D,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWvC,EAAGmL,GAUb,OARArH,KAAKivB,IAEJ/yB,EAAG,EAAG,EACN,EAAGmL,EAAG,EACN,EAAG,EAAG,GAIArH,IAER,GAEA,CAAAwC,IAAA,SAAA/D,MAEA,SAAQi7J,GAKP,IAHA,IAAM7wH,EAAK7oC,KAAKgmI,SACV59F,EAAKsxH,EAAO1zB,SAERtpI,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAKmsC,EAAInsC,KAAQ0rC,EAAI1rC,GAAM,OAAO,EAInC,OAAO,CAER,GAAC,CAAA8F,IAAA,YAAA/D,MAED,SAAWsE,GAEV,IAF8B,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEhBvD,EAAI,EAAGA,EAAI,EAAGA,IAEvBsD,KAAKgmI,SAAUtpI,GAAMqG,EAAOrG,EAAIqtC,GAIjC,OAAO/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEvB4oC,EAAK7oC,KAAKgmI,SAchB,OAZAjjI,EAAOgnC,GAAWlB,EAAI,GACtB9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAE1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAE1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAEnB9lC,CAER,GAAC,CAAAP,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcw/I,UAAW35J,KAAKgmI,SAE/C,KAACwwB,CAAA,CA7XW,GAiYPwuR,GAAoB,IAAIxuR,GAE9B,SAASoD,GAAkB72J,GAI1B,IAAM,IAAIrG,EAAIqG,EAAMnL,OAAS,EAAG8E,GAAK,IAAMA,EAE1C,GAAKqG,EAAOrG,IAAO,MAAQ,OAAO,EAInC,OAAO,CAER,CAGYu4J,UACC1/C,WACOwkD,kBACP/E,WACCF,YACDkF,WACCzyD,YACCstD,aACAoF,aASf,SAASz0G,GAAiBrsD,GAEzB,OAAOmK,SAASkiD,gBAAiB,+BAAgCrsD,EAElE,CAUA,IAAMg9F,GAAS,CAAC,EAEhB,SAAS+uV,GAAUxkY,GAEbA,KAAWy1C,KAEhBA,GAAQz1C,IAAY,EAEpB3sC,QAAQk/C,KAAMvS,GAEf,CAcA,IA6HIg4F,GA7HEysS,IAAiD,IAAI3uR,IAAUvnI,IACpE,SAAW,QAAU,EACrB,SAAW,SAAW,EACtB,SAAW,SAAW,UAGjBm2Z,IAAiD,IAAI5uR,IAAUvnI,IACpE,WAAa,SAAW,GACtB,SAAW,UAAW,GACtB,UAAa,SAAW,WAOrBo2Z,IAAY1pa,EAAA2pa,GAAG,CAAC,EACnB71R,GAAwB,CACzB4pO,SAAUorD,GACVc,UAAWZ,GACXa,YAAa,SAAEh+Y,GAAK,OAAMA,CAAK,EAC/Bi+Y,cAAe,SAAEj+Y,GAAK,OAAMA,CAAK,IACjC7rB,EAAA2pa,GACC91R,GAAkB,CACnB6pO,SAAUqrD,GACVa,UAAWZ,GACXa,YAAa,SAAEh+Y,GAAK,OAAMA,EAAMyrQ,qBAAqB,EACrDwyI,cAAe,SAAEj+Y,GAAK,OAAMA,EAAMk+Y,qBAAqB,IACvD/pa,EAAA2pa,GACCd,GAA6B,CAC9BnrD,SAAUorD,GACVc,UAAWX,GACXY,YAAa,SAAEh+Y,GAAK,OAAMA,EAAMk4H,aAAc0lR,GAAkC,EAChFK,cAAe,SAAEj+Y,GAAK,OAAMA,EAAMk4H,aAAcylR,GAAkC,IAClFxpa,EAAA2pa,GACCf,GAAuB,CACxBlrD,SAAUqrD,GACVa,UAAWX,GACXY,YAAa,SAAEh+Y,GAAK,OAAMA,EAAMyrQ,sBAAsBvzI,aAAc0lR,GAAkC,EACtGK,cAAe,SAAEj+Y,GAAK,OAAMA,EAAMk4H,aAAcylR,IAAmCO,qBAAqB,IACxGJ,IAGIK,GAAiC,IAAI35Z,IAAK,CAAEyjI,GAAsB+0R,KAElEhqR,GAAkB,CAEvBq2B,SAAS,EAET+0P,mBAAoBn2R,GAEpB,qBAAIiL,GAEH,OAAO16J,KAAK4lb,kBAEb,EAEA,qBAAIlrR,CAAmBC,GAEtB,IAAOgrR,GAA+Bv3Y,IAAKusH,GAE1C,MAAM,IAAI78J,MAAM,qCAAD2D,OAAwCk5J,EAAU,OAIlE36J,KAAK4lb,mBAAqBjrR,CAE3B,EAEAC,QAAS,SAAWpzH,EAAOqzH,EAAkBC,GAE5C,IAAsB,IAAjB96J,KAAK6wL,SAAqBh2B,IAAqBC,IAAsBD,IAAsBC,EAE/F,OAAOtzH,EAIR,IAAMq+Y,EAAoBR,GAAcxqR,GAAmB2qR,YAG3D,OAAOM,EAFqBT,GAAcvqR,GAAmB2qR,eAEjCI,EAAmBr+Y,GAEhD,EAEAuzH,sBAAuB,SAAWvzH,EAAOszH,GAExC,OAAO96J,KAAK46J,QAASpzH,EAAOxnC,KAAK4lb,mBAAoB9qR,EAEtD,EAEAE,oBAAqB,SAAWxzH,EAAOqzH,GAEtC,OAAO76J,KAAK46J,QAASpzH,EAAOqzH,EAAkB76J,KAAK4lb,mBAEpD,EAEAG,aAAc,SAAWprR,GAExB,OAAO0qR,GAAc1qR,GAAa4qR,SAEnC,EAEAS,YAAa,SAAWrrR,GAEvB,OAAKA,IAAepL,GAAsBk1R,GAEnCY,GAAc1qR,GAAa0+N,QAEnC,GAKD,SAASj/N,GAAcn+J,GAEtB,OAASA,EAAI,OAAgB,YAAJA,EAAmBgB,KAAKs1J,IAAS,YAAJt2J,EAAmB,YAAc,IAExF,CAEA,SAASo+J,GAAcp+J,GAEtB,OAASA,EAAI,SAAkB,MAAJA,EAAY,MAAUgB,KAAKs1J,IAAKt2J,EAAG,QAAc,IAE7E,CAEY,IAEN6gK,GAAU,oBAAAA,IAAAryJ,EAAA,KAAAqyJ,EAAA,CAuHd,OAvHcvzJ,EAAAuzJ,EAAA,OAAAt6J,IAAA,aAAA/D,MAEf,SAAmB06I,GAElB,GAAK,UAAUjhJ,KAAMihJ,EAAMhnI,KAE1B,OAAOgnI,EAAMhnI,IAId,GAAkC,qBAAtB4qJ,kBAEX,OAAO5jB,EAAMhnI,IAId,IAAI6mI,EAEJ,GAAKG,aAAiB4jB,kBAErB/jB,EAASG,MAEH,MAEW/uI,IAAZsuI,KAAwBA,GAAUlzF,GAAiB,WAExDkzF,GAAQvqI,MAAQgrI,EAAMhrI,MACtBuqI,GAAQtqI,OAAS+qI,EAAM/qI,OAEvB,IAAM7O,EAAUm5I,GAAQO,WAAY,MAE/BE,aAAiB6jB,UAErBz9J,EAAQ09J,aAAc9jB,EAAO,EAAG,GAIhC55I,EAAQu6I,UAAWX,EAAO,EAAG,EAAGA,EAAMhrI,MAAOgrI,EAAM/qI,QAIpD4qI,EAASN,EAEV,CAEA,OAAKM,EAAO7qI,MAAQ,MAAQ6qI,EAAO5qI,OAAS,MAE3C2F,QAAQk/C,KAAM,8EAA+EkmF,GAEtFH,EAAOkkB,UAAW,aAAc,KAIhClkB,EAAOkkB,UAAW,YAI3B,GAAC,CAAA16J,IAAA,eAAA/D,MAED,SAAqB06I,GAEpB,GAAmC,qBAArBgkB,kBAAoChkB,aAAiBgkB,kBACnC,qBAAtBJ,mBAAqC5jB,aAAiB4jB,mBACtC,qBAAhBK,aAA+BjkB,aAAiBikB,YAAgB,CAEzE,IAAMpkB,EAASxzF,GAAiB,UAEhCwzF,EAAO7qI,MAAQgrI,EAAMhrI,MACrB6qI,EAAO5qI,OAAS+qI,EAAM/qI,OAEtB,IAAM7O,EAAUy5I,EAAOC,WAAY,MACnC15I,EAAQu6I,UAAWX,EAAO,EAAG,EAAGA,EAAMhrI,MAAOgrI,EAAM/qI,QAKnD,IAHA,IAAMivJ,EAAY99J,EAAQ+9J,aAAc,EAAG,EAAGnkB,EAAMhrI,MAAOgrI,EAAM/qI,QAC3Ds1B,EAAO25H,EAAU35H,KAEbhnC,EAAI,EAAGA,EAAIgnC,EAAK9rC,OAAQ8E,IAEjCgnC,EAAMhnC,GAAwC,IAAlC09J,GAAc12H,EAAMhnC,GAAM,KAMvC,OAFA6C,EAAQ09J,aAAcI,EAAW,EAAG,GAE7BrkB,CAER,CAAO,GAAKG,EAAMz1G,KAAO,CAIxB,IAFA,IAAMA,EAAOy1G,EAAMz1G,KAAK9yB,MAAO,GAErBlU,EAAI,EAAGA,EAAIgnC,EAAK9rC,OAAQ8E,IAE5BgnC,aAAgB6xE,YAAc7xE,aAAgBq2H,kBAElDr2H,EAAMhnC,GAAMO,KAAKwf,MAAyC,IAAlC29I,GAAc12H,EAAMhnC,GAAM,MAMlDgnC,EAAMhnC,GAAM09J,GAAc12H,EAAMhnC,IAMlC,MAAO,CACNgnC,KAAMA,EACNv1B,MAAOgrI,EAAMhrI,MACbC,OAAQ+qI,EAAM/qI,OAGhB,CAGC,OADA2F,QAAQk/C,KAAM,+FACPkmF,CAIT,KAAC2jB,CAAA,CAvHc,GA2HZmpR,GAAY,EAEV1oR,GAAM,WAEX,SAAAA,IAA2B,IAAd75H,EAAIzjC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAIwK,EAAA,KAAA8yJ,GAEvBv9J,KAAK69J,UAAW,EAEhBt/J,OAAOC,eAAgBwB,KAAM,KAAM,CAAEvB,MAAOwnb,OAE5Cjmb,KAAK67G,KAAOg2C,KAEZ7xJ,KAAK0jC,KAAOA,EACZ1jC,KAAKkmb,WAAY,EAEjBlmb,KAAK3G,QAAU,CAEhB,CAqEC,OArEAkQ,EAAAg0J,EAAA,EAAA/6J,IAAA,cAAAysB,IAED,SAAiBxwB,IAED,IAAVA,GAAiBuB,KAAK3G,SAE5B,GAAC,CAAAmJ,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMknI,OAA0BpzJ,IAATksB,GAAsC,kBAATA,EAEpD,IAAOknI,QAA6CpzJ,IAA7BksB,EAAKmnI,OAAQz9J,KAAK67G,MAExC,OAAOvlF,EAAKmnI,OAAQz9J,KAAK67G,MAI1B,IAAMh9B,EAAS,CACdg9B,KAAM77G,KAAK67G,KACX3zE,IAAK,IAGAxE,EAAO1jC,KAAK0jC,KAElB,GAAc,OAATA,EAAgB,CAEpB,IAAIwE,EAEJ,GAAKvrC,MAAM0E,QAASqiC,GAAS,CAI5BwE,EAAM,GAEN,IAAM,IAAIxrC,EAAI,EAAGmK,EAAI68B,EAAK9rC,OAAQ8E,EAAImK,EAAGnK,IAEnCgnC,EAAMhnC,GAAIghK,cAEdx1H,EAAIprC,KAAM6gK,GAAgBj6H,EAAMhnC,GAAIy8I,QAIpCjxG,EAAIprC,KAAM6gK,GAAgBj6H,EAAMhnC,IAMnC,MAICwrC,EAAMy1H,GAAgBj6H,GAIvBm7C,EAAO32C,IAAMA,CAEd,CAQA,OANOs1H,IAENlnI,EAAKmnI,OAAQz9J,KAAK67G,MAASh9B,GAIrBA,CAER,KAAC0+E,CAAA,CApFU,GAwFZ,SAASI,GAAgBxkB,GAExB,MAAmC,qBAArBgkB,kBAAoChkB,aAAiBgkB,kBACnC,qBAAtBJ,mBAAqC5jB,aAAiB4jB,mBACtC,qBAAhBK,aAA+BjkB,aAAiBikB,YAIlDN,GAAWc,WAAYzkB,GAIzBA,EAAMz1G,KAIH,CACNA,KAAM/mC,MAAM0lB,KAAM82H,EAAMz1G,MACxBv1B,MAAOgrI,EAAMhrI,MACbC,OAAQ+qI,EAAM/qI,OACdxJ,KAAMu0I,EAAMz1G,KAAKvpB,YAAYhhB,OAK9B4a,QAAQk/C,KAAM,+CACP,CAAC,EAMX,CAEA,IAAIkzX,GAAa,EAEXpoR,GAAO,SAAAC,GAAAhiJ,EAAA+hJ,EAAAC,GAAA,IAAA/hJ,EAAAtB,EAAAojJ,GAEZ,SAAAA,IAA4T,IAAApvF,EAA/SwqE,EAAKl5I,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG89J,EAAQE,cAAe3Z,EAAOrkJ,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG89J,EAAQG,gBAAiBC,EAAKl+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGqqJ,GAAqB8T,EAAKn+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGqqJ,GAAqB+T,EAASp+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG4qJ,GAAcyT,EAASr+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG+qJ,GAA0BuT,EAAMt+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG8rJ,GAAYnnJ,EAAI3E,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGirJ,GAAkBsT,EAAUv+J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG89J,EAAQqoR,mBAAoBzrR,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGsvJ,GA6D7Q,OA7DyR9kJ,EAAA,KAAAszJ,IAExTpvF,EAAA1yD,EAAApf,KAAA,OAEK8iK,WAAY,EAEjBphK,OAAOC,eAAcgd,EAAAmzD,GAAQ,KAAM,CAAElwE,MAAO0nb,OAE5Cx3W,EAAKktC,KAAOg2C,KAEZljF,EAAKx1E,KAAO,GAEZw1E,EAAKntE,OAAS,IAAI+7J,GAAQpkB,GAC1BxqE,EAAK+vF,QAAU,GAEf/vF,EAAK21E,QAAUA,EACf31E,EAAK+lG,QAAU,EAEf/lG,EAAKwvF,MAAQA,EACbxvF,EAAKyvF,MAAQA,EAEbzvF,EAAK0vF,UAAYA,EACjB1vF,EAAK2vF,UAAYA,EAEjB3vF,EAAK6vF,WAAaA,EAElB7vF,EAAK4vF,OAASA,EACd5vF,EAAKgwF,eAAiB,KACtBhwF,EAAK/pE,KAAOA,EAEZ+pE,EAAK5kC,OAAS,IAAIorH,GAAS,EAAG,GAC9BxmF,EAAKzpC,OAAS,IAAIiwH,GAAS,EAAG,GAC9BxmF,EAAK0nF,OAAS,IAAIlB,GAAS,EAAG,GAC9BxmF,EAAK2qF,SAAW,EAEhB3qF,EAAKiwF,kBAAmB,EACxBjwF,EAAK+qF,OAAS,IAAIlD,GAElB7nF,EAAKkwF,iBAAkB,EACvBlwF,EAAKmwF,kBAAmB,EACxBnwF,EAAKowF,OAAQ,EACbpwF,EAAKqwF,gBAAkB,EAEI,kBAAfrE,EAEXhsF,EAAKgsF,WAAaA,GAIlBuqR,GAAU,uEACVv2W,EAAKgsF,WAAaA,IAAezL,GAAeM,GAAiBD,IAKlE5gF,EAAKswF,SAAW,CAAC,EAEjBtwF,EAAKt1E,QAAU,EACfs1E,EAAKuwF,SAAW,KAEhBvwF,EAAKwwF,uBAAwB,EAC7BxwF,EAAKywF,kBAAmB,EAAOzwF,CAEhC,CAiPC,OAjPAplE,EAAAw0J,EAAA,EAAAv7J,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAKwB,OAAOkiC,IAEpB,EAACzU,IAED,SAAWxwB,QAAK,IAALA,IAAAA,EAAQ,MAElBuB,KAAKwB,OAAOkiC,KAAOjlC,CAEpB,GAAC,CAAA+D,IAAA,eAAA/D,MAED,WAECuB,KAAK05J,OAAO2F,eAAgBr/J,KAAK+pC,OAAO7tC,EAAG8D,KAAK+pC,OAAO1iC,EAAGrH,KAAKklC,OAAOhpC,EAAG8D,KAAKklC,OAAO79B,EAAGrH,KAAKs5J,SAAUt5J,KAAKq2J,OAAOn6J,EAAG8D,KAAKq2J,OAAOhvJ,EAEnI,GAAC,CAAA7E,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAwCL,OAtCAxB,KAAK7G,KAAOqI,EAAOrI,KAEnB6G,KAAKwB,OAASA,EAAOA,OACrBxB,KAAK0+J,QAAUl9J,EAAOk9J,QAAQ9tJ,MAAO,GAErC5Q,KAAKskJ,QAAU9iJ,EAAO8iJ,QACtBtkJ,KAAK00K,QAAUlzK,EAAOkzK,QAEtB10K,KAAKm+J,MAAQ38J,EAAO28J,MACpBn+J,KAAKo+J,MAAQ58J,EAAO48J,MAEpBp+J,KAAKq+J,UAAY78J,EAAO68J,UACxBr+J,KAAKs+J,UAAY98J,EAAO88J,UAExBt+J,KAAKw+J,WAAah9J,EAAOg9J,WAEzBx+J,KAAKu+J,OAAS/8J,EAAO+8J,OACrBv+J,KAAK2+J,eAAiBn9J,EAAOm9J,eAC7B3+J,KAAK4E,KAAOpD,EAAOoD,KAEnB5E,KAAK+pC,OAAO2xH,KAAMl6J,EAAOuoC,QACzB/pC,KAAKklC,OAAOw2H,KAAMl6J,EAAO0jC,QACzBllC,KAAKq2J,OAAOqF,KAAMl6J,EAAO60J,QACzBr2J,KAAKs5J,SAAW93J,EAAO83J,SAEvBt5J,KAAK4+J,iBAAmBp9J,EAAOo9J,iBAC/B5+J,KAAK05J,OAAOgC,KAAMl6J,EAAOk4J,QAEzB15J,KAAK6+J,gBAAkBr9J,EAAOq9J,gBAC9B7+J,KAAK8+J,iBAAmBt9J,EAAOs9J,iBAC/B9+J,KAAK++J,MAAQv9J,EAAOu9J,MACpB/+J,KAAKg/J,gBAAkBx9J,EAAOw9J,gBAC9Bh/J,KAAK26J,WAAan5J,EAAOm5J,WAEzB36J,KAAKi/J,SAAWlxG,KAAK4yC,MAAO5yC,KAAKC,UAAWxsD,EAAOy9J,WAEnDj/J,KAAKs/J,aAAc,EAEZt/J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMknI,OAA0BpzJ,IAATksB,GAAsC,kBAATA,EAEpD,IAAOknI,QAA+CpzJ,IAA/BksB,EAAKipI,SAAUv/J,KAAK67G,MAE1C,OAAOvlF,EAAKipI,SAAUv/J,KAAK67G,MAI5B,IAAMh9B,EAAS,CAEd4/B,SAAU,CACTplH,QAAS,IACTuL,KAAM,UACNgrF,UAAW,kBAGZisB,KAAM77G,KAAK67G,KACX1iH,KAAM6G,KAAK7G,KAEXggJ,MAAOn5I,KAAKwB,OAAOg+J,OAAQlpI,GAAOulF,KAElCyoC,QAAStkJ,KAAKskJ,QACdowB,QAAS10K,KAAK00K,QAEdxvI,OAAQ,CAAEllC,KAAKklC,OAAOhpC,EAAG8D,KAAKklC,OAAO79B,GACrC0iC,OAAQ,CAAE/pC,KAAK+pC,OAAO7tC,EAAG8D,KAAK+pC,OAAO1iC,GACrCgvJ,OAAQ,CAAEr2J,KAAKq2J,OAAOn6J,EAAG8D,KAAKq2J,OAAOhvJ,GACrCiyJ,SAAUt5J,KAAKs5J,SAEfxrJ,KAAM,CAAE9N,KAAKm+J,MAAOn+J,KAAKo+J,OAEzBG,OAAQv+J,KAAKu+J,OACbI,eAAgB3+J,KAAK2+J,eACrB/5J,KAAM5E,KAAK4E,KACX+1J,WAAY36J,KAAK26J,WAEjB2D,UAAWt+J,KAAKs+J,UAChBD,UAAWr+J,KAAKq+J,UAChBG,WAAYx+J,KAAKw+J,WAEjBO,MAAO/+J,KAAK++J,MAEZF,gBAAiB7+J,KAAK6+J,gBACtBC,iBAAkB9+J,KAAK8+J,iBACvBE,gBAAiBh/J,KAAKg/J,iBAYvB,OARKzgK,OAAOqD,KAAM5B,KAAKi/J,UAAWrnK,OAAS,IAAIinF,EAAOogF,SAAWj/J,KAAKi/J,UAE/DzB,IAENlnI,EAAKipI,SAAUv/J,KAAK67G,MAASh9B,GAIvBA,CAER,GAAC,CAAAr8E,IAAA,UAAA/D,MAED,WAECuB,KAAKu+B,cAAe,CAAE35B,KAAM,WAE7B,GAAC,CAAApC,IAAA,cAAA/D,MAED,SAAaghK,GAEZ,GA3iEgB,MA2iEXz/J,KAAKskJ,QAAwB,OAAOmb,EAIzC,GAFAA,EAAGC,aAAc1/J,KAAK05J,QAEjB+F,EAAGvjK,EAAI,GAAKujK,EAAGvjK,EAAI,EAEvB,OAAS8D,KAAKm+J,OAEb,KAAK9T,GAEJoV,EAAGvjK,EAAIujK,EAAGvjK,EAAIe,KAAKwf,MAAOgjJ,EAAGvjK,GAC7B,MAED,KAAKouJ,GAEJmV,EAAGvjK,EAAIujK,EAAGvjK,EAAI,EAAI,EAAI,EACtB,MAED,KAAKquJ,GAEwC,IAAvCttJ,KAAK4f,IAAK5f,KAAKwf,MAAOgjJ,EAAGvjK,GAAM,GAEnCujK,EAAGvjK,EAAIe,KAAKurD,KAAMi3G,EAAGvjK,GAAMujK,EAAGvjK,EAI9BujK,EAAGvjK,EAAIujK,EAAGvjK,EAAIe,KAAKwf,MAAOgjJ,EAAGvjK,GAUjC,GAAKujK,EAAGp4J,EAAI,GAAKo4J,EAAGp4J,EAAI,EAEvB,OAASrH,KAAKo+J,OAEb,KAAK/T,GAEJoV,EAAGp4J,EAAIo4J,EAAGp4J,EAAIpK,KAAKwf,MAAOgjJ,EAAGp4J,GAC7B,MAED,KAAKijJ,GAEJmV,EAAGp4J,EAAIo4J,EAAGp4J,EAAI,EAAI,EAAI,EACtB,MAED,KAAKkjJ,GAEwC,IAAvCttJ,KAAK4f,IAAK5f,KAAKwf,MAAOgjJ,EAAGp4J,GAAM,GAEnCo4J,EAAGp4J,EAAIpK,KAAKurD,KAAMi3G,EAAGp4J,GAAMo4J,EAAGp4J,EAI9Bo4J,EAAGp4J,EAAIo4J,EAAGp4J,EAAIpK,KAAKwf,MAAOgjJ,EAAGp4J,GAgBjC,OANKrH,KAAK++J,QAETU,EAAGp4J,EAAI,EAAIo4J,EAAGp4J,GAIRo4J,CAER,GAAC,CAAAj9J,IAAA,cAAAysB,IAED,SAAiBxwB,IAED,IAAVA,IAEJuB,KAAK3G,UACL2G,KAAKwB,OAAO89J,aAAc,EAI5B,GAAC,CAAA98J,IAAA,WAAAutB,IAED,WAGC,OADAm1Z,GAAU,uEACHllb,KAAK26J,aAAenL,GAAiBN,GA9iEvB,GAgjEtB,EAACjgI,IAED,SAAcwvI,GAEbymR,GAAU,uEACVllb,KAAK26J,WAAa8D,IAAavP,GAAeM,GAAiBD,EAEhE,KAACwO,CAAA,CAlTW,CAASzM,IAsTtByM,GAAQE,cAAgB,KACxBF,GAAQG,gBArpEU,IAspElBH,GAAQqoR,mBAAqB,EAAE,IAEzBxmR,GAAO,WAEZ,SAAAA,IAA0C,IAA7B1jK,EAAC+D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqH,EAACrH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmH,EAACnH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAm1J,GAEtCA,EAAQhjK,UAAUmkK,WAAY,EAE9B/gK,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EACTrH,KAAKsH,EAAIA,EACTtH,KAAKoH,EAAIA,CAEV,CAonBC,OApnBAmC,EAAAq2J,EAAA,EAAAp9J,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAKsH,CAEb,EAAC2nB,IAED,SAAWxwB,GAEVuB,KAAKsH,EAAI7I,CAEV,GAAC,CAAA+D,IAAA,SAAAutB,IAED,WAEC,OAAO/vB,KAAKoH,CAEb,EAAC6nB,IAED,SAAYxwB,GAEXuB,KAAKoH,EAAI3I,CAEV,GAAC,CAAA+D,IAAA,MAAA/D,MAED,SAAKvC,EAAGmL,EAAGC,EAAGF,GAOb,OALApH,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EACTrH,KAAKsH,EAAIA,EACTtH,KAAKoH,EAAIA,EAEFpH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW22J,GAOV,OALAp1J,KAAK9D,EAAIk5J,EACTp1J,KAAKqH,EAAI+tJ,EACTp1J,KAAKsH,EAAI8tJ,EACTp1J,KAAKoH,EAAIguJ,EAEFp1J,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMvC,GAIL,OAFA8D,KAAK9D,EAAIA,EAEF8D,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM4I,GAIL,OAFArH,KAAKqH,EAAIA,EAEFrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM6I,GAIL,OAFAtH,KAAKsH,EAAIA,EAEFtH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM2I,GAIL,OAFApH,KAAKoH,EAAIA,EAEFpH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,EAAOnQ,GAEpB,OAASmQ,GAER,KAAK,EAAG5O,KAAK9D,EAAIuC,EAAO,MACxB,KAAK,EAAGuB,KAAKqH,EAAI5I,EAAO,MACxB,KAAK,EAAGuB,KAAKsH,EAAI7I,EAAO,MACxB,KAAK,EAAGuB,KAAKoH,EAAI3I,EAAO,MACxB,QAAS,MAAM,IAAIX,MAAO,0BAA4B8Q,GAIvD,OAAO5O,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,GAEb,OAASA,GAER,KAAK,EAAG,OAAO5O,KAAK9D,EACpB,KAAK,EAAG,OAAO8D,KAAKqH,EACpB,KAAK,EAAG,OAAOrH,KAAKsH,EACpB,KAAK,EAAG,OAAOtH,KAAKoH,EACpB,QAAS,MAAM,IAAItJ,MAAO,0BAA4B8Q,GAIxD,GAAC,CAAApM,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAK9D,EAAG8D,KAAKqH,EAAGrH,KAAKsH,EAAGtH,KAAKoH,EAE3D,GAAC,CAAA5E,IAAA,OAAA/D,MAED,SAAM0I,GAOL,OALAnH,KAAK9D,EAAIiL,EAAEjL,EACX8D,KAAKqH,EAAIF,EAAEE,EACXrH,KAAKsH,EAAIH,EAAEG,EACXtH,KAAKoH,OAAcgD,IAARjD,EAAEC,EAAoBD,EAAEC,EAAI,EAEhCpH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAOJ,OALAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EACZtH,KAAKoH,GAAKD,EAAEC,EAELpH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAOV,OALAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EACVuE,KAAKsH,GAAK7L,EACVuE,KAAKoH,GAAK3L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAOd,OALAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EACjBrH,KAAKsH,EAAItL,EAAEsL,EAAIf,EAAEe,EACjBtH,KAAKoH,EAAIpL,EAAEoL,EAAIb,EAAEa,EAEVpH,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiB0I,EAAG1L,GAOnB,OALAuE,KAAK9D,GAAKiL,EAAEjL,EAAIT,EAChBuE,KAAKqH,GAAKF,EAAEE,EAAI5L,EAChBuE,KAAKsH,GAAKH,EAAEG,EAAI7L,EAChBuE,KAAKoH,GAAKD,EAAEC,EAAI3L,EAETuE,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAOJ,OALAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EACZtH,KAAKoH,GAAKD,EAAEC,EAELpH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAOV,OALAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EACVuE,KAAKsH,GAAK7L,EACVuE,KAAKoH,GAAK3L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAOd,OALAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EACjBrH,KAAKsH,EAAItL,EAAEsL,EAAIf,EAAEe,EACjBtH,KAAKoH,EAAIpL,EAAEoL,EAAIb,EAAEa,EAEVpH,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU0I,GAOT,OALAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EACZtH,KAAKoH,GAAKD,EAAEC,EAELpH,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB22J,GAOf,OALAp1J,KAAK9D,GAAKk5J,EACVp1J,KAAKqH,GAAK+tJ,EACVp1J,KAAKsH,GAAK8tJ,EACVp1J,KAAKoH,GAAKguJ,EAEHp1J,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM5K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EAAGC,EAAItH,KAAKsH,EAAGF,EAAIpH,KAAKoH,EAC7Cd,EAAIQ,EAAEk/H,SAOZ,OALAhmI,KAAK9D,EAAIoK,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAAIhB,EAAG,IAAOc,EAC1DpH,KAAKqH,EAAIf,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAAIhB,EAAG,IAAOc,EAC1DpH,KAAKsH,EAAIhB,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,IAAOgB,EAAIhB,EAAG,IAAOc,EAC3DpH,KAAKoH,EAAId,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,IAAOgB,EAAIhB,EAAG,IAAOc,EAEpDpH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc22J,GAEb,OAAOp1J,KAAKu1J,eAAgB,EAAIH,EAEjC,GAAC,CAAA5yJ,IAAA,6BAAA/D,MAED,SAA4BwI,GAM3BjH,KAAKoH,EAAI,EAAInK,KAAK4iK,KAAM54J,EAAEG,GAE1B,IAAM3L,EAAIwB,KAAK04J,KAAM,EAAI1uJ,EAAEG,EAAIH,EAAEG,GAgBjC,OAdK3L,EAAI,MAERuE,KAAK9D,EAAI,EACT8D,KAAKqH,EAAI,EACTrH,KAAKsH,EAAI,IAITtH,KAAK9D,EAAI+K,EAAE/K,EAAIT,EACfuE,KAAKqH,EAAIJ,EAAEI,EAAI5L,EACfuE,KAAKsH,EAAIL,EAAEK,EAAI7L,GAITuE,IAER,GAAC,CAAAwC,IAAA,iCAAA/D,MAED,SAAgCqI,GAM/B,IAAI8uJ,EAAO15J,EAAGmL,EAAGC,EACXw4J,EAAU,IACfC,EAAW,GAEXl3H,EAAK/hC,EAAEk/H,SAEPg6B,EAAMn3H,EAAI,GAAKo3H,EAAMp3H,EAAI,GAAKq3H,EAAMr3H,EAAI,GACxCs3H,EAAMt3H,EAAI,GAAKu3H,EAAMv3H,EAAI,GAAKw3H,EAAMx3H,EAAI,GACxCy3H,EAAMz3H,EAAI,GAAK03H,EAAM13H,EAAI,GAAK23H,EAAM33H,EAAI,IAEzC,GAAO5rC,KAAK4f,IAAKojJ,EAAME,GAAQL,GACxB7iK,KAAK4f,IAAKqjJ,EAAMI,GAAQR,GACxB7iK,KAAK4f,IAAKwjJ,EAAME,GAAQT,EAAY,CAM1C,GAAO7iK,KAAK4f,IAAKojJ,EAAME,GAAQJ,GACxB9iK,KAAK4f,IAAKqjJ,EAAMI,GAAQP,GACxB9iK,KAAK4f,IAAKwjJ,EAAME,GAAQR,GACxB9iK,KAAK4f,IAAKmjJ,EAAMI,EAAMI,EAAM,GAAMT,EAMxC,OAFA//J,KAAKivB,IAAK,EAAG,EAAG,EAAG,GAEZjvB,KAMR41J,EAAQ34J,KAAK00J,GAEb,IAAMnjB,GAAOwxB,EAAM,GAAM,EACnBvxB,GAAO2xB,EAAM,GAAM,EACnBK,GAAOD,EAAM,GAAM,EACnBE,GAAOT,EAAME,GAAQ,EACrBQ,GAAOT,EAAMI,GAAQ,EACrBM,GAAOP,EAAME,GAAQ,EA4D3B,OA1DO/xB,EAAKC,GAAUD,EAAKiyB,EAIrBjyB,EAAKsxB,GAET5jK,EAAI,EACJmL,EAAI,WACJC,EAAI,aAKJD,EAAIq5J,GADJxkK,EAAIe,KAAK04J,KAAMnnB,IAEflnI,EAAIq5J,EAAKzkK,GAICuyI,EAAKgyB,EAIXhyB,EAAKqxB,GAET5jK,EAAI,WACJmL,EAAI,EACJC,EAAI,aAKJpL,EAAIwkK,GADJr5J,EAAIpK,KAAK04J,KAAMlnB,IAEfnnI,EAAIs5J,EAAKv5J,GAQLo5J,EAAKX,GAET5jK,EAAI,WACJmL,EAAI,WACJC,EAAI,IAKJpL,EAAIykK,GADJr5J,EAAIrK,KAAK04J,KAAM8K,IAEfp5J,EAAIu5J,EAAKt5J,GAMXtH,KAAKivB,IAAK/yB,EAAGmL,EAAGC,EAAGsuJ,GAEZ51J,IAER,CAIA,IAAIvE,EAAIwB,KAAK04J,MAAQ4K,EAAMF,IAAUE,EAAMF,IACxCH,EAAMI,IAAUJ,EAAMI,IACtBH,EAAMF,IAAUE,EAAMF,IAYzB,OAVKhjK,KAAK4f,IAAKphB,GAAM,OAAQA,EAAI,GAKjCuE,KAAK9D,GAAMqkK,EAAMF,GAAQ5kK,EACzBuE,KAAKqH,GAAM64J,EAAMI,GAAQ7kK,EACzBuE,KAAKsH,GAAM64J,EAAMF,GAAQxkK,EACzBuE,KAAKoH,EAAInK,KAAK4iK,MAAQG,EAAMI,EAAMI,EAAM,GAAM,GAEvCxgK,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAOJ,OALAnH,KAAK9D,EAAIe,KAAKiuC,IAAKlrC,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKiuC,IAAKlrC,KAAKqH,EAAGF,EAAEE,GAC7BrH,KAAKsH,EAAIrK,KAAKiuC,IAAKlrC,KAAKsH,EAAGH,EAAEG,GAC7BtH,KAAKoH,EAAInK,KAAKiuC,IAAKlrC,KAAKoH,EAAGD,EAAEC,GAEtBpH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAOJ,OALAnH,KAAK9D,EAAIe,KAAKC,IAAK8C,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKC,IAAK8C,KAAKqH,EAAGF,EAAEE,GAC7BrH,KAAKsH,EAAIrK,KAAKC,IAAK8C,KAAKsH,EAAGH,EAAEG,GAC7BtH,KAAKoH,EAAInK,KAAKC,IAAK8C,KAAKoH,EAAGD,EAAEC,GAEtBpH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOysC,EAAKhuC,GASX,OALA8C,KAAK9D,EAAIe,KAAKC,IAAKguC,EAAIhvC,EAAGe,KAAKiuC,IAAKhuC,EAAIhB,EAAG8D,KAAK9D,IAChD8D,KAAKqH,EAAIpK,KAAKC,IAAKguC,EAAI7jC,EAAGpK,KAAKiuC,IAAKhuC,EAAImK,EAAGrH,KAAKqH,IAChDrH,KAAKsH,EAAIrK,KAAKC,IAAKguC,EAAI5jC,EAAGrK,KAAKiuC,IAAKhuC,EAAIoK,EAAGtH,KAAKsH,IAChDtH,KAAKoH,EAAInK,KAAKC,IAAKguC,EAAI9jC,EAAGnK,KAAKiuC,IAAKhuC,EAAIkK,EAAGpH,KAAKoH,IAEzCpH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAa+2J,EAAQC,GAOpB,OALAz1J,KAAK9D,EAAIe,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAK9D,IAClD8D,KAAKqH,EAAIpK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKqH,IAClDrH,KAAKsH,EAAIrK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKsH,IAClDtH,KAAKoH,EAAInK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKoH,IAE3CpH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAaysC,EAAKhuC,GAEjB,IAAMtF,EAASoI,KAAKpI,SAEpB,OAAOoI,KAAK01J,aAAc99J,GAAU,GAAI29J,eAAgBt4J,KAAKC,IAAKguC,EAAKjuC,KAAKiuC,IAAKhuC,EAAKtF,IAEvF,GAAC,CAAA4K,IAAA,QAAA/D,MAED,WAOC,OALAuB,KAAK9D,EAAIe,KAAKwf,MAAOzc,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAKwf,MAAOzc,KAAKqH,GAC1BrH,KAAKsH,EAAIrK,KAAKwf,MAAOzc,KAAKsH,GAC1BtH,KAAKoH,EAAInK,KAAKwf,MAAOzc,KAAKoH,GAEnBpH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAOC,OALAuB,KAAK9D,EAAIe,KAAKurD,KAAMxoD,KAAK9D,GACzB8D,KAAKqH,EAAIpK,KAAKurD,KAAMxoD,KAAKqH,GACzBrH,KAAKsH,EAAIrK,KAAKurD,KAAMxoD,KAAKsH,GACzBtH,KAAKoH,EAAInK,KAAKurD,KAAMxoD,KAAKoH,GAElBpH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAOC,OALAuB,KAAK9D,EAAIe,KAAK83J,MAAO/0J,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAK83J,MAAO/0J,KAAKqH,GAC1BrH,KAAKsH,EAAIrK,KAAK83J,MAAO/0J,KAAKsH,GAC1BtH,KAAKoH,EAAInK,KAAK83J,MAAO/0J,KAAKoH,GAEnBpH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAOC,OALAuB,KAAK9D,EAAIe,KAAK8nb,MAAO/kb,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAK8nb,MAAO/kb,KAAKqH,GAC1BrH,KAAKsH,EAAIrK,KAAK8nb,MAAO/kb,KAAKsH,GAC1BtH,KAAKoH,EAAInK,KAAK8nb,MAAO/kb,KAAKoH,GAEnBpH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAOC,OALAuB,KAAK9D,GAAM8D,KAAK9D,EAChB8D,KAAKqH,GAAMrH,KAAKqH,EAChBrH,KAAKsH,GAAMtH,KAAKsH,EAChBtH,KAAKoH,GAAMpH,KAAKoH,EAETpH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAEJ,OAAOnH,KAAK9D,EAAIiL,EAAEjL,EAAI8D,KAAKqH,EAAIF,EAAEE,EAAIrH,KAAKsH,EAAIH,EAAEG,EAAItH,KAAKoH,EAAID,EAAEC,CAEhE,GAAC,CAAA5E,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,EAAIrH,KAAKsH,EAAItH,KAAKsH,EAAItH,KAAKoH,EAAIpH,KAAKoH,CAE5E,GAAC,CAAA5E,IAAA,SAAA/D,MAED,WAEC,OAAOxB,KAAK04J,KAAM31J,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,EAAIrH,KAAKsH,EAAItH,KAAKsH,EAAItH,KAAKoH,EAAIpH,KAAKoH,EAEvF,GAAC,CAAA5E,IAAA,kBAAA/D,MAED,WAEC,OAAOxB,KAAK4f,IAAK7c,KAAK9D,GAAMe,KAAK4f,IAAK7c,KAAKqH,GAAMpK,KAAK4f,IAAK7c,KAAKsH,GAAMrK,KAAK4f,IAAK7c,KAAKoH,EAEtF,GAAC,CAAA5E,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAK01J,aAAc11J,KAAKpI,UAAY,EAE5C,GAAC,CAAA4K,IAAA,YAAA/D,MAED,SAAW7G,GAEV,OAAOoI,KAAK6gH,YAAY00C,eAAgB39J,EAEzC,GAAC,CAAA4K,IAAA,OAAA/D,MAED,SAAM0I,EAAG4uJ,GAOR,OALA/1J,KAAK9D,IAAOiL,EAAEjL,EAAI8D,KAAK9D,GAAM65J,EAC7B/1J,KAAKqH,IAAOF,EAAEE,EAAIrH,KAAKqH,GAAM0uJ,EAC7B/1J,KAAKsH,IAAOH,EAAEG,EAAItH,KAAKsH,GAAMyuJ,EAC7B/1J,KAAKoH,IAAOD,EAAEC,EAAIpH,KAAKoH,GAAM2uJ,EAEtB/1J,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAau3J,EAAIC,EAAIF,GAOpB,OALA/1J,KAAK9D,EAAI85J,EAAG95J,GAAM+5J,EAAG/5J,EAAI85J,EAAG95J,GAAM65J,EAClC/1J,KAAKqH,EAAI2uJ,EAAG3uJ,GAAM4uJ,EAAG5uJ,EAAI2uJ,EAAG3uJ,GAAM0uJ,EAClC/1J,KAAKsH,EAAI0uJ,EAAG1uJ,GAAM2uJ,EAAG3uJ,EAAI0uJ,EAAG1uJ,GAAMyuJ,EAClC/1J,KAAKoH,EAAI4uJ,EAAG5uJ,GAAM6uJ,EAAG7uJ,EAAI4uJ,EAAG5uJ,GAAM2uJ,EAE3B/1J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0I,GAEP,OAAWA,EAAEjL,IAAM8D,KAAK9D,GAASiL,EAAEE,IAAMrH,KAAKqH,GAASF,EAAEG,IAAMtH,KAAKsH,GAASH,EAAEC,IAAMpH,KAAKoH,CAE3F,GAAC,CAAA5E,IAAA,YAAA/D,MAED,SAAWsE,GAAoB,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAO1B,OALAD,KAAK9D,EAAI6G,EAAOgnC,GAChB/pC,KAAKqH,EAAItE,EAAOgnC,EAAS,GACzB/pC,KAAKsH,EAAIvE,EAAOgnC,EAAS,GACzB/pC,KAAKoH,EAAIrE,EAAOgnC,EAAS,GAElB/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAO7B,OALA8C,EAAOgnC,GAAW/pC,KAAK9D,EACvB6G,EAAOgnC,EAAS,GAAM/pC,KAAKqH,EAC3BtE,EAAOgnC,EAAS,GAAM/pC,KAAKsH,EAC3BvE,EAAOgnC,EAAS,GAAM/pC,KAAKoH,EAEpBrE,CAER,GAAC,CAAAP,IAAA,sBAAA/D,MAED,SAAqBy3J,EAAWtnJ,GAO/B,OALA5O,KAAK9D,EAAIg6J,EAAUC,KAAMvnJ,GACzB5O,KAAKqH,EAAI6uJ,EAAUE,KAAMxnJ,GACzB5O,KAAKsH,EAAI4uJ,EAAUyG,KAAM/tJ,GACzB5O,KAAKoH,EAAI8uJ,EAAU2K,KAAMjyJ,GAElB5O,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAOC,OALAuB,KAAK9D,EAAIe,KAAKuxC,SACdxuC,KAAKqH,EAAIpK,KAAKuxC,SACdxuC,KAAKsH,EAAIrK,KAAKuxC,SACdxuC,KAAKoH,EAAInK,KAAKuxC,SAEPxuC,IAER,GAAC,CAAAwC,IAEE1B,OAAOrE,SAAQgC,MAAAq+E,EAAAA,MAAlB,SAAAr+E,IAAA,OAAAq+E,EAAAA,MAAA,SAAAgkF,GAAA,cAAAA,EAAA79J,KAAA69J,EAAA59J,MAAA,OAEC,OAFD49J,EAAA59J,KAAA,EAEOlD,KAAK9D,EAAC,OACZ,OADY4kK,EAAA59J,KAAA,EACNlD,KAAKqH,EAAC,OACZ,OADYy5J,EAAA59J,KAAA,EACNlD,KAAKsH,EAAC,OACZ,OADYw5J,EAAA59J,KAAA,EACNlD,KAAKoH,EAAC,wBAAA05J,EAAAryF,OAAA,GAAAhwE,EAAA,YAEZmhK,CAAA,CA/nBW,GAwoBPymR,GAAY,SAAAplR,GAAAjlJ,EAAAqqa,EAAAplR,GAAA,IAAA7jB,EAAAziI,EAAA0ra,GAEjB,SAAAA,IAAmD,IAAA72W,EAAtCrhE,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGgB,EAAOhB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAACwK,EAAA,KAAA47a,IAE/C72W,EAAA4tE,EAAAvgJ,KAAA,OAEKypb,gBAAiB,EAEtB92W,EAAKrhE,MAAQA,EACbqhE,EAAKphE,OAASA,EACdohE,EAAK++B,MAAQ,EAEb/+B,EAAK0xF,QAAU,IAAItB,GAAS,EAAG,EAAGzxJ,EAAOC,GACzCohE,EAAK2xF,aAAc,EAEnB3xF,EAAK4xF,SAAW,IAAIxB,GAAS,EAAG,EAAGzxJ,EAAOC,GAE1C,IAAM+qI,EAAQ,CAAEhrI,MAAOA,EAAOC,OAAQA,EAAQmgG,MAAO,GAgCtB,YA9BLnkG,IAArBnJ,EAAQw9J,WAGZymR,GAAU,oFACVjkb,EAAQ05J,WAAa15J,EAAQw9J,WAAavP,GAAeM,GAAiBD,IAI3EtuJ,EAAU1C,OAAOmgB,OAAQ,CACxBmgJ,iBAAiB,EACjBF,eAAgB,KAChBL,UAAWzT,GACXyW,aAAa,EACbC,eAAe,EACfC,aAAc,KACdC,QAAS,GACPxgK,GAEHuuE,EAAK6xF,QAAU,IAAItD,GAAS5kB,EAAOl4I,EAAQqjJ,QAASrjJ,EAAQk9J,MAAOl9J,EAAQm9J,MAAOn9J,EAAQo9J,UAAWp9J,EAAQq9J,UAAWr9J,EAAQs9J,OAAQt9J,EAAQ2D,KAAM3D,EAAQu9J,WAAYv9J,EAAQ05J,YAClLnrF,EAAK6xF,QAAQlC,uBAAwB,EAErC3vF,EAAK6xF,QAAQtC,OAAQ,EACrBvvF,EAAK6xF,QAAQxC,gBAAkB59J,EAAQ49J,gBACvCrvF,EAAK6xF,QAAQ1C,eAAiB19J,EAAQ09J,eAEtCnvF,EAAK8xF,YAAcrgK,EAAQqgK,YAC3B9xF,EAAK+xF,cAAgBtgK,EAAQsgK,cAE7B/xF,EAAKgyF,aAAevgK,EAAQugK,aAE5BhyF,EAAKiyF,QAAUxgK,EAAQwgK,QAAQjyF,CAEhC,CA+DC,OA/DAjmE,EAAA88a,EAAA,EAAA7jb,IAAA,UAAA/D,MAED,SAAS0P,EAAOC,GAAoB,IAAZmgG,EAAKtuG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE1BD,KAAKmO,QAAUA,GAASnO,KAAKoO,SAAWA,GAAUpO,KAAKuuG,QAAUA,IAErEvuG,KAAKmO,MAAQA,EACbnO,KAAKoO,OAASA,EACdpO,KAAKuuG,MAAQA,EAEbvuG,KAAKqhK,QAAQloB,MAAMhrI,MAAQA,EAC3BnO,KAAKqhK,QAAQloB,MAAM/qI,OAASA,EAC5BpO,KAAKqhK,QAAQloB,MAAM5qC,MAAQA,EAE3BvuG,KAAK0hK,WAIN1hK,KAAKohK,SAASnyI,IAAK,EAAG,EAAG9gB,EAAOC,GAChCpO,KAAKkhK,QAAQjyI,IAAK,EAAG,EAAG9gB,EAAOC,EAEhC,GAAC,CAAA5L,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAELxB,KAAKmO,MAAQ3M,EAAO2M,MACpBnO,KAAKoO,OAAS5M,EAAO4M,OACrBpO,KAAKuuG,MAAQ/sG,EAAO+sG,MAEpBvuG,KAAKkhK,QAAQxF,KAAMl6J,EAAO0/J,SAC1BlhK,KAAKmhK,YAAc3/J,EAAO2/J,YAE1BnhK,KAAKohK,SAAS1F,KAAMl6J,EAAO4/J,UAE3BphK,KAAKqhK,QAAU7/J,EAAO6/J,QAAQngK,QAC9BlB,KAAKqhK,QAAQlC,uBAAwB,EAIrC,IAAMhmB,EAAQ56I,OAAOmgB,OAAQ,CAAC,EAAGld,EAAO6/J,QAAQloB,OAUhD,OATAn5I,KAAKqhK,QAAQ7/J,OAAS,IAAI+7J,GAAQpkB,GAElCn5I,KAAKshK,YAAc9/J,EAAO8/J,YAC1BthK,KAAKuhK,cAAgB//J,EAAO+/J,cAEC,OAAxB//J,EAAOggK,eAAwBxhK,KAAKwhK,aAAehgK,EAAOggK,aAAatgK,SAE5ElB,KAAKyhK,QAAUjgK,EAAOigK,QAEfzhK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAECuB,KAAKu+B,cAAe,CAAE35B,KAAM,WAE7B,KAACyhb,CAAA,CAlHgB,CAAS/0R,IAsHrB0P,GAAiB,SAAAulR,GAAAvqa,EAAAglJ,EAAAulR,GAAA,IAAAhpS,EAAA5iI,EAAAqmJ,GAEtB,SAAAA,IAAmD,IAAA52C,EAAtCj8G,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGgB,EAAOhB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAId,OAJewK,EAAA,KAAAu2J,IAE/C52C,EAAAmzB,EAAA1gJ,KAAA,KAAOsR,EAAOC,EAAQnN,IAEjB0gK,qBAAsB,EAAKv3C,CAEjC,CAAC,OAAA7gH,EAAAy3J,EAAA,CARqB,CAASqlR,IAY1BzkR,GAAgB,SAAAC,GAAA7lJ,EAAA4lJ,EAAAC,GAAA,IAAA5jB,EAAAtjI,EAAAinJ,GAErB,SAAAA,IAA6D,IAAAz2C,EAAhDznF,EAAIzjC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAMkO,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGsuG,EAAKtuG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAe/B,OAfgCwK,EAAA,KAAAm3J,IAEzDz2C,EAAA8yB,EAAAphJ,KAAA,KAAO,OAEFklK,oBAAqB,EAE1B52C,EAAKguB,MAAQ,CAAEz1G,KAAAA,EAAMv1B,MAAAA,EAAOC,OAAAA,EAAQmgG,MAAAA,GAEpC4c,EAAKkzC,UAAY7T,GACjBr/B,EAAKmzC,UAAY9T,GAEjBr/B,EAAK22C,MAAQxX,GAEbn/B,EAAK0zC,iBAAkB,EACvB1zC,EAAK4zC,OAAQ,EACb5zC,EAAK6zC,gBAAkB,EAAE7zC,CAE1B,CAAC,OAAA5hH,EAAAq4J,EAAA,CAnBoB,CAAS7D,IAyCzBoE,GAAa,SAAAC,GAAApmJ,EAAAmmJ,EAAAC,GAAA,IAAAK,EAAA9nJ,EAAAwnJ,GAElB,SAAAA,IAA6D,IAAAz2C,EAAhDhoF,EAAIzjC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAAMkO,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGsuG,EAAKtuG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAuB/B,OAvBgCwK,EAAA,KAAA03J,IAUzDz2C,EAAA+2C,EAAA5lK,KAAA,KAAO,OAEFylK,iBAAkB,EAEvB52C,EAAKytB,MAAQ,CAAEz1G,KAAAA,EAAMv1B,MAAAA,EAAOC,OAAAA,EAAQmgG,MAAAA,GAEpCmd,EAAK2yC,UAAY7T,GACjB9+B,EAAK4yC,UAAY9T,GAEjB9+B,EAAKo2C,MAAQxX,GAEb5+B,EAAKmzC,iBAAkB,EACvBnzC,EAAKqzC,OAAQ,EACbrzC,EAAKszC,gBAAkB,EAAEtzC,CAE1B,CAAC,OAAAniH,EAAA44J,EAAA,CA3BiB,CAASpE,IAgItBgF,GAAU,WAEf,SAAAA,IAA0C,IAA7B7mK,EAAC+D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqH,EAACrH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmH,EAACnH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAs4J,GAEtC/iK,KAAK6mK,cAAe,EAEpB7mK,KAAKo0D,GAAKl4D,EACV8D,KAAKgjK,GAAK37J,EACVrH,KAAKijK,GAAK37J,EACVtH,KAAKkjK,GAAK97J,CAEX,CAqGC,OArGAmC,EAAAw5J,EAAA,EAAAvgK,IAAA,IAAAutB,IAuGD,WAEC,OAAO/vB,KAAKo0D,EAEb,EAACnlC,IAED,SAAOxwB,GAENuB,KAAKo0D,GAAK31D,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKgjK,EAEb,EAAC/zI,IAED,SAAOxwB,GAENuB,KAAKgjK,GAAKvkK,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKijK,EAEb,EAACh0I,IAED,SAAOxwB,GAENuB,KAAKijK,GAAKxkK,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKkjK,EAEb,EAACj0I,IAED,SAAOxwB,GAENuB,KAAKkjK,GAAKzkK,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,MAAA/D,MAED,SAAKvC,EAAGmL,EAAGC,EAAGF,GASb,OAPApH,KAAKo0D,GAAKl4D,EACV8D,KAAKgjK,GAAK37J,EACVrH,KAAKijK,GAAK37J,EACVtH,KAAKkjK,GAAK97J,EAEVpH,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAKo0D,GAAIp0D,KAAKgjK,GAAIhjK,KAAKijK,GAAIjjK,KAAKkjK,GAE9D,GAAC,CAAA1gK,IAAA,OAAA/D,MAED,SAAM2kK,GASL,OAPApjK,KAAKo0D,GAAKgvG,EAAWlnK,EACrB8D,KAAKgjK,GAAKI,EAAW/7J,EACrBrH,KAAKijK,GAAKG,EAAW97J,EACrBtH,KAAKkjK,GAAKE,EAAWh8J,EAErBpH,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc4kK,GAAuB,IAAhBC,IAAMrjK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GAEpB/D,EAAImnK,EAAMjvG,GAAI/sD,EAAIg8J,EAAML,GAAI17J,EAAI+7J,EAAMJ,GAAI11J,EAAQ81J,EAAMG,OAMxDrP,EAAMl3J,KAAKk3J,IACXC,EAAMn3J,KAAKm3J,IAEXqP,EAAKtP,EAAKj4J,EAAI,GACdm4J,EAAKF,EAAK9sJ,EAAI,GACdq8J,EAAKvP,EAAK7sJ,EAAI,GAEdq8J,EAAKvP,EAAKl4J,EAAI,GACdo4J,EAAKF,EAAK/sJ,EAAI,GACdu8J,EAAKxP,EAAK9sJ,EAAI,GAEpB,OAASiG,GAER,IAAK,MACJvN,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,IAAK,MACJ5jK,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,IAAK,MACJ5jK,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,IAAK,MACJ5jK,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,IAAK,MACJ5jK,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,IAAK,MACJ5jK,KAAKo0D,GAAKuvG,EAAKtP,EAAKqP,EAAKD,EAAKnP,EAAKsP,EACnC5jK,KAAKgjK,GAAKS,EAAKnP,EAAKoP,EAAKC,EAAKtP,EAAKuP,EACnC5jK,KAAKijK,GAAKQ,EAAKpP,EAAKuP,EAAKD,EAAKrP,EAAKoP,EACnC1jK,KAAKkjK,GAAKO,EAAKpP,EAAKqP,EAAKC,EAAKrP,EAAKsP,EACnC,MAED,QACC7vJ,QAAQk/C,KAAM,mEAAqE1lD,GAMrF,OAFgB,IAAX+1J,GAAkBtjK,KAAKmjK,oBAErBnjK,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBolK,EAAMjO,GAMvB,IAAMkO,EAAYlO,EAAQ,EAAGn6J,EAAIwB,KAAKm3J,IAAK0P,GAS3C,OAPA9jK,KAAKo0D,GAAKyvG,EAAK3nK,EAAIT,EACnBuE,KAAKgjK,GAAKa,EAAKx8J,EAAI5L,EACnBuE,KAAKijK,GAAKY,EAAKv8J,EAAI7L,EACnBuE,KAAKkjK,GAAKjmK,KAAKk3J,IAAK2P,GAEpB9jK,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuBqI,GAMtB,IAAM+hC,EAAK/hC,EAAEk/H,SAEZg6B,EAAMn3H,EAAI,GAAKo3H,EAAMp3H,EAAI,GAAKq3H,EAAMr3H,EAAI,GACxCs3H,EAAMt3H,EAAI,GAAKu3H,EAAMv3H,EAAI,GAAKw3H,EAAMx3H,EAAI,GACxCy3H,EAAMz3H,EAAI,GAAK03H,EAAM13H,EAAI,GAAK23H,EAAM33H,EAAI,IAExC50B,EAAQ+rJ,EAAMI,EAAMI,EAErB,GAAKvsJ,EAAQ,EAAI,CAEhB,IAAMxY,EAAI,GAAMwB,KAAK04J,KAAM1hJ,EAAQ,GAEnCjU,KAAKkjK,GAAK,IAAOznK,EACjBuE,KAAKo0D,IAAOmsG,EAAMF,GAAQ5kK,EAC1BuE,KAAKgjK,IAAO9C,EAAMI,GAAQ7kK,EAC1BuE,KAAKijK,IAAO9C,EAAMF,GAAQxkK,CAE3B,MAAO,GAAKukK,EAAMI,GAAOJ,EAAMQ,EAAM,CAEpC,IAAM/kK,EAAI,EAAMwB,KAAK04J,KAAM,EAAMqK,EAAMI,EAAMI,GAE7CxgK,KAAKkjK,IAAO3C,EAAMF,GAAQ5kK,EAC1BuE,KAAKo0D,GAAK,IAAO34D,EACjBuE,KAAKgjK,IAAO/C,EAAME,GAAQ1kK,EAC1BuE,KAAKijK,IAAO/C,EAAMI,GAAQ7kK,CAE3B,MAAO,GAAK2kK,EAAMI,EAAM,CAEvB,IAAM/kK,EAAI,EAAMwB,KAAK04J,KAAM,EAAMyK,EAAMJ,EAAMQ,GAE7CxgK,KAAKkjK,IAAOhD,EAAMI,GAAQ7kK,EAC1BuE,KAAKo0D,IAAO6rG,EAAME,GAAQ1kK,EAC1BuE,KAAKgjK,GAAK,IAAOvnK,EACjBuE,KAAKijK,IAAO5C,EAAME,GAAQ9kK,CAE3B,KAAO,CAEN,IAAMA,EAAI,EAAMwB,KAAK04J,KAAM,EAAM6K,EAAMR,EAAMI,GAE7CpgK,KAAKkjK,IAAO/C,EAAMF,GAAQxkK,EAC1BuE,KAAKo0D,IAAO8rG,EAAMI,GAAQ7kK,EAC1BuE,KAAKgjK,IAAO3C,EAAME,GAAQ9kK,EAC1BuE,KAAKijK,GAAK,IAAOxnK,CAElB,CAIA,OAFAuE,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBslK,EAAOC,GAI1B,IAAI98J,EAAI68J,EAAME,IAAKD,GAAQ,EAmC3B,OAjCK98J,EAAImQ,OAAO6sJ,SAIfh9J,EAAI,EAECjK,KAAK4f,IAAKknJ,EAAM7nK,GAAMe,KAAK4f,IAAKknJ,EAAMz8J,IAE1CtH,KAAKo0D,IAAO2vG,EAAM18J,EAClBrH,KAAKgjK,GAAKe,EAAM7nK,EAChB8D,KAAKijK,GAAK,EACVjjK,KAAKkjK,GAAKh8J,IAIVlH,KAAKo0D,GAAK,EACVp0D,KAAKgjK,IAAOe,EAAMz8J,EAClBtH,KAAKijK,GAAKc,EAAM18J,EAChBrH,KAAKkjK,GAAKh8J,KAQXlH,KAAKo0D,GAAK2vG,EAAM18J,EAAI28J,EAAI18J,EAAIy8J,EAAMz8J,EAAI08J,EAAI38J,EAC1CrH,KAAKgjK,GAAKe,EAAMz8J,EAAI08J,EAAI9nK,EAAI6nK,EAAM7nK,EAAI8nK,EAAI18J,EAC1CtH,KAAKijK,GAAKc,EAAM7nK,EAAI8nK,EAAI38J,EAAI08J,EAAM18J,EAAI28J,EAAI9nK,EAC1C8D,KAAKkjK,GAAKh8J,GAIJlH,KAAK6gH,WAEb,GAAC,CAAAr+G,IAAA,UAAA/D,MAED,SAASwI,GAER,OAAO,EAAIhK,KAAK4iK,KAAM5iK,KAAK4f,IAAKq1I,GAAOlyJ,KAAKikK,IAAKh9J,IAAO,EAAG,IAE5D,GAAC,CAAAzE,IAAA,gBAAA/D,MAED,SAAewI,EAAGynF,GAEjB,IAAMknE,EAAQ51J,KAAKmkK,QAASl9J,GAE5B,GAAe,IAAV2uJ,EAAc,OAAO51J,KAE1B,IAAM1I,EAAI2F,KAAKiuC,IAAK,EAAGwjD,EAAOknE,GAI9B,OAFA51J,KAAKokK,MAAOn9J,EAAG3P,GAER0I,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAKivB,IAAK,EAAG,EAAG,EAAG,EAE3B,GAAC,CAAAzsB,IAAA,SAAA/D,MAED,WAIC,OAAOuB,KAAKqkK,WAEb,GAAC,CAAA7hK,IAAA,YAAA/D,MAED,WAQC,OANAuB,KAAKo0D,KAAQ,EACbp0D,KAAKgjK,KAAQ,EACbhjK,KAAKijK,KAAQ,EAEbjjK,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAEJ,OAAOnH,KAAKo0D,GAAKjtD,EAAEitD,GAAKp0D,KAAKgjK,GAAK77J,EAAE67J,GAAKhjK,KAAKijK,GAAK97J,EAAE87J,GAAKjjK,KAAKkjK,GAAK/7J,EAAE+7J,EAEvE,GAAC,CAAA1gK,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAKo0D,GAAKp0D,KAAKo0D,GAAKp0D,KAAKgjK,GAAKhjK,KAAKgjK,GAAKhjK,KAAKijK,GAAKjjK,KAAKijK,GAAKjjK,KAAKkjK,GAAKljK,KAAKkjK,EAEnF,GAAC,CAAA1gK,IAAA,SAAA/D,MAED,WAEC,OAAOxB,KAAK04J,KAAM31J,KAAKo0D,GAAKp0D,KAAKo0D,GAAKp0D,KAAKgjK,GAAKhjK,KAAKgjK,GAAKhjK,KAAKijK,GAAKjjK,KAAKijK,GAAKjjK,KAAKkjK,GAAKljK,KAAKkjK,GAE9F,GAAC,CAAA1gK,IAAA,YAAA/D,MAED,WAEC,IAAIoI,EAAI7G,KAAKpI,SAsBb,OApBW,IAANiP,GAEJ7G,KAAKo0D,GAAK,EACVp0D,KAAKgjK,GAAK,EACVhjK,KAAKijK,GAAK,EACVjjK,KAAKkjK,GAAK,IAIVr8J,EAAI,EAAIA,EAER7G,KAAKo0D,GAAKp0D,KAAKo0D,GAAKvtD,EACpB7G,KAAKgjK,GAAKhjK,KAAKgjK,GAAKn8J,EACpB7G,KAAKijK,GAAKjjK,KAAKijK,GAAKp8J,EACpB7G,KAAKkjK,GAAKljK,KAAKkjK,GAAKr8J,GAIrB7G,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAUwI,GAET,OAAOjH,KAAKskK,oBAAqBtkK,KAAMiH,EAExC,GAAC,CAAAzE,IAAA,cAAA/D,MAED,SAAawI,GAEZ,OAAOjH,KAAKskK,oBAAqBr9J,EAAGjH,KAErC,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,SAAqBzC,EAAGuK,GAIvB,IAAMg+J,EAAMvoK,EAAEo4D,GAAIowG,EAAMxoK,EAAEgnK,GAAIyB,EAAMzoK,EAAEinK,GAAIyB,EAAM1oK,EAAEknK,GAC5CyB,EAAMp+J,EAAE6tD,GAAIwwG,EAAMr+J,EAAEy8J,GAAI6B,EAAMt+J,EAAE08J,GAAI6B,EAAMv+J,EAAE28J,GASlD,OAPAljK,KAAKo0D,GAAKmwG,EAAMO,EAAMJ,EAAMC,EAAMH,EAAMK,EAAMJ,EAAMG,EACpD5kK,KAAKgjK,GAAKwB,EAAMM,EAAMJ,EAAME,EAAMH,EAAME,EAAMJ,EAAMM,EACpD7kK,KAAKijK,GAAKwB,EAAMK,EAAMJ,EAAMG,EAAMN,EAAMK,EAAMJ,EAAMG,EACpD3kK,KAAKkjK,GAAKwB,EAAMI,EAAMP,EAAMI,EAAMH,EAAMI,EAAMH,EAAMI,EAEpD7kK,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO62B,EAAIh+B,GAEV,GAAW,IAANA,EAAU,OAAO0I,KACtB,GAAW,IAAN1I,EAAU,OAAO0I,KAAK07J,KAAMpmI,GAEjC,IAAMp5B,EAAI8D,KAAKo0D,GAAI/sD,EAAIrH,KAAKgjK,GAAI17J,EAAItH,KAAKijK,GAAI77J,EAAIpH,KAAKkjK,GAIlD6B,EAAe39J,EAAIkuB,EAAG4tI,GAAKhnK,EAAIo5B,EAAG8+B,GAAK/sD,EAAIiuB,EAAG0tI,GAAK17J,EAAIguB,EAAG2tI,GAiB9D,GAfK8B,EAAe,GAEnB/kK,KAAKkjK,IAAO5tI,EAAG4tI,GACfljK,KAAKo0D,IAAO9+B,EAAG8+B,GACfp0D,KAAKgjK,IAAO1tI,EAAG0tI,GACfhjK,KAAKijK,IAAO3tI,EAAG2tI,GAEf8B,GAAiBA,GAIjB/kK,KAAK07J,KAAMpmI,GAIPyvI,GAAgB,EAOpB,OALA/kK,KAAKkjK,GAAK97J,EACVpH,KAAKo0D,GAAKl4D,EACV8D,KAAKgjK,GAAK37J,EACVrH,KAAKijK,GAAK37J,EAEHtH,KAIR,IAAMglK,EAAkB,EAAMD,EAAeA,EAE7C,GAAKC,GAAmB3tJ,OAAO6sJ,QAAU,CAExC,IAAMzoK,EAAI,EAAInE,EAQd,OAPA0I,KAAKkjK,GAAKznK,EAAI2L,EAAI9P,EAAI0I,KAAKkjK,GAC3BljK,KAAKo0D,GAAK34D,EAAIS,EAAI5E,EAAI0I,KAAKo0D,GAC3Bp0D,KAAKgjK,GAAKvnK,EAAI4L,EAAI/P,EAAI0I,KAAKgjK,GAC3BhjK,KAAKijK,GAAKxnK,EAAI6L,EAAIhQ,EAAI0I,KAAKijK,GAE3BjjK,KAAK6gH,YAEE7gH,IAER,CAEA,IAAMilK,EAAehoK,KAAK04J,KAAMqP,GAC1BE,EAAYjoK,KAAK44J,MAAOoP,EAAcF,GACtCI,EAASloK,KAAKm3J,KAAO,EAAI98J,GAAM4tK,GAAcD,EAClDG,EAASnoK,KAAKm3J,IAAK98J,EAAI4tK,GAAcD,EAStC,OAPAjlK,KAAKkjK,GAAO97J,EAAI+9J,EAASnlK,KAAKkjK,GAAKkC,EACnCplK,KAAKo0D,GAAOl4D,EAAIipK,EAASnlK,KAAKo0D,GAAKgxG,EACnCplK,KAAKgjK,GAAO37J,EAAI89J,EAASnlK,KAAKgjK,GAAKoC,EACnCplK,KAAKijK,GAAO37J,EAAI69J,EAASnlK,KAAKijK,GAAKmC,EAEnCplK,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB4uB,EAAIiI,EAAIh+B,GAEzB,OAAO0I,KAAK07J,KAAMruI,GAAK+2I,MAAO9uI,EAAIh+B,EAEnC,GAAC,CAAAkL,IAAA,SAAA/D,MAED,WAMC,IAAM4mK,EAAKpoK,KAAKuxC,SACV82H,EAAUroK,KAAK04J,KAAM,EAAI0P,GACzBE,EAAStoK,KAAK04J,KAAM0P,GAEpBG,EAAK,EAAIvoK,KAAK00J,GAAK10J,KAAKuxC,SAExBi3H,EAAK,EAAIxoK,KAAK00J,GAAK10J,KAAKuxC,SAE9B,OAAOxuC,KAAKivB,IACXq2I,EAAUroK,KAAKk3J,IAAKqR,GACpBD,EAAStoK,KAAKm3J,IAAKqR,GACnBF,EAAStoK,KAAKk3J,IAAKsR,GACnBH,EAAUroK,KAAKm3J,IAAKoR,GAGtB,GAAC,CAAAhjK,IAAA,SAAA/D,MAED,SAAQ2kK,GAEP,OAASA,EAAWhvG,KAAOp0D,KAAKo0D,IAAUgvG,EAAWJ,KAAOhjK,KAAKgjK,IAAUI,EAAWH,KAAOjjK,KAAKijK,IAAUG,EAAWF,KAAOljK,KAAKkjK,EAEpI,GAAC,CAAA1gK,IAAA,YAAA/D,MAED,SAAWsE,GAAoB,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAS1B,OAPAD,KAAKo0D,GAAKrxD,EAAOgnC,GACjB/pC,KAAKgjK,GAAKjgK,EAAOgnC,EAAS,GAC1B/pC,KAAKijK,GAAKlgK,EAAOgnC,EAAS,GAC1B/pC,KAAKkjK,GAAKngK,EAAOgnC,EAAS,GAE1B/pC,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAO7B,OALA8C,EAAOgnC,GAAW/pC,KAAKo0D,GACvBrxD,EAAOgnC,EAAS,GAAM/pC,KAAKgjK,GAC3BjgK,EAAOgnC,EAAS,GAAM/pC,KAAKijK,GAC3BlgK,EAAOgnC,EAAS,GAAM/pC,KAAKkjK,GAEpBngK,CAER,GAAC,CAAAP,IAAA,sBAAA/D,MAED,SAAqBy3J,EAAWtnJ,GAS/B,OAPA5O,KAAKo0D,GAAK8hG,EAAUC,KAAMvnJ,GAC1B5O,KAAKgjK,GAAK9M,EAAUE,KAAMxnJ,GAC1B5O,KAAKijK,GAAK/M,EAAUyG,KAAM/tJ,GAC1B5O,KAAKkjK,GAAKhN,EAAU2K,KAAMjyJ,GAE1B5O,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,OAAOuB,KAAKunF,SAEb,GAAC,CAAA/kF,IAAA,YAAA/D,MAED,SAAW05C,GAIV,OAFAn4C,KAAKmjK,kBAAoBhrH,EAElBn4C,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,WAAqB,GAAC,CAAA+D,IAEnB1B,OAAOrE,SAAQgC,MAAAq+E,EAAAA,MAAlB,SAAAr+E,IAAA,OAAAq+E,EAAAA,MAAA,SAAA0sF,GAAA,cAAAA,EAAAvmK,KAAAumK,EAAAtmK,MAAA,OAEC,OAFDsmK,EAAAtmK,KAAA,EAEOlD,KAAKo0D,GAAE,OACb,OADao1G,EAAAtmK,KAAA,EACPlD,KAAKgjK,GAAE,OACb,OADawG,EAAAtmK,KAAA,EACPlD,KAAKijK,GAAE,OACb,OADauG,EAAAtmK,KAAA,EACPlD,KAAKkjK,GAAE,wBAAAsG,EAAA/6F,OAAA,GAAAhwE,EAAA,WAEb,EAAA+D,IAAA,YAAA/D,MAzpBD,SAAkBmnK,EAAKC,EAAWC,EAAMC,EAAYC,EAAMC,EAAY3uK,GAIrE,IAAI4uK,EAAKJ,EAAMC,EAAa,GAC3BI,EAAKL,EAAMC,EAAa,GACxBK,EAAKN,EAAMC,EAAa,GACxBM,EAAKP,EAAMC,EAAa,GAEnBO,EAAKN,EAAMC,EAAa,GAC7BM,EAAKP,EAAMC,EAAa,GACxBO,EAAKR,EAAMC,EAAa,GACxBQ,EAAKT,EAAMC,EAAa,GAEzB,GAAW,IAAN3uK,EAMJ,OAJAsuK,EAAKC,EAAY,GAAMK,EACvBN,EAAKC,EAAY,GAAMM,EACvBP,EAAKC,EAAY,GAAMO,OACvBR,EAAKC,EAAY,GAAMQ,GAKxB,GAAW,IAAN/uK,EAMJ,OAJAsuK,EAAKC,EAAY,GAAMS,EACvBV,EAAKC,EAAY,GAAMU,EACvBX,EAAKC,EAAY,GAAMW,OACvBZ,EAAKC,EAAY,GAAMY,GAKxB,GAAKJ,IAAOI,GAAMP,IAAOI,GAAMH,IAAOI,GAAMH,IAAOI,EAAK,CAEvD,IAAI/qK,EAAI,EAAInE,EACN68J,EAAM+R,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAC9CC,EAAQvS,GAAO,EAAI,GAAM,EACzBwS,EAAS,EAAIxS,EAAMA,EAGpB,GAAKwS,EAAStvJ,OAAO6sJ,QAAU,CAE9B,IAAM9P,EAAMn3J,KAAK04J,KAAMgR,GACtB36J,EAAM/O,KAAK44J,MAAOzB,EAAKD,EAAMuS,GAE9BjrK,EAAIwB,KAAKm3J,IAAK34J,EAAIuQ,GAAQooJ,EAC1B98J,EAAI2F,KAAKm3J,IAAK98J,EAAI0U,GAAQooJ,CAE3B,CAEA,IAAMwS,EAAOtvK,EAAIovK,EAQjB,GANAR,EAAKA,EAAKzqK,EAAI6qK,EAAKM,EACnBT,EAAKA,EAAK1qK,EAAI8qK,EAAKK,EACnBR,EAAKA,EAAK3qK,EAAI+qK,EAAKI,EACnBP,EAAKA,EAAK5qK,EAAIgrK,EAAKG,EAGdnrK,IAAM,EAAInE,EAAI,CAElB,IAAMmP,EAAI,EAAIxJ,KAAK04J,KAAMuQ,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,GAE5DH,GAAMz/J,EACN0/J,GAAM1/J,EACN2/J,GAAM3/J,EACN4/J,GAAM5/J,CAEP,CAED,CAEAm/J,EAAKC,GAAcK,EACnBN,EAAKC,EAAY,GAAMM,EACvBP,EAAKC,EAAY,GAAMO,EACvBR,EAAKC,EAAY,GAAMQ,CAExB,GAAC,CAAA7jK,IAAA,0BAAA/D,MAED,SAAgCmnK,EAAKC,EAAWC,EAAMC,EAAYC,EAAMC,GAEvE,IAAMC,EAAKJ,EAAMC,GACXI,EAAKL,EAAMC,EAAa,GACxBK,EAAKN,EAAMC,EAAa,GACxBM,EAAKP,EAAMC,EAAa,GAExBO,EAAKN,EAAMC,GACXM,EAAKP,EAAMC,EAAa,GACxBO,EAAKR,EAAMC,EAAa,GACxBQ,EAAKT,EAAMC,EAAa,GAO9B,OALAL,EAAKC,GAAcK,EAAKO,EAAKJ,EAAKC,EAAKH,EAAKK,EAAKJ,EAAKG,EACtDX,EAAKC,EAAY,GAAMM,EAAKM,EAAKJ,EAAKE,EAAKH,EAAKE,EAAKJ,EAAKM,EAC1DZ,EAAKC,EAAY,GAAMO,EAAKK,EAAKJ,EAAKG,EAAKN,EAAKK,EAAKJ,EAAKG,EAC1DV,EAAKC,EAAY,GAAMQ,EAAKI,EAAKP,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAEnDZ,CAER,KAAC7C,CAAA,CAhHc,GA0qBV+D,GAAO,WAEZ,SAAAA,IAAmC,IAAtB5qK,EAAC+D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqH,EAACrH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAq8J,GAE/BA,EAAQlqK,UAAU6sK,WAAY,EAE9BzpK,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EACTrH,KAAKsH,EAAIA,CAEV,CA+rBC,OA/rBAiC,EAAAu9J,EAAA,EAAAtkK,IAAA,MAAA/D,MAED,SAAKvC,EAAGmL,EAAGC,GAQV,YANW8C,IAAN9C,IAAkBA,EAAItH,KAAKsH,GAEhCtH,KAAK9D,EAAIA,EACT8D,KAAKqH,EAAIA,EACTrH,KAAKsH,EAAIA,EAEFtH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW22J,GAMV,OAJAp1J,KAAK9D,EAAIk5J,EACTp1J,KAAKqH,EAAI+tJ,EACTp1J,KAAKsH,EAAI8tJ,EAEFp1J,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMvC,GAIL,OAFA8D,KAAK9D,EAAIA,EAEF8D,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM4I,GAIL,OAFArH,KAAKqH,EAAIA,EAEFrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM6I,GAIL,OAFAtH,KAAKsH,EAAIA,EAEFtH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,EAAOnQ,GAEpB,OAASmQ,GAER,KAAK,EAAG5O,KAAK9D,EAAIuC,EAAO,MACxB,KAAK,EAAGuB,KAAKqH,EAAI5I,EAAO,MACxB,KAAK,EAAGuB,KAAKsH,EAAI7I,EAAO,MACxB,QAAS,MAAM,IAAIX,MAAO,0BAA4B8Q,GAIvD,OAAO5O,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,GAEb,OAASA,GAER,KAAK,EAAG,OAAO5O,KAAK9D,EACpB,KAAK,EAAG,OAAO8D,KAAKqH,EACpB,KAAK,EAAG,OAAOrH,KAAKsH,EACpB,QAAS,MAAM,IAAIxJ,MAAO,0BAA4B8Q,GAIxD,GAAC,CAAApM,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAK9D,EAAG8D,KAAKqH,EAAGrH,KAAKsH,EAEnD,GAAC,CAAA9E,IAAA,OAAA/D,MAED,SAAM0I,GAML,OAJAnH,KAAK9D,EAAIiL,EAAEjL,EACX8D,KAAKqH,EAAIF,EAAEE,EACXrH,KAAKsH,EAAIH,EAAEG,EAEJtH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAMJ,OAJAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EAELtH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAMV,OAJAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EACVuE,KAAKsH,GAAK7L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAMd,OAJAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EACjBrH,KAAKsH,EAAItL,EAAEsL,EAAIf,EAAEe,EAEVtH,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiB0I,EAAG1L,GAMnB,OAJAuE,KAAK9D,GAAKiL,EAAEjL,EAAIT,EAChBuE,KAAKqH,GAAKF,EAAEE,EAAI5L,EAChBuE,KAAKsH,GAAKH,EAAEG,EAAI7L,EAETuE,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAMJ,OAJAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EAELtH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAMV,OAJAuE,KAAK9D,GAAKT,EACVuE,KAAKqH,GAAK5L,EACVuE,KAAKsH,GAAK7L,EAEHuE,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYzC,EAAGuK,GAMd,OAJAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EACjBrH,KAAKsH,EAAItL,EAAEsL,EAAIf,EAAEe,EAEVtH,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU0I,GAMT,OAJAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EAELtH,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB22J,GAMf,OAJAp1J,KAAK9D,GAAKk5J,EACVp1J,KAAKqH,GAAK+tJ,EACVp1J,KAAKsH,GAAK8tJ,EAEHp1J,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBzC,EAAGuK,GAMnB,OAJAvG,KAAK9D,EAAIF,EAAEE,EAAIqK,EAAErK,EACjB8D,KAAKqH,EAAIrL,EAAEqL,EAAId,EAAEc,EACjBrH,KAAKsH,EAAItL,EAAEsL,EAAIf,EAAEe,EAEVtH,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAY4kK,GAEX,OAAOrjK,KAAKgnK,gBAAiBC,GAAcC,aAAc7D,GAE1D,GAAC,CAAA7gK,IAAA,iBAAA/D,MAED,SAAgBolK,EAAMjO,GAErB,OAAO51J,KAAKgnK,gBAAiBC,GAAcE,iBAAkBtD,EAAMjO,GAEpE,GAAC,CAAApzJ,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM5K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EAAGC,EAAItH,KAAKsH,EACjChB,EAAIQ,EAAEk/H,SAMZ,OAJAhmI,KAAK9D,EAAIoK,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAC5CtH,KAAKqH,EAAIf,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAC5CtH,KAAKsH,EAAIhB,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAErCtH,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBqI,GAElB,OAAO9G,KAAK0/J,aAAc54J,GAAI+5G,WAE/B,GAAC,CAAAr+G,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM5K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EAAGC,EAAItH,KAAKsH,EACjChB,EAAIQ,EAAEk/H,SAEN5+H,EAAI,GAAMd,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,IAAOgB,EAAIhB,EAAG,KAM3D,OAJAtG,KAAK9D,GAAMoK,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAAIhB,EAAG,KAASc,EAC9DpH,KAAKqH,GAAMf,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAAIhB,EAAG,KAASc,EAC9DpH,KAAKsH,GAAMhB,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,IAAOgB,EAAIhB,EAAG,KAASc,EAExDpH,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBwI,GAIhB,IAAMu/a,EAAKxmb,KAAK9D,EAAGuqb,EAAKzmb,KAAKqH,EAAGq/a,EAAK1mb,KAAKsH,EACpC8/J,EAAKngK,EAAE/K,EAAGmrK,EAAKpgK,EAAEI,EAAGigK,EAAKrgK,EAAEK,EAAGigK,EAAKtgK,EAAEG,EAGrC8xJ,EAAK,GAAMmO,EAAKq/Q,EAAKp/Q,EAAKm/Q,GAC1BttR,EAAK,GAAMmO,EAAKk/Q,EAAKp/Q,EAAKs/Q,GAC1BnjM,EAAK,GAAMn8E,EAAKq/Q,EAAKp/Q,EAAKm/Q,GAOhC,OAJAxmb,KAAK9D,EAAIsqb,EAAKj/Q,EAAKrO,EAAKmO,EAAKk8E,EAAKj8E,EAAKnO,EACvCn5J,KAAKqH,EAAIo/a,EAAKl/Q,EAAKpO,EAAKmO,EAAKpO,EAAKkO,EAAKm8E,EACvCvjP,KAAKsH,EAAIo/a,EAAKn/Q,EAAKg8E,EAAKn8E,EAAKjO,EAAKkO,EAAKnO,EAEhCl5J,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASmpK,GAER,OAAO5nK,KAAK6nK,aAAcD,EAAOE,oBAAqBD,aAAcD,EAAOG,iBAE5E,GAAC,CAAAvlK,IAAA,YAAA/D,MAED,SAAWmpK,GAEV,OAAO5nK,KAAK6nK,aAAcD,EAAOI,yBAA0BH,aAAcD,EAAOK,YAEjF,GAAC,CAAAzlK,IAAA,qBAAA/D,MAED,SAAoBqI,GAKnB,IAAM5K,EAAI8D,KAAK9D,EAAGmL,EAAIrH,KAAKqH,EAAGC,EAAItH,KAAKsH,EACjChB,EAAIQ,EAAEk/H,SAMZ,OAJAhmI,KAAK9D,EAAIoK,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAC5CtH,KAAKqH,EAAIf,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,GAAMgB,EAC5CtH,KAAKsH,EAAIhB,EAAG,GAAMpK,EAAIoK,EAAG,GAAMe,EAAIf,EAAG,IAAOgB,EAEtCtH,KAAK6gH,WAEb,GAAC,CAAAr+G,IAAA,SAAA/D,MAED,SAAQ0I,GAMP,OAJAnH,KAAK9D,GAAKiL,EAAEjL,EACZ8D,KAAKqH,GAAKF,EAAEE,EACZrH,KAAKsH,GAAKH,EAAEG,EAELtH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc22J,GAEb,OAAOp1J,KAAKu1J,eAAgB,EAAIH,EAEjC,GAAC,CAAA5yJ,IAAA,MAAA/D,MAED,SAAK0I,GAMJ,OAJAnH,KAAK9D,EAAIe,KAAKiuC,IAAKlrC,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKiuC,IAAKlrC,KAAKqH,EAAGF,EAAEE,GAC7BrH,KAAKsH,EAAIrK,KAAKiuC,IAAKlrC,KAAKsH,EAAGH,EAAEG,GAEtBtH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAMJ,OAJAnH,KAAK9D,EAAIe,KAAKC,IAAK8C,KAAK9D,EAAGiL,EAAEjL,GAC7B8D,KAAKqH,EAAIpK,KAAKC,IAAK8C,KAAKqH,EAAGF,EAAEE,GAC7BrH,KAAKsH,EAAIrK,KAAKC,IAAK8C,KAAKsH,EAAGH,EAAEG,GAEtBtH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOysC,EAAKhuC,GAQX,OAJA8C,KAAK9D,EAAIe,KAAKC,IAAKguC,EAAIhvC,EAAGe,KAAKiuC,IAAKhuC,EAAIhB,EAAG8D,KAAK9D,IAChD8D,KAAKqH,EAAIpK,KAAKC,IAAKguC,EAAI7jC,EAAGpK,KAAKiuC,IAAKhuC,EAAImK,EAAGrH,KAAKqH,IAChDrH,KAAKsH,EAAIrK,KAAKC,IAAKguC,EAAI5jC,EAAGrK,KAAKiuC,IAAKhuC,EAAIoK,EAAGtH,KAAKsH,IAEzCtH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAa+2J,EAAQC,GAMpB,OAJAz1J,KAAK9D,EAAIe,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAK9D,IAClD8D,KAAKqH,EAAIpK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKqH,IAClDrH,KAAKsH,EAAIrK,KAAKC,IAAKs4J,EAAQv4J,KAAKiuC,IAAKuqH,EAAQz1J,KAAKsH,IAE3CtH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAaysC,EAAKhuC,GAEjB,IAAMtF,EAASoI,KAAKpI,SAEpB,OAAOoI,KAAK01J,aAAc99J,GAAU,GAAI29J,eAAgBt4J,KAAKC,IAAKguC,EAAKjuC,KAAKiuC,IAAKhuC,EAAKtF,IAEvF,GAAC,CAAA4K,IAAA,QAAA/D,MAED,WAMC,OAJAuB,KAAK9D,EAAIe,KAAKwf,MAAOzc,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAKwf,MAAOzc,KAAKqH,GAC1BrH,KAAKsH,EAAIrK,KAAKwf,MAAOzc,KAAKsH,GAEnBtH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,WAMC,OAJAuB,KAAK9D,EAAIe,KAAKurD,KAAMxoD,KAAK9D,GACzB8D,KAAKqH,EAAIpK,KAAKurD,KAAMxoD,KAAKqH,GACzBrH,KAAKsH,EAAIrK,KAAKurD,KAAMxoD,KAAKsH,GAElBtH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAMC,OAJAuB,KAAK9D,EAAIe,KAAK83J,MAAO/0J,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAK83J,MAAO/0J,KAAKqH,GAC1BrH,KAAKsH,EAAIrK,KAAK83J,MAAO/0J,KAAKsH,GAEnBtH,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAMC,OAJAuB,KAAK9D,EAAIe,KAAK8nb,MAAO/kb,KAAK9D,GAC1B8D,KAAKqH,EAAIpK,KAAK8nb,MAAO/kb,KAAKqH,GAC1BrH,KAAKsH,EAAIrK,KAAK8nb,MAAO/kb,KAAKsH,GAEnBtH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAMC,OAJAuB,KAAK9D,GAAM8D,KAAK9D,EAChB8D,KAAKqH,GAAMrH,KAAKqH,EAChBrH,KAAKsH,GAAMtH,KAAKsH,EAETtH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK0I,GAEJ,OAAOnH,KAAK9D,EAAIiL,EAAEjL,EAAI8D,KAAKqH,EAAIF,EAAEE,EAAIrH,KAAKsH,EAAIH,EAAEG,CAEjD,GAEA,CAAA9E,IAAA,WAAA/D,MAEA,WAEC,OAAOuB,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,EAAIrH,KAAKsH,EAAItH,KAAKsH,CAE1D,GAAC,CAAA9E,IAAA,SAAA/D,MAED,WAEC,OAAOxB,KAAK04J,KAAM31J,KAAK9D,EAAI8D,KAAK9D,EAAI8D,KAAKqH,EAAIrH,KAAKqH,EAAIrH,KAAKsH,EAAItH,KAAKsH,EAErE,GAAC,CAAA9E,IAAA,kBAAA/D,MAED,WAEC,OAAOxB,KAAK4f,IAAK7c,KAAK9D,GAAMe,KAAK4f,IAAK7c,KAAKqH,GAAMpK,KAAK4f,IAAK7c,KAAKsH,EAEjE,GAAC,CAAA9E,IAAA,YAAA/D,MAED,WAEC,OAAOuB,KAAK01J,aAAc11J,KAAKpI,UAAY,EAE5C,GAAC,CAAA4K,IAAA,YAAA/D,MAED,SAAW7G,GAEV,OAAOoI,KAAK6gH,YAAY00C,eAAgB39J,EAEzC,GAAC,CAAA4K,IAAA,OAAA/D,MAED,SAAM0I,EAAG4uJ,GAMR,OAJA/1J,KAAK9D,IAAOiL,EAAEjL,EAAI8D,KAAK9D,GAAM65J,EAC7B/1J,KAAKqH,IAAOF,EAAEE,EAAIrH,KAAKqH,GAAM0uJ,EAC7B/1J,KAAKsH,IAAOH,EAAEG,EAAItH,KAAKsH,GAAMyuJ,EAEtB/1J,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAau3J,EAAIC,EAAIF,GAMpB,OAJA/1J,KAAK9D,EAAI85J,EAAG95J,GAAM+5J,EAAG/5J,EAAI85J,EAAG95J,GAAM65J,EAClC/1J,KAAKqH,EAAI2uJ,EAAG3uJ,GAAM4uJ,EAAG5uJ,EAAI2uJ,EAAG3uJ,GAAM0uJ,EAClC/1J,KAAKsH,EAAI0uJ,EAAG1uJ,GAAM2uJ,EAAG3uJ,EAAI0uJ,EAAG1uJ,GAAMyuJ,EAE3B/1J,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO0I,GAEN,OAAOnH,KAAKkoK,aAAcloK,KAAMmH,EAEjC,GAAC,CAAA3E,IAAA,eAAA/D,MAED,SAAczC,EAAGuK,GAEhB,IAAM4hK,EAAKnsK,EAAEE,EAAGksK,EAAKpsK,EAAEqL,EAAGghK,EAAKrsK,EAAEsL,EAC3BghK,EAAK/hK,EAAErK,EAAGqsK,EAAKhiK,EAAEc,EAAGmhK,EAAKjiK,EAAEe,EAMjC,OAJAtH,KAAK9D,EAAIksK,EAAKI,EAAKH,EAAKE,EACxBvoK,KAAKqH,EAAIghK,EAAKC,EAAKH,EAAKK,EACxBxoK,KAAKsH,EAAI6gK,EAAKI,EAAKH,EAAKE,EAEjBtoK,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiB0I,GAEhB,IAAMshK,EAActhK,EAAEuhK,WAEtB,GAAqB,IAAhBD,EAAoB,OAAOzoK,KAAKivB,IAAK,EAAG,EAAG,GAEhD,IAAMmmI,EAASjuJ,EAAE88J,IAAKjkK,MAASyoK,EAE/B,OAAOzoK,KAAK07J,KAAMv0J,GAAIouJ,eAAgBH,EAEvC,GAAC,CAAA5yJ,IAAA,iBAAA/D,MAED,SAAgBkqK,GAIf,OAFAC,GAAUlN,KAAM17J,MAAO6oK,gBAAiBF,GAEjC3oK,KAAK8oK,IAAKF,GAElB,GAAC,CAAApmK,IAAA,UAAA/D,MAED,SAASsqK,GAKR,OAAO/oK,KAAK8oK,IAAKF,GAAUlN,KAAMqN,GAASxT,eAAgB,EAAIv1J,KAAKikK,IAAK8E,IAEzE,GAAC,CAAAvmK,IAAA,UAAA/D,MAED,SAAS0I,GAER,IAAMshK,EAAcxrK,KAAK04J,KAAM31J,KAAK0oK,WAAavhK,EAAEuhK,YAEnD,GAAqB,IAAhBD,EAAoB,OAAOxrK,KAAK00J,GAAK,EAE1C,IAAM8H,EAAQz5J,KAAKikK,IAAK98J,GAAMshK,EAI9B,OAAOxrK,KAAK4iK,KAAM3N,GAAOuH,GAAS,EAAG,GAEtC,GAAC,CAAAj3J,IAAA,aAAA/D,MAED,SAAY0I,GAEX,OAAOlK,KAAK04J,KAAM31J,KAAK81J,kBAAmB3uJ,GAE3C,GAAC,CAAA3E,IAAA,oBAAA/D,MAED,SAAmB0I,GAElB,IAAMmnI,EAAKtuI,KAAK9D,EAAIiL,EAAEjL,EAAGmyI,EAAKruI,KAAKqH,EAAIF,EAAEE,EAAG2hK,EAAKhpK,KAAKsH,EAAIH,EAAEG,EAE5D,OAAOgnI,EAAKA,EAAKD,EAAKA,EAAK26B,EAAKA,CAEjC,GAAC,CAAAxmK,IAAA,sBAAA/D,MAED,SAAqB0I,GAEpB,OAAOlK,KAAK4f,IAAK7c,KAAK9D,EAAIiL,EAAEjL,GAAMe,KAAK4f,IAAK7c,KAAKqH,EAAIF,EAAEE,GAAMpK,KAAK4f,IAAK7c,KAAKsH,EAAIH,EAAEG,EAEnF,GAAC,CAAA9E,IAAA,mBAAA/D,MAED,SAAkBhD,GAEjB,OAAOuE,KAAKipK,uBAAwBxtK,EAAEytK,OAAQztK,EAAE0tK,IAAK1tK,EAAEg+J,MAExD,GAAC,CAAAj3J,IAAA,yBAAA/D,MAED,SAAwByqK,EAAQC,EAAK1P,GAEpC,IAAM2P,EAAensK,KAAKm3J,IAAK+U,GAAQD,EAMvC,OAJAlpK,KAAK9D,EAAIktK,EAAensK,KAAKm3J,IAAKqF,GAClCz5J,KAAKqH,EAAIpK,KAAKk3J,IAAKgV,GAAQD,EAC3BlpK,KAAKsH,EAAI8hK,EAAensK,KAAKk3J,IAAKsF,GAE3Bz5J,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBxC,GAEnB,OAAO+D,KAAKqpK,yBAA0BptK,EAAEitK,OAAQjtK,EAAEw9J,MAAOx9J,EAAEoL,EAE5D,GAAC,CAAA7E,IAAA,2BAAA/D,MAED,SAA0ByqK,EAAQzP,EAAOpyJ,GAMxC,OAJArH,KAAK9D,EAAIgtK,EAASjsK,KAAKm3J,IAAKqF,GAC5Bz5J,KAAKqH,EAAIA,EACTrH,KAAKsH,EAAI4hK,EAASjsK,KAAKk3J,IAAKsF,GAErBz5J,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuBqI,GAEtB,IAAMR,EAAIQ,EAAEk/H,SAMZ,OAJAhmI,KAAK9D,EAAIoK,EAAG,IACZtG,KAAKqH,EAAIf,EAAG,IACZtG,KAAKsH,EAAIhB,EAAG,IAELtG,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBqI,GAEnB,IAAMsyJ,EAAKp5J,KAAKspK,oBAAqBxiK,EAAG,GAAIlP,SACtCyhK,EAAKr5J,KAAKspK,oBAAqBxiK,EAAG,GAAIlP,SACtC2xK,EAAKvpK,KAAKspK,oBAAqBxiK,EAAG,GAAIlP,SAM5C,OAJAoI,KAAK9D,EAAIk9J,EACTp5J,KAAKqH,EAAIgyJ,EACTr5J,KAAKsH,EAAIiiK,EAEFvpK,IAER,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,SAAqBqI,EAAG8H,GAEvB,OAAO5O,KAAK25J,UAAW7yJ,EAAEk/H,SAAkB,EAARp3H,EAEpC,GAAC,CAAApM,IAAA,uBAAA/D,MAED,SAAsBqI,EAAG8H,GAExB,OAAO5O,KAAK25J,UAAW7yJ,EAAEk/H,SAAkB,EAARp3H,EAEpC,GAAC,CAAApM,IAAA,eAAA/D,MAED,SAAc6H,GAMb,OAJAtG,KAAK9D,EAAIoK,EAAE8tD,GACXp0D,KAAKqH,EAAIf,EAAE08J,GACXhjK,KAAKsH,EAAIhB,EAAE28J,GAEJjjK,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcxC,GAMb,OAJA+D,KAAK9D,EAAID,EAAEiL,EACXlH,KAAKqH,EAAIpL,EAAEyK,EACX1G,KAAKsH,EAAIrL,EAAEsK,EAEJvG,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0I,GAEP,OAAWA,EAAEjL,IAAM8D,KAAK9D,GAASiL,EAAEE,IAAMrH,KAAKqH,GAASF,EAAEG,IAAMtH,KAAKsH,CAErE,GAAC,CAAA9E,IAAA,YAAA/D,MAED,SAAWsE,GAAoB,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAM1B,OAJAD,KAAK9D,EAAI6G,EAAOgnC,GAChB/pC,KAAKqH,EAAItE,EAAOgnC,EAAS,GACzB/pC,KAAKsH,EAAIvE,EAAOgnC,EAAS,GAElB/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAM7B,OAJA8C,EAAOgnC,GAAW/pC,KAAK9D,EACvB6G,EAAOgnC,EAAS,GAAM/pC,KAAKqH,EAC3BtE,EAAOgnC,EAAS,GAAM/pC,KAAKsH,EAEpBvE,CAER,GAAC,CAAAP,IAAA,sBAAA/D,MAED,SAAqBy3J,EAAWtnJ,GAM/B,OAJA5O,KAAK9D,EAAIg6J,EAAUC,KAAMvnJ,GACzB5O,KAAKqH,EAAI6uJ,EAAUE,KAAMxnJ,GACzB5O,KAAKsH,EAAI4uJ,EAAUyG,KAAM/tJ,GAElB5O,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAMC,OAJAuB,KAAK9D,EAAIe,KAAKuxC,SACdxuC,KAAKqH,EAAIpK,KAAKuxC,SACdxuC,KAAKsH,EAAIrK,KAAKuxC,SAEPxuC,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,WAIC,IAAM8I,EAA8B,GAAxBtK,KAAKuxC,SAAW,IACtBl3C,EAAI2F,KAAKuxC,SAAWvxC,KAAK00J,GAAK,EAC9BlrJ,EAAIxJ,KAAK04J,KAAM,EAAC14J,KAAAs1J,IAAGhrJ,EAAK,IAM9B,OAJAvH,KAAK9D,EAAIuK,EAAIxJ,KAAKk3J,IAAK78J,GACvB0I,KAAKqH,EAAIZ,EAAIxJ,KAAKm3J,IAAK98J,GACvB0I,KAAKsH,EAAIC,EAEFvH,IAER,GAAC,CAAAwC,IAEE1B,OAAOrE,SAAQgC,MAAAq+E,EAAAA,MAAlB,SAAAr+E,IAAA,OAAAq+E,EAAAA,MAAA,SAAA0rJ,GAAA,cAAAA,EAAAvlO,KAAAulO,EAAAtlO,MAAA,OAEC,OAFDslO,EAAAtlO,KAAA,EAEOlD,KAAK9D,EAAC,OACZ,OADYssO,EAAAtlO,KAAA,EACNlD,KAAKqH,EAAC,OACZ,OADYmhO,EAAAtlO,KAAA,EACNlD,KAAKsH,EAAC,wBAAAkhO,EAAA/5J,OAAA,GAAAhwE,EAAA,YAEZqoK,CAAA,CAzsBW,GA6sBP8B,GAA0B,IAAI9B,GAC9BG,GAA8B,IAAIlE,GAElC2G,GAAI,WAET,SAAAA,IAAgI,IAAnHx+H,EAAGjrC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAW39G,IAAYA,IAAYA,KAAYjsD,EAAG+C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,IAAW39G,KAAYA,KAAYA,KAAU1+C,EAAA,KAAAi/J,GAE5H1pK,KAAKysK,QAAS,EAEdzsK,KAAKkrC,IAAMA,EACXlrC,KAAK9C,IAAMA,CAEZ,CA4cC,OA5cAqM,EAAAmgK,EAAA,EAAAlnK,IAAA,MAAA/D,MAED,SAAKysC,EAAKhuC,GAKT,OAHA8C,KAAKkrC,IAAIwwH,KAAMxwH,GACflrC,KAAK9C,IAAIw+J,KAAMx+J,GAER8C,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcsE,GAEb/C,KAAKkqK,YAEL,IAAM,IAAIxtK,EAAI,EAAGowD,EAAK/pD,EAAMnL,OAAQ8E,EAAIowD,EAAIpwD,GAAK,EAEhDsD,KAAKmqK,cAAeE,GAAU1Q,UAAW52J,EAAOrG,IAIjD,OAAOsD,IAER,GAAC,CAAAwC,IAAA,yBAAA/D,MAED,SAAwBy3J,GAEvBl2J,KAAKkqK,YAEL,IAAM,IAAIxtK,EAAI,EAAGowD,EAAKopG,EAAUv4E,MAAOjhF,EAAIowD,EAAIpwD,IAE9CsD,KAAKmqK,cAAeE,GAAUU,oBAAqB7U,EAAWx5J,IAI/D,OAAOsD,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAewrK,GAEdjqK,KAAKkqK,YAEL,IAAM,IAAIxtK,EAAI,EAAGowD,EAAKm9G,EAAOryK,OAAQ8E,EAAIowD,EAAIpwD,IAE5CsD,KAAKmqK,cAAeF,EAAQvtK,IAI7B,OAAOsD,IAER,GAAC,CAAAwC,IAAA,uBAAA/D,MAED,SAAsB43J,EAAQ9wG,GAE7B,IAAM6kH,EAAWC,GAAU3O,KAAMn2G,GAAOgwG,eAAgB,IAKxD,OAHAv1J,KAAKkrC,IAAIwwH,KAAMrF,GAASyS,IAAKsB,GAC7BpqK,KAAK9C,IAAIw+J,KAAMrF,GAASjqI,IAAKg+I,GAEtBpqK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAe0D,GAA0B,IAAlBmoK,EAAOrqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAI7B,OAFAD,KAAKkqK,YAEElqK,KAAKuqK,eAAgBpoK,EAAQmoK,EAErC,GAAC,CAAA9nK,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+rK,GAKL,OAHAxqK,KAAKkrC,IAAIwwH,KAAM8O,EAAIt/H,KACnBlrC,KAAK9C,IAAIw+J,KAAM8O,EAAIttK,KAEZ8C,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,WAKC,OAHAuB,KAAKkrC,IAAIhvC,EAAI8D,KAAKkrC,IAAI7jC,EAAIrH,KAAKkrC,IAAI5jC,EAAM6hD,IACzCnpD,KAAK9C,IAAIhB,EAAI8D,KAAK9C,IAAImK,EAAIrH,KAAK9C,IAAIoK,GAAM6hD,IAElCnpD,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAIC,OAASuB,KAAK9C,IAAIhB,EAAI8D,KAAKkrC,IAAIhvC,GAAS8D,KAAK9C,IAAImK,EAAIrH,KAAKkrC,IAAI7jC,GAASrH,KAAK9C,IAAIoK,EAAItH,KAAKkrC,IAAI5jC,CAE9F,GAAC,CAAA9E,IAAA,YAAA/D,MAED,SAAW8C,GAEV,OAAOvB,KAAKyqK,UAAYlpK,EAAO0tB,IAAK,EAAG,EAAG,GAAM1tB,EAAO8zJ,WAAYr1J,KAAKkrC,IAAKlrC,KAAK9C,KAAMq4J,eAAgB,GAEzG,GAAC,CAAA/yJ,IAAA,UAAA/D,MAED,SAAS8C,GAER,OAAOvB,KAAKyqK,UAAYlpK,EAAO0tB,IAAK,EAAG,EAAG,GAAM1tB,EAAO+zJ,WAAYt1J,KAAK9C,IAAK8C,KAAKkrC,IAEnF,GAAC,CAAA1oC,IAAA,gBAAA/D,MAED,SAAeisK,GAKd,OAHA1qK,KAAKkrC,IAAIA,IAAKw/H,GACd1qK,KAAK9C,IAAIA,IAAKwtK,GAEP1qK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBksK,GAKf,OAHA3qK,KAAKkrC,IAAI49H,IAAK6B,GACd3qK,KAAK9C,IAAIkvB,IAAKu+I,GAEP3qK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB22J,GAKf,OAHAp1J,KAAKkrC,IAAI0/H,WAAaxV,GACtBp1J,KAAK9C,IAAI0tK,UAAWxV,GAEbp1J,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB0D,GAA0B,IAAlBmoK,EAAOrqK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAK9BkC,EAAO0oK,mBAAmB,GAAO,GAEjC,IAAMC,EAAW3oK,EAAO2oK,SAExB,QAAkB1gK,IAAb0gK,EAAyB,CAE7B,IAAM0d,EAAoB1d,EAASlhG,aAAc,YAKjD,IAAiB,IAAZ0gG,QAA0ClgK,IAAtBo+K,IAA8D,IAA3BrmL,EAAO61K,gBAElE,IAAM,IAAIt7K,EAAI,EAAGmK,EAAI2hL,EAAkB7qG,MAAOjhF,EAAImK,EAAGnK,KAE7B,IAAlByF,EAAOk2K,OAEXl2K,EAAOwkb,kBAAmBjqb,EAAG2tK,IAI7BA,GAAUU,oBAAqByd,EAAmB9rL,GAInD2tK,GAAUxC,aAAc1lK,EAAO8lK,aAC/BjoK,KAAKmqK,cAAeE,cAMOjgK,IAAvBjI,EAAO6oK,aAIiB,OAAvB7oK,EAAO6oK,aAEX7oK,EAAO8oK,qBAIR27Q,GAAOlrR,KAAMv5J,EAAO6oK,eAOU,OAAzBF,EAASE,aAEbF,EAASG,qBAIV27Q,GAAOlrR,KAAMoP,EAASE,cAIvB47Q,GAAO/+Q,aAAc1lK,EAAO8lK,aAE5BjoK,KAAKmrK,MAAOy7Q,GAId,CAIA,IAFA,IAAMhpa,EAAWzb,EAAOyb,SAEdlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5CsD,KAAKuqK,eAAgB3sJ,EAAUlhB,GAAK4tK,GAIrC,OAAOtqK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeisK,GAEd,QAAOA,EAAMxuK,EAAI8D,KAAKkrC,IAAIhvC,GAAKwuK,EAAMxuK,EAAI8D,KAAK9C,IAAIhB,GACjDwuK,EAAMrjK,EAAIrH,KAAKkrC,IAAI7jC,GAAKqjK,EAAMrjK,EAAIrH,KAAK9C,IAAImK,GAC3CqjK,EAAMpjK,EAAItH,KAAKkrC,IAAI5jC,GAAKojK,EAAMpjK,EAAItH,KAAK9C,IAAIoK,EAE7C,GAAC,CAAA9E,IAAA,cAAA/D,MAED,SAAa+rK,GAEZ,OAAOxqK,KAAKkrC,IAAIhvC,GAAKsuK,EAAIt/H,IAAIhvC,GAAKsuK,EAAIttK,IAAIhB,GAAK8D,KAAK9C,IAAIhB,GACvD8D,KAAKkrC,IAAI7jC,GAAKmjK,EAAIt/H,IAAI7jC,GAAKmjK,EAAIttK,IAAImK,GAAKrH,KAAK9C,IAAImK,GACjDrH,KAAKkrC,IAAI5jC,GAAKkjK,EAAIt/H,IAAI5jC,GAAKkjK,EAAIttK,IAAIoK,GAAKtH,KAAK9C,IAAIoK,CAEnD,GAAC,CAAA9E,IAAA,eAAA/D,MAED,SAAcisK,EAAOnpK,GAKpB,OAAOA,EAAO0tB,KACXy7I,EAAMxuK,EAAI8D,KAAKkrC,IAAIhvC,IAAQ8D,KAAK9C,IAAIhB,EAAI8D,KAAKkrC,IAAIhvC,IACjDwuK,EAAMrjK,EAAIrH,KAAKkrC,IAAI7jC,IAAQrH,KAAK9C,IAAImK,EAAIrH,KAAKkrC,IAAI7jC,IACjDqjK,EAAMpjK,EAAItH,KAAKkrC,IAAI5jC,IAAQtH,KAAK9C,IAAIoK,EAAItH,KAAKkrC,IAAI5jC,GAGrD,GAAC,CAAA9E,IAAA,gBAAA/D,MAED,SAAe+rK,GAGd,QAAOA,EAAIttK,IAAIhB,EAAI8D,KAAKkrC,IAAIhvC,GAAKsuK,EAAIt/H,IAAIhvC,EAAI8D,KAAK9C,IAAIhB,GACrDsuK,EAAIttK,IAAImK,EAAIrH,KAAKkrC,IAAI7jC,GAAKmjK,EAAIt/H,IAAI7jC,EAAIrH,KAAK9C,IAAImK,GAC/CmjK,EAAIttK,IAAIoK,EAAItH,KAAKkrC,IAAI5jC,GAAKkjK,EAAIt/H,IAAI5jC,EAAItH,KAAK9C,IAAIoK,EAEjD,GAAC,CAAA9E,IAAA,mBAAA/D,MAED,SAAkB2sK,GAMjB,OAHAprK,KAAKqrK,WAAYD,EAAO/U,OAAQgU,IAGzBA,GAAUvU,kBAAmBsV,EAAO/U,SAAc+U,EAAOlC,OAASkC,EAAOlC,MAEjF,GAAC,CAAA1mK,IAAA,kBAAA/D,MAED,SAAiB6sK,GAKhB,IAAIpgI,EAAKhuC,EAsCT,OApCKouK,EAAMvC,OAAO7sK,EAAI,GAErBgvC,EAAMogI,EAAMvC,OAAO7sK,EAAI8D,KAAKkrC,IAAIhvC,EAChCgB,EAAMouK,EAAMvC,OAAO7sK,EAAI8D,KAAK9C,IAAIhB,IAIhCgvC,EAAMogI,EAAMvC,OAAO7sK,EAAI8D,KAAK9C,IAAIhB,EAChCgB,EAAMouK,EAAMvC,OAAO7sK,EAAI8D,KAAKkrC,IAAIhvC,GAI5BovK,EAAMvC,OAAO1hK,EAAI,GAErB6jC,GAAOogI,EAAMvC,OAAO1hK,EAAIrH,KAAKkrC,IAAI7jC,EACjCnK,GAAOouK,EAAMvC,OAAO1hK,EAAIrH,KAAK9C,IAAImK,IAIjC6jC,GAAOogI,EAAMvC,OAAO1hK,EAAIrH,KAAK9C,IAAImK,EACjCnK,GAAOouK,EAAMvC,OAAO1hK,EAAIrH,KAAKkrC,IAAI7jC,GAI7BikK,EAAMvC,OAAOzhK,EAAI,GAErB4jC,GAAOogI,EAAMvC,OAAOzhK,EAAItH,KAAKkrC,IAAI5jC,EACjCpK,GAAOouK,EAAMvC,OAAOzhK,EAAItH,KAAK9C,IAAIoK,IAIjC4jC,GAAOogI,EAAMvC,OAAOzhK,EAAItH,KAAK9C,IAAIoK,EACjCpK,GAAOouK,EAAMvC,OAAOzhK,EAAItH,KAAKkrC,IAAI5jC,GAIzB4jC,IAASogI,EAAMC,UAAYruK,IAASouK,EAAMC,QAEpD,GAAC,CAAA/oK,IAAA,qBAAA/D,MAED,SAAoB+sK,GAEnB,GAAKxrK,KAAKyqK,UAET,OAAO,EAKRzqK,KAAKyrK,UAAWC,IAChBC,GAASrW,WAAYt1J,KAAK9C,IAAKwuK,IAG/BE,GAAMtW,WAAYkW,EAASxvK,EAAG0vK,IAC9BG,GAAMvW,WAAYkW,EAASjlK,EAAGmlK,IAC9Bg1M,GAAMprN,WAAYkW,EAASvvK,EAAGyvK,IAG9BK,GAAIzW,WAAYuW,GAAOD,IACvBI,GAAI1W,WAAYorN,GAAO70M,IACvBI,GAAI3W,WAAYsW,GAAO80M,IAKvB,IAAIx0M,EAAO,CACV,GAAKH,GAAIzkK,EAAGykK,GAAI1kK,EAAG,GAAK2kK,GAAI1kK,EAAG0kK,GAAI3kK,EAAG,GAAK4kK,GAAI3kK,EAAG2kK,GAAI5kK,EACtD0kK,GAAIzkK,EAAG,GAAKykK,GAAI7vK,EAAG8vK,GAAI1kK,EAAG,GAAK0kK,GAAI9vK,EAAG+vK,GAAI3kK,EAAG,GAAK2kK,GAAI/vK,GACpD6vK,GAAI1kK,EAAG0kK,GAAI7vK,EAAG,GAAK8vK,GAAI3kK,EAAG2kK,GAAI9vK,EAAG,GAAK+vK,GAAI5kK,EAAG4kK,GAAI/vK,EAAG,GAEvD,QAAOiwK,GAAYD,EAAMN,GAAOC,GAAO60M,GAAO/0M,QAQvCQ,GADPD,EAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACRN,GAAOC,GAAO60M,GAAO/0M,MAQ9CS,GAAgBlE,aAAc6D,GAAKC,IAG5BG,GAFPD,EAAO,CAAEE,GAAgBlwK,EAAGkwK,GAAgB/kK,EAAG+kK,GAAgB9kK,GAEtCskK,GAAOC,GAAO60M,GAAO/0M,KAE/C,GAAC,CAAAnpK,IAAA,aAAA/D,MAED,SAAYisK,EAAOnpK,GAElB,OAAOA,EAAOm6J,KAAMgP,GAAQxY,MAAOlyJ,KAAKkrC,IAAKlrC,KAAK9C,IAEnD,GAAC,CAAAsF,IAAA,kBAAA/D,MAED,SAAiBisK,GAEhB,OAAO1qK,KAAKqrK,WAAYX,EAAOL,IAAYgD,WAAY3C,EAExD,GAAC,CAAAloK,IAAA,oBAAA/D,MAED,SAAmB8C,GAclB,OAZKvB,KAAKyqK,UAETlpK,EAAO2oK,aAIPlqK,KAAKyrK,UAAWlqK,EAAO80J,QAEvB90J,EAAO2nK,OAA8C,GAArClpK,KAAKqsK,QAAShC,IAAYzyK,UAIpC2J,CAER,GAAC,CAAAiB,IAAA,YAAA/D,MAED,SAAW+rK,GAQV,OANAxqK,KAAKkrC,IAAIhuC,IAAKstK,EAAIt/H,KAClBlrC,KAAK9C,IAAIguC,IAAKs/H,EAAIttK,KAGb8C,KAAKyqK,WAAYzqK,KAAKkqK,YAEpBlqK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO+rK,GAKN,OAHAxqK,KAAKkrC,IAAIA,IAAKs/H,EAAIt/H,KAClBlrC,KAAK9C,IAAIA,IAAKstK,EAAIttK,KAEX8C,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAci7J,GAGb,OAAK15J,KAAKyqK,YAGV6B,GAAS,GAAIr9I,IAAKjvB,KAAKkrC,IAAIhvC,EAAG8D,KAAKkrC,IAAI7jC,EAAGrH,KAAKkrC,IAAI5jC,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAKkrC,IAAIhvC,EAAG8D,KAAKkrC,IAAI7jC,EAAGrH,KAAK9C,IAAIoK,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAKkrC,IAAIhvC,EAAG8D,KAAK9C,IAAImK,EAAGrH,KAAKkrC,IAAI5jC,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAKkrC,IAAIhvC,EAAG8D,KAAK9C,IAAImK,EAAGrH,KAAK9C,IAAIoK,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAK9C,IAAIhB,EAAG8D,KAAKkrC,IAAI7jC,EAAGrH,KAAKkrC,IAAI5jC,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAK9C,IAAIhB,EAAG8D,KAAKkrC,IAAI7jC,EAAGrH,KAAK9C,IAAIoK,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAK9C,IAAIhB,EAAG8D,KAAK9C,IAAImK,EAAGrH,KAAKkrC,IAAI5jC,GAAIugK,aAAcnO,GACrE4S,GAAS,GAAIr9I,IAAKjvB,KAAK9C,IAAIhB,EAAG8D,KAAK9C,IAAImK,EAAGrH,KAAK9C,IAAIoK,GAAIugK,aAAcnO,GAErE15J,KAAKusK,cAAeD,KAZStsK,IAgB9B,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsrC,GAKV,OAHA/pC,KAAKkrC,IAAI9e,IAAK2d,GACd/pC,KAAK9C,IAAIkvB,IAAK2d,GAEP/pC,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ+rK,GAEP,OAAOA,EAAIt/H,IAAIshI,OAAQxsK,KAAKkrC,MAASs/H,EAAIttK,IAAIsvK,OAAQxsK,KAAK9C,IAE3D,KAACwsK,CAAA,CArdQ,GAydJ4C,GAAU,CACD,IAAIxF,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,GACJ,IAAIA,IAGbuD,GAA0B,IAAIvD,GAE9B8/Q,GAAuB,IAAIl9Q,GAI3BkC,GAAsB,IAAI9E,GAC1B+E,GAAsB,IAAI/E,GAC1B45M,GAAsB,IAAI55M,GAI1BiF,GAAoB,IAAIjF,GACxBkF,GAAoB,IAAIlF,GACxBmF,GAAoB,IAAInF,GAExB4E,GAAwB,IAAI5E,GAC5B6E,GAAyB,IAAI7E,GAC7BsF,GAAgC,IAAItF,GACpC4F,GAA0B,IAAI5F,GAEpC,SAASqF,GAAYD,EAAMS,EAAI3W,EAAIC,EAAI2W,GAEtC,IAAM,IAAIlwK,EAAI,EAAGmT,EAAIq8J,EAAKt0K,OAAS,EAAG8E,GAAKmT,EAAGnT,GAAK,EAAI,CAEtDgwK,GAAU/S,UAAWuS,EAAMxvK,GAE3B,IAAMwK,EAAI0lK,EAAQ1wK,EAAIe,KAAK4f,IAAK6vJ,GAAUxwK,GAAM0wK,EAAQvlK,EAAIpK,KAAK4f,IAAK6vJ,GAAUrlK,GAAMulK,EAAQtlK,EAAIrK,KAAK4f,IAAK6vJ,GAAUplK,GAEhHulK,EAAKF,EAAG1I,IAAKyI,IACbp1C,EAAK0+B,EAAGiO,IAAKyI,IACbn1C,EAAK0+B,EAAGgO,IAAKyI,IAEnB,GAAKzvK,KAAKC,KAAOD,KAAKC,IAAK2vK,EAAIv1C,EAAIC,GAAMt6H,KAAKiuC,IAAK2hI,EAAIv1C,EAAIC,IAASrwH,EAInE,OAAO,CAIT,CAEA,OAAO,CAER,CAEA,IAAMgkK,GAAuB,IAAIxB,GAC3BqD,GAAsB,IAAIjG,GAC1BgF,GAAsB,IAAIhF,GAE1BoG,GAAM,WAEX,SAAAA,IAAoD,IAAvC7W,EAAMp2J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAWoC,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,IAAK,EAACwK,EAAA,KAAAyiK,GAEhDltK,KAAK6mb,UAAW,EAEhB7mb,KAAKq2J,OAASA,EACdr2J,KAAKkpK,OAASA,CAEf,CAgOC,OAhOA3/J,EAAA2jK,EAAA,EAAA1qK,IAAA,MAAA/D,MAED,SAAK43J,EAAQ6S,GAKZ,OAHAlpK,KAAKq2J,OAAOqF,KAAMrF,GAClBr2J,KAAKkpK,OAASA,EAEPlpK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAewrK,EAAQkD,GAEtB,IAAM9W,EAASr2J,KAAKq2J,YAEIjsJ,IAAnB+iK,EAEJ9W,EAAOqF,KAAMyR,GAIbjC,GAAOqB,cAAetC,GAASwB,UAAWpV,GAM3C,IAFA,IAAI+W,EAAc,EAER1wK,EAAI,EAAGowD,EAAKm9G,EAAOryK,OAAQ8E,EAAIowD,EAAIpwD,IAE5C0wK,EAAcnwK,KAAKC,IAAKkwK,EAAa/W,EAAOP,kBAAmBmU,EAAQvtK,KAMxE,OAFAsD,KAAKkpK,OAASjsK,KAAK04J,KAAMyX,GAElBptK,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM2sK,GAKL,OAHAprK,KAAKq2J,OAAOqF,KAAM0P,EAAO/U,QACzBr2J,KAAKkpK,OAASkC,EAAOlC,OAEdlpK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAEC,OAASuB,KAAKkpK,OAAS,CAExB,GAAC,CAAA1mK,IAAA,YAAA/D,MAED,WAKC,OAHAuB,KAAKq2J,OAAOpnI,IAAK,EAAG,EAAG,GACvBjvB,KAAKkpK,QAAW,EAETlpK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeisK,GAEd,OAASA,EAAM5U,kBAAmB91J,KAAKq2J,SAAcr2J,KAAKkpK,OAASlpK,KAAKkpK,MAEzE,GAAC,CAAA1mK,IAAA,kBAAA/D,MAED,SAAiBisK,GAEhB,OAASA,EAAM2C,WAAYrtK,KAAKq2J,QAAWr2J,KAAKkpK,MAEjD,GAAC,CAAA1mK,IAAA,mBAAA/D,MAED,SAAkB2sK,GAEjB,IAAMkC,EAAYttK,KAAKkpK,OAASkC,EAAOlC,OAEvC,OAAOkC,EAAO/U,OAAOP,kBAAmB91J,KAAKq2J,SAAciX,EAAYA,CAExE,GAAC,CAAA9qK,IAAA,gBAAA/D,MAED,SAAe+rK,GAEd,OAAOA,EAAI+C,iBAAkBvtK,KAE9B,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiB6sK,GAEhB,OAAOruK,KAAK4f,IAAKyuJ,EAAMkC,gBAAiBxtK,KAAKq2J,UAAcr2J,KAAKkpK,MAEjE,GAAC,CAAA1mK,IAAA,aAAA/D,MAED,SAAYisK,EAAOnpK,GAElB,IAAMksK,EAAgBztK,KAAKq2J,OAAOP,kBAAmB4U,GAWrD,OATAnpK,EAAOm6J,KAAMgP,GAER+C,EAAkBztK,KAAKkpK,OAASlpK,KAAKkpK,SAEzC3nK,EAAOunK,IAAK9oK,KAAKq2J,QAASx1C,YAC1Bt/G,EAAOg0J,eAAgBv1J,KAAKkpK,QAAS98I,IAAKpsB,KAAKq2J,SAIzC90J,CAER,GAAC,CAAAiB,IAAA,iBAAA/D,MAED,SAAgB8C,GAEf,OAAKvB,KAAKyqK,WAGTlpK,EAAO2oK,YACA3oK,IAIRA,EAAO0tB,IAAKjvB,KAAKq2J,OAAQr2J,KAAKq2J,QAC9B90J,EAAOmsK,eAAgB1tK,KAAKkpK,QAErB3nK,EAER,GAAC,CAAAiB,IAAA,eAAA/D,MAED,SAAci7J,GAKb,OAHA15J,KAAKq2J,OAAOwR,aAAcnO,GAC1B15J,KAAKkpK,OAASlpK,KAAKkpK,OAASxP,EAAOiU,oBAE5B3tK,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsrC,GAIV,OAFA/pC,KAAKq2J,OAAOjqI,IAAK2d,GAEV/pC,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeisK,GAEd,GAAK1qK,KAAKyqK,UAMT,OAJAzqK,KAAKq2J,OAAOqF,KAAMgP,GAElB1qK,KAAKkpK,OAAS,EAEPlpK,KAIR+sK,GAAMzX,WAAYoV,EAAO1qK,KAAKq2J,QAE9B,IAAMqS,EAAWqE,GAAMrE,WAEvB,GAAKA,EAAa1oK,KAAKkpK,OAASlpK,KAAKkpK,OAAW,CAI/C,IAAMtxK,EAASqF,KAAK04J,KAAM+S,GAEpBtrK,EAAmC,IAAzBxF,EAASoI,KAAKkpK,QAE9BlpK,KAAKq2J,OAAOqkB,gBAAiB3N,GAAO3vK,EAAQxF,GAE5CoI,KAAKkpK,QAAU9rK,CAEhB,CAEA,OAAO4C,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO2sK,GAEN,OAAKA,EAAOX,UAEJzqK,KAIHA,KAAKyqK,WAETzqK,KAAK07J,KAAM0P,GAEJprK,QAIqC,IAAxCA,KAAKq2J,OAAOmW,OAAQpB,EAAO/U,QAE9Br2J,KAAKkpK,OAASjsK,KAAKC,IAAK8C,KAAKkpK,OAAQkC,EAAOlC,SAI7C4C,GAAMxW,WAAY8V,EAAO/U,OAAQr2J,KAAKq2J,QAASwlI,UAAWzwH,EAAOlC,QAEjElpK,KAAKmqK,cAAe4C,GAAMrR,KAAM0P,EAAO/U,QAASjqI,IAAK0/I,KAErD9rK,KAAKmqK,cAAe4C,GAAMrR,KAAM0P,EAAO/U,QAASyS,IAAKgD,MAI/C9rK,KAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ2sK,GAEP,OAAOA,EAAO/U,OAAOmW,OAAQxsK,KAAKq2J,SAAc+U,EAAOlC,SAAWlpK,KAAKkpK,MAExE,GAAC,CAAA1mK,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACktK,CAAA,CAzOU,GA6ONW,GAA0B,IAAI/G,GAC9BgH,GAA2B,IAAIhH,GAC/BiH,GAAwB,IAAIjH,GAC5BkH,GAAsB,IAAIlH,GAE1BmH,GAAuB,IAAInH,GAC3BoH,GAAuB,IAAIpH,GAC3BqH,GAA0B,IAAIrH,GAE9BsH,GAAG,WAER,SAAAA,IAA4E,IAA/Dh2E,EAAMn4F,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAWuH,EAASpuK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAS,EAAG,GAAK,GAAGr8J,EAAA,KAAA2jK,GAExEpuK,KAAKo4F,OAASA,EACdp4F,KAAKquK,UAAYA,CAElB,CAsdC,OAtdA9kK,EAAA6kK,EAAA,EAAA5rK,IAAA,MAAA/D,MAED,SAAK25F,EAAQi2E,GAKZ,OAHAruK,KAAKo4F,OAAOsjE,KAAMtjE,GAClBp4F,KAAKquK,UAAU3S,KAAM2S,GAEdruK,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM6vK,GAKL,OAHAtuK,KAAKo4F,OAAOsjE,KAAM4S,EAAIl2E,QACtBp4F,KAAKquK,UAAU3S,KAAM4S,EAAID,WAElBruK,IAER,GAAC,CAAAwC,IAAA,KAAA/D,MAED,SAAInH,EAAGiK,GAEN,OAAOA,EAAOm6J,KAAM17J,KAAKo4F,QAASsiF,gBAAiB16K,KAAKquK,UAAW/2K,EAEpE,GAAC,CAAAkL,IAAA,SAAA/D,MAED,SAAQ0I,GAIP,OAFAnH,KAAKquK,UAAU3S,KAAMv0J,GAAI2hK,IAAK9oK,KAAKo4F,QAASyoB,YAErC7gH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQnH,GAIP,OAFA0I,KAAKo4F,OAAOsjE,KAAM17J,KAAKymE,GAAInvE,EAAGu2K,KAEvB7tK,IAER,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,SAAqBisK,EAAOnpK,GAE3BA,EAAO+zJ,WAAYoV,EAAO1qK,KAAKo4F,QAE/B,IAAMm2E,EAAoBhtK,EAAO0iK,IAAKjkK,KAAKquK,WAE3C,OAAKE,EAAoB,EAEjBhtK,EAAOm6J,KAAM17J,KAAKo4F,QAInB72F,EAAOm6J,KAAM17J,KAAKo4F,QAASsiF,gBAAiB16K,KAAKquK,UAAWE,EAEpE,GAAC,CAAA/rK,IAAA,kBAAA/D,MAED,SAAiBisK,GAEhB,OAAOztK,KAAK04J,KAAM31J,KAAKwuK,kBAAmB9D,GAE3C,GAAC,CAAAloK,IAAA,oBAAA/D,MAED,SAAmBisK,GAElB,IAAM6D,EAAoBV,GAAUvY,WAAYoV,EAAO1qK,KAAKo4F,QAAS6rE,IAAKjkK,KAAKquK,WAI/E,OAAKE,EAAoB,EAEjBvuK,KAAKo4F,OAAO09D,kBAAmB4U,IAIvCmD,GAAUnS,KAAM17J,KAAKo4F,QAASsiF,gBAAiB16K,KAAKquK,UAAWE,GAExDV,GAAU/X,kBAAmB4U,GAErC,GAAC,CAAAloK,IAAA,sBAAA/D,MAED,SAAqBkuK,EAAI3W,EAAIyY,EAAoBC,GAShDZ,GAAWpS,KAAMiR,GAAKvgJ,IAAK4pI,GAAKT,eAAgB,IAChDwY,GAAQrS,KAAM1F,GAAK8S,IAAK6D,GAAK9rD,YAC7BmtD,GAAMtS,KAAM17J,KAAKo4F,QAAS0wE,IAAKgF,IAE/B,IAMIa,EAAIhL,EAAIiL,EAASC,EANfC,EAAkC,GAAtBnC,EAAGU,WAAYrX,GAC3B+Y,GAAQ/uK,KAAKquK,UAAUpK,IAAK8J,IAC5BiB,EAAKhB,GAAM/J,IAAKjkK,KAAKquK,WACrBxb,GAAOmb,GAAM/J,IAAK8J,IAClB9xK,EAAI+xK,GAAMtF,WACV9P,EAAM37J,KAAK4f,IAAK,EAAIkyJ,EAAMA,GAGhC,GAAKnW,EAAM,EAQV,GAHA+K,EAAKoL,EAAMC,EAAKnc,EAChBgc,EAASC,EAAYlW,GAFrB+V,EAAKI,EAAMlc,EAAKmc,IAIL,EAEV,GAAKrL,IAAQkL,EAEZ,GAAKlL,GAAMkL,EAAS,CAKnB,IAAMI,EAAS,EAAIrW,EAGnBgW,GAFAD,GAAMM,IAEWN,EAAKI,GADtBpL,GAAMsL,GAC2B,EAAID,GAAOrL,GAAOoL,EAAMJ,EAAKhL,EAAK,EAAI9Q,GAAO52J,CAE/E,MAIC0nK,EAAKmL,EAELF,IADAD,EAAK1xK,KAAKC,IAAK,IAAO6xK,EAAMpL,EAAKqL,KAChBL,EAAKhL,GAAOA,EAAK,EAAI9Q,GAAO52J,OAQ9C0nK,GAAOmL,EAEPF,IADAD,EAAK1xK,KAAKC,IAAK,IAAO6xK,EAAMpL,EAAKqL,KAChBL,EAAKhL,GAAOA,EAAK,EAAI9Q,GAAO52J,OAMzC0nK,IAAQkL,EAMZD,IAFAD,EAAK1xK,KAAKC,IAAK,KAAS6xK,EAAMD,EAAYE,KAEzBL,GADjBhL,EAAOgL,EAAK,GAAQG,EAAY7xK,KAAKiuC,IAAKjuC,KAAKC,KAAO4xK,GAAajc,GAAMic,KAC5CnL,EAAK,EAAI9Q,GAAO52J,EAElC0nK,GAAMkL,GAIjBF,EAAK,EAELC,GADAjL,EAAK1mK,KAAKiuC,IAAKjuC,KAAKC,KAAO4xK,GAAajc,GAAMic,KAC7BnL,EAAK,EAAI9Q,GAAO52J,GAQjC2yK,IAFAD,EAAK1xK,KAAKC,IAAK,IAAO6xK,EAAMD,EAAYE,KAEvBL,GADjBhL,EAAOgL,EAAK,EAAMG,EAAY7xK,KAAKiuC,IAAKjuC,KAAKC,KAAO4xK,GAAajc,GAAMic,KAC1CnL,EAAK,EAAI9Q,GAAO52J,OAU/C0nK,EAAOoL,EAAM,GAAQD,EAAYA,EAEjCF,IADAD,EAAK1xK,KAAKC,IAAK,IAAO6xK,EAAMpL,EAAKqL,KAChBL,EAAKhL,GAAOA,EAAK,EAAI9Q,GAAO52J,EAgB9C,OAZKwyK,GAEJA,EAAmB/S,KAAM17J,KAAKo4F,QAASsiF,gBAAiB16K,KAAKquK,UAAWM,GAIpED,GAEJA,EAAuBhT,KAAMoS,IAAa4M,gBAAiB3M,GAASpK,GAI9DiL,CAER,GAAC,CAAApsK,IAAA,kBAAA/D,MAED,SAAiB2sK,EAAQ7pK,GAExBssK,GAAUvY,WAAY8V,EAAO/U,OAAQr2J,KAAKo4F,QAC1C,IAAM82E,EAAMrB,GAAU5J,IAAKjkK,KAAKquK,WAC1Brc,EAAK6b,GAAU5J,IAAK4J,IAAcqB,EAAMA,EACxCC,EAAU/D,EAAOlC,OAASkC,EAAOlC,OAEvC,GAAKlX,EAAKmd,EAAU,OAAO,KAE3B,IAAMC,EAAMnyK,KAAK04J,KAAMwZ,EAAUnd,GAG3Bqd,EAAKH,EAAME,EAGXE,EAAKJ,EAAME,EAGjB,OAAKE,EAAK,EAAW,KAKhBD,EAAK,EAAWrvK,KAAKymE,GAAI6oG,EAAI/tK,GAG3BvB,KAAKymE,GAAI4oG,EAAI9tK,EAErB,GAAC,CAAAiB,IAAA,mBAAA/D,MAED,SAAkB2sK,GAEjB,OAAOprK,KAAKwuK,kBAAmBpD,EAAO/U,SAAc+U,EAAOlC,OAASkC,EAAOlC,MAE5E,GAAC,CAAA1mK,IAAA,kBAAA/D,MAED,SAAiB6sK,GAEhB,IAAM7C,EAAc6C,EAAMvC,OAAO9E,IAAKjkK,KAAKquK,WAE3C,GAAqB,IAAhB5F,EAGJ,OAA8C,IAAzC6C,EAAMkC,gBAAiBxtK,KAAKo4F,QAEzB,EAMD,KAIR,IAAM9gG,IAAQ0I,KAAKo4F,OAAO6rE,IAAKqH,EAAMvC,QAAWuC,EAAMC,UAAa9C,EAInE,OAAOnxK,GAAK,EAAIA,EAAI,IAErB,GAAC,CAAAkL,IAAA,iBAAA/D,MAED,SAAgB6sK,EAAO/pK,GAEtB,IAAMjK,EAAI0I,KAAKuvK,gBAAiBjE,GAEhC,OAAW,OAANh0K,EAEG,KAID0I,KAAKymE,GAAInvE,EAAGiK,EAEpB,GAAC,CAAAiB,IAAA,kBAAA/D,MAED,SAAiB6sK,GAIhB,IAAMkE,EAAclE,EAAMkC,gBAAiBxtK,KAAKo4F,QAEhD,OAAqB,IAAhBo3E,GAMelE,EAAMvC,OAAO9E,IAAKjkK,KAAKquK,WAExBmB,EAAc,CAUlC,GAAC,CAAAhtK,IAAA,eAAA/D,MAED,SAAc+rK,EAAKjpK,GAElB,IAAIkuK,EAAMC,EAAMC,EAAOC,EAAOC,EAAOC,EAE/BC,EAAU,EAAI/vK,KAAKquK,UAAUnyK,EAClC8zK,EAAU,EAAIhwK,KAAKquK,UAAUhnK,EAC7B4oK,EAAU,EAAIjwK,KAAKquK,UAAU/mK,EAExB8wF,EAASp4F,KAAKo4F,OA0BpB,OAxBK23E,GAAW,GAEfN,GAASjF,EAAIt/H,IAAIhvC,EAAIk8F,EAAOl8F,GAAM6zK,EAClCL,GAASlF,EAAIttK,IAAIhB,EAAIk8F,EAAOl8F,GAAM6zK,IAIlCN,GAASjF,EAAIttK,IAAIhB,EAAIk8F,EAAOl8F,GAAM6zK,EAClCL,GAASlF,EAAIt/H,IAAIhvC,EAAIk8F,EAAOl8F,GAAM6zK,GAI9BC,GAAW,GAEfL,GAAUnF,EAAIt/H,IAAI7jC,EAAI+wF,EAAO/wF,GAAM2oK,EACnCJ,GAAUpF,EAAIttK,IAAImK,EAAI+wF,EAAO/wF,GAAM2oK,IAInCL,GAAUnF,EAAIttK,IAAImK,EAAI+wF,EAAO/wF,GAAM2oK,EACnCJ,GAAUpF,EAAIt/H,IAAI7jC,EAAI+wF,EAAO/wF,GAAM2oK,GAI7BP,EAAOG,GAAaD,EAAQD,EAAgB,OAE9CC,EAAQF,GAAQn4J,MAAOm4J,MAASA,EAAOE,IAEvCC,EAAQF,GAAQp4J,MAAOo4J,MAASA,EAAOE,GAEvCK,GAAW,GAEfJ,GAAUrF,EAAIt/H,IAAI5jC,EAAI8wF,EAAO9wF,GAAM2oK,EACnCH,GAAUtF,EAAIttK,IAAIoK,EAAI8wF,EAAO9wF,GAAM2oK,IAInCJ,GAAUrF,EAAIttK,IAAIoK,EAAI8wF,EAAO9wF,GAAM2oK,EACnCH,GAAUtF,EAAIt/H,IAAI5jC,EAAI8wF,EAAO9wF,GAAM2oK,GAI7BR,EAAOK,GAAaD,EAAQH,EAAgB,OAE9CG,EAAQJ,GAAQA,IAASA,KAAOA,EAAOI,IAEvCC,EAAQJ,GAAQA,IAASA,KAAOA,EAAOI,GAIvCJ,EAAO,EAAW,KAEhB1vK,KAAKymE,GAAIgpG,GAAQ,EAAIA,EAAOC,EAAMnuK,IAE1C,GAAC,CAAAiB,IAAA,gBAAA/D,MAED,SAAe+rK,GAEd,OAA+C,OAAxCxqK,KAAKkwK,aAAc1F,EAAKqD,GAEhC,GAAC,CAAArrK,IAAA,oBAAA/D,MAED,SAAmBzC,EAAGuK,EAAGtK,EAAGk0K,EAAiB5uK,GAM5C0sK,GAAO3Y,WAAY/uJ,EAAGvK,GACtBkyK,GAAO5Y,WAAYr5J,EAAGD,GACtBmyK,GAAUjG,aAAc+F,GAAQC,IAOhC,IACIkC,EADAC,EAAMrwK,KAAKquK,UAAUpK,IAAKkK,IAG9B,GAAKkC,EAAM,EAAI,CAEd,GAAKF,EAAkB,OAAO,KAC9BC,EAAO,CAER,KAAO,MAAKC,EAAM,GAOjB,OAAO,KALPD,GAAS,EACTC,GAAQA,CAMT,CAEArC,GAAM1Y,WAAYt1J,KAAKo4F,OAAQp8F,GAC/B,IAAMs0K,EAASF,EAAOpwK,KAAKquK,UAAUpK,IAAKiK,GAAOhG,aAAc8F,GAAOE,KAGtE,GAAKoC,EAAS,EAEb,OAAO,KAIR,IAAMC,EAASH,EAAOpwK,KAAKquK,UAAUpK,IAAKgK,GAAOuC,MAAOxC,KAGxD,GAAKuC,EAAS,EAEb,OAAO,KAKR,GAAKD,EAASC,EAASF,EAEtB,OAAO,KAKR,IAAMI,GAAQL,EAAOpC,GAAM/J,IAAKkK,IAGhC,OAAKsC,EAAM,EAEH,KAKDzwK,KAAKymE,GAAIgqG,EAAMJ,EAAK9uK,EAE5B,GAAC,CAAAiB,IAAA,eAAA/D,MAED,SAAcs6J,GAKb,OAHA/4J,KAAKo4F,OAAOyvE,aAAc9O,GAC1B/4J,KAAKquK,UAAUqC,mBAAoB3X,GAE5B/4J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ6vK,GAEP,OAAOA,EAAIl2E,OAAOo0E,OAAQxsK,KAAKo4F,SAAYk2E,EAAID,UAAU7B,OAAQxsK,KAAKquK,UAEvE,GAAC,CAAA7rK,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACouK,CAAA,CA7dO,GAieHuC,GAAO,WAEZ,SAAAA,EAAala,EAAKC,EAAKC,EAAKia,EAAKha,EAAKC,EAAKC,EAAK+Z,EAAK9Z,EAAKC,EAAKC,EAAK6Z,EAAKC,EAAKC,EAAKC,EAAKC,GAAMzmK,EAAA,KAAAkmK,GAE7FA,EAAQ/zK,UAAUm3K,WAAY,EAE9B/zK,KAAKgmI,SAAW,CAEf,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,QAIG57H,IAARqsJ,GAEJz2J,KAAKivB,IAAKwnI,EAAKC,EAAKC,EAAKia,EAAKha,EAAKC,EAAKC,EAAK+Z,EAAK9Z,EAAKC,EAAKC,EAAK6Z,EAAKC,EAAKC,EAAKC,EAAKC,EAIvF,CA82BC,OA92BA3nK,EAAAonK,EAAA,EAAAnuK,IAAA,MAAA/D,MAED,SAAKg4J,EAAKC,EAAKC,EAAKia,EAAKha,EAAKC,EAAKC,EAAK+Z,EAAK9Z,EAAKC,EAAKC,EAAK6Z,EAAKC,EAAKC,EAAKC,EAAKC,GAE/E,IAAMroI,EAAK7oC,KAAKgmI,SAOhB,OALAn9F,EAAI,GAAM4tH,EAAK5tH,EAAI,GAAM6tH,EAAK7tH,EAAI,GAAM8tH,EAAK9tH,EAAI,IAAO+nI,EACxD/nI,EAAI,GAAM+tH,EAAK/tH,EAAI,GAAMguH,EAAKhuH,EAAI,GAAMiuH,EAAKjuH,EAAI,IAAOgoI,EACxDhoI,EAAI,GAAMkuH,EAAKluH,EAAI,GAAMmuH,EAAKnuH,EAAI,IAAOouH,EAAKpuH,EAAI,IAAOioI,EACzDjoI,EAAI,GAAMkoI,EAAKloI,EAAI,GAAMmoI,EAAKnoI,EAAI,IAAOooI,EAAKpoI,EAAI,IAAOqoI,EAElDlxK,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,WAWC,OATAuB,KAAKivB,IAEJ,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GAIHjvB,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIkyK,GAAUhX,UAAW35J,KAAKgmI,SAEtC,GAAC,CAAAxjI,IAAA,OAAA/D,MAED,SAAMqI,GAEL,IAAM+hC,EAAK7oC,KAAKgmI,SACV59F,EAAKthC,EAAEk/H,SAOb,OALAn9F,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GACvES,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GACvES,EAAI,GAAMT,EAAI,GAAKS,EAAI,GAAMT,EAAI,GAAKS,EAAI,IAAOT,EAAI,IAAMS,EAAI,IAAOT,EAAI,IAC1ES,EAAI,IAAOT,EAAI,IAAMS,EAAI,IAAOT,EAAI,IAAMS,EAAI,IAAOT,EAAI,IAAMS,EAAI,IAAOT,EAAI,IAEvEpoC,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM+hC,EAAK7oC,KAAKgmI,SAAU59F,EAAKthC,EAAEk/H,SAMjC,OAJAn9F,EAAI,IAAOT,EAAI,IACfS,EAAI,IAAOT,EAAI,IACfS,EAAI,IAAOT,EAAI,IAERpoC,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBqI,GAEf,IAAMshC,EAAKthC,EAAEk/H,SAWb,OATAhmI,KAAKivB,IAEJmZ,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAK,EAC3BA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAK,EAC3BA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAK,EAC3B,EAAG,EAAG,EAAG,GAIHpoC,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcy4J,EAAOC,EAAOC,GAM3B,OAJAF,EAAMoS,oBAAqBtpK,KAAM,GACjCm3J,EAAMmS,oBAAqBtpK,KAAM,GACjCo3J,EAAMkS,oBAAqBtpK,KAAM,GAE1BA,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWy4J,EAAOC,EAAOC,GASxB,OAPAp3J,KAAKivB,IACJioI,EAAMh7J,EAAGi7J,EAAMj7J,EAAGk7J,EAAMl7J,EAAG,EAC3Bg7J,EAAM7vJ,EAAG8vJ,EAAM9vJ,EAAG+vJ,EAAM/vJ,EAAG,EAC3B6vJ,EAAM5vJ,EAAG6vJ,EAAM7vJ,EAAG8vJ,EAAM9vJ,EAAG,EAC3B,EAAG,EAAG,EAAG,GAGHtH,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBqI,GAIhB,IAAM+hC,EAAK7oC,KAAKgmI,SACV59F,EAAKthC,EAAEk/H,SAEPmrC,EAAS,EAAIC,GAAM9H,oBAAqBxiK,EAAG,GAAIlP,SAC/Cy5K,EAAS,EAAID,GAAM9H,oBAAqBxiK,EAAG,GAAIlP,SAC/C05K,EAAS,EAAIF,GAAM9H,oBAAqBxiK,EAAG,GAAIlP,SAsBrD,OApBAixC,EAAI,GAAMT,EAAI,GAAM+oI,EACpBtoI,EAAI,GAAMT,EAAI,GAAM+oI,EACpBtoI,EAAI,GAAMT,EAAI,GAAM+oI,EACpBtoI,EAAI,GAAM,EAEVA,EAAI,GAAMT,EAAI,GAAMipI,EACpBxoI,EAAI,GAAMT,EAAI,GAAMipI,EACpBxoI,EAAI,GAAMT,EAAI,GAAMipI,EACpBxoI,EAAI,GAAM,EAEVA,EAAI,GAAMT,EAAI,GAAMkpI,EACpBzoI,EAAI,GAAMT,EAAI,GAAMkpI,EACpBzoI,EAAI,IAAOT,EAAI,IAAOkpI,EACtBzoI,EAAI,IAAO,EAEXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EAEJ7oC,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuB4kK,GAEtB,IAAMx6H,EAAK7oC,KAAKgmI,SAEV9pI,EAAImnK,EAAMnnK,EAAGmL,EAAIg8J,EAAMh8J,EAAGC,EAAI+7J,EAAM/7J,EACpCtL,EAAIiB,KAAKk3J,IAAKj4J,GAAKqK,EAAItJ,KAAKm3J,IAAKl4J,GACjCD,EAAIgB,KAAKk3J,IAAK9sJ,GAAKb,EAAIvJ,KAAKm3J,IAAK/sJ,GACjCf,EAAIrJ,KAAKk3J,IAAK7sJ,GAAKb,EAAIxJ,KAAKm3J,IAAK9sJ,GAEvC,GAAqB,QAAhB+7J,EAAM91J,MAAkB,CAE5B,IAAMs5B,EAAK7qC,EAAIsK,EAAG+mC,EAAKrxC,EAAIyK,EAAGqgC,EAAKvgC,EAAID,EAAGgnC,EAAK/mC,EAAIE,EAEnDoiC,EAAI,GAAM5sC,EAAIqK,EACduiC,EAAI,IAAQ5sC,EAAIwK,EAChBoiC,EAAI,GAAMriC,EAEVqiC,EAAI,GAAMwE,EAAKvG,EAAKtgC,EACpBqiC,EAAI,GAAMhC,EAAKyG,EAAK9mC,EACpBqiC,EAAI,IAAQtiC,EAAItK,EAEhB4sC,EAAI,GAAMyE,EAAKzG,EAAKrgC,EACpBqiC,EAAI,GAAM/B,EAAKuG,EAAK7mC,EACpBqiC,EAAI,IAAO7sC,EAAIC,CAEhB,MAAO,GAAqB,QAAhBonK,EAAM91J,MAAkB,CAEnC,IAAMy5B,EAAK/qC,EAAIqK,EAAGinC,EAAKtxC,EAAIwK,EAAGwgC,EAAKzgC,EAAIF,EAAGknC,EAAKhnC,EAAIC,EAEnDoiC,EAAI,GAAM7B,EAAKwG,EAAKjnC,EACpBsiC,EAAI,GAAM5B,EAAK1gC,EAAIgnC,EACnB1E,EAAI,GAAM7sC,EAAIwK,EAEdqiC,EAAI,GAAM7sC,EAAIyK,EACdoiC,EAAI,GAAM7sC,EAAIsK,EACduiC,EAAI,IAAQtiC,EAEZsiC,EAAI,GAAM0E,EAAKhnC,EAAI0gC,EACnB4B,EAAI,GAAM2E,EAAKxG,EAAKzgC,EACpBsiC,EAAI,IAAO7sC,EAAIC,CAEhB,MAAO,GAAqB,QAAhBonK,EAAM91J,MAAkB,CAEnC,IAAMy5B,EAAK/qC,EAAIqK,EAAGinC,EAAKtxC,EAAIwK,EAAGwgC,EAAKzgC,EAAIF,EAAGknC,EAAKhnC,EAAIC,EAEnDoiC,EAAI,GAAM7B,EAAKwG,EAAKjnC,EACpBsiC,EAAI,IAAQ7sC,EAAIyK,EAChBoiC,EAAI,GAAM5B,EAAKsG,EAAKhnC,EAEpBsiC,EAAI,GAAM0E,EAAKtG,EAAK1gC,EACpBsiC,EAAI,GAAM7sC,EAAIsK,EACduiC,EAAI,GAAM2E,EAAKxG,EAAKzgC,EAEpBsiC,EAAI,IAAQ7sC,EAAIwK,EAChBqiC,EAAI,GAAMtiC,EACVsiC,EAAI,IAAO7sC,EAAIC,CAEhB,MAAO,GAAqB,QAAhBonK,EAAM91J,MAAkB,CAEnC,IAAMs5B,EAAK7qC,EAAIsK,EAAG+mC,EAAKrxC,EAAIyK,EAAGqgC,EAAKvgC,EAAID,EAAGgnC,EAAK/mC,EAAIE,EAEnDoiC,EAAI,GAAM5sC,EAAIqK,EACduiC,EAAI,GAAM/B,EAAKtgC,EAAI6mC,EACnBxE,EAAI,GAAMhC,EAAKrgC,EAAI8mC,EAEnBzE,EAAI,GAAM5sC,EAAIwK,EACdoiC,EAAI,GAAMyE,EAAK9mC,EAAIqgC,EACnBgC,EAAI,GAAMwE,EAAK7mC,EAAIsgC,EAEnB+B,EAAI,IAAQriC,EACZqiC,EAAI,GAAMtiC,EAAItK,EACd4sC,EAAI,IAAO7sC,EAAIC,CAEhB,MAAO,GAAqB,QAAhBonK,EAAM91J,MAAkB,CAEnC,IAAMksB,EAAKz9B,EAAIC,EAAG0iC,EAAK3iC,EAAIwK,EAAGmzB,EAAKpzB,EAAItK,EAAG2iC,EAAKr4B,EAAIC,EAEnDqiC,EAAI,GAAM5sC,EAAIqK,EACduiC,EAAI,GAAMjK,EAAKnF,EAAKhzB,EACpBoiC,EAAI,GAAMlP,EAAKlzB,EAAIk4B,EAEnBkK,EAAI,GAAMpiC,EACVoiC,EAAI,GAAM7sC,EAAIsK,EACduiC,EAAI,IAAQtiC,EAAID,EAEhBuiC,EAAI,IAAQriC,EAAIF,EAChBuiC,EAAI,GAAMlK,EAAKl4B,EAAIkzB,EACnBkP,EAAI,IAAOpP,EAAKmF,EAAKn4B,CAEtB,MAAO,GAAqB,QAAhB48J,EAAM91J,MAAkB,CAEnC,IAAMksB,EAAKz9B,EAAIC,EAAG0iC,EAAK3iC,EAAIwK,EAAGmzB,EAAKpzB,EAAItK,EAAG2iC,EAAKr4B,EAAIC,EAEnDqiC,EAAI,GAAM5sC,EAAIqK,EACduiC,EAAI,IAAQpiC,EACZoiC,EAAI,GAAMriC,EAAIF,EAEduiC,EAAI,GAAMpP,EAAKhzB,EAAIm4B,EACnBiK,EAAI,GAAM7sC,EAAIsK,EACduiC,EAAI,GAAMlK,EAAKl4B,EAAIkzB,EAEnBkP,EAAI,GAAMlP,EAAKlzB,EAAIk4B,EACnBkK,EAAI,GAAMtiC,EAAID,EACduiC,EAAI,IAAOjK,EAAKn4B,EAAIgzB,CAErB,CAaA,OAVAoP,EAAI,GAAM,EACVA,EAAI,GAAM,EACVA,EAAI,IAAO,EAGXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EACXA,EAAI,IAAO,EAEJ7oC,IAER,GAAC,CAAAwC,IAAA,6BAAA/D,MAED,SAA4BwI,GAE3B,OAAOjH,KAAKuxK,QAASC,GAAOvqK,EAAGwqK,GAEhC,GAAC,CAAAjvK,IAAA,SAAA/D,MAED,SAAQizK,EAAKnwK,EAAQowK,GAEpB,IAAM9oI,EAAK7oC,KAAKgmI,SAyChB,OAvCAi9B,GAAG3N,WAAYoc,EAAKnwK,GAEG,IAAlB0hK,GAAGyF,aAIPzF,GAAG37J,EAAI,GAIR27J,GAAGpiD,YACHzsD,GAAG8zG,aAAcyJ,EAAI1O,IAEE,IAAlB7uG,GAAGs0G,aAImB,IAArBzrK,KAAK4f,IAAK80J,EAAGrqK,GAEjB27J,GAAG/mK,GAAK,KAIR+mK,GAAG37J,GAAK,KAIT27J,GAAGpiD,YACHzsD,GAAG8zG,aAAcyJ,EAAI1O,KAItB7uG,GAAGysD,YACHmiD,GAAGkF,aAAcjF,GAAI7uG,IAErBvrB,EAAI,GAAMurB,GAAGl4D,EAAG2sC,EAAI,GAAMm6H,GAAG9mK,EAAG2sC,EAAI,GAAMo6H,GAAG/mK,EAC7C2sC,EAAI,GAAMurB,GAAG/sD,EAAGwhC,EAAI,GAAMm6H,GAAG37J,EAAGwhC,EAAI,GAAMo6H,GAAG57J,EAC7CwhC,EAAI,GAAMurB,GAAG9sD,EAAGuhC,EAAI,GAAMm6H,GAAG17J,EAAGuhC,EAAI,IAAOo6H,GAAG37J,EAEvCtH,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAUqI,GAET,OAAO9G,KAAKs3J,iBAAkBt3J,KAAM8G,EAErC,GAAC,CAAAtE,IAAA,cAAA/D,MAED,SAAaqI,GAEZ,OAAO9G,KAAKs3J,iBAAkBxwJ,EAAG9G,KAElC,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBzC,EAAGuK,GAEpB,IAAMsgC,EAAK7qC,EAAEgqI,SACPl/F,EAAKvgC,EAAEy/H,SACPn9F,EAAK7oC,KAAKgmI,SAEVuxB,EAAM1wH,EAAI,GAAK2wH,EAAM3wH,EAAI,GAAK4wH,EAAM5wH,EAAI,GAAK+qI,EAAM/qI,EAAI,IACvD6wH,EAAM7wH,EAAI,GAAK8wH,EAAM9wH,EAAI,GAAK+wH,EAAM/wH,EAAI,GAAKgrI,EAAMhrI,EAAI,IACvDgxH,EAAMhxH,EAAI,GAAKixH,EAAMjxH,EAAI,GAAKkxH,EAAMlxH,EAAI,IAAMirI,EAAMjrI,EAAI,IACxDkrI,EAAMlrI,EAAI,GAAKmrI,EAAMnrI,EAAI,GAAKorI,EAAMprI,EAAI,IAAMqrI,EAAMrrI,EAAI,IAExDmxH,EAAMlxH,EAAI,GAAKmxH,EAAMnxH,EAAI,GAAKoxH,EAAMpxH,EAAI,GAAKqrI,EAAMrrI,EAAI,IACvDqxH,EAAMrxH,EAAI,GAAKsxH,EAAMtxH,EAAI,GAAKuxH,EAAMvxH,EAAI,GAAKsrI,EAAMtrI,EAAI,IACvDwxH,EAAMxxH,EAAI,GAAKyxH,EAAMzxH,EAAI,GAAK0xH,EAAM1xH,EAAI,IAAMurI,EAAMvrI,EAAI,IACxDwrI,EAAMxrI,EAAI,GAAKyrI,EAAMzrI,EAAI,GAAK0rI,EAAM1rI,EAAI,IAAM2rI,EAAM3rI,EAAI,IAsB9D,OApBA+B,EAAI,GAAM0uH,EAAMS,EAAMR,EAAMW,EAAMV,EAAMa,EAAMsZ,EAAMU,EACpDzpI,EAAI,GAAM0uH,EAAMU,EAAMT,EAAMY,EAAMX,EAAMc,EAAMqZ,EAAMW,EACpD1pI,EAAI,GAAM0uH,EAAMW,EAAMV,EAAMa,EAAMZ,EAAMe,EAAMoZ,EAAMY,EACpD3pI,EAAI,IAAO0uH,EAAM4a,EAAM3a,EAAM4a,EAAM3a,EAAM4a,EAAMT,EAAMa,EAErD5pI,EAAI,GAAM6uH,EAAMM,EAAML,EAAMQ,EAAMP,EAAMU,EAAMuZ,EAAMS,EACpDzpI,EAAI,GAAM6uH,EAAMO,EAAMN,EAAMS,EAAMR,EAAMW,EAAMsZ,EAAMU,EACpD1pI,EAAI,GAAM6uH,EAAMQ,EAAMP,EAAMU,EAAMT,EAAMY,EAAMqZ,EAAMW,EACpD3pI,EAAI,IAAO6uH,EAAMya,EAAMxa,EAAMya,EAAMxa,EAAMya,EAAMR,EAAMY,EAErD5pI,EAAI,GAAMgvH,EAAMG,EAAMF,EAAMK,EAAMJ,EAAMO,EAAMwZ,EAAMQ,EACpDzpI,EAAI,GAAMgvH,EAAMI,EAAMH,EAAMM,EAAML,EAAMQ,EAAMuZ,EAAMS,EACpD1pI,EAAI,IAAOgvH,EAAMK,EAAMJ,EAAMO,EAAMN,EAAMS,EAAMsZ,EAAMU,EACrD3pI,EAAI,IAAOgvH,EAAMsa,EAAMra,EAAMsa,EAAMra,EAAMsa,EAAMP,EAAMW,EAErD5pI,EAAI,GAAMkpI,EAAM/Z,EAAMga,EAAM7Z,EAAM8Z,EAAM3Z,EAAM4Z,EAAMI,EACpDzpI,EAAI,GAAMkpI,EAAM9Z,EAAM+Z,EAAM5Z,EAAM6Z,EAAM1Z,EAAM2Z,EAAMK,EACpD1pI,EAAI,IAAOkpI,EAAM7Z,EAAM8Z,EAAM3Z,EAAM4Z,EAAMzZ,EAAM0Z,EAAMM,EACrD3pI,EAAI,IAAOkpI,EAAMI,EAAMH,EAAMI,EAAMH,EAAMI,EAAMH,EAAMO,EAE9CzyK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBhD,GAEf,IAAMotC,EAAK7oC,KAAKgmI,SAOhB,OALAn9F,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,KAAQptC,EACtDotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,KAAQptC,EACtDotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,KAAQptC,EAAGotC,EAAI,KAAQptC,EACvDotC,EAAI,IAAOptC,EAAGotC,EAAI,IAAOptC,EAAGotC,EAAI,KAAQptC,EAAGotC,EAAI,KAAQptC,EAEhDuE,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,WAEC,IAAMoqC,EAAK7oC,KAAKgmI,SAEVywB,EAAM5tH,EAAI,GAAK6tH,EAAM7tH,EAAI,GAAK8tH,EAAM9tH,EAAI,GAAK+nI,EAAM/nI,EAAI,IACvD+tH,EAAM/tH,EAAI,GAAKguH,EAAMhuH,EAAI,GAAKiuH,EAAMjuH,EAAI,GAAKgoI,EAAMhoI,EAAI,IACvDkuH,EAAMluH,EAAI,GAAKmuH,EAAMnuH,EAAI,GAAKouH,EAAMpuH,EAAI,IAAMioI,EAAMjoI,EAAI,IAM9D,OALYA,EAAI,KAOZ+nI,EAAM9Z,EAAME,EACXL,EAAMka,EAAM7Z,EACZ4Z,EAAM/Z,EAAMI,EACZP,EAAMma,EAAM5Z,EACZN,EAAME,EAAMia,EACZpa,EAAMI,EAAMga,GAZUjoI,EAAI,KAe3B4tH,EAAMK,EAAMga,EACXra,EAAMoa,EAAM5Z,EACZ2Z,EAAMha,EAAMK,EACZN,EAAMC,EAAMka,EACZna,EAAMka,EAAM9Z,EACZ6Z,EAAM9Z,EAAMC,GApByBluH,EAAI,MAuB1C4tH,EAAMoa,EAAM7Z,EACXP,EAAMI,EAAMia,EACZF,EAAMha,EAAMI,EACZN,EAAME,EAAMka,EACZF,EAAM/Z,EAAME,EACZL,EAAMma,EAAM9Z,GA5ByCluH,EAAI,MA+B1D8tH,EAAME,EAAME,EACXN,EAAMK,EAAME,EACZP,EAAMI,EAAMI,EACZN,EAAMC,EAAMI,EACZN,EAAME,EAAMK,EACZP,EAAMI,EAAMC,EAKlB,GAAC,CAAAv0J,IAAA,YAAA/D,MAED,WAEC,IACIq6J,EADEjwH,EAAK7oC,KAAKgmI,SAWhB,OARA8yB,EAAMjwH,EAAI,GAAKA,EAAI,GAAMA,EAAI,GAAKA,EAAI,GAAMiwH,EAC5CA,EAAMjwH,EAAI,GAAKA,EAAI,GAAMA,EAAI,GAAKA,EAAI,GAAMiwH,EAC5CA,EAAMjwH,EAAI,GAAKA,EAAI,GAAMA,EAAI,GAAKA,EAAI,GAAMiwH,EAE5CA,EAAMjwH,EAAI,GAAKA,EAAI,GAAMA,EAAI,IAAMA,EAAI,IAAOiwH,EAC9CA,EAAMjwH,EAAI,GAAKA,EAAI,GAAMA,EAAI,IAAMA,EAAI,IAAOiwH,EAC9CA,EAAMjwH,EAAI,IAAMA,EAAI,IAAOA,EAAI,IAAMA,EAAI,IAAOiwH,EAEzC94J,IAER,GAAC,CAAAwC,IAAA,cAAA/D,MAED,SAAavC,EAAGmL,EAAGC,GAElB,IAAMuhC,EAAK7oC,KAAKgmI,SAgBhB,OAdK9pI,EAAEutK,WAEN5gI,EAAI,IAAO3sC,EAAEA,EACb2sC,EAAI,IAAO3sC,EAAEmL,EACbwhC,EAAI,IAAO3sC,EAAEoL,IAIbuhC,EAAI,IAAO3sC,EACX2sC,EAAI,IAAOxhC,EACXwhC,EAAI,IAAOvhC,GAILtH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAGC,IAAMoqC,EAAK7oC,KAAKgmI,SAEfywB,EAAM5tH,EAAI,GAAK+tH,EAAM/tH,EAAI,GAAKkuH,EAAMluH,EAAI,GAAKkoI,EAAMloI,EAAI,GACvD6tH,EAAM7tH,EAAI,GAAKguH,EAAMhuH,EAAI,GAAKmuH,EAAMnuH,EAAI,GAAKmoI,EAAMnoI,EAAI,GACvD8tH,EAAM9tH,EAAI,GAAKiuH,EAAMjuH,EAAI,GAAKouH,EAAMpuH,EAAI,IAAMooI,EAAMpoI,EAAI,IACxD+nI,EAAM/nI,EAAI,IAAMgoI,EAAMhoI,EAAI,IAAMioI,EAAMjoI,EAAI,IAAMqoI,EAAMroI,EAAI,IAE1D4vH,EAAM3B,EAAMga,EAAME,EAAMH,EAAM5Z,EAAM+Z,EAAMH,EAAM7Z,EAAMia,EAAMpa,EAAMia,EAAMG,EAAMna,EAAME,EAAMka,EAAMra,EAAMI,EAAMia,EAC5GxY,EAAMkY,EAAM3Z,EAAM+Z,EAAMra,EAAMma,EAAME,EAAMJ,EAAM5Z,EAAMia,EAAMva,EAAMoa,EAAMG,EAAMta,EAAMK,EAAMka,EAAMxa,EAAMO,EAAMia,EAC5GvY,EAAMhC,EAAMka,EAAMG,EAAMJ,EAAM9Z,EAAMka,EAAMJ,EAAM/Z,EAAMoa,EAAMva,EAAMma,EAAMI,EAAMta,EAAME,EAAMqa,EAAMxa,EAAMI,EAAMoa,EAC5GwB,EAAM9B,EAAM9Z,EAAME,EAAML,EAAMka,EAAM7Z,EAAM4Z,EAAM/Z,EAAMI,EAAMP,EAAMma,EAAM5Z,EAAMN,EAAME,EAAMia,EAAMpa,EAAMI,EAAMga,EAEvGlY,EAAMnC,EAAMgC,EAAM7B,EAAM8B,EAAM3B,EAAM4B,EAAMoY,EAAM2B,EAEtD,GAAa,IAAR9Z,EAAY,OAAO54J,KAAKivB,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAE/E,IAAM4pI,EAAS,EAAID,EAsBnB,OApBA/vH,EAAI,GAAM4vH,EAAMI,EAChBhwH,EAAI,IAAQgoI,EAAM5Z,EAAM8Z,EAAMja,EAAMga,EAAMC,EAAMF,EAAM9Z,EAAMka,EAAMra,EAAMka,EAAMG,EAAMna,EAAMC,EAAMma,EAAMta,EAAMK,EAAMia,GAAQrY,EAC1HhwH,EAAI,IAAQguH,EAAMia,EAAMC,EAAMF,EAAM7Z,EAAM+Z,EAAMF,EAAM9Z,EAAMia,EAAMpa,EAAMka,EAAME,EAAMna,EAAME,EAAMma,EAAMta,EAAMI,EAAMka,GAAQrY,EAC1HhwH,EAAI,IAAQiuH,EAAME,EAAM+Z,EAAMla,EAAMI,EAAM8Z,EAAMja,EAAMC,EAAMia,EAAMpa,EAAMK,EAAM+Z,EAAMna,EAAME,EAAMka,EAAMra,EAAMI,EAAMia,GAAQpY,EAE1HhwH,EAAI,GAAM6vH,EAAMG,EAChBhwH,EAAI,IAAQ8tH,EAAMma,EAAMC,EAAMH,EAAM3Z,EAAM8Z,EAAMH,EAAM7Z,EAAMka,EAAMxa,EAAMqa,EAAMG,EAAMta,EAAMI,EAAMma,EAAMza,EAAMQ,EAAMia,GAAQrY,EAC1HhwH,EAAI,IAAQ+nI,EAAM5Z,EAAM+Z,EAAMra,EAAMoa,EAAMC,EAAMH,EAAM7Z,EAAMia,EAAMva,EAAMqa,EAAME,EAAMta,EAAMK,EAAMma,EAAMza,EAAMO,EAAMka,GAAQrY,EAC1HhwH,EAAI,IAAQ6tH,EAAMO,EAAM8Z,EAAMpa,EAAMK,EAAM+Z,EAAMpa,EAAMI,EAAMia,EAAMva,EAAMQ,EAAM+Z,EAAMta,EAAMK,EAAMka,EAAMxa,EAAMO,EAAMia,GAAQpY,EAE1HhwH,EAAI,GAAM8vH,EAAME,EAChBhwH,EAAI,IAAQ+nI,EAAM9Z,EAAMia,EAAMpa,EAAMka,EAAME,EAAMH,EAAMha,EAAMqa,EAAMxa,EAAMoa,EAAMI,EAAMta,EAAMC,EAAMsa,EAAMza,EAAMK,EAAMoa,GAAQrY,EAC1HhwH,EAAI,KAAS6tH,EAAMma,EAAME,EAAMH,EAAM/Z,EAAMka,EAAMH,EAAMha,EAAMoa,EAAMva,EAAMoa,EAAMG,EAAMta,EAAME,EAAMsa,EAAMza,EAAMI,EAAMqa,GAAQrY,EAC3HhwH,EAAI,KAAS8tH,EAAME,EAAMka,EAAMra,EAAMI,EAAMia,EAAMpa,EAAMC,EAAMoa,EAAMva,EAAMK,EAAMka,EAAMta,EAAME,EAAMqa,EAAMxa,EAAMI,EAAMoa,GAAQpY,EAE3HhwH,EAAI,IAAO6pI,EAAM7Z,EACjBhwH,EAAI,KAAS8tH,EAAMka,EAAM9Z,EAAM6Z,EAAM9Z,EAAMC,EAAM6Z,EAAMha,EAAMK,EAAMR,EAAMoa,EAAM5Z,EAAMN,EAAMC,EAAMka,EAAMra,EAAMK,EAAMga,GAAQjY,EAC3HhwH,EAAI,KAAS+nI,EAAM/Z,EAAME,EAAML,EAAMma,EAAM9Z,EAAM6Z,EAAMha,EAAMI,EAAMP,EAAMoa,EAAM7Z,EAAMN,EAAME,EAAMka,EAAMra,EAAMI,EAAMia,GAAQjY,EAC3HhwH,EAAI,KAAS6tH,EAAMI,EAAMC,EAAMJ,EAAME,EAAME,EAAMJ,EAAMC,EAAMI,EAAMP,EAAMK,EAAME,EAAMN,EAAME,EAAMK,EAAMR,EAAMI,EAAMI,GAAQ4B,EAEpH74J,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO0I,GAEN,IAAM0hC,EAAK7oC,KAAKgmI,SACV9pI,EAAIiL,EAAEjL,EAAGmL,EAAIF,EAAEE,EAAGC,EAAIH,EAAEG,EAO9B,OALAuhC,EAAI,IAAO3sC,EAAG2sC,EAAI,IAAOxhC,EAAGwhC,EAAI,IAAOvhC,EACvCuhC,EAAI,IAAO3sC,EAAG2sC,EAAI,IAAOxhC,EAAGwhC,EAAI,IAAOvhC,EACvCuhC,EAAI,IAAO3sC,EAAG2sC,EAAI,IAAOxhC,EAAGwhC,EAAI,KAAQvhC,EACxCuhC,EAAI,IAAO3sC,EAAG2sC,EAAI,IAAOxhC,EAAGwhC,EAAI,KAAQvhC,EAEjCtH,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,WAEC,IAAMoqC,EAAK7oC,KAAKgmI,SAEV2sC,EAAW9pI,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GACjE+pI,EAAW/pI,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GACjEgqI,EAAWhqI,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,GAAMA,EAAI,IAAOA,EAAI,IAExE,OAAO5rC,KAAK04J,KAAM14J,KAAKC,IAAKy1K,EAAUC,EAAUC,GAEjD,GAAC,CAAArwK,IAAA,kBAAA/D,MAED,SAAiBvC,EAAGmL,EAAGC,GA0BtB,OAxBKpL,EAAEutK,UAENzpK,KAAKivB,IAEJ,EAAG,EAAG,EAAG/yB,EAAEA,EACX,EAAG,EAAG,EAAGA,EAAEmL,EACX,EAAG,EAAG,EAAGnL,EAAEoL,EACX,EAAG,EAAG,EAAG,GAMVtH,KAAKivB,IAEJ,EAAG,EAAG,EAAG/yB,EACT,EAAG,EAAG,EAAGmL,EACT,EAAG,EAAG,EAAGC,EACT,EAAG,EAAG,EAAG,GAMJtH,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeg7J,GAEd,IAAMx9J,EAAIgB,KAAKk3J,IAAKsF,GAASh+J,EAAIwB,KAAKm3J,IAAKqF,GAW3C,OATAz5J,KAAKivB,IAEJ,EAAG,EAAG,EAAG,EACT,EAAGhzB,GAAKR,EAAG,EACX,EAAGA,EAAGQ,EAAG,EACT,EAAG,EAAG,EAAG,GAIH+D,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeg7J,GAEd,IAAMx9J,EAAIgB,KAAKk3J,IAAKsF,GAASh+J,EAAIwB,KAAKm3J,IAAKqF,GAW3C,OATAz5J,KAAKivB,IAEHhzB,EAAG,EAAGR,EAAG,EACT,EAAG,EAAG,EAAG,GACRA,EAAG,EAAGQ,EAAG,EACV,EAAG,EAAG,EAAG,GAIJ+D,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeg7J,GAEd,IAAMx9J,EAAIgB,KAAKk3J,IAAKsF,GAASh+J,EAAIwB,KAAKm3J,IAAKqF,GAW3C,OATAz5J,KAAKivB,IAEJhzB,GAAKR,EAAG,EAAG,EACXA,EAAGQ,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GAIH+D,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBolK,EAAMjO,GAIvB,IAAM35J,EAAIgB,KAAKk3J,IAAKyB,GACdn6J,EAAIwB,KAAKm3J,IAAKwB,GACdt+J,EAAI,EAAI2E,EACRC,EAAI2nK,EAAK3nK,EAAGmL,EAAIw8J,EAAKx8J,EAAGC,EAAIu8J,EAAKv8J,EACjC4xJ,EAAK5hK,EAAI4E,EAAGi9J,EAAK7hK,EAAI+P,EAW3B,OATArH,KAAKivB,IAEJiqI,EAAKh9J,EAAID,EAAGi9J,EAAK7xJ,EAAI5L,EAAI6L,EAAG4xJ,EAAK5xJ,EAAI7L,EAAI4L,EAAG,EAC5C6xJ,EAAK7xJ,EAAI5L,EAAI6L,EAAG6xJ,EAAK9xJ,EAAIpL,EAAGk9J,EAAK7xJ,EAAI7L,EAAIS,EAAG,EAC5Cg9J,EAAK5xJ,EAAI7L,EAAI4L,EAAG8xJ,EAAK7xJ,EAAI7L,EAAIS,EAAG5E,EAAIgQ,EAAIA,EAAIrL,EAAG,EAC/C,EAAG,EAAG,EAAG,GAIH+D,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWvC,EAAGmL,EAAGC,GAWhB,OATAtH,KAAKivB,IAEJ/yB,EAAG,EAAG,EAAG,EACT,EAAGmL,EAAG,EAAG,EACT,EAAG,EAAGC,EAAG,EACT,EAAG,EAAG,EAAG,GAIHtH,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWiiK,EAAIC,EAAImS,EAAIlS,EAAImS,EAAIC,GAW9B,OATAhzK,KAAKivB,IAEJ,EAAG6jJ,EAAIC,EAAI,EACXrS,EAAI,EAAGsS,EAAI,EACXrS,EAAIC,EAAI,EAAG,EACX,EAAG,EAAG,EAAG,GAIH5gK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAAS8gE,EAAU6jG,EAAY/rB,GAE9B,IAAMxuG,EAAK7oC,KAAKgmI,SAEV9pI,EAAIknK,EAAWhvG,GAAI/sD,EAAI+7J,EAAWJ,GAAI17J,EAAI87J,EAAWH,GAAI77J,EAAIg8J,EAAWF,GACxE+P,EAAK/2K,EAAIA,EAAGg3K,EAAK7rK,EAAIA,EAAG8rK,EAAK7rK,EAAIA,EACjCknI,EAAKtyI,EAAI+2K,EAAIvS,EAAKxkK,EAAIg3K,EAAIvS,EAAKzkK,EAAIi3K,EACnC1kC,EAAKpnI,EAAI6rK,EAAItS,EAAKv5J,EAAI8rK,EAAI1S,EAAKn5J,EAAI6rK,EACnCC,EAAKhsK,EAAI6rK,EAAII,EAAKjsK,EAAI8rK,EAAII,EAAKlsK,EAAI+rK,EAEnC/Z,EAAK/hB,EAAMn7I,EAAGm9J,EAAKhiB,EAAMhwI,EAAGkiK,EAAKlyB,EAAM/vI,EAsB7C,OApBAuhC,EAAI,IAAQ,GAAM4lG,EAAKgyB,IAASrH,EAChCvwH,EAAI,IAAQ63H,EAAK4S,GAAOla,EACxBvwH,EAAI,IAAQ83H,EAAK0S,GAAOja,EACxBvwH,EAAI,GAAM,EAEVA,EAAI,IAAQ63H,EAAK4S,GAAOja,EACxBxwH,EAAI,IAAQ,GAAM2lG,EAAKiyB,IAASpH,EAChCxwH,EAAI,IAAQ+3H,EAAKwS,GAAO/Z,EACxBxwH,EAAI,GAAM,EAEVA,EAAI,IAAQ83H,EAAK0S,GAAO9J,EACxB1gI,EAAI,IAAQ+3H,EAAKwS,GAAO7J,EACxB1gI,EAAI,KAAS,GAAM2lG,EAAKC,IAAS86B,EACjC1gI,EAAI,IAAO,EAEXA,EAAI,IAAO02B,EAASrjE,EACpB2sC,EAAI,IAAO02B,EAASl4D,EACpBwhC,EAAI,IAAO02B,EAASj4D,EACpBuhC,EAAI,IAAO,EAEJ7oC,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW8gE,EAAU6jG,EAAY/rB,GAEhC,IAAMxuG,EAAK7oC,KAAKgmI,SAEZozB,EAAKgY,GAAMniJ,IAAK4Z,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAMjxC,SAC1CyhK,EAAK+X,GAAMniJ,IAAK4Z,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAAMjxC,SAC5C2xK,EAAK6H,GAAMniJ,IAAK4Z,EAAI,GAAKA,EAAI,GAAKA,EAAI,KAAOjxC,SAGvCoI,KAAKuzK,cACN,IAAIna,GAAOA,GAEtB75F,EAASrjE,EAAI2sC,EAAI,IACjB02B,EAASl4D,EAAIwhC,EAAI,IACjB02B,EAASj4D,EAAIuhC,EAAI,IAGjB2qI,GAAM9X,KAAM17J,MAEZ,IAAMyzK,EAAQ,EAAIra,EACZsa,EAAQ,EAAIra,EACZsa,EAAQ,EAAIpK,EAoBlB,OAlBAiK,GAAMxtC,SAAU,IAAOytC,EACvBD,GAAMxtC,SAAU,IAAOytC,EACvBD,GAAMxtC,SAAU,IAAOytC,EAEvBD,GAAMxtC,SAAU,IAAO0tC,EACvBF,GAAMxtC,SAAU,IAAO0tC,EACvBF,GAAMxtC,SAAU,IAAO0tC,EAEvBF,GAAMxtC,SAAU,IAAO2tC,EACvBH,GAAMxtC,SAAU,IAAO2tC,EACvBH,GAAMxtC,SAAU,KAAQ2tC,EAExBvQ,EAAWwQ,sBAAuBJ,IAElCn8B,EAAMn7I,EAAIk9J,EACV/hB,EAAMhwI,EAAIgyJ,EACVhiB,EAAM/vI,EAAIiiK,EAEHvpK,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiButC,EAAMwzB,EAAOtzB,EAAKuzB,EAAQo0G,EAAMC,GAAgD,IAS5F73K,EAAGuK,EAT8Csgb,EAAgB7mb,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG4kb,GAElEh8Y,EAAK7oC,KAAKgmI,SACV9pI,EAAI,EAAI23K,GAASr0G,EAAQxzB,GACzB3kC,EAAI,EAAIwsK,GAAS3nI,EAAMuzB,GAEvBzjE,GAAMwjE,EAAQxzB,IAAWwzB,EAAQxzB,GACjCzlC,GAAM2lC,EAAMuzB,IAAavzB,EAAMuzB,GAIrC,GAAKqnX,IAAqBjC,GAEzB5ob,IAAQ63K,EAAMD,IAAWC,EAAMD,GAC/BrtK,GAAQ,EAAIstK,EAAMD,GAAWC,EAAMD,OAE7B,IAAKizQ,IAAqBhC,GAOhC,MAAM,IAAIhnb,MAAO,+DAAiEgpb,GALlF7qb,GAAM63K,GAAQA,EAAMD,GACpBrtK,GAAQstK,EAAMD,GAAWC,EAAMD,EAMhC,CAOA,OALAhrI,EAAI,GAAM3sC,EAAG2sC,EAAI,GAAM,EAAGA,EAAI,GAAM7sC,EAAI6sC,EAAI,IAAO,EACnDA,EAAI,GAAM,EAAGA,EAAI,GAAMxhC,EAAGwhC,EAAI,GAAMtiC,EAAIsiC,EAAI,IAAO,EACnDA,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,IAAO5sC,EAAI4sC,EAAI,IAAOriC,EACpDqiC,EAAI,GAAM,EAAGA,EAAI,GAAM,EAAGA,EAAI,KAAS,EAAGA,EAAI,IAAO,EAE9C7oC,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkButC,EAAMwzB,EAAOtzB,EAAKuzB,EAAQo0G,EAAMC,GAAgD,IAU7FxsK,EAAGy/a,EAV+CD,EAAgB7mb,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG4kb,GAEnEh8Y,EAAK7oC,KAAKgmI,SACV5+H,EAAI,GAAQo4D,EAAQxzB,GACpBrlC,EAAI,GAAQulC,EAAMuzB,GAClBz4D,EAAI,GAAQ8sK,EAAMD,GAElB33K,GAAMsjE,EAAQxzB,GAAS5kC,EACvBC,GAAM6kC,EAAMuzB,GAAW94D,EAI7B,GAAKmgb,IAAqBjC,GAEzBv9a,GAAMwsK,EAAMD,GAAS7sK,EACrB+/a,GAAS,EAAI//a,MAEP,IAAK8/a,IAAqBhC,GAOhC,MAAM,IAAIhnb,MAAO,gEAAkEgpb,GALnFx/a,EAAIusK,EAAO7sK,EACX+/a,GAAS,EAAI//a,CAMd,CAOA,OALA6hC,EAAI,GAAM,EAAIzhC,EAAGyhC,EAAI,GAAM,EAAIA,EAAI,GAAM,EAAKA,EAAI,KAAS3sC,EAC3D2sC,EAAI,GAAM,EAAKA,EAAI,GAAM,EAAIliC,EAAGkiC,EAAI,GAAM,EAAKA,EAAI,KAASxhC,EAC5DwhC,EAAI,GAAM,EAAKA,EAAI,GAAM,EAAIA,EAAI,IAAOk+Y,EAAMl+Y,EAAI,KAASvhC,EAC3DuhC,EAAI,GAAM,EAAKA,EAAI,GAAM,EAAIA,EAAI,IAAO,EAAIA,EAAI,IAAO,EAEhD7oC,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQi7J,GAKP,IAHA,IAAM7wH,EAAK7oC,KAAKgmI,SACV59F,EAAKsxH,EAAO1zB,SAERtpI,EAAI,EAAGA,EAAI,GAAIA,IAExB,GAAKmsC,EAAInsC,KAAQ0rC,EAAI1rC,GAAM,OAAO,EAInC,OAAO,CAER,GAAC,CAAA8F,IAAA,YAAA/D,MAED,SAAWsE,GAEV,IAF8B,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEhBvD,EAAI,EAAGA,EAAI,GAAIA,IAExBsD,KAAKgmI,SAAUtpI,GAAMqG,EAAOrG,EAAIqtC,GAIjC,OAAO/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEvB4oC,EAAK7oC,KAAKgmI,SAsBhB,OApBAjjI,EAAOgnC,GAAWlB,EAAI,GACtB9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAE1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAE1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,GAAMlB,EAAI,GAC1B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAC3B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAE3B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAC3B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAC3B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAC3B9lC,EAAOgnC,EAAS,IAAOlB,EAAI,IAEpB9lC,CAER,KAAC4tK,CAAA,CAn4BW,GAu4BPS,GAAsB,IAAItK,GAC1B0M,GAAsB,IAAI7C,GAC1Ba,GAAsB,IAAI1K,GAAS,EAAG,EAAG,GACzC2K,GAAqB,IAAI3K,GAAS,EAAG,EAAG,GACxC1yG,GAAmB,IAAI0yG,GACvB9D,GAAmB,IAAI8D,GACvB7D,GAAmB,IAAI6D,GAEvBkN,GAA0B,IAAIrD,GAC9BsD,GAA8B,IAAIlR,GAElCmR,GAAK,WAEV,SAAAA,IAAgE,IAAnDh4K,EAAC+D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGoH,EAACpH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGqH,EAACrH,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGsN,EAAKtN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGi0K,EAAM8yQ,cAAav8a,EAAA,KAAAypK,GAE5Dl0K,KAAKujK,SAAU,EAEfvjK,KAAKo0D,GAAKl4D,EACV8D,KAAKgjK,GAAK37J,EACVrH,KAAKijK,GAAK37J,EACVtH,KAAKwjK,OAASj2J,CAEf,CAkSC,OAlSAhE,EAAA2qK,EAAA,EAAA1xK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKo0D,EAEb,EAACnlC,IAED,SAAOxwB,GAENuB,KAAKo0D,GAAK31D,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKgjK,EAEb,EAAC/zI,IAED,SAAOxwB,GAENuB,KAAKgjK,GAAKvkK,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,IAAAutB,IAED,WAEC,OAAO/vB,KAAKijK,EAEb,EAACh0I,IAED,SAAOxwB,GAENuB,KAAKijK,GAAKxkK,EACVuB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAKwjK,MAEb,EAACv0I,IAED,SAAWxwB,GAEVuB,KAAKwjK,OAAS/kK,EACduB,KAAKmjK,mBAEN,GAAC,CAAA3gK,IAAA,MAAA/D,MAED,SAAKvC,EAAGmL,EAAGC,GAAyB,IAAtBiG,EAAKtN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGD,KAAKwjK,OAS1B,OAPAxjK,KAAKo0D,GAAKl4D,EACV8D,KAAKgjK,GAAK37J,EACVrH,KAAKijK,GAAK37J,EACVtH,KAAKwjK,OAASj2J,EAEdvN,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAKo0D,GAAIp0D,KAAKgjK,GAAIhjK,KAAKijK,GAAIjjK,KAAKwjK,OAE9D,GAAC,CAAAhhK,IAAA,OAAA/D,MAED,SAAM4kK,GASL,OAPArjK,KAAKo0D,GAAKivG,EAAMjvG,GAChBp0D,KAAKgjK,GAAKK,EAAML,GAChBhjK,KAAKijK,GAAKI,EAAMJ,GAChBjjK,KAAKwjK,OAASH,EAAMG,OAEpBxjK,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuBqI,GAAwC,IAArCyG,EAAKtN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGD,KAAKwjK,OAAQF,IAAMrjK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GAI9C4oC,EAAK/hC,EAAEk/H,SACPg6B,EAAMn3H,EAAI,GAAKo3H,EAAMp3H,EAAI,GAAKq3H,EAAMr3H,EAAI,GACxCs3H,EAAMt3H,EAAI,GAAKu3H,EAAMv3H,EAAI,GAAKw3H,EAAMx3H,EAAI,GACxCy3H,EAAMz3H,EAAI,GAAK03H,EAAM13H,EAAI,GAAK23H,EAAM33H,EAAI,IAE9C,OAASt7B,GAER,IAAK,MAEJvN,KAAKgjK,GAAK/lK,KAAKm3K,KAAMliB,GAAOgO,GAAO,EAAG,IAEjCjjK,KAAK4f,IAAKqjJ,GAAQ,UAEtBlgK,KAAKo0D,GAAKn3D,KAAK44J,OAASwK,EAAKG,GAC7BxgK,KAAKijK,GAAKhmK,KAAK44J,OAASoK,EAAKD,KAI7BhgK,KAAKo0D,GAAKn3D,KAAK44J,MAAO0K,EAAKH,GAC3BpgK,KAAKijK,GAAK,GAIX,MAED,IAAK,MAEJjjK,KAAKo0D,GAAKn3D,KAAKm3K,MAAQliB,GAAOmO,GAAO,EAAG,IAEnCpjK,KAAK4f,IAAKwjJ,GAAQ,UAEtBrgK,KAAKgjK,GAAK/lK,KAAK44J,MAAOqK,EAAKM,GAC3BxgK,KAAKijK,GAAKhmK,KAAK44J,MAAOsK,EAAKC,KAI3BpgK,KAAKgjK,GAAK/lK,KAAK44J,OAASyK,EAAKN,GAC7BhgK,KAAKijK,GAAK,GAIX,MAED,IAAK,MAEJjjK,KAAKo0D,GAAKn3D,KAAKm3K,KAAMliB,GAAOqO,GAAO,EAAG,IAEjCtjK,KAAK4f,IAAK0jJ,GAAQ,UAEtBvgK,KAAKgjK,GAAK/lK,KAAK44J,OAASyK,EAAKE,GAC7BxgK,KAAKijK,GAAKhmK,KAAK44J,OAASoK,EAAKG,KAI7BpgK,KAAKgjK,GAAK,EACVhjK,KAAKijK,GAAKhmK,KAAK44J,MAAOsK,EAAKH,IAI5B,MAED,IAAK,MAEJhgK,KAAKgjK,GAAK/lK,KAAKm3K,MAAQliB,GAAOoO,GAAO,EAAG,IAEnCrjK,KAAK4f,IAAKyjJ,GAAQ,UAEtBtgK,KAAKo0D,GAAKn3D,KAAK44J,MAAO0K,EAAKC,GAC3BxgK,KAAKijK,GAAKhmK,KAAK44J,MAAOsK,EAAKH,KAI3BhgK,KAAKo0D,GAAK,EACVp0D,KAAKijK,GAAKhmK,KAAK44J,OAASoK,EAAKG,IAI9B,MAED,IAAK,MAEJpgK,KAAKijK,GAAKhmK,KAAKm3K,KAAMliB,GAAOiO,GAAO,EAAG,IAEjCljK,KAAK4f,IAAKsjJ,GAAQ,UAEtBngK,KAAKo0D,GAAKn3D,KAAK44J,OAASwK,EAAKD,GAC7BpgK,KAAKgjK,GAAK/lK,KAAK44J,OAASyK,EAAKN,KAI7BhgK,KAAKo0D,GAAK,EACVp0D,KAAKgjK,GAAK/lK,KAAK44J,MAAOqK,EAAKM,IAI5B,MAED,IAAK,MAEJxgK,KAAKijK,GAAKhmK,KAAKm3K,MAAQliB,GAAO+N,GAAO,EAAG,IAEnChjK,KAAK4f,IAAKojJ,GAAQ,UAEtBjgK,KAAKo0D,GAAKn3D,KAAK44J,MAAO0K,EAAKH,GAC3BpgK,KAAKgjK,GAAK/lK,KAAK44J,MAAOqK,EAAKF,KAI3BhgK,KAAKo0D,GAAKn3D,KAAK44J,OAASwK,EAAKG,GAC7BxgK,KAAKgjK,GAAK,GAIX,MAED,QAECjvJ,QAAQk/C,KAAM,uEAAyE1lD,GAQzF,OAJAvN,KAAKwjK,OAASj2J,GAEE,IAAX+1J,GAAkBtjK,KAAKmjK,oBAErBnjK,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBwI,EAAGsG,EAAO+1J,GAI5B,OAFA0Q,GAAUK,2BAA4BptK,GAE/BjH,KAAK4zK,sBAAuBI,GAAWzmK,EAAO+1J,EAEtD,GAAC,CAAA9gK,IAAA,iBAAA/D,MAED,SAAgB0I,GAAyB,IAAtBoG,EAAKtN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGD,KAAKwjK,OAE/B,OAAOxjK,KAAKivB,IAAK9nB,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,EAAGiG,EAEjC,GAAC,CAAA/K,IAAA,UAAA/D,MAED,SAAS61K,GAMR,OAFAL,GAAc/M,aAAclnK,MAErBA,KAAKu0K,kBAAmBN,GAAeK,EAE/C,GAAC,CAAA9xK,IAAA,SAAA/D,MAED,SAAQ4kK,GAEP,OAASA,EAAMjvG,KAAOp0D,KAAKo0D,IAAUivG,EAAML,KAAOhjK,KAAKgjK,IAAUK,EAAMJ,KAAOjjK,KAAKijK,IAAUI,EAAMG,SAAWxjK,KAAKwjK,MAEpH,GAAC,CAAAhhK,IAAA,YAAA/D,MAED,SAAWsE,GASV,OAPA/C,KAAKo0D,GAAKrxD,EAAO,GACjB/C,KAAKgjK,GAAKjgK,EAAO,GACjB/C,KAAKijK,GAAKlgK,EAAO,QACGqH,IAAfrH,EAAO,KAAoB/C,KAAKwjK,OAASzgK,EAAO,IAErD/C,KAAKmjK,oBAEEnjK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAO7B,OALA8C,EAAOgnC,GAAW/pC,KAAKo0D,GACvBrxD,EAAOgnC,EAAS,GAAM/pC,KAAKgjK,GAC3BjgK,EAAOgnC,EAAS,GAAM/pC,KAAKijK,GAC3BlgK,EAAOgnC,EAAS,GAAM/pC,KAAKwjK,OAEpBzgK,CAER,GAAC,CAAAP,IAAA,YAAA/D,MAED,SAAW05C,GAIV,OAFAn4C,KAAKmjK,kBAAoBhrH,EAElBn4C,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,WAAqB,GAAC,CAAA+D,IAEnB1B,OAAOrE,SAAQgC,MAAAq+E,EAAAA,MAAlB,SAAAr+E,IAAA,OAAAq+E,EAAAA,MAAA,SAAAi9L,GAAA,cAAAA,EAAA92Q,KAAA82Q,EAAA72Q,MAAA,OAEC,OAFD62Q,EAAA72Q,KAAA,EAEOlD,KAAKo0D,GAAE,OACb,OADa2lN,EAAA72Q,KAAA,EACPlD,KAAKgjK,GAAE,OACb,OADa+2G,EAAA72Q,KAAA,EACPlD,KAAKijK,GAAE,OACb,OADa82G,EAAA72Q,KAAA,EACPlD,KAAKwjK,OAAM,wBAAAu2G,EAAAtrM,OAAA,GAAAhwE,EAAA,YAEjBy1K,CAAA,CA7SS,GAiTXA,GAAM8yQ,cAAgB,MAAM,IAEtBvyQ,GAAM,WAEX,SAAAA,IAAchqK,EAAA,KAAAgqK,GAEbz0K,KAAKs6H,KAAO,CAEb,CAgDC,OAhDA/wH,EAAAkrK,EAAA,EAAAjyK,IAAA,MAAA/D,MAED,SAAKi2K,GAEJ10K,KAAKs6H,MAAS,GAAKo6C,EAAU,KAAQ,CAEtC,GAAC,CAAAlyK,IAAA,SAAA/D,MAED,SAAQi2K,GAEP10K,KAAKs6H,MAAQ,GAAKo6C,EAAU,CAE7B,GAAC,CAAAlyK,IAAA,YAAA/D,MAED,WAECuB,KAAKs6H,MAAO,CAEb,GAAC,CAAA93H,IAAA,SAAA/D,MAED,SAAQi2K,GAEP10K,KAAKs6H,MAAQ,GAAKo6C,EAAU,CAE7B,GAAC,CAAAlyK,IAAA,UAAA/D,MAED,SAASi2K,GAER10K,KAAKs6H,QAAY,GAAKo6C,EAAU,EAEjC,GAAC,CAAAlyK,IAAA,aAAA/D,MAED,WAECuB,KAAKs6H,KAAO,CAEb,GAAC,CAAA93H,IAAA,OAAA/D,MAED,SAAMk2K,GAEL,OAAuC,KAA9B30K,KAAKs6H,KAAOq6C,EAAOr6C,KAE7B,GAAC,CAAA93H,IAAA,YAAA/D,MAED,SAAWi2K,GAEV,OAAgD,KAAvC10K,KAAKs6H,MAAS,GAAKo6C,EAAU,GAEvC,KAACD,CAAA,CAtDU,GA0DRG,GAAc,EAEZC,GAAsB,IAAI/N,GAC1BgO,GAAoB,IAAI/R,GACxBgS,GAAsB,IAAIpE,GAC1BhmE,GAAwB,IAAIm8D,GAE5BkO,GAA4B,IAAIlO,GAChCmO,GAAyB,IAAInO,GAC7BoO,GAA8B,IAAInS,GAElCoS,GAAuB,IAAIrO,GAAS,EAAG,EAAG,GAC1CsO,GAAuB,IAAItO,GAAS,EAAG,EAAG,GAC1CuO,GAAuB,IAAIvO,GAAS,EAAG,EAAG,GAE1CwO,GAAc,CAAE1wK,KAAM,SACtB2wK,GAAgB,CAAE3wK,KAAM,WAExB4wK,GAAQ,SAAAC,GAAAz5J,EAAAw5J,EAAAC,GAAA,IAAAgG,EAAA9gK,EAAA66J,GAEb,SAAAA,IAAc,IAAAkG,EAAAjxK,EAAA,KAAA+qK,IAEbkG,EAAAD,EAAA5+K,KAAA,OAEKo6K,YAAa,EAElB14K,OAAOC,eAAcgd,EAAAkgK,GAAQ,KAAM,CAAEj9K,MAAOm2K,OAE5C8G,EAAK7/D,KAAOg2C,KAEZ6pB,EAAKviL,KAAO,GACZuiL,EAAK92K,KAAO,WAEZ82K,EAAKx+G,OAAS,KACdw+G,EAAK99J,SAAW,GAEhB89J,EAAK/J,GAAK6D,EAASyxQ,WAAW/lb,QAE9B,IAAMq+D,EAAW,IAAIunG,GACfxN,EAAW,IAAI4a,GACf9Q,EAAa,IAAIL,GACjB1rB,EAAQ,IAAIyvB,GAAS,EAAG,EAAG,GAiEd,OAnDnBxN,EAASpuB,WAZT,WAECk4B,EAAW8D,aAAc5N,GAAU,EAEpC,IASA8J,EAAWl4B,WAPX,WAECouB,EAASib,kBAAmBnR,OAAYh5J,GAAW,EAEpD,IAKA7L,OAAOiL,iBAAgBgS,EAAAkgK,GAAQ,CAC9Bn8G,SAAU,CACT51D,cAAc,EACdD,YAAY,EACZjL,MAAO8gE,GAER+5F,SAAU,CACT3vJ,cAAc,EACdD,YAAY,EACZjL,MAAO66J,GAER8J,WAAY,CACXz5J,cAAc,EACdD,YAAY,EACZjL,MAAO2kK,GAER/rB,MAAO,CACN1tI,cAAc,EACdD,YAAY,EACZjL,MAAO44I,GAERu+B,gBAAiB,CAChBn3K,MAAO,IAAIkyK,IAEZkF,aAAc,CACbp3K,MAAO,IAAI+3J,MAIbklB,EAAKhiB,OAAS,IAAIiX,GAClB+K,EAAKzT,YAAc,IAAI0I,GAEvB+K,EAAK9c,iBAAmB4W,EAAS0xQ,2BAEjCxrQ,EAAKilM,sBAAwBnrM,EAAS2xQ,iCACtCzrQ,EAAK3F,wBAAyB,EAE9B2F,EAAK/G,OAAS,IAAIF,GAClBiH,EAAK/xG,SAAU,EAEf+xG,EAAK1F,YAAa,EAClB0F,EAAKzF,eAAgB,EAErByF,EAAKxF,eAAgB,EACrBwF,EAAKvF,YAAc,EAEnBuF,EAAKtF,WAAa,GAElBsF,EAAKzc,SAAW,CAAC,EAAEyc,CAEpB,CAk3BC,OAl3BAnyK,EAAAisK,EAAA,EAAAhzK,IAAA,iBAAA/D,MAED,WAAgG,GAAC,CAAA+D,IAAA,gBAAA/D,MAEjG,WAA+F,GAAC,CAAA+D,IAAA,iBAAA/D,MAEhG,WAA4E,GAAC,CAAA+D,IAAA,gBAAA/D,MAE7E,WAA2E,GAAC,CAAA+D,IAAA,eAAA/D,MAE5E,SAAci7J,GAER15J,KAAK4+J,kBAAmB5+J,KAAKq2K,eAElCr2K,KAAK05J,OAAO4c,YAAa5c,GAEzB15J,KAAK05J,OAAO6c,UAAWv2K,KAAKu/D,SAAUv/D,KAAKojK,WAAYpjK,KAAKq3I,MAE7D,GAAC,CAAA70I,IAAA,kBAAA/D,MAED,SAAiBwI,GAIhB,OAFAjH,KAAKojK,WAAWkT,YAAarvK,GAEtBjH,IAER,GAAC,CAAAwC,IAAA,2BAAA/D,MAED,SAA0BolK,EAAMjO,GAI/B51J,KAAKojK,WAAW+D,iBAAkBtD,EAAMjO,EAEzC,GAAC,CAAApzJ,IAAA,uBAAA/D,MAED,SAAsB4kK,GAErBrjK,KAAKojK,WAAW8D,aAAc7D,GAAO,EAEtC,GAAC,CAAA7gK,IAAA,wBAAA/D,MAED,SAAuBqI,GAItB9G,KAAKojK,WAAWwQ,sBAAuB9sK,EAExC,GAAC,CAAAtE,IAAA,4BAAA/D,MAED,SAA2BwI,GAI1BjH,KAAKojK,WAAW1H,KAAMz0J,EAEvB,GAAC,CAAAzE,IAAA,eAAA/D,MAED,SAAcolK,EAAMjO,GASnB,OAJAkf,GAAI3N,iBAAkBtD,EAAMjO,GAE5B51J,KAAKojK,WAAWoT,SAAU1B,IAEnB90K,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBolK,EAAMjO,GAUxB,OAJAkf,GAAI3N,iBAAkBtD,EAAMjO,GAE5B51J,KAAKojK,WAAWkT,YAAaxB,IAEtB90K,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASm3J,GAER,OAAO51J,KAAKy2K,aAActB,GAAQvf,EAEnC,GAAC,CAAApzJ,IAAA,UAAA/D,MAED,SAASm3J,GAER,OAAO51J,KAAKy2K,aAAcrB,GAAQxf,EAEnC,GAAC,CAAApzJ,IAAA,UAAA/D,MAED,SAASm3J,GAER,OAAO51J,KAAKy2K,aAAcpB,GAAQzf,EAEnC,GAAC,CAAApzJ,IAAA,kBAAA/D,MAED,SAAiBolK,EAAM6S,GAStB,OAJA7B,GAAMnZ,KAAMmI,GAAOmD,gBAAiBhnK,KAAKojK,YAEzCpjK,KAAKu/D,SAASnzC,IAAKyoJ,GAAMtf,eAAgBmhB,IAElC12K,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYi4K,GAEX,OAAO12K,KAAK22K,gBAAiBxB,GAAQuB,EAEtC,GAAC,CAAAl0K,IAAA,aAAA/D,MAED,SAAYi4K,GAEX,OAAO12K,KAAK22K,gBAAiBvB,GAAQsB,EAEtC,GAAC,CAAAl0K,IAAA,aAAA/D,MAED,SAAYi4K,GAEX,OAAO12K,KAAK22K,gBAAiBtB,GAAQqB,EAEtC,GAAC,CAAAl0K,IAAA,eAAA/D,MAED,SAAcksK,GAIb,OAFA3qK,KAAK6qK,mBAAmB,GAAM,GAEvBF,EAAO9C,aAAc7nK,KAAKioK,YAElC,GAAC,CAAAzlK,IAAA,eAAA/D,MAED,SAAcksK,GAIb,OAFA3qK,KAAK6qK,mBAAmB,GAAM,GAEvBF,EAAO9C,aAAckN,GAAMrZ,KAAM17J,KAAKioK,aAAcn4B,SAE5D,GAAC,CAAAttI,IAAA,SAAA/D,MAED,SAAQvC,EAAGmL,EAAGC,GAIRpL,EAAEutK,UAEN9+D,GAAQ+wD,KAAMx/J,GAIdyuG,GAAQ17E,IAAK/yB,EAAGmL,EAAGC,GAIpB,IAAM41D,EAASl9D,KAAKk9D,OAEpBl9D,KAAK6qK,mBAAmB,GAAM,GAE9BmK,GAAY4B,sBAAuB52K,KAAKioK,aAEnCjoK,KAAK62K,UAAY72K,KAAK82K,QAE1B/B,GAAMgC,OAAQ/B,GAAarqE,GAAS3qG,KAAK2xK,IAIzCoD,GAAMgC,OAAQpsE,GAASqqE,GAAah1K,KAAK2xK,IAI1C3xK,KAAKojK,WAAWwQ,sBAAuBmB,IAElC73G,IAEJ63G,GAAMiC,gBAAiB95G,EAAO+qG,aAC9B6M,GAAIlB,sBAAuBmB,IAC3B/0K,KAAKojK,WAAWkT,YAAaxB,GAAIhlC,UAInC,GAAC,CAAAttI,IAAA,MAAA/D,MAED,SAAK0D,GAEJ,GAAKlC,UAAUrI,OAAS,EAAI,CAE3B,IAAM,IAAI8E,EAAI,EAAGA,EAAIuD,UAAUrI,OAAQ8E,IAEtCsD,KAAKosB,IAAKnsB,UAAWvD,IAItB,OAAOsD,IAER,CAEA,OAAKmC,IAAWnC,MAEf+T,QAAQwN,MAAO,kEAAoEpf,GAC5EnC,OAIHmC,GAAUA,EAAO80K,YAEE,OAAlB90K,EAAO+6D,QAEX/6D,EAAO+6D,OAAO0D,OAAQz+D,GAIvBA,EAAO+6D,OAASl9D,KAChBA,KAAK4d,SAAS9gB,KAAMqF,GAEpBA,EAAOo8B,cAAe+2I,KAItBvhK,QAAQwN,MAAO,gEAAiEpf,GAI1EnC,KAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ0D,GAEP,GAAKlC,UAAUrI,OAAS,EAAI,CAE3B,IAAM,IAAI8E,EAAI,EAAGA,EAAIuD,UAAUrI,OAAQ8E,IAEtCsD,KAAK4gE,OAAQ3gE,UAAWvD,IAIzB,OAAOsD,IAER,CAEA,IAAM4O,EAAQ5O,KAAK4d,SAASpR,QAASrK,GAWrC,OATiB,IAAZyM,IAEJzM,EAAO+6D,OAAS,KAChBl9D,KAAK4d,SAASiwC,OAAQj/C,EAAO,GAE7BzM,EAAOo8B,cAAeg3I,KAIhBv1K,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,WAEC,IAAMy+D,EAASl9D,KAAKk9D,OAQpB,OANgB,OAAXA,GAEJA,EAAO0D,OAAQ5gE,MAITA,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAOuB,KAAK4gE,OAAM9gE,MAAXE,KAAI+zD,EAAa/zD,KAAK4d,UAE9B,GAAC,CAAApb,IAAA,SAAA/D,MAED,SAAQ0D,GAwBP,OAlBAnC,KAAK6qK,mBAAmB,GAAM,GAE9BkK,GAAMrZ,KAAM17J,KAAKioK,aAAcn4B,SAER,OAAlB3tI,EAAO+6D,SAEX/6D,EAAO+6D,OAAO2tG,mBAAmB,GAAM,GAEvCkK,GAAMyB,SAAUr0K,EAAO+6D,OAAO+qG,cAI/B9lK,EAAO0lK,aAAckN,IAErB/0K,KAAKosB,IAAKjqB,GAEVA,EAAO0oK,mBAAmB,GAAO,GAE1B7qK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAe2gC,GAEd,OAAOp/B,KAAKk3K,oBAAqB,KAAM93I,EAExC,GAAC,CAAA58B,IAAA,kBAAA/D,MAED,SAAiBtF,GAEhB,OAAO6G,KAAKk3K,oBAAqB,OAAQ/9K,EAE1C,GAAC,CAAAqJ,IAAA,sBAAA/D,MAED,SAAqBtF,EAAMsF,GAE1B,GAAKuB,KAAM7G,KAAWsF,EAAQ,OAAOuB,KAErC,IAAM,IAAItD,EAAI,EAAGmK,EAAI7G,KAAK4d,SAAShmB,OAAQ8E,EAAImK,EAAGnK,IAAO,CAExD,IACMyF,EADQnC,KAAK4d,SAAUlhB,GACRw6K,oBAAqB/9K,EAAMsF,GAEhD,QAAgB2L,IAAXjI,EAEJ,OAAOA,CAIT,CAID,GAAC,CAAAK,IAAA,uBAAA/D,MAED,SAAsBtF,EAAMsF,GAAqB,IAAd3G,EAAMmI,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAEtCD,KAAM7G,KAAWsF,GAAQ3G,EAAOgF,KAAMkD,MAI3C,IAFA,IAAM4d,EAAW5d,KAAK4d,SAEZlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5CkhB,EAAUlhB,GAAI0qb,qBAAsBjub,EAAMsF,EAAO3G,GAIlD,OAAOA,CAER,GAAC,CAAA0K,IAAA,mBAAA/D,MAED,SAAkB8C,GAIjB,OAFAvB,KAAK6qK,mBAAmB,GAAM,GAEvBtpK,EAAOq1K,sBAAuB52K,KAAKioK,YAE3C,GAAC,CAAAzlK,IAAA,qBAAA/D,MAED,SAAoB8C,GAMnB,OAJAvB,KAAK6qK,mBAAmB,GAAM,GAE9B7qK,KAAKioK,YAAYsO,UAAWvB,GAAazzK,EAAQ0zK,IAE1C1zK,CAER,GAAC,CAAAiB,IAAA,gBAAA/D,MAED,SAAe8C,GAMd,OAJAvB,KAAK6qK,mBAAmB,GAAM,GAE9B7qK,KAAKioK,YAAYsO,UAAWvB,GAAaE,GAAe3zK,GAEjDA,CAER,GAAC,CAAAiB,IAAA,oBAAA/D,MAED,SAAmB8C,GAElBvB,KAAK6qK,mBAAmB,GAAM,GAE9B,IAAMvkK,EAAItG,KAAKioK,YAAYjiC,SAE3B,OAAOzkI,EAAO0tB,IAAK3oB,EAAG,GAAKA,EAAG,GAAKA,EAAG,KAAOu6G,WAE9C,GAAC,CAAAr+G,IAAA,UAAA/D,MAED,WAAwC,GAAC,CAAA+D,IAAA,WAAA/D,MAEzC,SAAU05C,GAETA,EAAUn4C,MAIV,IAFA,IAAM4d,EAAW5d,KAAK4d,SAEZlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5CkhB,EAAUlhB,GAAIy6K,SAAUh/H,EAI1B,GAAC,CAAA31C,IAAA,kBAAA/D,MAED,SAAiB05C,GAEhB,IAAsB,IAAjBn4C,KAAK2pE,QAAV,CAEAxxB,EAAUn4C,MAIV,IAFA,IAAM4d,EAAW5d,KAAK4d,SAEZlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5CkhB,EAAUlhB,GAAI06K,gBAAiBj/H,EARI,CAYrC,GAAC,CAAA31C,IAAA,oBAAA/D,MAED,SAAmB05C,GAElB,IAAM+kB,EAASl9D,KAAKk9D,OAEJ,OAAXA,IAEJ/kB,EAAU+kB,GAEVA,EAAOm6G,kBAAmBl/H,GAI5B,GAAC,CAAA31C,IAAA,eAAA/D,MAED,WAECuB,KAAK05J,OAAO6X,QAASvxK,KAAKu/D,SAAUv/D,KAAKojK,WAAYpjK,KAAKq3I,OAE1Dr3I,KAAK+1K,wBAAyB,CAE/B,GAAC,CAAAvzK,IAAA,oBAAA/D,MAED,SAAmB64K,GAEbt3K,KAAK4+J,kBAAmB5+J,KAAKq2K,gBAE7Br2K,KAAK+1K,wBAA0BuB,KAEd,OAAhBt3K,KAAKk9D,OAETl9D,KAAKioK,YAAYvM,KAAM17J,KAAK05J,QAI5B15J,KAAKioK,YAAY3Q,iBAAkBt3J,KAAKk9D,OAAO+qG,YAAajoK,KAAK05J,QAIlE15J,KAAK+1K,wBAAyB,EAE9BuB,GAAQ,GAQT,IAFA,IAAM15J,EAAW5d,KAAK4d,SAEZlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEnD,IAAM08B,EAAQxb,EAAUlhB,IAEa,IAAhC08B,EAAMunV,wBAA4C,IAAVrpM,GAE5Cl+I,EAAMm+I,kBAAmBD,EAI3B,CAED,GAAC,CAAA90K,IAAA,oBAAA/D,MAED,SAAmB+4K,EAAeC,GAEjC,IAAMv6G,EAASl9D,KAAKk9D,OAsBpB,IApBuB,IAAlBs6G,GAAqC,OAAXt6G,IAAoD,IAAjCA,EAAOyjT,uBAExDzjT,EAAO2tG,mBAAmB,GAAM,GAI5B7qK,KAAK4+J,kBAAmB5+J,KAAKq2K,eAEb,OAAhBr2K,KAAKk9D,OAETl9D,KAAKioK,YAAYvM,KAAM17J,KAAK05J,QAI5B15J,KAAKioK,YAAY3Q,iBAAkBt3J,KAAKk9D,OAAO+qG,YAAajoK,KAAK05J,SAM1C,IAAnB+d,EAIJ,IAFA,IAAM75J,EAAW5d,KAAK4d,SAEZlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEnD,IAAM08B,EAAQxb,EAAUlhB,IAEa,IAAhC08B,EAAMunV,uBAEVvnV,EAAMyxI,mBAAmB,GAAO,EAIlC,CAIF,GAAC,CAAAroK,IAAA,SAAA/D,MAED,SAAQ63B,GAGP,IAAMknI,OAA0BpzJ,IAATksB,GAAsC,kBAATA,EAE9CuoD,EAAS,CAAC,EAKX2+E,IAGJlnI,EAAO,CACNohJ,WAAY,CAAC,EACbC,UAAW,CAAC,EACZpY,SAAU,CAAC,EACX9B,OAAQ,CAAC,EACTma,OAAQ,CAAC,EACTC,UAAW,CAAC,EACZzB,WAAY,CAAC,EACb5rE,MAAO,CAAC,GAGT3rB,EAAO4/B,SAAW,CACjBplH,QAAS,IACTuL,KAAM,SACNgrF,UAAW,oBAOb,IAAMztF,EAAS,CAAC,EAkFhB,SAAS21K,EAAWC,EAASr2K,GAQ5B,YANiC0I,IAA5B2tK,EAASr2K,EAAQm6G,QAErBk8D,EAASr2K,EAAQm6G,MAASn6G,EAAQ89J,OAAQlpI,IAIpC50B,EAAQm6G,IAEhB,CAEA,GA5FA15G,EAAO05G,KAAO77G,KAAK67G,KACnB15G,EAAOyC,KAAO5E,KAAK4E,KAEA,KAAd5E,KAAK7G,OAAcgJ,EAAOhJ,KAAO6G,KAAK7G,OAClB,IAApB6G,KAAKg2K,aAAsB7zK,EAAO6zK,YAAa,IACxB,IAAvBh2K,KAAKi2K,gBAAyB9zK,EAAO8zK,eAAgB,IACpC,IAAjBj2K,KAAK2pE,UAAoBxnE,EAAOwnE,SAAU,IACnB,IAAvB3pE,KAAKk2K,gBAA0B/zK,EAAO+zK,eAAgB,GACjC,IAArBl2K,KAAKm2K,cAAoBh0K,EAAOg0K,YAAcn2K,KAAKm2K,aACnD53K,OAAOqD,KAAM5B,KAAKi/J,UAAWrnK,OAAS,IAAIuK,EAAO88J,SAAWj/J,KAAKi/J,UAEtE98J,EAAOwyK,OAAS30K,KAAK20K,OAAOr6C,KAC5Bn4H,EAAOu3J,OAAS15J,KAAK05J,OAAOnyE,UAC5BplF,EAAOwvK,GAAK3xK,KAAK2xK,GAAGpqF,WAEW,IAA1BvnF,KAAK4+J,mBAA6Bz8J,EAAOy8J,kBAAmB,GAI5D5+J,KAAKg4K,kBAET71K,EAAOyC,KAAO,gBACdzC,EAAOw7E,MAAQ39E,KAAK29E,MACpBx7E,EAAO81K,eAAiBj4K,KAAKi4K,eAAezY,SAChB,OAAvBx/J,KAAKk4K,gBAAyB/1K,EAAO+1K,cAAgBl4K,KAAKk4K,cAAc1Y,WAIzEx/J,KAAKqnb,gBAETllb,EAAOyC,KAAO,cACdzC,EAAOmlb,uBAAyBtnb,KAAKsnb,uBACrCnlb,EAAOysO,YAAc5uO,KAAK4uO,YAE1BzsO,EAAOolb,WAAavnb,KAAKwnb,YACzBrlb,EAAOslb,eAAiBznb,KAAK0nb,gBAE7Bvlb,EAAO2vW,WAAa9xW,KAAK2nb,YACzBxlb,EAAO+1S,OAASl4S,KAAK4nb,QACrBzlb,EAAOs/S,OAASzhT,KAAK6nb,QAAQtrb,KAAK,SAAAu7Z,GAAK,MAAM,CAC5CgwB,eAAgBhwB,EAAMgwB,eACtBC,OAAQjwB,EAAMttP,IAAIt/H,IAAIq8C,UACtBygW,OAAQlwB,EAAMttP,IAAIttK,IAAIqqF,UAEtB0gW,kBAAmBnwB,EAAMmwB,kBACzBC,aAAcpwB,EAAM1sP,OAAOlC,OAC3Bi/Q,aAAcrwB,EAAM1sP,OAAO/U,OAAO9uE,UAClC,IAEDplF,EAAOimb,iBAAmBpob,KAAKqob,kBAC/Blmb,EAAOmmb,eAAiBtob,KAAKuob,gBAC7Bpmb,EAAOqmb,cAAgBxob,KAAKyob,eAE5Btmb,EAAOumb,oBAAsB1ob,KAAK2ob,qBAClCxmb,EAAOymb,cAAgB5ob,KAAK6ob,eAE5B1mb,EAAO2mb,gBAAkB9ob,KAAK+ob,iBAAiBvpR,OAAQlpI,GAE1B,OAAxBt2B,KAAKimL,iBAET9jL,EAAO8jL,eAAiB,CACvB5vB,OAAQl0J,EAAO8jL,eAAe5vB,OAAO9uE,UACrC2hF,OAAQ/mK,EAAO8jL,eAAe/c,SAKN,OAArBlpK,KAAKgrK,cAET7oK,EAAO6oK,YAAc,CACpB9/H,IAAK/oC,EAAO6oK,YAAY9/H,IAAIq8C,UAC5BrqF,IAAKiF,EAAO6oK,YAAY9tK,IAAIqqF,aAqB1BvnF,KAAKm4K,QAEJn4K,KAAK4/D,aAEJ5/D,KAAK4/D,WAAW67F,QAEpBt5J,EAAOy9D,WAAa5/D,KAAK4/D,WAAW4/F,SAEzBx/J,KAAK4/D,WAAW+/F,YAE3Bx9J,EAAOy9D,WAAa5/D,KAAK4/D,WAAW4/F,OAAQlpI,GAAOulF,OAMhD77G,KAAKo4K,aAAep4K,KAAKo4K,YAAYzY,YAAwD,IAA3C3/J,KAAKo4K,YAAYjZ,wBAEvEh9J,EAAOi2K,YAAcp4K,KAAKo4K,YAAY5Y,OAAQlpI,GAAOulF,WAIhD,GAAK77G,KAAKq4K,QAAUr4K,KAAKs4K,QAAUt4K,KAAKu4K,SAAW,CAEzDp2K,EAAO2oK,SAAWgN,EAAWxhJ,EAAKohJ,WAAY13K,KAAK8qK,UAEnD,IAAM0N,EAAax4K,KAAK8qK,SAAS0N,WAEjC,QAAoBpuK,IAAfouK,QAAkDpuK,IAAtBouK,EAAWZ,OAAuB,CAElE,IAAMA,EAASY,EAAWZ,OAE1B,GAAKj7K,MAAM0E,QAASu2K,GAEnB,IAAM,IAAIl7K,EAAI,EAAGmK,EAAI+wK,EAAOhgL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAMmd,EAAQ+9J,EAAQl7K,GAEtBo7K,EAAWxhJ,EAAKshJ,OAAQ/9J,EAEzB,MAIAi+J,EAAWxhJ,EAAKshJ,OAAQA,EAI1B,CAED,CAiBA,GAfK53K,KAAKy4K,gBAETt2K,EAAOu2K,SAAW14K,KAAK04K,SACvBv2K,EAAOw2K,WAAa34K,KAAK24K,WAAWpxF,eAEbn9E,IAAlBpK,KAAK44K,WAETd,EAAWxhJ,EAAKuhJ,UAAW73K,KAAK44K,UAEhCz2K,EAAOy2K,SAAW54K,KAAK44K,SAAS/8D,YAMXzxG,IAAlBpK,KAAK64K,SAET,GAAKl8K,MAAM0E,QAASrB,KAAK64K,UAAa,CAIrC,IAFA,IAAMC,EAAQ,GAEJp8K,EAAI,EAAGmK,EAAI7G,KAAK64K,SAASjhL,OAAQ8E,EAAImK,EAAGnK,IAEjDo8K,EAAMh8K,KAAMg7K,EAAWxhJ,EAAKqhJ,UAAW33K,KAAK64K,SAAUn8K,KAIvDyF,EAAO02K,SAAWC,CAEnB,MAEC32K,EAAO02K,SAAWf,EAAWxhJ,EAAKqhJ,UAAW33K,KAAK64K,UAQpD,GAAK74K,KAAK4d,SAAShmB,OAAS,EAAI,CAE/BuK,EAAOyb,SAAW,GAElB,IAAM,IAAIlhB,EAAI,EAAGA,EAAIsD,KAAK4d,SAAShmB,OAAQ8E,IAE1CyF,EAAOyb,SAAS9gB,KAAMkD,KAAK4d,SAAUlhB,GAAI8iK,OAAQlpI,GAAOn0B,OAI1D,CAIA,GAAKnC,KAAKo2K,WAAWx+K,OAAS,EAAI,CAEjCuK,EAAOi0K,WAAa,GAEpB,IAAM,IAAI15K,EAAI,EAAGA,EAAIsD,KAAKo2K,WAAWx+K,OAAQ8E,IAAO,CAEnD,IAAMywC,EAAYntC,KAAKo2K,WAAY15K,GAEnCyF,EAAOi0K,WAAWt5K,KAAMg7K,EAAWxhJ,EAAK8/I,WAAYjpI,GAErD,CAED,CAEA,GAAKqwH,EAAe,CAEnB,IAAMka,EAAaqB,EAAkBziJ,EAAKohJ,YACpCC,EAAYoB,EAAkBziJ,EAAKqhJ,WACnCpY,EAAWwZ,EAAkBziJ,EAAKipI,UAClC9B,EAASsb,EAAkBziJ,EAAKmnI,QAChCma,EAASmB,EAAkBziJ,EAAKshJ,QAChCC,EAAYkB,EAAkBziJ,EAAKuhJ,WACnCzB,EAAa2C,EAAkBziJ,EAAK8/I,YACpC5rE,EAAQuuE,EAAkBziJ,EAAKk0E,OAEhCktE,EAAW9/K,OAAS,IAAIinF,EAAO64F,WAAaA,GAC5CC,EAAU//K,OAAS,IAAIinF,EAAO84F,UAAYA,GAC1CpY,EAAS3nK,OAAS,IAAIinF,EAAO0gF,SAAWA,GACxC9B,EAAO7lK,OAAS,IAAIinF,EAAO4+E,OAASA,GACpCma,EAAOhgL,OAAS,IAAIinF,EAAO+4F,OAASA,GACpCC,EAAUjgL,OAAS,IAAIinF,EAAOg5F,UAAYA,GAC1CzB,EAAWx+K,OAAS,IAAIinF,EAAOu3F,WAAaA,GAC5C5rE,EAAM5yG,OAAS,IAAIinF,EAAO2rB,MAAQA,EAExC,CAIA,OAFA3rB,EAAO18E,OAASA,EAET08E,EAKP,SAASk6F,EAAkB3vK,GAE1B,IAAM2D,EAAS,GACf,IAAM,IAAMvK,KAAO4G,EAAQ,CAE1B,IAAMs6B,EAAOt6B,EAAO5G,UACbkhC,EAAK+6E,SACZ1xG,EAAOjQ,KAAM4mC,EAEd,CAEA,OAAO32B,CAER,CAED,GAAC,CAAAvK,IAAA,QAAA/D,MAED,SAAOu6K,GAEN,OAAO,IAAIh5K,KAAKma,aAAcuhJ,KAAM17J,KAAMg5K,EAE3C,GAAC,CAAAx2K,IAAA,OAAA/D,MAED,SAAM+C,GAA2B,IAAnBw3K,IAAS/4K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GAgCtB,GA9BAD,KAAK7G,KAAOqI,EAAOrI,KAEnB6G,KAAK2xK,GAAGjW,KAAMl6J,EAAOmwK,IAErB3xK,KAAKu/D,SAASm8F,KAAMl6J,EAAO+9D,UAC3Bv/D,KAAKs5J,SAAS/rJ,MAAQ/L,EAAO83J,SAAS/rJ,MACtCvN,KAAKojK,WAAW1H,KAAMl6J,EAAO4hK,YAC7BpjK,KAAKq3I,MAAMqkB,KAAMl6J,EAAO61I,OAExBr3I,KAAK05J,OAAOgC,KAAMl6J,EAAOk4J,QACzB15J,KAAKioK,YAAYvM,KAAMl6J,EAAOymK,aAE9BjoK,KAAK4+J,iBAAmBp9J,EAAOo9J,iBAE/B5+J,KAAK2gX,sBAAwBn/W,EAAOm/W,sBACpC3gX,KAAK+1K,uBAAyBv0K,EAAOu0K,uBAErC/1K,KAAK20K,OAAOr6C,KAAO94H,EAAOmzK,OAAOr6C,KACjCt6H,KAAK2pE,QAAUnoE,EAAOmoE,QAEtB3pE,KAAKg2K,WAAax0K,EAAOw0K,WACzBh2K,KAAKi2K,cAAgBz0K,EAAOy0K,cAE5Bj2K,KAAKk2K,cAAgB10K,EAAO00K,cAC5Bl2K,KAAKm2K,YAAc30K,EAAO20K,YAE1Bn2K,KAAKo2K,WAAa50K,EAAO40K,WAAWxlK,QAEpC5Q,KAAKi/J,SAAWlxG,KAAK4yC,MAAO5yC,KAAKC,UAAWxsD,EAAOy9J,YAEhC,IAAd+Z,EAEJ,IAAM,IAAIt8K,EAAI,EAAGA,EAAI8E,EAAOoc,SAAShmB,OAAQ8E,IAAO,CAEnD,IAAM08B,EAAQ53B,EAAOoc,SAAUlhB,GAC/BsD,KAAKosB,IAAKgN,EAAMl4B,QAEjB,CAID,OAAOlB,IAER,KAACw1K,CAAA,CA58BY,CAASlkB,IAg9BvBkkB,GAASyxQ,WAA2B,IAAIngR,GAAS,EAAG,EAAG,GACvD0O,GAAS0xQ,4BAA6B,EACtC1xQ,GAAS2xQ,kCAAmC,EAE5C,IAAMluQ,GAAsB,IAAInS,GAC1BoS,GAAsB,IAAIpS,GAC1BqS,GAAsB,IAAIrS,GAC1BkiR,GAAsB,IAAIliR,GAE1BuS,GAAqB,IAAIvS,GACzBwS,GAAqB,IAAIxS,GACzByS,GAAqB,IAAIzS,GACzB0S,GAAqB,IAAI1S,GACzB2S,GAAqB,IAAI3S,GACzB4S,GAAqB,IAAI5S,GAEzB6S,GAAQ,WAEb,SAAAA,IAAuE,IAA1D39K,EAACiE,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAWvgK,EAACtG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAW7qK,EAACgE,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAASr8J,EAAA,KAAAkvK,GAEnE35K,KAAKhE,EAAIA,EACTgE,KAAKuG,EAAIA,EACTvG,KAAK/D,EAAIA,CAEV,CA8FC,OA9FAsN,EAAAowK,EAAA,EAAAn3K,IAAA,MAAA/D,MAgGD,SAAKzC,EAAGuK,EAAGtK,GAMV,OAJA+D,KAAKhE,EAAE0/J,KAAM1/J,GACbgE,KAAKuG,EAAEm1J,KAAMn1J,GACbvG,KAAK/D,EAAEy/J,KAAMz/J,GAEN+D,IAER,GAAC,CAAAwC,IAAA,0BAAA/D,MAED,SAAyBwrK,EAAQ2P,EAAIC,EAAIC,GAMxC,OAJA95K,KAAKhE,EAAE0/J,KAAMuO,EAAQ2P,IACrB55K,KAAKuG,EAAEm1J,KAAMuO,EAAQ4P,IACrB75K,KAAK/D,EAAEy/J,KAAMuO,EAAQ6P,IAEd95K,IAER,GAAC,CAAAwC,IAAA,6BAAA/D,MAED,SAA4By3J,EAAW0jB,EAAIC,EAAIC,GAM9C,OAJA95K,KAAKhE,EAAE+uK,oBAAqB7U,EAAW0jB,GACvC55K,KAAKuG,EAAEwkK,oBAAqB7U,EAAW2jB,GACvC75K,KAAK/D,EAAE8uK,oBAAqB7U,EAAW4jB,GAEhC95K,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+sK,GAML,OAJAxrK,KAAKhE,EAAE0/J,KAAM8P,EAASxvK,GACtBgE,KAAKuG,EAAEm1J,KAAM8P,EAASjlK,GACtBvG,KAAK/D,EAAEy/J,KAAM8P,EAASvvK,GAEf+D,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAKC,OAHAw6K,GAAM3jB,WAAYt1J,KAAK/D,EAAG+D,KAAKuG,GAC/B2yK,GAAM5jB,WAAYt1J,KAAKhE,EAAGgE,KAAKuG,GAEQ,GAAhC0yK,GAAMzI,MAAO0I,IAAQthL,QAE7B,GAAC,CAAA4K,IAAA,cAAA/D,MAED,SAAa8C,GAEZ,OAAOA,EAAO8zJ,WAAYr1J,KAAKhE,EAAGgE,KAAKuG,GAAI6lB,IAAKpsB,KAAK/D,GAAIs5J,eAAgB,EAAI,EAE9E,GAAC,CAAA/yJ,IAAA,YAAA/D,MAED,SAAW8C,GAEV,OAAOo4K,EAASI,UAAW/5K,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAAGsF,EAEpD,GAAC,CAAAiB,IAAA,WAAA/D,MAED,SAAU8C,GAET,OAAOA,EAAOy4K,sBAAuBh6K,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAE3D,GAAC,CAAAuG,IAAA,eAAA/D,MAED,SAAcisK,EAAOnpK,GAEpB,OAAOo4K,EAASM,aAAcvP,EAAO1qK,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAAGsF,EAE9D,GAAC,CAAAiB,IAAA,mBAAA/D,MAED,SAAkBisK,EAAO1U,EAAIC,EAAI+wF,EAAIzlP,GAEpC,OAAOo4K,EAASqxF,iBAAkBtgG,EAAO1qK,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAAG+5J,EAAIC,EAAI+wF,EAAIzlP,EAE9E,GAAC,CAAAiB,IAAA,gBAAA/D,MAED,SAAeisK,GAEd,OAAOiP,EAASW,cAAe5P,EAAO1qK,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAE5D,GAAC,CAAAuG,IAAA,gBAAA/D,MAED,SAAe4vK,GAEd,OAAOsL,EAASY,cAAev6K,KAAKhE,EAAGgE,KAAKuG,EAAGvG,KAAK/D,EAAGoyK,EAExD,GAAC,CAAA7rK,IAAA,gBAAA/D,MAED,SAAe+rK,GAEd,OAAOA,EAAIgQ,mBAAoBx6K,KAEhC,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,SAAqBuI,EAAGzF,GAEvB,IACI4F,EAAGC,EADDpL,EAAIgE,KAAKhE,EAAGuK,EAAIvG,KAAKuG,EAAGtK,EAAI+D,KAAK/D,EASvCo9K,GAAK/jB,WAAY/uJ,EAAGvK,GACpBs9K,GAAKhkB,WAAYr5J,EAAGD,GACpBw9K,GAAKlkB,WAAYtuJ,EAAGhL,GACpB,IAAM+1J,EAAKsnB,GAAKpV,IAAKuV,IACfxnB,EAAKsnB,GAAKrV,IAAKuV,IACrB,GAAKznB,GAAM,GAAKC,GAAM,EAGrB,OAAOzwJ,EAAOm6J,KAAM1/J,GAIrBy9K,GAAKnkB,WAAYtuJ,EAAGT,GACpB,IAAM0rJ,EAAKonB,GAAKpV,IAAKwV,IACfgB,EAAKnB,GAAKrV,IAAKwV,IACrB,GAAKxnB,GAAM,GAAKwoB,GAAMxoB,EAGrB,OAAO1wJ,EAAOm6J,KAAMn1J,GAIrB,IAAMw1B,EAAKg2H,EAAK0oB,EAAKxoB,EAAKD,EAC1B,GAAKj2H,GAAM,GAAKg2H,GAAM,GAAKE,GAAM,EAIhC,OAFA9qJ,EAAI4qJ,GAAOA,EAAKE,GAET1wJ,EAAOm6J,KAAM1/J,GAAI0+K,gBAAiBrB,GAAMlyK,GAIhDuyK,GAAKpkB,WAAYtuJ,EAAG/K,GACpB,IAAM0+K,EAAKtB,GAAKpV,IAAKyV,IACfkB,EAAKtB,GAAKrV,IAAKyV,IACrB,GAAKkB,GAAM,GAAKD,GAAMC,EAGrB,OAAOr5K,EAAOm6J,KAAMz/J,GAIrB,IAAM06B,EAAKgkJ,EAAK3oB,EAAKD,EAAK6oB,EAC1B,GAAKjkJ,GAAM,GAAKq7H,GAAM,GAAK4oB,GAAM,EAIhC,OAFAxzK,EAAI4qJ,GAAOA,EAAK4oB,GAETr5K,EAAOm6J,KAAM1/J,GAAI0+K,gBAAiBpB,GAAMlyK,GAIhD,IAAMumB,EAAKskI,EAAK2oB,EAAKD,EAAKF,EAC1B,GAAK9sJ,GAAM,GAAO8sJ,EAAKxoB,GAAQ,GAAO0oB,EAAKC,GAAQ,EAKlD,OAHArB,GAAKjkB,WAAYr5J,EAAGsK,GACpBa,GAAMqzK,EAAKxoB,IAAWwoB,EAAKxoB,GAAS0oB,EAAKC,IAElCr5K,EAAOm6J,KAAMn1J,GAAIm0K,gBAAiBnB,GAAMnyK,GAKhD,IAAMyzK,EAAQ,GAAMltJ,EAAKgJ,EAAKoF,GAK9B,OAHA50B,EAAIwvB,EAAKkkJ,EACTzzK,EAAI20B,EAAK8+I,EAEFt5K,EAAOm6J,KAAM1/J,GAAI0+K,gBAAiBrB,GAAMlyK,GAAIuzK,gBAAiBpB,GAAMlyK,EAE3E,GAAC,CAAA5E,IAAA,SAAA/D,MAED,SAAQ+sK,GAEP,OAAOA,EAASxvK,EAAEwwK,OAAQxsK,KAAKhE,IAAOwvK,EAASjlK,EAAEimK,OAAQxsK,KAAKuG,IAAOilK,EAASvvK,EAAEuwK,OAAQxsK,KAAK/D,EAE9F,IAAC,EAAAuG,IAAA,YAAA/D,MA1RD,SAAkBzC,EAAGuK,EAAGtK,EAAGsF,GAE1BA,EAAO+zJ,WAAYr5J,EAAGsK,GACtB0yK,GAAM3jB,WAAYt5J,EAAGuK,GACrBhF,EAAOivK,MAAOyI,IAEd,IAAM6B,EAAiBv5K,EAAOmnK,WAC9B,OAAKoS,EAAiB,EAEdv5K,EAAOg0J,eAAgB,EAAIt4J,KAAK04J,KAAMmlB,IAIvCv5K,EAAO0tB,IAAK,EAAG,EAAG,EAE1B,GAGA,CAAAzsB,IAAA,eAAA/D,MACA,SAAqBisK,EAAO1uK,EAAGuK,EAAGtK,EAAGsF,GAEpC03K,GAAM3jB,WAAYr5J,EAAGD,GACrBk9K,GAAM5jB,WAAY/uJ,EAAGvK,GACrBm9K,GAAM7jB,WAAYoV,EAAO1uK,GAEzB,IAAM++K,EAAQ9B,GAAMhV,IAAKgV,IACnB+B,EAAQ/B,GAAMhV,IAAKiV,IACnB+B,EAAQhC,GAAMhV,IAAKkV,IACnB+B,EAAQhC,GAAMjV,IAAKiV,IACnBiC,EAAQjC,GAAMjV,IAAKkV,IAEnB0B,EAAUE,EAAQG,EAAQF,EAAQA,EAGxC,GAAe,IAAVH,EAGJ,OADAt5K,EAAO0tB,IAAK,EAAG,EAAG,GACX,KAIR,IAAMmsJ,EAAW,EAAIP,EACftzK,GAAM2zK,EAAQD,EAAQD,EAAQG,GAAUC,EACxCj0K,GAAM4zK,EAAQI,EAAQH,EAAQC,GAAUG,EAG9C,OAAO75K,EAAO0tB,IAAK,EAAI1nB,EAAIJ,EAAGA,EAAGI,EAElC,GAAC,CAAA/E,IAAA,gBAAA/D,MAED,SAAsBisK,EAAO1uK,EAAGuK,EAAGtK,GAGlC,OAAoD,OAA/C+D,KAAKi6K,aAAcvP,EAAO1uK,EAAGuK,EAAGtK,EAAG+sb,MAM/BA,GAAM9sb,GAAK,GAAS8sb,GAAM3hb,GAAK,GAAW2hb,GAAM9sb,EAAI8sb,GAAM3hb,GAAO,EAE3E,GAAC,CAAA7E,IAAA,mBAAA/D,MAED,SAAyBisK,EAAOpzC,EAAIC,EAAI8jD,EAAIrlB,EAAIC,EAAI+wF,EAAIzlP,GAEvD,OAAuD,OAAlDvB,KAAKi6K,aAAcvP,EAAOpzC,EAAIC,EAAI8jD,EAAI2tQ,KAE1Cznb,EAAOrF,EAAI,EACXqF,EAAO8F,EAAI,EACN,MAAO9F,IAASA,EAAO+F,EAAI,GAC3B,MAAO/F,IAASA,EAAO6F,EAAI,GACzB,OAIR7F,EAAOwxS,UAAW,GAClBxxS,EAAOm5K,gBAAiB1kB,EAAIgzR,GAAM9sb,GAClCqF,EAAOm5K,gBAAiBzkB,EAAI+yR,GAAM3hb,GAClC9F,EAAOm5K,gBAAiBssE,EAAIgiM,GAAM1hb,GAE3B/F,EAER,GAAC,CAAAiB,IAAA,gBAAA/D,MAED,SAAsBzC,EAAGuK,EAAGtK,EAAGoyK,GAM9B,OAJA4K,GAAM3jB,WAAYr5J,EAAGsK,GACrB2yK,GAAM5jB,WAAYt5J,EAAGuK,GAGZ0yK,GAAMzI,MAAO0I,IAAQjV,IAAKoK,GAAc,CAElD,KAACsL,CAAA,CAtGY,GAwSR1e,GAAiB,CAAE,UAAa,SAAU,aAAgB,SAAU,KAAQ,MAAU,WAAc,QAAU,MAAS,SAC5H,MAAS,SAAU,OAAU,SAAU,MAAS,EAAU,eAAkB,SAAU,KAAQ,IAAU,WAAc,QACtH,MAAS,SAAU,UAAa,SAAU,UAAa,QAAU,WAAc,QAAU,UAAa,SAAU,MAAS,SACzH,eAAkB,QAAU,SAAY,SAAU,QAAW,SAAU,KAAQ,MAAU,SAAY,IAAU,SAAY,MAC3H,cAAiB,SAAU,SAAY,SAAU,UAAa,MAAU,SAAY,SAAU,UAAa,SAAU,YAAe,QACpI,eAAkB,QAAU,WAAc,SAAU,WAAc,SAAU,QAAW,QAAU,WAAc,SAAU,aAAgB,QACzI,cAAiB,QAAU,cAAiB,QAAU,cAAiB,QAAU,cAAiB,MAAU,WAAc,QAC1H,SAAY,SAAU,YAAe,MAAU,QAAW,QAAU,QAAW,QAAU,WAAc,QAAU,UAAa,SAC9H,YAAe,SAAU,YAAe,QAAU,QAAW,SAAU,UAAa,SAAU,WAAc,SAAU,KAAQ,SAC9H,UAAa,SAAU,KAAQ,QAAU,MAAS,MAAU,YAAe,SAAU,KAAQ,QAAU,SAAY,SAAU,QAAW,SACxI,UAAa,SAAU,OAAU,QAAU,MAAS,SAAU,MAAS,SAAU,SAAY,SAAU,cAAiB,SAAU,UAAa,QAC/I,aAAgB,SAAU,UAAa,SAAU,WAAc,SAAU,UAAa,SAAU,qBAAwB,SAAU,UAAa,SAC/I,WAAc,QAAU,UAAa,SAAU,UAAa,SAAU,YAAe,SAAU,cAAiB,QAAU,aAAgB,QAC1I,eAAkB,QAAU,eAAkB,QAAU,eAAkB,SAAU,YAAe,SAAU,KAAQ,MAAU,UAAa,QAC5I,MAAS,SAAU,QAAW,SAAU,OAAU,QAAU,iBAAoB,QAAU,WAAc,IAAU,aAAgB,SAClI,aAAgB,QAAU,eAAkB,QAAU,gBAAmB,QAAU,kBAAqB,MAAU,gBAAmB,QACrI,gBAAmB,SAAU,aAAgB,QAAU,UAAa,SAAU,UAAa,SAAU,SAAY,SAAU,YAAe,SAC1I,KAAQ,IAAU,QAAW,SAAU,MAAS,QAAU,UAAa,QAAU,OAAU,SAAU,UAAa,SAAU,OAAU,SACtI,cAAiB,SAAU,UAAa,SAAU,cAAiB,SAAU,cAAiB,SAAU,WAAc,SAAU,UAAa,SAC7I,KAAQ,SAAU,KAAQ,SAAU,KAAQ,SAAU,WAAc,SAAU,OAAU,QAAU,cAAiB,QAAU,IAAO,SAAU,UAAa,SAC3J,UAAa,QAAU,YAAe,QAAU,OAAU,SAAU,WAAc,SAAU,SAAY,QAAU,SAAY,SAC9H,OAAU,SAAU,OAAU,SAAU,QAAW,QAAU,UAAa,QAAU,UAAa,QAAU,UAAa,QAAU,KAAQ,SAC1I,YAAe,MAAU,UAAa,QAAU,IAAO,SAAU,KAAQ,MAAU,QAAW,SAAU,OAAU,SAAU,UAAa,QACzI,OAAU,SAAU,MAAS,SAAU,MAAS,SAAU,WAAc,SAAU,OAAU,SAAU,YAAe,UAEhHE,GAAQ,CAAEx0J,EAAG,EAAGlL,EAAG,EAAGoL,EAAG,GACzBu0J,GAAQ,CAAEz0J,EAAG,EAAGlL,EAAG,EAAGoL,EAAG,GAE/B,SAASw0J,GAASr0J,EAAGC,EAAG3P,GAIvB,OAFKA,EAAI,IAAIA,GAAK,GACbA,EAAI,IAAIA,GAAK,GACbA,EAAI,EAAI,EAAW0P,EAAgB,GAAVC,EAAID,GAAU1P,EACvCA,EAAI,GAAe2P,EACnB3P,EAAI,EAAI,EAAW0P,EAAgB,GAAVC,EAAID,IAAY,EAAI,EAAI1P,GAC/C0P,CAER,CAAC,IAEKu0J,GAAK,WAEV,SAAAA,EAAar0J,EAAGR,EAAGH,GAQlB,OARsBkE,EAAA,KAAA8wJ,GAEtBv7J,KAAKy7J,SAAU,EAEfz7J,KAAKkH,EAAI,EACTlH,KAAK0G,EAAI,EACT1G,KAAKuG,EAAI,EAEFvG,KAAKivB,IAAK/nB,EAAGR,EAAGH,EAExB,CA+iBC,OA/iBAgD,EAAAgyJ,EAAA,EAAA/4J,IAAA,MAAA/D,MAED,SAAKyI,EAAGR,EAAGH,GAEV,QAAW6D,IAAN1D,QAAyB0D,IAAN7D,EAAkB,CAIzC,IAAM9H,EAAQyI,EAETzI,GAASA,EAAMg9J,QAEnBz7J,KAAK07J,KAAMj9J,GAEiB,kBAAVA,EAElBuB,KAAK27J,OAAQl9J,GAEe,kBAAVA,GAElBuB,KAAK47J,SAAUn9J,EAIjB,MAECuB,KAAKw7J,OAAQt0J,EAAGR,EAAGH,GAIpB,OAAOvG,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAW22J,GAMV,OAJAp1J,KAAKkH,EAAIkuJ,EACTp1J,KAAK0G,EAAI0uJ,EACTp1J,KAAKuG,EAAI6uJ,EAEFp1J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQo9J,GAAmC,IAA9BlB,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAUzB,OARAqM,EAAM5+J,KAAKwf,MAAOo/I,GAElB77J,KAAKkH,GAAM20J,GAAO,GAAK,KAAQ,IAC/B77J,KAAK0G,GAAMm1J,GAAO,EAAI,KAAQ,IAC9B77J,KAAKuG,GAAY,IAANs1J,GAAc,IAEzBrB,GAAgBQ,oBAAqBh7J,KAAM26J,GAEpC36J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQyI,EAAGR,EAAGH,GAAoD,IAAjDo0J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGu6J,GAAgBE,kBAQ7C,OANA16J,KAAKkH,EAAIA,EACTlH,KAAK0G,EAAIA,EACT1G,KAAKuG,EAAIA,EAETi0J,GAAgBQ,oBAAqBh7J,KAAM26J,GAEpC36J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQkI,EAAGlL,EAAGoL,GAAoD,IAAjD8zJ,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGu6J,GAAgBE,kBAO7C,GAJA/zJ,EAAIwrJ,GAAiBxrJ,EAAG,GACxBlL,EAAIy2J,GAAOz2J,EAAG,EAAG,GACjBoL,EAAIqrJ,GAAOrrJ,EAAG,EAAG,GAEN,IAANpL,EAEJuE,KAAKkH,EAAIlH,KAAK0G,EAAI1G,KAAKuG,EAAIM,MAErB,CAEN,IAAMG,EAAIH,GAAK,GAAMA,GAAM,EAAIpL,GAAMoL,EAAIpL,EAAMoL,EAAIpL,EAC7CwL,EAAM,EAAIJ,EAAMG,EAEtBhH,KAAKkH,EAAIm0J,GAASp0J,EAAGD,EAAGL,EAAI,EAAI,GAChC3G,KAAK0G,EAAI20J,GAASp0J,EAAGD,EAAGL,GACxB3G,KAAKuG,EAAI80J,GAASp0J,EAAGD,EAAGL,EAAI,EAAI,EAEjC,CAIA,OAFA6zJ,GAAgBQ,oBAAqBh7J,KAAM26J,GAEpC36J,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU4L,GAAqC,IAe1CvD,EAfY6zJ,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAE7B,SAASsM,EAAa1iJ,QAELhP,IAAXgP,GAEAlI,WAAYkI,GAAW,GAE3BrF,QAAQk/C,KAAM,mCAAqC5oD,EAAQ,oBAI7D,CAKA,GAAKvD,EAAI,qBAAqBkP,KAAM3L,GAAU,CAI7C,IAAIm9B,EACEruC,EAAO2N,EAAG,GACVi1J,EAAaj1J,EAAG,GAEtB,OAAS3N,GAER,IAAK,MACL,IAAK,OAEJ,GAAKquC,EAAQ,+DAA+DxxB,KAAM+lJ,GAMjF,OAFAD,EAAat0H,EAAO,IAEbxnC,KAAKw7J,OACXv+J,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IAC9CvqC,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IAC9CvqC,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IAC9CmzH,GAKF,GAAKnzH,EAAQ,qEAAqExxB,KAAM+lJ,GAMvF,OAFAD,EAAat0H,EAAO,IAEbxnC,KAAKw7J,OACXv+J,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IAC9CvqC,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IAC9CvqC,KAAKiuC,IAAK,IAAK/5B,SAAUq2B,EAAO,GAAK,KAAS,IAC9CmzH,GAKF,MAED,IAAK,MACL,IAAK,OAEJ,GAAKnzH,EAAQ,qFAAqFxxB,KAAM+lJ,GAMvG,OAFAD,EAAat0H,EAAO,IAEbxnC,KAAKg8J,OACX9qJ,WAAYs2B,EAAO,IAAQ,IAC3Bt2B,WAAYs2B,EAAO,IAAQ,IAC3Bt2B,WAAYs2B,EAAO,IAAQ,IAC3BmzH,GAKF,MAED,QAEC5mJ,QAAQk/C,KAAM,oCAAsC5oD,GAIvD,MAAO,GAAKvD,EAAI,oBAAoBkP,KAAM3L,GAAU,CAInD,IAAMwxJ,EAAM/0J,EAAG,GACTy+C,EAAOs2G,EAAIjkK,OAEjB,GAAc,IAAT2tD,EAGJ,OAAOvlD,KAAKw7J,OACXrqJ,SAAU0qJ,EAAInrJ,OAAQ,GAAK,IAAO,GAClCS,SAAU0qJ,EAAInrJ,OAAQ,GAAK,IAAO,GAClCS,SAAU0qJ,EAAInrJ,OAAQ,GAAK,IAAO,GAClCiqJ,GAGK,GAAc,IAATp1G,EAGX,OAAOvlD,KAAK27J,OAAQxqJ,SAAU0qJ,EAAK,IAAMlB,GAIzC5mJ,QAAQk/C,KAAM,kCAAoC5oD,EAIpD,MAAO,GAAKA,GAASA,EAAMzS,OAAS,EAEnC,OAAOoI,KAAKi8J,aAAc5xJ,EAAOswJ,GAIlC,OAAO36J,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAc4L,GAAqC,IAA9BswJ,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAG3BqM,EAAMZ,GAAgB5wJ,EAAMrS,eAclC,YAZaoS,IAARyxJ,EAGJ77J,KAAK27J,OAAQE,EAAKlB,GAKlB5mJ,QAAQk/C,KAAM,8BAAgC5oD,GAIxCrK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAKkH,EAAGlH,KAAK0G,EAAG1G,KAAKuG,EAEnD,GAAC,CAAA/D,IAAA,OAAA/D,MAED,SAAM+oC,GAML,OAJAxnC,KAAKkH,EAAIsgC,EAAMtgC,EACflH,KAAK0G,EAAI8gC,EAAM9gC,EACf1G,KAAKuG,EAAIihC,EAAMjhC,EAERvG,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB+oC,GAMjB,OAJAxnC,KAAKkH,EAAIkzJ,GAAc5yH,EAAMtgC,GAC7BlH,KAAK0G,EAAI0zJ,GAAc5yH,EAAM9gC,GAC7B1G,KAAKuG,EAAI6zJ,GAAc5yH,EAAMjhC,GAEtBvG,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB+oC,GAMjB,OAJAxnC,KAAKkH,EAAImzJ,GAAc7yH,EAAMtgC,GAC7BlH,KAAK0G,EAAI2zJ,GAAc7yH,EAAM9gC,GAC7B1G,KAAKuG,EAAI8zJ,GAAc7yH,EAAMjhC,GAEtBvG,IAER,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,WAIC,OAFAuB,KAAKk8J,iBAAkBl8J,MAEhBA,IAER,GAAC,CAAAwC,IAAA,sBAAA/D,MAED,WAIC,OAFAuB,KAAKm8J,iBAAkBn8J,MAEhBA,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAAsC,IAA9Bk8J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAIpB,OAFAgL,GAAgBO,sBAAuBkuR,GAAOvtR,KAAM17J,MAAQ26J,GAEL,MAAhD19J,KAAK83J,MAAO7C,GAAkB,IAAX+2R,GAAO/hb,EAAS,EAAG,MAAkE,IAAhDjK,KAAK83J,MAAO7C,GAAkB,IAAX+2R,GAAOvib,EAAS,EAAG,MAAgBzJ,KAAK83J,MAAO7C,GAAkB,IAAX+2R,GAAO1ib,EAAS,EAAG,KAE5J,GAAC,CAAA/D,IAAA,eAAA/D,MAED,WAA4C,IAA9Bk8J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAE1B,OAAS,SAAWxvJ,KAAKo8J,OAAQzB,GAAal6J,SAAU,KAAOmQ,OAAS,EAEzE,GAAC,CAAApO,IAAA,SAAA/D,MAED,SAAQ8C,GAAyD,IAAjDo5J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGu6J,GAAgBE,kBAI5CF,GAAgBO,sBAAuBkuR,GAAOvtR,KAAM17J,MAAQ26J,GAE5D,IAKI0B,EAAKC,EALHp1J,EAAI+hb,GAAO/hb,EAAGR,EAAIuib,GAAOvib,EAAGH,EAAI0ib,GAAO1ib,EAEvCrJ,EAAMD,KAAKC,IAAKgK,EAAGR,EAAGH,GACtB2kC,EAAMjuC,KAAKiuC,IAAKhkC,EAAGR,EAAGH,GAGtBg2J,GAAcrxH,EAAMhuC,GAAQ,EAElC,GAAKguC,IAAQhuC,EAEZm/J,EAAM,EACNC,EAAa,MAEP,CAEN,IAAMl/J,EAAQF,EAAMguC,EAIpB,OAFAoxH,EAAaC,GAAa,GAAMn/J,GAAUF,EAAMguC,GAAQ9tC,GAAU,EAAIF,EAAMguC,GAEnEhuC,GAER,KAAKgK,EAAGm1J,GAAQ31J,EAAIH,GAAMnJ,GAAUsJ,EAAIH,EAAI,EAAI,GAAK,MACrD,KAAKG,EAAG21J,GAAQ91J,EAAIW,GAAM9J,EAAQ,EAAG,MACrC,KAAKmJ,EAAG81J,GAAQn1J,EAAIR,GAAMtJ,EAAQ,EAInCi/J,GAAO,CAER,CAMA,OAJA96J,EAAOoF,EAAI01J,EACX96J,EAAO9F,EAAI6gK,EACX/6J,EAAOsF,EAAI01J,EAEJh7J,CAER,GAAC,CAAAiB,IAAA,SAAA/D,MAED,SAAQ8C,GAAyD,IAAjDo5J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGu6J,GAAgBE,kBAQ5C,OANAF,GAAgBO,sBAAuBkuR,GAAOvtR,KAAM17J,MAAQ26J,GAE5Dp5J,EAAO2F,EAAI+hb,GAAO/hb,EAClB3F,EAAOmF,EAAIuib,GAAOvib,EAClBnF,EAAOgF,EAAI0ib,GAAO1ib,EAEXhF,CAER,GAAC,CAAAiB,IAAA,WAAA/D,MAED,WAAwC,IAA9Bk8J,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGuvJ,GAEtBgL,GAAgBO,sBAAuBkuR,GAAOvtR,KAAM17J,MAAQ26J,GAE5D,IAAMzzJ,EAAI+hb,GAAO/hb,EAAGR,EAAIuib,GAAOvib,EAAGH,EAAI0ib,GAAO1ib,EAE7C,OAAKo0J,IAAenL,GAGZ,SAAP/tJ,OAAiBk5J,EAAU,KAAAl5J,OAAMyF,EAAEgib,QAAS,GAAG,KAAAznb,OAAMiF,EAAEwib,QAAS,GAAG,KAAAznb,OAAM8E,EAAE2ib,QAAS,GAAG,KAIjF,OAAPznb,OAAexE,KAAK83J,MAAW,IAAJ7tJ,GAAS,KAAAzF,OAAMxE,KAAK83J,MAAW,IAAJruJ,GAAS,KAAAjF,OAAMxE,KAAK83J,MAAW,IAAJxuJ,GAAS,IAE3F,GAAC,CAAA/D,IAAA,YAAA/D,MAED,SAAWkI,EAAGlL,EAAGoL,GAIhB,OAFA7G,KAAKw8J,OAAQrB,IAENn7J,KAAKg8J,OAAQb,GAAMx0J,EAAIA,EAAGw0J,GAAM1/J,EAAIA,EAAG0/J,GAAMt0J,EAAIA,EAEzD,GAAC,CAAArE,IAAA,MAAA/D,MAED,SAAK+oC,GAMJ,OAJAxnC,KAAKkH,GAAKsgC,EAAMtgC,EAChBlH,KAAK0G,GAAK8gC,EAAM9gC,EAChB1G,KAAKuG,GAAKihC,EAAMjhC,EAETvG,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWg+J,EAAQC,GAMlB,OAJA18J,KAAKkH,EAAIu1J,EAAOv1J,EAAIw1J,EAAOx1J,EAC3BlH,KAAK0G,EAAI+1J,EAAO/1J,EAAIg2J,EAAOh2J,EAC3B1G,KAAKuG,EAAIk2J,EAAOl2J,EAAIm2J,EAAOn2J,EAEpBvG,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWhD,GAMV,OAJAuE,KAAKkH,GAAKzL,EACVuE,KAAK0G,GAAKjL,EACVuE,KAAKuG,GAAK9K,EAEHuE,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAK+oC,GAMJ,OAJAxnC,KAAKkH,EAAIjK,KAAKC,IAAK,EAAG8C,KAAKkH,EAAIsgC,EAAMtgC,GACrClH,KAAK0G,EAAIzJ,KAAKC,IAAK,EAAG8C,KAAK0G,EAAI8gC,EAAM9gC,GACrC1G,KAAKuG,EAAItJ,KAAKC,IAAK,EAAG8C,KAAKuG,EAAIihC,EAAMjhC,GAE9BvG,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU+oC,GAMT,OAJAxnC,KAAKkH,GAAKsgC,EAAMtgC,EAChBlH,KAAK0G,GAAK8gC,EAAM9gC,EAChB1G,KAAKuG,GAAKihC,EAAMjhC,EAETvG,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBhD,GAMf,OAJAuE,KAAKkH,GAAKzL,EACVuE,KAAK0G,GAAKjL,EACVuE,KAAKuG,GAAK9K,EAEHuE,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+oC,EAAOuuH,GAMZ,OAJA/1J,KAAKkH,IAAOsgC,EAAMtgC,EAAIlH,KAAKkH,GAAM6uJ,EACjC/1J,KAAK0G,IAAO8gC,EAAM9gC,EAAI1G,KAAK0G,GAAMqvJ,EACjC/1J,KAAKuG,IAAOihC,EAAMjhC,EAAIvG,KAAKuG,GAAMwvJ,EAE1B/1J,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYg+J,EAAQC,EAAQ3G,GAM3B,OAJA/1J,KAAKkH,EAAIu1J,EAAOv1J,GAAMw1J,EAAOx1J,EAAIu1J,EAAOv1J,GAAM6uJ,EAC9C/1J,KAAK0G,EAAI+1J,EAAO/1J,GAAMg2J,EAAOh2J,EAAI+1J,EAAO/1J,GAAMqvJ,EAC9C/1J,KAAKuG,EAAIk2J,EAAOl2J,GAAMm2J,EAAOn2J,EAAIk2J,EAAOl2J,GAAMwvJ,EAEvC/1J,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAAS+oC,EAAOuuH,GAEf/1J,KAAKw8J,OAAQrB,IACb3zH,EAAMg1H,OAAQpB,IAEd,IAAMz0J,EAAIyrJ,GAAM+I,GAAMx0J,EAAGy0J,GAAMz0J,EAAGovJ,GAC5Bt6J,EAAI22J,GAAM+I,GAAM1/J,EAAG2/J,GAAM3/J,EAAGs6J,GAC5BlvJ,EAAIurJ,GAAM+I,GAAMt0J,EAAGu0J,GAAMv0J,EAAGkvJ,GAIlC,OAFA/1J,KAAKg8J,OAAQr1J,EAAGlL,EAAGoL,GAEZ7G,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB0I,GAMf,OAJAnH,KAAKkH,EAAIC,EAAEjL,EACX8D,KAAK0G,EAAIS,EAAEE,EACXrH,KAAKuG,EAAIY,EAAEG,EAEJtH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAMI,EAAIlH,KAAKkH,EAAGR,EAAI1G,KAAK0G,EAAGH,EAAIvG,KAAKuG,EACjCD,EAAIQ,EAAEk/H,SAMZ,OAJAhmI,KAAKkH,EAAIZ,EAAG,GAAMY,EAAIZ,EAAG,GAAMI,EAAIJ,EAAG,GAAMC,EAC5CvG,KAAK0G,EAAIJ,EAAG,GAAMY,EAAIZ,EAAG,GAAMI,EAAIJ,EAAG,GAAMC,EAC5CvG,KAAKuG,EAAID,EAAG,GAAMY,EAAIZ,EAAG,GAAMI,EAAIJ,EAAG,GAAMC,EAErCvG,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQxC,GAEP,OAASA,EAAEiL,IAAMlH,KAAKkH,GAASjL,EAAEyK,IAAM1G,KAAK0G,GAASzK,EAAEsK,IAAMvG,KAAKuG,CAEnE,GAAC,CAAA/D,IAAA,YAAA/D,MAED,SAAWsE,GAAoB,IAAbgnC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAM1B,OAJAD,KAAKkH,EAAInE,EAAOgnC,GAChB/pC,KAAK0G,EAAI3D,EAAOgnC,EAAS,GACzB/pC,KAAKuG,EAAIxD,EAAOgnC,EAAS,GAElB/pC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAAkC,IAAzBsE,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAI8pC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAM7B,OAJA8C,EAAOgnC,GAAW/pC,KAAKkH,EACvBnE,EAAOgnC,EAAS,GAAM/pC,KAAK0G,EAC3B3D,EAAOgnC,EAAS,GAAM/pC,KAAKuG,EAEpBxD,CAER,GAAC,CAAAP,IAAA,sBAAA/D,MAED,SAAqBy3J,EAAWtnJ,GAM/B,OAJA5O,KAAKkH,EAAIgvJ,EAAUC,KAAMvnJ,GACzB5O,KAAK0G,EAAIwvJ,EAAUE,KAAMxnJ,GACzB5O,KAAKuG,EAAI2vJ,EAAUyG,KAAM/tJ,GAElB5O,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,OAAOuB,KAAKo8J,QAEb,GAAC,CAAA55J,IAEE1B,OAAOrE,SAAQgC,MAAAq+E,EAAAA,MAAlB,SAAAr+E,IAAA,OAAAq+E,EAAAA,MAAA,SAAAk+L,GAAA,cAAAA,EAAA/3Q,KAAA+3Q,EAAA93Q,MAAA,OAEC,OAFD83Q,EAAA93Q,KAAA,EAEOlD,KAAKkH,EAAC,OACZ,OADY8zQ,EAAA93Q,KAAA,EACNlD,KAAK0G,EAAC,OACZ,OADYs0Q,EAAA93Q,KAAA,EACNlD,KAAKuG,EAAC,wBAAAy0Q,EAAAvsM,OAAA,GAAAhwE,EAAA,YAEZ88J,CAAA,CA3jBS,GA+jBL0tR,GAAuB,IAAI1tR,GAEjCA,GAAMsB,MAAQ5B,GAEd,IAAIkuR,GAAc,EAEZ5tQ,GAAQ,SAAAC,GAAAx/J,EAAAu/J,EAAAC,GAAA,IAAA0G,EAAAvnK,EAAA4gK,GAEb,SAAAA,IAAc,IAAA4G,EAuEO,OAvEP13K,EAAA,KAAA8wK,IAEb4G,EAAAD,EAAArlL,KAAA,OAEKilL,YAAa,EAElBvjL,OAAOC,eAAcgd,EAAA2mK,GAAQ,KAAM,CAAE1jL,MAAO0qb,OAE5ChnQ,EAAKtmE,KAAOg2C,KAEZswB,EAAKhpL,KAAO,GACZgpL,EAAKv9K,KAAO,WAEZu9K,EAAKvG,SAr3RgB,EAs3RrBuG,EAAKtG,KAAO10B,GACZg7B,EAAKrG,cAAe,EAEpBqG,EAAK3tJ,QAAU,EACf2tJ,EAAKpG,aAAc,EACnBoG,EAAKinQ,WAAY,EAEjBjnQ,EAAKnG,SA/2RgB,IAg3RrBmG,EAAKlG,SA/2RwB,IAg3R7BkG,EAAKjG,cAAgBp0B,GACrBq6B,EAAKhG,cAAgB,KACrBgG,EAAK/F,cAAgB,KACrB+F,EAAK9F,mBAAqB,KAC1B8F,EAAKknQ,WAAa,IAAI9tR,GAAO,EAAG,EAAG,GACnC4mB,EAAKmnQ,WAAa,EAElBnnQ,EAAK7F,UA12RgB,EA22RrB6F,EAAK5F,WAAY,EACjB4F,EAAK3F,YAAa,EAElB2F,EAAK1F,iBAAmB,IACxB0F,EAAKzF,YA/tRmB,IAguRxByF,EAAKxF,WAAa,EAClBwF,EAAKvF,gBAAkB,IACvBuF,EAAKtF,YAAcltB,GACnBwyB,EAAKrF,aAAentB,GACpBwyB,EAAKpF,aAAeptB,GACpBwyB,EAAKnF,cAAe,EAEpBmF,EAAKlF,eAAiB,KACtBkF,EAAKjF,kBAAmB,EACxBiF,EAAKhF,aAAc,EAEnBgF,EAAK/E,WAAa,KAElB+E,EAAK9E,YAAa,EAElB8E,EAAKnlL,UAAY,KAEjBmlL,EAAK7E,eAAgB,EACrB6E,EAAK5E,oBAAsB,EAC3B4E,EAAK3E,mBAAqB,EAE1B2E,EAAK1E,WAAY,EAEjB0E,EAAKzE,iBAAkB,EACvByE,EAAKxE,oBAAqB,EAC1BwE,EAAKonQ,iBAAkB,EAEvBpnQ,EAAKx4G,SAAU,EAEfw4G,EAAKvE,YAAa,EAElBuE,EAAKljB,SAAW,CAAC,EAEjBkjB,EAAK9oL,QAAU,EAEf8oL,EAAKtE,WAAa,EAAEsE,CAErB,CAmbC,OAnbA54K,EAAAgyK,EAAA,EAAA/4K,IAAA,YAAAutB,IAED,WAEC,OAAO/vB,KAAK69K,UAEb,EAAC5uJ,IAED,SAAexwB,GAETuB,KAAK69K,WAAa,IAAMp/K,EAAQ,GAEpCuB,KAAK3G,UAIN2G,KAAK69K,WAAap/K,CAEnB,GAAC,CAAA+D,IAAA,UAAA/D,MAED,WAAyC,GAAC,CAAA+D,IAAA,iBAAA/D,MAE1C,WAA0E,GAAC,CAAA+D,IAAA,kBAAA/D,MAE3E,WAAiD,GAAC,CAAA+D,IAAA,wBAAA/D,MAElD,WAEC,OAAOuB,KAAK89K,gBAAgBr9K,UAE7B,GAAC,CAAA+B,IAAA,YAAA/D,MAED,SAAWsO,GAEV,QAAgB3C,IAAX2C,EAEL,IAAM,IAAMvK,KAAOuK,EAAS,CAE3B,IAAMgxK,EAAWhxK,EAAQvK,GAEzB,QAAkB4H,IAAb2zK,EAAL,CAOA,IAAMC,EAAeh+K,KAAMwC,QAEL4H,IAAjB4zK,EAOAA,GAAgBA,EAAaviB,QAEjCuiB,EAAa/uJ,IAAK8uJ,GAELC,GAAgBA,EAAavU,WAAiBsU,GAAYA,EAAStU,UAEhFuU,EAAatiB,KAAMqiB,GAInB/9K,KAAMwC,GAAQu7K,EAfdhqK,QAAQk/C,KAAK,oBAADxxD,OAAuBe,EAAG,iCAAAf,OAAkCzB,KAAK4E,KAAI,KANlF,MAHCmP,QAAQk/C,KAAK,8BAADxxD,OAAiCe,EAAG,6BA4BlD,CAED,GAAC,CAAAA,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMknI,OAA0BpzJ,IAATksB,GAAsC,kBAATA,EAE/CknI,IAEJlnI,EAAO,CACNipI,SAAU,CAAC,EACX9B,OAAQ,CAAC,IAKX,IAAM/5H,EAAO,CACZ+6E,SAAU,CACTplH,QAAS,IACTuL,KAAM,WACNgrF,UAAW,oBAyNb,SAASmpF,EAAkB3vK,GAE1B,IAAM2D,EAAS,GAEf,IAAM,IAAMvK,KAAO4G,EAAQ,CAE1B,IAAMs6B,EAAOt6B,EAAO5G,UACbkhC,EAAK+6E,SACZ1xG,EAAOjQ,KAAM4mC,EAEd,CAEA,OAAO32B,CAER,CAEA,GApOA22B,EAAKm4E,KAAO77G,KAAK67G,KACjBn4E,EAAK9+B,KAAO5E,KAAK4E,KAEE,KAAd5E,KAAK7G,OAAcuqC,EAAKvqC,KAAO6G,KAAK7G,MAEpC6G,KAAKwnC,OAASxnC,KAAKwnC,MAAMi0H,UAAU/3H,EAAK8D,MAAQxnC,KAAKwnC,MAAM40H,eAExChyJ,IAAnBpK,KAAKk+K,YAA0Bx6I,EAAKw6I,UAAYl+K,KAAKk+K,gBAClC9zK,IAAnBpK,KAAKm+K,YAA0Bz6I,EAAKy6I,UAAYn+K,KAAKm+K,gBAEtC/zK,IAAfpK,KAAKo+K,QAAsB16I,EAAK06I,MAAQp+K,KAAKo+K,OAC7Cp+K,KAAKq+K,YAAcr+K,KAAKq+K,WAAW5iB,UAAU/3H,EAAK26I,WAAar+K,KAAKq+K,WAAWjiB,eACvDhyJ,IAAxBpK,KAAKs+K,iBAA+B56I,EAAK46I,eAAiBt+K,KAAKs+K,gBAC/Dt+K,KAAKu+K,UAAYv+K,KAAKu+K,SAAS9iB,UAAU/3H,EAAK66I,SAAWv+K,KAAKu+K,SAASniB,UACvEp8J,KAAKw+K,mBAAgD,IAA3Bx+K,KAAKw+K,oBAA0B96I,EAAK86I,kBAAoBx+K,KAAKw+K,mBAEvFx+K,KAAKy+K,UAAYz+K,KAAKy+K,SAAShjB,UAAU/3H,EAAK+6I,SAAWz+K,KAAKy+K,SAASriB,eAC5ChyJ,IAA3BpK,KAAK0+K,oBAAkCh7I,EAAKg7I,kBAAoB1+K,KAAK0+K,mBACrE1+K,KAAK2+K,eAAiB3+K,KAAK2+K,cAAcljB,UAAU/3H,EAAKi7I,cAAgB3+K,KAAK2+K,cAAcviB,eACxEhyJ,IAAnBpK,KAAK4+K,YAA0Bl7I,EAAKk7I,UAAY5+K,KAAK4+K,gBAClCx0K,IAAnBpK,KAAK6+K,YAA0Bn7I,EAAKm7I,UAAY7+K,KAAK6+K,gBACzBz0K,IAA5BpK,KAAK8+K,qBAAmCp7I,EAAKo7I,mBAAqB9+K,KAAK8+K,oBAEvE9+K,KAAK++K,cAAgB/+K,KAAK++K,aAAapf,YAE3Cj8H,EAAKq7I,aAAe/+K,KAAK++K,aAAavf,OAAQlpI,GAAOulF,MAIjD77G,KAAKg/K,uBAAyBh/K,KAAKg/K,sBAAsBrf,YAE7Dj8H,EAAKs7I,sBAAwBh/K,KAAKg/K,sBAAsBxf,OAAQlpI,GAAOulF,MAInE77G,KAAKi/K,oBAAsBj/K,KAAKi/K,mBAAmBtf,YAEvDj8H,EAAKu7I,mBAAqBj/K,KAAKi/K,mBAAmBzf,OAAQlpI,GAAOulF,KACjEn4E,EAAKw7I,qBAAuBl/K,KAAKk/K,qBAAqB33F,gBAI7Bn9E,IAArBpK,KAAK6gX,cAA4Bn9U,EAAKm9U,YAAc7gX,KAAK6gX,kBACjCz2W,IAAxBpK,KAAK8gX,iBAA+Bp9U,EAAKo9U,eAAiB9gX,KAAK8gX,qBAC5B12W,IAAnCpK,KAAK+gX,4BAA0Cr9U,EAAKq9U,0BAA4B/gX,KAAK+gX,2BAErF/gX,KAAKghX,gBAAkBhhX,KAAKghX,eAAerhN,YAE/Cj8H,EAAKs9U,eAAiBhhX,KAAKghX,eAAexhN,OAAQlpI,GAAOulF,MAIrD77G,KAAKihX,yBAA2BjhX,KAAKihX,wBAAwBthN,YAEjEj8H,EAAKu9U,wBAA0BjhX,KAAKihX,wBAAwBzhN,OAAQlpI,GAAOulF,WAInDzxG,IAApBpK,KAAKw+J,aAA2B96H,EAAK86H,WAAax+J,KAAKw+J,iBAC3Bp0J,IAA5BpK,KAAKwpb,qBAAmC9lZ,EAAK8lZ,mBAAqBxpb,KAAKwpb,oBAEvExpb,KAAKypb,eAAiBzpb,KAAKypb,cAAc9pR,YAE7Cj8H,EAAK+lZ,cAAgBzpb,KAAKypb,cAAcjqR,OAAQlpI,GAAOulF,MAInD77G,KAAKzD,KAAOyD,KAAKzD,IAAIojK,YAAYj8H,EAAKnnC,IAAMyD,KAAKzD,IAAIijK,OAAQlpI,GAAOulF,MACpE77G,KAAKm/K,QAAUn/K,KAAKm/K,OAAOxf,YAAYj8H,EAAKy7I,OAASn/K,KAAKm/K,OAAO3f,OAAQlpI,GAAOulF,MAChF77G,KAAKo/K,UAAYp/K,KAAKo/K,SAASzf,YAAYj8H,EAAK07I,SAAWp/K,KAAKo/K,SAAS5f,OAAQlpI,GAAOulF,MAExF77G,KAAKq/K,UAAYr/K,KAAKq/K,SAAS1f,YAEnCj8H,EAAK27I,SAAWr/K,KAAKq/K,SAAS7f,OAAQlpI,GAAOulF,KAC7Cn4E,EAAK47I,kBAAoBt/K,KAAKs/K,mBAI1Bt/K,KAAKu/K,OAASv/K,KAAKu/K,MAAM5f,YAE7Bj8H,EAAK67I,MAAQv/K,KAAKu/K,MAAM/f,OAAQlpI,GAAOulF,KACvCn4E,EAAK87I,eAAiBx/K,KAAKw/K,gBAIvBx/K,KAAKy/K,SAAWz/K,KAAKy/K,QAAQ9f,YAEjCj8H,EAAK+7I,QAAUz/K,KAAKy/K,QAAQjgB,OAAQlpI,GAAOulF,KAC3Cn4E,EAAKg8I,UAAY1/K,KAAK0/K,WAIlB1/K,KAAK2/K,WAAa3/K,KAAK2/K,UAAUhgB,YAErCj8H,EAAKi8I,UAAY3/K,KAAK2/K,UAAUngB,OAAQlpI,GAAOulF,KAC/Cn4E,EAAKk8I,cAAgB5/K,KAAK4/K,cAC1Bl8I,EAAKm8I,YAAc7/K,KAAK6/K,YAAYt4F,WAIhCvnF,KAAK8/K,iBAAmB9/K,KAAK8/K,gBAAgBngB,YAEjDj8H,EAAKo8I,gBAAkB9/K,KAAK8/K,gBAAgBtgB,OAAQlpI,GAAOulF,KAC3Dn4E,EAAKq8I,kBAAoB//K,KAAK+/K,kBAC9Br8I,EAAKs8I,iBAAmBhgL,KAAKggL,kBAIzBhgL,KAAKigL,cAAgBjgL,KAAKigL,aAAatgB,YAAYj8H,EAAKu8I,aAAejgL,KAAKigL,aAAazgB,OAAQlpI,GAAOulF,MACxG77G,KAAKkgL,cAAgBlgL,KAAKkgL,aAAavgB,YAAYj8H,EAAKw8I,aAAelgL,KAAKkgL,aAAa1gB,OAAQlpI,GAAOulF,MAExG77G,KAAKmgL,aAAengL,KAAKmgL,YAAYxgB,YAAYj8H,EAAKy8I,YAAcngL,KAAKmgL,YAAY3gB,OAAQlpI,GAAOulF,MACpG77G,KAAKogL,aAAepgL,KAAKogL,YAAYzgB,YAAYj8H,EAAK08I,YAAcpgL,KAAKogL,YAAY5gB,OAAQlpI,GAAOulF,MACpG77G,KAAKqgL,sBAAwBrgL,KAAKqgL,qBAAqB1gB,YAAYj8H,EAAK28I,qBAAuBrgL,KAAKqgL,qBAAqB7gB,OAAQlpI,GAAOulF,MACxI77G,KAAKsgL,kBAAoBtgL,KAAKsgL,iBAAiB3gB,YAAYj8H,EAAK48I,iBAAmBtgL,KAAKsgL,iBAAiB9gB,OAAQlpI,GAAOulF,MAExH77G,KAAKugL,QAAUvgL,KAAKugL,OAAO5gB,YAE/Bj8H,EAAK68I,OAASvgL,KAAKugL,OAAO/gB,OAAQlpI,GAAOulF,UAEnBzxG,IAAjBpK,KAAKwgL,UAAwB98I,EAAK88I,QAAUxgL,KAAKwgL,eAIzBp2K,IAAzBpK,KAAKygL,kBAAgC/8I,EAAK+8I,gBAAkBzgL,KAAKygL,sBAC3Cr2K,IAAtBpK,KAAK0gL,eAA6Bh9I,EAAKg9I,aAAe1gL,KAAK0gL,mBAClCt2K,IAAzBpK,KAAK2gL,kBAAgCj9I,EAAKi9I,gBAAkB3gL,KAAK2gL,iBAEjE3gL,KAAK4gL,aAAe5gL,KAAK4gL,YAAYjhB,YAEzCj8H,EAAKk9I,YAAc5gL,KAAK4gL,YAAYphB,OAAQlpI,GAAOulF,WAIzBzxG,IAAtBpK,KAAK6gL,eAA6Bn9I,EAAKm9I,aAAe7gL,KAAK6gL,cAC3D7gL,KAAK8gL,iBAAmB9gL,KAAK8gL,gBAAgBnhB,YAAYj8H,EAAKo9I,gBAAkB9gL,KAAK8gL,gBAAgBthB,OAAQlpI,GAAOulF,WACjGzxG,IAAnBpK,KAAK+gL,YAA0Br9I,EAAKq9I,UAAY/gL,KAAK+gL,WACrD/gL,KAAKghL,cAAgBhhL,KAAKghL,aAAarhB,YAAYj8H,EAAKs9I,aAAehhL,KAAKghL,aAAaxhB,OAAQlpI,GAAOulF,WAC3EzxG,IAA7BpK,KAAKihL,qBAAqCjhL,KAAKihL,sBAAwB93H,MAAWzlB,EAAKu9I,oBAAsBjhL,KAAKihL,0BACxF72K,IAA1BpK,KAAKkhL,mBAAiCx9I,EAAKw9I,iBAAmBlhL,KAAKkhL,iBAAiB9kB,eAEtEhyJ,IAAdpK,KAAKulD,OAAqB7hB,EAAK6hB,KAAOvlD,KAAKulD,MACvB,OAApBvlD,KAAKo9K,aAAsB15I,EAAK05I,WAAap9K,KAAKo9K,iBACzBhzK,IAAzBpK,KAAKmhL,kBAAgCz9I,EAAKy9I,gBAAkBnhL,KAAKmhL,iBAhqSjD,IAkqShBnhL,KAAK47K,WAA8Bl4I,EAAKk4I,SAAW57K,KAAK47K,UACxD57K,KAAK67K,OAAS10B,KAAYzjH,EAAKm4I,KAAO77K,KAAK67K,OACrB,IAAtB77K,KAAK87K,eAAwBp4I,EAAKo4I,cAAe,GAEjD97K,KAAKw0B,QAAU,IAAIkP,EAAKlP,QAAUx0B,KAAKw0B,UAClB,IAArBx0B,KAAK+7K,cAAuBr4I,EAAKq4I,aAAc,GAzpS/B,MA2pShB/7K,KAAKg8K,WAA8Bt4I,EAAKs4I,SAAWh8K,KAAKg8K,UA1pShC,MA2pSxBh8K,KAAKi8K,WAAsCv4I,EAAKu4I,SAAWj8K,KAAKi8K,UAChEj8K,KAAKk8K,gBAAkBp0B,KAAcpkH,EAAKw4I,cAAgBl8K,KAAKk8K,eACxC,OAAvBl8K,KAAKm8K,gBAAyBz4I,EAAKy4I,cAAgBn8K,KAAKm8K,eACjC,OAAvBn8K,KAAKo8K,gBAAyB14I,EAAK04I,cAAgBp8K,KAAKo8K,eAC5B,OAA5Bp8K,KAAKq8K,qBAA8B34I,EAAK24I,mBAAqBr8K,KAAKq8K,oBAClEr8K,KAAKqpb,YAAcrpb,KAAKqpb,WAAW5tR,UAAU/3H,EAAK2lZ,WAAarpb,KAAKqpb,WAAWjtR,UAC3D,IAApBp8J,KAAKspb,aAAmB5lZ,EAAK4lZ,WAAatpb,KAAKspb,YAppS/B,IAspShBtpb,KAAKs8K,YAA+B54I,EAAK44I,UAAYt8K,KAAKs8K,YACvC,IAAnBt8K,KAAKu8K,YAAsB74I,EAAK64I,UAAYv8K,KAAKu8K,YAC7B,IAApBv8K,KAAKw8K,aAAuB94I,EAAK84I,WAAax8K,KAAKw8K,aAC/B,IAApBx8K,KAAKq9K,aAAuB35I,EAAK25I,WAAar9K,KAAKq9K,YAEzB,MAA1Br9K,KAAKy8K,mBAA4B/4I,EAAK+4I,iBAAmBz8K,KAAKy8K,kBA3gS3C,MA4gSnBz8K,KAAK08K,cAAoCh5I,EAAKg5I,YAAc18K,KAAK08K,aAC7C,IAApB18K,KAAK28K,aAAmBj5I,EAAKi5I,WAAa38K,KAAK28K,YACtB,MAAzB38K,KAAK48K,kBAA2Bl5I,EAAKk5I,gBAAkB58K,KAAK48K,iBAC5D58K,KAAK68K,cAAgBltB,KAAgBjsH,EAAKm5I,YAAc78K,KAAK68K,aAC7D78K,KAAK88K,eAAiBntB,KAAgBjsH,EAAKo5I,aAAe98K,KAAK88K,cAC/D98K,KAAK+8K,eAAiBptB,KAAgBjsH,EAAKq5I,aAAe/8K,KAAK+8K,eACzC,IAAtB/8K,KAAKg9K,eAAwBt5I,EAAKs5I,aAAeh9K,KAAKg9K,mBAGpC5yK,IAAlBpK,KAAKs5J,UAA4C,IAAlBt5J,KAAKs5J,WAAiB51H,EAAK41H,SAAWt5J,KAAKs5J,WAEnD,IAAvBt5J,KAAKs9K,gBAAyB55I,EAAK45I,eAAgB,GACtB,IAA7Bt9K,KAAKu9K,sBAA4B75I,EAAK65I,oBAAsBv9K,KAAKu9K,qBACrC,IAA5Bv9K,KAAKw9K,qBAA2B95I,EAAK85I,mBAAqBx9K,KAAKw9K,yBAE5CpzK,IAAnBpK,KAAKohL,WAA8C,IAAnBphL,KAAKohL,YAAkB19I,EAAK09I,UAAYphL,KAAKohL,gBAC3Dh3K,IAAlBpK,KAAKqhL,WAAyB39I,EAAK29I,SAAWrhL,KAAKqhL,eAClCj3K,IAAjBpK,KAAKshL,UAAwB59I,EAAK49I,QAAUthL,KAAKshL,cAClCl3K,IAAfpK,KAAKq3I,QAAsB3zG,EAAK2zG,MAAQr3I,KAAKq3I,QAE1B,IAAnBr3I,KAAKy9K,YAAqB/5I,EAAK+5I,WAAY,GAE3Cz9K,KAAKuhL,UAAY,IAAI79I,EAAK69I,UAAYvhL,KAAKuhL,YACxB,IAAnBvhL,KAAKopb,YAAqB1lZ,EAAK0lZ,WAAY,IAClB,IAAzBppb,KAAK09K,kBAA2Bh6I,EAAKg6I,iBAAkB,IAC3B,IAA5B19K,KAAK29K,qBAA8Bj6I,EAAKi6I,oBAAqB,IACpC,IAAzB39K,KAAKupb,kBAA2B7lZ,EAAK6lZ,iBAAkB,IAEpC,IAAnBvpb,KAAKwhL,YAAqB99I,EAAK89I,WAAY,GAC3CxhL,KAAKyhL,mBAAqB,IAAI/9I,EAAK+9I,mBAAqBzhL,KAAKyhL,oBACnC,UAA1BzhL,KAAK0hL,mBAA+Bh+I,EAAKg+I,iBAAmB1hL,KAAK0hL,kBACtC,UAA3B1hL,KAAK2hL,oBAAgCj+I,EAAKi+I,kBAAoB3hL,KAAK2hL,oBAE9C,IAArB3hL,KAAKi+K,cAAuBv6I,EAAKu6I,aAAc,IAE9B,IAAjBj+K,KAAK2pE,UAAoBjmC,EAAKimC,SAAU,IAEpB,IAApB3pE,KAAK49K,aAAuBl6I,EAAKk6I,YAAa,IAEjC,IAAb59K,KAAK27K,MAAgBj4I,EAAKi4I,KAAM,GAEhCp9K,OAAOqD,KAAM5B,KAAKi/J,UAAWrnK,OAAS,IAAI8rC,EAAKu7H,SAAWj/J,KAAKi/J,UAoB/DzB,EAAe,CAEnB,IAAM+B,EAAWwZ,EAAkBziJ,EAAKipI,UAClC9B,EAASsb,EAAkBziJ,EAAKmnI,QAEjC8B,EAAS3nK,OAAS,IAAI8rC,EAAK67H,SAAWA,GACtC9B,EAAO7lK,OAAS,IAAI8rC,EAAK+5H,OAASA,EAExC,CAEA,OAAO/5H,CAER,GAAC,CAAAlhC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAELxB,KAAK7G,KAAOqI,EAAOrI,KAEnB6G,KAAK47K,SAAWp6K,EAAOo6K,SACvB57K,KAAK67K,KAAOr6K,EAAOq6K,KACnB77K,KAAK87K,aAAet6K,EAAOs6K,aAE3B97K,KAAKw0B,QAAUhzB,EAAOgzB,QACtBx0B,KAAK+7K,YAAcv6K,EAAOu6K,YAE1B/7K,KAAKg8K,SAAWx6K,EAAOw6K,SACvBh8K,KAAKi8K,SAAWz6K,EAAOy6K,SACvBj8K,KAAKk8K,cAAgB16K,EAAO06K,cAC5Bl8K,KAAKm8K,cAAgB36K,EAAO26K,cAC5Bn8K,KAAKo8K,cAAgB56K,EAAO46K,cAC5Bp8K,KAAKq8K,mBAAqB76K,EAAO66K,mBACjCr8K,KAAKqpb,WAAW3tR,KAAMl6J,EAAO6nb,YAC7Brpb,KAAKspb,WAAa9nb,EAAO8nb,WAEzBtpb,KAAKs8K,UAAY96K,EAAO86K,UACxBt8K,KAAKu8K,UAAY/6K,EAAO+6K,UACxBv8K,KAAKw8K,WAAah7K,EAAOg7K,WAEzBx8K,KAAKy8K,iBAAmBj7K,EAAOi7K,iBAC/Bz8K,KAAK08K,YAAcl7K,EAAOk7K,YAC1B18K,KAAK28K,WAAan7K,EAAOm7K,WACzB38K,KAAK48K,gBAAkBp7K,EAAOo7K,gBAC9B58K,KAAK68K,YAAcr7K,EAAOq7K,YAC1B78K,KAAK88K,aAAet7K,EAAOs7K,aAC3B98K,KAAK+8K,aAAev7K,EAAOu7K,aAC3B/8K,KAAKg9K,aAAex7K,EAAOw7K,aAE3B,IAAM4E,EAAYpgL,EAAOy7K,eACrB4E,EAAY,KAEhB,GAAmB,OAAdD,EAAqB,CAEzB,IAAM76K,EAAI66K,EAAUhqL,OACpBiqL,EAAY,IAAIllL,MAAOoK,GAEvB,IAAM,IAAIrK,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5BmlL,EAAWnlL,GAAMklL,EAAWllL,GAAIwE,OAIlC,CA8BA,OA5BAlB,KAAKi9K,eAAiB4E,EACtB7hL,KAAKk9K,iBAAmB17K,EAAO07K,iBAC/Bl9K,KAAKm9K,YAAc37K,EAAO27K,YAE1Bn9K,KAAKo9K,WAAa57K,EAAO47K,WAEzBp9K,KAAKq9K,WAAa77K,EAAO67K,WAEzBr9K,KAAKhD,UAAYwE,EAAOxE,UAExBgD,KAAKs9K,cAAgB97K,EAAO87K,cAC5Bt9K,KAAKu9K,oBAAsB/7K,EAAO+7K,oBAClCv9K,KAAKw9K,mBAAqBh8K,EAAOg8K,mBAEjCx9K,KAAKy9K,UAAYj8K,EAAOi8K,UAExBz9K,KAAKuhL,UAAY//K,EAAO+/K,UACxBvhL,KAAKopb,UAAY5nb,EAAO4nb,UACxBppb,KAAK09K,gBAAkBl8K,EAAOk8K,gBAC9B19K,KAAK29K,mBAAqBn8K,EAAOm8K,mBACjC39K,KAAKupb,gBAAkB/nb,EAAO+nb,gBAE9Bvpb,KAAK2pE,QAAUnoE,EAAOmoE,QAEtB3pE,KAAK49K,WAAap8K,EAAOo8K,WAEzB59K,KAAKi/J,SAAWlxG,KAAK4yC,MAAO5yC,KAAKC,UAAWxsD,EAAOy9J,WAE5Cj/J,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAECuB,KAAKu+B,cAAe,CAAE35B,KAAM,WAE7B,GAAC,CAAApC,IAAA,cAAAysB,IAED,SAAiBxwB,IAED,IAAVA,GAAiBuB,KAAK3G,SAE5B,KAACkiL,CAAA,CA9fY,CAASjqB,IAkgBjB0wB,GAAiB,SAAAC,GAAAjmK,EAAAgmK,EAAAC,GAAA,IAAAqB,EAAA3oK,EAAAqnK,GAEtB,SAAAA,EAAaxJ,GAAa,IAAAqN,EAkCI,OAlCJp7K,EAAA,KAAAu3K,IAEzB6D,EAAAvC,EAAAzmL,KAAA,OAEKwlL,qBAAsB,EAE3BwD,EAAKjhL,KAAO,oBAEZihL,EAAKr+I,MAAQ,IAAI+zH,GAAO,UAExBsqB,EAAKtpL,IAAM,KAEXspL,EAAKxG,SAAW,KAChBwG,EAAKvG,kBAAoB,EAEzBuG,EAAKtG,MAAQ,KACbsG,EAAKrG,eAAiB,EAEtBqG,EAAKzF,YAAc,KAEnByF,EAAKzG,SAAW,KAEhByG,EAAKtF,OAAS,KACdsF,EAAKrF,QAAUl3B,GACfu8B,EAAKnF,aAAe,EACpBmF,EAAKlF,gBAAkB,IAEvBkF,EAAKrE,WAAY,EACjBqE,EAAKpE,mBAAqB,EAC1BoE,EAAKnE,iBAAmB,QACxBmE,EAAKlE,kBAAoB,QAEzBkE,EAAKlK,KAAM,EAEXkK,EAAKzD,UAAW5J,GAAaqN,CAE9B,CAkCC,OAlCAt8K,EAAAy4K,EAAA,EAAAx/K,IAAA,OAAA/D,MAED,SAAM+C,GA8BL,OA5BA0lI,GAAA5rH,EAAA0mK,EAAAplL,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OAExBxnC,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKq/K,SAAW79K,EAAO69K,SACvBr/K,KAAKs/K,kBAAoB99K,EAAO89K,kBAEhCt/K,KAAKu/K,MAAQ/9K,EAAO+9K,MACpBv/K,KAAKw/K,eAAiBh+K,EAAOg+K,eAE7Bx/K,KAAKogL,YAAc5+K,EAAO4+K,YAE1BpgL,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAKugL,OAAS/+K,EAAO++K,OACrBvgL,KAAKwgL,QAAUh/K,EAAOg/K,QACtBxgL,KAAK0gL,aAAel/K,EAAOk/K,aAC3B1gL,KAAK2gL,gBAAkBn/K,EAAOm/K,gBAE9B3gL,KAAKwhL,UAAYhgL,EAAOggL,UACxBxhL,KAAKyhL,mBAAqBjgL,EAAOigL,mBACjCzhL,KAAK0hL,iBAAmBlgL,EAAOkgL,iBAC/B1hL,KAAK2hL,kBAAoBngL,EAAOmgL,kBAEhC3hL,KAAK27K,IAAMn6K,EAAOm6K,IAEX37K,IAER,KAACgiL,CAAA,CAxEqB,CAASzG,IAgPhC,IAKM+G,GAA0B,IAAIxb,GAC9Byb,GAA2B,IAAIptB,GAE/BqtB,GAAe,WAEpB,SAAAA,EAAaz/K,EAAO0/K,GAA+B,IAArB7lB,EAAU38J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAEvC,GAF+CwK,EAAA,KAAA+3K,GAE1C7lL,MAAM0E,QAAS0B,GAEnB,MAAM,IAAIyH,UAAW,yDAItBxK,KAAKmjL,mBAAoB,EAEzBnjL,KAAK7G,KAAO,GAEZ6G,KAAK+C,MAAQA,EACb/C,KAAKyiL,SAAWA,EAChBziL,KAAK29E,WAAkBvzE,IAAVrH,EAAsBA,EAAMnL,OAAS6qL,EAAW,EAC7DziL,KAAK48J,WAAaA,EAElB58J,KAAK0iL,MAAQhyB,GACb1wJ,KAAK0pb,aAAe,CAAE3/Y,OAAQ,EAAG4zC,OAAS,GAC1C39E,KAAK2pb,aAAe,GACpB3pb,KAAK4pb,QAAUp+R,GAEfxrJ,KAAK3G,QAAU,CAEhB,CA8VC,OA9VAkQ,EAAAi5K,EAAA,EAAAhgL,IAAA,mBAAA/D,MAED,WAAoB,GAAC,CAAA+D,IAAA,cAAAysB,IAErB,SAAiBxwB,IAED,IAAVA,GAAiBuB,KAAK3G,SAE5B,GAAC,CAAAmJ,IAAA,cAAAutB,IAED,WAGC,OADAm1Z,GAAU,iHACHllb,KAAK0pb,YAEb,GAAC,CAAAlnb,IAAA,WAAA/D,MAED,SAAUA,GAIT,OAFAuB,KAAK0iL,MAAQjkL,EAENuB,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBqsC,EAAO6yC,GAEtB39E,KAAK2pb,aAAa7sb,KAAM,CAAEguC,MAAAA,EAAO6yC,MAAAA,GAElC,GAAC,CAAAn7E,IAAA,oBAAA/D,MAED,WAECuB,KAAK2pb,aAAa/xb,OAAS,CAE5B,GAAC,CAAA4K,IAAA,OAAA/D,MAED,SAAM+C,GAWL,OATAxB,KAAK7G,KAAOqI,EAAOrI,KACnB6G,KAAK+C,MAAQ,IAAIvB,EAAOuB,MAAMoX,YAAa3Y,EAAOuB,OAClD/C,KAAKyiL,SAAWjhL,EAAOihL,SACvBziL,KAAK29E,MAAQn8E,EAAOm8E,MACpB39E,KAAK48J,WAAap7J,EAAOo7J,WAEzB58J,KAAK0iL,MAAQlhL,EAAOkhL,MACpB1iL,KAAK4pb,QAAUpob,EAAOoob,QAEf5pb,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQmkL,EAAQ1sB,EAAW2sB,GAE1BD,GAAU5iL,KAAKyiL,SACfI,GAAU3sB,EAAUusB,SAEpB,IAAM,IAAI/lL,EAAI,EAAGmK,EAAI7G,KAAKyiL,SAAU/lL,EAAImK,EAAGnK,IAE1CsD,KAAK+C,MAAO6/K,EAASlmL,GAAMw5J,EAAUnzJ,MAAO8/K,EAASnmL,GAItD,OAAOsD,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsE,GAIV,OAFA/C,KAAK+C,MAAMksB,IAAKlsB,GAET/C,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcqI,GAEb,GAAuB,IAAlB9G,KAAKyiL,SAET,IAAM,IAAI/lL,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvC6lL,GAAWxX,oBAAqB/qK,KAAMtD,GACtC6lL,GAAW7iB,aAAc54J,GAEzB9G,KAAK+iL,MAAOrmL,EAAG6lL,GAAWrmL,EAAGqmL,GAAWl7K,QAInC,GAAuB,IAAlBrH,KAAKyiL,SAEhB,IAAM,IAAI/lL,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvC4lL,GAAUvX,oBAAqB/qK,KAAMtD,GACrC4lL,GAAU5iB,aAAc54J,GAExB9G,KAAKgjL,OAAQtmL,EAAG4lL,GAAUpmL,EAAGomL,GAAUj7K,EAAGi7K,GAAUh7K,GAMtD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvC4lL,GAAUvX,oBAAqB/qK,KAAMtD,GAErC4lL,GAAUza,aAAc/gK,GAExB9G,KAAKgjL,OAAQtmL,EAAG4lL,GAAUpmL,EAAGomL,GAAUj7K,EAAGi7K,GAAUh7K,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBqI,GAElB,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvC4lL,GAAUvX,oBAAqB/qK,KAAMtD,GAErC4lL,GAAUW,kBAAmBn8K,GAE7B9G,KAAKgjL,OAAQtmL,EAAG4lL,GAAUpmL,EAAGomL,GAAUj7K,EAAGi7K,GAAUh7K,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBqI,GAEnB,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvC4lL,GAAUvX,oBAAqB/qK,KAAMtD,GAErC4lL,GAAU5R,mBAAoB5pK,GAE9B9G,KAAKgjL,OAAQtmL,EAAG4lL,GAAUpmL,EAAGomL,GAAUj7K,EAAGi7K,GAAUh7K,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAKA,GAAoB,IAAbsrC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAKpB,OAFAD,KAAK+C,MAAMksB,IAAKxwB,EAAOsrC,GAEhB/pC,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,EAAOvJ,GAEpB,IAAI5G,EAAQuB,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAWp9K,GAIhD,OAFKrF,KAAK48J,aAAan+J,EAAQy2J,GAAaz2J,EAAOuB,KAAK+C,QAEjDtE,CAER,GAAC,CAAA+D,IAAA,eAAA/D,MAED,SAAcmQ,EAAOvJ,EAAW5G,GAM/B,OAJKuB,KAAK48J,aAAan+J,EAAQoiH,GAAWpiH,EAAOuB,KAAK+C,QAEtD/C,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAWp9K,GAAc5G,EAE3CuB,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAI1S,EAAI8D,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,UAIjC,OAFKziL,KAAK48J,aAAa1gK,EAAIg5J,GAAah5J,EAAG8D,KAAK+C,QAEzC7G,CAER,GAAC,CAAAsG,IAAA,OAAA/D,MAED,SAAMmQ,EAAO1S,GAMZ,OAJK8D,KAAK48J,aAAa1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,QAE9C/C,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,UAAavmL,EAE/B8D,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAIvH,EAAIrH,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,GAI5C,OAFKziL,KAAK48J,aAAav1J,EAAI6tJ,GAAa7tJ,EAAGrH,KAAK+C,QAEzCsE,CAER,GAAC,CAAA7E,IAAA,OAAA/D,MAED,SAAMmQ,EAAOvH,GAMZ,OAJKrH,KAAK48J,aAAav1J,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,QAE9C/C,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,GAAMp7K,EAEnCrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAItH,EAAItH,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,GAI5C,OAFKziL,KAAK48J,aAAat1J,EAAI4tJ,GAAa5tJ,EAAGtH,KAAK+C,QAEzCuE,CAER,GAAC,CAAA9E,IAAA,OAAA/D,MAED,SAAMmQ,EAAOtH,GAMZ,OAJKtH,KAAK48J,aAAat1J,EAAIu5G,GAAWv5G,EAAGtH,KAAK+C,QAE9C/C,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,GAAMn7K,EAEnCtH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAIxH,EAAIpH,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,GAI5C,OAFKziL,KAAK48J,aAAax1J,EAAI8tJ,GAAa9tJ,EAAGpH,KAAK+C,QAEzCqE,CAER,GAAC,CAAA5E,IAAA,OAAA/D,MAED,SAAMmQ,EAAOxH,GAMZ,OAJKpH,KAAK48J,aAAax1J,EAAIy5G,GAAWz5G,EAAGpH,KAAK+C,QAE9C/C,KAAK+C,MAAO6L,EAAQ5O,KAAKyiL,SAAW,GAAMr7K,EAEnCpH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOmQ,EAAO1S,EAAGmL,GAchB,OAZAuH,GAAS5O,KAAKyiL,SAETziL,KAAK48J,aAET1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,OACvBsE,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,QAIxB/C,KAAK+C,MAAO6L,EAAQ,GAAM1S,EAC1B8D,KAAK+C,MAAO6L,EAAQ,GAAMvH,EAEnBrH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQmQ,EAAO1S,EAAGmL,EAAGC,GAgBpB,OAdAsH,GAAS5O,KAAKyiL,SAETziL,KAAK48J,aAET1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,OACvBsE,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,OACvBuE,EAAIu5G,GAAWv5G,EAAGtH,KAAK+C,QAIxB/C,KAAK+C,MAAO6L,EAAQ,GAAM1S,EAC1B8D,KAAK+C,MAAO6L,EAAQ,GAAMvH,EAC1BrH,KAAK+C,MAAO6L,EAAQ,GAAMtH,EAEnBtH,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASmQ,EAAO1S,EAAGmL,EAAGC,EAAGF,GAkBxB,OAhBAwH,GAAS5O,KAAKyiL,SAETziL,KAAK48J,aAET1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,OACvBsE,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,OACvBuE,EAAIu5G,GAAWv5G,EAAGtH,KAAK+C,OACvBqE,EAAIy5G,GAAWz5G,EAAGpH,KAAK+C,QAIxB/C,KAAK+C,MAAO6L,EAAQ,GAAM1S,EAC1B8D,KAAK+C,MAAO6L,EAAQ,GAAMvH,EAC1BrH,KAAK+C,MAAO6L,EAAQ,GAAMtH,EAC1BtH,KAAK+C,MAAO6L,EAAQ,GAAMxH,EAEnBpH,IAER,GAAC,CAAAwC,IAAA,WAAA/D,MAED,SAAU05C,GAIT,OAFAn4C,KAAKkjL,iBAAmB/qI,EAEjBn4C,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,YAAana,KAAK+C,MAAO/C,KAAKyiL,UAAW/mB,KAAM17J,KAEhE,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAO,CACZ++I,SAAUziL,KAAKyiL,SACf79K,KAAM5E,KAAK+C,MAAMoX,YAAYhhB,KAC7B4J,MAAOpG,MAAM0lB,KAAMriB,KAAK+C,OACxB65J,WAAY58J,KAAK48J,YAMlB,MAHmB,KAAd58J,KAAK7G,OAAcuqC,EAAKvqC,KAAO6G,KAAK7G,MACpC6G,KAAK0iL,QAAUhyB,KAAkBhtH,EAAKg/I,MAAQ1iL,KAAK0iL,OAEjDh/I,CAER,KAAC8+I,CAAA,CAxXmB,GAsafwB,GAAqB,SAAAC,GAAAjoK,EAAAgoK,EAAAC,GAAA,IAAAI,EAAA1pK,EAAAqpK,GAE1B,SAAAA,EAAajhL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAAu5K,GAAAK,EAAAxnL,KAAA,KAEnC,IAAIi4J,YAAa/xJ,GAAS0/K,EAAU7lB,EAE5C,CAAC,OAAArzJ,EAAAy6K,EAAA,CANyB,CAASxB,IAoB9B8B,GAAqB,SAAAC,GAAAvoK,EAAAsoK,EAAAC,GAAA,IAAAI,EAAAhqK,EAAA2pK,GAE1B,SAAAA,EAAavhL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAA65K,GAAAK,EAAA9nL,KAAA,KAEnC,IAAI0qG,YAAaxkG,GAAS0/K,EAAU7lB,EAE5C,CAAC,OAAArzJ,EAAA+6K,EAAA,CANyB,CAAS9B,IAmK9BqC,GAAsB,SAAAC,GAAA9oK,EAAA6oK,EAAAC,GAAA,IAAAI,EAAAvqK,EAAAkqK,GAE3B,SAAAA,EAAa9hL,EAAO0/K,EAAU7lB,GAAa,OAAAnyJ,EAAA,KAAAo6K,GAAAK,EAAAroL,KAAA,KAEnC,IAAIg4J,aAAc9xJ,GAAS0/K,EAAU7lB,EAE7C,CAAC,OAAArzJ,EAAAs7K,EAAA,CAN0B,CAASrC,IAoBjCqnQ,GAAQ,EAENzkQ,GAAoB,IAAIzU,GACxB0U,GAAqB,IAAI7P,GACzB8P,GAAwB,IAAIxe,GAC5BgG,GAAuB,IAAIpD,GAC3B8b,GAAiC,IAAI9b,GACrC+b,GAA0B,IAAI3e,GAE9B4e,GAAc,SAAAC,GAAA3pK,EAAA0pK,EAAAC,GAAA,IAAAyF,EAAAzwK,EAAA+qK,GAEnB,SAAAA,IAAc,IAAAkH,EA0BM,OA1BNniL,EAAA,KAAAi7K,IAEbkH,EAAAxB,EAAAvuL,KAAA,OAEKosL,kBAAmB,EAExB1qL,OAAOC,eAAcgd,EAAAoxK,GAAQ,KAAM,CAAEnuL,MAAOorb,OAE5Cj9P,EAAK/wE,KAAOg2C,KAEZ+6B,EAAKzzL,KAAO,GACZyzL,EAAKhoL,KAAO,iBAEZgoL,EAAKh+K,MAAQ,KACbg+K,EAAK16G,WAAa,CAAC,EAEnB06G,EAAK9G,gBAAkB,CAAC,EACxB8G,EAAK7G,sBAAuB,EAE5B6G,EAAK5G,OAAS,GAEd4G,EAAK5hB,YAAc,KACnB4hB,EAAK3G,eAAiB,KAEtB2G,EAAK1G,UAAY,CAAEp7I,MAAO,EAAG6yC,MAAOx0B,KAEpCyjI,EAAK3tB,SAAW,CAAC,EAAE2tB,CAEpB,CA+/BC,OA//BArjL,EAAAm8K,EAAA,EAAAljL,IAAA,WAAA/D,MAED,WAEC,OAAOuB,KAAK4O,KAEb,GAAC,CAAApM,IAAA,WAAA/D,MAED,SAAUmQ,GAYT,OAVKjS,MAAM0E,QAASuN,GAEnB5O,KAAK4O,MAAQ,IAAMgrJ,GAAkBhrJ,GAAU01K,GAAwBN,IAAyBp1K,EAAO,GAIvG5O,KAAK4O,MAAQA,EAIP5O,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAActF,GAEb,OAAO6G,KAAKkyE,WAAY/4E,EAEzB,GAAC,CAAAqJ,IAAA,eAAA/D,MAED,SAActF,EAAM+8J,GAInB,OAFAl2J,KAAKkyE,WAAY/4E,GAAS+8J,EAEnBl2J,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBtF,GAIhB,cAFO6G,KAAKkyE,WAAY/4E,GAEjB6G,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAActF,GAEb,YAAmCiR,IAA5BpK,KAAKkyE,WAAY/4E,EAEzB,GAAC,CAAAqJ,IAAA,WAAA/D,MAED,SAAUqsC,EAAO6yC,GAA2B,IAApBwoG,EAAalmL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEvCD,KAAKgmL,OAAOlpL,KAAM,CAEjBguC,MAAOA,EACP6yC,MAAOA,EACPwoG,cAAeA,GAIjB,GAAC,CAAA3jL,IAAA,cAAA/D,MAED,WAECuB,KAAKgmL,OAAS,EAEf,GAAC,CAAAxjL,IAAA,eAAA/D,MAED,SAAcqsC,EAAO6yC,GAEpB39E,KAAKkmL,UAAUp7I,MAAQA,EACvB9qC,KAAKkmL,UAAUvoG,MAAQA,CAExB,GAAC,CAAAn7E,IAAA,eAAA/D,MAED,SAAci7J,GAEb,IAAMn6F,EAAWv/D,KAAKkyE,WAAW3S,cAEfn1D,IAAbm1D,IAEJA,EAASsoG,aAAcnO,GAEvBn6F,EAAS+/F,aAAc,GAIxB,IAAMyJ,EAAS/oK,KAAKkyE,WAAW62F,OAE/B,QAAgB3+J,IAAX2+J,EAAuB,CAE3B,IAAM8M,GAAe,IAAIrf,IAAU4vB,gBAAiB1sB,GAEpDqP,EAAOka,kBAAmBpN,GAE1B9M,EAAOzJ,aAAc,CAEtB,CAEA,IAAM+mB,EAAUrmL,KAAKkyE,WAAWm0G,QAsBhC,YApBiBj8K,IAAZi8K,IAEJA,EAAQ3V,mBAAoBhX,GAE5B2sB,EAAQ/mB,aAAc,GAIG,OAArBt/J,KAAKgrK,aAEThrK,KAAKirK,qBAIuB,OAAxBjrK,KAAKimL,gBAETjmL,KAAKsmL,wBAICtmL,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBwI,GAMhB,OAJAm+K,GAAI/Q,2BAA4BptK,GAEhCjH,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASm3J,GAQR,OAJAwvB,GAAImB,cAAe3wB,GAEnB51J,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASm3J,GAQR,OAJAwvB,GAAIoB,cAAe5wB,GAEnB51J,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASm3J,GAQR,OAJAwvB,GAAIqB,cAAe7wB,GAEnB51J,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWvC,EAAGmL,EAAGC,GAQhB,OAJA89K,GAAIsB,gBAAiBxqL,EAAGmL,EAAGC,GAE3BtH,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOvC,EAAGmL,EAAGC,GAQZ,OAJA89K,GAAIuB,UAAWzqL,EAAGmL,EAAGC,GAErBtH,KAAK6nK,aAAcud,IAEZplL,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQksK,GAQP,OANA0a,GAAKtO,OAAQpM,GAEb0a,GAAKhP,eAELr2K,KAAK6nK,aAAcwd,GAAK3rB,QAEjB15J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAQC,OANAuB,KAAKirK,qBAELjrK,KAAKgrK,YAAYS,UAAW6Z,IAAUsB,SAEtC5mL,KAAK6mL,UAAWvB,GAAQppL,EAAGopL,GAAQj+K,EAAGi+K,GAAQh+K,GAEvCtH,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAewrK,GAId,IAFA,IAAM1qG,EAAW,GAEP7iE,EAAI,EAAGmK,EAAIojK,EAAOryK,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAMguK,EAAQT,EAAQvtK,GACtB6iE,EAASziE,KAAM4tK,EAAMxuK,EAAGwuK,EAAMrjK,EAAGqjK,EAAMpjK,GAAK,EAE7C,CAIA,OAFAtH,KAAK8S,aAAc,WAAY,IAAI+xK,GAAwBtlH,EAAU,IAE9Dv/D,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,WAE2B,OAArBuB,KAAKgrK,cAEThrK,KAAKgrK,YAAc,IAAItB,IAIxB,IAAMnqG,EAAWv/D,KAAKkyE,WAAW3S,SAC3BunH,EAA0B9mL,KAAK8lL,gBAAgBvmH,SAErD,GAAKA,GAAYA,EAASwnH,oBASzB,OAPAhzK,QAAQwN,MAAO,kJAAmJvhB,WAElKA,KAAKgrK,YAAY/7I,IAChB,IAAI63I,IAAW39G,KAAYA,KAAYA,KACvC,IAAI29G,GAAW39G,IAAYA,IAAYA,MAOzC,QAAkB/+C,IAAbm1D,GAMJ,GAJAv/D,KAAKgrK,YAAYgc,uBAAwBznH,GAIpCunH,EAEJ,IAAM,IAAIpqL,EAAI,EAAGowD,EAAKg6H,EAAwBlvL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEpE,IAAMuqL,EAAiBH,EAAyBpqL,GAChDowK,GAAOka,uBAAwBC,GAE1BjnL,KAAK+lL,sBAETN,GAAUpwB,WAAYr1J,KAAKgrK,YAAY9/H,IAAK4hI,GAAO5hI,KACnDlrC,KAAKgrK,YAAYb,cAAesb,IAEhCA,GAAUpwB,WAAYr1J,KAAKgrK,YAAY9tK,IAAK4vK,GAAO5vK,KACnD8C,KAAKgrK,YAAYb,cAAesb,MAIhCzlL,KAAKgrK,YAAYb,cAAe2C,GAAO5hI,KACvClrC,KAAKgrK,YAAYb,cAAe2C,GAAO5vK,KAIzC,OAMD8C,KAAKgrK,YAAYd,aAIb5yJ,MAAOtX,KAAKgrK,YAAY9/H,IAAIhvC,IAAOob,MAAOtX,KAAKgrK,YAAY9/H,IAAI7jC,IAAOiQ,MAAOtX,KAAKgrK,YAAY9/H,IAAI5jC,KAEtGyM,QAAQwN,MAAO,sIAAuIvhB,KAIxJ,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,WAE8B,OAAxBuB,KAAKimL,iBAETjmL,KAAKimL,eAAiB,IAAI/Y,IAI3B,IAAM3tG,EAAWv/D,KAAKkyE,WAAW3S,SAC3BunH,EAA0B9mL,KAAK8lL,gBAAgBvmH,SAErD,GAAKA,GAAYA,EAASwnH,oBAMzB,OAJAhzK,QAAQwN,MAAO,wJAAyJvhB,WAExKA,KAAKimL,eAAeh3J,IAAK,IAAI63I,GAAW39G,KAMzC,GAAKoW,EAAW,CAIf,IAAM82F,EAASr2J,KAAKimL,eAAe5vB,OAMnC,GAJAyW,GAAOka,uBAAwBznH,GAI1BunH,EAEJ,IAAM,IAAIpqL,EAAI,EAAGowD,EAAKg6H,EAAwBlvL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEpE,IAAMuqL,EAAiBH,EAAyBpqL,GAChD8oL,GAAiBwB,uBAAwBC,GAEpCjnL,KAAK+lL,sBAETN,GAAUpwB,WAAYyX,GAAO5hI,IAAKs6I,GAAiBt6I,KACnD4hI,GAAO3C,cAAesb,IAEtBA,GAAUpwB,WAAYyX,GAAO5vK,IAAKsoL,GAAiBtoL,KACnD4vK,GAAO3C,cAAesb,MAItB3Y,GAAO3C,cAAeqb,GAAiBt6I,KACvC4hI,GAAO3C,cAAeqb,GAAiBtoL,KAIzC,CAID4vK,GAAOrB,UAAWpV,GAOlB,IAFA,IAAI+W,EAAc,EAER1wK,EAAI,EAAGowD,EAAKyS,EAASoe,MAAOjhF,EAAIowD,EAAIpwD,IAE7C+oL,GAAU1a,oBAAqBxrG,EAAU7iE,GAEzC0wK,EAAcnwK,KAAKC,IAAKkwK,EAAa/W,EAAOP,kBAAmB2vB,KAMhE,GAAKqB,EAEJ,IAAM,IAAIpqL,EAAI,EAAGowD,EAAKg6H,EAAwBlvL,OAAQ8E,EAAIowD,EAAIpwD,IAK7D,IAHA,IAAMuqL,EAAiBH,EAAyBpqL,GAC1CqpL,EAAuB/lL,KAAK+lL,qBAExBl2K,EAAI,EAAGq3K,EAAKD,EAAetpG,MAAO9tE,EAAIq3K,EAAIr3K,IAEnD41K,GAAU1a,oBAAqBkc,EAAgBp3K,GAE1Ck2K,IAEJT,GAAQva,oBAAqBxrG,EAAU1vD,GACvC41K,GAAUr5J,IAAKk5J,KAIhBlY,EAAcnwK,KAAKC,IAAKkwK,EAAa/W,EAAOP,kBAAmB2vB,KAQlEzlL,KAAKimL,eAAe/c,OAASjsK,KAAK04J,KAAMyX,GAEnC91J,MAAOtX,KAAKimL,eAAe/c,SAE/Bn1J,QAAQwN,MAAO,+HAAgIvhB,KAIjJ,CAED,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,WAEC,IAAMmQ,EAAQ5O,KAAK4O,MACbsjE,EAAalyE,KAAKkyE,WAKxB,GAAe,OAAVtjE,QACqBxE,IAAxB8nE,EAAW3S,eACWn1D,IAAtB8nE,EAAW62F,aACO3+J,IAAlB8nE,EAAWutF,GAHb,CAUA,IAAM0nB,EAAUv4K,EAAM7L,MAChBqkL,EAAYl1G,EAAW3S,SAASx8D,MAChCskL,EAAUn1G,EAAW62F,OAAOhmK,MAC5BukL,EAAMp1G,EAAWutF,GAAG18J,MAEpBwkL,EAAYH,EAAUxvL,OAAS,GAEG,IAAnCoI,KAAK8pG,aAAc,YAEvB9pG,KAAK8S,aAAc,UAAW,IAAI0vK,GAAiB,IAAI3tB,aAAc,EAAI0yB,GAAa,IAQvF,IAJA,IAAMC,EAAWxnL,KAAK4pE,aAAc,WAAY7mE,MAE1C0kL,EAAO,GAAIC,EAAO,GAEdhrL,EAAI,EAAGA,EAAI6qL,EAAW7qL,IAE/B+qL,EAAM/qL,GAAM,IAAIoqK,GAChB4gB,EAAMhrL,GAAM,IAAIoqK,GAIjB,IAAM6gB,EAAK,IAAI7gB,GACd8gB,EAAK,IAAI9gB,GACT+gB,EAAK,IAAI/gB,GAETghB,EAAM,IAAI3yB,GACV4yB,EAAM,IAAI5yB,GACV6yB,EAAM,IAAI7yB,GAEV8yB,EAAO,IAAInhB,GACXohB,EAAO,IAAIphB,GAqCRkf,EAAShmL,KAAKgmL,OAEK,IAAlBA,EAAOpuL,SAEXouL,EAAS,CAAE,CACVl7I,MAAO,EACP6yC,MAAOwpG,EAAQvvL,UAKjB,IAAM,IAAI8E,EAAI,EAAGowD,EAAKk5H,EAAOpuL,OAAQ8E,EAAIowD,IAAOpwD,EAO/C,IALA,IAAM+qG,EAAQu+E,EAAQtpL,GAEhBouC,EAAQ28D,EAAM38D,MAGVj7B,EAAIi7B,EAAOo8I,EAAKp8I,EAFZ28D,EAAM9pB,MAEqB9tE,EAAIq3K,EAAIr3K,GAAK,EAErDs4K,EACChB,EAASt3K,EAAI,GACbs3K,EAASt3K,EAAI,GACbs3K,EAASt3K,EAAI,IAmChB,IA5BA,IAAMipJ,EAAM,IAAIgO,GAAWshB,EAAO,IAAIthB,GAChC//J,EAAI,IAAI+/J,GAAWuhB,EAAK,IAAIvhB,GA2BxBpqK,EAAI,EAAGowD,EAAKk5H,EAAOpuL,OAAQ8E,EAAIowD,IAAOpwD,EAO/C,IALA,IAAM+qG,EAAQu+E,EAAQtpL,GAEhBouC,EAAQ28D,EAAM38D,MAGVj7B,EAAIi7B,EAAOo8I,EAAKp8I,EAFZ28D,EAAM9pB,MAEqB9tE,EAAIq3K,EAAIr3K,GAAK,EAErDy4K,EAAcnB,EAASt3K,EAAI,IAC3By4K,EAAcnB,EAASt3K,EAAI,IAC3By4K,EAAcnB,EAASt3K,EAAI,GA7I7B,MAHCkE,QAAQwN,MAAO,gHAwChB,SAAS4mK,EAAgBnsL,EAAGuK,EAAGtK,GAE9B0rL,EAAGhuB,UAAWytB,EAAe,EAAJprL,GACzB4rL,EAAGjuB,UAAWytB,EAAe,EAAJ7gL,GACzBshL,EAAGluB,UAAWytB,EAAe,EAAJnrL,GAEzB6rL,EAAInuB,UAAW2tB,EAAS,EAAJtrL,GACpB+rL,EAAIpuB,UAAW2tB,EAAS,EAAJ/gL,GACpByhL,EAAIruB,UAAW2tB,EAAS,EAAJrrL,GAEpB2rL,EAAG9e,IAAK6e,GACRE,EAAG/e,IAAK6e,GAERI,EAAIjf,IAAKgf,GACTE,EAAIlf,IAAKgf,GAET,IAAM5gL,EAAI,GAAQ6gL,EAAI7rL,EAAI8rL,EAAI3gL,EAAI2gL,EAAI9rL,EAAI6rL,EAAI1gL,GAIvCkhL,SAAUrhL,KAEjB+gL,EAAKvsB,KAAMksB,GAAKryB,eAAgByyB,EAAI3gL,GAAIqzK,gBAAiBmN,GAAME,EAAI1gL,GAAIkuJ,eAAgBruJ,GACvFghL,EAAKxsB,KAAMmsB,GAAKtyB,eAAgBwyB,EAAI7rL,GAAIw+K,gBAAiBkN,GAAMI,EAAI9rL,GAAIq5J,eAAgBruJ,GAEvFugL,EAAMzrL,GAAIowB,IAAK67J,GACfR,EAAMlhL,GAAI6lB,IAAK67J,GACfR,EAAMxrL,GAAImwB,IAAK67J,GAEfP,EAAM1rL,GAAIowB,IAAK87J,GACfR,EAAMnhL,GAAI6lB,IAAK87J,GACfR,EAAMzrL,GAAImwB,IAAK87J,GAEhB,CAmCA,SAASI,EAAcnhL,GAEtBJ,EAAE4yJ,UAAW0tB,EAAa,EAAJlgL,GACtBkhL,EAAG3sB,KAAM30J,GAET,IAAMzP,EAAImwL,EAAMtgL,GAIhB2xJ,EAAI4C,KAAMpkK,GACVwhK,EAAIgQ,IAAK/hK,EAAEwuJ,eAAgBxuJ,EAAEk9J,IAAK3sK,KAAQupH,YAI1CunE,EAAKlgB,aAAcmgB,EAAI/wL,GACvB,IACM8P,EADOghL,EAAKnkB,IAAKyjB,EAAMvgL,IACV,GAAU,EAAM,EAEnCqgL,EAAc,EAAJrgL,GAAU2xJ,EAAI58J,EACxBsrL,EAAc,EAAJrgL,EAAQ,GAAM2xJ,EAAIzxJ,EAC5BmgL,EAAc,EAAJrgL,EAAQ,GAAM2xJ,EAAIxxJ,EAC5BkgL,EAAc,EAAJrgL,EAAQ,GAAMC,CAEzB,CAmBD,GAAC,CAAA5E,IAAA,uBAAA/D,MAED,WAEC,IAAMmQ,EAAQ5O,KAAK4O,MACb45K,EAAoBxoL,KAAK4pE,aAAc,YAE7C,QAA2Bx/D,IAAtBo+K,EAAkC,CAEtC,IAAIC,EAAkBzoL,KAAK4pE,aAAc,UAEzC,QAAyBx/D,IAApBq+K,EAEJA,EAAkB,IAAIjG,GAAiB,IAAI3tB,aAAwC,EAA1B2zB,EAAkB7qG,OAAa,GACxF39E,KAAK8S,aAAc,SAAU21K,QAM7B,IAAM,IAAI/rL,EAAI,EAAGowD,EAAK27H,EAAgB9qG,MAAOjhF,EAAIowD,EAAIpwD,IAEpD+rL,EAAgBzF,OAAQtmL,EAAG,EAAG,EAAG,GAMnC,IAAMgsL,EAAK,IAAI5hB,GAAW6hB,EAAK,IAAI7hB,GAAW8hB,EAAK,IAAI9hB,GACjD+hB,EAAK,IAAI/hB,GAAWgiB,EAAK,IAAIhiB,GAAWiiB,EAAK,IAAIjiB,GACjD90J,EAAK,IAAI80J,GAAW71I,EAAK,IAAI61I,GAInC,GAAKl4J,EAEJ,IAAM,IAAIlS,EAAI,EAAGowD,EAAKl+C,EAAM+uE,MAAOjhF,EAAIowD,EAAIpwD,GAAK,EAAI,CAEnD,IAAMirL,EAAK/4K,EAAMunJ,KAAMz5J,EAAI,GACrBkrL,EAAKh5K,EAAMunJ,KAAMz5J,EAAI,GACrBmrL,EAAKj5K,EAAMunJ,KAAMz5J,EAAI,GAE3BgsL,EAAG3d,oBAAqByd,EAAmBb,GAC3CgB,EAAG5d,oBAAqByd,EAAmBZ,GAC3CgB,EAAG7d,oBAAqByd,EAAmBX,GAE3C71K,EAAGsjJ,WAAYszB,EAAID,GACnB13J,EAAGqkI,WAAYozB,EAAIC,GACnB32K,EAAGw+J,MAAOv/I,GAEV43J,EAAG9d,oBAAqB0d,EAAiBd,GACzCmB,EAAG/d,oBAAqB0d,EAAiBb,GACzCmB,EAAGhe,oBAAqB0d,EAAiBZ,GAEzCgB,EAAGz8J,IAAKpa,GACR82K,EAAG18J,IAAKpa,GACR+2K,EAAG38J,IAAKpa,GAERy2K,EAAgBzF,OAAQ2E,EAAIkB,EAAG3sL,EAAG2sL,EAAGxhL,EAAGwhL,EAAGvhL,GAC3CmhL,EAAgBzF,OAAQ4E,EAAIkB,EAAG5sL,EAAG4sL,EAAGzhL,EAAGyhL,EAAGxhL,GAC3CmhL,EAAgBzF,OAAQ6E,EAAIkB,EAAG7sL,EAAG6sL,EAAG1hL,EAAG0hL,EAAGzhL,EAE5C,MAMA,IAAM,IAAI5K,EAAI,EAAGowD,EAAK07H,EAAkB7qG,MAAOjhF,EAAIowD,EAAIpwD,GAAK,EAE3DgsL,EAAG3d,oBAAqByd,EAAmB9rL,EAAI,GAC/CisL,EAAG5d,oBAAqByd,EAAmB9rL,EAAI,GAC/CksL,EAAG7d,oBAAqByd,EAAmB9rL,EAAI,GAE/CsV,EAAGsjJ,WAAYszB,EAAID,GACnB13J,EAAGqkI,WAAYozB,EAAIC,GACnB32K,EAAGw+J,MAAOv/I,GAEVw3J,EAAgBzF,OAAQtmL,EAAI,EAAGsV,EAAG9V,EAAG8V,EAAG3K,EAAG2K,EAAG1K,GAC9CmhL,EAAgBzF,OAAQtmL,EAAI,EAAGsV,EAAG9V,EAAG8V,EAAG3K,EAAG2K,EAAG1K,GAC9CmhL,EAAgBzF,OAAQtmL,EAAI,EAAGsV,EAAG9V,EAAG8V,EAAG3K,EAAG2K,EAAG1K,GAMhDtH,KAAKgpL,mBAELP,EAAgBnpB,aAAc,CAE/B,CAED,GAAC,CAAA98J,IAAA,mBAAA/D,MAED,WAIC,IAFA,IAAM4oL,EAAUrnL,KAAKkyE,WAAW62F,OAEtBrsK,EAAI,EAAGowD,EAAKu6H,EAAQ1pG,MAAOjhF,EAAIowD,EAAIpwD,IAE5C+oL,GAAU1a,oBAAqBsc,EAAS3qL,GAExC+oL,GAAU5kE,YAEVwmE,EAAQrE,OAAQtmL,EAAG+oL,GAAUvpL,EAAGupL,GAAUp+K,EAAGo+K,GAAUn+K,EAIzD,GAAC,CAAA9E,IAAA,eAAA/D,MAED,WAEC,SAAS6qL,EAAwBpzB,EAAWixB,GAU3C,IARA,IAAMpkL,EAAQmzJ,EAAUnzJ,MAClB0/K,EAAWvsB,EAAUusB,SACrB7lB,EAAa1G,EAAU0G,WAEvB2sB,EAAS,IAAIxmL,EAAMoX,YAAagtK,EAAQvvL,OAAS6qL,GAEnD7zK,EAAQ,EAAGi0K,EAAS,EAEdnmL,EAAI,EAAGmK,EAAIsgL,EAAQvvL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAIjDkS,EAFIsnJ,EAAUszB,6BAENrC,EAASzqL,GAAMw5J,EAAUxyH,KAAK+lJ,OAASvzB,EAAUnsH,OAIjDo9I,EAASzqL,GAAM+lL,EAIxB,IAAM,IAAI5yK,EAAI,EAAGA,EAAI4yK,EAAU5yK,IAE9B05K,EAAQ1G,KAAc9/K,EAAO6L,IAI/B,CAEA,OAAO,IAAI4zK,GAAiB+G,EAAQ9G,EAAU7lB,EAE/C,CAIA,GAAoB,OAAf58J,KAAK4O,MAGT,OADAmF,QAAQk/C,KAAM,+EACPjzD,KAIR,IAAM0pL,EAAY,IAAIhE,EAEhByB,EAAUnnL,KAAK4O,MAAM7L,MACrBmvE,EAAalyE,KAAKkyE,WAIxB,IAAM,IAAM/4E,KAAQ+4E,EAAa,CAEhC,IAEMy3G,EAAeL,EAFHp3G,EAAY/4E,GAE0BguL,GAExDuC,EAAU52K,aAAc3Z,EAAMwwL,EAE/B,CAIA,IAAM7D,EAAkB9lL,KAAK8lL,gBAE7B,IAAM,IAAM3sL,KAAQ2sL,EAAkB,CAKrC,IAHA,IAAM8D,EAAa,GACb3C,EAAiBnB,EAAiB3sL,GAE9BuD,EAAI,EAAGowD,EAAKm6H,EAAervL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAE3D,IAEMitL,EAAeL,EAFHrC,EAAgBvqL,GAEsByqL,GAExDyC,EAAW9sL,KAAM6sL,EAElB,CAEAD,EAAU5D,gBAAiB3sL,GAASywL,CAErC,CAEAF,EAAU3D,qBAAuB/lL,KAAK+lL,qBAMtC,IAFA,IAAMC,EAAShmL,KAAKgmL,OAEVtpL,EAAI,EAAGmK,EAAIm/K,EAAOpuL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAM+qG,EAAQu+E,EAAQtpL,GACtBgtL,EAAUG,SAAUpiF,EAAM38D,MAAO28D,EAAM9pB,MAAO8pB,EAAM0+E,cAErD,CAEA,OAAOuD,CAER,GAAC,CAAAlnL,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAO,CACZ+6E,SAAU,CACTplH,QAAS,IACTuL,KAAM,iBACNgrF,UAAW,0BAWb,GALAlsD,EAAKm4E,KAAO77G,KAAK67G,KACjBn4E,EAAK9+B,KAAO5E,KAAK4E,KACE,KAAd5E,KAAK7G,OAAcuqC,EAAKvqC,KAAO6G,KAAK7G,MACpCoF,OAAOqD,KAAM5B,KAAKi/J,UAAWrnK,OAAS,IAAI8rC,EAAKu7H,SAAWj/J,KAAKi/J,eAE3C70J,IAApBpK,KAAKw4K,WAA2B,CAEpC,IAAMA,EAAax4K,KAAKw4K,WAExB,IAAM,IAAMh2K,KAAOg2K,OAESpuK,IAAtBouK,EAAYh2K,KAAsBkhC,EAAMlhC,GAAQg2K,EAAYh2K,IAIlE,OAAOkhC,CAER,CAIAA,EAAKA,KAAO,CAAEwuC,WAAY,CAAC,GAE3B,IAAMtjE,EAAQ5O,KAAK4O,MAEJ,OAAVA,IAEJ80B,EAAKA,KAAK90B,MAAQ,CACjBhK,KAAMgK,EAAM7L,MAAMoX,YAAYhhB,KAC9B4J,MAAOpG,MAAMC,UAAUgU,MAAM/T,KAAM+R,EAAM7L,SAK3C,IAAMmvE,EAAalyE,KAAKkyE,WAExB,IAAM,IAAM1vE,KAAO0vE,EAAa,CAE/B,IAAMgkF,EAAYhkF,EAAY1vE,GAE9BkhC,EAAKA,KAAKwuC,WAAY1vE,GAAQ0zJ,EAAUsJ,OAAQ97H,EAAKA,KAEtD,CAEA,IAAMoiJ,EAAkB,CAAC,EACrBgE,GAAqB,EAEzB,IAAM,IAAMtnL,KAAOxC,KAAK8lL,gBAAkB,CAMzC,IAJA,IAAMiE,EAAiB/pL,KAAK8lL,gBAAiBtjL,GAEvCO,EAAQ,GAEJrG,EAAI,EAAGowD,EAAKi9H,EAAenyL,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAE3D,IAAMw5J,EAAY6zB,EAAgBrtL,GAElCqG,EAAMjG,KAAMo5J,EAAUsJ,OAAQ97H,EAAKA,MAEpC,CAEK3gC,EAAMnL,OAAS,IAEnBkuL,EAAiBtjL,GAAQO,EAEzB+mL,GAAqB,EAIvB,CAEKA,IAEJpmJ,EAAKA,KAAKoiJ,gBAAkBA,EAC5BpiJ,EAAKA,KAAKqiJ,qBAAuB/lL,KAAK+lL,sBAIvC,IAAMC,EAAShmL,KAAKgmL,OAEfA,EAAOpuL,OAAS,IAEpB8rC,EAAKA,KAAKsiJ,OAASj4H,KAAK4yC,MAAO5yC,KAAKC,UAAWg4H,KAIhD,IAAMC,EAAiBjmL,KAAKimL,eAW5B,OATwB,OAAnBA,IAEJviJ,EAAKA,KAAKuiJ,eAAiB,CAC1B5vB,OAAQ4vB,EAAe5vB,OAAO9uE,UAC9B2hF,OAAQ+c,EAAe/c,SAKlBxlI,CAER,GAAC,CAAAlhC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+C,GAILxB,KAAK4O,MAAQ,KACb5O,KAAKkyE,WAAa,CAAC,EACnBlyE,KAAK8lL,gBAAkB,CAAC,EACxB9lL,KAAKgmL,OAAS,GACdhmL,KAAKgrK,YAAc,KACnBhrK,KAAKimL,eAAiB,KAItB,IAAMviJ,EAAO,CAAC,EAId1jC,KAAK7G,KAAOqI,EAAOrI,KAInB,IAAMyV,EAAQpN,EAAOoN,MAEN,OAAVA,GAEJ5O,KAAKgqL,SAAUp7K,EAAM1N,MAAOwiC,IAM7B,IAAMwuC,EAAa1wE,EAAO0wE,WAE1B,IAAM,IAAM/4E,KAAQ+4E,EAAa,CAEhC,IAAMgkF,EAAYhkF,EAAY/4E,GAC9B6G,KAAK8S,aAAc3Z,EAAM+8J,EAAUh1J,MAAOwiC,GAE3C,CAIA,IAAMoiJ,EAAkBtkL,EAAOskL,gBAE/B,IAAM,IAAM3sL,KAAQ2sL,EAAkB,CAKrC,IAHA,IAAM/iL,EAAQ,GACRkkL,EAAiBnB,EAAiB3sL,GAE9BuD,EAAI,EAAGmK,EAAIogL,EAAervL,OAAQ8E,EAAImK,EAAGnK,IAElDqG,EAAMjG,KAAMmqL,EAAgBvqL,GAAIwE,MAAOwiC,IAIxC1jC,KAAK8lL,gBAAiB3sL,GAAS4J,CAEhC,CAEA/C,KAAK+lL,qBAAuBvkL,EAAOukL,qBAMnC,IAFA,IAAMC,EAASxkL,EAAOwkL,OAEZtpL,EAAI,EAAGmK,EAAIm/K,EAAOpuL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAM+qG,EAAQu+E,EAAQtpL,GACtBsD,KAAK6pL,SAAUpiF,EAAM38D,MAAO28D,EAAM9pB,MAAO8pB,EAAM0+E,cAEhD,CAIA,IAAMnb,EAAcxpK,EAAOwpK,YAEN,OAAhBA,IAEJhrK,KAAKgrK,YAAcA,EAAY9pK,SAMhC,IAAM+kL,EAAiBzkL,EAAOykL,eAiB9B,OAfwB,OAAnBA,IAEJjmL,KAAKimL,eAAiBA,EAAe/kL,SAMtClB,KAAKkmL,UAAUp7I,MAAQtpC,EAAO0kL,UAAUp7I,MACxC9qC,KAAKkmL,UAAUvoG,MAAQn8E,EAAO0kL,UAAUvoG,MAIxC39E,KAAKi/J,SAAWz9J,EAAOy9J,SAEhBj/J,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAECuB,KAAKu+B,cAAe,CAAE35B,KAAM,WAE7B,KAAC8gL,CAAA,CA7hCkB,CAASp0B,IAiiCvBw4R,GAAiC,IAAIn5Q,GACrCo5Q,GAAuB,IAAI37Q,GAC3B47Q,GAA0B,IAAI98Q,GAC9B+8Q,GAA6B,IAAInjR,GAEjCsjB,GAAsB,IAAItjB,GAC1BujB,GAAsB,IAAIvjB,GAC1BwjB,GAAsB,IAAIxjB,GAE1ByjB,GAAuB,IAAIzjB,GAC3B4jB,GAAwB,IAAI5jB,GAE5B+jB,GAAuB,IAAI11B,GAC3B21B,GAAuB,IAAI31B,GAC3B41B,GAAuB,IAAI51B,GAE3B+0R,GAAyB,IAAIpjR,GAC7BqjR,GAAyB,IAAIrjR,GAC7BsjR,GAAyB,IAAItjR,GAE7BkkB,GAAmC,IAAIlkB,GACvCmkB,GAAwC,IAAInkB,GAE5CokB,GAAI,SAAAC,GAAAnvK,EAAAkvK,EAAAC,GAAA,IAAAwB,EAAAhyK,EAAAuwK,GAET,SAAAA,IAAmF,IAAAwD,EAAtE5jB,EAAQ7qK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIylL,GAAkB7M,EAAQ54K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI+hL,GAWlC,OAXqDv3K,EAAA,KAAAygL,IAE/EwD,EAAA/B,EAAA9vL,KAAA,OAEKw7K,QAAS,EAEdqW,EAAK9pL,KAAO,OAEZ8pL,EAAK5jB,SAAWA,EAChB4jB,EAAK7V,SAAWA,EAEhB6V,EAAKpD,qBAAqBoD,CAE3B,CAuRC,OAvRAnlL,EAAA2hL,EAAA,EAAA1oL,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAmBb,OAjBA9xC,GAAA5rH,EAAA4vK,EAAAtuL,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,QAEkB5uK,IAAjC5I,EAAO+pL,wBAEXvrL,KAAKurL,sBAAwB/pL,EAAO+pL,sBAAsB36K,cAIrBxG,IAAjC5I,EAAOgqL,wBAEXxrL,KAAKwrL,sBAAwBjtL,OAAOmgB,OAAQ,CAAC,EAAGld,EAAOgqL,wBAIxDxrL,KAAK64K,SAAWl8K,MAAM0E,QAASG,EAAOq3K,UAAar3K,EAAOq3K,SAASjoK,QAAUpP,EAAOq3K,SACpF74K,KAAK8qK,SAAWtpK,EAAOspK,SAEhB9qK,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,WAEC,IAEMqnL,EAFW9lL,KAAK8qK,SAEWgb,gBAC3BlkL,EAAOrD,OAAOqD,KAAMkkL,GAE1B,GAAKlkL,EAAKhK,OAAS,EAAI,CAEtB,IAAMqvL,EAAiBnB,EAAiBlkL,EAAM,IAE9C,QAAwBwI,IAAnB68K,EAA+B,CAEnCjnL,KAAKurL,sBAAwB,GAC7BvrL,KAAKwrL,sBAAwB,CAAC,EAE9B,IAAM,IAAI1kL,EAAI,EAAGumD,EAAK45H,EAAervL,OAAQkP,EAAIumD,EAAIvmD,IAAO,CAE3D,IAAM3N,EAAO8tL,EAAgBngL,GAAI3N,MAAQ4E,OAAQ+I,GAEjD9G,KAAKurL,sBAAsBzuL,KAAM,GACjCkD,KAAKwrL,sBAAuBryL,GAAS2N,CAEtC,CAED,CAED,CAED,GAAC,CAAAtE,IAAA,oBAAA/D,MAED,SAAmBmQ,EAAOrN,GAEzB,IAAMupK,EAAW9qK,KAAK8qK,SAChBvrG,EAAWurG,EAAS54F,WAAW3S,SAC/BusH,EAAgBhhB,EAASgb,gBAAgBvmH,SACzCwmH,EAAuBjb,EAASib,qBAEtCxkL,EAAOwpK,oBAAqBxrG,EAAU3wD,GAEtC,IAAMw9K,EAAkBpsL,KAAKurL,sBAE7B,GAAKO,GAAiBM,EAAkB,CAEvC1B,GAAQz7J,IAAK,EAAG,EAAG,GAEnB,IAAM,IAAIvyB,EAAI,EAAGowD,EAAKg/H,EAAcl0L,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAE1D,IAAM2vL,EAAYD,EAAiB1vL,GAC7BuqL,EAAiB6E,EAAepvL,GAEnB,IAAd2vL,IAEL9B,GAAOxf,oBAAqBkc,EAAgBr4K,GAEvCm3K,EAEJ2E,GAAQhQ,gBAAiB6P,GAAQ8B,GAIjC3B,GAAQhQ,gBAAiB6P,GAAOzhB,IAAKvnK,GAAU8qL,GAIjD,CAEA9qL,EAAO6qB,IAAKs+J,GAEb,CAEA,OAAOnpL,CAER,GAAC,CAAAiB,IAAA,UAAA/D,MAED,SAASitL,EAAWC,GAEnB,IAAM7gB,EAAW9qK,KAAK8qK,SAChB+N,EAAW74K,KAAK64K,SAChB5Q,EAAcjoK,KAAKioK,YAEzB,QAAkB79J,IAAbyuK,EAAL,CAaA,GATiC,OAA5B/N,EAASmb,gBAA0Bnb,EAASwb,wBAEjD0jQ,GAAUtuR,KAAMoP,EAASmb,gBACzB+jQ,GAAUniR,aAAcI,GAIxB8hR,GAAOruR,KAAMgwB,EAAUpd,KAAM+7Q,OAAQ3+P,EAAU7X,OAEG,IAA7Cm2Q,GAAU1vQ,cAAeyvQ,GAAO3xV,QAAqB,CAEzD,GAA2D,OAAtD2xV,GAAOO,gBAAiBN,GAAWC,IAA0B,OAElE,GAAKF,GAAO3xV,OAAO09D,kBAAmBm0R,IAAchtb,KAAAs1J,IAAKm5B,EAAU5X,IAAM4X,EAAU7X,KAAU,GAAI,MAElG,CAIAi2Q,GAAiBpuR,KAAMuM,GAAcn4B,SACrCi6S,GAAOruR,KAAMgwB,EAAUpd,KAAMzG,aAAciiR,IAIb,OAAzBh/Q,EAASE,cAEyC,IAAjD++Q,GAAOl+P,cAAe/gB,EAASE,cAMrChrK,KAAKuqb,sBAAuB7+P,EAAWC,EAAYo+P,GApCf,CAsCrC,GAAC,CAAAvnb,IAAA,wBAAA/D,MAED,SAAuBitL,EAAWC,EAAY6+P,GAE7C,IAAI5+P,EAEE9gB,EAAW9qK,KAAK8qK,SAChB+N,EAAW74K,KAAK64K,SAEhBjqK,EAAQk8J,EAASl8J,MACjB2wD,EAAWurG,EAAS54F,WAAW3S,SAC/BkgG,EAAKqL,EAAS54F,WAAWutF,GACzBya,EAAMpP,EAAS54F,WAAWgoG,IAC1BnR,EAAS+B,EAAS54F,WAAW62F,OAC7Bid,EAASlb,EAASkb,OAClBE,EAAYpb,EAASob,UAE3B,GAAe,OAAVt3K,EAIJ,GAAKjS,MAAM0E,QAASw3K,GAEnB,IAAM,IAAIn8K,EAAI,EAAGowD,EAAKk5H,EAAOpuL,OAAQ8E,EAAIowD,EAAIpwD,IAQ5C,IANA,IAAM+qG,EAAQu+E,EAAQtpL,GAChBqvL,EAAgBlT,EAAUpxE,EAAM0+E,eAK5Bt2K,EAHI5S,KAAKC,IAAKuqG,EAAM38D,MAAOo7I,EAAUp7I,OAG1Bo8I,EAFTjqL,KAAKiuC,IAAKt8B,EAAM+uE,MAAO1gF,KAAKiuC,IAAOu8D,EAAM38D,MAAQ28D,EAAM9pB,MAAWuoG,EAAUp7I,MAAQo7I,EAAUvoG,QAE3E9tE,EAAIq3K,EAAIr3K,GAAK,EAAI,EAM/C+7K,EAAe6+P,GAA2Bzqb,KAAM+rL,EAAeL,EAAW8+P,EAAe/qR,EAAIya,EAAKnR,EAJxFn6J,EAAMunJ,KAAMtmJ,GACZjB,EAAMunJ,KAAMtmJ,EAAI,GAChBjB,EAAMunJ,KAAMtmJ,EAAI,OAMzB+7K,EAAaK,UAAYhvL,KAAKwf,MAAO5M,EAAI,GACzC+7K,EAAaM,KAAK/F,cAAgB1+E,EAAM0+E,cACxCwF,EAAW7uL,KAAM8uL,GAInB,MASD,IAHA,IAGUlvL,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBgiB,EAFT7vD,KAAKiuC,IAAKt8B,EAAM+uE,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAElCjhF,EAAIowD,EAAIpwD,GAAK,EAAI,EAM/CkvL,EAAe6+P,GAA2Bzqb,KAAM64K,EAAU6S,EAAW8+P,EAAe/qR,EAAIya,EAAKnR,EAJnFn6J,EAAMunJ,KAAMz5J,GACZkS,EAAMunJ,KAAMz5J,EAAI,GAChBkS,EAAMunJ,KAAMz5J,EAAI,OAMzBkvL,EAAaK,UAAYhvL,KAAKwf,MAAO/f,EAAI,GACzCivL,EAAW7uL,KAAM8uL,GAInB,MAIK,QAAkBxhL,IAAbm1D,EAIX,GAAK5iE,MAAM0E,QAASw3K,GAEnB,IAAM,IAAIn8K,EAAI,EAAGowD,EAAKk5H,EAAOpuL,OAAQ8E,EAAIowD,EAAIpwD,IAQ5C,IANA,IAAM+qG,EAAQu+E,EAAQtpL,GAChBqvL,EAAgBlT,EAAUpxE,EAAM0+E,eAK5Bt2K,EAHI5S,KAAKC,IAAKuqG,EAAM38D,MAAOo7I,EAAUp7I,OAG1Bo8I,EAFTjqL,KAAKiuC,IAAKq0B,EAASoe,MAAO1gF,KAAKiuC,IAAOu8D,EAAM38D,MAAQ28D,EAAM9pB,MAAWuoG,EAAUp7I,MAAQo7I,EAAUvoG,QAE9E9tE,EAAIq3K,EAAIr3K,GAAK,EAAI,EAM/C+7K,EAAe6+P,GAA2Bzqb,KAAM+rL,EAAeL,EAAW8+P,EAAe/qR,EAAIya,EAAKnR,EAJxFl5J,EACAA,EAAI,EACJA,EAAI,MAMb+7K,EAAaK,UAAYhvL,KAAKwf,MAAO5M,EAAI,GACzC+7K,EAAaM,KAAK/F,cAAgB1+E,EAAM0+E,cACxCwF,EAAW7uL,KAAM8uL,GAInB,MASD,IAHA,IAGUlvL,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBgiB,EAFT7vD,KAAKiuC,IAAKq0B,EAASoe,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAErCjhF,EAAIowD,EAAIpwD,GAAK,EAAI,EAM/CkvL,EAAe6+P,GAA2Bzqb,KAAM64K,EAAU6S,EAAW8+P,EAAe/qR,EAAIya,EAAKnR,EAJnFrsK,EACAA,EAAI,EACJA,EAAI,MAMbkvL,EAAaK,UAAYhvL,KAAKwf,MAAO/f,EAAI,GACzCivL,EAAW7uL,KAAM8uL,GAInB,CAMH,KAACV,CAAA,CAtSQ,CAAS1V,IAyUnB,SAASi1Q,GAA2Btob,EAAQ02K,EAAU6S,EAAWpd,EAAK7O,EAAIya,EAAKnR,EAAQ/sK,EAAGuK,EAAGtK,GAE5FkG,EAAOwkb,kBAAmB3qb,EAAGouL,IAC7BjoL,EAAOwkb,kBAAmBpgb,EAAG8jL,IAC7BloL,EAAOwkb,kBAAmB1qb,EAAGquL,IAE7B,IAAMsB,EArCP,SAA4BzpL,EAAQ02K,EAAU6S,EAAWpd,EAAKoa,EAAIC,EAAIC,EAAIle,GAczE,GAAmB,QAVdmO,EAASgD,OAASz0B,GAEVknB,EAAIie,kBAAmB3D,EAAID,EAAID,GAAI,EAAMhe,GAIzC4D,EAAIie,kBAAmB7D,EAAIC,EAAIC,EAAM/P,EAASgD,OAAS10B,GAAaujB,IAIvD,OAAO,KAEjCugB,GAAwBvvB,KAAMgP,GAC9BugB,GAAwBpjB,aAAc1lK,EAAO8lK,aAE7C,IAAMyO,EAAWgV,EAAUpd,IAAIl2E,OAAOi1E,WAAY4d,IAElD,OAAKvU,EAAWgV,EAAU7X,MAAQ6C,EAAWgV,EAAU5X,IAAa,KAE7D,CACN4C,SAAUA,EACVhM,MAAOugB,GAAwB/pL,QAC/BiB,OAAQA,EAGV,CAQsBqqL,CAAmBrqL,EAAQ02K,EAAU6S,EAAWpd,EAAK8b,GAAOC,GAAOC,GAAOU,IAE/F,GAAKY,EAAe,CAEdnsB,IAEJorB,GAAO9f,oBAAqBtL,EAAIzjK,GAChC8uL,GAAO/f,oBAAqBtL,EAAIl5J,GAChCwkL,GAAOhgB,oBAAqBtL,EAAIxjK,GAEhC2vL,EAAansB,GAAKka,GAASqxF,iBAAkBhgF,GAAoBZ,GAAOC,GAAOC,GAAOO,GAAQC,GAAQC,GAAQ,IAAI51B,KAI9G+kB,IAEJ2Q,GAAO9f,oBAAqBmP,EAAKl+K,GACjC8uL,GAAO/f,oBAAqBmP,EAAK3zK,GACjCwkL,GAAOhgB,oBAAqBmP,EAAKj+K,GAEjC2vL,EAAa1R,IAAMP,GAASqxF,iBAAkBhgF,GAAoBZ,GAAOC,GAAOC,GAAOO,GAAQC,GAAQC,GAAQ,IAAI51B,IACnHy2B,EAAazR,IAAMyR,EAAa1R,KAI5BnR,IAEJmhR,GAASn/Q,oBAAqBhC,EAAQ/sK,GACtCmub,GAASp/Q,oBAAqBhC,EAAQxiK,GACtC6jb,GAASr/Q,oBAAqBhC,EAAQ9sK,GAEtC2vL,EAAa7iB,OAAS4Q,GAASqxF,iBAAkBhgF,GAAoBZ,GAAOC,GAAOC,GAAO4/P,GAAUC,GAAUC,GAAU,IAAItjR,IAEvH8kB,EAAa7iB,OAAO9E,IAAKqK,EAAID,WAAc,GAE/Cud,EAAa7iB,OAAOxT,gBAAkB,IAMxC,IAAM22B,EAAO,CACZlwL,EAAGA,EACHuK,EAAGA,EACHtK,EAAGA,EACH8sK,OAAQ,IAAIjC,GACZqf,cAAe,GAGhBxM,GAASI,UAAWqQ,GAAOC,GAAOC,GAAO4B,EAAKnjB,QAE9C6iB,EAAaM,KAAOA,CAErB,CAEA,OAAON,CAER,CAAC,IAEKa,GAAW,SAAAC,GAAA1wK,EAAAywK,EAAAC,GAAA,IAAA+B,EAAA9zK,EAAA8xK,GAEhB,SAAAA,IAA0G,IAAAmD,EAA7FzhL,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGsuG,EAAKtuG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG4sL,EAAa5sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG6sL,EAAc7sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG8sL,EAAa9sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAgiL,IAEtGmD,EAAAnB,EAAA5xL,KAAA,OAEK+H,KAAO,cAEZgrL,EAAKpX,WAAa,CACjBrqK,MAAOA,EACPC,OAAQA,EACRmgG,MAAOA,EACPs+E,cAAeA,EACfC,eAAgBA,EAChBC,cAAeA,GAGhB,IAAMC,EAAKxxK,EAAAo0K,GAIX/C,EAAgB5vL,KAAKwf,MAAOowK,GAC5BC,EAAiB7vL,KAAKwf,MAAOqwK,GAC7BC,EAAgB9vL,KAAKwf,MAAOswK,GAI5B,IAAM5F,EAAU,GACV8F,EAAW,GACX5F,EAAU,GACVC,EAAM,GAIR4F,EAAmB,EACnBC,EAAa,EAkBjB,SAASC,EAAY7lL,EAAGJ,EAAGC,EAAGimL,EAAMC,EAAMn/K,EAAOC,EAAQmgG,EAAOg/E,EAAOC,EAAOrH,GAmB7E,IAjBA,IAAMsH,EAAet/K,EAAQo/K,EACvBG,EAAgBt/K,EAASo/K,EAEzBG,EAAYx/K,EAAQ,EACpBy/K,EAAax/K,EAAS,EACtBy/K,EAAYt/E,EAAQ,EAEpBu/E,EAASP,EAAQ,EACjBQ,EAASP,EAAQ,EAEnBQ,EAAgB,EAChBC,EAAa,EAEXtjB,EAAS,IAAI7D,GAITW,EAAK,EAAGA,EAAKsmB,EAAQtmB,IAI9B,IAFA,IAAMpgK,EAAIogK,EAAKimB,EAAgBE,EAErBpmB,EAAK,EAAGA,EAAKsmB,EAAQtmB,IAAQ,CAEtC,IAAMtrK,EAAIsrK,EAAKimB,EAAeE,EAI9BhjB,EAAQpjK,GAAMrL,EAAImxL,EAClB1iB,EAAQxjK,GAAME,EAAIimL,EAClB3iB,EAAQvjK,GAAMymL,EAIdZ,EAASnwL,KAAM6tK,EAAOzuK,EAAGyuK,EAAOtjK,EAAGsjK,EAAOrjK,GAI1CqjK,EAAQpjK,GAAM,EACdojK,EAAQxjK,GAAM,EACdwjK,EAAQvjK,GAAMmnG,EAAQ,EAAI,GAAM,EAIhC84E,EAAQvqL,KAAM6tK,EAAOzuK,EAAGyuK,EAAOtjK,EAAGsjK,EAAOrjK,GAIzCggL,EAAIxqL,KAAM0qK,EAAK+lB,GACfjG,EAAIxqL,KAAM,EAAM2qK,EAAK+lB,GAIrBQ,GAAiB,CAElB,CAUD,IAAM,IAAIvmB,EAAK,EAAGA,EAAK+lB,EAAO/lB,IAE7B,IAAM,IAAID,EAAK,EAAGA,EAAK+lB,EAAO/lB,IAAQ,CAErC,IAAMxrK,EAAIkxL,EAAmB1lB,EAAKsmB,EAASrmB,EACrClhK,EAAI2mL,EAAmB1lB,EAAKsmB,GAAWrmB,EAAK,GAC5CxrK,EAAIixL,GAAqB1lB,EAAK,GAAMsmB,GAAWrmB,EAAK,GACpDjhK,EAAI0mL,GAAqB1lB,EAAK,GAAMsmB,EAASrmB,EAInD0f,EAAQrqL,KAAMd,EAAGuK,EAAGC,GACpB2gL,EAAQrqL,KAAMyJ,EAAGtK,EAAGuK,GAIpBynL,GAAc,CAEf,CAMDjB,EAAMnD,SAAUsD,EAAYc,EAAY9H,GAIxCgH,GAAcc,EAIdf,GAAoBc,CAErB,CAAC,OAlHDZ,EAAY,IAAK,IAAK,KAAO,GAAK,EAAG7+E,EAAOngG,EAAQD,EAAO4+K,EAAeD,EAAgB,GAC1FM,EAAY,IAAK,IAAK,IAAK,GAAK,EAAG7+E,EAAOngG,GAAUD,EAAO4+K,EAAeD,EAAgB,GAC1FM,EAAY,IAAK,IAAK,IAAK,EAAG,EAAGj/K,EAAOogG,EAAOngG,EAAQy+K,EAAeE,EAAe,GACrFK,EAAY,IAAK,IAAK,IAAK,GAAK,EAAGj/K,EAAOogG,GAASngG,EAAQy+K,EAAeE,EAAe,GACzFK,EAAY,IAAK,IAAK,IAAK,GAAK,EAAGj/K,EAAOC,EAAQmgG,EAAOs+E,EAAeC,EAAgB,GACxFM,EAAY,IAAK,IAAK,KAAO,GAAK,EAAGj/K,EAAOC,GAAUmgG,EAAOs+E,EAAeC,EAAgB,GAI5F8C,EAAK5F,SAAU7C,GACfyI,EAAK98K,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACrE2C,EAAK98K,aAAc,SAAU,IAAI+xK,GAAwBwC,EAAS,IAClEuI,EAAK98K,aAAc,KAAM,IAAI+xK,GAAwByC,EAAK,IAsGzDsI,CAEF,CAgBC,OAhBArmL,EAAAkjL,EAAA,EAAAjqL,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAAmxK,EAAA7vL,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKw4K,WAAaj6K,OAAOmgB,OAAQ,CAAC,EAAGld,EAAOg3K,YAErCx4K,IAER,IAAC,EAAAwC,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAI+oJ,EAAa/oJ,EAAKv1B,MAAOu1B,EAAKt1B,OAAQs1B,EAAK6qE,MAAO7qE,EAAKmpJ,cAAenpJ,EAAKopJ,eAAgBppJ,EAAKqpJ,cAE5G,KAACN,CAAA,CA3Ke,CAAS/G,IAmL1B,SAASwI,GAAe/7K,GAEvB,IAAMyzJ,EAAM,CAAC,EAEb,IAAM,IAAMr+J,KAAK4K,EAIhB,IAAM,IAAMnL,KAFZ4+J,EAAKr+J,GAAM,CAAC,EAEK4K,EAAK5K,GAAM,CAE3B,IAAM7I,EAAWyT,EAAK5K,GAAKP,GAEtBtI,IAAcA,EAAS+8J,SAC3B/8J,EAASm7J,WAAan7J,EAASq1K,WAC/Br1K,EAAS63J,WAAa73J,EAAS+qK,WAAa/qK,EAASqiK,WACrDriK,EAASihK,WAAajhK,EAASmoK,cAE1BnoK,EAASygK,uBAEbprJ,QAAQk/C,KAAM,sGACd2yG,EAAKr+J,GAAKP,GAAM,MAIhB4+J,EAAKr+J,GAAKP,GAAMtI,EAASwC,QAIfvE,MAAM0E,QAAS3C,GAE1BknK,EAAKr+J,GAAKP,GAAMtI,EAASkS,QAIzBg1J,EAAKr+J,GAAKP,GAAMtI,CAIlB,CAID,OAAOknK,CAER,CAEA,SAASuoB,GAAeC,GAIvB,IAFA,IAAMC,EAAS,CAAC,EAEN9mL,EAAI,EAAGA,EAAI6mL,EAASx2L,OAAQ2P,IAAO,CAE5C,IAAMuxJ,EAAMo1B,GAAeE,EAAU7mL,IAErC,IAAM,IAAMP,KAAK8xJ,EAEhBu1B,EAAQrnL,GAAM8xJ,EAAK9xJ,EAIrB,CAEA,OAAOqnL,CAER,CAgBA,SAASq8P,GAA2B54P,GAEnC,OAAoC,OAA/BA,EAASI,kBAGNJ,EAASohH,iBAIV14I,GAAgBE,iBAExB,CAIA,IAAM4zB,GAAgB,CAAEptL,MAAOgtL,GAAer6E,MAAOs6E,IAM/CI,GAAc,SAAAC,GAAAxyK,EAAAuyK,EAAAC,GAAA,IAAAmB,EAAAh1K,EAAA4zK,GAEnB,SAAAA,EAAa/V,GAAa,IAAAwX,EAoDxB,OApDwBvlL,EAAA,KAAA8jL,IAEzByB,EAAAL,EAAA9yL,KAAA,OAEK2yL,kBAAmB,EAExBQ,EAAKprL,KAAO,iBAEZorL,EAAKrB,QAAU,CAAC,EAChBqB,EAAK5B,SAAW,CAAC,EACjB4B,EAAKkxL,eAAiB,GAEtBlxL,EAAKpB,aAlBc,gGAmBnBoB,EAAKnB,eAjBgB,iEAmBrBmB,EAAK5O,UAAY,EAEjB4O,EAAKxO,WAAY,EACjBwO,EAAKvO,mBAAqB,EAE1BuO,EAAKrU,KAAM,EACXqU,EAAKlB,QAAS,EACdkB,EAAKjB,UAAW,EAEhBiB,EAAKu5P,iBAAkB,EAEvBv5P,EAAK1jG,WAAa,CACjB0iG,aAAa,EACbC,WAAW,EACXC,aAAa,EACbC,kBAAkB,EAClBw7P,kBAAkB,EAClBC,WAAW,GAKZ56P,EAAKZ,uBAAyB,CAC7B,MAAS,CAAE,EAAG,EAAG,GACjB,GAAM,CAAE,EAAG,GACX,IAAO,CAAE,EAAG,IAGbY,EAAKX,yBAAsBjlL,EAC3B4lL,EAAKV,oBAAqB,EAE1BU,EAAKT,YAAc,UAECnlL,IAAfouK,GAEJwX,EAAK5N,UAAW5J,GAEhBwX,CAEF,CA0HC,OA1HAzmL,EAAAglL,EAAA,EAAA/rL,IAAA,OAAA/D,MAED,SAAM+C,GAuBL,OArBA0lI,GAAA5rH,EAAAizK,EAAA3xL,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK6uL,eAAiBrtL,EAAOqtL,eAC7B7uL,KAAK4uL,aAAeptL,EAAOotL,aAE3B5uL,KAAKouL,SAAWF,GAAe1sL,EAAO4sL,UACtCpuL,KAAKkhX,eArGP,SAA8B/uW,GAI7B,IAFA,IAAMyzJ,EAAM,GAEFr+J,EAAI,EAAGA,EAAI4K,EAAIva,OAAQ2P,IAEhCq+J,EAAI9oK,KAAMqV,EAAK5K,GAAIrG,SAIpB,OAAO0kK,CAER,CAyFwBu7M,CAAqB3/W,EAAO0/W,gBAElDlhX,KAAK2uL,QAAUpwL,OAAOmgB,OAAQ,CAAC,EAAGld,EAAOmtL,SAEzC3uL,KAAKwhL,UAAYhgL,EAAOggL,UACxBxhL,KAAKyhL,mBAAqBjgL,EAAOigL,mBAEjCzhL,KAAK27K,IAAMn6K,EAAOm6K,IAClB37K,KAAK8uL,OAASttL,EAAOstL,OACrB9uL,KAAK+uL,SAAWvtL,EAAOutL,SAEvB/uL,KAAKssF,WAAa/tF,OAAOmgB,OAAQ,CAAC,EAAGld,EAAO8qF,YAE5CtsF,KAAKuvL,YAAc/tL,EAAO+tL,YAEnBvvL,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAAizK,EAAA3xL,WAAA,eAAAC,KAAA,KAAiBy5B,GAK3B,IAAM,IAAMn9B,KAHZuqC,EAAK6rJ,YAAcvvL,KAAKuvL,YACxB7rJ,EAAK0qJ,SAAW,CAAC,EAEGpuL,KAAKouL,SAAW,CAEnC,IACM3vL,EADUuB,KAAKouL,SAAUj1L,GACTsF,MAEjBA,GAASA,EAAMkhK,UAEnBj8H,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,IACNnG,MAAOA,EAAM+gK,OAAQlpI,GAAOulF,MAGlBp9G,GAASA,EAAMg9J,QAE1B/3H,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,IACNnG,MAAOA,EAAM29J,UAGH39J,GAASA,EAAM83J,UAE1B7yH,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,KACNnG,MAAOA,EAAM8oF,WAGH9oF,GAASA,EAAMgrK,UAE1B/lI,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,KACNnG,MAAOA,EAAM8oF,WAGH9oF,GAASA,EAAMsiK,UAE1Br9H,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,KACNnG,MAAOA,EAAM8oF,WAGH9oF,GAASA,EAAMo7J,UAE1Bn2H,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,KACNnG,MAAOA,EAAM8oF,WAGH9oF,GAASA,EAAMs1K,UAE1BrwI,EAAK0qJ,SAAUj1L,GAAS,CACvByL,KAAM,KACNnG,MAAOA,EAAM8oF,WAKd7jD,EAAK0qJ,SAAUj1L,GAAS,CACvBsF,MAAOA,EAOV,CAEKF,OAAOqD,KAAM5B,KAAK2uL,SAAU/2L,OAAS,IAAI8rC,EAAKirJ,QAAU3uL,KAAK2uL,SAElEjrJ,EAAKkrJ,aAAe5uL,KAAK4uL,aACzBlrJ,EAAKmrJ,eAAiB7uL,KAAK6uL,eAE3BnrJ,EAAKorJ,OAAS9uL,KAAK8uL,OACnBprJ,EAAKqrJ,SAAW/uL,KAAK+uL,SAErB,IAAMziG,EAAa,CAAC,EAEpB,IAAM,IAAM9pF,KAAOxC,KAAKssF,YAES,IAA3BtsF,KAAKssF,WAAY9pF,KAAiB8pF,EAAY9pF,IAAQ,GAM5D,OAFKjE,OAAOqD,KAAM0qF,GAAa10F,OAAS,IAAI8rC,EAAK4oD,WAAaA,GAEvD5oD,CAER,KAAC6qJ,CAAA,CAlLkB,CAAShT,IAsLvBkU,GAAM,SAAAC,GAAA1zK,EAAAyzK,EAAAC,GAAA,IAAAK,EAAAp1K,EAAA80K,GAEX,SAAAA,IAAc,IAAA6B,EAaiC,OAbjC7mL,EAAA,KAAAglL,IAEb6B,EAAAvB,EAAAlzL,KAAA,OAEKg6K,UAAW,EAEhBya,EAAK1sL,KAAO,SAEZ0sL,EAAKxpB,mBAAqB,IAAI6I,GAE9B2gB,EAAKvpB,iBAAmB,IAAI4I,GAC5B2gB,EAAKtpB,wBAA0B,IAAI2I,GAEnC2gB,EAAKw1P,iBAAmBjC,GAAsBvzP,CAE/C,CA2CC,OA3CA/nL,EAAAkmL,EAAA,EAAAjtL,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAWb,OATA9xC,GAAA5rH,EAAAm0K,EAAA7yL,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAK8nK,mBAAmBpM,KAAMl6J,EAAOsmK,oBAErC9nK,KAAK+nK,iBAAiBrM,KAAMl6J,EAAOumK,kBACnC/nK,KAAKgoK,wBAAwBtM,KAAMl6J,EAAOwmK,yBAE1ChoK,KAAK8mb,iBAAmBtlb,EAAOslb,iBAExB9mb,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmB8C,GAElB,OAAO2lI,GAAA5rH,EAAAm0K,EAAA7yL,WAAA,0BAAAC,KAAA,KAAyB0E,GAASqlL,QAE1C,GAAC,CAAApkL,IAAA,oBAAA/D,MAED,SAAmB64K,GAElBpwC,GAAA5rH,EAAAm0K,EAAA7yL,WAAA,0BAAAC,KAAA,KAAyBy6K,GAEzBt3K,KAAK8nK,mBAAmBpM,KAAM17J,KAAKioK,aAAcn4B,QAElD,GAAC,CAAAttI,IAAA,oBAAA/D,MAED,SAAmB+4K,EAAeC,GAEjCvwC,GAAA5rH,EAAAm0K,EAAA7yL,WAAA,0BAAAC,KAAA,KAAyB26K,EAAeC,GAExCz3K,KAAK8nK,mBAAmBpM,KAAM17J,KAAKioK,aAAcn4B,QAElD,GAAC,CAAAttI,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACyvL,CAAA,CA5DU,CAASja,IAgEf4D,GAAsB,IAAItS,GAC1B+jR,GAA2B,IAAI11R,GAC/B21R,GAA2B,IAAI31R,GAG/B06B,GAAiB,SAAAC,GAAA9zK,EAAA6zK,EAAAC,GAAA,IAAAsB,EAAAz2K,EAAAk1K,GAEtB,SAAAA,IAA4D,IAAAgD,EAA/C5C,EAAGhwL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAIiwL,EAAMjwL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG4zK,EAAI5zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAK6zK,EAAG7zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAqBtB,OArB0BwK,EAAA,KAAAolL,IAExDgD,EAAAzB,EAAAv0L,KAAA,OAEKo0L,qBAAsB,EAE3B4B,EAAKjuL,KAAO,oBAEZiuL,EAAK5C,IAAMA,EACX4C,EAAKh+J,KAAO,EAEZg+J,EAAKhf,KAAOA,EACZgf,EAAK/e,IAAMA,EACX+e,EAAKn5L,MAAQ,GAEbm5L,EAAK3C,OAASA,EACd2C,EAAKtxJ,KAAO,KAEZsxJ,EAAK1C,UAAY,GACjB0C,EAAKzC,WAAa,EAElByC,EAAKxC,yBAAyBwC,CAE/B,CAoOC,OApOAtpL,EAAAsmL,EAAA,EAAArtL,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAiBb,OAfA9xC,GAAA5rH,EAAAu0K,EAAAjzL,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAKiwL,IAAMzuL,EAAOyuL,IAClBjwL,KAAK60B,KAAOrzB,EAAOqzB,KAEnB70B,KAAK6zK,KAAOryK,EAAOqyK,KACnB7zK,KAAK8zK,IAAMtyK,EAAOsyK,IAClB9zK,KAAKtG,MAAQ8H,EAAO9H,MAEpBsG,KAAKkwL,OAAS1uL,EAAO0uL,OACrBlwL,KAAKuhC,KAAuB,OAAhB//B,EAAO+/B,KAAgB,KAAOhjC,OAAOmgB,OAAQ,CAAC,EAAGld,EAAO+/B,MAEpEvhC,KAAKmwL,UAAY3uL,EAAO2uL,UACxBnwL,KAAKowL,WAAa5uL,EAAO4uL,WAElBpwL,IAER,GAEA,CAAAwC,IAAA,iBAAA/D,MAQA,SAAgB6xL,GAGf,IAAMC,EAAe,GAAMvwL,KAAKwwL,gBAAkBF,EAElDtwL,KAAKiwL,IAAgB,EAAVr+B,GAAc30J,KAAKwzL,KAAMF,GACpCvwL,KAAKqwL,wBAEN,GAEA,CAAA7tL,IAAA,iBAAA/D,MAGA,WAEC,IAAM8xL,EAAetzL,KAAKyzL,IAAe,GAAVh/B,GAAgB1xJ,KAAKiwL,KAEpD,MAAO,GAAMjwL,KAAKwwL,gBAAkBD,CAErC,GAAC,CAAA/tL,IAAA,kBAAA/D,MAED,WAEC,OAAiB,EAAVmzJ,GAAc30J,KAAKwzL,KACzBxzL,KAAKyzL,IAAe,GAAVh/B,GAAgB1xJ,KAAKiwL,KAAQjwL,KAAK60B,KAE9C,GAAC,CAAAryB,IAAA,eAAA/D,MAED,WAGC,OAAOuB,KAAKmwL,UAAYlzL,KAAKiuC,IAAKlrC,KAAKkwL,OAAQ,EAEhD,GAAC,CAAA1tL,IAAA,gBAAA/D,MAED,WAGC,OAAOuB,KAAKmwL,UAAYlzL,KAAKC,IAAK8C,KAAKkwL,OAAQ,EAEhD,GAEA,CAAA1tL,IAAA,gBAAA/D,MAIA,SAAei4K,EAAUq0Q,EAAWC,GAEnC5xQ,GAAMnqJ,KAAO,GAAK,EAAG,IAAM44I,aAAc7nK,KAAKgoK,yBAE9C+iR,EAAU97Z,IAAKmqJ,GAAMl9K,EAAGk9K,GAAM/xK,GAAIkuJ,gBAAkBmhB,EAAW0C,GAAM9xK,GAErE8xK,GAAMnqJ,IAAK,EAAG,EAAG,IAAM44I,aAAc7nK,KAAKgoK,yBAE1CgjR,EAAU/7Z,IAAKmqJ,GAAMl9K,EAAGk9K,GAAM/xK,GAAIkuJ,gBAAkBmhB,EAAW0C,GAAM9xK,EAEtE,GAEA,CAAA9E,IAAA,cAAA/D,MAIA,SAAai4K,EAAUn1K,GAItB,OAFAvB,KAAKirb,cAAev0Q,EAAUm0Q,GAAYC,IAEnCvpb,EAAO+zJ,WAAYw1R,GAAYD,GAEvC,GAEA,CAAArob,IAAA,gBAAA/D,MAmCA,SAAekyL,EAAWC,EAAY10L,EAAGmL,EAAG8G,EAAOC,GAElDpO,KAAKkwL,OAASS,EAAYC,EAEP,OAAd5wL,KAAKuhC,OAETvhC,KAAKuhC,KAAO,CACXsvJ,SAAS,EACTF,UAAW,EACXC,WAAY,EACZp3E,QAAS,EACTE,QAAS,EACTvrG,MAAO,EACPC,OAAQ,IAKVpO,KAAKuhC,KAAKsvJ,SAAU,EACpB7wL,KAAKuhC,KAAKovJ,UAAYA,EACtB3wL,KAAKuhC,KAAKqvJ,WAAaA,EACvB5wL,KAAKuhC,KAAKi4E,QAAUt9G,EACpB8D,KAAKuhC,KAAKm4E,QAAUryG,EACpBrH,KAAKuhC,KAAKpzB,MAAQA,EAClBnO,KAAKuhC,KAAKnzB,OAASA,EAEnBpO,KAAKqwL,wBAEN,GAAC,CAAA7tL,IAAA,kBAAA/D,MAED,WAEoB,OAAduB,KAAKuhC,OAETvhC,KAAKuhC,KAAKsvJ,SAAU,GAIrB7wL,KAAKqwL,wBAEN,GAAC,CAAA7tL,IAAA,yBAAA/D,MAED,WAEC,IAAMo1K,EAAO7zK,KAAK6zK,KACd3nI,EAAM2nI,EAAO52K,KAAKyzL,IAAe,GAAVh/B,GAAgB1xJ,KAAKiwL,KAAQjwL,KAAK60B,KACzDzmB,EAAS,EAAI89B,EACb/9B,EAAQnO,KAAKkwL,OAAS9hL,EACtB49B,GAAS,GAAM79B,EACbozB,EAAOvhC,KAAKuhC,KAElB,GAAmB,OAAdvhC,KAAKuhC,MAAiBvhC,KAAKuhC,KAAKsvJ,QAAU,CAE9C,IAAMF,EAAYpvJ,EAAKovJ,UACtBC,EAAarvJ,EAAKqvJ,WAEnB5kJ,GAAQzK,EAAKi4E,QAAUrrG,EAAQwiL,EAC/BzkJ,GAAO3K,EAAKm4E,QAAUtrG,EAASwiL,EAC/BziL,GAASozB,EAAKpzB,MAAQwiL,EACtBviL,GAAUmzB,EAAKnzB,OAASwiL,CAEzB,CAEA,IAAME,EAAO9wL,KAAKowL,WACJ,IAATU,IAAa9kJ,GAAQ6nI,EAAOid,EAAO9wL,KAAK+wL,gBAE7C/wL,KAAK+nK,iBAAiBipB,gBAAiBhlJ,EAAMA,EAAO79B,EAAO+9B,EAAKA,EAAM99B,EAAQylK,EAAM7zK,KAAK8zK,IAAK9zK,KAAK8mb,kBAEnG9mb,KAAKgoK,wBAAwBtM,KAAM17J,KAAK+nK,kBAAmBj4B,QAE5D,GAAC,CAAAttI,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAAu0K,EAAAjzL,WAAA,eAAAC,KAAA,KAAiBy5B,GAgB3B,OAdAoN,EAAKvhC,OAAO8tL,IAAMjwL,KAAKiwL,IACvBvsJ,EAAKvhC,OAAO0yB,KAAO70B,KAAK60B,KAExB6O,EAAKvhC,OAAO0xK,KAAO7zK,KAAK6zK,KACxBnwI,EAAKvhC,OAAO2xK,IAAM9zK,KAAK8zK,IACvBpwI,EAAKvhC,OAAOzI,MAAQsG,KAAKtG,MAEzBgqC,EAAKvhC,OAAO+tL,OAASlwL,KAAKkwL,OAEP,OAAdlwL,KAAKuhC,OAAgBmC,EAAKvhC,OAAOo/B,KAAOhjC,OAAOmgB,OAAQ,CAAC,EAAG1e,KAAKuhC,OAErEmC,EAAKvhC,OAAOguL,UAAYnwL,KAAKmwL,UAC7BzsJ,EAAKvhC,OAAOiuL,WAAapwL,KAAKowL,WAEvB1sJ,CAER,KAACmsJ,CAAA,CA7PqB,CAASJ,IAiQ1BQ,IAAQ,GAGRiB,GAAU,SAAAC,GAAAn1K,EAAAk1K,EAAAC,GAAA,IAAAyB,EAAAj4K,EAAAu2K,GAEf,SAAAA,EAAard,EAAMC,EAAKud,GAAe,IAAA6B,EAAAzoL,EAAA,KAAAymL,IAEtCgC,EAAAN,EAAA/1L,KAAA,OAEK+H,KAAO,aAEZsuL,EAAK7B,aAAeA,EACpB6B,EAAK4zP,iBAAmB,KACxB5zP,EAAKg+B,kBAAoB,EAEzB,IAAM1/B,EAAW,IAAI3B,GAAmBI,GAd3B,EAcwCpc,EAAMC,GAC3D0d,EAAS7c,OAASue,EAAKve,OACvBue,EAAK9mK,IAAKolK,GAEV,IAAMC,EAAW,IAAI5B,GAAmBI,GAlB3B,EAkBwCpc,EAAMC,GAC3D2d,EAAS9c,OAASue,EAAKve,OACvBue,EAAK9mK,IAAKqlK,GAEV,IAAMC,EAAW,IAAI7B,GAAmBI,GAtB3B,EAsBwCpc,EAAMC,GAC3D4d,EAAS/c,OAASue,EAAKve,OACvBue,EAAK9mK,IAAKslK,GAEV,IAAMC,EAAW,IAAI9B,GAAmBI,GA1B3B,EA0BwCpc,EAAMC,GAC3D6d,EAAShd,OAASue,EAAKve,OACvBue,EAAK9mK,IAAKulK,GAEV,IAAMC,EAAW,IAAI/B,GAAmBI,GA9B3B,EA8BwCpc,EAAMC,GAC3D8d,EAASjd,OAASue,EAAKve,OACvBue,EAAK9mK,IAAKwlK,GAEV,IAAMC,EAAW,IAAIhC,GAAmBI,GAlC3B,EAkCwCpc,EAAMC,GAEtC,OADrB+d,EAASld,OAASue,EAAKve,OACvBue,EAAK9mK,IAAKylK,GAAWqB,CAEtB,CA6HC,OA7HA3pL,EAAA2nL,EAAA,EAAA1uL,IAAA,yBAAA/D,MAED,WAEC,IAM6BgmE,EANvBqiX,EAAmB9mb,KAAK8mb,iBAExBnkN,EAAU3iO,KAAK4d,SAASnc,SAE9Bypb,EAAAxpa,EAAuEihN,EAAO,GAAtEnxC,EAAQ05P,EAAA,GAAEz5P,EAAQy5P,EAAA,GAAEx5P,EAAQw5P,EAAA,GAAEv5P,EAAQu5P,EAAA,GAAEt5P,EAAQs5P,EAAA,GAAEr5P,EAAQq5P,EAAA,GAAaxmX,EAAAoG,EAEzD63J,GAAO,IAA7B,IAAAj+J,EAAAjpE,MAAAgpE,EAAAC,EAAA39D,KAAAkb,MAAA,KAAY2lJ,EAAMnjG,EAAAhmE,MAAcuB,KAAK4gE,OAAQgnG,EAAS,QAAA/uJ,GAAA6rD,EAAAp+D,EAAAuS,EAAA,SAAA6rD,EAAAj+D,GAAA,CAEtD,GAAKqgb,IAAqBjC,GAEzBrzP,EAAS7f,GAAG1iJ,IAAK,EAAG,EAAG,GACvBuiK,EAASza,OAAQ,EAAG,EAAG,GAEvB0a,EAAS9f,GAAG1iJ,IAAK,EAAG,EAAG,GACvBwiK,EAAS1a,QAAU,EAAG,EAAG,GAEzB2a,EAAS/f,GAAG1iJ,IAAK,EAAG,GAAK,GACzByiK,EAAS3a,OAAQ,EAAG,EAAG,GAEvB4a,EAAShgB,GAAG1iJ,IAAK,EAAG,EAAG,GACvB0iK,EAAS5a,OAAQ,GAAK,EAAG,GAEzB6a,EAASjgB,GAAG1iJ,IAAK,EAAG,EAAG,GACvB2iK,EAAS7a,OAAQ,EAAG,EAAG,GAEvB8a,EAASlgB,GAAG1iJ,IAAK,EAAG,EAAG,GACvB4iK,EAAS9a,OAAQ,EAAG,GAAK,OAEnB,IAAK+vQ,IAAqBhC,GAsBhC,MAAM,IAAIhnb,MAAO,yEAA2Egpb,GApB5Ft1P,EAAS7f,GAAG1iJ,IAAK,GAAK,EAAG,GACzBuiK,EAASza,QAAU,EAAG,EAAG,GAEzB0a,EAAS9f,GAAG1iJ,IAAK,GAAK,EAAG,GACzBwiK,EAAS1a,OAAQ,EAAG,EAAG,GAEvB2a,EAAS/f,GAAG1iJ,IAAK,EAAG,EAAG,GACvByiK,EAAS3a,OAAQ,EAAG,EAAG,GAEvB4a,EAAShgB,GAAG1iJ,IAAK,EAAG,GAAK,GACzB0iK,EAAS5a,OAAQ,GAAK,EAAG,GAEzB6a,EAASjgB,GAAG1iJ,IAAK,GAAK,EAAG,GACzB2iK,EAAS7a,OAAQ,EAAG,EAAG,GAEvB8a,EAASlgB,GAAG1iJ,IAAK,GAAK,EAAG,GACzB4iK,EAAS9a,OAAQ,EAAG,GAAK,EAM1B,CAAC,IAE4BjyG,EAF5BC,EAAA+F,EAEqB63J,GAAO,IAA7B,IAAA59J,EAAAtpE,MAAAqpE,EAAAC,EAAAh+D,KAAAkb,MAAgC,KAApB2lJ,EAAM9iG,EAAArmE,MAEjBuB,KAAKosB,IAAKw7I,GAEVA,EAAO2P,mBAER,CAAC,OAAA1+J,GAAAksD,EAAAz+D,EAAAuS,EAAA,SAAAksD,EAAAt+D,GAAA,CAEF,GAAC,CAAAjE,IAAA,SAAA/D,MAED,SAAQqzL,EAAUC,GAEI,OAAhB/xL,KAAKk9D,QAAkBl9D,KAAKu3K,oBAEjC,IAAQ8Z,EAAoCrxL,KAApCqxL,aAAc6/B,EAAsBlxN,KAAtBkxN,kBAEjBlxN,KAAK8mb,mBAAqBh1P,EAASg1P,mBAEvC9mb,KAAK8mb,iBAAmBh1P,EAASg1P,iBAEjC9mb,KAAKmrb,0BAIN,IAAAn5P,EAAAtwK,EAAuE1hB,KAAK4d,SAAQ,GAA5E4zK,EAAQQ,EAAA,GAAEP,EAAQO,EAAA,GAAEN,EAAQM,EAAA,GAAEL,EAAQK,EAAA,GAAEJ,EAAQI,EAAA,GAAEH,EAAQG,EAAA,GAE5DC,EAAsBH,EAASI,kBAC/Bk5P,EAAwBt5P,EAASm/B,oBACjCo6N,EAA2Bv5P,EAASq/B,uBAEpC5+B,EAAmBT,EAASU,GAAG3B,QAErCiB,EAASU,GAAG3B,SAAU,EAEtB,IAAMhyB,EAAkBwyB,EAAahwB,QAAQxC,gBAE7CwyB,EAAahwB,QAAQxC,iBAAkB,EAEvCizB,EAASW,gBAAiBpB,EAAc,EAAG6/B,GAC3Cp/B,EAAStsL,OAAQusL,EAAOP,GAExBM,EAASW,gBAAiBpB,EAAc,EAAG6/B,GAC3Cp/B,EAAStsL,OAAQusL,EAAON,GAExBK,EAASW,gBAAiBpB,EAAc,EAAG6/B,GAC3Cp/B,EAAStsL,OAAQusL,EAAOL,GAExBI,EAASW,gBAAiBpB,EAAc,EAAG6/B,GAC3Cp/B,EAAStsL,OAAQusL,EAAOJ,GAExBG,EAASW,gBAAiBpB,EAAc,EAAG6/B,GAC3Cp/B,EAAStsL,OAAQusL,EAAOH,GAKxBP,EAAahwB,QAAQxC,gBAAkBA,EAEvCizB,EAASW,gBAAiBpB,EAAc,EAAG6/B,GAC3Cp/B,EAAStsL,OAAQusL,EAAOF,GAExBC,EAASW,gBAAiBR,EAAqBm5P,EAAuBC,GAEtEv5P,EAASU,GAAG3B,QAAU0B,EAEtBlB,EAAahwB,QAAQjC,kBAAmB,CAEzC,KAAC8xB,CAAA,CAjKc,CAAS1b,IAqKnBkd,GAAW,SAAAC,GAAA32K,EAAA02K,EAAAC,GAAA,IAAAM,EAAAt4K,EAAA+3K,GAEhB,SAAAA,EAAaj1B,EAAQnZ,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,EAAY7D,GAAa,IAAA+8B,EASrF,OATqFjtL,EAAA,KAAAioL,GAExGj1B,OAAoBrzJ,IAAXqzJ,EAAuBA,EAAS,GACzCnZ,OAAsBl6I,IAAZk6I,EAAwBA,EAAU0F,IAE5C0tC,EAAAzE,EAAAp2L,KAAA,KAAO4gK,EAAQnZ,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,EAAY7D,IAEjFm4B,eAAgB,EAErB4E,EAAK34B,OAAQ,EAAM24B,CAEpB,CAYC,OAZAnuL,EAAAmpL,EAAA,EAAAlwL,IAAA,SAAAutB,IAED,WAEC,OAAO/vB,KAAKm5I,KAEb,EAAClqH,IAED,SAAYxwB,GAEXuB,KAAKm5I,MAAQ16I,CAEd,KAACi0L,CAAA,CAzBe,CAAS30B,IA6BpBg1B,GAAqB,SAAAC,GAAAh3K,EAAA+2K,EAAAC,GAAA,IAAAyE,EAAA98K,EAAAo4K,GAE1B,SAAAA,IAAsC,IAAAgb,EAAzBxoJ,EAAItlD,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGgB,EAAOhB,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAACwK,EAAA,KAAAsoL,IAElCgb,EAAAtW,EAAA56L,KAAA,KAAO0oD,EAAMA,EAAMtkD,IAEdswL,yBAA0B,EAE/B,IAAMp4C,EAAQ,CAAEhrI,MAAOo3C,EAAMn3C,OAAQm3C,EAAMgpD,MAAO,GAC5CkvD,EAAS,CAAEtkB,EAAOA,EAAOA,EAAOA,EAAOA,EAAOA,GAuBwC,YArBlE/uI,IAArBnJ,EAAQw9J,WAGZymR,GAAU,wFACVjkb,EAAQ05J,WAAa15J,EAAQw9J,WAAavP,GAAeM,GAAiBD,IAI3Ew+C,EAAK1sC,QAAU,IAAIqxB,GAAaj1B,EAAQx8J,EAAQqjJ,QAASrjJ,EAAQk9J,MAAOl9J,EAAQm9J,MAAOn9J,EAAQo9J,UAAWp9J,EAAQq9J,UAAWr9J,EAAQs9J,OAAQt9J,EAAQ2D,KAAM3D,EAAQu9J,WAAYv9J,EAAQ05J,YAUvLozC,EAAK1sC,QAAQlC,uBAAwB,EAErC4uC,EAAK1sC,QAAQxC,qBAA8Cz0J,IAA5BnJ,EAAQ49J,iBAAgC59J,EAAQ49J,gBAC/EkvC,EAAK1sC,QAAQ/C,eAAkCl0J,IAAtBnJ,EAAQq9J,UAA0Br9J,EAAQq9J,UAAYzT,GAAakjD,CAE7F,CA0GC,OA1GAxkM,EAAAwpL,EAAA,EAAAvwL,IAAA,6BAAA/D,MAED,SAA4BqzL,EAAUzwB,GAErCrhK,KAAKqhK,QAAQz8J,KAAOy8J,EAAQz8J,KAC5B5E,KAAKqhK,QAAQ1G,WAAa0G,EAAQ1G,WAElC36J,KAAKqhK,QAAQxC,gBAAkBwC,EAAQxC,gBACvC7+J,KAAKqhK,QAAQ/C,UAAY+C,EAAQ/C,UACjCt+J,KAAKqhK,QAAQhD,UAAYgD,EAAQhD,UAEjC,IAAM80B,EAEK,CACTC,UAAW,CAAE30L,MAAO,OAHhB00L,EAMmB,qYANnBA,EA0BqB,+UAoBrBroB,EAAW,IAAI2hB,GAAa,EAAG,EAAG,GAElC5T,EAAW,IAAI0V,GAAgB,CAEpCp1L,KAAM,sBAENi1L,SAAUF,GAAeiF,GACzBvE,aAAcuE,EACdtE,eAAgBsE,EAChBtX,KAAMz0B,GACNw0B,SA3tZgB,IA+tZjB/C,EAASuV,SAASgF,UAAU30L,MAAQ4iK,EAEpC,IAAMgyB,EAAO,IAAInI,GAAMpgB,EAAU+N,GAE3Bya,EAAmBjyB,EAAQ/C,UAajC,OAVK+C,EAAQ/C,YAActT,KAA2BqW,EAAQ/C,UAAYzT,IAE3D,IAAIqmC,GAAY,EAAG,GAAIlxL,MAC/BsjK,OAAQwuB,EAAUuB,GAEzBhyB,EAAQ/C,UAAYg1B,EAEpBD,EAAKvoB,SAASpJ,UACd2xB,EAAKxa,SAASnX,UAEP1hK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOqzL,EAAUtqJ,EAAO+mE,EAAOglF,GAI9B,IAFA,IAAMtB,EAAsBH,EAASI,kBAE3Bx1L,EAAI,EAAGA,EAAI,EAAGA,IAEvBo1L,EAASW,gBAAiBzyL,KAAMtD,GAEhCo1L,EAAS3xL,MAAOqnC,EAAO+mE,EAAOglF,GAI/BzB,EAASW,gBAAiBR,EAE3B,KAACc,CAAA,CA5IyB,CAAS/xB,IAgJ9BwyB,GAAyB,IAAI1sB,GAC7B2sB,GAAyB,IAAI3sB,GAC7B4sB,GAA8B,IAAIl9B,GAElCm9B,GAAK,WAEV,SAAAA,IAA6D,IAAhD5qB,EAAM9oK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI6mK,GAAS,EAAG,EAAG,GAAKyE,EAAQtrK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAAkpL,GAEzD3zL,KAAKo0L,SAAU,EAIfp0L,KAAK+oK,OAASA,EACd/oK,KAAKurK,SAAWA,CAEjB,CAsLC,OAtLAhiK,EAAAoqL,EAAA,EAAAnxL,IAAA,MAAA/D,MAED,SAAKsqK,EAAQwC,GAKZ,OAHAvrK,KAAK+oK,OAAOrN,KAAMqN,GAClB/oK,KAAKurK,SAAWA,EAETvrK,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAevC,EAAGmL,EAAGC,EAAGF,GAKvB,OAHApH,KAAK+oK,OAAO95I,IAAK/yB,EAAGmL,EAAGC,GACvBtH,KAAKurK,SAAWnkK,EAETpH,IAER,GAAC,CAAAwC,IAAA,gCAAA/D,MAED,SAA+BsqK,EAAQ2B,GAKtC,OAHA1qK,KAAK+oK,OAAOrN,KAAMqN,GAClB/oK,KAAKurK,UAAab,EAAMzG,IAAKjkK,KAAK+oK,QAE3B/oK,IAER,GAAC,CAAAwC,IAAA,wBAAA/D,MAED,SAAuBzC,EAAGuK,EAAGtK,GAE5B,IAAM8sK,EAASyqB,GAASl+B,WAAYr5J,EAAGsK,GAAIiqK,MAAOijB,GAASn+B,WAAYt5J,EAAGuK,IAAMs6G,YAMhF,OAFA7gH,KAAK4zL,8BAA+B7qB,EAAQ/sK,GAErCgE,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM6sK,GAKL,OAHAtrK,KAAK+oK,OAAOrN,KAAM4P,EAAMvC,QACxB/oK,KAAKurK,SAAWD,EAAMC,SAEfvrK,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,WAIC,IAAMo1L,EAAsB,EAAM7zL,KAAK+oK,OAAOnxK,SAI9C,OAHAoI,KAAK+oK,OAAOxT,eAAgBs+B,GAC5B7zL,KAAKurK,UAAYsoB,EAEV7zL,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAKC,OAHAuB,KAAKurK,WAAc,EACnBvrK,KAAK+oK,OAAO6d,SAEL5mL,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBisK,GAEhB,OAAO1qK,KAAK+oK,OAAO9E,IAAKyG,GAAU1qK,KAAKurK,QAExC,GAAC,CAAA/oK,IAAA,mBAAA/D,MAED,SAAkB2sK,GAEjB,OAAOprK,KAAKwtK,gBAAiBpC,EAAO/U,QAAW+U,EAAOlC,MAEvD,GAAC,CAAA1mK,IAAA,eAAA/D,MAED,SAAcisK,EAAOnpK,GAEpB,OAAOA,EAAOm6J,KAAMgP,GAAQgQ,gBAAiB16K,KAAK+oK,QAAU/oK,KAAKwtK,gBAAiB9C,GAEnF,GAAC,CAAAloK,IAAA,gBAAA/D,MAED,SAAe4vG,EAAM9sG,GAEpB,IAAM8sK,EAAYhgE,EAAKjxG,MAAOo2L,IAExB/qB,EAAczoK,KAAK+oK,OAAO9E,IAAKoK,GAErC,GAAqB,IAAhB5F,EAGJ,OAA4C,IAAvCzoK,KAAKwtK,gBAAiBn/D,EAAKvjE,OAExBvpC,EAAOm6J,KAAMrtD,EAAKvjE,OAKnB,KAIR,IAAMxzC,IAAQ+2G,EAAKvjE,MAAMm5H,IAAKjkK,KAAK+oK,QAAW/oK,KAAKurK,UAAa9C,EAEhE,OAAKnxK,EAAI,GAAKA,EAAI,EAEV,KAIDiK,EAAOm6J,KAAMrtD,EAAKvjE,OAAQ4vI,gBAAiBrM,EAAW/2K,EAE9D,GAAC,CAAAkL,IAAA,iBAAA/D,MAED,SAAgB4vG,GAIf,IAAMylF,EAAY9zL,KAAKwtK,gBAAiBn/D,EAAKvjE,OACvCipJ,EAAU/zL,KAAKwtK,gBAAiBn/D,EAAKtjE,KAE3C,OAAS+oJ,EAAY,GAAKC,EAAU,GAASA,EAAU,GAAKD,EAAY,CAEzE,GAAC,CAAAtxL,IAAA,gBAAA/D,MAED,SAAe+rK,GAEd,OAAOA,EAAIwpB,gBAAiBh0L,KAE7B,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB2sK,GAEjB,OAAOA,EAAO4oB,gBAAiBh0L,KAEhC,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAe8C,GAEd,OAAOA,EAAOm6J,KAAM17J,KAAK+oK,QAASxT,gBAAkBv1J,KAAKurK,SAE1D,GAAC,CAAA/oK,IAAA,eAAA/D,MAED,SAAci7J,EAAQu6B,GAErB,IAAMpe,EAAeoe,GAAwBP,GAActN,gBAAiB1sB,GAEtEw6B,EAAiBl0L,KAAKm0L,cAAeX,IAAW3rB,aAAcnO,GAE9DqP,EAAS/oK,KAAK+oK,OAAOrJ,aAAcmW,GAAeh1D,YAIxD,OAFA7gH,KAAKurK,UAAa2oB,EAAejwB,IAAK8E,GAE/B/oK,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsrC,GAIV,OAFA/pC,KAAKurK,UAAYxhI,EAAOk6H,IAAKjkK,KAAK+oK,QAE3B/oK,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ6sK,GAEP,OAAOA,EAAMvC,OAAOyD,OAAQxsK,KAAK+oK,SAAcuC,EAAMC,WAAavrK,KAAKurK,QAExE,GAAC,CAAA/oK,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAAC2zL,CAAA,CAjMS,GAqML23P,GAA0B,IAAIp+Q,GAC9BonB,GAA0B,IAAIxtB,GAE9BytB,GAAO,WAEZ,SAAAA,IAA0H,IAA7G1nB,EAAE5sK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAASr8D,EAAEr3H,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAASp8D,EAAEt3H,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAAStY,EAAEp7K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAASa,EAAEv0L,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAASc,EAAEx0L,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAI0zL,GAAOlpL,EAAA,KAAA8pL,GAEtHv0L,KAAK00L,OAAS,CAAE7nB,EAAIv1C,EAAIC,EAAI8jD,EAAImZ,EAAIC,EAErC,CAsKC,OAtKAlrL,EAAAgrL,EAAA,EAAA/xL,IAAA,MAAA/D,MAED,SAAKouK,EAAIv1C,EAAIC,EAAI8jD,EAAImZ,EAAIC,GAExB,IAAMC,EAAS10L,KAAK00L,OASpB,OAPAA,EAAQ,GAAIh5B,KAAMmR,GAClB6nB,EAAQ,GAAIh5B,KAAMpkC,GAClBo9D,EAAQ,GAAIh5B,KAAMnkC,GAClBm9D,EAAQ,GAAIh5B,KAAM2f,GAClBqZ,EAAQ,GAAIh5B,KAAM84B,GAClBE,EAAQ,GAAIh5B,KAAM+4B,GAEXz0L,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMk2L,GAIL,IAFA,IAAMD,EAAS10L,KAAK00L,OAEVh4L,EAAI,EAAGA,EAAI,EAAGA,IAEvBg4L,EAAQh4L,GAAIg/J,KAAMi5B,EAAQD,OAAQh4L,IAInC,OAAOsD,IAER,GAAC,CAAAwC,IAAA,0BAAA/D,MAED,SAAyBqI,GAA8C,IAA3Cggb,EAAgB7mb,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG4kb,GAExCnwP,EAAS10L,KAAK00L,OACdtsJ,EAAKthC,EAAEk/H,SACP4uD,EAAMxsJ,EAAI,GAAKysJ,EAAMzsJ,EAAI,GAAK0sJ,EAAM1sJ,EAAI,GAAK2sJ,EAAM3sJ,EAAI,GACvD4sJ,EAAM5sJ,EAAI,GAAK6sJ,EAAM7sJ,EAAI,GAAK8sJ,EAAM9sJ,EAAI,GAAK+sJ,EAAM/sJ,EAAI,GACvDgtJ,EAAMhtJ,EAAI,GAAKitJ,EAAMjtJ,EAAI,GAAKktJ,EAAOltJ,EAAI,IAAMmtJ,EAAOntJ,EAAI,IAC1DotJ,EAAOptJ,EAAI,IAAMqtJ,EAAOrtJ,EAAI,IAAMstJ,EAAOttJ,EAAI,IAAMutJ,EAAOvtJ,EAAI,IAQpE,GANAssJ,EAAQ,GAAIkB,cAAeb,EAAMH,EAAKO,EAAMH,EAAKO,EAAOH,EAAKO,EAAOH,GAAO30E,YAC3E6zE,EAAQ,GAAIkB,cAAeb,EAAMH,EAAKO,EAAMH,EAAKO,EAAOH,EAAKO,EAAOH,GAAO30E,YAC3E6zE,EAAQ,GAAIkB,cAAeb,EAAMF,EAAKM,EAAMF,EAAKM,EAAOF,EAAKM,EAAOF,GAAO50E,YAC3E6zE,EAAQ,GAAIkB,cAAeb,EAAMF,EAAKM,EAAMF,EAAKM,EAAOF,EAAKM,EAAOF,GAAO50E,YAC3E6zE,EAAQ,GAAIkB,cAAeb,EAAMD,EAAKK,EAAMD,EAAKK,EAAOD,EAAMK,EAAOD,GAAO70E,YAEvEimU,IAAqBjC,GAEzBnwP,EAAQ,GAAIkB,cAAeb,EAAMD,EAAKK,EAAMD,EAAKK,EAAOD,EAAMK,EAAOD,GAAO70E,gBAEtE,IAAKimU,IAAqBhC,GAMhC,MAAM,IAAIhnb,MAAO,uEAAyEgpb,GAJ1FpyP,EAAQ,GAAIkB,cAAed,EAAKI,EAAKI,EAAMI,GAAO70E,WAMnD,CAEA,OAAO7gH,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkB0D,GAEjB,QAA+BiI,IAA1BjI,EAAO8jL,eAEoB,OAA1B9jL,EAAO8jL,gBAA0B9jL,EAAOmkL,wBAE7CglQ,GAAU5vR,KAAMv5J,EAAO8jL,gBAAiBpe,aAAc1lK,EAAO8lK,iBAEvD,CAEN,IAAM6C,EAAW3oK,EAAO2oK,SAES,OAA5BA,EAASmb,gBAA0Bnb,EAASwb,wBAEjDglQ,GAAU5vR,KAAMoP,EAASmb,gBAAiBpe,aAAc1lK,EAAO8lK,YAEhE,CAEA,OAAOjoK,KAAKutK,iBAAkB+9Q,GAE/B,GAAC,CAAA9ob,IAAA,mBAAA/D,MAED,SAAkBo3L,GAMjB,OAJAy1P,GAAUj1R,OAAOpnI,IAAK,EAAG,EAAG,GAC5Bq8Z,GAAUpiR,OAAS,kBACnBoiR,GAAUzjR,aAAcguB,EAAO5tB,aAExBjoK,KAAKutK,iBAAkB+9Q,GAE/B,GAAC,CAAA9ob,IAAA,mBAAA/D,MAED,SAAkB2sK,GAMjB,IAJA,IAAMspB,EAAS10L,KAAK00L,OACdr+B,EAAS+U,EAAO/U,OAChBy/B,GAAc1qB,EAAOlC,OAEjBxsK,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAI9B,GAFiBg4L,EAAQh4L,GAAI8wK,gBAAiBnX,GAE9By/B,EAEf,OAAO,CAIT,CAEA,OAAO,CAER,GAAC,CAAAtzL,IAAA,gBAAA/D,MAED,SAAe+rK,GAId,IAFA,IAAMkqB,EAAS10L,KAAK00L,OAEVh4L,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAM4uK,EAAQopB,EAAQh4L,GAQtB,GAJA43L,GAAUp4L,EAAIovK,EAAMvC,OAAO7sK,EAAI,EAAIsuK,EAAIttK,IAAIhB,EAAIsuK,EAAIt/H,IAAIhvC,EACvDo4L,GAAUjtL,EAAIikK,EAAMvC,OAAO1hK,EAAI,EAAImjK,EAAIttK,IAAImK,EAAImjK,EAAIt/H,IAAI7jC,EACvDitL,GAAUhtL,EAAIgkK,EAAMvC,OAAOzhK,EAAI,EAAIkjK,EAAIttK,IAAIoK,EAAIkjK,EAAIt/H,IAAI5jC,EAElDgkK,EAAMkC,gBAAiB8mB,IAAc,EAEzC,OAAO,CAIT,CAEA,OAAO,CAER,GAAC,CAAA9xL,IAAA,gBAAA/D,MAED,SAAeisK,GAId,IAFA,IAAMgqB,EAAS10L,KAAK00L,OAEVh4L,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAKg4L,EAAQh4L,GAAI8wK,gBAAiB9C,GAAU,EAE3C,OAAO,EAMT,OAAO,CAER,GAAC,CAAAloK,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACu0L,CAAA,CA5KW,GAgLb,SAASwB,KAER,IAAIx2L,EAAU,KACVy2L,GAAc,EACdC,EAAgB,KAChBC,EAAY,KAEhB,SAASC,EAAkBluJ,EAAMmuJ,GAEhCH,EAAehuJ,EAAMmuJ,GAErBF,EAAY32L,EAAQkiE,sBAAuB00H,EAE5C,CAEA,MAAO,CAENrrJ,MAAO,YAEe,IAAhBkrJ,GACkB,OAAlBC,IAELC,EAAY32L,EAAQkiE,sBAAuB00H,GAE3CH,GAAc,EAEf,EAEAvnH,KAAM,WAELlvE,EAAQ2jE,qBAAsBgzH,GAE9BF,GAAc,CAEf,EAEAK,iBAAkB,SAAWl+I,GAE5B89I,EAAgB99I,CAEjB,EAEAm+I,WAAY,SAAW73L,GAEtBc,EAAUd,CAEX,EAIF,CAEA,SAAS83L,GAAiB3pI,EAAI4pI,GAE7B,IAAMC,EAAWD,EAAaC,SAExBC,EAAU,IAAI31I,QAqNpB,MAAO,CAENhxB,IAvED,SAAcmmI,GAIb,OAFKA,EAAUszB,+BAA+BtzB,EAAYA,EAAUxyH,MAE7DgzJ,EAAQ3mK,IAAKmmI,EAErB,EAkECt1F,OAhED,SAAiBs1F,GAEXA,EAAUszB,+BAA+BtzB,EAAYA,EAAUxyH,MAEpE,IAAMA,EAAOgzJ,EAAQ3mK,IAAKmmI,GAErBxyH,IAEJkpB,EAAG+pI,aAAcjzJ,EAAKy2H,QAEtBu8B,EAAQl5J,OAAQ04H,GAIlB,EAmDCoN,OAjDD,SAAiBpN,EAAW0gC,GAE3B,GAAK1gC,EAAU6wB,oBAAf,CAEC,IAAM8P,EAASH,EAAQ3mK,IAAKmmI,KAErB2gC,GAAUA,EAAOx9L,QAAU68J,EAAU78J,UAE3Cq9L,EAAQznK,IAAKinI,EAAW,CACvBiE,OAAQjE,EAAUiE,OAClBv1J,KAAMsxJ,EAAUtxJ,KAChBkyL,gBAAiB5gC,EAAU6gC,YAC3B19L,QAAS68J,EAAU78J,SAOtB,KAjBA,CAmBK68J,EAAUszB,+BAA+BtzB,EAAYA,EAAUxyH,MAEpE,IAAMA,EAAOgzJ,EAAQ3mK,IAAKmmI,GAE1B,QAAc9rJ,IAATs5B,EAEJgzJ,EAAQznK,IAAKinI,EAjMf,SAAuBA,EAAW0gC,GAEjC,IAWIhyL,EAXE7B,EAAQmzJ,EAAUnzJ,MAClB2/K,EAAQxsB,EAAUwsB,MAClBn9H,EAAOxiD,EAAMyuQ,WAEbr3G,EAASvtG,EAAGoqI,eASlB,GAPApqI,EAAGqqI,WAAYL,EAAYz8B,GAC3BvtG,EAAGsqI,WAAYN,EAAY7zL,EAAO2/K,GAElCxsB,EAAUgtB,mBAILngL,aAAiB8xJ,aAErBjwJ,EAAOgoD,EAAG2iR,WAEJ,GAAKxsU,aAAiB+xJ,YAE5B,GAAKoB,EAAU0uB,yBAA2B,CAEzC,IAAK6R,EAMJ,MAAM,IAAI34L,MAAO,2EAJjB8G,EAAOgoD,EAAG2+X,UAQZ,MAEC3mb,EAAOgoD,EAAG6rU,oBAIL,GAAK11X,aAAiBiyJ,WAE5BpwJ,EAAOgoD,EAAG4+X,WAEJ,GAAKzob,aAAiBwkG,YAE5B3iG,EAAOgoD,EAAG6+X,kBAEJ,GAAK1ob,aAAiBi3J,WAE5Bp1J,EAAOgoD,EAAG8+X,SAEJ,GAAK3ob,aAAiBkyJ,UAE5BrwJ,EAAOgoD,EAAGknF,UAEJ,GAAK/wI,aAAiBwyG,WAE5B3wG,EAAOgoD,EAAG2jR,kBAEJ,MAAKxtU,aAAiBg3J,mBAM5B,MAAM,IAAIj8J,MAAO,0DAA4DiF,GAJ7E6B,EAAOgoD,EAAG2jR,aAMX,CAEA,MAAO,CACNp2K,OAAQA,EACRv1J,KAAMA,EACNkyL,gBAAiB/zL,EAAMo0L,kBACvB99L,QAAS68J,EAAU78J,QACnBksD,KAAMA,EAGR,CAoH0ByxI,CAAc9gC,EAAW0gC,SAE3C,GAAKlzJ,EAAKrqC,QAAU68J,EAAU78J,QAAU,CAE9C,GAAKqqC,EAAK6hB,OAAS2wG,EAAUnzJ,MAAMyuQ,WAElC,MAAM,IAAI1zQ,MAAO,0JAxHpB,SAAuBq8J,EAAQjE,EAAW0gC,GAEzC,IAAM7zL,EAAQmzJ,EAAUnzJ,MAClB4/K,EAAczsB,EAAUwzR,aACxBC,EAAezzR,EAAUyzR,aAW/B,GATA/8X,EAAGqqI,WAAYL,EAAYz8B,IAEE,IAAxBwoB,EAAYhlG,OAAyC,IAAxBgsW,EAAa/xb,QAG9Cg1D,EAAGwqI,cAAeR,EAAY,EAAG7zL,GAIL,IAAxB4mb,EAAa/xb,OAAe,CAEhC,IAAM,IAAI8E,EAAI,EAAGmK,EAAI8ib,EAAa/xb,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEvD,IAAMorC,EAAQ6hZ,EAAcjtb,GACvB+5L,EAEJ7pI,EAAGwqI,cAAeR,EAAY9uJ,EAAMgD,MAAQ/nC,EAAMo0L,kBACjDp0L,EAAO+kC,EAAMgD,MAAOhD,EAAM61C,OAI3B/wB,EAAGwqI,cAAeR,EAAY9uJ,EAAMgD,MAAQ/nC,EAAMo0L,kBACjDp0L,EAAMs0L,SAAUvvJ,EAAMgD,MAAOhD,EAAMgD,MAAQhD,EAAM61C,OAIpD,CAEAu4E,EAAUy1R,mBAEX,EAG6B,IAAxBhpQ,EAAYhlG,QAEX84G,EAEJ7pI,EAAGwqI,cAAeR,EAAYjU,EAAY54I,OAAShnC,EAAMo0L,kBACxDp0L,EAAO4/K,EAAY54I,OAAQ44I,EAAYhlG,OAIxC/wB,EAAGwqI,cAAeR,EAAYjU,EAAY54I,OAAShnC,EAAMo0L,kBACxDp0L,EAAMs0L,SAAU1U,EAAY54I,OAAQ44I,EAAY54I,OAAS44I,EAAYhlG,QAIvEglG,EAAYhlG,OAAU,GAIvBu4E,EAAUgtB,kBAEX,CAiEEoU,CAAc5zJ,EAAKy2H,OAAQjE,EAAW0gC,GAEtClzJ,EAAKrqC,QAAU68J,EAAU78J,OAE1B,CAtBA,CAwBD,EAUD,CAAC,IAEKk+L,GAAa,SAAAC,GAAAx7K,EAAAu7K,EAAAC,GAAA,IAAAsW,EAAAnzL,EAAA48K,GAElB,SAAAA,IAA4E,IAAA62B,EAA/DjgN,EAAKlO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGmO,EAAMnO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG4sL,EAAa5sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG6sL,EAAc7sL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAACwK,EAAA,KAAA8sL,IAExE62B,EAAAtgB,EAAAjxM,KAAA,OAEK+H,KAAO,gBAEZwpN,EAAK51C,WAAa,CACjBrqK,MAAOA,EACPC,OAAQA,EACRy+K,cAAeA,EACfC,eAAgBA,GAsBjB,IAnBA,IAAM6K,EAAaxpL,EAAQ,EACrBypL,EAAcxpL,EAAS,EAEvBm/K,EAAQtwL,KAAKwf,MAAOowK,GACpBW,EAAQvwL,KAAKwf,MAAOqwK,GAEpBgB,EAASP,EAAQ,EACjBQ,EAASP,EAAQ,EAEjBqK,EAAgB1pL,EAAQo/K,EACxBuK,EAAiB1pL,EAASo/K,EAI1BrG,EAAU,GACV8F,EAAW,GACX5F,EAAU,GACVC,EAAM,GAEF7f,EAAK,EAAGA,EAAKsmB,EAAQtmB,IAI9B,IAFA,IAAMpgK,EAAIogK,EAAKqwB,EAAiBF,EAEtBpwB,EAAK,EAAGA,EAAKsmB,EAAQtmB,IAAQ,CAEtC,IAAMtrK,EAAIsrK,EAAKqwB,EAAgBF,EAE/B1K,EAASnwL,KAAMZ,GAAKmL,EAAG,GAEvBggL,EAAQvqL,KAAM,EAAG,EAAG,GAEpBwqL,EAAIxqL,KAAM0qK,EAAK+lB,GACfjG,EAAIxqL,KAAM,EAAM2qK,EAAK+lB,EAEtB,CAID,IAAM,IAAI/lB,EAAK,EAAGA,EAAK+lB,EAAO/lB,IAE7B,IAAM,IAAID,EAAK,EAAGA,EAAK+lB,EAAO/lB,IAAQ,CAErC,IAAMxrK,EAAIwrK,EAAKsmB,EAASrmB,EAClBlhK,EAAIihK,EAAKsmB,GAAWrmB,EAAK,GACzBxrK,EAAMurK,EAAK,EAAMsmB,GAAWrmB,EAAK,GACjCjhK,EAAMghK,EAAK,EAAMsmB,EAASrmB,EAEhC0f,EAAQrqL,KAAMd,EAAGuK,EAAGC,GACpB2gL,EAAQrqL,KAAMyJ,EAAGtK,EAAGuK,EAErB,CAO+D,OAHhE4nN,EAAKpkC,SAAU7C,GACfinC,EAAKt7M,aAAc,WAAY,IAAI+xK,GAAwBoI,EAAU,IACrEmhC,EAAKt7M,aAAc,SAAU,IAAI+xK,GAAwBwC,EAAS,IAClE+mC,EAAKt7M,aAAc,KAAM,IAAI+xK,GAAwByC,EAAK,IAAM8mC,CAEjE,CAgBC,OAhBA7kN,EAAAguL,EAAA,EAAA/0L,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAAi8K,EAAA36L,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKw4K,WAAaj6K,OAAOmgB,OAAQ,CAAC,EAAGld,EAAOg3K,YAErCx4K,IAER,IAAC,EAAAwC,IAAA,WAAA/D,MAED,SAAiBilC,GAEhB,OAAO,IAAI6zJ,EAAe7zJ,EAAKv1B,MAAOu1B,EAAKt1B,OAAQs1B,EAAKmpJ,cAAenpJ,EAAKopJ,eAE7E,KAACyK,CAAA,CA1FiB,CAAS7R,IAwXtBqS,GAAc,CACnB6zP,mBA3RwB,sGA4RxBC,wBA1R6B,kyCA2R7B7zP,kBAzRuB,yFA0RvBC,uBAxR4B,6DAyR5BC,mBAvRwB,wQAwRxBC,wBAtR6B,2DAuR7BC,eArRoB,2lBAsRpBC,oBApRyB,wFAqRzByzP,qBAnR0B,ykBAoR1BC,gBAlRqB,qFAmRrBzzP,aAjRkB,sGAkRlBC,mBAhRwB,+GAiRxBC,MA/QW,urBAgRX4oL,qBA9Q0B,i1FA+Q1B3oL,sBA7Q2B,i6BA8Q3BC,yBA5Q8B,40DA6Q9BC,8BA3QmC,4HA4QnCC,4BA1QiC,qEA2QjCC,uBAzQ4B,2EA0Q5BC,eAxQoB,+HAyQpBC,oBAvQyB,qHAwQzBC,kBAtQuB,wJAuQvBC,aArQkB,iRAsQlBC,OApQY,0uFAqQZC,4BAnQiC,yhHAoQjCC,qBAlQ0B,6gCAmQ1BC,4BAjQiC,kJAkQjCC,uBAhQ4B,kLAiQ5BC,qBA/P0B,kJAgQ1BC,0BA9P+B,mEA+P/BwyP,oBA7PyB,sDA8PzBC,yBA5P8B,0gCA6P9BtyP,gBA3PqB,+qCA4PrBC,4BA1PiC,6MA2PjCC,qBAzP0B,+UA0P1BC,mBAxPwB,sTAyPxBC,8BAjOmC,28CAkOnCC,cAxPmB,4oBAyPnBC,WAvPgB,wDAwPhBC,gBAtPqB,qDAuPrBC,aArPkB,2RAsPlBC,kBApPuB,2MAqPvBC,0BAnP+B,8cAoP/BC,kBAlPuB,uNAmPvBC,uBAjP4B,iGAkP5B8mL,wBAhP6B,sHAiP7BC,6BA/OkC,2hCAgPlC7mL,kBA9OuB,kvJA+OvBC,qBA3O0B,oEA4O1BC,0BA1O+B,y9BA2O/BC,sBAzO2B,sMA0O3BC,2BAxOgC,+yCAyOhCC,yBAvO8B,g2HAwO9BC,8BAtOmC,28dAuOnCC,sBArO2B,2iLAsO3BC,qBApO0B,63BAqO1BC,oBAnOyB,+YAoOzBC,qBAlO0B,mLAmO1BC,0BAjO+B,yKAkO/BC,wBAhO6B,sLAiO7BC,mBA/NwB,+XAgOxBC,aA9NkB,qaA+NlBC,kBA7NuB,mDA8NvBC,sBA5N2B,0WA6N3BC,2BA3NgC,+QA4NhCC,sBA1N2B,mLA2N3BC,2BAzNgC,qEA0NhCC,kBAxNuB,6eAyNvBC,mBAvNwB,+jBAwNxBC,wBAtN6B,k1BAuN7BC,mBArNwB,u2BAsNxBC,sBApN2B,2yCAqN3BC,qBAnN0B,gkBAoN1BC,qBAlN0B,iJAmN1BC,mBAjNwB,iJAkNxBC,cAhNmB,mOAiNnBC,wBA/M6B,q2BAgN7BC,gCA9MqC,6EA+MrCC,+BA7MoC,8OA8MpCC,wBA5M6B,mRA6M7B8kL,0BA3M+B,oKA4M/B2qE,gBA1MqB,sLA2MrBvvP,QAzMa,suDA0MbC,6BAxMkC,4EAyMlCC,eAvMoB,8RAwMpBC,mBAtMwB,gFAuMxBC,wBArM6B,2UAsM7BC,sBApM2B,mLAqM3BC,2BAnMgC,qEAoMhCC,wBAlM6B,07RAmM7BC,sBAjM2B,kzCAkM3BC,iBAhMsB,i+CAiMtBC,yBA/L8B,i5CAgM9BC,gBA9LqB,kOA+LrBC,qBA7L0B,glBA8L1BC,gBA5LqB,+XA6LrBC,kBA3LuB,qdA4LvBC,qBA1L0B,qMA2L1BC,0BAzL+B,mEA0L/BC,qBAxL0B,6FAyL1BC,0BAvL+B,s+FAwL/BC,sBAtL2B,8kCAuL3BC,2BArLgC,kjKAsLhCC,iBApLsB,snDAqLtBC,eAnLoB,igFAoLpBC,UAlLe,ytFAmLfI,gBAjLqB,qaAmLrBC,gBAjLgB,8JAkLhBC,gBAhLkB,sgBAiLlBgjL,oBA/KgB,iOAgLhBC,oBA9KkB,8wBA+KlBhjL,UA7KgB,iOA8KhBC,UA5KkB,2VA6KlBC,WA3KgB,uyBA4KhBC,WA1KkB,m8BA2KlBC,kBAzKgB,ixBA0KhBC,kBAxKkB,syBAyKlBC,cAvKgB,+LAwKhBC,cAtKkB,0TAuKlBC,gBArKgB,knBAsKhBC,gBApKkB,+1BAqKlBC,eAnKgB,87BAoKhBC,eAlKkB,oqDAmKlBC,iBAjKgB,4oCAkKhBC,iBAhKkB,89DAiKlBC,gBA/JgB,i/BAgKhBC,gBA9JkB,+iDA+JlBC,gBA7JgB,mjCA8JhBC,gBA5JkB,4uBA6JlBC,eA3JgB,0oCA4JhBC,eA1JkB,4kEA2JlBC,kBAzJgB,2tCA0JhBC,kBAxJkB,gmIAyJlBC,cAvJgB,8kCAwJhBC,cAtJkB,20DAuJlBC,YArJgB,s3BAsJhBC,YApJkB,m0BAqJlBC,YAnJgB,6pBAoJhBC,YAlJkB,6eAmJlBC,YAjJgB,snCAkJhBC,YAhJkB,0yBAuJbC,GAAc,CAEnBrH,OAAQ,CAEPsH,QAAS,CAAE/hM,MAAqB,IAAI88J,GAAO,WAC3C/mI,QAAS,CAAE/1B,MAAO,GAElBlC,IAAK,CAAEkC,MAAO,MACd0tb,aAAc,CAAE1tb,MAAqB,IAAI+3J,IAEzC4oB,SAAU,CAAE3gL,MAAO,MACnB2tb,kBAAmB,CAAE3tb,MAAqB,IAAI+3J,IAE9C+qB,UAAW,CAAE9iL,MAAO,IAIrBkiM,YAAa,CAEZvgB,YAAa,CAAE3hL,MAAO,MACtB4tb,qBAAsB,CAAE5tb,MAAqB,IAAI+3J,KAIlDoqC,OAAQ,CAEPrgB,OAAQ,CAAE9hL,MAAO,MACjBoiM,WAAY,CAAEpiM,OAAS,GACvBiiL,aAAc,CAAEjiL,MAAO,GACvBqiM,IAAK,CAAEriM,MAAO,KACdkiL,gBAAiB,CAAEliL,MAAO,MAI3BsiM,MAAO,CAENxhB,MAAO,CAAE9gL,MAAO,MAChB+gL,eAAgB,CAAE/gL,MAAO,GACzB6tb,eAAgB,CAAE7tb,MAAqB,IAAI+3J,KAI5CwqC,SAAU,CAET3hB,SAAU,CAAE5gL,MAAO,MACnB6gL,kBAAmB,CAAE7gL,MAAO,GAC5B8tb,kBAAmB,CAAE9tb,MAAqB,IAAI+3J,KAI/C0qC,QAAS,CAERzhB,QAAS,CAAEhhL,MAAO,MAClB+tb,iBAAkB,CAAE/tb,MAAqB,IAAI+3J,IAC7CkpB,UAAW,CAAEjhL,MAAO,IAIrB0iM,UAAW,CAEVxhB,UAAW,CAAElhL,MAAO,MACpBgub,mBAAoB,CAAEhub,MAAqB,IAAI+3J,IAC/CqpB,YAAa,CAAEphL,MAAqB,IAAI02J,GAAS,EAAG,KAIrDisC,gBAAiB,CAEhBthB,gBAAiB,CAAErhL,MAAO,MAC1Biub,yBAA0B,CAAEjub,MAAqB,IAAI+3J,IACrDupB,kBAAmB,CAAEthL,MAAO,GAC5BuhL,iBAAkB,CAAEvhL,MAAO,IAI5BwiM,YAAa,CAEZ9gB,YAAa,CAAE1hL,MAAO,MACtBkub,qBAAsB,CAAElub,MAAqB,IAAI+3J,KAIlD8qC,aAAc,CAEbphB,aAAc,CAAEzhL,MAAO,MACvBmub,sBAAuB,CAAEnub,MAAqB,IAAI+3J,KAInD6qC,aAAc,CAEbphB,aAAc,CAAExhL,MAAO,MACvBoub,sBAAuB,CAAEpub,MAAqB,IAAI+3J,KAInD+qC,YAAa,CAEZ3gB,YAAa,CAAEniL,MAAO,OAIvBk9K,IAAK,CAEJ6lB,WAAY,CAAE/iM,MAAO,OACrBgjM,QAAS,CAAEhjM,MAAO,GAClBijM,OAAQ,CAAEjjM,MAAO,KACjBkjM,SAAU,CAAEljM,MAAqB,IAAI88J,GAAO,YAI7CuzB,OAAQ,CAEP8S,kBAAmB,CAAEnjM,MAAO,IAE5BojM,WAAY,CAAEpjM,MAAO,IAErBqjM,kBAAmB,CAAErjM,MAAO,GAAIkP,WAAY,CAC3C0gK,UAAW,CAAC,EACZ7mI,MAAO,CAAC,IAGTu6J,wBAAyB,CAAEtjM,MAAO,GAAIkP,WAAY,CACjDq0L,WAAY,CAAC,EACbC,iBAAkB,CAAC,EACnBC,aAAc,CAAC,EACfC,cAAe,CAAC,IAGjBC,qBAAsB,CAAE3jM,MAAO,IAC/B4jM,wBAAyB,CAAE5jM,MAAO,IAElC6jM,WAAY,CAAE7jM,MAAO,GAAIkP,WAAY,CACpC65B,MAAO,CAAC,EACR+3B,SAAU,CAAC,EACX8uG,UAAW,CAAC,EACZqI,SAAU,CAAC,EACX6rB,QAAS,CAAC,EACVC,YAAa,CAAC,EACdC,MAAO,CAAC,IAGTC,iBAAkB,CAAEjkM,MAAO,GAAIkP,WAAY,CAC1Cq0L,WAAY,CAAC,EACbC,iBAAkB,CAAC,EACnBC,aAAc,CAAC,EACfC,cAAe,CAAC,IAGjBu/K,aAAc,CAAEjjX,MAAO,IACvBkkM,cAAe,CAAElkM,MAAO,IACxBkjX,gBAAiB,CAAEljX,MAAO,IAE1BokM,YAAa,CAAEpkM,MAAO,GAAIkP,WAAY,CACrC65B,MAAO,CAAC,EACR+3B,SAAU,CAAC,EACXkjI,MAAO,CAAC,EACR/rB,SAAU,CAAC,IAGZosB,kBAAmB,CAAErkM,MAAO,GAAIkP,WAAY,CAC3Cq0L,WAAY,CAAC,EACbC,iBAAkB,CAAC,EACnBC,aAAc,CAAC,EACfC,cAAe,CAAC,EAChBY,iBAAkB,CAAC,EACnBC,gBAAiB,CAAC,IAGnBC,eAAgB,CAAExkM,MAAO,IACzBykM,kBAAmB,CAAEzkM,MAAO,IAE5B0kM,iBAAkB,CAAE1kM,MAAO,GAAIkP,WAAY,CAC1C0gK,UAAW,CAAC,EACZ+0B,SAAU,CAAC,EACXC,YAAa,CAAC,IAIfC,eAAgB,CAAE7kM,MAAO,GAAIkP,WAAY,CACxC65B,MAAO,CAAC,EACR+3B,SAAU,CAAC,EACXpxD,MAAO,CAAC,EACRC,OAAQ,CAAC,IAGVm1L,MAAO,CAAE9kM,MAAO,MAChB+kM,MAAO,CAAE/kM,MAAO,OAIjBwrK,OAAQ,CAEPu2B,QAAS,CAAE/hM,MAAqB,IAAI88J,GAAO,WAC3C/mI,QAAS,CAAE/1B,MAAO,GAClB8mD,KAAM,CAAE9mD,MAAO,GACf44I,MAAO,CAAE54I,MAAO,GAChBlC,IAAK,CAAEkC,MAAO,MACd2gL,SAAU,CAAE3gL,MAAO,MACnB2tb,kBAAmB,CAAE3tb,MAAqB,IAAI+3J,IAC9C+qB,UAAW,CAAE9iL,MAAO,GACpBgiM,YAAa,CAAEhiM,MAAqB,IAAI+3J,KAIzCq/B,OAAQ,CAEP2K,QAAS,CAAE/hM,MAAqB,IAAI88J,GAAO,WAC3C/mI,QAAS,CAAE/1B,MAAO,GAClB43J,OAAQ,CAAE53J,MAAqB,IAAI02J,GAAS,GAAK,KACjDmE,SAAU,CAAE76J,MAAO,GACnBlC,IAAK,CAAEkC,MAAO,MACd0tb,aAAc,CAAE1tb,MAAqB,IAAI+3J,IACzC4oB,SAAU,CAAE3gL,MAAO,MACnB2tb,kBAAmB,CAAE3tb,MAAqB,IAAI+3J,IAC9C+qB,UAAW,CAAE9iL,MAAO,KAMhBglM,GAAY,CAEjBC,MAAO,CAENtV,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYI,YACZJ,GAAYK,OACZL,GAAYQ,MACZR,GAAYS,SACZT,GAAY5kB,MAGbiT,aAAcmJ,GAAYoH,eAC1BtQ,eAAgBkJ,GAAYqH,gBAI7BuE,QAAS,CAERvV,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYI,YACZJ,GAAYK,OACZL,GAAYQ,MACZR,GAAYS,SACZT,GAAYU,YACZV,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZb,GAAY5kB,IACZ4kB,GAAYzR,OACZ,CACCvQ,SAAU,CAAE9/K,MAAqB,IAAI88J,GAAO,OAI9CqzB,aAAcmJ,GAAYsH,iBAC1BxQ,eAAgBkJ,GAAYuH,kBAI7BsE,MAAO,CAENxV,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYI,YACZJ,GAAYK,OACZL,GAAYQ,MACZR,GAAYS,SACZT,GAAYU,YACZV,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZb,GAAY5kB,IACZ4kB,GAAYzR,OACZ,CACCvQ,SAAU,CAAE9/K,MAAqB,IAAI88J,GAAO,IAC5CkjB,SAAU,CAAEhgL,MAAqB,IAAI88J,GAAO,UAC5CqjB,UAAW,CAAEngL,MAAO,OAItBmwL,aAAcmJ,GAAY4H,eAC1B9Q,eAAgBkJ,GAAY6H,gBAI7BiE,SAAU,CAETzV,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYK,OACZL,GAAYQ,MACZR,GAAYS,SACZT,GAAYU,YACZV,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZb,GAAYc,aACZd,GAAYe,aACZf,GAAY5kB,IACZ4kB,GAAYzR,OACZ,CACCvQ,SAAU,CAAE9/K,MAAqB,IAAI88J,GAAO,IAC5C2iB,UAAW,CAAEz/K,MAAO,GACpB0/K,UAAW,CAAE1/K,MAAO,GACpBgiL,gBAAiB,CAAEhiL,MAAO,MAI5BmwL,aAAcmJ,GAAY8H,kBAC1BhR,eAAgBkJ,GAAY+H,mBAI7BgE,KAAM,CAEL1V,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYQ,MACZR,GAAYS,SACZT,GAAYU,YACZV,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZb,GAAYgB,YACZhB,GAAY5kB,IACZ4kB,GAAYzR,OACZ,CACCvQ,SAAU,CAAE9/K,MAAqB,IAAI88J,GAAO,OAI9CqzB,aAAcmJ,GAAYgI,cAC1BlR,eAAgBkJ,GAAYiI,eAI7B7gB,OAAQ,CAEPiP,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZb,GAAY5kB,IACZ,CACCwD,OAAQ,CAAE1gL,MAAO,SAInBmwL,aAAcmJ,GAAYwH,gBAC1B1Q,eAAgBkJ,GAAYyH,iBAI7Bv1B,OAAQ,CAEPmkB,SAAwBD,GAAe,CACtCoS,GAAYt2B,OACZs2B,GAAY5kB,MAGbiT,aAAcmJ,GAAYkI,YAC1BpR,eAAgBkJ,GAAYmI,aAI7B6D,OAAQ,CAEP3V,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAY5kB,IACZ,CACCtkC,MAAO,CAAE54I,MAAO,GAChB4iL,SAAU,CAAE5iL,MAAO,GACnBulM,UAAW,CAAEvlM,MAAO,MAItBmwL,aAAcmJ,GAAYkH,gBAC1BpQ,eAAgBkJ,GAAYmH,iBAI7B3wF,MAAO,CAEN6/E,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYa,kBAGbxS,aAAcmJ,GAAY4G,WAC1B9P,eAAgBkJ,GAAY6G,YAI7B71B,OAAQ,CAEPqlB,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYW,QACZX,GAAYY,UACZZ,GAAYa,gBACZ,CACC5sK,QAAS,CAAE/1B,MAAO,MAIpBmwL,aAAcmJ,GAAY0H,gBAC1B5Q,eAAgBkJ,GAAY2H,iBAI7B7J,OAAQ,CAEPzH,SAAwBD,GAAe,CACtCoS,GAAY1K,OACZ0K,GAAY5kB,MAGbiT,aAAcmJ,GAAYsI,YAC1BxR,eAAgBkJ,GAAYuI,aAI7B1gI,WAAY,CAEXwuH,SAAU,CACTqS,YAAa,CAAEhiM,MAAqB,IAAI+3J,IACxCytC,IAAK,CAAExlM,MAAO,MACdqub,oBAAqB,CAAErub,MAAO,IAG/BmwL,aAAcmJ,GAAYwG,gBAC1B1P,eAAgBkJ,GAAYyG,iBAI7BojL,eAAgB,CAEfxzL,SAAU,CACT7N,OAAQ,CAAE9hL,MAAO,MACjBoiM,WAAY,CAAEpiM,OAAS,GACvBojX,qBAAsB,CAAEpjX,MAAO,GAC/Bqub,oBAAqB,CAAErub,MAAO,IAG/BmwL,aAAcmJ,GAAYypL,oBAC1B3yL,eAAgBkJ,GAAY0pL,qBAI7Bv9K,KAAM,CAEL9V,SAAU,CACT0zL,MAAO,CAAErjX,MAAO,MAChBsjX,MAAO,CAAEtjX,OAAS,GAClB+1B,QAAS,CAAE/1B,MAAO,IAGnBmwL,aAAcmJ,GAAY0G,UAC1B5P,eAAgBkJ,GAAY2G,WAI7ByF,SAAU,CAET/V,SAAU,CACTgF,UAAW,CAAE30L,MAAO,OAGrBmwL,aAAcmJ,GAAYgH,cAC1BlQ,eAAgBkJ,GAAYiH,eAI7BoF,aAAc,CAEbhW,SAAwBD,GAAe,CACtCoS,GAAYrH,OACZqH,GAAYa,gBACZ,CACCiD,kBAAmB,CAAE5lM,MAAqB,IAAIqoK,IAC9Cw9B,aAAc,CAAE7lM,MAAO,GACvB8lM,YAAa,CAAE9lM,MAAO,QAIxBmwL,aAAcmJ,GAAY8G,kBAC1BhQ,eAAgBkJ,GAAY+G,mBAI7Br7C,OAAQ,CAEP2qC,SAAwBD,GAAe,CACtCoS,GAAYzR,OACZyR,GAAY5kB,IACZ,CACCn0I,MAAO,CAAE/oC,MAAqB,IAAI88J,GAAO,IACzC/mI,QAAS,CAAE/1B,MAAO,MAIpBmwL,aAAcmJ,GAAYoI,YAC1BtR,eAAgBkJ,GAAYqI,cAM9BqD,GAAU8J,SAAW,CAEpBnf,SAAwBD,GAAe,CACtCsV,GAAUI,SAASzV,SACnB,CACCvP,UAAW,CAAEpgL,MAAO,GACpBsgL,aAAc,CAAEtgL,MAAO,MACvBsub,sBAAuB,CAAEtub,MAAqB,IAAI+3J,IAClDyoB,mBAAoB,CAAExgL,MAAO,MAC7Buub,4BAA6B,CAAEvub,MAAqB,IAAI+3J,IACxD0oB,qBAAsB,CAAEzgL,MAAqB,IAAI02J,GAAS,EAAG,IAC7D2pB,mBAAoB,CAAErgL,MAAO,GAC7BugL,sBAAuB,CAAEvgL,MAAO,MAChCwub,+BAAgC,CAAExub,MAAqB,IAAI+3J,IAC3DqqN,YAAa,CAAEpiX,MAAO,GACtBuiX,eAAgB,CAAEviX,MAAO,MACzByub,wBAAyB,CAAEzub,MAAqB,IAAI+3J,IACpDsqN,eAAgB,CAAEriX,MAAO,KACzBujX,4BAA6B,CAAEvjX,MAAO,KACtCwjX,4BAA6B,CAAExjX,MAAO,KACtCwiX,wBAAyB,CAAExiX,MAAO,MAClC0ub,iCAAkC,CAAE1ub,MAAqB,IAAI+3J,IAC7D4nB,MAAO,CAAE3/K,MAAO,GAChB4/K,WAAY,CAAE5/K,MAAqB,IAAI88J,GAAO,IAC9CiyC,cAAe,CAAE/uM,MAAO,MACxB2ub,uBAAwB,CAAE3ub,MAAqB,IAAI+3J,IACnD8nB,eAAgB,CAAE7/K,MAAO,GACzBgvM,kBAAmB,CAAEhvM,MAAO,MAC5B4ub,2BAA4B,CAAE5ub,MAAqB,IAAI+3J,IACvDqqB,aAAc,CAAEpiL,MAAO,GACvBqiL,gBAAiB,CAAEriL,MAAO,MAC1B6ub,yBAA0B,CAAE7ub,MAAqB,IAAI+3J,IACrDk3C,wBAAyB,CAAEjvM,MAAqB,IAAI02J,IACpDw4C,uBAAwB,CAAElvM,MAAO,MACjCsiL,UAAW,CAAEtiL,MAAO,GACpBuiL,aAAc,CAAEviL,MAAO,MACvB8ub,sBAAuB,CAAE9ub,MAAqB,IAAI+3J,IAClDyqB,oBAAqB,CAAExiL,MAAO,GAC9ByiL,iBAAkB,CAAEziL,MAAqB,IAAI88J,GAAO,IACpDojB,cAAe,CAAElgL,MAAqB,IAAI88J,GAAO,EAAG,EAAG,IACvD+kB,iBAAkB,CAAE7hL,MAAO,MAC3B+ub,0BAA2B,CAAE/ub,MAAqB,IAAI+3J,IACtDkoB,kBAAmB,CAAEjgL,MAAO,GAC5B4hL,qBAAsB,CAAE5hL,MAAO,MAC/Bgvb,8BAA+B,CAAEhvb,MAAqB,IAAI+3J,IAC1Dk3R,iBAAkB,CAAEjvb,MAAqB,IAAI02J,IAC7Cs0R,cAAe,CAAEhrb,MAAO,MACxBkvb,uBAAwB,CAAElvb,MAAqB,IAAI+3J,OAIrDo4B,aAAcmJ,GAAY8H,kBAC1BhR,eAAgBkJ,GAAY+H,mBAI7B,IAAM5kC,GAAO,CAAEh0J,EAAG,EAAGX,EAAG,EAAGG,EAAG,GAE9B,SAAS89L,GAAiB1S,EAAU2S,EAAU8hB,EAAY3mM,EAAO8kL,EAAS3uC,EAAO4nB,GAEhF,IAGIgnB,EACAC,EAJEC,EAAa,IAAItpC,GAAO,GAC1BupC,GAAuB,IAAV/uC,EAAiB,EAAI,EAKlCgvC,EAAoB,KACpBC,EAA2B,EAC3BC,EAAqB,KAgLzB,SAASC,EAAU19J,EAAOuuH,GAEzBvuH,EAAMomZ,OAAQ1yR,GAAMwvR,GAA2B54P,IAE/ClyK,EAAM82K,QAAQlvJ,MAAM09J,SAAUhqC,GAAKh0J,EAAGg0J,GAAKx0J,EAAGw0J,GAAK30J,EAAGwvJ,EAAO4nB,EAE9D,CAEA,MAAO,CAENwnB,cAAe,WAEd,OAAON,CAER,EACAO,cAAe,SAAW59J,GAAmB,IAAZuuH,EAAK91J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAExC4kM,EAAW51K,IAAKuY,GAEhB09J,EAAUL,EADVC,EAAa/uC,EAGd,EACAsvC,cAAe,WAEd,OAAOP,CAER,EACAQ,cAAe,SAAWvvC,GAGzBmvC,EAAUL,EADVC,EAAa/uC,EAGd,EACAvwJ,OA/MD,SAAiB+/L,EAAYxT,GAE5B,IAAIyT,GAAa,EACb5lI,GAA+B,IAAlBmyH,EAAM5Z,QAAmB4Z,EAAMnyH,WAAa,KAExDA,GAAcA,EAAW+/F,YAG7B//F,GADiBmyH,EAAM8vL,qBAAuB,EACpBt7J,EAAa9hB,GAAW10K,IAAK6vC,IAIpC,OAAfA,EAEJslI,EAAUL,EAAYC,GAEXllI,GAAcA,EAAW67F,UAEpCypC,EAAUtlI,EAAY,GACtB4lI,GAAa,GAId,IAAMG,EAAuB7T,EAASU,GAAGq7P,0BAEX,aAAzBloP,EAEJ/lL,EAAM82K,QAAQlvJ,MAAM09J,SAAU,EAAG,EAAG,EAAG,EAAGvnB,GAEN,gBAAzBgoB,GAEX/lL,EAAM82K,QAAQlvJ,MAAM09J,SAAU,EAAG,EAAG,EAAG,EAAGvnB,IAItCmU,EAAS8T,WAAaJ,IAE1B1T,EAAS3xL,MAAO2xL,EAAS+T,eAAgB/T,EAASgU,eAAgBhU,EAASiU,kBAIvEnmI,IAAgBA,EAAWkzH,eAAiBlzH,EAAW0kF,UAAY8F,UAEtDhgJ,IAAZw6L,KAEJA,EAAU,IAAI1Z,GACb,IAAIuB,GAAa,EAAG,EAAG,GACvB,IAAI8B,GAAgB,CACnBp1L,KAAM,yBACNi1L,SAAUF,GAAeuV,GAAUm+K,eAAexzL,UAClDQ,aAAc6U,GAAUm+K,eAAehzL,aACvCC,eAAgB4U,GAAUm+K,eAAe/yL,eACzChT,KAAMz0B,GACNm1B,WAAW,EACXC,YAAY,EACZb,KAAK,MAIC7Q,SAASk7B,gBAAiB,UAClCpB,EAAQ95B,SAASk7B,gBAAiB,MAElCpB,EAAQqB,eAAiB,SAAWnU,EAAUC,EAAOnqB,GAEpD5nK,KAAKioK,YAAYi+B,aAAct+B,EAAOK,YAEvC,EAGA1pK,OAAOC,eAAgBomM,EAAQ/rB,SAAU,SAAU,CAElD9oJ,IAAK,WAEJ,OAAO/vB,KAAKouL,SAAS7N,OAAO9hL,KAE7B,IAIDimM,EAAQphC,OAAQshC,IAIjBA,EAAQ/rB,SAASuV,SAAS7N,OAAO9hL,MAAQmhE,EACzCglI,EAAQ/rB,SAASuV,SAASyS,WAAWpiM,MAAUmhE,EAAWkzH,gBAAsD,IAArClzH,EAAWu/F,uBAAsC,EAAI,EAChIylC,EAAQ/rB,SAASuV,SAASyzL,qBAAqBpjX,MAAQszL,EAAM8vL,qBAC7Dj9K,EAAQ/rB,SAASuV,SAAS0+P,oBAAoBrub,MAAQszL,EAAM+6P,oBAC5DloP,EAAQ/rB,SAAS+E,WAAapjB,GAAgBwrR,YAAapmX,EAAW+6F,cAAiB+pR,GAElF3/O,IAAsBnlI,GAC1BolI,IAA6BplI,EAAWvmE,SACxC4rM,IAAuBnT,EAASQ,cAEhCsS,EAAQ/rB,SAASvZ,aAAc,EAE/BylC,EAAoBnlI,EACpBolI,EAA2BplI,EAAWvmE,QACtC4rM,EAAqBnT,EAASQ,aAI/BsS,EAAQjwB,OAAOl+J,YAGf8uL,EAAWx1L,QAAS60L,EAASA,EAAQ95B,SAAU85B,EAAQ/rB,SAAU,EAAG,EAAG,OAE5Dj5G,GAAcA,EAAW+/F,iBAEjBv1J,IAAdu6L,KAEJA,EAAY,IAAIzZ,GACf,IAAIqM,GAAe,EAAG,GACtB,IAAIhJ,GAAgB,CACnBp1L,KAAM,qBACNi1L,SAAUF,GAAeuV,GAAU7jI,WAAWwuH,UAC9CQ,aAAc6U,GAAU7jI,WAAWgvH,aACnCC,eAAgB4U,GAAU7jI,WAAWivH,eACrChT,KAAM10B,GACNo1B,WAAW,EACXC,YAAY,EACZb,KAAK,MAIG7Q,SAASk7B,gBAAiB,UAGpCznM,OAAOC,eAAgBmmM,EAAU9rB,SAAU,MAAO,CAEjD9oJ,IAAK,WAEJ,OAAO/vB,KAAKouL,SAAS6V,IAAIxlM,KAE1B,IAIDimM,EAAQphC,OAAQqhC,IAIjBA,EAAU9rB,SAASuV,SAAS6V,IAAIxlM,MAAQmhE,EACxC+kI,EAAU9rB,SAASuV,SAAS0+P,oBAAoBrub,MAAQszL,EAAM+6P,oBAC9DnoP,EAAU9rB,SAAS+E,WAAapjB,GAAgBwrR,YAAapmX,EAAW+6F,cAAiB+pR,IAEpD,IAAhC9kX,EAAWg/F,kBAEfh/F,EAAWy2G,eAIZsuB,EAAU9rB,SAASuV,SAASqS,YAAYhiM,MAAMi9J,KAAM97F,EAAW85F,QAE1DqrC,IAAsBnlI,GAC1BolI,IAA6BplI,EAAWvmE,SACxC4rM,IAAuBnT,EAASQ,cAEhCqS,EAAU9rB,SAASvZ,aAAc,EAEjCylC,EAAoBnlI,EACpBolI,EAA2BplI,EAAWvmE,QACtC4rM,EAAqBnT,EAASQ,aAI/BqS,EAAUhwB,OAAOl+J,YAGjB8uL,EAAWx1L,QAAS40L,EAAWA,EAAU75B,SAAU65B,EAAU9rB,SAAU,EAAG,EAAG,MAI/E,EAuCD,CAEA,SAASstB,GAAoBv5I,EAAI0/B,EAAYpa,EAAYskH,GAExD,IAAM4P,EAAsBx5I,EAAGy5I,aAAcz5I,EAAGkhY,oBAE1CxnP,EAAY9P,EAAaC,SAAW,KAAOnqG,EAAWv8D,IAAK,2BAC3Dw2K,EAAe/P,EAAaC,UAA0B,OAAd6P,EAExCE,EAAgB,CAAC,EAEjBC,EAAeC,EAAoB,MACrCC,EAAeF,EACfv/G,GAAc,EAqElB,SAAS0/G,EAAuBC,GAE/B,OAAKrQ,EAAaC,SAAkB7pI,EAAGk6I,gBAAiBD,GAEjDP,EAAUS,mBAAoBF,EAEtC,CAEA,SAASG,EAAyBH,GAEjC,OAAKrQ,EAAaC,SAAkB7pI,EAAGq6I,kBAAmBJ,GAEnDP,EAAUY,qBAAsBL,EAExC,CAqCA,SAASH,EAAoBG,GAM5B,IAJA,IAAMM,EAAgB,GAChBC,EAAoB,GACpBC,EAAoB,GAEhB3qM,EAAI,EAAGA,EAAI0pM,EAAqB1pM,IAEzCyqM,EAAezqM,GAAM,EACrB0qM,EAAmB1qM,GAAM,EACzB2qM,EAAmB3qM,GAAM,EAI1B,MAAO,CAGNouK,SAAU,KACVw8B,QAAS,KACT9lB,WAAW,EAEX2lB,cAAeA,EACfC,kBAAmBA,EACnBC,kBAAmBA,EACnBllM,OAAQ0kM,EACR30H,WAAY,CAAC,EACbtjE,MAAO,KAIT,CA8FA,SAAS24L,IAIR,IAFA,IAAMJ,EAAgBR,EAAaQ,cAEzBzqM,EAAI,EAAGowD,EAAKq6I,EAAcvvM,OAAQ8E,EAAIowD,EAAIpwD,IAEnDyqM,EAAezqM,GAAM,CAIvB,CAEA,SAAS8qM,EAAiBtxC,GAEzBuxC,EAA2BvxC,EAAW,EAEvC,CAEA,SAASuxC,EAA2BvxC,EAAWwxC,GAE9C,IAAMP,EAAgBR,EAAaQ,cAC7BC,EAAoBT,EAAaS,kBACjCC,EAAoBV,EAAaU,mBAEvCF,EAAejxC,GAAc,EAEW,IAAnCkxC,EAAmBlxC,KAEvBtpG,EAAG+6I,wBAAyBzxC,GAC5BkxC,EAAmBlxC,GAAc,GAI7BmxC,EAAmBnxC,KAAgBwxC,MAErBlR,EAAaC,SAAW7pI,EAAK0/B,EAAWv8D,IAAK,2BAEpDymK,EAAaC,SAAW,sBAAwB,4BAA8BvgC,EAAWwxC,GACpGL,EAAmBnxC,GAAcwxC,EAInC,CAEA,SAASE,IAKR,IAHA,IAAMT,EAAgBR,EAAaQ,cAC7BC,EAAoBT,EAAaS,kBAE7B1qM,EAAI,EAAGowD,EAAKs6I,EAAkBxvM,OAAQ8E,EAAIowD,EAAIpwD,IAElD0qM,EAAmB1qM,KAAQyqM,EAAezqM,KAE9CkwD,EAAGi7I,yBAA0BnrM,GAC7B0qM,EAAmB1qM,GAAM,EAM5B,CAEA,SAASorM,EAAqBl5L,EAAO22C,EAAM3gD,EAAMg4J,EAAY6sB,EAAQ1/I,EAAQk2E,IAE3D,IAAZA,EAEJrzD,EAAGm7I,qBAAsBn5L,EAAO22C,EAAM3gD,EAAM6kL,EAAQ1/I,GAIpD6iB,EAAGk7I,oBAAqBl5L,EAAO22C,EAAM3gD,EAAMg4J,EAAY6sB,EAAQ1/I,EAIjE,CAmQA,SAASwwB,IAERytI,IACA9gH,GAAc,EAETy/G,IAAiBF,GAGtBG,GADAD,EAAeF,GACqBtkM,OAErC,CAIA,SAAS6lM,IAERvB,EAAa37B,SAAW,KACxB27B,EAAaa,QAAU,KACvBb,EAAajlB,WAAY,CAE1B,CAEA,MAAO,CAENymB,MAvlBD,SAAgB9lM,EAAQ02K,EAAUyuB,EAASx8B,EAAUl8J,GAEpD,IAAIs5L,GAAgB,EAEpB,GAAK3B,EAAe,CAEnB,IAAM3mL,EA6ER,SAA0BkrJ,EAAUw8B,EAASzuB,GAE5C,IAAM2I,GAAqC,IAAvB3I,EAAS2I,UAEzB2mB,EAAa3B,EAAe17B,EAAS1rI,SAErBh1B,IAAf+9L,IAEJA,EAAa,CAAC,EACd3B,EAAe17B,EAAS1rI,IAAO+oK,GAIhC,IAAIC,EAAWD,EAAYb,EAAQloK,SAEjBh1B,IAAbg+L,IAEJA,EAAW,CAAC,EACZD,EAAYb,EAAQloK,IAAOgpK,GAI5B,IAAIxoL,EAAQwoL,EAAU5mB,QAEPp3K,IAAVwV,IAEJA,EAAQ8mL,EAhDJlQ,EAAaC,SAAkB7pI,EAAGy7I,oBAEhC/B,EAAUgC,wBA+ChBF,EAAU5mB,GAAc5hK,GAIzB,OAAOA,CAER,CA9GgB2oL,CAAiBz9B,EAAUw8B,EAASzuB,GAE7C8tB,IAAiB/mL,GAGrBgnL,GADAD,EAAe/mL,GACqBzd,QAIrC+lM,EAuIF,SAAsB/lM,EAAQ2oK,EAAUw8B,EAAS14L,GAEhD,IAAM45L,EAAmB7B,EAAaz0H,WAChCu2H,EAAqB39B,EAAS54F,WAEhCw2H,EAAgB,EAEdK,EAAoBzB,EAAQn1H,gBAElC,IAAM,IAAMh5E,KAAQ4vM,EAAoB,CAIvC,GAFyBA,EAAmB5vM,GAEtB4c,UAAY,EAAI,CAErC,IAAM4yL,EAAkBH,EAAkBrvM,GACtCyvM,EAAoBH,EAAoBtvM,GAS5C,QAP2BiR,IAAtBw+L,IAEU,mBAATzvM,GAA6BgJ,EAAO81K,iBAAiB2wB,EAAoBzmM,EAAO81K,gBACvE,kBAAT9+K,GAA4BgJ,EAAO+1K,gBAAgB0wB,EAAoBzmM,EAAO+1K,qBAI3D9tK,IAApBu+L,EAAgC,OAAO,EAE5C,GAAKA,EAAgBzyC,YAAc0yC,EAAoB,OAAO,EAE9D,GAAKA,GAAqBD,EAAgBjlK,OAASklK,EAAkBllK,KAAO,OAAO,EAEnFglK,GAED,CAED,CAEA,OAAK/B,EAAa+B,gBAAkBA,GAE/B/B,EAAa/3L,QAAUA,CAI7B,CAlLkB0wJ,CAAan9J,EAAQ2oK,EAAUw8B,EAAS14L,GAEnDs5L,GAkLP,SAAoB/lM,EAAQ2oK,EAAUw8B,EAAS14L,GAE9C,IAAMxF,EAAQ,CAAC,EACT8oE,EAAa44F,EAAS54F,WACxBw2H,EAAgB,EAEdK,EAAoBzB,EAAQn1H,gBAElC,IAAM,IAAMh5E,KAAQ4vM,EAAoB,CAIvC,GAFyBA,EAAmB5vM,GAEtB4c,UAAY,EAAI,CAErC,IAAImgJ,EAAYhkF,EAAY/4E,QAETiR,IAAd8rJ,IAEU,mBAAT/8J,GAA6BgJ,EAAO81K,iBAAiB/hB,EAAY/zJ,EAAO81K,gBAC/D,kBAAT9+K,GAA4BgJ,EAAO+1K,gBAAgBhiB,EAAY/zJ,EAAO+1K,gBAI5E,IAAMx0I,EAAO,CAAC,EACdA,EAAKwyH,UAAYA,EAEZA,GAAaA,EAAUxyH,OAE3BA,EAAKA,KAAOwyH,EAAUxyH,MAIvBt6B,EAAOjQ,GAASuqC,EAEhBglK,GAED,CAED,CAEA/B,EAAaz0H,WAAa9oE,EAC1Bu9L,EAAa+B,cAAgBA,EAE7B/B,EAAa/3L,MAAQA,CAEtB,CA/NuBi6L,CAAW1mM,EAAQ2oK,EAAUw8B,EAAS14L,EAE5D,KAAO,CAEN,IAAM4yK,GAAqC,IAAvB3I,EAAS2I,UAExBmlB,EAAa77B,WAAaA,EAAS1rI,IACvCunK,EAAaW,UAAYA,EAAQloK,IACjCunK,EAAanlB,YAAcA,IAE3BmlB,EAAa77B,SAAWA,EAAS1rI,GACjCunK,EAAaW,QAAUA,EAAQloK,GAC/BunK,EAAanlB,UAAYA,EAEzB0mB,GAAgB,EAIlB,CAEe,OAAVt5L,GAEJsjE,EAAWoxF,OAAQ10J,EAAOg+C,EAAGmhY,uBAIzB7lP,GAAiBhhH,KAErBA,GAAc,EAiRhB,SAAgC/kF,EAAQ02K,EAAUyuB,EAASx8B,GAE1D,IAA+B,IAA1B0rB,EAAaC,WAAwBt0L,EAAO61K,iBAAmBlN,EAASg+B,4BAExB,OAA/Cx8G,EAAWv8D,IAAK,0BAAsC,OAI5Dw3K,IAEA,IAAMkB,EAAqB39B,EAAS54F,WAE9B62H,EAAoBzB,EAAQn1H,gBAE5B62H,EAAiCnwB,EAASuW,uBAEhD,IAAM,IAAMj2L,KAAQ4vM,EAAoB,CAEvC,IAAME,EAAmBF,EAAmB5vM,GAE5C,GAAK8vM,EAAiBlzL,UAAY,EAAI,CAErC,IAAI6yL,EAAoBH,EAAoBtvM,GAS5C,QAP2BiR,IAAtBw+L,IAEU,mBAATzvM,GAA6BgJ,EAAO81K,iBAAiB2wB,EAAoBzmM,EAAO81K,gBACvE,kBAAT9+K,GAA4BgJ,EAAO+1K,gBAAgB0wB,EAAoBzmM,EAAO+1K,qBAIzD9tK,IAAtBw+L,EAAkC,CAEtC,IAAMhsC,EAAagsC,EAAkBhsC,WAC/Br3G,EAAOqjJ,EAAkBnmB,SAEzBvsB,EAAYhkF,EAAWniD,IAAK64K,GAIlC,QAAmBx+L,IAAd8rJ,EAA0B,SAE/B,IAAMiE,EAASjE,EAAUiE,OACnBv1J,EAAOsxJ,EAAUtxJ,KACjBkyL,EAAkB5gC,EAAU4gC,gBAI5B72E,GAAsC,IAA1Bu2E,EAAaC,WAAuB7xL,IAASgoD,EAAG8+X,KAAO9mb,IAASgoD,EAAG6+X,cAAgB7iP,EAAkBghP,UAAYt+R,IAEnI,GAAKs9C,EAAkBpf,6BAA+B,CAErD,IAAM9lJ,EAAOklK,EAAkBllK,KACzB+lJ,EAAS/lJ,EAAK+lJ,OACd1/I,EAAS6+J,EAAkB7+J,OAEjC,GAAKrG,EAAKwlK,6BAA+B,CAExC,IAAM,IAAIxsM,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnD+qM,EAA2BwB,EAAiBlzL,SAAWrZ,EAAGgnC,EAAKgkK,mBAIhC,IAA3BvlM,EAAO61K,sBAA2D5tK,IAA/B0gK,EAASs+B,oBAEhDt+B,EAASs+B,kBAAoB1lK,EAAKgkK,iBAAmBhkK,EAAKi6C,MAI5D,MAEC,IAAM,IAAIjhF,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnD8qM,EAAiByB,EAAiBlzL,SAAWrZ,GAM/CkwD,EAAGqqI,WAAYrqI,EAAG0iR,aAAcn1K,GAEhC,IAAM,IAAIz9J,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnDorM,EACCmB,EAAiBlzL,SAAWrZ,EAC5B6oD,EAAO0jJ,EAAiBE,aACxBvkM,EACAg4J,EACA6sB,EAASqN,GACP/sJ,EAAWwb,EAAO0jJ,EAAiBE,aAAiBzsM,GAAMo6L,EAC5D72E,EAKH,KAAO,CAEN,GAAK2oF,EAAkBS,2BAA6B,CAEnD,IAAM,IAAI3sM,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnD+qM,EAA2BwB,EAAiBlzL,SAAWrZ,EAAGksM,EAAkBlB,mBAI7C,IAA3BvlM,EAAO61K,sBAA2D5tK,IAA/B0gK,EAASs+B,oBAEhDt+B,EAASs+B,kBAAoBR,EAAkBlB,iBAAmBkB,EAAkBjrH,MAItF,MAEC,IAAM,IAAIjhF,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnD8qM,EAAiByB,EAAiBlzL,SAAWrZ,GAM/CkwD,EAAGqqI,WAAYrqI,EAAG0iR,aAAcn1K,GAEhC,IAAM,IAAIz9J,EAAI,EAAGA,EAAIusM,EAAiBE,aAAczsM,IAEnDorM,EACCmB,EAAiBlzL,SAAWrZ,EAC5B6oD,EAAO0jJ,EAAiBE,aACxBvkM,EACAg4J,EACAr3G,EAAOuxI,EACLvxI,EAAO0jJ,EAAiBE,aAAiBzsM,EAAIo6L,EAC/C72E,EAKH,CAED,MAAO,QAAwC71G,IAAnC4+L,EAA+C,CAE1D,IAAMvqM,EAAQuqM,EAAgC7vM,GAE9C,QAAeiR,IAAV3L,EAEJ,OAASA,EAAM7G,QAEd,KAAK,EACJg1D,EAAG08I,gBAAiBL,EAAiBlzL,SAAUtX,GAC/C,MAED,KAAK,EACJmuD,EAAG28I,gBAAiBN,EAAiBlzL,SAAUtX,GAC/C,MAED,KAAK,EACJmuD,EAAG48I,gBAAiBP,EAAiBlzL,SAAUtX,GAC/C,MAED,QACCmuD,EAAG68I,gBAAiBR,EAAiBlzL,SAAUtX,GAMnD,CAED,CAED,CAEAmpM,GAED,CA9bE8B,CAAuBvnM,EAAQ02K,EAAUyuB,EAASx8B,GAEnC,OAAVl8J,GAEJg+C,EAAGqqI,WAAYrqI,EAAGmhY,qBAAsB77W,EAAWniD,IAAKnhB,GAAQurJ,QAMnE,EA+hBC5/F,MAAOA,EACPytI,kBAAmBA,EACnBtmC,QA3GD,WAIC,IAAM,IAAMioC,KAFZpvI,IAE0BisI,EAAgB,CAEzC,IAAM2B,EAAa3B,EAAemD,GAElC,IAAM,IAAMC,KAAazB,EAAa,CAErC,IAAMC,EAAWD,EAAYyB,GAE7B,IAAM,IAAMpoB,KAAa4mB,EAExBpB,EAAyBoB,EAAU5mB,GAAYr/K,eAExCimM,EAAU5mB,UAIX2mB,EAAYyB,EAEpB,QAEOpD,EAAemD,EAEvB,CAED,EAgFCE,wBA9ED,SAAkC/+B,GAEjC,QAAsC1gK,IAAjCo8L,EAAe17B,EAAS1rI,IAA7B,CAEA,IAAM+oK,EAAa3B,EAAe17B,EAAS1rI,IAE3C,IAAM,IAAMwqK,KAAazB,EAAa,CAErC,IAAMC,EAAWD,EAAYyB,GAE7B,IAAM,IAAMpoB,KAAa4mB,EAExBpB,EAAyBoB,EAAU5mB,GAAYr/K,eAExCimM,EAAU5mB,UAIX2mB,EAAYyB,EAEpB,QAEOpD,EAAe17B,EAAS1rI,GApByB,CAsBzD,EAuDC0qK,uBArDD,SAAiCxC,GAEhC,IAAM,IAAMqC,KAAcnD,EAAgB,CAEzC,IAAM2B,EAAa3B,EAAemD,GAElC,QAAkCv/L,IAA7B+9L,EAAYb,EAAQloK,IAAzB,CAEA,IAAMgpK,EAAWD,EAAYb,EAAQloK,IAErC,IAAM,IAAMoiJ,KAAa4mB,EAExBpB,EAAyBoB,EAAU5mB,GAAYr/K,eAExCimM,EAAU5mB,UAIX2mB,EAAYb,EAAQloK,GAZ2B,CAcvD,CAED,EAiCCmoK,eAAgBA,EAChBC,gBAAiBA,EACjBI,wBAAyBA,EAI3B,CAEA,SAASmC,GAAqBn9I,EAAI0/B,EAAY+B,EAAMmoG,GAEnD,IAEIhiJ,EAFEiiJ,EAAWD,EAAaC,SAiF9Bz2L,KAAKgqM,QA7EL,SAAkBvrM,GAEjB+1C,EAAO/1C,CAER,EA0EAuB,KAAKwF,OAxEL,SAAiBslC,EAAO6yC,GAEvB/wB,EAAGq9I,WAAYz1J,EAAM1J,EAAO6yC,GAE5B0Q,EAAKi1E,OAAQ3lF,EAAOnpC,EAAM,EAE3B,EAmEAx0C,KAAKkqM,gBAjEL,SAA0Bp/J,EAAO6yC,EAAOwsH,GAEvC,GAAmB,IAAdA,EAAL,CAEA,IAAI7D,EAAW5yL,EAEf,GAAK+iL,EAEJ6P,EAAY15I,EACZl5C,EAAa,2BAOb,GAFAA,EAAa,2BAEM,QAHnB4yL,EAAYh6G,EAAWv8D,IAAK,2BAM3B,YADAhc,QAAQwN,MAAO,kIAOjB+kL,EAAW5yL,GAAc8gC,EAAM1J,EAAO6yC,EAAOwsH,GAE7C97G,EAAKi1E,OAAQ3lF,EAAOnpC,EAAM21J,EAzBG,CA2B9B,EAqCAnqM,KAAKgub,gBAnCL,SAA0BC,EAAQC,EAAQj6M,GAEzC,GAAmB,IAAdA,EAAL,CAEA,IAAM3tC,EAAYh6G,EAAWv8D,IAAK,oBAClC,GAAmB,OAAdu2K,EAEJ,IAAM,IAAI5pM,EAAI,EAAGA,EAAIu3O,EAAWv3O,IAE/BsD,KAAKwF,OAAQyob,EAAQvxb,GAAKwxb,EAAQxxb,QAI7B,CAEN4pM,EAAU6nP,qBAAsB35Y,EAAMy5Y,EAAQ,EAAGC,EAAQ,EAAGj6M,GAG5D,IADA,IAAIm6M,EAAe,EACT1xb,EAAI,EAAGA,EAAIu3O,EAAWv3O,IAE/B0xb,GAAgBF,EAAQxxb,GAIzB2xF,EAAKi1E,OAAQ8qR,EAAc55Y,EAAM,EAElC,CAxB6B,CA0B9B,CASD,CAEA,SAAS41J,GAAmBx9I,EAAI0/B,EAAYksF,GAE3C,IAAI6xB,EAsBJ,SAASC,EAAiBttM,GAEzB,GAAmB,UAAdA,EAAwB,CAE5B,GAAK4vD,EAAG29I,yBAA0B39I,EAAGoiR,cAAepiR,EAAGyhY,YAAarxb,UAAY,GAC/E4vD,EAAG29I,yBAA0B39I,EAAGqiR,gBAAiBriR,EAAGyhY,YAAarxb,UAAY,EAE7E,MAAO,QAIRA,EAAY,SAEb,CAEA,MAAmB,YAAdA,GAEC4vD,EAAG29I,yBAA0B39I,EAAGoiR,cAAepiR,EAAG0hY,cAAetxb,UAAY,GACjF4vD,EAAG29I,yBAA0B39I,EAAGqiR,gBAAiBriR,EAAG0hY,cAAetxb,UAAY,EAExE,UAMF,MAER,CAEA,IAAMy5L,EAA6C,qBAA3B+T,wBAAkE,2BAAxB59I,EAAGzyC,YAAYhhB,KAE7E6D,OAAqCoN,IAAzBouK,EAAWx7K,UAA0Bw7K,EAAWx7K,UAAY,QACtE0tM,EAAeJ,EAAiBttM,GAEjC0tM,IAAiB1tM,IAErB+W,QAAQk/C,KAAM,uBAAwBj2D,EAAW,uBAAwB0tM,EAAc,YACvF1tM,EAAY0tM,GAIb,IAAMxb,EAAcuH,GAAYnqG,EAAWl+C,IAAK,sBAE1Cu8J,GAA+D,IAAtCnyB,EAAWmyB,uBAEpCC,EAAch+I,EAAGy5I,aAAcz5I,EAAG2hY,yBAClC1jP,EAAoBj+I,EAAGy5I,aAAcz5I,EAAG4hY,gCACxC1jP,EAAiBl+I,EAAGy5I,aAAcz5I,EAAG6hY,kBACrC1jP,EAAiBn+I,EAAGy5I,aAAcz5I,EAAG8hY,2BAErC1jP,EAAgBp+I,EAAGy5I,aAAcz5I,EAAGkhY,oBACpC7iP,EAAoBr+I,EAAGy5I,aAAcz5I,EAAG+hY,4BACxCzjP,EAAct+I,EAAGy5I,aAAcz5I,EAAGgiY,qBAClCzjP,EAAsBv+I,EAAGy5I,aAAcz5I,EAAGiiY,8BAE1CzjP,EAAiBP,EAAoB,EACrCQ,EAAwB5U,GAAYnqG,EAAWl+C,IAAK,qBAK1D,MAAO,CAENqoJ,SAAUA,EAEVvH,YAAaA,EAEboc,iBAxFD,WAEC,QAAuBlhM,IAAlBigM,EAA8B,OAAOA,EAE1C,IAA4D,IAAvD/9G,EAAWl+C,IAAK,kCAA8C,CAElE,IAAMk4J,EAAYh6G,EAAWv8D,IAAK,kCAElCs6K,EAAgBz9I,EAAGy5I,aAAcC,EAAUiF,+BAE5C,MAEClB,EAAgB,EAIjB,OAAOA,CAER,EAuECC,gBAAiBA,EAEjBttM,UAAWA,EACX2tM,uBAAwBA,EAExBC,YAAaA,EACbC,kBAAmBA,EACnBC,eAAgBA,EAChBC,eAAgBA,EAEhBC,cAAeA,EACfC,kBAAmBA,EACnBC,YAAaA,EACbC,oBAAqBA,EAErBC,eAAgBA,EAChBC,sBAAuBA,EACvBG,oBA5B2BJ,GAAkBC,EA8B7CI,WA5BkBhV,EAAW7pI,EAAGy5I,aAAcz5I,EAAGyhJ,aAAgB,EAgCnE,CAEA,SAAS3C,GAAe/9L,GAEvB,IAAMq/K,EAAQhtL,KAEVytH,EAAc,KACjBk+E,EAAkB,EAClBC,GAAuB,EACvBC,GAAmB,EAEdvgC,EAAQ,IAAIqoB,GACjBmY,EAAmB,IAAIt1C,GAEvBu1C,EAAU,CAAEttM,MAAO,KAAM6gK,aAAa,GA2GvC,SAAS6sC,EAAezX,EAAQ9sB,EAAQ/B,EAAWumC,GAElD,IAAMC,EAAqB,OAAX3X,EAAkBA,EAAO98L,OAAS,EAC9C00M,EAAW,KAEf,GAAiB,IAAZD,EAAgB,CAIpB,GAFAC,EAAWP,EAAQttM,OAEI,IAAlB2tM,GAAuC,OAAbE,EAAoB,CAElD,IAAMC,EAAW1mC,EAAsB,EAAVwmC,EAC5BG,EAAa5kC,EAAOE,mBAErBgkC,EAAiB1lB,gBAAiBomB,IAEhB,OAAbF,GAAqBA,EAAS10M,OAAS20M,KAE3CD,EAAW,IAAIz3C,aAAc03C,IAI9B,IAAM,IAAI7vM,EAAI,EAAG+vM,EAAK5mC,EAAWnpK,IAAM2vM,IAAY3vM,EAAG+vM,GAAM,EAE3DnhC,EAAM5P,KAAMg5B,EAAQh4L,IAAMmrK,aAAc2kC,EAAYV,GAEpDxgC,EAAMvC,OAAOxhF,QAAS+kH,EAAUG,GAChCH,EAAUG,EAAK,GAAMnhC,EAAMC,QAI7B,CAEAwgC,EAAQttM,MAAQ6tM,EAChBP,EAAQzsC,aAAc,CAEvB,CAKA,OAHA0tB,EAAMif,UAAYI,EAClBrf,EAAMkf,gBAAkB,EAEjBI,CAER,CApJAtsM,KAAK+rM,QAAUA,EACf/rM,KAAKisM,UAAY,EACjBjsM,KAAKksM,gBAAkB,EAEvBlsM,KAAKu0H,KAAO,SAAWmgE,EAAQgY,GAE9B,IAAM7b,EACa,IAAlB6D,EAAO98L,QACP80M,GAGoB,IAApBf,GACAC,EAMD,OAJAA,EAAuBc,EAEvBf,EAAkBjX,EAAO98L,OAElBi5L,CAER,EAEA7wL,KAAK2sM,aAAe,WAEnBd,GAAmB,EACnBM,EAAe,KAEhB,EAEAnsM,KAAK4sM,WAAa,WAEjBf,GAAmB,CAEpB,EAEA7rM,KAAK8ub,eAAiB,SAAWp6P,EAAQ9sB,GAExCn6C,EAAc0+E,EAAezX,EAAQ9sB,EAAQ,EAE9C,EAEA5nK,KAAKwf,SAAW,SAAWq5J,EAAUjR,EAAQilC,GAE5C,IAAMnY,EAAS7b,EAASoE,eACvBC,EAAmBrE,EAASqE,iBAC5BC,EAActE,EAASsE,YAElB2vB,EAAqBn/L,EAAWoiB,IAAK8oJ,GAE3C,IAAO+yB,GAAmC,OAAXlX,GAAqC,IAAlBA,EAAO98L,QAAgBi0M,IAAsB1uB,EAIzF0uB,EAIJM,EAAe,MAkClB,WAEMJ,EAAQttM,QAAUgvH,IAEtBs+E,EAAQttM,MAAQgvH,EAChBs+E,EAAQzsC,YAAcqsC,EAAkB,GAIzC3e,EAAMif,UAAYN,EAClB3e,EAAMkf,gBAAkB,CAEzB,CA1CGF,OAIK,CAEN,IAAMe,EAAUlB,EAAmB,EAAIF,EACtCqB,EAAoB,EAAVD,EAEPT,EAAWQ,EAAmBG,eAAiB,KAEnDlB,EAAQttM,MAAQ6tM,EAEhBA,EAAWH,EAAezX,EAAQ9sB,EAAQolC,EAASH,GAEnD,IAAM,IAAInwM,EAAI,EAAGA,IAAMswM,IAAYtwM,EAElC4vM,EAAU5vM,GAAM+wH,EAAa/wH,GAI9BowM,EAAmBG,cAAgBX,EACnCtsM,KAAKksM,gBAAkBhvB,EAAmBl9K,KAAKisM,UAAY,EAC3DjsM,KAAKisM,WAAac,CAEnB,CAGD,CA6DD,CAEA,SAASG,GAAepb,GAEvB,IAAI2S,EAAW,IAAI1jJ,QAEnB,SAASosJ,EAAmB9rC,EAAS/c,GAYpC,OAVKA,IAAY4F,GAEhBmX,EAAQ/c,QAAU0F,GAEP1F,IAAY6F,KAEvBkX,EAAQ/c,QAAU2F,IAIZoX,CAER,CA+CA,SAAS+rC,EAAkB7kK,GAE1B,IAAM84H,EAAU94H,EAAMhnC,OAEtB8/J,EAAQnpI,oBAAqB,UAAWk1K,GAExC,IAAMC,EAAU5I,EAAS10K,IAAKsxI,QAEbj3J,IAAZijM,IAEJ5I,EAASjnK,OAAQ6jI,GACjBgsC,EAAQ3rC,UAIV,CAQA,MAAO,CACN3xI,IArED,SAAcsxI,GAEb,GAAKA,GAAWA,EAAQ1B,UAAY,CAEnC,IAAMrb,EAAU+c,EAAQ/c,QAExB,GAAKA,IAAY4F,IAAoC5F,IAAY6F,GAAmC,CAEnG,GAAKs6C,EAASr2J,IAAKizH,GAGlB,OAAO8rC,EADS1I,EAAS10K,IAAKsxI,GAAUA,QACLA,EAAQ/c,SAI3C,IAAMnL,EAAQkoB,EAAQloB,MAEtB,GAAKA,GAASA,EAAM/qI,OAAS,EAAI,CAEhC,IAAMijL,EAAe,IAAI0B,GAAuB55C,EAAM/qI,QAMtD,OALAijL,EAAaic,2BAA4Bxb,EAAUzwB,GACnDojC,EAASx1K,IAAKoyI,EAASgwB,GAEvBhwB,EAAQz9J,iBAAkB,UAAWwpM,GAE9BD,EAAmB9b,EAAahwB,QAASA,EAAQ/c,QAEzD,CAIC,OAAO,IAMV,CAED,CAEA,OAAO+c,CAER,EA2BCK,QARD,WAEC+iC,EAAW,IAAI1jJ,OAEhB,EAOD,CAAC,IAEK6sJ,GAAkB,SAAAC,GAAA7xL,EAAA4xL,EAAAC,GAAA,IAAAsgB,EAAAxzM,EAAAizL,GAEvB,SAAAA,IAAoF,IAAA4gB,EAAvExiL,EAAI/rC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,IAAK,EAAGu/D,EAAKv/D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGisC,EAAGjsC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGw/D,EAAMx/D,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,IAAK,EAAG4zK,EAAI5zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAK6zK,EAAG7zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAmB9C,OAnBkDwK,EAAA,KAAAmjM,IAEhF4gB,EAAAL,EAAAtxN,KAAA,OAEKsxM,sBAAuB,EAE5BqgB,EAAK5pN,KAAO,qBAEZ4pN,EAAK35L,KAAO,EACZ25L,EAAKjtL,KAAO,KAEZitL,EAAKxiL,KAAOA,EACZwiL,EAAKhvJ,MAAQA,EACbgvJ,EAAKtiL,IAAMA,EACXsiL,EAAK/uJ,OAASA,EAEd+uJ,EAAK36C,KAAOA,EACZ26C,EAAK16C,IAAMA,EAEX06C,EAAKn+B,yBAAyBm+B,CAE/B,CA0GC,OA1GAjlN,EAAAqkM,EAAA,EAAAprM,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAcb,OAZA9xC,GAAA5rH,EAAAsyL,EAAAhxM,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAKgsC,KAAOxqC,EAAOwqC,KACnBhsC,KAAKw/D,MAAQh+D,EAAOg+D,MACpBx/D,KAAKksC,IAAM1qC,EAAO0qC,IAClBlsC,KAAKy/D,OAASj+D,EAAOi+D,OACrBz/D,KAAK6zK,KAAOryK,EAAOqyK,KACnB7zK,KAAK8zK,IAAMtyK,EAAOsyK,IAElB9zK,KAAK60B,KAAOrzB,EAAOqzB,KACnB70B,KAAKuhC,KAAuB,OAAhB//B,EAAO+/B,KAAgB,KAAOhjC,OAAOmgB,OAAQ,CAAC,EAAGld,EAAO+/B,MAE7DvhC,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAekyL,EAAWC,EAAY10L,EAAGmL,EAAG8G,EAAOC,GAE/B,OAAdpO,KAAKuhC,OAETvhC,KAAKuhC,KAAO,CACXsvJ,SAAS,EACTF,UAAW,EACXC,WAAY,EACZp3E,QAAS,EACTE,QAAS,EACTvrG,MAAO,EACPC,OAAQ,IAKVpO,KAAKuhC,KAAKsvJ,SAAU,EACpB7wL,KAAKuhC,KAAKovJ,UAAYA,EACtB3wL,KAAKuhC,KAAKqvJ,WAAaA,EACvB5wL,KAAKuhC,KAAKi4E,QAAUt9G,EACpB8D,KAAKuhC,KAAKm4E,QAAUryG,EACpBrH,KAAKuhC,KAAKpzB,MAAQA,EAClBnO,KAAKuhC,KAAKnzB,OAASA,EAEnBpO,KAAKqwL,wBAEN,GAAC,CAAA7tL,IAAA,kBAAA/D,MAED,WAEoB,OAAduB,KAAKuhC,OAETvhC,KAAKuhC,KAAKsvJ,SAAU,GAIrB7wL,KAAKqwL,wBAEN,GAAC,CAAA7tL,IAAA,yBAAA/D,MAED,WAEC,IAAM6vI,GAAOtuI,KAAKw/D,MAAQx/D,KAAKgsC,OAAW,EAAIhsC,KAAK60B,MAC7Cw5G,GAAOruI,KAAKksC,IAAMlsC,KAAKy/D,SAAa,EAAIz/D,KAAK60B,MAC7C0kI,GAAOv5J,KAAKw/D,MAAQx/D,KAAKgsC,MAAS,EAClCwtH,GAAOx5J,KAAKksC,IAAMlsC,KAAKy/D,QAAW,EAEpCzzB,EAAOutH,EAAKjrB,EACZ9uE,EAAQ+5F,EAAKjrB,EACbpiG,EAAMstH,EAAKnrB,EACX5uE,EAAS+5F,EAAKnrB,EAElB,GAAmB,OAAdruI,KAAKuhC,MAAiBvhC,KAAKuhC,KAAKsvJ,QAAU,CAE9C,IAAMmd,GAAWhuM,KAAKw/D,MAAQx/D,KAAKgsC,MAAShsC,KAAKuhC,KAAKovJ,UAAY3wL,KAAK60B,KACjEo5K,GAAWjuM,KAAKksC,IAAMlsC,KAAKy/D,QAAWz/D,KAAKuhC,KAAKqvJ,WAAa5wL,KAAK60B,KAGxE2qC,GADAxzB,GAAQgiK,EAAShuM,KAAKuhC,KAAKi4E,SACZw0F,EAAShuM,KAAKuhC,KAAKpzB,MAElCsxD,GADAvzB,GAAO+hK,EAASjuM,KAAKuhC,KAAKm4E,SACXu0F,EAASjuM,KAAKuhC,KAAKnzB,MAEnC,CAEApO,KAAK+nK,iBAAiBmmC,iBAAkBliK,EAAMwzB,EAAOtzB,EAAKuzB,EAAQz/D,KAAK6zK,KAAM7zK,KAAK8zK,IAAK9zK,KAAK8mb,kBAE5F9mb,KAAKgoK,wBAAwBtM,KAAM17J,KAAK+nK,kBAAmBj4B,QAE5D,GAAC,CAAAttI,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAAsyL,EAAAhxM,WAAA,eAAAC,KAAA,KAAiBy5B,GAY3B,OAVAoN,EAAKvhC,OAAO0yB,KAAO70B,KAAK60B,KACxB6O,EAAKvhC,OAAO6pC,KAAOhsC,KAAKgsC,KACxBtI,EAAKvhC,OAAOq9D,MAAQx/D,KAAKw/D,MACzB97B,EAAKvhC,OAAO+pC,IAAMlsC,KAAKksC,IACvBxI,EAAKvhC,OAAOs9D,OAASz/D,KAAKy/D,OAC1B/7B,EAAKvhC,OAAO0xK,KAAO7zK,KAAK6zK,KACxBnwI,EAAKvhC,OAAO2xK,IAAM9zK,KAAK8zK,IAEJ,OAAd9zK,KAAKuhC,OAAgBmC,EAAKvhC,OAAOo/B,KAAOhjC,OAAOmgB,OAAQ,CAAC,EAAG1e,KAAKuhC,OAE9DmC,CAER,KAACkqK,CAAA,CAjIsB,CAASne,IA2I3B2e,GAAkB,CAAE,KAAO,KAAO,IAAM,KAAO,KAAO,MAItDC,GAAc,GAEdC,GAA4B,IAAIV,GAChCW,GAA4B,IAAIhzC,GAClCizC,GAAa,KACbugP,GAAqB,EACrBC,GAAwB,EAGtBvgP,IAAQ,EAAIxxM,KAAK04J,KAAM,IAAQ,EAC/B+4C,GAAU,EAAID,GAIdE,GAAkB,CACT,IAAI7nC,GAAS,EAAG,EAAG,GACnB,IAAIA,IAAW,EAAG,EAAG,GACrB,IAAIA,GAAS,EAAG,GAAK,GACrB,IAAIA,IAAW,EAAG,GAAK,GACvB,IAAIA,GAAS,EAAG2nC,GAAKC,IACrB,IAAI5nC,GAAS,EAAG2nC,IAAOC,IACvB,IAAI5nC,GAAS4nC,GAAS,EAAGD,IACzB,IAAI3nC,IAAW4nC,GAAS,EAAGD,IAC3B,IAAI3nC,GAAS2nC,GAAKC,GAAS,GAC3B,IAAI5nC,IAAW2nC,GAAKC,GAAS,IAiBtCE,GAAc,WAEnB,SAAAA,EAAa9c,GAAWrnL,EAAA,KAAAmkM,GAEvB5uM,KAAK6uM,UAAY/c,EACjB9xL,KAAK8uM,sBAAwB,KAE7B9uM,KAAK+uM,QAAU,EACf/uM,KAAKgvM,UAAY,EACjBhvM,KAAKivM,WAAa,GAClBjvM,KAAKkvM,UAAY,GACjBlvM,KAAKmvM,QAAU,GAEfnvM,KAAKovM,cAAgB,KACrBpvM,KAAKqvM,iBAAmB,KACxBrvM,KAAKsvM,kBAAoB,KAEzBtvM,KAAKuvM,iBAAkBvvM,KAAKovM,cAE7B,CAmdC,OAjdD7lM,EAAAqlM,EAAA,EAAApsM,IAAA,YAAA/D,MAOA,SAAWszL,GAA0C,IAAnCyd,EAAKvvM,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAG4zK,EAAI5zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAAK6zK,EAAG7zK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAE9CuuM,GAAaxuM,KAAK6uM,UAAU3c,kBAC5B68P,GAAqB/ub,KAAK6uM,UAAUoiB,oBACpC+9N,GAAwBhvb,KAAK6uM,UAAUsiB,uBAEvCnxN,KAAKyvM,SAAU,KAEf,IAAMC,EAAqB1vM,KAAK2vM,mBAchC,OAbAD,EAAmBpuC,aAAc,EAEjCthK,KAAK4vM,eAAgB7d,EAAOle,EAAMC,EAAK47B,GAElCF,EAAQ,GAEZxvM,KAAK6vM,MAAOH,EAAoB,EAAG,EAAGF,GAIvCxvM,KAAK8vM,YAAaJ,GAClB1vM,KAAK+vM,SAAUL,GAERA,CAER,GAEA,CAAAltM,IAAA,sBAAA/D,MAKA,SAAqBuxM,GAAuC,IAAtB3e,EAAYpxL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAEpD,OAAOD,KAAKiwM,aAAcD,EAAiB3e,EAE5C,GAEA,CAAA7uL,IAAA,cAAA/D,MAKA,SAAa4uM,GAA+B,IAAtBhc,EAAYpxL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAEpC,OAAOD,KAAKiwM,aAAc5C,EAAShc,EAEpC,GAEA,CAAA7uL,IAAA,uBAAA/D,MAIA,WAEgC,OAA1BuB,KAAKqvM,mBAETrvM,KAAKqvM,iBAAmBa,KACxBlwM,KAAKuvM,iBAAkBvvM,KAAKqvM,kBAI9B,GAEA,CAAA7sM,IAAA,+BAAA/D,MAIA,WAEiC,OAA3BuB,KAAKsvM,oBAETtvM,KAAKsvM,kBAAoBa,KACzBnwM,KAAKuvM,iBAAkBvvM,KAAKsvM,mBAI9B,GAEA,CAAA9sM,IAAA,UAAA/D,MAKA,WAECuB,KAAKowM,WAE0B,OAA1BpwM,KAAKqvM,kBAA4BrvM,KAAKqvM,iBAAiB3tC,UAC5B,OAA3B1hK,KAAKsvM,mBAA6BtvM,KAAKsvM,kBAAkB5tC,SAE/D,GAEA,CAAAl/J,IAAA,WAAA/D,MAEA,SAAU4xM,GAETrwM,KAAK+uM,QAAU9xM,KAAKwf,MAAOxf,KAAKqzM,KAAMD,IACtCrwM,KAAKgvM,UAAY/xM,KAAKs1J,IAAK,EAAGvyJ,KAAK+uM,QAEpC,GAAC,CAAAvsM,IAAA,WAAA/D,MAED,WAE6B,OAAvBuB,KAAKovM,eAAyBpvM,KAAKovM,cAAc1tC,UAElB,OAA/B1hK,KAAK8uM,uBAAiC9uM,KAAK8uM,sBAAsBptC,UAEtE,IAAM,IAAIhlK,EAAI,EAAGA,EAAIsD,KAAKivM,WAAWr3M,OAAQ8E,IAE5CsD,KAAKivM,WAAYvyM,GAAIglK,SAIvB,GAAC,CAAAl/J,IAAA,WAAA/D,MAED,SAAU8xM,GAETvwM,KAAK6uM,UAAUpc,gBAAiB+b,GAAYugP,GAAoBC,IAChEz+O,EAAapvC,aAAc,EAC3BqvC,GAAcD,EAAc,EAAG,EAAGA,EAAapiM,MAAOoiM,EAAaniM,OAEpE,GAAC,CAAA5L,IAAA,eAAA/D,MAED,SAAc4iK,EAASgwB,GAEjBhwB,EAAQ/c,UAAY0F,IAAyBqX,EAAQ/c,UAAY2F,GAErEjqJ,KAAKyvM,SAAmC,IAAzBpuC,EAAQloB,MAAMvhJ,OAAe,GAAOypK,EAAQloB,MAAO,GAAIhrI,OAASkzJ,EAAQloB,MAAO,GAAIA,MAAMhrI,OAIxGnO,KAAKyvM,SAAUpuC,EAAQloB,MAAMhrI,MAAQ,GAItCqgM,GAAaxuM,KAAK6uM,UAAU3c,kBAC5B68P,GAAqB/ub,KAAK6uM,UAAUoiB,oBACpC+9N,GAAwBhvb,KAAK6uM,UAAUsiB,uBAEvC,IAAMzhB,EAAqBre,GAAgBrxL,KAAK2vM,mBAKhD,OAJA3vM,KAAKywM,iBAAkBpvC,EAASquC,GAChC1vM,KAAK8vM,YAAaJ,GAClB1vM,KAAK+vM,SAAUL,GAERA,CAER,GAAC,CAAAltM,IAAA,mBAAA/D,MAED,WAEC,IAAM0P,EAAQ,EAAIlR,KAAKC,IAAK8C,KAAKgvM,UAAW,KACtC5gM,EAAS,EAAIpO,KAAKgvM,UAElB90I,EAAS,CACdmkG,UAAWxT,GACXyT,UAAWzT,GACXgU,iBAAiB,EACjBj6J,KAAM6mJ,GACN8S,OAAQxS,GACR4O,WAAYlL,GACZ6R,aAAa,GAGRouC,EAAqBgB,GAAqBviM,EAAOC,EAAQ8rD,GAE/D,GAAoC,OAA/Bl6D,KAAK8uM,uBAAkC9uM,KAAK8uM,sBAAsB3gM,QAAUA,GAASnO,KAAK8uM,sBAAsB1gM,SAAWA,EAAS,CAEpG,OAA/BpO,KAAK8uM,uBAET9uM,KAAKowM,WAINpwM,KAAK8uM,sBAAwB4B,GAAqBviM,EAAOC,EAAQ8rD,GAEjE,IAAQ60I,EAAY/uM,KAAZ+uM,QAAiB4B,EAiS5B,SAAwBC,GAUvB,IARA,IAAMC,EAAY,GACZC,EAAW,GACXC,EAAS,GAEXC,EAAMJ,EAEJK,EAAYL,EAviBH,EAuiBsB,EAAIxC,GAAgBx2M,OAE/C8E,EAAI,EAAGA,EAAIu0M,EAAWv0M,IAAO,CAEtC,IAAMw0M,EAAUj0M,KAAKs1J,IAAK,EAAGy+C,GAC7BF,EAASh0M,KAAMo0M,GACf,IAAI1B,EAAQ,EAAM0B,EAEbx0M,EAAIk0M,EA/iBK,EAijBbpB,EAAQpB,GAAiB1xM,EAAIk0M,EAjjBhB,EAijBmC,GAE/B,IAANl0M,IAEX8yM,EAAQ,GAITuB,EAAOj0M,KAAM0yM,GAiBb,IAfA,IAAM2B,EAAY,GAAQD,EAAU,GAC9BhmK,GAAQimK,EACRj0M,EAAM,EAAIi0M,EACVj3B,EAAM,CAAEhvI,EAAKA,EAAKhuC,EAAKguC,EAAKhuC,EAAKA,EAAKguC,EAAKA,EAAKhuC,EAAKA,EAAKguC,EAAKhuC,GAE/Dk0M,EAAY,EACZnkB,EAAW,EACXokB,EAAe,EACfC,EAAS,EACTC,EAAgB,EAEhBhyI,EAAW,IAAIs1F,aAAcw8C,EAAepkB,EAAWmkB,GACvD3xC,EAAK,IAAI5K,aAAcy8C,EAASrkB,EAAWmkB,GAC3CnlB,EAAY,IAAIp3B,aAAc08C,EAAgBtkB,EAAWmkB,GAErDllB,EAAO,EAAGA,EAAOklB,EAAWllB,IAAU,CAE/C,IAAMhwL,EAAMgwL,EAAO,EAAM,EAAI,EAAI,EAC3B7kL,EAAI6kL,EAAO,EAAI,GAAM,EACrBslB,EAAc,CACnBt1M,EAAGmL,EAAG,EACNnL,EAAI,EAAI,EAAGmL,EAAG,EACdnL,EAAI,EAAI,EAAGmL,EAAI,EAAG,EAClBnL,EAAGmL,EAAG,EACNnL,EAAI,EAAI,EAAGmL,EAAI,EAAG,EAClBnL,EAAGmL,EAAI,EAAG,GAEXk4D,EAAStwC,IAAKuiL,EAAaH,EAAepkB,EAAWf,GACrDzsB,EAAGxwI,IAAKirJ,EAAKo3B,EAASrkB,EAAWf,GACjC,IAAM3wE,EAAO,CAAE2wE,EAAMA,EAAMA,EAAMA,EAAMA,EAAMA,GAC7CD,EAAUh9J,IAAKssF,EAAMg2F,EAAgBtkB,EAAWf,EAEjD,CAEA,IAAMwI,EAAS,IAAIhP,GACnBgP,EAAO5hL,aAAc,WAAY,IAAI0vK,GAAiBjjH,EAAU8xI,IAChE3c,EAAO5hL,aAAc,KAAM,IAAI0vK,GAAiB/iB,EAAI6xC,IACpD5c,EAAO5hL,aAAc,YAAa,IAAI0vK,GAAiByJ,EAAWslB,IAClEV,EAAU/zM,KAAM43L,GAEXsc,EAnmBS,GAqmBbA,GAIF,CAEA,MAAO,CAAEH,UAAAA,EAAWC,SAAAA,EAAUC,OAAAA,EAE/B,CA9WsFU,CAAe1C,GAApF/uM,KAAKkvM,UAASyB,EAAxBG,SAAqC9wM,KAAKivM,WAAU0B,EAA1BE,UAAoC7wM,KAAKmvM,QAAOwB,EAApBI,OAE1D/wM,KAAKovM,cA+XR,SAAyBwB,EAAQziM,EAAOC,GAEvC,IAAMsjM,EAAU,IAAI78C,aAAcw5C,IAC5BsD,EAAW,IAAI7qC,GAAS,EAAG,EAAG,GAC9B8qC,EAAiB,IAAIrjB,GAAgB,CAE1Cp1L,KAAM,wBAENw1L,QAAS,CACR,EAAK0f,GACL,mBAAsB,EAAMlgM,EAC5B,oBAAuB,EAAMC,EAC7B,eAAkB,GAAF3M,OAAKmvM,EAAM,OAG5BxiB,SAAU,CACT,OAAU,CAAE3vL,MAAO,MACnB,QAAW,CAAEA,MAAO,GACpB,QAAW,CAAEA,MAAOizM,GACpB,YAAe,CAAEjzM,OAAO,GACxB,OAAU,CAAEA,MAAO,GACnB,OAAU,CAAEA,MAAO,GACnB,SAAY,CAAEA,MAAOkzM,IAGtB/iB,aA4JgB,yoCA1JhBC,eAA0B,miDA8D1BjT,SAzmhBiB,EA0mhBjBW,WAAW,EACXC,YAAY,IAIb,OAAOo1B,CAER,CAhewBC,CAAgB9C,EAAS5gM,EAAOC,EAEtD,CAEA,OAAOshM,CAER,GAAC,CAAAltM,IAAA,mBAAA/D,MAED,SAAkBo6K,GAEjB,IAAMi5B,EAAU,IAAI5mB,GAAMlrL,KAAKivM,WAAY,GAAKp2B,GAChD74K,KAAK6uM,UAAUkD,QAASD,EAASxD,GAElC,GAAC,CAAA9rM,IAAA,iBAAA/D,MAED,SAAgBszL,EAAOle,EAAMC,EAAK47B,GAEjC,IAEMsC,EAAa,IAAIniB,GAFX,GACG,EACwChc,EAAMC,GACvDm+B,EAAS,CAAE,GAAK,EAAG,EAAG,EAAG,EAAG,GAC5BC,EAAc,CAAE,EAAG,EAAG,GAAK,GAAK,GAAK,GACrCpgB,EAAW9xL,KAAK6uM,UAEhBsD,EAAoBrgB,EAAS8T,UAC7BtT,EAAcR,EAASQ,YAC7BR,EAASqT,cAAeoJ,IAExBzc,EAASQ,YAAc7oC,GACvBqoC,EAAS8T,WAAY,EAErB,IAAMwM,EAAqB,IAAIpwB,GAAmB,CACjD7oL,KAAM,mBACN0iL,KAAMz0B,GACNo1B,YAAY,EACZD,WAAW,IAGN81B,EAAgB,IAAInnB,GAAM,IAAIuB,GAAe2lB,GAE/CE,GAAgB,EACd1yI,EAAamyH,EAAMnyH,WAEpBA,EAECA,EAAW67F,UAEf22C,EAAmB5qK,MAAMk0H,KAAM97F,GAC/BmyH,EAAMnyH,WAAa,KACnB0yI,GAAgB,IAMjBF,EAAmB5qK,MAAMk0H,KAAM6yC,IAC/B+D,GAAgB,GAIjB,IAAM,IAAI51M,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAMs5B,EAAMt5B,EAAI,EAEH,IAARs5B,GAEJg8K,EAAWrgC,GAAG1iJ,IAAK,EAAGgjL,EAAQv1M,GAAK,GACnCs1M,EAAWj7B,OAAQm7B,EAAax1M,GAAK,EAAG,IAErB,IAARs5B,GAEXg8K,EAAWrgC,GAAG1iJ,IAAK,EAAG,EAAGgjL,EAAQv1M,IACjCs1M,EAAWj7B,OAAQ,EAAGm7B,EAAax1M,GAAK,KAIxCs1M,EAAWrgC,GAAG1iJ,IAAK,EAAGgjL,EAAQv1M,GAAK,GACnCs1M,EAAWj7B,OAAQ,EAAG,EAAGm7B,EAAax1M,KAIvC,IAAM6oD,EAAOvlD,KAAKgvM,UAElBwB,GAAcd,EAAoB15K,EAAMuvB,EAAM7oD,EAAI,EAAI6oD,EAAO,EAAGA,EAAMA,GAEtEusI,EAASW,gBAAiBid,GAErB4C,GAEJxgB,EAAStsL,OAAQ6sM,EAAeL,GAIjClgB,EAAStsL,OAAQusL,EAAOigB,EAEzB,CAEAK,EAAcvnC,SAASpJ,UACvB2wC,EAAcx5B,SAASnX,UAEvBowB,EAASQ,YAAcA,EACvBR,EAAS8T,UAAYuM,EACrBpgB,EAAMnyH,WAAaA,CAEpB,GAAC,CAAAp9D,IAAA,mBAAA/D,MAED,SAAkB4iK,EAASquC,GAE1B,IAAM5d,EAAW9xL,KAAK6uM,UAEhB/b,EAAkBzxB,EAAQ/c,UAAY0F,IAAyBqX,EAAQ/c,UAAY2F,GAEpF6oC,GAE2B,OAA1B9yL,KAAKqvM,mBAETrvM,KAAKqvM,iBAAmBa,MAIzBlwM,KAAKqvM,iBAAiBjhB,SAASyS,WAAWpiM,OAA4C,IAAlC4iK,EAAQlC,uBAAsC,EAAI,GAItE,OAA3Bn/J,KAAKsvM,oBAETtvM,KAAKsvM,kBAAoBa,MAM3B,IAAMt3B,EAAWia,EAAgB9yL,KAAKqvM,iBAAmBrvM,KAAKsvM,kBACxDjc,EAAO,IAAInI,GAAMlrL,KAAKivM,WAAY,GAAKp2B,GAE5BA,EAASuV,SAER,OAAG3vL,MAAQ4iK,EAE7B,IAAM97G,EAAOvlD,KAAKgvM,UAElBwB,GAAcd,EAAoB,EAAG,EAAG,EAAInqJ,EAAM,EAAIA,GAEtDusI,EAASW,gBAAiBid,GAC1B5d,EAAStsL,OAAQ6tL,EAAMib,GAExB,GAAC,CAAA9rM,IAAA,cAAA/D,MAED,SAAaixM,GAEZ,IAAM5d,EAAW9xL,KAAK6uM,UAChBjJ,EAAY9T,EAAS8T,UAC3B9T,EAAS8T,WAAY,EAErB,IAAM,IAAIlpM,EAAI,EAAGA,EAAIsD,KAAKivM,WAAWr3M,OAAQ8E,IAAO,CAEnD,IAAM8yM,EAAQvyM,KAAK04J,KAAM31J,KAAKmvM,QAASzyM,GAAMsD,KAAKmvM,QAASzyM,GAAMsD,KAAKmvM,QAASzyM,EAAI,GAAMsD,KAAKmvM,QAASzyM,EAAI,IAErGi1M,EAAWhD,IAAmBjyM,EAAI,GAAMiyM,GAAgB/2M,QAE9DoI,KAAK6vM,MAAOH,EAAoBhzM,EAAI,EAAGA,EAAG8yM,EAAOmC,EAElD,CAEA7f,EAAS8T,UAAYA,CAEtB,GAEA,CAAApjM,IAAA,QAAA/D,MAOA,SAAOixM,EAAoB6C,EAAOC,EAAQhD,EAAOmC,GAEhD,IAAMc,EAAuBzyM,KAAK8uM,sBAElC9uM,KAAK0yM,UACJhD,EACA+C,EACAF,EACAC,EACAhD,EACA,cACAmC,GAED3xM,KAAK0yM,UACJD,EACA/C,EACA8C,EACAA,EACAhD,EACA,eACAmC,EAEF,GAAC,CAAAnvM,IAAA,YAAA/D,MAED,SAAWk0M,EAAUC,EAAWL,EAAOC,EAAQK,EAAcxkC,EAAWsjC,GAEvE,IAAM7f,EAAW9xL,KAAK6uM,UAChBiE,EAAe9yM,KAAKovM,cAEP,gBAAd/gC,GAA6C,iBAAdA,GAEnCt6J,QAAQwN,MACP,8DAKF,IAEMwxL,EAAW,IAAI7nB,GAAMlrL,KAAKivM,WAAYuD,GAAUM,GAChDE,EAAeF,EAAa1kB,SAE5B6kB,EAASjzM,KAAKkvM,UAAWqD,GAAU,EACnCW,EAAkB3qB,SAAUsqB,GAAiB51M,KAAK00J,IAAO,EAAIshD,GAAW,EAAIh2M,KAAK00J,GAAK,GACtFwhD,EAAcN,EAAeK,EAC7BzxC,EAAU8mB,SAAUsqB,GAAiB,EAAI51M,KAAKwf,MARxB,EAQqD02L,GAAgB9E,GAE5F5sC,EAAU4sC,IAEdt6L,QAAQk/C,KAAK,iBAADxxD,OACXoxM,EAAY,kDAAApxM,OACZggK,EAAO,wCAAAhgK,OAAuC4sM,KAOhD,IAHA,IAAMqD,EAAU,GACZ/gE,EAAM,EAEAj0I,EAAI,EAAGA,EAAI2xM,KAAgB3xM,EAAI,CAExC,IAAMR,EAAIQ,EAAIy2M,EACRC,EAASn2M,KAAKk2J,KAAOj3J,EAAIA,EAAI,GACnCw1M,EAAQ50M,KAAMs2M,GAEH,IAAN12M,EAEJi0I,GAAOyiE,EAEI12M,EAAI+kK,IAEf9wB,GAAO,EAAIyiE,EAIb,CAEA,IAAM,IAAI12M,EAAI,EAAGA,EAAIg1M,EAAQ95M,OAAQ8E,IAEpCg1M,EAASh1M,GAAMg1M,EAASh1M,GAAMi0I,EAI/BqiE,EAAsB,OAAGv0M,MAAQk0M,EAAStxC,QAC1C2xC,EAAuB,QAAGv0M,MAAQgjK,EAClCuxC,EAAuB,QAAGv0M,MAAQizM,EAClCsB,EAA2B,YAAGv0M,MAAsB,gBAAd4vK,EAEjCsjC,IAEJqB,EAAwB,SAAGv0M,MAAQkzM,GAIpC,IAAQ5C,EAAY/uM,KAAZ+uM,QACRiE,EAAsB,OAAGv0M,MAAQy0M,EACjCF,EAAsB,OAAGv0M,MAAQswM,EAAUwD,EAE3C,IAAMc,EAAarzM,KAAKkvM,UAAWsD,GAInChC,GAAcoC,EAHJ,EAAIS,GAAeb,EAASzD,EAlhBxB,EAkhB4CyD,EAASzD,EAlhBrD,EAkhByE,GAC7E,GAAM/uM,KAAKgvM,UAAYqE,GAEF,EAAIA,EAAY,EAAIA,GACnDvhB,EAASW,gBAAiBmgB,GAC1B9gB,EAAStsL,OAAQutM,EAAUzE,GAE5B,KAACM,CAAA,CAtekB,GA4jBpB,SAAS8B,GAAqBviM,EAAOC,EAAQ8rD,GAE5C,IAAMw1I,EAAqB,IAAI1uC,GAAmB7yJ,EAAOC,EAAQ8rD,GAIjE,OAHAw1I,EAAmBruC,QAAQ/c,QAAU8F,GACrCslD,EAAmBruC,QAAQloK,KAAO,eAClCu2M,EAAmBvuC,aAAc,EAC1BuuC,CAER,CAEA,SAASc,GAAcjvM,EAAQrF,EAAGmL,EAAG8G,EAAOC,GAE3C7M,EAAO6/J,SAASnyI,IAAK/yB,EAAGmL,EAAG8G,EAAOC,GAClC7M,EAAO2/J,QAAQjyI,IAAK/yB,EAAGmL,EAAG8G,EAAOC,EAElC,CAqGA,SAAS+hM,KAER,OAAO,IAAI5hB,GAAgB,CAE1Bp1L,KAAM,0BAENi1L,SAAU,CACT,OAAU,CAAE3vL,MAAO,OAGpBmwL,aAwEgB,yoCAtEhBC,eAA0B,yYAqB1BjT,SApphBiB,EAqphBjBW,WAAW,EACXC,YAAY,GAId,CAEA,SAAS0zB,KAER,OAAO,IAAI3hB,GAAgB,CAE1Bp1L,KAAM,kBAENi1L,SAAU,CACT,OAAU,CAAE3vL,MAAO,MACnB,WAAc,CAAEA,OAAS,IAG1BmwL,aA8BgB,yoCA5BhBC,eAA0B,0UAkB1BjT,SA3rhBiB,EA4rhBjBW,WAAW,EACXC,YAAY,GAId,CA+DA,SAAS82B,GAAiBxhB,GAEzB,IAAIyhB,EAAa,IAAIxyJ,QAEjByyJ,EAAiB,KAqFrB,SAASpG,EAAkB7kK,GAE1B,IAAM84H,EAAU94H,EAAMhnC,OAEtB8/J,EAAQnpI,oBAAqB,UAAWk1K,GAExC,IAAMqG,EAAYF,EAAWxjL,IAAKsxI,QAEfj3J,IAAdqpM,IAEJF,EAAW/1K,OAAQ6jI,GACnBoyC,EAAU/xC,UAIZ,CAeA,MAAO,CACN3xI,IAlHD,SAAcsxI,GAEb,GAAKA,GAAWA,EAAQ1B,UAAY,CAEnC,IAAMrb,EAAU+c,EAAQ/c,QAElBovD,EAAkBpvD,IAAY4F,IAAoC5F,IAAY6F,GAC9EwpD,EAAcrvD,IAAY0F,IAAyB1F,IAAY2F,GAIrE,GAAKypD,GAAiBC,EAAY,CAEjC,GAAKtyC,EAAQlC,wBAAsD,IAA7BkC,EAAQjC,iBAA4B,CAEzEiC,EAAQjC,kBAAmB,EAE3B,IAAIiyB,EAAekiB,EAAWxjL,IAAKsxI,GAOnC,OALwB,OAAnBmyC,IAA0BA,EAAiB,IAAI5E,GAAgB9c,IAEpET,EAAeqiB,EAAgBF,EAAeI,oBAAqBvyC,EAASgwB,GAAiBmiB,EAAeK,YAAaxyC,EAASgwB,GAClIkiB,EAAWtkL,IAAKoyI,EAASgwB,GAElBA,EAAahwB,OAErB,CAEC,GAAKkyC,EAAWnlK,IAAKizH,GAEpB,OAAOkyC,EAAWxjL,IAAKsxI,GAAUA,QAIjC,IAAMloB,EAAQkoB,EAAQloB,MAEtB,GAAOu6D,GAAiBv6D,GAASA,EAAM/qI,OAAS,GAASulM,GAAax6D,GA+B3E,SAAgCA,GAK/B,IAHA,IAAIx7D,EAAQ,EACN/lF,EAAS,EAEL8E,EAAI,EAAGA,EAAI9E,EAAQ8E,SAER0N,IAAf+uI,EAAOz8I,IAAoBihF,IAIjC,OAAOA,IAAU/lF,CAGlB,CA7CoFk8M,CAAuB36D,GAAY,CAEzF,OAAnBq6D,IAA0BA,EAAiB,IAAI5E,GAAgB9c,IAEpE,IAAMT,EAAeqiB,EAAgBF,EAAeI,oBAAqBvyC,GAAYmyC,EAAeK,YAAaxyC,GAKjH,OAJAkyC,EAAWtkL,IAAKoyI,EAASgwB,GAEzBhwB,EAAQz9J,iBAAkB,UAAWwpM,GAE9B/b,EAAahwB,OAErB,CAIC,OAAO,IAQX,CAED,CAEA,OAAOA,CAER,EAkDCK,QAfD,WAEC6xC,EAAa,IAAIxyJ,QAEO,OAAnByyJ,IAEJA,EAAe9xC,UACf8xC,EAAiB,KAInB,EAOD,CAEA,SAASO,GAAiBnnJ,GAEzB,IAAM0/B,EAAa,CAAC,EAEpB,SAAS0nH,EAAc76M,GAEtB,QAA4BiR,IAAvBkiF,EAAYnzF,GAEhB,OAAOmzF,EAAYnzF,GAIpB,IAAImtM,EAEJ,OAASntM,GAER,IAAK,sBACJmtM,EAAY15I,EAAGonJ,aAAc,wBAA2BpnJ,EAAGonJ,aAAc,4BAA+BpnJ,EAAGonJ,aAAc,8BACzH,MAED,IAAK,iCACJ1N,EAAY15I,EAAGonJ,aAAc,mCAAsCpnJ,EAAGonJ,aAAc,uCAA0CpnJ,EAAGonJ,aAAc,yCAC/I,MAED,IAAK,gCACJ1N,EAAY15I,EAAGonJ,aAAc,kCAAqCpnJ,EAAGonJ,aAAc,sCAAyCpnJ,EAAGonJ,aAAc,wCAC7I,MAED,IAAK,iCACJ1N,EAAY15I,EAAGonJ,aAAc,mCAAsCpnJ,EAAGonJ,aAAc,yCACpF,MAED,QACC1N,EAAY15I,EAAGonJ,aAAc76M,GAM/B,OAFAmzF,EAAYnzF,GAASmtM,EAEdA,CAER,CAEA,MAAO,CAENl4J,IAAK,SAAWj1C,GAEf,OAAgC,OAAzB66M,EAAc76M,EAEtB,EAEAo7H,KAAM,SAAWiiE,GAEXA,EAAaC,UAEjBud,EAAc,0BACdA,EAAc,8BAIdA,EAAc,uBACdA,EAAc,qBACdA,EAAc,0BACdA,EAAc,iCACdA,EAAc,4BACdA,EAAc,0BACdA,EAAc,2BACdA,EAAc,2BAIfA,EAAc,4BACdA,EAAc,+BACdA,EAAc,uCAEf,EAEAjkL,IAAK,SAAW52B,GAEf,IAAMmtM,EAAY0N,EAAc76M,GAQhC,OANmB,OAAdmtM,GAEJvyL,QAAQk/C,KAAM,wBAA0B95D,EAAO,6BAIzCmtM,CAER,EAIF,CAEA,SAAS2N,GAAiBrnJ,EAAIslB,EAAYmc,EAAMm4G,GAE/C,IAAM9uB,EAAa,CAAC,EACdw8B,EAAsB,IAAInzJ,QAEhC,SAASozJ,EAAmB5rK,GAE3B,IAAMuiI,EAAWviI,EAAMhnC,OAQvB,IAAM,IAAMpI,KANY,OAAnB2xK,EAASl8J,OAEbsjE,EAAWtR,OAAQkqG,EAASl8J,OAITk8J,EAAS54F,WAE5BA,EAAWtR,OAAQkqG,EAAS54F,WAAY/4E,IAIzC,IAAM,IAAMA,KAAQ2xK,EAASgb,gBAI5B,IAFA,IAAM/iL,EAAQ+nK,EAASgb,gBAAiB3sL,GAE9BuD,EAAI,EAAGmK,EAAI9D,EAAMnL,OAAQ8E,EAAImK,EAAGnK,IAEzCw1E,EAAWtR,OAAQ79D,EAAOrG,IAM5BouK,EAAS5yI,oBAAqB,UAAWi8K,UAElCz8B,EAAY5M,EAAS1rI,IAE5B,IAAM82H,EAAYg+C,EAAoBnkL,IAAK+6I,GAEtC5U,IAEJhkF,EAAWtR,OAAQs1F,GACnBg+C,EAAoB12K,OAAQstI,IAI7B07B,EAAcqD,wBAAyB/+B,IAEK,IAAvCA,EAASg+B,kCAENh+B,EAASs+B,kBAMjB/6G,EAAK+lH,OAAO18B,YAEb,CA8CA,SAAS28B,EAA0BvpC,GAElC,IAAMqc,EAAU,GAEVmtB,EAAgBxpC,EAASl8J,MACzB2lM,EAAmBzpC,EAAS54F,WAAW3S,SACzClmE,EAAU,EAEd,GAAuB,OAAlBi7M,EAAyB,CAE7B,IAAMvxM,EAAQuxM,EAAcvxM,MAC5B1J,EAAUi7M,EAAcj7M,QAExB,IAAM,IAAIqD,EAAI,EAAGmK,EAAI9D,EAAMnL,OAAQ8E,EAAImK,EAAGnK,GAAK,EAAI,CAElD,IAAMV,EAAI+G,EAAOrG,EAAI,GACf6J,EAAIxD,EAAOrG,EAAI,GACfT,EAAI8G,EAAOrG,EAAI,GAErByqL,EAAQrqL,KAAMd,EAAGuK,EAAGA,EAAGtK,EAAGA,EAAGD,EAE9B,CAED,KAAO,SAA0BoO,IAArBmqM,EAiBX,OAfA,IAAMxxM,EAAQwxM,EAAiBxxM,MAC/B1J,EAAUk7M,EAAiBl7M,QAE3B,IAAM,IAAIqD,EAAI,EAAGmK,EAAM9D,EAAMnL,OAAS,EAAM,EAAG8E,EAAImK,EAAGnK,GAAK,EAAI,CAE9D,IAAMV,EAAIU,EAAI,EACR6J,EAAI7J,EAAI,EACRT,EAAIS,EAAI,EAEdyqL,EAAQrqL,KAAMd,EAAGuK,EAAGA,EAAGtK,EAAGA,EAAGD,EAE9B,CAMD,CAEA,IAAMk6J,EAAY,IAAM0D,GAAkButB,GAAY7C,GAAwBN,IAAyBmD,EAAS,GAChHjxB,EAAU78J,QAAUA,EAMpB,IAAMm7M,EAAoBN,EAAoBnkL,IAAK+6I,GAE9C0pC,GAAoBtiI,EAAWtR,OAAQ4zI,GAI5CN,EAAoBjlL,IAAK67I,EAAU5U,EAEpC,CAgCA,MAAO,CAENnmI,IAzID,SAAc5tB,EAAQ2oK,GAErB,OAAmC,IAA9B4M,EAAY5M,EAAS1rI,MAE1B0rI,EAASlnK,iBAAkB,UAAWuwM,GAEtCz8B,EAAY5M,EAAS1rI,KAAO,EAE5BivD,EAAK+lH,OAAO18B,cANqC5M,CAUlD,EA8HCxH,OA5HD,SAAiBwH,GAEhB,IAAM29B,EAAqB39B,EAAS54F,WAIpC,IAAM,IAAM/4E,KAAQsvM,EAEnBv2H,EAAWoxF,OAAQmlC,EAAoBtvM,GAAQyzD,EAAG0iR,cAMnD,IAAMxpJ,EAAkBhb,EAASgb,gBAEjC,IAAM,IAAM3sL,KAAQ2sL,EAInB,IAFA,IAAM/iL,EAAQ+iL,EAAiB3sL,GAErBuD,EAAI,EAAGmK,EAAI9D,EAAMnL,OAAQ8E,EAAImK,EAAGnK,IAEzCw1E,EAAWoxF,OAAQvgK,EAAOrG,GAAKkwD,EAAG0iR,aAMrC,EAkGC76H,sBAnCD,SAAgC3pC,GAE/B,IAAM4pC,EAAmBR,EAAoBnkL,IAAK+6I,GAElD,GAAK4pC,EAAmB,CAEvB,IAAMJ,EAAgBxpC,EAASl8J,MAER,OAAlB0lM,GAICI,EAAiBr7M,QAAUi7M,EAAcj7M,SAE7Cg7M,EAA0BvpC,EAM7B,MAECupC,EAA0BvpC,GAI3B,OAAOopC,EAAoBnkL,IAAK+6I,EAEjC,EAWD,CAEA,SAAS6pC,GAA4B/nJ,EAAI0/B,EAAY+B,EAAMmoG,GAE1D,IAEIhiJ,EAQA5vC,EAAMkyL,EAVJL,EAAWD,EAAaC,SA0F9Bz2L,KAAKgqM,QAtFL,SAAkBvrM,GAEjB+1C,EAAO/1C,CAER,EAmFAuB,KAAKgqL,SA/EL,SAAmBvrL,GAElBmG,EAAOnG,EAAMmG,KACbkyL,EAAkBr4L,EAAMq4L,eAEzB,EA2EA92L,KAAKwF,OAzEL,SAAiBslC,EAAO6yC,GAEvB/wB,EAAGgoJ,aAAcpgK,EAAMmpC,EAAO/4E,EAAMkmC,EAAQgsJ,GAE5CzoG,EAAKi1E,OAAQ3lF,EAAOnpC,EAAM,EAE3B,EAoEAx0C,KAAKkqM,gBAlEL,SAA0Bp/J,EAAO6yC,EAAOwsH,GAEvC,GAAmB,IAAdA,EAAL,CAEA,IAAI7D,EAAW5yL,EAEf,GAAK+iL,EAEJ6P,EAAY15I,EACZl5C,EAAa,6BAOb,GAFAA,EAAa,6BAEM,QAHnB4yL,EAAYh6G,EAAWv8D,IAAK,2BAM3B,YADAhc,QAAQwN,MAAO,yIAOjB+kL,EAAW5yL,GAAc8gC,EAAMmpC,EAAO/4E,EAAMkmC,EAAQgsJ,EAAiBqT,GAErE97G,EAAKi1E,OAAQ3lF,EAAOnpC,EAAM21J,EAzBG,CA2B9B,EAsCAnqM,KAAKgub,gBApCL,SAA0BC,EAAQC,EAAQj6M,GAEzC,GAAmB,IAAdA,EAAL,CAEA,IAAM3tC,EAAYh6G,EAAWv8D,IAAK,oBAClC,GAAmB,OAAdu2K,EAEJ,IAAM,IAAI5pM,EAAI,EAAGA,EAAIu3O,EAAWv3O,IAE/BsD,KAAKwF,OAAQyob,EAAQvxb,GAAMo6L,EAAiBo3P,EAAQxxb,QAI/C,CAEN4pM,EAAU2oP,uBAAwBz6Y,EAAM05Y,EAAQ,EAAGtpb,EAAMqpb,EAAQ,EAAGh6M,GAGpE,IADA,IAAIm6M,EAAe,EACT1xb,EAAI,EAAGA,EAAIu3O,EAAWv3O,IAE/B0xb,GAAgBF,EAAQxxb,GAIzB2xF,EAAKi1E,OAAQ8qR,EAAc55Y,EAAM,EAElC,CAxB6B,CA0B9B,CAUD,CAEA,SAASqgK,GAAWjoJ,GAEnB,IAKMpnD,EAAS,CACd4wL,MAAO,EACP0e,MAAO,EACPC,UAAW,EACX9qC,OAAQ,EACR+qC,MAAO,GA8CR,MAAO,CACNZ,OAzDc,CACd18B,WAAY,EACZnY,SAAU,GAwDV/5J,OAAQA,EACRyvM,SAAU,KACVC,WAAW,EACX36I,MAdD,WAEC/0D,EAAOsvM,MAAQ,EACftvM,EAAOuvM,UAAY,EACnBvvM,EAAOykK,OAAS,EAChBzkK,EAAOwvM,MAAQ,CAEhB,EAQC1xC,OAjDD,SAAiB3lF,EAAOnpC,EAAM2gK,GAI7B,OAFA3vM,EAAOsvM,QAEEtgK,GAER,KAAKoY,EAAG8jR,UACPlrU,EAAOuvM,WAAaI,GAAkBx3H,EAAQ,GAC9C,MAED,KAAK/wB,EAAG0rU,MACP9yX,EAAOwvM,OAASG,GAAkBx3H,EAAQ,GAC1C,MAED,KAAK/wB,EAAG4rU,WACPhzX,EAAOwvM,OAASG,GAAkBx3H,EAAQ,GAC1C,MAED,KAAK/wB,EAAG2rU,UACP/yX,EAAOwvM,OAASG,EAAgBx3H,EAChC,MAED,KAAK/wB,EAAGyrU,OACP7yX,EAAOykK,QAAUkrC,EAAgBx3H,EACjC,MAED,QACC5pE,QAAQwN,MAAO,sCAAuCizB,GAKzD,EAoBD,CAEA,SAAS4gK,GAAep5M,EAAGuK,GAE1B,OAAOvK,EAAG,GAAMuK,EAAG,EAEpB,CAEA,SAAS8uM,GAAkBr5M,EAAGuK,GAE7B,OAAOtJ,KAAK4f,IAAKtW,EAAG,IAAQtJ,KAAK4f,IAAK7gB,EAAG,GAE1C,CAEA,SAASu5M,GAAmB3oJ,EAAI4pI,EAAcj3B,GAS7C,IAPA,IAAMi2C,EAAiB,CAAC,EAClBppB,EAAkB,IAAIv3B,aAAc,GACpC4gD,EAAgB,IAAI10J,QACpBu0J,EAAQ,IAAI11C,GAEZ81C,EAAiB,GAEbh5M,EAAI,EAAGA,EAAI,EAAGA,IAEvBg5M,EAAgBh5M,GAAM,CAAEA,EAAG,GAsQ5B,MAAO,CAEN4mK,OApQD,SAAiBnhK,EAAQ2oK,EAAUw8B,GAElC,IAAMqO,EAAmBxzM,EAAOopL,sBAEhC,IAA+B,IAA1BiL,EAAaC,SAAoB,CAKrC,IAAMxP,EAAiBnc,EAASgb,gBAAgBvmH,UAAYurG,EAASgb,gBAAgB/c,QAAU+B,EAASgb,gBAAgBt+I,MAClHouK,OAAyCxrM,IAAnB68K,EAAiCA,EAAervL,OAAS,EAEjF+5F,EAAQ8jH,EAAc1lL,IAAK+6I,GAE/B,QAAe1gK,IAAVunF,GAAuBA,EAAMhU,QAAUi4H,EAAoB,MAEhDxrM,IAAVunF,GAAsBA,EAAM0vE,QAAQK,UAEzC,IAAMm0C,OAAyDzrM,IAAtC0gK,EAASgb,gBAAgBvmH,SAC5Cu2I,OAAsD1rM,IAApC0gK,EAASgb,gBAAgB/c,OAC3CgtC,OAAoD3rM,IAAnC0gK,EAASgb,gBAAgBt+I,MAE1CikJ,EAAe3gB,EAASgb,gBAAgBvmH,UAAY,GACpDy2I,EAAelrC,EAASgb,gBAAgB/c,QAAU,GAClDktC,EAAcnrC,EAASgb,gBAAgBt+I,OAAS,GAElD0uK,EAAkB,GAEI,IAArBL,IAA4BK,EAAkB,IAC1B,IAApBJ,IAA2BI,EAAkB,IAC1B,IAAnBH,IAA0BG,EAAkB,GAEjD,IAAI/nM,EAAQ28J,EAAS54F,WAAW3S,SAASoe,MAAQu4H,EAC7C9nM,EAAS,EAERD,EAAQqoL,EAAasU,iBAEzB18L,EAASnR,KAAKurD,KAAMr6C,EAAQqoL,EAAasU,gBACzC38L,EAAQqoL,EAAasU,gBAItB,IAAM3wC,EAAS,IAAItF,aAAc1mJ,EAAQC,EAAS,EAAIwnM,GAEhDv0C,EAAU,IAAIO,GAAkBzH,EAAQhsJ,EAAOC,EAAQwnM,GAC7Dv0C,EAAQz8J,KAAO4mJ,GACf6V,EAAQ/B,aAAc,EAMtB,IAFA,IAAM62C,EAAqC,EAAlBD,EAEfx5M,EAAI,EAAGA,EAAIk5M,EAAmBl5M,IAQvC,IANA,IAAM05M,EAAc3qB,EAAc/uL,GAC5B25M,EAAcL,EAAct5M,GAC5B45M,EAAaL,EAAav5M,GAE1BqtC,EAAS57B,EAAQC,EAAS,EAAI1R,EAE1BmT,EAAI,EAAGA,EAAIumM,EAAYz4H,MAAO9tE,IAAO,CAE9C,IAAM45K,EAAS55K,EAAIsmM,GAEO,IAArBN,IAEJP,EAAMvqC,oBAAqBqrC,EAAavmM,GAExCsqJ,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMp5M,EACtCi+J,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMjuM,EACtC8yJ,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMhuM,EACtC6yJ,EAAQpwH,EAAS0/I,EAAS,GAAM,IAIR,IAApBqsB,IAEJR,EAAMvqC,oBAAqBsrC,EAAaxmM,GAExCsqJ,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMp5M,EACtCi+J,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMjuM,EACtC8yJ,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMhuM,EACtC6yJ,EAAQpwH,EAAS0/I,EAAS,GAAM,IAIT,IAAnBssB,IAEJT,EAAMvqC,oBAAqBurC,EAAYzmM,GAEvCsqJ,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMp5M,EACtCi+J,EAAQpwH,EAAS0/I,EAAS,GAAM6rB,EAAMjuM,EACtC8yJ,EAAQpwH,EAAS0/I,EAAS,IAAO6rB,EAAMhuM,EACvC6yJ,EAAQpwH,EAAS0/I,EAAS,IAAiC,IAAxB6sB,EAAW7zB,SAAmB6yB,EAAMluM,EAAI,EAI7E,CAIDuqF,EAAQ,CACPhU,MAAOi4H,EACPv0C,QAASA,EACT97G,KAAM,IAAI4vG,GAAShnJ,EAAOC,IAG3BqnM,EAAcxmL,IAAK67I,EAAUn5E,GAY7Bm5E,EAASlnK,iBAAkB,WAV3B,SAAS2yM,IAERl1C,EAAQK,UAER+zC,EAAcj4K,OAAQstI,GAEtBA,EAAS5yI,oBAAqB,UAAWq+K,EAE1C,GAID,CAMA,IAFA,IAAIC,EAAqB,EAEf95M,EAAI,EAAGA,EAAIi5M,EAAiB/9M,OAAQ8E,IAE7C85M,GAAsBb,EAAkBj5M,GAIzC,IAAM+5M,EAAqB3rC,EAASib,qBAAuB,EAAI,EAAIywB,EAEnElP,EAAQoP,cAAczmL,SAAU28B,EAAI,2BAA4B6pJ,GAChEnP,EAAQoP,cAAczmL,SAAU28B,EAAI,wBAAyB+oJ,GAE7DrO,EAAQoP,cAAczmL,SAAU28B,EAAI,sBAAuB+kC,EAAM0vE,QAAS9B,GAC1E+nC,EAAQoP,cAAczmL,SAAU28B,EAAI,0BAA2B+kC,EAAMpsC,KAGtE,KAAO,CAKN,IAAM3tD,OAA8BwS,IAArBurM,EAAiC,EAAIA,EAAiB/9M,OAEjE++M,EAAanB,EAAgB1qC,EAAS1rI,IAE1C,QAAoBh1B,IAAfusM,GAA4BA,EAAW/+M,SAAWA,EAAS,CAI/D++M,EAAa,GAEb,IAAM,IAAIj6M,EAAI,EAAGA,EAAI9E,EAAQ8E,IAE5Bi6M,EAAYj6M,GAAM,CAAEA,EAAG,GAIxB84M,EAAgB1qC,EAAS1rI,IAAOu3K,CAEjC,CAIA,IAAM,IAAIj6M,EAAI,EAAGA,EAAI9E,EAAQ8E,IAAO,CAEnC,IAAM2vL,EAAYsqB,EAAYj6M,GAE9B2vL,EAAW,GAAM3vL,EACjB2vL,EAAW,GAAMspB,EAAkBj5M,EAEpC,CAEAi6M,EAAWn9G,KAAM67G,IAEjB,IAAM,IAAI34M,EAAI,EAAGA,EAAI,EAAGA,IAElBA,EAAI9E,GAAU++M,EAAYj6M,GAAK,IAEnCg5M,EAAgBh5M,GAAK,GAAMi6M,EAAYj6M,GAAK,GAC5Cg5M,EAAgBh5M,GAAK,GAAMi6M,EAAYj6M,GAAK,KAI5Cg5M,EAAgBh5M,GAAK,GAAM2a,OAAOu/L,iBAClClB,EAAgBh5M,GAAK,GAAM,GAM7Bg5M,EAAel8G,KAAM47G,IAOrB,IALA,IAAM3pB,EAAe3gB,EAASgb,gBAAgBvmH,SACxCy2I,EAAelrC,EAASgb,gBAAgB/c,OAE1CytC,EAAqB,EAEf95M,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,IAAM2vL,EAAYqpB,EAAgBh5M,GAC5BkS,EAAQy9K,EAAW,GACnB5tL,EAAQ4tL,EAAW,GAEpBz9K,IAAUyI,OAAOu/L,kBAAoBn4M,GAEpCgtL,GAAgB3gB,EAASlhG,aAAc,cAAgBltE,KAAQ+uL,EAAc78K,IAEjFk8J,EAASh4J,aAAc,cAAgBpW,EAAG+uL,EAAc78K,IAIpDonM,GAAgBlrC,EAASlhG,aAAc,cAAgBltE,KAAQs5M,EAAcpnM,IAEjFk8J,EAASh4J,aAAc,cAAgBpW,EAAGs5M,EAAcpnM,IAIzDw9K,EAAiB1vL,GAAM+B,EACvB+3M,GAAsB/3M,IAIjBgtL,IAA+D,IAA/C3gB,EAAShhE,aAAc,cAAgBptG,IAE3DouK,EAASk7B,gBAAiB,cAAgBtpM,GAItCs5M,IAA+D,IAA/ClrC,EAAShhE,aAAc,cAAgBptG,IAE3DouK,EAASk7B,gBAAiB,cAAgBtpM,GAI3C0vL,EAAiB1vL,GAAM,EAIzB,CAKA,IAAM+5M,EAAqB3rC,EAASib,qBAAuB,EAAI,EAAIywB,EAEnElP,EAAQoP,cAAczmL,SAAU28B,EAAI,2BAA4B6pJ,GAChEnP,EAAQoP,cAAczmL,SAAU28B,EAAI,wBAAyBw/H,EAE9D,CAED,EAQD,CAEA,SAASyqB,GAAcjqJ,EAAI8qH,EAAYxlG,EAAYmc,GAElD,IAAIyoH,EAAY,IAAI/1J,QAmEpB,SAASg2J,EAAwBxuK,GAEhC,IAAMyuK,EAAgBzuK,EAAMhnC,OAE5By1M,EAAc9+K,oBAAqB,UAAW6+K,GAE9C7kI,EAAWtR,OAAQo2I,EAAc/+B,gBAEI,OAAhC++B,EAAc9+B,eAAyBhmG,EAAWtR,OAAQo2I,EAAc9+B,cAE9E,CAEA,MAAO,CAEN5U,OA/ED,SAAiBnhK,GAEhB,IAAMi0L,EAAQ/nG,EAAK7oF,OAAO4wL,MAEpBtrB,EAAW3oK,EAAO2oK,SAClBmsC,EAAiBv/B,EAAW3nJ,IAAK5tB,EAAQ2oK,GAoC/C,GAhCKgsC,EAAU/mL,IAAKknL,KAAqB7gB,IAExC1e,EAAWpU,OAAQ2zC,GAEnBH,EAAU7nL,IAAKgoL,EAAgB7gB,IAI3Bj0L,EAAO61K,mBAE2D,IAAjE71K,EAAO+0M,iBAAkB,UAAWH,IAExC50M,EAAOyB,iBAAkB,UAAWmzM,GAIhCD,EAAU/mL,IAAK5tB,KAAai0L,IAEhClkH,EAAWoxF,OAAQnhK,EAAO81K,eAAgBrrH,EAAG0iR,cAEf,OAAzBntU,EAAO+1K,eAEXhmG,EAAWoxF,OAAQnhK,EAAO+1K,cAAetrH,EAAG0iR,cAI7Cx4H,EAAU7nL,IAAK9sB,EAAQi0L,KAMpBj0L,EAAOs2K,cAAgB,CAE3B,IAAMG,EAAWz2K,EAAOy2K,SAEnBk+B,EAAU/mL,IAAK6oJ,KAAewd,IAElCxd,EAAStV,SAETwzC,EAAU7nL,IAAK2pJ,EAAUwd,GAI3B,CAEA,OAAO6gB,CAER,EAuBCv1C,QArBD,WAECo1C,EAAY,IAAI/1J,OAEjB,EAqBD,CAAC,IAEKqkL,GAAY,SAAAC,GAAArpN,EAAAopN,EAAAC,GAAA,IAAA9W,EAAA5zM,EAAAyqN,GAEjB,SAAAA,EAAaj3N,EAAOC,EAAQxJ,EAAM0/I,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWE,EAAYD,GAAS,IAAAmkE,EAInG,GAJmGj4N,EAAA,KAAA26N,IAEnG7mE,OAAoBn0J,IAAXm0J,EAAuBA,EAASrS,MAEzBA,IAAeqS,IAAWpS,GAEzC,MAAM,IAAIruJ,MAAO,oFAmBU,YAfdsM,IAATxF,GAAsB25J,IAAWrS,KAActnJ,EAAO2mJ,SAC7CnhJ,IAATxF,GAAsB25J,IAAWpS,KAAqBvnJ,EAAOgnJ,KAElE82E,EAAAnU,EAAA1xN,KAAA,KAAO,KAAMynJ,EAAS6Z,EAAOC,EAAOC,EAAWC,EAAWC,EAAQ35J,EAAM45J,IAEnE+9D,gBAAiB,EAEtBmG,EAAKvpF,MAAQ,CAAEhrI,MAAOA,EAAOC,OAAQA,GAErCs0N,EAAKrkE,eAA0Bj0J,IAAdi0J,EAA0BA,EAAY7T,GACvDk4E,EAAKpkE,eAA0Bl0J,IAAdk0J,EAA0BA,EAAY9T,GAEvDk4E,EAAK3jE,OAAQ,EACb2jE,EAAK7jE,iBAAkB,EAEvB6jE,EAAKwsN,gBAAkB,KAAKxsN,CAE7B,CAqBC,OArBAn5N,EAAA67N,EAAA,EAAA5iO,IAAA,OAAA/D,MAGD,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAA8pN,EAAAxoO,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKkvb,gBAAkB1tb,EAAO0tb,gBAEvBlvb,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAA8pN,EAAAxoO,WAAA,eAAAC,KAAA,KAAiBy5B,GAI3B,OAF8B,OAAzBt2B,KAAKkvb,kBAA2BxrZ,EAAKwrZ,gBAAkBlvb,KAAKkvb,iBAE1DxrZ,CAER,KAAC0hM,CAAA,CAlDgB,CAASrnE,IAkGrBo5C,GAA6B,IAAIp5C,GAEjCoxR,GAAmC,IAAI/pN,GAAc,EAAG,GAC9D+pN,GAAmBD,gBAtojBM,IAwojBzB,IAAM93O,GAAkC,IAAIx1C,GACtCy1C,GAA+B,IAAIl1C,GACnCm1C,GAAiC,IAAI5kB,GAMrC6kB,GAAgB,GAChBC,GAAgB,GAIhBC,GAAY,IAAI5iD,aAAc,IAC9B6iD,GAAY,IAAI7iD,aAAc,GAC9B8iD,GAAY,IAAI9iD,aAAc,GAIpC,SAAS9nD,GAAShqG,EAAO60M,EAASC,GAEjC,IAAMC,EAAY/0M,EAAO,GAEzB,GAAK+0M,GAAa,GAAKA,EAAY,EAAI,OAAO/0M,EAI9C,IAAMgE,EAAI6wM,EAAUC,EAChB3wM,EAAIqwM,GAAexwM,GASvB,QAPWqD,IAANlD,IAEJA,EAAI,IAAI2tJ,aAAc9tJ,GACtBwwM,GAAexwM,GAAMG,GAIL,IAAZ0wM,EAAgB,CAEpBE,EAAUvwH,QAASrgF,EAAG,GAEtB,IAAM,IAAIxK,EAAI,EAAGqtC,EAAS,EAAGrtC,IAAMk7M,IAAYl7M,EAE9CqtC,GAAU8tK,EACV90M,EAAOrG,GAAI6qF,QAASrgF,EAAG6iC,EAIzB,CAEA,OAAO7iC,CAER,CAEA,SAAS6wM,GAAa/7M,EAAGuK,GAExB,GAAKvK,EAAEpE,SAAW2O,EAAE3O,OAAS,OAAO,EAEpC,IAAM,IAAI8E,EAAI,EAAGmK,EAAI7K,EAAEpE,OAAQ8E,EAAImK,EAAGnK,IAErC,GAAKV,EAAGU,KAAQ6J,EAAG7J,GAAM,OAAO,EAIjC,OAAO,CAER,CAEA,SAASs7M,GAAWh8M,EAAGuK,GAEtB,IAAM,IAAI7J,EAAI,EAAGmK,EAAIN,EAAE3O,OAAQ8E,EAAImK,EAAGnK,IAErCV,EAAGU,GAAM6J,EAAG7J,EAId,CAIA,SAASu7M,GAAe14C,EAAUx4J,GAEjC,IAAIG,EAAIswM,GAAezwM,QAEZqD,IAANlD,IAEJA,EAAI,IAAI8yJ,WAAYjzJ,GACpBywM,GAAezwM,GAAMG,GAItB,IAAM,IAAIxK,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5BwK,EAAGxK,GAAM6iK,EAAS24C,sBAInB,OAAOhxM,CAER,CASA,SAASixM,GAAavrJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEdA,EAAO,KAAQjC,IAEpBylD,EAAGwrJ,UAAWp4M,KAAKq4M,KAAMlxM,GAEzBiC,EAAO,GAAMjC,EAEd,CAIA,SAASmxM,GAAa1rJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,IAE3CulD,EAAG2rJ,UAAWv4M,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,GAEhC+B,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,OAIV,CAEN,GAAK0wM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAG4rJ,WAAYx4M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAEA,SAASsxM,GAAa7rJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,GAAK+B,EAAO,KAAQjC,EAAEG,IAEjEslD,EAAG8rJ,UAAW14M,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,GAErC8B,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,EACf+B,EAAO,GAAMjC,EAAEG,QAIV,QAAa8C,IAARjD,EAAED,EAERkC,EAAO,KAAQjC,EAAED,GAAKkC,EAAO,KAAQjC,EAAET,GAAK0C,EAAO,KAAQjC,EAAEZ,IAEjEqmD,EAAG8rJ,UAAW14M,KAAKq4M,KAAMlxM,EAAED,EAAGC,EAAET,EAAGS,EAAEZ,GAErC6C,EAAO,GAAMjC,EAAED,EACfkC,EAAO,GAAMjC,EAAET,EACf0C,EAAO,GAAMjC,EAAEZ,OAIV,CAEN,GAAKwxM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAG+rJ,WAAY34M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAEA,SAASyxM,GAAahsJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,GAAK+B,EAAO,KAAQjC,EAAEG,GAAK8B,EAAO,KAAQjC,EAAEC,IAEvFwlD,EAAGisJ,UAAW74M,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,EAAGH,EAAEC,GAE1CgC,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,EACf+B,EAAO,GAAMjC,EAAEG,EACf8B,EAAO,GAAMjC,EAAEC,OAIV,CAEN,GAAK2wM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGksJ,WAAY94M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAIA,SAAS4xM,GAAYnsJ,EAAIzlD,GAExB,IAAMiC,EAAQpJ,KAAKoJ,MACb48H,EAAW7+H,EAAE6+H,SAEnB,QAAkB57H,IAAb47H,EAAyB,CAE7B,GAAK+xE,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGosJ,iBAAkBh5M,KAAKq4M,MAAM,EAAOlxM,GAEvC6wM,GAAW5uM,EAAOjC,EAEnB,KAAO,CAEN,GAAK4wM,GAAa3uM,EAAO48H,GAAa,OAEtC2xE,GAAU1oL,IAAK+2G,GAEfp5E,EAAGosJ,iBAAkBh5M,KAAKq4M,MAAM,EAAOV,IAEvCK,GAAW5uM,EAAO48H,EAEnB,CAED,CAEA,SAASizE,GAAYrsJ,EAAIzlD,GAExB,IAAMiC,EAAQpJ,KAAKoJ,MACb48H,EAAW7+H,EAAE6+H,SAEnB,QAAkB57H,IAAb47H,EAAyB,CAE7B,GAAK+xE,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGssJ,iBAAkBl5M,KAAKq4M,MAAM,EAAOlxM,GAEvC6wM,GAAW5uM,EAAOjC,EAEnB,KAAO,CAEN,GAAK4wM,GAAa3uM,EAAO48H,GAAa,OAEtC0xE,GAAUzoL,IAAK+2G,GAEfp5E,EAAGssJ,iBAAkBl5M,KAAKq4M,MAAM,EAAOX,IAEvCM,GAAW5uM,EAAO48H,EAEnB,CAED,CAEA,SAASmzE,GAAYvsJ,EAAIzlD,GAExB,IAAMiC,EAAQpJ,KAAKoJ,MACb48H,EAAW7+H,EAAE6+H,SAEnB,QAAkB57H,IAAb47H,EAAyB,CAE7B,GAAK+xE,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGwsJ,iBAAkBp5M,KAAKq4M,MAAM,EAAOlxM,GAEvC6wM,GAAW5uM,EAAOjC,EAEnB,KAAO,CAEN,GAAK4wM,GAAa3uM,EAAO48H,GAAa,OAEtCyxE,GAAUxoL,IAAK+2G,GAEfp5E,EAAGwsJ,iBAAkBp5M,KAAKq4M,MAAM,EAAOZ,IAEvCO,GAAW5uM,EAAO48H,EAEnB,CAED,CAIA,SAASqzE,GAAazsJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEdA,EAAO,KAAQjC,IAEpBylD,EAAG0sJ,UAAWt5M,KAAKq4M,KAAMlxM,GAEzBiC,EAAO,GAAMjC,EAEd,CAIA,SAASoyM,GAAa3sJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,IAE3CulD,EAAGs1T,UAAWliX,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,GAEhC+B,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,OAIV,CAEN,GAAK0wM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAG4sJ,WAAYx5M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAEA,SAASsyM,GAAa7sJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,GAAK+B,EAAO,KAAQjC,EAAEG,IAEjEslD,EAAGu1T,UAAWniX,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,GAErC8B,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,EACf+B,EAAO,GAAMjC,EAAEG,OAIV,CAEN,GAAKywM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAG8sJ,WAAY15M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAEA,SAASwyM,GAAa/sJ,EAAIzlD,GAEzB,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,GAAK+B,EAAO,KAAQjC,EAAEG,GAAK8B,EAAO,KAAQjC,EAAEC,IAEvFwlD,EAAGw1T,UAAWpiX,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,EAAGH,EAAEC,GAE1CgC,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,EACf+B,EAAO,GAAMjC,EAAEG,EACf8B,EAAO,GAAMjC,EAAEC,OAIV,CAEN,GAAK2wM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGgtJ,WAAY55M,KAAKq4M,KAAMlxM,GAE1B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAIA,SAAS0yM,GAAcjtJ,EAAIzlD,GAE1B,IAAMiC,EAAQpJ,KAAKoJ,MAEdA,EAAO,KAAQjC,IAEpBylD,EAAGktJ,WAAY95M,KAAKq4M,KAAMlxM,GAE1BiC,EAAO,GAAMjC,EAEd,CAIA,SAAS4yM,GAAcntJ,EAAIzlD,GAE1B,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,IAE3CulD,EAAGy1T,WAAYriX,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,GAEjC+B,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,OAIV,CAEN,GAAK0wM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGotJ,YAAah6M,KAAKq4M,KAAMlxM,GAE3B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAEA,SAAS8yM,GAAcrtJ,EAAIzlD,GAE1B,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,GAAK+B,EAAO,KAAQjC,EAAEG,IAEjEslD,EAAG01T,WAAYtiX,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,GAEtC8B,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,EACf+B,EAAO,GAAMjC,EAAEG,OAIV,CAEN,GAAKywM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGstJ,YAAal6M,KAAKq4M,KAAMlxM,GAE3B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAEA,SAASgzM,GAAcvtJ,EAAIzlD,GAE1B,IAAMiC,EAAQpJ,KAAKoJ,MAEnB,QAAagB,IAARjD,EAAEjL,EAEDkN,EAAO,KAAQjC,EAAEjL,GAAKkN,EAAO,KAAQjC,EAAEE,GAAK+B,EAAO,KAAQjC,EAAEG,GAAK8B,EAAO,KAAQjC,EAAEC,IAEvFwlD,EAAG21T,WAAYviX,KAAKq4M,KAAMlxM,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,EAAGH,EAAEC,GAE3CgC,EAAO,GAAMjC,EAAEjL,EACfkN,EAAO,GAAMjC,EAAEE,EACf+B,EAAO,GAAMjC,EAAEG,EACf8B,EAAO,GAAMjC,EAAEC,OAIV,CAEN,GAAK2wM,GAAa3uM,EAAOjC,GAAM,OAE/BylD,EAAGwtJ,YAAap6M,KAAKq4M,KAAMlxM,GAE3B6wM,GAAW5uM,EAAOjC,EAEnB,CAED,CAKA,SAASkzM,GAAYztJ,EAAIzlD,EAAGo4J,GAE3B,IAAMn2J,EAAQpJ,KAAKoJ,MACbkxM,EAAO/6C,EAAS24C,sBAEjB9uM,EAAO,KAAQkxM,IAEnB1tJ,EAAG0sJ,UAAWt5M,KAAKq4M,KAAMiC,GACzBlxM,EAAO,GAAMkxM,GAId,IAAM80O,EAAmBpvb,KAAK4E,OAASgoD,EAAGyiY,kBAAsBF,GAAqBh4O,GAErF53C,EAASg7C,aAAcpzM,GAAKiob,EAAgB90O,EAE7C,CAEA,SAASE,GAAc5tJ,EAAIzlD,EAAGo4J,GAE7B,IAAMn2J,EAAQpJ,KAAKoJ,MACbkxM,EAAO/6C,EAAS24C,sBAEjB9uM,EAAO,KAAQkxM,IAEnB1tJ,EAAG0sJ,UAAWt5M,KAAKq4M,KAAMiC,GACzBlxM,EAAO,GAAMkxM,GAId/6C,EAASk7C,aAActzM,GAAKkwM,GAAgBiD,EAE7C,CAEA,SAASI,GAAY9tJ,EAAIzlD,EAAGo4J,GAE3B,IAAMn2J,EAAQpJ,KAAKoJ,MACbkxM,EAAO/6C,EAAS24C,sBAEjB9uM,EAAO,KAAQkxM,IAEnB1tJ,EAAG0sJ,UAAWt5M,KAAKq4M,KAAMiC,GACzBlxM,EAAO,GAAMkxM,GAId/6C,EAASo7C,eAAgBxzM,GAAKmwM,GAAkBgD,EAEjD,CAEA,SAASM,GAAmBhuJ,EAAIzlD,EAAGo4J,GAElC,IAAMn2J,EAAQpJ,KAAKoJ,MACbkxM,EAAO/6C,EAAS24C,sBAEjB9uM,EAAO,KAAQkxM,IAEnB1tJ,EAAG0sJ,UAAWt5M,KAAKq4M,KAAMiC,GACzBlxM,EAAO,GAAMkxM,GAId/6C,EAASs7C,kBAAmB1zM,GAAKiwM,GAAmBkD,EAErD,CA0DA,SAASQ,GAAkBluJ,EAAIzlD,GAE9BylD,EAAGmuJ,WAAY/6M,KAAKq4M,KAAMlxM,EAE3B,CAIA,SAAS6zM,GAAkBpuJ,EAAIzlD,GAE9B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,GAEpCqH,EAAG4rJ,WAAYx4M,KAAKq4M,KAAM30K,EAE3B,CAEA,SAASu3K,GAAkBruJ,EAAIzlD,GAE9B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,GAEpCqH,EAAG+rJ,WAAY34M,KAAKq4M,KAAM30K,EAE3B,CAEA,SAASw3K,GAAkBtuJ,EAAIzlD,GAE9B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,GAEpCqH,EAAGksJ,WAAY94M,KAAKq4M,KAAM30K,EAE3B,CAIA,SAASy3K,GAAiBvuJ,EAAIzlD,GAE7B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,GAEpCqH,EAAGosJ,iBAAkBh5M,KAAKq4M,MAAM,EAAO30K,EAExC,CAEA,SAAS03K,GAAiBxuJ,EAAIzlD,GAE7B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,GAEpCqH,EAAGssJ,iBAAkBl5M,KAAKq4M,MAAM,EAAO30K,EAExC,CAEA,SAAS23K,GAAiBzuJ,EAAIzlD,GAE7B,IAAMu8B,EAAOqpE,GAAS5lG,EAAGnH,KAAKulD,KAAM,IAEpCqH,EAAGwsJ,iBAAkBp5M,KAAKq4M,MAAM,EAAO30K,EAExC,CAIA,SAAS43K,GAAkB1uJ,EAAIzlD,GAE9BylD,EAAG2uJ,WAAYv7M,KAAKq4M,KAAMlxM,EAE3B,CAIA,SAASq0M,GAAkB5uJ,EAAIzlD,GAE9BylD,EAAG4sJ,WAAYx5M,KAAKq4M,KAAMlxM,EAE3B,CAEA,SAASs0M,GAAkB7uJ,EAAIzlD,GAE9BylD,EAAG8sJ,WAAY15M,KAAKq4M,KAAMlxM,EAE3B,CAEA,SAASu0M,GAAkB9uJ,EAAIzlD,GAE9BylD,EAAGgtJ,WAAY55M,KAAKq4M,KAAMlxM,EAE3B,CAIA,SAASw0M,GAAmB/uJ,EAAIzlD,GAE/BylD,EAAGgvJ,YAAa57M,KAAKq4M,KAAMlxM,EAE5B,CAIA,SAAS00M,GAAmBjvJ,EAAIzlD,GAE/BylD,EAAGotJ,YAAah6M,KAAKq4M,KAAMlxM,EAE5B,CAEA,SAAS20M,GAAmBlvJ,EAAIzlD,GAE/BylD,EAAGstJ,YAAal6M,KAAKq4M,KAAMlxM,EAE5B,CAEA,SAAS40M,GAAmBnvJ,EAAIzlD,GAE/BylD,EAAGwtJ,YAAap6M,KAAKq4M,KAAMlxM,EAE5B,CAKA,SAAS60M,GAAiBpvJ,EAAIzlD,EAAGo4J,GAEhC,IAAMn2J,EAAQpJ,KAAKoJ,MAEbrC,EAAII,EAAEvP,OAENqkN,EAAQhE,GAAe14C,EAAUx4J,GAEhCgxM,GAAa3uM,EAAO6yM,KAE1BrvJ,EAAG2uJ,WAAYv7M,KAAKq4M,KAAM4D,GAE1BjE,GAAW5uM,EAAO6yM,IAInB,IAAM,IAAIv/M,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5B6iK,EAASg7C,aAAcpzM,EAAGzK,IAAOy6M,GAAc8E,EAAOv/M,GAIxD,CAEA,SAASw/M,GAAkBtvJ,EAAIzlD,EAAGo4J,GAEjC,IAAMn2J,EAAQpJ,KAAKoJ,MAEbrC,EAAII,EAAEvP,OAENqkN,EAAQhE,GAAe14C,EAAUx4J,GAEhCgxM,GAAa3uM,EAAO6yM,KAE1BrvJ,EAAG2uJ,WAAYv7M,KAAKq4M,KAAM4D,GAE1BjE,GAAW5uM,EAAO6yM,IAInB,IAAM,IAAIv/M,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5B6iK,EAASk7C,aAActzM,EAAGzK,IAAO26M,GAAgB4E,EAAOv/M,GAI1D,CAEA,SAASy/M,GAAiBvvJ,EAAIzlD,EAAGo4J,GAEhC,IAAMn2J,EAAQpJ,KAAKoJ,MAEbrC,EAAII,EAAEvP,OAENqkN,EAAQhE,GAAe14C,EAAUx4J,GAEhCgxM,GAAa3uM,EAAO6yM,KAE1BrvJ,EAAG2uJ,WAAYv7M,KAAKq4M,KAAM4D,GAE1BjE,GAAW5uM,EAAO6yM,IAInB,IAAM,IAAIv/M,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5B6iK,EAASo7C,eAAgBxzM,EAAGzK,IAAO46M,GAAkB2E,EAAOv/M,GAI9D,CAEA,SAAS0/M,GAAuBxvJ,EAAIzlD,EAAGo4J,GAEtC,IAAMn2J,EAAQpJ,KAAKoJ,MAEbrC,EAAII,EAAEvP,OAENqkN,EAAQhE,GAAe14C,EAAUx4J,GAEhCgxM,GAAa3uM,EAAO6yM,KAE1BrvJ,EAAG2uJ,WAAYv7M,KAAKq4M,KAAM4D,GAE1BjE,GAAW5uM,EAAO6yM,IAInB,IAAM,IAAIv/M,EAAI,EAAGA,IAAMqK,IAAMrK,EAE5B6iK,EAASs7C,kBAAmB1zM,EAAGzK,IAAO06M,GAAmB6E,EAAOv/M,GAIlE,CAwDA,IAEM2/M,GAAa9yM,GAElB,SAAA8yM,EAAaj9K,EAAIk9K,EAAYjE,GAAO5tM,EAAA,KAAA4xM,GAEnCr8M,KAAKo/B,GAAKA,EACVp/B,KAAKq4M,KAAOA,EACZr4M,KAAKoJ,MAAQ,GACbpJ,KAAK4E,KAAO03M,EAAW13M,KACvB5E,KAAKiwB,SA3UP,SAA4BrrB,GAE3B,OAASA,GAER,KAAK,KAAQ,OAAOuzM,GACpB,KAAK,MAAQ,OAAOG,GACpB,KAAK,MAAQ,OAAOG,GACpB,KAAK,MAAQ,OAAOG,GAEpB,KAAK,MAAQ,OAAOG,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GAEpB,KAAK,KAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GAEjC,KAAK,KAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOE,GAEpB,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOG,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,GAIV,CA0RkB2B,CAAmBD,EAAW13M,KAI/C,IAIK43M,GAAgBjzM,GAErB,SAAAizM,EAAap9K,EAAIk9K,EAAYjE,GAAO5tM,EAAA,KAAA+xM,GAEnCx8M,KAAKo/B,GAAKA,EACVp/B,KAAKq4M,KAAOA,EACZr4M,KAAKoJ,MAAQ,GACbpJ,KAAK4E,KAAO03M,EAAW13M,KACvB5E,KAAKulD,KAAO+2J,EAAW/2J,KACvBvlD,KAAKiwB,SA9EP,SAA6BrrB,GAE5B,OAASA,GAER,KAAK,KAAQ,OAAOk2M,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GAEpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GAEpB,KAAK,KAAQ,KAAK,MAAQ,OAAOC,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOE,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOC,GACjC,KAAK,MAAQ,KAAK,MAAQ,OAAOC,GAEjC,KAAK,KAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOE,GACpB,KAAK,MAAQ,OAAOC,GACpB,KAAK,MAAQ,OAAOC,GAEpB,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOC,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOE,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOC,GAER,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACJ,OAAOC,GAIV,CA6BkBK,CAAoBH,EAAW13M,KAIhD,IAIK83M,GAAiB,WAEtB,SAAAA,EAAat9K,GAAK30B,EAAA,KAAAiyM,GAEjB18M,KAAKo/B,GAAKA,EAEVp/B,KAAK28M,IAAM,GACX38M,KAAKzD,IAAM,CAAC,CAEb,CAaC,OAbAgN,EAAAmzM,EAAA,EAAAl6M,IAAA,WAAA/D,MAED,SAAUmuD,EAAInuD,EAAO8gK,GAIpB,IAFA,IAAMo9C,EAAM38M,KAAK28M,IAEPjgN,EAAI,EAAGqK,EAAI41M,EAAI/kN,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEhD,IAAM6K,EAAIo1M,EAAKjgN,GACf6K,EAAE0oB,SAAU28B,EAAInuD,EAAO8I,EAAE63B,IAAMmgI,EAEhC,CAED,KAACm9C,CAAA,CAtBqB,GA8BjBG,GAAa,sBAWnB,SAASC,GAAY3gM,EAAW4gM,GAE/B5gM,EAAUwgM,IAAI7/M,KAAMigN,GACpB5gM,EAAU5f,IAAKwgN,EAAc39K,IAAO29K,CAErC,CAEA,SAASC,GAAcV,EAAYjE,EAAMl8L,GAExC,IAAM+6E,EAAOolH,EAAWnjN,KACvB8jN,EAAa/lH,EAAKt/F,OAKnB,IAFAilN,GAAWK,UAAY,IAER,CAEd,IAAMvlN,EAAQklN,GAAW7mM,KAAMkhF,GAC9BimH,EAAWN,GAAWK,UAEnB99K,EAAKznC,EAAO,GACVylN,EAA2B,MAAfzlN,EAAO,GACxB0lN,EAAY1lN,EAAO,GAIpB,GAFKylN,IAAYh+K,GAAU,QAERh1B,IAAdizM,GAAyC,MAAdA,GAAqBF,EAAW,IAAMF,EAAa,CAIlFH,GAAY3gM,OAAyB/R,IAAdizM,EACtB,IAAIhB,GAAej9K,EAAIk9K,EAAYjE,GACnC,IAAImE,GAAkBp9K,EAAIk9K,EAAYjE,IAEvC,KAED,CAIC,IACIn1M,EADQiZ,EAAU5f,IACN6iC,QAEFh1B,IAATlH,GAGJ45M,GAAY3gM,EADZjZ,EAAO,IAAIw5M,GAAmBt9K,IAK/BjjB,EAAYjZ,CAId,CAED,CAEA,IAEMo6M,GAAa,WAElB,SAAAA,EAAa1wJ,EAAI06I,GAAU78L,EAAA,KAAA6yM,GAE1Bt9M,KAAK28M,IAAM,GACX38M,KAAKzD,IAAM,CAAC,EAIZ,IAFA,IAAMwK,EAAI6lD,EAAG2wJ,oBAAqBjW,EAAS16I,EAAG0iY,iBAEpC5yb,EAAI,EAAGA,EAAIqK,IAAMrK,EAAI,CAE9B,IAAM2xF,EAAOzhC,EAAG4wJ,iBAAkBlW,EAAS5qM,GAG3CsgN,GAAc3uH,EAFNzhC,EAAG6wJ,mBAAoBnW,EAASj5G,EAAKl1F,MAEnB6G,KAE3B,CAED,CAiDC,OAjDAuJ,EAAA+zM,EAAA,EAAA96M,IAAA,WAAA/D,MAED,SAAUmuD,EAAIzzD,EAAMsF,EAAO8gK,GAE1B,IAAMh4J,EAAIvH,KAAKzD,IAAKpD,QAETiR,IAAN7C,GAAkBA,EAAE0oB,SAAU28B,EAAInuD,EAAO8gK,EAE/C,GAAC,CAAA/8J,IAAA,cAAA/D,MAED,SAAamuD,EAAIzqD,EAAQhJ,GAExB,IAAMgO,EAAIhF,EAAQhJ,QAEPiR,IAANjD,GAAkBnH,KAAKiwB,SAAU28B,EAAIzzD,EAAMgO,EAEjD,IAAC,EAAA3E,IAAA,SAAA/D,MAED,SAAemuD,EAAI+vJ,EAAK5vM,EAAQwyJ,GAE/B,IAAM,IAAI7iK,EAAI,EAAGqK,EAAI41M,EAAI/kN,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEhD,IAAM6K,EAAIo1M,EAAKjgN,GACdyK,EAAI4F,EAAQxF,EAAE63B,KAEQ,IAAlBj4B,EAAEm4J,aAGN/3J,EAAE0oB,SAAU28B,EAAIzlD,EAAE1I,MAAO8gK,EAI3B,CAED,GAAC,CAAA/8J,IAAA,eAAA/D,MAED,SAAqBk+M,EAAK5vM,GAIzB,IAFA,IAAM7F,EAAI,GAEAxK,EAAI,EAAGqK,EAAI41M,EAAI/kN,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEhD,IAAM6K,EAAIo1M,EAAKjgN,GACV6K,EAAE63B,MAAMryB,GAAS7F,EAAEpK,KAAMyK,EAE/B,CAEA,OAAOL,CAER,KAACo2M,CAAA,CAnEiB,GAuEnB,SAASI,GAAa9wJ,EAAIhoD,EAAMwU,GAE/B,IAAM+5K,EAASvmI,EAAG+wJ,aAAc/4M,GAKhC,OAHAgoD,EAAGgxJ,aAAczqB,EAAQ/5K,GACzBwzC,EAAGixJ,cAAe1qB,GAEXA,CAER,CAGA,IAAMo8P,GAAwB,MAE1BtxO,GAAiB,EA4DrB,SAASC,GAAiBtxJ,EAAIumI,EAAQvuL,GAErC,IAAM+5F,EAAS/xC,EAAGuxJ,mBAAoBhrB,EAAQvmI,EAAG4iY,gBAC3CptV,EAASx1C,EAAGwxJ,iBAAkBjrB,GAAStkK,OAE7C,GAAK8vE,GAAqB,KAAXyD,EAAgB,MAAO,GAEtC,IAAMogR,EAAe,iBAAiBxsW,KAAMosF,GAC5C,GAAKogR,EAAe,CAKnB,IAAMnkK,EAAYltM,SAAUqxW,EAAc,IAC1C,OAAO59W,EAAK+L,cAAgB,OAASyxF,EAAS,OAxEhD,SAAuBhpF,EAAQilM,GAQ9B,IANA,IAAMrJ,EAAQ57L,EAAOtd,MAAO,MACtBwiN,EAAS,GAETj8L,EAAOplB,KAAKC,IAAKmhN,EAAY,EAAG,GAChCzzI,EAAK3tE,KAAKiuC,IAAKmzK,EAAY,EAAGrJ,EAAMp9M,QAEhC8E,EAAI2lB,EAAM3lB,EAAIkuE,EAAIluE,IAAO,CAElC,IAAM2xG,EAAO3xG,EAAI,EACjB4hN,EAAOxhN,KAAK,GAAD2E,OAAK4sG,IAASgwG,EAAY,IAAM,IAAG,KAAA58M,OAAI4sG,EAAI,MAAA5sG,OAAKuzM,EAAOt4M,IAEnE,CAEA,OAAO4hN,EAAOjhN,KAAM,KAErB,CAuDyDkhN,CAAc3xJ,EAAG4xJ,gBAAiBrrB,GAAUkrB,EAEpG,CAEC,OAAOj8G,CAIT,CAEA,SAASq8G,GAA0BC,EAAc/jD,GAEhD,IAAMoB,EAjEP,SAAgCpB,GAE/B,IAGI80R,EAHEC,EAAmBl1R,GAAgBurR,aAAcvrR,GAAgBE,mBACjEi1R,EAAoBn1R,GAAgBurR,aAAcprR,GAkBxD,OAdK+0R,IAAqBC,EAEzBF,EAAe,GAEJC,IAAqB9K,IAAe+K,IAAsBhL,GAErE8K,EAAe,8BAEJC,IAAqB/K,IAAmBgL,IAAsB/K,KAEzE6K,EAAe,+BAIP90R,GAER,KAAKlL,GACL,KAAK+0R,GACJ,MAAO,CAAEiL,EAAc,sBAExB,KAAKjgS,GACL,KAAK+0R,GACJ,MAAO,CAAEkL,EAAc,oBAExB,QAEC,OADA17a,QAAQk/C,KAAM,+CAAgD0nG,GACvD,CAAE80R,EAAc,sBAI1B,CA4BoB9wO,CAAuBhkD,GAC1C,MAAO,QAAPl5J,OAAei9M,EAAY,4BAAAj9M,OAA2Bs6J,EAAY,GAAG,MAAAt6J,OAAKs6J,EAAY,GAAG,iBAE1F,CAEA,SAAS6iD,GAAwBF,EAAcpsB,GAE9C,IAAIusB,EAEJ,OAASvsB,GAER,KAAK5oC,GACJm1D,EAAkB,SAClB,MAED,KAAKl1D,GACJk1D,EAAkB,WAClB,MAED,KAAKj1D,GACJi1D,EAAkB,kBAClB,MAED,KAAKh1D,GACJg1D,EAAkB,aAClB,MAED,KAAKylO,GACJzlO,EAAkB,MAClB,MAED,KAAK/0D,GACJ+0D,EAAkB,SAClB,MAED,QACC9qM,QAAQk/C,KAAM,+CAAgDq/H,GAC9DusB,EAAkB,SAIpB,MAAO,QAAUH,EAAe,2BAA6BG,EAAkB,yBAEhF,CA0EA,SAASC,GAAiB1lM,GAEzB,MAAkB,KAAXA,CAER,CAEA,SAAS2lM,GAAkB3lM,EAAQo/J,GAElC,IAAMiqM,EAAqBjqM,EAAW8mC,oBAAsB9mC,EAAWkqM,iBAAmBlqM,EAAWmqM,4BAErG,OAAOvpW,EACLzd,QAAS,kBAAmB68K,EAAWwmC,cACvCrjN,QAAS,mBAAoB68K,EAAWymC,eACxCtjN,QAAS,uBAAwB68K,EAAWkqM,kBAC5C/mX,QAAS,yBAA0B8mX,GACnC9mX,QAAS,wBAAyB68K,EAAW0mC,mBAC7CvjN,QAAS,oBAAqB68K,EAAW2mC,gBACzCxjN,QAAS,mBAAoB68K,EAAW4mC,eACxCzjN,QAAS,yBAA0B68K,EAAW6mC,oBAC9C1jN,QAAS,oCAAqC68K,EAAWmqM,6BACzDhnX,QAAS,0BAA2B68K,EAAW8mC,qBAC/C3jN,QAAS,2BAA4B68K,EAAW+mC,qBAEnD,CAEA,SAASC,GAA0BpmM,EAAQo/J,GAE1C,OAAOp/J,EACLzd,QAAS,uBAAwB68K,EAAWinC,mBAC5C9jN,QAAS,yBAA4B68K,EAAWinC,kBAAoBjnC,EAAWknC,oBAElF,CAIA,IAAMC,GAAiB,mCAEvB,SAASC,GAAiBxmM,GAEzB,OAAOA,EAAOzd,QAASgkN,GAAgBE,GAExC,CAEA,IAAM+vO,GAAiB,IAAIzyZ,IAAK,CAC/B,CAAE,qBAAsB,uBACxB,CAAE,0BAA2B,4BAC7B,CAAE,kBAAmB,qBAGtB,SAAS0iL,GAAiBloN,EAAOmoN,GAEhC,IAAI1mM,EAAS2+K,GAAa+nB,GAE1B,QAAgB11M,IAAXgP,EAAuB,CAE3B,IAAMy2a,EAAaD,GAAe7/Z,IAAK+vL,GAEvC,QAAoB11M,IAAfylb,EAOJ,MAAM,IAAI/xb,MAAO,6BAA+BgiN,EAAU,KAL1D1mM,EAAS2+K,GAAa83P,GACtB97a,QAAQk/C,KAAM,gFAAiF6sJ,EAAS+vO,EAQ1G,CAEA,OAAOjwO,GAAiBxmM,EAEzB,CAIA,IAAM4mM,GAAoB,+IAE1B,SAASC,GAAa7mM,GAErB,OAAOA,EAAOzd,QAASqkN,GAAmBE,GAE3C,CAEA,SAASA,GAAcvoN,EAAOmzC,EAAOC,EAAKq1K,GAIzC,IAFA,IAAIhnM,EAAS,GAEH1c,EAAIyU,SAAU25B,GAASpuC,EAAIyU,SAAU45B,GAAOruC,IAErD0c,GAAUgnM,EACRzkN,QAAS,eAAgB,KAAOe,EAAI,MACpCf,QAAS,uBAAwBe,GAIpC,OAAO0c,CAER,CAIA,SAASinM,GAAmB7nC,GAE3B,IAAI8nC,EAAkB,aAAH7+M,OAAgB+2K,EAAWx7K,UAAS,yBAAAyE,OAC3C+2K,EAAWx7K,UAAS,uBAAAyE,OACpB+2K,EAAWx7K,UAAS,6BAAAyE,OACpB+2K,EAAWx7K,UAAS,qBAoChC,OAjCKw7K,EAAWie,WAEf6pB,GAAmB,aAAJ7+M,OAAiB+2K,EAAWx7K,UAAS,+BAAAyE,OACxC+2K,EAAWx7K,UAAS,oCAAAyE,OACpB+2K,EAAWx7K,UAAS,qCAAAyE,OACpB+2K,EAAWx7K,UAAS,uCAAAyE,OACpB+2K,EAAWx7K,UAAS,0CAAAyE,OACpB+2K,EAAWx7K,UAAS,gCAAAyE,OACpB+2K,EAAWx7K,UAAS,gCAAAyE,OACpB+2K,EAAWx7K,UAAS,kCAAAyE,OACpB+2K,EAAWx7K,UAAS,qCAAAyE,OACpB+2K,EAAWx7K,UAAS,gCAAAyE,OACpB+2K,EAAWx7K,UAAS,gCAAAyE,OACpB+2K,EAAWx7K,UAAS,kCAAAyE,OACpB+2K,EAAWx7K,UAAS,4BAKH,UAAzBw7K,EAAWx7K,UAEfsjN,GAAmB,2BAEiB,YAAzB9nC,EAAWx7K,UAEtBsjN,GAAmB,6BAEiB,SAAzB9nC,EAAWx7K,YAEtBsjN,GAAmB,2BAIbA,CAER,CAkHA,SAASC,GAAczuB,EAAU0uB,EAAUhoC,EAAYguB,GAKtD,IAqBIia,EAAcC,EArBZ9zJ,EAAKklI,EAAS74C,aAEd01C,EAAUnW,EAAWmW,QAEvBC,EAAepW,EAAWoW,aAC1BC,EAAiBrW,EAAWqW,eAE1B8xB,EA5HP,SAAsCnoC,GAErC,IAAImoC,EAAsB,uBAgB1B,OAdKnoC,EAAWooC,gBAAkB55D,GAEjC25D,EAAsB,qBAEXnoC,EAAWooC,gBAAkB35D,GAExC05D,EAAsB,0BAEXnoC,EAAWooC,gBAAkB15D,KAExCy5D,EAAsB,sBAIhBA,CAER,CAwG6BE,CAA6BroC,GACnDsoC,EAvGP,SAAmCtoC,GAElC,IAAIsoC,EAAmB,mBAEvB,GAAKtoC,EAAW+H,OAEf,OAAS/H,EAAWuoC,YAEnB,KAAK/2D,GACL,KAAKC,GACJ62D,EAAmB,mBACnB,MAED,KAAK12D,GACJ02D,EAAmB,sBAOtB,OAAOA,CAER,CAgF0BE,CAA0BxoC,GAC7CyoC,EA/EP,SAAmCzoC,GAElC,IAAIyoC,EAAmB,yBAElBzoC,EAAW+H,QAEN/H,EAAWuoC,aAEd92D,KAEJg3D,EAAmB,0BAOtB,OAAOA,CAER,CA4D0BC,CAA0B1oC,GAC7C2oC,EA3DP,SAAuC3oC,GAEtC,IAAI2oC,EAAuB,uBAE3B,GAAK3oC,EAAW+H,OAEf,OAAS/H,EAAWgI,SAEnB,KAAKl3B,GACJ63D,EAAuB,2BACvB,MAED,KAAK53D,GACJ43D,EAAuB,sBACvB,MAED,KAAK33D,GACJ23D,EAAuB,sBAO1B,OAAOA,CAER,CAiC8BC,CAA8B5oC,GACrD6oC,EAhCP,SAA6B7oC,GAE5B,IAAM8oC,EAAc9oC,EAAW+oC,mBAE/B,GAAqB,OAAhBD,EAAuB,OAAO,KAEnC,IAAME,EAASvkN,KAAKqzM,KAAMgR,GAAgB,EAEpCG,EAAc,EAAMH,EAI1B,MAAO,CAAEI,WAFU,GAAQ,EAAIzkN,KAAKC,IAAKD,KAAKs1J,IAAK,EAAGivD,GAAU,MAE3CC,YAAAA,EAAaD,OAAAA,EAEnC,CAkB0BG,CAAoBnpC,GAEvCopC,EAAmBppC,EAAWie,SAAW,GA7VhD,SAA6Bje,GAS5B,MAPe,CACZA,EAAWqpC,sBAA2BrpC,EAAW+oC,oBAAsB/oC,EAAWiH,SAAWjH,EAAWs3Q,uBAAyBt3Q,EAAWyG,oBAAsBzG,EAAWyF,aAAezF,EAAWkF,iBAA2C,aAAxBlF,EAAWupC,SAA4B,kDAAoD,IACrTvpC,EAAWwpC,oBAAsBxpC,EAAWmyB,yBAA4BnyB,EAAWypC,2BAA6B,wCAA0C,GAC1JzpC,EAAW0pC,sBAAwB1pC,EAAW2pC,6BAAiC,2CAA6C,IAC5H3pC,EAAW4pC,2BAA6B5pC,EAAW+H,QAAU/H,EAAWqI,eAAkBrI,EAAW6pC,kCAAoC,gDAAkD,IAGhLvgN,OAAQg9M,IAAkBzhN,KAAM,KAE/C,CAkVqDilN,CAAoB9pC,GAElEu3Q,EAlVP,SAAmCv3Q,GAOlC,MALe,CACdA,EAAWw3Q,0BAA4B,mDAAqD,GAC5Fx3Q,EAAWy3Q,mBAAqB,2CAA6C,IAGhEnub,OAAQg9M,IAAkBzhN,KAAM,KAE/C,CAyUgC6yb,CAA0B13Q,GAEnD+pC,EAzUP,SAA0B5zB,GAEzB,IAAMxxL,EAAS,GAEf,IAAM,IAAMhE,KAAQw1L,EAAU,CAE7B,IAAMlwL,EAAQkwL,EAASx1L,IAER,IAAVsF,GAELtB,EAAOL,KAAM,WAAa3D,EAAO,IAAMsF,EAExC,CAEA,OAAOtB,EAAOE,KAAM,KAErB,CAyTuBmlN,CAAiB7zB,GAEjC2Y,EAAU16I,EAAG61J,gBAGfC,EAAgBlqC,EAAW+W,YAAc,YAAc/W,EAAW+W,YAAc,KAAO,GAEtF/W,EAAWmqC,sBAEflC,EAAe,CAEd,uBAAyBjoC,EAAW23Q,WACpC,uBAAyB33Q,EAAWoqC,WAEpCL,GAECzgN,OAAQg9M,IAAkBzhN,KAAM,OAEhBzF,OAAS,IAE1B6oN,GAAgB,OAIjBC,EAAiB,CAEhBkB,EAEA,uBAAyBppC,EAAW23Q,WACpC,uBAAyB33Q,EAAWoqC,WAEpCL,GAECzgN,OAAQg9M,IAAkBzhN,KAAM,OAEdzF,OAAS,IAE5B8oN,GAAkB,QAMnBD,EAAe,CAEdJ,GAAmB7nC,GAEnB,uBAAyBA,EAAW23Q,WACpC,uBAAyB33Q,EAAWoqC,WAEpCL,EAEA/pC,EAAWw3Q,0BAA4B,4BAA8B,GACrEx3Q,EAAW43Q,SAAW,uBAAyB,GAC/C53Q,EAAWqqC,WAAa,yBAA2B,GACnDrqC,EAAWsqC,gBAAkB,+BAAiC,GAE9DtqC,EAAWyqC,QAAUzqC,EAAWmD,IAAM,kBAAoB,GAC1DnD,EAAWyqC,QAAUzqC,EAAW0qC,QAAU,mBAAqB,GAE/D1qC,EAAWj8K,IAAM,kBAAoB,GACrCi8K,EAAW+H,OAAS,qBAAuB,GAC3C/H,EAAW+H,OAAS,WAAa0gC,EAAmB,GACpDzoC,EAAW6G,SAAW,uBAAyB,GAC/C7G,EAAW+G,MAAQ,oBAAsB,GACzC/G,EAAWiH,QAAU,sBAAwB,GAC7CjH,EAAWmH,UAAY,wBAA0B,GACjDnH,EAAW63Q,qBAAuB,oCAAsC,GACxE73Q,EAAWs3Q,sBAAwB,qCAAuC,GAC1Et3Q,EAAWsH,gBAAkB,8BAAgC,GAC7DtH,EAAW2H,YAAc,0BAA4B,GAErD3H,EAAWha,WAAa,yBAA2B,GACnDga,EAAWixQ,cAAgB,4BAA8B,GAEzDjxQ,EAAWuG,aAAe,2BAA6B,GACvDvG,EAAWwG,sBAAwB,qCAAuC,GAC1ExG,EAAWyG,mBAAqB,kCAAoC,GAEpEzG,EAAWwoM,eAAiB,6BAA+B,GAC3DxoM,EAAWyoM,wBAA0B,uCAAyC,GAE9EzoM,EAAW4H,YAAc,0BAA4B,GACrD5H,EAAW8H,iBAAmB,gCAAkC,GAChE9H,EAAW6H,qBAAuB,oCAAsC,GAExE7H,EAAWyH,aAAe,2BAA6B,GACvDzH,EAAW0H,aAAe,2BAA6B,GACvD1H,EAAW4G,SAAW,uBAAyB,GAC/C5G,EAAW4wQ,UAAY,wBAA0B,GAEjD5wQ,EAAWqI,aAAe,2BAA6B,GACvDrI,EAAWsI,gBAAkB,8BAAgC,GAC7DtI,EAAWwI,aAAe,2BAA6B,GAEvDxI,EAAWg1B,cAAgB,6BAA+B,GAC1Dh1B,EAAWi1B,kBAAoB,iCAAmC,GAIlEj1B,EAAW83Q,MAAQ,kBAAoB93Q,EAAW83Q,MAAQ,GAC1D93Q,EAAW+3Q,WAAa,uBAAyB/3Q,EAAW+3Q,WAAa,GACzE/3Q,EAAWg4Q,WAAa,uBAAyBh4Q,EAAWg4Q,WAAa,GACzEh4Q,EAAWi4Q,QAAU,oBAAsBj4Q,EAAWi4Q,QAAU,GAChEj4Q,EAAWk4Q,cAAgB,0BAA4Bl4Q,EAAWk4Q,cAAgB,GAClFl4Q,EAAWm4Q,UAAY,sBAAwBn4Q,EAAWm4Q,UAAY,GACtEn4Q,EAAWo4Q,YAAc,wBAA0Bp4Q,EAAWo4Q,YAAc,GAC5Ep4Q,EAAWq4Q,kBAAoB,8BAAgCr4Q,EAAWq4Q,kBAAoB,GAE9Fr4Q,EAAWs4Q,eAAiB,2BAA6Bt4Q,EAAWs4Q,eAAiB,GACrFt4Q,EAAWu4Q,eAAiB,2BAA6Bv4Q,EAAWu4Q,eAAiB,GAErFv4Q,EAAWw4Q,gBAAkB,4BAA8Bx4Q,EAAWw4Q,gBAAkB,GAExFx4Q,EAAWy4Q,eAAiB,2BAA6Bz4Q,EAAWy4Q,eAAiB,GACrFz4Q,EAAW04Q,qBAAuB,kCAAoC14Q,EAAW04Q,qBAAuB,GACxG14Q,EAAW24Q,wBAA0B,qCAAuC34Q,EAAW24Q,wBAA0B,GAEjH34Q,EAAW44Q,iBAAmB,6BAA+B54Q,EAAW44Q,iBAAmB,GAC3F54Q,EAAW64Q,0BAA4B,uCAAyC74Q,EAAW64Q,0BAA4B,GAEvH74Q,EAAW84Q,gBAAkB,6BAA+B94Q,EAAW84Q,gBAAkB,GACzF94Q,EAAW+4Q,oBAAsB,iCAAmC/4Q,EAAW+4Q,oBAAsB,GAErG/4Q,EAAWg5Q,cAAgB,0BAA4Bh5Q,EAAWg5Q,cAAgB,GAClFh5Q,EAAWi5Q,mBAAqB,gCAAkCj5Q,EAAWi5Q,mBAAqB,GAClGj5Q,EAAWk5Q,uBAAyB,oCAAsCl5Q,EAAWk5Q,uBAAyB,GAE9Gl5Q,EAAWm5Q,kBAAoB,8BAAgCn5Q,EAAWm5Q,kBAAoB,GAC9Fn5Q,EAAWo5Q,eAAiB,2BAA6Bp5Q,EAAWo5Q,eAAiB,GAIrFp5Q,EAAW4qC,iBAA6C,IAA3B5qC,EAAWyF,YAAwB,sBAAwB,GACxFzF,EAAWsD,aAAe,oBAAsB,GAChDtD,EAAW6qC,aAAe,0BAA4B,GACtD7qC,EAAWq5Q,WAAa,kBAAoB,GAC5Cr5Q,EAAWs5Q,WAAa,kBAAoB,GAC5Ct5Q,EAAWu5Q,WAAa,kBAAoB,GAE5Cv5Q,EAAWw5Q,UAAY,wBAA0B,GAEjDx5Q,EAAWyF,YAAc,sBAAwB,GAEjDzF,EAAWgrC,SAAW,uBAAyB,GAE/ChrC,EAAWiT,aAAe,2BAA6B,GACvDjT,EAAWw9B,eAA2C,IAA3Bx9B,EAAWyF,YAAwB,2BAA6B,GACzFzF,EAAWy9B,aAAez9B,EAAWie,SAAa,0BAA4B,GAC9Eje,EAAWo9B,kBAAoB,GAAKp9B,EAAWie,SAAa,+BAAiC,GAC7Fje,EAAWo9B,kBAAoB,GAAKp9B,EAAWie,SAAa,uCAAyCje,EAAWkrC,mBAAqB,GACrIlrC,EAAWo9B,kBAAoB,GAAKp9B,EAAWie,SAAa,8BAAgCje,EAAWo9B,kBAAoB,GAC7Hp9B,EAAWmrC,YAAc,uBAAyB,GAClDnrC,EAAWorC,UAAY,qBAAuB,GAE9CprC,EAAWqrC,iBAAmB,wBAA0B,GACxDrrC,EAAWqrC,iBAAmB,WAAalD,EAAsB,GAEjEnoC,EAAW2I,gBAAkB,8BAAgC,GAE7D3I,EAAWy5Q,eAAiB,EAAI,2BAA6B,GAE7Dz5Q,EAAW05Q,gBAAkB,wBAA0B,GAEvD15Q,EAAWmyB,uBAAyB,0BAA4B,GAC9DnyB,EAAWmyB,wBAA0BnyB,EAAWypC,2BAA+B,8BAAgC,GAEjH,4BACA,gCACA,iCACA,2BACA,6BACA,+BACA,+BAEA,wBAEA,mCAEA,SAEA,8BAEA,kCAEA,SAEA,2BACA,yBACA,qBAEA,iBAEA,wBAEA,SAEA,iBAEA,wBAEA,SAEA,iBAEA,wBAEA,SAEA,qBAEA,4BAEA,SAEA,iCAEA,0BAEA,6BAEA,0BAEA,SAEA,2EAEA,iCACA,iCACA,iCACA,iCAEA,4BAEA,mCACA,mCACA,mCACA,mCAEA,UAEA,mCACA,mCACA,mCACA,mCAEA,WAEA,SAEA,sBAEA,8BACA,+BAEA,SAEA,MAECngN,OAAQg9M,IAAkBzhN,KAAM,MAElCqjN,EAAiB,CAEhBkB,EAEAvB,GAAmB7nC,GAEnB,uBAAyBA,EAAW23Q,WACpC,uBAAyB33Q,EAAWoqC,WAEpCL,EAEA/pC,EAAWyqC,QAAUzqC,EAAWmD,IAAM,kBAAoB,GAC1DnD,EAAWyqC,QAAUzqC,EAAW0qC,QAAU,mBAAqB,GAE/D1qC,EAAWkF,gBAAkB,4BAA8B,GAC3DlF,EAAWj8K,IAAM,kBAAoB,GACrCi8K,EAAW2G,OAAS,qBAAuB,GAC3C3G,EAAW+H,OAAS,qBAAuB,GAC3C/H,EAAW+H,OAAS,WAAaugC,EAAmB,GACpDtoC,EAAW+H,OAAS,WAAa0gC,EAAmB,GACpDzoC,EAAW+H,OAAS,WAAa4gC,EAAuB,GACxDE,EAAmB,8BAAgCA,EAAiBK,WAAa,GACjFL,EAAmB,+BAAiCA,EAAiBI,YAAc,GACnFJ,EAAmB,0BAA4BA,EAAiBG,OAAS,KAAO,GAChFhpC,EAAW6G,SAAW,uBAAyB,GAC/C7G,EAAW+G,MAAQ,oBAAsB,GACzC/G,EAAWiH,QAAU,sBAAwB,GAC7CjH,EAAWmH,UAAY,wBAA0B,GACjDnH,EAAW63Q,qBAAuB,oCAAsC,GACxE73Q,EAAWs3Q,sBAAwB,qCAAuC,GAC1Et3Q,EAAW2H,YAAc,0BAA4B,GAErD3H,EAAWha,WAAa,yBAA2B,GACnDga,EAAWixQ,cAAgB,4BAA8B,GAEzDjxQ,EAAWqG,UAAY,wBAA0B,GACjDrG,EAAWuG,aAAe,2BAA6B,GACvDvG,EAAWwG,sBAAwB,qCAAuC,GAC1ExG,EAAWyG,mBAAqB,kCAAoC,GAEpEzG,EAAWqoM,YAAc,0BAA4B,GACrDroM,EAAWwoM,eAAiB,6BAA+B,GAC3DxoM,EAAWyoM,wBAA0B,uCAAyC,GAE9EzoM,EAAW4H,YAAc,0BAA4B,GACrD5H,EAAW8H,iBAAmB,gCAAkC,GAChE9H,EAAW6H,qBAAuB,oCAAsC,GAExE7H,EAAWyH,aAAe,2BAA6B,GACvDzH,EAAW0H,aAAe,2BAA6B,GAEvD1H,EAAW4G,SAAW,uBAAyB,GAC/C5G,EAAW+I,UAAY,wBAA0B,GACjD/I,EAAW4wQ,UAAY,wBAA0B,GAEjD5wQ,EAAW4F,MAAQ,oBAAsB,GACzC5F,EAAWg1B,cAAgB,6BAA+B,GAC1Dh1B,EAAWi1B,kBAAoB,iCAAmC,GAElEj1B,EAAWqI,aAAe,2BAA6B,GACvDrI,EAAWsI,gBAAkB,8BAAgC,GAC7DtI,EAAWwI,aAAe,2BAA6B,GAEvDxI,EAAW4qC,iBAA6C,IAA3B5qC,EAAWyF,YAAwB,sBAAwB,GACxFzF,EAAWsD,cAAgBtD,EAAWsqC,gBAAkB,oBAAsB,GAC9EtqC,EAAW6qC,aAAe,0BAA4B,GACtD7qC,EAAWq5Q,WAAa,kBAAoB,GAC5Cr5Q,EAAWs5Q,WAAa,kBAAoB,GAC5Ct5Q,EAAWu5Q,WAAa,kBAAoB,GAE5Cv5Q,EAAWw5Q,UAAY,wBAA0B,GAEjDx5Q,EAAWoI,YAAc,0BAA4B,GAErDpI,EAAWyF,YAAc,sBAAwB,GAEjDzF,EAAWmrC,YAAc,uBAAyB,GAClDnrC,EAAWorC,UAAY,qBAAuB,GAE9CprC,EAAWqrC,iBAAmB,wBAA0B,GACxDrrC,EAAWqrC,iBAAmB,WAAalD,EAAsB,GAEjEnoC,EAAWmF,mBAAqB,8BAAgC,GAEhEnF,EAAWy5Q,eAAiB,EAAI,2BAA6B,GAE7Dz5Q,EAAW05Q,gBAAkB,wBAA0B,GAEvD15Q,EAAWsrC,mBAAqB,+BAAiC,GAEjEtrC,EAAWmyB,uBAAyB,0BAA4B,GAC9DnyB,EAAWmyB,wBAA0BnyB,EAAWypC,2BAA+B,8BAAgC,GAEjH,2BACA,+BACA,+BAEEzpC,EAAW8Z,cAAgB7oC,GAAkB,uBAAyB,GACtE+uB,EAAW8Z,cAAgB7oC,GAAkBsuC,GAAwC,0BAAK,GAC1Fvf,EAAW8Z,cAAgB7oC,GAAkBm1D,GAAwB,cAAepmC,EAAW8Z,aAAgB,GAEjH9Z,EAAWiF,UAAY,oBAAsB,GAC7CjF,EAAWwrC,OAAS,iBAAmB,GAEvCjsB,GAAuC,yBACvC0mB,GAA0B,sBAAuBjmC,EAAW06H,kBAE5D16H,EAAWoqM,gBAAkB,yBAA2BpqM,EAAWyrC,aAAe,GAElF,MAECniN,OAAQg9M,IAAkBzhN,KAAM,OAMnCuxL,EAAe4wB,GADf5wB,EAAemwB,GADfnwB,EAAegxB,GAAiBhxB,GACepW,GACQA,GAIvDqW,EAAiB2wB,GADjB3wB,EAAiBkwB,GADjBlwB,EAAiB+wB,GAAiB/wB,GACiBrW,GACQA,GAE3DoW,EAAeqxB,GAAarxB,GAC5BC,EAAiBoxB,GAAapxB,GAEzBrW,EAAWie,WAA+C,IAAnCje,EAAWmqC,sBAItCD,EAAgB,oBAEhBjC,EAAe,CACdsvO,EACA,oCACA,uBACA,sBACA,6BACC1yb,KAAM,MAAS,KAAOojN,EAExBC,EAAiB,CAChB,oCACA,qBACEloC,EAAW+W,cAAgBn+B,GAAU,GAAK,oDAC1ConB,EAAW+W,cAAgBn+B,GAAU,GAAK,oCAC5C,uCACA,4BACA,8BACA,oCACA,qCACA,6CACA,uCACA,uCACA,+CACA,0CACC/zJ,KAAM,MAAS,KAAOqjN,GAIzB,IAwHIwD,EAiBA1b,EAzIE2pP,EAAazvO,EAAgBjC,EAAe7xB,EAC5Cu1B,EAAezB,EAAgBhC,EAAiB7xB,EAKhDu1B,EAAiB1G,GAAa9wJ,EAAIA,EAAGoiR,cAAemjH,GACpD9tO,EAAmB3G,GAAa9wJ,EAAIA,EAAGqiR,gBAAiB9qH,GAoB9D,SAASiuO,EAAYj9a,GAGpB,GAAK28K,EAASv9K,MAAMkwM,kBAAoB,CAEvC,IAAMC,EAAa93J,EAAG+3J,kBAAmBrd,GAAUz4K,OAC7C+1L,EAAYh4J,EAAGwxJ,iBAAkBgG,GAAiBv1L,OAClDg2L,EAAcj4J,EAAGwxJ,iBAAkBiG,GAAmBx1L,OAExDi2L,GAAW,EACXC,GAAkB,EAEtB,IAA2D,IAAtDn4J,EAAG2wJ,oBAAqBjW,EAAS16I,EAAGylY,aAIxC,GAFAvtO,GAAW,EAEkC,oBAAjChzB,EAASv9K,MAAM+9a,cAE1BxgQ,EAASv9K,MAAM+9a,cAAe1lY,EAAI06I,EAAS8c,EAAgBC,OAErD,CAIN,IAAMW,EAAe9G,GAAiBtxJ,EAAIw3J,EAAgB,UACpDa,EAAiB/G,GAAiBtxJ,EAAIy3J,EAAkB,YAE9DtwM,QAAQwN,MACP,oCAAsCqrC,EAAGs4J,WAAzC,sBACqBt4J,EAAG2wJ,oBAAqBjW,EAAS16I,EAAG2lY,iBADzD,sBAEoBp9a,EAAKhc,KAFzB,oBAGoBgc,EAAKvQ,KAHzB,yBAIuB8/M,EAAa,KACpCM,EAAe,KACfC,EAGF,KAE0B,KAAfP,EAEX3wM,QAAQk/C,KAAM,wCAAyCyxJ,GAE9B,KAAdE,GAAoC,KAAhBC,IAE/BE,GAAkB,GAIdA,IAEJ5vM,EAAKgwM,YAAc,CAElBL,SAAUA,EAEVJ,WAAYA,EAEZ91B,aAAc,CAEb56K,IAAK4wM,EACL94M,OAAQ20M,GAIT5xB,eAAgB,CAEf76K,IAAK6wM,EACL/4M,OAAQ40M,IAQZ,CAQA9zJ,EAAGw4J,aAAchB,GACjBx3J,EAAGw4J,aAAcf,GAEjBH,EAAiB,IAAI5G,GAAe1wJ,EAAI06I,GACxCkB,EA70BF,SAAkC57I,EAAI06I,GAMrC,IAJA,IAAMp1H,EAAa,CAAC,EAEdnrE,EAAI6lD,EAAG2wJ,oBAAqBjW,EAAS16I,EAAG4lY,mBAEpC91b,EAAI,EAAGA,EAAIqK,EAAGrK,IAAO,CAE9B,IAAM2xF,EAAOzhC,EAAGy4J,gBAAiB/d,EAAS5qM,GACpCvD,EAAOk1F,EAAKl1F,KAEdgwM,EAAe,EACd96G,EAAKzpF,OAASgoD,EAAG6lY,aAAatpP,EAAe,GAC7C96G,EAAKzpF,OAASgoD,EAAGkrU,aAAa3uL,EAAe,GAC7C96G,EAAKzpF,OAASgoD,EAAGmrU,aAAa5uL,EAAe,GAIlDj3H,EAAY/4E,GAAS,CACpByL,KAAMypF,EAAKzpF,KACXmR,SAAU62C,EAAG04J,kBAAmBhe,EAASnuM,GACzCgwM,aAAcA,EAGhB,CAEA,OAAOj3H,CAER,CAizBqBqzI,CAAyB34J,EAAI06I,EAEjD,CA3GA16I,EAAG03J,aAAchd,EAAS8c,GAC1Bx3J,EAAG03J,aAAchd,EAAS+c,QAIcj6M,IAAnCouK,EAAW6W,oBAEfziI,EAAG23J,mBAAoBjd,EAAS,EAAG9uB,EAAW6W,sBAEP,IAA5B7W,EAAWiT,cAGtB7+H,EAAG23J,mBAAoBjd,EAAS,EAAG,YAIpC16I,EAAG43J,YAAald,GAiGhBtnM,KAAK02M,YAAc,WASlB,YAPwBtsM,IAAnB85M,GAGJkuO,EAAYpyb,MAINkkN,CAER,EAMAlkN,KAAKmyE,cAAgB,WASpB,YAP0B/nE,IAArBo+L,GAGJ4pP,EAAYpyb,MAINwoM,CAER,EAKA,IAAIkqP,GAAuE,IAAtDl6Q,EAAWm6Q,uCAoChC,OAlCA3yb,KAAK8rE,QAAU,WAQd,OANsB,IAAjB4mX,IAEJA,EAAe9lY,EAAG2wJ,oBAAqBjW,EAASioP,KAI1CmD,CAER,EAIA1yb,KAAK28C,QAAU,WAEd6pJ,EAAcsD,uBAAwB9pM,MAEtC4sD,EAAG44J,cAAele,GAClBtnM,KAAKsnM,aAAUl9L,CAEhB,EAIApK,KAAK4E,KAAO4zK,EAAW23Q,WACvBnwb,KAAK7G,KAAOq/K,EAAWoqC,WACvB5iN,KAAKo/B,GAAK6+K,KACVj+M,KAAKwgN,SAAWA,EAChBxgN,KAAKylN,UAAY,EACjBzlN,KAAKsnM,QAAUA,EACftnM,KAAK4uL,aAAew1B,EACpBpkN,KAAK6uL,eAAiBw1B,EAEfrkN,IAER,CAEA,IAAImlL,GAAQ,EAENwgC,GAAgB,WAErB,SAAAA,IAAcl7M,EAAA,KAAAk7M,GAEb3lN,KAAK4lN,YAAc,IAAIzoL,IACvBn9B,KAAK6lN,cAAgB,IAAI1oL,GAE1B,CAiGC,OAjGA5zB,EAAAo8M,EAAA,EAAAnjN,IAAA,SAAA/D,MAED,SAAQo6K,GAEP,IAAM+V,EAAe/V,EAAS+V,aACxBC,EAAiBhW,EAASgW,eAE1Bi3B,EAAoB9lN,KAAK+lN,gBAAiBn3B,GAC1Co3B,EAAsBhmN,KAAK+lN,gBAAiBl3B,GAE5Co3B,EAAkBjmN,KAAKkmN,2BAA4BrtC,GAgBzD,OAdkD,IAA7CotC,EAAgB73K,IAAK03K,KAEzBG,EAAgB75L,IAAK05L,GACrBA,EAAkBL,cAIiC,IAA/CQ,EAAgB73K,IAAK43K,KAEzBC,EAAgB75L,IAAK45L,GACrBA,EAAoBP,aAIdzlN,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQo6K,GAEP,IAE0CpoC,EAFiBC,EAAA5lE,EAAnC9qE,KAAK6lN,cAAc91L,IAAK8oJ,IAEN,IAA1C,IAAAnoC,EAAAj1I,MAAAg1I,EAAAC,EAAA3pI,KAAAkb,MAA6C,KAAjCkkM,EAAW11E,EAAAhyI,MAEtB0nN,EAAYV,YAEmB,IAA1BU,EAAYV,WAAkBzlN,KAAK4lN,YAAYpoL,OAAQ2oL,EAAYlhL,KAEzE,CAAC,OAAApsB,GAAA63H,EAAApqI,EAAAuS,EAAA,SAAA63H,EAAAjqI,GAAA,CAID,OAFAzG,KAAK6lN,cAAcroL,OAAQq7I,GAEpB74K,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBo6K,GAElB,OAAO74K,KAAK+lN,gBAAiBltC,EAAS+V,cAAexvJ,EAEtD,GAAC,CAAA58B,IAAA,sBAAA/D,MAED,SAAqBo6K,GAEpB,OAAO74K,KAAK+lN,gBAAiBltC,EAASgW,gBAAiBzvJ,EAExD,GAAC,CAAA58B,IAAA,UAAA/D,MAED,WAECuB,KAAK4lN,YAAYzlN,QACjBH,KAAK6lN,cAAc1lN,OAEpB,GAAC,CAAAqC,IAAA,6BAAA/D,MAED,SAA4Bo6K,GAE3B,IAAMzvK,EAAQpJ,KAAK6lN,cACf52L,EAAM7lB,EAAM2mB,IAAK8oJ,GASrB,YAPazuK,IAAR6kB,IAEJA,EAAM,IAAIjD,IACV5iB,EAAM6lB,IAAK4pJ,EAAU5pJ,IAIfA,CAER,GAAC,CAAAzsB,IAAA,kBAAA/D,MAED,SAAiBwmC,GAEhB,IAAM77B,EAAQpJ,KAAK4lN,YACfQ,EAAQh9M,EAAM2mB,IAAKkV,GASvB,YAPe76B,IAAVg8M,IAEJA,EAAQ,IAAIC,GAAkBphL,GAC9B77B,EAAM6lB,IAAKgW,EAAMmhL,IAIXA,CAER,KAACT,CAAA,CAxGoB,GA4GhBU,GAAgB98M,GAErB,SAAA88M,EAAaphL,GAAOx6B,EAAA,KAAA47M,GAEnBrmN,KAAKo/B,GAAK+lJ,KAEVnlL,KAAKilC,KAAOA,EACZjlC,KAAKylN,UAAY,CAElB,IAID,SAASa,GAAex0B,EAAU2S,EAAU8hB,EAAYj6H,EAAYkqG,EAAcgQ,EAAezX,GAEhG,IAAMy3B,EAAiB,IAAI/xC,GACrBgyC,EAAiB,IAAId,GACrBitO,EAAkB,IAAI5ma,IACtBipL,EAAW,GAEX49O,EAAYr8P,EAAaC,SACzBkU,EAAyBnU,EAAamU,uBACtCmoP,EAA2Bt8P,EAAa4U,eAE1CpuM,EAAYw5L,EAAax5L,UAEvB0pN,EAAY,CACjBC,kBAAmB,QACnBC,qBAAsB,eACtBC,mBAAoB,SACpB7kC,kBAAmB,QACnB8kC,oBAAqB,UACrBC,kBAAmB,QACnBC,iBAAkB,OAClBC,qBAAsB,WACtBC,qBAAsB,WACtBC,mBAAoB,SACpBC,kBAAmB,QACnBC,mBAAoB,SACpBC,eAAgB,SAChBC,eAAgB,SAChBC,eAAgB,UAGjB,SAASurO,EAAYt0b,GAIpB,OAFAm0b,EAAgBxma,IAAK3tB,GAEN,IAAVA,EAAqB,KAEnB,KAAPgD,OAAahD,EAEd,CAulBA,MAAO,CACNgpN,cAtlBD,SAAwB5uC,EAAUiW,EAAQ44B,EAAS31B,EAAO5vL,GAEzD,IAAMw5K,EAAMoW,EAAMpW,IACZ7Q,EAAW3oK,EAAO2oK,SAClBsN,EAAcS,EAAS8uC,uBAAyB51B,EAAM3Z,YAAc,KAEpEmI,GAAW1H,EAAS8uC,uBAAyBpB,EAAa9hB,GAAW10K,IAAK8oJ,EAAS0H,QAAUnI,GAC7FmpC,EAA0BhhC,GAAcA,EAAOj8B,UAAY8F,GAA4Bm2B,EAAOpnC,MAAM/qI,OAAS,KAE7G2zM,EAAW2E,EAAW7tC,EAASj0K,MAKT,OAAvBi0K,EAAS77K,YAEbA,EAAYw5L,EAAa8T,gBAAiBzxB,EAAS77K,cAEhC67K,EAAS77K,WAE3B+W,QAAQk/C,KAAM,oCAAqC4lH,EAAS77K,UAAW,uBAAwBA,EAAW,YAQ5G,IAWI4xL,EAAcC,EACdm5B,EAAsBC,EAZpBhhC,EAAiBnc,EAASgb,gBAAgBvmH,UAAYurG,EAASgb,gBAAgB/c,QAAU+B,EAASgb,gBAAgBt+I,MAClHouK,OAAyCxrM,IAAnB68K,EAAiCA,EAAervL,OAAS,EAEjF8rN,EAAqB,EAWzB,QAT2Ct5M,IAAtC0gK,EAASgb,gBAAgBvmH,WAAyBmkJ,EAAqB,QACnCt5M,IAApC0gK,EAASgb,gBAAgB/c,SAAuB26C,EAAqB,QAClCt5M,IAAnC0gK,EAASgb,gBAAgBt+I,QAAsBk8K,EAAqB,GAOpE3B,EAAW,CAEf,IAAM5uB,EAASsQ,GAAWse,GAE1BnzB,EAAeuE,EAAOvE,aACtBC,EAAiBsE,EAAOtE,cAEzB,MAECD,EAAe/V,EAAS+V,aACxBC,EAAiBhW,EAASgW,eAE1B43B,EAAenjD,OAAQuV,GAEvBmvC,EAAuBvB,EAAeyB,kBAAmBrvC,GACzDovC,EAAyBxB,EAAe0B,oBAAqBtvC,GAI9D,IAAMoZ,EAAsBH,EAASI,kBAE/B8gQ,GAA8C,IAA3B7wb,EAAO61K,gBAC1Bi7Q,GAA0C,IAAzB9wb,EAAOklb,cAExB6L,IAAar6Q,EAASt8K,IACtB42b,IAAgBt6Q,EAASsG,OACzBi0Q,IAAgB7yQ,EAChB8yQ,IAAex6Q,EAAS0G,MACxB+zQ,IAAkBz6Q,EAASwG,SAC3Bk0Q,IAAiB16Q,EAAS4G,QAC1B+zQ,IAAmB36Q,EAAS8G,UAC5B8zQ,IAAyB56Q,EAASiH,gBAClC4zQ,IAAqB76Q,EAASsH,YAE9BwzQ,IAAsB96Q,EAASqH,aAC/B0zQ,IAAsB/6Q,EAASoH,aAE/B4zQ,EAAiBh7Q,EAASra,WAAa,EACvCs1R,EAAgBj7Q,EAASgG,UAAY,EACrCk1Q,EAAkBl7Q,EAASgoM,YAAc,EACzCmzE,EAAYn7Q,EAASuF,MAAQ,EAC7B61Q,EAAmBp7Q,EAASgI,aAAe,EAE3CqzQ,EAAoBL,KAAqBh7Q,EAAS4wQ,cAElD0K,EAAmBL,KAAoBj7Q,EAASkG,aAChDq1Q,GAA0BN,KAAoBj7Q,EAASoG,mBACvDo1Q,GAA6BP,KAAoBj7Q,EAASmG,sBAE1Ds1Q,GAAqBP,KAAsBl7Q,EAASmoM,eACpDuzE,GAA+BR,KAAsBl7Q,EAASooM,wBAE9DuzE,GAAqBR,KAAgBn7Q,EAAS20B,cAC9CinP,GAAyBT,KAAgBn7Q,EAAS40B,kBAElDinP,KAAqB77Q,EAASuH,YAC9Bu0Q,KAA2B97Q,EAASyH,iBACpCs0Q,KAA+B/7Q,EAASwH,qBAExCw0Q,GAAsBZ,KAAuBp7Q,EAASiI,gBACtDg0Q,GAAmBb,KAAuBp7Q,EAASmI,aAEnD+zQ,KAAqBl8Q,EAAS+H,YAE9Bo0Q,KAAkBn8Q,EAASuG,SAE3B61Q,GAAgBp8Q,EAAS0I,UAAY,EAErC2zQ,KAAmBr8Q,EAASuwQ,UAE5B+L,KAAoBt8Q,EAASvsF,WAE/BgmG,GAAc7oC,GAEbovB,EAAS+E,aAEgB,OAAxBqU,IAAyE,IAAzCA,EAAoBq2B,mBAExDh2B,GAAcR,EAASQ,cAMzB,IAAM9Z,GAAa,CAElBie,SAAUo8P,EAEV9wO,SAAUA,EACVouO,WAAYt3Q,EAASj0K,KACrBg+M,WAAY/pC,EAAS1/K,KAErBy1L,aAAcA,EACdC,eAAgBA,EAChBF,QAAS9V,EAAS8V,QAElBq5B,qBAAsBA,EACtBC,uBAAwBA,EAExBtF,qBAAsD,IAAjC9pC,EAAS8pC,oBAC9BpzB,YAAa1W,EAAS0W,YAEtBvyL,UAAWA,EAEXozb,SAAU6C,EACVpwO,WAAYmwO,EACZlwO,gBAAiBkwO,GAA6C,OAAzB7wb,EAAO+1K,cAE5C6qC,uBAAwB+vO,EACxB5/I,iBAA4C,OAAxBjhH,EAAiCH,EAASohH,kBAA8D,IAAzCjhH,EAAoBq2B,iBAA4Br2B,EAAoB5wB,QAAQ1G,WAAalL,GAC5KiuB,kBAAoB7E,EAAS6E,gBAE7BnhL,IAAK22b,EACL/zQ,OAAQg0Q,EACR5yQ,OAAQ6yQ,EACRryO,WAAYqyO,GAAc7yQ,EAAOj8B,QACjCi9D,mBAAoBA,EACpBhiC,MAAO8zQ,EACPh0Q,SAAUi0Q,EACV7zQ,QAAS8zQ,EACT5zQ,UAAW6zQ,EACX1zQ,gBAAiBgzQ,GAA4BW,EAC7CtzQ,YAAauzQ,EAEbrD,qBAAsBmD,GA3poBI,IA2poBa36Q,EAAS+G,cAChDkwQ,sBAAuB0D,GA7poBI,IA6poBa36Q,EAAS+G,cAEjDM,aAAcyzQ,EACd1zQ,aAAc2zQ,EAEdp1R,WAAYq1R,EACZpK,cAAeyK,EAEfr1Q,UAAWi1Q,EACX/0Q,aAAco1Q,EACdl1Q,mBAAoBm1Q,GACpBp1Q,sBAAuBq1Q,GAEvBxzE,YAAakzE,EACb/yE,eAAgBszE,GAChBrzE,wBAAyBszE,GAEzBn2Q,MAAO41Q,EACPxmP,cAAegnP,GACf/mP,kBAAmBgnP,GAEnBr0Q,YAAas0Q,GACbp0Q,iBAAkBq0Q,GAClBt0Q,qBAAsBu0Q,GAEtB/zQ,aAAcozQ,EACdnzQ,gBAAiB+zQ,GACjB7zQ,aAAc8zQ,GAEdl0Q,YAAam0Q,GAEb/wO,QAAiC,IAAzBnrC,EAASkD,aAx0oBG,IAw0oBsBlD,EAAS+C,WAA4D,IAA7B/C,EAAS6E,gBAE3F0B,SAAU41Q,GACVzzQ,UAAW0zQ,GACX7L,UAAW8L,GAEX10Q,QAAS3H,EAAS2H,QAIlB8vQ,MAAO4C,GAAWH,EAAYl6Q,EAASt8K,IAAIm4K,SAC3C+7Q,QAAS4C,GAAaN,EAAYl6Q,EAAS0G,MAAM7K,SACjD87Q,WAAY8C,GAAgBP,EAAYl6Q,EAASwG,SAAS3K,SAC1Di8Q,UAAW4C,GAAeR,EAAYl6Q,EAAS4G,QAAQ/K,SACvDk8Q,YAAa4C,GAAiBT,EAAYl6Q,EAAS8G,UAAUjL,SAC7Dm8Q,kBAAmB4C,GAAuBV,EAAYl6Q,EAASiH,gBAAgBpL,SAC/Eg8Q,cAAegD,GAAmBX,EAAYl6Q,EAASsH,YAAYzL,SAEnEo8Q,eAAgB6C,GAAoBZ,EAAYl6Q,EAASqH,aAAaxL,SACtEq8Q,eAAgB6C,GAAoBb,EAAYl6Q,EAASoH,aAAavL,SAEtEs8Q,gBAAiBkD,GAAqBnB,EAAYl6Q,EAAS4wQ,cAAc/0Q,SAEzEu8Q,eAAgBkD,GAAoBpB,EAAYl6Q,EAASkG,aAAarK,SACtEw8Q,qBAAsBkD,IAA2BrB,EAAYl6Q,EAASoG,mBAAmBvK,SACzFy8Q,wBAAyBkD,IAA8BtB,EAAYl6Q,EAASmG,sBAAsBtK,SAElG08Q,iBAAkBkD,IAAsBvB,EAAYl6Q,EAASmoM,eAAetsM,SAC5E28Q,0BAA2BkD,IAAgCxB,EAAYl6Q,EAASooM,wBAAwBvsM,SAExG48Q,gBAAiBkD,IAAsBzB,EAAYl6Q,EAAS20B,cAAc94B,SAC1E68Q,oBAAqBkD,IAA0B1B,EAAYl6Q,EAAS40B,kBAAkB/4B,SAEtF88Q,cAAekD,IAAmB3B,EAAYl6Q,EAASuH,YAAY1L,SACnE+8Q,mBAAoBkD,IAAyB5B,EAAYl6Q,EAASyH,iBAAiB5L,SACnFg9Q,uBAAwBkD,IAA6B7B,EAAYl6Q,EAASwH,qBAAqB3L,SAE/Fi9Q,kBAAmBkD,IAAuB9B,EAAYl6Q,EAASiI,gBAAgBpM,SAC/Ek9Q,eAAgBkD,IAAoB/B,EAAYl6Q,EAASmI,aAAatM,SAEtE67Q,WAAYyE,IAAgBjC,EAAYl6Q,EAASuG,SAAS1K,SAI1D0uC,iBAAmBt4C,EAAS54F,WAAWm0G,UAAamtQ,GAAiBK,GACrE/3Q,aAAcjD,EAASiD,aACvBunC,cAAwC,IAA1BxqC,EAASiD,gBAA4BhR,EAAS54F,WAAW1qC,OAAgD,IAAvCsjI,EAAS54F,WAAW1qC,MAAMi7I,SAE1GuvQ,WAA+B,IAApB7vb,EAAOo2K,YAAwBzN,EAAS54F,WAAWutF,KAAQyzR,GAAW8B,IAEjFr5Q,MAAQA,EACRsnC,QAAyB,IAAjBpqC,EAAS8C,IACjBunC,UAAcvnC,GAAOA,EAAI6sC,UAEzBvqC,aAAsC,IAAzBpF,EAASoF,YAEtBkD,iBAA8C,IAA7BtI,EAASsI,gBAC1BwpB,uBAAwBA,EAExB6Y,UAAmC,IAAzBrhN,EAAOs2K,cAEjBgT,kBAAoDrhL,IAAtC0gK,EAASgb,gBAAgBvmH,SACvCy2I,kBAAkD5rM,IAApC0gK,EAASgb,gBAAgB/c,OACvCktC,iBAAgD7rM,IAAnC0gK,EAASgb,gBAAgBt+I,MACtCouK,kBAAmBA,EACnB8N,mBAAoBA,EAEpB1E,aAAclwB,EAAO25B,YAAY7wN,OACjCunN,eAAgBrwB,EAAOpkB,MAAM9yK,OAC7BqnN,cAAenwB,EAAO45B,KAAK9wN,OAC3B8qX,iBAAkB5zL,EAAO4yL,aAAa9pX,OACtCsnN,kBAAmBpwB,EAAO65B,SAAS/wN,OACnCwnN,cAAetwB,EAAO85B,KAAKhxN,OAE3BynN,mBAAoBvwB,EAAOsT,qBAAqBxqM,OAChD2nN,qBAAsBzwB,EAAOmU,eAAerrM,OAC5C0nN,oBAAqBxwB,EAAO6T,cAAc/qM,OAC1C+qX,4BAA6B7zL,EAAO6zL,4BAEpCsvE,eAAgBnjQ,EAAOmjQ,eAEvBxyO,kBAAmB1wB,EAASkd,UAC5ByT,oBAAqB3wB,EAASmd,gBAE9BzuB,UAAW5E,EAAS4E,UAEpBomC,iBAAkB/xB,EAAS+2B,UAAUh4B,SAAW62B,EAAQ9vN,OAAS,EACjEgpN,cAAe9uB,EAAS+2B,UAAUjkN,KAElC0tL,YAAaA,GACb4/P,gBAAiBpgQ,EAASsjQ,iBAE1BtxO,mBAAoBovO,IAA6C,IAAhCr6Q,EAASt8K,IAAIgsN,gBAA+B/tD,GAAgBwrR,YAAantQ,EAASt8K,IAAIo+J,cAAiB+pR,GAExI/mQ,mBAAoB9E,EAAS8E,mBAE7BgmC,YA16oBgB,IA06oBH9qC,EAASgD,KACtB+nC,UAAW/qC,EAASgD,OAASz0B,GAE7Bw7N,gBAAiB/pM,EAASorC,cAAgB,EAC1CA,aAAcprC,EAASorC,cAAgB,EAEvC50B,oBAAqBxW,EAASwW,oBAE9BwyB,qBAAsBszO,KAAsD,IAApCt8Q,EAASvsF,WAAW0iG,YAC5DgzB,mBAAoBmzO,KAAoD,IAAlCt8Q,EAASvsF,WAAW2iG,UAC1DizB,qBAAsBizO,KAAsD,IAApCt8Q,EAASvsF,WAAW4iG,YAC5DkzB,0BAA2B+yO,KAA2D,IAAzCt8Q,EAASvsF,WAAW6iG,iBACjE6gQ,0BAA2BmF,KAA2D,IAAzCt8Q,EAASvsF,WAAWq+V,kBAA6Br+V,EAAWl+C,IAAK,4BAC9G6hZ,mBAAoBkF,KAAoD,IAAlCt8Q,EAASvsF,WAAWs+V,WAAsBt+V,EAAWl+C,IAAK,oBAEhG6zK,2BAA4B4wO,GAAavmW,EAAWl+C,IAAK,kBACzD+zK,6BAA8B0wO,GAAavmW,EAAWl+C,IAAK,sBAC3Di0K,kCAAmCwwO,GAAavmW,EAAWl+C,IAAK,0BAChEukZ,uCAAwCrmW,EAAWl+C,IAAK,+BAExD06K,sBAAuBjwC,EAASiwC,yBAYjC,OANAtwC,GAAWq5Q,WAAae,EAAgBxkZ,IAAK,GAC7CoqI,GAAWs5Q,WAAac,EAAgBxkZ,IAAK,GAC7CoqI,GAAWu5Q,WAAaa,EAAgBxkZ,IAAK,GAE7CwkZ,EAAgBzyb,QAETq4K,EAER,EA+QCuwC,mBA7QD,SAA6BvwC,GAE5B,IAAMz1K,EAAQ,GAad,GAXKy1K,EAAWupC,SAEfh/M,EAAMjG,KAAM07K,EAAWupC,WAIvBh/M,EAAMjG,KAAM07K,EAAWwvC,sBACvBjlN,EAAMjG,KAAM07K,EAAWyvC,8BAII79M,IAAvBouK,EAAWmW,QAEf,IAAM,IAAMx1L,KAAQq/K,EAAWmW,QAE9B5rL,EAAMjG,KAAM3D,GACZ4J,EAAMjG,KAAM07K,EAAWmW,QAASx1L,IAgBlC,OAVwC,IAAnCq/K,EAAWmqC,uBAcjB,SAAuC5/M,EAAOy1K,GAE7Cz1K,EAAMjG,KAAM07K,EAAWx7K,WACvB+F,EAAMjG,KAAM07K,EAAW06H,kBACvBnwS,EAAMjG,KAAM07K,EAAWuoC,YACvBh+M,EAAMjG,KAAM07K,EAAW+oC,oBACvBx+M,EAAMjG,KAAM07K,EAAW83Q,OACvBvtb,EAAMjG,KAAM07K,EAAW+3Q,YACvBxtb,EAAMjG,KAAM07K,EAAWg4Q,YACvBztb,EAAMjG,KAAM07K,EAAWi4Q,SACvB1tb,EAAMjG,KAAM07K,EAAWm4Q,WACvB5tb,EAAMjG,KAAM07K,EAAWo4Q,aACvB7tb,EAAMjG,KAAM07K,EAAWq4Q,mBACvB9tb,EAAMjG,KAAM07K,EAAWk4Q,eACvB3tb,EAAMjG,KAAM07K,EAAWs4Q,gBACvB/tb,EAAMjG,KAAM07K,EAAWu4Q,gBACvBhub,EAAMjG,KAAM07K,EAAWw4Q,iBACvBjub,EAAMjG,KAAM07K,EAAWy4Q,gBACvBlub,EAAMjG,KAAM07K,EAAW04Q,sBACvBnub,EAAMjG,KAAM07K,EAAW24Q,yBACvBpub,EAAMjG,KAAM07K,EAAW44Q,kBACvBrub,EAAMjG,KAAM07K,EAAW64Q,2BACvBtub,EAAMjG,KAAM07K,EAAW84Q,iBACvBvub,EAAMjG,KAAM07K,EAAW+4Q,qBACvBxub,EAAMjG,KAAM07K,EAAWg5Q,eACvBzub,EAAMjG,KAAM07K,EAAWi5Q,oBACvB1ub,EAAMjG,KAAM07K,EAAWk5Q,wBACvB3ub,EAAMjG,KAAM07K,EAAWm5Q,mBACvB5ub,EAAMjG,KAAM07K,EAAWo5Q,gBACvB7ub,EAAMjG,KAAM07K,EAAWgI,SACvBz9K,EAAMjG,KAAM07K,EAAW0qC,SACvBngN,EAAMjG,KAAM07K,EAAW2I,iBACvBp+K,EAAMjG,KAAM07K,EAAWo9B,mBACvB7yM,EAAMjG,KAAM07K,EAAWwwC,qBACvBjmN,EAAMjG,KAAM07K,EAAWwmC,cACvBj8M,EAAMjG,KAAM07K,EAAW2mC,gBACvBp8M,EAAMjG,KAAM07K,EAAWymC,eACvBl8M,EAAMjG,KAAM07K,EAAWkqM,kBACvB3/W,EAAMjG,KAAM07K,EAAW4mC,eACvBr8M,EAAMjG,KAAM07K,EAAW0mC,mBACvBn8M,EAAMjG,KAAM07K,EAAW6mC,oBACvBt8M,EAAMjG,KAAM07K,EAAW+mC,sBACvBx8M,EAAMjG,KAAM07K,EAAW8mC,qBACvBv8M,EAAMjG,KAAM07K,EAAWmqM,6BACvB5/W,EAAMjG,KAAM07K,EAAWy5Q,gBACvBlvb,EAAMjG,KAAM07K,EAAWooC,eACvB79M,EAAMjG,KAAM07K,EAAW8Z,aACvBvvL,EAAMjG,KAAM07K,EAAWinC,mBACvB18M,EAAMjG,KAAM07K,EAAWknC,qBACvB38M,EAAMjG,KAAM07K,EAAWyrC,aAExB,CA/DEgF,CAA8BlmN,EAAOy1K,GAiEvC,SAAqCz1K,EAAOy1K,GAE3CguC,EAAe7vM,aAEV6hK,EAAWie,UACf+vB,EAAe0C,OAAQ,GACnB1wC,EAAWuqC,wBACfyD,EAAe0C,OAAQ,GACnB1wC,EAAWqqC,YACf2D,EAAe0C,OAAQ,GACnB1wC,EAAWsqC,iBACf0D,EAAe0C,OAAQ,GACnB1wC,EAAW2G,QACfqnC,EAAe0C,OAAQ,GACnB1wC,EAAW+H,QACfimC,EAAe0C,OAAQ,GACnB1wC,EAAW63Q,sBACf7pO,EAAe0C,OAAQ,GACnB1wC,EAAWs3Q,uBACftpO,EAAe0C,OAAQ,GACnB1wC,EAAWqG,WACf2nC,EAAe0C,OAAQ,GACnB1wC,EAAWqoM,aACfr6J,EAAe0C,OAAQ,GACnB1wC,EAAW+I,WACfilC,EAAe0C,OAAQ,IACnB1wC,EAAWsD,cACf0qC,EAAe0C,OAAQ,IACnB1wC,EAAW6qC,cACfmD,EAAe0C,OAAQ,IACnB1wC,EAAWq5Q,YACfrrO,EAAe0C,OAAQ,IACnB1wC,EAAWs5Q,YACftrO,EAAe0C,OAAQ,IACnB1wC,EAAWu5Q,YACfvrO,EAAe0C,OAAQ,IACnB1wC,EAAW4qC,gBACfoD,EAAe0C,OAAQ,IACnB1wC,EAAWha,YACfgoD,EAAe0C,OAAQ,IACnB1wC,EAAW4wQ,WACf5iO,EAAe0C,OAAQ,IACnB1wC,EAAW43Q,UACf5pO,EAAe0C,OAAQ,IAExBnmN,EAAMjG,KAAM0pN,EAAelsF,MAC3BksF,EAAe7vM,aAEV6hK,EAAWmD,KACf6qC,EAAe0C,OAAQ,GACnB1wC,EAAWyqC,QACfuD,EAAe0C,OAAQ,GACnB1wC,EAAWyF,aACfuoC,EAAe0C,OAAQ,GACnB1wC,EAAWmyB,wBACf6b,EAAe0C,OAAQ,GACnB1wC,EAAWgrC,UACfgD,EAAe0C,OAAQ,GACnB1wC,EAAWiT,cACf+6B,EAAe0C,OAAQ,GACnB1wC,EAAWw9B,cACfwQ,EAAe0C,OAAQ,GACnB1wC,EAAWy9B,aACfuQ,EAAe0C,OAAQ,GACnB1wC,EAAWmF,oBACf6oC,EAAe0C,OAAQ,GACnB1wC,EAAWqrC,kBACf2C,EAAe0C,OAAQ,GACnB1wC,EAAW05Q,iBACf1rO,EAAe0C,OAAQ,IACnB1wC,EAAWmrC,aACf6C,EAAe0C,OAAQ,IACnB1wC,EAAWorC,WACf4C,EAAe0C,OAAQ,IACnB1wC,EAAWoqM,iBACfp8J,EAAe0C,OAAQ,IACnB1wC,EAAWiF,WACf+oC,EAAe0C,OAAQ,IACnB1wC,EAAWqI,cACf2lC,EAAe0C,OAAQ,IACnB1wC,EAAW4F,OACfooC,EAAe0C,OAAQ,IACnB1wC,EAAWwrC,QACfwC,EAAe0C,OAAQ,IACnB1wC,EAAWw5Q,WACfxrO,EAAe0C,OAAQ,IACnB1wC,EAAWsrC,oBACf0C,EAAe0C,OAAQ,IACnB1wC,EAAWkF,iBACf8oC,EAAe0C,OAAQ,IAExBnmN,EAAMjG,KAAM0pN,EAAelsF,KAE5B,CA7JE6uF,CAA4BpmN,EAAOy1K,GACnCz1K,EAAMjG,KAAMg1L,EAASohH,mBAItBnwS,EAAMjG,KAAM07K,EAAWswC,uBAEhB/lN,EAAM1F,MAEd,EAwOCq5M,YAlFD,SAAsB79B,GAErB,IACIuV,EADE2zB,EAAW2E,EAAW7tC,EAASj0K,MAGrC,GAAKm9M,EAAW,CAEf,IAAM5uB,EAASsQ,GAAWse,GAC1B3zB,EAAWE,GAAcptL,MAAOiyL,EAAO/E,SAExC,MAECA,EAAWvV,EAASuV,SAIrB,OAAOA,CAER,EAiECg7B,eA/DD,SAAyB5wC,EAAYgoC,GAKpC,IAHA,IAAIlZ,EAGMtgM,EAAI,EAAGwmD,EAAKynJ,EAASr9M,OAAQoP,EAAIwmD,EAAIxmD,IAAO,CAErD,IAAMqiN,EAAqBpU,EAAUjuM,GAErC,GAAKqiN,EAAmB7I,WAAaA,EAAW,IAE/ClZ,EAAU+hB,GACC5D,UAEX,KAED,CAED,CASA,YAPiBr7M,IAAZk9L,IAEJA,EAAU,IAAIiZ,GAAczuB,EAAU0uB,EAAUhoC,EAAYguB,GAC5DyO,EAASn4M,KAAMwqM,IAITA,CAER,EAmCCgiB,eAjCD,SAAyBhiB,GAExB,GAA8B,MAAtBA,EAAQme,UAAkB,CAGjC,IAAM/oN,EAAIu4M,EAASzoM,QAAS86L,GAC5B2N,EAAUv4M,GAAMu4M,EAAUA,EAASr9M,OAAS,GAC5Cq9M,EAASjkJ,MAGTs2I,EAAQ3qJ,SAET,CAED,EAoBC4sK,mBAlBD,SAA6B1wC,GAE5B4tC,EAAe7lJ,OAAQi4G,EAExB,EAgBCo8B,SAAUA,EACVvzC,QAfD,WAEC+kD,EAAe/kD,SAEhB,EAcD,CAEA,SAAS8nD,KAER,IAAI77M,EAAa,IAAIozC,QAmCrB,MAAO,CACNhxB,IAlCD,SAAc5tB,GAEb,IAAI5F,EAAMoR,EAAWoiB,IAAK5tB,GAS1B,YAPaiI,IAAR7N,IAEJA,EAAM,CAAC,EACPoR,EAAWshB,IAAK9sB,EAAQ5F,IAIlBA,CAER,EAsBCqkE,OApBD,SAAiBz+D,GAEhBwL,EAAW6vB,OAAQr7B,EAEpB,EAiBCmhK,OAfD,SAAiBnhK,EAAQK,EAAK/D,GAE7BkP,EAAWoiB,IAAK5tB,GAAUK,GAAQ/D,CAEnC,EAYCijK,QAVD,WAEC/zJ,EAAa,IAAIozC,OAElB,EASD,CAEA,SAAS0oK,GAAmBztN,EAAGuK,GAE9B,OAAKvK,EAAE0tN,aAAenjN,EAAEmjN,WAEhB1tN,EAAE0tN,WAAanjN,EAAEmjN,WAEb1tN,EAAEm6K,cAAgB5vK,EAAE4vK,YAExBn6K,EAAEm6K,YAAc5vK,EAAE4vK,YAEdn6K,EAAE68K,SAASz5I,KAAO74B,EAAEsyK,SAASz5I,GAEjCpjC,EAAE68K,SAASz5I,GAAK74B,EAAEsyK,SAASz5I,GAEvBpjC,EAAEsL,IAAMf,EAAEe,EAEdtL,EAAEsL,EAAIf,EAAEe,EAIRtL,EAAEojC,GAAK74B,EAAE64B,EAIlB,CAEA,SAASuqL,GAA0B3tN,EAAGuK,GAErC,OAAKvK,EAAE0tN,aAAenjN,EAAEmjN,WAEhB1tN,EAAE0tN,WAAanjN,EAAEmjN,WAEb1tN,EAAEm6K,cAAgB5vK,EAAE4vK,YAExBn6K,EAAEm6K,YAAc5vK,EAAE4vK,YAEdn6K,EAAEsL,IAAMf,EAAEe,EAEdf,EAAEe,EAAItL,EAAEsL,EAIRtL,EAAEojC,GAAK74B,EAAE64B,EAIlB,CAGA,SAASwqL,KAER,IAAMC,EAAc,GAChBC,EAAmB,EAEjB9F,EAAS,GACT+F,EAAe,GACfhuC,EAAc,GAYpB,SAASiuC,EAAmB7nN,EAAQ2oK,EAAU+N,EAAU6wC,EAAYpiN,EAAGmgG,GAEtE,IAAIwiH,EAAaJ,EAAaC,GAgC9B,YA9BoB1/M,IAAf6/M,GAEJA,EAAa,CACZ7qL,GAAIj9B,EAAOi9B,GACXj9B,OAAQA,EACR2oK,SAAUA,EACV+N,SAAUA,EACV6wC,WAAYA,EACZvzC,YAAah0K,EAAOg0K,YACpB7uK,EAAGA,EACHmgG,MAAOA,GAGRoiH,EAAaC,GAAqBG,IAIlCA,EAAW7qL,GAAKj9B,EAAOi9B,GACvB6qL,EAAW9nN,OAASA,EACpB8nN,EAAWn/C,SAAWA,EACtBm/C,EAAWpxC,SAAWA,EACtBoxC,EAAWP,WAAaA,EACxBO,EAAW9zC,YAAch0K,EAAOg0K,YAChC8zC,EAAW3iN,EAAIA,EACf2iN,EAAWxiH,MAAQA,GAIpBqiH,IAEOG,CAER,CAsEA,MAAO,CAENjG,OAAQA,EACR+F,aAAcA,EACdhuC,YAAaA,EAEbxnD,KA1HD,WAECu1F,EAAmB,EAEnB9F,EAAOpsN,OAAS,EAChBmyN,EAAanyN,OAAS,EACtBmkL,EAAYnkL,OAAS,CAEtB,EAmHCkF,KA3ED,SAAeqF,EAAQ2oK,EAAU+N,EAAU6wC,EAAYpiN,EAAGmgG,GAEzD,IAAMwiH,EAAaD,EAAmB7nN,EAAQ2oK,EAAU+N,EAAU6wC,EAAYpiN,EAAGmgG,GAE5EoxE,EAASgI,aAAe,EAE5BkpC,EAAajtN,KAAMmtN,IAEiB,IAAzBpxC,EAASkD,YAEpBA,EAAYj/K,KAAMmtN,GAIlBjG,EAAOlnN,KAAMmtN,EAIf,EA0DCl6M,QAxDD,SAAkB5N,EAAQ2oK,EAAU+N,EAAU6wC,EAAYpiN,EAAGmgG,GAE5D,IAAMwiH,EAAaD,EAAmB7nN,EAAQ2oK,EAAU+N,EAAU6wC,EAAYpiN,EAAGmgG,GAE5EoxE,EAASgI,aAAe,EAE5BkpC,EAAah6M,QAASk6M,IAEc,IAAzBpxC,EAASkD,YAEpBA,EAAYhsK,QAASk6M,GAIrBjG,EAAOj0M,QAASk6M,EAIlB,EAuCC92H,OA7BD,WAIC,IAAM,IAAIz2F,EAAIotN,EAAkBh9J,EAAK+8J,EAAYjyN,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEvE,IAAMutN,EAAaJ,EAAantN,GAEhC,GAAuB,OAAlButN,EAAW7qL,GAAc,MAE9B6qL,EAAW7qL,GAAK,KAChB6qL,EAAW9nN,OAAS,KACpB8nN,EAAWn/C,SAAW,KACtBm/C,EAAWpxC,SAAW,KACtBoxC,EAAWxiH,MAAQ,IAEpB,CAED,EAaCjO,KAvCD,SAAe0wH,EAAkBC,GAE3BnG,EAAOpsN,OAAS,GAAIosN,EAAOxqH,KAAM0wH,GAAoBT,IACrDM,EAAanyN,OAAS,GAAImyN,EAAavwH,KAAM2wH,GAAyBR,IACtE5tC,EAAYnkL,OAAS,GAAImkL,EAAYviF,KAAM2wH,GAAyBR,GAE1E,EAoCD,CAEA,SAASS,KAER,IAAIC,EAAQ,IAAItpK,QAqChB,MAAO,CACNhxB,IApCD,SAAcgiK,EAAOu4B,GAEpB,IACI95M,EADEsyW,EAAYz4J,EAAMt6L,IAAKgiK,GAuB7B,YApBmB3nL,IAAd04W,GAEJtyW,EAAO,IAAIo5M,GACXS,EAAMp7L,IAAK8iK,EAAO,CAAEvhL,KAIf85M,GAAmBw4J,EAAUlrX,QAEjC4Y,EAAO,IAAIo5M,GACXk5J,EAAUhmX,KAAM0T,IAIhBA,EAAOsyW,EAAWx4J,GAMb95M,CAER,EAUCkxJ,QARD,WAEC2oD,EAAQ,IAAItpK,OAEb,EAOD,CAEA,SAASwpK,KAER,IAAMz7B,EAAS,CAAC,EAEhB,MAAO,CAEN/+J,IAAK,SAAWmhD,GAEf,QAA4B9mE,IAAvB0kL,EAAQ59G,EAAM9xC,IAElB,OAAO0vJ,EAAQ59G,EAAM9xC,IAItB,IAAIgvJ,EAEJ,OAASl9G,EAAMtsE,MAEd,IAAK,mBACJwpL,EAAW,CACV/f,UAAW,IAAIvH,GACft/H,MAAO,IAAI+zH,IAEZ,MAED,IAAK,YACJ6yB,EAAW,CACV7uH,SAAU,IAAIunG,GACduH,UAAW,IAAIvH,GACft/H,MAAO,IAAI+zH,GACXmb,SAAU,EACV6rB,QAAS,EACTC,YAAa,EACbC,MAAO,GAER,MAED,IAAK,aACJrU,EAAW,CACV7uH,SAAU,IAAIunG,GACdt/H,MAAO,IAAI+zH,GACXmb,SAAU,EACV+rB,MAAO,GAER,MAED,IAAK,kBACJrU,EAAW,CACV/f,UAAW,IAAIvH,GACfs8B,SAAU,IAAI7nC,GACd8nC,YAAa,IAAI9nC,IAElB,MAED,IAAK,gBACJ6yB,EAAW,CACV5mJ,MAAO,IAAI+zH,GACXh8F,SAAU,IAAIunG,GACd0jD,UAAW,IAAI1jD,GACf2jD,WAAY,IAAI3jD,IAQnB,OAFAgoB,EAAQ59G,EAAM9xC,IAAOgvJ,EAEdA,CAER,EAIF,CAiEA,IAAIs8B,GAAc,EAElB,SAASq4J,GAAsCn4J,EAAQC,GAEtD,OAASA,EAAO70C,WAAa,EAAI,IAAQ40C,EAAO50C,WAAa,EAAI,IAAQ60C,EAAOtuN,IAAM,EAAI,IAAQquN,EAAOruN,IAAM,EAAI,EAEpH,CAEA,SAASuuN,IAAax+H,EAAYkqG,GAiDjC,IA/CA,IAAMptL,EAAQ,IAAImhN,GAEZQ,EA3EP,WAEC,IAAMj8B,EAAS,CAAC,EAEhB,MAAO,CAEN/+J,IAAK,SAAWmhD,GAEf,QAA4B9mE,IAAvB0kL,EAAQ59G,EAAM9xC,IAElB,OAAO0vJ,EAAQ59G,EAAM9xC,IAItB,IAAIgvJ,EAEJ,OAASl9G,EAAMtsE,MAEd,IAAK,mBASL,IAAK,YACJwpL,EAAW,CACV4T,WAAY,EACZC,iBAAkB,EAClBC,aAAc,EACdC,cAAe,IAAIhtC,IAEpB,MAED,IAAK,aACJi5B,EAAW,CACV4T,WAAY,EACZC,iBAAkB,EAClBC,aAAc,EACdC,cAAe,IAAIhtC,GACnB4tC,iBAAkB,EAClBC,gBAAiB,KAUpB,OAFAlU,EAAQ59G,EAAM9xC,IAAOgvJ,EAEdA,CAER,EAIF,CAgBqB48B,GAEdprM,EAAQ,CAEbvmB,QAAS,EAETy9F,KAAM,CACLm0H,mBAAqB,EACrBC,aAAe,EACfC,YAAc,EACdC,gBAAkB,EAClBC,YAAc,EAEdC,uBAAyB,EACzBC,iBAAmB,EACnBC,gBAAkB,EAClBw3J,aAAe,EAEfivE,gBAAkB,GAGnBxmO,QAAS,CAAE,EAAG,EAAG,GACjBC,MAAO,GACPjD,YAAa,GACbkD,kBAAmB,GACnBvpB,qBAAsB,GACtBC,wBAAyB,GACzBqmB,KAAM,GACNg5J,aAAc,GACd91J,WAAY,GACZjpB,cAAe,GACfg/K,gBAAiB,GACjBh5J,SAAU,GACVkD,aAAc,KACdC,aAAc,KACdphD,MAAO,GACPqhD,YAAa,GACb9oB,eAAgB,GAChBC,kBAAmB,GACnB0lB,KAAM,GACN+5J,4BAA6B,EAC7BsvE,eAAgB,GAIPv1b,EAAI,EAAGA,EAAI,EAAGA,IAAOkjB,EAAM8rM,MAAM5uN,KAAM,IAAIgqK,IAErD,IAAMklD,EAAU,IAAIllD,GACd/N,EAAU,IAAI4X,GACds7C,EAAW,IAAIt7C,GAuXrB,MAAO,CACNs3B,MAtXD,SAAgBnZ,EAAQojQ,GAIvB,IAFA,IAAIhrb,EAAI,EAAGR,EAAI,EAAGH,EAAI,EAEZ7J,EAAI,EAAGA,EAAI,EAAGA,IAAOkjB,EAAM8rM,MAAOhvN,GAAIuyB,IAAK,EAAG,EAAG,GAE3D,IAAIg8L,EAAoB,EACpBC,EAAc,EACdC,EAAa,EACbC,EAAiB,EACjBC,EAAa,EAEbC,EAAwB,EACxBC,EAAkB,EAClBC,EAAiB,EACjBw3J,EAAc,EACdC,EAAyB,EAEzBgvE,EAAiB,EAGrBnjQ,EAAOt1F,KAAMupR,IAKb,IAFA,IAAM72J,GAAoC,IAApBgmO,EAA6Bj1b,KAAK00J,GAAK,EAEnDj1J,EAAI,EAAGmK,EAAIioL,EAAOl3L,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAMw0E,EAAQ49G,EAAQpyL,GAEhB8qC,EAAQ0pC,EAAM1pC,MACd2kL,EAAYj7I,EAAMi7I,UAClBz1C,EAAWxlG,EAAMwlG,SAEjBmyC,EAAc33I,EAAMuyE,QAAUvyE,EAAMuyE,OAAOlnJ,IAAQ20E,EAAMuyE,OAAOlnJ,IAAI8kK,QAAU,KAEpF,GAAKnwF,EAAMk7I,eAEVllN,GAAKsgC,EAAMtgC,EAAIilN,EAAYD,EAC3BxlN,GAAK8gC,EAAM9gC,EAAIylN,EAAYD,EAC3B3lN,GAAKihC,EAAMjhC,EAAI4lN,EAAYD,OAErB,GAAKh7I,EAAMm7I,aAAe,CAEhC,IAAM,IAAIx8M,EAAI,EAAGA,EAAI,EAAGA,IAEvB+P,EAAM8rM,MAAO77M,GAAI6qK,gBAAiBxpG,EAAMx4B,GAAG4zK,aAAcz8M,GAAKs8M,GAI/D8lO,GAED,MAAO,GAAK/gX,EAAMq7I,mBAAqB,CAEtC,IAAMn+B,EAAWhlL,EAAM2mB,IAAKmhD,GAI5B,GAFAk9G,EAAS5mJ,MAAMk0H,KAAMxqF,EAAM1pC,OAAQ+tH,eAAgBrkF,EAAMi7I,UAAYD,GAEhEh7I,EAAM8kG,WAAa,CAEvB,IAAMvyB,EAASvyE,EAAMuyE,OAEf+oE,EAAiBzB,EAAYh7L,IAAKmhD,GAExCs7I,EAAexqB,WAAav+C,EAAOgpE,KACnCD,EAAevqB,iBAAmBx+C,EAAOipE,WACzCF,EAAetqB,aAAez+C,EAAOylB,OACrCsjD,EAAerqB,cAAgB1+C,EAAOkpE,QAEtC/sM,EAAM+rM,kBAAmBV,GAAsBuB,EAC/C5sM,EAAMwiL,qBAAsB6oB,GAAsBpC,EAClDjpM,EAAMyiL,wBAAyB4oB,GAAsB/5I,EAAMuyE,OAAOiW,OAElE4xD,GAED,CAEA1rM,EAAM6oM,YAAawC,GAAsB78B,EAEzC68B,GAED,MAAO,GAAK/5I,EAAM07I,YAAc,CAE/B,IAAMx+B,EAAWhlL,EAAM2mB,IAAKmhD,GAE5Bk9G,EAAS7uH,SAASq3G,sBAAuB1lG,EAAM+2F,aAE/CmmB,EAAS5mJ,MAAMk0H,KAAMl0H,GAAQ+tH,eAAgB42D,EAAYD,GACzD99B,EAAS1X,SAAWA,EAEpB0X,EAASmU,QAAUtlM,KAAKk3J,IAAKjjF,EAAM0kF,OACnCw4B,EAASoU,YAAcvlM,KAAKk3J,IAAKjjF,EAAM0kF,OAAU,EAAI1kF,EAAM27I,WAC3Dz+B,EAASqU,MAAQvxH,EAAMuxH,MAEvB7iL,EAAM8oM,KAAMyC,GAAe/8B,EAE3B,IAAM3qC,EAASvyE,EAAMuyE,OAiBrB,GAfKvyE,EAAM30E,MAEVqjB,EAAM8hW,aAAcsB,GAAgB9xS,EAAM30E,IAC1CymX,IAIAv/N,EAAOuuE,eAAgB9gJ,GAElBA,EAAM8kG,YAAaitM,KAIzBrjW,EAAM+hW,gBAAiBx2J,GAAe1nE,EAAOiW,OAExCxoF,EAAM8kG,WAAa,CAEvB,IAAMw2C,EAAiBzB,EAAYh7L,IAAKmhD,GAExCs7I,EAAexqB,WAAav+C,EAAOgpE,KACnCD,EAAevqB,iBAAmBx+C,EAAOipE,WACzCF,EAAetqB,aAAez+C,EAAOylB,OACrCsjD,EAAerqB,cAAgB1+C,EAAOkpE,QAEtC/sM,EAAMgsM,WAAYT,GAAeqB,EACjC5sM,EAAM+iL,cAAewoB,GAAetC,EAEpC2C,GAED,CAEAL,GAED,MAAO,GAAKj6I,EAAM47I,gBAAkB,CAEnC,IAAM1+B,EAAWhlL,EAAM2mB,IAAKmhD,GAE5Bk9G,EAAS5mJ,MAAMk0H,KAAMl0H,GAAQ+tH,eAAgB42D,GAE7C/9B,EAASo8B,UAAUv7L,IAAmB,GAAdiiD,EAAM/iE,MAAa,EAAK,GAChDigL,EAASq8B,WAAWx7L,IAAK,EAAoB,GAAfiiD,EAAM9iE,OAAc,GAElDwR,EAAM+oM,SAAUyC,GAAmBh9B,EAEnCg9B,GAED,MAAO,GAAKl6I,EAAM67I,aAAe,CAEhC,IAAM3+B,EAAWhlL,EAAM2mB,IAAKmhD,GAM5B,GAJAk9G,EAAS5mJ,MAAMk0H,KAAMxqF,EAAM1pC,OAAQ+tH,eAAgBrkF,EAAMi7I,UAAYD,GACrE99B,EAAS1X,SAAWxlG,EAAMwlG,SAC1B0X,EAASqU,MAAQvxH,EAAMuxH,MAElBvxH,EAAM8kG,WAAa,CAEvB,IAAMvyB,EAASvyE,EAAMuyE,OAEf+oE,EAAiBzB,EAAYh7L,IAAKmhD,GAExCs7I,EAAexqB,WAAav+C,EAAOgpE,KACnCD,EAAevqB,iBAAmBx+C,EAAOipE,WACzCF,EAAetqB,aAAez+C,EAAOylB,OACrCsjD,EAAerqB,cAAgB1+C,EAAOkpE,QACtCH,EAAezpB,iBAAmBt/C,EAAOmkB,OAAOiM,KAChD24C,EAAexpB,gBAAkBv/C,EAAOmkB,OAAOkM,IAE/Cl0J,EAAMmsM,YAAab,GAAgBsB,EACnC5sM,EAAMqjL,eAAgBioB,GAAgBrC,EACtCjpM,EAAMsjL,kBAAmBgoB,GAAgBh6I,EAAMuyE,OAAOiW,OAEtD6xD,GAED,CAEA3rM,EAAM8qJ,MAAOwgD,GAAgB98B,EAE7B88B,GAED,MAAO,GAAKh6I,EAAM87I,kBAAoB,CAErC,IAAM5+B,EAAWhlL,EAAM2mB,IAAKmhD,GAE5Bk9G,EAASgV,SAAS1nC,KAAMxqF,EAAM1pC,OAAQ+tH,eAAgB42D,EAAYD,GAClE99B,EAASiV,YAAY3nC,KAAMxqF,EAAMmyH,aAAc9tC,eAAgB42D,EAAYD,GAE3EtsM,EAAMgpM,KAAMyC,GAAej9B,EAE3Bi9B,GAED,CAED,CAEKD,EAAiB,IAEhB50B,EAAaC,UAIqC,IAAjDnqG,EAAWl+C,IAAK,6BAEpBxuB,EAAMisM,aAAetrB,GAAY0sB,YACjCrtM,EAAMksM,aAAevrB,GAAY2sB,cAIjCttM,EAAMisM,aAAetrB,GAAY4sB,WACjCvtM,EAAMksM,aAAevrB,GAAY6sB,aAQoB,IAAjD9gI,EAAWl+C,IAAK,6BAEpBxuB,EAAMisM,aAAetrB,GAAY0sB,YACjCrtM,EAAMksM,aAAevrB,GAAY2sB,cAEgC,IAAtD5gI,EAAWl+C,IAAK,kCAE3BxuB,EAAMisM,aAAetrB,GAAY4sB,WACjCvtM,EAAMksM,aAAevrB,GAAY6sB,YAIjCr5M,QAAQwN,MAAO,gFAQlB3B,EAAM6rM,QAAS,GAAMvkN,EACrB0Y,EAAM6rM,QAAS,GAAM/kN,EACrBkZ,EAAM6rM,QAAS,GAAMllN,EAErB,IAAMuwF,EAAOl3E,EAAMk3E,KAEdA,EAAKm0H,oBAAsBA,GAC/Bn0H,EAAKo0H,cAAgBA,GACrBp0H,EAAKq0H,aAAeA,GACpBr0H,EAAKs0H,iBAAmBA,GACxBt0H,EAAKu0H,aAAeA,GACpBv0H,EAAKw0H,wBAA0BA,GAC/Bx0H,EAAKy0H,kBAAoBA,GACzBz0H,EAAK00H,iBAAmBA,GACxB10H,EAAKksR,cAAgBA,GACrBlsR,EAAKm7V,iBAAmBA,IAExBrya,EAAM6oM,YAAY7wN,OAASqzN,EAC3BrrM,EAAM8oM,KAAK9wN,OAASuzN,EACpBvrM,EAAM+oM,SAAS/wN,OAASwzN,EACxBxrM,EAAM8qJ,MAAM9yK,OAASszN,EACrBtrM,EAAMgpM,KAAKhxN,OAASyzN,EAEpBzrM,EAAM+rM,kBAAkB/zN,OAAS0zN,EACjC1rM,EAAMwiL,qBAAqBxqM,OAAS0zN,EACpC1rM,EAAMmsM,YAAYn0N,OAAS2zN,EAC3B3rM,EAAMqjL,eAAerrM,OAAS2zN,EAC9B3rM,EAAMgsM,WAAWh0N,OAAS4zN,EAC1B5rM,EAAM+iL,cAAc/qM,OAAS4zN,EAC7B5rM,EAAMyiL,wBAAwBzqM,OAAS0zN,EACvC1rM,EAAMsjL,kBAAkBtrM,OAAS2zN,EACjC3rM,EAAM+hW,gBAAgB/pX,OAAS4zN,EAAiBw3J,EAAcC,EAC9DrjW,EAAM8hW,aAAa9pX,OAASorX,EAC5BpjW,EAAM+iW,4BAA8BM,EACpCrjW,EAAMqya,eAAiBA,EAEvBn7V,EAAKm0H,kBAAoBA,EACzBn0H,EAAKo0H,YAAcA,EACnBp0H,EAAKq0H,WAAaA,EAClBr0H,EAAKs0H,eAAiBA,EACtBt0H,EAAKu0H,WAAaA,EAElBv0H,EAAKw0H,sBAAwBA,EAC7Bx0H,EAAKy0H,gBAAkBA,EACvBz0H,EAAK00H,eAAiBA,EACtB10H,EAAKksR,YAAcA,EAEnBlsR,EAAKm7V,eAAiBA,EAEtBrya,EAAMvmB,QAAUqxN,KAIlB,EAwFC2C,UAtFD,SAAoBv+B,EAAQlnB,GAU3B,IARA,IAAIqjD,EAAoB,EACpBC,EAAc,EACdC,EAAa,EACbC,EAAiB,EACjBC,EAAa,EAEX7e,EAAa5kC,EAAOE,mBAEhBprK,EAAI,EAAGmK,EAAIioL,EAAOl3L,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAMw0E,EAAQ49G,EAAQpyL,GAEtB,GAAKw0E,EAAMq7I,mBAAqB,CAE/B,IAAMn+B,EAAWxuK,EAAM6oM,YAAawC,GAEpC78B,EAAS/f,UAAUuI,sBAAuB1lG,EAAM+2F,aAChD+jD,EAAQp1C,sBAAuB1lG,EAAM3vE,OAAO0mK,aAC5CmmB,EAAS/f,UAAUvF,IAAKkjD,GACxB59B,EAAS/f,UAAUqC,mBAAoB87B,GAEvCye,GAED,MAAO,GAAK/5I,EAAM07I,YAAc,CAE/B,IAAMx+B,EAAWxuK,EAAM8oM,KAAMyC,GAE7B/8B,EAAS7uH,SAASq3G,sBAAuB1lG,EAAM+2F,aAC/CmmB,EAAS7uH,SAASsoG,aAAc2kC,GAEhCpe,EAAS/f,UAAUuI,sBAAuB1lG,EAAM+2F,aAChD+jD,EAAQp1C,sBAAuB1lG,EAAM3vE,OAAO0mK,aAC5CmmB,EAAS/f,UAAUvF,IAAKkjD,GACxB59B,EAAS/f,UAAUqC,mBAAoB87B,GAEvC2e,GAED,MAAO,GAAKj6I,EAAM47I,gBAAkB,CAEnC,IAAM1+B,EAAWxuK,EAAM+oM,SAAUyC,GAEjCh9B,EAAS7uH,SAASq3G,sBAAuB1lG,EAAM+2F,aAC/CmmB,EAAS7uH,SAASsoG,aAAc2kC,GAGhCyf,EAASqB,WACTv0D,EAAQ2C,KAAMxqF,EAAM+2F,aACpBlP,EAAQud,YAAak2B,GACrByf,EAASj1C,gBAAiBje,GAE1Bq1B,EAASo8B,UAAUv7L,IAAmB,GAAdiiD,EAAM/iE,MAAa,EAAK,GAChDigL,EAASq8B,WAAWx7L,IAAK,EAAoB,GAAfiiD,EAAM9iE,OAAc,GAElDggL,EAASo8B,UAAU3iD,aAAcokD,GACjC79B,EAASq8B,WAAW5iD,aAAcokD,GAElCb,GAED,MAAO,GAAKl6I,EAAM67I,aAAe,CAEhC,IAAM3+B,EAAWxuK,EAAM8qJ,MAAOwgD,GAE9B98B,EAAS7uH,SAASq3G,sBAAuB1lG,EAAM+2F,aAC/CmmB,EAAS7uH,SAASsoG,aAAc2kC,GAEhC0e,GAED,MAAO,GAAKh6I,EAAM87I,kBAAoB,CAErC,IAAM5+B,EAAWxuK,EAAMgpM,KAAMyC,GAE7Bj9B,EAAS/f,UAAUuI,sBAAuB1lG,EAAM+2F,aAChDmmB,EAAS/f,UAAUqC,mBAAoB87B,GAEvC6e,GAED,CAED,CAED,EAKCzrM,MAAOA,EAGT,CAEA,SAAS2tM,IAAkBjhI,EAAYkqG,GAEtC,IAAM1H,EAAS,IAAIg8B,IAAax+H,EAAYkqG,GAEtCg3B,EAAc,GACdC,EAAe,GAwCrB,MAAO,CACNl5F,KAvCD,WAECi5F,EAAY51N,OAAS,EACrB61N,EAAa71N,OAAS,CAEvB,EAmCCgoB,MATa,CACb4tM,YAAaA,EACbC,aAAcA,EAEd3+B,OAAQA,GAMR4+B,YAtBD,SAAsBwkO,GAErBpjQ,EAAOmZ,MAAOulB,EAAa0kO,EAE5B,EAmBCvkO,gBAjBD,SAA0B/lD,GAEzBknB,EAAOu+B,UAAWG,EAAa5lD,EAEhC,EAeCgmD,UArCD,SAAoB18I,GAEnBs8I,EAAY1wN,KAAMo0E,EAEnB,EAkCC28I,WAhCD,SAAqBC,GAEpBL,EAAa3wN,KAAMgxN,EAEpB,EA+BD,CAEA,SAASC,IAAmBzhI,EAAYkqG,GAEvC,IAAIw3B,EAAe,IAAIjtK,QAqCvB,MAAO,CACNhxB,IApCD,SAAcgiK,GAA6B,IAGtCk8B,EAHgB3D,EAAerqN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEhCijX,EAAmBl1J,EAAaj+L,IAAKgiK,GAuB3C,YApB0B3nL,IAArB84W,GAEJj1J,EAAc,IAAIV,IAAkBjhI,EAAYkqG,GAChDw3B,EAAa/+L,IAAK8iK,EAAO,CAAEk8B,KAItB3D,GAAmB44J,EAAiBtrX,QAExCq2N,EAAc,IAAIV,IAAkBjhI,EAAYkqG,GAChD0sL,EAAiBpmX,KAAMmxN,IAIvBA,EAAci1J,EAAkB54J,GAM3B2D,CAER,EAUCvsD,QARD,WAECssD,EAAe,IAAIjtK,OAEpB,EAOD,CAAC,IAEK4lK,IAAiB,SAAAuH,GAAAlyM,EAAA2qM,EAAAuH,GAAA,IAAAuU,EAAA9nN,EAAAgsM,GAEtB,SAAAA,EAAanuC,GAAa,IAAAwqD,EAqBI,OArBJv4N,EAAA,KAAAk8M,IAEzBqc,EAAAP,EAAA5lO,KAAA,OAEKwxN,qBAAsB,EAE3B2U,EAAKp+N,KAAO,oBAEZo+N,EAAK/e,aA5irBmB,KA8irBxB+e,EAAKzmO,IAAM,KAEXymO,EAAK5jD,SAAW,KAEhB4jD,EAAKljD,gBAAkB,KACvBkjD,EAAKjjD,kBAAoB,EACzBijD,EAAKhjD,iBAAmB,EAExBgjD,EAAKxhD,WAAY,EACjBwhD,EAAKvhD,mBAAqB,EAE1BuhD,EAAK5gD,UAAW5J,GAAawqD,CAE9B,CAqBC,OArBAz5N,EAAAo9M,EAAA,EAAAnkN,IAAA,OAAA/D,MAED,SAAM+C,GAiBL,OAfA0lI,GAAA5rH,EAAAqrM,EAAA/pN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKikN,aAAeziN,EAAOyiN,aAE3BjkN,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAK8/K,gBAAkBt+K,EAAOs+K,gBAC9B9/K,KAAK+/K,kBAAoBv+K,EAAOu+K,kBAChC//K,KAAKggL,iBAAmBx+K,EAAOw+K,iBAE/BhgL,KAAKwhL,UAAYhgL,EAAOggL,UACxBxhL,KAAKyhL,mBAAqBjgL,EAAOigL,mBAE1BzhL,IAER,KAAC2mN,CAAA,CA9CqB,CAASprC,IAkD1BqrC,IAAoB,SAAA0H,GAAAtyM,EAAA4qM,EAAA0H,GAAA,IAAAyU,EAAApoN,EAAAisM,GAEzB,SAAAA,EAAapuC,GAAa,IAAA+sD,EAgBI,OAhBJ96N,EAAA,KAAAm8M,IAEzB2e,EAAAxC,EAAAlmO,KAAA,OAEK4xN,wBAAyB,EAE9B8W,EAAK3gO,KAAO,uBAEZ2gO,EAAKhpO,IAAM,KAEXgpO,EAAKnmD,SAAW,KAEhBmmD,EAAKzlD,gBAAkB,KACvBylD,EAAKxlD,kBAAoB,EACzBwlD,EAAKvlD,iBAAmB,EAExBulD,EAAKnjD,UAAW5J,GAAa+sD,CAE9B,CAgBC,OAhBAh8N,EAAAq9M,EAAA,EAAApkN,IAAA,OAAA/D,MAED,SAAM+C,GAYL,OAVA0lI,GAAA5rH,EAAAsrM,EAAAhqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAK8/K,gBAAkBt+K,EAAOs+K,gBAC9B9/K,KAAK+/K,kBAAoBv+K,EAAOu+K,kBAChC//K,KAAKggL,iBAAmBx+K,EAAOw+K,iBAExBhgL,IAER,KAAC4mN,CAAA,CApCwB,CAASrrC,IA4CnC,SAASqzC,IAAgB/f,EAAWggB,EAAUC,GAAgB,IAAAumO,EAEzDtmO,EAAW,IAAIx6B,GAEby6B,EAAiB,IAAI75D,GAC1B85D,EAAgB,IAAI95D,GAEpB+5D,EAAY,IAAItvD,GAEhBuvD,EAAiB,IAAIxI,IAAmB,CAAE1C,aAxorBnB,OAyorBvBmL,EAAoB,IAAIxI,IAExByI,EAAiB,CAAC,EAElBC,EAAkBR,EAAchkB,eAE3B1tB,GAAUzhK,EAAA05a,EAAG,CAAC,EAAGluS,GAAaC,IAAQzrI,EAAA05a,EAAIjuS,GAAYD,IAASxrI,EAAA05a,EA5xrBnD,KA4xrB+EA,GAE3F9lO,EAAyB,IAAIhhC,GAAgB,CAClDI,QAAS,CACR6gC,YAAa,GAEdphC,SAAU,CACTqhC,YAAa,CAAEhxN,MAAO,MACtBixN,WAAY,CAAEjxN,MAAO,IAAI02J,IACzB+T,OAAQ,CAAEzqK,MAAO,IAGlBmwL,aAhCa,2DAiCbC,eA/Be,omCAmCV8gC,EAA2BJ,EAAuBruN,QACxDyuN,EAAyBhhC,QAAQihC,gBAAkB,EAEnD,IAAMC,EAAgB,IAAInqC,GAC1BmqC,EAAc/8M,aACb,WACA,IAAI0vK,GACH,IAAI3tB,aAAc,EAAI,GAAK,EAAG,GAAK,GAAK,EAAG,IAAO,EAAG,EAAG,KACxD,IAIF,IAAMi7D,EAAiB,IAAI5kC,GAAM2kC,EAAeN,GAE1CviC,EAAQhtL,KAEdA,KAAK6wL,SAAU,EAEf7wL,KAAK+wN,YAAa,EAClB/wN,KAAKs/J,aAAc,EAEnBt/J,KAAK4E,KAAOoiJ,GACZ,IAAIsuS,EAAgBt1b,KAAK4E,KAqIzB,SAASmrN,EAAStsE,EAAQmkB,GAEzB,IAAMkD,EAAW+jD,EAASvrD,OAAQwsD,GAE7BP,EAAuB5gC,QAAQ6gC,cAAgB/rE,EAAOusE,cAE1DT,EAAuB5gC,QAAQ6gC,YAAc/rE,EAAOusE,YACpDL,EAAyBhhC,QAAQ6gC,YAAc/rE,EAAOusE,YAEtDT,EAAuBjwD,aAAc,EACrCqwD,EAAyBrwD,aAAc,GAIhB,OAAnB7b,EAAOwsE,UAEXxsE,EAAOwsE,QAAU,IAAIjvD,GAAmBguD,EAAe9yN,EAAG8yN,EAAe3nN,IAM1EkoN,EAAuBnhC,SAASqhC,YAAYhxN,MAAQglJ,EAAOlnJ,IAAI8kK,QAC/DkuD,EAAuBnhC,SAASshC,WAAWjxN,MAAQglJ,EAAOkpE,QAC1D4C,EAAuBnhC,SAASllB,OAAOzqK,MAAQglJ,EAAOylB,OACtD2lC,EAAUpc,gBAAiBhvC,EAAOwsE,SAClCphB,EAAU1uM,QACV0uM,EAAUqhB,mBAAoBtoD,EAAQ,KAAMkD,EAAUykD,EAAwBO,EAAgB,MAI9FH,EAAyBvhC,SAASqhC,YAAYhxN,MAAQglJ,EAAOwsE,QAAQ5uD,QACrEsuD,EAAyBvhC,SAASshC,WAAWjxN,MAAQglJ,EAAOkpE,QAC5DgD,EAAyBvhC,SAASllB,OAAOzqK,MAAQglJ,EAAOylB,OACxD2lC,EAAUpc,gBAAiBhvC,EAAOlnJ,KAClCsyM,EAAU1uM,QACV0uM,EAAUqhB,mBAAoBtoD,EAAQ,KAAMkD,EAAU6kD,EAA0BG,EAAgB,KAEjG,CAEA,SAASK,EAAkBhuN,EAAQ02K,EAAU3nG,EAAOtsE,GAEnD,IAAI9M,EAAS,KAEPs4N,GAA0C,IAAvBl/I,EAAM67I,aAA0B5qN,EAAOkuN,uBAAyBluN,EAAOmuN,oBAEhG,QAAwBlmN,IAAnBgmN,EAEJt4N,EAASs4N,OAMT,GAFAt4N,GAAkC,IAAvBo5E,EAAM67I,aAA0BqC,EAAoBD,EAExDtgB,EAAUjD,uBAAiD,IAAzB/yB,EAASsE,aAAwBxgL,MAAM0E,QAASw3K,EAASoE,iBAAuD,IAAnCpE,EAASoE,eAAerlL,QAC3IihL,EAASiH,iBAAkD,IAA/BjH,EAASkH,mBACrClH,EAASuG,UAAYvG,EAAS0I,UAAY,GAC1C1I,EAASt8K,KAAOs8K,EAAS0I,UAAY,EAAM,CAK7C,IAAMgvC,EAAOz4N,EAAO+jH,KAAM20G,EAAO33C,EAASh9D,KAEtC40G,EAAsBpB,EAAgBkB,QAEbnmN,IAAxBqmN,IAEJA,EAAsB,CAAC,EACvBpB,EAAgBkB,GAASE,GAI1B,IAAIC,EAAiBD,EAAqBD,QAElBpmN,IAAnBsmN,IAEJA,EAAiB54N,EAAOoJ,QACxBuvN,EAAqBD,GAASE,EAC9B73C,EAASj1K,iBAAkB,UAAWytO,IAIvCv5O,EAAS44N,CAEV,EAID54N,EAAO6xE,QAAUkvG,EAASlvG,QAC1B7xE,EAAO0pL,UAAY3I,EAAS2I,UAI3B1pL,EAAO+jL,KAFHj3K,IAASsiJ,GAE2B,OAAxB2xB,EAASuE,WAAwBvE,EAASuE,WAAavE,EAASgD,KAIxC,OAAxBhD,EAASuE,WAAwBvE,EAASuE,WAAaA,EAAYvE,EAASgD,MAI7F/jL,EAAOsnL,SAAWvG,EAASuG,SAC3BtnL,EAAOypL,UAAY1I,EAAS0I,UAC5BzpL,EAAOyE,IAAMs8K,EAASt8K,IAEtBzE,EAAOqlL,YAActE,EAASsE,YAC9BrlL,EAAOmlL,eAAiBpE,EAASoE,eACjCnlL,EAAOolL,iBAAmBrE,EAASqE,iBAEnCplL,EAAOgoL,gBAAkBjH,EAASiH,gBAClChoL,EAAOioL,kBAAoBlH,EAASkH,kBACpCjoL,EAAOkoL,iBAAmBnH,EAASmH,iBAEnCloL,EAAO2pL,mBAAqB5I,EAAS4I,mBACrC3pL,EAAOspL,UAAYvI,EAASuI,WAEA,IAAvBlwG,EAAM67I,eAA2D,IAAlCj1N,EAAO22N,0BAEf5f,EAAUlhM,WAAWoiB,IAAKj4B,GAClCo5E,MAAQA,GAI5B,OAAOp5E,CAER,CAEA,SAAS64N,EAAcxuN,EAAQylK,EAAQgpD,EAAc1/I,EAAOtsE,GAE3D,IAAwB,IAAnBzC,EAAOwnE,QAAZ,CAIA,GAFgBxnE,EAAOwyK,OAAOz8K,KAAM0vK,EAAO+M,UAEzBxyK,EAAOk2K,QAAUl2K,EAAOm2K,QAAUn2K,EAAOo2K,YAEnDp2K,EAAO6zK,YAAgB7zK,EAAO8zK,eAAiBrxK,IAASsiJ,OAAwB/kJ,EAAO+zK,eAAiB64C,EAAS8B,iBAAkB1uN,IAAa,CAEtJA,EAAOyzK,gBAAgBte,iBAAkBs5D,EAAa9oD,mBAAoB3lK,EAAO8lK,aAEjF,IAAM6C,EAAW+jD,EAASvrD,OAAQnhK,GAC5B02K,EAAW12K,EAAO02K,SAExB,GAAKl8K,MAAM0E,QAASw3K,GAInB,IAFA,IAAMmN,EAASlb,EAASkb,OAEdp/K,EAAI,EAAGqmD,EAAK+4H,EAAOpuL,OAAQgP,EAAIqmD,EAAIrmD,IAAO,CAEnD,IAAM6gG,EAAQu+E,EAAQp/K,GAChBmlL,EAAgBlT,EAAUpxE,EAAM0+E,eAEtC,GAAK4F,GAAiBA,EAAcpiH,QAAU,CAE7C,IAAMmnJ,EAAgBX,EAAkBhuN,EAAQ4pL,EAAe76G,EAAOtsE,GAEtEzC,EAAOozb,eAAgB1mP,EAAW1sM,EAAQylK,EAAQgpD,EAAc9lD,EAAUgmD,EAAerpH,GAEzFonG,EAAUqhB,mBAAoBU,EAAc,KAAM9lD,EAAUgmD,EAAe3uN,EAAQslG,GAEnFtlG,EAAOqzb,cAAe3mP,EAAW1sM,EAAQylK,EAAQgpD,EAAc9lD,EAAUgmD,EAAerpH,EAEzF,CAED,MAEM,GAAKoxE,EAASlvG,QAAU,CAE9B,IAAMmnJ,EAAgBX,EAAkBhuN,EAAQ02K,EAAU3nG,EAAOtsE,GAEjEzC,EAAOozb,eAAgB1mP,EAAW1sM,EAAQylK,EAAQgpD,EAAc9lD,EAAUgmD,EAAe,MAEzFjiB,EAAUqhB,mBAAoBU,EAAc,KAAM9lD,EAAUgmD,EAAe3uN,EAAQ,MAEnFA,EAAOqzb,cAAe3mP,EAAW1sM,EAAQylK,EAAQgpD,EAAc9lD,EAAUgmD,EAAe,KAEzF,CAED,CAMD,IAFA,IAAMlzM,EAAWzb,EAAOyb,SAEdlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5Ci0N,EAAc/yM,EAAUlhB,GAAKkrK,EAAQgpD,EAAc1/I,EAAOtsE,EAxDrB,CA4DvC,CAEA,SAASysO,EAAmB9oM,GAE3B,IAAMswI,EAAWtwI,EAAMhnC,OAMvB,IAAM,IAAM69B,KAJZy5I,EAAS3gJ,oBAAqB,UAAWm5M,GAIvBhiB,EAAiB,CAElC,IAAMjmN,EAAQimN,EAAgBjwL,GAExBy8E,EAAOtzE,EAAMhnC,OAAOs6G,KAE1B,GAAKA,KAAQzyG,EAEWA,EAAOyyG,GACf6lD,iBACRt4J,EAAOyyG,EAIhB,CAED,CA3VA77G,KAAKwF,OAAS,SAAWspL,EAAQiD,EAAOnqB,GAEvC,IAAuB,IAAlBolB,EAAM6D,WACe,IAArB7D,EAAM+jC,aAA8C,IAAtB/jC,EAAM1tB,cAElB,IAAlBwvB,EAAOl3L,OAAZ,CAEA,IAAMq6L,EAAsB4c,EAAU3c,kBAChC8+B,EAAiBniB,EAAUoiB,oBAC3BC,EAAoBriB,EAAUsiB,uBAE9BC,EAASviB,EAAUjvL,MAGzBwxM,EAAOC,YAl1rBU,GAm1rBjBD,EAAO16B,QAAQlvJ,MAAM09J,SAAU,EAAG,EAAG,EAAG,GACxCksB,EAAO16B,QAAQnoF,MAAM+iH,SAAS,GAC9BF,EAAOG,gBAAgB,GASvB,IALA,IAAMkkO,EAAUH,IAAkBpuS,IAAgBlnJ,KAAK4E,OAASsiJ,GAC1DwuS,EAAYJ,IAAkBpuS,IAAgBlnJ,KAAK4E,OAASsiJ,GAIxDxqJ,EAAI,EAAGowD,EAAKgiI,EAAOl3L,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEnD,IAAMw0E,EAAQ49G,EAAQpyL,GAChB+mJ,EAASvyE,EAAMuyE,OAErB,QAAgBr5I,IAAXq5I,GAOL,IAA2B,IAAtBA,EAAOstE,aAA+C,IAAvBttE,EAAO6b,YAA3C,CAEA0vD,EAAetzD,KAAMjY,EAAOkpE,SAE5B,IAAM6E,EAAqB/tE,EAAOguE,kBA0BlC,GAxBAzC,EAAex4C,SAAUg7C,GAEzBvC,EAAcvzD,KAAMjY,EAAOkpE,UAEtBqC,EAAe9yN,EAAIozN,GAAmBN,EAAe3nN,EAAIioN,KAExDN,EAAe9yN,EAAIozN,IAEvBL,EAAc/yN,EAAIe,KAAKwf,MAAO6yM,EAAkBkC,EAAmBt1N,GACnE8yN,EAAe9yN,EAAI+yN,EAAc/yN,EAAIs1N,EAAmBt1N,EACxDunJ,EAAOkpE,QAAQzwN,EAAI+yN,EAAc/yN,GAI7B8yN,EAAe3nN,EAAIioN,IAEvBL,EAAc5nN,EAAIpK,KAAKwf,MAAO6yM,EAAkBkC,EAAmBnqN,GACnE2nN,EAAe3nN,EAAI4nN,EAAc5nN,EAAImqN,EAAmBnqN,EACxDo8I,EAAOkpE,QAAQtlN,EAAI4nN,EAAc5nN,IAMf,OAAfo8I,EAAOlnJ,MAA0B,IAAVk5b,IAA8B,IAAZC,EAAmB,CAEhE,IAAM/jO,EAAS3xN,KAAK4E,OAASsiJ,GAAiB,CAAEoX,UAAW9T,GAAe6T,UAAW7T,IAAkB,CAAC,EAEpF,OAAf/G,EAAOlnJ,KAEXknJ,EAAOlnJ,IAAImlK,UAIZje,EAAOlnJ,IAAM,IAAIykK,GAAmBguD,EAAe9yN,EAAG8yN,EAAe3nN,EAAGsqN,GACxEluE,EAAOlnJ,IAAI8kK,QAAQloK,KAAO+3E,EAAM/3E,KAAO,aAEvCsqJ,EAAOmkB,OAAOyoB,wBAEf,CAEAwe,EAAUpc,gBAAiBhvC,EAAOlnJ,KAClCsyM,EAAU1uM,QAIV,IAFA,IAAMyxN,EAAgBnuE,EAAOouE,mBAEnBC,EAAK,EAAGA,EAAKF,EAAeE,IAAQ,CAE7C,IAAM1wD,EAAW3d,EAAOsuE,YAAaD,GAErC5C,EAAUjgM,IACTggM,EAAc/yN,EAAIklK,EAASllK,EAC3B+yN,EAAc5nN,EAAI+5J,EAAS/5J,EAC3B4nN,EAAc/yN,EAAIklK,EAAS95J,EAC3B2nN,EAAc5nN,EAAI+5J,EAASh6J,GAG5BgqN,EAAOhwD,SAAU8tD,GAEjBzrE,EAAOuuE,eAAgB9gJ,EAAO4gJ,GAE9B/C,EAAWtrE,EAAOwuE,aAElBtB,EAAc5+B,EAAOnqB,EAAQnkB,EAAOmkB,OAAQ12F,EAAOlxE,KAAK4E,KAEzD,EAImC,IAA9B6+I,EAAOiuE,oBAA+B1xN,KAAK4E,OAASsiJ,IAExD6oE,EAAStsE,EAAQmkB,GAIlBnkB,EAAO6b,aAAc,CAjFsD,OAL1EvrJ,QAAQk/C,KAAM,wBAAyBie,EAAO,iBAwFhD,CAEAokX,EAAgBt1b,KAAK4E,KAErBooL,EAAM1tB,aAAc,EAEpBuvC,EAAUpc,gBAAiBR,EAAqB++B,EAAgBE,EA1H/B,CA4HlC,CA4ND,CAEA,SAASgB,IAAYtlK,EAAI0/B,EAAYkqG,GAAe,IAAA27B,EAAAC,EAE7C37B,EAAWD,EAAaC,SA2S9B,IAAM47B,EAAc,IAzSpB,WAEC,IAAIC,GAAS,EAEP9qL,EAAQ,IAAIo4H,GACd2yD,EAAmB,KACjBC,EAAoB,IAAI5yD,GAAS,EAAG,EAAG,EAAG,GAEhD,MAAO,CAEN6yD,QAAS,SAAWC,GAEdH,IAAqBG,GAAeJ,IAExC1lK,EAAG8lK,UAAWA,EAAWA,EAAWA,EAAWA,GAC/CH,EAAmBG,EAIrB,EAEAC,UAAW,SAAWC,GAErBN,EAASM,CAEV,EAEA1tB,SAAU,SAAWh+L,EAAGR,EAAGH,EAAGvK,EAAG2hL,IAEJ,IAAvBA,IAEJz2K,GAAKlL,EAAG0K,GAAK1K,EAAGuK,GAAKvK,GAItBwrC,EAAMvY,IAAK/nB,EAAGR,EAAGH,EAAGvK,IAEuB,IAAtCw2N,EAAkBhmD,OAAQhlI,KAE9BolB,EAAGi4I,WAAY39L,EAAGR,EAAGH,EAAGvK,GACxBw2N,EAAkB92D,KAAMl0H,GAI1B,EAEA+yB,MAAO,WAEN+3J,GAAS,EAETC,EAAmB,KACnBC,EAAkBvjM,KAAO,EAAG,EAAG,EAAG,EAEnC,EAIF,EAiPMqyI,EAAc,IA/OpB,WAEC,IAAIgxD,GAAS,EAETO,EAAmB,KACnBC,EAAmB,KACnBC,EAAoB,KAExB,MAAO,CAENzB,QAAS,SAAW/0C,GAEdA,EAEJ2sC,EAAQt8J,EAAG+oY,YAIXntU,EAAS57D,EAAG+oY,WAId,EAEAljO,QAAS,SAAWO,GAEdH,IAAqBG,GAAeV,IAExC1lK,EAAGomK,UAAWA,GACdH,EAAmBG,EAIrB,EAEAC,QAAS,SAAW32C,GAEnB,GAAKw2C,IAAqBx2C,EAAY,CAErC,OAASA,GAER,KAjvsBa,EAmvsBZ1vH,EAAG0vH,UAAW1vH,EAAGgpY,OACjB,MAED,KArvsBc,EAuvsBbhpY,EAAG0vH,UAAW1vH,EAAGipY,QACjB,MAED,KAzvsBY,EA2vsBXjpY,EAAG0vH,UAAW1vH,EAAGkpY,MACjB,MAED,KA7vsBiB,EAsxsBjB,QAEClpY,EAAG0vH,UAAW1vH,EAAGmpY,cAtBlB,KAjwsBa,EAmwsBZnpY,EAAG0vH,UAAW1vH,EAAGopY,OACjB,MAED,KArwsBoB,EAuwsBnBppY,EAAG0vH,UAAW1vH,EAAGqpY,QACjB,MAED,KAzwsBe,EA2wsBdrpY,EAAG0vH,UAAW1vH,EAAGspY,SACjB,MAED,KA7wsBgB,EA+wsBftpY,EAAG0vH,UAAW1vH,EAAGupY,UASnBrjO,EAAmBx2C,CAEpB,CAED,EAEAq2C,UAAW,SAAWC,GAErBN,EAASM,CAEV,EAEA1tB,SAAU,SAAW32F,GAEfwkH,IAAsBxkH,IAE1B3hD,EAAGsmK,WAAY3kH,GACfwkH,EAAoBxkH,EAItB,EAEAh0C,MAAO,WAEN+3J,GAAS,EAETO,EAAmB,KACnBC,EAAmB,KACnBC,EAAoB,IAErB,EAIF,EAsHMxxD,EAAgB,IApHtB,WAEC,IAAI+wD,GAAS,EAETa,EAAqB,KACrBC,EAAqB,KACrBC,EAAoB,KACpBC,EAAyB,KACzBC,EAAqB,KACrBC,EAAsB,KACtBC,EAAsB,KACtBC,EAAsB,KAE1B,MAAO,CAENpC,QAAS,SAAWqC,GAEZrB,IAEDqB,EAEJzK,EAAQt8J,EAAGwpY,cAIX5tU,EAAS57D,EAAGwpY,cAMf,EAEA3jO,QAAS,SAAWmB,GAEdT,IAAuBS,GAAiBtB,IAE5C1lK,EAAGgnK,YAAaA,GAChBT,EAAqBS,EAIvB,EAEAX,QAAS,SAAWv2C,EAAaC,EAAYi3C,GAEvCR,IAAuB12C,GACvB22C,IAAsB12C,GACtB22C,IAA2BM,IAE/BhnK,EAAG8vH,YAAaA,EAAaC,EAAYi3C,GAEzCR,EAAqB12C,EACrB22C,EAAoB12C,EACpB22C,EAAyBM,EAI3B,EAEAC,MAAO,SAAWh3C,EAAaC,EAAcC,GAEvCw2C,IAAuB12C,GACvB22C,IAAwB12C,GACxB22C,IAAwB12C,IAE5BnwH,EAAGknK,UAAWj3C,EAAaC,EAAcC,GAEzCw2C,EAAqB12C,EACrB22C,EAAsB12C,EACtB22C,EAAsB12C,EAIxB,EAEA41C,UAAW,SAAWC,GAErBN,EAASM,CAEV,EAEA1tB,SAAU,SAAW3R,GAEfmgC,IAAwBngC,IAE5B3mI,EAAGmnK,aAAcxgC,GACjBmgC,EAAsBngC,EAIxB,EAEAh5H,MAAO,WAEN+3J,GAAS,EAETa,EAAqB,KACrBC,EAAqB,KACrBC,EAAoB,KACpBC,EAAyB,KACzBC,EAAqB,KACrBC,EAAsB,KACtBC,EAAsB,KACtBC,EAAsB,IAEvB,EAIF,EAQMyvJ,EAAc,IAAIpiU,QAClBs1Y,EAAgB,IAAIt1Y,QAEtBizK,EAAsB,CAAC,EAEvBC,EAA2B,CAAC,EAC5BC,EAAqB,IAAInzK,QACzBozK,EAAqB,GAErBC,EAAiB,KAEjBC,GAAyB,EACzBC,EAAkB,KAClBC,EAAuB,KACvBC,EAAkB,KAClBC,EAAkB,KAClBC,EAA4B,KAC5BC,EAAuB,KACvBC,EAAuB,KACvB0hO,EAAoB,IAAI/6R,GAAO,EAAG,EAAG,GACrCg7R,EAAoB,EACpB1hO,GAA2B,EAE3BC,EAAmB,KACnBC,EAAkB,KAElBC,EAAmB,KAEnBC,EAA6B,KAC7BC,EAA4B,KAE1BtqB,EAAch+I,EAAGy5I,aAAcz5I,EAAG4pY,kCAEpCrhO,GAAqB,EACrB97N,EAAU,EACR+7N,EAAYxoK,EAAGy5I,aAAcz5I,EAAG+8B,UAEE,IAAnCyrI,EAAU5oN,QAAS,UAEvBnT,EAAU6X,WAAY,cAAc8E,KAAMo/M,GAAa,IACvDD,EAAuB97N,GAAW,IAEgB,IAAvC+7N,EAAU5oN,QAAS,eAE9BnT,EAAU6X,WAAY,kBAAkB8E,KAAMo/M,GAAa,IAC3DD,EAAuB97N,GAAW,GAInC,IAAIg8N,EAAqB,KACrBC,EAAuB,CAAC,EAEtBC,EAAe3oK,EAAGy5I,aAAcz5I,EAAG6pY,aACnCjhO,EAAgB5oK,EAAGy5I,aAAcz5I,EAAG8pY,UAEpCjhO,GAAiB,IAAI71D,IAAUjG,UAAW47D,GAC1CG,GAAkB,IAAI91D,IAAUjG,UAAW67D,GAEjD,SAASG,EAAe/wN,EAAMrD,EAAQo8E,EAAOoyR,GAE5C,IAAMrsU,EAAO,IAAI6xE,WAAY,GACvB8rD,EAAUz0G,EAAG+oK,gBAEnB/oK,EAAGgpK,YAAahxN,EAAMy8J,GACtBz0G,EAAGipK,cAAejxN,EAAMgoD,EAAGijR,mBAAoBjjR,EAAGkjR,SAClDljR,EAAGipK,cAAejxN,EAAMgoD,EAAGmjR,mBAAoBnjR,EAAGkjR,SAElD,IAAM,IAAIpzU,EAAI,EAAGA,EAAIihF,EAAOjhF,KAEtB+5L,GAAc7xL,IAASgoD,EAAG+pY,YAAc/xb,IAASgoD,EAAGgqY,iBAMxDhqY,EAAGkpK,WAAYv0N,EAAS7E,EAAG,EAAGkwD,EAAG0jR,KAAM,EAAG,EAAG,EAAG1jR,EAAG0jR,KAAM1jR,EAAG2jR,cAAe7sS,GAJ3EkpB,EAAG+qK,WAAYp2N,EAAQ,EAAGqrD,EAAG0jR,KAAM,EAAG,EAAGy/B,EAAY,EAAGnjT,EAAG0jR,KAAM1jR,EAAG2jR,cAAe7sS,GAUrF,OAAO29H,CAER,CAEA,IAAM00D,EAAgB,CAAC,EA4BvB,SAAS7M,EAAQ9pL,IAEmB,IAA9B40L,EAAqB50L,KAEzBwtB,EAAGs8J,OAAQ9pL,GACX40L,EAAqB50L,IAAO,EAI9B,CAEA,SAASopF,EAASppF,IAEkB,IAA9B40L,EAAqB50L,KAEzBwtB,EAAG47D,QAASppF,GACZ40L,EAAqB50L,IAAO,EAI9B,CA/CA22L,EAAenpK,EAAGgjR,YAAej6G,EAAe/oK,EAAGgjR,WAAYhjR,EAAGgjR,WAAY,GAC9E75G,EAAenpK,EAAGiqY,kBAAqBlhO,EAAe/oK,EAAGiqY,iBAAkBjqY,EAAGkqY,4BAA6B,GAEtGrgQ,IAEJs/B,EAAenpK,EAAGgqY,kBAAqBjhO,EAAe/oK,EAAGgqY,iBAAkBhqY,EAAGgqY,iBAAkB,EAAG,GACnG7gO,EAAenpK,EAAG+pY,YAAehhO,EAAe/oK,EAAG+pY,WAAY/pY,EAAG+pY,WAAY,EAAG,IAMlFtkO,EAAYntB,SAAU,EAAG,EAAG,EAAG,GAC/B5jC,EAAY4jC,SAAU,GACtB3jC,EAAc2jC,SAAU,GAExBgkB,EAAQt8J,EAAG+oY,YACXr0R,EAAY2xD,QA9htBU,GAgitBtB+C,GAAc,GACdC,EAxktBoB,GAyktBpB/M,EAAQt8J,EAAGmqY,WAEX1lO,EAjktBkB,GAyttBlB,IAAM6E,GAAYv6M,EAAAw2M,EAAG,CAAC,EACnBrqE,GAAel7F,EAAGonR,UAAQr4T,EAAAw2M,EAnttBL,IAottBDvlK,EAAGoqY,eAAar7a,EAAAw2M,EAnttBR,IAottBDvlK,EAAGqqY,uBAAqB9kO,GAGtD,GAAK17B,EAEJy/B,EAxttBkB,KAwttBYtpK,EAAGsqY,IACjChhO,EAxttBkB,KAwttBYtpK,EAAGqnR,QAE3B,CAEN,IAAM3tI,EAAYh6G,EAAWv8D,IAAK,oBAEf,OAAdu2K,IAEJ4vB,EAjutBiB,KAiutBa5vB,EAAU6vB,QACxCD,EAjutBiB,KAiutBa5vB,EAAU8vB,QAI1C,CAEA,IAAMC,GAAU16M,EAAAy2M,EAAG,CAAC,EAtutBF,IAuutBDxlK,EAAGmmW,MAAIp3Y,EAAAy2M,EAtutBP,IAuutBDxlK,EAAGw3P,KAAGzoS,EAAAy2M,EAtutBA,IAuutBDxlK,EAAGuqY,WAASx7a,EAAAy2M,EArutBX,IAsutBDxlK,EAAGwqY,WAASz7a,EAAAy2M,EAhutBH,IAiutBDxlK,EAAGyqY,oBAAkB17a,EAAAy2M,EAnutB5B,IAoutBDxlK,EAAG0qY,WAAS37a,EAAAy2M,EAtutBX,IAuutBDxlK,EAAG2qY,WAAS57a,EAAAy2M,EA1utBH,IA2utBDxlK,EAAG4qY,qBAAmB77a,EAAAy2M,EAzutBrB,IA0utBDxlK,EAAG6qY,qBAAmB97a,EAAAy2M,EAtutBrB,IAuutBDxlK,EAAG8qY,qBAAmB/7a,EAAAy2M,EAzutBrB,IA0utBDxlK,EAAG+qY,qBAAmBh8a,EAAAy2M,EAtutBxB,IAuutBDxlK,EAAGgrY,gBAAcj8a,EAAAy2M,EAtutBR,IAuutBDxlK,EAAGirY,0BAAwBl8a,EAAAy2M,EAtutBlC,IAuutBDxlK,EAAGkrY,gBAAcn8a,EAAAy2M,EAtutBR,IAuutBDxlK,EAAGmrY,0BAAwB3lO,GAG7D,SAASf,EAAaz1C,EAAUM,EAAeF,EAAUC,EAAUI,EAAoBF,EAAeC,EAAeitQ,EAAYC,EAAY3rQ,GAE5I,GArwtBiB,IAqwtBZ/B,GAoBL,IAPgC,IAA3By4C,IAEJnL,EAAQt8J,EAAG6jR,OACXp8G,GAAyB,GAhxtBL,IAoxtBhBz4C,EAqFLS,EAAqBA,GAAsBH,EAC3CC,EAAgBA,GAAiBH,EACjCI,EAAgBA,GAAiBH,EAE5BC,IAAkBq4C,GAAwBl4C,IAAuBq4C,IAErE9nK,EAAG0pK,sBAAuBJ,EAAch6C,GAAiBg6C,EAAc75C,IAEvEk4C,EAAuBr4C,EACvBw4C,EAA4Br4C,GAIxBL,IAAaw4C,GAAmBv4C,IAAaw4C,GAAmBt4C,IAAkBw4C,GAAwBv4C,IAAkBw4C,IAEhIhoK,EAAG2pK,kBAAmBF,EAAYr6C,GAAYq6C,EAAYp6C,GAAYo6C,EAAYl6C,GAAiBk6C,EAAYj6C,IAE/Go4C,EAAkBx4C,EAClBy4C,EAAkBx4C,EAClB04C,EAAuBx4C,EACvBy4C,EAAuBx4C,IAIwB,IAA3CitQ,EAAW78Q,OAAQ8pR,IAAiChN,IAAeiN,IAEvE3pY,EAAGy8X,WAAYA,EAAWnib,EAAGmib,EAAW3ib,EAAG2ib,EAAW9ib,EAAG+ib,GAEzDgN,EAAkB56R,KAAM2tR,GACxBkN,EAAoBjN,GAIrBh1N,EAAkB14C,EAClBi5C,GAA2B,OArH1B,GAAKj5C,IAAa04C,GAAmB32C,IAAuBk3C,EAA2B,CAWtF,GATKN,IAAyBzsE,IAAe4sE,IAA8B5sE,KAE1El7F,EAAGsvH,cAAetvH,EAAGonR,UAErBz/G,EAAuBzsE,GACvB4sE,EAA4B5sE,IAIxB61B,EAEJ,OAAS/B,GAER,KAzytBiB,EA0ytBhBhvH,EAAG2pK,kBAAmB3pK,EAAGw3P,IAAKx3P,EAAG6qY,oBAAqB7qY,EAAGw3P,IAAKx3P,EAAG6qY,qBACjE,MAED,KA5ytBmB,EA6ytBlB7qY,EAAG4pK,UAAW5pK,EAAGw3P,IAAKx3P,EAAGw3P,KACzB,MAED,KA/ytBsB,EAgztBrBx3P,EAAG2pK,kBAAmB3pK,EAAGmmW,KAAMnmW,EAAG4qY,oBAAqB5qY,EAAGmmW,KAAMnmW,EAAGw3P,KACnE,MAED,KAlztBmB,EAmztBlBx3P,EAAG2pK,kBAAmB3pK,EAAGmmW,KAAMnmW,EAAGuqY,UAAWvqY,EAAGmmW,KAAMnmW,EAAGwqY,WACzD,MAED,QACCrjb,QAAQwN,MAAO,uCAAwCq6J,QAOzD,OAASA,GAER,KAn0tBiB,EAo0tBhBhvH,EAAG2pK,kBAAmB3pK,EAAGwqY,UAAWxqY,EAAG6qY,oBAAqB7qY,EAAGw3P,IAAKx3P,EAAG6qY,qBACvE,MAED,KAt0tBmB,EAu0tBlB7qY,EAAG4pK,UAAW5pK,EAAGwqY,UAAWxqY,EAAGw3P,KAC/B,MAED,KAz0tBsB,EA00tBrBx3P,EAAG2pK,kBAAmB3pK,EAAGmmW,KAAMnmW,EAAG4qY,oBAAqB5qY,EAAGmmW,KAAMnmW,EAAGw3P,KACnE,MAED,KA50tBmB,EA60tBlBx3P,EAAG4pK,UAAW5pK,EAAGmmW,KAAMnmW,EAAGuqY,WAC1B,MAED,QACCpjb,QAAQwN,MAAO,uCAAwCq6J,GAO1D44C,EAAkB,KAClBC,EAAkB,KAClBE,EAAuB,KACvBC,EAAuB,KACvB0hO,EAAkBrna,IAAK,EAAG,EAAG,GAC7Bsna,EAAoB,EAEpBjiO,EAAkB14C,EAClBi5C,EAA2Bl3C,CAE5B,OA/FgC,IAA3B02C,IAEJ7rG,EAAS57D,EAAG6jR,OACZp8G,GAAyB,EAwI5B,CA0CA,SAAS2B,EAAcpS,GAEjBkR,IAAqBlR,IAEpBA,EAEJh3J,EAAG6pK,UAAW7pK,EAAGorY,IAIjBprY,EAAG6pK,UAAW7pK,EAAGqrY,KAIlBnjO,EAAmBlR,EAIrB,CAEA,SAASqS,EAAaS,GA39tBF,IA69tBdA,GAEJxN,EAAQt8J,EAAGmqY,WAENrgO,IAAa3B,IAh+tBA,IAk+tBZ2B,EAEJ9pK,EAAG8pK,SAAU9pK,EAAGsrY,MAn+tBC,IAq+tBNxhO,EAEX9pK,EAAG8pK,SAAU9pK,EAAGurY,OAIhBvrY,EAAG8pK,SAAU9pK,EAAGwrY,kBAQlB5vU,EAAS57D,EAAGmqY,WAIbhiO,EAAkB2B,CAEnB,CAcA,SAASC,EAAkBr5C,EAAehqC,EAAQ2oE,GAE5C3+B,GAEJ4rC,EAAQt8J,EAAGyrY,qBAENpjO,IAA+B3hF,GAAU4hF,IAA8BjZ,IAE3ErvJ,EAAG0wH,cAAehqC,EAAQ2oE,GAE1BgZ,EAA6B3hF,EAC7B4hF,EAA4BjZ,IAM7BzzF,EAAS57D,EAAGyrY,oBAId,CAqYA,MAAO,CAEN3hQ,QAAS,CACRlvJ,MAAO6qL,EACP9jH,MAAO+yD,EACPiyB,QAAShyB,GAGV2nD,OAAQA,EACR1gG,QAASA,EAETsuG,gBAx0BD,SAA0Bv1N,EAAQw1N,GAEjC,OAAK9C,EAA0B1yN,KAAaw1N,IAE3CnqK,EAAGkqK,gBAAiBv1N,EAAQw1N,GAE5B9C,EAA0B1yN,GAAWw1N,EAEhCtgC,IAICl1L,IAAWqrD,EAAG0rY,mBAElBrkO,EAA0BrnK,EAAGqjR,aAAgBl5G,GAIzCx1N,IAAWqrD,EAAGqjR,cAElBh8G,EAA0BrnK,EAAG0rY,kBAAqBvhO,KAM7C,EAMT,EAyyBC7nC,YAvyBD,SAAsBmC,EAAc0lC,GAEnC,IAAI7nC,EAAcilC,EAEd70D,GAAc,EAElB,GAAK+xB,EAWJ,QAPqBjnL,KAFrB8kL,EAAcglC,EAAmBnkM,IAAKgnM,MAIrC7nC,EAAc,GACdglC,EAAmBjlM,IAAK8nM,EAAa7nC,IAIjCmC,EAAavuB,6BAA+B,CAEhD,IAAMvD,EAAW8xB,EAAahwB,QAE9B,GAAK6tB,EAAYt3L,SAAW2nK,EAAS3nK,QAAUs3L,EAAa,KAAQtiI,EAAGsjR,kBAAoB,CAE1F,IAAM,IAAIxzU,EAAI,EAAGowD,EAAKyyG,EAAS3nK,OAAQ8E,EAAIowD,EAAIpwD,IAE9CwyL,EAAaxyL,GAAMkwD,EAAGsjR,kBAAoBxzU,EAI3CwyL,EAAYt3L,OAAS2nK,EAAS3nK,OAE9B0nK,GAAc,CAEf,CAED,MAEM4vB,EAAa,KAAQtiI,EAAGsjR,oBAE5BhhJ,EAAa,GAAMtiI,EAAGsjR,kBAEtB5wK,GAAc,QAQX4vB,EAAa,KAAQtiI,EAAGsrY,OAE5BhpQ,EAAa,GAAMtiI,EAAGsrY,KAEtB54R,GAAc,GAMXA,IAECk3B,EAAaC,SAEjB7pI,EAAGsiI,YAAaA,GAIhB5iG,EAAWv8D,IAAK,sBAAuBinM,iBAAkB9nC,GAO5D,EA+tBC+nC,WA7tBD,SAAqB3vB,GAEpB,OAAK8sB,IAAmB9sB,IAEvB16I,EAAGqqK,WAAY3vB,GAEf8sB,EAAiB9sB,GAEV,EAMT,EAitBC+pB,YAAaA,EACb6F,YArhBD,SAAsBr+C,EAAUs+C,GAr5tBd,IAu5tBjBt+C,EAASgD,KACNrzD,EAAS57D,EAAGmqY,WACZ7tO,EAAQt8J,EAAGmqY,WAEd,IAAInzO,EAAc/qC,EAASgD,OAASz0B,GAC/B+vE,IAAcvT,GAAcA,GAEjCoS,EAAcpS,GA55tBO,IA85tBnB/qC,EAAS+C,WAAwD,IAAzB/C,EAASkD,YAChDs1C,EAh6tBc,GAi6tBdA,EAAax4C,EAAS+C,SAAU/C,EAASqD,cAAerD,EAASmD,SAAUnD,EAASoD,SAAUpD,EAASwD,mBAAoBxD,EAASsD,cAAetD,EAASuD,cAAevD,EAASwwQ,WAAYxwQ,EAASywQ,WAAYzwQ,EAAS8E,oBAEjOrc,EAAY2xD,QAASp6C,EAASyD,WAC9Bhb,EAAYgwD,QAASz4C,EAAS0D,WAC9Bjb,EAAYmxD,QAAS55C,EAAS2D,YAC9B61C,EAAYI,QAAS55C,EAASwE,YAE9B,IAAML,EAAenE,EAASmE,aAC9Bzb,EAAc+vD,QAASt0C,GAClBA,IAEJzb,EAAckxD,QAAS55C,EAAS4D,kBAChClb,EAAc0xD,QAASp6C,EAAS6D,YAAa7D,EAAS8D,WAAY9D,EAAS+D,iBAC3Erb,EAAcsyD,MAAOh7C,EAASgE,YAAahE,EAASiE,aAAcjE,EAASkE,eAI5E45C,EAAkB99C,EAASyE,cAAezE,EAAS0E,oBAAqB1E,EAAS2E,qBAEpD,IAA7B3E,EAAS6E,gBACNwrC,EAAQt8J,EAAG2rY,0BACX/vU,EAAS57D,EAAG2rY,yBAEhB,EAmfCviO,aAAcA,EACdC,YAAaA,EAEbmB,aA5bD,SAAuBjpN,GAEjBA,IAAU6mN,IAETG,GAAqBvoK,EAAGyqK,UAAWlpN,GAExC6mN,EAAmB7mN,EAIrB,EAmbCwoN,iBAAkBA,EAElBpF,eA5ZD,SAAyBpwD,GAEnBA,EAEJ+nD,EAAQt8J,EAAG4rY,cAIXhwU,EAAS57D,EAAG4rY,aAId,EAkZC5hO,cA9YD,SAAwBC,QAEJzsN,IAAdysN,IAA0BA,EAAYjqK,EAAG+iR,SAAW/kI,EAAc,GAElEyqB,IAAuBwB,IAE3BjqK,EAAGgqK,cAAeC,GAClBxB,EAAqBwB,EAIvB,EAoYCjB,YAlYD,SAAsB0B,EAAWC,EAAcV,QAE3BzsN,IAAdysN,IAIHA,EAF2B,OAAvBxB,EAEQzoK,EAAG+iR,SAAW/kI,EAAc,EAI5ByqB,GAMd,IAAImC,EAAelC,EAAsBuB,QAEnBzsN,IAAjBotN,IAEJA,EAAe,CAAE5yN,UAAMwF,EAAWi3J,aAASj3J,GAC3CkrN,EAAsBuB,GAAcW,GAIhCA,EAAa5yN,OAAS0yN,GAAaE,EAAan2D,UAAYk2D,IAE3DlC,IAAuBwB,IAE3BjqK,EAAGgqK,cAAeC,GAClBxB,EAAqBwB,GAItBjqK,EAAGgpK,YAAa0B,EAAWC,GAAgBxB,EAAeuB,IAE1DE,EAAa5yN,KAAO0yN,EACpBE,EAAan2D,QAAUk2D,EAIzB,EA0VCE,cAxVD,WAEC,IAAMD,EAAelC,EAAsBD,QAErBjrN,IAAjBotN,QAAoDptN,IAAtBotN,EAAa5yN,OAE/CgoD,EAAGgpK,YAAa4B,EAAa5yN,KAAM,MAEnC4yN,EAAa5yN,UAAOwF,EACpBotN,EAAan2D,aAAUj3J,EAIzB,EA4UCstN,qBA1UD,WAEC,IAEC9qK,EAAG8qK,qBAAqB53N,MAAO8sD,EAAI3sD,UAEpC,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EA+TC8hW,qBA7TD,WAEC,IAECz2T,EAAGy2T,qBAAqBvjX,MAAO8sD,EAAI3sD,UAEpC,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAkTCu0M,WA5ND,WAEC,IAEClpK,EAAGkpK,WAAWh2N,MAAO8sD,EAAI3sD,UAE1B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAiNCo2M,WA/MD,WAEC,IAEC/qK,EAAG+qK,WAAW73N,MAAO8sD,EAAI3sD,UAE1B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAqMC+hW,iBA3KD,SAA2BC,EAAej8K,GAEzC,IAAIhjD,EAAU+xS,EAActma,IAAKu3K,QAEhBl9L,IAAZk6I,IAEJA,EAAU,IAAIvjG,QAEds1Y,EAAcpna,IAAKq4K,EAAShjD,IAI7B,IAAIk/N,EAAal/N,EAAQv0H,IAAKwzV,QAEVn5W,IAAfo5W,IAEJA,EAAa52T,EAAG62T,qBAAsBn8K,EAASi8K,EAAcpqX,MAE7DmrJ,EAAQr1H,IAAKs0V,EAAeC,GAI9B,EAsJCE,oBApJD,SAA8BH,EAAej8K,GAE5C,IACMk8K,EADU6yE,EAActma,IAAKu3K,GACRv3K,IAAKwzV,GAE3BJ,EAAYpzV,IAAKu3K,KAAck8K,IAGnC52T,EAAG82T,oBAAqBp8K,EAASk8K,EAAYD,EAAcI,qBAE3DR,EAAYl0V,IAAKq4K,EAASk8K,GAI5B,EAwIC5rJ,aA9PD,WAEC,IAEChrK,EAAGgrK,aAAa93N,MAAO8sD,EAAI3sD,UAE5B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAmPCs2M,aAjPD,WAEC,IAECjrK,EAAGirK,aAAa/3N,MAAO8sD,EAAI3sD,UAE5B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAsOCu2M,cAxTD,WAEC,IAEClrK,EAAGkrK,cAAch4N,MAAO8sD,EAAI3sD,UAE7B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EA6SCw2M,cA3SD,WAEC,IAECnrK,EAAGmrK,cAAcj4N,MAAO8sD,EAAI3sD,UAE7B,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAgSCy2M,wBA9RD,WAEC,IAECprK,EAAGorK,wBAAwBl4N,MAAO8sD,EAAI3sD,UAEvC,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAmRCw1N,wBAjRD,WAEC,IAECnqL,EAAGmqL,wBAAwBj3O,MAAO8sD,EAAI3sD,UAEvC,CAAE,MAAQshB,IAETxN,QAAQwN,MAAO,oBAAqBA,GAErC,CAED,EAuQC2/I,QA3MD,SAAkBA,IAEyB,IAArCu0D,EAAejpD,OAAQtL,KAE3Bt0G,EAAGs0G,QAASA,EAAQhlK,EAAGglK,EAAQ75J,EAAG65J,EAAQ55J,EAAG45J,EAAQ95J,GACrDquN,EAAe/5D,KAAMwF,GAIvB,EAmMCE,SAjMD,SAAmBA,IAE0B,IAAvCs0D,EAAgBlpD,OAAQpL,KAE5Bx0G,EAAGw0G,SAAUA,EAASllK,EAAGklK,EAAS/5J,EAAG+5J,EAAS95J,EAAG85J,EAASh6J,GAC1DsuN,EAAgBh6D,KAAM0F,GAIxB,EA0LC7mG,MA9ID,WAIC3N,EAAG47D,QAAS57D,EAAG6jR,OACf7jR,EAAG47D,QAAS57D,EAAGmqY,WACfnqY,EAAG47D,QAAS57D,EAAG+oY,YACf/oY,EAAG47D,QAAS57D,EAAGyrY,qBACfzrY,EAAG47D,QAAS57D,EAAG4rY,cACf5rY,EAAG47D,QAAS57D,EAAGwpY,cACfxpY,EAAG47D,QAAS57D,EAAG2rY,0BAEf3rY,EAAGsvH,cAAetvH,EAAGonR,UACrBpnR,EAAG4pK,UAAW5pK,EAAGw3P,IAAKx3P,EAAGmmW,MACzBnmW,EAAG2pK,kBAAmB3pK,EAAGw3P,IAAKx3P,EAAGmmW,KAAMnmW,EAAGw3P,IAAKx3P,EAAGmmW,MAClDnmW,EAAGy8X,WAAY,EAAG,EAAG,EAAG,GAExBz8X,EAAG8lK,WAAW,GAAM,GAAM,GAAM,GAChC9lK,EAAGi4I,WAAY,EAAG,EAAG,EAAG,GAExBj4I,EAAGomK,WAAW,GACdpmK,EAAG0vH,UAAW1vH,EAAGkpY,MACjBlpY,EAAGsmK,WAAY,GAEftmK,EAAGgnK,YAAa,YAChBhnK,EAAG8vH,YAAa9vH,EAAGipY,OAAQ,EAAG,YAC9BjpY,EAAGknK,UAAWlnK,EAAG6rY,KAAM7rY,EAAG6rY,KAAM7rY,EAAG6rY,MACnC7rY,EAAGmnK,aAAc,GAEjBnnK,EAAG8pK,SAAU9pK,EAAGsrY,MAChBtrY,EAAG6pK,UAAW7pK,EAAGqrY,KAEjBrrY,EAAG0wH,cAAe,EAAG,GAErB1wH,EAAGgqK,cAAehqK,EAAG+iR,UAErB/iR,EAAGkqK,gBAAiBlqK,EAAGqjR,YAAa,OAElB,IAAbx5I,IAEJ7pI,EAAGkqK,gBAAiBlqK,EAAG0rY,iBAAkB,MACzC1rY,EAAGkqK,gBAAiBlqK,EAAG8rY,iBAAkB,OAI1C9rY,EAAGqqK,WAAY,MAEfrqK,EAAGyqK,UAAW,GAEdzqK,EAAGs0G,QAAS,EAAG,EAAGt0G,EAAGosF,OAAO7qI,MAAOy+C,EAAGosF,OAAO5qI,QAC7Cw+C,EAAGw0G,SAAU,EAAG,EAAGx0G,EAAGosF,OAAO7qI,MAAOy+C,EAAGosF,OAAO5qI,QAI9C4lN,EAAsB,CAAC,EAEvBqB,EAAqB,KACrBC,EAAuB,CAAC,EAExBrB,EAA2B,CAAC,EAC5BC,EAAqB,IAAInzK,QACzBozK,EAAqB,GAErBC,EAAiB,KAEjBC,GAAyB,EACzBC,EAAkB,KAClBC,EAAuB,KACvBC,EAAkB,KAClBC,EAAkB,KAClBC,EAA4B,KAC5BC,EAAuB,KACvBC,EAAuB,KACvB0hO,EAAoB,IAAI/6R,GAAO,EAAG,EAAG,GACrCg7R,EAAoB,EACpB1hO,GAA2B,EAE3BC,EAAmB,KACnBC,EAAkB,KAElBC,EAAmB,KAEnBC,EAA6B,KAC7BC,EAA4B,KAE5BO,EAAexmM,IAAK,EAAG,EAAG29B,EAAGosF,OAAO7qI,MAAOy+C,EAAGosF,OAAO5qI,QACrDsnN,EAAgBzmM,IAAK,EAAG,EAAG29B,EAAGosF,OAAO7qI,MAAOy+C,EAAGosF,OAAO5qI,QAEtDikN,EAAY93J,QACZ+mG,EAAY/mG,QACZgnG,EAAchnG,OAEf,EAsDD,CAEA,SAAS09J,IAAeC,EAAK5rI,EAAY1sE,EAAOjS,EAAY6oL,EAAc2hC,EAAO9pI,GAAO,IAAA+pI,EAAAC,EAAAsgO,EAOnFjgT,EALE+9C,EAAWD,EAAaC,SACxB6hC,EAAqBhsI,EAAWl+C,IAAK,wCAA2Ck+C,EAAWv8D,IAAK,wCAA2C,KAC3IwoM,EAAqD,qBAAdn8N,WAAoC,iBAAiBlE,KAAMkE,UAAUC,WAE5Gm8N,EAAiB,IAAIz3K,QAGrB03K,EAAW,IAAI13K,QAMjB23K,GAAqB,EAEzB,IAECA,EAAgD,qBAApBC,iBAE+B,OAArD,IAAIA,gBAAiB,EAAG,GAAI1/E,WAAY,KAE/C,CAAE,MAAQpgI,GAET,CAID,SAAS+/M,EAAczqN,EAAOC,GAI7B,OAAOsqN,EAEN,IAAIC,gBAAiBxqN,EAAOC,GAAWo3C,GAAiB,SAE1D,CAEA,SAASqzK,EAAa1/E,EAAO2/E,EAAiBC,EAAgBC,GAE7D,IAAI3hF,EAAQ,EAYZ,IARK8B,EAAMhrI,MAAQ6qN,GAAW7/E,EAAM/qI,OAAS4qN,KAE5C3hF,EAAQ2hF,EAAU/7N,KAAKC,IAAKi8I,EAAMhrI,MAAOgrI,EAAM/qI,SAM3CipI,EAAQ,IAAyB,IAApByhF,EAA2B,CAI5C,GAAmC,qBAArB37D,kBAAoChkB,aAAiBgkB,kBACnC,qBAAtBJ,mBAAqC5jB,aAAiB4jB,mBACtC,qBAAhBK,aAA+BjkB,aAAiBikB,YAAgB,CAEzE,IAAM3gJ,EAAQq8M,EAAkBtmE,GAAkBv1J,KAAKwf,MAEjDtO,EAAQsO,EAAO46H,EAAQ8B,EAAMhrI,OAC7BC,EAASqO,EAAO46H,EAAQ8B,EAAM/qI,aAEnBhE,IAAZsuI,IAAwBA,EAAUkgF,EAAczqN,EAAOC,IAI5D,IAAM4qI,EAAS+/E,EAAiBH,EAAczqN,EAAOC,GAAWsqI,EAUhE,OARAM,EAAO7qI,MAAQA,EACf6qI,EAAO5qI,OAASA,EAEA4qI,EAAOC,WAAY,MAC3Ba,UAAWX,EAAO,EAAG,EAAGhrI,EAAOC,GAEvC2F,QAAQk/C,KAAM,uDAAyDkmF,EAAMhrI,MAAQ,IAAMgrI,EAAM/qI,OAAS,SAAWD,EAAQ,IAAMC,EAAS,MAErI4qI,CAER,CAQC,MANK,SAAUG,GAEdplI,QAAQk/C,KAAM,yDAA2DkmF,EAAMhrI,MAAQ,IAAMgrI,EAAM/qI,OAAS,MAItG+qI,CAIT,CAEA,OAAOA,CAER,CAEA,SAAS8/E,EAAgB9/E,GAExB,OAAOkZ,GAAclZ,EAAMhrI,QAAWkkJ,GAAclZ,EAAM/qI,OAE3D,CAWA,SAAS8qN,EAA6B73D,EAAS83D,GAE9C,OAAO93D,EAAQxC,iBAAmBs6D,GACjC93D,EAAQ/C,YAAc9T,IAAiB6W,EAAQ/C,YAAczT,EAE/D,CAEA,SAASuuE,EAAgB73N,GAExB22N,EAAIkB,eAAgB73N,EAErB,CAEA,SAAS83N,EAAmBC,EAAoBC,EAAUC,EAAQ7+D,GAA0C,IAA9Bi+R,EAAmB34b,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAEhG,IAAkB,IAAbw2L,EAAqB,OAAO8iC,EAEjC,GAA4B,OAAvBD,EAA8B,CAElC,QAAmClvN,IAA9B8tN,EAAKoB,GAAqC,OAAOpB,EAAKoB,GAE3DvlN,QAAQk/C,KAAM,2EAA8EqmK,EAAqB,IAElH,CAEA,IAAI36D,EAAiB46D,EA6BrB,GA3BKA,IAAarB,EAAI2gO,MAEhBr/N,IAAWtB,EAAIq3G,QAAQ5wK,EAAiBu5D,EAAI4gO,MAC5Ct/N,IAAWtB,EAAIqzN,aAAa5sR,EAAiBu5D,EAAI6gO,MACjDv/N,IAAWtB,EAAIq4G,gBAAgB5xK,EAAiBu5D,EAAI8gO,KAIrDz/N,IAAarB,EAAI+gO,cAEhBz/N,IAAWtB,EAAIq4G,gBAAgB5xK,EAAiBu5D,EAAIghO,MACpD1/N,IAAWtB,EAAIugK,iBAAiB95N,EAAiBu5D,EAAIihO,OACrD3/N,IAAWtB,EAAIuzN,eAAe9sR,EAAiBu5D,EAAIkhO,OACnD5/N,IAAWtB,EAAIpkF,OAAO6qB,EAAiBu5D,EAAImhO,KAC3C7/N,IAAWtB,EAAIszN,QAAQ7sR,EAAiBu5D,EAAIohO,MAC5C9/N,IAAWtB,EAAIwzN,MAAM/sR,EAAiBu5D,EAAIqhO,OAI3ChgO,IAAarB,EAAIshO,KAEhBhgO,IAAWtB,EAAIq3G,QAAQ5wK,EAAiBu5D,EAAIuhO,OAC5CjgO,IAAWtB,EAAIqzN,aAAa5sR,EAAiBu5D,EAAIwhO,OACjDlgO,IAAWtB,EAAIq4G,gBAAgB5xK,EAAiBu5D,EAAIyhO,MAIrDpgO,IAAarB,EAAIo4G,KAAO,CAE5B,IAAM+oD,EAAWu/D,EAAsBnU,GAAiBjqR,GAAgBwrR,YAAarrR,GAEhF6+D,IAAWtB,EAAIq3G,QAAQ5wK,EAAiBu5D,EAAI0hO,SAC5CpgO,IAAWtB,EAAIqzN,aAAa5sR,EAAiBu5D,EAAI2hO,SACjDrgO,IAAWtB,EAAIq4G,gBAAgB5xK,EAAmB06N,IAAaqrD,GAAiBxsN,EAAI4hO,aAAe5hO,EAAI6hO,OACvGvgO,IAAWtB,EAAI8hO,yBAAyBr7R,EAAiBu5D,EAAI+hO,OAC7DzgO,IAAWtB,EAAIgiO,yBAAyBv7R,EAAiBu5D,EAAIiiO,QAEnE,CAUA,OARKx7R,IAAmBu5D,EAAI6gO,MAAQp6R,IAAmBu5D,EAAI4gO,MAC1Dn6R,IAAmBu5D,EAAIwhO,OAAS/6R,IAAmBu5D,EAAIuhO,OACvD96R,IAAmBu5D,EAAI2hO,SAAWl7R,IAAmBu5D,EAAI0hO,SAEzDttW,EAAWv8D,IAAK,0BAIV4uI,CAER,CAEA,SAAS86D,EAAcp4D,EAASloB,EAAOggF,GAEtC,OAA8D,IAAzDD,EAA6B73D,EAAS83D,IAA6B93D,EAAQq4D,sBAAwBr4D,EAAQ/C,YAAc9T,IAAiB6W,EAAQ/C,YAAczT,GAE7J5tJ,KAAKqzM,KAAMrzM,KAAKC,IAAKi8I,EAAMhrI,MAAOgrI,EAAM/qI,SAAa,OAE7BhE,IAApBi3J,EAAQ3C,SAAyB2C,EAAQ3C,QAAQ9mK,OAAS,EAI9DypK,EAAQ3C,QAAQ9mK,OAEZypK,EAAQs4D,qBAAuBh9N,MAAM0E,QAASggK,EAAQloB,OAE1DA,EAAMulB,QAAQ9mK,OAMd,CAIT,CAIA,SAASgiO,EAAgBnzN,GAExB,OAAKA,IAAM+jJ,IAAiB/jJ,IAAMgkJ,IAA8BhkJ,IAAMkkJ,GAE9DutE,EAAI43G,QAIL53G,EAAIk/F,MAEZ,CAIA,SAAShqH,EAAkB7kK,GAE1B,IAAM84H,EAAU94H,EAAMhnC,OAEtB8/J,EAAQnpI,oBAAqB,UAAWk1K,GAwBzC,SAA4B/rC,GAE3B,IAAMw4D,EAAoBlsN,EAAWoiB,IAAKsxI,GAE1C,QAAuCj3J,IAAlCyvN,EAAkBC,YAA4B,OAInD,IAAMt4N,EAAS6/J,EAAQ7/J,OACjBu4N,EAAgBtB,EAAS1oM,IAAKvuB,GAEpC,GAAKu4N,EAAgB,CAEpB,IAAMxC,EAAewC,EAAeF,EAAkBG,YACtDzC,EAAa9R,YAImB,IAA3B8R,EAAa9R,WAEjBwU,EAAe54D,GAM6B,IAAxC9iK,OAAOqD,KAAMm4N,GAAgBniO,QAEjC6gO,EAASj7L,OAAQh8B,EAInB,CAEAmM,EAAWizD,OAAQygG,EAEpB,CA1DC64D,CAAmB74D,GAEdA,EAAQknD,gBAEZiQ,EAAeh7L,OAAQ6jI,EAIzB,CAEA,SAAS84D,EAAuB5xL,GAE/B,IAAM8oJ,EAAe9oJ,EAAMhnC,OAE3B8vL,EAAan5J,oBAAqB,UAAWiiM,GA2D9C,SAAiC9oC,GAEhC,IAAMhwB,EAAUgwB,EAAahwB,QAEvB+4D,EAAyBzsN,EAAWoiB,IAAKshK,GACzCwoC,EAAoBlsN,EAAWoiB,IAAKsxI,QAEAj3J,IAArCyvN,EAAkBQ,iBAEtBnC,EAAI+B,cAAeJ,EAAkBQ,gBAErChsI,EAAK+lH,OAAO70C,YAIR8xB,EAAa7vB,cAEjB6vB,EAAa7vB,aAAaE,UAI3B,GAAK2vB,EAAaE,wBAEjB,IAAM,IAAI70L,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,GAAKC,MAAM0E,QAAS+4N,EAAuBG,mBAAoB79N,IAE9D,IAAM,IAAI0X,EAAQ,EAAGA,EAAQgmN,EAAuBG,mBAAoB79N,GAAI9E,OAAQwc,IAAW8jN,EAAIoC,kBAAmBF,EAAuBG,mBAAoB79N,GAAK0X,SAItK8jN,EAAIoC,kBAAmBF,EAAuBG,mBAAoB79N,IAI9D09N,EAAuBI,oBAAqBtC,EAAIuC,mBAAoBL,EAAuBI,mBAAoB99N,GAErH,KAEM,CAEN,GAAKC,MAAM0E,QAAS+4N,EAAuBG,oBAE1C,IAAM,IAAInmN,EAAQ,EAAGA,EAAQgmN,EAAuBG,mBAAmB3iO,OAAQwc,IAAW8jN,EAAIoC,kBAAmBF,EAAuBG,mBAAoBnmN,SAI5J8jN,EAAIoC,kBAAmBF,EAAuBG,oBAO/C,GAHKH,EAAuBI,oBAAqBtC,EAAIuC,mBAAoBL,EAAuBI,oBAC3FJ,EAAuBM,gCAAiCxC,EAAIoC,kBAAmBF,EAAuBM,gCAEtGN,EAAuBO,yBAE3B,IAAM,IAAIj+N,EAAI,EAAGA,EAAI09N,EAAuBO,yBAAyB/iO,OAAQ8E,IAEvE09N,EAAuBO,yBAA0Bj+N,IAAMw7N,EAAIuC,mBAAoBL,EAAuBO,yBAA0Bj+N,IAMlI09N,EAAuBQ,0BAA2B1C,EAAIuC,mBAAoBL,EAAuBQ,yBAEvG,CAEA,GAAKvpC,EAAavuB,6BAEjB,IAAM,IAAIpmK,EAAI,EAAGowD,EAAKu0G,EAAQzpK,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAEpD,IAAMm+N,EAAuBltN,EAAWoiB,IAAKsxI,EAAS3kK,IAEjDm+N,EAAqBR,iBAEzBnC,EAAI+B,cAAeY,EAAqBR,gBAExChsI,EAAK+lH,OAAO70C,YAIb5xJ,EAAWizD,OAAQygG,EAAS3kK,GAE7B,CAIDiR,EAAWizD,OAAQygG,GACnB1zJ,EAAWizD,OAAQywH,EAEpB,CApJCypC,CAAwBzpC,EAEzB,CA0CA,SAAS4oC,EAAe54D,GAEvB,IAAMw4D,EAAoBlsN,EAAWoiB,IAAKsxI,GAC1C62D,EAAI+B,cAAeJ,EAAkBQ,gBAErC,IAAM74N,EAAS6/J,EAAQ7/J,cACDi3N,EAAS1oM,IAAKvuB,GACdq4N,EAAkBG,YAExC3rI,EAAK+lH,OAAO70C,UAEb,CAiGA,IAAIw7D,EAAe,EAiDnB,SAASxgB,EAAcl5C,EAAS25D,GAE/B,IAAMnB,EAAoBlsN,EAAWoiB,IAAKsxI,GAI1C,GAFKA,EAAQknD,gBAqlDd,SAA6BlnD,GAE5B,IAAM+0B,EAAQ/nG,EAAK7oF,OAAO4wL,MAIrBoiC,EAAezoM,IAAKsxI,KAAc+0B,IAEtCoiC,EAAevpM,IAAKoyI,EAAS+0B,GAC7B/0B,EAAQiC,SAIV,CAlmD+B23D,CAAoB55D,IAEX,IAAlCA,EAAQlC,uBAAmCkC,EAAQhoK,QAAU,GAAKwgO,EAAkBqB,YAAc75D,EAAQhoK,QAAU,CAExH,IAAM8/I,EAAQkoB,EAAQloB,MAEtB,GAAe,OAAVA,EAEJplI,QAAQk/C,KAAM,+EAER,KAAwB,IAAnBkmF,EAAMjmD,SAOjB,YADAioI,EAAetB,EAAmBx4D,EAAS25D,GAJ3CjnN,QAAQk/C,KAAM,yEAOf,CAED,CAEArzC,EAAMg2M,YAAasC,EAAI03G,WAAY/1G,EAAkBQ,eAAgBnC,EAAIy3G,SAAW30G,EAErF,CA+CA,IAAMI,GAAYz/M,EAAAy8M,EAAG,CAAC,EACnB/tE,GAAkB6tE,EAAIigK,QAAMx8W,EAAAy8M,EAC5B9tE,GAAuB4tE,EAAIkiO,eAAaz+a,EAAAy8M,EACxC7tE,GAA0B2tE,EAAImiO,iBAAejiO,GAG1CiD,GAAU1/M,EAAA08M,EAAG,CAAC,EACjB7tE,GAAiB0tE,EAAI43G,SAAOn0T,EAAA08M,EAC5B5tE,GAA8BytE,EAAIoiO,wBAAsB3+a,EAAA08M,EACxD1tE,GAA6ButE,EAAIqiO,uBAAqB5+a,EAAA08M,EAEtDxtE,GAAgBqtE,EAAIk/F,QAAMz7S,EAAA08M,EAC1BvtE,GAA6BotE,EAAIsiO,uBAAqB7+a,EAAA08M,EACtDrtE,GAA4BktE,EAAIuiO,sBAAoBpiO,GAGjDqiO,GAAW/+a,EAAAg9a,EAAG,CAAC,EAr0vBD,IAs0vBDzgO,EAAI09N,OAAKj6a,EAAAg9a,EA/zvBP,IAg0vBDzgO,EAAI29N,QAAMl6a,EAAAg9a,EAt0vBX,IAu0vBDzgO,EAAI49N,MAAIn6a,EAAAg9a,EAr0vBF,IAs0vBDzgO,EAAI69N,QAAMp6a,EAAAg9a,EAv0vBb,IAw0vBDzgO,EAAI89N,OAAKr6a,EAAAg9a,EAp0vBD,IAq0vBDzgO,EAAI+9N,QAAMt6a,EAAAg9a,EAv0vBd,IAw0vBDzgO,EAAIg+N,SAAOv6a,EAAAg9a,EAv0vBT,IAw0vBDzgO,EAAIi+N,UAAQwC,GAGlC,SAASr9N,EAAsBC,EAAal6D,EAAS83D,GA2DpD,GAzDK93D,EAAQz8J,OAAS4mJ,KAA8D,IAAjDl/D,EAAWl+C,IAAK,6BAChDizH,EAAQhD,YAAcxT,IAAgBwW,EAAQhD,YAAcvT,IAA6BuW,EAAQhD,YAAc1T,IAA6B0W,EAAQhD,YAAcrT,IACpKqW,EAAQ/C,YAAczT,IAAgBwW,EAAQ/C,YAAcxT,IAA6BuW,EAAQ/C,YAAc3T,IAA6B0W,EAAQ/C,YAActT,IAElKj3I,QAAQk/C,KAAM,4IAIVkmK,GAEJjB,EAAIrC,cAAe0F,EAAarD,EAAIyiO,eAAgBv/N,EAAc/5D,EAAQlD,QAC1E+5D,EAAIrC,cAAe0F,EAAarD,EAAI0iO,eAAgBx/N,EAAc/5D,EAAQjD,QAErEm9D,IAAgBrD,EAAIy+N,YAAcp7N,IAAgBrD,EAAI0+N,kBAE1D1+N,EAAIrC,cAAe0F,EAAarD,EAAI2iO,eAAgBz/N,EAAc/5D,EAAQS,QAI3Eo2D,EAAIrC,cAAe0F,EAAarD,EAAI63G,mBAAoB10G,EAAYh6D,EAAQhD,YAC5E65D,EAAIrC,cAAe0F,EAAarD,EAAI23G,mBAAoBx0G,EAAYh6D,EAAQ/C,cAI5E45D,EAAIrC,cAAe0F,EAAarD,EAAIyiO,eAAgBziO,EAAIkiO,eACxDliO,EAAIrC,cAAe0F,EAAarD,EAAI0iO,eAAgB1iO,EAAIkiO,eAEnD7+N,IAAgBrD,EAAIy+N,YAAcp7N,IAAgBrD,EAAI0+N,kBAE1D1+N,EAAIrC,cAAe0F,EAAarD,EAAI2iO,eAAgB3iO,EAAIkiO,eAIpD/4R,EAAQlD,QAAU7T,IAAuB+W,EAAQjD,QAAU9T,IAE/Dv2I,QAAQk/C,KAAM,iIAIfilK,EAAIrC,cAAe0F,EAAarD,EAAI63G,mBAAoBn2G,EAAgBv4D,EAAQhD,YAChF65D,EAAIrC,cAAe0F,EAAarD,EAAI23G,mBAAoBj2G,EAAgBv4D,EAAQ/C,YAE3E+C,EAAQ/C,YAAc9T,IAAiB6W,EAAQ/C,YAAczT,IAEjE92I,QAAQk/C,KAAM,oIAMXouG,EAAQ6tR,kBAEZh3N,EAAIrC,cAAe0F,EAAarD,EAAI4iO,qBAAsB5iO,EAAI6iO,wBAC9D7iO,EAAIrC,cAAe0F,EAAarD,EAAI8iO,qBAAsBN,EAAar5R,EAAQ6tR,oBAIpB,IAAvD5iW,EAAWl+C,IAAK,kCAA8C,CAElE,IAAMk4J,EAAYh6G,EAAWv8D,IAAK,kCAElC,GAAKsxI,EAAQhD,YAAc7T,GAAgB,OAC3C,GAAK6W,EAAQ/C,YAAc3T,IAA6B0W,EAAQ/C,YAActT,GAA2B,OACzG,GAAKqW,EAAQz8J,OAAS4mJ,KAA8D,IAAjDl/D,EAAWl+C,IAAK,4BAAyC,OAC5F,IAAkB,IAAbqoJ,GAAwBp1B,EAAQz8J,OAAS6mJ,KAAuE,IAAtDn/D,EAAWl+C,IAAK,iCAAgD,QAE1HizH,EAAQ7C,WAAa,GAAK7wJ,EAAWoiB,IAAKsxI,GAAUm6D,uBAExDtD,EAAIuD,cAAeF,EAAaj1B,EAAUo1B,2BAA4Bz+N,KAAKiuC,IAAKm2H,EAAQ7C,WAAYg4B,EAAa8U,qBACjH39L,EAAWoiB,IAAKsxI,GAAUm6D,oBAAsBn6D,EAAQ7C,WAI1D,CAED,CAEA,SAASm9D,EAAa9B,EAAmBx4D,GAExC,IAAIu6D,GAAc,OAEqBxxN,IAAlCyvN,EAAkBC,cAEtBD,EAAkBC,aAAc,EAEhCz4D,EAAQz9J,iBAAkB,UAAWwpM,IAMtC,IAAM5rM,EAAS6/J,EAAQ7/J,OACnBu4N,EAAgBtB,EAAS1oM,IAAKvuB,QAEX4I,IAAlB2vN,IAEJA,EAAgB,CAAC,EACjBtB,EAASxpM,IAAKztB,EAAQu4N,IAMvB,IAAM8B,EAzOP,SAA6Bx6D,GAE5B,IAAMt+J,EAAQ,GAiBd,OAfAA,EAAMjG,KAAMukK,EAAQlD,OACpBp7J,EAAMjG,KAAMukK,EAAQjD,OACpBr7J,EAAMjG,KAAMukK,EAAQS,OAAS,GAC7B/+J,EAAMjG,KAAMukK,EAAQhD,WACpBt7J,EAAMjG,KAAMukK,EAAQ/C,WACpBv7J,EAAMjG,KAAMukK,EAAQ7C,YACpBz7J,EAAMjG,KAAMukK,EAAQ1C,gBACpB57J,EAAMjG,KAAMukK,EAAQ9C,QACpBx7J,EAAMjG,KAAMukK,EAAQz8J,MACpB7B,EAAMjG,KAAMukK,EAAQxC,iBACpB97J,EAAMjG,KAAMukK,EAAQvC,kBACpB/7J,EAAMjG,KAAMukK,EAAQtC,OACpBh8J,EAAMjG,KAAMukK,EAAQrC,iBACpBj8J,EAAMjG,KAAMukK,EAAQ1G,YAEb53J,EAAM1F,MAEd,CAoNyBy+N,CAAoBz6D,GAE5C,GAAKw6D,IAAoBhC,EAAkBG,WAAa,MAIb5vN,IAArC2vN,EAAe8B,KAInB9B,EAAe8B,GAAoB,CAClCx6D,QAAS62D,EAAIvC,gBACblQ,UAAW,GAGZp3H,EAAK+lH,OAAO70C,WAKZq8D,GAAc,GAIf7B,EAAe8B,GAAkBpW,YAKjC,IAAM8R,EAAewC,EAAeF,EAAkBG,iBAEhC5vN,IAAjBmtN,IAEJwC,EAAeF,EAAkBG,YAAavU,YAEd,IAA3B8R,EAAa9R,WAEjBwU,EAAe54D,IAQjBw4D,EAAkBG,WAAa6B,EAC/BhC,EAAkBQ,eAAiBN,EAAe8B,GAAkBx6D,OAErE,CAEA,OAAOu6D,CAER,CAEA,SAAST,EAAetB,EAAmBx4D,EAAS25D,GAEnD,IAAIO,EAAcrD,EAAI03G,YAEjBvuK,EAAQU,oBAAsBV,EAAQwiN,4BAA2BtoJ,EAAcrD,EAAI0+N,kBACnFv1R,EAAQiB,kBAAkBi5D,EAAcrD,EAAIy+N,YAEjD,IAAM/6N,EAAcD,EAAa9B,EAAmBx4D,GAC9C7/J,EAAS6/J,EAAQ7/J,OAEvBoe,EAAMg2M,YAAa2F,EAAa1B,EAAkBQ,eAAgBnC,EAAIy3G,SAAW30G,GAEjF,IAAM8oJ,EAAmBn2W,EAAWoiB,IAAKvuB,GAEzC,GAAKA,EAAOnI,UAAYyqX,EAAiB5oJ,YAA6B,IAAhBU,EAAuB,CAE5Eh8M,EAAMg3M,cAAesB,EAAIy3G,SAAW30G,GAEpC,IAAM00N,EAAmBl1R,GAAgBurR,aAAcvrR,GAAgBE,mBACjEugS,EAAmB55R,EAAQ1G,aAAepL,GAAe,KAAOiL,GAAgBurR,aAAc1kR,EAAQ1G,YACtGugS,EAAmB75R,EAAQ1G,aAAepL,IAAgBmgS,IAAqBuL,EAAmB/iO,EAAIstF,KAAOttF,EAAIijO,sBAEvHjjO,EAAI8D,YAAa9D,EAAIkjO,oBAAqB/5R,EAAQtC,OAClDm5D,EAAI8D,YAAa9D,EAAImjO,+BAAgCh6R,EAAQvC,kBAC7Do5D,EAAI8D,YAAa9D,EAAIojO,iBAAkBj6R,EAAQrC,iBAC/Ck5D,EAAI8D,YAAa9D,EAAIqjO,mCAAoCL,GAEzD,IAYIj/N,EAZEnD,EAjoBR,SAAiCz3D,GAEhC,OAAKo1B,IAEIp1B,EAAQlD,QAAU7T,IAAuB+W,EAAQjD,QAAU9T,IACjE+W,EAAQ/C,YAAc9T,IAAiB6W,EAAQ/C,YAAczT,GAEjE,CA0nB0BqxE,CAAwB76D,KAAiD,IAApC43D,EAAgB53D,EAAQloB,OACjFA,EAAQ0/E,EAAax3D,EAAQloB,MAAO2/E,GAAiB,EAAOtiC,EAAasU,gBAGvEquB,EAAeF,EAFrB9/E,EAAQgjF,EAAkB96D,EAASloB,KAEas9C,EAC/C8iC,EAAWpB,EAAMv9D,QAASyG,EAAQ9C,OAAQ8C,EAAQ1G,YAE/C6+D,EAASrB,EAAMv9D,QAASyG,EAAQz8J,MACnCw3N,EAAmB/C,EAAmBh4D,EAAQ1C,eAAgB46D,EAAUC,EAAQn4D,EAAQ1G,WAAY0G,EAAQknD,gBAE7G+S,EAAsBC,EAAal6D,EAAS83D,GAG5C,IAAMz6D,EAAU2C,EAAQ3C,QAElB29D,EAAkB5lC,IAAuC,IAA3Bp1B,EAAQknD,gBAvmwBvB,QAumwBkD6T,EACjEE,OAAkDlyN,IAA/B05W,EAAiB5oJ,YAA+C,IAAhBU,EACnEsqN,EAAY1kb,EAAO0kb,UACnB1xa,EAASilN,EAAcp4D,EAASloB,EAAOggF,GAE7C,GAAK93D,EAAQk7D,eAIZH,EAAmBlE,EAAIsjO,gBAElB/kQ,EAIH2lC,EAFI/6D,EAAQz8J,OAAS4mJ,GAEF0sE,EAAIujO,mBAEZp6R,EAAQz8J,OAAS2mJ,GAET2sE,EAAIwjO,kBAEZr6R,EAAQz8J,OAASgnJ,GAETssE,EAAIyjO,iBAIJzjO,EAAI0jO,kBAMnBv6R,EAAQz8J,OAAS4mJ,IAErBz3I,QAAQwN,MAAO,gEAQZ8/I,EAAQ9C,SAAWrS,IAAekwE,IAAqBlE,EAAIsjO,iBAK1Dn6R,EAAQz8J,OAASymJ,IAAqBgW,EAAQz8J,OAAS2mJ,KAE3Dx3I,QAAQk/C,KAAM,+FAEdouG,EAAQz8J,KAAO2mJ,GACfiuE,EAASrB,EAAMv9D,QAASyG,EAAQz8J,OAM7By8J,EAAQ9C,SAAWpS,IAAsBiwE,IAAqBlE,EAAIsjO,kBAItEp/N,EAAmBlE,EAAI2jO,cAKlBx6R,EAAQz8J,OAASgnJ,KAErB73I,QAAQk/C,KAAM,oFAEdouG,EAAQz8J,KAAOgnJ,GACf4tE,EAASrB,EAAMv9D,QAASyG,EAAQz8J,QAQ7B03N,IAECD,EAEJz8M,EAAMg4M,aAAcM,EAAI03G,WAAY,EAAGxzG,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,QAI5EwR,EAAMk2M,WAAYoC,EAAI03G,WAAY,EAAGxzG,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ,EAAGmrN,EAAUC,EAAQ,YAMnG,GAAKn4D,EAAQ3D,cAMnB,GAAKgB,EAAQ9mK,OAAS,GAAKuhO,EAAe,CAEpCkD,GAAiBC,GAErB18M,EAAMg4M,aAAcM,EAAI03G,WAAYp7T,EAAQ4nN,EAAkB19D,EAAS,GAAIvwJ,MAAOuwJ,EAAS,GAAItwJ,QAIhG,IAAM,IAAI1R,EAAI,EAAGowD,EAAK4xG,EAAQ9mK,OAAQ8E,EAAIowD,EAAIpwD,IAE7Cu/N,EAASv9D,EAAShiK,GAEb2/N,EAEC6pN,GAEJtma,EAAMk4M,cAAeI,EAAI03G,WAAYlzU,EAAG,EAAG,EAAGu/N,EAAO9tN,MAAO8tN,EAAO7tN,OAAQmrN,EAAUC,EAAQyC,EAAOv4L,MAMrG9jB,EAAMk2M,WAAYoC,EAAI03G,WAAYlzU,EAAG0/N,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ,EAAGmrN,EAAUC,EAAQyC,EAAOv4L,MAMlH29H,EAAQxC,iBAAkB,CAE3B,MAEMw9D,GAECC,GAEJ18M,EAAMg4M,aAAcM,EAAI03G,WAAYp7T,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,QAI7E83a,GAEJtma,EAAMk4M,cAAeI,EAAI03G,WAAY,EAAG,EAAG,EAAGz2L,EAAMhrI,MAAOgrI,EAAM/qI,OAAQmrN,EAAUC,EAAQrgF,EAAMz1G,OAMlG9jB,EAAMk2M,WAAYoC,EAAI03G,WAAY,EAAGxzG,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ,EAAGmrN,EAAUC,EAAQrgF,EAAMz1G,WAMzG,GAAK29H,EAAQs4D,oBAEnB,GAAKt4D,EAAQwiN,yBAA2B,CAElCxnJ,GAAiBC,GAErB18M,EAAMi4M,aAAcK,EAAI0+N,iBAAkBpib,EAAQ4nN,EAAkB19D,EAAS,GAAIvwJ,MAAOuwJ,EAAS,GAAItwJ,OAAQ+qI,EAAM5qC,OAIpH,IAAM,IAAI7xG,EAAI,EAAGowD,EAAK4xG,EAAQ9mK,OAAQ8E,EAAIowD,EAAIpwD,IAE7Cu/N,EAASv9D,EAAShiK,GAEb2kK,EAAQ9C,SAAWxS,GAEL,OAAbwtE,EAEC8C,EAEC6pN,GAEJtma,EAAMm3N,wBAAyB7e,EAAI0+N,iBAAkBl6b,EAAG,EAAG,EAAG,EAAGu/N,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ+qI,EAAM5qC,MAAOgrH,EAAU0C,EAAOv4L,KAAM,EAAG,GAMtI9jB,EAAMyjW,qBAAsBnrJ,EAAI0+N,iBAAkBl6b,EAAG0/N,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ+qI,EAAM5qC,MAAO,EAAG0tH,EAAOv4L,KAAM,EAAG,GAMrI3vB,QAAQk/C,KAAM,kGAMVopK,EAEC6pN,GAEJtma,EAAMm4M,cAAeG,EAAI0+N,iBAAkBl6b,EAAG,EAAG,EAAG,EAAGu/N,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ+qI,EAAM5qC,MAAOgrH,EAAUC,EAAQyC,EAAOv4L,MAM3H9jB,EAAM+3M,WAAYO,EAAI0+N,iBAAkBl6b,EAAG0/N,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ+qI,EAAM5qC,MAAO,EAAGgrH,EAAUC,EAAQyC,EAAOv4L,KAQvI,KAAO,CAED24L,GAAiBC,GAErB18M,EAAMg4M,aAAcM,EAAI03G,WAAYp7T,EAAQ4nN,EAAkB19D,EAAS,GAAIvwJ,MAAOuwJ,EAAS,GAAItwJ,QAIhG,IAAM,IAAI1R,EAAI,EAAGowD,EAAK4xG,EAAQ9mK,OAAQ8E,EAAIowD,EAAIpwD,IAE7Cu/N,EAASv9D,EAAShiK,GAEb2kK,EAAQ9C,SAAWxS,GAEL,OAAbwtE,EAEC8C,EAEC6pN,GAEJtma,EAAMo4M,wBAAyBE,EAAI03G,WAAYlzU,EAAG,EAAG,EAAGu/N,EAAO9tN,MAAO8tN,EAAO7tN,OAAQmrN,EAAU0C,EAAOv4L,MAMvG9jB,EAAM83M,qBAAsBQ,EAAI03G,WAAYlzU,EAAG0/N,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ,EAAG6tN,EAAOv4L,MAMzG3vB,QAAQk/C,KAAM,kGAMVopK,EAEC6pN,GAEJtma,EAAMk4M,cAAeI,EAAI03G,WAAYlzU,EAAG,EAAG,EAAGu/N,EAAO9tN,MAAO8tN,EAAO7tN,OAAQmrN,EAAUC,EAAQyC,EAAOv4L,MAMrG9jB,EAAMk2M,WAAYoC,EAAI03G,WAAYlzU,EAAG0/N,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ,EAAGmrN,EAAUC,EAAQyC,EAAOv4L,KAQpH,MAEM,GAAK29H,EAAQU,mBAEds6D,GAECC,GAEJ18M,EAAMi4M,aAAcK,EAAI0+N,iBAAkBpib,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,OAIjG23U,GAEJtma,EAAMm4M,cAAeG,EAAI0+N,iBAAkB,EAAG,EAAG,EAAG,EAAGz9S,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,MAAOgrH,EAAUC,EAAQrgF,EAAMz1G,OAMxH9jB,EAAM+3M,WAAYO,EAAI0+N,iBAAkB,EAAGx6N,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,MAAO,EAAGgrH,EAAUC,EAAQrgF,EAAMz1G,WAI3H,GAAK29H,EAAQiB,gBAEd+5D,GAECC,GAEJ18M,EAAMi4M,aAAcK,EAAIy+N,WAAYnib,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,OAI3F23U,GAEJtma,EAAMm4M,cAAeG,EAAIy+N,WAAY,EAAG,EAAG,EAAG,EAAGx9S,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,MAAOgrH,EAAUC,EAAQrgF,EAAMz1G,OAMlH9jB,EAAM+3M,WAAYO,EAAIy+N,WAAY,EAAGv6N,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,OAAQ+qI,EAAM5qC,MAAO,EAAGgrH,EAAUC,EAAQrgF,EAAMz1G,WAIrH,GAAK29H,EAAQq4D,sBAEnB,GAAK4C,EAEJ,GAAKD,EAEJz8M,EAAMg4M,aAAcM,EAAI03G,WAAYp7T,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,aAMjF,IAFA,IAAID,EAAQgrI,EAAMhrI,MAAOC,EAAS+qI,EAAM/qI,OAE9B1R,EAAI,EAAGA,EAAI8X,EAAQ9X,IAE5BkjB,EAAMk2M,WAAYoC,EAAI03G,WAAYlzU,EAAG0/N,EAAkBjuN,EAAOC,EAAQ,EAAGmrN,EAAUC,EAAQ,MAE3FrrN,IAAU,EACVC,IAAW,OAgBd,GAAKswJ,EAAQ9mK,OAAS,GAAKuhO,EAAe,CAEpCkD,GAAiBC,GAErB18M,EAAMg4M,aAAcM,EAAI03G,WAAYp7T,EAAQ4nN,EAAkB19D,EAAS,GAAIvwJ,MAAOuwJ,EAAS,GAAItwJ,QAIhG,IAAM,IAAI1R,EAAI,EAAGowD,EAAK4xG,EAAQ9mK,OAAQ8E,EAAIowD,EAAIpwD,IAE7Cu/N,EAASv9D,EAAShiK,GAEb2/N,EAEC6pN,GAEJtma,EAAMk4M,cAAeI,EAAI03G,WAAYlzU,EAAG,EAAG,EAAG68N,EAAUC,EAAQyC,GAMjEr8M,EAAMk2M,WAAYoC,EAAI03G,WAAYlzU,EAAG0/N,EAAkB7C,EAAUC,EAAQyC,GAM3E56D,EAAQxC,iBAAkB,CAE3B,MAEMw9D,GAECC,GAEJ18M,EAAMg4M,aAAcM,EAAI03G,WAAYp7T,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,QAI7E83a,GAEJtma,EAAMk4M,cAAeI,EAAI03G,WAAY,EAAG,EAAG,EAAGr2G,EAAUC,EAAQrgF,IAMjEv5H,EAAMk2M,WAAYoC,EAAI03G,WAAY,EAAGxzG,EAAkB7C,EAAUC,EAAQrgF,GAQvE+/E,EAA6B73D,EAAS83D,IAE1CC,EAAgBmC,GAIjBuoJ,EAAiB5oJ,UAAY15N,EAAOnI,QAE/BgoK,EAAQnC,UAAWmC,EAAQnC,SAAUmC,EAE3C,CAEAw4D,EAAkBqB,UAAY75D,EAAQhoK,OAEvC,CAiPA,SAASmjO,EAAyBzF,EAAa1lC,EAAchwB,EAASo7D,EAAYC,EAAetoN,GAEhG,IAAMmlN,EAAWpB,EAAMv9D,QAASyG,EAAQ9C,OAAQ8C,EAAQ1G,YAClD6+D,EAASrB,EAAMv9D,QAASyG,EAAQz8J,MAChCw3N,EAAmB/C,EAAmBh4D,EAAQ1C,eAAgB46D,EAAUC,EAAQn4D,EAAQ1G,YAG9F,IAF+BhtJ,EAAWoiB,IAAKshK,GAEjBsrC,sBAAwB,CAErD,IAAMxuN,EAAQlR,KAAKC,IAAK,EAAGm0L,EAAaljL,OAASiG,GAC3ChG,EAASnR,KAAKC,IAAK,EAAGm0L,EAAajjL,QAAUgG,GAE9CsoN,IAAkBxE,EAAIy+N,YAAcj6N,IAAkBxE,EAAI0+N,iBAE9Dh3a,EAAM+3M,WAAY+E,EAAetoN,EAAOgoN,EAAkBjuN,EAAOC,EAAQijL,EAAa9iF,MAAO,EAAGgrH,EAAUC,EAAQ,MAIlH55M,EAAMk2M,WAAY4G,EAAetoN,EAAOgoN,EAAkBjuN,EAAOC,EAAQ,EAAGmrN,EAAUC,EAAQ,KAIhG,CAEA55M,EAAMk3M,gBAAiBoB,EAAI+3G,YAAal5G,GAEnC6F,EAAoBvrC,GAExBinC,EAAmBuE,mCAAoC3E,EAAI+3G,YAAaxzG,EAAYC,EAAe/uN,EAAWoiB,IAAKsxI,GAAUg5D,eAAgB,EAAGyC,EAAwBzrC,KAE7JqrC,IAAkBxE,EAAI03G,YAAgBlzG,GAAiBxE,EAAI4+N,6BAA+Bp6N,GAAiBxE,EAAI4jO,8BAE1H5jO,EAAI6E,qBAAsB7E,EAAI+3G,YAAaxzG,EAAYC,EAAe/uN,EAAWoiB,IAAKsxI,GAAUg5D,eAAgBjmN,GAIjHwL,EAAMk3M,gBAAiBoB,EAAI+3G,YAAa,KAEzC,CAIA,SAASjzG,EAA0BC,EAAc5rC,EAAc6rC,GAI9D,GAFAhF,EAAIiF,iBAAkBjF,EAAI6jO,aAAc9+N,GAEnC5rC,EAAa/vB,cAAiB+vB,EAAa9vB,cAAgB,CAE/D,IAAI66D,GAAkC,IAAb3lC,EAAsByhC,EAAIwjO,kBAAoBxjO,EAAI0jO,kBAE3E,GAAK1+N,GAAiBN,EAAoBvrC,GAAiB,CAE1D,IAAM7vB,EAAe6vB,EAAa7vB,aAE7BA,GAAgBA,EAAa+6D,iBAE5B/6D,EAAa58J,OAAS4mJ,GAE1B4wE,EAAmBlE,EAAIujO,mBAEZj6R,EAAa58J,OAAS2mJ,KAEjC6wE,EAAmBlE,EAAIwjO,oBAMzB,IAAMj6R,EAAUq7D,EAAwBzrC,GAEnCurC,EAAoBvrC,GAExBinC,EAAmB8E,kCAAmClF,EAAI6jO,aAAct6R,EAAS26D,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,QAIpI8pN,EAAImF,+BAAgCnF,EAAI6jO,aAAct6R,EAAS26D,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,OAIpH,MAEC8pN,EAAIoF,oBAAqBpF,EAAI6jO,aAAc3/N,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,QAI/F8pN,EAAIqF,wBAAyBrF,EAAI+3G,YAAa/3G,EAAI8jO,iBAAkB9jO,EAAI6jO,aAAc9+N,EAEvF,MAAO,GAAK5rC,EAAa/vB,aAAe+vB,EAAa9vB,cAAgB,CAEpE,IAAME,EAAUq7D,EAAwBzrC,GAEnC6rC,IAAwD,IAAvCN,EAAoBvrC,GAEzC6mC,EAAImF,+BAAgCnF,EAAI6jO,aAAct6R,EAASy2D,EAAIyjO,iBAAkBtqQ,EAAaljL,MAAOkjL,EAAajjL,QAE3GwuN,EAAoBvrC,GAE/BinC,EAAmB8E,kCAAmClF,EAAI6jO,aAAct6R,EAASy2D,EAAIyjO,iBAAkBtqQ,EAAaljL,MAAOkjL,EAAajjL,QAIxI8pN,EAAIoF,oBAAqBpF,EAAI6jO,aAAc7jO,EAAI2jO,cAAexqQ,EAAaljL,MAAOkjL,EAAajjL,QAKhG8pN,EAAIqF,wBAAyBrF,EAAI+3G,YAAa/3G,EAAI+jO,yBAA0B/jO,EAAI6jO,aAAc9+N,EAE/F,MAIC,IAFA,IAAM19D,GAAyD,IAA9C8xB,EAAavuB,6BAAwCuuB,EAAahwB,QAAU,CAAEgwB,EAAahwB,SAElG3kK,EAAI,EAAGA,EAAI6iK,EAAS3nK,OAAQ8E,IAAO,CAE5C,IAAM2kK,EAAU9B,EAAU7iK,GAEpB68N,EAAWpB,EAAMv9D,QAASyG,EAAQ9C,OAAQ8C,EAAQ1G,YAClD6+D,EAASrB,EAAMv9D,QAASyG,EAAQz8J,MAChCw3N,EAAmB/C,EAAmBh4D,EAAQ1C,eAAgB46D,EAAUC,EAAQn4D,EAAQ1G,YACxF8G,EAAUq7D,EAAwBzrC,GAEnC6rC,IAAwD,IAAvCN,EAAoBvrC,GAEzC6mC,EAAImF,+BAAgCnF,EAAI6jO,aAAct6R,EAAS26D,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,QAEvGwuN,EAAoBvrC,GAE/BinC,EAAmB8E,kCAAmClF,EAAI6jO,aAAct6R,EAAS26D,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,QAIpI8pN,EAAIoF,oBAAqBpF,EAAI6jO,aAAc3/N,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,OAIhG,CAID8pN,EAAIiF,iBAAkBjF,EAAI6jO,aAAc,KAEzC,CAiEA,SAASv+N,EAAwBnsC,GAEhC,IAAM+oC,EAAyBzsN,EAAWoiB,IAAKshK,GACzCosC,GAAoD,IAAzCpsC,EAAaE,wBAE9B,GAAKF,EAAa7vB,eAAkB44D,EAAuBsD,0BAA4B,CAEtF,GAAKD,EAAS,MAAM,IAAI3/N,MAAO,6DArEjC,SAA4Bi5N,EAAa1lC,GAGxC,GADiBA,GAAgBA,EAAaE,wBAChC,MAAM,IAAIzzL,MAAO,2DAI/B,GAFA8hB,EAAMk3M,gBAAiBoB,EAAI+3G,YAAal5G,IAE/B1lC,EAAa7vB,eAAgB6vB,EAAa7vB,aAAa+6D,eAE/D,MAAM,IAAIz+N,MAAO,uEAKX6P,EAAWoiB,IAAKshK,EAAa7vB,cAAe64D,gBACjDhpC,EAAa7vB,aAAaroB,MAAMhrI,QAAUkjL,EAAaljL,OACvDkjL,EAAa7vB,aAAaroB,MAAM/qI,SAAWijL,EAAajjL,SAEzDijL,EAAa7vB,aAAaroB,MAAMhrI,MAAQkjL,EAAaljL,MACrDkjL,EAAa7vB,aAAaroB,MAAM/qI,OAASijL,EAAajjL,OACtDijL,EAAa7vB,aAAalC,aAAc,GAIzCi7C,EAAclpB,EAAa7vB,aAAc,GAEzC,IAAMm8D,EAAoBhwN,EAAWoiB,IAAKshK,EAAa7vB,cAAe64D,eAChE54D,EAAUq7D,EAAwBzrC,GAExC,GAAKA,EAAa7vB,aAAajD,SAAWrS,GAEpC0wE,EAAoBvrC,GAExBinC,EAAmBuE,mCAAoC3E,EAAI+3G,YAAa/3G,EAAI8jO,iBAAkB9jO,EAAI03G,WAAYjyG,EAAmB,EAAGl8D,GAIpIy2D,EAAI6E,qBAAsB7E,EAAI+3G,YAAa/3G,EAAI8jO,iBAAkB9jO,EAAI03G,WAAYjyG,EAAmB,OAI/F,IAAKtsC,EAAa7vB,aAAajD,SAAWpS,GAchD,MAAM,IAAIruJ,MAAO,+BAZZ8+N,EAAoBvrC,GAExBinC,EAAmBuE,mCAAoC3E,EAAI+3G,YAAa/3G,EAAI+jO,yBAA0B/jO,EAAI03G,WAAYjyG,EAAmB,EAAGl8D,GAI5Iy2D,EAAI6E,qBAAsB7E,EAAI+3G,YAAa/3G,EAAI+jO,yBAA0B/jO,EAAI03G,WAAYjyG,EAAmB,EAQ9G,CAED,CAYEC,CAAmBxD,EAAuBG,mBAAoBlpC,EAE/D,MAEC,GAAKosC,EAAS,CAEbrD,EAAuBI,mBAAqB,GAE5C,IAAM,IAAI99N,EAAI,EAAGA,EAAI,EAAGA,IAEvBkjB,EAAMk3M,gBAAiBoB,EAAI+3G,YAAa71G,EAAuBG,mBAAoB79N,IACnF09N,EAAuBI,mBAAoB99N,GAAMw7N,EAAI2F,qBACrDb,EAA0B5C,EAAuBI,mBAAoB99N,GAAK20L,GAAc,EAI1F,MAECzxK,EAAMk3M,gBAAiBoB,EAAI+3G,YAAa71G,EAAuBG,oBAC/DH,EAAuBI,mBAAqBtC,EAAI2F,qBAChDb,EAA0B5C,EAAuBI,mBAAoBnpC,GAAc,GAMrFzxK,EAAMk3M,gBAAiBoB,EAAI+3G,YAAa,KAEzC,CAoZA,SAASnzG,EAAwBzrC,GAEhC,OAAOp0L,KAAKiuC,IAAKsrJ,EAAaiV,WAAYpa,EAAa5vB,QAExD,CAEA,SAASm7D,EAAoBvrC,GAE5B,IAAM+oC,EAAyBzsN,EAAWoiB,IAAKshK,GAE/C,OAAOoF,GAAYpF,EAAa5vB,QAAU,IAAkE,IAA7Dn1E,EAAWl+C,IAAK,0CAAqG,IAAhDgsL,EAAuB0D,oBAE5I,CAiBA,SAAS3B,EAAkB96D,EAASloB,GAEnC,IAAMwhB,EAAa0G,EAAQ1G,WACrB4D,EAAS8C,EAAQ9C,OACjB35J,EAAOy8J,EAAQz8J,KAErB,OAAqC,IAAhCy8J,EAAQs4D,sBAA2D,IAA3Bt4D,EAAQknD,gBAA2BlnD,EAAQ9C,SAAWlN,IAE9FsJ,IAAelL,IAAwBkL,IAAepL,KAIrDiL,GAAgBwrR,YAAarrR,KAAiB+pR,IAEhC,IAAbjuP,GAIkC,IAAjCnqG,EAAWl+C,IAAK,aAAyBmwH,IAAWxS,IAExDsV,EAAQ9C,OAASlN,GAIjBgQ,EAAQ/C,UAAYzT,GACpBwW,EAAQxC,iBAAkB,GAM1B1lB,EAAQ2jB,GAAWihE,aAAc5kF,GAQ7BolB,IAAWxS,IAAcnnJ,IAASsmJ,IAEtCn3I,QAAQk/C,KAAM,2FAQhBl/C,QAAQwN,MAAO,wDAAyDo5I,IA3C+CxhB,CAmD1H,CAIAn5I,KAAKk4M,oBA9sDL,WAEC,IAAM8lB,EAAcjD,EAUpB,OARKiD,GAAexnC,EAAaoU,aAEhC72L,QAAQk/C,KAAM,sCAAwC+qK,EAAc,+CAAiDxnC,EAAaoU,aAInImwB,GAAgB,EAETiD,CAER,EAisDAh+N,KAAKi+N,kBArtDL,WAEClD,EAAe,CAEhB,EAmtDA/6N,KAAKu6M,aAAeA,EACpBv6M,KAAK66M,kBA1oDL,SAA4Bx5C,EAAS25D,GAEpC,IAAMnB,EAAoBlsN,EAAWoiB,IAAKsxI,GAErCA,EAAQhoK,QAAU,GAAKwgO,EAAkBqB,YAAc75D,EAAQhoK,QAEnE8hO,EAAetB,EAAmBx4D,EAAS25D,GAK5Cp7M,EAAMg2M,YAAasC,EAAI0+N,iBAAkB/8N,EAAkBQ,eAAgBnC,EAAIy3G,SAAW30G,EAE3F,EA8nDAh7N,KAAKy6M,aA5nDL,SAAuBp5C,EAAS25D,GAE/B,IAAMnB,EAAoBlsN,EAAWoiB,IAAKsxI,GAErCA,EAAQhoK,QAAU,GAAKwgO,EAAkBqB,YAAc75D,EAAQhoK,QAEnE8hO,EAAetB,EAAmBx4D,EAAS25D,GAK5Cp7M,EAAMg2M,YAAasC,EAAIy+N,WAAY98N,EAAkBQ,eAAgBnC,EAAIy3G,SAAW30G,EAErF,EAgnDAh7N,KAAK26M,eA9mDL,SAAyBt5C,EAAS25D,GAEjC,IAAMnB,EAAoBlsN,EAAWoiB,IAAKsxI,GAErCA,EAAQhoK,QAAU,GAAKwgO,EAAkBqB,YAAc75D,EAAQhoK,QAmpBrE,SAA4BwgO,EAAmBx4D,EAAS25D,GAEvD,GAA8B,IAAzB35D,EAAQloB,MAAMvhJ,OAAe,OAElC,IAAMgkO,EAAcD,EAAa9B,EAAmBx4D,GAC9C7/J,EAAS6/J,EAAQ7/J,OAEvBoe,EAAMg2M,YAAasC,EAAI2+N,iBAAkBh9N,EAAkBQ,eAAgBnC,EAAIy3G,SAAW30G,GAE1F,IAAM8oJ,EAAmBn2W,EAAWoiB,IAAKvuB,GAEzC,GAAKA,EAAOnI,UAAYyqX,EAAiB5oJ,YAA6B,IAAhBU,EAAuB,CAE5Eh8M,EAAMg3M,cAAesB,EAAIy3G,SAAW30G,GAEpC,IAAM00N,EAAmBl1R,GAAgBurR,aAAcvrR,GAAgBE,mBACjEugS,EAAmB55R,EAAQ1G,aAAepL,GAAe,KAAOiL,GAAgBurR,aAAc1kR,EAAQ1G,YACtGugS,EAAmB75R,EAAQ1G,aAAepL,IAAgBmgS,IAAqBuL,EAAmB/iO,EAAIstF,KAAOttF,EAAIijO,sBAEvHjjO,EAAI8D,YAAa9D,EAAIkjO,oBAAqB/5R,EAAQtC,OAClDm5D,EAAI8D,YAAa9D,EAAImjO,+BAAgCh6R,EAAQvC,kBAC7Do5D,EAAI8D,YAAa9D,EAAIojO,iBAAkBj6R,EAAQrC,iBAC/Ck5D,EAAI8D,YAAa9D,EAAIqjO,mCAAoCL,GAOzD,IALA,IAAMh9N,EAAiB78D,EAAQs4D,qBAAuBt4D,EAAQloB,MAAO,GAAIwgF,oBACnEj8D,EAAkB2D,EAAQloB,MAAO,IAAOkoB,EAAQloB,MAAO,GAAIukB,cAE3DygE,EAAY,GAERzhO,EAAI,EAAGA,EAAI,EAAGA,IAQtByhO,EAAWzhO,GANLwhO,GAAkBxgE,EAMPA,EAAgB2D,EAAQloB,MAAOz8I,GAAIy8I,MAAQkoB,EAAQloB,MAAOz8I,GAJ1Dm8N,EAAax3D,EAAQloB,MAAOz8I,IAAK,GAAO,EAAM85L,EAAauU,gBAQ7EozB,EAAWzhO,GAAMy/N,EAAkB96D,EAAS88D,EAAWzhO,IAIxD,IAaIgiK,EAbEvlB,EAAQglF,EAAW,GACxBhF,EAAeF,EAAgB9/E,IAAWs9C,EAC1C8iC,EAAWpB,EAAMv9D,QAASyG,EAAQ9C,OAAQ8C,EAAQ1G,YAClD6+D,EAASrB,EAAMv9D,QAASyG,EAAQz8J,MAChCw3N,EAAmB/C,EAAmBh4D,EAAQ1C,eAAgB46D,EAAUC,EAAQn4D,EAAQ1G,YAEnF0hE,EAAkB5lC,IAAuC,IAA3Bp1B,EAAQknD,eACtC+T,OAAkDlyN,IAA/B05W,EAAiB5oJ,YAA+C,IAAhBU,EACnEsqN,EAAY1kb,EAAO0kb,UACrB1xa,EAASilN,EAAcp4D,EAASloB,EAAOggF,GAM3C,GAJAmC,EAAsBpD,EAAI2+N,iBAAkBx1R,EAAS83D,GAIhD+E,EAAe,CAEd7B,GAAiBC,GAErB18M,EAAMg4M,aAAcM,EAAI2+N,iBAAkBrib,EAAQ4nN,EAAkBjjF,EAAMhrI,MAAOgrI,EAAM/qI,QAIxF,IAAM,IAAI1R,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9BgiK,EAAUy/D,EAAWzhO,GAAIgiK,QAEzB,IAAM,IAAI7uJ,EAAI,EAAGA,EAAI6uJ,EAAQ9mK,OAAQiY,IAAO,CAE3C,IAAMosN,EAASv9D,EAAS7uJ,GAEnBwxJ,EAAQ9C,SAAWxS,GAEL,OAAbwtE,EAEC8C,EAEC6pN,GAEJtma,EAAMo4M,wBAAyBE,EAAI4+N,4BAA8Bp6b,EAAGmT,EAAG,EAAG,EAAGosN,EAAO9tN,MAAO8tN,EAAO7tN,OAAQmrN,EAAU0C,EAAOv4L,MAM5H9jB,EAAM83M,qBAAsBQ,EAAI4+N,4BAA8Bp6b,EAAGmT,EAAGusN,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ,EAAG6tN,EAAOv4L,MAM9H3vB,QAAQk/C,KAAM,mGAMVopK,EAEC6pN,GAEJtma,EAAMk4M,cAAeI,EAAI4+N,4BAA8Bp6b,EAAGmT,EAAG,EAAG,EAAGosN,EAAO9tN,MAAO8tN,EAAO7tN,OAAQmrN,EAAUC,EAAQyC,EAAOv4L,MAM1H9jB,EAAMk2M,WAAYoC,EAAI4+N,4BAA8Bp6b,EAAGmT,EAAGusN,EAAkBH,EAAO9tN,MAAO8tN,EAAO7tN,OAAQ,EAAGmrN,EAAUC,EAAQyC,EAAOv4L,KAMxI,CAED,CAED,KAAO,CAENg7H,EAAU2C,EAAQ3C,QAEb29D,GAAiBC,IAMhB59D,EAAQ9mK,OAAS,GAAI4c,IAE1BoL,EAAMg4M,aAAcM,EAAI2+N,iBAAkBrib,EAAQ4nN,EAAkB+B,EAAW,GAAIhwN,MAAOgwN,EAAW,GAAI/vN,SAI1G,IAAM,IAAI1R,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAKghK,EAAgB,CAEf2+D,EAEC6pN,GAEJtma,EAAMk4M,cAAeI,EAAI4+N,4BAA8Bp6b,EAAG,EAAG,EAAG,EAAGyhO,EAAWzhO,GAAIyR,MAAOgwN,EAAWzhO,GAAI0R,OAAQmrN,EAAUC,EAAQ2E,EAAWzhO,GAAIgnC,MAMlJ9jB,EAAMk2M,WAAYoC,EAAI4+N,4BAA8Bp6b,EAAG,EAAG0/N,EAAkB+B,EAAWzhO,GAAIyR,MAAOgwN,EAAWzhO,GAAI0R,OAAQ,EAAGmrN,EAAUC,EAAQ2E,EAAWzhO,GAAIgnC,MAI9J,IAAM,IAAI7zB,EAAI,EAAGA,EAAI6uJ,EAAQ9mK,OAAQiY,IAAO,CAE3C,IACMuuN,EADS1/D,EAAS7uJ,GACGspI,MAAOz8I,GAAIy8I,MAEjCkjF,EAEC6pN,GAEJtma,EAAMk4M,cAAeI,EAAI4+N,4BAA8Bp6b,EAAGmT,EAAI,EAAG,EAAG,EAAGuuN,EAAYjwN,MAAOiwN,EAAYhwN,OAAQmrN,EAAUC,EAAQ4E,EAAY16L,MAM7I9jB,EAAMk2M,WAAYoC,EAAI4+N,4BAA8Bp6b,EAAGmT,EAAI,EAAGusN,EAAkBgC,EAAYjwN,MAAOiwN,EAAYhwN,OAAQ,EAAGmrN,EAAUC,EAAQ4E,EAAY16L,KAI1J,CAED,KAAO,CAED24L,EAEC6pN,GAEJtma,EAAMk4M,cAAeI,EAAI4+N,4BAA8Bp6b,EAAG,EAAG,EAAG,EAAG68N,EAAUC,EAAQ2E,EAAWzhO,IAMjGkjB,EAAMk2M,WAAYoC,EAAI4+N,4BAA8Bp6b,EAAG,EAAG0/N,EAAkB7C,EAAUC,EAAQ2E,EAAWzhO,IAI1G,IAAM,IAAImT,EAAI,EAAGA,EAAI6uJ,EAAQ9mK,OAAQiY,IAAO,CAE3C,IAAMosN,EAASv9D,EAAS7uJ,GAEnBwsN,EAEC6pN,GAEJtma,EAAMk4M,cAAeI,EAAI4+N,4BAA8Bp6b,EAAGmT,EAAI,EAAG,EAAG,EAAG0pN,EAAUC,EAAQyC,EAAO9iF,MAAOz8I,IAMxGkjB,EAAMk2M,WAAYoC,EAAI4+N,4BAA8Bp6b,EAAGmT,EAAI,EAAGusN,EAAkB7C,EAAUC,EAAQyC,EAAO9iF,MAAOz8I,GAIlH,CAED,CAIF,CAEKw8N,EAA6B73D,EAAS83D,IAG1CC,EAAgBlB,EAAI2+N,kBAIrB/yE,EAAiB5oJ,UAAY15N,EAAOnI,QAE/BgoK,EAAQnC,UAAWmC,EAAQnC,SAAUmC,EAE3C,CAEAw4D,EAAkBqB,UAAY75D,EAAQhoK,OAEvC,CA33BEglO,CAAmBxE,EAAmBx4D,EAAS25D,GAKhDp7M,EAAMg2M,YAAasC,EAAI2+N,iBAAkBh9N,EAAkBQ,eAAgBnC,EAAIy3G,SAAW30G,EAE3F,EAkmDAh7N,KAAKs+N,eAlfL,SAAyBjtC,EAAcktC,EAAc/8D,GAEpD,IAAM44D,EAAyBzsN,EAAWoiB,IAAKshK,QAEzBjnL,IAAjBm0N,GAEJ/B,EAAyBpC,EAAuBG,mBAAoBlpC,EAAcA,EAAahwB,QAAS62D,EAAIg4G,kBAAmBh4G,EAAI03G,WAAY,QAI1HxlU,IAAjBo3J,GAEJg8D,EAAwBnsC,EAI1B,EAmeArxL,KAAKw+N,kBAheL,SAA4BntC,GAE3B,IAAMhwB,EAAUgwB,EAAahwB,QAEvB+4D,EAAyBzsN,EAAWoiB,IAAKshK,GACzCwoC,EAAoBlsN,EAAWoiB,IAAKsxI,GAE1CgwB,EAAaztL,iBAAkB,UAAWu2N,IAES,IAA9C9oC,EAAavuB,oCAEyB14J,IAArCyvN,EAAkBQ,iBAEtBR,EAAkBQ,eAAiBnC,EAAIvC,iBAIxCkE,EAAkBqB,UAAY75D,EAAQhoK,QACtCg1F,EAAK+lH,OAAO70C,YAIb,IAAMk+D,GAAoD,IAAzCpsC,EAAaE,wBACxBktC,GAA0E,IAA9CptC,EAAavuB,6BACzCq2D,EAAeF,EAAgB5nC,IAAkBoF,EAIvD,GAAKgnC,EAAS,CAEbrD,EAAuBG,mBAAqB,GAE5C,IAAM,IAAI79N,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAK+5L,GAAYp1B,EAAQ3C,SAAW2C,EAAQ3C,QAAQ9mK,OAAS,EAAI,CAEhEwiO,EAAuBG,mBAAoB79N,GAAM,GAEjD,IAAM,IAAI0X,EAAQ,EAAGA,EAAQitJ,EAAQ3C,QAAQ9mK,OAAQwc,IAEpDgmN,EAAuBG,mBAAoB79N,GAAK0X,GAAU8jN,EAAIwG,mBAIhE,MAECtE,EAAuBG,mBAAoB79N,GAAMw7N,EAAIwG,mBAMxD,KAAO,CAEN,GAAKjoC,GAAYp1B,EAAQ3C,SAAW2C,EAAQ3C,QAAQ9mK,OAAS,EAAI,CAEhEwiO,EAAuBG,mBAAqB,GAE5C,IAAM,IAAInmN,EAAQ,EAAGA,EAAQitJ,EAAQ3C,QAAQ9mK,OAAQwc,IAEpDgmN,EAAuBG,mBAAoBnmN,GAAU8jN,EAAIwG,mBAI3D,MAECtE,EAAuBG,mBAAqBrC,EAAIwG,oBAIjD,GAAKD,EAEJ,GAAKjoC,EAAatH,YAIjB,IAFA,IAAM3vB,EAAW8xB,EAAahwB,QAEpB3kK,EAAI,EAAGowD,EAAKyyG,EAAS3nK,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAErD,IAAMm+N,EAAuBltN,EAAWoiB,IAAKwvI,EAAU7iK,SAEV0N,IAAxCywN,EAAqBR,iBAEzBQ,EAAqBR,eAAiBnC,EAAIvC,gBAE1CtnI,EAAK+lH,OAAO70C,WAId,MAIAxrJ,QAAQk/C,KAAM,iHAMhB,GAAOwjI,GAAYpF,EAAa5vB,QAAU,IAA8C,IAAvCm7D,EAAoBvrC,GAA2B,CAE/F,IAAM9xB,EAAWk/D,EAA0Bp9D,EAAU,CAAEA,GAEvD+4D,EAAuBM,+BAAiCxC,EAAIwG,oBAC5DtE,EAAuBO,yBAA2B,GAElD/6M,EAAMk3M,gBAAiBoB,EAAI+3G,YAAa71G,EAAuBM,gCAE/D,IAAM,IAAIh+N,EAAI,EAAGA,EAAI6iK,EAAS3nK,OAAQ8E,IAAO,CAE5C,IAAM2kK,EAAU9B,EAAU7iK,GAC1B09N,EAAuBO,yBAA0Bj+N,GAAMw7N,EAAI2F,qBAE3D3F,EAAIiF,iBAAkBjF,EAAI6jO,aAAc3hO,EAAuBO,yBAA0Bj+N,IAEzF,IAAM68N,EAAWpB,EAAMv9D,QAASyG,EAAQ9C,OAAQ8C,EAAQ1G,YAClD6+D,EAASrB,EAAMv9D,QAASyG,EAAQz8J,MAChCw3N,EAAmB/C,EAAmBh4D,EAAQ1C,eAAgB46D,EAAUC,EAAQn4D,EAAQ1G,YAA8C,IAAlC02B,EAAai3B,kBACjH7mD,EAAUq7D,EAAwBzrC,GACxC6mC,EAAImF,+BAAgCnF,EAAI6jO,aAAct6R,EAAS26D,EAAkB/qC,EAAaljL,MAAOkjL,EAAajjL,QAElH8pN,EAAIqF,wBAAyBrF,EAAI+3G,YAAa/3G,EAAIg4G,kBAAoBxzU,EAAGw7N,EAAI6jO,aAAc3hO,EAAuBO,yBAA0Bj+N,GAE7I,CAEAw7N,EAAIiF,iBAAkBjF,EAAI6jO,aAAc,MAEnC1qQ,EAAa/vB,cAEjB84D,EAAuBQ,yBAA2B1C,EAAI2F,qBACtDb,EAA0B5C,EAAuBQ,yBAA0BvpC,GAAc,IAI1FzxK,EAAMk3M,gBAAiBoB,EAAI+3G,YAAa,KAEzC,CAED,CAIA,GAAKxyG,EAAS,CAEb79M,EAAMg2M,YAAasC,EAAI2+N,iBAAkBh9N,EAAkBQ,gBAC3DiB,EAAsBpD,EAAI2+N,iBAAkBx1R,EAAS83D,GAErD,IAAM,IAAIz8N,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAK+5L,GAAYp1B,EAAQ3C,SAAW2C,EAAQ3C,QAAQ9mK,OAAS,EAE5D,IAAM,IAAIwc,EAAQ,EAAGA,EAAQitJ,EAAQ3C,QAAQ9mK,OAAQwc,IAEpDooN,EAAyBpC,EAAuBG,mBAAoB79N,GAAK0X,GAASi9K,EAAchwB,EAAS62D,EAAIg4G,kBAAmBh4G,EAAI4+N,4BAA8Bp6b,EAAG0X,QAMtKooN,EAAyBpC,EAAuBG,mBAAoB79N,GAAK20L,EAAchwB,EAAS62D,EAAIg4G,kBAAmBh4G,EAAI4+N,4BAA8Bp6b,EAAG,GAMzJw8N,EAA6B73D,EAAS83D,IAE1CC,EAAgBlB,EAAI2+N,kBAIrBj3a,EAAM63M,eAEP,MAAO,GAAKgH,EAA0B,CAIrC,IAFA,IAAMl/D,EAAW8xB,EAAahwB,QAEpB3kK,EAAI,EAAGowD,EAAKyyG,EAAS3nK,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAErD,IAAM+/N,EAAal9D,EAAU7iK,GACvBm+N,EAAuBltN,EAAWoiB,IAAK0sM,GAE7C78M,EAAMg2M,YAAasC,EAAI03G,WAAY/0G,EAAqBR,gBACxDiB,EAAsBpD,EAAI03G,WAAYnzG,EAAYtD,GAClDqD,EAAyBpC,EAAuBG,mBAAoBlpC,EAAcorC,EAAYvE,EAAIg4G,kBAAoBxzU,EAAGw7N,EAAI03G,WAAY,GAEpI12G,EAA6BuD,EAAYtD,IAE7CC,EAAgBlB,EAAI03G,WAItB,CAEAhwT,EAAM63M,eAEP,KAAO,CAEN,IAAIkH,EAAgBzG,EAAI03G,WAmBxB,IAjBKv+I,EAAa3uB,uBAAyB2uB,EAAanvB,4BAElDu0B,EAEJkoC,EAAgBttC,EAAa3uB,sBAAwBw1D,EAAIy+N,WAAaz+N,EAAI0+N,iBAI1E7ib,QAAQwN,MAAO,oGAMjB3B,EAAMg2M,YAAa+I,EAAe9E,EAAkBQ,gBACpDiB,EAAsBqD,EAAet9D,EAAS83D,GAEzC1iC,GAAYp1B,EAAQ3C,SAAW2C,EAAQ3C,QAAQ9mK,OAAS,EAE5D,IAAM,IAAIwc,EAAQ,EAAGA,EAAQitJ,EAAQ3C,QAAQ9mK,OAAQwc,IAEpDooN,EAAyBpC,EAAuBG,mBAAoBnmN,GAASi9K,EAAchwB,EAAS62D,EAAIg4G,kBAAmBvxG,EAAevqN,QAM3IooN,EAAyBpC,EAAuBG,mBAAoBlpC,EAAchwB,EAAS62D,EAAIg4G,kBAAmBvxG,EAAe,GAI7HzF,EAA6B73D,EAAS83D,IAE1CC,EAAgBuF,GAIjB/+M,EAAM63M,eAEP,CAIKpmC,EAAa/vB,aAEjBk8D,EAAwBnsC,EAI1B,EAyOArxL,KAAK4+N,yBAvOL,SAAmCvtC,GAMlC,IAJA,IAAM8nC,EAAeF,EAAgB5nC,IAAkBoF,EAEjDl3B,GAAyD,IAA9C8xB,EAAavuB,6BAAwCuuB,EAAahwB,QAAU,CAAEgwB,EAAahwB,SAElG3kK,EAAI,EAAGowD,EAAKyyG,EAAS3nK,OAAQ8E,EAAIowD,EAAIpwD,IAAO,CAErD,IAAM2kK,EAAU9B,EAAU7iK,GAE1B,GAAKw8N,EAA6B73D,EAAS83D,GAAiB,CAE3D,IAAM53N,EAAS8vL,EAAaE,wBAA0B2mC,EAAI2+N,iBAAmB3+N,EAAI03G,WAC3Er4G,EAAe5pN,EAAWoiB,IAAKsxI,GAAUg5D,eAE/Cz6M,EAAMg2M,YAAar0N,EAAQg2N,GAC3B6B,EAAgB73N,GAChBqe,EAAM63M,eAEP,CAED,CAED,EAiNAz3N,KAAK6+N,8BA/ML,SAAwCxtC,GAEvC,GAAOoF,GAAYpF,EAAa5vB,QAAU,IAA8C,IAAvCm7D,EAAoBvrC,GAA2B,CAE/F,IAAM9xB,EAAW8xB,EAAavuB,6BAA+BuuB,EAAahwB,QAAU,CAAEgwB,EAAahwB,SAC7FlzJ,EAAQkjL,EAAaljL,MACrBC,EAASijL,EAAajjL,OACxBksH,EAAO49F,EAAIg8G,iBACTp1G,EAAoB,GACpBC,EAAa1tC,EAAa9vB,cAAgB22D,EAAI+jO,yBAA2B/jO,EAAI8jO,iBAC7E5hO,EAAyBzsN,EAAWoiB,IAAKshK,GACzCotC,GAA0E,IAA9CptC,EAAavuB,6BAG/C,GAAK27D,EAEJ,IAAM,IAAI/hO,EAAI,EAAGA,EAAI6iK,EAAS3nK,OAAQ8E,IAErCkjB,EAAMk3M,gBAAiBoB,EAAI+3G,YAAa71G,EAAuBM,gCAC/DxC,EAAIqF,wBAAyBrF,EAAI+3G,YAAa/3G,EAAIg4G,kBAAoBxzU,EAAGw7N,EAAI6jO,aAAc,MAE3Fn8a,EAAMk3M,gBAAiBoB,EAAI+3G,YAAa71G,EAAuBG,oBAC/DrC,EAAI6E,qBAAsB7E,EAAIogO,iBAAkBpgO,EAAIg4G,kBAAoBxzU,EAAGw7N,EAAI03G,WAAY,KAAM,GAMnGhwT,EAAMk3M,gBAAiBoB,EAAIwgO,iBAAkBt+N,EAAuBM,gCACpE96M,EAAMk3M,gBAAiBoB,EAAIogO,iBAAkBl+N,EAAuBG,oBAEpE,IAAM,IAAI79N,EAAI,EAAGA,EAAI6iK,EAAS3nK,OAAQ8E,IAAO,CAE5CoiO,EAAkBhiO,KAAMo7N,EAAIg4G,kBAAoBxzU,GAE3C20L,EAAa/vB,aAEjBw9D,EAAkBhiO,KAAMiiO,GAIzB,IAAMC,OAAqE50N,IAA/CgwN,EAAuB6E,qBAAsC7E,EAAuB6E,oBAsBhH,IApB2B,IAAtBD,IAEC3tC,EAAa/vB,cAAchnC,GAAQ49F,EAAIgkO,kBACvC7qQ,EAAa9vB,gBAAgBjnC,GAAQ49F,EAAIikO,qBAI1C19N,GAEJvG,EAAIqF,wBAAyBrF,EAAIwgO,iBAAkBxgO,EAAIg4G,kBAAmBh4G,EAAI6jO,aAAc3hO,EAAuBO,yBAA0Bj+N,KAInH,IAAtBsiO,IAEJ9G,EAAIgH,sBAAuBhH,EAAIwgO,iBAAkB,CAAE35N,IACnD7G,EAAIgH,sBAAuBhH,EAAIogO,iBAAkB,CAAEv5N,KAI/CN,EAA0B,CAE9B,IAAMlH,EAAe5pN,EAAWoiB,IAAKwvI,EAAU7iK,IAAM29N,eACrDnC,EAAI6E,qBAAsB7E,EAAIogO,iBAAkBpgO,EAAIg4G,kBAAmBh4G,EAAI03G,WAAYr4G,EAAc,EAEtG,CAEAW,EAAIiH,gBAAiB,EAAG,EAAGhxN,EAAOC,EAAQ,EAAG,EAAGD,EAAOC,EAAQksH,EAAM49F,EAAI43G,SAEpEv3G,GAEJL,EAAIgH,sBAAuBhH,EAAIwgO,iBAAkB55N,EAKnD,CAMA,GAJAl/M,EAAMk3M,gBAAiBoB,EAAIwgO,iBAAkB,MAC7C94a,EAAMk3M,gBAAiBoB,EAAIogO,iBAAkB,MAGxC75N,EAEJ,IAAM,IAAI/hO,EAAI,EAAGA,EAAI6iK,EAAS3nK,OAAQ8E,IAAO,CAE5CkjB,EAAMk3M,gBAAiBoB,EAAI+3G,YAAa71G,EAAuBM,gCAC/DxC,EAAIqF,wBAAyBrF,EAAI+3G,YAAa/3G,EAAIg4G,kBAAoBxzU,EAAGw7N,EAAI6jO,aAAc3hO,EAAuBO,yBAA0Bj+N,IAE5I,IAAM66N,EAAe5pN,EAAWoiB,IAAKwvI,EAAU7iK,IAAM29N,eAErDz6M,EAAMk3M,gBAAiBoB,EAAI+3G,YAAa71G,EAAuBG,oBAC/DrC,EAAI6E,qBAAsB7E,EAAIogO,iBAAkBpgO,EAAIg4G,kBAAoBxzU,EAAGw7N,EAAI03G,WAAYr4G,EAAc,EAE1G,CAID33M,EAAMk3M,gBAAiBoB,EAAIogO,iBAAkBl+N,EAAuBM,+BAErE,CAED,EAuGA16N,KAAKw9N,uBAAyBA,EAC9Bx9N,KAAKw8N,wBAA0BA,EAC/Bx8N,KAAK48N,mBAAqBA,CAE3B,CAEA,SAASwC,IAAYxyK,EAAI0/B,EAAYkqG,GAEpC,IAAMC,EAAWD,EAAaC,SAgR9B,MAAO,CAAE77B,QA9QT,SAAkB5zJ,GAA+B,IAE5Cs/L,EAFgB3rC,EAAU16J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAGsvJ,GAI3B8pO,EAAW7+N,GAAgBwrR,YAAarrR,GAE9C,GAAK3zJ,IAAMkkJ,GAAmB,OAAOt+F,EAAG2jR,cACxC,GA/gzB4B,OA+gzBvBvpU,EAA8B,OAAO4lD,EAAGotY,uBAC7C,GA/gzB4B,OA+gzBvBhzb,EAA8B,OAAO4lD,EAAGstY,uBAE7C,GAzhzBe,OAyhzBVlzb,EAAiB,OAAO4lD,EAAGknF,KAChC,GAzhzBgB,OAyhzBX9sI,EAAkB,OAAO4lD,EAAG4+X,MACjC,GAAKxkb,IAAMqkJ,GAAoB,OAAOz+F,EAAG6rU,eACzC,GAAKzxX,IAAMskJ,GAAU,OAAO1+F,EAAG8+X,IAC/B,GAAK1kb,IAAMukJ,GAAkB,OAAO3+F,EAAG6+X,aACvC,GAAKzkb,IAAMwkJ,GAAY,OAAO5+F,EAAG2iR,MAEjC,GAAKvoU,IAAMykJ,GAEV,OAAKgrC,EAAkB7pI,EAAG2+X,WAIP,QAFnBjlP,EAAYh6G,EAAWv8D,IAAK,2BAIpBu2K,EAAU+4B,eAIV,KAMT,GAxizBkB,OAwizBbr4N,EAAoB,OAAO4lD,EAAGwvY,MACnC,GAAKp1b,IAAM+kJ,GAAa,OAAOn/F,EAAG0jR,KAClC,GAxizBsB,OAwizBjBtpU,EAAwB,OAAO4lD,EAAGyvY,UACvC,GAxizB2B,OAwizBtBr1b,EAA6B,OAAO4lD,EAAG0vY,gBAC5C,GAAKt1b,IAAMklJ,GAAc,OAAOt/F,EAAG4uY,gBACnC,GAAKx0b,IAAMmlJ,GAAqB,OAAOv/F,EAAGivY,cAI1C,GAAK70b,IAAMqqJ,GAIV,OAAmB,QAFnBi1C,EAAYh6G,EAAWv8D,IAAK,aAIpBu2K,EAAUg5B,eAIV,KAQT,GA7jzBgB,OA6jzBXt4N,EAAkB,OAAO4lD,EAAGisY,IACjC,GA7jzBuB,OA6jzBlB7xb,EAAyB,OAAO4lD,EAAGqsY,YACxC,GA7jzBe,OA6jzBVjyb,EAAiB,OAAO4lD,EAAG4sY,GAChC,GA7jzBsB,OA6jzBjBxyb,EAAwB,OAAO4lD,EAAG2vY,WACvC,GA7jzBwB,OA6jzBnBv1b,EAA0B,OAAO4lD,EAAG4vY,aAIzC,GAAKx1b,IAAMylJ,IAAwBzlJ,IAAM0lJ,IAAyB1lJ,IAAM2lJ,IAAyB3lJ,IAAM4lJ,GAEtG,GAAKysO,IAAaqrD,GAAe,CAIhC,GAAmB,QAFnBp+O,EAAYh6G,EAAWv8D,IAAK,uCAW3B,OAAO,KAPP,GAAK/oB,IAAMylJ,GAAuB,OAAO65C,EAAUi5B,8BACnD,GAAKv4N,IAAM0lJ,GAAwB,OAAO45C,EAAUk5B,oCACpD,GAAKx4N,IAAM2lJ,GAAwB,OAAO25C,EAAUm5B,oCACpD,GAAKz4N,IAAM4lJ,GAAwB,OAAO05C,EAAUo5B,mCAQtD,KAAO,CAIN,GAAmB,QAFnBp5B,EAAYh6G,EAAWv8D,IAAK,kCAW3B,OAAO,KAPP,GAAK/oB,IAAMylJ,GAAuB,OAAO65C,EAAUq5B,6BACnD,GAAK34N,IAAM0lJ,GAAwB,OAAO45C,EAAUs5B,8BACpD,GAAK54N,IAAM2lJ,GAAwB,OAAO25C,EAAUu5B,8BACpD,GAAK74N,IAAM4lJ,GAAwB,OAAO05C,EAAUw5B,6BAQtD,CAMD,GArmzB8B,QAqmzBzB94N,GApmzByB,QAomzBQA,GAnmzBP,QAmmzBwCA,GAlmzBxC,QAkmzB0EA,EAAiC,CAIzI,GAAmB,QAFnBs/L,EAAYh6G,EAAWv8D,IAAK,mCAW3B,OAAO,KAPP,GA3mzB4B,QA2mzBvB/oB,EAAgC,OAAOs/L,EAAUy5B,gCACtD,GA3mzB4B,QA2mzBvB/4N,EAAgC,OAAOs/L,EAAU05B,gCACtD,GA3mzB6B,QA2mzBxBh5N,EAAiC,OAAOs/L,EAAU25B,iCACvD,GA3mzB6B,QA2mzBxBj5N,EAAiC,OAAOs/L,EAAU45B,gCAQzD,CAIA,GAtnzBsB,QAsnzBjBl5N,EAIJ,OAAmB,QAFnBs/L,EAAYh6G,EAAWv8D,IAAK,kCAIpBu2K,EAAU65B,0BAIV,KAQT,GAvozBsB,QAuozBjBn5N,GAtozBsB,QAsozBGA,EAA6B,CAI1D,GAAmB,QAFnBs/L,EAAYh6G,EAAWv8D,IAAK,iCAS3B,OAAO,KALP,GA7ozBoB,QA6ozBf/oB,EAAwB,OAASqyX,IAAaqrD,GAAiBp+O,EAAU85B,sBAAwB95B,EAAU+5B,qBAChH,GA7ozByB,QA6ozBpBr5N,EAA6B,OAASqyX,IAAaqrD,GAAiBp+O,EAAUg6B,iCAAmCh6B,EAAUi6B,yBAQlI,CAIA,GAxpzB2B,QAwpzBtBv5N,GAvpzBsB,QAupzBQA,GAtpzBR,QAspzBsCA,GArpzBtC,QAspzB1BA,GArpzB0B,QAqpzBIA,GAppzBJ,QAopzBkCA,GAnpzBlC,QAopzB1BA,GAnpzB0B,QAmpzBIA,GAlpzBH,QAkpzBiCA,GAjpzBjC,QAkpzB3BA,GAjpzB2B,QAipzBIA,GAhpzBH,QAgpzBkCA,GA/ozBlC,QAgpzB5BA,GA/ozB4B,QA+ozBIA,EAA+B,CAI/D,GAAmB,QAFnBs/L,EAAYh6G,EAAWv8D,IAAK,kCAqB3B,OAAO,KAjBP,GAlqzByB,QAkqzBpB/oB,EAA6B,OAASqyX,IAAaqrD,GAAiBp+O,EAAUk6B,qCAAuCl6B,EAAUm6B,6BACpI,GAlqzByB,QAkqzBpBz5N,EAA6B,OAASqyX,IAAaqrD,GAAiBp+O,EAAUo6B,qCAAuCp6B,EAAUq6B,6BACpI,GAlqzByB,QAkqzBpB35N,EAA6B,OAASqyX,IAAaqrD,GAAiBp+O,EAAUs6B,qCAAuCt6B,EAAUu6B,6BACpI,GAlqzByB,QAkqzBpB75N,EAA6B,OAASqyX,IAAaqrD,GAAiBp+O,EAAUw6B,qCAAuCx6B,EAAUy6B,6BACpI,GAlqzByB,QAkqzBpB/5N,EAA6B,OAASqyX,IAAaqrD,GAAiBp+O,EAAU06B,qCAAuC16B,EAAU26B,6BACpI,GAlqzByB,QAkqzBpBj6N,EAA6B,OAASqyX,IAAaqrD,GAAiBp+O,EAAU46B,qCAAuC56B,EAAU66B,6BACpI,GAlqzByB,QAkqzBpBn6N,EAA6B,OAASqyX,IAAaqrD,GAAiBp+O,EAAU86B,qCAAuC96B,EAAU+6B,6BACpI,GAlqzByB,QAkqzBpBr6N,EAA6B,OAASqyX,IAAaqrD,GAAiBp+O,EAAUg7B,qCAAuCh7B,EAAUi7B,6BACpI,GAlqzB0B,QAkqzBrBv6N,EAA8B,OAASqyX,IAAaqrD,GAAiBp+O,EAAUk7B,sCAAwCl7B,EAAUm7B,8BACtI,GAlqzB0B,QAkqzBrBz6N,EAA8B,OAASqyX,IAAaqrD,GAAiBp+O,EAAUo7B,sCAAwCp7B,EAAUq7B,8BACtI,GAlqzB0B,QAkqzBrB36N,EAA8B,OAASqyX,IAAaqrD,GAAiBp+O,EAAUs7B,sCAAwCt7B,EAAUu7B,8BACtI,GAlqzB2B,QAkqzBtB76N,EAA+B,OAASqyX,IAAaqrD,GAAiBp+O,EAAUw7B,uCAAyCx7B,EAAUy7B,+BACxI,GAlqzB2B,QAkqzBtB/6N,EAA+B,OAASqyX,IAAaqrD,GAAiBp+O,EAAU07B,uCAAyC17B,EAAU27B,+BACxI,GAlqzB2B,QAkqzBtBj7N,EAA+B,OAASqyX,IAAaqrD,GAAiBp+O,EAAU47B,uCAAyC57B,EAAU67B,8BAQ1I,CAIA,GAAKn7N,IAAMknJ,IA5qzBkB,QA4qzBElnJ,GA3qzBA,QA2qzBgCA,EAAiC,CAI/F,GAAmB,QAFnBs/L,EAAYh6G,EAAWv8D,IAAK,iCAU3B,OAAO,KANP,GAAK/oB,IAAMknJ,GAAmB,OAASmrO,IAAaqrD,GAAiBp+O,EAAU87B,qCAAuC97B,EAAU+7B,+BAChI,GAnrzB2B,QAmrzBtBr7N,EAA+B,OAAOs/L,EAAUm2P,qCACrD,GAnrzB6B,QAmrzBxBz1b,EAAiC,OAAOs/L,EAAUo2P,sCAQzD,CAIA,GA9rzBuB,QA8rzBlB11b,GA7rzByB,QA6rzBCA,GA5rzBF,QA4rzBmCA,GA3rzB5B,QA2rzB4DA,EAAsC,CAIrI,GAAmB,QAFnBs/L,EAAYh6G,EAAWv8D,IAAK,iCAW3B,OAAO,KAPP,GAAK/oB,IAAMknJ,GAAmB,OAAOo4C,EAAUq2P,yBAC/C,GApszB4B,QAoszBvB31b,EAAgC,OAAOs/L,EAAUs2P,gCACtD,GApszB2B,QAoszBtB51b,EAA+B,OAAOs/L,EAAUu2P,+BACrD,GApszBkC,QAoszB7B71b,EAAsC,OAAOs/L,EAAUw2P,qCAQ9D,CAIA,OAAK91b,IAAM4kJ,GAEL6qC,EAAkB7pI,EAAGmwY,kBAIP,QAFnBz2P,EAAYh6G,EAAWv8D,IAAK,wBAIpBu2K,EAAUg8B,wBAIV,UAQYl4N,IAAZwiD,EAAI5lD,GAAsB4lD,EAAI5lD,GAAM,IAE9C,EAID,CAAC,IAEKu7N,IAAW,SAAAC,GAAAxmN,EAAAumN,EAAAC,GAAA,IAAA8C,EAAA3qN,EAAA4nN,GAEhB,SAAAA,IAA0B,IAAAoD,EAAb5iO,EAAK9C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,GAMC,OANCwK,EAAA,KAAA83N,IAEtBoD,EAAAL,EAAAzoO,KAAA,OAEK+lO,eAAgB,EAErB+C,EAAKhD,QAAU5/N,EAAM4iO,CAEtB,CAAC,OAAAp8N,EAAAg5N,EAAA,CAVe,CAAS1yC,IAcpBgzC,IAAK,SAAAC,GAAA9mN,EAAA6mN,EAAAC,GAAA,IAAA4C,EAAA/qN,EAAAkoN,GAEV,SAAAA,IAAc,IAAA6U,EAMO,OANPjtO,EAAA,KAAAo4N,IAEb6U,EAAAhS,EAAA7oO,KAAA,OAEKomO,SAAU,EAEfyU,EAAK9yO,KAAO,QAAQ8yO,CAErB,CAAC,OAAAnuO,EAAAs5N,EAAA,CAVS,CAASrtD,IAcd0tD,IAAa,CAAEt+N,KAAM,QAErBu+N,IAAe,WAEpB,SAAAA,IAAc14N,EAAA,KAAA04N,GAEbnjO,KAAKojO,WAAa,KAClBpjO,KAAKqjO,MAAQ,KACbrjO,KAAKsjO,MAAQ,IAEd,CAoUC,OApUA/5N,EAAA45N,EAAA,EAAA3gO,IAAA,eAAA/D,MAED,WAaC,OAXoB,OAAfuB,KAAKsjO,QAETtjO,KAAKsjO,MAAQ,IAAIT,IACjB7iO,KAAKsjO,MAAM1kE,kBAAmB,EAC9B5+J,KAAKsjO,MAAM35J,SAAU,EAErB3pE,KAAKsjO,MAAMC,OAAS,CAAC,EACrBvjO,KAAKsjO,MAAME,WAAa,CAAEC,UAAU,IAI9BzjO,KAAKsjO,KAEb,GAAC,CAAA9gO,IAAA,oBAAA/D,MAED,WAcC,OAZyB,OAApBuB,KAAKojO,aAETpjO,KAAKojO,WAAa,IAAIP,IACtB7iO,KAAKojO,WAAWxkE,kBAAmB,EACnC5+J,KAAKojO,WAAWz5J,SAAU,EAC1B3pE,KAAKojO,WAAWM,mBAAoB,EACpC1jO,KAAKojO,WAAWO,eAAiB,IAAI78D,GACrC9mK,KAAKojO,WAAWQ,oBAAqB,EACrC5jO,KAAKojO,WAAWS,gBAAkB,IAAI/8D,IAIhC9mK,KAAKojO,UAEb,GAAC,CAAA5gO,IAAA,eAAA/D,MAED,WAcC,OAZoB,OAAfuB,KAAKqjO,QAETrjO,KAAKqjO,MAAQ,IAAIR,IACjB7iO,KAAKqjO,MAAMzkE,kBAAmB,EAC9B5+J,KAAKqjO,MAAM15J,SAAU,EACrB3pE,KAAKqjO,MAAMK,mBAAoB,EAC/B1jO,KAAKqjO,MAAMM,eAAiB,IAAI78D,GAChC9mK,KAAKqjO,MAAMO,oBAAqB,EAChC5jO,KAAKqjO,MAAMQ,gBAAkB,IAAI/8D,IAI3B9mK,KAAKqjO,KAEb,GAAC,CAAA7gO,IAAA,gBAAA/D,MAED,SAAe8pC,GAoBd,OAlByB,OAApBvoC,KAAKojO,YAETpjO,KAAKojO,WAAW7kM,cAAegK,GAIZ,OAAfvoC,KAAKqjO,OAETrjO,KAAKqjO,MAAM9kM,cAAegK,GAIP,OAAfvoC,KAAKsjO,OAETtjO,KAAKsjO,MAAM/kM,cAAegK,GAIpBvoC,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASqlO,GAER,GAAKA,GAAeA,EAAYO,KAAO,CAEtC,IAAMA,EAAOrkO,KAAKsjO,MAElB,GAAKe,EAAO,KAEwChyF,EAFxCC,EAAAxnE,EAEeg5J,EAAYO,KAAKt3N,UAAQ,IAAnD,IAAAulI,EAAA72I,MAAA42I,EAAAC,EAAAvrI,KAAAkb,MAAsD,KAA1CwiN,EAAUpyF,EAAA5zI,MAGrBuB,KAAKg9b,cAAe34N,EAAMI,EAE3B,CAAC,OAAA5rN,GAAAy5H,EAAAhsI,EAAAuS,EAAA,SAAAy5H,EAAA7rI,GAAA,CAEF,CAED,CAIA,OAFAzG,KAAKu+B,cAAe,CAAE35B,KAAM,YAAa8+B,KAAMogM,IAExC9jO,IAER,GAAC,CAAAwC,IAAA,aAAA/D,MAED,SAAYqlO,GAsBX,OApBA9jO,KAAKu+B,cAAe,CAAE35B,KAAM,eAAgB8+B,KAAMogM,IAEzB,OAApB9jO,KAAKojO,aAETpjO,KAAKojO,WAAWz5J,SAAU,GAIP,OAAf3pE,KAAKqjO,QAETrjO,KAAKqjO,MAAM15J,SAAU,GAIF,OAAf3pE,KAAKsjO,QAETtjO,KAAKsjO,MAAM35J,SAAU,GAIf3pE,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQqlO,EAAa1tC,EAAO2tC,GAE3B,IAAIC,EAAY,KACZC,EAAW,KACXC,EAAW,KAETC,EAAYnkO,KAAKojO,WACjBgB,EAAOpkO,KAAKqjO,MACZgB,EAAOrkO,KAAKsjO,MAElB,GAAKQ,GAAiD,oBAAlC1tC,EAAMqP,QAAQ6+B,gBAAwC,CAEzE,GAAKD,GAAQP,EAAYO,KAAO,CAE/BH,GAAW,EAAK,IAEmCvxF,EAFnCC,EAAA9nE,EAEUg5J,EAAYO,KAAKt3N,UAAQ,IAAnD,IAAA6lI,EAAAn3I,MAAAk3I,EAAAC,EAAA7rI,KAAAkb,MAAsD,KAA1CwiN,EAAU9xF,EAAAl0I,MAGfimO,EAAYtuC,EAAMuuC,aAAcF,EAAYV,GAG5Cc,EAAQ7kO,KAAKg9b,cAAe34N,EAAMI,GAErB,OAAdC,IAEJG,EAAMnrE,OAAOC,UAAW+qE,EAAUpsG,UAAUohC,QAC5CmrE,EAAMnrE,OAAO6c,UAAWsuD,EAAMtlK,SAAUslK,EAAMvrE,SAAUurE,EAAMxtF,OAC9DwtF,EAAM9uD,wBAAyB,EAC/B8uD,EAAMC,YAAcJ,EAAUx7D,QAI/B27D,EAAMl7J,QAAwB,OAAd+6J,CAEjB,CAIA,OAAA7rN,GAAA+5H,EAAAtsI,EAAAuS,EAAA,SAAA+5H,EAAAnsI,GAAA,CACA,IAAMs+N,EAAWV,EAAKd,OAAQ,oBACxByB,EAAWX,EAAKd,OAAQ,aACxB7sD,EAAWquD,EAASxlK,SAAS8tG,WAAY23D,EAASzlK,UAKnD8kK,EAAKb,WAAWC,UAAY/sD,EAAWuuD,MAE3CZ,EAAKb,WAAWC,UAAW,EAC3BzjO,KAAKu+B,cAAe,CACnB35B,KAAM,WACNsgO,WAAYpB,EAAYoB,WACxB3jO,OAAQvB,SAGIqkO,EAAKb,WAAWC,UAAY/sD,GAAYuuD,OAErDZ,EAAKb,WAAWC,UAAW,EAC3BzjO,KAAKu+B,cAAe,CACnB35B,KAAM,aACNsgO,WAAYpB,EAAYoB,WACxB3jO,OAAQvB,OAKX,MAEe,OAATokO,GAAiBN,EAAYqB,WAIf,QAFlBlB,EAAW7tC,EAAMmuC,QAAST,EAAYqB,UAAWpB,MAIhDK,EAAK1qE,OAAOC,UAAWsqE,EAAS3rG,UAAUohC,QAC1C0qE,EAAK1qE,OAAO6c,UAAW6tD,EAAK7kK,SAAU6kK,EAAK9qE,SAAU8qE,EAAK/sF,OAC1D+sF,EAAKruD,wBAAyB,EAEzBkuD,EAASN,gBAEbS,EAAKV,mBAAoB,EACzBU,EAAKT,eAAejoE,KAAMuoE,EAASN,iBAInCS,EAAKV,mBAAoB,EAIrBO,EAASJ,iBAEbO,EAAKR,oBAAqB,EAC1BQ,EAAKP,gBAAgBnoE,KAAMuoE,EAASJ,kBAIpCO,EAAKR,oBAAqB,GAUX,OAAdO,IAKe,QAHnBH,EAAY5tC,EAAMmuC,QAAST,EAAYU,eAAgBT,KAGf,OAAbE,IAE1BD,EAAYC,GAIM,OAAdD,IAEJG,EAAUzqE,OAAOC,UAAWqqE,EAAU1rG,UAAUohC,QAChDyqE,EAAUzqE,OAAO6c,UAAW4tD,EAAU5kK,SAAU4kK,EAAU7qE,SAAU6qE,EAAU9sF,OAC9E8sF,EAAUpuD,wBAAyB,EAE9BiuD,EAAUL,gBAEdQ,EAAUT,mBAAoB,EAC9BS,EAAUR,eAAejoE,KAAMsoE,EAAUL,iBAIzCQ,EAAUT,mBAAoB,EAI1BM,EAAUH,iBAEdM,EAAUP,oBAAqB,EAC/BO,EAAUN,gBAAgBnoE,KAAMsoE,EAAUH,kBAI1CM,EAAUP,oBAAqB,EAIhC5jO,KAAKu+B,cAAe2kM,MAOvB,CAoBA,OAlBmB,OAAdiB,IAEJA,EAAUx6J,QAA0B,OAAdq6J,GAIT,OAATI,IAEJA,EAAKz6J,QAAyB,OAAbs6J,GAIJ,OAATI,IAEJA,EAAK16J,QAAyB,OAAbu6J,GAIXlkO,IAER,GAEA,CAAAwC,IAAA,gBAAA/D,MAEA,SAAe4lO,EAAMI,GAEpB,QAA6Cr6N,IAAxCi6N,EAAKd,OAAQkB,EAAWG,WAA4B,CAExD,IAAMC,EAAQ,IAAIhC,IAClBgC,EAAMjmE,kBAAmB,EACzBimE,EAAMl7J,SAAU,EAChB06J,EAAKd,OAAQkB,EAAWG,WAAcC,EAEtCR,EAAKj4M,IAAKy4M,EAEX,CAEA,OAAOR,EAAKd,OAAQkB,EAAWG,UAEhC,KAACzB,CAAA,CA5UmB,GA4Wf85N,IAAiB,WAEtB,SAAAA,IAAcxyb,EAAA,KAAAwyb,GAEbj9b,KAAKqhK,QAAU,KACfrhK,KAAKqzL,KAAO,KAEZrzL,KAAK4pO,UAAY,EACjB5pO,KAAK6pO,SAAW,CAEjB,CAyDC,OAzDAtgO,EAAA0zb,EAAA,EAAAz6b,IAAA,OAAA/D,MAED,SAAMqzL,EAAUorQ,EAAWjvO,GAE1B,GAAsB,OAAjBjuN,KAAKqhK,QAAmB,CAE5B,IAAMA,EAAU,IAAItD,GAEH+zB,EAASnkL,WAAWoiB,IAAKsxI,GACjCg5D,eAAiB6iO,EAAU77R,QAE7B67R,EAAUtzN,WAAa3b,EAAY2b,WAAiBszN,EAAUrzN,UAAY5b,EAAY4b,WAE5F7pO,KAAK4pO,UAAYszN,EAAUtzN,UAC3B5pO,KAAK6pO,SAAWqzN,EAAUrzN,UAI3B7pO,KAAKqhK,QAAUA,CAEhB,CAED,GAAC,CAAA7+J,IAAA,SAAA/D,MAED,SAAQqzL,EAAUqrQ,GAEjB,GAAsB,OAAjBn9b,KAAKqhK,QAAmB,CAE5B,GAAmB,OAAdrhK,KAAKqzL,KAAgB,CAEzB,IAAMjyB,EAAW+7R,EAASx6N,QAAS,GAAIvhE,SACjCyX,EAAW,IAAI0V,GAAgB,CACpCjiG,WAAY,CAAE2iG,WAAW,GACzBL,aAvEqB,iEAwErBC,eAjEuB,+ZAkEvBT,SAAU,CACTgvQ,WAAY,CAAE3+b,MAAOuB,KAAKqhK,SAC1Bg8R,WAAY,CAAE5+b,MAAO2iK,EAAS95J,GAC9Bg2b,YAAa,CAAE7+b,MAAO2iK,EAASh6J,MAIjCpH,KAAKqzL,KAAO,IAAInI,GAAM,IAAIqM,GAAe,GAAI,IAAM1e,EAEpD,CAEAiZ,EAAStsL,OAAQxF,KAAKqzL,KAAM8pQ,EAE7B,CAED,GAAC,CAAA36b,IAAA,QAAA/D,MAED,WAECuB,KAAKqhK,QAAU,KACfrhK,KAAKqzL,KAAO,IAEb,KAAC4pQ,CAAA,CAnEqB,GAuEjBz3N,IAAY,SAAAC,GAAAzpN,EAAAwpN,EAAAC,GAAA,IAAA2R,EAAAz8N,EAAA6qN,GAEjB,SAAAA,EAAa1zC,EAAUllI,GAAK,IAAA2rL,EAAA9tO,EAAA,KAAA+6N,GAI3B,IAAMx4C,EAAKxxK,EAFX+8N,EAAAnB,EAAAv6O,KAAA,OAII4oM,EAAU,KAEVmgC,EAAyB,EAEzB7B,EAAiB,KACjB8B,EAAqB,cAErBsF,EAAY,EACZ44I,EAAuB,KAEvBj+I,EAAO,KACPC,EAAY,KACZC,EAAc,KACdC,EAAc,KACdC,EAAU,KAERq3N,EAAe,IAAIN,IACnB/qX,EAAatlB,EAAGu5K,uBAElBC,EAAsB,KACtBC,EAAkB,KAEhBC,EAAc,GACd09I,EAAyB,GAEzBw5E,EAAc,IAAIroS,GACpBsoS,EAAoB,KAIlBj3N,EAAU,IAAI32C,GACpB22C,EAAQ7xD,OAAOu0C,OAAQ,GACvBsd,EAAQplE,SAAW,IAAIxB,GAEvB,IAAM6mE,EAAU,IAAI52C,GACpB42C,EAAQ9xD,OAAOu0C,OAAQ,GACvBud,EAAQrlE,SAAW,IAAIxB,GAEvB,IAAM+iE,EAAU,CAAE6D,EAASC,GAErB02N,EAAW,IAAI56N,IACrB46N,EAASxoR,OAAOu0C,OAAQ,GACxBi0O,EAASxoR,OAAOu0C,OAAQ,GAExB,IAAIyd,EAAoB,KACpBC,EAAmB,KAwDvB,SAASC,EAAgBt+L,GAExB,IAAM07U,EAAkBD,EAAuBx3W,QAAS+7B,EAAMu7L,aAE9D,IAA2B,IAAtBmgJ,EAAL,CAMA,IAAMn9I,EAAaR,EAAa29I,QAEZ75W,IAAf08N,IAEJA,EAAWxjE,OAAQ/6H,EAAMu7L,YAAav7L,EAAM6tJ,MAAO2tL,GAAwBhgJ,GAC3E+C,EAAWvoM,cAAe,CAAE35B,KAAM2jC,EAAM3jC,KAAM8+B,KAAM6E,EAAMu7L,cAP3D,CAWD,CAEA,SAASiD,IAERthC,EAAQvtK,oBAAqB,SAAU2uM,GACvCphC,EAAQvtK,oBAAqB,cAAe2uM,GAC5CphC,EAAQvtK,oBAAqB,YAAa2uM,GAC1CphC,EAAQvtK,oBAAqB,UAAW2uM,GACxCphC,EAAQvtK,oBAAqB,eAAgB2uM,GAC7CphC,EAAQvtK,oBAAqB,aAAc2uM,GAC3CphC,EAAQvtK,oBAAqB,MAAO6uM,GACpCthC,EAAQvtK,oBAAqB,qBAAsB+uM,GAEnD,IAAM,IAAIvqO,EAAI,EAAGA,EAAI4pO,EAAY1uO,OAAQ8E,IAAO,CAE/C,IAAMonO,EAAckgJ,EAAwBtnX,GAEvB,OAAhBonO,IAELkgJ,EAAwBtnX,GAAM,KAE9B4pO,EAAa5pO,GAAI8pF,WAAYs9I,GAE9B,CAEA6C,EAAoB,KACpBC,EAAmB,KAEnB22N,EAAahjY,QAIbu3H,EAASW,gBAAiB2zC,GAE1BH,EAAc,KACdD,EAAc,KACdD,EAAY,KACZtgC,EAAU,KACV4gC,EAAkB,KAIlBl5L,EAAUshC,OAEVu+G,EAAMg6C,cAAe,EAErBl1C,EAAS+/C,cAAe4rN,GACxB3rQ,EAASggD,QAAS0rN,EAAYrvb,MAAOqvb,EAAYpvb,QAAQ,GAEzD4+K,EAAMzuJ,cAAe,CAAE35B,KAAM,cAE9B,CA8LA,SAASqiO,EAAsB1+L,GAI9B,IAAM,IAAI7rC,EAAI,EAAGA,EAAI6rC,EAAM4+L,QAAQvvO,OAAQ8E,IAAO,CAEjD,IAAMonO,EAAcv7L,EAAM4+L,QAASzqO,GAC7BkS,EAAQo1W,EAAuBx3W,QAASs3N,GAEzCl1N,GAAS,IAEbo1W,EAAwBp1W,GAAU,KAClC03N,EAAa13N,GAAQ43E,WAAYs9I,GAInC,CAIA,IAAM,IAAIpnO,EAAI,EAAGA,EAAI6rC,EAAM6+L,MAAMxvO,OAAQ8E,IAAO,CAE/C,IAAMonO,EAAcv7L,EAAM6+L,MAAO1qO,GAE7BunX,EAAkBD,EAAuBx3W,QAASs3N,GAEtD,IAA2B,IAAtBmgJ,EAA0B,CAI9B,IAAM,IAAIvnX,EAAI,EAAGA,EAAI4pO,EAAY1uO,OAAQ8E,IAAO,CAE/C,GAAKA,GAAKsnX,EAAuBpsX,OAAS,CAEzCosX,EAAuBlnX,KAAMgnO,GAC7BmgJ,EAAkBvnX,EAClB,KAED,CAAO,GAAqC,OAAhCsnX,EAAwBtnX,GAAe,CAElDsnX,EAAwBtnX,GAAMonO,EAC9BmgJ,EAAkBvnX,EAClB,KAED,CAED,CAIA,IAA2B,IAAtBunX,EAA0B,KAEhC,CAEA,IAAMn9I,EAAaR,EAAa29I,GAE3Bn9I,GAEJA,EAAWu5C,QAASv8C,EAItB,CAED,CAxXAyU,EAAKlR,kBAAmB,EACxBkR,EAAK1nD,SAAU,EAEf0nD,EAAKvR,cAAe,EAEpBuR,EAAKjR,cAAgB,SAAW14N,GAE/B,IAAIk4N,EAAaR,EAAa13N,GAS9B,YAPoBxE,IAAf08N,IAEJA,EAAa,IAAI3D,IACjBmD,EAAa13N,GAAUk4N,GAIjBA,EAAWS,mBAEnB,EAEAgR,EAAK/Q,kBAAoB,SAAW54N,GAEnC,IAAIk4N,EAAaR,EAAa13N,GAS9B,YAPoBxE,IAAf08N,IAEJA,EAAa,IAAI3D,IACjBmD,EAAa13N,GAAUk4N,GAIjBA,EAAWW,cAEnB,EAEA8Q,EAAK7Q,QAAU,SAAW94N,GAEzB,IAAIk4N,EAAaR,EAAa13N,GAS9B,YAPoBxE,IAAf08N,IAEJA,EAAa,IAAI3D,IACjBmD,EAAa13N,GAAUk4N,GAIjBA,EAAWa,cAEnB,EA4EA4Q,EAAK3Q,0BAA4B,SAAWnpO,GAE3CmnO,EAAyBnnO,GAEG,IAAvBuuL,EAAMg6C,cAEVjzN,QAAQk/C,KAAM,wEAIhB,EAEAslL,EAAK1Q,sBAAwB,SAAWppO,GAEvConO,EAAqBpnO,GAEO,IAAvBuuL,EAAMg6C,cAEVjzN,QAAQk/C,KAAM,2EAIhB,EAEAslL,EAAKzQ,kBAAoB,WAExB,OAAOi8I,GAAwBhgJ,CAEhC,EAEAwU,EAAK2rI,kBAAoB,SAAWC,GAEnCJ,EAAuBI,CAExB,EAEA5rI,EAAKxQ,aAAe,WAEnB,OAAuB,OAAhB/B,EAAuBA,EAAcC,CAE7C,EAEAsS,EAAKvQ,WAAa,WAEjB,OAAOjC,CAER,EAEAwS,EAAKtQ,SAAW,WAEf,OAAO/B,CAER,EAEAqS,EAAK7yC,WAAa,WAEjB,OAAOD,CAER,EAEA8yC,EAAKrQ,WAAU,eAAAl+N,EAAA6yE,GAAAC,EAAAA,MAAG,SAAAE,EAAiBv+E,GAAK,IAAA0pO,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAzrJ,EAAAA,MAAA,SAAAm/L,GAAA,cAAAA,EAAAh5Q,KAAAg5Q,EAAA/4Q,MAAA,OAEvB,GAEC,QAFjBuiM,EAAUhnM,GAEW,CAAAw9Q,EAAA/4Q,KAAA,SAWmD,GATvEkjO,EAAsBt0C,EAASI,kBAE/BuT,EAAQ7hM,iBAAkB,SAAUijO,GACpCphC,EAAQ7hM,iBAAkB,cAAeijO,GACzCphC,EAAQ7hM,iBAAkB,YAAaijO,GACvCphC,EAAQ7hM,iBAAkB,UAAWijO,GACrCphC,EAAQ7hM,iBAAkB,eAAgBijO,GAC1CphC,EAAQ7hM,iBAAkB,aAAcijO,GACxCphC,EAAQ7hM,iBAAkB,MAAOmjO,GACjCthC,EAAQ7hM,iBAAkB,qBAAsBqjO,IAEf,IAA5B/0J,EAAWu2J,aAAqB,CAAAwzC,EAAA/4Q,KAAA,gBAAA+4Q,EAAA/4Q,KAAA,GAE9B0pD,EAAG87K,mBAAkB,QAqFA,OAjF5B+0N,EAAoB3rQ,EAAS8/C,gBAC7B9/C,EAASzlB,QAASmxR,QAEoBpzb,IAA/Bq7L,EAAQwoB,YAAYt5C,SAA+D,IAAnCmd,EAAS0E,aAAaC,UAEtE0xC,EAAY,CACjBQ,eAA4Cv+N,IAA/Bq7L,EAAQwoB,YAAYt5C,QAAyBziG,EAAWy2J,UACrE5yE,OAAO,EACPxnD,MAAOr8B,EAAWq8B,MAClBglF,QAASrhH,EAAWqhH,QACpBqyC,uBAAwBA,GAGzBK,EAAc,IAAI2C,aAAcnjC,EAAS74I,EAAIu7K,GAE7C1iC,EAAQojC,kBAAmB,CAAEC,UAAW7C,IAExCn0C,EAAS+/C,cAAe,GACxB//C,EAASggD,QAAS7L,EAAY8C,iBAAkB9C,EAAY+C,mBAAmB,GAE/E3C,EAAkB,IAAIrlE,GACrBilE,EAAY8C,iBACZ9C,EAAY+C,kBACZ,CACCzqE,OAAQxS,GACRnnJ,KAAMsmJ,GACNyP,WAAYm3B,EAASohH,iBACrB3xI,cAAervF,EAAWqhH,YAMxB60C,EAAc,KACdC,EAAY,KACZC,EAAgB,KAEfp2J,EAAWq8B,QAEf+5H,EAAgBp2J,EAAWqhH,QAAU3mI,EAAG+uY,iBAAmB/uY,EAAG8uY,kBAC9DtzN,EAAcl2J,EAAWqhH,QAAUpnC,GAAqBD,GACxDm8E,EAAYn2J,EAAWqhH,QAAU3nC,GAAqBL,IAIjDg9E,EAAsB,CAC3BU,YAAar8K,EAAGmtY,MAChB3xN,YAAaE,EACbpc,YAAa0Z,GAGdG,EAAY,IAAImD,eAAgBzjC,EAAS74I,GAEzCo5K,EAAcD,EAAUoD,sBAAuBZ,GAE/C9iC,EAAQojC,kBAAmB,CAAEl0D,OAAQ,CAAEqxD,KAEvCl0C,EAAS+/C,cAAe,GACxB//C,EAASggD,QAAS9L,EAAYoD,aAAcpD,EAAYqD,eAAe,GAEvEhD,EAAkB,IAAIrlE,GACrBglE,EAAYoD,aACZpD,EAAYqD,cACZ,CACC9qE,OAAQxS,GACRnnJ,KAAMsmJ,GACNsW,aAAc,IAAI4jE,GAAcY,EAAYoD,aAAcpD,EAAYqD,cAAehB,OAAWj+N,OAAWA,OAAWA,OAAWA,OAAWA,OAAWA,EAAWg+N,GAClK7mE,cAAervF,EAAWqhH,QAC1B54B,WAAYm3B,EAASohH,iBACrBzxI,QAASvvF,EAAWy2J,UAAY,EAAI,IAGP72C,EAASnkL,WAAWoiB,IAAKs2M,GACjCpH,oBAAsB+G,EAAYhH,mBAI1DqH,EAAgB/d,kBAAmB,EAEnCtoN,KAAKspO,aAAc6B,GAEnB44I,EAAuB,KAAK9nG,EAAA/4Q,KAAA,GACLuiM,EAAQ8jC,sBAAuB1D,GAAoB,QAA1E9B,EAAck4C,EAAAh/L,KAEd9vC,EAAUmpJ,WAAYmP,GACtBt4J,EAAUrC,QAEVkiJ,EAAMg6C,cAAe,EAErBh6C,EAAMzuJ,cAAe,CAAE35B,KAAM,iBAAmB,yBAAAq3Q,EAAAxtM,OAAA,GAAAuO,EAAA,UAIjD,gBAAAwsJ,GAAA,OAAAx/N,EAAAlK,MAAA,KAAAG,UAAA,EApHc,GAsHfs4O,EAAKs1M,wBAA0B,WAE9B,GAAiB,OAAZpoP,EAEJ,OAAOA,EAAQE,oBAIjB,EAsEA,IAAM8jC,EAAa,IAAI3iE,GACjB4iE,EAAa,IAAI5iE,GA0DvB,SAAS6iE,EAAc/hE,EAAQ1qG,GAEd,OAAXA,EAEJ0qG,EAAOK,YAAYvM,KAAMkM,EAAOlO,QAIhCkO,EAAOK,YAAY3Q,iBAAkBp6F,EAAO+qG,YAAaL,EAAOlO,QAIjEkO,EAAOE,mBAAmBpM,KAAMkM,EAAOK,aAAcn4B,QAEtD,CAEAyoG,EAAK5O,aAAe,SAAW/hE,GAE9B,GAAiB,OAAZ69B,EAAL,CAE8B,OAAzB83P,EAAal8R,UAEjBuG,EAAOiM,KAAO0pR,EAAa3zN,UAC3BhiE,EAAOkM,IAAMypR,EAAa1zN,UAI3BszN,EAAStpR,KAAO4yD,EAAQ5yD,KAAO2yD,EAAQ3yD,KAAOjM,EAAOiM,KACrDspR,EAASrpR,IAAM2yD,EAAQ3yD,IAAM0yD,EAAQ1yD,IAAMlM,EAAOkM,IAE7C6yD,IAAsBw2N,EAAStpR,MAAQ+yD,IAAqBu2N,EAASrpR,MAIzE2xB,EAAQojC,kBAAmB,CAC1Be,UAAWuzN,EAAStpR,KACpBg2D,SAAUszN,EAASrpR,MAGpB6yD,EAAoBw2N,EAAStpR,KAC7B+yD,EAAmBu2N,EAASrpR,IAE5B0yD,EAAQ3yD,KAAO8yD,EACfH,EAAQ1yD,IAAM8yD,EACdH,EAAQ5yD,KAAO8yD,EACfF,EAAQ3yD,IAAM8yD,EAEdJ,EAAQn2C,yBACRo2C,EAAQp2C,yBACRzoB,EAAOyoB,0BAIR,IAAMnzH,EAAS0qG,EAAO1qG,OAChBylK,EAAUw6N,EAASx6N,QAEzBgH,EAAcwzN,EAAUjgY,GAExB,IAAM,IAAIxgE,EAAI,EAAGA,EAAIimO,EAAQ/qO,OAAQ8E,IAEpCitO,EAAchH,EAASjmO,GAAKwgE,GAML,IAAnBylK,EAAQ/qO,OApHd,SAAiCgwK,EAAQ4+D,EAASC,GAEjDgD,EAAW7yD,sBAAuB4vD,EAAQv+D,aAC1CyhE,EAAW9yD,sBAAuB6vD,EAAQx+D,aAE1C,IAAM6hE,EAAML,EAAWp8D,WAAYq8D,GAE7BK,EAAQvD,EAAQz+D,iBAAiB/hC,SACjCgkG,EAAQvD,EAAQ1+D,iBAAiB/hC,SAKjC6tC,EAAOk2D,EAAO,KAASA,EAAO,IAAO,GACrCj2D,EAAMi2D,EAAO,KAASA,EAAO,IAAO,GACpCE,GAAWF,EAAO,GAAM,GAAMA,EAAO,GACrCG,GAAcH,EAAO,GAAM,GAAMA,EAAO,GAExCI,GAAYJ,EAAO,GAAM,GAAMA,EAAO,GACtCK,GAAaJ,EAAO,GAAM,GAAMA,EAAO,GACvCh+L,EAAO6nI,EAAOs2D,EACd3qK,EAAQq0G,EAAOu2D,EAIfC,EAAUP,IAAUK,EAAUC,GAC9BE,EAAUD,GAAYF,EAG5B3D,EAAQv+D,YAAYsO,UAAW3O,EAAOroG,SAAUqoG,EAAOxE,WAAYwE,EAAOvwB,OAC1EuwB,EAAO2iE,WAAYD,GACnB1iE,EAAO4iE,WAAYH,GACnBziE,EAAOK,YAAYsJ,QAAS3J,EAAOroG,SAAUqoG,EAAOxE,WAAYwE,EAAOvwB,OACvEuwB,EAAOE,mBAAmBpM,KAAMkM,EAAOK,aAAcn4B,SAKrD,IAAM26F,EAAQ52D,EAAOw2D,EACfK,EAAO52D,EAAMu2D,EACbM,EAAQ3+L,EAAOs+L,EACfM,EAASprK,GAAUsqK,EAAMQ,GACzBO,EAAOZ,EAASn2D,EAAM42D,EAAOD,EAC7BK,EAAUZ,EAAYp2D,EAAM42D,EAAOD,EAEzC7iE,EAAOG,iBAAiBipB,gBAAiB25C,EAAOC,EAAQC,EAAMC,EAASL,EAAOC,GAC9E9iE,EAAOI,wBAAwBtM,KAAMkM,EAAOG,kBAAmBj4B,QAEhE,CAsEEi7F,CAAwBoyN,EAAU32N,EAASC,GAM3C02N,EAASp1R,iBAAiBrM,KAAM8qE,EAAQz+D,kBAU1C,SAA2BH,EAAQu1R,EAAUjgY,GAE5B,OAAXA,EAEJ0qG,EAAOlO,OAAOgC,KAAMyhS,EAASl1R,cAI7BL,EAAOlO,OAAOgC,KAAMx+F,EAAO+qG,aAC3BL,EAAOlO,OAAO5pB,SACd83B,EAAOlO,OAAO8c,SAAU2mR,EAASl1R,cAIlCL,EAAOlO,OAAO6c,UAAW3O,EAAOroG,SAAUqoG,EAAOxE,WAAYwE,EAAOvwB,OACpEuwB,EAAO2P,mBAAmB,GAE1B3P,EAAOG,iBAAiBrM,KAAMyhS,EAASp1R,kBACvCH,EAAOI,wBAAwBtM,KAAMyhS,EAASn1R,yBAEzCJ,EAAOqpB,sBAEXrpB,EAAOqoB,IAAgB,EAAVr+B,GAAc30J,KAAKwzL,KAAM,EAAI7oB,EAAOG,iBAAiB/hC,SAAU,IAC5E4hC,EAAO/yI,KAAO,EAIhB,CA/BC6oa,CAAkB91R,EAAQu1R,EAAUjgY,EA9DN,CAgE/B,EA+BAq7K,EAAKvN,UAAY,WAEhB,OAAOmyN,CAER,EAEA5kN,EAAKtN,aAAe,WAEnB,GAAqB,OAAhBjF,GAAwC,OAAhBC,EAM7B,OAAOkF,CAER,EAEAoN,EAAKjP,aAAe,SAAW7qO,GAK9B0sO,EAAY1sO,EAES,OAAhBunO,IAEJA,EAAYkF,eAAiBzsO,GAIT,OAAhBwnO,QAAuD77N,IAA/B67N,EAAYiF,iBAExCjF,EAAYiF,eAAiBzsO,EAI/B,EAEA85O,EAAKolN,gBAAkB,WAEtB,OAAgC,OAAzBJ,EAAal8R,OAErB,EAIA,IAAI+pE,EAA2B,KAyI/B,IAAMj+L,EAAY,IAAI4oJ,GAUQ,OAR9B5oJ,EAAUkpJ,kBAzIV,SAA2BpuJ,EAAMmuJ,GAKhC,GAHA0vC,EAAO1vC,EAAMi1C,cAAe04I,GAAwBhgJ,GACpDmC,EAAU9vC,EAEI,OAAT0vC,EAAgB,CAEpB,IAAMwF,EAAQxF,EAAKwF,MAEE,OAAhBrF,IAEJn0C,EAASy5C,2BAA4BlF,EAAiBJ,EAAYlP,aAClEjlC,EAASW,gBAAiB4zC,IAI3B,IAAIu3N,GAAsB,EAIrBtyN,EAAM1zO,SAAWulc,EAASx6N,QAAQ/qO,SAEtCulc,EAASx6N,QAAQ/qO,OAAS,EAC1Bgmc,GAAsB,GAIvB,IAAM,IAAIlhc,EAAI,EAAGA,EAAI4uO,EAAM1zO,OAAQ8E,IAAO,CAEzC,IAAM6kC,EAAO+pM,EAAO5uO,GAEhB0kK,EAAW,KAEf,GAAqB,OAAhB6kE,EAEJ7kE,EAAW6kE,EAAYlU,YAAaxwL,OAE9B,CAEN,IAAMkqM,EAAa1F,EAAU2F,gBAAiB1F,EAAazkM,GAC3D6/H,EAAWqqE,EAAWrqE,SAGX,IAAN1kK,IAEJo1L,EAAS65C,wBACRtF,EACAoF,EAAWlN,aACXyH,EAAYhH,uBAAoB50N,EAAYqhO,EAAWG,qBAExD95C,EAASW,gBAAiB4zC,GAI5B,CAEA,IAAIz+D,EAAS+6D,EAASjmO,QAEN0N,IAAXw9J,KAEJA,EAAS,IAAIioB,IACNlb,OAAOu0C,OAAQxsN,GACtBkrK,EAAOxG,SAAW,IAAIxB,GACtB+iE,EAASjmO,GAAMkrK,GAIhBA,EAAOlO,OAAOC,UAAWp4H,EAAK+2F,UAAUohC,QACxCkO,EAAOlO,OAAO6c,UAAW3O,EAAOroG,SAAUqoG,EAAOxE,WAAYwE,EAAOvwB,OACpEuwB,EAAOG,iBAAiBpO,UAAWp4H,EAAKwmI,kBACxCH,EAAOI,wBAAwBtM,KAAMkM,EAAOG,kBAAmBj4B,SAC/D83B,EAAOxG,SAASnyI,IAAKmyI,EAASllK,EAAGklK,EAAS/5J,EAAG+5J,EAASjzJ,MAAOizJ,EAAShzJ,QAE3D,IAAN1R,IAEJygc,EAASzjS,OAAOgC,KAAMkM,EAAOlO,QAC7ByjS,EAASzjS,OAAO6c,UAAW4mR,EAAS59X,SAAU49X,EAAS/5R,WAAY+5R,EAAS9lT,SAIhD,IAAxBumT,GAEJT,EAASx6N,QAAQ7lO,KAAM8qK,EAIzB,CAIA,IAAMi2R,EAAkBp4P,EAAQo4P,gBAEhC,GAAKA,GAAmBA,EAAgB3ua,SAAU,iBAAoB,CAErE,IAAMgua,EAAYn3N,EAAU+3N,oBAAqBxyN,EAAO,IAEnD4xN,GAAaA,EAAUp8D,SAAWo8D,EAAU77R,SAEhDk8R,EAAahpU,KAAMu9D,EAAUorQ,EAAWz3P,EAAQwoB,YAIlD,CAED,CAIA,IAAM,IAAIvxN,EAAI,EAAGA,EAAI4pO,EAAY1uO,OAAQ8E,IAAO,CAE/C,IAAMonO,EAAckgJ,EAAwBtnX,GACtCoqO,EAAaR,EAAa5pO,GAEX,OAAhBonO,QAAuC15N,IAAf08N,GAE5BA,EAAWxjE,OAAQwgE,EAAa1tC,EAAO2tL,GAAwBhgJ,EAIjE,CAEAw5N,EAAa/3b,OAAQssL,EAAUqrQ,GAE1B/xN,GAA2BA,EAA0BnjM,EAAMmuJ,GAE3DA,EAAM2nQ,gBAEV/wQ,EAAMzuJ,cAAe,CAAE35B,KAAM,iBAAkB8+B,KAAM0yJ,IAItD8vC,EAAU,IAEX,IAMAqS,EAAKliD,iBAAmB,SAAWl+I,GAElCizL,EAA2BjzL,CAE5B,EAEAogM,EAAK72E,QAAU,WAAa,EAAE62E,CAE/B,CAAC,OAAAhvO,EAAAi8N,EAAA,CAryBgB,CAASl0E,IAyyB3B,SAASu6E,IAAgB/5C,EAAUnkL,GAElC,SAASqwb,EAAyBzhc,EAAKwvM,IAER,IAAzBxvM,EAAIqiK,kBAERriK,EAAI85K,eAIL01B,EAAQttM,MAAMi9J,KAAMn/J,EAAIm9J,OAEzB,CAmGA,SAASoyE,EAAuB19C,EAAUvV,GAEzCuV,EAAS55J,QAAQ/1B,MAAQo6K,EAASrkJ,QAE7BqkJ,EAASrxI,OAEb4mJ,EAASoS,QAAQ/hM,MAAMi9J,KAAMmd,EAASrxI,OAIlCqxI,EAAS0F,UAEb6P,EAAS7P,SAAS9/K,MAAMi9J,KAAMmd,EAAS0F,UAAWhpB,eAAgBsjB,EAAS2F,mBAIvE3F,EAASt8K,MAEb6xL,EAAS7xL,IAAIkC,MAAQo6K,EAASt8K,IAE9Byhc,EAAyBnlR,EAASt8K,IAAK6xL,EAAS+9P,eAI5CtzQ,EAASuG,WAEbgP,EAAShP,SAAS3gL,MAAQo6K,EAASuG,SAEnC4+Q,EAAyBnlR,EAASuG,SAAUgP,EAASg+P,oBAIjDvzQ,EAAS4G,UAEb2O,EAAS3O,QAAQhhL,MAAQo6K,EAAS4G,QAElCu+Q,EAAyBnlR,EAAS4G,QAAS2O,EAASo+P,kBAEpDp+P,EAAS1O,UAAUjhL,MAAQo6K,EAAS6G,UAE/B7G,EAASgD,OAASz0B,KAEtBgnC,EAAS1O,UAAUjhL,QAAW,IAM3Bo6K,EAAS8G,YAEbyO,EAASzO,UAAUlhL,MAAQo6K,EAAS8G,UAEpCq+Q,EAAyBnlR,EAAS8G,UAAWyO,EAASq+P,oBAEtDr+P,EAASvO,YAAYphL,MAAMi9J,KAAMmd,EAASgH,aAErChH,EAASgD,OAASz0B,IAEtBgnC,EAASvO,YAAYphL,MAAMmoL,UAMxB/N,EAASiH,kBAEbsO,EAAStO,gBAAgBrhL,MAAQo6K,EAASiH,gBAE1Ck+Q,EAAyBnlR,EAASiH,gBAAiBsO,EAASs+P,0BAE5Dt+P,EAASrO,kBAAkBthL,MAAQo6K,EAASkH,kBAC5CqO,EAASpO,iBAAiBvhL,MAAQo6K,EAASmH,kBAIvCnH,EAASsH,cAEbiO,EAASjO,YAAY1hL,MAAQo6K,EAASsH,YAEtC69Q,EAAyBnlR,EAASsH,YAAaiO,EAASu+P,uBAIpD9zQ,EAASuH,cAEbgO,EAAShO,YAAY3hL,MAAQo6K,EAASuH,YAEtC49Q,EAAyBnlR,EAASuH,YAAagO,EAASi+P,uBAIpDxzQ,EAAS0I,UAAY,IAEzB6M,EAAS7M,UAAU9iL,MAAQo6K,EAAS0I,WAIrC,IAAMhB,EAAS5yK,EAAWoiB,IAAK8oJ,GAAW0H,OAc1C,GAZKA,IAEJ6N,EAAS7N,OAAO9hL,MAAQ8hL,EAExB6N,EAASyS,WAAWpiM,MAAU8hL,EAAOuS,gBAAkD,IAAjCvS,EAAOphB,uBAAsC,EAAI,EAEvGivB,EAAS1N,aAAajiL,MAAQo6K,EAAS6H,aACvC0N,EAAS0S,IAAIriM,MAAQo6K,EAASioB,IAC9B1S,EAASzN,gBAAgBliL,MAAQo6K,EAAS8H,iBAItC9H,EAASwG,SAAW,CAExB+O,EAAS/O,SAAS5gL,MAAQo6K,EAASwG,SAGnC,IAAM6sC,GAA8C,IAA9Bp6B,EAASsjQ,iBAA8Bn4b,KAAK00J,GAAK,EAEvEy8B,EAAS9O,kBAAkB7gL,MAAQo6K,EAASyG,kBAAoB4sC,EAEhE8xO,EAAyBnlR,EAASwG,SAAU+O,EAASm+P,kBAEtD,CAEK1zQ,EAAS0G,QAEb6O,EAAS7O,MAAM9gL,MAAQo6K,EAAS0G,MAChC6O,EAAS5O,eAAe/gL,MAAQo6K,EAAS2G,eAEzCw+Q,EAAyBnlR,EAAS0G,MAAO6O,EAASk+P,gBAIpD,CAwTA,MAAO,CACNrgN,mBA/hBD,SAA6B79C,EAAUzS,GAEtCA,EAAIn0I,MAAMomZ,OAAQx/P,EAASuT,SAASljM,MAAOisb,GAA2B54P,IAEjEnW,EAAIuwD,OAER99C,EAASqT,QAAQhjM,MAAQk9K,EAAI9H,KAC7Bua,EAASsT,OAAOjjM,MAAQk9K,EAAI7H,KAEjB6H,EAAI6sC,YAEfp6B,EAASoT,WAAW/iM,MAAQk9K,EAAIwwD,QAIlC,EAihBCC,wBA/gBD,SAAkCh+C,EAAUvV,EAAUt/B,EAAYnrI,EAAQi+N,GAEpExzD,EAASwJ,qBAIFxJ,EAASyzD,sBAFpBR,EAAuB19C,EAAUvV,GAMtBA,EAAS0zD,oBAEpBT,EAAuB19C,EAAUvV,GAsSnC,SAA8BuV,EAAUvV,GAElCA,EAAS+H,cAEbwN,EAASxN,YAAYniL,MAAQo6K,EAAS+H,YAIxC,CA7SE4rD,CAAqBp+C,EAAUvV,IAEpBA,EAAS4zD,qBAEpBX,EAAuB19C,EAAUvV,GA0RnC,SAA+BuV,EAAUvV,GAExCuV,EAAS3P,SAAShgL,MAAMi9J,KAAMmd,EAAS4F,UACvC2P,EAASxP,UAAUngL,MAAQxB,KAAKC,IAAK27K,EAAS+F,UAAW,KAE1D,CA9RE8tD,CAAsBt+C,EAAUvV,IAErBA,EAAS8uC,wBAEpBmkB,EAAuB19C,EAAUvV,GAsSnC,SAAkCuV,EAAUvV,GAE3CuV,EAASjQ,UAAU1/K,MAAQo6K,EAASsF,UAE/BtF,EAASqH,eAEbkO,EAASlO,aAAazhL,MAAQo6K,EAASqH,aAEvC89Q,EAAyBnlR,EAASqH,aAAckO,EAASw+P,wBAI1Dx+P,EAASlQ,UAAUz/K,MAAQo6K,EAASqF,UAE/BrF,EAASoH,eAEbmO,EAASnO,aAAaxhL,MAAQo6K,EAASoH,aAEvC+9Q,EAAyBnlR,EAASoH,aAAcmO,EAASy+P,wBAI1D,IAAMtsQ,EAAS5yK,EAAWoiB,IAAK8oJ,GAAW0H,OAErCA,IAGJ6N,EAAS3N,gBAAgBhiL,MAAQo6K,EAAS4H,gBAI5C,CApUEksD,CAAyBv+C,EAAUvV,GAE9BA,EAAS+zD,wBAoUhB,SAAkCx+C,EAAUvV,EAAUwzD,GAErDj+C,EAAS0S,IAAIriM,MAAQo6K,EAASioB,IAEzBjoB,EAASuF,MAAQ,IAErBgQ,EAAS/P,WAAW5/K,MAAMi9J,KAAMmd,EAASwF,YAAa9oB,eAAgBsjB,EAASuF,OAE/EgQ,EAAS9P,eAAe7/K,MAAQo6K,EAASyF,eAEpCzF,EAAS20B,gBAEbpf,EAASof,cAAc/uM,MAAQo6K,EAAS20B,cAExCwwP,EAAyBnlR,EAAS20B,cAAepf,EAASg/P,yBAItDv0Q,EAAS40B,oBAEbrf,EAASqf,kBAAkBhvM,MAAQo6K,EAAS40B,kBAE5CuwP,EAAyBnlR,EAAS40B,kBAAmBrf,EAASi/P,8BAM3Dx0Q,EAASgG,UAAY,IAEzBuP,EAASvP,UAAUpgL,MAAQo6K,EAASgG,UACpCuP,EAAStP,mBAAmBrgL,MAAQo6K,EAASiG,mBAExCjG,EAASkG,eAEbqP,EAASrP,aAAatgL,MAAQo6K,EAASkG,aAEvCi/Q,EAAyBnlR,EAASkG,aAAcqP,EAAS2+P,wBAIrDl0Q,EAASmG,wBAEboP,EAASpP,sBAAsBvgL,MAAQo6K,EAASmG,sBAEhDg/Q,EAAyBnlR,EAASmG,sBAAuBoP,EAAS6+P,iCAI9Dp0Q,EAASoG,qBAEbmP,EAASnP,mBAAmBxgL,MAAQo6K,EAASoG,mBAE7C++Q,EAAyBnlR,EAASoG,mBAAoBmP,EAAS4+P,6BAE/D5+P,EAASlP,qBAAqBzgL,MAAMi9J,KAAMmd,EAASqG,sBAE9CrG,EAASgD,OAASz0B,IAEtBgnC,EAASlP,qBAAqBzgL,MAAMmoL,WAQlC/N,EAASgoM,YAAc,IAE3BzyL,EAASyyL,YAAYpiX,MAAQo6K,EAASgoM,YACtCzyL,EAAS0yL,eAAeriX,MAAQo6K,EAASioM,eACzC1yL,EAAS4zL,4BAA4BvjX,MAAQo6K,EAASkoM,0BAA2B,GACjF3yL,EAAS6zL,4BAA4BxjX,MAAQo6K,EAASkoM,0BAA2B,GAE5EloM,EAASmoM,iBAEb5yL,EAAS4yL,eAAeviX,MAAQo6K,EAASmoM,eAEzCg9E,EAAyBnlR,EAASmoM,eAAgB5yL,EAAS8+P,0BAIvDr0Q,EAASooM,0BAEb7yL,EAAS6yL,wBAAwBxiX,MAAQo6K,EAASooM,wBAElD+8E,EAAyBnlR,EAASooM,wBAAyB7yL,EAAS++P,oCAMjEt0Q,EAASgI,aAAe,IAE5BuN,EAASvN,aAAapiL,MAAQo6K,EAASgI,aACvCuN,EAASuf,uBAAuBlvM,MAAQ4tO,EAAyBhrE,QACjE+sB,EAASsf,wBAAwBjvM,MAAMwwB,IAAKo9M,EAAyBl+N,MAAOk+N,EAAyBj+N,QAEhGyqK,EAASiI,kBAEbsN,EAAStN,gBAAgBriL,MAAQo6K,EAASiI,gBAE1Ck9Q,EAAyBnlR,EAASiI,gBAAiBsN,EAASk/P,2BAI7Dl/P,EAASrN,UAAUtiL,MAAQo6K,EAASkI,UAE/BlI,EAASmI,eAEboN,EAASpN,aAAaviL,MAAQo6K,EAASmI,aAEvCg9Q,EAAyBnlR,EAASmI,aAAcoN,EAASm/P,wBAI1Dn/P,EAASnN,oBAAoBxiL,MAAQo6K,EAASoI,oBAC9CmN,EAASlN,iBAAiBziL,MAAMi9J,KAAMmd,EAASqI,mBAI3CrI,EAASra,WAAa,IAE1B4vB,EAASs/P,iBAAiBjvb,MAAMwwB,IAAK4pJ,EAASra,WAAavhK,KAAKk3J,IAAK0kB,EAAS2wQ,oBAAsB3wQ,EAASra,WAAavhK,KAAKm3J,IAAKykB,EAAS2wQ,qBAExI3wQ,EAAS4wQ,gBAEbr7P,EAASq7P,cAAchrb,MAAQo6K,EAAS4wQ,cAExCuU,EAAyBnlR,EAAS4wQ,cAAer7P,EAASu/P,0BAM5Dv/P,EAAS1P,kBAAkBjgL,MAAQo6K,EAAS6F,kBAC5C0P,EAASzP,cAAclgL,MAAMi9J,KAAMmd,EAAS8F,eAEvC9F,EAASyH,mBAEb8N,EAAS9N,iBAAiB7hL,MAAQo6K,EAASyH,iBAE3C09Q,EAAyBnlR,EAASyH,iBAAkB8N,EAASo/P,4BAIzD30Q,EAASwH,uBAEb+N,EAAS/N,qBAAqB5hL,MAAQo6K,EAASwH,qBAE/C29Q,EAAyBnlR,EAASwH,qBAAsB+N,EAASq/P,+BAInE,CA5dG5gN,CAAyBz+C,EAAUvV,EAAUwzD,IAInCxzD,EAASi0D,sBAEpBhB,EAAuB19C,EAAUvV,GAwdnC,SAAgCuV,EAAUvV,GAEpCA,EAASsG,SAEbiP,EAASjP,OAAO1gL,MAAQo6K,EAASsG,OAInC,CA/dE4tD,CAAuB3+C,EAAUvV,IAEtBA,EAASw1C,oBAEpByd,EAAuB19C,EAAUvV,GAEtBA,EAAS41C,wBAEpBqd,EAAuB19C,EAAUvV,GAydnC,SAAkCuV,EAAUvV,GAE3C,IAAM3nG,EAAQvjE,EAAWoiB,IAAK8oJ,GAAW3nG,MAEzCk9G,EAASiW,kBAAkB5lM,MAAMm4K,sBAAuB1lG,EAAM+2F,aAC9DmmB,EAASkW,aAAa7lM,MAAQyyE,EAAMuyE,OAAOmkB,OAAOiM,KAClDua,EAASmW,YAAY9lM,MAAQyyE,EAAMuyE,OAAOmkB,OAAOkM,GAElD,CAheEk5D,CAAyB5+C,EAAUvV,IAExBA,EAASo0D,qBAEpBnB,EAAuB19C,EAAUvV,GAEtBA,EAASq0D,qBAsKtB,SAA8B9+C,EAAUvV,GAEvCuV,EAASoS,QAAQ/hM,MAAMi9J,KAAMmd,EAASrxI,OACtC4mJ,EAAS55J,QAAQ/1B,MAAQo6K,EAASrkJ,QAE7BqkJ,EAASt8K,MAEb6xL,EAAS7xL,IAAIkC,MAAQo6K,EAASt8K,IAE9Byhc,EAAyBnlR,EAASt8K,IAAK6xL,EAAS+9P,cAIlD,CAjLEh/M,CAAqB/+C,EAAUvV,GAE1BA,EAASu0D,sBAiLhB,SAA8Bh/C,EAAUvV,GAEvCuV,EAAS/M,SAAS5iL,MAAQo6K,EAASwI,SACnC+M,EAAS4V,UAAUvlM,MAAQo6K,EAASwI,SAAWxI,EAASyI,QACxD8M,EAAS/2C,MAAM54I,MAAQo6K,EAASxhC,KAEjC,CArLGg2F,CAAqBj/C,EAAUvV,IAIrBA,EAASy0D,iBAmLtB,SAAgCl/C,EAAUvV,EAAUt/B,EAAYnrI,GAE/DggL,EAASoS,QAAQ/hM,MAAMi9J,KAAMmd,EAASrxI,OACtC4mJ,EAAS55J,QAAQ/1B,MAAQo6K,EAASrkJ,QAClC45J,EAAS7oI,KAAK9mD,MAAQo6K,EAAStzH,KAAOg0F,EACtC60C,EAAS/2C,MAAM54I,MAAiB,GAAT2P,EAElByqK,EAASt8K,MAEb6xL,EAAS7xL,IAAIkC,MAAQo6K,EAASt8K,IAE9Byhc,EAAyBnlR,EAASt8K,IAAK6xL,EAASqS,cAI5C5nB,EAASuG,WAEbgP,EAAShP,SAAS3gL,MAAQo6K,EAASuG,SAEnC4+Q,EAAyBnlR,EAASuG,SAAUgP,EAASg+P,oBAIjDvzQ,EAAS0I,UAAY,IAEzB6M,EAAS7M,UAAU9iL,MAAQo6K,EAAS0I,UAItC,CA9MEgsD,CAAuBn/C,EAAUvV,EAAUt/B,EAAYnrI,GAE5CyqK,EAAS20D,iBA8MtB,SAAiCp/C,EAAUvV,GAE1CuV,EAASoS,QAAQ/hM,MAAMi9J,KAAMmd,EAASrxI,OACtC4mJ,EAAS55J,QAAQ/1B,MAAQo6K,EAASrkJ,QAClC45J,EAAS90B,SAAS76J,MAAQo6K,EAASvf,SAE9Buf,EAASt8K,MAEb6xL,EAAS7xL,IAAIkC,MAAQo6K,EAASt8K,IAE9Byhc,EAAyBnlR,EAASt8K,IAAK6xL,EAAS+9P,eAI5CtzQ,EAASuG,WAEbgP,EAAShP,SAAS3gL,MAAQo6K,EAASuG,SAEnC4+Q,EAAyBnlR,EAASuG,SAAUgP,EAASg+P,oBAIjDvzQ,EAAS0I,UAAY,IAEzB6M,EAAS7M,UAAU9iL,MAAQo6K,EAAS0I,UAItC,CAxOEksD,CAAwBr/C,EAAUvV,GAEvBA,EAAS60D,kBAEpBt/C,EAAS5mJ,MAAM/oC,MAAMi9J,KAAMmd,EAASrxI,OACpC4mJ,EAAS55J,QAAQ/1B,MAAQo6K,EAASrkJ,SAEvBqkJ,EAAS2W,mBAEpB3W,EAASyW,oBAAqB,EAIhC,EAocD,CAEA,SAAS80L,IAAqBx3T,EAAIyhC,EAAMmoG,EAAc52K,GAErD,IAAI82K,EAAU,CAAC,EACX2tL,EAAa,CAAC,EACdC,EAAyB,GAEvBC,EAAqB/tL,EAAaC,SAAa7pI,EAAGy5I,aAAcz5I,EAAGqxY,6BAAgC,EA6JzG,SAASz5E,EAAmBz4K,EAASn9L,EAAOw+O,EAAYhkP,GAEvD,IAAM3K,EAAQstM,EAAQttM,MAChBy/b,EAActvb,EAAQ,IAAMw+O,EAElC,QAA8BhjP,IAAzBhB,EAAO80b,GAcX,OARC90b,EAAO80b,GAFc,kBAAVz/b,GAAuC,mBAAVA,EAEjBA,EAIAA,EAAMyC,SAIvB,EAIP,IAAMujX,EAAer7W,EAAO80b,GAI5B,GAAsB,kBAAVz/b,GAAuC,mBAAVA,GAExC,GAAKgmX,IAAiBhmX,EAGrB,OADA2K,EAAO80b,GAAgBz/b,GAChB,OAMR,IAAsC,IAAjCgmX,EAAaj4M,OAAQ/tK,GAGzB,OADAgmX,EAAa/oN,KAAMj9J,IACZ,EAQV,OAAO,CAER,CAsEA,SAASimX,EAAgBjmX,GAExB,IAAM4vF,EAAO,CACZs2R,SAAU,EACVC,QAAS,GAyDV,MApDsB,kBAAVnmX,GAAuC,mBAAVA,GAIxC4vF,EAAKs2R,SAAW,EAChBt2R,EAAKu2R,QAAU,GAEJnmX,EAAM83J,WAIjBloE,EAAKs2R,SAAW,EAChBt2R,EAAKu2R,QAAU,GAEJnmX,EAAMgrK,WAAahrK,EAAMg9J,SAIpCptE,EAAKs2R,SAAW,GAChBt2R,EAAKu2R,QAAU,IAEJnmX,EAAMsiK,WAIjB1yE,EAAKs2R,SAAW,GAChBt2R,EAAKu2R,QAAU,IAEJnmX,EAAMo7J,WAIjBxrE,EAAKs2R,SAAW,GAChBt2R,EAAKu2R,QAAU,IAEJnmX,EAAMs1K,WAIjB1lF,EAAKs2R,SAAW,GAChBt2R,EAAKu2R,QAAU,IAEJnmX,EAAMkhK,UAEjB5rJ,QAAQk/C,KAAM,+EAIdl/C,QAAQk/C,KAAM,uDAAwDx0D,GAIhE4vF,CAER,CAEA,SAASw2R,EAAyBt8U,GAEjC,IAAMg7U,EAAgBh7U,EAAMhnC,OAE5BgiX,EAAcrrV,oBAAqB,UAAW2sV,GAE9C,IAAMj2W,EAAQ01W,EAAuB93W,QAAS+2W,EAAcI,qBAC5DW,EAAuBz2T,OAAQj/C,EAAO,GAEtCg+C,EAAG+pI,aAAcD,EAAS6sL,EAAcnkV,YAEjCs3J,EAAS6sL,EAAcnkV,WACvBilV,EAAYd,EAAcnkV,GAElC,CAgBA,MAAO,CAENxrB,KArXD,SAAe2vW,EAAej8K,GAE7B,IAAMw9K,EAAex9K,EAAQA,QAC7B1nL,EAAM8jW,oBAAqBH,EAAeuB,EAE3C,EAiXCxhN,OA/WD,SAAiBigN,EAAej8K,GAE/B,IAAIntC,EAASu8B,EAAS6sL,EAAcnkV,SAEpBh1B,IAAX+vJ,KAqMN,SAA+BopN,GAU9B,IALA,IAAMn1L,EAAWm1L,EAAcn1L,SAE3BrkJ,EAAS,EACPg7U,EAAY,GAERroX,EAAI,EAAGmK,EAAIunL,EAASx2L,OAAQ8E,EAAImK,EAAGnK,IAI5C,IAFA,IAAMyhc,EAAexhc,MAAM0E,QAAS+sL,EAAU1xL,IAAQ0xL,EAAU1xL,GAAM,CAAE0xL,EAAU1xL,IAExEmT,EAAI,EAAGq3K,EAAKi3Q,EAAavmc,OAAQiY,EAAIq3K,EAAIr3K,IAMlD,IAJA,IAAMk8L,EAAUoyP,EAActub,GAExB9C,EAASpQ,MAAM0E,QAAS0qM,EAAQttM,OAAUstM,EAAQttM,MAAQ,CAAEstM,EAAQttM,OAEhEmI,EAAI,EAAGqmD,EAAKlgD,EAAOnV,OAAQgP,EAAIqmD,EAAIrmD,IAAO,CAEnD,IAEMynF,EAAOq2R,EAFC33W,EAAQnG,IAKhBw3b,EAAqBr0Z,EAASg7U,EAGR,IAAvBq5E,GAA8Br5E,EAAYq5E,EAAuB/vW,EAAKs2R,WAG1E56U,GAAYg7U,EAAYq5E,GAMzBryP,EAAQk5K,OAAS,IAAIpwN,aAAcxmE,EAAKu2R,QAAU/vN,aAAasiC,mBAC/D4U,EAAQm5K,SAAWn7U,EAInBA,GAAUskD,EAAKu2R,OAGhB,CAQF,IAAMI,EAAcj7U,EAASg7U,EAExBC,EAAc,IAAIj7U,GAAYg7U,EAAYC,GAI/CzB,EAAc4B,OAASp7U,EACvBw5U,EAAc6B,QAAU,CAAC,CAI1B,CArQEC,CAAsB9B,GAEtBppN,EA0BF,SAAuBopN,GAItB,IAAM+B,EAgBP,WAEC,IAAM,IAAI5oX,EAAI,EAAGA,EAAI6nX,EAAkB7nX,IAEtC,IAA+C,IAA1C4nX,EAAuB93W,QAAS9P,GAGpC,OADA4nX,EAAuBxnX,KAAMJ,GACtBA,EAQT,OAFAqX,QAAQwN,MAAO,yFAER,CAER,CAjC2BgkW,GAC1BhC,EAAcI,oBAAsB2B,EAEpC,IAAMnrN,EAASvtG,EAAGoqI,eACZzxI,EAAOg+T,EAAc4B,OACrBziM,EAAQ6gM,EAAc7gM,MAO5B,OALA91H,EAAGqqI,WAAYrqI,EAAGyxY,eAAgBlkS,GAClCvtG,EAAGsqI,WAAYtqI,EAAGyxY,eAAgB94Y,EAAMm9H,GACxC91H,EAAGqqI,WAAYrqI,EAAGyxY,eAAgB,MAClCzxY,EAAG44T,eAAgB54T,EAAGyxY,eAAgB/4E,EAAmBnrN,GAElDA,CAER,CA5CW68B,CAAcusL,GACvB7sL,EAAS6sL,EAAcnkV,IAAO+6H,EAE9BopN,EAAc3/W,iBAAkB,UAAWihX,IAM5C,IAAMC,EAAex9K,EAAQA,QAC7B1nL,EAAM0jW,iBAAkBC,EAAeuB,GAIvC,IAAM1uL,EAAQ/nG,EAAK7oF,OAAO4wL,MAErBiuL,EAAYd,EAAcnkV,MAASg3J,KAiDzC,SAA2BmtL,GAE1B,IAAMppN,EAASu8B,EAAS6sL,EAAcnkV,IAChCgvJ,EAAWm1L,EAAcn1L,SACzBhlL,EAAQm6W,EAAc6B,QAE5Bx4T,EAAGqqI,WAAYrqI,EAAGyxY,eAAgBlkS,GAElC,IAAM,IAAIz9J,EAAI,EAAGowD,EAAKshI,EAASx2L,OAAQ8E,EAAIowD,EAAIpwD,IAI9C,IAFA,IAAMyhc,EAAexhc,MAAM0E,QAAS+sL,EAAU1xL,IAAQ0xL,EAAU1xL,GAAM,CAAE0xL,EAAU1xL,IAExEmT,EAAI,EAAGq3K,EAAKi3Q,EAAavmc,OAAQiY,EAAIq3K,EAAIr3K,IAAO,CAEzD,IAAMk8L,EAAUoyP,EAActub,GAE9B,IAAmD,IAA9C20W,EAAmBz4K,EAASrvM,EAAGmT,EAAGzG,GAAmB,CAQzD,IANA,IAAM2gC,EAASgiK,EAAQm5K,SAEjBn4W,EAASpQ,MAAM0E,QAAS0qM,EAAQttM,OAAUstM,EAAQttM,MAAQ,CAAEstM,EAAQttM,OAEtE6/b,EAAc,EAER13b,EAAI,EAAGA,EAAImG,EAAOnV,OAAQgP,IAAO,CAE1C,IAAMnI,EAAQsO,EAAQnG,GAEhBynF,EAAOq2R,EAAgBjmX,GAGP,kBAAVA,GAAuC,mBAAVA,GAExCstM,EAAQk5K,OAAQ,GAAMxmX,EACtBmuD,EAAGwqI,cAAexqI,EAAGyxY,eAAgBt0Z,EAASu0Z,EAAavyP,EAAQk5K,SAExDxmX,EAAMo7J,WAIjBkyC,EAAQk5K,OAAQ,GAAMxmX,EAAMunI,SAAU,GACtC+lE,EAAQk5K,OAAQ,GAAMxmX,EAAMunI,SAAU,GACtC+lE,EAAQk5K,OAAQ,GAAMxmX,EAAMunI,SAAU,GACtC+lE,EAAQk5K,OAAQ,GAAM,EACtBl5K,EAAQk5K,OAAQ,GAAMxmX,EAAMunI,SAAU,GACtC+lE,EAAQk5K,OAAQ,GAAMxmX,EAAMunI,SAAU,GACtC+lE,EAAQk5K,OAAQ,GAAMxmX,EAAMunI,SAAU,GACtC+lE,EAAQk5K,OAAQ,GAAM,EACtBl5K,EAAQk5K,OAAQ,GAAMxmX,EAAMunI,SAAU,GACtC+lE,EAAQk5K,OAAQ,GAAMxmX,EAAMunI,SAAU,GACtC+lE,EAAQk5K,OAAQ,IAAOxmX,EAAMunI,SAAU,GACvC+lE,EAAQk5K,OAAQ,IAAO,IAIvBxmX,EAAM8oF,QAASwkH,EAAQk5K,OAAQq5E,GAE/BA,GAAejwW,EAAKu2R,QAAU/vN,aAAasiC,kBAI7C,CAEAvqI,EAAGwqI,cAAexqI,EAAGyxY,eAAgBt0Z,EAAQgiK,EAAQk5K,OAEtD,CAED,CAIDr4T,EAAGqqI,WAAYrqI,EAAGyxY,eAAgB,KAEnC,CAxHE54E,CAAkBlC,GAElBc,EAAYd,EAAcnkV,IAAOg3J,EAInC,EAiVC10B,QAnBD,WAEC,IAAM,IAAMtiI,KAAMs3J,EAEjB9pI,EAAG+pI,aAAcD,EAASt3J,IAI3BklV,EAAyB,GACzB5tL,EAAU,CAAC,EACX2tL,EAAa,CAAC,CAEf,EAWD,CAAC,IAEK12I,IAAa,WAElB,SAAAA,IAA+B,IAAlBn1D,EAAUv4K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,CAAC,EAACwK,EAAA,KAAAkjO,GAE3B,IAeIC,EAfJ2wN,EAWI/lR,EAVHx/B,OAAAA,OAAM,IAAAulT,EAvi1BT,WAEC,IAAMvlT,EAASxzF,GAAiB,UAEhC,OADAwzF,EAAO3uI,MAAM29C,QAAU,QAChBgxF,CAER,CAii1BY60F,GAAqB0wN,EAAAC,EAU3BhmR,EATHj5K,QAAAA,OAAO,IAAAi/b,EAAG,KAAIA,EAAAC,EASXjmR,EARHjqE,MAAAA,OAAK,IAAAkwV,GAAOA,EAAAC,EAQTlmR,EAPH+a,QAAAA,OAAO,IAAAmrQ,GAAOA,EAAAC,EAOXnmR,EANHziB,MAAAA,OAAK,IAAA4oS,GAAQA,EAAAC,EAMVpmR,EALHmwD,UAAAA,OAAS,IAAAi2N,GAAQA,EAAAC,EAKdrmR,EAJHmF,mBAAAA,OAAkB,IAAAkhR,GAAOA,EAAAC,EAItBtmR,EAHH21D,sBAAAA,OAAqB,IAAA2wN,GAAQA,EAAAC,EAG1BvmR,EAFH61D,gBAAAA,OAAe,IAAA0wN,EAAG,UAASA,EAAAC,EAExBxmR,EADH+1D,6BAAAA,OAA4B,IAAAywN,GAAQA,EAGrCh/b,KAAKi3O,iBAAkB,EAMtBrJ,EAFgB,OAAZruO,EAEKA,EAAQ4mO,uBAAuBpwE,MAI/BA,EAIV,IAAMkpS,EAAiB,IAAI13V,YAAa,GAClC23V,EAAgB,IAAIllS,WAAY,GAElCw0E,EAAoB,KACpBC,EAAqB,KAKnBC,EAAkB,GAClBC,EAAmB,GAIzB3uO,KAAKq0G,WAAa2kC,EAGlBh5I,KAAKuU,MAAQ,CAMZkwM,mBAAmB,EAKnB6tO,cAAe,MAKhBtyb,KAAK4lM,WAAY,EACjB5lM,KAAK6lM,gBAAiB,EACtB7lM,KAAK8lM,gBAAiB,EACtB9lM,KAAK+lM,kBAAmB,EAIxB/lM,KAAK4uO,aAAc,EAInB5uO,KAAKi9K,eAAiB,GACtBj9K,KAAK4rM,sBAAuB,EAI5B5rM,KAAKm/b,kBAAoB3vS,GAIzBxvJ,KAAKo1b,kBAAmB,EAIxBp1b,KAAKsyL,YAAc7oC,GACnBzpJ,KAAK6uO,oBAAsB,EAI3B,IAAM3yN,EAAQlc,KAEV8uO,GAAiB,EAIjBC,EAAyB,EACzBC,EAA4B,EAC5BC,EAAuB,KACvBC,GAAuB,EAEvBC,EAAiB,KAEfC,EAAmB,IAAIxvE,GACvByvE,EAAkB,IAAIzvE,GACxB0vE,EAAsB,KAEpB8vN,EAAqB,IAAI7jS,GAAO,GAClC8jS,EAAqB,EAIrB9vN,EAASv2F,EAAO7qI,MAChBqhO,EAAUx2F,EAAO5qI,OAEjBqhO,EAAc,EACdC,EAAc,KACdC,EAAmB,KAEjBzgB,EAAY,IAAItvD,GAAS,EAAG,EAAG2vE,EAAQC,GACvCI,EAAW,IAAIhwE,GAAS,EAAG,EAAG2vE,EAAQC,GACxCK,GAAe,EAIb9gB,EAAW,IAAIx6B,GAIjBu7C,GAAmB,EACnBC,GAAwB,EAIxBC,EAA4B,KAI1BC,GAAoB,IAAIt/D,GAExB8iB,GAAW,IAAIt+B,GACf+6E,GAAW,IAAIppE,GAEfqpE,GAAc,CAAEvwK,WAAY,KAAM+7G,IAAK,KAAMvD,YAAa,KAAMg4D,iBAAkB,KAAMj4D,SAAS,GAEvG,SAASk4D,KAER,OAAgC,OAAzBpB,EAAgCQ,EAAc,CAEtD,CAIA,IA0FInjJ,GAAYkqG,GAAc52K,GAAOyuE,GACjC1gF,GAAY4xJ,GAAUklC,GAAU8hB,GAAYr0I,GAAYwlG,GAAYgtB,GACpE4rC,GAAc34D,GAAW44D,GAAaviB,GAAcj/B,GAAU85B,GAE9DjpJ,GAAY4wK,GAAcC,GAAgBC,GAE1CvY,GAAO3xB,GAAe06K,GAhGtBhpJ,GAAM34N,EAEV,SAAS05I,GAAY03F,EAAcC,GAElC,IAAM,IAAIl0O,EAAI,EAAGA,EAAIi0O,EAAa/4O,OAAQ8E,IAAO,CAEhD,IAAMm0O,EAAcF,EAAcj0O,GAC5B6C,EAAUy5I,EAAOC,WAAY43F,EAAaD,GAChD,GAAiB,OAAZrxO,EAAmB,OAAOA,CAEhC,CAEA,OAAO,IAER,CAEA,IAEC,IAAMqxO,GAAoB,CACzB76E,OAAO,EACPxnD,MAAAA,EACAglF,QAAAA,EACAo1C,UAAAA,EACAhrD,mBAAAA,EACAwwD,sBAAAA,EACAE,gBAAAA,EACAE,6BAAAA,GAWD,GAPK,iBAAkBv1F,GAASA,EAAOlmI,aAAc,cAAe,aAAFrR,OAAeukJ,KAGjFhN,EAAOp1I,iBAAkB,mBAAoBktO,IAAe,GAC5D93F,EAAOp1I,iBAAkB,uBAAwBmtO,IAAkB,GACnE/3F,EAAOp1I,iBAAkB,4BAA6B8hX,IAAwB,GAEjE,OAARxtJ,GAAe,CAEnB,IAAMyY,GAAe,CAAE,SAAU,QAAS,sBAU1C,IARgC,IAA3Bz0N,EAAM80N,kBAEVL,GAAanyM,QAMD,QAFb05L,GAAMj/E,GAAY03F,GAAcC,KAI/B,MAAK33F,GAAY03F,IAEV,IAAI7yO,MAAO,+DAIX,IAAIA,MAAO,gCAMpB,CAEsC,qBAA1Bwhc,uBAAyCpnO,cAAeonO,uBAEnEvrb,QAAQk/C,KAAM,iGAMuB7oD,IAAjC8tN,GAAI3tB,2BAER2tB,GAAI3tB,yBAA2B,WAE9B,MAAO,CAAE,SAAY,EAAG,SAAY,EAAG,UAAa,EAErD,EAIF,CAAE,MAAQhpL,IAGT,MADAxN,QAAQwN,MAAO,wBAA0BA,GAAMm/B,SACzCn/B,EAEP,CAUA,SAAS0vN,KAER3kJ,GAAa,IAAIynH,GAAiBmkB,IAElC1hC,GAAe,IAAI4T,GAAmB8tB,GAAK5rI,GAAYksF,GAEvDlsF,GAAWioC,KAAMiiE,IAEjB2hC,GAAQ,IAAIiH,IAAYlH,GAAK5rI,GAAYkqG,IAEzC52K,GAAQ,IAAIsyM,IAAYgG,GAAK5rI,GAAYkqG,IAEzCnoG,GAAO,IAAIwmH,GAAWqjB,IACtBvqN,GAAa,IAAI67M,GACjBjqD,GAAW,IAAI04D,IAAeC,GAAK5rI,GAAY1sE,GAAOjS,GAAY6oL,GAAc2hC,GAAO9pI,IACvFo2G,GAAW,IAAIyI,GAAehxL,GAC9BqqM,GAAa,IAAIjT,GAAiBp3L,GAClCg2D,GAAa,IAAIqkH,GAAiB2hC,GAAK1hC,IACvCgQ,GAAgB,IAAIL,GAAoB+xB,GAAK5rI,GAAYpa,GAAYskH,IACrE9e,GAAa,IAAIu8B,GAAiBikB,GAAKhmJ,GAAYmc,GAAMm4G,IACzD9B,GAAU,IAAImS,GAAcqhB,GAAKxgD,GAAYxlG,GAAYmc,IACzDmiJ,GAAe,IAAIj7B,GAAmB2iB,GAAK1hC,GAAcj3B,IACzDwvB,GAAW,IAAI2c,GAAe/9L,IAC9B2iO,GAAe,IAAIhqB,GAAepqM,EAAOuoL,GAAU8hB,GAAYj6H,GAAYkqG,GAAcgQ,GAAezX,IACxGpX,GAAY,IAAIk0D,IAAgB3vN,EAAOvO,IACvC4iO,GAAc,IAAInmB,GAClB4D,GAAe,IAAID,IAAmBzhI,GAAYkqG,IAClD52H,GAAa,IAAI4kI,GAAiBtoL,EAAOuoL,GAAU8hB,GAAY3mM,GAAO8kL,GAASkpC,EAAQjwD,GACvFkrC,GAAY,IAAI+F,IAAgB1yM,EAAOwoL,GAASlO,IAChD0qL,GAAiB,IAAIkD,IAAqBlsJ,GAAK7pI,GAAMmoG,GAAc52K,IAEnE6wN,GAAiB,IAAI1mC,GAAqBmuB,GAAK5rI,GAAY+B,GAAMmoG,IACjEk6C,GAAwB,IAAI/7B,GAA4BujB,GAAK5rI,GAAY+B,GAAMmoG,IAE/EnoG,GAAK4mH,SAAWq7B,GAAar7B,SAE7B/4L,EAAMs6K,aAAeA,GACrBt6K,EAAMowE,WAAaA,GACnBpwE,EAAMvO,WAAaA,GACnBuO,EAAMq0N,YAAcA,GACpBr0N,EAAM2sM,UAAYA,GAClB3sM,EAAM0D,MAAQA,GACd1D,EAAMmyE,KAAOA,EAEd,CAEA4iJ,KAIA,IAAMz+C,GAAK,IAAIgzC,IAActpN,EAAOg8M,IAuUpC,SAAS4Y,GAAevoM,GAEvBA,EAAM9H,iBAEN1sB,QAAQC,IAAK,sCAEb86N,GAAiB,CAElB,CAEA,SAASiC,KAERh9N,QAAQC,IAAK,0CAEb86N,GAAiB,EAEjB,IAAMoC,EAAgB7iJ,GAAK6mH,UACrB2O,EAAmBgF,GAAUh4B,QAC7BsgD,EAAsBtoB,GAAUkI,WAChCqgB,EAAuBvoB,GAAUvpD,YACjCshD,EAAgBiI,GAAUjkN,KAEhCqsO,KAEA5iJ,GAAK6mH,UAAYg8B,EACjBroB,GAAUh4B,QAAUgzB,EACpBgF,GAAUkI,WAAaogB,EACvBtoB,GAAUvpD,YAAc8xE,EACxBvoB,GAAUjkN,KAAOg8M,CAElB,CAEA,SAAS8kK,GAAwBn9U,GAEhCx0B,QAAQwN,MAAO,sEAAuEgnB,EAAMo9U,cAE7F,CAEA,SAASt0I,GAAmB9oM,GAE3B,IAAMswI,EAAWtwI,EAAMhnC,OAEvBs3K,EAAS3gJ,oBAAqB,UAAWm5M,IAQ1C,SAA6Bx4D,IAS7B,SAA2CA,GAE1C,IAAMo8B,EAAWtnM,GAAWoiB,IAAK8oJ,GAAWo8B,cAE1B7qM,IAAb6qM,IAEJA,EAAS1yM,SAAS,SAAW+kM,GAE5BgpC,GAAahnB,eAAgBhiB,EAE9B,IAEKzuB,EAAS2W,kBAEb8gD,GAAa/mB,mBAAoB1wC,GAMpC,EA3BCy4D,CAAkCz4D,GAElClrK,GAAWizD,OAAQi4G,EAEpB,CAZC04D,CAAoB14D,EAErB,CAqLA,SAAS0mR,GAAiB1mR,EAAUkZ,EAAO5vL,IAEZ,IAAzB02K,EAASkD,aAp35BE,IAo35BsBlD,EAASgD,OAAoD,IAA7BhD,EAAS0wQ,iBAE9E1wQ,EAASgD,KAAOz0B,GAChByxB,EAASvZ,aAAc,EACvByzE,GAAYl6D,EAAUkZ,EAAO5vL,GAE7B02K,EAASgD,KAAO10B,GAChB0xB,EAASvZ,aAAc,EACvByzE,GAAYl6D,EAAUkZ,EAAO5vL,GAE7B02K,EAASgD,KA935BM,GAk45Bfk3D,GAAYl6D,EAAUkZ,EAAO5vL,EAI/B,CA5jBAnC,KAAKwyL,GAAKA,GAIVxyL,KAAKi5I,WAAa,WAEjB,OAAOi/E,EAER,EAEAl4N,KAAKmmO,qBAAuB,WAE3B,OAAOjO,GAAIiO,sBAEZ,EAEAnmO,KAAKwxO,iBAAmB,WAEvB,IAAMlrC,EAAYh6G,GAAWv8D,IAAK,sBAC7Bu2K,GAAYA,EAAUmrC,aAE5B,EAEAzxO,KAAK0xO,oBAAsB,WAE1B,IAAMprC,EAAYh6G,GAAWv8D,IAAK,sBAC7Bu2K,GAAYA,EAAUqrC,gBAE5B,EAEA3xO,KAAK4xO,cAAgB,WAEpB,OAAOnC,CAER,EAEAzvO,KAAK6xO,cAAgB,SAAWpzO,QAEhB2L,IAAV3L,IAELgxO,EAAchxO,EAEduB,KAAK8xO,QAASvC,EAAQC,GAAS,GAEhC,EAEAxvO,KAAKqsK,QAAU,SAAW9qK,GAEzB,OAAOA,EAAO0tB,IAAKsgN,EAAQC,EAE5B,EAEAxvO,KAAK8xO,QAAU,SAAW3jO,EAAOC,GAA6B,IAArB2jO,IAAW9xO,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GAE9CuyL,GAAGw0C,aAEPjzN,QAAQk/C,KAAM,0EAKfs8K,EAASphO,EACTqhO,EAAUphO,EAEV4qI,EAAO7qI,MAAQlR,KAAKwf,MAAOtO,EAAQshO,GACnCz2F,EAAO5qI,OAASnR,KAAKwf,MAAOrO,EAASqhO,IAEhB,IAAhBsC,IAEJ/4F,EAAO3uI,MAAM8D,MAAQA,EAAQ,KAC7B6qI,EAAO3uI,MAAM+D,OAASA,EAAS,MAIhCpO,KAAKgyO,YAAa,EAAG,EAAG7jO,EAAOC,GAEhC,EAEApO,KAAKiyO,qBAAuB,SAAW1wO,GAEtC,OAAOA,EAAO0tB,IAAKsgN,EAASE,EAAaD,EAAUC,GAAchzN,OAElE,EAEAzc,KAAKkyO,qBAAuB,SAAW/jO,EAAOC,EAAQmrI,GAErDg2F,EAASphO,EACTqhO,EAAUphO,EAEVqhO,EAAcl2F,EAEdP,EAAO7qI,MAAQlR,KAAKwf,MAAOtO,EAAQorI,GACnCP,EAAO5qI,OAASnR,KAAKwf,MAAOrO,EAASmrI,GAErCv5I,KAAKgyO,YAAa,EAAG,EAAG7jO,EAAOC,EAEhC,EAEApO,KAAKmyO,mBAAqB,SAAW5wO,GAEpC,OAAOA,EAAOm6J,KAAM0zE,EAErB,EAEApvO,KAAK+xN,YAAc,SAAWxwN,GAE7B,OAAOA,EAAOm6J,KAAMwzD,EAErB,EAEAlvN,KAAKgyO,YAAc,SAAW91O,EAAGmL,EAAG8G,EAAOC,GAErClS,EAAE6kK,UAENmuD,EAAUjgM,IAAK/yB,EAAEA,EAAGA,EAAEmL,EAAGnL,EAAEoL,EAAGpL,EAAEkL,GAIhC8nN,EAAUjgM,IAAK/yB,EAAGmL,EAAG8G,EAAOC,GAI7BwR,GAAMwhJ,SAAUguE,EAAiB1zE,KAAMwzD,GAAY35D,eAAgBk6E,GAAchzN,QAElF,EAEAzc,KAAKoyO,WAAa,SAAW7wO,GAE5B,OAAOA,EAAOm6J,KAAMk0E,EAErB,EAEA5vO,KAAKqyO,WAAa,SAAWn2O,EAAGmL,EAAG8G,EAAOC,GAEpClS,EAAE6kK,UAEN6uE,EAAS3gN,IAAK/yB,EAAEA,EAAGA,EAAEmL,EAAGnL,EAAEoL,EAAGpL,EAAEkL,GAI/BwoO,EAAS3gN,IAAK/yB,EAAGmL,EAAG8G,EAAOC,GAI5BwR,GAAMshJ,QAASmuE,EAAgB3zE,KAAMk0E,GAAWr6E,eAAgBk6E,GAAchzN,QAE/E,EAEAzc,KAAKsyO,eAAiB,WAErB,OAAOzC,CAER,EAEA7vO,KAAKuxN,eAAiB,SAAWghB,GAEhC3yN,GAAM2xM,eAAgBse,EAAe0C,EAEtC,EAEAvyO,KAAKwyO,cAAgB,SAAW7+N,GAE/B+7N,EAAc/7N,CAEf,EAEA3T,KAAKyyO,mBAAqB,SAAW9+N,GAEpCg8N,EAAmBh8N,CAEpB,EAIA3T,KAAKmlM,cAAgB,SAAW5jM,GAE/B,OAAOA,EAAOm6J,KAAM97F,GAAWulI,gBAEhC,EAEAnlM,KAAKolM,cAAgB,WAEpBxlI,GAAWwlI,cAActlM,MAAO8/D,GAAY3/D,UAE7C,EAEAD,KAAKqlM,cAAgB,WAEpB,OAAOzlI,GAAWylI,eAEnB,EAEArlM,KAAKslM,cAAgB,WAEpB1lI,GAAW0lI,cAAcxlM,MAAO8/D,GAAY3/D,UAE7C,EAEAD,KAAKG,MAAQ,WAAwD,IAA/BouG,IAAKtuG,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GAASszL,IAAOtzL,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GAEtDkuI,EAAO,EAEX,KAJ4BluI,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,KAAAA,UAAA,GAIf,CAGZ,IAAIu/b,GAAkB,EACtB,GAA8B,OAAzBvwN,EAAgC,CAEpC,IAAMwwN,EAAexwN,EAAqB5tE,QAAQ9C,OAClDihS,EAn84BqB,OAm84BHC,GAp84BC,OAq84BlBA,GAv84BmB,OAw84BnBA,CAEF,CAIA,GAAKD,EAAkB,CAEtB,IAAME,EAAazwN,EAAqB5tE,QAAQz8J,KAC1C+6b,EAAiBD,IAAex0S,IACrCw0S,IAAen0S,IACfm0S,IAAer0S,IACfq0S,IAAe9zS,IA994BS,OA+94BxB8zS,GA994BwB,OA+94BxBA,EAEK76P,EAAajlI,GAAWulI,gBACxBnpM,EAAI4jE,GAAWylI,gBACfn+L,EAAI29L,EAAW39L,EACfR,EAAIm+L,EAAWn+L,EACfH,EAAIs+L,EAAWt+L,EAEhBo5b,GAEJV,EAAgB,GAAM/3b,EACtB+3b,EAAgB,GAAMv4b,EACtBu4b,EAAgB,GAAM14b,EACtB04b,EAAgB,GAAMjjc,EACtBk8N,GAAI0nO,eAAgB1nO,GAAI2nO,MAAO,EAAGZ,KAIlCC,EAAe,GAAMh4b,EACrBg4b,EAAe,GAAMx4b,EACrBw4b,EAAe,GAAM34b,EACrB24b,EAAe,GAAMljc,EACrBk8N,GAAI4nO,cAAe5nO,GAAI2nO,MAAO,EAAGX,GAInC,MAEC/wT,GAAQ+pF,GAAIg8G,gBAId,CAEK3lO,IAAQ4/B,GAAQ+pF,GAAIgkO,kBACpB3oQ,IAEJplD,GAAQ+pF,GAAIikO,mBACZn8b,KAAK4f,MAAM82K,QAAQnD,QAAQk/B,QAAS,aAIrCyF,GAAI/3N,MAAOguI,EAEZ,EAEAnuI,KAAK6kM,WAAa,WAEjB7kM,KAAKG,OAAO,GAAM,GAAO,EAE1B,EAEAH,KAAKkzN,WAAa,WAEjBlzN,KAAKG,OAAO,GAAO,GAAM,EAE1B,EAEAH,KAAK+zN,aAAe,WAEnB/zN,KAAKG,OAAO,GAAO,GAAO,EAE3B,EAIAH,KAAK0hK,QAAU,WAEd1oB,EAAO9gH,oBAAqB,mBAAoB44M,IAAe,GAC/D93F,EAAO9gH,oBAAqB,uBAAwB64M,IAAkB,GACtE/3F,EAAO9gH,oBAAqB,4BAA6BwtV,IAAwB,GAEjFn1I,GAAY7uE,UACZssD,GAAatsD,UACb/zJ,GAAW+zJ,UACX+iC,GAAS/iC,UACT6kD,GAAW7kD,UACXgjC,GAAQhjC,UACR8kC,GAAc9kC,UACdw/M,GAAex/M,UACf4uE,GAAa5uE,UAEb8wB,GAAG9wB,UAEH8wB,GAAGt6J,oBAAqB,eAAgBw6M,IACxClgD,GAAGt6J,oBAAqB,aAAcy6M,IAEjC3C,IAEJA,EAA0BtuE,UAC1BsuE,EAA4B,MAI7B7iM,GAAUshC,MAEX,EAuFAzuE,KAAKkwN,mBAAqB,SAAWtoD,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,EAAQslG,GAEhE,OAAVsqF,IAAiBA,EAAQo+C,IAE9B,IAAMhZ,EAAgBh1N,EAAOk2K,QAAUl2K,EAAO8lK,YAAYsL,cAAgB,EAEpE+zB,EA47BP,SAAqB1/B,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,IAEhC,IAAlB4vL,EAAM5Z,UAAmB4Z,EAAQo+C,IAEtC5wE,GAAS0+D,oBAET,IAAMtiD,EAAMoW,EAAMpW,IACZvD,EAAcS,EAAS8uC,uBAAyB51B,EAAM3Z,YAAc,KACpEzd,EAAwC,OAAzBs0E,EAAkC/yN,EAAMg3R,kBAA+D,IAA1CjkE,EAAqB3mB,iBAA4B2mB,EAAqB5tE,QAAQ1G,WAAalL,GACvK8wB,GAAW1H,EAAS8uC,uBAAyBpB,GAAa9hB,IAAW10K,IAAK8oJ,EAAS0H,QAAUnI,GAC7FirC,GAAyC,IAA1BxqC,EAASiD,gBAA4BhR,EAAS54F,WAAW1qC,OAAgD,IAAvCsjI,EAAS54F,WAAW1qC,MAAMi7I,SAC3G2gC,IAAoBt4C,EAAS54F,WAAWm0G,YAAgBxN,EAAS8G,WAAa9G,EAASra,WAAa,GACpGitB,IAAkB3gB,EAASgb,gBAAgBvmH,SAC3Cy2I,IAAkBlrC,EAASgb,gBAAgB/c,OAC3CktC,IAAiBnrC,EAASgb,gBAAgBt+I,MAE5C8qJ,EAAc7oC,GAEbovB,EAAS+E,aAEiB,OAAzBqxD,IAA2E,IAA1CA,EAAqB3mB,mBAE1Dh2B,EAAcp2K,EAAMo2K,cAMtB,IAAMrL,EAAiBnc,EAASgb,gBAAgBvmH,UAAYurG,EAASgb,gBAAgB/c,QAAU+B,EAASgb,gBAAgBt+I,MAClHouK,OAAyCxrM,IAAnB68K,EAAiCA,EAAervL,OAAS,EAE/Ek1M,EAAqBn/L,GAAWoiB,IAAK8oJ,GACrCiW,EAAS2/C,EAAmB7uN,MAAMkvK,OAExC,IAA0B,IAArBghD,KAE2B,IAA1BC,GAAkCnoE,IAAWunE,GAAiB,CAElE,IAAMtiC,EACLjlC,IAAWunE,GACXt2D,EAASz5I,KAAO8vM,EAKjBngD,GAASvvK,SAAUq5J,EAAUjR,EAAQilC,EAEtC,CAMD,IAAI+lC,GAAqB,EAEpB/5D,EAASx/K,UAAYyzM,EAAmBouB,UAEvCpuB,EAAmB+lC,aAAiB/lC,EAAmBgmC,qBAAuBhkD,EAAOlvK,MAAMvmB,SAIpFyzM,EAAmBomG,mBAAqBv4I,GAIxCx4J,EAAOklb,gBAAiD,IAAhCv6O,EAAmBsjP,SANtDx9M,GAAqB,EAURzwO,EAAOklb,gBAAiD,IAAhCv6O,EAAmBsjP,SAI7Cjub,EAAO61K,kBAAqD,IAAlC80B,EAAmB+V,WAExD+vB,GAAqB,EAERzwO,EAAO61K,kBAAqD,IAAlC80B,EAAmB+V,WAI/C1gN,EAAOs2K,gBAAiD,IAAhCq0B,EAAmB0W,SAEtDovB,GAAqB,EAERzwO,EAAOs2K,gBAAiD,IAAhCq0B,EAAmB0W,SAI7CrhN,EAAO61K,kBAA0D,IAAvC80B,EAAmBgW,iBAAqD,OAAzB3gN,EAAO+1K,eAIhF/1K,EAAO61K,kBAA0D,IAAvC80B,EAAmBgW,iBAAsD,OAAzB3gN,EAAO+1K,eAIjF40B,EAAmBvsB,SAAWA,IAIb,IAAjB1H,EAAS8C,KAAgBmxB,EAAmBnxB,MAAQA,EAV/Di3D,GAAqB,OAc+BxoO,IAAzC0iM,EAAmB2S,mBAC5B3S,EAAmB2S,oBAAsB1wB,GAASkd,WACpDa,EAAmBZ,kBAAoBnd,GAASmd,iBAIrCY,EAAmBuW,eAAiBA,GAIpCvW,EAAmBsW,iBAAmBA,GAItCtW,EAAmBrhB,eAAiBA,GAIpCqhB,EAAmBkJ,eAAiBA,GAIpClJ,EAAmBmJ,cAAgBA,GAInCnJ,EAAmBxa,cAAgBA,IAIT,IAA1BkE,GAAaC,UAAqBqW,EAAmB8I,oBAAsBA,KAtBtFg9B,GAAqB,GAJrBA,GAAqB,EAtBrBA,GAAqB,EARrBA,GAAqB,EARrBA,GAAqB,GAwEtBA,GAAqB,EACrB9lC,EAAmBouB,UAAYriD,EAASx/K,SAMzC,IAAIiuM,EAAUwF,EAAmBsnB,gBAEL,IAAvBwe,IAEJtrC,EAAUyrC,GAAYl6D,EAAUkZ,EAAO5vL,IAIxC,IAAI6wO,GAAiB,EACjBC,GAAkB,EAClBC,GAAgB,EAEdC,EAAa7rC,EAAQoP,cAC1B08B,EAAatmC,EAAmB1e,SAE5BxuK,GAAMq3M,WAAY3vB,EAAQA,WAE9B0rC,GAAiB,EACjBC,GAAkB,EAClBC,GAAgB,GAIZr6D,EAASz5I,KAAO8vM,IAEpBA,EAAqBr2D,EAASz5I,GAE9B6zM,GAAkB,GAInB,GAAKD,GAAkB7D,IAAmBvnE,EAAS,CAIlDurE,EAAWljN,SAAUioM,GAAK,mBAAoBtwD,EAAOG,kBACrDorE,EAAWljN,SAAUioM,GAAK,aAActwD,EAAOE,oBAE/C,IAAMurE,EAAUF,EAAW52O,IAAI+2O,oBAEdlpO,IAAZipO,GAEJA,EAAQpjN,SAAUioM,GAAKgY,GAASt5D,sBAAuBhP,EAAOK,cAI1DuuB,GAAamU,wBAEjBwoC,EAAWljN,SAAUioM,GAAK,gBACzB,GAAQj7N,KAAK+W,IAAK4zJ,EAAOkM,IAAM,GAAQ72K,KAAKo+B,OAMzCw9I,EAAS4zD,qBACb5zD,EAAS0zD,oBACT1zD,EAASyzD,uBACTzzD,EAASwJ,qBACTxJ,EAAS8uC,wBACT9uC,EAAS2W,mBAET2jD,EAAWljN,SAAUioM,GAAK,kBAAkD,IAAhCtwD,EAAOumC,sBAI/CghC,IAAmBvnE,IAEvBunE,EAAiBvnE,EAMjBqrE,GAAkB,EAClBC,GAAgB,EAIlB,CAMA,GAAK/wO,EAAOs2K,cAAgB,CAE3B06D,EAAWr1B,YAAaoa,GAAK/1N,EAAQ,cACrCgxO,EAAWr1B,YAAaoa,GAAK/1N,EAAQ,qBAErC,IAAMy2K,EAAWz2K,EAAOy2K,SAEnBA,IAEC4d,GAAagV,qBAEa,OAAzB5yB,EAAS26D,aAAuB36D,EAAS46D,qBAE9CL,EAAWljN,SAAUioM,GAAK,cAAet/C,EAAS26D,YAAah0E,KAI/DxrJ,QAAQk/C,KAAM,2IAMjB,CAEK9wD,EAAOklb,gBAEXl0M,EAAWr1B,YAAaoa,GAAK/1N,EAAQ,mBACrCgxO,EAAWljN,SAAUioM,GAAK,kBAAmB/1N,EAAO4mb,iBAAkBxpR,KAIvE,IAAMumB,EAAkBhb,EAASgb,sBAEC17K,IAA7B07K,EAAgBvmH,eAAqDn1D,IAA3B07K,EAAgB/c,aAAoD3+J,IAA1B07K,EAAgBt+I,QAAiD,IAA1BgvJ,GAAaC,WAE5I+5C,GAAaltE,OAAQnhK,EAAQ2oK,EAAUw8B,IAInC2rC,GAAmBnmC,EAAmB72B,gBAAkB9zK,EAAO8zK,iBAEnE62B,EAAmB72B,cAAgB9zK,EAAO8zK,cAC1Ck9D,EAAWljN,SAAUioM,GAAK,gBAAiB/1N,EAAO8zK,gBAM9C4C,EAAS+sM,uBAA6C,OAApB/sM,EAAS0H,SAE/C6yD,EAAW7yD,OAAO9hL,MAAQ8hL,EAE1B6yD,EAAWvyC,WAAWpiM,MAAU8hL,EAAOuS,gBAAkD,IAAjCvS,EAAOphB,uBAAsC,EAAI,GAIrG8zE,IAEJE,EAAWljN,SAAUioM,GAAK,sBAAuBh8M,EAAM2yN,qBAElD/hC,EAAmB+lC,cA+EwBp0O,EApEJy0O,GAoEN9kD,EApENglD,GAsExBxxC,kBAAkBtiC,YAAc7gK,EACzC2vL,EAASyT,WAAWviC,YAAc7gK,EAElC2vL,EAAS0T,kBAAkBxiC,YAAc7gK,EACzC2vL,EAAS2T,wBAAwBziC,YAAc7gK,EAC/C2vL,EAASyU,YAAYvjC,YAAc7gK,EACnC2vL,EAAS0U,kBAAkBxjC,YAAc7gK,EACzC2vL,EAASkU,WAAWhjC,YAAc7gK,EAClC2vL,EAASsU,iBAAiBpjC,YAAc7gK,EACxC2vL,EAASkV,eAAehkC,YAAc7gK,EACtC2vL,EAAS+U,iBAAiB7jC,YAAc7gK,GA1ElCk9K,IAAwB,IAAjB9C,EAAS8C,KAEpBhE,GAAUs0D,mBAAoBmH,EAAYz3D,GAI3ChE,GAAUy0D,wBAAyBgH,EAAYv6D,EAAU42D,EAAaD,EAASQ,GAE/E1yB,GAAcS,OAAQma,GAAK6nO,GAAgBjzP,GAAsBsmC,EAAY7zE,KAsD/E,IAAwC6uB,EAAU3vL,EAlD5Co6K,EAAS2W,mBAAoD,IAAhC3W,EAASyW,qBAE1CguB,GAAcS,OAAQma,GAAK6nO,GAAgBjzP,GAAsBsmC,EAAY7zE,IAC7EsZ,EAASyW,oBAAqB,GAI1BzW,EAAS20D,kBAEb2F,EAAWljN,SAAUioM,GAAK,SAAU/1N,EAAOk0J,QAY5C,GANA88E,EAAWljN,SAAUioM,GAAK,kBAAmB/1N,EAAOyzK,iBACpDu9D,EAAWljN,SAAUioM,GAAK,eAAgB/1N,EAAO0zK,cACjDs9D,EAAWljN,SAAUioM,GAAK,cAAe/1N,EAAO8lK,aAI3C4Q,EAAS2W,kBAAoB3W,EAAS8pC,oBAI1C,IAFA,IAAM38B,EAASnN,EAASqoM,eAEdxkX,EAAI,EAAGmK,EAAIm/K,EAAOpuL,OAAQ8E,EAAImK,EAAGnK,IAE1C,GAAK85L,GAAaC,SAAW,CAE5B,IAAMhvF,EAAQu+E,EAAQtpL,GAEtBwkX,GAAe59M,OAAQ77D,EAAO6/F,GAC9B45K,GAAettW,KAAM6zF,EAAO6/F,EAE7B,MAECvzL,QAAQk/C,KAAM,8EAQjB,OAAOq0I,CAER,CA/yCiBqsC,CAAY/rE,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,GAE/Dyd,GAAMs3M,YAAar+C,EAAUs+C,GAI7B,IAAIvoN,EAAQk8J,EAASl8J,MACjBglO,EAAc,EAElB,IAA4B,IAAvB/6D,EAAS2I,UAAqB,CAIlC,QAAep3K,KAFfwE,EAAQ8oK,GAAW+8B,sBAAuB3pC,IAEf,OAE3B8oE,EAAc,CAEf,CAIA,IAAM1tD,EAAYpb,EAASob,UACrB3mH,EAAWurG,EAAS54F,WAAW3S,SAEjCw0K,EAAY7tD,EAAUp7I,MAAQ8oM,EAC9BI,GAAY9tD,EAAUp7I,MAAQo7I,EAAUvoG,OAAUi2J,EAEvC,OAAVnsI,IAEJssI,EAAY92O,KAAKC,IAAK62O,EAAWtsI,EAAM38D,MAAQ8oM,GAC/CI,EAAU/2O,KAAKiuC,IAAK8oM,GAAWvsI,EAAM38D,MAAQ28D,EAAM9pB,OAAUi2J,IAI/C,OAAVhlO,GAEJmlO,EAAY92O,KAAKC,IAAK62O,EAAW,GACjCC,EAAU/2O,KAAKiuC,IAAK8oM,EAASplO,EAAM+uE,aAEXvzE,IAAbm1D,GAAuC,OAAbA,IAErCw0K,EAAY92O,KAAKC,IAAK62O,EAAW,GACjCC,EAAU/2O,KAAKiuC,IAAK8oM,EAASz0K,EAASoe,QAIvC,IAAMs2J,EAAYD,EAAUD,EAE5B,KAAKE,EAAY,GAAKA,IAAc9qL,KAApC,CAMA,IAAI+sG,EAFJswC,GAAcyB,MAAO9lM,EAAQ02K,EAAUyuB,EAASx8B,EAAUl8J,GAG1D,IAAIkjL,EAAW2+C,GAaf,GAXe,OAAV7hO,IAEJsnJ,EAAYhkF,GAAWniD,IAAKnhB,IAE5BkjL,EAAW4+C,IACF1mD,SAAU9zB,IAMf/zJ,EAAOk2K,QAEiB,IAAvBQ,EAAS2I,WAEb5hK,GAAMw3M,aAAcv+C,EAAS4I,mBAAqB4uD,MAClDv+C,EAASkY,QAASkuB,GAAIogK,QAItBxmM,EAASkY,QAASkuB,GAAIw4G,gBAIjB,GAAKvuU,EAAOm2K,OAAS,CAE3B,IAAI++C,EAAYx+C,EAASuI,eAENh3K,IAAditN,IAA0BA,EAAY,GAE3Cz3M,GAAMw3M,aAAcC,EAAYgZ,MAE3BluO,EAAO+xO,eAEXpiD,EAASkY,QAASkuB,GAAIogK,OAEXn2X,EAAOgyO,WAElBriD,EAASkY,QAASkuB,GAAIqgK,WAItBzmM,EAASkY,QAASkuB,GAAIsgK,WAIxB,MAAYr2X,EAAOo2K,SAElBuZ,EAASkY,QAASkuB,GAAImgK,QAEXl2X,EAAOiyO,UAElBtiD,EAASkY,QAASkuB,GAAIw4G,WAIvB,GAAKvuU,EAAOklb,cAEXv1P,EAASk8P,gBAAiB7rb,EAAO69b,iBAAkB79b,EAAO89b,iBAAkB99b,EAAO+9b,sBAE7E,GAAK/9b,EAAO61K,gBAElB8Z,EAASoY,gBAAiB6pC,EAAWE,EAAW9xO,EAAOw7E,YAEjD,GAAKmtF,EAASg+B,0BAA4B,CAEhD,IAAMq3P,OAAkD/1b,IAA/B0gK,EAASs+B,kBAAkCt+B,EAASs+B,kBAAoBjgJ,IAC3FgsJ,EAAgBl4M,KAAKiuC,IAAK4/H,EAASqqC,cAAegrP,GAExDruQ,EAASoY,gBAAiB6pC,EAAWE,EAAW9+B,EAEjD,MAECrjB,EAAStsL,OAAQuuO,EAAWE,EAlFwB,CAsFtD,EA0BAj0O,KAAK+xM,QAAU,SAAWhgB,EAAOnqB,GAA6B,IAArBw4R,EAAWngc,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAEjC,OAAhBmgc,IAAuBA,EAAcruQ,IAE1C08C,EAAqBzgB,GAAaj+L,IAAKqwa,IACpB7rU,OAEnBo6G,EAAiB7xO,KAAM2xO,GAIvB2xN,EAAYhpR,iBAAiB,SAAWj1K,GAElCA,EAAO20K,SAAW30K,EAAOwyK,OAAOz8K,KAAM0vK,EAAO+M,UAEjD85D,EAAmB7gB,UAAWzrN,GAEzBA,EAAO6zK,YAEXy4D,EAAmB5gB,WAAY1rN,GAMlC,IAEK4vL,IAAUquQ,GAEdruQ,EAAM3a,iBAAiB,SAAWj1K,GAE5BA,EAAO20K,SAAW30K,EAAOwyK,OAAOz8K,KAAM0vK,EAAO+M,UAEjD85D,EAAmB7gB,UAAWzrN,GAEzBA,EAAO6zK,YAEXy4D,EAAmB5gB,WAAY1rN,GAMlC,IAIDssO,EAAmB/gB,YAAaxxM,EAAMk5a,kBAItC,IAAMz9Q,EAAY,IAAI3rJ,IAiCtB,OA/BA+lK,EAAM5a,UAAU,SAAWh1K,GAE1B,IAAM02K,EAAW12K,EAAO02K,SAExB,GAAKA,EAEJ,GAAKl8K,MAAM0E,QAASw3K,GAEnB,IAAM,IAAIn8K,EAAI,EAAGA,EAAIm8K,EAASjhL,OAAQ8E,IAAO,CAE5C,IAAM2jc,EAAYxnR,EAAUn8K,GAE5B6ic,GAAiBc,EAAWD,EAAaj+b,GACzCw1K,EAAUvrJ,IAAKi0a,EAEhB,MAIAd,GAAiB1mR,EAAUunR,EAAaj+b,GACxCw1K,EAAUvrJ,IAAKysJ,EAMlB,IAEA81D,EAAiB39K,MACjBy9K,EAAqB,KAEd92D,CAER,EAIA33K,KAAKsgc,aAAe,SAAWvuQ,EAAOnqB,GAA6B,IAArBw4R,EAAWngc,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,KAErD03K,EAAY33K,KAAK+xM,QAAShgB,EAAOnqB,EAAQw4R,GAK/C,OAAO,IAAI9vZ,SAAS,SAAEG,GAErB,SAAS8vZ,IAER5oR,EAAUp1K,SAAS,SAAWs2K,GAEFlrK,GAAWoiB,IAAK8oJ,GACRu7C,eAEtBtoJ,WAGZ6rG,EAAUn6I,OAAQq7I,EAIpB,IAIwB,IAAnBlB,EAAUpyH,KASf1lD,WAAY0gc,EAAqB,IAPhC9vZ,EAASshJ,EASX,CAEyD,OAApDzlG,GAAWv8D,IAAK,+BAKpBwwa,IAOA1gc,WAAY0gc,EAAqB,GAInC,GAED,EAIA,IAAIn1N,GAA2B,KAQ/B,SAASsH,KAERvlM,GAAUshC,MAEX,CAEA,SAASkkK,KAERxlM,GAAUrC,OAEX,CAEA,IAAMqC,GAAY,IAAI4oJ,GA4KtB,SAASs+C,GAAelyO,EAAQylK,EAAQ8hD,EAAYklB,GAEnD,IAAwB,IAAnBzsO,EAAOwnE,QAAZ,CAIA,GAFgBxnE,EAAOwyK,OAAOz8K,KAAM0vK,EAAO+M,QAI1C,GAAKxyK,EAAO8gO,QAEXvZ,EAAavnN,EAAOg0K,iBAEd,GAAKh0K,EAAOmyO,OAES,IAAtBnyO,EAAO4uN,YAAsB5uN,EAAOmhK,OAAQsE,QAE3C,GAAKzlK,EAAO20K,QAElB23D,EAAmB7gB,UAAWzrN,GAEzBA,EAAO6zK,YAEXy4D,EAAmB5gB,WAAY1rN,QAI1B,GAAKA,EAAOiyO,UAElB,IAAOjyO,EAAO+zK,eAAiB64C,EAASwlB,iBAAkBpyO,GAAW,CAE/DysO,GAEJsB,GAASt5D,sBAAuBz0K,EAAO8lK,aACrCJ,aAAcooE,IAIjB,IAAMnlE,EAAW45B,GAAQphC,OAAQnhK,GAC3B02K,EAAW12K,EAAO02K,SAEnBA,EAASlvG,SAEb6kK,EAAkB1xO,KAAMqF,EAAQ2oK,EAAU+N,EAAU6wC,EAAYwmB,GAAS5oO,EAAG,KAI9E,OAEM,IAAKnF,EAAOk2K,QAAUl2K,EAAOm2K,QAAUn2K,EAAOo2K,aAE7Cp2K,EAAO+zK,eAAiB64C,EAAS8B,iBAAkB1uN,IAAW,CAEpE,IAAM2oK,EAAW45B,GAAQphC,OAAQnhK,GAC3B02K,EAAW12K,EAAO02K,SAsBxB,GApBK+1D,SAE2BxkO,IAA1BjI,EAAO8jL,gBAEoB,OAA1B9jL,EAAO8jL,gBAA0B9jL,EAAOmkL,wBAC7C4pD,GAASx0E,KAAMv5J,EAAO8jL,eAAe5vB,UAIJ,OAA5ByU,EAASmb,gBAA0Bnb,EAASwb,wBACjD4pD,GAASx0E,KAAMoP,EAASmb,eAAe5vB,SAIxC65E,GACEroE,aAAc1lK,EAAO8lK,aACrBJ,aAAcooE,KAIZtzO,MAAM0E,QAASw3K,GAInB,IAFA,IAAMmN,EAASlb,EAASkb,OAEdtpL,EAAI,EAAGmK,EAAIm/K,EAAOpuL,OAAQ8E,EAAImK,EAAGnK,IAAO,CAEjD,IAAM+qG,EAAQu+E,EAAQtpL,GAChBqvL,EAAgBlT,EAAUpxE,EAAM0+E,eAEjC4F,GAAiBA,EAAcpiH,SAEnC6kK,EAAkB1xO,KAAMqF,EAAQ2oK,EAAUihB,EAAe29B,EAAYwmB,GAAS5oO,EAAGmgG,EAInF,MAEWoxE,EAASlvG,SAEpB6kK,EAAkB1xO,KAAMqF,EAAQ2oK,EAAU+N,EAAU6wC,EAAYwmB,GAAS5oO,EAAG,KAI9E,CAQF,IAFA,IAAMsW,EAAWzb,EAAOyb,SAEdlhB,EAAI,EAAGmK,EAAI+W,EAAShmB,OAAQ8E,EAAImK,EAAGnK,IAE5C23O,GAAez2N,EAAUlhB,GAAKkrK,EAAQ8hD,EAAYklB,EA1Gb,CA8GvC,CAEA,SAAS4F,GAAahG,EAAmBz8C,EAAOnqB,EAAQxG,GAEvD,IAAMqzE,EAAgBjG,EAAkBxqB,OAClC0wB,EAAsBlG,EAAkBzkB,aACxC4qB,EAAqBnG,EAAkBzyD,YAE7C0yD,EAAmB9gB,gBAAiB/lD,IAEV,IAArBkoE,GAA4B/gD,GAAS+/P,eAAgB5ya,EAAM+gK,eAAgBrV,GAE3E8sE,EAAoB98O,OAAS,GAkBnC,SAAiC68O,EAAeC,EAAqB3iD,EAAOnqB,GAE3E,IAAMwoE,GAAqC,IAAlBr+C,EAAM5Z,QAAmB4Z,EAAMq+C,iBAAmB,KAE3E,GAA0B,OAArBA,EAEJ,OAID,IAAM35C,EAAWD,GAAaC,SAEK,OAA9Bu5C,IAEJA,EAA4B,IAAIhvE,GAAmB,EAAG,EAAG,CACxDnC,iBAAiB,EACjBj6J,KAAM0nF,GAAWl+C,IAAK,+BAAkCq9G,GAAgBP,GACxEoT,UAAWtT,GACXyW,QAAWg1B,EAAa,EAAI,KAe9Bv6K,EAAM+1N,qBAAsBx+C,IAEvBgD,EAEJu5C,EAA0B8B,QAASr+C,GAASv3L,EAAGu3L,GAASpsL,GAIxD2oO,EAA0B8B,QAASt/E,GAAiBihC,GAASv3L,GAAKs2J,GAAiBihC,GAASpsL,IAM7F,IAAM4qL,EAAsB/1K,EAAMg2K,kBAClCh2K,EAAMu2K,gBAAiBu9C,GAEvB9zN,EAAMipL,cAAei6P,IACrBC,EAAqBnjb,EAAMmpL,iBACD,GAAInpL,EAAMkpL,cAAe,SAAU,IAE7DlpL,EAAM/b,QAIN,IAAMkyL,EAAqBn2K,EAAMo2K,YACjCp2K,EAAMo2K,YAAc7oC,GAEpBmrF,GAAeH,EAAe1iD,EAAOnqB,GAErCrI,GAASs/D,8BAA+BmR,GACxCzwE,GAASq/D,yBAA0BoR,GAInC,IAFA,IAAIwwN,GAA0B,EAEpB9jc,EAAI,EAAGmK,EAAI6tO,EAAoB98O,OAAQ8E,EAAImK,EAAGnK,IAAO,CAE9D,IAAMutN,EAAayqB,EAAqBh4O,GAElCyF,EAAS8nN,EAAW9nN,OACpB2oK,EAAWm/C,EAAWn/C,SACtB+N,EAAWoxC,EAAWpxC,SACtBpxE,EAAQwiH,EAAWxiH,MAEzB,GA376Be,IA276BVoxE,EAASgD,MAAuB15K,EAAOwyK,OAAOz8K,KAAM0vK,EAAO+M,QAAW,CAE1E,IAAM8rR,EAAc5nR,EAASgD,KAE7BhD,EAASgD,KAAOz0B,GAChByxB,EAASvZ,aAAc,EAEvBqxD,GAAcxuN,EAAQ4vL,EAAOnqB,EAAQkD,EAAU+N,EAAUpxE,GAEzDoxE,EAASgD,KAAO4kR,EAChB5nR,EAASvZ,aAAc,EAEvBkhS,GAA0B,CAE3B,CAED,EAEiC,IAA5BA,IAEJjhS,GAASs/D,8BAA+BmR,GACxCzwE,GAASq/D,yBAA0BoR,IAIpC9zN,EAAMu2K,gBAAiBR,GAEvB/1K,EAAMkpL,cAAeg6P,EAAoBC,GAEzCnjb,EAAMo2K,YAAcD,CAErB,CA9HuCwiD,CAAwBJ,EAAeC,EAAqB3iD,EAAOnqB,GAEpGxG,GAAWxhJ,GAAMwhJ,SAAUguE,EAAiB1zE,KAAM0F,IAElDqzE,EAAc78O,OAAS,GAAIg9O,GAAeH,EAAe1iD,EAAOnqB,GAChE8sE,EAAoB98O,OAAS,GAAIg9O,GAAeF,EAAqB3iD,EAAOnqB,GAC5E+sE,EAAmB/8O,OAAS,GAAIg9O,GAAeD,EAAoB5iD,EAAOnqB,GAI/EhoJ,GAAM82K,QAAQnoF,MAAM+iH,SAAS,GAC7B1xM,GAAM82K,QAAQnoF,MAAMkkH,SAAS,GAC7B7yM,GAAM82K,QAAQlvJ,MAAMirL,SAAS,GAE7B7yM,GAAM+2M,kBAAkB,EAEzB,CAgHA,SAASie,GAAervC,EAAYxT,EAAOnqB,GAI1C,IAFA,IAAMwoE,GAAqC,IAAlBr+C,EAAM5Z,QAAmB4Z,EAAMq+C,iBAAmB,KAEjE1zO,EAAI,EAAGmK,EAAI0+L,EAAW3tM,OAAQ8E,EAAImK,EAAGnK,IAAO,CAErD,IAAMutN,EAAa1kB,EAAY7oM,GAEzByF,EAAS8nN,EAAW9nN,OACpB2oK,EAAWm/C,EAAWn/C,SACtB+N,EAAgC,OAArBu3D,EAA4BnmB,EAAWpxC,SAAWu3D,EAC7D3oI,EAAQwiH,EAAWxiH,MAEpBtlG,EAAOwyK,OAAOz8K,KAAM0vK,EAAO+M,SAE/Bg8C,GAAcxuN,EAAQ4vL,EAAOnqB,EAAQkD,EAAU+N,EAAUpxE,EAI3D,CAED,CAEA,SAASkpH,GAAcxuN,EAAQ4vL,EAAOnqB,EAAQkD,EAAU+N,EAAUpxE,GAEjEtlG,EAAO8jM,eAAgB/pL,EAAO61K,EAAOnqB,EAAQkD,EAAU+N,EAAUpxE,GAEjEtlG,EAAOyzK,gBAAgBte,iBAAkBsQ,EAAOE,mBAAoB3lK,EAAO8lK,aAC3E9lK,EAAO0zK,aAAauQ,gBAAiBjkL,EAAOyzK,iBAE5CiD,EAASotB,eAAgB/pL,EAAO61K,EAAOnqB,EAAQkD,EAAU3oK,EAAQslG,IAEnC,IAAzBoxE,EAASkD,aA5/6BE,IA4/6BsBlD,EAASgD,OAAoD,IAA7BhD,EAAS0wQ,iBAE9E1wQ,EAASgD,KAAOz0B,GAChByxB,EAASvZ,aAAc,EACvBpjJ,EAAMg0M,mBAAoBtoD,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,EAAQslG,GAErEoxE,EAASgD,KAAO10B,GAChB0xB,EAASvZ,aAAc,EACvBpjJ,EAAMg0M,mBAAoBtoD,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,EAAQslG,GAErEoxE,EAASgD,KAtg7BM,GA0g7Bf3/J,EAAMg0M,mBAAoBtoD,EAAQmqB,EAAOjnB,EAAU+N,EAAU12K,EAAQslG,GAItEtlG,EAAO2yO,cAAe54N,EAAO61K,EAAOnqB,EAAQkD,EAAU+N,EAAUpxE,EAEjE,CAEA,SAASsrI,GAAYl6D,EAAUkZ,EAAO5vL,IAEd,IAAlB4vL,EAAM5Z,UAAmB4Z,EAAQo+C,IAEtC,IAAMrjC,EAAqBn/L,GAAWoiB,IAAK8oJ,GAErCiW,EAAS2/C,EAAmB7uN,MAAMkvK,OAClC2+B,EAAeghB,EAAmB7uN,MAAM6tM,aAExCqlB,EAAqBhkD,EAAOlvK,MAAMvmB,QAElCm/K,EAAa83D,GAAa7oB,cAAe5uC,EAAUiW,EAAOlvK,MAAO6tM,EAAc17B,EAAO5vL,GACtF4yO,EAAkBzE,GAAavnB,mBAAoBvwC,GAErDy8B,EAAWnI,EAAmBmI,SAIlCnI,EAAmB10B,YAAcS,EAAS8uC,uBAAyB51B,EAAM3Z,YAAc,KACvF00B,EAAmBnxB,IAAMoW,EAAMpW,IAC/BmxB,EAAmBvsB,QAAW1H,EAAS8uC,uBAAyBpB,GAAa9hB,IAAW10K,IAAK8oJ,EAAS0H,QAAUusB,EAAmB10B,kBAEjHhuK,IAAb6qM,IAIJp8B,EAASj1K,iBAAkB,UAAWytO,IAEtCp8B,EAAW,IAAI93K,IACf2vK,EAAmBmI,SAAWA,GAI/B,IAAI3N,EAAU2N,EAASllL,IAAKglN,GAE5B,QAAiB3qO,IAAZk9L,GAIJ,GAAKwF,EAAmBsnB,iBAAmB9sB,GAAWwF,EAAmBgmC,qBAAuBA,EAI/F,OAFAkC,GAAgCn8D,EAAUL,GAEnC8uB,OAMR9uB,EAAW4V,SAAWkiD,GAAa55B,YAAa79B,GAEhDA,EAASo8D,QAAS9yO,EAAQq2K,EAAYt8J,GAEtC28J,EAASiF,gBAAiBtF,EAAYt8J,GAEtCorL,EAAUgpC,GAAalnB,eAAgB5wC,EAAYu8D,GACnD9/B,EAAShmL,IAAK8lN,EAAiBztC,GAE/BwF,EAAmB1e,SAAW5V,EAAW4V,SAI1C,IAAMA,EAAW0e,EAAmB1e,SA8CpC,OA5CSvV,EAAS2W,kBAAsB3W,EAAS8pC,uBAA+C,IAAtB9pC,EAASkW,WAElFX,EAASnR,eAAiB8R,GAASgd,SAIpCipC,GAAgCn8D,EAAUL,GAI1Cs0B,EAAmB+lC,YA+cpB,SAA8Bh6D,GAE7B,OAAOA,EAASyzD,uBAAyBzzD,EAAS0zD,oBAAsB1zD,EAAS4zD,qBAChF5zD,EAAS8uC,wBAA0B9uC,EAAS60D,kBAC1C70D,EAAS2W,mBAAwC,IAApB3W,EAASiW,MAE1C,CArdkComD,CAAqBr8D,GACtDi0B,EAAmBgmC,mBAAqBA,EAEnChmC,EAAmB+lC,cAIvBzkD,EAASwT,kBAAkBnjM,MAAQqwL,EAAOlvK,MAAM6rM,QAChDr9B,EAASyT,WAAWpjM,MAAQqwL,EAAOlvK,MAAM8rM,MACzCt9B,EAAS0T,kBAAkBrjM,MAAQqwL,EAAOlvK,MAAM6oM,YAChDr6B,EAAS2T,wBAAwBtjM,MAAQqwL,EAAOlvK,MAAM+rM,kBACtDv9B,EAASkU,WAAW7jM,MAAQqwL,EAAOlvK,MAAM8oM,KACzCt6B,EAASsU,iBAAiBjkM,MAAQqwL,EAAOlvK,MAAMgsM,WAC/Cx9B,EAASkV,eAAe7kM,MAAQqwL,EAAOlvK,MAAM+oM,SAC7Cv6B,EAASmV,MAAM9kM,MAAQqwL,EAAOlvK,MAAMisM,aACpCz9B,EAASoV,MAAM/kM,MAAQqwL,EAAOlvK,MAAMksM,aACpC19B,EAASyU,YAAYpkM,MAAQqwL,EAAOlvK,MAAM8qJ,MAC1C0jB,EAAS0U,kBAAkBrkM,MAAQqwL,EAAOlvK,MAAMmsM,YAChD39B,EAAS+U,iBAAiB1kM,MAAQqwL,EAAOlvK,MAAMgpM,KAE/Cx6B,EAASgU,qBAAqB3jM,MAAQqwL,EAAOlvK,MAAMwiL,qBACnDhU,EAASiU,wBAAwB5jM,MAAQqwL,EAAOlvK,MAAMyiL,wBACtDjU,EAASuU,cAAclkM,MAAQqwL,EAAOlvK,MAAM+iL,cAC5CvU,EAASuzL,gBAAgBljX,MAAQqwL,EAAOlvK,MAAM+hW,gBAC9CvzL,EAASszL,aAAajjX,MAAQqwL,EAAOlvK,MAAM8hW,aAC3CtzL,EAAS6U,eAAexkM,MAAQqwL,EAAOlvK,MAAMqjL,eAC7C7U,EAAS8U,kBAAkBzkM,MAAQqwL,EAAOlvK,MAAMsjL,mBAKjD4J,EAAmBsnB,eAAiB9sB,EACpCwF,EAAmB4mC,aAAe,KAE3BpsC,CAER,CAEA,SAASy4P,GAAgBjzP,GAExB,GAAyC,OAApCA,EAAmB4mC,aAAwB,CAE/C,IAAMyB,EAAeroC,EAAmBsnB,eAAe1d,cACvD5J,EAAmB4mC,aAAep2B,GAAcU,aAAcm3B,EAAax4B,IAAK7P,EAAmB1e,SAEpG,CAEA,OAAO0e,EAAmB4mC,YAE3B,CAEA,SAASsB,GAAgCn8D,EAAUL,GAElD,IAAMs0B,EAAqBn/L,GAAWoiB,IAAK8oJ,GAE3Ci0B,EAAmBomG,iBAAmB16H,EAAW06H,iBACjDpmG,EAAmBsjP,SAAW53Q,EAAW43Q,SACzCtjP,EAAmB+V,WAAarqC,EAAWqqC,WAC3C/V,EAAmBgW,gBAAkBtqC,EAAWsqC,gBAChDhW,EAAmB0W,SAAWhrC,EAAWgrC,SACzC1W,EAAmBrhB,aAAejT,EAAWiT,aAC7CqhB,EAAmBkJ,aAAex9B,EAAWw9B,aAC7ClJ,EAAmBmJ,YAAcz9B,EAAWy9B,YAC5CnJ,EAAmB8I,kBAAoBp9B,EAAWo9B,kBAClD9I,EAAmB2S,kBAAoBjnC,EAAWinC,kBAClD3S,EAAmBZ,gBAAkB1zB,EAAWknC,oBAChD5S,EAAmBuW,aAAe7qC,EAAW6qC,aAC7CvW,EAAmBsW,eAAiB5qC,EAAW4qC,eAC/CtW,EAAmBxa,YAAc9Z,EAAW8Z,WAE7C,CA7mBAnlJ,GAAUkpJ,kBAnBV,SAA2BpuJ,GAErBmjM,IAA2BA,GAA0BnjM,EAE3D,IAiBqB,qBAAT9yB,MAAuBg4B,GAAUmpJ,WAAYnhL,MAEzDnV,KAAKq2L,iBAAmB,SAAWl+I,GAElCizL,GAA2BjzL,EAC3Bq6I,GAAG6D,iBAAkBl+I,GAEN,OAAbA,EAAsBhL,GAAUshC,OAASthC,GAAUrC,OAEtD,EAEA0nJ,GAAG5uL,iBAAkB,eAAgB8uO,IACrClgD,GAAG5uL,iBAAkB,aAAc+uO,IAInC3yO,KAAKwF,OAAS,SAAWusL,EAAOnqB,GAE/B,QAAgBx9J,IAAXw9J,IAA4C,IAApBA,EAAOiP,UAOpC,IAAwB,IAAnBi4D,EAAL,EAIqC,IAAhC/8C,EAAM4uL,uBAAiC5uL,EAAMxa,oBAI3B,OAAlB3P,EAAO1qG,SAAoD,IAAjC0qG,EAAO+4M,uBAAiC/4M,EAAO2P,qBAE1D,IAAfib,GAAG3B,UAAwC,IAApB2B,GAAGw0C,gBAED,IAAxBx0C,GAAG60C,kBAA4B70C,GAAGm3C,aAAc/hE,GAErDA,EAAS4qB,GAAGw4C,cAKU,IAAlBj5C,EAAM5Z,SAAmB4Z,EAAMkU,eAAgB/pL,EAAO61K,EAAOnqB,EAAQqnE,IAE1ER,EAAqBzgB,GAAaj+L,IAAKgiK,EAAO48C,EAAiB/2O,SAC5C28H,OAEnBo6G,EAAiB7xO,KAAM2xO,GAEvBwB,GAAkB34E,iBAAkBsQ,EAAOG,iBAAkBH,EAAOE,oBACpEinD,EAASqmB,wBAAyBnF,IAElCF,EAAwB/vO,KAAK4rM,qBAC7BkkC,EAAmB/gD,GAASx6D,KAAMv0H,KAAKi9K,eAAgB8yD,IAEvDvB,EAAoB+B,GAAYxgN,IAAKgiK,EAAO28C,EAAgB92O,SAC1C28H,OAElBm6G,EAAgB5xO,KAAM0xO,GAEtB6F,GAAetiD,EAAOnqB,EAAQ,EAAG1rJ,EAAM0yN,aAEvCJ,EAAkBr7I,UAES,IAAtBj3E,EAAM0yN,aAEVJ,EAAkBh1I,KAAMk2I,EAAaC,GAMtC3vO,KAAKquF,KAAK7oF,OAAO4wL,SAES,IAArB05C,GAA4B/gD,GAAS4d,eAE1C,IAAM8gB,EAAeghB,EAAmB7uN,MAAM6tM,aAuB9C,GArBA5E,GAAUrjN,OAAQioN,EAAc17B,EAAOnqB,IAEb,IAArBkoE,GAA4B/gD,GAAS6d,cAIb,IAAxB5sM,KAAKquF,KAAK6mH,WAAqBl1M,KAAKquF,KAAK9zB,SAK1B,IAAfi4H,GAAG3B,UAAyC,IAApB2B,GAAGw0C,eAAmD,IAAzBx0C,GAAGmrQ,mBAE5D/9X,GAAWp6D,OAAQgpO,EAAmBz8C,GAMvC08C,EAAmB/gB,YAAaxxM,EAAMk5a,kBAEjCxtR,EAAOg7D,cAIX,IAFA,IAAMD,EAAU/6D,EAAO+6D,QAEbjmO,EAAI,EAAGmK,EAAI87N,EAAQ/qO,OAAQ8E,EAAImK,EAAGnK,IAAO,CAElD,IAAM24O,EAAU1S,EAASjmO,GAEzB83O,GAAahG,EAAmBz8C,EAAOsjD,EAASA,EAAQj0E,SAEzD,MAIAozE,GAAahG,EAAmBz8C,EAAOnqB,GAMV,OAAzBqnE,IAIJ1vE,GAASs/D,8BAA+BoQ,GAIxC1vE,GAASq/D,yBAA0BqQ,KAMb,IAAlBl9C,EAAM5Z,SAAmB4Z,EAAM+iD,cAAe54N,EAAO61K,EAAOnqB,GAIjE4+B,GAAcwB,oBACdknC,GAAuB,EACvBC,EAAiB,KAEjBR,EAAiB39K,MAIhBy9K,EAFIE,EAAiB/2O,OAAS,EAET+2O,EAAkBA,EAAiB/2O,OAAS,GAI5C,KAItB82O,EAAgB19K,MAIfw9K,EAFIE,EAAgB92O,OAAS,EAET82O,EAAiBA,EAAgB92O,OAAS,GAI1C,IA1IgB,OALpCmc,QAAQwN,MAAO,yEAmJjB,EAq1BAvhB,KAAKixN,kBAAoB,WAExB,OAAO8d,CAER,EAEA/uO,KAAKmxN,qBAAuB,WAE3B,OAAO6d,CAER,EAEAhvO,KAAKkyL,gBAAkB,WAEtB,OAAO+8C,CAER,EAEAjvO,KAAK2rO,wBAA0B,SAAWt6C,EAAcktC,EAAc/8D,GAErE7zJ,GAAWoiB,IAAKshK,EAAahwB,SAAUg5D,eAAiBkE,EACxD5wN,GAAWoiB,IAAKshK,EAAa7vB,cAAe64D,eAAiB74D,EAE7D,IAAM44D,EAAyBzsN,GAAWoiB,IAAKshK,GAC/C+oC,EAAuBuC,uBAAwB,EAE1CvC,EAAuBuC,wBAE3BvC,EAAuBsD,+BAA6CtzN,IAAjBo3J,EAE5C44D,EAAuBsD,4BAIqC,IAA7DpxI,GAAWl+C,IAAK,0CAEpBr6B,QAAQk/C,KAAM,0GACdmnK,EAAuB0D,sBAAuB,GAQlD,EAEA99N,KAAKurO,2BAA6B,SAAWl6C,EAAcikD,GAE1D,IAAMlb,EAAyBzsN,GAAWoiB,IAAKshK,GAC/C+oC,EAAuBG,mBAAqB+a,EAC5Clb,EAAuBmb,6BAAiDnrO,IAAvBkrO,CAElD,EAEAt1O,KAAKyyL,gBAAkB,SAAWpB,GAA0D,IAA5C2/B,EAAc/wN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGixN,EAAiBjxN,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAEvFgvO,EAAuB59C,EACvB09C,EAAyB/d,EACzBge,EAA4B9d,EAE5B,IAAIskB,GAAwB,EACxBze,EAAc,KACd0G,GAAS,EACTgY,GAAmB,EAEvB,GAAKpkD,EAAe,CAEnB,IAAM+oC,EAAyBzsN,GAAWoiB,IAAKshK,QAESjnL,IAAnDgwN,EAAuBmb,yBAG3B31N,GAAMk3M,gBAAiBoB,GAAI+3G,YAAa,MACxCz6F,GAAwB,QAEiCprO,IAA9CgwN,EAAuBG,mBAElCh7D,GAASi/D,kBAAmBntC,GAEjB+oC,EAAuBuC,uBAGlCp9D,GAAS++D,eAAgBjtC,EAAc1jL,GAAWoiB,IAAKshK,EAAahwB,SAAUg5D,eAAgB1sN,GAAWoiB,IAAKshK,EAAa7vB,cAAe64D,gBAI3I,IAAMh5D,EAAUgwB,EAAahwB,SAExBA,EAAQiB,iBAAmBjB,EAAQU,oBAAsBV,EAAQwiN,4BAErEpuI,GAAmB,GAIpB,IAAMlb,EAAqB5sN,GAAWoiB,IAAKshK,GAAekpC,mBAErDlpC,EAAaE,yBAIhBwlC,EAFIp6N,MAAM0E,QAASk5N,EAAoBvJ,IAEzBuJ,EAAoBvJ,GAAkBE,GAItCqJ,EAAoBvJ,GAInCyM,GAAS,GAIT1G,EAFavgC,GAAaC,UAAYpF,EAAa5vB,QAAU,IAAuD,IAAhDlC,GAASq9D,mBAAoBvrC,GAEnF1jL,GAAWoiB,IAAKshK,GAAeqpC,+BAIxC/9N,MAAM0E,QAASk5N,GAELA,EAAoBrJ,GAIpBqJ,EAMhB6U,EAAiB1zE,KAAM21B,EAAajwB,UACpCiuE,EAAgB3zE,KAAM21B,EAAanwB,SACnCouE,EAAsBj+C,EAAalwB,WAEpC,MAECiuE,EAAiB1zE,KAAMwzD,GAAY35D,eAAgBk6E,GAAchzN,QACjE4yN,EAAgB3zE,KAAMk0E,GAAWr6E,eAAgBk6E,GAAchzN,QAC/D6yN,EAAsBO,EAgBvB,GAZyBjwN,GAAMk3M,gBAAiBoB,GAAI+3G,YAAal5G,IAExCvgC,GAAatH,aAAesmD,GAEpD51N,GAAMsvK,YAAamC,EAAc0lC,GAIlCn3M,GAAMwhJ,SAAUguE,GAChBxvN,GAAMshJ,QAASmuE,GACfzvN,GAAM2xM,eAAgB+d,GAEjB7R,EAAS,CAEb,IAAM5D,EAAoBlsN,GAAWoiB,IAAKshK,EAAahwB,SACvD62D,GAAI6E,qBAAsB7E,GAAI+3G,YAAa/3G,GAAIg4G,kBAAmBh4G,GAAI4+N,4BAA8B9lO,EAAgB6I,EAAkBQ,eAAgBnJ,EAEvJ,MAAO,GAAKukB,EAAmB,CAE9B,IAAM5b,EAAoBlsN,GAAWoiB,IAAKshK,EAAahwB,SACjDq0E,EAAQ1kB,GAAkB,EAChCkH,GAAIyd,wBAAyBzd,GAAI+3G,YAAa/3G,GAAIg4G,kBAAmBr2G,EAAkBQ,eAAgBnJ,GAAqB,EAAGwkB,EAEhI,CAEAxG,GAAuB,CAExB,EAEAlvO,KAAK41O,uBAAyB,SAAWvkD,EAAcn1L,EAAGmL,EAAG8G,EAAOC,EAAQ+rJ,EAAQ07E,GAEnF,GAASxkD,GAAgBA,EAAa1vB,oBAAtC,CAOA,IAAIo1D,EAAcppN,GAAWoiB,IAAKshK,GAAekpC,mBAQjD,GANKlpC,EAAaE,8BAAmDnnL,IAAxByrO,IAE5C9e,EAAcA,EAAa8e,IAIvB9e,EAAc,CAElBn3M,GAAMk3M,gBAAiBoB,GAAI+3G,YAAal5G,GAExC,IAEC,IAAM11D,EAAUgwB,EAAahwB,QACvBy0E,EAAgBz0E,EAAQ9C,OACxBg9D,EAAcl6D,EAAQz8J,KAE5B,GAAKkxO,IAAkB/pF,IAAcosE,GAAMv9D,QAASk7E,KAAoB5d,GAAI7xB,aAAc6xB,GAAIwoO,kCAG7F,YADA3sb,QAAQwN,MAAO,6GAKhB,IAAMw0N,EAA4Bxa,IAAgB9vE,KAAqBn/D,GAAWl+C,IAAK,gCAAqCooJ,GAAaC,UAAYnqG,GAAWl+C,IAAK,2BAErK,GAAKmtL,IAAgBrwE,IAAoBitE,GAAMv9D,QAAS2gE,KAAkBrD,GAAI7xB,aAAc6xB,GAAIyoO,kCAC3FplO,IAAgB/vE,MAAegrC,GAAaC,UAAYnqG,GAAWl+C,IAAK,sBAAyBk+C,GAAWl+C,IAAK,gCACnH2nM,EAGF,YADAhiO,QAAQwN,MAAO,uHAOTrlB,GAAK,GAAKA,GAAOm1L,EAAaljL,MAAQA,GAAe9G,GAAK,GAAKA,GAAOgqL,EAAajjL,OAASA,GAElG8pN,GAAI8d,WAAY95O,EAAGmL,EAAG8G,EAAOC,EAAQ+pN,GAAMv9D,QAASk7E,GAAiB3d,GAAMv9D,QAAS2gE,GAAephE,EAIrG,CAAE,QAID,IAAM48D,EAAyC,OAAzBkY,EAAkCthO,GAAWoiB,IAAKk/M,GAAuB1U,mBAAqB,KACpH36M,GAAMk3M,gBAAiBoB,GAAI+3G,YAAal5G,EAEzC,CAED,CAvDA,MAHChjN,QAAQwN,MAAO,2FA4DjB,EAEAvhB,KAAKi2O,yBAA2B,SAAW12K,EAAU8hG,GAAqB,IAAZjtJ,EAAKnU,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE/Di2O,EAAaj5O,KAAKs1J,IAAK,GAAKn+I,GAC5BjG,EAAQlR,KAAKwf,MAAO4kJ,EAAQloB,MAAMhrI,MAAQ+nO,GAC1C9nO,EAASnR,KAAKwf,MAAO4kJ,EAAQloB,MAAM/qI,OAAS8nO,GAElD32E,GAASg7C,aAAcl5C,EAAS,GAEhC62D,GAAIie,kBAAmBje,GAAI03G,WAAYx7T,EAAO,EAAG,EAAGmrD,EAASrjE,EAAGqjE,EAASl4D,EAAG8G,EAAOC,GAEnFwR,GAAM63M,eAEP,EAEAz3N,KAAKo2O,qBAAuB,SAAW72K,EAAU82K,EAAYC,GAAwB,IAAZliO,EAAKnU,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE1EkO,EAAQkoO,EAAWl9F,MAAMhrI,MACzBC,EAASioO,EAAWl9F,MAAM/qI,OAC1BmrN,EAAWpB,GAAMv9D,QAAS07E,EAAW/3E,QACrCi7D,EAASrB,GAAMv9D,QAAS07E,EAAW1xO,MAEzC26J,GAASg7C,aAAc+7B,EAAY,GAInCpe,GAAI8D,YAAa9D,GAAIkjO,oBAAqB9kN,EAAWv3E,OACrDm5D,GAAI8D,YAAa9D,GAAImjO,+BAAgC/kN,EAAWx3E,kBAChEo5D,GAAI8D,YAAa9D,GAAIojO,iBAAkBhlN,EAAWt3E,iBAE7Cq3E,EAAW34E,cAEfw6D,GAAIJ,cAAeI,GAAI03G,WAAYx7T,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAG8G,EAAOC,EAAQmrN,EAAUC,EAAQ6c,EAAWl9F,MAAMz1G,MAI/G2yM,EAAW1c,oBAEfzB,GAAIF,wBAAyBE,GAAI03G,WAAYx7T,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAGgvO,EAAW33E,QAAS,GAAIvwJ,MAAOkoO,EAAW33E,QAAS,GAAItwJ,OAAQmrN,EAAU8c,EAAW33E,QAAS,GAAIh7H,MAI7Kw0L,GAAIJ,cAAeI,GAAI03G,WAAYx7T,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAGkyN,EAAUC,EAAQ6c,EAAWl9F,OAOlF,IAAV/kI,GAAekiO,EAAWz3E,iBAAkBq5D,GAAIkB,eAAgBlB,GAAI03G,YAEzEhwT,GAAM63M,eAEP,EAEAz3N,KAAKu2O,uBAAyB,SAAWC,EAAWj3K,EAAU82K,EAAYC,GAAwB,IAAZliO,EAAKnU,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAE7F,GAAKic,EAAM80N,iBAEVj9N,QAAQk/C,KAAM,iFAFf,CAOA,IAKIwjL,EALEtoO,EAAQqoO,EAAUt5O,IAAIhB,EAAIs6O,EAAUtrM,IAAIhvC,EAAI,EAC5CkS,EAASooO,EAAUt5O,IAAImK,EAAImvO,EAAUtrM,IAAI7jC,EAAI,EAC7CknG,EAAQioI,EAAUt5O,IAAIoK,EAAIkvO,EAAUtrM,IAAI5jC,EAAI,EAC5CiyN,EAAWpB,GAAMv9D,QAAS07E,EAAW/3E,QACrCi7D,EAASrB,GAAMv9D,QAAS07E,EAAW1xO,MAGzC,GAAK0xO,EAAWh0E,gBAEf/C,GAASk7C,aAAc67B,EAAY,GACnCG,EAAWve,GAAIy+N,eAET,KAAKrgN,EAAWv0E,qBAAsBu0E,EAAWutI,yBAQvD,YADA9vW,QAAQk/C,KAAM,+GALdssG,GAASs7C,kBAAmBy7B,EAAY,GACxCG,EAAWve,GAAI0+N,gBAOhB,CAEA1+N,GAAI8D,YAAa9D,GAAIkjO,oBAAqB9kN,EAAWv3E,OACrDm5D,GAAI8D,YAAa9D,GAAImjO,+BAAgC/kN,EAAWx3E,kBAChEo5D,GAAI8D,YAAa9D,GAAIojO,iBAAkBhlN,EAAWt3E,iBAElD,IAAM03E,EAAexe,GAAI7xB,aAAc6xB,GAAI0oO,mBACrCjqN,EAAoBze,GAAI7xB,aAAc6xB,GAAI2oO,qBAC1CjqN,EAAmB1e,GAAI7xB,aAAc6xB,GAAI4oO,oBACzCjqN,EAAiB3e,GAAI7xB,aAAc6xB,GAAI6oO,kBACvCjqN,EAAmB5e,GAAI7xB,aAAc6xB,GAAI8oO,oBAEzC7nT,EAAQk9F,EAAW1c,oBAAsB0c,EAAW33E,QAAStqJ,GAAUiiO,EAAWl9F,MAExF++E,GAAI8D,YAAa9D,GAAI0oO,kBAAmBznT,EAAMhrI,OAC9C+pN,GAAI8D,YAAa9D,GAAI2oO,oBAAqB1nT,EAAM/qI,QAChD8pN,GAAI8D,YAAa9D,GAAI4oO,mBAAoBtqN,EAAUtrM,IAAIhvC,GACvDg8N,GAAI8D,YAAa9D,GAAI6oO,iBAAkBvqN,EAAUtrM,IAAI7jC,GACrD6wN,GAAI8D,YAAa9D,GAAI8oO,mBAAoBxqN,EAAUtrM,IAAI5jC,GAElD+uO,EAAW34E,eAAiB24E,EAAW/zE,gBAE3C41D,GAAIH,cAAe0e,EAAUriO,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAGk4D,EAASj4D,EAAG6G,EAAOC,EAAQmgG,EAAOgrH,EAAUC,EAAQrgF,EAAMz1G,MAIjH2yM,EAAWwtI,0BAEf9vW,QAAQk/C,KAAM,2FACdilK,GAAI6e,wBAAyBN,EAAUriO,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAGk4D,EAASj4D,EAAG6G,EAAOC,EAAQmgG,EAAOgrH,EAAUpgF,EAAMz1G,OAIxHw0L,GAAIH,cAAe0e,EAAUriO,EAAOmrD,EAASrjE,EAAGqjE,EAASl4D,EAAGk4D,EAASj4D,EAAG6G,EAAOC,EAAQmgG,EAAOgrH,EAAUC,EAAQrgF,GAMlH++E,GAAI8D,YAAa9D,GAAI0oO,kBAAmBlqN,GACxCxe,GAAI8D,YAAa9D,GAAI2oO,oBAAqBlqN,GAC1Cze,GAAI8D,YAAa9D,GAAI4oO,mBAAoBlqN,GACzC1e,GAAI8D,YAAa9D,GAAI6oO,iBAAkBlqN,GACvC3e,GAAI8D,YAAa9D,GAAI8oO,mBAAoBlqN,GAG1B,IAAV1iO,GAAekiO,EAAWz3E,iBAAkBq5D,GAAIkB,eAAgBqd,GAErE72N,GAAM63M,eAxEN,CA0ED,EAEAz3N,KAAK27N,YAAc,SAAWt6D,GAExBA,EAAQyxB,cAEZvzB,GAASo7C,eAAgBt5C,EAAS,GAEvBA,EAAQiB,gBAEnB/C,GAASk7C,aAAcp5C,EAAS,GAErBA,EAAQU,oBAAsBV,EAAQwiN,yBAEjDtkN,GAASs7C,kBAAmBx5C,EAAS,GAIrC9B,GAASg7C,aAAcl5C,EAAS,GAIjCzhJ,GAAM63M,eAEP,EAEAz3N,KAAKgkE,WAAa,WAEjB+qK,EAAyB,EACzBC,EAA4B,EAC5BC,EAAuB,KAEvBrvN,GAAM26C,QACNisI,GAAcjsI,OAEf,EAEmC,qBAAvBy8K,oBAEXA,mBAAmBz4M,cAAe,IAAI43E,YAAa,UAAW,CAAE30E,OAAQxhC,OAI1E,CAkDC,OAlDAuJ,EAAAokO,EAAA,EAAAnrO,IAAA,mBAAAutB,IAED,WAEC,OAAO80Z,EAER,GAAC,CAAArib,IAAA,mBAAAutB,IAED,WAEC,OAAO/vB,KAAKm/b,iBAEb,EAAClwa,IAED,SAAsB0rI,GAErB36J,KAAKm/b,kBAAoBxkS,EAEzB,IAAM/tG,EAAK5sD,KAAKi5I,aAChBrsF,EAAGq0Y,wBAA0BtmS,IAAe4pR,GAAsB,aAAe,OACjF33X,EAAGs0Y,iBAAmB1mS,GAAgBE,oBAAsB8pR,GAA4B,aAAe,MAExG,GAAC,CAAAhib,IAAA,iBAAAutB,IAED,WAGC,OADAhc,QAAQk/C,KAAM,kGACPjzD,KAAKkzS,mBAAqB1jJ,GAAiBN,GAn28B7B,GAq28BtB,EAACjgI,IAED,SAAoBwvI,GAEnB1qJ,QAAQk/C,KAAM,kGACdjzD,KAAKkzS,iBAAmBz0I,IAAavP,GAAeM,GAAiBC,EAEtE,GAAC,CAAAjtJ,IAAA,kBAAAutB,IAED,WAGC,OADAhc,QAAQk/C,KAAM,+MACPjzD,KAAKo1b,gBAEb,EAACnma,IAED,SAAqBxwB,GAEpBsV,QAAQk/C,KAAM,+MACdjzD,KAAKo1b,iBAAmB32b,CAEzB,KAACkvO,CAAA,CA3+EiB,GA++EbuJ,IAAc,SAAAC,GAAAn7N,EAAAk7N,EAAAC,GAAA,IAAAM,EAAA98N,EAAAu8N,GAAA,SAAAA,IAAA,OAAAzsO,EAAA,KAAAysO,GAAAO,EAAA33O,MAAA,KAAAG,UAAA,QAAAsJ,EAAA2tO,EAAA,EAASvJ,KAE7BuJ,IAAet6O,UAAUo0O,kBAAmB,EAAK,IAqE3CuG,IAAK,SAAAC,GAAAx7N,EAAAu7N,EAAAC,GAAA,IAAAc,EAAA39N,EAAA48N,GAEV,SAAAA,IAAc,IAAAgC,EAqBZ,OArBY9uO,EAAA,KAAA8sO,IAEbgC,EAAAjB,EAAAz7O,KAAA,OAEKs7K,SAAU,EAEfohE,EAAK30O,KAAO,QAEZ20O,EAAK35K,WAAa,KAClB25K,EAAKnhE,YAAc,KACnBmhE,EAAK59D,IAAM,KAEX49D,EAAKsoI,qBAAuB,EAC5BtoI,EAAKuzM,oBAAsB,EAE3BvzM,EAAKnJ,iBAAmB,KAEW,qBAAvB4G,oBAEXA,mBAAmBz4M,cAAe,IAAI43E,YAAa,UAAW,CAAE30E,OAAMhmB,EAAA+9N,MAEtEA,CAEF,CA+BC,OA/BAhwO,EAAAguO,EAAA,EAAA/0O,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAeb,OAbA9xC,GAAA5rH,EAAAi8N,EAAA36O,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEO,OAAtBx3K,EAAOo+D,aAAsB5/D,KAAK4/D,WAAap+D,EAAOo+D,WAAW1+D,SAC1C,OAAvBM,EAAO42K,cAAuBp4K,KAAKo4K,YAAc52K,EAAO42K,YAAYl3K,SACrD,OAAfM,EAAOm6K,MAAe37K,KAAK27K,IAAMn6K,EAAOm6K,IAAIz6K,SAEjDlB,KAAK6hX,qBAAuBrgX,EAAOqgX,qBACnC7hX,KAAK8sb,oBAAsBtrb,EAAOsrb,oBAED,OAA5Btrb,EAAO4uO,mBAA4BpwO,KAAKowO,iBAAmB5uO,EAAO4uO,iBAAiBlvO,SAExFlB,KAAK4+J,iBAAmBp9J,EAAOo9J,iBAExB5+J,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ63B,GAEP,IAAMoN,EAAIwjG,GAAA5rH,EAAAi8N,EAAA36O,WAAA,eAAAC,KAAA,KAAiBy5B,GAM3B,OAJkB,OAAbt2B,KAAK27K,MAAej4I,EAAKvhC,OAAOw5K,IAAM37K,KAAK27K,IAAInc,UAC/Cx/J,KAAK6hX,qBAAuB,IAAIn+U,EAAKvhC,OAAO0/W,qBAAuB7hX,KAAK6hX,sBAC3C,IAA7B7hX,KAAK8sb,sBAA4BppZ,EAAKvhC,OAAO2qb,oBAAsB9sb,KAAK8sb,qBAEtEppZ,CAER,KAAC6zM,CAAA,CAxDS,CAAS/hE,IA4DdmiE,IAAiB,WAEtB,SAAAA,EAAa50O,EAAO0mL,GAASh/K,EAAA,KAAAktO,GAE5B33O,KAAK+3O,qBAAsB,EAE3B/3O,KAAK+C,MAAQA,EACb/C,KAAKypL,OAASA,EACdzpL,KAAK29E,WAAkBvzE,IAAVrH,EAAsBA,EAAMnL,OAAS6xL,EAAS,EAE3DzpL,KAAK0iL,MAAQhyB,GACb1wJ,KAAK0pb,aAAe,CAAE3/Y,OAAQ,EAAG4zC,OAAS,GAC1C39E,KAAK2pb,aAAe,GAEpB3pb,KAAK3G,QAAU,EAEf2G,KAAK67G,KAAOg2C,IAEb,CA2IC,OA3IAtoJ,EAAAouO,EAAA,EAAAn1O,IAAA,mBAAA/D,MAED,WAAoB,GAAC,CAAA+D,IAAA,cAAAysB,IAErB,SAAiBxwB,IAED,IAAVA,GAAiBuB,KAAK3G,SAE5B,GAAC,CAAAmJ,IAAA,cAAAutB,IAED,WAGC,OADAm1Z,GAAU,mHACHllb,KAAK0pb,YAEb,GAAC,CAAAlnb,IAAA,WAAA/D,MAED,SAAUA,GAIT,OAFAuB,KAAK0iL,MAAQjkL,EAENuB,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBqsC,EAAO6yC,GAEtB39E,KAAK2pb,aAAa7sb,KAAM,CAAEguC,MAAAA,EAAO6yC,MAAAA,GAElC,GAAC,CAAAn7E,IAAA,oBAAA/D,MAED,WAECuB,KAAK2pb,aAAa/xb,OAAS,CAE5B,GAAC,CAAA4K,IAAA,OAAA/D,MAED,SAAM+C,GAOL,OALAxB,KAAK+C,MAAQ,IAAIvB,EAAOuB,MAAMoX,YAAa3Y,EAAOuB,OAClD/C,KAAK29E,MAAQn8E,EAAOm8E,MACpB39E,KAAKypL,OAASjoL,EAAOioL,OACrBzpL,KAAK0iL,MAAQlhL,EAAOkhL,MAEb1iL,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQmkL,EAAQ1sB,EAAW2sB,GAE1BD,GAAU5iL,KAAKypL,OACf5G,GAAU3sB,EAAUuzB,OAEpB,IAAM,IAAI/sL,EAAI,EAAGmK,EAAI7G,KAAKypL,OAAQ/sL,EAAImK,EAAGnK,IAExCsD,KAAK+C,MAAO6/K,EAASlmL,GAAMw5J,EAAUnzJ,MAAO8/K,EAASnmL,GAItD,OAAOsD,IAER,GAAC,CAAAwC,IAAA,MAAA/D,MAED,SAAKA,GAAoB,IAAbsrC,EAAM9pC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAIpB,OAFAD,KAAK+C,MAAMksB,IAAKxwB,EAAOsrC,GAEhB/pC,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOilC,QAEqBt5B,IAAtBs5B,EAAKk0M,eAETl0M,EAAKk0M,aAAe,CAAC,QAIWxtO,IAA5BpK,KAAK+C,MAAMo3J,OAAO09E,QAEtB73O,KAAK+C,MAAMo3J,OAAO09E,MAAQhmF,WAI2BznJ,IAAjDs5B,EAAKk0M,aAAc53O,KAAK+C,MAAMo3J,OAAO09E,SAEzCn0M,EAAKk0M,aAAc53O,KAAK+C,MAAMo3J,OAAO09E,OAAU73O,KAAK+C,MAAM6N,MAAO,GAAIupJ,QAItE,IAAMp3J,EAAQ,IAAI/C,KAAK+C,MAAMoX,YAAaupB,EAAKk0M,aAAc53O,KAAK+C,MAAMo3J,OAAO09E,QAEzEhmN,EAAK,IAAI7xB,KAAKma,YAAapX,EAAO/C,KAAKypL,QAG7C,OAFA53J,EAAGimN,SAAU93O,KAAK0iL,OAEX7wJ,CAER,GAAC,CAAArvB,IAAA,WAAA/D,MAED,SAAU05C,GAIT,OAFAn4C,KAAKkjL,iBAAmB/qI,EAEjBn4C,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQilC,GAwBP,YAtB2Bt5B,IAAtBs5B,EAAKk0M,eAETl0M,EAAKk0M,aAAe,CAAC,QAMWxtO,IAA5BpK,KAAK+C,MAAMo3J,OAAO09E,QAEtB73O,KAAK+C,MAAMo3J,OAAO09E,MAAQhmF,WAI2BznJ,IAAjDs5B,EAAKk0M,aAAc53O,KAAK+C,MAAMo3J,OAAO09E,SAEzCn0M,EAAKk0M,aAAc53O,KAAK+C,MAAMo3J,OAAO09E,OAAUl7O,MAAM0lB,KAAM,IAAIklF,YAAavnG,KAAK+C,MAAMo3J,UAMjF,CACNt+C,KAAM77G,KAAK67G,KACXs+C,OAAQn6J,KAAK+C,MAAMo3J,OAAO09E,MAC1BjzO,KAAM5E,KAAK+C,MAAMoX,YAAYhhB,KAC7BswL,OAAQzpL,KAAKypL,OAGf,KAACkuD,CAAA,CA7JqB,GAiKjBK,IAA0B,IAAIlxE,GAE9BmxE,IAA0B,WAE/B,SAAAA,EAAaC,EAAmBz1D,EAAU14I,GAA6B,IAArB6yH,EAAU38J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,IAAAA,UAAA,GAAQwK,EAAA,KAAAwtO,GAEnEj4O,KAAKwpL,8BAA+B,EAEpCxpL,KAAK7G,KAAO,GAEZ6G,KAAK0jC,KAAOw0M,EACZl4O,KAAKyiL,SAAWA,EAChBziL,KAAK+pC,OAASA,EAEd/pC,KAAK48J,WAAaA,CAEnB,CAqUC,OArUArzJ,EAAA0uO,EAAA,EAAAz1O,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAK0jC,KAAKi6C,KAElB,GAAC,CAAAn7E,IAAA,QAAAutB,IAED,WAEC,OAAO/vB,KAAK0jC,KAAK3gC,KAElB,GAAC,CAAAP,IAAA,cAAAysB,IAED,SAAiBxwB,GAEhBuB,KAAK0jC,KAAK47H,YAAc7gK,CAEzB,GAAC,CAAA+D,IAAA,eAAA/D,MAED,SAAcqI,GAEb,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK0jC,KAAKi6C,MAAOjhF,EAAImK,EAAGnK,IAE5Cs7O,IAAUjtE,oBAAqB/qK,KAAMtD,GAErCs7O,IAAUnwE,aAAc/gK,GAExB9G,KAAKgjL,OAAQtmL,EAAGs7O,IAAU97O,EAAG87O,IAAU3wO,EAAG2wO,IAAU1wO,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,oBAAA/D,MAED,SAAmBqI,GAElB,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvCs7O,IAAUjtE,oBAAqB/qK,KAAMtD,GAErCs7O,IAAU/0D,kBAAmBn8K,GAE7B9G,KAAKgjL,OAAQtmL,EAAGs7O,IAAU97O,EAAG87O,IAAU3wO,EAAG2wO,IAAU1wO,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBqI,GAEnB,IAAM,IAAIpK,EAAI,EAAGmK,EAAI7G,KAAK29E,MAAOjhF,EAAImK,EAAGnK,IAEvCs7O,IAAUjtE,oBAAqB/qK,KAAMtD,GAErCs7O,IAAUtnE,mBAAoB5pK,GAE9B9G,KAAKgjL,OAAQtmL,EAAGs7O,IAAU97O,EAAG87O,IAAU3wO,EAAG2wO,IAAU1wO,GAIrD,OAAOtH,IAER,GAAC,CAAAwC,IAAA,eAAA/D,MAED,SAAcmQ,EAAOvJ,GAEpB,IAAI5G,EAAQuB,KAAK+C,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS1kC,GAIjE,OAFKrF,KAAK48J,aAAan+J,EAAQy2J,GAAaz2J,EAAOuB,KAAK+C,QAEjDtE,CAER,GAAC,CAAA+D,IAAA,eAAA/D,MAED,SAAcmQ,EAAOvJ,EAAW5G,GAM/B,OAJKuB,KAAK48J,aAAan+J,EAAQoiH,GAAWpiH,EAAOuB,KAAK+C,QAEtD/C,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS1kC,GAAc5G,EAEjEuB,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,EAAO1S,GAMZ,OAJK8D,KAAK48J,aAAa1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,QAE9C/C,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,QAAW7tC,EAErD8D,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,EAAOvH,GAMZ,OAJKrH,KAAK48J,aAAav1J,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,QAE9C/C,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,GAAM1iC,EAEzDrH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,EAAOtH,GAMZ,OAJKtH,KAAK48J,aAAat1J,EAAIu5G,GAAWv5G,EAAGtH,KAAK+C,QAE9C/C,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,GAAMziC,EAEzDtH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,EAAOxH,GAMZ,OAJKpH,KAAK48J,aAAax1J,EAAIy5G,GAAWz5G,EAAGpH,KAAK+C,QAE9C/C,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,GAAM3iC,EAEzDpH,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAI1S,EAAI8D,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,QAIzD,OAFK/pC,KAAK48J,aAAa1gK,EAAIg5J,GAAah5J,EAAG8D,KAAK+C,QAEzC7G,CAER,GAAC,CAAAsG,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAIvH,EAAIrH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,GAIlE,OAFK/pC,KAAK48J,aAAav1J,EAAI6tJ,GAAa7tJ,EAAGrH,KAAK+C,QAEzCsE,CAER,GAAC,CAAA7E,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAItH,EAAItH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,GAIlE,OAFK/pC,KAAK48J,aAAat1J,EAAI4tJ,GAAa5tJ,EAAGtH,KAAK+C,QAEzCuE,CAER,GAAC,CAAA9E,IAAA,OAAA/D,MAED,SAAMmQ,GAEL,IAAIxH,EAAIpH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAAS,GAIlE,OAFK/pC,KAAK48J,aAAax1J,EAAI8tJ,GAAa9tJ,EAAGpH,KAAK+C,QAEzCqE,CAER,GAAC,CAAA5E,IAAA,QAAA/D,MAED,SAAOmQ,EAAO1S,EAAGmL,GAchB,OAZAuH,EAAQA,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAEnC/pC,KAAK48J,aAET1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,OACvBsE,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,QAIxB/C,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAM1S,EAC/B8D,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMvH,EAExBrH,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQmQ,EAAO1S,EAAGmL,EAAGC,GAgBpB,OAdAsH,EAAQA,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAEnC/pC,KAAK48J,aAET1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,OACvBsE,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,OACvBuE,EAAIu5G,GAAWv5G,EAAGtH,KAAK+C,QAIxB/C,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAM1S,EAC/B8D,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMvH,EAC/BrH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMtH,EAExBtH,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASmQ,EAAO1S,EAAGmL,EAAGC,EAAGF,GAkBxB,OAhBAwH,EAAQA,EAAQ5O,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAEnC/pC,KAAK48J,aAET1gK,EAAI2kH,GAAW3kH,EAAG8D,KAAK+C,OACvBsE,EAAIw5G,GAAWx5G,EAAGrH,KAAK+C,OACvBuE,EAAIu5G,GAAWv5G,EAAGtH,KAAK+C,OACvBqE,EAAIy5G,GAAWz5G,EAAGpH,KAAK+C,QAIxB/C,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAM1S,EAC/B8D,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMvH,EAC/BrH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMtH,EAC/BtH,KAAK0jC,KAAK3gC,MAAO6L,EAAQ,GAAMxH,EAExBpH,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOilC,GAEN,QAAct5B,IAATs5B,EAAqB,CAEzB3vB,QAAQC,IAAK,qHAIb,IAFA,IAAMjR,EAAQ,GAEJrG,EAAI,EAAGA,EAAIsD,KAAK29E,MAAOjhF,IAIhC,IAFA,IAAMkS,EAAQlS,EAAIsD,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAEhCl6B,EAAI,EAAGA,EAAI7P,KAAKyiL,SAAU5yK,IAEnC9M,EAAMjG,KAAMkD,KAAK0jC,KAAK3gC,MAAO6L,EAAQiB,IAMvC,OAAO,IAAI2yK,GAAiB,IAAIxiL,KAAK+C,MAAMoX,YAAapX,GAAS/C,KAAKyiL,SAAUziL,KAAK48J,WAEtF,CAcC,YAZiCxyJ,IAA5Bs5B,EAAKy0M,qBAETz0M,EAAKy0M,mBAAqB,CAAC,QAIuB/tO,IAA9Cs5B,EAAKy0M,mBAAoBn4O,KAAK0jC,KAAKm4E,QAEvCn4E,EAAKy0M,mBAAoBn4O,KAAK0jC,KAAKm4E,MAAS77G,KAAK0jC,KAAKxiC,MAAOwiC,IAIvD,IAAIu0M,EAA4Bv0M,EAAKy0M,mBAAoBn4O,KAAK0jC,KAAKm4E,MAAQ77G,KAAKyiL,SAAUziL,KAAK+pC,OAAQ/pC,KAAK48J,WAIrH,GAAC,CAAAp6J,IAAA,SAAA/D,MAED,SAAQilC,GAEP,QAAct5B,IAATs5B,EAAqB,CAEzB3vB,QAAQC,IAAK,0HAIb,IAFA,IAAMjR,EAAQ,GAEJrG,EAAI,EAAGA,EAAIsD,KAAK29E,MAAOjhF,IAIhC,IAFA,IAAMkS,EAAQlS,EAAIsD,KAAK0jC,KAAK+lJ,OAASzpL,KAAK+pC,OAEhCl6B,EAAI,EAAGA,EAAI7P,KAAKyiL,SAAU5yK,IAEnC9M,EAAMjG,KAAMkD,KAAK0jC,KAAK3gC,MAAO6L,EAAQiB,IAQvC,MAAO,CACN4yK,SAAUziL,KAAKyiL,SACf79K,KAAM5E,KAAK+C,MAAMoX,YAAYhhB,KAC7B4J,MAAOA,EACP65J,WAAY58J,KAAK48J,WAGnB,CAgBC,YAZiCxyJ,IAA5Bs5B,EAAKy0M,qBAETz0M,EAAKy0M,mBAAqB,CAAC,QAIuB/tO,IAA9Cs5B,EAAKy0M,mBAAoBn4O,KAAK0jC,KAAKm4E,QAEvCn4E,EAAKy0M,mBAAoBn4O,KAAK0jC,KAAKm4E,MAAS77G,KAAK0jC,KAAK87H,OAAQ97H,IAIxD,CACN8lJ,8BAA8B,EAC9B/G,SAAUziL,KAAKyiL,SACf/+I,KAAM1jC,KAAK0jC,KAAKm4E,KAChB9xE,OAAQ/pC,KAAK+pC,OACb6yH,WAAY58J,KAAK48J,WAKpB,KAACq7E,CAAA,CAnV8B,GAmjBhC,IAmvBM0E,IAAwB,SAAAC,GAAA5gO,EAAA2gO,EAAAC,GAAA,IAAAS,EAAA1iO,EAAAgiO,GAE7B,SAAAA,EAAa55O,EAAO0/K,EAAU7lB,GAAmC,IAAAghF,EAAvBl2C,EAAgBznM,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAMnB,OANoBwK,EAAA,KAAAkyO,IAE7DiB,EAAAP,EAAAxgP,KAAA,KAAOkG,EAAO0/K,EAAU7lB,IAEnBysC,4BAA6B,EAElCu0C,EAAKl2C,iBAAmBA,EAAiBk2C,CAE1C,CAsBC,OAtBAr0O,EAAAozO,EAAA,EAAAn6O,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAAqhO,EAAA//O,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK0nM,iBAAmBlmM,EAAOkmM,iBAExB1nM,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAAqhO,EAAA//O,WAAA,eAAAC,KAAA,MAMV,OAJA6mC,EAAKgkK,iBAAmB1nM,KAAK0nM,iBAE7BhkK,EAAK2lK,4BAA6B,EAE3B3lK,CAER,KAACi5M,CAAA,CAhC4B,CAASn6D,IA4VtC,IAq4BK4kC,IAAiB,SAAAs2B,GAAA1hO,EAAAorM,EAAAs2B,GAAA,IAAA2B,EAAA1kO,EAAAysM,GAEtB,SAAAA,EAAa5uC,GAAa,IAAAknE,EAkBI,OAlBJj1O,EAAA,KAAA28M,IAEzBs4B,EAAAL,EAAAxiP,KAAA,OAEKqwO,qBAAsB,EAE3BwS,EAAK96O,KAAO,oBAEZ86O,EAAKl4M,MAAQ,IAAI+zH,GAAO,UAExBmkF,EAAKnjP,IAAM,KAEXmjP,EAAKt+D,UAAY,EACjBs+D,EAAK7B,QAAU,QACf6B,EAAK5B,SAAW,QAEhB4B,EAAK/jE,KAAM,EAEX+jE,EAAKt9D,UAAW5J,GAAaknE,CAE9B,CAmBC,OAnBAn2O,EAAA69M,EAAA,EAAA5kN,IAAA,OAAA/D,MAGD,SAAM+C,GAcL,OAZA0lI,GAAA5rH,EAAA8rM,EAAAxqN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OAExBxnC,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKohL,UAAY5/K,EAAO4/K,UACxBphL,KAAK69O,QAAUr8O,EAAOq8O,QACtB79O,KAAK89O,SAAWt8O,EAAOs8O,SAEvB99O,KAAK27K,IAAMn6K,EAAOm6K,IAEX37K,IAER,KAAConN,CAAA,CAzCqB,CAAS7rC,IA6C1BwiE,IAAyB,IAAIj3E,GAC7Bk3E,IAAuB,IAAIl3E,GAC3Bm3E,IAAiC,IAAIttE,GACrCutE,IAAuB,IAAI9vE,GAC3B+vE,IAA0B,IAAIjxE,GAE9BkxE,IAAI,SAAAC,GAAAriO,EAAAoiO,EAAAC,GAAA,IAAAoB,EAAA9kO,EAAAyjO,GAET,SAAAA,IAAmF,IAAAyB,EAAtE/0E,EAAQ7qK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIylL,GAAkB7M,EAAQ54K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAImnN,IAWlC,OAXqD38M,EAAA,KAAA2zO,IAE/EyB,EAAAJ,EAAA5iP,KAAA,OAEKy7K,QAAS,EAEdunE,EAAKj7O,KAAO,OAEZi7O,EAAK/0E,SAAWA,EAChB+0E,EAAKhnE,SAAWA,EAEhBgnE,EAAKv0D,qBAAqBu0D,CAE3B,CA2LC,OA3LAt2O,EAAA60O,EAAA,EAAA57O,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAOb,OALA9xC,GAAA5rH,EAAA8iO,EAAAxhP,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAK64K,SAAWl8K,MAAM0E,QAASG,EAAOq3K,UAAar3K,EAAOq3K,SAASjoK,QAAUpP,EAAOq3K,SACpF74K,KAAK8qK,SAAWtpK,EAAOspK,SAEhB9qK,IAER,GAAC,CAAAwC,IAAA,uBAAA/D,MAED,WAEC,IAAMqsK,EAAW9qK,KAAK8qK,SAItB,GAAwB,OAAnBA,EAASl8J,MAAiB,CAK9B,IAHA,IAAM45K,EAAoB1d,EAAS54F,WAAW3S,SACxCi/K,EAAgB,CAAE,GAEd9hP,EAAI,EAAGmK,EAAI2hL,EAAkB7qG,MAAOjhF,EAAImK,EAAGnK,IAEpDqhP,IAAShzE,oBAAqByd,EAAmB9rL,EAAI,GACrDshP,IAAOjzE,oBAAqByd,EAAmB9rL,GAE/C8hP,EAAe9hP,GAAM8hP,EAAe9hP,EAAI,GACxC8hP,EAAe9hP,IAAOqhP,IAAS1wE,WAAY2wE,KAI5ClzE,EAASh4J,aAAc,eAAgB,IAAI+xK,GAAwB25D,EAAe,GAEnF,MAECzqO,QAAQk/C,KAAM,iGAIf,OAAOjzD,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASitL,EAAWC,GAEnB,IAAM7gB,EAAW9qK,KAAK8qK,SAChB7C,EAAcjoK,KAAKioK,YACnBw2E,EAAY/yD,EAAUxxH,OAAOkkL,KAAKK,UAClCv4D,EAAYpb,EAASob,UAU3B,GANiC,OAA5Bpb,EAASmb,gBAA0Bnb,EAASwb,wBAEjD63D,IAAUziF,KAAMoP,EAASmb,gBACzBk4D,IAAUt2E,aAAcI,GACxBk2E,IAAUj1E,QAAUu1E,GAEiC,IAAhD/yD,EAAUpd,IAAIf,iBAAkB4wE,KAArC,CAIAF,IAAiBviF,KAAMuM,GAAcn4B,SACrCouG,IAAOxiF,KAAMgwB,EAAUpd,KAAMzG,aAAco2E,KAE3C,IAAMS,EAAiBD,IAAgBz+O,KAAKq3I,MAAMn7I,EAAI8D,KAAKq3I,MAAMhwI,EAAIrH,KAAKq3I,MAAM/vI,GAAM,GAChFq3O,EAAmBD,EAAiBA,EAEpCE,EAAS,IAAI93E,GACb+3E,EAAO,IAAI/3E,GACXg4E,EAAe,IAAIh4E,GACnBi4E,EAAW,IAAIj4E,GACfp4E,EAAO1uF,KAAKk0O,eAAiB,EAAI,EAEjCtlO,EAAQk8J,EAASl8J,MAEjB45K,EADa1d,EAAS54F,WACS3S,SAErC,GAAe,OAAV3wD,EAKJ,IAHA,IAGUlS,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBjkC,EAFT5J,KAAKiuC,IAAKt8B,EAAM+uE,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAElC,EAAGjhF,EAAImK,EAAGnK,GAAKgyF,EAAO,CAEpD,IAAM1yF,EAAI4S,EAAMunJ,KAAMz5J,GAChB6J,EAAIqI,EAAMunJ,KAAMz5J,EAAI,GAO1B,GALAkiP,EAAO7zE,oBAAqByd,EAAmBxsL,GAC/C6iP,EAAK9zE,oBAAqByd,EAAmBjiL,KAE9B23O,IAAOc,oBAAqBJ,EAAQC,EAAME,EAAUD,GAErDH,GAAd,CAEAI,EAASl3E,aAAc7nK,KAAKioK,aAE5B,IAAMyO,EAAWgV,EAAUpd,IAAIl2E,OAAOi1E,WAAY0xE,GAE7CroE,EAAWgV,EAAU7X,MAAQ6C,EAAWgV,EAAU5X,KAEvD6X,EAAW7uL,KAAM,CAEhB45K,SAAUA,EAGVhM,MAAOo0E,EAAa59O,QAAQ2mK,aAAc7nK,KAAKioK,aAC/Cr5J,MAAOlS,EACPwvL,KAAM,KACND,UAAW,KACX9pL,OAAQnC,MAjBgC,CAqB1C,MAOA,IAHA,IAGUtD,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBjkC,EAFT5J,KAAKiuC,IAAKs9I,EAAkB7qG,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAE9C,EAAGjhF,EAAImK,EAAGnK,GAAKgyF,EAAO,CAOpD,GALAkwJ,EAAO7zE,oBAAqByd,EAAmB9rL,GAC/CmiP,EAAK9zE,oBAAqByd,EAAmB9rL,EAAI,KAElCwhP,IAAOc,oBAAqBJ,EAAQC,EAAME,EAAUD,GAErDH,GAAd,CAEAI,EAASl3E,aAAc7nK,KAAKioK,aAE5B,IAAMyO,EAAWgV,EAAUpd,IAAIl2E,OAAOi1E,WAAY0xE,GAE7CroE,EAAWgV,EAAU7X,MAAQ6C,EAAWgV,EAAU5X,KAEvD6X,EAAW7uL,KAAM,CAEhB45K,SAAUA,EAGVhM,MAAOo0E,EAAa59O,QAAQ2mK,aAAc7nK,KAAKioK,aAC/Cr5J,MAAOlS,EACPwvL,KAAM,KACND,UAAW,KACX9pL,OAAQnC,MAjBgC,CAqB1C,CA3FkE,CA+FpE,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,WAEC,IAEMqnL,EAFW9lL,KAAK8qK,SAEWgb,gBAC3BlkL,EAAOrD,OAAOqD,KAAMkkL,GAE1B,GAAKlkL,EAAKhK,OAAS,EAAI,CAEtB,IAAMqvL,EAAiBnB,EAAiBlkL,EAAM,IAE9C,QAAwBwI,IAAnB68K,EAA+B,CAEnCjnL,KAAKurL,sBAAwB,GAC7BvrL,KAAKwrL,sBAAwB,CAAC,EAE9B,IAAM,IAAI1kL,EAAI,EAAGumD,EAAK45H,EAAervL,OAAQkP,EAAIumD,EAAIvmD,IAAO,CAE3D,IAAM3N,EAAO8tL,EAAgBngL,GAAI3N,MAAQ4E,OAAQ+I,GAEjD9G,KAAKurL,sBAAsBzuL,KAAM,GACjCkD,KAAKwrL,sBAAuBryL,GAAS2N,CAEtC,CAED,CAED,CAED,KAACs3O,CAAA,CA1MQ,CAAS5oE,IA8MbypE,IAAuB,IAAIn4E,GAC3Bo4E,IAAqB,IAAIp4E,GAEzBq4E,IAAY,SAAAC,GAAApjO,EAAAmjO,EAAAC,GAAA,IAAAQ,EAAAjlO,EAAAwkO,GAEjB,SAAAA,EAAar0E,EAAU+N,GAAW,IAAAwnE,EAMN,OANM51O,EAAA,KAAA00O,IAEjCkB,EAAAT,EAAA/iP,KAAA,KAAOiuK,EAAU+N,IAEZq7D,gBAAiB,EAEtBmM,EAAKz7O,KAAO,eAAey7O,CAE5B,CAiCC,OAjCA92O,EAAA41O,EAAA,EAAA38O,IAAA,uBAAA/D,MAED,WAEC,IAAMqsK,EAAW9qK,KAAK8qK,SAItB,GAAwB,OAAnBA,EAASl8J,MAAiB,CAK9B,IAHA,IAAM45K,EAAoB1d,EAAS54F,WAAW3S,SACxCi/K,EAAgB,GAEZ9hP,EAAI,EAAGmK,EAAI2hL,EAAkB7qG,MAAOjhF,EAAImK,EAAGnK,GAAK,EAEzDuiP,IAAOl0E,oBAAqByd,EAAmB9rL,GAC/CwiP,IAAKn0E,oBAAqByd,EAAmB9rL,EAAI,GAEjD8hP,EAAe9hP,GAAc,IAANA,EAAY,EAAI8hP,EAAe9hP,EAAI,GAC1D8hP,EAAe9hP,EAAI,GAAM8hP,EAAe9hP,GAAMuiP,IAAO5xE,WAAY6xE,KAIlEp0E,EAASh4J,aAAc,eAAgB,IAAI+xK,GAAwB25D,EAAe,GAEnF,MAECzqO,QAAQk/C,KAAM,yGAIf,OAAOjzD,IAER,KAACm/O,CAAA,CA3CgB,CAASf,KA6DrB92B,IAAc,SAAAq4B,GAAA3jO,EAAAsrM,EAAAq4B,GAAA,IAAAkB,EAAAlmO,EAAA2sM,GAEnB,SAAAA,EAAa9uC,GAAa,IAAA6oE,EAmBI,OAnBJ52O,EAAA,KAAA68M,IAEzB+5B,EAAAR,EAAAhkP,KAAA,OAEKywO,kBAAmB,EAExB+T,EAAKz8O,KAAO,iBAEZy8O,EAAK75M,MAAQ,IAAI+zH,GAAO,UAExB8lF,EAAK9kP,IAAM,KAEX8kP,EAAKjiE,SAAW,KAEhBiiE,EAAK97L,KAAO,EACZ87L,EAAKlgE,iBAAkB,EAEvBkgE,EAAK1lE,KAAM,EAEX0lE,EAAKj/D,UAAW5J,GAAa6oE,CAE9B,CAmBC,OAnBA93O,EAAA+9M,EAAA,EAAA9kN,IAAA,OAAA/D,MAED,SAAM+C,GAeL,OAbA0lI,GAAA5rH,EAAAgsM,EAAA1qN,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKwnC,MAAMk0H,KAAMl6J,EAAOgmC,OAExBxnC,KAAKzD,IAAMiF,EAAOjF,IAElByD,KAAKo/K,SAAW59K,EAAO49K,SAEvBp/K,KAAKulD,KAAO/jD,EAAO+jD,KACnBvlD,KAAKmhL,gBAAkB3/K,EAAO2/K,gBAE9BnhL,KAAK27K,IAAMn6K,EAAOm6K,IAEX37K,IAER,KAACsnN,CAAA,CA1CkB,CAAS/rC,IA8CvBukE,IAA+B,IAAInvE,GACnCovE,IAAqB,IAAI3xE,GACzB4xE,IAAwB,IAAI9yE,GAC5B+yE,IAA4B,IAAIn5E,GAEhCo5E,IAAM,SAAAC,GAAAnkO,EAAAkkO,EAAAC,GAAA,IAAAiB,EAAAzmO,EAAAulO,GAEX,SAAAA,IAAgF,IAAAuB,EAAnE32E,EAAQ7qK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIylL,GAAkB7M,EAAQ54K,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIqnN,IAWlC,OAXkD78M,EAAA,KAAAy1O,IAE5EuB,EAAAL,EAAAvkP,KAAA,OAEK07K,UAAW,EAEhBkpE,EAAK78O,KAAO,SAEZ68O,EAAK32E,SAAWA,EAChB22E,EAAK5oE,SAAWA,EAEhB4oE,EAAKn2D,qBAAqBm2D,CAE3B,CAuGC,OAvGAl4O,EAAA22O,EAAA,EAAA19O,IAAA,OAAA/D,MAED,SAAM+C,EAAQw3K,GAOb,OALA9xC,GAAA5rH,EAAA4kO,EAAAtjP,WAAA,aAAAC,KAAA,KAAY2E,EAAQw3K,GAEpBh5K,KAAK64K,SAAWl8K,MAAM0E,QAASG,EAAOq3K,UAAar3K,EAAOq3K,SAASjoK,QAAUpP,EAAOq3K,SACpF74K,KAAK8qK,SAAWtpK,EAAOspK,SAEhB9qK,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASitL,EAAWC,GAEnB,IAAM7gB,EAAW9qK,KAAK8qK,SAChB7C,EAAcjoK,KAAKioK,YACnBw2E,EAAY/yD,EAAUxxH,OAAOgmL,OAAOzB,UACpCv4D,EAAYpb,EAASob,UAU3B,GANiC,OAA5Bpb,EAASmb,gBAA0Bnb,EAASwb,wBAEjD05D,IAAQtkF,KAAMoP,EAASmb,gBACvB+5D,IAAQn4E,aAAcI,GACtB+3E,IAAQ92E,QAAUu1E,GAEiC,IAA9C/yD,EAAUpd,IAAIf,iBAAkByyE,KAArC,CAIAF,IAAepkF,KAAMuM,GAAcn4B,SACnCiwG,IAAKrkF,KAAMgwB,EAAUpd,KAAMzG,aAAci4E,KAEzC,IAAMpB,EAAiBD,IAAgBz+O,KAAKq3I,MAAMn7I,EAAI8D,KAAKq3I,MAAMhwI,EAAIrH,KAAKq3I,MAAM/vI,GAAM,GAChFq3O,EAAmBD,EAAiBA,EAEpC9vO,EAAQk8J,EAASl8J,MAEjB45K,EADa1d,EAAS54F,WACS3S,SAErC,GAAe,OAAV3wD,EAKJ,IAHA,IAGUlS,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBgiB,EAFT7vD,KAAKiuC,IAAKt8B,EAAM+uE,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAElCjhF,EAAIowD,EAAIpwD,IAAO,CAE7C,IAAMV,EAAI4S,EAAMunJ,KAAMz5J,GAEtBujP,IAAYl1E,oBAAqByd,EAAmBxsL,GAEpDskP,IAAWL,IAAajkP,EAAG2iP,EAAkB12E,EAAayjB,EAAWC,EAAY3rL,KAElF,MAOA,IAHA,IAGUtD,EAHIO,KAAKC,IAAK,EAAGgpL,EAAUp7I,OAGhBjkC,EAFT5J,KAAKiuC,IAAKs9I,EAAkB7qG,MAASuoG,EAAUp7I,MAAQo7I,EAAUvoG,OAE/CjhF,EAAImK,EAAGnK,IAEpCujP,IAAYl1E,oBAAqByd,EAAmB9rL,GAEpD4jP,IAAWL,IAAavjP,EAAGiiP,EAAkB12E,EAAayjB,EAAWC,EAAY3rL,KAtClB,CA4ClE,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,WAEC,IAEMqnL,EAFW9lL,KAAK8qK,SAEWgb,gBAC3BlkL,EAAOrD,OAAOqD,KAAMkkL,GAE1B,GAAKlkL,EAAKhK,OAAS,EAAI,CAEtB,IAAMqvL,EAAiBnB,EAAiBlkL,EAAM,IAE9C,QAAwBwI,IAAnB68K,EAA+B,CAEnCjnL,KAAKurL,sBAAwB,GAC7BvrL,KAAKwrL,sBAAwB,CAAC,EAE9B,IAAM,IAAI1kL,EAAI,EAAGumD,EAAK45H,EAAervL,OAAQkP,EAAIumD,EAAIvmD,IAAO,CAE3D,IAAM3N,EAAO8tL,EAAgBngL,GAAI3N,MAAQ4E,OAAQ+I,GAEjD9G,KAAKurL,sBAAsBzuL,KAAM,GACjCkD,KAAKwrL,sBAAuBryL,GAAS2N,CAEtC,CAED,CAED,CAED,KAACo5O,CAAA,CAtHU,CAAS1qE,IA0HrB,SAAS8qE,IAAW51E,EAAO97J,EAAO+vO,EAAkB12E,EAAayjB,EAAWC,EAAYxpL,GAEvF,IAAMo+O,EAAqBR,IAAKvxE,kBAAmB9D,GAEnD,GAAK61E,EAAqB5B,EAAmB,CAE5C,IAAM6B,EAAiB,IAAI15E,GAE3Bi5E,IAAKU,oBAAqB/1E,EAAO81E,GACjCA,EAAe34E,aAAcI,GAE7B,IAAMyO,EAAWgV,EAAUpd,IAAIl2E,OAAOi1E,WAAYmzE,GAElD,GAAK9pE,EAAWgV,EAAU7X,MAAQ6C,EAAWgV,EAAU5X,IAAM,OAE7D6X,EAAW7uL,KAAM,CAEhB45K,SAAUA,EACVgqE,cAAezjP,KAAK04J,KAAM4qF,GAC1B71E,MAAO81E,EACP5xO,MAAOA,EACPs9K,KAAM,KACN/pL,OAAQA,GAIV,CAED,CAm+LA,IA0DMo/P,IAAiB,SAAAC,GAAAxlP,EAAAulP,EAAAC,GAAA,IAAAgB,EAAA7nP,EAAA4mP,GAEtB,SAAAA,EAAa/oF,GAAa,IAAAoqF,EAMO,OANPn4P,EAAA,KAAA82P,IAEzBqB,EAAAJ,EAAA3lQ,KAAA,KAAO27K,IAEFmqC,qBAAsB,EAE3BigD,EAAKh+P,KAAO,oBAAoBg+P,CAEjC,CAAC,OAAAr5P,EAAAg4P,EAAA,CAVqB,CAAShzE,IAk0BhC,SAASm1E,IAAc3gQ,EAAO6B,EAAM++P,GAEnC,OAAO5gQ,IACJ4gQ,GAAc5gQ,EAAMoX,cAAgBvV,EAAc7B,EAEd,kBAA3B6B,EAAKuyL,kBAET,IAAIvyL,EAAM7B,GAIXpG,MAAMC,UAAUgU,MAAM/T,KAAMkG,EAEpC,CAEA,SAAS0gQ,IAActhQ,GAEtB,OAAOwwD,YAAYC,OAAQzwD,MACtBA,aAAkByhQ,SAExB,CAwTA,IA+BM4C,IAAW,WAEhB,SAAAA,EAAaC,EAAoBC,EAAcC,EAAYT,GAAez7P,EAAA,KAAA+7P,GAEzExmQ,KAAKymQ,mBAAqBA,EAC1BzmQ,KAAK4mQ,aAAe,EAEpB5mQ,KAAKkmQ,kBAAgC97P,IAAjB87P,EACnBA,EAAe,IAAIQ,EAAavsP,YAAawsP,GAC9C3mQ,KAAK0mQ,aAAeA,EACpB1mQ,KAAK2kQ,UAAYgC,EAEjB3mQ,KAAK6mQ,SAAW,KAChB7mQ,KAAK8mQ,iBAAmB,CAAC,CAE1B,CAwMC,OAxMAv9P,EAAAi9P,EAAA,EAAAhkQ,IAAA,WAAA/D,MAED,SAAUnH,GAET,IAAMyvQ,EAAK/mQ,KAAKymQ,mBACZ5sF,EAAK75K,KAAK4mQ,aACbt3F,EAAKy3F,EAAIltF,GACTxK,EAAK03F,EAAIltF,EAAK,GAEfmtF,EAAmB,CAElBC,EAAM,CAEL,IAAIznM,EAEJ0nM,EAAa,CAMZC,EAAc,KAAS7vQ,EAAIg4K,GAAO,CAEjC,IAAM,IAAI83F,EAAWvtF,EAAK,IAAO,CAEhC,QAAYzvK,IAAPklK,EAAmB,CAEvB,GAAKh4K,EAAI+3K,EAAK,MAAM83F,EAMpB,OAFAttF,EAAKktF,EAAGnvQ,OACRoI,KAAK4mQ,aAAe/sF,EACb75K,KAAK2nQ,iBAAkB9tF,EAAK,EAEpC,CAEA,GAAKA,IAAOutF,EAAW,MAKvB,GAHA/3F,EAAKC,EAGAh4K,GAFLg4K,EAAKy3F,IAAOltF,IAKX,MAAMotF,CAIR,CAGAznM,EAAQunM,EAAGnvQ,OACX,MAAMsvQ,CAEP,CAIA,GAAS5vQ,GAAK+3K,EAiDd,MAAM23F,EA7CL,IAAMM,EAAWP,EAAI,GAEhBzvQ,EAAIgwQ,IAERztF,EAAK,EACLxK,EAAKi4F,GAMN,IAAM,IAAIF,EAAWvtF,EAAK,IAAO,CAEhC,QAAYzvK,IAAPilK,EAKJ,OADArvK,KAAK4mQ,aAAe,EACb5mQ,KAAK2nQ,iBAAkB,GAI/B,GAAK9tF,IAAOutF,EAAW,MAKvB,GAHA93F,EAAKD,EAGA/3K,IAFL+3K,EAAK03F,IAAOltF,EAAK,IAKhB,MAAMotF,CAIR,CAGAznM,EAAQq6G,EACRA,EAAK,CASP,CAIA,KAAQA,EAAKr6G,GAAQ,CAEpB,IAAMgoM,EAAQ3tF,EAAKr6G,IAAY,EAE1BloE,EAAIyvQ,EAAIS,GAEZhoM,EAAQgoM,EAIR3tF,EAAK2tF,EAAM,CAIb,CAOA,GALAl4F,EAAKy3F,EAAIltF,QAKGzvK,KAJZilK,EAAK03F,EAAIltF,EAAK,IAOb,OADA75K,KAAK4mQ,aAAe,EACb5mQ,KAAK2nQ,iBAAkB,GAI/B,QAAYv9P,IAAPklK,EAIJ,OAFAuK,EAAKktF,EAAGnvQ,OACRoI,KAAK4mQ,aAAe/sF,EACb75K,KAAK2nQ,iBAAkB9tF,EAAK,EAIrC,CAEA75K,KAAK4mQ,aAAe/sF,EAEpB75K,KAAKynQ,iBAAkB5tF,EAAIxK,EAAIC,EAEhC,CAEA,OAAOtvK,KAAK0nQ,aAAc7tF,EAAIxK,EAAI/3K,EAAGg4K,EAEtC,GAAC,CAAA9sK,IAAA,eAAA/D,MAED,WAEC,OAAOuB,KAAK6mQ,UAAY7mQ,KAAK8mQ,gBAE9B,GAAC,CAAAtkQ,IAAA,mBAAA/D,MAED,SAAkBmQ,GASjB,IALA,IAAM9W,EAASkI,KAAKkmQ,aACnBn5P,EAAS/M,KAAK0mQ,aACdj9E,EAASzpL,KAAK2kQ,UACd56N,EAASn7B,EAAQ66K,EAER/sL,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAEjC5E,EAAQ4E,GAAMqQ,EAAQg9B,EAASrtC,GAIhC,OAAO5E,CAER,GAEA,CAAA0K,IAAA,eAAA/D,MAEA,WAEC,MAAM,IAAIX,MAAO,0BAGlB,GAAC,CAAA0E,IAAA,mBAAA/D,MAED,WAEC,KAEA+nQ,CAAA,CAvNe,GAmOXoB,IAAgB,SAAAC,GAAA7rP,EAAA4rP,EAAAC,GAAA,IAAAiE,EAAAnxP,EAAAitP,GAErB,SAAAA,EAAanB,EAAoBC,EAAcC,EAAYT,GAAe,IAAA2P,EAcvE,OAduEprQ,EAAA,KAAAm9P,IAEzEiO,EAAA/J,EAAAjvQ,KAAA,KAAO4pQ,EAAoBC,EAAcC,EAAYT,IAEhD8B,aAAgB,EACrB6N,EAAK5N,aAAgB,EACrB4N,EAAK3N,aAAgB,EACrB2N,EAAK1N,aAAgB,EAErB0N,EAAK/O,iBAAmB,CAEvBsB,YAAa35G,GACb45G,UAAW55G,IAEVonH,CAEH,CAoHC,OApHAtsQ,EAAAq+P,EAAA,EAAAplQ,IAAA,mBAAA/D,MAED,SAAkBo7K,EAAIxK,EAAIC,GAEzB,IAAMy3F,EAAK/mQ,KAAKymQ,mBACZ6B,EAAQzuF,EAAK,EAChB0uF,EAAQ1uF,EAAK,EAEb2uF,EAAQzB,EAAIuB,GACZG,EAAQ1B,EAAIwB,GAEb,QAAen+P,IAAVo+P,EAEJ,OAASxoQ,KAAK0oQ,eAAeN,aAE5B,KAAK15G,GAGJ45G,EAAQzuF,EACR2uF,EAAQ,EAAIn5F,EAAKC,EAEjB,MAED,KAAK3gB,GAIJ65G,EAAQn5F,EAAK03F,EADbuB,EAAQvB,EAAGnvQ,OAAS,GACOmvQ,EAAIuB,EAAQ,GAEvC,MAED,QAGCA,EAAQzuF,EACR2uF,EAAQl5F,EAMX,QAAellK,IAAVq+P,EAEJ,OAASzoQ,KAAK0oQ,eAAeL,WAE5B,KAAK35G,GAGJ65G,EAAQ1uF,EACR4uF,EAAQ,EAAIn5F,EAAKD,EAEjB,MAED,KAAK1gB,GAGJ45G,EAAQ,EACRE,EAAQn5F,EAAKy3F,EAAI,GAAMA,EAAI,GAE3B,MAED,QAGCwB,EAAQ1uF,EAAK,EACb4uF,EAAQp5F,EAMX,IAAMs5F,EAAuB,IAAZr5F,EAAKD,GACrBoa,EAASzpL,KAAK2kQ,UAEf3kQ,KAAKgoQ,YAAcW,GAAWt5F,EAAKm5F,GACnCxoQ,KAAKkoQ,YAAcS,GAAWF,EAAQn5F,GACtCtvK,KAAKioQ,YAAcK,EAAQ7+E,EAC3BzpL,KAAKmoQ,YAAcI,EAAQ9+E,CAE5B,GAAC,CAAAjnL,IAAA,eAAA/D,MAED,SAAco7K,EAAIxK,EAAI/3K,EAAGg4K,GAuBxB,IArBA,IAAMx3K,EAASkI,KAAKkmQ,aACnBn5P,EAAS/M,KAAK0mQ,aACdj9E,EAASzpL,KAAK2kQ,UAEd1P,EAAKp7E,EAAK4P,EAASm/E,EAAK3T,EAAKxrE,EAC7Bo/E,EAAK7oQ,KAAKioQ,YAAca,EAAK9oQ,KAAKmoQ,YAClCY,EAAK/oQ,KAAKgoQ,YAAagB,EAAKhpQ,KAAKkoQ,YAEjClhQ,GAAM1P,EAAI+3K,IAASC,EAAKD,GACxB03F,EAAK//P,EAAIA,EACTiiQ,EAAMlC,EAAK//P,EAINkiQ,GAAOH,EAAKE,EAAM,EAAIF,EAAKhC,EAAKgC,EAAK/hQ,EACrC2nK,GAAO,EAAIo6F,GAAOE,IAAU,IAAM,EAAIF,GAAOhC,IAAS,GAAMgC,GAAO/hQ,EAAI,EACvE28J,IAAS,EAAIqlG,GAAOC,GAAQ,IAAMD,GAAOjC,EAAK,GAAM//P,EACpDmiQ,EAAKH,EAAKC,EAAMD,EAAKjC,EAIjBrqQ,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAEjC5E,EAAQ4E,GACNwsQ,EAAKn8P,EAAQ87P,EAAKnsQ,GAClBiyK,EAAK5hK,EAAQ67P,EAAKlsQ,GAClBinK,EAAK52J,EAAQkoP,EAAKv4P,GAClBysQ,EAAKp8P,EAAQ+7P,EAAKpsQ,GAIrB,OAAO5E,CAER,KAAC8vQ,CAAA,CAtIoB,CAASpB,KA0IzB4C,IAAiB,SAAAC,GAAArtP,EAAAotP,EAAAC,GAAA,IAAA4C,EAAAtxP,EAAAyuP,GAEtB,SAAAA,EAAa3C,EAAoBC,EAAcC,EAAYT,GAAe,OAAAz7P,EAAA,KAAA2+P,GAAA6C,EAAApvQ,KAAA,KAElE4pQ,EAAoBC,EAAcC,EAAYT,EAEtD,CAwBC,OAxBA38P,EAAA6/P,EAAA,EAAA5mQ,IAAA,eAAA/D,MAED,SAAco7K,EAAIxK,EAAI/3K,EAAGg4K,GAYxB,IAVA,IAAMx3K,EAASkI,KAAKkmQ,aACnBn5P,EAAS/M,KAAK0mQ,aACdj9E,EAASzpL,KAAK2kQ,UAEd4E,EAAU1vF,EAAK4P,EACf+/E,EAAUD,EAAU9/E,EAEpBggF,GAAYnyQ,EAAI+3K,IAASC,EAAKD,GAC9Bq6F,EAAU,EAAID,EAEL/sQ,EAAI,EAAGA,IAAM+sL,IAAW/sL,EAEjC5E,EAAQ4E,GACNqQ,EAAQy8P,EAAU9sQ,GAAMgtQ,EACxB38P,EAAQw8P,EAAU7sQ,GAAM+sQ,EAI3B,OAAO3xQ,CAER,KAACsxQ,CAAA,CA9BqB,CAAS5C,KAwC1BmD,IAAmB,SAAAC,GAAA5tP,EAAA2tP,EAAAC,GAAA,IAAAwC,EAAAzxP,EAAAgvP,GAExB,SAAAA,EAAalD,EAAoBC,EAAcC,EAAYT,GAAe,OAAAz7P,EAAA,KAAAk/P,GAAAyC,EAAAvvQ,KAAA,KAElE4pQ,EAAoBC,EAAcC,EAAYT,EAEtD,CAMC,OANA38P,EAAAogQ,EAAA,EAAAnnQ,IAAA,eAAA/D,MAED,SAAco7K,GAEb,OAAO75K,KAAK2nQ,iBAAkB9tF,EAAK,EAEpC,KAAC8vF,CAAA,CAZuB,CAASnD,KAgB5BsD,IAAa,WAElB,SAAAA,EAAa3wQ,EAAM2qQ,EAAO/2P,EAAQg9P,GAEjC,GAFiDt/P,EAAA,KAAAq/P,QAEnC1/P,IAATjR,EAAqB,MAAM,IAAI2E,MAAO,gDAC3C,QAAesM,IAAV05P,GAAwC,IAAjBA,EAAMlsQ,OAAe,MAAM,IAAIkG,MAAO,oDAAsD3E,GAExH6G,KAAK7G,KAAOA,EAEZ6G,KAAK8jQ,MAAQJ,IAAcI,EAAO9jQ,KAAKgqQ,gBACvChqQ,KAAK+M,OAAS22P,IAAc32P,EAAQ/M,KAAKiqQ,iBAEzCjqQ,KAAKkqQ,iBAAkBH,GAAiB/pQ,KAAKmqQ,qBAE9C,CAyCC,OAtCD5gQ,EAAAugQ,EAAA,EAAAtnQ,IAAA,mCAAA/D,MAwCA,SAAkC3G,GAEjC,OAAO,IAAI6xQ,IAAqB3pQ,KAAK8jQ,MAAO9jQ,KAAK+M,OAAQ/M,KAAK4kQ,eAAgB9sQ,EAE/E,GAAC,CAAA0K,IAAA,iCAAA/D,MAED,SAAgC3G,GAE/B,OAAO,IAAIsxQ,IAAmBppQ,KAAK8jQ,MAAO9jQ,KAAK+M,OAAQ/M,KAAK4kQ,eAAgB9sQ,EAE7E,GAAC,CAAA0K,IAAA,iCAAA/D,MAED,SAAgC3G,GAE/B,OAAO,IAAI8vQ,IAAkB5nQ,KAAK8jQ,MAAO9jQ,KAAK+M,OAAQ/M,KAAK4kQ,eAAgB9sQ,EAE5E,GAAC,CAAA0K,IAAA,mBAAA/D,MAED,SAAkBsrQ,GAEjB,IAAIK,EAEJ,OAASL,GAER,KAAKz7G,GAEJ87G,EAAgBpqQ,KAAKqqQ,iCAErB,MAED,KAAK97G,GAEJ67G,EAAgBpqQ,KAAKsqQ,+BAErB,MAED,KAAK97G,GAEJ47G,EAAgBpqQ,KAAKuqQ,+BAMvB,QAAuBngQ,IAAlBggQ,EAA8B,CAElC,IAAM1pN,EAAU,iCACf1gD,KAAKulQ,cAAgB,yBAA2BvlQ,KAAK7G,KAEtD,QAAgCiR,IAA3BpK,KAAK2lQ,kBAAkC,CAG3C,GAAKoE,IAAkB/pQ,KAAKmqQ,qBAM3B,MAAM,IAAIrsQ,MAAO4iD,GAJjB1gD,KAAKkqQ,iBAAkBlqQ,KAAKmqQ,qBAQ9B,CAGA,OADAp2P,QAAQk/C,KAAM,uBAAwBvS,GAC/B1gD,IAER,CAIA,OAFAA,KAAK2lQ,kBAAoByE,EAElBpqQ,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,WAEC,OAASuB,KAAK2lQ,mBAEb,KAAK3lQ,KAAKqqQ,iCAET,OAAO/7G,GAER,KAAKtuJ,KAAKsqQ,+BAET,OAAO/7G,GAER,KAAKvuJ,KAAKuqQ,+BAET,OAAO/7G,GAIV,GAAC,CAAAhsJ,IAAA,eAAA/D,MAED,WAEC,OAAOuB,KAAK+M,OAAOnV,OAASoI,KAAK8jQ,MAAMlsQ,MAExC,GAEA,CAAA4K,IAAA,QAAA/D,MACA,SAAO+rQ,GAEN,GAAoB,IAAfA,EAIJ,IAFA,IAAM1G,EAAQ9jQ,KAAK8jQ,MAETpnQ,EAAI,EAAGqK,EAAI+8P,EAAMlsQ,OAAQ8E,IAAMqK,IAAMrK,EAE9ConQ,EAAOpnQ,IAAO8tQ,EAMhB,OAAOxqQ,IAER,GAEA,CAAAwC,IAAA,QAAA/D,MACA,SAAOgsQ,GAEN,GAAmB,IAAdA,EAIJ,IAFA,IAAM3G,EAAQ9jQ,KAAK8jQ,MAETpnQ,EAAI,EAAGqK,EAAI+8P,EAAMlsQ,OAAQ8E,IAAMqK,IAAMrK,EAE9ConQ,EAAOpnQ,IAAO+tQ,EAMhB,OAAOzqQ,IAER,GAGA,CAAAwC,IAAA,OAAA/D,MACA,SAAM2yD,EAAWs5M,GAQhB,IANA,IAAM5G,EAAQ9jQ,KAAK8jQ,MAClB6G,EAAQ7G,EAAMlsQ,OAEXyqB,EAAO,EACVuoD,EAAK+/L,EAAQ,EAENtoP,IAASsoP,GAAS7G,EAAOzhP,GAAS+uC,KAEtC/uC,EAIJ,MAAiB,IAATuoD,GAAck5L,EAAOl5L,GAAO8/L,KAEhC9/L,EAMJ,KAFGA,EAEW,IAATvoD,GAAcuoD,IAAO+/L,EAAQ,CAG5BtoP,GAAQuoD,IAGZvoD,GADAuoD,EAAK3tE,KAAKC,IAAK0tE,EAAI,IACP,GAIb,IAAM6+G,EAASzpL,KAAK4kQ,eACpB5kQ,KAAK8jQ,MAAQA,EAAMlzP,MAAOyR,EAAMuoD,GAChC5qE,KAAK+M,OAAS/M,KAAK+M,OAAO6D,MAAOyR,EAAOonK,EAAQ7+G,EAAK6+G,EAEtD,CAEA,OAAOzpL,IAER,GAEA,CAAAwC,IAAA,WAAA/D,MACA,WAEC,IAAImsQ,GAAQ,EAENjG,EAAY3kQ,KAAK4kQ,eAClBD,EAAY1nQ,KAAKwf,MAAOkoP,KAAgB,IAE5C5wP,QAAQwN,MAAO,oDAAqDvhB,MACpE4qQ,GAAQ,GAIT,IAAM9G,EAAQ9jQ,KAAK8jQ,MAClB/2P,EAAS/M,KAAK+M,OAEd49P,EAAQ7G,EAAMlsQ,OAEA,IAAV+yQ,IAEJ52P,QAAQwN,MAAO,uCAAwCvhB,MACvD4qQ,GAAQ,GAMT,IAFA,IAAIC,EAAW,KAELnuQ,EAAI,EAAGA,IAAMiuQ,EAAOjuQ,IAAO,CAEpC,IAAMouQ,EAAWhH,EAAOpnQ,GAExB,GAAyB,kBAAbouQ,GAAyBxzP,MAAOwzP,GAAa,CAExD/2P,QAAQwN,MAAO,mDAAoDvhB,KAAMtD,EAAGouQ,GAC5EF,GAAQ,EACR,KAED,CAEA,GAAkB,OAAbC,GAAqBA,EAAWC,EAAW,CAE/C/2P,QAAQwN,MAAO,0CAA2CvhB,KAAMtD,EAAGouQ,EAAUD,GAC7ED,GAAQ,EACR,KAED,CAEAC,EAAWC,CAEZ,CAEA,QAAgB1gQ,IAAX2C,GAEC02P,IAAc12P,GAElB,IAAM,IAAIrQ,EAAI,EAAGqK,EAAIgG,EAAOnV,OAAQ8E,IAAMqK,IAAMrK,EAAI,CAEnD,IAAM+B,EAAQsO,EAAQrQ,GAEtB,GAAK4a,MAAO7Y,GAAU,CAErBsV,QAAQwN,MAAO,oDAAqDvhB,KAAMtD,EAAG+B,GAC7EmsQ,GAAQ,EACR,KAED,CAED,CAMF,OAAOA,CAER,GAGA,CAAApoQ,IAAA,WAAA/D,MACA,WAaC,IAVA,IAAMqlQ,EAAQ9jQ,KAAK8jQ,MAAMlzP,QACxB7D,EAAS/M,KAAK+M,OAAO6D,QACrB64K,EAASzpL,KAAK4kQ,eAEdmG,EAAsB/qQ,KAAKgrQ,qBAAuBx8G,GAElD0uD,EAAY4mD,EAAMlsQ,OAAS,EAExBqzQ,EAAa,EAEPvuQ,EAAI,EAAGA,EAAIwgN,IAAcxgN,EAAI,CAEtC,IAAIwuQ,GAAO,EAELjjO,EAAO67N,EAAOpnQ,GAKpB,GAAKurC,IAJY67N,EAAOpnQ,EAAI,KAIM,IAANA,GAAWurC,IAAS67N,EAAO,IAEtD,GAAOiH,EAwBNG,GAAO,OAhBP,IAJA,IAAMnhO,EAASrtC,EAAI+sL,EAClB0hF,EAAUphO,EAAS0/I,EACnB2hF,EAAUrhO,EAAS0/I,EAEV55K,EAAI,EAAGA,IAAM45K,IAAW55K,EAAI,CAErC,IAAMpR,EAAQsO,EAAQg9B,EAASl6B,GAE/B,GAAKpR,IAAUsO,EAAQo+P,EAAUt7P,IAChCpR,IAAUsO,EAAQq+P,EAAUv7P,GAAM,CAElCq7P,GAAO,EACP,KAED,CAED,CAYF,GAAKA,EAAO,CAEX,GAAKxuQ,IAAMuuQ,EAAa,CAEvBnH,EAAOmH,GAAenH,EAAOpnQ,GAK7B,IAHA,IAAM2uQ,EAAa3uQ,EAAI+sL,EACtB6hF,EAAcL,EAAaxhF,EAElB55K,EAAI,EAAGA,IAAM45K,IAAW55K,EAEjC9C,EAAQu+P,EAAcz7P,GAAM9C,EAAQs+P,EAAax7P,EAInD,GAEGo7P,CAEJ,CAED,CAIA,GAAK/tD,EAAY,EAAI,CAEpB4mD,EAAOmH,GAAenH,EAAO5mD,GAE7B,IAAM,IAAImuD,EAAanuD,EAAYzzB,EAAQ6hF,EAAcL,EAAaxhF,EAAQ55K,EAAI,EAAGA,IAAM45K,IAAW55K,EAErG9C,EAAQu+P,EAAcz7P,GAAM9C,EAAQs+P,EAAax7P,KAI/Co7P,CAEJ,CAcA,OAZKA,IAAenH,EAAMlsQ,QAEzBoI,KAAK8jQ,MAAQA,EAAMlzP,MAAO,EAAGq6P,GAC7BjrQ,KAAK+M,OAASA,EAAO6D,MAAO,EAAGq6P,EAAaxhF,KAI5CzpL,KAAK8jQ,MAAQA,EACb9jQ,KAAK+M,OAASA,GAIR/M,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,IAAMqlQ,EAAQ9jQ,KAAK8jQ,MAAMlzP,QACnB7D,EAAS/M,KAAK+M,OAAO6D,QAGrB4lB,EAAQ,IAAI+0O,EADSvrQ,KAAKma,aACMna,KAAK7G,KAAM2qQ,EAAO/2P,GAKxD,OAFAypB,EAAMmvO,kBAAoB3lQ,KAAK2lQ,kBAExBnvO,CAER,IAAC,EAAAh0B,IAAA,SAAA/D,MAxaD,SAAe+3B,GAEd,IAEIimN,EAFE+uB,EAAYh1O,EAAMrc,YAKxB,GAAKqxP,EAAUhsG,SAAWx/J,KAAKw/J,OAE9Bi9E,EAAO+uB,EAAUhsG,OAAQhpI,OAEnB,CAGNimN,EAAO,CAEN,KAAQjmN,EAAMr9B,KACd,MAASuqQ,IAAcltO,EAAMstO,MAAOnnQ,OACpC,OAAU+mQ,IAAcltO,EAAMzpB,OAAQpQ,QAIvC,IAAMotQ,EAAgBvzO,EAAMw0O,mBAEvBjB,IAAkBvzO,EAAM2zO,uBAE5B1tB,EAAKstB,cAAgBA,EAIvB,CAIA,OAFAttB,EAAK73O,KAAO4xB,EAAM+uO,cAEX9oB,CAER,KAACqtB,CAAA,CAvDiB,GA+bnBA,IAAcltQ,UAAUotQ,eAAiBn1G,aACzCi1G,IAAcltQ,UAAUqtQ,gBAAkBp1G,aAC1Ci1G,IAAcltQ,UAAUutQ,qBAAuB57G,GAE/C,IAGMk9G,IAAoB,SAAAC,GAAA1vP,EAAAyvP,EAAAC,GAAA,IAAAc,EAAA7xP,EAAA8wP,GAAA,SAAAA,IAAA,OAAAhhQ,EAAA,KAAAghQ,GAAAe,EAAA1sQ,MAAA,KAAAG,UAAA,QAAAsJ,EAAAkiQ,EAAA,EAAS3B,KAEnC2B,IAAqB7uQ,UAAU2oQ,cAAgB,OAC/CkG,IAAqB7uQ,UAAUqtQ,gBAAkBttQ,MACjD8uQ,IAAqB7uQ,UAAUutQ,qBAAuB77G,GACtDm9G,IAAqB7uQ,UAAU0tQ,oCAAiClgQ,EAChEqhQ,IAAqB7uQ,UAAU2tQ,oCAAiCngQ,EAEhE,IAGMwhQ,IAAkB,SAAAC,GAAA7vP,EAAA4vP,EAAAC,GAAA,IAAAc,EAAAhyP,EAAAixP,GAAA,SAAAA,IAAA,OAAAnhQ,EAAA,KAAAmhQ,GAAAe,EAAA7sQ,MAAA,KAAAG,UAAA,QAAAsJ,EAAAqiQ,EAAA,EAAS9B,KAEjC8B,IAAmBhvQ,UAAU2oQ,cAAgB,QAE7C,IAGMwG,IAAmB,SAAAC,GAAAhwP,EAAA+vP,EAAAC,GAAA,IAAAc,EAAAnyP,EAAAoxP,GAAA,SAAAA,IAAA,OAAAthQ,EAAA,KAAAshQ,GAAAe,EAAAhtQ,MAAA,KAAAG,UAAA,QAAAsJ,EAAAwiQ,EAAA,EAASjC,KAElCiC,IAAoBnvQ,UAAU2oQ,cAAgB,SAE9C,IAIM2G,IAA2B,SAAAC,GAAAnwP,EAAAkwP,EAAAC,GAAA,IAAAiE,EAAAz1P,EAAAuxP,GAEhC,SAAAA,EAAazF,EAAoBC,EAAcC,EAAYT,GAAe,OAAAz7P,EAAA,KAAAyhQ,GAAAkE,EAAAvzQ,KAAA,KAElE4pQ,EAAoBC,EAAcC,EAAYT,EAEtD,CAoBC,OApBA38P,EAAA2iQ,EAAA,EAAA1pQ,IAAA,eAAA/D,MAED,SAAco7K,EAAIxK,EAAI/3K,EAAGg4K,GAUxB,IARA,IAAMx3K,EAASkI,KAAKkmQ,aACnBn5P,EAAS/M,KAAK0mQ,aACdj9E,EAASzpL,KAAK2kQ,UAEd5uG,GAAUz+J,EAAI+3K,IAASC,EAAKD,GAEzBtlI,EAAS8vI,EAAK4P,EAER1+I,EAAMhB,EAAS0/I,EAAQ1/I,IAAWgB,EAAKhB,GAAU,EAE1Dg5H,GAAWspG,UAAWv0Q,EAAQ,EAAGiV,EAAQg9B,EAAS0/I,EAAQ18K,EAAQg9B,EAAQgsH,GAI3E,OAAOj+J,CAER,KAACo0Q,CAAA,CA1B+B,CAAS1F,KAiCpC8F,IAAuB,SAAAC,GAAAvwP,EAAAswP,EAAAC,GAAA,IAAA+F,EAAA33P,EAAA2xP,GAAA,SAAAA,IAAA,OAAA7hQ,EAAA,KAAA6hQ,GAAAgG,EAAAxyQ,MAAA,KAAAG,UAAA,CAM3B,OAN2BsJ,EAAA+iQ,EAAA,EAAA9pQ,IAAA,iCAAA/D,MAE5B,SAAgC3G,GAE/B,OAAO,IAAIo0Q,IAA6BlsQ,KAAK8jQ,MAAO9jQ,KAAK+M,OAAQ/M,KAAK4kQ,eAAgB9sQ,EAEvF,KAACw0Q,CAAA,CAN2B,CAASxC,KAUtCwC,IAAwB1vQ,UAAU2oQ,cAAgB,aAElD+G,IAAwB1vQ,UAAUutQ,qBAAuB57G,GACzD+9G,IAAwB1vQ,UAAU2tQ,oCAAiCngQ,EAEnE,IAGMqiQ,IAAmB,SAAAC,GAAA1wP,EAAAywP,EAAAC,GAAA,IAAAkG,EAAAj4P,EAAA8xP,GAAA,SAAAA,IAAA,OAAAhiQ,EAAA,KAAAgiQ,GAAAmG,EAAA9yQ,MAAA,KAAAG,UAAA,QAAAsJ,EAAAkjQ,EAAA,EAAS3C,KAElC2C,IAAoB7vQ,UAAU2oQ,cAAgB,SAC9CkH,IAAoB7vQ,UAAUqtQ,gBAAkBttQ,MAChD8vQ,IAAoB7vQ,UAAUutQ,qBAAuB77G,GACrDm+G,IAAoB7vQ,UAAU0tQ,oCAAiClgQ,EAC/DqiQ,IAAoB7vQ,UAAU2tQ,oCAAiCngQ,EAE/D,IAGMwiQ,IAAmB,SAAAC,GAAA7wP,EAAA4wP,EAAAC,GAAA,IAAAuG,EAAAz4P,EAAAiyP,GAAA,SAAAA,IAAA,OAAAniQ,EAAA,KAAAmiQ,GAAAwG,EAAAtzQ,MAAA,KAAAG,UAAA,QAAAsJ,EAAAqjQ,EAAA,EAAS9C,KAElC8C,IAAoBhwQ,UAAU2oQ,cAAgB,SA+c9C,IAwCMuJ,IAAcvlQ,GAEnB,SAAAulQ,EAAa90H,EAAQvtE,EAAYr0C,GAAU3tB,EAAA,KAAAqkQ,GAE1C,IAAM9hF,EAAQhtL,KAEV8sE,GAAY,EACZiiM,EAAc,EACdC,EAAa,EACbC,OAAc7kQ,EACZ8kQ,EAAW,GAKjBlvQ,KAAKwtE,aAAUpjE,EACfpK,KAAKg6I,OAASA,EACdh6I,KAAKysE,WAAaA,EAClBzsE,KAAKo4B,QAAUA,EAEfp4B,KAAKmvQ,UAAY,SAAWjnO,GAE3B8mO,KAEmB,IAAdliM,QAEmB1iE,IAAlB4iL,EAAMx/G,SAEVw/G,EAAMx/G,QAAStlC,EAAK6mO,EAAaC,GAMnCliM,GAAY,CAEb,EAEA9sE,KAAKovQ,QAAU,SAAWlnO,GAEzB6mO,SAE0B3kQ,IAArB4iL,EAAMvgH,YAEVugH,EAAMvgH,WAAYvkC,EAAK6mO,EAAaC,GAIhCD,IAAgBC,IAEpBliM,GAAY,OAEU1iE,IAAjB4iL,EAAMhzC,QAEVgzC,EAAMhzC,SAMT,EAEAh6I,KAAKqvQ,UAAY,SAAWnnO,QAEJ99B,IAAlB4iL,EAAM50J,SAEV40J,EAAM50J,QAAS8P,EAIjB,EAEAloC,KAAKsvQ,WAAa,SAAWpnO,GAE5B,OAAK+mO,EAEGA,EAAa/mO,GAIdA,CAER,EAEAloC,KAAKuvQ,eAAiB,SAAWj3I,GAIhC,OAFA22I,EAAc32I,EAEPt4H,IAER,EAEAA,KAAKwvQ,WAAa,SAAW93Q,EAAOqsG,GAInC,OAFAmrK,EAASpyQ,KAAMpF,EAAOqsG,GAEf/jG,IAER,EAEAA,KAAKyvQ,cAAgB,SAAW/3Q,GAE/B,IAAMkX,EAAQsgQ,EAAS1iQ,QAAS9U,GAQhC,OANiB,IAAZkX,GAEJsgQ,EAASrhN,OAAQj/C,EAAO,GAIlB5O,IAER,EAEAA,KAAK0vQ,WAAa,SAAW/6L,GAE5B,IAAM,IAAIj4E,EAAI,EAAGmK,EAAIqoQ,EAASt3Q,OAAQ8E,EAAImK,EAAGnK,GAAK,EAAI,CAErD,IAAMhF,EAAQw3Q,EAAUxyQ,GAClBqnG,EAASmrK,EAAUxyQ,EAAI,GAI7B,GAFKhF,EAAMi5E,SAASj5E,EAAMwlN,UAAY,GAEjCxlN,EAAMQ,KAAMy8E,GAEhB,OAAOovB,CAIT,CAEA,OAAO,IAER,CAED,IAIK4rK,IAAsC,IAAIb,IAE1Cc,IAAM,WAEX,SAAAA,EAAaC,GAAUplQ,EAAA,KAAAmlQ,GAEtB5vQ,KAAK6vQ,aAAwBzlQ,IAAZylQ,EAA0BA,EAAUF,IAErD3vQ,KAAKy3I,YAAc,YACnBz3I,KAAK8vQ,iBAAkB,EACvB9vQ,KAAKk3F,KAAO,GACZl3F,KAAK+vQ,aAAe,GACpB/vQ,KAAKgwQ,cAAgB,CAAC,CAEvB,CAmDC,OAnDAzmQ,EAAAqmQ,EAAA,EAAAptQ,IAAA,OAAA/D,MAED,WAAgD,GAAC,CAAA+D,IAAA,YAAA/D,MAEjD,SAAWypC,EAAKukC,GAEf,IAAMugH,EAAQhtL,KAEd,OAAO,IAAIswC,SAAS,SAAWG,EAAS8tC,GAEvCyuG,EAAMphH,KAAM1jC,EAAKuI,EAASg8B,EAAY8R,EAEvC,GAED,GAAC,CAAA/7E,IAAA,QAAA/D,MAED,WAAqB,GAAC,CAAA+D,IAAA,iBAAA/D,MAEtB,SAAgBg5I,GAGf,OADAz3I,KAAKy3I,YAAcA,EACZz3I,IAER,GAAC,CAAAwC,IAAA,qBAAA/D,MAED,SAAoBA,GAGnB,OADAuB,KAAK8vQ,gBAAkBrxQ,EAChBuB,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,SAASy4F,GAGR,OADAl3F,KAAKk3F,KAAOA,EACLl3F,IAER,GAAC,CAAAwC,IAAA,kBAAA/D,MAED,SAAiBsxQ,GAGhB,OADA/vQ,KAAK+vQ,aAAeA,EACb/vQ,IAER,GAAC,CAAAwC,IAAA,mBAAA/D,MAED,SAAkBuxQ,GAGjB,OADAhwQ,KAAKgwQ,cAAgBA,EACdhwQ,IAER,KAAC4vQ,CAAA,CA/DU,GAmEZA,IAAOuxL,sBAAwB,YAE/B,IAwgEMzoL,IAAuB,SAAAC,GAAA38P,EAAA08P,EAAAC,GAAA,IAAAqF,EAAArjQ,EAAA+9P,GAE5B,SAAAA,IAAc,IAAAqY,EAOiB,OAPjBtmR,EAAA,KAAAiuQ,IAEbqY,EAAA/S,EAAAnhR,KAAA,OAEKisM,2BAA4B,EAEjCioF,EAAKnsR,KAAO,0BACZmsR,EAAK57E,cAAgBhsJ,IAAS4nO,CAE/B,CAsBC,OAtBAxnR,EAAAmvQ,EAAA,EAAAl2Q,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAAo9P,EAAA97Q,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAKm1M,cAAgB3zM,EAAO2zM,cAErBn1M,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,WAEC,IAAMilC,EAAIwjG,GAAA5rH,EAAAo9P,EAAA97Q,WAAA,eAAAC,KAAA,MAMV,OAJA6mC,EAAKyxK,cAAgBn1M,KAAKm1M,cAE1BzxK,EAAKolK,2BAA4B,EAE1BplK,CAER,KAACg1O,CAAA,CAjC2B,CAAShzF,IA8pDtC,IA8/BMghG,IAAqB,gBACrBC,IAAc,IAAI3zN,OAAQ,IAAM0zN,IAAqB,IAAK,KAK1DE,IAAY,KAAOF,IAAqB,IACxCG,IAAiB,KAAOH,IAAmB/qR,QAAS,MAAO,IAAO,IAiBlEurR,IAAW,IAAIl0N,OAClB,IAdgC,kBAAkBxxD,OAAO7F,QAAS,KAAMirR,KAG7C,WAAWplR,OAAO7F,QAAS,OAAQkrR,KAIjC,4BAA4BrlR,OAAO7F,QAAS,KAAMirR,KAIhD,uBAAuBplR,OAAO7F,QAAS,KAAMirR,KAQ5E,KAGGO,IAAwB,CAAE,WAAY,YAAa,QAAS,OAE5DC,IAAS,WAEd,SAAAA,EAAaC,EAAanwL,EAAMowL,GAAqB78Q,EAAA,KAAA28Q,GAEpD,IAAMjwL,EAAamwL,GAAsBC,IAAgBC,eAAgBtwL,GAEzEl3F,KAAKynR,aAAeJ,EACpBrnR,KAAK0nR,UAAYL,EAAYM,WAAYzwL,EAAMC,EAEhD,CAgDC,OAhDA5tF,EAAA69Q,EAAA,EAAA5kR,IAAA,WAAA/D,MAED,SAAUsE,EAAOgnC,GAEhB/pC,KAAK4T,OAEL,IAAMg0Q,EAAkB5nR,KAAKynR,aAAaI,gBACzChD,EAAU7kR,KAAK0nR,UAAWE,QAGVx9Q,IAAZy6Q,GAAwBA,EAAQ70P,SAAUjtB,EAAOgnC,EAEvD,GAAC,CAAAvnC,IAAA,WAAA/D,MAED,SAAUsE,EAAOgnC,GAIhB,IAFA,IAAM+9O,EAAW9nR,KAAK0nR,UAEZhrR,EAAIsD,KAAKynR,aAAaI,gBAAiB9gR,EAAI+gR,EAASlwR,OAAQ8E,IAAMqK,IAAMrK,EAEjForR,EAAUprR,GAAIuzB,SAAUltB,EAAOgnC,EAIjC,GAAC,CAAAvnC,IAAA,OAAA/D,MAED,WAIC,IAFA,IAAMqpR,EAAW9nR,KAAK0nR,UAEZhrR,EAAIsD,KAAKynR,aAAaI,gBAAiB9gR,EAAI+gR,EAASlwR,OAAQ8E,IAAMqK,IAAMrK,EAEjForR,EAAUprR,GAAIkX,MAIhB,GAAC,CAAApR,IAAA,SAAA/D,MAED,WAIC,IAFA,IAAMqpR,EAAW9nR,KAAK0nR,UAEZhrR,EAAIsD,KAAKynR,aAAaI,gBAAiB9gR,EAAI+gR,EAASlwR,OAAQ8E,IAAMqK,IAAMrK,EAEjForR,EAAUprR,GAAIqrR,QAIhB,KAACX,CAAA,CAzDa,GAkETG,IAAe,WAEpB,SAAAA,EAAa/9M,EAAU0tB,EAAMC,GAAa1sF,EAAA,KAAA88Q,GAEzCvnR,KAAKk3F,KAAOA,EACZl3F,KAAKm3F,WAAaA,GAAcowL,EAAgBC,eAAgBtwL,GAEhEl3F,KAAKyZ,KAAO8tQ,EAAgBS,SAAUx+M,EAAUxpE,KAAKm3F,WAAWvnE,UAEhE5vB,KAAKwpE,SAAWA,EAGhBxpE,KAAKgwB,SAAWhwB,KAAKioR,kBACrBjoR,KAAKiwB,SAAWjwB,KAAKkoR,iBAEtB,CAwIC,OAxIA3+Q,EAAAg+Q,EAAA,EAAA/kR,IAAA,wBAAA/D,MA2ID,WAAyB,GAAC,CAAA+D,IAAA,wBAAA/D,MAC1B,WAAyB,GAEzB,CAAA+D,IAAA,mBAAA/D,MAEA,SAAkB07J,EAAQpwH,GAEzBowH,EAAQpwH,GAAW/pC,KAAKmoR,aAAcnoR,KAAK8sB,aAE5C,GAAC,CAAAtqB,IAAA,kBAAA/D,MAED,SAAiB07J,EAAQpwH,GAIxB,IAFA,IAAMvoC,EAASxB,KAAKooR,iBAEV1rR,EAAI,EAAGqK,EAAIvF,EAAO5J,OAAQ8E,IAAMqK,IAAMrK,EAE/Cy9J,EAAQpwH,KAAcvoC,EAAQ9E,EAIhC,GAAC,CAAA8F,IAAA,yBAAA/D,MAED,SAAwB07J,EAAQpwH,GAE/BowH,EAAQpwH,GAAW/pC,KAAKooR,iBAAkBpoR,KAAKqoR,cAEhD,GAAC,CAAA7lR,IAAA,oBAAA/D,MAED,SAAmB07J,EAAQpwH,GAE1B/pC,KAAKooR,iBAAiB7gM,QAAS4yE,EAAQpwH,EAExC,GAEA,CAAAvnC,IAAA,mBAAA/D,MAEA,SAAkB07J,EAAQpwH,GAEzB/pC,KAAKmoR,aAAcnoR,KAAK8sB,cAAiBqtI,EAAQpwH,EAElD,GAAC,CAAAvnC,IAAA,kCAAA/D,MAED,SAAiC07J,EAAQpwH,GAExC/pC,KAAKmoR,aAAcnoR,KAAK8sB,cAAiBqtI,EAAQpwH,GACjD/pC,KAAKmoR,aAAa7oH,aAAc,CAEjC,GAAC,CAAA98J,IAAA,6CAAA/D,MAED,SAA4C07J,EAAQpwH,GAEnD/pC,KAAKmoR,aAAcnoR,KAAK8sB,cAAiBqtI,EAAQpwH,GACjD/pC,KAAKmoR,aAAapyG,wBAAyB,CAE5C,GAEA,CAAAvzK,IAAA,kBAAA/D,MAEA,SAAiB07J,EAAQpwH,GAIxB,IAFA,IAAMkzD,EAAOj9F,KAAKooR,iBAER1rR,EAAI,EAAGqK,EAAIk2F,EAAKrlG,OAAQ8E,IAAMqK,IAAMrK,EAE7CugG,EAAMvgG,GAAMy9J,EAAQpwH,IAItB,GAAC,CAAAvnC,IAAA,iCAAA/D,MAED,SAAgC07J,EAAQpwH,GAIvC,IAFA,IAAMkzD,EAAOj9F,KAAKooR,iBAER1rR,EAAI,EAAGqK,EAAIk2F,EAAKrlG,OAAQ8E,IAAMqK,IAAMrK,EAE7CugG,EAAMvgG,GAAMy9J,EAAQpwH,KAIrB/pC,KAAKmoR,aAAa7oH,aAAc,CAEjC,GAAC,CAAA98J,IAAA,4CAAA/D,MAED,SAA2C07J,EAAQpwH,GAIlD,IAFA,IAAMkzD,EAAOj9F,KAAKooR,iBAER1rR,EAAI,EAAGqK,EAAIk2F,EAAKrlG,OAAQ8E,IAAMqK,IAAMrK,EAE7CugG,EAAMvgG,GAAMy9J,EAAQpwH,KAIrB/pC,KAAKmoR,aAAapyG,wBAAyB,CAE5C,GAEA,CAAAvzK,IAAA,yBAAA/D,MAEA,SAAwB07J,EAAQpwH,GAE/B/pC,KAAKooR,iBAAkBpoR,KAAKqoR,eAAkBluH,EAAQpwH,EAEvD,GAAC,CAAAvnC,IAAA,wCAAA/D,MAED,SAAuC07J,EAAQpwH,GAE9C/pC,KAAKooR,iBAAkBpoR,KAAKqoR,eAAkBluH,EAAQpwH,GACtD/pC,KAAKmoR,aAAa7oH,aAAc,CAEjC,GAAC,CAAA98J,IAAA,mDAAA/D,MAED,SAAkD07J,EAAQpwH,GAEzD/pC,KAAKooR,iBAAkBpoR,KAAKqoR,eAAkBluH,EAAQpwH,GACtD/pC,KAAKmoR,aAAapyG,wBAAyB,CAE5C,GAEA,CAAAvzK,IAAA,sBAAA/D,MAEA,SAAqB07J,EAAQpwH,GAE5B/pC,KAAKooR,iBAAiBzuH,UAAWQ,EAAQpwH,EAE1C,GAAC,CAAAvnC,IAAA,qCAAA/D,MAED,SAAoC07J,EAAQpwH,GAE3C/pC,KAAKooR,iBAAiBzuH,UAAWQ,EAAQpwH,GACzC/pC,KAAKmoR,aAAa7oH,aAAc,CAEjC,GAAC,CAAA98J,IAAA,gDAAA/D,MAED,SAA+C07J,EAAQpwH,GAEtD/pC,KAAKooR,iBAAiBzuH,UAAWQ,EAAQpwH,GACzC/pC,KAAKmoR,aAAapyG,wBAAyB,CAE5C,GAAC,CAAAvzK,IAAA,oBAAA/D,MAED,SAAmBq4G,EAAa/sE,GAE/B/pC,KAAK4T,OACL5T,KAAKgwB,SAAU8mF,EAAa/sE,EAE7B,GAAC,CAAAvnC,IAAA,oBAAA/D,MAED,SAAmB6pR,EAAav+O,GAE/B/pC,KAAK4T,OACL5T,KAAKiwB,SAAUq4P,EAAav+O,EAE7B,GAEA,CAAAvnC,IAAA,OAAA/D,MACA,WAEC,IAAI0pR,EAAenoR,KAAKyZ,KAClB09E,EAAan3F,KAAKm3F,WAElBoxL,EAAapxL,EAAWoxL,WACxBz7P,EAAeqqE,EAAWrqE,aAC5Bu7P,EAAgBlxL,EAAWkxL,cAe/B,GAbOF,IAENA,EAAeZ,EAAgBS,SAAUhoR,KAAKwpE,SAAU2tB,EAAWvnE,UAEnE5vB,KAAKyZ,KAAO0uQ,GAKbnoR,KAAKgwB,SAAWhwB,KAAKwoR,sBACrBxoR,KAAKiwB,SAAWjwB,KAAKyoR,sBAGdN,EAAP,CAOA,GAAKI,EAAa,CAEjB,IAAIG,EAAcvxL,EAAWuxL,YAG7B,OAASH,GAER,IAAK,YAEJ,IAAOJ,EAAatvG,SAGnB,YADA9kK,QAAQwN,MAAO,oFAAqFvhB,MAKrG,IAAOmoR,EAAatvG,SAASlB,UAG5B,YADA5jK,QAAQwN,MAAO,8GAA+GvhB,MAK/HmoR,EAAeA,EAAatvG,SAASlB,UAErC,MAED,IAAK,QAEJ,IAAOwwG,EAAavvG,SAGnB,YADA7kK,QAAQwN,MAAO,iFAAkFvhB,MAQlGmoR,EAAeA,EAAavvG,SAASgvC,MAGrC,IAAM,IAAIlrN,EAAI,EAAGA,EAAIyrR,EAAavwR,OAAQ8E,IAEzC,GAAKyrR,EAAczrR,GAAIvD,OAASuvR,EAAc,CAE7CA,EAAchsR,EACd,KAED,CAID,MAED,IAAK,MAEJ,GAAK,QAASyrR,EAAe,CAE5BA,EAAeA,EAAa5rR,IAC5B,KAED,CAEA,IAAO4rR,EAAatvG,SAGnB,YADA9kK,QAAQwN,MAAO,oFAAqFvhB,MAKrG,IAAOmoR,EAAatvG,SAASt8K,IAG5B,YADAwX,QAAQwN,MAAO,4FAA6FvhB,MAK7GmoR,EAAeA,EAAatvG,SAASt8K,IACrC,MAED,QAEC,QAAoC6N,IAA/B+9Q,EAAcI,GAGlB,YADAx0Q,QAAQwN,MAAO,uEAAwEvhB,MAKxFmoR,EAAeA,EAAcI,GAK/B,QAAqBn+Q,IAAhBs+Q,EAA4B,CAEhC,QAAqCt+Q,IAAhC+9Q,EAAcO,GAGlB,YADA30Q,QAAQwN,MAAO,wFAAyFvhB,KAAMmoR,GAK/GA,EAAeA,EAAcO,EAE9B,CAED,CAGA,IAAMC,EAAeR,EAAcr7P,GAEnC,QAAsB1iB,IAAjBu+Q,EAAL,CAWA,IAAIC,EAAa5oR,KAAK6oR,WAAWC,KAEjC9oR,KAAKmoR,aAAeA,OAEc/9Q,IAA7B+9Q,EAAa7oH,YAEjBspH,EAAa5oR,KAAK6oR,WAAWE,iBAEsB3+Q,IAAxC+9Q,EAAapyG,yBAExB6yG,EAAa5oR,KAAK6oR,WAAWG,wBAK9B,IAAIC,EAAcjpR,KAAKkpR,YAAYC,OAEnC,QAAuB/+Q,IAAlBi+Q,EAA8B,CAIlC,GAAsB,0BAAjBv7P,EAA2C,CAK/C,IAAOq7P,EAAar9G,SAGnB,YADA/2J,QAAQwN,MAAO,sGAAuGvhB,MAKvH,IAAOmoR,EAAar9G,SAASgb,gBAG5B,YADA/xK,QAAQwN,MAAO,sHAAuHvhB,WAK1EoK,IAAxD+9Q,EAAa38F,sBAAuB68F,KAExCA,EAAgBF,EAAa38F,sBAAuB68F,GAItD,CAEAY,EAAcjpR,KAAKkpR,YAAYE,aAE/BppR,KAAKooR,iBAAmBO,EACxB3oR,KAAKqoR,cAAgBA,CAEtB,WAAuCj+Q,IAA3Bu+Q,EAAahvH,gBAAoDvvJ,IAAzBu+Q,EAAaphM,SAIhE0hM,EAAcjpR,KAAKkpR,YAAYG,eAE/BrpR,KAAKooR,iBAAmBO,GAEbhsR,MAAM0E,QAASsnR,IAE1BM,EAAcjpR,KAAKkpR,YAAYI,YAE/BtpR,KAAKooR,iBAAmBO,GAIxB3oR,KAAK8sB,aAAeA,EAKrB9sB,KAAKgwB,SAAWhwB,KAAKupR,oBAAqBN,GAC1CjpR,KAAKiwB,SAAWjwB,KAAKwpR,iCAAkCP,GAAeL,EA9EtE,KARA,CAEC,IAAMh5P,EAAWunE,EAAWvnE,SAE5B7b,QAAQwN,MAAO,+DAAiEqO,EAC/E,IAAM9C,EAAe,wBAA0Bq7P,EAGjD,CA3HA,MAHCp0Q,QAAQk/C,KAAM,0DAA4DjzD,KAAKk3F,KAAO,IA8MxF,GAAC,CAAA10F,IAAA,SAAA/D,MAED,WAECuB,KAAKyZ,KAAO,KAIZzZ,KAAKgwB,SAAWhwB,KAAKioR,kBACrBjoR,KAAKiwB,SAAWjwB,KAAKkoR,iBAEtB,IAAC,EAAA1lR,IAAA,SAAA/D,MAvhBD,SAAeyU,EAAMgkF,EAAMC,GAE1B,OAASjkF,GAAQA,EAAKu2Q,uBAMd,IAAIlC,EAAgBH,UAAWl0Q,EAAMgkF,EAAMC,GAJ3C,IAAIowL,EAAiBr0Q,EAAMgkF,EAAMC,EAQ1C,GAEA,CAAA30F,IAAA,mBAAA/D,MAOA,SAAyBtF,GAExB,OAAOA,EAAKwC,QAAS,MAAO,KAAMA,QAASgrR,IAAa,GAEzD,GAAC,CAAAnkR,IAAA,iBAAA/D,MAED,SAAuBuvQ,GAEtB,IAAMniL,EAAUq7L,IAASlxQ,KAAMg4P,GAE/B,GAAiB,OAAZniL,EAEJ,MAAM,IAAI/tF,MAAO,4CAA8CkwQ,GAIhE,IAAM0b,EAAU,CAEf95P,SAAUi8D,EAAS,GACnB08L,WAAY18L,EAAS,GACrB68L,YAAa78L,EAAS,GACtB/+D,aAAc++D,EAAS,GACvBw8L,cAAex8L,EAAS,IAGnB89L,EAAUD,EAAQ95P,UAAY85P,EAAQ95P,SAASi/E,YAAa,KAElE,QAAiBzkG,IAAZu/Q,IAAuC,IAAdA,EAAkB,CAE/C,IAAMpB,EAAamB,EAAQ95P,SAAS8F,UAAWi0P,EAAU,IAMF,IAAlDxC,IAAsB36Q,QAAS+7Q,KAEnCmB,EAAQ95P,SAAW85P,EAAQ95P,SAAS8F,UAAW,EAAGi0P,GAClDD,EAAQnB,WAAaA,EAIvB,CAEA,GAA8B,OAAzBmB,EAAQ58P,cAAyD,IAAhC48P,EAAQ58P,aAAal1B,OAE1D,MAAM,IAAIkG,MAAO,+DAAiEkwQ,GAInF,OAAO0b,CAER,GAAC,CAAAlnR,IAAA,WAAA/D,MAED,SAAiByU,EAAM0c,GAEtB,QAAkBxlB,IAAbwlB,GAAuC,KAAbA,GAAgC,MAAbA,IAAmC,IAAfA,GAAoBA,IAAa1c,EAAK/Z,MAAQy2B,IAAa1c,EAAK2oG,KAErI,OAAO3oG,EAKR,GAAKA,EAAK0lK,SAAW,CAEpB,IAAM4jE,EAAOtpO,EAAK0lK,SAASgxG,cAAeh6P,GAE1C,QAAcxlB,IAAToyO,EAEJ,OAAOA,CAIT,CAGA,GAAKtpO,EAAK0K,SAAW,CAEpB,IAsBMisQ,EAtBoB,SAApBC,EAA+BlsQ,GAEpC,IAAM,IAAIlhB,EAAI,EAAGA,EAAIkhB,EAAShmB,OAAQ8E,IAAO,CAE5C,IAAMqtR,EAAYnsQ,EAAUlhB,GAE5B,GAAKqtR,EAAU5wR,OAASy2B,GAAYm6P,EAAUluK,OAASjsF,EAEtD,OAAOm6P,EAIR,IAAMjyR,EAASgyR,EAAmBC,EAAUnsQ,UAE5C,GAAK9lB,EAAS,OAAOA,CAEtB,CAEA,OAAO,IAER,CAEoBgyR,CAAmB52Q,EAAK0K,UAE5C,GAAKisQ,EAEJ,OAAOA,CAIT,CAEA,OAAO,IAER,KAACtC,CAAA,CAvJmB,GA6iBrBA,IAAgBH,UAAYA,IAE5BG,IAAgB3qR,UAAUssR,YAAc,CACvCC,OAAQ,EACRG,YAAa,EACbF,aAAc,EACdC,eAAgB,GAGjB9B,IAAgB3qR,UAAUisR,WAAa,CACtCC,KAAM,EACNC,YAAa,EACbC,uBAAwB,GAGzBzB,IAAgB3qR,UAAU2sR,oBAAsB,CAE/ChC,IAAgB3qR,UAAUotR,iBAC1BzC,IAAgB3qR,UAAUqtR,gBAC1B1C,IAAgB3qR,UAAUstR,uBAC1B3C,IAAgB3qR,UAAUutR,mBAI3B5C,IAAgB3qR,UAAU4sR,iCAAmC,CAE5D,CAECjC,IAAgB3qR,UAAUwtR,iBAC1B7C,IAAgB3qR,UAAUytR,gCAC1B9C,IAAgB3qR,UAAU0tR,4CAExB,CAIF/C,IAAgB3qR,UAAU2tR,gBAC1BhD,IAAgB3qR,UAAU4tR,+BAC1BjD,IAAgB3qR,UAAU6tR,2CAExB,CAGFlD,IAAgB3qR,UAAU8tR,uBAC1BnD,IAAgB3qR,UAAU+tR,sCAC1BpD,IAAgB3qR,UAAUguR,kDAExB,CAGFrD,IAAgB3qR,UAAUiuR,oBAC1BtD,IAAgB3qR,UAAUkuR,mCAC1BvD,IAAgB3qR,UAAUmuR,gDA4jCa,IAAIl2H,aAAc,GAtjC3D,IA45DM+/H,IAA0B,SAAAC,GAAA74Q,EAAA44Q,EAAAC,GAAA,IAAAmD,EAAAr9Q,EAAAi6Q,GAE/B,SAAAA,EAAa7xR,EAAO0mL,GAA+B,IAAAivG,EAAvBhxF,EAAgBznM,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAML,OANMwK,EAAA,KAAAmqR,IAE/C8D,EAAAV,EAAAn7R,KAAA,KAAOkG,EAAO0mL,IAETyf,8BAA+B,EAEpCwvF,EAAKhxF,iBAAmBA,EAAiBgxF,CAE1C,CA+BC,OA/BAnvR,EAAAqrR,EAAA,EAAApyR,IAAA,OAAA/D,MAED,SAAM+C,GAML,OAJA0lI,GAAA5rH,EAAAs5Q,EAAAh4R,WAAA,aAAAC,KAAA,KAAY2E,GAEZxB,KAAK0nM,iBAAmBlmM,EAAOkmM,iBAExB1nM,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAOilC,GAEN,IAAM7R,EAAEq1G,GAAA5rH,EAAAs5Q,EAAAh4R,WAAA,cAAAC,KAAA,KAAgB6mC,GAIxB,OAFA7R,EAAG61K,iBAAmB1nM,KAAK0nM,iBAEpB71K,CAER,GAAC,CAAArvB,IAAA,SAAA/D,MAED,SAAQilC,GAEP,IAAM+4M,EAAIv1G,GAAA5rH,EAAAs5Q,EAAAh4R,WAAA,eAAAC,KAAA,KAAiB6mC,GAK3B,OAHA+4M,EAAKvzC,8BAA+B,EACpCuzC,EAAK/0C,iBAAmB1nM,KAAK0nM,iBAEtB+0C,CAER,KAACm4C,CAAA,CAzC8B,CAASj9C,KAkNzC,IAQM29C,IAAS,WAEd,SAAAA,IAA8C,IAAjCpsH,EAAMjpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGkpK,EAAGlpK,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAAGw5J,EAAKx5J,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,EAMzC,OAN0CwK,EAAA,KAAA6qR,GAE1Ct1R,KAAKkpK,OAASA,EACdlpK,KAAKmpK,IAAMA,EACXnpK,KAAKy5J,MAAQA,EAENz5J,IAER,CA8DC,OA9DAuJ,EAAA+rR,EAAA,EAAA9yR,IAAA,MAAA/D,MAED,SAAKyqK,EAAQC,EAAK1P,GAMjB,OAJAz5J,KAAKkpK,OAASA,EACdlpK,KAAKmpK,IAAMA,EACXnpK,KAAKy5J,MAAQA,EAENz5J,IAER,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM82R,GAML,OAJAv1R,KAAKkpK,OAASqsH,EAAMrsH,OACpBlpK,KAAKmpK,IAAMosH,EAAMpsH,IACjBnpK,KAAKy5J,MAAQ87H,EAAM97H,MAEZz5J,IAER,GAEA,CAAAwC,IAAA,WAAA/D,MACA,WAEC,IAAM+2R,EAAM,KAGZ,OAFAx1R,KAAKmpK,IAAMlsK,KAAKC,IAAKs4R,EAAKv4R,KAAKiuC,IAAKjuC,KAAK00J,GAAK6jI,EAAKx1R,KAAKmpK,MAEjDnpK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB0I,GAEf,OAAOnH,KAAKy1R,uBAAwBtuR,EAAEjL,EAAGiL,EAAEE,EAAGF,EAAEG,EAEjD,GAAC,CAAA9E,IAAA,yBAAA/D,MAED,SAAwBvC,EAAGmL,EAAGC,GAgB7B,OAdAtH,KAAKkpK,OAASjsK,KAAK04J,KAAMz5J,EAAIA,EAAImL,EAAIA,EAAIC,EAAIA,GAExB,IAAhBtH,KAAKkpK,QAETlpK,KAAKy5J,MAAQ,EACbz5J,KAAKmpK,IAAM,IAIXnpK,KAAKy5J,MAAQx8J,KAAK44J,MAAO35J,EAAGoL,GAC5BtH,KAAKmpK,IAAMlsK,KAAK4iK,KAAM3N,GAAO7qJ,EAAIrH,KAAKkpK,QAAU,EAAG,KAI7ClpK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,KAACs1R,CAAA,CAxEa,GAwITK,IAA0B,IAAIxgI,GAE9BygI,IAAI,WAET,SAAAA,IAAwG,IAA3F1qP,EAAGjrC,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,GAAWhsG,IAAYA,KAAYjsD,EAAG+C,UAAArI,OAAA,QAAAwS,IAAAnK,UAAA,GAAAA,UAAA,GAAG,IAAIk1J,IAAWhsG,KAAYA,KAAU1+C,EAAA,KAAAmrR,GAEpG51R,KAAK61R,QAAS,EAEd71R,KAAKkrC,IAAMA,EACXlrC,KAAK9C,IAAMA,CAEZ,CA0LC,OA1LAqM,EAAAqsR,EAAA,EAAApzR,IAAA,MAAA/D,MAED,SAAKysC,EAAKhuC,GAKT,OAHA8C,KAAKkrC,IAAIwwH,KAAMxwH,GACflrC,KAAK9C,IAAIw+J,KAAMx+J,GAER8C,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAewrK,GAEdjqK,KAAKkqK,YAEL,IAAM,IAAIxtK,EAAI,EAAGowD,EAAKm9G,EAAOryK,OAAQ8E,EAAIowD,EAAIpwD,IAE5CsD,KAAKmqK,cAAeF,EAAQvtK,IAI7B,OAAOsD,IAER,GAAC,CAAAwC,IAAA,uBAAA/D,MAED,SAAsB43J,EAAQ9wG,GAE7B,IAAM6kH,EAAWurH,IAAUj6H,KAAMn2G,GAAOgwG,eAAgB,IAIxD,OAHAv1J,KAAKkrC,IAAIwwH,KAAMrF,GAASyS,IAAKsB,GAC7BpqK,KAAK9C,IAAIw+J,KAAMrF,GAASjqI,IAAKg+I,GAEtBpqK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,WAEC,OAAO,IAAIuB,KAAKma,aAAcuhJ,KAAM17J,KAErC,GAAC,CAAAwC,IAAA,OAAA/D,MAED,SAAM+rK,GAKL,OAHAxqK,KAAKkrC,IAAIwwH,KAAM8O,EAAIt/H,KACnBlrC,KAAK9C,IAAIw+J,KAAM8O,EAAIttK,KAEZ8C,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,WAKC,OAHAuB,KAAKkrC,IAAIhvC,EAAI8D,KAAKkrC,IAAI7jC,EAAM8hD,IAC5BnpD,KAAK9C,IAAIhB,EAAI8D,KAAK9C,IAAImK,GAAM8hD,IAErBnpD,IAER,GAAC,CAAAwC,IAAA,UAAA/D,MAED,WAIC,OAASuB,KAAK9C,IAAIhB,EAAI8D,KAAKkrC,IAAIhvC,GAAS8D,KAAK9C,IAAImK,EAAIrH,KAAKkrC,IAAI7jC,CAE/D,GAAC,CAAA7E,IAAA,YAAA/D,MAED,SAAW8C,GAEV,OAAOvB,KAAKyqK,UAAYlpK,EAAO0tB,IAAK,EAAG,GAAM1tB,EAAO8zJ,WAAYr1J,KAAKkrC,IAAKlrC,KAAK9C,KAAMq4J,eAAgB,GAEtG,GAAC,CAAA/yJ,IAAA,UAAA/D,MAED,SAAS8C,GAER,OAAOvB,KAAKyqK,UAAYlpK,EAAO0tB,IAAK,EAAG,GAAM1tB,EAAO+zJ,WAAYt1J,KAAK9C,IAAK8C,KAAKkrC,IAEhF,GAAC,CAAA1oC,IAAA,gBAAA/D,MAED,SAAeisK,GAKd,OAHA1qK,KAAKkrC,IAAIA,IAAKw/H,GACd1qK,KAAK9C,IAAIA,IAAKwtK,GAEP1qK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgBksK,GAKf,OAHA3qK,KAAKkrC,IAAI49H,IAAK6B,GACd3qK,KAAK9C,IAAIkvB,IAAKu+I,GAEP3qK,IAER,GAAC,CAAAwC,IAAA,iBAAA/D,MAED,SAAgB22J,GAKf,OAHAp1J,KAAKkrC,IAAI0/H,WAAaxV,GACtBp1J,KAAK9C,IAAI0tK,UAAWxV,GAEbp1J,IAER,GAAC,CAAAwC,IAAA,gBAAA/D,MAED,SAAeisK,GAEd,QAAOA,EAAMxuK,EAAI8D,KAAKkrC,IAAIhvC,GAAKwuK,EAAMxuK,EAAI8D,KAAK9C,IAAIhB,GACjDwuK,EAAMrjK,EAAIrH,KAAKkrC,IAAI7jC,GAAKqjK,EAAMrjK,EAAIrH,KAAK9C,IAAImK,EAE7C,GAAC,CAAA7E,IAAA,cAAA/D,MAED,SAAa+rK,GAEZ,OAAOxqK,KAAKkrC,IAAIhvC,GAAKsuK,EAAIt/H,IAAIhvC,GAAKsuK,EAAIttK,IAAIhB,GAAK8D,KAAK9C,IAAIhB,GACvD8D,KAAKkrC,IAAI7jC,GAAKmjK,EAAIt/H,IAAI7jC,GAAKmjK,EAAIttK,IAAImK,GAAKrH,KAAK9C,IAAImK,CAEnD,GAAC,CAAA7E,IAAA,eAAA/D,MAED,SAAcisK,EAAOnpK,GAKpB,OAAOA,EAAO0tB,KACXy7I,EAAMxuK,EAAI8D,KAAKkrC,IAAIhvC,IAAQ8D,KAAK9C,IAAIhB,EAAI8D,KAAKkrC,IAAIhvC,IACjDwuK,EAAMrjK,EAAIrH,KAAKkrC,IAAI7jC,IAAQrH,KAAK9C,IAAImK,EAAIrH,KAAKkrC,IAAI7jC,GAGrD,GAAC,CAAA7E,IAAA,gBAAA/D,MAED,SAAe+rK,GAId,QAAOA,EAAIttK,IAAIhB,EAAI8D,KAAKkrC,IAAIhvC,GAAKsuK,EAAIt/H,IAAIhvC,EAAI8D,KAAK9C,IAAIhB,GACrDsuK,EAAIttK,IAAImK,EAAIrH,KAAKkrC,IAAI7jC,GAAKmjK,EAAIt/H,IAAI7jC,EAAIrH,KAAK9C,IAAImK,EAEjD,GAAC,CAAA7E,IAAA,aAAA/D,MAED,SAAYisK,EAAOnpK,GAElB,OAAOA,EAAOm6J,KAAMgP,GAAQxY,MAAOlyJ,KAAKkrC,IAAKlrC,KAAK9C,IAEnD,GAAC,CAAAsF,IAAA,kBAAA/D,MAED,SAAiBisK,GAEhB,OAAO1qK,KAAKqrK,WAAYX,EAAOirH,KAAYtoH,WAAY3C,EAExD,GAAC,CAAAloK,IAAA,YAAA/D,MAED,SAAW+rK,GAOV,OALAxqK,KAAKkrC,IAAIhuC,IAAKstK,EAAIt/H,KAClBlrC,KAAK9C,IAAIguC,IAAKs/H,EAAIttK,KAEb8C,KAAKyqK,WAAYzqK,KAAKkqK,YAEpBlqK,IAER,GAAC,CAAAwC,IAAA,QAAA/D,MAED,SAAO+rK,GAKN,OAHAxqK,KAAKkrC,IAAIA,IAAKs/H,EAAIt/H,KAClBlrC,KAAK9C,IAAIA,IAAKstK,EAAIttK,KAEX8C,IAER,GAAC,CAAAwC,IAAA,YAAA/D,MAED,SAAWsrC,GAKV,OAHA/pC,KAAKkrC,IAAI9e,IAAK2d,GACd/pC,KAAK9C,IAAIkvB,IAAK2d,GAEP/pC,IAER,GAAC,CAAAwC,IAAA,SAAA/D,MAED,SAAQ+rK,GAEP,OAAOA,EAAIt/H,IAAIshI,OAAQxsK,KAAKkrC,MAASs/H,EAAIttK,IAAIsvK,OAAQxsK,KAAK9C,IAE3D,KAAC04R,CAAA,CAnMQ,GAoxDyB,qBAAvB5+C,oBAEXA,mBAAmBz4M,cAAe,IAAI43E,YAAa,WAAY,CAAE30E,OAAQ,CACxE2rQ,SAAUnnJ,OAKW,qBAAX3iJ,SAENA,OAAO+pS,UAEXr5R,QAAQk/C,KAAM,2DAId5vD,OAAO+pS,UAAYpnJ,IC5joDd,IAAMo7S,IAAW,WAYpB,SAAAA,EAAYC,EAAWC,EAAWl6H,EAAc5/R,EAAO+5Z,GAAU92b,EAAA,KAAA22b,GAC7Dphc,KAAKqhc,UAAqB,OAATA,QAAS,IAATA,EAAAA,EAAa,KAC9Brhc,KAAKshc,UAAqB,OAATA,QAAS,IAATA,EAAAA,EAAa,KAC9Bthc,KAAKonU,aAA2B,OAAZA,QAAY,IAAZA,EAAAA,EAAgB,KACpCpnU,KAAKwnC,MAAQA,EACbxnC,KAAKuhc,SAAmB,OAARA,QAAQ,IAARA,EAAAA,EAAY,IAChC,CAiCC,OA/BDh4b,EAAA63b,EAAA,EAAA5+b,IAAA,UAAA/D,MAGA,SAAQ82R,GACJ,IAAIt5R,EAAIulc,IAAcxhc,KAAKqhc,UAAW9rK,EAAM8rK,WAC5C,OAAU,IAANplc,GAIM,KADVA,EAAIulc,IAAcxhc,KAAKshc,UAAW/rK,EAAM+rK,aAK9B,KADVrlc,EAAIulc,IAAcxhc,KAAKonU,aAAc7xC,EAAM6xC,gBAKjC,KADVnrU,EAAIulc,IAAcxhc,KAAKwnC,MAAO+tP,EAAM/tP,QAVzBvrC,EAcJulc,IAAcxhc,KAAKuhc,SAAUhsK,EAAMgsK,SAC9C,GAAC,CAAA/+b,IAAA,YAAA/D,MAED,WACI,OAAOuB,KAAKonU,eAAiBg6H,EAAYK,aAAaC,eAC/C1hc,KAAKonU,eAAiBg6H,EAAYK,aAAaE,iBAC1D,GAAC,CAAAn/b,IAAA,cAAA/D,MAED,WACI,OAAOuB,KAAKonU,eAAiBg6H,EAAYK,aAAaG,gBAC/C5hc,KAAKonU,eAAiBg6H,EAAYK,aAAaI,cAC1D,KAACT,CAAA,CAnDmB,GAoEjB,SAASI,IAAcxrS,EAAIC,GAC9B,OAAW,OAAPD,EACW,OAAPC,EACO,GAEH,EAED,OAAPA,EACO,EAEPD,EAAKC,GACG,EAERD,EAAKC,EACE,EAEJ,CACX,CC3Ee,SAAS6rS,IAAgBp+Z,GACpC1jC,KAAK+hc,SAAW,EAChB/hc,KAAKqmV,MAAQ3iT,EACb1jC,KAAKgic,MAAO,CAChB,CAiGA,SAASC,IAAgBh9Z,EAAMxmC,GAC3B,OAAGwmC,GAAQ,EAAUxmC,EAClBwmC,GAAQ,IAAMA,GAAQ,GAAW/zB,WAAWzS,EAAMowB,QAClDoW,GAAQ,IAAMA,GAAQ,GAAW9zB,SAAS1S,EAAMowB,QAChDoW,GAAQ,KAAOA,GAAQ,IAAYxmC,EACnCwmC,GAAQ,KAAOA,GAAQ,IAAY/zB,WAAWzS,EAAMowB,QACpDoW,GAAQ,KAAOA,GAAQ,IAAY9zB,SAAS1S,EAAMowB,QAClDoW,GAAQ,KAAOA,GAAQ,IAAY/zB,WAAWzS,EAAMowB,QACpDoW,GAAQ,KAAOA,GAAQ,IAAY9zB,SAAS1S,EAAMowB,QAClDoW,GAAQ,KAAOA,GAAQ,IAyB9B,SAAsBx0B,GAClB,GAAW,MAARA,EAAa,OAAO,EACvB,GAAW,MAARA,EAAa,OAAO,EACvB,MAAMjG,UAAU,WAAciG,EAAM,mCACxC,CA7B0Cyxb,CAAazjc,EAAMowB,QACtDoW,GAAQ,KAAOA,GAAQ,IAAYxmC,EACnCwmC,GAAQ,KAAOA,GAAQ,IAAY9zB,SAAS1S,EAAMowB,QAClDoW,GAAQ,KAAOA,GAAQ,IAAYxmC,EACnCwmC,GAAQ,KAAOA,GAAQ,IAAY9zB,SAAS1S,EAAMowB,QAClDoW,GAAQ,KAAOA,GAAQ,IAAYxmC,EACnCwmC,GAAQ,KAAOA,GAAQ,IAAY9zB,SAAS1S,EAAMowB,QAClDoW,GAAQ,KAAOA,GAAQ,IAAYxmC,EACnCwmC,GAAQ,KAAOA,GAAQ,IAAY9zB,SAAS1S,EAAMowB,QAClDoW,GAAQ,KAAOA,GAAQ,IAAY/zB,WAAWzS,EAAMowB,QACpDoW,GAAQ,KAAOA,GAAQ,KACd,MAATA,GACAA,GAAQ,KAAQA,GAAQ,KAFWxmC,EAGnCwmC,GAAQ,MAAQA,GAAQ,KAAa/zB,WAAWzS,EAAMowB,QACtDoW,GAAQ,MAAQA,GAAQ,KAAa9zB,SAAS1S,EAAMowB,SAEvD9a,QAAQC,IAAI,uDAAwD,CAAEixB,KAAMA,EAAMxmC,MAAOA,IAClFA,EACX,CDpFA2ic,IAAYK,aAAeljc,OAAOkjB,OAAO,CACrC42W,OAAQ,EACRC,MAAO,EACPopE,cAAe,EACfhxH,UAAW,EACXixH,kBAAmB,EACnBC,eAAgB,EAEhBC,eAAgB,ICzCpBC,IAAgBllc,UAAUsG,KAAO,WAC7B,IAAIukG,EACJ,IAAIznG,KAAKmic,UACL,MAAInic,KAAKgic,KAGC,IAAIlkc,MAAM,oDAFV,IAAIA,MAAM,iFAAmFkC,KAAKqmV,MAAMrmV,KAAK+hc,WAS3H,GAJAt6V,EAAQ,CACJxiE,KAAM9zB,SAASnR,KAAKqmV,MAAMrmV,KAAK+hc,YAG/Bzqb,MAAMmwF,EAAMxiE,MACZ,MAAM,IAAInnC,MAAM,4BAA8BkC,KAAKqmV,MAAMrmV,KAAK+hc,WAalE,OAVA/hc,KAAK+hc,WAELt6V,EAAMhpG,MAAQwjc,IAAgBx6V,EAAMxiE,KAAMjlC,KAAKqmV,MAAMrmV,KAAK+hc,WAE1D/hc,KAAK+hc,WAEa,IAAft6V,EAAMxiE,MAA8B,QAAhBwiE,EAAMhpG,QAAiBuB,KAAKgic,MAAO,GAE1Dhic,KAAKoic,cAAgB36V,EAEdA,CACX,EAEAq6V,IAAgBllc,UAAU+8V,KAAO,WAC7B,IAAI35V,KAAKmic,UACL,MAAInic,KAAKgic,KAGC,IAAIlkc,MAAM,oDAFV,IAAIA,MAAM,iFAAmFkC,KAAKqmV,MAAMrmV,KAAK+hc,WAK3H,IAAIt6V,EAAQ,CACRxiE,KAAM9zB,SAASnR,KAAKqmV,MAAMrmV,KAAK+hc,YAGnC,GAAIzqb,MAAMmwF,EAAMxiE,MACZ,MAAM,IAAInnC,MAAM,4BAA8BkC,KAAKqmV,MAAMrmV,KAAK+hc,WAKlE,OAFAt6V,EAAMhpG,MAAQwjc,IAAgBx6V,EAAMxiE,KAAMjlC,KAAKqmV,MAAMrmV,KAAK+hc,SAAW,IAE9Dt6V,CACX,EAGAq6V,IAAgBllc,UAAUylc,OAAS,SAASC,GACxCA,EAAiBA,GAAkB,EACnCtic,KAAK+hc,SAAW/hc,KAAK+hc,SAA4B,EAAjBO,CACpC,EAMAR,IAAgBllc,UAAUulc,QAAU,WAEhC,OAAGnic,KAAKgic,QAKLhic,KAAK+hc,SAAW/hc,KAAKqmV,MAAMzuV,OAAS,EAI3C,EAMAkqc,IAAgBllc,UAAU2lc,MAAQ,WAC9B,OAAOvic,KAAKgic,IAChB,EC/FA,SACC,EACA,SACA,SACA,MACA,MACA,IACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,MACA,QACA,KACA,QACA,MACA,QACA,MACA,QACA,KACA,QACA,KACA,QACA,KACA,QACA,IACA,QACA,IACA,QACA,IACA,QACA,IACA,QACA,GACA,QACA,QACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,SACA,sBCpQoBQ,IAAkB,WAEnC,SAAAA,IAAc/3b,EAAA,KAAA+3b,GACVxic,KAAKyic,QAAU,KACfzic,KAAK0ic,qBAAsB,EAC3B1ic,KAAK2ic,WAAa,KAClB3ic,KAAK4ic,aAAe,CAAC5ic,KAAK6ic,kBAC1B7ic,KAAK8ic,SAAU,CACnB,CAwGC,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Qa,aAAa,iHCArCN,IAAgBP,IAAQa,aAAa,yFCArCN,IAAgBP,IAAQa,aAAa,yECArCN,IAAgBP,IAAQa,aAAa,4DCArCN,IAAgBP,IAAQa,aAAa,+ECArCN,IAAgBP,IAAQa,aAAa,8ECArCN,IAAgBP,IAAQa,aAAa,mMCArCN,IAAgBP,IAAQa,aAAa,4ECArCN,IAAgBP,IAAQa,aAAa,4VCArCN,IAAgBP,IAAQa,aAAa,wFCArCN,IAAgBP,IAAQa,aAAa,08wBCArCN,IAAgBP,IAAQa,aAAa,8tBCArCN,IAAgBP,IAAQa,aAAa,+GCArCN,IAAgBP,IAAQa,aAAa,kkBCArCN,IAAgBP,IAAQa,aAAa,oLCArCN,IAAgBP,IAAQa,aAAa,2aCArCN,IAAgBP,IAAQa,aAAa,0QCArCN,IAAgBP,IAAQa,aAAa,s8FCArCN,IAAgBP,IAAQa,aAAa,qqDCArCN,IAAgBP,IAAQa,aAAa,k1CCArCN,IAAgBP,IAAQa,aAAa,yZCArCN,IAAgBP,IAAQa,aAAa,iPCArCN,IAAgBP,IAAQa,aAAa,0cCArCN,IAAgBP,IAAQa,aAAa,unBCArCN,IAAgBP,IAAQa,aAAa,wECArCN,IAAgBP,IAAQa,aAAa,kGCArCN,IAAgBP,IAAQa,aAAa,qUCArCN,IAAgBP,IAAQa,aAAa,03iBCArCN,IAAgBP,IAAQa,aAAa,kiYCArCN,IAAgBP,IAAQa,aAAa,qnRCArCN,IAAgBP,IAAQa,aAAa,2oMCArCN,IAAgBP,IAAQa,aAAa,q2GCArCN,IAAgBP,IAAQa,aAAa,guBCArCN,IAAgBP,IAAQa,aAAa,g2BCArCN,IAAgBP,IAAQa,aAAa,41HCArCN,IAAgBP,IAAQa,aAAa,kkDCArCN,IAAgBP,IAAQa,aAAa,wHCArCN,IAAgBP,IAAQa,aAAa,0LCArCN,IAAgBP,IAAQa,aAAa,mGCArCN,IAAgBP,IAAQa,aAAa,sDCArCN,IAAgBP,IAAQa,aAAa,6ECArCN,IAAgBP,IAAQa,aAAa,qDCArCN,IAAgBP,IAAQa,aAAa,8PCArCN,IAAgBP,IAAQa,aAAa,i8BCArCN,IAAgBP,IAAQa,aAAa,qxICArCN,IAAgBP,IAAQa,aAAa,6GCArCN,IAAgBP,IAAQa,aAAa,qICArCN,IAAgBP,IAAQa,aAAa,yDCArCN,IAAgBP,IAAQa,aAAa,ymGCArCN,IAAgBP,IAAQa,aAAa,y3ECArCN,IAAgBP,IAAQa,aAAa,0kCCArCN,IAAgBP,IAAQa,aAAa,2sCCArCN,IAAgBP,IAAQa,aAAa,wHCArCN,IAAgBP,IAAQa,aAAa,45BCArCN,IAAgBP,IAAQa,aAAa,6pBCArCN,IAAgBP,IAAQa,aAAa,8yBCArCN,IAAgBP,IAAQa,aAAa,85XCArCN,IAAgBP,IAAQa,aAAa,uICArCN,IAAgBP,IAAQa,aAAa,yFCArCN,IAAgBP,IAAQa,aAAa,2GCArCN,IAAgBP,IAAQa,aAAa,4DCArCN,IAAgBP,IAAQa,aAAa,6DCArCN,IAAgBP,IAAQa,aAAa,4DCArCN,IAAgBP,IAAQa,aAAa,6DCArCN,IAAgBP,IAAQa,aAAa,gFCArCN,IAAgBP,IAAQa,aAAa,gFCArCN,IAAgBP,IAAQa,aAAa,0ECArCN,IAAgBP,IAAQa,aAAa,0ECArCN,IAAgBP,IAAQa,aAAa,qECArCN,IAAgBP,IAAQa,aAAa,8ECArCN,IAAgBP,IAAQa,aAAa,iDCArCN,IAAgBP,IAAQa,aAAa,u6BCArCN,IAAgBP,IAAQa,aAAa,yXCArCN,IAAgBP,IAAQa,aAAa,iXCArCN,IAAgBP,IAAQa,aAAa,2cCArCN,IAAgBP,IAAQa,aAAa,ihBCArCN,IAAgBP,IAAQa,aAAa,kqBCArCN,IAAgBP,IAAQa,aAAa,qnBCArCN,IAAgBP,IAAQa,aAAa,ihcCArCN,IAAgBP,IAAQa,aAAa,qrRCArCN,IAAgBP,IAAQa,aAAa,wlJCArCN,IAAgBP,IAAQa,aAAa,oCCArCN,IAAgBP,IAAQa,aAAa,glKCArCN,IAAgBP,IAAQa,aAAa,4lCCArCN,IAAgBP,IAAQa,aAAa,8gDCArCN,IAAgBP,IAAQa,aAAa,oECArCN,IAAgBP,IAAQa,aAAa,oDCArCN,IAAgBP,IAAQa,aAAa,yECArCN,IAAgBP,IAAQa,aAAa,+ECArCN,IAAgBP,IAAQa,aAAa,uGCArCN,IAAgBP,IAAQa,aAAa,k8PCArCN,IAAgB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R,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,MACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,MAAQ,QACR,KAAQ,QACR,KAAQ,SACR,MAAQ,QACR,KAAQ,QACR,KAAQ,QACR,MAAQ,QACR,KAAQ,QACR,MAAQ,QACR,MAAQ,QACR,KAAQ,QACR,MAAQ,QACR,KAAQ,QACR,KAAQ,KACR,MAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,MACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,UACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,MACR,KAAQ,KACR,KAAQ,KACR,KAAQ,MACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,MACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,MACR,KAAQ,KACR,KAAQ,MACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,MACR,KAAQ,SACR,KAAQ,MACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,KAAQ,MACR,KAAQ,SACR,KAAQ,MACR,KAAQ,KACR,KAAQ,aAC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AG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,EAAG,EAAG,EAAG,GACtC2qf,IAAUnhf,UAAKxJ,EAAW,EAAG,E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","sources":["../node_modules/bowser/src/bowser.js","../node_modules/css-in-js-utils/lib/hyphenateProperty.js","../node_modules/css-in-js-utils/lib/isPrefixedValue.js","../node_modules/debounce/index.js","../node_modules/deepmerge/dist/cjs.js","../node_modules/exenv/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/hyphenate-style-name/index.js","../node_modules/inline-style-prefixer/dynamic/createPrefixer.js","../node_modules/inline-style-prefixer/dynamic/plugins/calc.js","../node_modules/inline-style-prefixer/dynamic/plugins/crossFade.js","../node_modules/inline-style-prefixer/dynamic/plugins/cursor.js","../node_modules/inline-style-prefixer/dynamic/plugins/filter.js","../node_modules/inline-style-prefixer/dynamic/plugins/flex.js","../node_modules/inline-style-prefixer/dynamic/plugins/flexboxIE.js","../node_modules/inline-style-prefixer/dynamic/plugins/flexboxOld.js","../node_modules/inline-style-prefixer/dynamic/plugins/gradient.js","../node_modules/inline-style-prefixer/dynamic/plugins/imageSet.js","../node_modules/inline-style-prefixer/dynamic/plugins/position.js","../node_modules/inline-style-prefixer/dynamic/plugins/sizing.js","../node_modules/inline-style-prefixer/dynamic/plugins/transition.js","../node_modules/inline-style-prefixer/static/createPrefixer.js","../node_modules/inline-style-prefixer/static/plugins/calc.js","../node_modules/inline-style-prefixer/static/plugins/crossFade.js","../node_modules/inline-style-prefixer/static/plugins/cursor.js","../node_modules/inline-style-prefixer/static/plugins/filter.js","../node_modules/inline-style-prefixer/static/plugins/flex.js","../node_modules/inline-style-prefixer/static/plugins/flexboxIE.js","../node_modules/inline-style-prefixer/static/plugins/flexboxOld.js","../node_modules/inline-style-prefixer/static/plugins/gradient.js","../node_modules/inline-style-prefixer/static/plugins/imageSet.js","../node_modules/inline-style-prefixer/static/plugins/position.js","../node_modules/inline-style-prefixer/static/plugins/sizing.js","../node_modules/inline-style-prefixer/static/plugins/transition.js","../node_modules/inline-style-prefixer/utils/addNewValuesOnly.js","../node_modules/inline-style-prefixer/utils/capitalizeString.js","../node_modules/inline-style-prefixer/utils/getBrowserInformation.js","../node_modules/inline-style-prefixer/utils/getPrefixedKeyframes.js","../node_modules/inline-style-prefixer/utils/getPrefixedValue.js","../node_modules/inline-style-prefixer/utils/isObject.js","../node_modules/inline-style-prefixer/utils/prefixProperty.js","../node_modules/inline-style-prefixer/utils/prefixValue.js","../node_modules/load-script/index.js","../node_modules/loglevel/lib/loglevel.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/radium/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/radium/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/radium/node_modules/react-is/index.js","../node_modules/react-collapse/lib/Collapse.js","../node_modules/react-collapse/lib/UnmountClosed.js","../node_modules/react-collapse/lib/index.js","../node_modules/react-device-detect/dist/lib.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-dom/node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react-dom/node_modules/scheduler/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-ga4/dist/format.js","../node_modules/react-ga4/dist/ga4.js","../node_modules/react-ga4/dist/gtag.js","../node_modules/react-ga4/dist/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-modal/lib/components/Modal.js","../node_modules/react-modal/lib/components/ModalPortal.js","../node_modules/react-modal/lib/helpers/ariaAppHider.js","../node_modules/react-modal/lib/helpers/bodyTrap.js","../node_modules/react-modal/lib/helpers/classList.js","../node_modules/react-modal/lib/helpers/focusManager.js","../node_modules/react-modal/lib/helpers/portalOpenInstances.js","../node_modules/react-modal/lib/helpers/safeHTMLElement.js","../node_modules/react-modal/lib/helpers/scopeTab.js","../node_modules/react-modal/lib/helpers/tabbable.js","../node_modules/react-modal/lib/index.js","../node_modules/react-player/file.js","../node_modules/react-player/lib/Player.js","../node_modules/react-player/lib/ReactPlayer.js","../node_modules/react-player/lib/patterns.js","../node_modules/react-player/lib/players/FilePlayer.js","../node_modules/react-player/lib/props.js","../node_modules/react-player/lib/utils.js","../node_modules/react-reconciler/cjs/react-reconciler-constants.production.min.js","../node_modules/react-reconciler/cjs/react-reconciler.production.min.js","../node_modules/react-reconciler/constants.js","../node_modules/react-reconciler/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/shallowequal/index.js","../node_modules/ua-parser-js/dist/ua-parser.min.js","../node_modules/warning/warning.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/regenerator/index.js","../webpack/bootstrap","../webpack/runtime/amd define","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.browser.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.browser.esm.js","../node_modules/styled-components/src/utils/interleave.js","../node_modules/styled-components/src/utils/isPlainObject.js","../node_modules/styled-components/src/utils/empties.js","../node_modules/styled-components/src/utils/isFunction.js","../node_modules/styled-components/src/utils/getComponentName.js","../node_modules/styled-components/src/utils/isStyledComponent.js","../node_modules/styled-components/src/constants.js","../node_modules/styled-components/src/utils/error.js","../node_modules/styled-components/src/sheet/GroupedTag.js","../node_modules/styled-components/src/sheet/GroupIDAllocator.js","../node_modules/styled-components/src/sheet/Rehydration.js","../node_modules/styled-components/src/utils/nonce.js","../node_modules/styled-components/src/sheet/dom.js","../node_modules/styled-components/src/sheet/Tag.js","../node_modules/styled-components/src/sheet/Sheet.js","../node_modules/styled-components/src/utils/generateAlphabeticName.js","../node_modules/styled-components/src/utils/hash.js","../node_modules/styled-components/src/utils/isStaticRules.js","../node_modules/styled-components/src/models/ComponentStyle.js","../node_modules/styled-components/src/utils/stylis.js","../node_modules/styled-components/src/utils/stylisPluginInsertRule.js","../node_modules/styled-components/src/models/StyleSheetManager.js","../node_modules/styled-components/src/models/Keyframes.js","../node_modules/styled-components/src/utils/hyphenateStyleName.js","../node_modules/styled-components/src/utils/flatten.js","../node_modules/styled-components/src/utils/isStatelessFunction.js","../node_modules/styled-components/src/utils/addUnitIfNeeded.js","../node_modules/styled-components/src/constructors/css.js","../node_modules/styled-components/src/utils/checkDynamicCreation.js","../node_modules/styled-components/src/utils/determineTheme.js","../node_modules/styled-components/src/utils/escape.js","../node_modules/styled-components/src/utils/generateComponentId.js","../node_modules/styled-components/src/utils/isTag.js","../node_modules/styled-components/src/utils/mixinDeep.js","../node_modules/styled-components/src/models/ThemeProvider.js","../node_modules/styled-components/src/models/StyledComponent.js","../node_modules/styled-components/src/utils/generateDisplayName.js","../node_modules/styled-components/src/utils/joinStrings.js","../node_modules/styled-components/src/utils/domElements.js","../node_modules/styled-components/src/constructors/styled.js","../node_modules/styled-components/src/constructors/constructWithOptions.js","../node_modules/styled-components/src/models/GlobalStyle.js","../node_modules/styled-components/src/models/ServerStyleSheet.js","../node_modules/styled-components/src/constructors/keyframes.js","../node_modules/styled-components/src/base.js","../node_modules/react-tooltip/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/react-tooltip/node_modules/uuid/dist/esm-browser/bytesToUuid.js","../node_modules/react-tooltip/node_modules/uuid/dist/esm-browser/v4.js","../node_modules/react-tooltip/src/constant.js","../node_modules/react-tooltip/src/decorators/staticMethods.js","../node_modules/react-tooltip/src/decorators/customEvent.js","../node_modules/react-tooltip/src/decorators/bodyMode.js","../node_modules/react-tooltip/src/utils/getPosition.js","../node_modules/react-tooltip/src/utils/getTipContent.js","../node_modules/react-tooltip/src/utils/aria.js","../node_modules/react-tooltip/src/utils/nodeListToArray.js","../node_modules/react-tooltip/src/decorators/defaultStyles.js","../node_modules/react-tooltip/src/decorators/styler.js","../node_modules/react-tooltip/node_modules/core-js/internals/global.js","../node_modules/react-tooltip/node_modules/core-js/internals/fails.js","../node_modules/react-tooltip/node_modules/core-js/internals/descriptors.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/react-tooltip/node_modules/core-js/internals/create-property-descriptor.js","../node_modules/react-tooltip/node_modules/core-js/internals/classof-raw.js","../node_modules/react-tooltip/node_modules/core-js/internals/indexed-object.js","../node_modules/react-tooltip/node_modules/core-js/internals/require-object-coercible.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-indexed-object.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-object.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-primitive.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-object.js","../node_modules/react-tooltip/node_modules/core-js/internals/has.js","../node_modules/react-tooltip/node_modules/core-js/internals/document-create-element.js","../node_modules/react-tooltip/node_modules/core-js/internals/ie8-dom-define.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/react-tooltip/node_modules/core-js/internals/an-object.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-define-property.js","../node_modules/react-tooltip/node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/react-tooltip/node_modules/core-js/internals/set-global.js","../node_modules/react-tooltip/node_modules/core-js/internals/shared-store.js","../node_modules/react-tooltip/node_modules/core-js/internals/inspect-source.js","../node_modules/react-tooltip/node_modules/core-js/internals/internal-state.js","../node_modules/react-tooltip/node_modules/core-js/internals/native-weak-map.js","../node_modules/react-tooltip/node_modules/core-js/internals/shared.js","../node_modules/react-tooltip/node_modules/core-js/internals/uid.js","../node_modules/react-tooltip/node_modules/core-js/internals/shared-key.js","../node_modules/react-tooltip/node_modules/core-js/internals/hidden-keys.js","../node_modules/react-tooltip/node_modules/core-js/internals/engine-v8-version.js","../node_modules/react-tooltip/node_modules/core-js/internals/redefine.js","../node_modules/react-tooltip/node_modules/core-js/internals/path.js","../node_modules/react-tooltip/node_modules/core-js/internals/get-built-in.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-integer.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-length.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-absolute-index.js","../node_modules/react-tooltip/node_modules/core-js/internals/array-includes.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-keys-internal.js","../node_modules/react-tooltip/node_modules/core-js/internals/enum-bug-keys.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/react-tooltip/node_modules/core-js/internals/own-keys.js","../node_modules/react-tooltip/node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-forced.js","../node_modules/react-tooltip/node_modules/core-js/internals/export.js","../node_modules/react-tooltip/node_modules/core-js/internals/function-bind-context.js","../node_modules/react-tooltip/node_modules/core-js/internals/a-function.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-array.js","../node_modules/react-tooltip/node_modules/core-js/internals/engine-user-agent.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-create.js","../node_modules/react-tooltip/node_modules/core-js/internals/native-symbol.js","../node_modules/react-tooltip/node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/react-tooltip/node_modules/core-js/internals/well-known-symbol.js","../node_modules/react-tooltip/node_modules/core-js/internals/array-species-create.js","../node_modules/react-tooltip/node_modules/core-js/internals/array-iteration.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-keys.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-define-properties.js","../node_modules/react-tooltip/node_modules/core-js/internals/html.js","../node_modules/react-tooltip/node_modules/core-js/internals/add-to-unscopables.js","../node_modules/react-tooltip/node_modules/core-js/modules/es.array.find.js","Components/__urlsSystem.js","../node_modules/react-tooltip/src/index.js","../node_modules/react-tooltip/src/decorators/windowListener.js","../node_modules/react-tooltip/src/decorators/isCapture.js","../node_modules/react-tooltip/src/decorators/getEffect.js","../node_modules/react-tooltip/src/decorators/trackRemoval.js","../node_modules/react-tooltip/src/utils/uuid.js","Components/Global.js","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/radium/es/append-px-if-needed.js","../node_modules/radium/es/map-object.js","../node_modules/radium/es/append-important-to-each-value.js","../node_modules/radium/es/camel-case-props-to-dash-case.js","../node_modules/radium/es/prefix-data/static.js","../node_modules/radium/es/prefix-data/dynamic.js","../node_modules/radium/es/prefixer.js","../node_modules/radium/es/css-rule-set-to-string.js","../node_modules/radium/es/clean-state-key.js","../node_modules/radium/es/get-state.js","../node_modules/radium/es/get-state-key.js","../node_modules/radium/es/get-radium-style-state.js","../node_modules/radium/es/hash.js","../node_modules/radium/es/merge-styles.js","../node_modules/radium/es/plugins/merge-style-array-plugin.js","../node_modules/radium/es/plugins/mouse-up-listener.js","../node_modules/radium/es/plugins/resolve-media-queries-plugin.js","../node_modules/radium/es/plugins/resolve-interaction-styles-plugin.js","../node_modules/radium/es/plugins/index.js","../node_modules/radium/es/plugins/check-props-plugin.js","../node_modules/radium/es/plugins/keyframes-plugin.js","../node_modules/radium/es/plugins/prefix-plugin.js","../node_modules/radium/es/plugins/remove-nested-styles-plugin.js","../node_modules/radium/es/plugins/visited-plugin.js","../node_modules/radium/es/resolve-styles.js","../node_modules/radium/es/context.js","../node_modules/radium/es/enhancer.js","../node_modules/radium/es/components/style.js","../node_modules/radium/es/style-keeper.js","../node_modules/radium/es/components/style-sheet.js","../node_modules/radium/es/components/style-root.js","../node_modules/radium/es/index.js","../node_modules/radium/es/keyframes.js","../node_modules/qrcode.react/lib/esm/index.js","../node_modules/react-icons/lib/iconContext.mjs","../node_modules/react-icons/lib/iconBase.mjs","../node_modules/react-icons/gr/index.mjs","Components/ModalBasic.js","Components/_localization.js","Components/_commonComponents.js","../node_modules/react-icons/bs/index.mjs","Components/ErrorBoundary.js","Components/BlockBanner.js","Components/_uiHelpers.js","Components/_makeUrls.js","Components/_logging.js","Components/ArButton.js","Components/images/dimensions.svg","Components/images/zoom-in.svg","Components/images/zoom-out.svg","Components/ClickableIcons.jsx","Components/BlockModelPresentation.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/three/build/three.module.js","../node_modules/zustand/esm/index.js","../node_modules/@react-three/fiber/node_modules/suspend-react/index.js","../node_modules/@react-three/fiber/dist/events-321b05fb.esm.js","../node_modules/its-fine/src/index.tsx","../node_modules/@react-three/fiber/dist/react-three-fiber.esm.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/three-stdlib/controls/OrbitControls.js","../node_modules/@react-three/drei/core/OrbitControls.js","../node_modules/three/examples/jsm/loaders/GLTFLoader.js","../node_modules/three/examples/jsm/loaders/DRACOLoader.js","../node_modules/@react-three/drei/core/shapes.js","../node_modules/troika-worker-utils/dist/troika-worker-utils.esm.js","../node_modules/webgl-sdf-generator/dist/webgl-sdf-generator.mjs","../node_modules/bidi-js/dist/bidi.mjs","../node_modules/troika-three-utils/dist/troika-three-utils.esm.js","../node_modules/troika-three-text/dist/troika-three-text.esm.js","../node_modules/suspend-react/dist/index.js","../node_modules/@react-three/drei/core/Text.js","Components/_gltfModel.js","Components/BlockConfigurator.js","Components/_scene.js","../node_modules/react-swipeable/src/types.ts","../node_modules/react-swipeable/src/index.ts","Components/BlockParams.js","Components/PersonalizationBlock.js","Components/PageConfigurator.js","Components/PageViewer.js","../node_modules/@lit/reactive-element/src/decorators/property.ts","../node_modules/@lit/reactive-element/src/decorators/query-assigned-elements.ts","../node_modules/@google/model-viewer/node_modules/three/build/three.module.js","../node_modules/@lit/reactive-element/src/css-tag.ts","../node_modules/@lit/reactive-element/src/reactive-element.ts","../node_modules/lit-html/src/lit-html.ts","../node_modules/lit-element/src/lit-element.ts","../node_modules/@google/model-viewer/src/constants.ts","../node_modules/@google/model-viewer/src/utilities.ts","../node_modules/@google/model-viewer/src/features/environment.ts","../node_modules/@google/model-viewer/src/assets/close-material-svg.ts","../node_modules/@google/model-viewer/src/assets/controls-svg.ts","../node_modules/@google/model-viewer/src/assets/view-in-ar-material-svg.ts","../node_modules/@google/model-viewer/src/template.ts","../node_modules/@google/model-viewer/node_modules/three/examples/jsm/loaders/DRACOLoader.js","../node_modules/@google/model-viewer/node_modules/three/examples/jsm/loaders/GLTFLoader.js","../node_modules/@google/model-viewer/node_modules/three/examples/jsm/utils/WorkerPool.js","../node_modules/@google/model-viewer/node_modules/three/examples/jsm/libs/ktx-parse.module.js","../node_modules/@google/model-viewer/node_modules/three/examples/jsm/libs/zstddec.module.js","../node_modules/@google/model-viewer/node_modules/three/examples/jsm/loaders/KTX2Loader.js","../node_modules/@google/model-viewer/src/utilities/cache-eviction-policy.ts","../node_modules/@google/model-viewer/src/three-components/CachingGLTFLoader.ts","../node_modules/@google/model-viewer/src/three-components/gltf-instance/VariantMaterialLoaderPlugin.ts","../node_modules/@google/model-viewer/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js","../node_modules/@google/model-viewer/node_modules/three/examples/jsm/exporters/GLTFExporter.js","../node_modules/@google/model-viewer/src/three-components/gltf-instance/VariantMaterialExporterPlugin.ts","../node_modules/@google/model-viewer/node_modules/three/examples/jsm/webxr/XREstimatedLight.js","../node_modules/@google/model-viewer/src/three-components/Damper.ts","../node_modules/@google/model-viewer/src/three-components/PlacementBox.ts","../node_modules/@google/model-viewer/src/three-components/ARRenderer.ts","../node_modules/@google/model-viewer/src/three-components/Debugger.ts","../node_modules/@google/model-viewer/node_modules/three/examples/jsm/utils/SkeletonUtils.js","../node_modules/@google/model-viewer/src/three-components/GLTFInstance.ts","../node_modules/@google/model-viewer/src/three-components/gltf-instance/correlated-scene-graph.ts","../node_modules/@google/model-viewer/src/three-components/gltf-instance/ModelViewerGLTFInstance.ts","../node_modules/@google/model-viewer/node_modules/three/examples/jsm/loaders/RGBELoader.js","../node_modules/@google/model-viewer/src/three-components/EnvironmentScene.ts","../node_modules/@google/model-viewer/src/three-components/EnvironmentSceneAlt.ts","../node_modules/@google/model-viewer/src/three-components/TextureUtils.ts","../node_modules/@google/model-viewer/src/three-components/Renderer.ts","../node_modules/@google/model-viewer/src/features/scene-graph/three-dom-element.ts","../node_modules/@google/model-viewer/src/three-components/gltf-instance/gltf-2.0.ts","../node_modules/@google/model-viewer/src/features/scene-graph/image.ts","../node_modules/@google/model-viewer/src/features/scene-graph/sampler.ts","../node_modules/@google/model-viewer/src/features/scene-graph/texture-info.ts","../node_modules/@google/model-viewer/src/features/scene-graph/texture.ts","../node_modules/@google/model-viewer/src/features/scene-graph/pbr-metallic-roughness.ts","../node_modules/@google/model-viewer/src/features/scene-graph/material.ts","../node_modules/@google/model-viewer/src/features/scene-graph/nodes/primitive-node.ts","../node_modules/@google/model-viewer/src/features/scene-graph/model.ts","../node_modules/@google/model-viewer/src/features/scene-graph.ts","../node_modules/@google/model-viewer/src/styles/parsers.ts","../node_modules/@google/model-viewer/src/styles/conversions.ts","../node_modules/@google/model-viewer/src/three-components/Hotspot.ts","../node_modules/@google/model-viewer/src/three-components/ModelUtils.ts","../node_modules/@google/model-viewer/node_modules/three/examples/jsm/shaders/HorizontalBlurShader.js","../node_modules/@google/model-viewer/node_modules/three/examples/jsm/shaders/VerticalBlurShader.js","../node_modules/@google/model-viewer/node_modules/three/src/math/MathUtils.js","../node_modules/@google/model-viewer/src/three-components/Shadow.ts","../node_modules/@google/model-viewer/src/three-components/ModelScene.ts","../node_modules/@google/model-viewer/src/utilities/data-conversion.ts","../node_modules/@google/model-viewer/src/utilities/progress-tracker.ts","../node_modules/@google/model-viewer/src/model-viewer-base.ts","../node_modules/@google/model-viewer/src/features/animation.ts","../node_modules/@google/model-viewer/src/features/annotation.ts","../node_modules/@google/model-viewer/node_modules/three/examples/jsm/libs/fflate.module.js","../node_modules/@google/model-viewer/node_modules/three/examples/jsm/exporters/USDZExporter.js","../node_modules/@google/model-viewer/src/styles/deserializers.ts","../node_modules/@google/model-viewer/src/features/ar.ts","../node_modules/@google/model-viewer/src/styles/evaluators.ts","../node_modules/@google/model-viewer/src/styles/style-effector.ts","../node_modules/@google/model-viewer/src/decorators.ts","../node_modules/@google/model-viewer/src/three-components/SmoothControls.ts","../node_modules/@google/model-viewer/src/utilities/animation.ts","../node_modules/@google/model-viewer/src/features/controls.ts","../node_modules/@google/model-viewer/src/features/loading.ts","../node_modules/@google/model-viewer/src/features/staging.ts","../node_modules/@google/model-viewer/src/model-viewer.ts","../node_modules/@google/model-viewer/src/utilities/focus-visible.ts","Components/PageArModelViewer.js","Components/PageSelectorGallery.js","../node_modules/dxf-viewer/node_modules/three/build/three.module.js","../node_modules/dxf-viewer/src/BatchingKey.js","../node_modules/dxf-viewer/src/parser/DxfArrayScanner.js","../node_modules/dxf-viewer/src/parser/AutoCadColorIndex.js","../node_modules/dxf-viewer/src/parser/ExtendedDataParser.js","../node_modules/dxf-viewer/src/parser/ParseHelpers.js","../node_modules/dxf-viewer/src/parser/entities/3dface.js","../node_modules/dxf-viewer/src/parser/entities/arc.js","../node_modules/dxf-viewer/src/parser/entities/attdef.js","../node_modules/dxf-viewer/src/parser/entities/attribute.js","../node_modules/dxf-viewer/src/parser/entities/circle.js","../node_modules/dxf-viewer/src/parser/entities/dimension.js","../node_modules/dxf-viewer/src/parser/entities/ellipse.js","../node_modules/dxf-viewer/src/parser/entities/insert.js","../node_modules/dxf-viewer/src/parser/entities/line.js","../node_modules/dxf-viewer/src/parser/entities/lwpolyline.js","../node_modules/dxf-viewer/src/parser/entities/mtext.js","../node_modules/dxf-viewer/src/parser/entities/point.js","../node_modules/dxf-viewer/src/parser/entities/vertex.js","../node_modules/dxf-viewer/src/parser/entities/polyline.js","../node_modules/dxf-viewer/src/parser/entities/solid.js","../node_modules/dxf-viewer/src/parser/entities/spline.js","../node_modules/dxf-viewer/src/parser/entities/text.js","../node_modules/dxf-viewer/src/parser/entities/hatch.js","../node_modules/dxf-viewer/src/parser/DimStyleCodes.js","../node_modules/dxf-viewer/src/parser/DxfParser.js","../node_modules/dxf-viewer/src/DxfFetcher.js","../node_modules/dxf-viewer/src/DynamicBuffer.js","../node_modules/dxf-viewer/node_modules/three/src/math/MathUtils.js","../node_modules/dxf-viewer/node_modules/three/src/constants.js","../node_modules/dxf-viewer/node_modules/three/src/math/Matrix3.js","../node_modules/dxf-viewer/node_modules/three/src/math/ColorManagement.js","../node_modules/dxf-viewer/node_modules/three/src/math/Color.js","../node_modules/dxf-viewer/node_modules/three/src/math/Vector2.js","../node_modules/dxf-viewer/node_modules/three/src/math/Quaternion.js","../node_modules/dxf-viewer/node_modules/three/src/math/Vector3.js","../node_modules/dxf-viewer/node_modules/three/src/math/Matrix4.js","../node_modules/dxf-viewer/node_modules/three/src/extras/core/Curve.js","../node_modules/dxf-viewer/node_modules/three/src/extras/curves/EllipseCurve.js","../node_modules/dxf-viewer/node_modules/three/src/extras/curves/ArcCurve.js","../node_modules/dxf-viewer/node_modules/three/src/extras/curves/CatmullRomCurve3.js","../node_modules/dxf-viewer/node_modules/three/src/extras/core/Interpolations.js","../node_modules/dxf-viewer/node_modules/three/src/extras/curves/CubicBezierCurve.js","../node_modules/dxf-viewer/node_modules/three/src/extras/curves/CubicBezierCurve3.js","../node_modules/dxf-viewer/node_modules/three/src/extras/curves/LineCurve.js","../node_modules/dxf-viewer/node_modules/three/src/extras/curves/LineCurve3.js","../node_modules/dxf-viewer/node_modules/three/src/extras/curves/QuadraticBezierCurve.js","../node_modules/dxf-viewer/node_modules/three/src/extras/curves/QuadraticBezierCurve3.js","../node_modules/dxf-viewer/node_modules/three/src/extras/curves/SplineCurve.js","../node_modules/dxf-viewer/node_modules/three/src/extras/core/CurvePath.js","../node_modules/dxf-viewer/node_modules/three/src/extras/core/Path.js","../node_modules/dxf-viewer/node_modules/three/src/extras/core/Shape.js","../node_modules/dxf-viewer/node_modules/three/src/extras/Earcut.js","../node_modules/dxf-viewer/node_modules/three/src/extras/ShapeUtils.js","../node_modules/dxf-viewer/node_modules/three/src/extras/core/ShapePath.js","../node_modules/dxf-viewer/src/MTextFormatParser.js","../node_modules/dxf-viewer/src/TextRenderer.js","../node_modules/dxf-viewer/src/RBTree.js","../node_modules/dxf-viewer/src/LinearDimension.js","../node_modules/dxf-viewer/src/math/utils.js","../node_modules/dxf-viewer/src/HatchCalculator.js","../node_modules/dxf-viewer/src/Pattern.js","../node_modules/earcut/src/earcut.js","../node_modules/dxf-viewer/src/patterns/metric/acad_iso02w100.js","../node_modules/dxf-viewer/src/patterns/metric/acad_iso03w100.js","../node_modules/dxf-viewer/src/patterns/metric/acad_iso04w100.js","../node_modules/dxf-viewer/src/patterns/metric/acad_iso05w100.js","../node_modules/dxf-viewer/src/patterns/metric/acad_iso06w100.js","../node_modules/dxf-viewer/src/patterns/metric/acad_iso07w100.js","../node_modules/dxf-viewer/src/patterns/metric/acad_iso08w100.js","../node_modules/dxf-viewer/src/patterns/metric/acad_iso09w100.js","../node_modules/dxf-viewer/src/patterns/metric/acad_iso10w100.js","../node_modules/dxf-viewer/src/patterns/metric/acad_iso11w100.js","../node_modules/dxf-viewer/src/patterns/metric/acad_iso12w100.js","../node_modules/dxf-viewer/src/patterns/metric/acad_iso13w100.js","../node_modules/dxf-viewer/src/patterns/metric/acad_iso14w100.js","../node_modules/dxf-viewer/src/patterns/metric/acad_iso15w100.js","../node_modules/dxf-viewer/src/patterns/metric/angle.js","../node_modules/dxf-viewer/src/patterns/metric/ansi31.js","../node_modules/dxf-viewer/src/patterns/metric/ansi32.js","../node_modules/dxf-viewer/src/patterns/metric/ansi33.js","../node_modules/dxf-viewer/src/patterns/metric/ansi34.js","../node_modules/dxf-viewer/src/patterns/metric/ansi35.js","../node_modules/dxf-viewer/src/patterns/metric/ansi36.js","../node_modules/dxf-viewer/src/patterns/metric/ansi37.js","../node_modules/dxf-viewer/src/patterns/metric/ansi38.js","../node_modules/dxf-viewer/src/patterns/metric/ar-b816.js","../node_modules/dxf-viewer/src/patterns/metric/ar-b816c.js","../node_modules/dxf-viewer/src/patterns/metric/ar-b88.js","../node_modules/dxf-viewer/src/patterns/metric/ar-brelm.js","../node_modules/dxf-viewer/src/patterns/metric/ar-brstd.js","../node_modules/dxf-viewer/src/patterns/metric/ar-conc-01.js","../node_modules/dxf-viewer/src/patterns/metric/ar-conc.js","../node_modules/dxf-viewer/src/patterns/metric/ar-hbone.js","../node_modules/dxf-viewer/src/patterns/metric/ar-parq1.js","../node_modules/dxf-viewer/src/patterns/metric/ar-rroof.js","../node_modules/dxf-viewer/src/patterns/metric/ar-rshke.js","../node_modules/dxf-viewer/src/patterns/metric/ar-sand.js","../node_modules/dxf-viewer/src/patterns/metric/barbwire.js","../node_modules/dxf-viewer/src/patterns/metric/blocks-01.js","../node_modules/dxf-viewer/src/patterns/metric/blocks-02.js","../node_modules/dxf-viewer/src/patterns/metric/box-overlap.js","../node_modules/dxf-viewer/src/patterns/metric/box.js","../node_modules/dxf-viewer/src/patterns/metric/boxjoin-01.js","../node_modules/dxf-viewer/src/patterns/metric/boxjoin-02.js","../node_modules/dxf-viewer/src/patterns/metric/brass.js","../node_modules/dxf-viewer/src/patterns/metric/brick.js","../node_modules/dxf-viewer/src/patterns/metric/brstone.js","../node_modules/dxf-viewer/src/patterns/metric/bubbles-01.js","../node_modules/dxf-viewer/src/patterns/metric/bubbles-02.js","../node_modules/dxf-viewer/src/patterns/metric/bubbles-03.js","../node_modules/dxf-viewer/src/patterns/metric/celtic-01.js","../node_modules/dxf-viewer/src/patterns/metric/celtic-02.js","../node_modules/dxf-viewer/src/patterns/metric/celtic-03.js","../node_modules/dxf-viewer/src/patterns/metric/celtic-04.js","../node_modules/dxf-viewer/src/patterns/metric/circles-02.js","../node_modules/dxf-viewer/src/patterns/metric/circles.js","../node_modules/dxf-viewer/src/patterns/metric/clay.js","../node_modules/dxf-viewer/src/patterns/metric/cork.js","../node_modules/dxf-viewer/src/patterns/metric/cross.js","../node_modules/dxf-viewer/src/patterns/metric/dash.js","../node_modules/dxf-viewer/src/patterns/metric/dolmit.js","../node_modules/dxf-viewer/src/patterns/metric/dots.js","../node_modules/dxf-viewer/src/patterns/metric/earth.js","../node_modules/dxf-viewer/src/patterns/metric/escher.js","../node_modules/dxf-viewer/src/patterns/metric/explosion.js","../node_modules/dxf-viewer/src/patterns/metric/flex.js","../node_modules/dxf-viewer/src/patterns/metric/grass.js","../node_modules/dxf-viewer/src/patterns/metric/grate.js","../node_modules/dxf-viewer/src/patterns/metric/gravel-01.js","../node_modules/dxf-viewer/src/patterns/metric/gravel.js","../node_modules/dxf-viewer/src/patterns/metric/hatch-dots.js","../node_modules/dxf-viewer/src/patterns/metric/hatch-sqrs.js","../node_modules/dxf-viewer/src/patterns/metric/hex.js","../node_modules/dxf-viewer/src/patterns/metric/hexagons.js","../node_modules/dxf-viewer/src/patterns/metric/hexjoin-01.js","../node_modules/dxf-viewer/src/patterns/metric/hexjoin-02.js","../node_modules/dxf-viewer/src/patterns/metric/holly.js","../node_modules/dxf-viewer/src/patterns/metric/honey.js","../node_modules/dxf-viewer/src/patterns/metric/hound.js","../node_modules/dxf-viewer/src/patterns/metric/insul.js","../node_modules/dxf-viewer/src/patterns/metric/jis_lc_20.js","../node_modules/dxf-viewer/src/patterns/metric/jis_lc_20a.js","../node_modules/dxf-viewer/src/patterns/metric/jis_lc_8.js","../node_modules/dxf-viewer/src/patterns/metric/jis_lc_8a.js","../node_modules/dxf-viewer/src/patterns/metric/jis_rc_10.js","../node_modules/dxf-viewer/src/patterns/metric/jis_rc_15.js","../node_modules/dxf-viewer/src/patterns/metric/jis_rc_18.js","../node_modules/dxf-viewer/src/patterns/metric/jis_rc_30.js","../node_modules/dxf-viewer/src/patterns/metric/jis_stn_1e.js","../node_modules/dxf-viewer/src/patterns/metric/jis_stn_2.5.js","../node_modules/dxf-viewer/src/patterns/metric/jis_wood.js","../node_modules/dxf-viewer/src/patterns/metric/lattice-01.js","../node_modules/dxf-viewer/src/patterns/metric/lattice-02.js","../node_modules/dxf-viewer/src/patterns/metric/lattice-03.js","../node_modules/dxf-viewer/src/patterns/metric/lattice-04.js","../node_modules/dxf-viewer/src/patterns/metric/lattice-05.js","../node_modules/dxf-viewer/src/patterns/metric/lattice-06.js","../node_modules/dxf-viewer/src/patterns/metric/lattice-07.js","../node_modules/dxf-viewer/src/patterns/metric/leaf-01.js","../node_modules/dxf-viewer/src/patterns/metric/leaf-02.js","../node_modules/dxf-viewer/src/patterns/metric/leaf-03.js","../node_modules/dxf-viewer/src/patterns/metric/line.js","../node_modules/dxf-viewer/src/patterns/metric/looplinks.js","../node_modules/dxf-viewer/src/patterns/metric/maze-01.js","../node_modules/dxf-viewer/src/patterns/metric/maze-02.js","../node_modules/dxf-viewer/src/patterns/metric/mudst.js","../node_modules/dxf-viewer/src/patterns/metric/net.js","../node_modules/dxf-viewer/src/patterns/metric/net3.js","../node_modules/dxf-viewer/src/patterns/metric/plast.js","../node_modules/dxf-viewer/src/patterns/metric/plasti.js","../node_modules/dxf-viewer/src/patterns/metric/qcad-logo.js","../node_modules/dxf-viewer/src/patterns/metric/redback.js","../node_modules/dxf-viewer/src/patterns/metric/sacncr.js","../node_modules/dxf-viewer/src/patterns/metric/scaffold.js","../node_modules/dxf-viewer/src/patterns/metric/square.js","../node_modules/dxf-viewer/src/patterns/metric/squiggle-01.js","../node_modules/dxf-viewer/src/patterns/metric/squiggle-02.js","../node_modules/dxf-viewer/src/patterns/metric/stars.js","../node_modules/dxf-viewer/src/patterns/metric/steel.js","../node_modules/dxf-viewer/src/patterns/metric/swamp.js","../node_modules/dxf-viewer/src/patterns/metric/trans.js","../node_modules/dxf-viewer/src/patterns/metric/tri-overlap.js","../node_modules/dxf-viewer/src/patterns/metric/triang.js","../node_modules/dxf-viewer/src/patterns/metric/weatherboard.js","../node_modules/dxf-viewer/src/patterns/metric/weaving.js","../node_modules/dxf-viewer/src/patterns/metric/wire-fence.js","../node_modules/dxf-viewer/src/patterns/metric/xmastree-01.js","../node_modules/dxf-viewer/src/patterns/metric/xmastree-02.js","../node_modules/dxf-viewer/src/patterns/metric/zigzag.js","../node_modules/dxf-viewer/src/patterns/imperial/acad_iso02w100.js","../node_modules/dxf-viewer/src/patterns/imperial/acad_iso03w100.js","../node_modules/dxf-viewer/src/patterns/imperial/acad_iso04w100.js","../node_modules/dxf-viewer/src/patterns/imperial/acad_iso05w100.js","../node_modules/dxf-viewer/src/patterns/imperial/acad_iso06w100.js","../node_modules/dxf-viewer/src/patterns/imperial/acad_iso07w100.js","../node_modules/dxf-viewer/src/patterns/imperial/acad_iso08w100.js","../node_modules/dxf-viewer/src/patterns/imperial/acad_iso09w100.js","../node_modules/dxf-viewer/src/patterns/imperial/acad_iso10w100.js","../node_modules/dxf-viewer/src/patterns/imperial/acad_iso11w100.js","../node_modules/dxf-viewer/src/patterns/imperial/acad_iso12w100.js","../node_modules/dxf-viewer/src/patterns/imperial/acad_iso13w100.js","../node_modules/dxf-viewer/src/patterns/imperial/acad_iso14w100.js","../node_modules/dxf-viewer/src/patterns/imperial/acad_iso15w100.js","../node_modules/dxf-viewer/src/patterns/imperial/angle.js","../node_modules/dxf-viewer/src/patterns/imperial/ansi31.js","../node_modules/dxf-viewer/src/patterns/imperial/ansi32.js","../node_modules/dxf-viewer/src/patterns/imperial/ansi33.js","../node_modules/dxf-viewer/src/patterns/imperial/ansi34.js","../node_modules/dxf-viewer/src/patterns/imperial/ansi35.js","../node_modules/dxf-viewer/src/patterns/imperial/ansi36.js","../node_modules/dxf-viewer/src/patterns/imperial/ansi37.js","../node_modules/dxf-viewer/src/patterns/imperial/ansi38.js","../node_modules/dxf-viewer/src/patterns/imperial/ar-b816c.js","../node_modules/dxf-viewer/src/patterns/imperial/ar-b816.js","../node_modules/dxf-viewer/src/patterns/imperial/ar-b88.js","../node_modules/dxf-viewer/src/patterns/imperial/ar-brelm.js","../node_modules/dxf-viewer/src/patterns/imperial/ar-brstd.js","../node_modules/dxf-viewer/src/patterns/imperial/ar-conc-01.js","../node_modules/dxf-viewer/src/patterns/imperial/ar-conc.js","../node_modules/dxf-viewer/src/patterns/imperial/ar-hbone.js","../node_modules/dxf-viewer/src/patterns/imperial/ar-parq1.js","../node_modules/dxf-viewer/src/patterns/imperial/ar-rroof.js","../node_modules/dxf-viewer/src/patterns/imperial/ar-rshke.js","../node_modules/dxf-viewer/src/patterns/imperial/ar-sand.js","../node_modules/dxf-viewer/src/patterns/imperial/barbwire.js","../node_modules/dxf-viewer/src/patterns/imperial/blocks-01.js","../node_modules/dxf-viewer/src/patterns/imperial/blocks-02.js","../node_modules/dxf-viewer/src/patterns/imperial/boxjoin-01.js","../node_modules/dxf-viewer/src/patterns/imperial/boxjoin-02.js","../node_modules/dxf-viewer/src/patterns/imperial/box.js","../node_modules/dxf-viewer/src/patterns/imperial/box-overlap.js","../node_modules/dxf-viewer/src/patterns/imperial/brass.js","../node_modules/dxf-viewer/src/patterns/imperial/brick.js","../node_modules/dxf-viewer/src/patterns/imperial/brstone.js","../node_modules/dxf-viewer/src/patterns/imperial/bubbles-01.js","../node_modules/dxf-viewer/src/patterns/imperial/bubbles-02.js","../node_modules/dxf-viewer/src/patterns/imperial/bubbles-03.js","../node_modules/dxf-viewer/src/patterns/imperial/celtic-01.js","../node_modules/dxf-viewer/src/patterns/imperial/celtic-02.js","../node_modules/dxf-viewer/src/patterns/imperial/celtic-03.js","../node_modules/dxf-viewer/src/patterns/imperial/celtic-04.js","../node_modules/dxf-viewer/src/patterns/imperial/circles-02.js","../node_modules/dxf-viewer/src/patterns/imperial/circles.js","../node_modules/dxf-viewer/src/patterns/imperial/clay.js","../node_modules/dxf-viewer/src/patterns/imperial/cork.js","../node_modules/dxf-viewer/src/patterns/imperial/cross.js","../node_modules/dxf-viewer/src/patterns/imperial/dash.js","../node_modules/dxf-viewer/src/patterns/imperial/dolmit.js","../node_modules/dxf-viewer/src/patterns/imperial/dots.js","../node_modules/dxf-viewer/src/patterns/imperial/earth.js","../node_modules/dxf-viewer/src/patterns/imperial/escher.js","../node_modules/dxf-viewer/src/patterns/imperial/explosion.js","../node_modules/dxf-viewer/src/patterns/imperial/flex.js","../node_modules/dxf-viewer/src/patterns/imperial/grass.js","../node_modules/dxf-viewer/src/patterns/imperial/grate.js","../node_modules/dxf-viewer/src/patterns/imperial/gravel-01.js","../node_modules/dxf-viewer/src/patterns/imperial/gravel.js","../node_modules/dxf-viewer/src/patterns/imperial/hatch-dots.js","../node_modules/dxf-viewer/src/patterns/imperial/hatch-sqrs.js","../node_modules/dxf-viewer/src/patterns/imperial/hexagons.js","../node_modules/dxf-viewer/src/patterns/imperial/hexjoin-01.js","../node_modules/dxf-viewer/src/patterns/imperial/hexjoin-02.js","../node_modules/dxf-viewer/src/patterns/imperial/hex.js","../node_modules/dxf-viewer/src/patterns/imperial/holly.js","../node_modules/dxf-viewer/src/patterns/imperial/honey.js","../node_modules/dxf-viewer/src/patterns/imperial/hound.js","../node_modules/dxf-viewer/src/patterns/imperial/insul.js","../node_modules/dxf-viewer/src/patterns/imperial/lattice-01.js","../node_modules/dxf-viewer/src/patterns/imperial/lattice-02.js","../node_modules/dxf-viewer/src/patterns/imperial/lattice-03.js","../node_modules/dxf-viewer/src/patterns/imperial/lattice-04.js","../node_modules/dxf-viewer/src/patterns/imperial/lattice-05.js","../node_modules/dxf-viewer/src/patterns/imperial/lattice-06.js","../node_modules/dxf-viewer/src/patterns/imperial/lattice-07.js","../node_modules/dxf-viewer/src/patterns/imperial/leaf-01.js","../node_modules/dxf-viewer/src/patterns/imperial/leaf-02.js","../node_modules/dxf-viewer/src/patterns/imperial/leaf-03.js","../node_modules/dxf-viewer/src/patterns/imperial/line.js","../node_modules/dxf-viewer/src/patterns/imperial/looplinks.js","../node_modules/dxf-viewer/src/patterns/imperial/maze-01.js","../node_modules/dxf-viewer/src/patterns/imperial/maze-02.js","../node_modules/dxf-viewer/src/patterns/imperial/mudst.js","../node_modules/dxf-viewer/src/patterns/imperial/net3.js","../node_modules/dxf-viewer/src/patterns/imperial/net.js","../node_modules/dxf-viewer/src/patterns/imperial/plasti.js","../node_modules/dxf-viewer/src/patterns/imperial/plast.js","../node_modules/dxf-viewer/src/patterns/imperial/qcad-logo.js","../node_modules/dxf-viewer/src/patterns/imperial/redback.js","../node_modules/dxf-viewer/src/patterns/imperial/sacncr.js","../node_modules/dxf-viewer/src/patterns/imperial/scaffold.js","../node_modules/dxf-viewer/src/patterns/imperial/square.js","../node_modules/dxf-viewer/src/patterns/imperial/squiggle-01.js","../node_modules/dxf-viewer/src/patterns/imperial/squiggle-02.js","../node_modules/dxf-viewer/src/patterns/imperial/stars.js","../node_modules/dxf-viewer/src/patterns/imperial/steel.js","../node_modules/dxf-viewer/src/patterns/imperial/swamp.js","../node_modules/dxf-viewer/src/patterns/imperial/trans.js","../node_modules/dxf-viewer/src/patterns/imperial/triang.js","../node_modules/dxf-viewer/src/patterns/imperial/tri-overlap.js","../node_modules/dxf-viewer/src/patterns/imperial/weatherboard.js","../node_modules/dxf-viewer/src/patterns/imperial/weaving.js","../node_modules/dxf-viewer/src/patterns/imperial/wire-fence.js","../node_modules/dxf-viewer/src/patterns/imperial/xmastree-01.js","../node_modules/dxf-viewer/src/patterns/imperial/xmastree-02.js","../node_modules/dxf-viewer/src/patterns/imperial/zigzag.js","../node_modules/dxf-viewer/src/DxfScene.js","../node_modules/opentype.js/node_modules/string.prototype.codepointat/codepointat.js","../node_modules/opentype.js/node_modules/tiny-inflate/index.js","../node_modules/opentype.js/src/bbox.js","../node_modules/opentype.js/src/path.js","../node_modules/opentype.js/src/check.js","../node_modules/opentype.js/src/types.js","../node_modules/opentype.js/src/table.js","../node_modules/opentype.js/src/parse.js","../node_modules/opentype.js/src/tables/cmap.js","../node_modules/opentype.js/src/encoding.js","../node_modules/opentype.js/src/draw.js","../node_modules/opentype.js/src/glyph.js","../node_modules/opentype.js/src/glyphset.js","../node_modules/opentype.js/src/tables/cff.js","../node_modules/opentype.js/src/tables/head.js","../node_modules/opentype.js/src/tables/hhea.js","../node_modules/opentype.js/src/tables/hmtx.js","../node_modules/opentype.js/src/tables/ltag.js","../node_modules/opentype.js/src/tables/maxp.js","../node_modules/opentype.js/src/tables/name.js","../node_modules/opentype.js/src/tables/os2.js","../node_modules/opentype.js/src/tables/post.js","../node_modules/opentype.js/src/tables/gsub.js","../node_modules/opentype.js/src/tables/meta.js","../node_modules/opentype.js/src/tables/sfnt.js","../node_modules/opentype.js/src/layout.js","../node_modules/opentype.js/src/position.js","../node_modules/opentype.js/src/substitution.js","../node_modules/opentype.js/src/util.js","../node_modules/opentype.js/src/tables/glyf.js","../node_modules/opentype.js/src/hintingtt.js","../node_modules/opentype.js/src/tokenizer.js","../node_modules/opentype.js/src/char.js","../node_modules/opentype.js/src/features/featureQuery.js","../node_modules/opentype.js/src/features/arab/contextCheck/arabicWord.js","../node_modules/opentype.js/src/features/arab/contextCheck/arabicSentence.js","../node_modules/opentype.js/src/features/applySubstitution.js","../node_modules/opentype.js/src/features/arab/arabicPresentationForms.js","../node_modules/opentype.js/src/features/arab/arabicRequiredLigatures.js","../node_modules/opentype.js/src/features/latn/contextCheck/latinWord.js","../node_modules/opentype.js/src/features/latn/latinLigatures.js","../node_modules/opentype.js/src/bidi.js","../node_modules/opentype.js/src/font.js","../node_modules/opentype.js/src/tables/fvar.js","../node_modules/opentype.js/src/tables/gdef.js","../node_modules/opentype.js/src/tables/gpos.js","../node_modules/opentype.js/src/tables/kern.js","../node_modules/opentype.js/src/tables/loca.js","../node_modules/opentype.js/src/opentype.js","../node_modules/dxf-viewer/src/DxfWorker.js","../node_modules/dxf-viewer/src/MaterialKey.js","../node_modules/dxf-viewer/src/OrbitControls.js","../node_modules/dxf-viewer/src/DxfViewer.js","Components/PagePersonal.js","App.js","index.js"],"sourcesContent":["/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2015\n */\n\n!function (root, name, definition) {\n if (typeof module != 'undefined' && module.exports) module.exports = definition()\n else if (typeof define == 'function' && define.amd) define(name, definition)\n else root[name] = definition()\n}(this, 'bowser', function () {\n /**\n * See useragents.js for examples of navigator.userAgent\n */\n\n var t = true\n\n function detect(ua) {\n\n function getFirstMatch(regex) {\n var match = ua.match(regex);\n return (match && match.length > 1 && match[1]) || '';\n }\n\n function getSecondMatch(regex) {\n var match = ua.match(regex);\n return (match && match.length > 1 && match[2]) || '';\n }\n\n var iosdevice = getFirstMatch(/(ipod|iphone|ipad)/i).toLowerCase()\n , likeAndroid = /like android/i.test(ua)\n , android = !likeAndroid && /android/i.test(ua)\n , nexusMobile = /nexus\\s*[0-6]\\s*/i.test(ua)\n , nexusTablet = !nexusMobile && /nexus\\s*[0-9]+/i.test(ua)\n , chromeos = /CrOS/.test(ua)\n , silk = /silk/i.test(ua)\n , sailfish = /sailfish/i.test(ua)\n , tizen = /tizen/i.test(ua)\n , webos = /(web|hpw)(o|0)s/i.test(ua)\n , windowsphone = /windows phone/i.test(ua)\n , samsungBrowser = /SamsungBrowser/i.test(ua)\n , windows = !windowsphone && /windows/i.test(ua)\n , mac = !iosdevice && !silk && /macintosh/i.test(ua)\n , linux = !android && !sailfish && !tizen && !webos && /linux/i.test(ua)\n , edgeVersion = getSecondMatch(/edg([ea]|ios)\\/(\\d+(\\.\\d+)?)/i)\n , versionIdentifier = getFirstMatch(/version\\/(\\d+(\\.\\d+)?)/i)\n , tablet = /tablet/i.test(ua) && !/tablet pc/i.test(ua)\n , mobile = !tablet && /[^-]mobi/i.test(ua)\n , xbox = /xbox/i.test(ua)\n , result\n\n if (/opera/i.test(ua)) {\n // an old Opera\n result = {\n name: 'Opera'\n , opera: t\n , version: versionIdentifier || getFirstMatch(/(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)\n }\n } else if (/opr\\/|opios/i.test(ua)) {\n // a new Opera\n result = {\n name: 'Opera'\n , opera: t\n , version: getFirstMatch(/(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i) || versionIdentifier\n }\n }\n else if (/SamsungBrowser/i.test(ua)) {\n result = {\n name: 'Samsung Internet for Android'\n , samsungBrowser: t\n , version: versionIdentifier || getFirstMatch(/(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/Whale/i.test(ua)) {\n result = {\n name: 'NAVER Whale browser'\n , whale: t\n , version: getFirstMatch(/(?:whale)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (/MZBrowser/i.test(ua)) {\n result = {\n name: 'MZ Browser'\n , mzbrowser: t\n , version: getFirstMatch(/(?:MZBrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (/coast/i.test(ua)) {\n result = {\n name: 'Opera Coast'\n , coast: t\n , version: versionIdentifier || getFirstMatch(/(?:coast)[\\s\\/](\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/focus/i.test(ua)) {\n result = {\n name: 'Focus'\n , focus: t\n , version: getFirstMatch(/(?:focus)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (/yabrowser/i.test(ua)) {\n result = {\n name: 'Yandex Browser'\n , yandexbrowser: t\n , version: versionIdentifier || getFirstMatch(/(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/ucbrowser/i.test(ua)) {\n result = {\n name: 'UC Browser'\n , ucbrowser: t\n , version: getFirstMatch(/(?:ucbrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (/mxios/i.test(ua)) {\n result = {\n name: 'Maxthon'\n , maxthon: t\n , version: getFirstMatch(/(?:mxios)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (/epiphany/i.test(ua)) {\n result = {\n name: 'Epiphany'\n , epiphany: t\n , version: getFirstMatch(/(?:epiphany)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (/puffin/i.test(ua)) {\n result = {\n name: 'Puffin'\n , puffin: t\n , version: getFirstMatch(/(?:puffin)[\\s\\/](\\d+(?:\\.\\d+)?)/i)\n }\n }\n else if (/sleipnir/i.test(ua)) {\n result = {\n name: 'Sleipnir'\n , sleipnir: t\n , version: getFirstMatch(/(?:sleipnir)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (/k-meleon/i.test(ua)) {\n result = {\n name: 'K-Meleon'\n , kMeleon: t\n , version: getFirstMatch(/(?:k-meleon)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (windowsphone) {\n result = {\n name: 'Windows Phone'\n , osname: 'Windows Phone'\n , windowsphone: t\n }\n if (edgeVersion) {\n result.msedge = t\n result.version = edgeVersion\n }\n else {\n result.msie = t\n result.version = getFirstMatch(/iemobile\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/msie|trident/i.test(ua)) {\n result = {\n name: 'Internet Explorer'\n , msie: t\n , version: getFirstMatch(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)\n }\n } else if (chromeos) {\n result = {\n name: 'Chrome'\n , osname: 'Chrome OS'\n , chromeos: t\n , chromeBook: t\n , chrome: t\n , version: getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)\n }\n } else if (/edg([ea]|ios)/i.test(ua)) {\n result = {\n name: 'Microsoft Edge'\n , msedge: t\n , version: edgeVersion\n }\n }\n else if (/vivaldi/i.test(ua)) {\n result = {\n name: 'Vivaldi'\n , vivaldi: t\n , version: getFirstMatch(/vivaldi\\/(\\d+(\\.\\d+)?)/i) || versionIdentifier\n }\n }\n else if (sailfish) {\n result = {\n name: 'Sailfish'\n , osname: 'Sailfish OS'\n , sailfish: t\n , version: getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/seamonkey\\//i.test(ua)) {\n result = {\n name: 'SeaMonkey'\n , seamonkey: t\n , version: getFirstMatch(/seamonkey\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/firefox|iceweasel|fxios/i.test(ua)) {\n result = {\n name: 'Firefox'\n , firefox: t\n , version: getFirstMatch(/(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i)\n }\n if (/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(ua)) {\n result.firefoxos = t\n result.osname = 'Firefox OS'\n }\n }\n else if (silk) {\n result = {\n name: 'Amazon Silk'\n , silk: t\n , version : getFirstMatch(/silk\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/phantom/i.test(ua)) {\n result = {\n name: 'PhantomJS'\n , phantom: t\n , version: getFirstMatch(/phantomjs\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/slimerjs/i.test(ua)) {\n result = {\n name: 'SlimerJS'\n , slimer: t\n , version: getFirstMatch(/slimerjs\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/blackberry|\\bbb\\d+/i.test(ua) || /rim\\stablet/i.test(ua)) {\n result = {\n name: 'BlackBerry'\n , osname: 'BlackBerry OS'\n , blackberry: t\n , version: versionIdentifier || getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (webos) {\n result = {\n name: 'WebOS'\n , osname: 'WebOS'\n , webos: t\n , version: versionIdentifier || getFirstMatch(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)\n };\n /touchpad\\//i.test(ua) && (result.touchpad = t)\n }\n else if (/bada/i.test(ua)) {\n result = {\n name: 'Bada'\n , osname: 'Bada'\n , bada: t\n , version: getFirstMatch(/dolfin\\/(\\d+(\\.\\d+)?)/i)\n };\n }\n else if (tizen) {\n result = {\n name: 'Tizen'\n , osname: 'Tizen'\n , tizen: t\n , version: getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i) || versionIdentifier\n };\n }\n else if (/qupzilla/i.test(ua)) {\n result = {\n name: 'QupZilla'\n , qupzilla: t\n , version: getFirstMatch(/(?:qupzilla)[\\s\\/](\\d+(?:\\.\\d+)+)/i) || versionIdentifier\n }\n }\n else if (/chromium/i.test(ua)) {\n result = {\n name: 'Chromium'\n , chromium: t\n , version: getFirstMatch(/(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i) || versionIdentifier\n }\n }\n else if (/chrome|crios|crmo/i.test(ua)) {\n result = {\n name: 'Chrome'\n , chrome: t\n , version: getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (android) {\n result = {\n name: 'Android'\n , version: versionIdentifier\n }\n }\n else if (/safari|applewebkit/i.test(ua)) {\n result = {\n name: 'Safari'\n , safari: t\n }\n if (versionIdentifier) {\n result.version = versionIdentifier\n }\n }\n else if (iosdevice) {\n result = {\n name : iosdevice == 'iphone' ? 'iPhone' : iosdevice == 'ipad' ? 'iPad' : 'iPod'\n }\n // WTF: version is not part of user agent in web apps\n if (versionIdentifier) {\n result.version = versionIdentifier\n }\n }\n else if(/googlebot/i.test(ua)) {\n result = {\n name: 'Googlebot'\n , googlebot: t\n , version: getFirstMatch(/googlebot\\/(\\d+(\\.\\d+))/i) || versionIdentifier\n }\n }\n else {\n result = {\n name: getFirstMatch(/^(.*)\\/(.*) /),\n version: getSecondMatch(/^(.*)\\/(.*) /)\n };\n }\n\n // set webkit or gecko flag for browsers based on these engines\n if (!result.msedge && /(apple)?webkit/i.test(ua)) {\n if (/(apple)?webkit\\/537\\.36/i.test(ua)) {\n result.name = result.name || \"Blink\"\n result.blink = t\n } else {\n result.name = result.name || \"Webkit\"\n result.webkit = t\n }\n if (!result.version && versionIdentifier) {\n result.version = versionIdentifier\n }\n } else if (!result.opera && /gecko\\//i.test(ua)) {\n result.name = result.name || \"Gecko\"\n result.gecko = t\n result.version = result.version || getFirstMatch(/gecko\\/(\\d+(\\.\\d+)?)/i)\n }\n\n // set OS flags for platforms that have multiple browsers\n if (!result.windowsphone && (android || result.silk)) {\n result.android = t\n result.osname = 'Android'\n } else if (!result.windowsphone && iosdevice) {\n result[iosdevice] = t\n result.ios = t\n result.osname = 'iOS'\n } else if (mac) {\n result.mac = t\n result.osname = 'macOS'\n } else if (xbox) {\n result.xbox = t\n result.osname = 'Xbox'\n } else if (windows) {\n result.windows = t\n result.osname = 'Windows'\n } else if (linux) {\n result.linux = t\n result.osname = 'Linux'\n }\n\n function getWindowsVersion (s) {\n switch (s) {\n case 'NT': return 'NT'\n case 'XP': return 'XP'\n case 'NT 5.0': return '2000'\n case 'NT 5.1': return 'XP'\n case 'NT 5.2': return '2003'\n case 'NT 6.0': return 'Vista'\n case 'NT 6.1': return '7'\n case 'NT 6.2': return '8'\n case 'NT 6.3': return '8.1'\n case 'NT 10.0': return '10'\n default: return undefined\n }\n }\n\n // OS version extraction\n var osVersion = '';\n if (result.windows) {\n osVersion = getWindowsVersion(getFirstMatch(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i))\n } else if (result.windowsphone) {\n osVersion = getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i);\n } else if (result.mac) {\n osVersion = getFirstMatch(/Mac OS X (\\d+([_\\.\\s]\\d+)*)/i);\n osVersion = osVersion.replace(/[_\\s]/g, '.');\n } else if (iosdevice) {\n osVersion = getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i);\n osVersion = osVersion.replace(/[_\\s]/g, '.');\n } else if (android) {\n osVersion = getFirstMatch(/android[ \\/-](\\d+(\\.\\d+)*)/i);\n } else if (result.webos) {\n osVersion = getFirstMatch(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i);\n } else if (result.blackberry) {\n osVersion = getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i);\n } else if (result.bada) {\n osVersion = getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i);\n } else if (result.tizen) {\n osVersion = getFirstMatch(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i);\n }\n if (osVersion) {\n result.osversion = osVersion;\n }\n\n // device type extraction\n var osMajorVersion = !result.windows && osVersion.split('.')[0];\n if (\n tablet\n || nexusTablet\n || iosdevice == 'ipad'\n || (android && (osMajorVersion == 3 || (osMajorVersion >= 4 && !mobile)))\n || result.silk\n ) {\n result.tablet = t\n } else if (\n mobile\n || iosdevice == 'iphone'\n || iosdevice == 'ipod'\n || android\n || nexusMobile\n || result.blackberry\n || result.webos\n || result.bada\n ) {\n result.mobile = t\n }\n\n // Graded Browser Support\n // http://developer.yahoo.com/yui/articles/gbs\n if (result.msedge ||\n (result.msie && result.version >= 10) ||\n (result.yandexbrowser && result.version >= 15) ||\n\t\t (result.vivaldi && result.version >= 1.0) ||\n (result.chrome && result.version >= 20) ||\n (result.samsungBrowser && result.version >= 4) ||\n (result.whale && compareVersions([result.version, '1.0']) === 1) ||\n (result.mzbrowser && compareVersions([result.version, '6.0']) === 1) ||\n (result.focus && compareVersions([result.version, '1.0']) === 1) ||\n (result.firefox && result.version >= 20.0) ||\n (result.safari && result.version >= 6) ||\n (result.opera && result.version >= 10.0) ||\n (result.ios && result.osversion && result.osversion.split(\".\")[0] >= 6) ||\n (result.blackberry && result.version >= 10.1)\n || (result.chromium && result.version >= 20)\n ) {\n result.a = t;\n }\n else if ((result.msie && result.version < 10) ||\n (result.chrome && result.version < 20) ||\n (result.firefox && result.version < 20.0) ||\n (result.safari && result.version < 6) ||\n (result.opera && result.version < 10.0) ||\n (result.ios && result.osversion && result.osversion.split(\".\")[0] < 6)\n || (result.chromium && result.version < 20)\n ) {\n result.c = t\n } else result.x = t\n\n return result\n }\n\n var bowser = detect(typeof navigator !== 'undefined' ? navigator.userAgent || '' : '')\n\n bowser.test = function (browserList) {\n for (var i = 0; i < browserList.length; ++i) {\n var browserItem = browserList[i];\n if (typeof browserItem=== 'string') {\n if (browserItem in bowser) {\n return true;\n }\n }\n }\n return false;\n }\n\n /**\n * Get version precisions count\n *\n * @example\n * getVersionPrecision(\"1.10.3\") // 3\n *\n * @param {string} version\n * @return {number}\n */\n function getVersionPrecision(version) {\n return version.split(\".\").length;\n }\n\n /**\n * Array::map polyfill\n *\n * @param {Array} arr\n * @param {Function} iterator\n * @return {Array}\n */\n function map(arr, iterator) {\n var result = [], i;\n if (Array.prototype.map) {\n return Array.prototype.map.call(arr, iterator);\n }\n for (i = 0; i < arr.length; i++) {\n result.push(iterator(arr[i]));\n }\n return result;\n }\n\n /**\n * Calculate browser version weight\n *\n * @example\n * compareVersions(['1.10.2.1', '1.8.2.1.90']) // 1\n * compareVersions(['1.010.2.1', '1.09.2.1.90']); // 1\n * compareVersions(['1.10.2.1', '1.10.2.1']); // 0\n * compareVersions(['1.10.2.1', '1.0800.2']); // -1\n *\n * @param {Array} versions versions to compare\n * @return {Number} comparison result\n */\n function compareVersions(versions) {\n // 1) get common precision for both versions, for example for \"10.0\" and \"9\" it should be 2\n var precision = Math.max(getVersionPrecision(versions[0]), getVersionPrecision(versions[1]));\n var chunks = map(versions, function (version) {\n var delta = precision - getVersionPrecision(version);\n\n // 2) \"9\" -> \"9.0\" (for precision = 2)\n version = version + new Array(delta + 1).join(\".0\");\n\n // 3) \"9.0\" -> [\"000000000\"\", \"000000009\"]\n return map(version.split(\".\"), function (chunk) {\n return new Array(20 - chunk.length).join(\"0\") + chunk;\n }).reverse();\n });\n\n // iterate in reverse order by reversed chunks array\n while (--precision >= 0) {\n // 4) compare: \"000000009\" > \"000000010\" = false (but \"9\" > \"10\" = true)\n if (chunks[0][precision] > chunks[1][precision]) {\n return 1;\n }\n else if (chunks[0][precision] === chunks[1][precision]) {\n if (precision === 0) {\n // all version chunks are same\n return 0;\n }\n }\n else {\n return -1;\n }\n }\n }\n\n /**\n * Check if browser is unsupported\n *\n * @example\n * bowser.isUnsupportedBrowser({\n * msie: \"10\",\n * firefox: \"23\",\n * chrome: \"29\",\n * safari: \"5.1\",\n * opera: \"16\",\n * phantom: \"534\"\n * });\n *\n * @param {Object} minVersions map of minimal version to browser\n * @param {Boolean} [strictMode = false] flag to return false if browser wasn't found in map\n * @param {String} [ua] user agent string\n * @return {Boolean}\n */\n function isUnsupportedBrowser(minVersions, strictMode, ua) {\n var _bowser = bowser;\n\n // make strictMode param optional with ua param usage\n if (typeof strictMode === 'string') {\n ua = strictMode;\n strictMode = void(0);\n }\n\n if (strictMode === void(0)) {\n strictMode = false;\n }\n if (ua) {\n _bowser = detect(ua);\n }\n\n var version = \"\" + _bowser.version;\n for (var browser in minVersions) {\n if (minVersions.hasOwnProperty(browser)) {\n if (_bowser[browser]) {\n if (typeof minVersions[browser] !== 'string') {\n throw new Error('Browser version in the minVersion map should be a string: ' + browser + ': ' + String(minVersions));\n }\n\n // browser version and min supported version.\n return compareVersions([version, minVersions[browser]]) < 0;\n }\n }\n }\n\n return strictMode; // not found\n }\n\n /**\n * Check if browser is supported\n *\n * @param {Object} minVersions map of minimal version to browser\n * @param {Boolean} [strictMode = false] flag to return false if browser wasn't found in map\n * @param {String} [ua] user agent string\n * @return {Boolean}\n */\n function check(minVersions, strictMode, ua) {\n return !isUnsupportedBrowser(minVersions, strictMode, ua);\n }\n\n bowser.isUnsupportedBrowser = isUnsupportedBrowser;\n bowser.compareVersions = compareVersions;\n bowser.check = check;\n\n /*\n * Set our detect method to the main bowser object so we can\n * reuse it to test other user agents.\n * This is needed to implement future tests.\n */\n bowser._detect = detect;\n\n /*\n * Set our detect public method to the main bowser object\n * This is needed to implement bowser in server side\n */\n bowser.detect = detect;\n return bowser\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hyphenateProperty;\n\nvar _hyphenateStyleName = require('hyphenate-style-name');\n\nvar _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction hyphenateProperty(property) {\n return (0, _hyphenateStyleName2.default)(property);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPrefixedValue;\nvar regex = /-webkit-|-moz-|-ms-/;\n\nfunction isPrefixedValue(value) {\n return typeof value === 'string' && regex.test(value);\n}\nmodule.exports = exports['default'];","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nexports.default = createPrefixer;\n\nvar _getBrowserInformation = require('../utils/getBrowserInformation');\n\nvar _getBrowserInformation2 = _interopRequireDefault(_getBrowserInformation);\n\nvar _getPrefixedKeyframes = require('../utils/getPrefixedKeyframes');\n\nvar _getPrefixedKeyframes2 = _interopRequireDefault(_getPrefixedKeyframes);\n\nvar _capitalizeString = require('../utils/capitalizeString');\n\nvar _capitalizeString2 = _interopRequireDefault(_capitalizeString);\n\nvar _addNewValuesOnly = require('../utils/addNewValuesOnly');\n\nvar _addNewValuesOnly2 = _interopRequireDefault(_addNewValuesOnly);\n\nvar _isObject = require('../utils/isObject');\n\nvar _isObject2 = _interopRequireDefault(_isObject);\n\nvar _prefixValue = require('../utils/prefixValue');\n\nvar _prefixValue2 = _interopRequireDefault(_prefixValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction createPrefixer(_ref) {\n var prefixMap = _ref.prefixMap,\n plugins = _ref.plugins;\n var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (style) {\n return style;\n };\n\n return function () {\n /**\n * Instantiante a new prefixer\n * @param {string} userAgent - userAgent to gather prefix information according to caniuse.com\n * @param {string} keepUnprefixed - keeps unprefixed properties and values\n */\n function Prefixer() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Prefixer);\n\n var defaultUserAgent = typeof navigator !== 'undefined' ? navigator.userAgent : undefined;\n\n this._userAgent = options.userAgent || defaultUserAgent;\n this._keepUnprefixed = options.keepUnprefixed || false;\n\n if (this._userAgent) {\n this._browserInfo = (0, _getBrowserInformation2.default)(this._userAgent);\n }\n\n // Checks if the userAgent was resolved correctly\n if (this._browserInfo && this._browserInfo.cssPrefix) {\n this.prefixedKeyframes = (0, _getPrefixedKeyframes2.default)(this._browserInfo.browserName, this._browserInfo.browserVersion, this._browserInfo.cssPrefix);\n } else {\n this._useFallback = true;\n return false;\n }\n\n var prefixData = this._browserInfo.browserName && prefixMap[this._browserInfo.browserName];\n if (prefixData) {\n this._requiresPrefix = {};\n\n for (var property in prefixData) {\n if (prefixData[property] >= this._browserInfo.browserVersion) {\n this._requiresPrefix[property] = true;\n }\n }\n\n this._hasPropsRequiringPrefix = Object.keys(this._requiresPrefix).length > 0;\n } else {\n this._useFallback = true;\n }\n\n this._metaData = {\n browserVersion: this._browserInfo.browserVersion,\n browserName: this._browserInfo.browserName,\n cssPrefix: this._browserInfo.cssPrefix,\n jsPrefix: this._browserInfo.jsPrefix,\n keepUnprefixed: this._keepUnprefixed,\n requiresPrefix: this._requiresPrefix\n };\n }\n\n _createClass(Prefixer, [{\n key: 'prefix',\n value: function prefix(style) {\n // use static prefixer as fallback if userAgent can not be resolved\n if (this._useFallback) {\n return fallback(style);\n }\n\n // only add prefixes if needed\n if (!this._hasPropsRequiringPrefix) {\n return style;\n }\n\n return this._prefixStyle(style);\n }\n }, {\n key: '_prefixStyle',\n value: function _prefixStyle(style) {\n for (var property in style) {\n var value = style[property];\n\n // handle nested objects\n if ((0, _isObject2.default)(value)) {\n style[property] = this.prefix(value);\n // handle array values\n } else if (Array.isArray(value)) {\n var combinedValue = [];\n\n for (var i = 0, len = value.length; i < len; ++i) {\n var processedValue = (0, _prefixValue2.default)(plugins, property, value[i], style, this._metaData);\n (0, _addNewValuesOnly2.default)(combinedValue, processedValue || value[i]);\n }\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (combinedValue.length > 0) {\n style[property] = combinedValue;\n }\n } else {\n var _processedValue = (0, _prefixValue2.default)(plugins, property, value, style, this._metaData);\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (_processedValue) {\n style[property] = _processedValue;\n }\n\n // add prefixes to properties\n if (this._requiresPrefix.hasOwnProperty(property)) {\n style[this._browserInfo.jsPrefix + (0, _capitalizeString2.default)(property)] = value;\n if (!this._keepUnprefixed) {\n delete style[property];\n }\n }\n }\n }\n\n return style;\n }\n\n /**\n * Returns a prefixed version of the style object using all vendor prefixes\n * @param {Object} styles - Style object that gets prefixed properties added\n * @returns {Object} - Style object with prefixed properties and values\n */\n\n }], [{\n key: 'prefixAll',\n value: function prefixAll(styles) {\n return fallback(styles);\n }\n }]);\n\n return Prefixer;\n }();\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = calc;\n\nvar _getPrefixedValue = require('../../utils/getPrefixedValue');\n\nvar _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction calc(property, value, style, _ref) {\n var browserName = _ref.browserName,\n browserVersion = _ref.browserVersion,\n cssPrefix = _ref.cssPrefix,\n keepUnprefixed = _ref.keepUnprefixed;\n\n if (typeof value === 'string' && value.indexOf('calc(') > -1 && (browserName === 'firefox' && browserVersion < 15 || browserName === 'chrome' && browserVersion < 25 || browserName === 'safari' && browserVersion < 6.1 || browserName === 'ios_saf' && browserVersion < 7)) {\n return (0, _getPrefixedValue2.default)(value.replace(/calc\\(/g, cssPrefix + 'calc('), value, keepUnprefixed);\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = crossFade;\n\nvar _getPrefixedValue = require('../../utils/getPrefixedValue');\n\nvar _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction crossFade(property, value, style, _ref) {\n var browserName = _ref.browserName,\n browserVersion = _ref.browserVersion,\n cssPrefix = _ref.cssPrefix,\n keepUnprefixed = _ref.keepUnprefixed;\n\n if (typeof value === 'string' && value.indexOf('cross-fade(') > -1 && (browserName === 'chrome' || browserName === 'opera' || browserName === 'and_chr' || (browserName === 'ios_saf' || browserName === 'safari') && browserVersion < 10)) {\n return (0, _getPrefixedValue2.default)(value.replace(/cross-fade\\(/g, cssPrefix + 'cross-fade('), value, keepUnprefixed);\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cursor;\n\nvar _getPrefixedValue = require('../../utils/getPrefixedValue');\n\nvar _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar grabValues = {\n grab: true,\n grabbing: true\n};\n\n\nvar zoomValues = {\n 'zoom-in': true,\n 'zoom-out': true\n};\n\nfunction cursor(property, value, style, _ref) {\n var browserName = _ref.browserName,\n browserVersion = _ref.browserVersion,\n cssPrefix = _ref.cssPrefix,\n keepUnprefixed = _ref.keepUnprefixed;\n\n // adds prefixes for firefox, chrome, safari, and opera regardless of\n // version until a reliable browser support info can be found\n // see: https://github.com/rofrischmann/inline-style-prefixer/issues/79\n if (property === 'cursor' && grabValues[value] && (browserName === 'firefox' || browserName === 'chrome' || browserName === 'safari' || browserName === 'opera')) {\n return (0, _getPrefixedValue2.default)(cssPrefix + value, value, keepUnprefixed);\n }\n\n if (property === 'cursor' && zoomValues[value] && (browserName === 'firefox' && browserVersion < 24 || browserName === 'chrome' && browserVersion < 37 || browserName === 'safari' && browserVersion < 9 || browserName === 'opera' && browserVersion < 24)) {\n return (0, _getPrefixedValue2.default)(cssPrefix + value, value, keepUnprefixed);\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = filter;\n\nvar _getPrefixedValue = require('../../utils/getPrefixedValue');\n\nvar _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction filter(property, value, style, _ref) {\n var browserName = _ref.browserName,\n browserVersion = _ref.browserVersion,\n cssPrefix = _ref.cssPrefix,\n keepUnprefixed = _ref.keepUnprefixed;\n\n if (typeof value === 'string' && value.indexOf('filter(') > -1 && (browserName === 'ios_saf' || browserName === 'safari' && browserVersion < 9.1)) {\n return (0, _getPrefixedValue2.default)(value.replace(/filter\\(/g, cssPrefix + 'filter('), value, keepUnprefixed);\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flex;\n\nvar _getPrefixedValue = require('../../utils/getPrefixedValue');\n\nvar _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar values = {\n flex: true,\n 'inline-flex': true\n};\nfunction flex(property, value, style, _ref) {\n var browserName = _ref.browserName,\n browserVersion = _ref.browserVersion,\n cssPrefix = _ref.cssPrefix,\n keepUnprefixed = _ref.keepUnprefixed;\n\n if (property === 'display' && values[value] && (browserName === 'chrome' && browserVersion < 29 && browserVersion > 20 || (browserName === 'safari' || browserName === 'ios_saf') && browserVersion < 9 && browserVersion > 6 || browserName === 'opera' && (browserVersion === 15 || browserVersion === 16))) {\n return (0, _getPrefixedValue2.default)(cssPrefix + value, value, keepUnprefixed);\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flexboxIE;\n\nvar _getPrefixedValue = require('../../utils/getPrefixedValue');\n\nvar _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar alternativeValues = {\n 'space-around': 'distribute',\n 'space-between': 'justify',\n 'flex-start': 'start',\n 'flex-end': 'end',\n flex: 'flexbox',\n 'inline-flex': 'inline-flexbox'\n};\n\nvar alternativeProps = {\n alignContent: 'msFlexLinePack',\n alignSelf: 'msFlexItemAlign',\n alignItems: 'msFlexAlign',\n justifyContent: 'msFlexPack',\n order: 'msFlexOrder',\n flexGrow: 'msFlexPositive',\n flexShrink: 'msFlexNegative',\n flexBasis: 'msFlexPreferredSize'\n};\n\nfunction flexboxIE(property, value, style, _ref) {\n var browserName = _ref.browserName,\n browserVersion = _ref.browserVersion,\n cssPrefix = _ref.cssPrefix,\n keepUnprefixed = _ref.keepUnprefixed,\n requiresPrefix = _ref.requiresPrefix;\n\n if ((alternativeProps.hasOwnProperty(property) || property === 'display' && typeof value === 'string' && value.indexOf('flex') > -1) && (browserName === 'ie_mob' || browserName === 'ie') && browserVersion === 10) {\n delete requiresPrefix[property];\n\n if (!keepUnprefixed && !Array.isArray(style[property])) {\n delete style[property];\n }\n if (property === 'display' && alternativeValues.hasOwnProperty(value)) {\n return (0, _getPrefixedValue2.default)(cssPrefix + alternativeValues[value], value, keepUnprefixed);\n }\n if (alternativeProps.hasOwnProperty(property)) {\n style[alternativeProps[property]] = alternativeValues[value] || value;\n }\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flexboxOld;\n\nvar _getPrefixedValue = require('../../utils/getPrefixedValue');\n\nvar _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar alternativeValues = {\n 'space-around': 'justify',\n 'space-between': 'justify',\n 'flex-start': 'start',\n 'flex-end': 'end',\n 'wrap-reverse': 'multiple',\n wrap: 'multiple',\n flex: 'box',\n 'inline-flex': 'inline-box'\n};\n\n\nvar alternativeProps = {\n alignItems: 'WebkitBoxAlign',\n justifyContent: 'WebkitBoxPack',\n flexWrap: 'WebkitBoxLines',\n flexGrow: 'WebkitBoxFlex'\n};\n\nvar otherProps = ['alignContent', 'alignSelf', 'order', 'flexGrow', 'flexShrink', 'flexBasis', 'flexDirection'];\nvar properties = Object.keys(alternativeProps).concat(otherProps);\n\nfunction flexboxOld(property, value, style, _ref) {\n var browserName = _ref.browserName,\n browserVersion = _ref.browserVersion,\n cssPrefix = _ref.cssPrefix,\n keepUnprefixed = _ref.keepUnprefixed,\n requiresPrefix = _ref.requiresPrefix;\n\n if ((properties.indexOf(property) > -1 || property === 'display' && typeof value === 'string' && value.indexOf('flex') > -1) && (browserName === 'firefox' && browserVersion < 22 || browserName === 'chrome' && browserVersion < 21 || (browserName === 'safari' || browserName === 'ios_saf') && browserVersion <= 6.1 || browserName === 'android' && browserVersion < 4.4 || browserName === 'and_uc')) {\n delete requiresPrefix[property];\n\n if (!keepUnprefixed && !Array.isArray(style[property])) {\n delete style[property];\n }\n if (property === 'flexDirection' && typeof value === 'string') {\n if (value.indexOf('column') > -1) {\n style.WebkitBoxOrient = 'vertical';\n } else {\n style.WebkitBoxOrient = 'horizontal';\n }\n if (value.indexOf('reverse') > -1) {\n style.WebkitBoxDirection = 'reverse';\n } else {\n style.WebkitBoxDirection = 'normal';\n }\n }\n if (property === 'display' && alternativeValues.hasOwnProperty(value)) {\n return (0, _getPrefixedValue2.default)(cssPrefix + alternativeValues[value], value, keepUnprefixed);\n }\n if (alternativeProps.hasOwnProperty(property)) {\n style[alternativeProps[property]] = alternativeValues[value] || value;\n }\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = gradient;\n\nvar _getPrefixedValue = require('../../utils/getPrefixedValue');\n\nvar _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar values = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/gi;\nfunction gradient(property, value, style, _ref) {\n var browserName = _ref.browserName,\n browserVersion = _ref.browserVersion,\n cssPrefix = _ref.cssPrefix,\n keepUnprefixed = _ref.keepUnprefixed;\n\n if (typeof value === 'string' && values.test(value) && (browserName === 'firefox' && browserVersion < 16 || browserName === 'chrome' && browserVersion < 26 || (browserName === 'safari' || browserName === 'ios_saf') && browserVersion < 7 || (browserName === 'opera' || browserName === 'op_mini') && browserVersion < 12.1 || browserName === 'android' && browserVersion < 4.4 || browserName === 'and_uc')) {\n return (0, _getPrefixedValue2.default)(value.replace(values, function (grad) {\n return cssPrefix + grad;\n }), value, keepUnprefixed);\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = imageSet;\n\nvar _getPrefixedValue = require('../../utils/getPrefixedValue');\n\nvar _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction imageSet(property, value, style, _ref) {\n var browserName = _ref.browserName,\n cssPrefix = _ref.cssPrefix,\n keepUnprefixed = _ref.keepUnprefixed;\n\n if (typeof value === 'string' && value.indexOf('image-set(') > -1 && (browserName === 'chrome' || browserName === 'opera' || browserName === 'and_chr' || browserName === 'and_uc' || browserName === 'ios_saf' || browserName === 'safari')) {\n return (0, _getPrefixedValue2.default)(value.replace(/image-set\\(/g, cssPrefix + 'image-set('), value, keepUnprefixed);\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = position;\n\nvar _getPrefixedValue = require('../../utils/getPrefixedValue');\n\nvar _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction position(property, value, style, _ref) {\n var browserName = _ref.browserName,\n cssPrefix = _ref.cssPrefix,\n keepUnprefixed = _ref.keepUnprefixed;\n\n if (property === 'position' && value === 'sticky' && (browserName === 'safari' || browserName === 'ios_saf')) {\n return (0, _getPrefixedValue2.default)(cssPrefix + value, value, keepUnprefixed);\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = sizing;\n\nvar _getPrefixedValue = require('../../utils/getPrefixedValue');\n\nvar _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar properties = {\n maxHeight: true,\n maxWidth: true,\n width: true,\n height: true,\n columnWidth: true,\n minWidth: true,\n minHeight: true\n};\n\nvar values = {\n 'min-content': true,\n 'max-content': true,\n 'fill-available': true,\n 'fit-content': true,\n 'contain-floats': true\n\n // TODO: chrome & opera support it\n};function sizing(property, value, style, _ref) {\n var cssPrefix = _ref.cssPrefix,\n keepUnprefixed = _ref.keepUnprefixed;\n\n // This might change in the future\n // Keep an eye on it\n if (properties.hasOwnProperty(property) && values.hasOwnProperty(value)) {\n return (0, _getPrefixedValue2.default)(cssPrefix + value, value, keepUnprefixed);\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = transition;\n\nvar _hyphenateProperty = require('css-in-js-utils/lib/hyphenateProperty');\n\nvar _hyphenateProperty2 = _interopRequireDefault(_hyphenateProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar properties = {\n transition: true,\n transitionProperty: true,\n WebkitTransition: true,\n WebkitTransitionProperty: true,\n MozTransition: true,\n MozTransitionProperty: true\n};\n\n\nvar requiresPrefixDashCased = void 0;\n\nfunction transition(property, value, style, _ref) {\n var cssPrefix = _ref.cssPrefix,\n keepUnprefixed = _ref.keepUnprefixed,\n requiresPrefix = _ref.requiresPrefix;\n\n if (typeof value === 'string' && properties.hasOwnProperty(property)) {\n // memoize the prefix array for later use\n if (!requiresPrefixDashCased) {\n requiresPrefixDashCased = Object.keys(requiresPrefix).map(function (prop) {\n return (0, _hyphenateProperty2.default)(prop);\n });\n }\n\n // only split multi values, not cubic beziers\n var multipleValues = value.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g);\n\n requiresPrefixDashCased.forEach(function (prop) {\n multipleValues.forEach(function (val, index) {\n if (val.indexOf(prop) > -1 && prop !== 'order') {\n multipleValues[index] = val.replace(prop, cssPrefix + prop) + (keepUnprefixed ? ',' + val : '');\n }\n });\n });\n\n return multipleValues.join(',');\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createPrefixer;\n\nvar _prefixProperty = require('../utils/prefixProperty');\n\nvar _prefixProperty2 = _interopRequireDefault(_prefixProperty);\n\nvar _prefixValue = require('../utils/prefixValue');\n\nvar _prefixValue2 = _interopRequireDefault(_prefixValue);\n\nvar _addNewValuesOnly = require('../utils/addNewValuesOnly');\n\nvar _addNewValuesOnly2 = _interopRequireDefault(_addNewValuesOnly);\n\nvar _isObject = require('../utils/isObject');\n\nvar _isObject2 = _interopRequireDefault(_isObject);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createPrefixer(_ref) {\n var prefixMap = _ref.prefixMap,\n plugins = _ref.plugins;\n\n function prefixAll(style) {\n for (var property in style) {\n var value = style[property];\n\n // handle nested objects\n if ((0, _isObject2.default)(value)) {\n style[property] = prefixAll(value);\n // handle array values\n } else if (Array.isArray(value)) {\n var combinedValue = [];\n\n for (var i = 0, len = value.length; i < len; ++i) {\n var processedValue = (0, _prefixValue2.default)(plugins, property, value[i], style, prefixMap);\n (0, _addNewValuesOnly2.default)(combinedValue, processedValue || value[i]);\n }\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (combinedValue.length > 0) {\n style[property] = combinedValue;\n }\n } else {\n var _processedValue = (0, _prefixValue2.default)(plugins, property, value, style, prefixMap);\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (_processedValue) {\n style[property] = _processedValue;\n }\n\n style = (0, _prefixProperty2.default)(prefixMap, property, style);\n }\n }\n\n return style;\n }\n\n return prefixAll;\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = calc;\n\nvar _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar prefixes = ['-webkit-', '-moz-', ''];\nfunction calc(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('calc(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/calc\\(/g, prefix + 'calc(');\n });\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = crossFade;\n\nvar _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// http://caniuse.com/#search=cross-fade\nvar prefixes = ['-webkit-', ''];\nfunction crossFade(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('cross-fade(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/cross-fade\\(/g, prefix + 'cross-fade(');\n });\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cursor;\nvar prefixes = ['-webkit-', '-moz-', ''];\n\nvar values = {\n 'zoom-in': true,\n 'zoom-out': true,\n grab: true,\n grabbing: true\n};\n\nfunction cursor(property, value) {\n if (property === 'cursor' && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = filter;\n\nvar _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// http://caniuse.com/#feat=css-filter-function\nvar prefixes = ['-webkit-', ''];\nfunction filter(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('filter(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/filter\\(/g, prefix + 'filter(');\n });\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flex;\nvar values = {\n flex: ['-webkit-box', '-moz-box', '-ms-flexbox', '-webkit-flex', 'flex'],\n 'inline-flex': ['-webkit-inline-box', '-moz-inline-box', '-ms-inline-flexbox', '-webkit-inline-flex', 'inline-flex']\n};\n\nfunction flex(property, value) {\n if (property === 'display' && values.hasOwnProperty(value)) {\n return values[value];\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flexboxIE;\nvar alternativeValues = {\n 'space-around': 'distribute',\n 'space-between': 'justify',\n 'flex-start': 'start',\n 'flex-end': 'end'\n};\nvar alternativeProps = {\n alignContent: 'msFlexLinePack',\n alignSelf: 'msFlexItemAlign',\n alignItems: 'msFlexAlign',\n justifyContent: 'msFlexPack',\n order: 'msFlexOrder',\n flexGrow: 'msFlexPositive',\n flexShrink: 'msFlexNegative',\n flexBasis: 'msFlexPreferredSize'\n};\n\nfunction flexboxIE(property, value, style) {\n if (alternativeProps.hasOwnProperty(property)) {\n style[alternativeProps[property]] = alternativeValues[value] || value;\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flexboxOld;\nvar alternativeValues = {\n 'space-around': 'justify',\n 'space-between': 'justify',\n 'flex-start': 'start',\n 'flex-end': 'end',\n 'wrap-reverse': 'multiple',\n wrap: 'multiple',\n flex: 'box',\n 'inline-flex': 'inline-box'\n};\n\nvar alternativeProps = {\n alignItems: 'WebkitBoxAlign',\n justifyContent: 'WebkitBoxPack',\n flexWrap: 'WebkitBoxLines',\n flexGrow: 'WebkitBoxFlex'\n};\n\nfunction flexboxOld(property, value, style) {\n if (property === 'flexDirection' && typeof value === 'string') {\n if (value.indexOf('column') > -1) {\n style.WebkitBoxOrient = 'vertical';\n } else {\n style.WebkitBoxOrient = 'horizontal';\n }\n if (value.indexOf('reverse') > -1) {\n style.WebkitBoxDirection = 'reverse';\n } else {\n style.WebkitBoxDirection = 'normal';\n }\n }\n if (alternativeProps.hasOwnProperty(property)) {\n style[alternativeProps[property]] = alternativeValues[value] || value;\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = gradient;\n\nvar _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar prefixes = ['-webkit-', '-moz-', ''];\n\nvar values = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/gi;\n\nfunction gradient(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && values.test(value)) {\n return prefixes.map(function (prefix) {\n return value.replace(values, function (grad) {\n return prefix + grad;\n });\n });\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = imageSet;\n\nvar _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// http://caniuse.com/#feat=css-image-set\nvar prefixes = ['-webkit-', ''];\nfunction imageSet(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('image-set(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/image-set\\(/g, prefix + 'image-set(');\n });\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = position;\nfunction position(property, value) {\n if (property === 'position' && value === 'sticky') {\n return ['-webkit-sticky', 'sticky'];\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = sizing;\nvar prefixes = ['-webkit-', '-moz-', ''];\n\nvar properties = {\n maxHeight: true,\n maxWidth: true,\n width: true,\n height: true,\n columnWidth: true,\n minWidth: true,\n minHeight: true\n};\nvar values = {\n 'min-content': true,\n 'max-content': true,\n 'fill-available': true,\n 'fit-content': true,\n 'contain-floats': true\n};\n\nfunction sizing(property, value) {\n if (properties.hasOwnProperty(property) && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = transition;\n\nvar _hyphenateProperty = require('css-in-js-utils/lib/hyphenateProperty');\n\nvar _hyphenateProperty2 = _interopRequireDefault(_hyphenateProperty);\n\nvar _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nvar _capitalizeString = require('../../utils/capitalizeString');\n\nvar _capitalizeString2 = _interopRequireDefault(_capitalizeString);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar properties = {\n transition: true,\n transitionProperty: true,\n WebkitTransition: true,\n WebkitTransitionProperty: true,\n MozTransition: true,\n MozTransitionProperty: true\n};\n\n\nvar prefixMapping = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n ms: '-ms-'\n};\n\nfunction prefixValue(value, propertyPrefixMap) {\n if ((0, _isPrefixedValue2.default)(value)) {\n return value;\n }\n\n // only split multi values, not cubic beziers\n var multipleValues = value.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g);\n\n for (var i = 0, len = multipleValues.length; i < len; ++i) {\n var singleValue = multipleValues[i];\n var values = [singleValue];\n for (var property in propertyPrefixMap) {\n var dashCaseProperty = (0, _hyphenateProperty2.default)(property);\n\n if (singleValue.indexOf(dashCaseProperty) > -1 && dashCaseProperty !== 'order') {\n var prefixes = propertyPrefixMap[property];\n for (var j = 0, pLen = prefixes.length; j < pLen; ++j) {\n // join all prefixes and create a new value\n values.unshift(singleValue.replace(dashCaseProperty, prefixMapping[prefixes[j]] + dashCaseProperty));\n }\n }\n }\n\n multipleValues[i] = values.join(',');\n }\n\n return multipleValues.join(',');\n}\n\nfunction transition(property, value, style, propertyPrefixMap) {\n // also check for already prefixed transitions\n if (typeof value === 'string' && properties.hasOwnProperty(property)) {\n var outputValue = prefixValue(value, propertyPrefixMap);\n // if the property is already prefixed\n var webkitOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-moz-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Webkit') > -1) {\n return webkitOutput;\n }\n\n var mozOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-webkit-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Moz') > -1) {\n return mozOutput;\n }\n\n style['Webkit' + (0, _capitalizeString2.default)(property)] = webkitOutput;\n style['Moz' + (0, _capitalizeString2.default)(property)] = mozOutput;\n return outputValue;\n }\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addNewValuesOnly;\nfunction addIfNew(list, value) {\n if (list.indexOf(value) === -1) {\n list.push(value);\n }\n}\n\nfunction addNewValuesOnly(list, values) {\n if (Array.isArray(values)) {\n for (var i = 0, len = values.length; i < len; ++i) {\n addIfNew(list, values[i]);\n }\n } else {\n addIfNew(list, values);\n }\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = capitalizeString;\nfunction capitalizeString(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getBrowserInformation;\n\nvar _bowser = require('bowser');\n\nvar _bowser2 = _interopRequireDefault(_bowser);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar prefixByBrowser = {\n chrome: 'Webkit',\n safari: 'Webkit',\n ios: 'Webkit',\n android: 'Webkit',\n phantom: 'Webkit',\n opera: 'Webkit',\n webos: 'Webkit',\n blackberry: 'Webkit',\n bada: 'Webkit',\n tizen: 'Webkit',\n chromium: 'Webkit',\n vivaldi: 'Webkit',\n firefox: 'Moz',\n seamoney: 'Moz',\n sailfish: 'Moz',\n msie: 'ms',\n msedge: 'ms'\n};\n\n\nvar browserByCanIuseAlias = {\n chrome: 'chrome',\n chromium: 'chrome',\n safari: 'safari',\n firfox: 'firefox',\n msedge: 'edge',\n opera: 'opera',\n vivaldi: 'opera',\n msie: 'ie'\n};\n\nfunction getBrowserName(browserInfo) {\n if (browserInfo.firefox) {\n return 'firefox';\n }\n\n if (browserInfo.mobile || browserInfo.tablet) {\n if (browserInfo.ios) {\n return 'ios_saf';\n } else if (browserInfo.android) {\n return 'android';\n } else if (browserInfo.opera) {\n return 'op_mini';\n }\n }\n\n for (var browser in browserByCanIuseAlias) {\n if (browserInfo.hasOwnProperty(browser)) {\n return browserByCanIuseAlias[browser];\n }\n }\n}\n\n/**\n * Uses bowser to get default browser browserInformation such as version and name\n * Evaluates bowser browserInfo and adds vendorPrefix browserInformation\n * @param {string} userAgent - userAgent that gets evaluated\n */\nfunction getBrowserInformation(userAgent) {\n var browserInfo = _bowser2.default._detect(userAgent);\n\n if (browserInfo.yandexbrowser) {\n browserInfo = _bowser2.default._detect(userAgent.replace(/YaBrowser\\/[0-9.]*/, ''));\n }\n\n for (var browser in prefixByBrowser) {\n if (browserInfo.hasOwnProperty(browser)) {\n var prefix = prefixByBrowser[browser];\n\n browserInfo.jsPrefix = prefix;\n browserInfo.cssPrefix = '-' + prefix.toLowerCase() + '-';\n break;\n }\n }\n\n browserInfo.browserName = getBrowserName(browserInfo);\n\n // For cordova IOS 8 the version is missing, set truncated osversion to prevent NaN\n if (browserInfo.version) {\n browserInfo.browserVersion = parseFloat(browserInfo.version);\n } else {\n browserInfo.browserVersion = parseInt(parseFloat(browserInfo.osversion), 10);\n }\n\n browserInfo.osVersion = parseFloat(browserInfo.osversion);\n\n // iOS forces all browsers to use Safari under the hood\n // as the Safari version seems to match the iOS version\n // we just explicitely use the osversion instead\n // https://github.com/rofrischmann/inline-style-prefixer/issues/72\n if (browserInfo.browserName === 'ios_saf' && browserInfo.browserVersion > browserInfo.osVersion) {\n browserInfo.browserVersion = browserInfo.osVersion;\n }\n\n // seperate native android chrome\n // https://github.com/rofrischmann/inline-style-prefixer/issues/45\n if (browserInfo.browserName === 'android' && browserInfo.chrome && browserInfo.browserVersion > 37) {\n browserInfo.browserName = 'and_chr';\n }\n\n // For android < 4.4 we want to check the osversion\n // not the chrome version, see issue #26\n // https://github.com/rofrischmann/inline-style-prefixer/issues/26\n if (browserInfo.browserName === 'android' && browserInfo.osVersion < 5) {\n browserInfo.browserVersion = browserInfo.osVersion;\n }\n\n // Samsung browser are basically build on Chrome > 44\n // https://github.com/rofrischmann/inline-style-prefixer/issues/102\n if (browserInfo.browserName === 'android' && browserInfo.samsungBrowser) {\n browserInfo.browserName = 'and_chr';\n browserInfo.browserVersion = 44;\n }\n\n return browserInfo;\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getPrefixedKeyframes;\nfunction getPrefixedKeyframes(browserName, browserVersion, cssPrefix) {\n var prefixedKeyframes = 'keyframes';\n\n if (browserName === 'chrome' && browserVersion < 43 || (browserName === 'safari' || browserName === 'ios_saf') && browserVersion < 9 || browserName === 'opera' && browserVersion < 30 || browserName === 'android' && browserVersion <= 4.4 || browserName === 'and_uc') {\n return cssPrefix + prefixedKeyframes;\n }\n return prefixedKeyframes;\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getPrefixedValue;\nfunction getPrefixedValue(prefixedValue, value, keepUnprefixed) {\n if (keepUnprefixed) {\n return [prefixedValue, value];\n }\n return prefixedValue;\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isObject;\nfunction isObject(value) {\n return value instanceof Object && !Array.isArray(value);\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = prefixProperty;\n\nvar _capitalizeString = require('./capitalizeString');\n\nvar _capitalizeString2 = _interopRequireDefault(_capitalizeString);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction prefixProperty(prefixProperties, property, style) {\n if (prefixProperties.hasOwnProperty(property)) {\n var newStyle = {};\n var requiredPrefixes = prefixProperties[property];\n var capitalizedProperty = (0, _capitalizeString2.default)(property);\n var keys = Object.keys(style);\n for (var i = 0; i < keys.length; i++) {\n var styleProperty = keys[i];\n if (styleProperty === property) {\n for (var j = 0; j < requiredPrefixes.length; j++) {\n newStyle[requiredPrefixes[j] + capitalizedProperty] = style[property];\n }\n }\n newStyle[styleProperty] = style[styleProperty];\n }\n return newStyle;\n }\n return style;\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = prefixValue;\nfunction prefixValue(plugins, property, value, style, metaData) {\n for (var i = 0, len = plugins.length; i < len; ++i) {\n var processedValue = plugins[i](property, value, style, metaData);\n\n // we can stop processing if a value is returned\n // as all plugin criteria are unique\n if (processedValue) {\n return processedValue;\n }\n }\n}\nmodule.exports = exports[\"default\"];","\nmodule.exports = function load (src, opts, cb) {\n var head = document.head || document.getElementsByTagName('head')[0]\n var script = document.createElement('script')\n\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n opts = opts || {}\n cb = cb || function() {}\n\n script.type = opts.type || 'text/javascript'\n script.charset = opts.charset || 'utf8';\n script.async = 'async' in opts ? !!opts.async : true\n script.src = src\n\n if (opts.attrs) {\n setAttributes(script, opts.attrs)\n }\n\n if (opts.text) {\n script.text = '' + opts.text\n }\n\n var onend = 'onload' in script ? stdOnEnd : ieOnEnd\n onend(script, cb)\n\n // some good legacy browsers (firefox) fail the 'in' detection above\n // so as a fallback we always set onload\n // old IE will ignore this and new IE will set onload\n if (!script.onload) {\n stdOnEnd(script, cb);\n }\n\n head.appendChild(script)\n}\n\nfunction setAttributes(script, attrs) {\n for (var attr in attrs) {\n script.setAttribute(attr, attrs[attr]);\n }\n}\n\nfunction stdOnEnd (script, cb) {\n script.onload = function () {\n this.onerror = this.onload = null\n cb(null, script)\n }\n script.onerror = function () {\n // this.onload = null here is necessary\n // because even IE9 works not like others\n this.onerror = this.onload = null\n cb(new Error('Failed to load ' + this.src), script)\n }\n}\n\nfunction ieOnEnd (script, cb) {\n script.onreadystatechange = function () {\n if (this.readyState != 'complete' && this.readyState != 'loaded') return\n this.onreadystatechange = null\n cb(null, script) // there is no way to catch loading errors in IE8\n }\n}\n","/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (typeof define === 'function' && define.amd) {\n define(definition);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = \"undefined\";\n var isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (\n /Trident\\/|MSIE /.test(window.navigator.userAgent)\n );\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n var _loggersByName = {};\n var defaultLogger = null;\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Trace() doesn't print the message in IE, so for that case we need to wrap it\n function traceForIE() {\n if (console.log) {\n if (console.log.apply) {\n console.log.apply(console, arguments);\n } else {\n // In old IE, native console methods themselves don't have apply().\n Function.prototype.apply.apply(console.log, [console, arguments]);\n }\n }\n if (console.trace) console.trace();\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (methodName === 'trace' && isIE) {\n return traceForIE;\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods() {\n /*jshint validthis:true */\n var level = this.getLevel();\n\n // Replace the actual methods.\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, this.name);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n\n // Return any important warnings.\n if (typeof console === undefinedType && level < this.levels.SILENT) {\n return \"No console available for logging\";\n }\n }\n\n // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, _level, _loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, factory) {\n // Private instance variables.\n var self = this;\n /**\n * The level inherited from a parent logger (or a global default). We\n * cache this here rather than delegating to the parent so that it stays\n * in sync with the actual logging methods that we have installed (the\n * parent could change levels but we might not have rebuilt the loggers\n * in this child yet).\n * @type {number}\n */\n var inheritedLevel;\n /**\n * The default level for this logger, if any. If set, this overrides\n * `inheritedLevel`.\n * @type {number|null}\n */\n var defaultLevel;\n /**\n * A user-specific level for this logger. If set, this overrides\n * `defaultLevel`.\n * @type {number|null}\n */\n var userLevel;\n\n var storageKey = \"loglevel\";\n if (typeof name === \"string\") {\n storageKey += \":\" + name;\n } else if (typeof name === \"symbol\") {\n storageKey = undefined;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType || !storageKey) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var cookieName = encodeURIComponent(storageKey);\n var location = cookie.indexOf(cookieName + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(\n cookie.slice(location + cookieName.length + 1)\n )[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n function clearPersistedLevel() {\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage.removeItem(storageKey);\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC\";\n } catch (ignore) {}\n }\n\n function normalizeLevel(input) {\n var level = input;\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n return level;\n } else {\n throw new TypeError(\"log.setLevel() called with invalid level: \" + input);\n }\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n if (userLevel != null) {\n return userLevel;\n } else if (defaultLevel != null) {\n return defaultLevel;\n } else {\n return inheritedLevel;\n }\n };\n\n self.setLevel = function (level, persist) {\n userLevel = normalizeLevel(level);\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(userLevel);\n }\n\n // NOTE: in v2, this should call rebuild(), which updates children.\n return replaceLoggingMethods.call(self);\n };\n\n self.setDefaultLevel = function (level) {\n defaultLevel = normalizeLevel(level);\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.resetLevel = function () {\n userLevel = null;\n clearPersistedLevel();\n replaceLoggingMethods.call(self);\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n self.rebuild = function () {\n if (defaultLogger !== self) {\n inheritedLevel = normalizeLevel(defaultLogger.getLevel());\n }\n replaceLoggingMethods.call(self);\n\n if (defaultLogger === self) {\n for (var childName in _loggersByName) {\n _loggersByName[childName].rebuild();\n }\n }\n };\n\n // Initialize all the internal levels.\n inheritedLevel = normalizeLevel(\n defaultLogger ? defaultLogger.getLevel() : \"WARN\"\n );\n var initialLevel = getPersistedLevel();\n if (initialLevel != null) {\n userLevel = normalizeLevel(initialLevel);\n }\n replaceLoggingMethods.call(self);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n defaultLogger = new Logger();\n\n defaultLogger.getLogger = function getLogger(name) {\n if ((typeof name !== \"symbol\" && typeof name !== \"string\") || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name,\n defaultLogger.methodFactory\n );\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n // ES6 default export, for compatibility\n defaultLogger['default'] = defaultLogger;\n\n return defaultLogger;\n}));\n","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nfunction getStatics(component) {\n if (ReactIs.isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Collapse = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Collapse = /*#__PURE__*/function (_React$Component) {\n _inherits(Collapse, _React$Component);\n\n var _super = _createSuper(Collapse);\n\n function Collapse(props) {\n var _this;\n\n _classCallCheck(this, Collapse);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"timeout\", undefined);\n\n _defineProperty(_assertThisInitialized(_this), \"container\", undefined);\n\n _defineProperty(_assertThisInitialized(_this), \"content\", undefined);\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function () {\n clearTimeout(_this.timeout);\n\n if (!_this.container || !_this.content) {\n return;\n }\n\n var _this$props = _this.props,\n isOpened = _this$props.isOpened,\n checkTimeout = _this$props.checkTimeout;\n var containerHeight = Math.floor(_this.container.clientHeight);\n var contentHeight = Math.floor(_this.content.clientHeight);\n var isFullyOpened = isOpened && Math.abs(contentHeight - containerHeight) <= 1;\n var isFullyClosed = !isOpened && Math.abs(containerHeight) <= 1;\n\n if (isFullyOpened || isFullyClosed) {\n _this.onRest({\n isFullyOpened: isFullyOpened,\n isFullyClosed: isFullyClosed,\n isOpened: isOpened,\n containerHeight: containerHeight,\n contentHeight: contentHeight\n });\n } else {\n _this.onWork({\n isFullyOpened: isFullyOpened,\n isFullyClosed: isFullyClosed,\n isOpened: isOpened,\n containerHeight: containerHeight,\n contentHeight: contentHeight\n });\n\n _this.timeout = setTimeout(function () {\n return _this.onResize();\n }, checkTimeout);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onRest\", function (_ref) {\n var isFullyOpened = _ref.isFullyOpened,\n isFullyClosed = _ref.isFullyClosed,\n isOpened = _ref.isOpened,\n containerHeight = _ref.containerHeight,\n contentHeight = _ref.contentHeight;\n\n if (!_this.container || !_this.content) {\n return;\n }\n\n var hasOpened = isOpened && _this.container.style.height === \"\".concat(contentHeight, \"px\");\n var hasClosed = !isOpened && _this.container.style.height === '0px';\n\n if (hasOpened || hasClosed) {\n _this.container.style.overflow = isOpened ? 'initial' : 'hidden';\n _this.container.style.height = isOpened ? 'auto' : '0px';\n var onRest = _this.props.onRest;\n\n if (onRest) {\n onRest({\n isFullyOpened: isFullyOpened,\n isFullyClosed: isFullyClosed,\n isOpened: isOpened,\n containerHeight: containerHeight,\n contentHeight: contentHeight\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onWork\", function (_ref2) {\n var isFullyOpened = _ref2.isFullyOpened,\n isFullyClosed = _ref2.isFullyClosed,\n isOpened = _ref2.isOpened,\n containerHeight = _ref2.containerHeight,\n contentHeight = _ref2.contentHeight;\n\n if (!_this.container || !_this.content) {\n return;\n }\n\n var isOpenining = isOpened && _this.container.style.height === \"\".concat(contentHeight, \"px\");\n var isClosing = !isOpened && _this.container.style.height === '0px';\n\n if (isOpenining || isClosing) {\n // No need to do any work\n return;\n }\n\n _this.container.style.overflow = 'hidden';\n _this.container.style.height = isOpened ? \"\".concat(contentHeight, \"px\") : '0px';\n var onWork = _this.props.onWork;\n\n if (onWork) {\n onWork({\n isFullyOpened: isFullyOpened,\n isFullyClosed: isFullyClosed,\n isOpened: isOpened,\n containerHeight: containerHeight,\n contentHeight: contentHeight\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onRefContainer\", function (container) {\n _this.container = container;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onRefContent\", function (content) {\n _this.content = content;\n });\n\n if (props.initialStyle) {\n _this.initialStyle = props.initialStyle;\n } else {\n _this.initialStyle = props.isOpened ? {\n height: 'auto',\n overflow: 'initial'\n } : {\n height: '0px',\n overflow: 'hidden'\n };\n }\n\n return _this;\n }\n\n _createClass(Collapse, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.onResize();\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n var _this$props2 = this.props,\n theme = _this$props2.theme,\n isOpened = _this$props2.isOpened,\n children = _this$props2.children;\n return children !== nextProps.children || isOpened !== nextProps.isOpened || Object.keys(theme).some(function (c) {\n return theme[c] !== nextProps.theme[c];\n });\n }\n }, {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate() {\n if (!this.container || !this.content) {\n return null;\n }\n\n if (this.container.style.height === 'auto') {\n var contentHeight = this.content.clientHeight;\n this.container.style.height = \"\".concat(contentHeight, \"px\");\n }\n\n return null;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.onResize();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n clearTimeout(this.timeout);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props3 = this.props,\n theme = _this$props3.theme,\n children = _this$props3.children,\n isOpened = _this$props3.isOpened;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.onRefContainer,\n className: theme.collapse,\n style: this.initialStyle,\n \"aria-hidden\": !isOpened\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.onRefContent,\n className: theme.content\n }, children));\n }\n }]);\n\n return Collapse;\n}(_react[\"default\"].Component);\n\nexports.Collapse = Collapse;\n\n_defineProperty(Collapse, \"defaultProps\", {\n theme: {\n collapse: 'ReactCollapse--collapse',\n content: 'ReactCollapse--content'\n },\n initialStyle: undefined,\n onRest: undefined,\n onWork: undefined,\n checkTimeout: 50\n});","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UnmountClosed = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Collapse = require(\"./Collapse\");\n\nvar _excluded = [\"isOpened\"],\n _excluded2 = [\"isOpened\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar UnmountClosed = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(UnmountClosed, _React$PureComponent);\n\n var _super = _createSuper(UnmountClosed);\n\n function UnmountClosed(props) {\n var _this;\n\n _classCallCheck(this, UnmountClosed);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"onWork\", function (_ref) {\n var isOpened = _ref.isOpened,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n _this.setState({\n isResting: false,\n isOpened: isOpened\n });\n\n var onWork = _this.props.onWork;\n\n if (onWork) {\n onWork(_objectSpread({\n isOpened: isOpened\n }, rest));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onRest\", function (_ref2) {\n var isOpened = _ref2.isOpened,\n rest = _objectWithoutProperties(_ref2, _excluded2);\n\n _this.setState({\n isResting: true,\n isOpened: isOpened,\n isInitialRender: false\n });\n\n var onRest = _this.props.onRest;\n\n if (onRest) {\n onRest(_objectSpread({\n isOpened: isOpened\n }, rest));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getInitialStyle\", function () {\n var _this$state = _this.state,\n isOpened = _this$state.isOpened,\n isInitialRender = _this$state.isInitialRender;\n\n if (isInitialRender) {\n return isOpened ? {\n height: 'auto',\n overflow: 'initial'\n } : {\n height: '0px',\n overflow: 'hidden'\n };\n }\n\n return {\n height: '0px',\n overflow: 'hidden'\n };\n });\n\n _this.state = {\n isResting: true,\n isOpened: props.isOpened,\n isInitialRender: true\n };\n return _this;\n }\n\n _createClass(UnmountClosed, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var isOpened = this.props.isOpened;\n\n if (prevProps.isOpened !== isOpened) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n isResting: false,\n isOpened: isOpened,\n isInitialRender: false\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$state2 = this.state,\n isResting = _this$state2.isResting,\n isOpened = _this$state2.isOpened;\n return isResting && !isOpened ? null : /*#__PURE__*/_react[\"default\"].createElement(_Collapse.Collapse, _extends({}, this.props, {\n initialStyle: this.getInitialStyle(),\n onWork: this.onWork,\n onRest: this.onRest\n }));\n }\n }]);\n\n return UnmountClosed;\n}(_react[\"default\"].PureComponent);\n\nexports.UnmountClosed = UnmountClosed;\n\n_defineProperty(UnmountClosed, \"defaultProps\", {\n onWork: undefined,\n onRest: undefined\n});","\"use strict\";\n\nvar _require = require('./Collapse'),\n Collapse = _require.Collapse;\n\nvar _require2 = require('./UnmountClosed'),\n UnmountClosed = _require2.UnmountClosed; // Default export\n\n\nmodule.exports = UnmountClosed; // Extra \"named exports\"\n\nUnmountClosed.Collapse = Collapse;\nUnmountClosed.UnmountClosed = UnmountClosed;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nvar UAParser = require('ua-parser-js/dist/ua-parser.min');\n\nvar ClientUAInstance = new UAParser();\nvar browser = ClientUAInstance.getBrowser();\nvar cpu = ClientUAInstance.getCPU();\nvar device = ClientUAInstance.getDevice();\nvar engine = ClientUAInstance.getEngine();\nvar os = ClientUAInstance.getOS();\nvar ua = ClientUAInstance.getUA();\nvar setUa = function setUa(userAgentString) {\n return ClientUAInstance.setUA(userAgentString);\n};\nvar parseUserAgent = function parseUserAgent(userAgent) {\n if (!userAgent) {\n console.error('No userAgent string was provided');\n return;\n }\n\n var UserAgentInstance = new UAParser(userAgent);\n return {\n UA: UserAgentInstance,\n browser: UserAgentInstance.getBrowser(),\n cpu: UserAgentInstance.getCPU(),\n device: UserAgentInstance.getDevice(),\n engine: UserAgentInstance.getEngine(),\n os: UserAgentInstance.getOS(),\n ua: UserAgentInstance.getUA(),\n setUserAgent: function setUserAgent(userAgentString) {\n return UserAgentInstance.setUA(userAgentString);\n }\n };\n};\n\nvar UAHelper = /*#__PURE__*/Object.freeze({\n ClientUAInstance: ClientUAInstance,\n browser: browser,\n cpu: cpu,\n device: device,\n engine: engine,\n os: os,\n ua: ua,\n setUa: setUa,\n parseUserAgent: parseUserAgent\n});\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar DeviceTypes = {\n Mobile: 'mobile',\n Tablet: 'tablet',\n SmartTv: 'smarttv',\n Console: 'console',\n Wearable: 'wearable',\n Embedded: 'embedded',\n Browser: undefined\n};\nvar BrowserTypes = {\n Chrome: 'Chrome',\n Firefox: 'Firefox',\n Opera: 'Opera',\n Yandex: 'Yandex',\n Safari: 'Safari',\n InternetExplorer: 'Internet Explorer',\n Edge: 'Edge',\n Chromium: 'Chromium',\n Ie: 'IE',\n MobileSafari: 'Mobile Safari',\n EdgeChromium: 'Edge Chromium',\n MIUI: 'MIUI Browser',\n SamsungBrowser: 'Samsung Browser'\n};\nvar OsTypes = {\n IOS: 'iOS',\n Android: 'Android',\n WindowsPhone: 'Windows Phone',\n Windows: 'Windows',\n MAC_OS: 'Mac OS'\n};\nvar InitialDeviceTypes = {\n isMobile: false,\n isTablet: false,\n isBrowser: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false\n};\n\nvar checkDeviceType = function checkDeviceType(type) {\n switch (type) {\n case DeviceTypes.Mobile:\n return {\n isMobile: true\n };\n\n case DeviceTypes.Tablet:\n return {\n isTablet: true\n };\n\n case DeviceTypes.SmartTv:\n return {\n isSmartTV: true\n };\n\n case DeviceTypes.Console:\n return {\n isConsole: true\n };\n\n case DeviceTypes.Wearable:\n return {\n isWearable: true\n };\n\n case DeviceTypes.Browser:\n return {\n isBrowser: true\n };\n\n case DeviceTypes.Embedded:\n return {\n isEmbedded: true\n };\n\n default:\n return InitialDeviceTypes;\n }\n};\nvar setUserAgent = function setUserAgent(userAgent) {\n return setUa(userAgent);\n};\nvar setDefaults = function setDefaults(p) {\n var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n return p ? p : d;\n};\nvar getNavigatorInstance = function getNavigatorInstance() {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n\n return false;\n};\nvar isIOS13Check = function isIOS13Check(type) {\n var nav = getNavigatorInstance();\n return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\n\nvar browserPayload = function browserPayload(isBrowser, browser, engine, os, ua) {\n return {\n isBrowser: isBrowser,\n browserMajorVersion: setDefaults(browser.major),\n browserFullVersion: setDefaults(browser.version),\n browserName: setDefaults(browser.name),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n return _objectSpread2({}, type, {\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n os: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n ua: setDefaults(ua)\n });\n};\nvar smartTvPayload = function smartTvPayload(isSmartTV, engine, os, ua) {\n return {\n isSmartTV: isSmartTV,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n return {\n isConsole: isConsole,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar wearablePayload = function wearablePayload(isWearable, engine, os, ua) {\n return {\n isWearable: isWearable,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar embeddedPayload = function embeddedPayload(isEmbedded, device, engine, os, ua) {\n return {\n isEmbedded: isEmbedded,\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\n\nfunction deviceDetect(userAgent) {\n var _ref = userAgent ? parseUserAgent(userAgent) : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n engine = _ref.engine,\n os = _ref.os,\n ua = _ref.ua;\n\n var type = checkDeviceType(device.type);\n var isBrowser = type.isBrowser,\n isMobile = type.isMobile,\n isTablet = type.isTablet,\n isSmartTV = type.isSmartTV,\n isConsole = type.isConsole,\n isWearable = type.isWearable,\n isEmbedded = type.isEmbedded;\n\n if (isBrowser) {\n return browserPayload(isBrowser, browser, engine, os, ua);\n }\n\n if (isSmartTV) {\n return smartTvPayload(isSmartTV, engine, os, ua);\n }\n\n if (isConsole) {\n return consolePayload(isConsole, engine, os, ua);\n }\n\n if (isMobile) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isTablet) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isWearable) {\n return wearablePayload(isWearable, engine, os, ua);\n }\n\n if (isEmbedded) {\n return embeddedPayload(isEmbedded, device, engine, os, ua);\n }\n}\n\nvar isMobileType = function isMobileType(_ref) {\n var type = _ref.type;\n return type === DeviceTypes.Mobile;\n};\nvar isTabletType = function isTabletType(_ref2) {\n var type = _ref2.type;\n return type === DeviceTypes.Tablet;\n};\nvar isMobileAndTabletType = function isMobileAndTabletType(_ref3) {\n var type = _ref3.type;\n return type === DeviceTypes.Mobile || type === DeviceTypes.Tablet;\n};\nvar isSmartTVType = function isSmartTVType(_ref4) {\n var type = _ref4.type;\n return type === DeviceTypes.SmartTv;\n};\nvar isBrowserType = function isBrowserType(_ref5) {\n var type = _ref5.type;\n return type === DeviceTypes.Browser;\n};\nvar isWearableType = function isWearableType(_ref6) {\n var type = _ref6.type;\n return type === DeviceTypes.Wearable;\n};\nvar isConsoleType = function isConsoleType(_ref7) {\n var type = _ref7.type;\n return type === DeviceTypes.Console;\n};\nvar isEmbeddedType = function isEmbeddedType(_ref8) {\n var type = _ref8.type;\n return type === DeviceTypes.Embedded;\n};\nvar getMobileVendor = function getMobileVendor(_ref9) {\n var vendor = _ref9.vendor;\n return setDefaults(vendor);\n};\nvar getMobileModel = function getMobileModel(_ref10) {\n var model = _ref10.model;\n return setDefaults(model);\n};\nvar getDeviceType = function getDeviceType(_ref11) {\n var type = _ref11.type;\n return setDefaults(type, 'browser');\n}; // os types\n\nvar isAndroidType = function isAndroidType(_ref12) {\n var name = _ref12.name;\n return name === OsTypes.Android;\n};\nvar isWindowsType = function isWindowsType(_ref13) {\n var name = _ref13.name;\n return name === OsTypes.Windows;\n};\nvar isMacOsType = function isMacOsType(_ref14) {\n var name = _ref14.name;\n return name === OsTypes.MAC_OS;\n};\nvar isWinPhoneType = function isWinPhoneType(_ref15) {\n var name = _ref15.name;\n return name === OsTypes.WindowsPhone;\n};\nvar isIOSType = function isIOSType(_ref16) {\n var name = _ref16.name;\n return name === OsTypes.IOS;\n};\nvar getOsVersion = function getOsVersion(_ref17) {\n var version = _ref17.version;\n return setDefaults(version);\n};\nvar getOsName = function getOsName(_ref18) {\n var name = _ref18.name;\n return setDefaults(name);\n}; // browser types\n\nvar isChromeType = function isChromeType(_ref19) {\n var name = _ref19.name;\n return name === BrowserTypes.Chrome;\n};\nvar isFirefoxType = function isFirefoxType(_ref20) {\n var name = _ref20.name;\n return name === BrowserTypes.Firefox;\n};\nvar isChromiumType = function isChromiumType(_ref21) {\n var name = _ref21.name;\n return name === BrowserTypes.Chromium;\n};\nvar isEdgeType = function isEdgeType(_ref22) {\n var name = _ref22.name;\n return name === BrowserTypes.Edge;\n};\nvar isYandexType = function isYandexType(_ref23) {\n var name = _ref23.name;\n return name === BrowserTypes.Yandex;\n};\nvar isSafariType = function isSafariType(_ref24) {\n var name = _ref24.name;\n return name === BrowserTypes.Safari || name === BrowserTypes.MobileSafari;\n};\nvar isMobileSafariType = function isMobileSafariType(_ref25) {\n var name = _ref25.name;\n return name === BrowserTypes.MobileSafari;\n};\nvar isOperaType = function isOperaType(_ref26) {\n var name = _ref26.name;\n return name === BrowserTypes.Opera;\n};\nvar isIEType = function isIEType(_ref27) {\n var name = _ref27.name;\n return name === BrowserTypes.InternetExplorer || name === BrowserTypes.Ie;\n};\nvar isMIUIType = function isMIUIType(_ref28) {\n var name = _ref28.name;\n return name === BrowserTypes.MIUI;\n};\nvar isSamsungBrowserType = function isSamsungBrowserType(_ref29) {\n var name = _ref29.name;\n return name === BrowserTypes.SamsungBrowser;\n};\nvar getBrowserFullVersion = function getBrowserFullVersion(_ref30) {\n var version = _ref30.version;\n return setDefaults(version);\n};\nvar getBrowserVersion = function getBrowserVersion(_ref31) {\n var major = _ref31.major;\n return setDefaults(major);\n};\nvar getBrowserName = function getBrowserName(_ref32) {\n var name = _ref32.name;\n return setDefaults(name);\n}; // engine types\n\nvar getEngineName = function getEngineName(_ref33) {\n var name = _ref33.name;\n return setDefaults(name);\n};\nvar getEngineVersion = function getEngineVersion(_ref34) {\n var version = _ref34.version;\n return setDefaults(version);\n};\nvar isElectronType = function isElectronType() {\n var nav = getNavigatorInstance();\n var ua = nav && nav.userAgent && nav.userAgent.toLowerCase();\n return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\nvar isEdgeChromiumType = function isEdgeChromiumType(ua) {\n return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n};\nvar getIOS13 = function getIOS13() {\n var nav = getNavigatorInstance();\n return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\nvar getIPad13 = function getIPad13() {\n return isIOS13Check('iPad');\n};\nvar getIphone13 = function getIphone13() {\n return isIOS13Check('iPhone');\n};\nvar getIPod13 = function getIPod13() {\n return isIOS13Check('iPod');\n};\nvar getUseragent = function getUseragent(userAg) {\n return setDefaults(userAg);\n};\n\nfunction buildSelectorsObject(options) {\n var _ref = options ? options : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n os = _ref.os,\n engine = _ref.engine,\n ua = _ref.ua;\n\n return {\n isSmartTV: isSmartTVType(device),\n isConsole: isConsoleType(device),\n isWearable: isWearableType(device),\n isEmbedded: isEmbeddedType(device),\n isMobileSafari: isMobileSafariType(browser) || getIPad13(),\n isChromium: isChromiumType(browser),\n isMobile: isMobileAndTabletType(device) || getIPad13(),\n isMobileOnly: isMobileType(device),\n isTablet: isTabletType(device) || getIPad13(),\n isBrowser: isBrowserType(device),\n isDesktop: isBrowserType(device),\n isAndroid: isAndroidType(os),\n isWinPhone: isWinPhoneType(os),\n isIOS: isIOSType(os) || getIPad13(),\n isChrome: isChromeType(browser),\n isFirefox: isFirefoxType(browser),\n isSafari: isSafariType(browser),\n isOpera: isOperaType(browser),\n isIE: isIEType(browser),\n osVersion: getOsVersion(os),\n osName: getOsName(os),\n fullBrowserVersion: getBrowserFullVersion(browser),\n browserVersion: getBrowserVersion(browser),\n browserName: getBrowserName(browser),\n mobileVendor: getMobileVendor(device),\n mobileModel: getMobileModel(device),\n engineName: getEngineName(engine),\n engineVersion: getEngineVersion(engine),\n getUA: getUseragent(ua),\n isEdge: isEdgeType(browser) || isEdgeChromiumType(ua),\n isYandex: isYandexType(browser),\n deviceType: getDeviceType(device),\n isIOS13: getIOS13(),\n isIPad13: getIPad13(),\n isIPhone13: getIphone13(),\n isIPod13: getIPod13(),\n isElectron: isElectronType(),\n isEdgeChromium: isEdgeChromiumType(ua),\n isLegacyEdge: isEdgeType(browser) && !isEdgeChromiumType(ua),\n isWindows: isWindowsType(os),\n isMacOs: isMacOsType(os),\n isMIUI: isMIUIType(browser),\n isSamsungBrowser: isSamsungBrowserType(browser)\n };\n}\n\nvar isSmartTV = isSmartTVType(device);\nvar isConsole = isConsoleType(device);\nvar isWearable = isWearableType(device);\nvar isEmbedded = isEmbeddedType(device);\nvar isMobileSafari = isMobileSafariType(browser) || getIPad13();\nvar isChromium = isChromiumType(browser);\nvar isMobile = isMobileAndTabletType(device) || getIPad13();\nvar isMobileOnly = isMobileType(device);\nvar isTablet = isTabletType(device) || getIPad13();\nvar isBrowser = isBrowserType(device);\nvar isDesktop = isBrowserType(device);\nvar isAndroid = isAndroidType(os);\nvar isWinPhone = isWinPhoneType(os);\nvar isIOS = isIOSType(os) || getIPad13();\nvar isChrome = isChromeType(browser);\nvar isFirefox = isFirefoxType(browser);\nvar isSafari = isSafariType(browser);\nvar isOpera = isOperaType(browser);\nvar isIE = isIEType(browser);\nvar osVersion = getOsVersion(os);\nvar osName = getOsName(os);\nvar fullBrowserVersion = getBrowserFullVersion(browser);\nvar browserVersion = getBrowserVersion(browser);\nvar browserName = getBrowserName(browser);\nvar mobileVendor = getMobileVendor(device);\nvar mobileModel = getMobileModel(device);\nvar engineName = getEngineName(engine);\nvar engineVersion = getEngineVersion(engine);\nvar getUA = getUseragent(ua);\nvar isEdge = isEdgeType(browser) || isEdgeChromiumType(ua);\nvar isYandex = isYandexType(browser);\nvar deviceType = getDeviceType(device);\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType(ua);\nvar isLegacyEdge = isEdgeType(browser) && !isEdgeChromiumType(ua);\nvar isWindows = isWindowsType(os);\nvar isMacOs = isMacOsType(os);\nvar isMIUI = isMIUIType(browser);\nvar isSamsungBrowser = isSamsungBrowserType(browser);\nvar getSelectorsByUserAgent = function getSelectorsByUserAgent(userAgent) {\n if (!userAgent || typeof userAgent !== 'string') {\n console.error('No valid user agent string was provided');\n return;\n }\n\n var _UAHelper$parseUserAg = parseUserAgent(userAgent),\n device = _UAHelper$parseUserAg.device,\n browser = _UAHelper$parseUserAg.browser,\n os = _UAHelper$parseUserAg.os,\n engine = _UAHelper$parseUserAg.engine,\n ua = _UAHelper$parseUserAg.ua;\n\n return buildSelectorsObject({\n device: device,\n browser: browser,\n os: os,\n engine: engine,\n ua: ua\n });\n};\n\nvar AndroidView = function AndroidView(_ref) {\n var renderWithFragment = _ref.renderWithFragment,\n children = _ref.children,\n props = _objectWithoutProperties(_ref, [\"renderWithFragment\", \"children\"]);\n\n return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar BrowserView = function BrowserView(_ref2) {\n var renderWithFragment = _ref2.renderWithFragment,\n children = _ref2.children,\n props = _objectWithoutProperties(_ref2, [\"renderWithFragment\", \"children\"]);\n\n return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IEView = function IEView(_ref3) {\n var renderWithFragment = _ref3.renderWithFragment,\n children = _ref3.children,\n props = _objectWithoutProperties(_ref3, [\"renderWithFragment\", \"children\"]);\n\n return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IOSView = function IOSView(_ref4) {\n var renderWithFragment = _ref4.renderWithFragment,\n children = _ref4.children,\n props = _objectWithoutProperties(_ref4, [\"renderWithFragment\", \"children\"]);\n\n return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileView = function MobileView(_ref5) {\n var renderWithFragment = _ref5.renderWithFragment,\n children = _ref5.children,\n props = _objectWithoutProperties(_ref5, [\"renderWithFragment\", \"children\"]);\n\n return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar TabletView = function TabletView(_ref6) {\n var renderWithFragment = _ref6.renderWithFragment,\n children = _ref6.children,\n props = _objectWithoutProperties(_ref6, [\"renderWithFragment\", \"children\"]);\n\n return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WinPhoneView = function WinPhoneView(_ref7) {\n var renderWithFragment = _ref7.renderWithFragment,\n children = _ref7.children,\n props = _objectWithoutProperties(_ref7, [\"renderWithFragment\", \"children\"]);\n\n return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileOnlyView = function MobileOnlyView(_ref8) {\n var renderWithFragment = _ref8.renderWithFragment,\n children = _ref8.children,\n viewClassName = _ref8.viewClassName,\n style = _ref8.style,\n props = _objectWithoutProperties(_ref8, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n\n return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar SmartTVView = function SmartTVView(_ref9) {\n var renderWithFragment = _ref9.renderWithFragment,\n children = _ref9.children,\n props = _objectWithoutProperties(_ref9, [\"renderWithFragment\", \"children\"]);\n\n return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar ConsoleView = function ConsoleView(_ref10) {\n var renderWithFragment = _ref10.renderWithFragment,\n children = _ref10.children,\n props = _objectWithoutProperties(_ref10, [\"renderWithFragment\", \"children\"]);\n\n return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WearableView = function WearableView(_ref11) {\n var renderWithFragment = _ref11.renderWithFragment,\n children = _ref11.children,\n props = _objectWithoutProperties(_ref11, [\"renderWithFragment\", \"children\"]);\n\n return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar CustomView = function CustomView(_ref12) {\n var renderWithFragment = _ref12.renderWithFragment,\n children = _ref12.children,\n viewClassName = _ref12.viewClassName,\n style = _ref12.style,\n condition = _ref12.condition,\n props = _objectWithoutProperties(_ref12, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\", \"condition\"]);\n\n return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\n\nfunction withOrientationChange(WrappedComponent) {\n return /*#__PURE__*/function (_React$Component) {\n _inherits(_class, _React$Component);\n\n function _class(props) {\n var _this;\n\n _classCallCheck(this, _class);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));\n _this.isEventListenerAdded = false;\n _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));\n _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));\n _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));\n _this.state = {\n isLandscape: false,\n isPortrait: false\n };\n return _this;\n }\n\n _createClass(_class, [{\n key: \"handleOrientationChange\",\n value: function handleOrientationChange() {\n if (!this.isEventListenerAdded) {\n this.isEventListenerAdded = true;\n }\n\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n this.setState({\n isPortrait: orientation === 0,\n isLandscape: orientation === 90\n });\n }\n }, {\n key: \"onOrientationChange\",\n value: function onOrientationChange() {\n this.handleOrientationChange();\n }\n }, {\n key: \"onPageLoad\",\n value: function onPageLoad() {\n this.handleOrientationChange();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n if (!this.isEventListenerAdded) {\n this.handleOrientationChange();\n window.addEventListener(\"load\", this.onPageLoad, false);\n } else {\n window.removeEventListener(\"load\", this.onPageLoad, false);\n }\n\n window.addEventListener(\"resize\", this.onOrientationChange, false);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.onOrientationChange, false);\n }\n }, {\n key: \"render\",\n value: function render() {\n return React__default.createElement(WrappedComponent, _extends({}, this.props, {\n isLandscape: this.state.isLandscape,\n isPortrait: this.state.isPortrait\n }));\n }\n }]);\n\n return _class;\n }(React__default.Component);\n}\n\nfunction useMobileOrientation() {\n var _useState = React.useState(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n return {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n }),\n _useState2 = _slicedToArray(_useState, 2),\n state = _useState2[0],\n setState = _useState2[1];\n\n var handleOrientationChange = React.useCallback(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n var next = {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n state.orientation !== next.orientation && setState(next);\n }, [state.orientation]);\n React.useEffect(function () {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n handleOrientationChange();\n window.addEventListener(\"load\", handleOrientationChange, false);\n window.addEventListener(\"resize\", handleOrientationChange, false);\n }\n\n return function () {\n window.removeEventListener(\"resize\", handleOrientationChange, false);\n window.removeEventListener(\"load\", handleOrientationChange, false);\n };\n }, [handleOrientationChange]);\n return state;\n}\n\nfunction useDeviceData(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n return parseUserAgent(hookUserAgent);\n}\n\nfunction useDeviceSelectors(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n var deviceData = useDeviceData(hookUserAgent);\n var selectors = buildSelectorsObject(deviceData);\n return [selectors, deviceData];\n}\n\nexports.AndroidView = AndroidView;\nexports.BrowserTypes = BrowserTypes;\nexports.BrowserView = BrowserView;\nexports.ConsoleView = ConsoleView;\nexports.CustomView = CustomView;\nexports.IEView = IEView;\nexports.IOSView = IOSView;\nexports.MobileOnlyView = MobileOnlyView;\nexports.MobileView = MobileView;\nexports.OsTypes = OsTypes;\nexports.SmartTVView = SmartTVView;\nexports.TabletView = TabletView;\nexports.WearableView = WearableView;\nexports.WinPhoneView = WinPhoneView;\nexports.browserName = browserName;\nexports.browserVersion = browserVersion;\nexports.deviceDetect = deviceDetect;\nexports.deviceType = deviceType;\nexports.engineName = engineName;\nexports.engineVersion = engineVersion;\nexports.fullBrowserVersion = fullBrowserVersion;\nexports.getSelectorsByUserAgent = getSelectorsByUserAgent;\nexports.getUA = getUA;\nexports.isAndroid = isAndroid;\nexports.isBrowser = isBrowser;\nexports.isChrome = isChrome;\nexports.isChromium = isChromium;\nexports.isConsole = isConsole;\nexports.isDesktop = isDesktop;\nexports.isEdge = isEdge;\nexports.isEdgeChromium = isEdgeChromium;\nexports.isElectron = isElectron;\nexports.isEmbedded = isEmbedded;\nexports.isFirefox = isFirefox;\nexports.isIE = isIE;\nexports.isIOS = isIOS;\nexports.isIOS13 = isIOS13;\nexports.isIPad13 = isIPad13;\nexports.isIPhone13 = isIPhone13;\nexports.isIPod13 = isIPod13;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isMIUI = isMIUI;\nexports.isMacOs = isMacOs;\nexports.isMobile = isMobile;\nexports.isMobileOnly = isMobileOnly;\nexports.isMobileSafari = isMobileSafari;\nexports.isOpera = isOpera;\nexports.isSafari = isSafari;\nexports.isSamsungBrowser = isSamsungBrowser;\nexports.isSmartTV = isSmartTV;\nexports.isTablet = isTablet;\nexports.isWearable = isWearable;\nexports.isWinPhone = isWinPhone;\nexports.isWindows = isWindows;\nexports.isYandex = isYandex;\nexports.mobileModel = mobileModel;\nexports.mobileVendor = mobileVendor;\nexports.osName = osName;\nexports.osVersion = osVersion;\nexports.parseUserAgent = parseUserAgent;\nexports.setUserAgent = setUserAgent;\nexports.useDeviceData = useDeviceData;\nexports.useDeviceSelectors = useDeviceSelectors;\nexports.useMobileOrientation = useMobileOrientation;\nexports.withOrientationChange = withOrientationChange;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = format;\nvar smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\\.?|via)$/i;\nfunction toTitleCase(string) {\n return string.toString().trim().replace(/[A-Za-z0-9\\u00C0-\\u00FF]+[^\\s-]*/g, function (match, index, title) {\n if (index > 0 && index + match.length !== title.length && match.search(smallWords) > -1 && title.charAt(index - 2) !== \":\" && (title.charAt(index + match.length) !== \"-\" || title.charAt(index - 1) === \"-\") && title.charAt(index - 1).search(/[^\\s-]/) < 0) {\n return match.toLowerCase();\n }\n if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n return match;\n }\n return match.charAt(0).toUpperCase() + match.substr(1);\n });\n}\n\n// See if s could be an email address. We don't want to send personal data like email.\n// https://support.google.com/analytics/answer/2795983?hl=en\nfunction mightBeEmail(s) {\n // There's no point trying to validate rfc822 fully, just look for ...@...\n return typeof s === \"string\" && s.indexOf(\"@\") !== -1;\n}\nvar redacted = \"REDACTED (Potential Email Address)\";\nfunction redactEmail(string) {\n if (mightBeEmail(string)) {\n console.warn(\"This arg looks like an email address, redacting.\");\n return redacted;\n }\n return string;\n}\nfunction format() {\n var s = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var titleCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var redactingEmail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var _str = s || \"\";\n if (titleCase) {\n _str = toTitleCase(s);\n }\n if (redactingEmail) {\n _str = redactEmail(_str);\n }\n return _str;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.GA4 = void 0;\nvar _gtag = _interopRequireDefault(require(\"./gtag\"));\nvar _format = _interopRequireDefault(require(\"./format\"));\nvar _excluded = [\"eventCategory\", \"eventAction\", \"eventLabel\", \"eventValue\", \"hitType\"],\n _excluded2 = [\"title\", \"location\"],\n _excluded3 = [\"page\", \"hitType\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*\nLinks\nhttps://developers.google.com/gtagjs/reference/api\nhttps://developers.google.com/tag-platform/gtagjs/reference\n*/\n/**\n * @typedef GaOptions\n * @type {Object}\n * @property {boolean} [cookieUpdate=true]\n * @property {number} [cookieExpires=63072000] Default two years\n * @property {string} [cookieDomain=\"auto\"]\n * @property {string} [cookieFlags]\n * @property {string} [userId]\n * @property {string} [clientId]\n * @property {boolean} [anonymizeIp]\n * @property {string} [contentGroup1]\n * @property {string} [contentGroup2]\n * @property {string} [contentGroup3]\n * @property {string} [contentGroup4]\n * @property {string} [contentGroup5]\n * @property {boolean} [allowAdFeatures=true]\n * @property {boolean} [allowAdPersonalizationSignals]\n * @property {boolean} [nonInteraction]\n * @property {string} [page]\n */\n/**\n * @typedef UaEventOptions\n * @type {Object}\n * @property {string} action\n * @property {string} category\n * @property {string} [label]\n * @property {number} [value]\n * @property {boolean} [nonInteraction]\n * @property {('beacon'|'xhr'|'image')} [transport]\n */\n/**\n * @typedef InitOptions\n * @type {Object}\n * @property {string} trackingId\n * @property {GaOptions|any} [gaOptions]\n * @property {Object} [gtagOptions] New parameter\n */\nvar GA4 = /*#__PURE__*/function () {\n function GA4() {\n var _this = this;\n _classCallCheck(this, GA4);\n _defineProperty(this, \"reset\", function () {\n _this.isInitialized = false;\n _this._testMode = false;\n _this._currentMeasurementId;\n _this._hasLoadedGA = false;\n _this._isQueuing = false;\n _this._queueGtag = [];\n });\n _defineProperty(this, \"_gtag\", function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (!_this._testMode) {\n if (_this._isQueuing) {\n _this._queueGtag.push(args);\n } else {\n _gtag[\"default\"].apply(void 0, args);\n }\n } else {\n _this._queueGtag.push(args);\n }\n });\n _defineProperty(this, \"_loadGA\", function (GA_MEASUREMENT_ID, nonce) {\n var gtagUrl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"https://www.googletagmanager.com/gtag/js\";\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return;\n }\n if (!_this._hasLoadedGA) {\n // Global Site Tag (gtag.js) - Google Analytics\n var script = document.createElement(\"script\");\n script.async = true;\n script.src = \"\".concat(gtagUrl, \"?id=\").concat(GA_MEASUREMENT_ID);\n if (nonce) {\n script.setAttribute(\"nonce\", nonce);\n }\n document.body.appendChild(script);\n window.dataLayer = window.dataLayer || [];\n window.gtag = function gtag() {\n window.dataLayer.push(arguments);\n };\n _this._hasLoadedGA = true;\n }\n });\n _defineProperty(this, \"_toGtagOptions\", function (gaOptions) {\n if (!gaOptions) {\n return;\n }\n var mapFields = {\n // Old https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#cookieUpdate\n // New https://developers.google.com/analytics/devguides/collection/gtagjs/cookies-user-id#cookie_update\n cookieUpdate: \"cookie_update\",\n cookieExpires: \"cookie_expires\",\n cookieDomain: \"cookie_domain\",\n cookieFlags: \"cookie_flags\",\n // must be in set method?\n userId: \"user_id\",\n clientId: \"client_id\",\n anonymizeIp: \"anonymize_ip\",\n // https://support.google.com/analytics/answer/2853546?hl=en#zippy=%2Cin-this-article\n contentGroup1: \"content_group1\",\n contentGroup2: \"content_group2\",\n contentGroup3: \"content_group3\",\n contentGroup4: \"content_group4\",\n contentGroup5: \"content_group5\",\n // https://support.google.com/analytics/answer/9050852?hl=en\n allowAdFeatures: \"allow_google_signals\",\n allowAdPersonalizationSignals: \"allow_ad_personalization_signals\",\n nonInteraction: \"non_interaction\",\n page: \"page_path\",\n hitCallback: \"event_callback\"\n };\n var gtagOptions = Object.entries(gaOptions).reduce(function (prev, _ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n if (mapFields[key]) {\n prev[mapFields[key]] = value;\n } else {\n prev[key] = value;\n }\n return prev;\n }, {});\n return gtagOptions;\n });\n _defineProperty(this, \"initialize\", function (GA_MEASUREMENT_ID) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!GA_MEASUREMENT_ID) {\n throw new Error(\"Require GA_MEASUREMENT_ID\");\n }\n var initConfigs = typeof GA_MEASUREMENT_ID === \"string\" ? [{\n trackingId: GA_MEASUREMENT_ID\n }] : GA_MEASUREMENT_ID;\n _this._currentMeasurementId = initConfigs[0].trackingId;\n var gaOptions = options.gaOptions,\n gtagOptions = options.gtagOptions,\n nonce = options.nonce,\n _options$testMode = options.testMode,\n testMode = _options$testMode === void 0 ? false : _options$testMode,\n gtagUrl = options.gtagUrl;\n _this._testMode = testMode;\n if (!testMode) {\n _this._loadGA(_this._currentMeasurementId, nonce, gtagUrl);\n }\n if (!_this.isInitialized) {\n _this._gtag(\"js\", new Date());\n initConfigs.forEach(function (config) {\n var mergedGtagOptions = _objectSpread(_objectSpread(_objectSpread({}, _this._toGtagOptions(_objectSpread(_objectSpread({}, gaOptions), config.gaOptions))), gtagOptions), config.gtagOptions);\n if (Object.keys(mergedGtagOptions).length) {\n _this._gtag(\"config\", config.trackingId, mergedGtagOptions);\n } else {\n _this._gtag(\"config\", config.trackingId);\n }\n });\n }\n _this.isInitialized = true;\n if (!testMode) {\n var queues = _toConsumableArray(_this._queueGtag);\n _this._queueGtag = [];\n _this._isQueuing = false;\n while (queues.length) {\n var queue = queues.shift();\n _this._gtag.apply(_this, _toConsumableArray(queue));\n if (queue[0] === \"get\") {\n _this._isQueuing = true;\n }\n }\n }\n });\n _defineProperty(this, \"set\", function (fieldsObject) {\n if (!fieldsObject) {\n console.warn(\"`fieldsObject` is required in .set()\");\n return;\n }\n if (_typeof(fieldsObject) !== \"object\") {\n console.warn(\"Expected `fieldsObject` arg to be an Object\");\n return;\n }\n if (Object.keys(fieldsObject).length === 0) {\n console.warn(\"empty `fieldsObject` given to .set()\");\n }\n _this._gaCommand(\"set\", fieldsObject);\n });\n _defineProperty(this, \"_gaCommandSendEvent\", function (eventCategory, eventAction, eventLabel, eventValue, fieldsObject) {\n _this._gtag(\"event\", eventAction, _objectSpread(_objectSpread({\n event_category: eventCategory,\n event_label: eventLabel,\n value: eventValue\n }, fieldsObject && {\n non_interaction: fieldsObject.nonInteraction\n }), _this._toGtagOptions(fieldsObject)));\n });\n _defineProperty(this, \"_gaCommandSendEventParameters\", function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === \"string\") {\n _this._gaCommandSendEvent.apply(_this, _toConsumableArray(args.slice(1)));\n } else {\n var _args$ = args[0],\n eventCategory = _args$.eventCategory,\n eventAction = _args$.eventAction,\n eventLabel = _args$.eventLabel,\n eventValue = _args$.eventValue,\n hitType = _args$.hitType,\n rest = _objectWithoutProperties(_args$, _excluded);\n _this._gaCommandSendEvent(eventCategory, eventAction, eventLabel, eventValue, rest);\n }\n });\n _defineProperty(this, \"_gaCommandSendTiming\", function (timingCategory, timingVar, timingValue, timingLabel) {\n _this._gtag(\"event\", \"timing_complete\", {\n name: timingVar,\n value: timingValue,\n event_category: timingCategory,\n event_label: timingLabel\n });\n });\n _defineProperty(this, \"_gaCommandSendPageview\", function (page, fieldsObject) {\n if (fieldsObject && Object.keys(fieldsObject).length) {\n var _this$_toGtagOptions = _this._toGtagOptions(fieldsObject),\n title = _this$_toGtagOptions.title,\n location = _this$_toGtagOptions.location,\n rest = _objectWithoutProperties(_this$_toGtagOptions, _excluded2);\n _this._gtag(\"event\", \"page_view\", _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, page && {\n page_path: page\n }), title && {\n page_title: title\n }), location && {\n page_location: location\n }), rest));\n } else if (page) {\n _this._gtag(\"event\", \"page_view\", {\n page_path: page\n });\n } else {\n _this._gtag(\"event\", \"page_view\");\n }\n });\n _defineProperty(this, \"_gaCommandSendPageviewParameters\", function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n if (typeof args[0] === \"string\") {\n _this._gaCommandSendPageview.apply(_this, _toConsumableArray(args.slice(1)));\n } else {\n var _args$2 = args[0],\n page = _args$2.page,\n hitType = _args$2.hitType,\n rest = _objectWithoutProperties(_args$2, _excluded3);\n _this._gaCommandSendPageview(page, rest);\n }\n });\n _defineProperty(this, \"_gaCommandSend\", function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n var hitType = typeof args[0] === \"string\" ? args[0] : args[0].hitType;\n switch (hitType) {\n case \"event\":\n _this._gaCommandSendEventParameters.apply(_this, args);\n break;\n case \"pageview\":\n _this._gaCommandSendPageviewParameters.apply(_this, args);\n break;\n case \"timing\":\n _this._gaCommandSendTiming.apply(_this, _toConsumableArray(args.slice(1)));\n break;\n case \"screenview\":\n case \"transaction\":\n case \"item\":\n case \"social\":\n case \"exception\":\n console.warn(\"Unsupported send command: \".concat(hitType));\n break;\n default:\n console.warn(\"Send command doesn't exist: \".concat(hitType));\n }\n });\n _defineProperty(this, \"_gaCommandSet\", function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n if (typeof args[0] === \"string\") {\n args[0] = _defineProperty({}, args[0], args[1]);\n }\n _this._gtag(\"set\", _this._toGtagOptions(args[0]));\n });\n _defineProperty(this, \"_gaCommand\", function (command) {\n for (var _len6 = arguments.length, args = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n args[_key6 - 1] = arguments[_key6];\n }\n switch (command) {\n case \"send\":\n _this._gaCommandSend.apply(_this, args);\n break;\n case \"set\":\n _this._gaCommandSet.apply(_this, args);\n break;\n default:\n console.warn(\"Command doesn't exist: \".concat(command));\n }\n });\n _defineProperty(this, \"ga\", function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n if (typeof args[0] === \"string\") {\n _this._gaCommand.apply(_this, args);\n } else {\n var readyCallback = args[0];\n _this._gtag(\"get\", _this._currentMeasurementId, \"client_id\", function (clientId) {\n _this._isQueuing = false;\n var queues = _this._queueGtag;\n readyCallback({\n get: function get(property) {\n return property === \"clientId\" ? clientId : property === \"trackingId\" ? _this._currentMeasurementId : property === \"apiVersion\" ? \"1\" : undefined;\n }\n });\n while (queues.length) {\n var queue = queues.shift();\n _this._gtag.apply(_this, _toConsumableArray(queue));\n }\n });\n _this._isQueuing = true;\n }\n return _this.ga;\n });\n _defineProperty(this, \"event\", function (optionsOrName, params) {\n if (typeof optionsOrName === \"string\") {\n _this._gtag(\"event\", optionsOrName, _this._toGtagOptions(params));\n } else {\n var action = optionsOrName.action,\n category = optionsOrName.category,\n label = optionsOrName.label,\n value = optionsOrName.value,\n nonInteraction = optionsOrName.nonInteraction,\n transport = optionsOrName.transport;\n if (!category || !action) {\n console.warn(\"args.category AND args.action are required in event()\");\n return;\n }\n\n // Required Fields\n var fieldObject = {\n hitType: \"event\",\n eventCategory: (0, _format[\"default\"])(category),\n eventAction: (0, _format[\"default\"])(action)\n };\n\n // Optional Fields\n if (label) {\n fieldObject.eventLabel = (0, _format[\"default\"])(label);\n }\n if (typeof value !== \"undefined\") {\n if (typeof value !== \"number\") {\n console.warn(\"Expected `args.value` arg to be a Number.\");\n } else {\n fieldObject.eventValue = value;\n }\n }\n if (typeof nonInteraction !== \"undefined\") {\n if (typeof nonInteraction !== \"boolean\") {\n console.warn(\"`args.nonInteraction` must be a boolean.\");\n } else {\n fieldObject.nonInteraction = nonInteraction;\n }\n }\n if (typeof transport !== \"undefined\") {\n if (typeof transport !== \"string\") {\n console.warn(\"`args.transport` must be a string.\");\n } else {\n if ([\"beacon\", \"xhr\", \"image\"].indexOf(transport) === -1) {\n console.warn(\"`args.transport` must be either one of these values: `beacon`, `xhr` or `image`\");\n }\n fieldObject.transport = transport;\n }\n }\n _this._gaCommand(\"send\", fieldObject);\n }\n });\n _defineProperty(this, \"send\", function (fieldObject) {\n _this._gaCommand(\"send\", fieldObject);\n });\n this.reset();\n }\n _createClass(GA4, [{\n key: \"gtag\",\n value: function gtag() {\n this._gtag.apply(this, arguments);\n }\n }]);\n return GA4;\n}();\nexports.GA4 = GA4;\nvar _default = new GA4();\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar gtag = function gtag() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof window !== \"undefined\") {\n var _window;\n if (typeof window.gtag === \"undefined\") {\n window.dataLayer = window.dataLayer || [];\n window.gtag = function gtag() {\n window.dataLayer.push(arguments);\n };\n }\n (_window = window).gtag.apply(_window, args);\n }\n};\nvar _default = gtag;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.ReactGAImplementation = void 0;\nvar _ga = _interopRequireWildcard(require(\"./ga4\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nvar ReactGAImplementation = _ga.GA4;\nexports.ReactGAImplementation = ReactGAImplementation;\nvar _default = _ga[\"default\"];\nexports[\"default\"] = _default;","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bodyOpenClassName = exports.portalClassName = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _ModalPortal = require(\"./ModalPortal\");\n\nvar _ModalPortal2 = _interopRequireDefault(_ModalPortal);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar portalClassName = exports.portalClassName = \"ReactModalPortal\";\nvar bodyOpenClassName = exports.bodyOpenClassName = \"ReactModal__Body--open\";\n\nvar isReact16 = _safeHTMLElement.canUseDOM && _reactDom2.default.createPortal !== undefined;\n\nvar createHTMLElement = function createHTMLElement(name) {\n return document.createElement(name);\n};\n\nvar getCreatePortal = function getCreatePortal() {\n return isReact16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer;\n};\n\nfunction getParentElement(parentSelector) {\n return parentSelector();\n}\n\nvar Modal = function (_Component) {\n _inherits(Modal, _Component);\n\n function Modal() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Modal.__proto__ || Object.getPrototypeOf(Modal)).call.apply(_ref, [this].concat(args))), _this), _this.removePortal = function () {\n !isReact16 && _reactDom2.default.unmountComponentAtNode(_this.node);\n var parent = getParentElement(_this.props.parentSelector);\n if (parent && parent.contains(_this.node)) {\n parent.removeChild(_this.node);\n } else {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"parentSelector\" prop did not returned any DOM ' + \"element. Make sure that the parent element is unmounted to \" + \"avoid any memory leaks.\");\n }\n }, _this.portalRef = function (ref) {\n _this.portal = ref;\n }, _this.renderPortal = function (props) {\n var createPortal = getCreatePortal();\n var portal = createPortal(_this, _react2.default.createElement(_ModalPortal2.default, _extends({ defaultStyles: Modal.defaultStyles }, props)), _this.node);\n _this.portalRef(portal);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Modal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!_safeHTMLElement.canUseDOM) return;\n\n if (!isReact16) {\n this.node = createHTMLElement(\"div\");\n }\n this.node.className = this.props.portalClassName;\n\n var parent = getParentElement(this.props.parentSelector);\n parent.appendChild(this.node);\n\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps) {\n var prevParent = getParentElement(prevProps.parentSelector);\n var nextParent = getParentElement(this.props.parentSelector);\n return { prevParent: prevParent, nextParent: nextParent };\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, _, snapshot) {\n if (!_safeHTMLElement.canUseDOM) return;\n var _props = this.props,\n isOpen = _props.isOpen,\n portalClassName = _props.portalClassName;\n\n\n if (prevProps.portalClassName !== portalClassName) {\n this.node.className = portalClassName;\n }\n\n var prevParent = snapshot.prevParent,\n nextParent = snapshot.nextParent;\n\n if (nextParent !== prevParent) {\n prevParent.removeChild(this.node);\n nextParent.appendChild(this.node);\n }\n\n // Stop unnecessary renders if modal is remaining closed\n if (!prevProps.isOpen && !isOpen) return;\n\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (!_safeHTMLElement.canUseDOM || !this.node || !this.portal) return;\n\n var state = this.portal.state;\n var now = Date.now();\n var closesAt = state.isOpen && this.props.closeTimeoutMS && (state.closesAt || now + this.props.closeTimeoutMS);\n\n if (closesAt) {\n if (!state.beforeClose) {\n this.portal.closeWithTimeout();\n }\n\n setTimeout(this.removePortal, closesAt - now);\n } else {\n this.removePortal();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!_safeHTMLElement.canUseDOM || !isReact16) {\n return null;\n }\n\n if (!this.node && isReact16) {\n this.node = createHTMLElement(\"div\");\n }\n\n var createPortal = getCreatePortal();\n return createPortal(_react2.default.createElement(_ModalPortal2.default, _extends({\n ref: this.portalRef,\n defaultStyles: Modal.defaultStyles\n }, this.props)), this.node);\n }\n }], [{\n key: \"setAppElement\",\n value: function setAppElement(element) {\n ariaAppHider.setElement(element);\n }\n\n /* eslint-disable react/no-unused-prop-types */\n\n /* eslint-enable react/no-unused-prop-types */\n\n }]);\n\n return Modal;\n}(_react.Component);\n\nModal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n portalClassName: _propTypes2.default.string,\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n ariaHideApp: _propTypes2.default.bool,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n parentSelector: _propTypes2.default.func,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func\n};\nModal.defaultProps = {\n isOpen: false,\n portalClassName: portalClassName,\n bodyOpenClassName: bodyOpenClassName,\n role: \"dialog\",\n ariaHideApp: true,\n closeTimeoutMS: 0,\n shouldFocusAfterRender: true,\n shouldCloseOnEsc: true,\n shouldCloseOnOverlayClick: true,\n shouldReturnFocusAfterClose: true,\n preventScroll: false,\n parentSelector: function parentSelector() {\n return document.body;\n },\n overlayElement: function overlayElement(props, contentEl) {\n return _react2.default.createElement(\n \"div\",\n props,\n contentEl\n );\n },\n contentElement: function contentElement(props, children) {\n return _react2.default.createElement(\n \"div\",\n props,\n children\n );\n }\n};\nModal.defaultStyles = {\n overlay: {\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"rgba(255, 255, 255, 0.75)\"\n },\n content: {\n position: \"absolute\",\n top: \"40px\",\n left: \"40px\",\n right: \"40px\",\n bottom: \"40px\",\n border: \"1px solid #ccc\",\n background: \"#fff\",\n overflow: \"auto\",\n WebkitOverflowScrolling: \"touch\",\n borderRadius: \"4px\",\n outline: \"none\",\n padding: \"20px\"\n }\n};\n\n\n(0, _reactLifecyclesCompat.polyfill)(Modal);\n\nif (process.env.NODE_ENV !== \"production\") {\n Modal.setCreateHTMLElement = function (fn) {\n return createHTMLElement = fn;\n };\n}\n\nexports.default = Modal;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _focusManager = require(\"../helpers/focusManager\");\n\nvar focusManager = _interopRequireWildcard(_focusManager);\n\nvar _scopeTab = require(\"../helpers/scopeTab\");\n\nvar _scopeTab2 = _interopRequireDefault(_scopeTab);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _classList = require(\"../helpers/classList\");\n\nvar classList = _interopRequireWildcard(_classList);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _portalOpenInstances = require(\"../helpers/portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nrequire(\"../helpers/bodyTrap\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// so that our CSS is statically analyzable\nvar CLASS_NAMES = {\n overlay: \"ReactModal__Overlay\",\n content: \"ReactModal__Content\"\n};\n\n/**\n * We need to support the deprecated `KeyboardEvent.keyCode` in addition to\n * `KeyboardEvent.code` for apps that still support IE11. Can be removed when\n * `react-modal` only supports React >18 (which dropped IE support).\n */\nvar isTabKey = function isTabKey(event) {\n return event.code === \"Tab\" || event.keyCode === 9;\n};\nvar isEscKey = function isEscKey(event) {\n return event.code === \"Escape\" || event.keyCode === 27;\n};\n\nvar ariaHiddenInstances = 0;\n\nvar ModalPortal = function (_Component) {\n _inherits(ModalPortal, _Component);\n\n function ModalPortal(props) {\n _classCallCheck(this, ModalPortal);\n\n var _this = _possibleConstructorReturn(this, (ModalPortal.__proto__ || Object.getPrototypeOf(ModalPortal)).call(this, props));\n\n _this.setOverlayRef = function (overlay) {\n _this.overlay = overlay;\n _this.props.overlayRef && _this.props.overlayRef(overlay);\n };\n\n _this.setContentRef = function (content) {\n _this.content = content;\n _this.props.contentRef && _this.props.contentRef(content);\n };\n\n _this.afterClose = function () {\n var _this$props = _this.props,\n appElement = _this$props.appElement,\n ariaHideApp = _this$props.ariaHideApp,\n htmlOpenClassName = _this$props.htmlOpenClassName,\n bodyOpenClassName = _this$props.bodyOpenClassName,\n parentSelector = _this$props.parentSelector;\n\n\n var parentDocument = parentSelector && parentSelector().ownerDocument || document;\n\n // Remove classes.\n bodyOpenClassName && classList.remove(parentDocument.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.remove(parentDocument.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n // Reset aria-hidden attribute if all modals have been removed\n if (ariaHideApp && ariaHiddenInstances > 0) {\n ariaHiddenInstances -= 1;\n\n if (ariaHiddenInstances === 0) {\n ariaAppHider.show(appElement);\n }\n }\n\n if (_this.props.shouldFocusAfterRender) {\n if (_this.props.shouldReturnFocusAfterClose) {\n focusManager.returnFocus(_this.props.preventScroll);\n focusManager.teardownScopedFocus();\n } else {\n focusManager.popWithoutFocus();\n }\n }\n\n if (_this.props.onAfterClose) {\n _this.props.onAfterClose();\n }\n\n _portalOpenInstances2.default.deregister(_this);\n };\n\n _this.open = function () {\n _this.beforeOpen();\n if (_this.state.afterOpen && _this.state.beforeClose) {\n clearTimeout(_this.closeTimer);\n _this.setState({ beforeClose: false });\n } else {\n if (_this.props.shouldFocusAfterRender) {\n focusManager.setupScopedFocus(_this.node);\n focusManager.markForFocusLater();\n }\n\n _this.setState({ isOpen: true }, function () {\n _this.openAnimationFrame = requestAnimationFrame(function () {\n _this.setState({ afterOpen: true });\n\n if (_this.props.isOpen && _this.props.onAfterOpen) {\n _this.props.onAfterOpen({\n overlayEl: _this.overlay,\n contentEl: _this.content\n });\n }\n });\n });\n }\n };\n\n _this.close = function () {\n if (_this.props.closeTimeoutMS > 0) {\n _this.closeWithTimeout();\n } else {\n _this.closeWithoutTimeout();\n }\n };\n\n _this.focusContent = function () {\n return _this.content && !_this.contentHasFocus() && _this.content.focus({ preventScroll: true });\n };\n\n _this.closeWithTimeout = function () {\n var closesAt = Date.now() + _this.props.closeTimeoutMS;\n _this.setState({ beforeClose: true, closesAt: closesAt }, function () {\n _this.closeTimer = setTimeout(_this.closeWithoutTimeout, _this.state.closesAt - Date.now());\n });\n };\n\n _this.closeWithoutTimeout = function () {\n _this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n closesAt: null\n }, _this.afterClose);\n };\n\n _this.handleKeyDown = function (event) {\n if (isTabKey(event)) {\n (0, _scopeTab2.default)(_this.content, event);\n }\n\n if (_this.props.shouldCloseOnEsc && isEscKey(event)) {\n event.stopPropagation();\n _this.requestClose(event);\n }\n };\n\n _this.handleOverlayOnClick = function (event) {\n if (_this.shouldClose === null) {\n _this.shouldClose = true;\n }\n\n if (_this.shouldClose && _this.props.shouldCloseOnOverlayClick) {\n if (_this.ownerHandlesClose()) {\n _this.requestClose(event);\n } else {\n _this.focusContent();\n }\n }\n _this.shouldClose = null;\n };\n\n _this.handleContentOnMouseUp = function () {\n _this.shouldClose = false;\n };\n\n _this.handleOverlayOnMouseDown = function (event) {\n if (!_this.props.shouldCloseOnOverlayClick && event.target == _this.overlay) {\n event.preventDefault();\n }\n };\n\n _this.handleContentOnClick = function () {\n _this.shouldClose = false;\n };\n\n _this.handleContentOnMouseDown = function () {\n _this.shouldClose = false;\n };\n\n _this.requestClose = function (event) {\n return _this.ownerHandlesClose() && _this.props.onRequestClose(event);\n };\n\n _this.ownerHandlesClose = function () {\n return _this.props.onRequestClose;\n };\n\n _this.shouldBeClosed = function () {\n return !_this.state.isOpen && !_this.state.beforeClose;\n };\n\n _this.contentHasFocus = function () {\n return document.activeElement === _this.content || _this.content.contains(document.activeElement);\n };\n\n _this.buildClassName = function (which, additional) {\n var classNames = (typeof additional === \"undefined\" ? \"undefined\" : _typeof(additional)) === \"object\" ? additional : {\n base: CLASS_NAMES[which],\n afterOpen: CLASS_NAMES[which] + \"--after-open\",\n beforeClose: CLASS_NAMES[which] + \"--before-close\"\n };\n var className = classNames.base;\n if (_this.state.afterOpen) {\n className = className + \" \" + classNames.afterOpen;\n }\n if (_this.state.beforeClose) {\n className = className + \" \" + classNames.beforeClose;\n }\n return typeof additional === \"string\" && additional ? className + \" \" + additional : className;\n };\n\n _this.attributesFromObject = function (prefix, items) {\n return Object.keys(items).reduce(function (acc, name) {\n acc[prefix + \"-\" + name] = items[name];\n return acc;\n }, {});\n };\n\n _this.state = {\n afterOpen: false,\n beforeClose: false\n };\n\n _this.shouldClose = null;\n _this.moveFromContentToOverlay = null;\n return _this;\n }\n\n _createClass(ModalPortal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.isOpen) {\n this.open();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (process.env.NODE_ENV !== \"production\") {\n if (prevProps.bodyOpenClassName !== this.props.bodyOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"bodyOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n if (prevProps.htmlOpenClassName !== this.props.htmlOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"htmlOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n }\n\n if (this.props.isOpen && !prevProps.isOpen) {\n this.open();\n } else if (!this.props.isOpen && prevProps.isOpen) {\n this.close();\n }\n\n // Focus only needs to be set once when the modal is being opened\n if (this.props.shouldFocusAfterRender && this.state.isOpen && !prevState.isOpen) {\n this.focusContent();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.state.isOpen) {\n this.afterClose();\n }\n clearTimeout(this.closeTimer);\n cancelAnimationFrame(this.openAnimationFrame);\n }\n }, {\n key: \"beforeOpen\",\n value: function beforeOpen() {\n var _props = this.props,\n appElement = _props.appElement,\n ariaHideApp = _props.ariaHideApp,\n htmlOpenClassName = _props.htmlOpenClassName,\n bodyOpenClassName = _props.bodyOpenClassName,\n parentSelector = _props.parentSelector;\n\n\n var parentDocument = parentSelector && parentSelector().ownerDocument || document;\n\n // Add classes.\n bodyOpenClassName && classList.add(parentDocument.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.add(parentDocument.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n if (ariaHideApp) {\n ariaHiddenInstances += 1;\n ariaAppHider.hide(appElement);\n }\n\n _portalOpenInstances2.default.register(this);\n }\n\n // Don't steal focus from inner elements\n\n }, {\n key: \"render\",\n value: function render() {\n var _props2 = this.props,\n id = _props2.id,\n className = _props2.className,\n overlayClassName = _props2.overlayClassName,\n defaultStyles = _props2.defaultStyles,\n children = _props2.children;\n\n var contentStyles = className ? {} : defaultStyles.content;\n var overlayStyles = overlayClassName ? {} : defaultStyles.overlay;\n\n if (this.shouldBeClosed()) {\n return null;\n }\n\n var overlayProps = {\n ref: this.setOverlayRef,\n className: this.buildClassName(\"overlay\", overlayClassName),\n style: _extends({}, overlayStyles, this.props.style.overlay),\n onClick: this.handleOverlayOnClick,\n onMouseDown: this.handleOverlayOnMouseDown\n };\n\n var contentProps = _extends({\n id: id,\n ref: this.setContentRef,\n style: _extends({}, contentStyles, this.props.style.content),\n className: this.buildClassName(\"content\", className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleContentOnMouseDown,\n onMouseUp: this.handleContentOnMouseUp,\n onClick: this.handleContentOnClick,\n role: this.props.role,\n \"aria-label\": this.props.contentLabel\n }, this.attributesFromObject(\"aria\", _extends({ modal: true }, this.props.aria)), this.attributesFromObject(\"data\", this.props.data || {}), {\n \"data-testid\": this.props.testId\n });\n\n var contentElement = this.props.contentElement(contentProps, children);\n return this.props.overlayElement(overlayProps, contentElement);\n }\n }]);\n\n return ModalPortal;\n}(_react.Component);\n\nModalPortal.defaultProps = {\n style: {\n overlay: {},\n content: {}\n },\n defaultStyles: {}\n};\nModalPortal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n defaultStyles: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n parentSelector: _propTypes2.default.func,\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n ariaHideApp: _propTypes2.default.bool,\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onAfterClose: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n children: _propTypes2.default.node,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func,\n testId: _propTypes2.default.string\n};\nexports.default = ModalPortal;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.assertNodeList = assertNodeList;\nexports.setElement = setElement;\nexports.validateElement = validateElement;\nexports.hide = hide;\nexports.show = show;\nexports.documentNotReadyOrSSRTesting = documentNotReadyOrSSRTesting;\n\nvar _warning = require(\"warning\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _safeHTMLElement = require(\"./safeHTMLElement\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar globalElement = null;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n if (globalElement) {\n if (globalElement.removeAttribute) {\n globalElement.removeAttribute(\"aria-hidden\");\n } else if (globalElement.length != null) {\n globalElement.forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n } else {\n document.querySelectorAll(globalElement).forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n }\n }\n globalElement = null;\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var check = globalElement || {};\n console.log(\"ariaAppHider ----------\");\n console.log(check.nodeName, check.className, check.id);\n console.log(\"end ariaAppHider ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction assertNodeList(nodeList, selector) {\n if (!nodeList || !nodeList.length) {\n throw new Error(\"react-modal: No elements were found for selector \" + selector + \".\");\n }\n}\n\nfunction setElement(element) {\n var useElement = element;\n if (typeof useElement === \"string\" && _safeHTMLElement.canUseDOM) {\n var el = document.querySelectorAll(useElement);\n assertNodeList(el, useElement);\n useElement = el;\n }\n globalElement = useElement || globalElement;\n return globalElement;\n}\n\nfunction validateElement(appElement) {\n var el = appElement || globalElement;\n if (el) {\n return Array.isArray(el) || el instanceof HTMLCollection || el instanceof NodeList ? el : [el];\n } else {\n (0, _warning2.default)(false, [\"react-modal: App element is not defined.\", \"Please use `Modal.setAppElement(el)` or set `appElement={el}`.\", \"This is needed so screen readers don't see main content\", \"when modal is opened. It is not recommended, but you can opt-out\", \"by setting `ariaHideApp={false}`.\"].join(\" \"));\n\n return [];\n }\n}\n\nfunction hide(appElement) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = validateElement(appElement)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var el = _step.value;\n\n el.setAttribute(\"aria-hidden\", \"true\");\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\nfunction show(appElement) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = validateElement(appElement)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var el = _step2.value;\n\n el.removeAttribute(\"aria-hidden\");\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n}\n\nfunction documentNotReadyOrSSRTesting() {\n globalElement = null;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\n\nvar _portalOpenInstances = require(\"./portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Body focus trap see Issue #742\n\nvar before = void 0,\n after = void 0,\n instances = [];\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n var _arr = [before, after];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var item = _arr[_i];\n if (!item) continue;\n item.parentNode && item.parentNode.removeChild(item);\n }\n before = after = null;\n instances = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n console.log(\"bodyTrap ----------\");\n console.log(instances.length);\n var _arr2 = [before, after];\n for (var _i2 = 0; _i2 < _arr2.length; _i2++) {\n var item = _arr2[_i2];\n var check = item || {};\n console.log(check.nodeName, check.className, check.id);\n }\n console.log(\"edn bodyTrap ----------\");\n}\n/* eslint-enable no-console */\n\nfunction focusContent() {\n if (instances.length === 0) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Open instances > 0 expected\");\n }\n return;\n }\n instances[instances.length - 1].focusContent();\n}\n\nfunction bodyTrap(eventType, openInstances) {\n if (!before && !after) {\n before = document.createElement(\"div\");\n before.setAttribute(\"data-react-modal-body-trap\", \"\");\n before.style.position = \"absolute\";\n before.style.opacity = \"0\";\n before.setAttribute(\"tabindex\", \"0\");\n before.addEventListener(\"focus\", focusContent);\n after = before.cloneNode();\n after.addEventListener(\"focus\", focusContent);\n }\n\n instances = openInstances;\n\n if (instances.length > 0) {\n // Add focus trap\n if (document.body.firstChild !== before) {\n document.body.insertBefore(before, document.body.firstChild);\n }\n if (document.body.lastChild !== after) {\n document.body.appendChild(after);\n }\n } else {\n // Remove focus trap\n if (before.parentElement) {\n before.parentElement.removeChild(before);\n }\n if (after.parentElement) {\n after.parentElement.removeChild(after);\n }\n }\n}\n\n_portalOpenInstances2.default.subscribe(bodyTrap);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nvar htmlClassList = {};\nvar docBodyClassList = {};\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction removeClass(at, cls) {\n at.classList.remove(cls);\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n var htmlElement = document.getElementsByTagName(\"html\")[0];\n for (var cls in htmlClassList) {\n removeClass(htmlElement, htmlClassList[cls]);\n }\n\n var body = document.body;\n for (var _cls in docBodyClassList) {\n removeClass(body, docBodyClassList[_cls]);\n }\n\n htmlClassList = {};\n docBodyClassList = {};\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var classes = document.getElementsByTagName(\"html\")[0].className;\n var buffer = \"Show tracked classes:\\n\\n\";\n\n buffer += \" (\" + classes + \"):\\n \";\n for (var x in htmlClassList) {\n buffer += \" \" + x + \" \" + htmlClassList[x] + \"\\n \";\n }\n\n classes = document.body.className;\n\n buffer += \"\\n\\ndoc.body (\" + classes + \"):\\n \";\n for (var _x in docBodyClassList) {\n buffer += \" \" + _x + \" \" + docBodyClassList[_x] + \"\\n \";\n }\n\n buffer += \"\\n\";\n\n console.log(buffer);\n }\n}\n/* eslint-enable no-console */\n\n/**\n * Track the number of reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar incrementReference = function incrementReference(poll, className) {\n if (!poll[className]) {\n poll[className] = 0;\n }\n poll[className] += 1;\n return className;\n};\n\n/**\n * Drop the reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar decrementReference = function decrementReference(poll, className) {\n if (poll[className]) {\n poll[className] -= 1;\n }\n return className;\n};\n\n/**\n * Track a class and add to the given class list.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be tracked.\n */\nvar trackClass = function trackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n incrementReference(poll, className);\n classListRef.add(className);\n });\n};\n\n/**\n * Untrack a class and remove from the given class list if the reference\n * reaches 0.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be untracked.\n */\nvar untrackClass = function untrackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n decrementReference(poll, className);\n poll[className] === 0 && classListRef.remove(className);\n });\n};\n\n/**\n * Public inferface to add classes to the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar add = exports.add = function add(element, classString) {\n return trackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};\n\n/**\n * Public inferface to remove classes from the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar remove = exports.remove = function remove(element, classString) {\n return untrackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.handleBlur = handleBlur;\nexports.handleFocus = handleFocus;\nexports.markForFocusLater = markForFocusLater;\nexports.returnFocus = returnFocus;\nexports.popWithoutFocus = popWithoutFocus;\nexports.setupScopedFocus = setupScopedFocus;\nexports.teardownScopedFocus = teardownScopedFocus;\n\nvar _tabbable = require(\"../helpers/tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar focusLaterElements = [];\nvar modalElement = null;\nvar needToFocus = false;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n focusLaterElements = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n console.log(\"focusManager ----------\");\n focusLaterElements.forEach(function (f) {\n var check = f || {};\n console.log(check.nodeName, check.className, check.id);\n });\n console.log(\"end focusManager ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction handleBlur() {\n needToFocus = true;\n}\n\nfunction handleFocus() {\n if (needToFocus) {\n needToFocus = false;\n if (!modalElement) {\n return;\n }\n // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation\n // is that the document.body gets focus, and then we focus our element right\n // after, seems fine.\n setTimeout(function () {\n if (modalElement.contains(document.activeElement)) {\n return;\n }\n var el = (0, _tabbable2.default)(modalElement)[0] || modalElement;\n el.focus();\n }, 0);\n }\n}\n\nfunction markForFocusLater() {\n focusLaterElements.push(document.activeElement);\n}\n\n/* eslint-disable no-console */\nfunction returnFocus() {\n var preventScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var toFocus = null;\n try {\n if (focusLaterElements.length !== 0) {\n toFocus = focusLaterElements.pop();\n toFocus.focus({ preventScroll: preventScroll });\n }\n return;\n } catch (e) {\n console.warn([\"You tried to return focus to\", toFocus, \"but it is not in the DOM anymore\"].join(\" \"));\n }\n}\n/* eslint-enable no-console */\n\nfunction popWithoutFocus() {\n focusLaterElements.length > 0 && focusLaterElements.pop();\n}\n\nfunction setupScopedFocus(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener(\"blur\", handleBlur, false);\n document.addEventListener(\"focus\", handleFocus, true);\n } else {\n window.attachEvent(\"onBlur\", handleBlur);\n document.attachEvent(\"onFocus\", handleFocus);\n }\n}\n\nfunction teardownScopedFocus() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener(\"blur\", handleBlur);\n document.removeEventListener(\"focus\", handleFocus);\n } else {\n window.detachEvent(\"onBlur\", handleBlur);\n document.detachEvent(\"onFocus\", handleFocus);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.log = log;\nexports.resetState = resetState;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Tracks portals that are open and emits events to subscribers\n\nvar PortalOpenInstances = function PortalOpenInstances() {\n var _this = this;\n\n _classCallCheck(this, PortalOpenInstances);\n\n this.register = function (openInstance) {\n if (_this.openInstances.indexOf(openInstance) !== -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Cannot register modal instance that's already open\");\n }\n return;\n }\n _this.openInstances.push(openInstance);\n _this.emit(\"register\");\n };\n\n this.deregister = function (openInstance) {\n var index = _this.openInstances.indexOf(openInstance);\n if (index === -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Unable to deregister \" + openInstance + \" as \" + \"it was never registered\");\n }\n return;\n }\n _this.openInstances.splice(index, 1);\n _this.emit(\"deregister\");\n };\n\n this.subscribe = function (callback) {\n _this.subscribers.push(callback);\n };\n\n this.emit = function (eventType) {\n _this.subscribers.forEach(function (subscriber) {\n return subscriber(eventType,\n // shallow copy to avoid accidental mutation\n _this.openInstances.slice());\n });\n };\n\n this.openInstances = [];\n this.subscribers = [];\n};\n\nvar portalOpenInstances = new PortalOpenInstances();\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction log() {\n console.log(\"portalOpenInstances ----------\");\n console.log(portalOpenInstances.openInstances.length);\n portalOpenInstances.openInstances.forEach(function (p) {\n return console.log(p);\n });\n console.log(\"end portalOpenInstances ----------\");\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n portalOpenInstances = new PortalOpenInstances();\n}\n/* eslint-enable no-console */\n\nexports.default = portalOpenInstances;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canUseDOM = exports.SafeNodeList = exports.SafeHTMLCollection = undefined;\n\nvar _exenv = require(\"exenv\");\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EE = _exenv2.default;\n\nvar SafeHTMLElement = EE.canUseDOM ? window.HTMLElement : {};\n\nvar SafeHTMLCollection = exports.SafeHTMLCollection = EE.canUseDOM ? window.HTMLCollection : {};\n\nvar SafeNodeList = exports.SafeNodeList = EE.canUseDOM ? window.NodeList : {};\n\nvar canUseDOM = exports.canUseDOM = EE.canUseDOM;\n\nexports.default = SafeHTMLElement;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = scopeTab;\n\nvar _tabbable = require(\"./tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getActiveElement() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n\n return el.activeElement.shadowRoot ? getActiveElement(el.activeElement.shadowRoot) : el.activeElement;\n}\n\nfunction scopeTab(node, event) {\n var tabbable = (0, _tabbable2.default)(node);\n\n if (!tabbable.length) {\n // Do nothing, since there are no elements that can receive focus.\n event.preventDefault();\n return;\n }\n\n var target = void 0;\n\n var shiftKey = event.shiftKey;\n var head = tabbable[0];\n var tail = tabbable[tabbable.length - 1];\n var activeElement = getActiveElement();\n\n // proceed with default browser behavior on tab.\n // Focus on last element on shift + tab.\n if (node === activeElement) {\n if (!shiftKey) return;\n target = tail;\n }\n\n if (tail === activeElement && !shiftKey) {\n target = head;\n }\n\n if (head === activeElement && shiftKey) {\n target = tail;\n }\n\n if (target) {\n event.preventDefault();\n target.focus();\n return;\n }\n\n // Safari radio issue.\n //\n // Safari does not move the focus to the radio button,\n // so we need to force it to really walk through all elements.\n //\n // This is very error prone, since we are trying to guess\n // if it is a safari browser from the first occurence between\n // chrome or safari.\n //\n // The chrome user agent contains the first ocurrence\n // as the 'chrome/version' and later the 'safari/version'.\n var checkSafari = /(\\bChrome\\b|\\bSafari\\b)\\//.exec(navigator.userAgent);\n var isSafariDesktop = checkSafari != null && checkSafari[1] != \"Chrome\" && /\\biPod\\b|\\biPad\\b/g.exec(navigator.userAgent) == null;\n\n // If we are not in safari desktop, let the browser control\n // the focus\n if (!isSafariDesktop) return;\n\n var x = tabbable.indexOf(activeElement);\n\n if (x > -1) {\n x += shiftKey ? -1 : 1;\n }\n\n target = tabbable[x];\n\n // If the tabbable element does not exist,\n // focus head/tail based on shiftKey\n if (typeof target === \"undefined\") {\n event.preventDefault();\n target = shiftKey ? tail : head;\n target.focus();\n return;\n }\n\n event.preventDefault();\n\n target.focus();\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = findTabbableDescendants;\n/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nvar DISPLAY_NONE = \"none\";\nvar DISPLAY_CONTENTS = \"contents\";\n\nvar tabbableNode = /input|select|textarea|button|object|iframe/;\n\nfunction isNotOverflowing(element, style) {\n return style.getPropertyValue(\"overflow\") !== \"visible\" ||\n // if 'overflow: visible' set, check if there is actually any overflow\n element.scrollWidth <= 0 && element.scrollHeight <= 0;\n}\n\nfunction hidesContents(element) {\n var zeroSize = element.offsetWidth <= 0 && element.offsetHeight <= 0;\n\n // If the node is empty, this is good enough\n if (zeroSize && !element.innerHTML) return true;\n\n try {\n // Otherwise we need to check some styles\n var style = window.getComputedStyle(element);\n var displayValue = style.getPropertyValue(\"display\");\n return zeroSize ? displayValue !== DISPLAY_CONTENTS && isNotOverflowing(element, style) : displayValue === DISPLAY_NONE;\n } catch (exception) {\n // eslint-disable-next-line no-console\n console.warn(\"Failed to inspect element style\");\n return false;\n }\n}\n\nfunction visible(element) {\n var parentElement = element;\n var rootNode = element.getRootNode && element.getRootNode();\n while (parentElement) {\n if (parentElement === document.body) break;\n\n // if we are not hidden yet, skip to checking outside the Web Component\n if (rootNode && parentElement === rootNode) parentElement = rootNode.host.parentNode;\n\n if (hidesContents(parentElement)) return false;\n parentElement = parentElement.parentNode;\n }\n return true;\n}\n\nfunction focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n var res = tabbableNode.test(nodeName) && !element.disabled || (nodeName === \"a\" ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n return res && visible(element);\n}\n\nfunction tabbable(element) {\n var tabIndex = element.getAttribute(\"tabindex\");\n if (tabIndex === null) tabIndex = undefined;\n var isTabIndexNaN = isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n var descendants = [].slice.call(element.querySelectorAll(\"*\"), 0).reduce(function (finished, el) {\n return finished.concat(!el.shadowRoot ? [el] : findTabbableDescendants(el.shadowRoot));\n }, []);\n return descendants.filter(tabbable);\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require(\"./components/Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Modal2.default;\nmodule.exports = exports[\"default\"];","\n var createReactPlayer = require('./lib/ReactPlayer').createReactPlayer\n var Player = require('./lib/players/FilePlayer').default\n module.exports = createReactPlayer([{\n key: 'file',\n canPlay: Player.canPlay,\n lazyPlayer: Player\n }])\n ","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar Player_exports = {};\n__export(Player_exports, {\n default: () => Player\n});\nmodule.exports = __toCommonJS(Player_exports);\nvar import_react = __toESM(require(\"react\"));\nvar import_react_fast_compare = __toESM(require(\"react-fast-compare\"));\nvar import_props = require(\"./props\");\nvar import_utils = require(\"./utils\");\nconst SEEK_ON_PLAY_EXPIRY = 5e3;\nclass Player extends import_react.Component {\n constructor() {\n super(...arguments);\n __publicField(this, \"mounted\", false);\n __publicField(this, \"isReady\", false);\n __publicField(this, \"isPlaying\", false);\n // Track playing state internally to prevent bugs\n __publicField(this, \"isLoading\", true);\n // Use isLoading to prevent onPause when switching URL\n __publicField(this, \"loadOnReady\", null);\n __publicField(this, \"startOnPlay\", true);\n __publicField(this, \"seekOnPlay\", null);\n __publicField(this, \"onDurationCalled\", false);\n __publicField(this, \"handlePlayerMount\", (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.url);\n this.progress();\n });\n __publicField(this, \"getInternalPlayer\", (key) => {\n if (!this.player)\n return null;\n return this.player[key];\n });\n __publicField(this, \"progress\", () => {\n if (this.props.url && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = setTimeout(this.progress, this.props.progressFrequency || this.props.progressInterval);\n });\n __publicField(this, \"handleReady\", () => {\n if (!this.mounted)\n return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n });\n __publicField(this, \"handlePlay\", () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart();\n this.startOnPlay = false;\n }\n onPlay();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n });\n __publicField(this, \"handlePause\", (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause(e);\n }\n });\n __publicField(this, \"handleEnded\", () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded();\n }\n });\n __publicField(this, \"handleError\", (...args) => {\n this.isLoading = false;\n this.props.onError(...args);\n });\n __publicField(this, \"handleDurationCheck\", () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = setTimeout(this.handleDurationCheck, 100);\n }\n });\n __publicField(this, \"handleLoaded\", () => {\n this.isLoading = false;\n });\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n if (this.isReady && this.props.stopOnUnmount) {\n this.player.stop();\n if (this.player.disablePIP) {\n this.player.disablePIP();\n }\n }\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) {\n return;\n }\n const { url, playing, volume, muted, playbackRate, pip, loop, activePlayer, disableDeferredLoading } = this.props;\n if (!(0, import_react_fast_compare.default)(prevProps.url, url)) {\n if (this.isLoading && !activePlayer.forceLoad && !disableDeferredLoading && !(0, import_utils.isMediaStream)(url)) {\n console.warn(`ReactPlayer: the attempt to load ${url} is being deferred until the player has loaded`);\n this.loadOnReady = url;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(url, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (!prevProps.pip && pip && this.player.enablePIP) {\n this.player.enablePIP();\n }\n if (prevProps.pip && !pip && this.player.disablePIP) {\n this.player.disablePIP();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady)\n return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady)\n return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady)\n return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\"ReactPlayer: could not seek using fraction \\u2013\\xA0duration not yet available\");\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return /* @__PURE__ */ import_react.default.createElement(\n Player2,\n {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n }\n );\n }\n}\n__publicField(Player, \"displayName\", \"Player\");\n__publicField(Player, \"propTypes\", import_props.propTypes);\n__publicField(Player, \"defaultProps\", import_props.defaultProps);\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar ReactPlayer_exports = {};\n__export(ReactPlayer_exports, {\n createReactPlayer: () => createReactPlayer\n});\nmodule.exports = __toCommonJS(ReactPlayer_exports);\nvar import_react = __toESM(require(\"react\"));\nvar import_deepmerge = __toESM(require(\"deepmerge\"));\nvar import_memoize_one = __toESM(require(\"memoize-one\"));\nvar import_react_fast_compare = __toESM(require(\"react-fast-compare\"));\nvar import_props = require(\"./props\");\nvar import_utils = require(\"./utils\");\nvar import_Player = __toESM(require(\"./Player\"));\nconst Preview = (0, import_utils.lazy)(() => import(\n /* webpackChunkName: 'reactPlayerPreview' */\n \"./Preview\"\n));\nconst IS_BROWSER = typeof window !== \"undefined\" && window.document && typeof document !== \"undefined\";\nconst IS_GLOBAL = typeof global !== \"undefined\" && global.window && global.window.document;\nconst SUPPORTED_PROPS = Object.keys(import_props.propTypes);\nconst UniversalSuspense = IS_BROWSER || IS_GLOBAL ? import_react.Suspense : () => null;\nconst customPlayers = [];\nconst createReactPlayer = (players, fallback) => {\n var _a;\n return _a = class extends import_react.Component {\n constructor() {\n super(...arguments);\n __publicField(this, \"state\", {\n showPreview: !!this.props.light\n });\n // Use references, as refs is used by React\n __publicField(this, \"references\", {\n wrapper: (wrapper) => {\n this.wrapper = wrapper;\n },\n player: (player) => {\n this.player = player;\n }\n });\n __publicField(this, \"handleClickPreview\", (e) => {\n this.setState({ showPreview: false });\n this.props.onClickPreview(e);\n });\n __publicField(this, \"showPreview\", () => {\n this.setState({ showPreview: true });\n });\n __publicField(this, \"getDuration\", () => {\n if (!this.player)\n return null;\n return this.player.getDuration();\n });\n __publicField(this, \"getCurrentTime\", () => {\n if (!this.player)\n return null;\n return this.player.getCurrentTime();\n });\n __publicField(this, \"getSecondsLoaded\", () => {\n if (!this.player)\n return null;\n return this.player.getSecondsLoaded();\n });\n __publicField(this, \"getInternalPlayer\", (key = \"player\") => {\n if (!this.player)\n return null;\n return this.player.getInternalPlayer(key);\n });\n __publicField(this, \"seekTo\", (fraction, type, keepPlaying) => {\n if (!this.player)\n return null;\n this.player.seekTo(fraction, type, keepPlaying);\n });\n __publicField(this, \"handleReady\", () => {\n this.props.onReady(this);\n });\n __publicField(this, \"getActivePlayer\", (0, import_memoize_one.default)((url) => {\n for (const player of [...customPlayers, ...players]) {\n if (player.canPlay(url)) {\n return player;\n }\n }\n if (fallback) {\n return fallback;\n }\n return null;\n }));\n __publicField(this, \"getConfig\", (0, import_memoize_one.default)((url, key) => {\n const { config } = this.props;\n return import_deepmerge.default.all([\n import_props.defaultProps.config,\n import_props.defaultProps.config[key] || {},\n config,\n config[key] || {}\n ]);\n }));\n __publicField(this, \"getAttributes\", (0, import_memoize_one.default)((url) => {\n return (0, import_utils.omit)(this.props, SUPPORTED_PROPS);\n }));\n __publicField(this, \"renderActivePlayer\", (url) => {\n if (!url)\n return null;\n const player = this.getActivePlayer(url);\n if (!player)\n return null;\n const config = this.getConfig(url, player.key);\n return /* @__PURE__ */ import_react.default.createElement(\n import_Player.default,\n {\n ...this.props,\n key: player.key,\n ref: this.references.player,\n config,\n activePlayer: player.lazyPlayer || player,\n onReady: this.handleReady\n }\n );\n });\n }\n shouldComponentUpdate(nextProps, nextState) {\n return !(0, import_react_fast_compare.default)(this.props, nextProps) || !(0, import_react_fast_compare.default)(this.state, nextState);\n }\n componentDidUpdate(prevProps) {\n const { light } = this.props;\n if (!prevProps.light && light) {\n this.setState({ showPreview: true });\n }\n if (prevProps.light && !light) {\n this.setState({ showPreview: false });\n }\n }\n renderPreview(url) {\n if (!url)\n return null;\n const { light, playIcon, previewTabIndex, oEmbedUrl, previewAriaLabel } = this.props;\n return /* @__PURE__ */ import_react.default.createElement(\n Preview,\n {\n url,\n light,\n playIcon,\n previewTabIndex,\n previewAriaLabel,\n oEmbedUrl,\n onClick: this.handleClickPreview\n }\n );\n }\n render() {\n const { url, style, width, height, fallback: fallback2, wrapper: Wrapper } = this.props;\n const { showPreview } = this.state;\n const attributes = this.getAttributes(url);\n const wrapperRef = typeof Wrapper === \"string\" ? this.references.wrapper : void 0;\n return /* @__PURE__ */ import_react.default.createElement(Wrapper, { ref: wrapperRef, style: { ...style, width, height }, ...attributes }, /* @__PURE__ */ import_react.default.createElement(UniversalSuspense, { fallback: fallback2 }, showPreview ? this.renderPreview(url) : this.renderActivePlayer(url)));\n }\n }, __publicField(_a, \"displayName\", \"ReactPlayer\"), __publicField(_a, \"propTypes\", import_props.propTypes), __publicField(_a, \"defaultProps\", import_props.defaultProps), __publicField(_a, \"addCustomPlayer\", (player) => {\n customPlayers.push(player);\n }), __publicField(_a, \"removeCustomPlayers\", () => {\n customPlayers.length = 0;\n }), __publicField(_a, \"canPlay\", (url) => {\n for (const Player2 of [...customPlayers, ...players]) {\n if (Player2.canPlay(url)) {\n return true;\n }\n }\n return false;\n }), __publicField(_a, \"canEnablePIP\", (url) => {\n for (const Player2 of [...customPlayers, ...players]) {\n if (Player2.canEnablePIP && Player2.canEnablePIP(url)) {\n return true;\n }\n }\n return false;\n }), _a;\n};\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar patterns_exports = {};\n__export(patterns_exports, {\n AUDIO_EXTENSIONS: () => AUDIO_EXTENSIONS,\n DASH_EXTENSIONS: () => DASH_EXTENSIONS,\n FLV_EXTENSIONS: () => FLV_EXTENSIONS,\n HLS_EXTENSIONS: () => HLS_EXTENSIONS,\n MATCH_URL_DAILYMOTION: () => MATCH_URL_DAILYMOTION,\n MATCH_URL_FACEBOOK: () => MATCH_URL_FACEBOOK,\n MATCH_URL_FACEBOOK_WATCH: () => MATCH_URL_FACEBOOK_WATCH,\n MATCH_URL_KALTURA: () => MATCH_URL_KALTURA,\n MATCH_URL_MIXCLOUD: () => MATCH_URL_MIXCLOUD,\n MATCH_URL_MUX: () => MATCH_URL_MUX,\n MATCH_URL_SOUNDCLOUD: () => MATCH_URL_SOUNDCLOUD,\n MATCH_URL_STREAMABLE: () => MATCH_URL_STREAMABLE,\n MATCH_URL_TWITCH_CHANNEL: () => MATCH_URL_TWITCH_CHANNEL,\n MATCH_URL_TWITCH_VIDEO: () => MATCH_URL_TWITCH_VIDEO,\n MATCH_URL_VIDYARD: () => MATCH_URL_VIDYARD,\n MATCH_URL_VIMEO: () => MATCH_URL_VIMEO,\n MATCH_URL_WISTIA: () => MATCH_URL_WISTIA,\n MATCH_URL_YOUTUBE: () => MATCH_URL_YOUTUBE,\n VIDEO_EXTENSIONS: () => VIDEO_EXTENSIONS,\n canPlay: () => canPlay\n});\nmodule.exports = __toCommonJS(patterns_exports);\nvar import_utils = require(\"./utils\");\nconst MATCH_URL_YOUTUBE = /(?:youtu\\.be\\/|youtube(?:-nocookie|education)?\\.com\\/(?:embed\\/|v\\/|watch\\/|watch\\?v=|watch\\?.+&v=|shorts\\/|live\\/))((\\w|-){11})|youtube\\.com\\/playlist\\?list=|youtube\\.com\\/user\\//;\nconst MATCH_URL_SOUNDCLOUD = /(?:soundcloud\\.com|snd\\.sc)\\/[^.]+$/;\nconst MATCH_URL_VIMEO = /vimeo\\.com\\/(?!progressive_redirect).+/;\nconst MATCH_URL_MUX = /stream\\.mux\\.com\\/(?!\\w+\\.m3u8)(\\w+)/;\nconst MATCH_URL_FACEBOOK = /^https?:\\/\\/(www\\.)?facebook\\.com.*\\/(video(s)?|watch|story)(\\.php?|\\/).+$/;\nconst MATCH_URL_FACEBOOK_WATCH = /^https?:\\/\\/fb\\.watch\\/.+$/;\nconst MATCH_URL_STREAMABLE = /streamable\\.com\\/([a-z0-9]+)$/;\nconst MATCH_URL_WISTIA = /(?:wistia\\.(?:com|net)|wi\\.st)\\/(?:medias|embed)\\/(?:iframe\\/)?([^?]+)/;\nconst MATCH_URL_TWITCH_VIDEO = /(?:www\\.|go\\.)?twitch\\.tv\\/videos\\/(\\d+)($|\\?)/;\nconst MATCH_URL_TWITCH_CHANNEL = /(?:www\\.|go\\.)?twitch\\.tv\\/([a-zA-Z0-9_]+)($|\\?)/;\nconst MATCH_URL_DAILYMOTION = /^(?:(?:https?):)?(?:\\/\\/)?(?:www\\.)?(?:(?:dailymotion\\.com(?:\\/embed)?\\/video)|dai\\.ly)\\/([a-zA-Z0-9]+)(?:_[\\w_-]+)?(?:[\\w.#_-]+)?/;\nconst MATCH_URL_MIXCLOUD = /mixcloud\\.com\\/([^/]+\\/[^/]+)/;\nconst MATCH_URL_VIDYARD = /vidyard.com\\/(?:watch\\/)?([a-zA-Z0-9-_]+)/;\nconst MATCH_URL_KALTURA = /^https?:\\/\\/[a-zA-Z]+\\.kaltura.(com|org)\\/p\\/([0-9]+)\\/sp\\/([0-9]+)00\\/embedIframeJs\\/uiconf_id\\/([0-9]+)\\/partner_id\\/([0-9]+)(.*)entry_id.([a-zA-Z0-9-_].*)$/;\nconst AUDIO_EXTENSIONS = /\\.(m4a|m4b|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|spx)($|\\?)/i;\nconst VIDEO_EXTENSIONS = /\\.(mp4|og[gv]|webm|mov|m4v)(#t=[,\\d+]+)?($|\\?)/i;\nconst HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nconst DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nconst FLV_EXTENSIONS = /\\.(flv)($|\\?)/i;\nconst canPlayFile = (url) => {\n if (url instanceof Array) {\n for (const item of url) {\n if (typeof item === \"string\" && canPlayFile(item)) {\n return true;\n }\n if (canPlayFile(item.src)) {\n return true;\n }\n }\n return false;\n }\n if ((0, import_utils.isMediaStream)(url) || (0, import_utils.isBlobUrl)(url)) {\n return true;\n }\n return AUDIO_EXTENSIONS.test(url) || VIDEO_EXTENSIONS.test(url) || HLS_EXTENSIONS.test(url) || DASH_EXTENSIONS.test(url) || FLV_EXTENSIONS.test(url);\n};\nconst canPlay = {\n youtube: (url) => {\n if (url instanceof Array) {\n return url.every((item) => MATCH_URL_YOUTUBE.test(item));\n }\n return MATCH_URL_YOUTUBE.test(url);\n },\n soundcloud: (url) => MATCH_URL_SOUNDCLOUD.test(url) && !AUDIO_EXTENSIONS.test(url),\n vimeo: (url) => MATCH_URL_VIMEO.test(url) && !VIDEO_EXTENSIONS.test(url) && !HLS_EXTENSIONS.test(url),\n mux: (url) => MATCH_URL_MUX.test(url),\n facebook: (url) => MATCH_URL_FACEBOOK.test(url) || MATCH_URL_FACEBOOK_WATCH.test(url),\n streamable: (url) => MATCH_URL_STREAMABLE.test(url),\n wistia: (url) => MATCH_URL_WISTIA.test(url),\n twitch: (url) => MATCH_URL_TWITCH_VIDEO.test(url) || MATCH_URL_TWITCH_CHANNEL.test(url),\n dailymotion: (url) => MATCH_URL_DAILYMOTION.test(url),\n mixcloud: (url) => MATCH_URL_MIXCLOUD.test(url),\n vidyard: (url) => MATCH_URL_VIDYARD.test(url),\n kaltura: (url) => MATCH_URL_KALTURA.test(url),\n file: canPlayFile\n};\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar FilePlayer_exports = {};\n__export(FilePlayer_exports, {\n default: () => FilePlayer\n});\nmodule.exports = __toCommonJS(FilePlayer_exports);\nvar import_react = __toESM(require(\"react\"));\nvar import_utils = require(\"../utils\");\nvar import_patterns = require(\"../patterns\");\nconst HAS_NAVIGATOR = typeof navigator !== \"undefined\";\nconst IS_IPAD_PRO = HAS_NAVIGATOR && navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1;\nconst IS_IOS = HAS_NAVIGATOR && (/iPad|iPhone|iPod/.test(navigator.userAgent) || IS_IPAD_PRO) && !window.MSStream;\nconst IS_SAFARI = HAS_NAVIGATOR && /^((?!chrome|android).)*safari/i.test(navigator.userAgent) && !window.MSStream;\nconst HLS_SDK_URL = \"https://cdn.jsdelivr.net/npm/hls.js@VERSION/dist/hls.min.js\";\nconst HLS_GLOBAL = \"Hls\";\nconst DASH_SDK_URL = \"https://cdnjs.cloudflare.com/ajax/libs/dashjs/VERSION/dash.all.min.js\";\nconst DASH_GLOBAL = \"dashjs\";\nconst FLV_SDK_URL = \"https://cdn.jsdelivr.net/npm/flv.js@VERSION/dist/flv.min.js\";\nconst FLV_GLOBAL = \"flvjs\";\nconst MATCH_DROPBOX_URL = /www\\.dropbox\\.com\\/.+/;\nconst MATCH_CLOUDFLARE_STREAM = /https:\\/\\/watch\\.cloudflarestream\\.com\\/([a-z0-9]+)/;\nconst REPLACE_CLOUDFLARE_STREAM = \"https://videodelivery.net/{id}/manifest/video.m3u8\";\nclass FilePlayer extends import_react.Component {\n constructor() {\n super(...arguments);\n // Proxy methods to prevent listener leaks\n __publicField(this, \"onReady\", (...args) => this.props.onReady(...args));\n __publicField(this, \"onPlay\", (...args) => this.props.onPlay(...args));\n __publicField(this, \"onBuffer\", (...args) => this.props.onBuffer(...args));\n __publicField(this, \"onBufferEnd\", (...args) => this.props.onBufferEnd(...args));\n __publicField(this, \"onPause\", (...args) => this.props.onPause(...args));\n __publicField(this, \"onEnded\", (...args) => this.props.onEnded(...args));\n __publicField(this, \"onError\", (...args) => this.props.onError(...args));\n __publicField(this, \"onPlayBackRateChange\", (event) => this.props.onPlaybackRateChange(event.target.playbackRate));\n __publicField(this, \"onEnablePIP\", (...args) => this.props.onEnablePIP(...args));\n __publicField(this, \"onDisablePIP\", (e) => {\n const { onDisablePIP, playing } = this.props;\n onDisablePIP(e);\n if (playing) {\n this.play();\n }\n });\n __publicField(this, \"onPresentationModeChange\", (e) => {\n if (this.player && (0, import_utils.supportsWebKitPresentationMode)(this.player)) {\n const { webkitPresentationMode } = this.player;\n if (webkitPresentationMode === \"picture-in-picture\") {\n this.onEnablePIP(e);\n } else if (webkitPresentationMode === \"inline\") {\n this.onDisablePIP(e);\n }\n }\n });\n __publicField(this, \"onSeek\", (e) => {\n this.props.onSeek(e.target.currentTime);\n });\n __publicField(this, \"mute\", () => {\n this.player.muted = true;\n });\n __publicField(this, \"unmute\", () => {\n this.player.muted = false;\n });\n __publicField(this, \"renderSourceElement\", (source, index) => {\n if (typeof source === \"string\") {\n return /* @__PURE__ */ import_react.default.createElement(\"source\", { key: index, src: source });\n }\n return /* @__PURE__ */ import_react.default.createElement(\"source\", { key: index, ...source });\n });\n __publicField(this, \"renderTrack\", (track, index) => {\n return /* @__PURE__ */ import_react.default.createElement(\"track\", { key: index, ...track });\n });\n __publicField(this, \"ref\", (player) => {\n if (this.player) {\n this.prevPlayer = this.player;\n }\n this.player = player;\n });\n }\n componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n this.addListeners(this.player);\n const src = this.getSource(this.props.url);\n if (src) {\n this.player.src = src;\n }\n if (IS_IOS || this.props.config.forceDisableHls) {\n this.player.load();\n }\n }\n componentDidUpdate(prevProps) {\n if (this.shouldUseAudio(this.props) !== this.shouldUseAudio(prevProps)) {\n this.removeListeners(this.prevPlayer, prevProps.url);\n this.addListeners(this.player);\n }\n if (this.props.url !== prevProps.url && !(0, import_utils.isMediaStream)(this.props.url) && !(this.props.url instanceof Array)) {\n this.player.srcObject = null;\n }\n }\n componentWillUnmount() {\n this.player.removeAttribute(\"src\");\n this.removeListeners(this.player);\n if (this.hls) {\n this.hls.destroy();\n }\n }\n addListeners(player) {\n const { url, playsinline } = this.props;\n player.addEventListener(\"play\", this.onPlay);\n player.addEventListener(\"waiting\", this.onBuffer);\n player.addEventListener(\"playing\", this.onBufferEnd);\n player.addEventListener(\"pause\", this.onPause);\n player.addEventListener(\"seeked\", this.onSeek);\n player.addEventListener(\"ended\", this.onEnded);\n player.addEventListener(\"error\", this.onError);\n player.addEventListener(\"ratechange\", this.onPlayBackRateChange);\n player.addEventListener(\"enterpictureinpicture\", this.onEnablePIP);\n player.addEventListener(\"leavepictureinpicture\", this.onDisablePIP);\n player.addEventListener(\"webkitpresentationmodechanged\", this.onPresentationModeChange);\n if (!this.shouldUseHLS(url)) {\n player.addEventListener(\"canplay\", this.onReady);\n }\n if (playsinline) {\n player.setAttribute(\"playsinline\", \"\");\n player.setAttribute(\"webkit-playsinline\", \"\");\n player.setAttribute(\"x5-playsinline\", \"\");\n }\n }\n removeListeners(player, url) {\n player.removeEventListener(\"canplay\", this.onReady);\n player.removeEventListener(\"play\", this.onPlay);\n player.removeEventListener(\"waiting\", this.onBuffer);\n player.removeEventListener(\"playing\", this.onBufferEnd);\n player.removeEventListener(\"pause\", this.onPause);\n player.removeEventListener(\"seeked\", this.onSeek);\n player.removeEventListener(\"ended\", this.onEnded);\n player.removeEventListener(\"error\", this.onError);\n player.removeEventListener(\"ratechange\", this.onPlayBackRateChange);\n player.removeEventListener(\"enterpictureinpicture\", this.onEnablePIP);\n player.removeEventListener(\"leavepictureinpicture\", this.onDisablePIP);\n player.removeEventListener(\"webkitpresentationmodechanged\", this.onPresentationModeChange);\n if (!this.shouldUseHLS(url)) {\n player.removeEventListener(\"canplay\", this.onReady);\n }\n }\n shouldUseAudio(props) {\n if (props.config.forceVideo) {\n return false;\n }\n if (props.config.attributes.poster) {\n return false;\n }\n return import_patterns.AUDIO_EXTENSIONS.test(props.url) || props.config.forceAudio;\n }\n shouldUseHLS(url) {\n if (IS_SAFARI && this.props.config.forceSafariHLS || this.props.config.forceHLS) {\n return true;\n }\n if (IS_IOS || this.props.config.forceDisableHls) {\n return false;\n }\n return import_patterns.HLS_EXTENSIONS.test(url) || MATCH_CLOUDFLARE_STREAM.test(url);\n }\n shouldUseDASH(url) {\n return import_patterns.DASH_EXTENSIONS.test(url) || this.props.config.forceDASH;\n }\n shouldUseFLV(url) {\n return import_patterns.FLV_EXTENSIONS.test(url) || this.props.config.forceFLV;\n }\n load(url) {\n const { hlsVersion, hlsOptions, dashVersion, flvVersion } = this.props.config;\n if (this.hls) {\n this.hls.destroy();\n }\n if (this.dash) {\n this.dash.reset();\n }\n if (this.shouldUseHLS(url)) {\n (0, import_utils.getSDK)(HLS_SDK_URL.replace(\"VERSION\", hlsVersion), HLS_GLOBAL).then((Hls) => {\n this.hls = new Hls(hlsOptions);\n this.hls.on(Hls.Events.MANIFEST_PARSED, () => {\n this.props.onReady();\n });\n this.hls.on(Hls.Events.ERROR, (e, data) => {\n this.props.onError(e, data, this.hls, Hls);\n });\n if (MATCH_CLOUDFLARE_STREAM.test(url)) {\n const id = url.match(MATCH_CLOUDFLARE_STREAM)[1];\n this.hls.loadSource(REPLACE_CLOUDFLARE_STREAM.replace(\"{id}\", id));\n } else {\n this.hls.loadSource(url);\n }\n this.hls.attachMedia(this.player);\n this.props.onLoaded();\n });\n }\n if (this.shouldUseDASH(url)) {\n (0, import_utils.getSDK)(DASH_SDK_URL.replace(\"VERSION\", dashVersion), DASH_GLOBAL).then((dashjs) => {\n this.dash = dashjs.MediaPlayer().create();\n this.dash.initialize(this.player, url, this.props.playing);\n this.dash.on(\"error\", this.props.onError);\n if (parseInt(dashVersion) < 3) {\n this.dash.getDebug().setLogToBrowserConsole(false);\n } else {\n this.dash.updateSettings({ debug: { logLevel: dashjs.Debug.LOG_LEVEL_NONE } });\n }\n this.props.onLoaded();\n });\n }\n if (this.shouldUseFLV(url)) {\n (0, import_utils.getSDK)(FLV_SDK_URL.replace(\"VERSION\", flvVersion), FLV_GLOBAL).then((flvjs) => {\n this.flv = flvjs.createPlayer({ type: \"flv\", url });\n this.flv.attachMediaElement(this.player);\n this.flv.on(flvjs.Events.ERROR, (e, data) => {\n this.props.onError(e, data, this.flv, flvjs);\n });\n this.flv.load();\n this.props.onLoaded();\n });\n }\n if (url instanceof Array) {\n this.player.load();\n } else if ((0, import_utils.isMediaStream)(url)) {\n try {\n this.player.srcObject = url;\n } catch (e) {\n this.player.src = window.URL.createObjectURL(url);\n }\n }\n }\n play() {\n const promise = this.player.play();\n if (promise) {\n promise.catch(this.props.onError);\n }\n }\n pause() {\n this.player.pause();\n }\n stop() {\n this.player.removeAttribute(\"src\");\n if (this.dash) {\n this.dash.reset();\n }\n }\n seekTo(seconds, keepPlaying = true) {\n this.player.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n setVolume(fraction) {\n this.player.volume = fraction;\n }\n enablePIP() {\n if (this.player.requestPictureInPicture && document.pictureInPictureElement !== this.player) {\n this.player.requestPictureInPicture();\n } else if ((0, import_utils.supportsWebKitPresentationMode)(this.player) && this.player.webkitPresentationMode !== \"picture-in-picture\") {\n this.player.webkitSetPresentationMode(\"picture-in-picture\");\n }\n }\n disablePIP() {\n if (document.exitPictureInPicture && document.pictureInPictureElement === this.player) {\n document.exitPictureInPicture();\n } else if ((0, import_utils.supportsWebKitPresentationMode)(this.player) && this.player.webkitPresentationMode !== \"inline\") {\n this.player.webkitSetPresentationMode(\"inline\");\n }\n }\n setPlaybackRate(rate) {\n try {\n this.player.playbackRate = rate;\n } catch (error) {\n this.props.onError(error);\n }\n }\n getDuration() {\n if (!this.player)\n return null;\n const { duration, seekable } = this.player;\n if (duration === Infinity && seekable.length > 0) {\n return seekable.end(seekable.length - 1);\n }\n return duration;\n }\n getCurrentTime() {\n if (!this.player)\n return null;\n return this.player.currentTime;\n }\n getSecondsLoaded() {\n if (!this.player)\n return null;\n const { buffered } = this.player;\n if (buffered.length === 0) {\n return 0;\n }\n const end = buffered.end(buffered.length - 1);\n const duration = this.getDuration();\n if (end > duration) {\n return duration;\n }\n return end;\n }\n getSource(url) {\n const useHLS = this.shouldUseHLS(url);\n const useDASH = this.shouldUseDASH(url);\n const useFLV = this.shouldUseFLV(url);\n if (url instanceof Array || (0, import_utils.isMediaStream)(url) || useHLS || useDASH || useFLV) {\n return void 0;\n }\n if (MATCH_DROPBOX_URL.test(url)) {\n return url.replace(\"www.dropbox.com\", \"dl.dropboxusercontent.com\");\n }\n return url;\n }\n render() {\n const { url, playing, loop, controls, muted, config, width, height } = this.props;\n const useAudio = this.shouldUseAudio(this.props);\n const Element = useAudio ? \"audio\" : \"video\";\n const style = {\n width: width === \"auto\" ? width : \"100%\",\n height: height === \"auto\" ? height : \"100%\"\n };\n return /* @__PURE__ */ import_react.default.createElement(\n Element,\n {\n ref: this.ref,\n src: this.getSource(url),\n style,\n preload: \"auto\",\n autoPlay: playing || void 0,\n controls,\n muted,\n loop,\n ...config.attributes\n },\n url instanceof Array && url.map(this.renderSourceElement),\n config.tracks.map(this.renderTrack)\n );\n }\n}\n__publicField(FilePlayer, \"displayName\", \"FilePlayer\");\n__publicField(FilePlayer, \"canPlay\", import_patterns.canPlay.file);\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar props_exports = {};\n__export(props_exports, {\n defaultProps: () => defaultProps,\n propTypes: () => propTypes\n});\nmodule.exports = __toCommonJS(props_exports);\nvar import_prop_types = __toESM(require(\"prop-types\"));\nconst { string, bool, number, array, oneOfType, shape, object, func, node } = import_prop_types.default;\nconst propTypes = {\n url: oneOfType([string, array, object]),\n playing: bool,\n loop: bool,\n controls: bool,\n volume: number,\n muted: bool,\n playbackRate: number,\n width: oneOfType([string, number]),\n height: oneOfType([string, number]),\n style: object,\n progressInterval: number,\n playsinline: bool,\n pip: bool,\n stopOnUnmount: bool,\n light: oneOfType([bool, string, object]),\n playIcon: node,\n previewTabIndex: number,\n previewAriaLabel: string,\n fallback: node,\n oEmbedUrl: string,\n wrapper: oneOfType([\n string,\n func,\n shape({ render: func.isRequired })\n ]),\n config: shape({\n soundcloud: shape({\n options: object\n }),\n youtube: shape({\n playerVars: object,\n embedOptions: object,\n onUnstarted: func\n }),\n facebook: shape({\n appId: string,\n version: string,\n playerId: string,\n attributes: object\n }),\n dailymotion: shape({\n params: object\n }),\n vimeo: shape({\n playerOptions: object,\n title: string\n }),\n mux: shape({\n attributes: object,\n version: string\n }),\n file: shape({\n attributes: object,\n tracks: array,\n forceVideo: bool,\n forceAudio: bool,\n forceHLS: bool,\n forceSafariHLS: bool,\n forceDisableHls: bool,\n forceDASH: bool,\n forceFLV: bool,\n hlsOptions: object,\n hlsVersion: string,\n dashVersion: string,\n flvVersion: string\n }),\n wistia: shape({\n options: object,\n playerId: string,\n customControls: array\n }),\n mixcloud: shape({\n options: object\n }),\n twitch: shape({\n options: object,\n playerId: string\n }),\n vidyard: shape({\n options: object\n })\n }),\n onReady: func,\n onStart: func,\n onPlay: func,\n onPause: func,\n onBuffer: func,\n onBufferEnd: func,\n onEnded: func,\n onError: func,\n onDuration: func,\n onSeek: func,\n onPlaybackRateChange: func,\n onPlaybackQualityChange: func,\n onProgress: func,\n onClickPreview: func,\n onEnablePIP: func,\n onDisablePIP: func\n};\nconst noop = () => {\n};\nconst defaultProps = {\n playing: false,\n loop: false,\n controls: false,\n volume: null,\n muted: false,\n playbackRate: 1,\n width: \"640px\",\n height: \"360px\",\n style: {},\n progressInterval: 1e3,\n playsinline: false,\n pip: false,\n stopOnUnmount: true,\n light: false,\n fallback: null,\n wrapper: \"div\",\n previewTabIndex: 0,\n previewAriaLabel: \"\",\n oEmbedUrl: \"https://noembed.com/embed?url={url}\",\n config: {\n soundcloud: {\n options: {\n visual: true,\n // Undocumented, but makes player fill container and look better\n buying: false,\n liking: false,\n download: false,\n sharing: false,\n show_comments: false,\n show_playcount: false\n }\n },\n youtube: {\n playerVars: {\n playsinline: 1,\n showinfo: 0,\n rel: 0,\n iv_load_policy: 3,\n modestbranding: 1\n },\n embedOptions: {},\n onUnstarted: noop\n },\n facebook: {\n appId: \"1309697205772819\",\n version: \"v3.3\",\n playerId: null,\n attributes: {}\n },\n dailymotion: {\n params: {\n api: 1,\n \"endscreen-enable\": false\n }\n },\n vimeo: {\n playerOptions: {\n autopause: false,\n byline: false,\n portrait: false,\n title: false\n },\n title: null\n },\n mux: {\n attributes: {},\n version: \"2\"\n },\n file: {\n attributes: {},\n tracks: [],\n forceVideo: false,\n forceAudio: false,\n forceHLS: false,\n forceDASH: false,\n forceFLV: false,\n hlsOptions: {},\n hlsVersion: \"1.1.4\",\n dashVersion: \"3.1.3\",\n flvVersion: \"1.5.0\",\n forceDisableHls: false\n },\n wistia: {\n options: {},\n playerId: null,\n customControls: null\n },\n mixcloud: {\n options: {\n hide_cover: 1\n }\n },\n twitch: {\n options: {},\n playerId: null\n },\n vidyard: {\n options: {}\n }\n },\n onReady: noop,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onPlaybackRateChange: noop,\n onPlaybackQualityChange: noop,\n onProgress: noop,\n onClickPreview: noop,\n onEnablePIP: noop,\n onDisablePIP: noop\n};\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar utils_exports = {};\n__export(utils_exports, {\n callPlayer: () => callPlayer,\n getConfig: () => getConfig,\n getSDK: () => getSDK,\n isBlobUrl: () => isBlobUrl,\n isMediaStream: () => isMediaStream,\n lazy: () => lazy,\n omit: () => omit,\n parseEndTime: () => parseEndTime,\n parseStartTime: () => parseStartTime,\n queryString: () => queryString,\n randomString: () => randomString,\n supportsWebKitPresentationMode: () => supportsWebKitPresentationMode\n});\nmodule.exports = __toCommonJS(utils_exports);\nvar import_react = __toESM(require(\"react\"));\nvar import_load_script = __toESM(require(\"load-script\"));\nvar import_deepmerge = __toESM(require(\"deepmerge\"));\nconst lazy = (componentImportFn) => import_react.default.lazy(async () => {\n const obj = await componentImportFn();\n return typeof obj.default === \"function\" ? obj : obj.default;\n});\nconst MATCH_START_QUERY = /[?&#](?:start|t)=([0-9hms]+)/;\nconst MATCH_END_QUERY = /[?&#]end=([0-9hms]+)/;\nconst MATCH_START_STAMP = /(\\d+)(h|m|s)/g;\nconst MATCH_NUMERIC = /^\\d+$/;\nfunction parseTimeParam(url, pattern) {\n if (url instanceof Array) {\n return void 0;\n }\n const match = url.match(pattern);\n if (match) {\n const stamp = match[1];\n if (stamp.match(MATCH_START_STAMP)) {\n return parseTimeString(stamp);\n }\n if (MATCH_NUMERIC.test(stamp)) {\n return parseInt(stamp);\n }\n }\n return void 0;\n}\nfunction parseTimeString(stamp) {\n let seconds = 0;\n let array = MATCH_START_STAMP.exec(stamp);\n while (array !== null) {\n const [, count, period] = array;\n if (period === \"h\")\n seconds += parseInt(count, 10) * 60 * 60;\n if (period === \"m\")\n seconds += parseInt(count, 10) * 60;\n if (period === \"s\")\n seconds += parseInt(count, 10);\n array = MATCH_START_STAMP.exec(stamp);\n }\n return seconds;\n}\nfunction parseStartTime(url) {\n return parseTimeParam(url, MATCH_START_QUERY);\n}\nfunction parseEndTime(url) {\n return parseTimeParam(url, MATCH_END_QUERY);\n}\nfunction randomString() {\n return Math.random().toString(36).substr(2, 5);\n}\nfunction queryString(object) {\n return Object.keys(object).map((key) => `${key}=${object[key]}`).join(\"&\");\n}\nfunction getGlobal(key) {\n if (window[key]) {\n return window[key];\n }\n if (window.exports && window.exports[key]) {\n return window.exports[key];\n }\n if (window.module && window.module.exports && window.module.exports[key]) {\n return window.module.exports[key];\n }\n return null;\n}\nconst requests = {};\nconst getSDK = enableStubOn(function getSDK2(url, sdkGlobal, sdkReady = null, isLoaded = () => true, fetchScript = import_load_script.default) {\n const existingGlobal = getGlobal(sdkGlobal);\n if (existingGlobal && isLoaded(existingGlobal)) {\n return Promise.resolve(existingGlobal);\n }\n return new Promise((resolve, reject) => {\n if (requests[url]) {\n requests[url].push({ resolve, reject });\n return;\n }\n requests[url] = [{ resolve, reject }];\n const onLoaded = (sdk) => {\n requests[url].forEach((request) => request.resolve(sdk));\n };\n if (sdkReady) {\n const previousOnReady = window[sdkReady];\n window[sdkReady] = function() {\n if (previousOnReady)\n previousOnReady();\n onLoaded(getGlobal(sdkGlobal));\n };\n }\n fetchScript(url, (err) => {\n if (err) {\n requests[url].forEach((request) => request.reject(err));\n requests[url] = null;\n } else if (!sdkReady) {\n onLoaded(getGlobal(sdkGlobal));\n }\n });\n });\n});\nfunction getConfig(props, defaultProps) {\n return (0, import_deepmerge.default)(defaultProps.config, props.config);\n}\nfunction omit(object, ...arrays) {\n const omitKeys = [].concat(...arrays);\n const output = {};\n const keys = Object.keys(object);\n for (const key of keys) {\n if (omitKeys.indexOf(key) === -1) {\n output[key] = object[key];\n }\n }\n return output;\n}\nfunction callPlayer(method, ...args) {\n if (!this.player || !this.player[method]) {\n let message = `ReactPlayer: ${this.constructor.displayName} player could not call %c${method}%c \\u2013 `;\n if (!this.player) {\n message += \"The player was not available\";\n } else if (!this.player[method]) {\n message += \"The method was not available\";\n }\n console.warn(message, \"font-weight: bold\", \"\");\n return null;\n }\n return this.player[method](...args);\n}\nfunction isMediaStream(url) {\n return typeof window !== \"undefined\" && typeof window.MediaStream !== \"undefined\" && url instanceof window.MediaStream;\n}\nfunction isBlobUrl(url) {\n return /^blob:/.test(url);\n}\nfunction supportsWebKitPresentationMode(video = document.createElement(\"video\")) {\n const notMobile = /iPhone|iPod/.test(navigator.userAgent) === false;\n return video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === \"function\" && notMobile;\n}\nfunction enableStubOn(fn) {\n if (false) {\n const wrap = (...args) => wrap.stub(...args);\n wrap.stub = fn;\n return wrap;\n }\n return fn;\n}\n","/**\n * @license React\n * react-reconciler-constants.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';exports.ConcurrentRoot=1;exports.ContinuousEventPriority=4;exports.DefaultEventPriority=16;exports.DiscreteEventPriority=1;exports.IdleEventPriority=536870912;exports.LegacyRoot=0;\n","/**\n * @license React\n * react-reconciler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nmodule.exports = function $$$reconciler($$$hostConfig) {\n var exports = {};\n'use strict';var aa=require(\"react\"),ba=require(\"scheduler\"),ca=Object.assign;function n(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;ch||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{bc=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?ac(a):\"\"}var dc=Object.prototype.hasOwnProperty,ec=[],fc=-1;function gc(a){return{current:a}}\nfunction x(a){0>fc||(a.current=ec[fc],ec[fc]=null,fc--)}function y(a,b){fc++;ec[fc]=a.current;a.current=b}var hc={},A=gc(hc),B=gc(!1),ic=hc;function jc(a,b){var c=a.type.contextTypes;if(!c)return hc;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction C(a){a=a.childContextTypes;return null!==a&&void 0!==a}function kc(){x(B);x(A)}function lc(a,b,c){if(A.current!==hc)throw Error(n(168));y(A,b);y(B,c)}function mc(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(n(108,xa(a)||\"Unknown\",e));return ca({},c,d)}\nfunction nc(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||hc;ic=A.current;y(A,a);y(B,B.current);return!0}function oc(a,b,c){var d=a.stateNode;if(!d)throw Error(n(169));c?(a=mc(a,b,ic),d.__reactInternalMemoizedMergedChildContext=a,x(B),x(A),y(A,a)):x(B);y(B,c)}var qc=Math.clz32?Math.clz32:pc,rc=Math.log,sc=Math.LN2;function pc(a){a>>>=0;return 0===a?32:31-(rc(a)/sc|0)|0}var tc=64,uc=4194304;\nfunction vc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function wc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=vc(h):(f&=g,0!==f&&(d=vc(f)))}else g=c&~e,0!==g?d=vc(g):0!==f&&(d=vc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}function Bc(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-qc(b);a[b]=c}\nfunction Cc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0>=g;e-=g;Nd=1<<32-qc(b)+e|c<u?(t=w,w=null):t=w.sibling;var q=r(e,w,h[u],k);if(null===q){null===w&&(w=t);break}a&&w&&null===q.alternate&&b(e,w);g=f(q,g,u);null===m?l=q:m.sibling=q;m=q;w=t}if(u===h.length)return c(e,w),I&&Pd(e,u),l;if(null===w){for(;uu?(q=m,m=null):q=m.sibling;var V=r(e,m,t.value,k);if(null===V){null===m&&(m=q);break}a&&m&&null===V.alternate&&b(e,m);g=f(V,g,u);null===w?l=V:w.sibling=V;w=V;m=q}if(t.done)return c(e,\nm),I&&Pd(e,u),l;if(null===m){for(;!t.done;u++,t=h.next())t=v(e,t.value,k),null!==t&&(g=f(t,g,u),null===w?l=t:w.sibling=t,w=t);I&&Pd(e,u);return l}for(m=d(e,m);!t.done;u++,t=h.next())t=z(m,e,u,t.value,k),null!==t&&(a&&null!==t.alternate&&m.delete(null===t.key?u:t.key),g=f(t,g,u),null===w?l=t:w.sibling=t,w=t);a&&m.forEach(function(a){return b(e,a)});I&&Pd(e,u);return l}function da(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ia&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==\nf){switch(f.$$typeof){case fa:a:{for(var k=f.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ia){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===ra&&he(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=fe(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ia?(d=ne(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=le(f.type,f.key,f.props,null,a.mode,h),h.ref=fe(a,d,f),h.return=\na,a=h)}return g(a);case ha:a:{for(l=f.key;null!==d;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=me(f,a.mode,h);d.return=a;a=d}return g(a);case ra:return l=f._init,da(a,d,l(f._payload),h)}if(Ea(f))return q(a,d,f,h);if(ua(f))return N(a,d,f,h);ge(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&\n6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=ke(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return da}var oe=ie(!0),pe=ie(!1),qe={},re=gc(qe),se=gc(qe),te=gc(qe);function ue(a){if(a===qe)throw Error(n(174));return a}function ve(a,b){y(te,b);y(se,a);y(re,qe);a=Ga(b);x(re);y(re,a)}function we(){x(re);x(se);x(te)}function xe(a){var b=ue(te.current),c=ue(re.current);b=Ha(c,a.type,b);c!==b&&(y(se,a),y(re,b))}function ye(a){se.current===a&&(x(re),x(se))}var J=gc(0);\nfunction ze(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||Ib(c)||Jb(c)))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Ae=[];\nfunction Be(){for(var a=0;ac?c:4;a(!0);var d=De.transition;De.transition={};try{a(!1),b()}finally{D=c,De.transition=d}}function rf(){return Re().memoizedState}function sf(a,b,c){var d=zd(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};tf(a)?uf(b,c):(vf(a,b,c),c=H(),a=Ad(a,d,c),null!==a&&wf(a,b,d))}\nfunction df(a,b,c){var d=zd(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(tf(a))uf(b,e);else{vf(a,b,e);var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(Rc(h,g))return}catch(k){}finally{}c=H();a=Ad(a,d,c);null!==a&&wf(a,b,d)}}function tf(a){var b=a.alternate;return a===K||null!==b&&b===K}\nfunction uf(a,b){Ge=Fe=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function vf(a,b,c){null!==F&&0!==(a.mode&1)&&0===(G&2)?(a=b.interleaved,null===a?(c.next=c,null===md?md=[b]:md.push(b)):(c.next=a.next,a.next=c),b.interleaved=c):(a=b.pending,null===a?c.next=c:(c.next=a.next,a.next=c),b.pending=c)}function wf(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Dc(a,c)}}\nvar Oe={readContext:ld,useCallback:O,useContext:O,useEffect:O,useImperativeHandle:O,useInsertionEffect:O,useLayoutEffect:O,useMemo:O,useReducer:O,useRef:O,useState:O,useDebugValue:O,useDeferredValue:O,useTransition:O,useMutableSource:O,useSyncExternalStore:O,useId:O,unstable_isNewReconciler:!1},Le={readContext:ld,useCallback:function(a,b){Qe().memoizedState=[a,void 0===b?null:b];return a},useContext:ld,useEffect:hf,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ff(4194308,\n4,lf.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ff(4194308,4,a,b)},useInsertionEffect:function(a,b){return ff(4,2,a,b)},useMemo:function(a,b){var c=Qe();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Qe();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=sf.bind(null,K,a);return[d.memoizedState,a]},useRef:function(a){var b=\nQe();a={current:a};return b.memoizedState=a},useState:cf,useDebugValue:nf,useDeferredValue:function(a){var b=cf(a),c=b[0],d=b[1];hf(function(){var b=De.transition;De.transition={};try{d(a)}finally{De.transition=b}},[a]);return c},useTransition:function(){var a=cf(!1),b=a[0];a=qf.bind(null,a[1]);Qe().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=K,e=Qe();if(I){if(void 0===c)throw Error(n(407));c=c()}else{c=b();if(null===F)throw Error(n(349));\n0!==(Ee&30)||af(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;hf(Ye.bind(null,d,f,a),[a]);d.flags|=2048;Ze(9,$e.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Qe(),b=F.identifierPrefix;if(I){var c=Od;var d=Nd;c=(d&~(1<<32-qc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=He++;0Uf&&(b.flags|=128,d=!0,Qf(e,!1),b.lanes=4194304)}else{if(!d)if(a=ze(f),null!==a){if(b.flags|=128,d=!0,a=a.updateQueue,null!==a&&(b.updateQueue=a,b.flags|=4),Qf(e,!0),null===e.tail&&\"hidden\"===e.tailMode&&!f.alternate&&!I)return P(b),null}else 2*E()-e.renderingStartTime>Uf&&1073741824!==c&&(b.flags|=128,d=!0,Qf(e,!1),b.lanes=4194304);e.isBackwards?(f.sibling=b.child,b.child=f):(a=e.last,null!==a?a.sibling=f:b.child=f,e.last=f)}if(null!==\ne.tail)return b=e.tail,e.rendering=b,e.tail=b.sibling,e.renderingStartTime=E(),b.sibling=null,a=J.current,y(J,d?a&1|2:a&1),b;P(b);return null;case 22:case 23:return Vf(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(Wf&1073741824)&&(P(b),Ua&&b.subtreeFlags&6&&(b.flags|=8192)):P(b),null;case 24:return null;case 25:return null}throw Error(n(156,b.tag));}var Xf=ea.ReactCurrentOwner,kd=!1;\nfunction R(a,b,c,d){b.child=null===a?pe(b,null,c,d):oe(b,a.child,c,d)}function Yf(a,b,c,d,e){c=c.render;var f=b.ref;jd(b,e);d=Ke(a,b,c,d,f,e);c=Pe();if(null!==a&&!kd)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zf(a,b,e);I&&c&&Rd(b);b.flags|=1;R(a,b,d,e);return b.child}\nfunction $f(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!ag(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bg(a,b,f,d,e);a=le(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Zc;if(c(g,d)&&a.ref===b.ref)return Zf(a,b,e)}b.flags|=1;a=je(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bg(a,b,c,d,e){if(null!==a&&Zc(a.memoizedProps,d)&&a.ref===b.ref)if(kd=!1,0!==(a.lanes&e))0!==(a.flags&131072)&&(kd=!0);else return b.lanes=a.lanes,Zf(a,b,e);return cg(a,b,c,d,e)}\nfunction dg(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null},y(eg,Wf),Wf|=c;else if(0!==(c&1073741824))b.memoizedState={baseLanes:0,cachePool:null},d=null!==f?f.baseLanes:c,y(eg,Wf),Wf|=d;else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null},b.updateQueue=null,y(eg,Wf),Wf|=a,null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):\nd=c,y(eg,Wf),Wf|=d;R(a,b,e,c);return b.child}function fg(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cg(a,b,c,d,e){var f=C(c)?ic:A.current;f=jc(b,f);jd(b,e);c=Ke(a,b,c,d,f,e);d=Pe();if(null!==a&&!kd)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zf(a,b,e);I&&d&&Rd(b);b.flags|=1;R(a,b,c,e);return b.child}\nfunction gg(a,b,c,d,e){if(C(c)){var f=!0;nc(b)}else f=!1;jd(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Dd(b,c,d),Fd(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=ld(l):(l=C(c)?ic:A.current,l=jc(b,l));var m=c.getDerivedStateFromProps,v=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;v||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==\ntypeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ed(b,g,d,l);nd=!1;var r=b.memoizedState;g.state=r;ud(b,d,g,e);k=b.memoizedState;h!==d||r!==k||B.current||nd?(\"function\"===typeof m&&(yd(b,c,m,d),k=b.memoizedState),(h=nd||Cd(b,c,h,d,r,k,l))?(v||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&\n(b.flags|=4194308)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;pd(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:ad(b.type,h);g.props=l;v=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=ld(k):(k=C(c)?ic:A.current,k=jc(b,k));var z=c.getDerivedStateFromProps;(m=\"function\"===typeof z||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==v||r!==k)&&Ed(b,g,d,k);nd=!1;r=b.memoizedState;g.state=r;ud(b,d,g,e);var q=b.memoizedState;h!==v||r!==q||B.current||nd?(\"function\"===typeof z&&(yd(b,c,z,d),q=b.memoizedState),(l=nd||Cd(b,c,l,d,r,q,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nq,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,q,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=q),g.props=d,g.state=q,g.context=k,d=l):(\"function\"!==\ntypeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return hg(a,b,c,d,f,e)}\nfunction hg(a,b,c,d,e,f){fg(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&oc(b,c,!1),Zf(a,b,f);d=b.stateNode;Xf.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=oe(b,a.child,null,f),b.child=oe(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&oc(b,c,!0);return b.child}function ig(a){var b=a.stateNode;b.pendingContext?lc(a,b.pendingContext,b.pendingContext!==b.context):b.context&&lc(a,b.context,!1);ve(a,b.containerInfo)}\nfunction jg(a,b,c,d,e){de();ee(e);b.flags|=256;R(a,b,c,d);return b.child}var kg={dehydrated:null,treeContext:null,retryLane:0};function lg(a){return{baseLanes:a,cachePool:null}}\nfunction mg(a,b,c){var d=b.pendingProps,e=J.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;y(J,e&1);if(null===a){ae(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:Jb(a)?b.lanes=8:b.lanes=1073741824,null;e=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,e={mode:\"hidden\",children:e},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=e):\nf=ng(e,d,0,null),a=ne(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=lg(c),b.memoizedState=kg,a):og(b,e)}e=a.memoizedState;if(null!==e){h=e.dehydrated;if(null!==h){if(g){if(b.flags&256)return b.flags&=-257,pg(a,b,c,Error(n(422)));if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=ng({mode:\"visible\",children:d.children},e,0,null);f=ne(f,e,c,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&oe(b,a.child,\nnull,c);b.child.memoizedState=lg(c);b.memoizedState=kg;return f}if(0===(b.mode&1))b=pg(a,b,c,null);else if(Jb(h))b=pg(a,b,c,Error(n(419)));else if(d=0!==(c&a.childLanes),kd||d){d=F;if(null!==d){switch(c&-c){case 4:f=2;break;case 16:f=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:f=32;break;case 536870912:f=\n268435456;break;default:f=0}d=0!==(f&(d.suspendedLanes|c))?0:f;0!==d&&d!==e.retryLane&&(e.retryLane=d,Ad(a,d,-1))}Tf();b=pg(a,b,c,Error(n(421)))}else Ib(h)?(b.flags|=128,b.child=a.child,b=qg.bind(null,a),Kb(h,b),b=null):(c=e.treeContext,p&&(Ud=Ob(h),Td=b,I=!0,Wd=null,Vd=!1,null!==c&&(Kd[Ld++]=Nd,Kd[Ld++]=Od,Kd[Ld++]=Md,Nd=c.id,Od=c.overflow,Md=b)),b=og(b,b.pendingProps.children),b.flags|=4096);return b}if(f)return d=rg(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=\nnull===e?lg(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kg,d;c=sg(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=rg(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?lg(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kg,d;c=sg(a,b,d.children,c);b.memoizedState=null;return c}\nfunction og(a,b){b=ng({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sg(a,b,c,d){var e=a.child;a=e.sibling;c=je(e,{mode:\"visible\",children:c});0===(b.mode&1)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(d=b.deletions,null===d?(b.deletions=[a],b.flags|=16):d.push(a));return b.child=c}\nfunction rg(a,b,c,d,e){var f=b.mode;a=a.child;var g=a.sibling,h={mode:\"hidden\",children:c};0===(f&1)&&b.child!==a?(c=b.child,c.childLanes=0,c.pendingProps=h,b.deletions=null):(c=je(a,h),c.subtreeFlags=a.subtreeFlags&14680064);null!==g?d=je(g,d):(d=ne(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function pg(a,b,c,d){null!==d&&ee(d);oe(b,a.child,null,c);a=og(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction tg(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);id(a.return,b,c)}function ug(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction vg(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=J.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&tg(a,c,b);else if(19===a.tag)tg(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}y(J,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ze(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);ug(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ze(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}ug(b,!0,c,null,f);break;case \"together\":ug(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction Zf(a,b,c){null!==a&&(b.dependencies=a.dependencies);vd|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(n(153));if(null!==b.child){a=b.child;c=je(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=je(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction wg(a,b,c){switch(b.tag){case 3:ig(b);de();break;case 5:xe(b);break;case 1:C(b.type)&&nc(b);break;case 4:ve(b,b.stateNode.containerInfo);break;case 10:gd(b,b.type._context,b.memoizedProps.value);break;case 13:var d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return y(J,J.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return mg(a,b,c);y(J,J.current&1);a=Zf(a,b,c);return null!==a?a.sibling:null}y(J,J.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&128)){if(d)return vg(a,\nb,c);b.flags|=128}var e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);y(J,J.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dg(a,b,c)}return Zf(a,b,c)}\nfunction xg(a,b){Sd(b);switch(b.tag){case 1:return C(b.type)&&kc(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return we(),x(B),x(A),Be(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return ye(b),null;case 13:x(J);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(n(340));de()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return x(J),null;case 4:return we(),null;case 10:return hd(b.type._context),null;case 22:case 23:return Vf(),\nnull;case 24:return null;default:return null}}var yg=!1,zg=!1,Ag=\"function\"===typeof WeakSet?WeakSet:Set,S=null;function Bg(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){T(a,b,d)}else c.current=null}function Cg(a,b,c){try{c()}catch(d){T(a,b,d)}}var Dg=!1;\nfunction Eg(a,b){Ia(a.containerInfo);for(S=b;null!==S;)if(a=S,b=a.child,0!==(a.subtreeFlags&1028)&&null!==b)b.return=a,S=b;else for(;null!==S;){a=S;try{var c=a.alternate;if(0!==(a.flags&1024))switch(a.tag){case 0:case 11:case 15:break;case 1:if(null!==c){var d=c.memoizedProps,e=c.memoizedState,f=a.stateNode,g=f.getSnapshotBeforeUpdate(a.elementType===a.type?d:ad(a.type,d),e);f.__reactInternalSnapshotBeforeUpdate=g}break;case 3:Ua&&xb(a.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;\ndefault:throw Error(n(163));}}catch(h){T(a,a.return,h)}b=a.sibling;if(null!==b){b.return=a.return;S=b;break}S=a.return}c=Dg;Dg=!1;return c}function Fg(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Cg(b,c,f)}e=e.next}while(e!==d)}}function Gg(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Hg(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=Fa(c);break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Ig(a,b,c){if(Oc&&\"function\"===typeof Oc.onCommitFiberUnmount)try{Oc.onCommitFiberUnmount(Nc,b)}catch(g){}switch(b.tag){case 0:case 11:case 14:case 15:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a=a.next;do{var e=d,f=e.destroy;e=e.tag;void 0!==f&&(0!==(e&2)?Cg(b,c,f):0!==(e&4)&&Cg(b,c,f));d=d.next}while(d!==a)}break;case 1:Bg(b,c);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(g){T(b,\nc,g)}break;case 5:Bg(b,c);break;case 4:Ua?Jg(a,b,c):Va&&Va&&(b=b.stateNode.containerInfo,c=zb(b),Cb(b,c))}}function Kg(a,b,c){for(var d=b;;)if(Ig(a,d,c),null===d.child||Ua&&4===d.tag){if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return}d.sibling.return=d.return;d=d.sibling}else d.child.return=d,d=d.child}\nfunction Lg(a){var b=a.alternate;null!==b&&(a.alternate=null,Lg(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&Za(b));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Mg(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Ng(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Mg(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Og(a){if(Ua){a:{for(var b=a.return;null!==b;){if(Mg(b))break a;b=b.return}throw Error(n(160));}var c=b;switch(c.tag){case 5:b=c.stateNode;c.flags&32&&(sb(b),c.flags&=-33);c=Ng(a);Pg(a,c,b);break;case 3:case 4:b=c.stateNode.containerInfo;c=Ng(a);Qg(a,c,b);break;default:throw Error(n(161));}}}function Qg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?pb(c,a,b):kb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Qg(a,b,c),a=a.sibling;null!==a;)Qg(a,b,c),a=a.sibling}\nfunction Pg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?ob(c,a,b):jb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Pg(a,b,c),a=a.sibling;null!==a;)Pg(a,b,c),a=a.sibling}\nfunction Jg(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(n(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag)Kg(a,d,c),g?rb(f,d.stateNode):qb(f,d.stateNode);else if(18===d.tag)g?Wb(f,d.stateNode):Vb(f,d.stateNode);else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ig(a,d,c),null!==\nd.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Rg(a,b){if(Ua){switch(b.tag){case 0:case 11:case 14:case 15:Fg(3,b,b.return);Gg(3,b);Fg(5,b,b.return);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&nb(c,f,e,a,d,b)}return;case 6:if(null===b.stateNode)throw Error(n(162));c=b.memoizedProps;lb(b.stateNode,null!==a?a.memoizedProps:c,c);return;case 3:p&&null!==a&&a.memoizedState.isDehydrated&&Tb(b.stateNode.containerInfo);return;\ncase 12:return;case 13:Sg(b);return;case 19:Sg(b);return;case 17:return}throw Error(n(163));}switch(b.tag){case 0:case 11:case 14:case 15:Fg(3,b,b.return);Gg(3,b);Fg(5,b,b.return);return;case 12:return;case 13:Sg(b);return;case 19:Sg(b);return;case 3:p&&null!==a&&a.memoizedState.isDehydrated&&Tb(b.stateNode.containerInfo);break;case 22:case 23:return}a:if(Va){switch(b.tag){case 1:case 5:case 6:break a;case 3:case 4:b=b.stateNode;Cb(b.containerInfo,b.pendingChildren);break a}throw Error(n(163));}}\nfunction Sg(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ag);b.forEach(function(b){var d=Tg.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction Ug(a,b){for(S=b;null!==S;){b=S;var c=b.deletions;if(null!==c)for(var d=0;d\";case bh:return\":has(\"+(ih(a)||\"\")+\")\";case ch:return'[role=\"'+a.value+'\"]';case eh:return'\"'+a.value+'\"';case dh:return'[data-testname=\"'+a.value+'\"]';default:throw Error(n(365));}}\nfunction jh(a,b){var c=[];a=[a,0];for(var d=0;de&&(e=g);d&=~f}d=e;d=E()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lh(d/1960))-d;if(10a?16:a;if(null===uh)var d=!1;else{a=uh;uh=null;vh=0;if(0!==(G&6))throw Error(n(331));var e=G;G|=4;for(S=a.current;null!==S;){var f=S,g=f.child;if(0!==(S.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kE()-Vg?Ih(a,0):qh|=c);Z(a,b)}function Vh(a,b){0===b&&(0===(a.mode&1)?b=1:(b=uc,uc<<=1,0===(uc&130023424)&&(uc=4194304)));var c=H();a=Ah(a,b);null!==a&&(Bc(a,b,c),Z(a,c))}function qg(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Vh(a,c)}\nfunction Tg(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(n(314));}null!==d&&d.delete(b);Vh(a,c)}var Sh;\nSh=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||B.current)kd=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return kd=!1,wg(a,b,c);kd=0!==(a.flags&131072)?!0:!1}else kd=!1,I&&0!==(b.flags&1048576)&&Qd(b,Jd,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;var e=jc(b,A.current);jd(b,c);e=Ke(null,b,d,a,e,c);var f=Pe();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?\n(b.tag=1,b.memoizedState=null,b.updateQueue=null,C(d)?(f=!0,nc(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,od(b),e.updater=Bd,b.stateNode=e,e._reactInternals=b,Fd(b,d,a,c),b=hg(null,b,d,!0,f,c)):(b.tag=0,I&&f&&Rd(b),R(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Wh(d);a=ad(d,a);switch(e){case 0:b=cg(null,b,d,a,c);break a;case 1:b=gg(null,b,d,\na,c);break a;case 11:b=Yf(null,b,d,a,c);break a;case 14:b=$f(null,b,d,ad(d.type,a),c);break a}throw Error(n(306,d,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),cg(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),gg(a,b,d,e,c);case 3:a:{ig(b);if(null===a)throw Error(n(387));d=b.pendingProps;f=b.memoizedState;e=f.element;pd(a,b);ud(b,d,null,c);var g=b.memoizedState;d=g.element;if(p&&f.isDehydrated)if(f={element:d,isDehydrated:!1,\ncache:g.cache,transitions:g.transitions},b.updateQueue.baseState=f,b.memoizedState=f,b.flags&256){e=Error(n(423));b=jg(a,b,d,c,e);break a}else if(d!==e){e=Error(n(424));b=jg(a,b,d,c,e);break a}else for(p&&(Ud=Nb(b.stateNode.containerInfo),Td=b,I=!0,Wd=null,Vd=!1),c=pe(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{de();if(d===e){b=Zf(a,b,c);break a}R(a,b,d,c)}b=b.child}return b;case 5:return xe(b),null===a&&ae(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,\nOa(d,e)?g=null:null!==f&&Oa(d,f)&&(b.flags|=32),fg(a,b),R(a,b,g,c),b.child;case 6:return null===a&&ae(b),null;case 13:return mg(a,b,c);case 4:return ve(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=oe(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),Yf(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,b,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=\nb.type._context;e=b.pendingProps;f=b.memoizedProps;g=e.value;gd(b,d,g);if(null!==f)if(Rc(f.value,g)){if(f.children===e.children&&!B.current){b=Zf(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=qd(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=\nc);id(f.return,c,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(n(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);id(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,jd(b,c),e=ld(e),d=d(e),b.flags|=\n1,R(a,b,d,c),b.child;case 14:return d=b.type,e=ad(d,b.pendingProps),e=ad(d.type,e),$f(a,b,d,e,c);case 15:return bg(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,C(d)?(a=!0,nc(b)):a=!1,jd(b,c),Dd(b,d,e),Fd(b,d,e,c),hg(null,b,d,!0,a,c);case 19:return vg(a,b,c);case 22:return dg(a,b,c)}throw Error(n(156,b.tag));};function Dh(a,b){return Fc(a,b)}\nfunction Xh(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Yd(a,b,c,d){return new Xh(a,b,c,d)}function ag(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Wh(a){if(\"function\"===typeof a)return ag(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===na)return 11;if(a===qa)return 14}return 2}\nfunction je(a,b){var c=a.alternate;null===c?(c=Yd(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction le(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ag(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ia:return ne(c.children,e,f,b);case ja:g=8;e|=8;break;case ka:return a=Yd(12,c,b,e|2),a.elementType=ka,a.lanes=f,a;case oa:return a=Yd(13,c,b,e),a.elementType=oa,a.lanes=f,a;case pa:return a=Yd(19,c,b,e),a.elementType=pa,a.lanes=f,a;case sa:return ng(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case la:g=10;break a;case ma:g=9;break a;case na:g=11;\nbreak a;case qa:g=14;break a;case ra:g=16;d=null;break a}throw Error(n(130,null==a?a:typeof a,\"\"));}b=Yd(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function ne(a,b,c,d){a=Yd(7,a,d,b);a.lanes=c;return a}function ng(a,b,c,d){a=Yd(22,a,d,b);a.elementType=sa;a.lanes=c;a.stateNode={};return a}function ke(a,b,c){a=Yd(6,a,null,b);a.lanes=c;return a}\nfunction me(a,b,c){b=Yd(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction Yh(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=Sa;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=Ac(0);this.expirationTimes=Ac(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Ac(0);this.identifierPrefix=d;this.onRecoverableError=e;p&&(this.mutableSourceEagerHydrationData=\nnull)}function Zh(a,b,c,d,e,f,g,h,k){a=new Yh(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Yd(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null};od(f);return a}\nfunction $h(a){if(!a)return hc;a=a._reactInternals;a:{if(ya(a)!==a||1!==a.tag)throw Error(n(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(C(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(n(171));}if(1===a.tag){var c=a.type;if(C(c))return mc(a,c,b)}return b}\nfunction ai(a){var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(n(188));a=Object.keys(a).join(\",\");throw Error(n(268,a));}a=Ba(b);return null===a?null:a.stateNode}function bi(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c=l&&f>=v&&e<=m&&g<=r){a.splice(b,1);break}else if(!(d!==l||c.width!==k.width||rg)){v>f&&(k.height+=v-f,k.y=f);re)){l>d&&(k.width+=\nl-d,k.x=d);mc&&(c=g)),g \")+\"\\n\\nNo matching component was found for:\\n \")+a.join(\" > \")}return null};\nexports.getPublicRootInstance=function(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return Fa(a.child.stateNode);default:return a.child.stateNode}};\nexports.injectIntoDevTools=function(a){a={bundleType:a.bundleType,version:a.version,rendererPackageName:a.rendererPackageName,rendererConfig:a.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ea.ReactCurrentDispatcher,findHostInstanceByFiber:di,findFiberByHostInstance:a.findFiberByHostInstance||\nei,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.0.0-fc46dba67-20220329\"};if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)a=!1;else{var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)a=!0;else{try{Nc=b.inject(a),Oc=b}catch(c){}a=b.checkDCE?!0:!1}}return a};exports.isAlreadyRendering=function(){return!1};\nexports.observeVisibleRects=function(a,b,c,d){if(!bb)throw Error(n(363));a=kh(a,b);var e=ib(a,c,d).disconnect;return{disconnect:function(){e()}}};exports.registerMutableSourceForHydration=function(a,b){var c=b._getVersion;c=c(b._source);null==a.mutableSourceEagerHydrationData?a.mutableSourceEagerHydrationData=[b,c]:a.mutableSourceEagerHydrationData.push(b,c)};exports.runWithPriority=function(a,b){var c=D;try{return D=a,b()}finally{D=c}};exports.shouldError=function(){return null};\nexports.shouldSuspend=function(){return!1};exports.updateContainer=function(a,b,c,d){var e=b.current,f=H(),g=zd(e);c=$h(c);null===b.context?b.context=c:b.pendingContext=c;b=qd(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);rd(e,b);a=Ad(e,g,f);null!==a&&sd(a,e,g);return g};\n\n return exports;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-reconciler-constants.production.min.js');\n} else {\n module.exports = require('./cjs/react-reconciler-constants.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-reconciler.production.min.js');\n} else {\n module.exports = require('./cjs/react-reconciler.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","/* UAParser.js v1.0.37\n Copyright © 2012-2021 Faisal Salman \n MIT License */\n(function(window,undefined){\"use strict\";var LIBVERSION=\"1.0.37\",EMPTY=\"\",UNKNOWN=\"?\",FUNC_TYPE=\"function\",UNDEF_TYPE=\"undefined\",OBJ_TYPE=\"object\",STR_TYPE=\"string\",MAJOR=\"major\",MODEL=\"model\",NAME=\"name\",TYPE=\"type\",VENDOR=\"vendor\",VERSION=\"version\",ARCHITECTURE=\"architecture\",CONSOLE=\"console\",MOBILE=\"mobile\",TABLET=\"tablet\",SMARTTV=\"smarttv\",WEARABLE=\"wearable\",EMBEDDED=\"embedded\",UA_MAX_LENGTH=500;var AMAZON=\"Amazon\",APPLE=\"Apple\",ASUS=\"ASUS\",BLACKBERRY=\"BlackBerry\",BROWSER=\"Browser\",CHROME=\"Chrome\",EDGE=\"Edge\",FIREFOX=\"Firefox\",GOOGLE=\"Google\",HUAWEI=\"Huawei\",LG=\"LG\",MICROSOFT=\"Microsoft\",MOTOROLA=\"Motorola\",OPERA=\"Opera\",SAMSUNG=\"Samsung\",SHARP=\"Sharp\",SONY=\"Sony\",XIAOMI=\"Xiaomi\",ZEBRA=\"Zebra\",FACEBOOK=\"Facebook\",CHROMIUM_OS=\"Chromium OS\",MAC_OS=\"Mac OS\";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j2){_device[MODEL]=\"iPad\";_device[TYPE]=TABLET}return _device};this.getEngine=function(){var _engine={};_engine[NAME]=undefined;_engine[VERSION]=undefined;rgxMapper.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={};_os[NAME]=undefined;_os[VERSION]=undefined;rgxMapper.call(_os,_ua,_rgxmap.os);if(_isSelfNav&&!_os[NAME]&&_uach&&_uach.platform!=\"Unknown\"){_os[NAME]=_uach.platform.replace(/chrome os/i,CHROMIUM_OS).replace(/macos/i,MAC_OS)}return _os};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);if(typeof exports!==UNDEF_TYPE){if(typeof module!==UNDEF_TYPE&&module.exports){exports=module.exports=UAParser}exports.UAParser=UAParser}else{if(typeof define===FUNC_TYPE&&define.amd){define(function(){return UAParser})}else if(typeof window!==UNDEF_TYPE){window.UAParser=UAParser}}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop]}}}})(typeof window===\"object\"?window:this);","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var defineProperty = require(\"./defineProperty.js\");\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n return ContinueSentinel;\n }\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) {\n keys.push(key);\n }\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + \"reactPlayerPreview\" + \".\" + \"c7e5b4a3\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"stratum-configurator:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkstratum_configurator\"] = self[\"webpackChunkstratum_configurator\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => DataFunctionReturnValue\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n fetcherKey: string | null;\n}\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface DataStrategyResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise>;\n}\n\nexport interface AgnosticPatchRoutesOnNavigationFunction<\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> {\n (opts: {\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: AgnosticRouteObject[]) => void;\n }): void | Promise;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename: string,\n allowPartial: boolean\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string,\n allowPartial = false\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nexport function decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport class DataWithResponseInit {\n type: string = \"DataWithResponseInit\";\n data: D;\n init: ResponseInit | null;\n\n constructor(data: D, init?: ResponseInit) {\n this.data = data;\n this.init = init || null;\n }\n}\n\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nexport function data(data: D, init?: number | ResponseInit) {\n return new DataWithResponseInit(\n data,\n typeof init === \"number\" ? { status: init } : init\n );\n}\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const replace: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n DataStrategyResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n AgnosticPatchRoutesOnNavigationFunction,\n DataWithResponseInit,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n matchRoutesImpl,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE DO NOT USE\n *\n * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n v7_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n unstable_patchRoutesOnNavigation?: AgnosticPatchRoutesOnNavigationFunction;\n unstable_dataStrategy?: DataStrategyFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.unstable_dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.unstable_patchRoutesOnNavigation;\n\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // FIFO queue of previously discovered routes to prevent re-calling on\n // subsequent navigations to the same path\n let discoveredRoutesMaxSize = 1000;\n let discoveredRoutes = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (\n typeof m.route.loader === \"function\" &&\n m.route.loader.hydrate === true\n ) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return (\n (loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined)\n );\n };\n\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: Set = new Set();\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Map of pending patchRoutesOnNavigation() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType\n >();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let unblockBlockerHistoryUpdate: (() => void) | undefined = undefined;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = undefined;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n let nextHistoryUpdatePromise = new Promise((resolve) => {\n unblockBlockerHistoryUpdate = resolve;\n });\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked, after the url\n // restoration is also complete. See:\n // https://github.com/remix-run/react-router/issues/11613\n nextHistoryUpdatePromise.then(() => init.history.go(delta));\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true,\n }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let { boundaryId, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n state,\n request,\n [actionMatch],\n matches,\n null\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, true, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let { boundaryId, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n if (shouldUpdateNavigationState) {\n let updates: Partial = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors)\n .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n .forEach(([routeId, error]) => {\n errors = Object.assign(errors || {}, { [routeId]: error });\n });\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): Record | null | undefined {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n state,\n fetchRequest,\n [match],\n requestMatches,\n key\n );\n let actionResult = actionResults[match.route.id];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, false, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false\n );\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false\n );\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n state,\n fetchRequest,\n [match],\n matches,\n key\n );\n let result = results[match.route.id];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result, false);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n isNavigation: boolean,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true || redirect.response.headers.has(\"X-Remix-Replace\")\n ? HistoryAction.Replace\n : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve these flags across redirects\n preventScrollReset: pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve these flags across redirects\n preventScrollReset: pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n state: RouterState,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null\n ): Promise> {\n let results: Record;\n let dataResults: Record = {};\n try {\n results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n state,\n request,\n matchesToLoad,\n matches,\n fetcherKey,\n manifest,\n mapRouteProperties\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n matchesToLoad.forEach((m) => {\n dataResults[m.route.id] = {\n type: ResultType.error,\n error: e,\n };\n });\n return dataResults;\n }\n\n for (let [routeId, result] of Object.entries(results)) {\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n dataResults[routeId] = {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n routeId,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n } else {\n dataResults[routeId] = await convertDataStrategyResultToDataResult(\n result\n );\n }\n }\n\n return dataResults;\n }\n\n async function callLoadersAndMaybeResolveData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let currentMatches = state.matches;\n\n // Kick off loaders and fetchers in parallel\n let loaderResultsPromise = callDataStrategy(\n \"loader\",\n state,\n request,\n matchesToLoad,\n matches,\n null\n );\n\n let fetcherResultsPromise = Promise.all(\n fetchersToLoad.map(async (f) => {\n if (f.matches && f.match && f.controller) {\n let results = await callDataStrategy(\n \"loader\",\n state,\n createClientSideRequest(init.history, f.path, f.controller.signal),\n [f.match],\n f.matches,\n f.key\n );\n let result = results[f.match.route.id];\n // Fetcher results are keyed by fetcher key from here on out, not routeId\n return { [f.key]: result };\n } else {\n return Promise.resolve({\n [f.key]: {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n } as ErrorResult,\n });\n }\n })\n );\n\n let loaderResults = await loaderResultsPromise;\n let fetcherResults = (await fetcherResultsPromise).reduce(\n (acc, r) => Object.assign(acc, r),\n {}\n );\n\n await Promise.all([\n resolveNavigationDeferredResults(\n matches,\n loaderResults,\n request.signal,\n currentMatches,\n state.loaderData\n ),\n resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\n }\n\n function handleDiscoverRouteError(\n pathname: string,\n discoverResult: DiscoverRoutesErrorResult\n ) {\n return {\n boundaryId: findNearestBoundary(discoverResult.partialMatches).route.id,\n error: getInternalRouterError(400, {\n type: \"route-discovery\",\n pathname,\n message:\n discoverResult.error != null && \"message\" in discoverResult.error\n ? discoverResult.error\n : String(discoverResult.error),\n }),\n };\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnNavigationImpl) {\n // Don't bother re-calling patchRouteOnMiss for a path we've already\n // processed. the last execution would have patched the route tree\n // accordingly so `matches` here are already accurate.\n if (discoveredRoutes.has(pathname)) {\n return { active: false, matches };\n }\n\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal\n ): Promise {\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n try {\n await loadLazyRouteChildren(\n patchRoutesOnNavigationImpl!,\n pathname,\n partialMatches,\n routesToUse,\n manifest,\n mapRouteProperties,\n pendingPatchRoutes,\n signal\n );\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n addToFifoQueue(pathname, discoveredRoutes);\n return { type: \"success\", matches: newMatches };\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // Avoid loops if the second pass results in the same partial matches\n if (\n !newPartialMatches ||\n (partialMatches.length === newPartialMatches.length &&\n partialMatches.every(\n (m, i) => m.route.id === newPartialMatches![i].route.id\n ))\n ) {\n addToFifoQueue(pathname, discoveredRoutes);\n return { type: \"success\", matches: null };\n }\n\n partialMatches = newPartialMatches;\n }\n }\n\n function addToFifoQueue(path: string, queue: Set) {\n if (queue.size >= discoveredRoutesMaxSize) {\n let first = queue.values().next().value;\n queue.delete(first);\n }\n queue.add(path);\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `DataStrategyResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isDataStrategyResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null\n ): Promise> {\n let results = await callDataStrategyImpl(\n unstable_dataStrategy || defaultDataStrategy,\n type,\n null,\n request,\n matchesToLoad,\n matches,\n null,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n let dataResults: Record = {};\n await Promise.all(\n matches.map(async (match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let result = results[match.route.id];\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n match.route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n dataResults[match.route.id] =\n await convertDataStrategyResultToDataResult(result);\n })\n );\n return dataResults;\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: Set,\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[0]\n : undefined;\n let boundaryMatches = boundaryId\n ? getLoaderMatchesUntilBoundary(matches, boundaryId)\n : matches;\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Idempotent utility to execute patchRoutesOnNavigation() to lazily load route\n * definitions and update the routes/routeManifest\n */\nasync function loadLazyRouteChildren(\n patchRoutesOnNavigationImpl: AgnosticPatchRoutesOnNavigationFunction,\n path: string,\n matches: AgnosticDataRouteMatch[],\n routes: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n pendingRouteChildren: Map<\n string,\n ReturnType\n >,\n signal: AbortSignal\n) {\n let key = [path, ...matches.map((m) => m.route.id)].join(\"-\");\n try {\n let pending = pendingRouteChildren.get(key);\n if (!pending) {\n pending = patchRoutesOnNavigationImpl({\n path,\n matches,\n patch: (routeId, children) => {\n if (!signal.aborted) {\n patchRoutesImpl(\n routeId,\n children,\n routes,\n manifest,\n mapRouteProperties\n );\n }\n },\n });\n pendingRouteChildren.set(key, pending);\n }\n\n if (pending && isPromise(pending)) {\n await pending;\n }\n } finally {\n pendingRouteChildren.delete(key);\n }\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [routeId, \"patch\", String(route.children?.length || \"0\")],\n manifest\n );\n if (route.children) {\n route.children.push(...dataChildren);\n } else {\n route.children = dataChildren;\n }\n } else {\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [\"patch\", String(routesToUse.length || \"0\")],\n manifest\n );\n routesToUse.push(...dataChildren);\n }\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nasync function defaultDataStrategy({\n matches,\n}: DataStrategyFunctionArgs): ReturnType {\n let matchesToLoad = matches.filter((m) => m.shouldLoad);\n let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n return results.reduce(\n (acc, result, i) =>\n Object.assign(acc, { [matchesToLoad[i].route.id]: result }),\n {}\n );\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n state: RouterState | null,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise> {\n let loadRouteDefinitionsPromises = matches.map((m) =>\n m.route.lazy\n ? loadLazyRouteModule(m.route, mapRouteProperties, manifest)\n : undefined\n );\n\n let dsMatches = matches.map((match, i) => {\n let loadRoutePromise = loadRouteDefinitionsPromises[i];\n let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);\n // `resolve` encapsulates route.lazy(), executing the loader/action,\n // and mapping return values/thrown errors to a `DataStrategyResult`. Users\n // can pass a callback to take fine-grained control over the execution\n // of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = async (handlerOverride) => {\n if (\n handlerOverride &&\n request.method === \"GET\" &&\n (match.route.lazy || match.route.loader)\n ) {\n shouldLoad = true;\n }\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n loadRoutePromise,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n });\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: dsMatches,\n request,\n params: matches[0].params,\n fetcherKey,\n context: requestContext,\n });\n\n // Wait for all routes to load here but 'swallow the error since we want\n // it to bubble up from the `await loadRoutePromise` in `callLoaderOrAction` -\n // called from `match.resolve()`\n try {\n await Promise.all(loadRouteDefinitionsPromises);\n } catch (e) {\n // No-op\n }\n\n return results;\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n loadRoutePromise: Promise | undefined,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: DataStrategyResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise = (async () => {\n try {\n let val = await (handlerOverride\n ? handlerOverride((ctx: unknown) => actualHandler(ctx))\n : actualHandler());\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n // If we have a route.lazy promise, await that first\n if (loadRoutePromise) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadRoutePromise,\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadRoutePromise;\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // DataStrategyResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertDataStrategyResultToDataResult(\n dataStrategyResult: DataStrategyResult\n): Promise {\n let { result, type } = dataStrategyResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: result.init?.status,\n };\n }\n\n // Convert thrown unstable_data() to ErrorResponse instances\n result = new ErrorResponseImpl(\n result.init?.status || 500,\n undefined,\n result.data\n );\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n if (isDataWithResponseInit(result)) {\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n matches.forEach((match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let id = match.route.id;\n let result = results[id];\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: Record,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n revalidatingFetchers.forEach((rf) => {\n let { key, match, controller } = rf;\n let result = fetcherResults[key];\n invariant(result, \"Did not find corresponding fetcher result\");\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n return;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n });\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\" | \"route-discovery\";\n message?: string;\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (type === \"route-discovery\") {\n errorMessage =\n `Unable to match URL \"${pathname}\" - the \\`unstable_patchRoutesOnNavigation()\\` ` +\n `function threw the following error:\\n${message}`;\n } else if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: Record\n): { key: string; result: RedirectResult } | undefined {\n let entries = Object.entries(results);\n for (let i = entries.length - 1; i >= 0; i--) {\n let [key, result] = entries[i];\n if (isRedirectResult(result)) {\n return { key, result };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isPromise(val: unknown): val is Promise {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isDataStrategyResult(result: unknown): result is DataStrategyResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectDataStrategyResultResult(result: DataStrategyResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDataWithResponseInit(\n value: any\n): value is DataWithResponseInit {\n return (\n typeof value === \"object\" &&\n value != null &&\n \"type\" in value &&\n \"data\" in value &&\n \"init\" in value &&\n value.type === \"DataWithResponseInit\"\n );\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveNavigationDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n signal: AbortSignal,\n currentMatches: AgnosticDataRouteMatch[],\n currentLoaderData: RouteData\n) {\n let entries = Object.entries(results);\n for (let index = 0; index < entries.length; index++) {\n let [routeId, result] = entries[index];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && isRevalidatingLoader) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, false).then((result) => {\n if (result) {\n results[routeId] = result;\n }\n });\n }\n }\n}\n\nasync function resolveFetcherDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n revalidatingFetchers: RevalidatingFetcher[]\n) {\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, routeId, controller } = revalidatingFetchers[index];\n let result = results[key];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n if (isDeferredResult(result)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n invariant(\n controller,\n \"Expected an AbortController for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, controller.signal, true).then(\n (result) => {\n if (result) {\n results[key] = result;\n }\n }\n );\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_decodePath as decodePath,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, decodePath(pathname)),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (!dataRouterState) {\n return null;\n }\n\n if (dataRouterState.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else if (\n future?.v7_partialHydration &&\n parentMatches.length === 0 &&\n !dataRouterState.initialized &&\n dataRouterState.matches.length > 0\n ) {\n // Don't bail if we're initializing with partial hydration and we have\n // router matches. That means we're actively running `patchRoutesOnNavigation`\n // so we should render down the partial matches to the appropriate\n // `HydrateFallback`. We only do this if `parentMatches` is empty so it\n // only impacts the root matches for `RouterProvider` and no descendant\n // ``\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== undefined\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a \n * ```\n * @nocollapse\n * @category styles\n */\n static styles?: CSSResultGroup;\n\n /**\n * The set of properties defined by this class that caused an accessor to be\n * added during `createProperty`.\n * @nocollapse\n */\n private static __reactivePropertyKeys?: Set;\n\n /**\n * Returns a list of attributes corresponding to the registered properties.\n * @nocollapse\n * @category attributes\n */\n static get observedAttributes() {\n // note: piggy backing on this to ensure we're finalized.\n this.finalize();\n const attributes: string[] = [];\n // Use forEach so this works even if for/of loops are compiled to for loops\n // expecting arrays\n this.elementProperties.forEach((v, p) => {\n const attr = this.__attributeNameForProperty(p, v);\n if (attr !== undefined) {\n this.__attributeToPropertyMap.set(attr, p);\n attributes.push(attr);\n }\n });\n return attributes;\n }\n\n /**\n * Creates a property accessor on the element prototype if one does not exist\n * and stores a {@linkcode PropertyDeclaration} for the property with the\n * given options. The property setter calls the property's `hasChanged`\n * property option or uses a strict identity check to determine whether or not\n * to request an update.\n *\n * This method may be overridden to customize properties; however,\n * when doing so, it's important to call `super.createProperty` to ensure\n * the property is setup correctly. This method calls\n * `getPropertyDescriptor` internally to get a descriptor to install.\n * To customize what properties do when they are get or set, override\n * `getPropertyDescriptor`. To customize the options for a property,\n * implement `createProperty` like this:\n *\n * ```ts\n * static createProperty(name, options) {\n * options = Object.assign(options, {myOption: true});\n * super.createProperty(name, options);\n * }\n * ```\n *\n * @nocollapse\n * @category properties\n */\n static createProperty(\n name: PropertyKey,\n options: PropertyDeclaration = defaultPropertyDeclaration\n ) {\n // if this is a state property, force the attribute to false.\n if (options.state) {\n // Cast as any since this is readonly.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (options as any).attribute = false;\n }\n // Note, since this can be called by the `@property` decorator which\n // is called before `finalize`, we ensure finalization has been kicked off.\n this.finalize();\n this.elementProperties.set(name, options);\n // Do not generate an accessor if the prototype already has one, since\n // it would be lost otherwise and that would never be the user's intention;\n // Instead, we expect users to call `requestUpdate` themselves from\n // user-defined accessors. Note that if the super has an accessor we will\n // still overwrite it\n if (!options.noAccessor && !this.prototype.hasOwnProperty(name)) {\n const key = typeof name === 'symbol' ? Symbol() : `__${name}`;\n const descriptor = this.getPropertyDescriptor(name, key, options);\n if (descriptor !== undefined) {\n Object.defineProperty(this.prototype, name, descriptor);\n if (DEV_MODE) {\n // If this class doesn't have its own set, create one and initialize\n // with the values in the set from the nearest ancestor class, if any.\n if (!this.hasOwnProperty('__reactivePropertyKeys')) {\n this.__reactivePropertyKeys = new Set(\n this.__reactivePropertyKeys ?? []\n );\n }\n this.__reactivePropertyKeys!.add(name);\n }\n }\n }\n }\n\n /**\n * Returns a property descriptor to be defined on the given named property.\n * If no descriptor is returned, the property will not become an accessor.\n * For example,\n *\n * ```ts\n * class MyElement extends LitElement {\n * static getPropertyDescriptor(name, key, options) {\n * const defaultDescriptor =\n * super.getPropertyDescriptor(name, key, options);\n * const setter = defaultDescriptor.set;\n * return {\n * get: defaultDescriptor.get,\n * set(value) {\n * setter.call(this, value);\n * // custom action.\n * },\n * configurable: true,\n * enumerable: true\n * }\n * }\n * }\n * ```\n *\n * @nocollapse\n * @category properties\n */\n protected static getPropertyDescriptor(\n name: PropertyKey,\n key: string | symbol,\n options: PropertyDeclaration\n ): PropertyDescriptor | undefined {\n return {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(): any {\n return (this as {[key: string]: unknown})[key as string];\n },\n set(this: ReactiveElement, value: unknown) {\n const oldValue = (this as {} as {[key: string]: unknown})[\n name as string\n ];\n (this as {} as {[key: string]: unknown})[key as string] = value;\n (this as unknown as ReactiveElement).requestUpdate(\n name,\n oldValue,\n options\n );\n },\n configurable: true,\n enumerable: true,\n };\n }\n\n /**\n * Returns the property options associated with the given property.\n * These options are defined with a `PropertyDeclaration` via the `properties`\n * object or the `@property` decorator and are registered in\n * `createProperty(...)`.\n *\n * Note, this method should be considered \"final\" and not overridden. To\n * customize the options for a given property, override\n * {@linkcode createProperty}.\n *\n * @nocollapse\n * @final\n * @category properties\n */\n static getPropertyOptions(name: PropertyKey) {\n return this.elementProperties.get(name) || defaultPropertyDeclaration;\n }\n\n /**\n * Creates property accessors for registered properties, sets up element\n * styling, and ensures any superclasses are also finalized. Returns true if\n * the element was finalized.\n * @nocollapse\n */\n protected static finalize() {\n if (this.hasOwnProperty(finalized)) {\n return false;\n }\n this[finalized] = true;\n // finalize any superclasses\n const superCtor = Object.getPrototypeOf(this) as typeof ReactiveElement;\n superCtor.finalize();\n // Create own set of initializers for this class if any exist on the\n // superclass and copy them down. Note, for a small perf boost, avoid\n // creating initializers unless needed.\n if (superCtor._initializers !== undefined) {\n this._initializers = [...superCtor._initializers];\n }\n this.elementProperties = new Map(superCtor.elementProperties);\n // initialize Map populated in observedAttributes\n this.__attributeToPropertyMap = new Map();\n // make any properties\n // Note, only process \"own\" properties since this element will inherit\n // any properties defined on the superClass, and finalization ensures\n // the entire prototype chain is finalized.\n if (this.hasOwnProperty(JSCompiler_renameProperty('properties', this))) {\n const props = this.properties;\n // support symbols in properties (IE11 does not support this)\n const propKeys = [\n ...Object.getOwnPropertyNames(props),\n ...Object.getOwnPropertySymbols(props),\n ];\n // This for/of is ok because propKeys is an array\n for (const p of propKeys) {\n // note, use of `any` is due to TypeScript lack of support for symbol in\n // index types\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.createProperty(p, (props as any)[p]);\n }\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n // DEV mode warnings\n if (DEV_MODE) {\n const warnRemovedOrRenamed = (name: string, renamed = false) => {\n if (this.prototype.hasOwnProperty(name)) {\n issueWarning(\n renamed ? 'renamed-api' : 'removed-api',\n `\\`${name}\\` is implemented on class ${this.name}. It ` +\n `has been ${renamed ? 'renamed' : 'removed'} ` +\n `in this version of LitElement.`\n );\n }\n };\n warnRemovedOrRenamed('initialize');\n warnRemovedOrRenamed('requestUpdateInternal');\n warnRemovedOrRenamed('_getUpdateComplete', true);\n }\n return true;\n }\n\n /**\n * Options used when calling `attachShadow`. Set this property to customize\n * the options for the shadowRoot; for example, to create a closed\n * shadowRoot: `{mode: 'closed'}`.\n *\n * Note, these options are used in `createRenderRoot`. If this method\n * is customized, options should be respected if possible.\n * @nocollapse\n * @category rendering\n */\n static shadowRootOptions: ShadowRootInit = {mode: 'open'};\n\n /**\n * Takes the styles the user supplied via the `static styles` property and\n * returns the array of styles to apply to the element.\n * Override this method to integrate into a style management system.\n *\n * Styles are deduplicated preserving the _last_ instance in the list. This\n * is a performance optimization to avoid duplicated styles that can occur\n * especially when composing via subclassing. The last item is kept to try\n * to preserve the cascade order with the assumption that it's most important\n * that last added styles override previous styles.\n *\n * @nocollapse\n * @category styles\n */\n protected static finalizeStyles(\n styles?: CSSResultGroup\n ): Array {\n const elementStyles = [];\n if (Array.isArray(styles)) {\n // Dedupe the flattened array in reverse order to preserve the last items.\n // Casting to Array works around TS error that\n // appears to come from trying to flatten a type CSSResultArray.\n const set = new Set((styles as Array).flat(Infinity).reverse());\n // Then preserve original order by adding the set items in reverse order.\n for (const s of set) {\n elementStyles.unshift(getCompatibleStyle(s as CSSResultOrNative));\n }\n } else if (styles !== undefined) {\n elementStyles.push(getCompatibleStyle(styles));\n }\n return elementStyles;\n }\n\n /**\n * Node or ShadowRoot into which element DOM should be rendered. Defaults\n * to an open shadowRoot.\n * @category rendering\n */\n readonly renderRoot!: HTMLElement | ShadowRoot;\n\n /**\n * Returns the property name for the given attribute `name`.\n * @nocollapse\n */\n private static __attributeNameForProperty(\n name: PropertyKey,\n options: PropertyDeclaration\n ) {\n const attribute = options.attribute;\n return attribute === false\n ? undefined\n : typeof attribute === 'string'\n ? attribute\n : typeof name === 'string'\n ? name.toLowerCase()\n : undefined;\n }\n\n private __instanceProperties?: PropertyValues = new Map();\n // Initialize to an unresolved Promise so we can make sure the element has\n // connected before first update.\n private __updatePromise!: Promise;\n\n /**\n * True if there is a pending update as a result of calling `requestUpdate()`.\n * Should only be read.\n * @category updates\n */\n isUpdatePending = false;\n\n /**\n * Is set to `true` after the first update. The element code cannot assume\n * that `renderRoot` exists before the element `hasUpdated`.\n * @category updates\n */\n hasUpdated = false;\n\n /**\n * Map with keys for any properties that have changed since the last\n * update cycle with previous values.\n *\n * @internal\n */\n _$changedProperties!: PropertyValues;\n\n /**\n * Map with keys of properties that should be reflected when updated.\n */\n private __reflectingProperties?: Map;\n\n /**\n * Name of currently reflecting property\n */\n private __reflectingProperty: PropertyKey | null = null;\n\n /**\n * Set of controllers.\n */\n private __controllers?: ReactiveController[];\n\n constructor() {\n super();\n this.__initialize();\n }\n\n /**\n * Internal only override point for customizing work done when elements\n * are constructed.\n */\n private __initialize() {\n this.__updatePromise = new Promise(\n (res) => (this.enableUpdating = res)\n );\n this._$changedProperties = new Map();\n this.__saveInstanceProperties();\n // ensures first update will be caught by an early access of\n // `updateComplete`\n this.requestUpdate();\n (this.constructor as typeof ReactiveElement)._initializers?.forEach((i) =>\n i(this)\n );\n }\n\n /**\n * Registers a `ReactiveController` to participate in the element's reactive\n * update cycle. The element automatically calls into any registered\n * controllers during its lifecycle callbacks.\n *\n * If the element is connected when `addController()` is called, the\n * controller's `hostConnected()` callback will be immediately called.\n * @category controllers\n */\n addController(controller: ReactiveController) {\n (this.__controllers ??= []).push(controller);\n // If a controller is added after the element has been connected,\n // call hostConnected. Note, re-using existence of `renderRoot` here\n // (which is set in connectedCallback) to avoid the need to track a\n // first connected state.\n if (this.renderRoot !== undefined && this.isConnected) {\n controller.hostConnected?.();\n }\n }\n\n /**\n * Removes a `ReactiveController` from the element.\n * @category controllers\n */\n removeController(controller: ReactiveController) {\n // Note, if the indexOf is -1, the >>> will flip the sign which makes the\n // splice do nothing.\n this.__controllers?.splice(this.__controllers.indexOf(controller) >>> 0, 1);\n }\n\n /**\n * Fixes any properties set on the instance before upgrade time.\n * Otherwise these would shadow the accessor and break these properties.\n * The properties are stored in a Map which is played back after the\n * constructor runs. Note, on very old versions of Safari (<=9) or Chrome\n * (<=41), properties created for native platform properties like (`id` or\n * `name`) may not have default values set in the element constructor. On\n * these browsers native properties appear on instances and therefore their\n * default value will overwrite any element default (e.g. if the element sets\n * this.id = 'id' in the constructor, the 'id' will become '' since this is\n * the native platform default).\n */\n private __saveInstanceProperties() {\n // Use forEach so this works even if for/of loops are compiled to for loops\n // expecting arrays\n (this.constructor as typeof ReactiveElement).elementProperties.forEach(\n (_v, p) => {\n if (this.hasOwnProperty(p)) {\n this.__instanceProperties!.set(p, this[p as keyof this]);\n delete this[p as keyof this];\n }\n }\n );\n }\n\n /**\n * Returns the node into which the element should render and by default\n * creates and returns an open shadowRoot. Implement to customize where the\n * element's DOM is rendered. For example, to render into the element's\n * childNodes, return `this`.\n *\n * @return Returns a node into which to render.\n * @category rendering\n */\n protected createRenderRoot(): Element | ShadowRoot {\n const renderRoot =\n this.shadowRoot ??\n this.attachShadow(\n (this.constructor as typeof ReactiveElement).shadowRootOptions\n );\n adoptStyles(\n renderRoot,\n (this.constructor as typeof ReactiveElement).elementStyles\n );\n return renderRoot;\n }\n\n /**\n * On first connection, creates the element's renderRoot, sets up\n * element styling, and enables updating.\n * @category lifecycle\n */\n connectedCallback() {\n // create renderRoot before first update.\n if (this.renderRoot === undefined) {\n (\n this as {\n renderRoot: Element | DocumentFragment;\n }\n ).renderRoot = this.createRenderRoot();\n }\n this.enableUpdating(true);\n this.__controllers?.forEach((c) => c.hostConnected?.());\n }\n\n /**\n * Note, this method should be considered final and not overridden. It is\n * overridden on the element instance with a function that triggers the first\n * update.\n * @category updates\n */\n protected enableUpdating(_requestedUpdate: boolean) {}\n\n /**\n * Allows for `super.disconnectedCallback()` in extensions while\n * reserving the possibility of making non-breaking feature additions\n * when disconnecting at some point in the future.\n * @category lifecycle\n */\n disconnectedCallback() {\n this.__controllers?.forEach((c) => c.hostDisconnected?.());\n }\n\n /**\n * Synchronizes property values when attributes change.\n *\n * Specifically, when an attribute is set, the corresponding property is set.\n * You should rarely need to implement this callback. If this method is\n * overridden, `super.attributeChangedCallback(name, _old, value)` must be\n * called.\n *\n * See [using the lifecycle callbacks](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#using_the_lifecycle_callbacks)\n * on MDN for more information about the `attributeChangedCallback`.\n * @category attributes\n */\n attributeChangedCallback(\n name: string,\n _old: string | null,\n value: string | null\n ) {\n this._$attributeToProperty(name, value);\n }\n\n private __propertyToAttribute(\n name: PropertyKey,\n value: unknown,\n options: PropertyDeclaration = defaultPropertyDeclaration\n ) {\n const attr = (\n this.constructor as typeof ReactiveElement\n ).__attributeNameForProperty(name, options);\n if (attr !== undefined && options.reflect === true) {\n const converter =\n (options.converter as ComplexAttributeConverter)?.toAttribute !==\n undefined\n ? (options.converter as ComplexAttributeConverter)\n : defaultConverter;\n const attrValue = converter.toAttribute!(value, options.type);\n if (\n DEV_MODE &&\n (this.constructor as typeof ReactiveElement).enabledWarnings!.indexOf(\n 'migration'\n ) >= 0 &&\n attrValue === undefined\n ) {\n issueWarning(\n 'undefined-attribute-value',\n `The attribute value for the ${name as string} property is ` +\n `undefined on element ${this.localName}. The attribute will be ` +\n `removed, but in the previous version of \\`ReactiveElement\\`, ` +\n `the attribute would not have changed.`\n );\n }\n // Track if the property is being reflected to avoid\n // setting the property again via `attributeChangedCallback`. Note:\n // 1. this takes advantage of the fact that the callback is synchronous.\n // 2. will behave incorrectly if multiple attributes are in the reaction\n // stack at time of calling. However, since we process attributes\n // in `update` this should not be possible (or an extreme corner case\n // that we'd like to discover).\n // mark state reflecting\n this.__reflectingProperty = name;\n if (attrValue == null) {\n this.removeAttribute(attr);\n } else {\n this.setAttribute(attr, attrValue as string);\n }\n // mark state not reflecting\n this.__reflectingProperty = null;\n }\n }\n\n /** @internal */\n _$attributeToProperty(name: string, value: string | null) {\n const ctor = this.constructor as typeof ReactiveElement;\n // Note, hint this as an `AttributeMap` so closure clearly understands\n // the type; it has issues with tracking types through statics\n const propName = (ctor.__attributeToPropertyMap as AttributeMap).get(name);\n // Use tracking info to avoid reflecting a property value to an attribute\n // if it was just set because the attribute changed.\n if (propName !== undefined && this.__reflectingProperty !== propName) {\n const options = ctor.getPropertyOptions(propName);\n const converter =\n typeof options.converter === 'function'\n ? {fromAttribute: options.converter}\n : options.converter?.fromAttribute !== undefined\n ? options.converter\n : defaultConverter;\n // mark state reflecting\n this.__reflectingProperty = propName;\n this[propName as keyof this] = converter.fromAttribute!(\n value,\n options.type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ) as any;\n // mark state not reflecting\n this.__reflectingProperty = null;\n }\n }\n\n /**\n * Requests an update which is processed asynchronously. This should be called\n * when an element should update based on some state not triggered by setting\n * a reactive property. In this case, pass no arguments. It should also be\n * called when manually implementing a property setter. In this case, pass the\n * property `name` and `oldValue` to ensure that any configured property\n * options are honored.\n *\n * @param name name of requesting property\n * @param oldValue old value of requesting property\n * @param options property options to use instead of the previously\n * configured options\n * @category updates\n */\n requestUpdate(\n name?: PropertyKey,\n oldValue?: unknown,\n options?: PropertyDeclaration\n ): void {\n let shouldRequestUpdate = true;\n // If we have a property key, perform property update steps.\n if (name !== undefined) {\n options =\n options ||\n (this.constructor as typeof ReactiveElement).getPropertyOptions(name);\n const hasChanged = options.hasChanged || notEqual;\n if (hasChanged(this[name as keyof this], oldValue)) {\n if (!this._$changedProperties.has(name)) {\n this._$changedProperties.set(name, oldValue);\n }\n // Add to reflecting properties set.\n // Note, it's important that every change has a chance to add the\n // property to `_reflectingProperties`. This ensures setting\n // attribute + property reflects correctly.\n if (options.reflect === true && this.__reflectingProperty !== name) {\n if (this.__reflectingProperties === undefined) {\n this.__reflectingProperties = new Map();\n }\n this.__reflectingProperties.set(name, options);\n }\n } else {\n // Abort the request if the property should not be considered changed.\n shouldRequestUpdate = false;\n }\n }\n if (!this.isUpdatePending && shouldRequestUpdate) {\n this.__updatePromise = this.__enqueueUpdate();\n }\n // Note, since this no longer returns a promise, in dev mode we return a\n // thenable which warns if it's called.\n return DEV_MODE\n ? (requestUpdateThenable(this.localName) as unknown as void)\n : undefined;\n }\n\n /**\n * Sets up the element to asynchronously update.\n */\n private async __enqueueUpdate() {\n this.isUpdatePending = true;\n try {\n // Ensure any previous update has resolved before updating.\n // This `await` also ensures that property changes are batched.\n await this.__updatePromise;\n } catch (e) {\n // Refire any previous errors async so they do not disrupt the update\n // cycle. Errors are refired so developers have a chance to observe\n // them, and this can be done by implementing\n // `window.onunhandledrejection`.\n Promise.reject(e);\n }\n const result = this.scheduleUpdate();\n // If `scheduleUpdate` returns a Promise, we await it. This is done to\n // enable coordinating updates with a scheduler. Note, the result is\n // checked to avoid delaying an additional microtask unless we need to.\n if (result != null) {\n await result;\n }\n return !this.isUpdatePending;\n }\n\n /**\n * Schedules an element update. You can override this method to change the\n * timing of updates by returning a Promise. The update will await the\n * returned Promise, and you should resolve the Promise to allow the update\n * to proceed. If this method is overridden, `super.scheduleUpdate()`\n * must be called.\n *\n * For instance, to schedule updates to occur just before the next frame:\n *\n * ```ts\n * override protected async scheduleUpdate(): Promise {\n * await new Promise((resolve) => requestAnimationFrame(() => resolve()));\n * super.scheduleUpdate();\n * }\n * ```\n * @category updates\n */\n protected scheduleUpdate(): void | Promise {\n return this.performUpdate();\n }\n\n /**\n * Performs an element update. Note, if an exception is thrown during the\n * update, `firstUpdated` and `updated` will not be called.\n *\n * Call `performUpdate()` to immediately process a pending update. This should\n * generally not be needed, but it can be done in rare cases when you need to\n * update synchronously.\n *\n * Note: To ensure `performUpdate()` synchronously completes a pending update,\n * it should not be overridden. In LitElement 2.x it was suggested to override\n * `performUpdate()` to also customizing update scheduling. Instead, you should now\n * override `scheduleUpdate()`. For backwards compatibility with LitElement 2.x,\n * scheduling updates via `performUpdate()` continues to work, but will make\n * also calling `performUpdate()` to synchronously process updates difficult.\n *\n * @category updates\n */\n protected performUpdate(): void | Promise {\n // Abort any update if one is not pending when this is called.\n // This can happen if `performUpdate` is called early to \"flush\"\n // the update.\n if (!this.isUpdatePending) {\n return;\n }\n debugLogEvent?.({kind: 'update'});\n // create renderRoot before first update.\n if (!this.hasUpdated) {\n // Produce warning if any class properties are shadowed by class fields\n if (DEV_MODE) {\n const shadowedProperties: string[] = [];\n (\n this.constructor as typeof ReactiveElement\n ).__reactivePropertyKeys?.forEach((p) => {\n if (this.hasOwnProperty(p) && !this.__instanceProperties?.has(p)) {\n shadowedProperties.push(p as string);\n }\n });\n if (shadowedProperties.length) {\n throw new Error(\n `The following properties on element ${this.localName} will not ` +\n `trigger updates as expected because they are set using class ` +\n `fields: ${shadowedProperties.join(', ')}. ` +\n `Native class fields and some compiled output will overwrite ` +\n `accessors used for detecting changes. See ` +\n `https://lit.dev/msg/class-field-shadowing ` +\n `for more information.`\n );\n }\n }\n }\n // Mixin instance properties once, if they exist.\n if (this.__instanceProperties) {\n // Use forEach so this works even if for/of loops are compiled to for loops\n // expecting arrays\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.__instanceProperties!.forEach((v, p) => ((this as any)[p] = v));\n this.__instanceProperties = undefined;\n }\n let shouldUpdate = false;\n const changedProperties = this._$changedProperties;\n try {\n shouldUpdate = this.shouldUpdate(changedProperties);\n if (shouldUpdate) {\n this.willUpdate(changedProperties);\n this.__controllers?.forEach((c) => c.hostUpdate?.());\n this.update(changedProperties);\n } else {\n this.__markUpdated();\n }\n } catch (e) {\n // Prevent `firstUpdated` and `updated` from running when there's an\n // update exception.\n shouldUpdate = false;\n // Ensure element can accept additional updates after an exception.\n this.__markUpdated();\n throw e;\n }\n // The update is no longer considered pending and further updates are now allowed.\n if (shouldUpdate) {\n this._$didUpdate(changedProperties);\n }\n }\n\n /**\n * Invoked before `update()` to compute values needed during the update.\n *\n * Implement `willUpdate` to compute property values that depend on other\n * properties and are used in the rest of the update process.\n *\n * ```ts\n * willUpdate(changedProperties) {\n * // only need to check changed properties for an expensive computation.\n * if (changedProperties.has('firstName') || changedProperties.has('lastName')) {\n * this.sha = computeSHA(`${this.firstName} ${this.lastName}`);\n * }\n * }\n *\n * render() {\n * return html`SHA: ${this.sha}`;\n * }\n * ```\n *\n * @category updates\n */\n protected willUpdate(_changedProperties: PropertyValues): void {}\n\n // Note, this is an override point for polyfill-support.\n // @internal\n _$didUpdate(changedProperties: PropertyValues) {\n this.__controllers?.forEach((c) => c.hostUpdated?.());\n if (!this.hasUpdated) {\n this.hasUpdated = true;\n this.firstUpdated(changedProperties);\n }\n this.updated(changedProperties);\n if (\n DEV_MODE &&\n this.isUpdatePending &&\n (this.constructor as typeof ReactiveElement).enabledWarnings!.indexOf(\n 'change-in-update'\n ) >= 0\n ) {\n issueWarning(\n 'change-in-update',\n `Element ${this.localName} scheduled an update ` +\n `(generally because a property was set) ` +\n `after an update completed, causing a new update to be scheduled. ` +\n `This is inefficient and should be avoided unless the next update ` +\n `can only be scheduled as a side effect of the previous update.`\n );\n }\n }\n\n private __markUpdated() {\n this._$changedProperties = new Map();\n this.isUpdatePending = false;\n }\n\n /**\n * Returns a Promise that resolves when the element has completed updating.\n * The Promise value is a boolean that is `true` if the element completed the\n * update without triggering another update. The Promise result is `false` if\n * a property was set inside `updated()`. If the Promise is rejected, an\n * exception was thrown during the update.\n *\n * To await additional asynchronous work, override the `getUpdateComplete`\n * method. For example, it is sometimes useful to await a rendered element\n * before fulfilling this Promise. To do this, first await\n * `super.getUpdateComplete()`, then any subsequent state.\n *\n * @return A promise of a boolean that resolves to true if the update completed\n * without triggering another update.\n * @category updates\n */\n get updateComplete(): Promise {\n return this.getUpdateComplete();\n }\n\n /**\n * Override point for the `updateComplete` promise.\n *\n * It is not safe to override the `updateComplete` getter directly due to a\n * limitation in TypeScript which means it is not possible to call a\n * superclass getter (e.g. `super.updateComplete.then(...)`) when the target\n * language is ES5 (https://github.com/microsoft/TypeScript/issues/338).\n * This method should be overridden instead. For example:\n *\n * ```ts\n * class MyElement extends LitElement {\n * override async getUpdateComplete() {\n * const result = await super.getUpdateComplete();\n * await this._myChild.updateComplete;\n * return result;\n * }\n * }\n * ```\n *\n * @return A promise of a boolean that resolves to true if the update completed\n * without triggering another update.\n * @category updates\n */\n protected getUpdateComplete(): Promise {\n return this.__updatePromise;\n }\n\n /**\n * Controls whether or not `update()` should be called when the element requests\n * an update. By default, this method always returns `true`, but this can be\n * customized to control when to update.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected shouldUpdate(_changedProperties: PropertyValues): boolean {\n return true;\n }\n\n /**\n * Updates the element. This method reflects property values to attributes.\n * It can be overridden to render and keep updated element DOM.\n * Setting properties inside this method will *not* trigger\n * another update.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected update(_changedProperties: PropertyValues) {\n if (this.__reflectingProperties !== undefined) {\n // Use forEach so this works even if for/of loops are compiled to for\n // loops expecting arrays\n this.__reflectingProperties.forEach((v, k) =>\n this.__propertyToAttribute(k, this[k as keyof this], v)\n );\n this.__reflectingProperties = undefined;\n }\n this.__markUpdated();\n }\n\n /**\n * Invoked whenever the element is updated. Implement to perform\n * post-updating tasks via DOM APIs, for example, focusing an element.\n *\n * Setting properties inside this method will trigger the element to update\n * again after this update cycle completes.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected updated(_changedProperties: PropertyValues) {}\n\n /**\n * Invoked when the element is first updated. Implement to perform one time\n * work on the element after update.\n *\n * ```ts\n * firstUpdated() {\n * this.renderRoot.getElementById('my-text-area').focus();\n * }\n * ```\n *\n * Setting properties inside this method will trigger the element to update\n * again after this update cycle completes.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n protected firstUpdated(_changedProperties: PropertyValues) {}\n}\n\n// Apply polyfills if available\npolyfillSupport?.({ReactiveElement});\n\n// Dev mode warnings...\nif (DEV_MODE) {\n // Default warning set.\n ReactiveElement.enabledWarnings = ['change-in-update'];\n const ensureOwnWarnings = function (ctor: typeof ReactiveElement) {\n if (\n !ctor.hasOwnProperty(JSCompiler_renameProperty('enabledWarnings', ctor))\n ) {\n ctor.enabledWarnings = ctor.enabledWarnings!.slice();\n }\n };\n ReactiveElement.enableWarning = function (\n this: typeof ReactiveElement,\n warning: WarningKind\n ) {\n ensureOwnWarnings(this);\n if (this.enabledWarnings!.indexOf(warning) < 0) {\n this.enabledWarnings!.push(warning);\n }\n };\n ReactiveElement.disableWarning = function (\n this: typeof ReactiveElement,\n warning: WarningKind\n ) {\n ensureOwnWarnings(this);\n const i = this.enabledWarnings!.indexOf(warning);\n if (i >= 0) {\n this.enabledWarnings!.splice(i, 1);\n }\n };\n}\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for ReactiveElement usage.\n(global.reactiveElementVersions ??= []).push('1.6.3');\nif (DEV_MODE && global.reactiveElementVersions.length > 1) {\n issueWarning!(\n 'multiple-versions',\n `Multiple versions of Lit loaded. Loading multiple versions ` +\n `is not recommended.`\n );\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n// IMPORTANT: these imports must be type-only\nimport type {Directive, DirectiveResult, PartInfo} from './directive.js';\n\nconst DEV_MODE = true;\nconst ENABLE_EXTRA_SECURITY_HOOKS = true;\nconst ENABLE_SHADYDOM_NOPATCH = true;\nconst NODE_MODE = false;\n// Use window for browser builds because IE11 doesn't have globalThis.\nconst global = NODE_MODE ? globalThis : window;\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace LitUnstable {\n /**\n * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n * we will emit 'lit-debug' events to window, with live details about the update and render\n * lifecycle. These can be useful for writing debug tooling and visualizations.\n *\n * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n * making certain operations that are normally very cheap (like a no-op render) much slower,\n * because we must copy data and dispatch events.\n */\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace DebugLog {\n export type Entry =\n | TemplatePrep\n | TemplateInstantiated\n | TemplateInstantiatedAndUpdated\n | TemplateUpdating\n | BeginRender\n | EndRender\n | CommitPartEntry\n | SetPartValue;\n export interface TemplatePrep {\n kind: 'template prep';\n template: Template;\n strings: TemplateStringsArray;\n clonableTemplate: HTMLTemplateElement;\n parts: TemplatePart[];\n }\n export interface BeginRender {\n kind: 'begin render';\n id: number;\n value: unknown;\n container: HTMLElement | DocumentFragment;\n options: RenderOptions | undefined;\n part: ChildPart | undefined;\n }\n export interface EndRender {\n kind: 'end render';\n id: number;\n value: unknown;\n container: HTMLElement | DocumentFragment;\n options: RenderOptions | undefined;\n part: ChildPart;\n }\n export interface TemplateInstantiated {\n kind: 'template instantiated';\n template: Template | CompiledTemplate;\n instance: TemplateInstance;\n options: RenderOptions | undefined;\n fragment: Node;\n parts: Array;\n values: unknown[];\n }\n export interface TemplateInstantiatedAndUpdated {\n kind: 'template instantiated and updated';\n template: Template | CompiledTemplate;\n instance: TemplateInstance;\n options: RenderOptions | undefined;\n fragment: Node;\n parts: Array;\n values: unknown[];\n }\n export interface TemplateUpdating {\n kind: 'template updating';\n template: Template | CompiledTemplate;\n instance: TemplateInstance;\n options: RenderOptions | undefined;\n parts: Array;\n values: unknown[];\n }\n export interface SetPartValue {\n kind: 'set part';\n part: Part;\n value: unknown;\n valueIndex: number;\n values: unknown[];\n templateInstance: TemplateInstance;\n }\n\n export type CommitPartEntry =\n | CommitNothingToChildEntry\n | CommitText\n | CommitNode\n | CommitAttribute\n | CommitProperty\n | CommitBooleanAttribute\n | CommitEventListener\n | CommitToElementBinding;\n\n export interface CommitNothingToChildEntry {\n kind: 'commit nothing to child';\n start: ChildNode;\n end: ChildNode | null;\n parent: Disconnectable | undefined;\n options: RenderOptions | undefined;\n }\n\n export interface CommitText {\n kind: 'commit text';\n node: Text;\n value: unknown;\n options: RenderOptions | undefined;\n }\n\n export interface CommitNode {\n kind: 'commit node';\n start: Node;\n parent: Disconnectable | undefined;\n value: Node;\n options: RenderOptions | undefined;\n }\n\n export interface CommitAttribute {\n kind: 'commit attribute';\n element: Element;\n name: string;\n value: unknown;\n options: RenderOptions | undefined;\n }\n\n export interface CommitProperty {\n kind: 'commit property';\n element: Element;\n name: string;\n value: unknown;\n options: RenderOptions | undefined;\n }\n\n export interface CommitBooleanAttribute {\n kind: 'commit boolean attribute';\n element: Element;\n name: string;\n value: boolean;\n options: RenderOptions | undefined;\n }\n\n export interface CommitEventListener {\n kind: 'commit event listener';\n element: Element;\n name: string;\n value: unknown;\n oldListener: unknown;\n options: RenderOptions | undefined;\n // True if we're removing the old event listener (e.g. because settings changed, or value is nothing)\n removeListener: boolean;\n // True if we're adding a new event listener (e.g. because first render, or settings changed)\n addListener: boolean;\n }\n\n export interface CommitToElementBinding {\n kind: 'commit to element binding';\n element: Element;\n value: unknown;\n options: RenderOptions | undefined;\n }\n }\n}\n\ninterface DebugLoggingWindow {\n // Even in dev mode, we generally don't want to emit these events, as that's\n // another level of cost, so only emit them when DEV_MODE is true _and_ when\n // window.emitLitDebugEvents is true.\n emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n ? (event: LitUnstable.DebugLog.Entry) => {\n const shouldEmit = (global as unknown as DebugLoggingWindow)\n .emitLitDebugLogEvents;\n if (!shouldEmit) {\n return;\n }\n global.dispatchEvent(\n new CustomEvent('lit-debug', {\n detail: event,\n })\n );\n }\n : undefined;\n// Used for connecting beginRender and endRender events when there are nested\n// renders when errors are thrown preventing an endRender event from being\n// called.\nlet debugLogRenderId = 0;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n global.litIssuedWarnings ??= new Set();\n\n // Issue a warning, if we haven't already.\n issueWarning = (code: string, warning: string) => {\n warning += code\n ? ` See https://lit.dev/msg/${code} for more information.`\n : '';\n if (!global.litIssuedWarnings!.has(warning)) {\n console.warn(warning);\n global.litIssuedWarnings!.add(warning);\n }\n };\n\n issueWarning(\n 'dev-mode',\n `Lit is in dev mode. Not recommended for production!`\n );\n}\n\nconst wrap =\n ENABLE_SHADYDOM_NOPATCH &&\n global.ShadyDOM?.inUse &&\n global.ShadyDOM?.noPatch === true\n ? global.ShadyDOM!.wrap\n : (node: Node) => node;\n\nconst trustedTypes = (global as unknown as Partial).trustedTypes;\n\n/**\n * Our TrustedTypePolicy for HTML which is declared using the html template\n * tag function.\n *\n * That HTML is a developer-authored constant, and is parsed with innerHTML\n * before any untrusted expressions have been mixed in. Therefor it is\n * considered safe by construction.\n */\nconst policy = trustedTypes\n ? trustedTypes.createPolicy('lit-html', {\n createHTML: (s) => s,\n })\n : undefined;\n\n/**\n * Used to sanitize any value before it is written into the DOM. This can be\n * used to implement a security policy of allowed and disallowed values in\n * order to prevent XSS attacks.\n *\n * One way of using this callback would be to check attributes and properties\n * against a list of high risk fields, and require that values written to such\n * fields be instances of a class which is safe by construction. Closure's Safe\n * HTML Types is one implementation of this technique (\n * https://github.com/google/safe-html-types/blob/master/doc/safehtml-types.md).\n * The TrustedTypes polyfill in API-only mode could also be used as a basis\n * for this technique (https://github.com/WICG/trusted-types).\n *\n * @param node The HTML node (usually either a #text node or an Element) that\n * is being written to. Note that this is just an exemplar node, the write\n * may take place against another instance of the same class of node.\n * @param name The name of an attribute or property (for example, 'href').\n * @param type Indicates whether the write that's about to be performed will\n * be to a property or a node.\n * @return A function that will sanitize this class of writes.\n */\nexport type SanitizerFactory = (\n node: Node,\n name: string,\n type: 'property' | 'attribute'\n) => ValueSanitizer;\n\n/**\n * A function which can sanitize values that will be written to a specific kind\n * of DOM sink.\n *\n * See SanitizerFactory.\n *\n * @param value The value to sanitize. Will be the actual value passed into\n * the lit-html template literal, so this could be of any type.\n * @return The value to write to the DOM. Usually the same as the input value,\n * unless sanitization is needed.\n */\nexport type ValueSanitizer = (value: unknown) => unknown;\n\nconst identityFunction: ValueSanitizer = (value: unknown) => value;\nconst noopSanitizer: SanitizerFactory = (\n _node: Node,\n _name: string,\n _type: 'property' | 'attribute'\n) => identityFunction;\n\n/** Sets the global sanitizer factory. */\nconst setSanitizer = (newSanitizer: SanitizerFactory) => {\n if (!ENABLE_EXTRA_SECURITY_HOOKS) {\n return;\n }\n if (sanitizerFactoryInternal !== noopSanitizer) {\n throw new Error(\n `Attempted to overwrite existing lit-html security policy.` +\n ` setSanitizeDOMValueFactory should be called at most once.`\n );\n }\n sanitizerFactoryInternal = newSanitizer;\n};\n\n/**\n * Only used in internal tests, not a part of the public API.\n */\nconst _testOnlyClearSanitizerFactoryDoNotCallOrElse = () => {\n sanitizerFactoryInternal = noopSanitizer;\n};\n\nconst createSanitizer: SanitizerFactory = (node, name, type) => {\n return sanitizerFactoryInternal(node, name, type);\n};\n\n// Added to an attribute name to mark the attribute as bound so we can find\n// it easily.\nconst boundAttributeSuffix = '$lit$';\n\n// This marker is used in many syntactic positions in HTML, so it must be\n// a valid element name and attribute name. We don't support dynamic names (yet)\n// but this at least ensures that the parse tree is closer to the template\n// intention.\nconst marker = `lit$${String(Math.random()).slice(9)}$`;\n\n// String used to tell if a comment is a marker comment\nconst markerMatch = '?' + marker;\n\n// Text used to insert a comment marker node. We use processing instruction\n// syntax because it's slightly smaller, but parses as a comment node.\nconst nodeMarker = `<${markerMatch}>`;\n\nconst d =\n NODE_MODE && global.document === undefined\n ? ({\n createTreeWalker() {\n return {};\n },\n } as unknown as Document)\n : document;\n\n// Creates a dynamic marker. We never have to search for these in the DOM.\nconst createMarker = () => d.createComment('');\n\n// https://tc39.github.io/ecma262/#sec-typeof-operator\ntype Primitive = null | undefined | boolean | number | string | symbol | bigint;\nconst isPrimitive = (value: unknown): value is Primitive =>\n value === null || (typeof value != 'object' && typeof value != 'function');\nconst isArray = Array.isArray;\nconst isIterable = (value: unknown): value is Iterable =>\n isArray(value) ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n typeof (value as any)?.[Symbol.iterator] === 'function';\n\nconst SPACE_CHAR = `[ \\t\\n\\f\\r]`;\nconst ATTR_VALUE_CHAR = `[^ \\t\\n\\f\\r\"'\\`<>=]`;\nconst NAME_CHAR = `[^\\\\s\"'>=/]`;\n\n// These regexes represent the five parsing states that we care about in the\n// Template's HTML scanner. They match the *end* of the state they're named\n// after.\n// Depending on the match, we transition to a new state. If there's no match,\n// we stay in the same state.\n// Note that the regexes are stateful. We utilize lastIndex and sync it\n// across the multiple regexes used. In addition to the five regexes below\n// we also dynamically create a regex to find the matching end tags for raw\n// text elements.\n\n/**\n * End of text is: `<` followed by:\n * (comment start) or (tag) or (dynamic tag binding)\n */\nconst textEndRegex = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nconst COMMENT_START = 1;\nconst TAG_NAME = 2;\nconst DYNAMIC_TAG_NAME = 3;\n\nconst commentEndRegex = /-->/g;\n/**\n * Comments not started with \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {html} from 'lit';\n\nexport default html`\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {html} from 'lit';\n\nexport default html`\n\n\n\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\n\n`;\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {html, render} from 'lit';\n\nimport CloseIcon from './assets/close-material-svg.js';\nimport ControlsPrompt from './assets/controls-svg.js';\nimport ARGlyph from './assets/view-in-ar-material-svg.js';\n\nconst templateResult = html`\n\n
\n
\n
\n \n \n \n
\n\n
\n\n \n
\n \n \n \n
\n\n
\n\n
\n \n
\n
\n
\n
\n\n
\n
\n \n ${ControlsPrompt}\n \n
\n
\n\n
\n \n \n
\n
\n \n \n
\n\n
\n \n\n
\n \n
\n
\n
\n
\n
\n\n
\n \n \n ${CloseIcon}\n \n \n
\n
\n
\n
\n \n
`;\n\nexport const makeTemplate = (shadowRoot: ShadowRoot) => {\n render(templateResult, shadowRoot);\n};","import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tFileLoader,\n\tLoader\n} from 'three';\n\nconst _taskCache = new WeakMap();\n\nclass DRACOLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.decoderPath = '';\n\t\tthis.decoderConfig = {};\n\t\tthis.decoderBinary = null;\n\t\tthis.decoderPending = null;\n\n\t\tthis.workerLimit = 4;\n\t\tthis.workerPool = [];\n\t\tthis.workerNextTaskID = 1;\n\t\tthis.workerSourceURL = '';\n\n\t\tthis.defaultAttributeIDs = {\n\t\t\tposition: 'POSITION',\n\t\t\tnormal: 'NORMAL',\n\t\t\tcolor: 'COLOR',\n\t\t\tuv: 'TEX_COORD'\n\t\t};\n\t\tthis.defaultAttributeTypes = {\n\t\t\tposition: 'Float32Array',\n\t\t\tnormal: 'Float32Array',\n\t\t\tcolor: 'Float32Array',\n\t\t\tuv: 'Float32Array'\n\t\t};\n\n\t}\n\n\tsetDecoderPath( path ) {\n\n\t\tthis.decoderPath = path;\n\n\t\treturn this;\n\n\t}\n\n\tsetDecoderConfig( config ) {\n\n\t\tthis.decoderConfig = config;\n\n\t\treturn this;\n\n\t}\n\n\tsetWorkerLimit( workerLimit ) {\n\n\t\tthis.workerLimit = workerLimit;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst loader = new FileLoader( this.manager );\n\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tloader.load( url, ( buffer ) => {\n\n\t\t\tthis.decodeDracoFile( buffer, onLoad ).catch( onError );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tdecodeDracoFile( buffer, callback, attributeIDs, attributeTypes ) {\n\n\t\tconst taskConfig = {\n\t\t\tattributeIDs: attributeIDs || this.defaultAttributeIDs,\n\t\t\tattributeTypes: attributeTypes || this.defaultAttributeTypes,\n\t\t\tuseUniqueIDs: !! attributeIDs\n\t\t};\n\n\t\treturn this.decodeGeometry( buffer, taskConfig ).then( callback );\n\n\t}\n\n\tdecodeGeometry( buffer, taskConfig ) {\n\n\t\tconst taskKey = JSON.stringify( taskConfig );\n\n\t\t// Check for an existing task using this buffer. A transferred buffer cannot be transferred\n\t\t// again from this thread.\n\t\tif ( _taskCache.has( buffer ) ) {\n\n\t\t\tconst cachedTask = _taskCache.get( buffer );\n\n\t\t\tif ( cachedTask.key === taskKey ) {\n\n\t\t\t\treturn cachedTask.promise;\n\n\t\t\t} else if ( buffer.byteLength === 0 ) {\n\n\t\t\t\t// Technically, it would be possible to wait for the previous task to complete,\n\t\t\t\t// transfer the buffer back, and decode again with the second configuration. That\n\t\t\t\t// is complex, and I don't know of any reason to decode a Draco buffer twice in\n\t\t\t\t// different ways, so this is left unimplemented.\n\t\t\t\tthrow new Error(\n\n\t\t\t\t\t'THREE.DRACOLoader: Unable to re-decode a buffer with different ' +\n\t\t\t\t\t'settings. Buffer has already been transferred.'\n\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tlet worker;\n\t\tconst taskID = this.workerNextTaskID ++;\n\t\tconst taskCost = buffer.byteLength;\n\n\t\t// Obtain a worker and assign a task, and construct a geometry instance\n\t\t// when the task completes.\n\t\tconst geometryPending = this._getWorker( taskID, taskCost )\n\t\t\t.then( ( _worker ) => {\n\n\t\t\t\tworker = _worker;\n\n\t\t\t\treturn new Promise( ( resolve, reject ) => {\n\n\t\t\t\t\tworker._callbacks[ taskID ] = { resolve, reject };\n\n\t\t\t\t\tworker.postMessage( { type: 'decode', id: taskID, taskConfig, buffer }, [ buffer ] );\n\n\t\t\t\t\t// this.debug();\n\n\t\t\t\t} );\n\n\t\t\t} )\n\t\t\t.then( ( message ) => this._createGeometry( message.geometry ) );\n\n\t\t// Remove task from the task list.\n\t\t// Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)\n\t\tgeometryPending\n\t\t\t.catch( () => true )\n\t\t\t.then( () => {\n\n\t\t\t\tif ( worker && taskID ) {\n\n\t\t\t\t\tthis._releaseTask( worker, taskID );\n\n\t\t\t\t\t// this.debug();\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t// Cache the task result.\n\t\t_taskCache.set( buffer, {\n\n\t\t\tkey: taskKey,\n\t\t\tpromise: geometryPending\n\n\t\t} );\n\n\t\treturn geometryPending;\n\n\t}\n\n\t_createGeometry( geometryData ) {\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tif ( geometryData.index ) {\n\n\t\t\tgeometry.setIndex( new BufferAttribute( geometryData.index.array, 1 ) );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < geometryData.attributes.length; i ++ ) {\n\n\t\t\tconst attribute = geometryData.attributes[ i ];\n\t\t\tconst name = attribute.name;\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\n\t\t\tgeometry.setAttribute( name, new BufferAttribute( array, itemSize ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n\t_loadLibrary( url, responseType ) {\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.decoderPath );\n\t\tloader.setResponseType( responseType );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\treturn new Promise( ( resolve, reject ) => {\n\n\t\t\tloader.load( url, resolve, undefined, reject );\n\n\t\t} );\n\n\t}\n\n\tpreload() {\n\n\t\tthis._initDecoder();\n\n\t\treturn this;\n\n\t}\n\n\t_initDecoder() {\n\n\t\tif ( this.decoderPending ) return this.decoderPending;\n\n\t\tconst useJS = typeof WebAssembly !== 'object' || this.decoderConfig.type === 'js';\n\t\tconst librariesPending = [];\n\n\t\tif ( useJS ) {\n\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_decoder.js', 'text' ) );\n\n\t\t} else {\n\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_wasm_wrapper.js', 'text' ) );\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_decoder.wasm', 'arraybuffer' ) );\n\n\t\t}\n\n\t\tthis.decoderPending = Promise.all( librariesPending )\n\t\t\t.then( ( libraries ) => {\n\n\t\t\t\tconst jsContent = libraries[ 0 ];\n\n\t\t\t\tif ( ! useJS ) {\n\n\t\t\t\t\tthis.decoderConfig.wasmBinary = libraries[ 1 ];\n\n\t\t\t\t}\n\n\t\t\t\tconst fn = DRACOWorker.toString();\n\n\t\t\t\tconst body = [\n\t\t\t\t\t'/* draco decoder */',\n\t\t\t\t\tjsContent,\n\t\t\t\t\t'',\n\t\t\t\t\t'/* worker */',\n\t\t\t\t\tfn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) )\n\t\t\t\t].join( '\\n' );\n\n\t\t\t\tthis.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) );\n\n\t\t\t} );\n\n\t\treturn this.decoderPending;\n\n\t}\n\n\t_getWorker( taskID, taskCost ) {\n\n\t\treturn this._initDecoder().then( () => {\n\n\t\t\tif ( this.workerPool.length < this.workerLimit ) {\n\n\t\t\t\tconst worker = new Worker( this.workerSourceURL );\n\n\t\t\t\tworker._callbacks = {};\n\t\t\t\tworker._taskCosts = {};\n\t\t\t\tworker._taskLoad = 0;\n\n\t\t\t\tworker.postMessage( { type: 'init', decoderConfig: this.decoderConfig } );\n\n\t\t\t\tworker.onmessage = function ( e ) {\n\n\t\t\t\t\tconst message = e.data;\n\n\t\t\t\t\tswitch ( message.type ) {\n\n\t\t\t\t\t\tcase 'decode':\n\t\t\t\t\t\t\tworker._callbacks[ message.id ].resolve( message );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'error':\n\t\t\t\t\t\t\tworker._callbacks[ message.id ].reject( message );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.DRACOLoader: Unexpected message, \"' + message.type + '\"' );\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t\tthis.workerPool.push( worker );\n\n\t\t\t} else {\n\n\t\t\t\tthis.workerPool.sort( function ( a, b ) {\n\n\t\t\t\t\treturn a._taskLoad > b._taskLoad ? - 1 : 1;\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tconst worker = this.workerPool[ this.workerPool.length - 1 ];\n\t\t\tworker._taskCosts[ taskID ] = taskCost;\n\t\t\tworker._taskLoad += taskCost;\n\t\t\treturn worker;\n\n\t\t} );\n\n\t}\n\n\t_releaseTask( worker, taskID ) {\n\n\t\tworker._taskLoad -= worker._taskCosts[ taskID ];\n\t\tdelete worker._callbacks[ taskID ];\n\t\tdelete worker._taskCosts[ taskID ];\n\n\t}\n\n\tdebug() {\n\n\t\tconsole.log( 'Task load: ', this.workerPool.map( ( worker ) => worker._taskLoad ) );\n\n\t}\n\n\tdispose() {\n\n\t\tfor ( let i = 0; i < this.workerPool.length; ++ i ) {\n\n\t\t\tthis.workerPool[ i ].terminate();\n\n\t\t}\n\n\t\tthis.workerPool.length = 0;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/* WEB WORKER */\n\nfunction DRACOWorker() {\n\n\tlet decoderConfig;\n\tlet decoderPending;\n\n\tonmessage = function ( e ) {\n\n\t\tconst message = e.data;\n\n\t\tswitch ( message.type ) {\n\n\t\t\tcase 'init':\n\t\t\t\tdecoderConfig = message.decoderConfig;\n\t\t\t\tdecoderPending = new Promise( function ( resolve/*, reject*/ ) {\n\n\t\t\t\t\tdecoderConfig.onModuleLoaded = function ( draco ) {\n\n\t\t\t\t\t\t// Module is Promise-like. Wrap before resolving to avoid loop.\n\t\t\t\t\t\tresolve( { draco: draco } );\n\n\t\t\t\t\t};\n\n\t\t\t\t\tDracoDecoderModule( decoderConfig ); // eslint-disable-line no-undef\n\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t\tcase 'decode':\n\t\t\t\tconst buffer = message.buffer;\n\t\t\t\tconst taskConfig = message.taskConfig;\n\t\t\t\tdecoderPending.then( ( module ) => {\n\n\t\t\t\t\tconst draco = module.draco;\n\t\t\t\t\tconst decoder = new draco.Decoder();\n\t\t\t\t\tconst decoderBuffer = new draco.DecoderBuffer();\n\t\t\t\t\tdecoderBuffer.Init( new Int8Array( buffer ), buffer.byteLength );\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\tconst geometry = decodeGeometry( draco, decoder, decoderBuffer, taskConfig );\n\n\t\t\t\t\t\tconst buffers = geometry.attributes.map( ( attr ) => attr.array.buffer );\n\n\t\t\t\t\t\tif ( geometry.index ) buffers.push( geometry.index.array.buffer );\n\n\t\t\t\t\t\tself.postMessage( { type: 'decode', id: message.id, geometry }, buffers );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tconsole.error( error );\n\n\t\t\t\t\t\tself.postMessage( { type: 'error', id: message.id, error: error.message } );\n\n\t\t\t\t\t} finally {\n\n\t\t\t\t\t\tdraco.destroy( decoderBuffer );\n\t\t\t\t\t\tdraco.destroy( decoder );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t};\n\n\tfunction decodeGeometry( draco, decoder, decoderBuffer, taskConfig ) {\n\n\t\tconst attributeIDs = taskConfig.attributeIDs;\n\t\tconst attributeTypes = taskConfig.attributeTypes;\n\n\t\tlet dracoGeometry;\n\t\tlet decodingStatus;\n\n\t\tconst geometryType = decoder.GetEncodedGeometryType( decoderBuffer );\n\n\t\tif ( geometryType === draco.TRIANGULAR_MESH ) {\n\n\t\t\tdracoGeometry = new draco.Mesh();\n\t\t\tdecodingStatus = decoder.DecodeBufferToMesh( decoderBuffer, dracoGeometry );\n\n\t\t} else if ( geometryType === draco.POINT_CLOUD ) {\n\n\t\t\tdracoGeometry = new draco.PointCloud();\n\t\t\tdecodingStatus = decoder.DecodeBufferToPointCloud( decoderBuffer, dracoGeometry );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.DRACOLoader: Unexpected geometry type.' );\n\n\t\t}\n\n\t\tif ( ! decodingStatus.ok() || dracoGeometry.ptr === 0 ) {\n\n\t\t\tthrow new Error( 'THREE.DRACOLoader: Decoding failed: ' + decodingStatus.error_msg() );\n\n\t\t}\n\n\t\tconst geometry = { index: null, attributes: [] };\n\n\t\t// Gather all vertex attributes.\n\t\tfor ( const attributeName in attributeIDs ) {\n\n\t\t\tconst attributeType = self[ attributeTypes[ attributeName ] ];\n\n\t\t\tlet attribute;\n\t\t\tlet attributeID;\n\n\t\t\t// A Draco file may be created with default vertex attributes, whose attribute IDs\n\t\t\t// are mapped 1:1 from their semantic name (POSITION, NORMAL, ...). Alternatively,\n\t\t\t// a Draco file may contain a custom set of attributes, identified by known unique\n\t\t\t// IDs. glTF files always do the latter, and `.drc` files typically do the former.\n\t\t\tif ( taskConfig.useUniqueIDs ) {\n\n\t\t\t\tattributeID = attributeIDs[ attributeName ];\n\t\t\t\tattribute = decoder.GetAttributeByUniqueId( dracoGeometry, attributeID );\n\n\t\t\t} else {\n\n\t\t\t\tattributeID = decoder.GetAttributeId( dracoGeometry, draco[ attributeIDs[ attributeName ] ] );\n\n\t\t\t\tif ( attributeID === - 1 ) continue;\n\n\t\t\t\tattribute = decoder.GetAttribute( dracoGeometry, attributeID );\n\n\t\t\t}\n\n\t\t\tgeometry.attributes.push( decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute ) );\n\n\t\t}\n\n\t\t// Add index.\n\t\tif ( geometryType === draco.TRIANGULAR_MESH ) {\n\n\t\t\tgeometry.index = decodeIndex( draco, decoder, dracoGeometry );\n\n\t\t}\n\n\t\tdraco.destroy( dracoGeometry );\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction decodeIndex( draco, decoder, dracoGeometry ) {\n\n\t\tconst numFaces = dracoGeometry.num_faces();\n\t\tconst numIndices = numFaces * 3;\n\t\tconst byteLength = numIndices * 4;\n\n\t\tconst ptr = draco._malloc( byteLength );\n\t\tdecoder.GetTrianglesUInt32Array( dracoGeometry, byteLength, ptr );\n\t\tconst index = new Uint32Array( draco.HEAPF32.buffer, ptr, numIndices ).slice();\n\t\tdraco._free( ptr );\n\n\t\treturn { array: index, itemSize: 1 };\n\n\t}\n\n\tfunction decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute ) {\n\n\t\tconst numComponents = attribute.num_components();\n\t\tconst numPoints = dracoGeometry.num_points();\n\t\tconst numValues = numPoints * numComponents;\n\t\tconst byteLength = numValues * attributeType.BYTES_PER_ELEMENT;\n\t\tconst dataType = getDracoDataType( draco, attributeType );\n\n\t\tconst ptr = draco._malloc( byteLength );\n\t\tdecoder.GetAttributeDataArrayForAllPoints( dracoGeometry, attribute, dataType, byteLength, ptr );\n\t\tconst array = new attributeType( draco.HEAPF32.buffer, ptr, numValues ).slice();\n\t\tdraco._free( ptr );\n\n\t\treturn {\n\t\t\tname: attributeName,\n\t\t\tarray: array,\n\t\t\titemSize: numComponents\n\t\t};\n\n\t}\n\n\tfunction getDracoDataType( draco, attributeType ) {\n\n\t\tswitch ( attributeType ) {\n\n\t\t\tcase Float32Array: return draco.DT_FLOAT32;\n\t\t\tcase Int8Array: return draco.DT_INT8;\n\t\t\tcase Int16Array: return draco.DT_INT16;\n\t\t\tcase Int32Array: return draco.DT_INT32;\n\t\t\tcase Uint8Array: return draco.DT_UINT8;\n\t\t\tcase Uint16Array: return draco.DT_UINT16;\n\t\t\tcase Uint32Array: return draco.DT_UINT32;\n\n\t\t}\n\n\t}\n\n}\n\nexport { DRACOLoader };\n","import {\n\tAnimationClip,\n\tBone,\n\tBox3,\n\tBufferAttribute,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tDoubleSide,\n\tFileLoader,\n\tFrontSide,\n\tGroup,\n\tImageBitmapLoader,\n\tInstancedMesh,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tInterpolant,\n\tInterpolateDiscrete,\n\tInterpolateLinear,\n\tLine,\n\tLineBasicMaterial,\n\tLineLoop,\n\tLineSegments,\n\tLinearFilter,\n\tLinearMipmapLinearFilter,\n\tLinearMipmapNearestFilter,\n\tLoader,\n\tLoaderUtils,\n\tMaterial,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshPhysicalMaterial,\n\tMeshStandardMaterial,\n\tMirroredRepeatWrapping,\n\tNearestFilter,\n\tNearestMipmapLinearFilter,\n\tNearestMipmapNearestFilter,\n\tNumberKeyframeTrack,\n\tObject3D,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tPoints,\n\tPointsMaterial,\n\tPropertyBinding,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tRepeatWrapping,\n\tSkeleton,\n\tSkinnedMesh,\n\tSphere,\n\tSpotLight,\n\tTangentSpaceNormalMap,\n\tTexture,\n\tTextureLoader,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack,\n\tsRGBEncoding\n} from 'three';\n\nclass GLTFLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.dracoLoader = null;\n\t\tthis.ktx2Loader = null;\n\t\tthis.meshoptDecoder = null;\n\n\t\tthis.pluginCallbacks = [];\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsClearcoatExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureBasisUExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureWebPExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsSheenExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsTransmissionExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsVolumeExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsIorExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsEmissiveStrengthExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsSpecularExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsIridescenceExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFLightsExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMeshoptCompression( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMeshGpuInstancing( parser );\n\n\t\t} );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet resourcePath;\n\n\t\tif ( this.resourcePath !== '' ) {\n\n\t\t\tresourcePath = this.resourcePath;\n\n\t\t} else if ( this.path !== '' ) {\n\n\t\t\tresourcePath = this.path;\n\n\t\t} else {\n\n\t\t\tresourcePath = LoaderUtils.extractUrlBase( url );\n\n\t\t}\n\n\t\t// Tells the LoadingManager to track an extra item, which resolves after\n\t\t// the model is fully loaded. This means the count of items loaded will\n\t\t// be incorrect, but ensures manager.onLoad() does not fire early.\n\t\tthis.manager.itemStart( url );\n\n\t\tconst _onError = function ( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t};\n\n\t\tconst loader = new FileLoader( this.manager );\n\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tloader.load( url, function ( data ) {\n\n\t\t\ttry {\n\n\t\t\t\tscope.parse( data, resourcePath, function ( gltf ) {\n\n\t\t\t\t\tonLoad( gltf );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, _onError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\t_onError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, _onError );\n\n\t}\n\n\tsetDRACOLoader( dracoLoader ) {\n\n\t\tthis.dracoLoader = dracoLoader;\n\t\treturn this;\n\n\t}\n\n\tsetDDSLoader() {\n\n\t\tthrow new Error(\n\n\t\t\t'THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".'\n\n\t\t);\n\n\t}\n\n\tsetKTX2Loader( ktx2Loader ) {\n\n\t\tthis.ktx2Loader = ktx2Loader;\n\t\treturn this;\n\n\t}\n\n\tsetMeshoptDecoder( meshoptDecoder ) {\n\n\t\tthis.meshoptDecoder = meshoptDecoder;\n\t\treturn this;\n\n\t}\n\n\tregister( callback ) {\n\n\t\tif ( this.pluginCallbacks.indexOf( callback ) === - 1 ) {\n\n\t\t\tthis.pluginCallbacks.push( callback );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunregister( callback ) {\n\n\t\tif ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) {\n\n\t\t\tthis.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tparse( data, path, onLoad, onError ) {\n\n\t\tlet json;\n\t\tconst extensions = {};\n\t\tconst plugins = {};\n\n\t\tif ( typeof data === 'string' ) {\n\n\t\t\tjson = JSON.parse( data );\n\n\t\t} else if ( data instanceof ArrayBuffer ) {\n\n\t\t\tconst magic = LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) );\n\n\t\t\tif ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\textensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\n\n\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tjson = JSON.parse( extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content );\n\n\t\t\t} else {\n\n\t\t\t\tjson = JSON.parse( LoaderUtils.decodeText( new Uint8Array( data ) ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tjson = data;\n\n\t\t}\n\n\t\tif ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\n\n\t\t\tif ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst parser = new GLTFParser( json, {\n\n\t\t\tpath: path || this.resourcePath || '',\n\t\t\tcrossOrigin: this.crossOrigin,\n\t\t\trequestHeader: this.requestHeader,\n\t\t\tmanager: this.manager,\n\t\t\tktx2Loader: this.ktx2Loader,\n\t\t\tmeshoptDecoder: this.meshoptDecoder\n\n\t\t} );\n\n\t\tparser.fileLoader.setRequestHeader( this.requestHeader );\n\n\t\tfor ( let i = 0; i < this.pluginCallbacks.length; i ++ ) {\n\n\t\t\tconst plugin = this.pluginCallbacks[ i ]( parser );\n\t\t\tplugins[ plugin.name ] = plugin;\n\n\t\t\t// Workaround to avoid determining as unknown extension\n\t\t\t// in addUnknownExtensionsToUserData().\n\t\t\t// Remove this workaround if we move all the existing\n\t\t\t// extension handlers to plugin system\n\t\t\textensions[ plugin.name ] = true;\n\n\t\t}\n\n\t\tif ( json.extensionsUsed ) {\n\n\t\t\tfor ( let i = 0; i < json.extensionsUsed.length; ++ i ) {\n\n\t\t\t\tconst extensionName = json.extensionsUsed[ i ];\n\t\t\t\tconst extensionsRequired = json.extensionsRequired || [];\n\n\t\t\t\tswitch ( extensionName ) {\n\n\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_UNLIT:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsUnlitExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureTransformExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_MESH_QUANTIZATION:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFMeshQuantizationExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tparser.setExtensions( extensions );\n\t\tparser.setPlugins( plugins );\n\t\tparser.parse( onLoad, onError );\n\n\t}\n\n\tparseAsync( data, path ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.parse( data, path, resolve, reject );\n\n\t\t} );\n\n\t}\n\n}\n\n/* GLTFREGISTRY */\n\nfunction GLTFRegistry() {\n\n\tlet objects = {};\n\n\treturn\t{\n\n\t\tget: function ( key ) {\n\n\t\t\treturn objects[ key ];\n\n\t\t},\n\n\t\tadd: function ( key, object ) {\n\n\t\t\tobjects[ key ] = object;\n\n\t\t},\n\n\t\tremove: function ( key ) {\n\n\t\t\tdelete objects[ key ];\n\n\t\t},\n\n\t\tremoveAll: function () {\n\n\t\t\tobjects = {};\n\n\t\t}\n\n\t};\n\n}\n\n/*********************************/\n/********** EXTENSIONS ***********/\n/*********************************/\n\nconst EXTENSIONS = {\n\tKHR_BINARY_GLTF: 'KHR_binary_glTF',\n\tKHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n\tKHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n\tKHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\n\tKHR_MATERIALS_IOR: 'KHR_materials_ior',\n\tKHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\n\tKHR_MATERIALS_SHEEN: 'KHR_materials_sheen',\n\tKHR_MATERIALS_SPECULAR: 'KHR_materials_specular',\n\tKHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\n\tKHR_MATERIALS_IRIDESCENCE: 'KHR_materials_iridescence',\n\tKHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n\tKHR_MATERIALS_VOLUME: 'KHR_materials_volume',\n\tKHR_TEXTURE_BASISU: 'KHR_texture_basisu',\n\tKHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n\tKHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\n\tKHR_MATERIALS_EMISSIVE_STRENGTH: 'KHR_materials_emissive_strength',\n\tEXT_TEXTURE_WEBP: 'EXT_texture_webp',\n\tEXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression',\n\tEXT_MESH_GPU_INSTANCING: 'EXT_mesh_gpu_instancing'\n};\n\n/**\n * Punctual Lights Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n */\nclass GLTFLightsExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n\n\t\t// Object3D instance caches\n\t\tthis.cache = { refs: {}, uses: {} };\n\n\t}\n\n\t_markDefs() {\n\n\t\tconst parser = this.parser;\n\t\tconst nodeDefs = this.parser.json.nodes || [];\n\n\t\tfor ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tconst nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t\t&& nodeDef.extensions[ this.name ]\n\t\t\t\t\t&& nodeDef.extensions[ this.name ].light !== undefined ) {\n\n\t\t\t\tparser._addNodeRef( this.cache, nodeDef.extensions[ this.name ].light );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_loadLight( lightIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst cacheKey = 'light:' + lightIndex;\n\t\tlet dependency = parser.cache.get( cacheKey );\n\n\t\tif ( dependency ) return dependency;\n\n\t\tconst json = parser.json;\n\t\tconst extensions = ( json.extensions && json.extensions[ this.name ] ) || {};\n\t\tconst lightDefs = extensions.lights || [];\n\t\tconst lightDef = lightDefs[ lightIndex ];\n\t\tlet lightNode;\n\n\t\tconst color = new Color( 0xffffff );\n\n\t\tif ( lightDef.color !== undefined ) color.fromArray( lightDef.color );\n\n\t\tconst range = lightDef.range !== undefined ? lightDef.range : 0;\n\n\t\tswitch ( lightDef.type ) {\n\n\t\t\tcase 'directional':\n\t\t\t\tlightNode = new DirectionalLight( color );\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tcase 'point':\n\t\t\t\tlightNode = new PointLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\tbreak;\n\n\t\t\tcase 'spot':\n\t\t\t\tlightNode = new SpotLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\t// Handle spotlight properties.\n\t\t\t\tlightDef.spot = lightDef.spot || {};\n\t\t\t\tlightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n\t\t\t\tlightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n\t\t\t\tlightNode.angle = lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unexpected light type: ' + lightDef.type );\n\n\t\t}\n\n\t\t// Some lights (e.g. spot) default to a position other than the origin. Reset the position\n\t\t// here, because node-level parsing will only override position if explicitly specified.\n\t\tlightNode.position.set( 0, 0, 0 );\n\n\t\tlightNode.decay = 2;\n\n\t\tif ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;\n\n\t\tlightNode.name = parser.createUniqueName( lightDef.name || ( 'light_' + lightIndex ) );\n\n\t\tdependency = Promise.resolve( lightNode );\n\n\t\tparser.cache.add( cacheKey, dependency );\n\n\t\treturn dependency;\n\n\t}\n\n\tcreateNodeAttachment( nodeIndex ) {\n\n\t\tconst self = this;\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\t\tconst lightDef = ( nodeDef.extensions && nodeDef.extensions[ this.name ] ) || {};\n\t\tconst lightIndex = lightDef.light;\n\n\t\tif ( lightIndex === undefined ) return null;\n\n\t\treturn this._loadLight( lightIndex ).then( function ( light ) {\n\n\t\t\treturn parser._getNodeRef( self.cache, lightIndex, light );\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * Unlit Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n */\nclass GLTFMaterialsUnlitExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n\n\t}\n\n\tgetMaterialType() {\n\n\t\treturn MeshBasicMaterial;\n\n\t}\n\n\textendParams( materialParams, materialDef, parser ) {\n\n\t\tconst pending = [];\n\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tconst metallicRoughness = materialDef.pbrMetallicRoughness;\n\n\t\tif ( metallicRoughness ) {\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tconst array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, sRGBEncoding ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials Emissive Strength Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md\n */\nclass GLTFMaterialsEmissiveStrengthExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_EMISSIVE_STRENGTH;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst emissiveStrength = materialDef.extensions[ this.name ].emissiveStrength;\n\n\t\tif ( emissiveStrength !== undefined ) {\n\n\t\t\tmaterialParams.emissiveIntensity = emissiveStrength;\n\n\t\t}\n\n\t\treturn Promise.resolve();\n\n\t}\n\n}\n\n/**\n * Clearcoat Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n */\nclass GLTFMaterialsClearcoatExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.clearcoatFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoat = extension.clearcoatFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatMap', extension.clearcoatTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatNormalTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture ) );\n\n\t\t\tif ( extension.clearcoatNormalTexture.scale !== undefined ) {\n\n\t\t\t\tconst scale = extension.clearcoatNormalTexture.scale;\n\n\t\t\t\tmaterialParams.clearcoatNormalScale = new Vector2( scale, scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Iridescence Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence\n */\nclass GLTFMaterialsIridescenceExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.iridescenceFactor !== undefined ) {\n\n\t\t\tmaterialParams.iridescence = extension.iridescenceFactor;\n\n\t\t}\n\n\t\tif ( extension.iridescenceTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'iridescenceMap', extension.iridescenceTexture ) );\n\n\t\t}\n\n\t\tif ( extension.iridescenceIor !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceIOR = extension.iridescenceIor;\n\n\t\t}\n\n\t\tif ( materialParams.iridescenceThicknessRange === undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange = [ 100, 400 ];\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessMinimum !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange[ 0 ] = extension.iridescenceThicknessMinimum;\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessMaximum !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange[ 1 ] = extension.iridescenceThicknessMaximum;\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'iridescenceThicknessMap', extension.iridescenceThicknessTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Sheen Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen\n */\nclass GLTFMaterialsSheenExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_SHEEN;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tmaterialParams.sheenColor = new Color( 0, 0, 0 );\n\t\tmaterialParams.sheenRoughness = 0;\n\t\tmaterialParams.sheen = 1;\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.sheenColorFactor !== undefined ) {\n\n\t\t\tmaterialParams.sheenColor.fromArray( extension.sheenColorFactor );\n\n\t\t}\n\n\t\tif ( extension.sheenRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.sheenRoughness = extension.sheenRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.sheenColorTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'sheenColorMap', extension.sheenColorTexture, sRGBEncoding ) );\n\n\t\t}\n\n\t\tif ( extension.sheenRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'sheenRoughnessMap', extension.sheenRoughnessTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Transmission Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n * Draft: https://github.com/KhronosGroup/glTF/pull/1698\n */\nclass GLTFMaterialsTransmissionExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.transmissionFactor !== undefined ) {\n\n\t\t\tmaterialParams.transmission = extension.transmissionFactor;\n\n\t\t}\n\n\t\tif ( extension.transmissionTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'transmissionMap', extension.transmissionTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials Volume Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume\n */\nclass GLTFMaterialsVolumeExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_VOLUME;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.thickness = extension.thicknessFactor !== undefined ? extension.thicknessFactor : 0;\n\n\t\tif ( extension.thicknessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'thicknessMap', extension.thicknessTexture ) );\n\n\t\t}\n\n\t\tmaterialParams.attenuationDistance = extension.attenuationDistance || Infinity;\n\n\t\tconst colorArray = extension.attenuationColor || [ 1, 1, 1 ];\n\t\tmaterialParams.attenuationColor = new Color( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ] );\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials ior Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior\n */\nclass GLTFMaterialsIorExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_IOR;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.ior = extension.ior !== undefined ? extension.ior : 1.5;\n\n\t\treturn Promise.resolve();\n\n\t}\n\n}\n\n/**\n * Materials specular Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular\n */\nclass GLTFMaterialsSpecularExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_SPECULAR;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.specularIntensity = extension.specularFactor !== undefined ? extension.specularFactor : 1.0;\n\n\t\tif ( extension.specularTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'specularIntensityMap', extension.specularTexture ) );\n\n\t\t}\n\n\t\tconst colorArray = extension.specularColorFactor || [ 1, 1, 1 ];\n\t\tmaterialParams.specularColor = new Color( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ] );\n\n\t\tif ( extension.specularColorTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture, sRGBEncoding ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * BasisU Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\n */\nclass GLTFTextureBasisUExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n\n\t}\n\n\tloadTexture( textureIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ this.name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst extension = textureDef.extensions[ this.name ];\n\t\tconst loader = parser.options.ktx2Loader;\n\n\t\tif ( ! loader ) {\n\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures' );\n\n\t\t\t} else {\n\n\t\t\t\t// Assumes that the extension is optional and that a fallback texture is present\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.loadTextureImage( textureIndex, extension.source, loader );\n\n\t}\n\n}\n\n/**\n * WebP Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp\n */\nclass GLTFTextureWebPExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_TEXTURE_WEBP;\n\t\tthis.isSupported = null;\n\n\t}\n\n\tloadTexture( textureIndex ) {\n\n\t\tconst name = this.name;\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst extension = textureDef.extensions[ name ];\n\t\tconst source = json.images[ extension.source ];\n\n\t\tlet loader = parser.textureLoader;\n\t\tif ( source.uri ) {\n\n\t\t\tconst handler = parser.options.manager.getHandler( source.uri );\n\t\t\tif ( handler !== null ) loader = handler;\n\n\t\t}\n\n\t\treturn this.detectSupport().then( function ( isSupported ) {\n\n\t\t\tif ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader );\n\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: WebP required by asset but unsupported.' );\n\n\t\t\t}\n\n\t\t\t// Fall back to PNG or JPEG.\n\t\t\treturn parser.loadTexture( textureIndex );\n\n\t\t} );\n\n\t}\n\n\tdetectSupport() {\n\n\t\tif ( ! this.isSupported ) {\n\n\t\t\tthis.isSupported = new Promise( function ( resolve ) {\n\n\t\t\t\tconst image = new Image();\n\n\t\t\t\t// Lossy test image. Support for lossy images doesn't guarantee support for all\n\t\t\t\t// WebP images, unfortunately.\n\t\t\t\timage.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA';\n\n\t\t\t\timage.onload = image.onerror = function () {\n\n\t\t\t\t\tresolve( image.height === 1 );\n\n\t\t\t\t};\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn this.isSupported;\n\n\t}\n\n}\n\n/**\n * meshopt BufferView Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression\n */\nclass GLTFMeshoptCompression {\n\n\tconstructor( parser ) {\n\n\t\tthis.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION;\n\t\tthis.parser = parser;\n\n\t}\n\n\tloadBufferView( index ) {\n\n\t\tconst json = this.parser.json;\n\t\tconst bufferView = json.bufferViews[ index ];\n\n\t\tif ( bufferView.extensions && bufferView.extensions[ this.name ] ) {\n\n\t\t\tconst extensionDef = bufferView.extensions[ this.name ];\n\n\t\t\tconst buffer = this.parser.getDependency( 'buffer', extensionDef.buffer );\n\t\t\tconst decoder = this.parser.options.meshoptDecoder;\n\n\t\t\tif ( ! decoder || ! decoder.supported ) {\n\n\t\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Assumes that the extension is optional and that fallback buffer data is present\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn buffer.then( function ( res ) {\n\n\t\t\t\tconst byteOffset = extensionDef.byteOffset || 0;\n\t\t\t\tconst byteLength = extensionDef.byteLength || 0;\n\n\t\t\t\tconst count = extensionDef.count;\n\t\t\t\tconst stride = extensionDef.byteStride;\n\n\t\t\t\tconst source = new Uint8Array( res, byteOffset, byteLength );\n\n\t\t\t\tif ( decoder.decodeGltfBufferAsync ) {\n\n\t\t\t\t\treturn decoder.decodeGltfBufferAsync( count, stride, source, extensionDef.mode, extensionDef.filter ).then( function ( res ) {\n\n\t\t\t\t\t\treturn res.buffer;\n\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Support for MeshoptDecoder 0.18 or earlier, without decodeGltfBufferAsync\n\t\t\t\t\treturn decoder.ready.then( function () {\n\n\t\t\t\t\t\tconst result = new ArrayBuffer( count * stride );\n\t\t\t\t\t\tdecoder.decodeGltfBuffer( new Uint8Array( result ), count, stride, source, extensionDef.mode, extensionDef.filter );\n\t\t\t\t\t\treturn result;\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * GPU Instancing Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing\n *\n */\nclass GLTFMeshGpuInstancing {\n\n\tconstructor( parser ) {\n\n\t\tthis.name = EXTENSIONS.EXT_MESH_GPU_INSTANCING;\n\t\tthis.parser = parser;\n\n\t}\n\n\tcreateNodeMesh( nodeIndex ) {\n\n\t\tconst json = this.parser.json;\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\tif ( ! nodeDef.extensions || ! nodeDef.extensions[ this.name ] ||\n\t\t\tnodeDef.mesh === undefined ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst meshDef = json.meshes[ nodeDef.mesh ];\n\n\t\t// No Points or Lines + Instancing support yet\n\n\t\tfor ( const primitive of meshDef.primitives ) {\n\n\t\t\tif ( primitive.mode !== WEBGL_CONSTANTS.TRIANGLES &&\n\t\t\t\t primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_STRIP &&\n\t\t\t\t primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_FAN &&\n\t\t\t\t primitive.mode !== undefined ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst extensionDef = nodeDef.extensions[ this.name ];\n\t\tconst attributesDef = extensionDef.attributes;\n\n\t\t// @TODO: Can we support InstancedMesh + SkinnedMesh?\n\n\t\tconst pending = [];\n\t\tconst attributes = {};\n\n\t\tfor ( const key in attributesDef ) {\n\n\t\t\tpending.push( this.parser.getDependency( 'accessor', attributesDef[ key ] ).then( accessor => {\n\n\t\t\t\tattributes[ key ] = accessor;\n\t\t\t\treturn attributes[ key ];\n\n\t\t\t} ) );\n\n\t\t}\n\n\t\tif ( pending.length < 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tpending.push( this.parser.createNodeMesh( nodeIndex ) );\n\n\t\treturn Promise.all( pending ).then( results => {\n\n\t\t\tconst nodeObject = results.pop();\n\t\t\tconst meshes = nodeObject.isGroup ? nodeObject.children : [ nodeObject ];\n\t\t\tconst count = results[ 0 ].count; // All attribute counts should be same\n\t\t\tconst instancedMeshes = [];\n\n\t\t\tfor ( const mesh of meshes ) {\n\n\t\t\t\t// Temporal variables\n\t\t\t\tconst m = new Matrix4();\n\t\t\t\tconst p = new Vector3();\n\t\t\t\tconst q = new Quaternion();\n\t\t\t\tconst s = new Vector3( 1, 1, 1 );\n\n\t\t\t\tconst instancedMesh = new InstancedMesh( mesh.geometry, mesh.material, count );\n\n\t\t\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\t\t\tif ( attributes.TRANSLATION ) {\n\n\t\t\t\t\t\tp.fromBufferAttribute( attributes.TRANSLATION, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attributes.ROTATION ) {\n\n\t\t\t\t\t\tq.fromBufferAttribute( attributes.ROTATION, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attributes.SCALE ) {\n\n\t\t\t\t\t\ts.fromBufferAttribute( attributes.SCALE, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tinstancedMesh.setMatrixAt( i, m.compose( p, q, s ) );\n\n\t\t\t\t}\n\n\t\t\t\t// Add instance attributes to the geometry, excluding TRS.\n\t\t\t\tfor ( const attributeName in attributes ) {\n\n\t\t\t\t\tif ( attributeName !== 'TRANSLATION' &&\n\t\t\t\t\t\t attributeName !== 'ROTATION' &&\n\t\t\t\t\t\t attributeName !== 'SCALE' ) {\n\n\t\t\t\t\t\tmesh.geometry.setAttribute( attributeName, attributes[ attributeName ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// Just in case\n\t\t\t\tObject3D.prototype.copy.call( instancedMesh, mesh );\n\n\t\t\t\t// https://github.com/mrdoob/three.js/issues/18334\n\t\t\t\tinstancedMesh.frustumCulled = false;\n\t\t\t\tthis.parser.assignFinalMaterial( instancedMesh );\n\n\t\t\t\tinstancedMeshes.push( instancedMesh );\n\n\t\t\t}\n\n\t\t\tif ( nodeObject.isGroup ) {\n\n\t\t\t\tnodeObject.clear();\n\n\t\t\t\tnodeObject.add( ... instancedMeshes );\n\n\t\t\t\treturn nodeObject;\n\n\t\t\t}\n\n\t\t\treturn instancedMeshes[ 0 ];\n\n\t\t} );\n\n\t}\n\n}\n\n/* BINARY EXTENSION */\nconst BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\nconst BINARY_EXTENSION_HEADER_LENGTH = 12;\nconst BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\n\nclass GLTFBinaryExtension {\n\n\tconstructor( data ) {\n\n\t\tthis.name = EXTENSIONS.KHR_BINARY_GLTF;\n\t\tthis.content = null;\n\t\tthis.body = null;\n\n\t\tconst headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\n\n\t\tthis.header = {\n\t\t\tmagic: LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ),\n\t\t\tversion: headerView.getUint32( 4, true ),\n\t\t\tlength: headerView.getUint32( 8, true )\n\t\t};\n\n\t\tif ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' );\n\n\t\t} else if ( this.header.version < 2.0 ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Legacy binary file detected.' );\n\n\t\t}\n\n\t\tconst chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH;\n\t\tconst chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\n\t\tlet chunkIndex = 0;\n\n\t\twhile ( chunkIndex < chunkContentsLength ) {\n\n\t\t\tconst chunkLength = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tconst chunkType = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tif ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\n\n\t\t\t\tconst contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\n\t\t\t\tthis.content = LoaderUtils.decodeText( contentArray );\n\n\t\t\t} else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\n\n\t\t\t\tconst byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n\t\t\t\tthis.body = data.slice( byteOffset, byteOffset + chunkLength );\n\n\t\t\t}\n\n\t\t\t// Clients must ignore chunks with unknown types.\n\n\t\t\tchunkIndex += chunkLength;\n\n\t\t}\n\n\t\tif ( this.content === null ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: JSON content not found.' );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * DRACO Mesh Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n */\nclass GLTFDracoMeshCompressionExtension {\n\n\tconstructor( json, dracoLoader ) {\n\n\t\tif ( ! dracoLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n\t\tthis.json = json;\n\t\tthis.dracoLoader = dracoLoader;\n\t\tthis.dracoLoader.preload();\n\n\t}\n\n\tdecodePrimitive( primitive, parser ) {\n\n\t\tconst json = this.json;\n\t\tconst dracoLoader = this.dracoLoader;\n\t\tconst bufferViewIndex = primitive.extensions[ this.name ].bufferView;\n\t\tconst gltfAttributeMap = primitive.extensions[ this.name ].attributes;\n\t\tconst threeAttributeMap = {};\n\t\tconst attributeNormalizedMap = {};\n\t\tconst attributeTypeMap = {};\n\n\t\tfor ( const attributeName in gltfAttributeMap ) {\n\n\t\t\tconst threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tthreeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ];\n\n\t\t}\n\n\t\tfor ( const attributeName in primitive.attributes ) {\n\n\t\t\tconst threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tif ( gltfAttributeMap[ attributeName ] !== undefined ) {\n\n\t\t\t\tconst accessorDef = json.accessors[ primitive.attributes[ attributeName ] ];\n\t\t\t\tconst componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t\tattributeTypeMap[ threeAttributeName ] = componentType.name;\n\t\t\t\tattributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) {\n\n\t\t\treturn new Promise( function ( resolve ) {\n\n\t\t\t\tdracoLoader.decodeDracoFile( bufferView, function ( geometry ) {\n\n\t\t\t\t\tfor ( const attributeName in geometry.attributes ) {\n\n\t\t\t\t\t\tconst attribute = geometry.attributes[ attributeName ];\n\t\t\t\t\t\tconst normalized = attributeNormalizedMap[ attributeName ];\n\n\t\t\t\t\t\tif ( normalized !== undefined ) attribute.normalized = normalized;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve( geometry );\n\n\t\t\t\t}, threeAttributeMap, attributeTypeMap );\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * Texture Transform Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n */\nclass GLTFTextureTransformExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n\n\t}\n\n\textendTexture( texture, transform ) {\n\n\t\tif ( transform.texCoord !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.' );\n\n\t\t}\n\n\t\tif ( transform.offset === undefined && transform.rotation === undefined && transform.scale === undefined ) {\n\n\t\t\t// See https://github.com/mrdoob/three.js/issues/21819.\n\t\t\treturn texture;\n\n\t\t}\n\n\t\ttexture = texture.clone();\n\n\t\tif ( transform.offset !== undefined ) {\n\n\t\t\ttexture.offset.fromArray( transform.offset );\n\n\t\t}\n\n\t\tif ( transform.rotation !== undefined ) {\n\n\t\t\ttexture.rotation = transform.rotation;\n\n\t\t}\n\n\t\tif ( transform.scale !== undefined ) {\n\n\t\t\ttexture.repeat.fromArray( transform.scale );\n\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Specular-Glossiness Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Archived/KHR_materials_pbrSpecularGlossiness\n */\n\n/**\n * A sub class of StandardMaterial with some of the functionality\n * changed via the `onBeforeCompile` callback\n * @pailhead\n */\nclass GLTFMeshStandardSGMaterial extends MeshStandardMaterial {\n\n\tconstructor( params ) {\n\n\t\tsuper();\n\n\t\tthis.isGLTFSpecularGlossinessMaterial = true;\n\n\t\t//various chunks that need replacing\n\t\tconst specularMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tuniform sampler2D specularMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tconst glossinessMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tuniform sampler2D glossinessMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tconst specularMapFragmentChunk = [\n\t\t\t'vec3 specularFactor = specular;',\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tvec4 texelSpecular = texture2D( specularMap, vUv );',\n\t\t\t'\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tspecularFactor *= texelSpecular.rgb;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tconst glossinessMapFragmentChunk = [\n\t\t\t'float glossinessFactor = glossiness;',\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );',\n\t\t\t'\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tglossinessFactor *= texelGlossiness.a;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tconst lightPhysicalFragmentChunk = [\n\t\t\t'PhysicalMaterial material;',\n\t\t\t'material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );',\n\t\t\t'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );',\n\t\t\t'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );',\n\t\t\t'material.roughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.',\n\t\t\t'material.roughness += geometryRoughness;',\n\t\t\t'material.roughness = min( material.roughness, 1.0 );',\n\t\t\t'material.specularColor = specularFactor;',\n\t\t].join( '\\n' );\n\n\t\tconst uniforms = {\n\t\t\tspecular: { value: new Color().setHex( 0xffffff ) },\n\t\t\tglossiness: { value: 1 },\n\t\t\tspecularMap: { value: null },\n\t\t\tglossinessMap: { value: null }\n\t\t};\n\n\t\tthis._extraUniforms = uniforms;\n\n\t\tthis.onBeforeCompile = function ( shader ) {\n\n\t\t\tfor ( const uniformName in uniforms ) {\n\n\t\t\t\tshader.uniforms[ uniformName ] = uniforms[ uniformName ];\n\n\t\t\t}\n\n\t\t\tshader.fragmentShader = shader.fragmentShader\n\t\t\t\t.replace( 'uniform float roughness;', 'uniform vec3 specular;' )\n\t\t\t\t.replace( 'uniform float metalness;', 'uniform float glossiness;' )\n\t\t\t\t.replace( '#include ', specularMapParsFragmentChunk )\n\t\t\t\t.replace( '#include ', glossinessMapParsFragmentChunk )\n\t\t\t\t.replace( '#include ', specularMapFragmentChunk )\n\t\t\t\t.replace( '#include ', glossinessMapFragmentChunk )\n\t\t\t\t.replace( '#include ', lightPhysicalFragmentChunk );\n\n\t\t};\n\n\t\tObject.defineProperties( this, {\n\n\t\t\tspecular: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.specular.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.specular.value = v;\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tspecularMap: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.specularMap.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.specularMap.value = v;\n\n\t\t\t\t\tif ( v ) {\n\n\t\t\t\t\t\tthis.defines.USE_SPECULARMAP = ''; // USE_UV is set by the renderer for specular maps\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdelete this.defines.USE_SPECULARMAP;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tglossiness: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.glossiness.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.glossiness.value = v;\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tglossinessMap: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.glossinessMap.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.glossinessMap.value = v;\n\n\t\t\t\t\tif ( v ) {\n\n\t\t\t\t\t\tthis.defines.USE_GLOSSINESSMAP = '';\n\t\t\t\t\t\tthis.defines.USE_UV = '';\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdelete this.defines.USE_GLOSSINESSMAP;\n\t\t\t\t\t\tdelete this.defines.USE_UV;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t} );\n\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\n\t\tthis.setValues( params );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.specularMap = source.specularMap;\n\t\tthis.specular.copy( source.specular );\n\t\tthis.glossinessMap = source.glossinessMap;\n\t\tthis.glossiness = source.glossiness;\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\t\treturn this;\n\n\t}\n\n}\n\n\nclass GLTFMaterialsPbrSpecularGlossinessExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS;\n\n\t\tthis.specularGlossinessParams = [\n\t\t\t'color',\n\t\t\t'map',\n\t\t\t'lightMap',\n\t\t\t'lightMapIntensity',\n\t\t\t'aoMap',\n\t\t\t'aoMapIntensity',\n\t\t\t'emissive',\n\t\t\t'emissiveIntensity',\n\t\t\t'emissiveMap',\n\t\t\t'bumpMap',\n\t\t\t'bumpScale',\n\t\t\t'normalMap',\n\t\t\t'normalMapType',\n\t\t\t'displacementMap',\n\t\t\t'displacementScale',\n\t\t\t'displacementBias',\n\t\t\t'specularMap',\n\t\t\t'specular',\n\t\t\t'glossinessMap',\n\t\t\t'glossiness',\n\t\t\t'alphaMap',\n\t\t\t'envMap',\n\t\t\t'envMapIntensity'\n\t\t];\n\n\t}\n\n\tgetMaterialType() {\n\n\t\treturn GLTFMeshStandardSGMaterial;\n\n\t}\n\n\textendParams( materialParams, materialDef, parser ) {\n\n\t\tconst pbrSpecularGlossiness = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tconst pending = [];\n\n\t\tif ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) {\n\n\t\t\tconst array = pbrSpecularGlossiness.diffuseFactor;\n\n\t\t\tmaterialParams.color.fromArray( array );\n\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t}\n\n\t\tif ( pbrSpecularGlossiness.diffuseTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'map', pbrSpecularGlossiness.diffuseTexture, sRGBEncoding ) );\n\n\t\t}\n\n\t\tmaterialParams.emissive = new Color( 0.0, 0.0, 0.0 );\n\t\tmaterialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n\t\tmaterialParams.specular = new Color( 1.0, 1.0, 1.0 );\n\n\t\tif ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) {\n\n\t\t\tmaterialParams.specular.fromArray( pbrSpecularGlossiness.specularFactor );\n\n\t\t}\n\n\t\tif ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) {\n\n\t\t\tconst specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n\t\t\tpending.push( parser.assignTexture( materialParams, 'glossinessMap', specGlossMapDef ) );\n\t\t\tpending.push( parser.assignTexture( materialParams, 'specularMap', specGlossMapDef, sRGBEncoding ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n\tcreateMaterial( materialParams ) {\n\n\t\tconst material = new GLTFMeshStandardSGMaterial( materialParams );\n\t\tmaterial.fog = true;\n\n\t\tmaterial.color = materialParams.color;\n\n\t\tmaterial.map = materialParams.map === undefined ? null : materialParams.map;\n\n\t\tmaterial.lightMap = null;\n\t\tmaterial.lightMapIntensity = 1.0;\n\n\t\tmaterial.aoMap = materialParams.aoMap === undefined ? null : materialParams.aoMap;\n\t\tmaterial.aoMapIntensity = 1.0;\n\n\t\tmaterial.emissive = materialParams.emissive;\n\t\tmaterial.emissiveIntensity = materialParams.emissiveIntensity === undefined ? 1.0 : materialParams.emissiveIntensity;\n\t\tmaterial.emissiveMap = materialParams.emissiveMap === undefined ? null : materialParams.emissiveMap;\n\n\t\tmaterial.bumpMap = materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\n\t\tmaterial.bumpScale = 1;\n\n\t\tmaterial.normalMap = materialParams.normalMap === undefined ? null : materialParams.normalMap;\n\t\tmaterial.normalMapType = TangentSpaceNormalMap;\n\n\t\tif ( materialParams.normalScale ) material.normalScale = materialParams.normalScale;\n\n\t\tmaterial.displacementMap = null;\n\t\tmaterial.displacementScale = 1;\n\t\tmaterial.displacementBias = 0;\n\n\t\tmaterial.specularMap = materialParams.specularMap === undefined ? null : materialParams.specularMap;\n\t\tmaterial.specular = materialParams.specular;\n\n\t\tmaterial.glossinessMap = materialParams.glossinessMap === undefined ? null : materialParams.glossinessMap;\n\t\tmaterial.glossiness = materialParams.glossiness;\n\n\t\tmaterial.alphaMap = null;\n\n\t\tmaterial.envMap = materialParams.envMap === undefined ? null : materialParams.envMap;\n\t\tmaterial.envMapIntensity = 1.0;\n\n\t\treturn material;\n\n\t}\n\n}\n\n/**\n * Mesh Quantization Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n */\nclass GLTFMeshQuantizationExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n\n\t}\n\n}\n\n/*********************************/\n/********** INTERPOLATION ********/\n/*********************************/\n\n// Spline Interpolation\n// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\nclass GLTFCubicSplineInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// Copies a sample value to the result buffer. See description of glTF\n\t\t// CUBICSPLINE values layout in interpolate_() function below.\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tvalueSize = this.valueSize,\n\t\t\toffset = index * valueSize * 3 + valueSize;\n\n\t\tfor ( let i = 0; i !== valueSize; i ++ ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer;\n\t\tconst values = this.sampleValues;\n\t\tconst stride = this.valueSize;\n\n\t\tconst stride2 = stride * 2;\n\t\tconst stride3 = stride * 3;\n\n\t\tconst td = t1 - t0;\n\n\t\tconst p = ( t - t0 ) / td;\n\t\tconst pp = p * p;\n\t\tconst ppp = pp * p;\n\n\t\tconst offset1 = i1 * stride3;\n\t\tconst offset0 = offset1 - stride3;\n\n\t\tconst s2 = - 2 * ppp + 3 * pp;\n\t\tconst s3 = ppp - pp;\n\t\tconst s0 = 1 - s2;\n\t\tconst s1 = s3 - pp + p;\n\n\t\t// Layout of keyframe output values for CUBICSPLINE animations:\n\t\t// [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\t\tfor ( let i = 0; i !== stride; i ++ ) {\n\n\t\t\tconst p0 = values[ offset0 + i + stride ]; // splineVertex_k\n\t\t\tconst m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\n\t\t\tconst p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\n\t\t\tconst m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n\t\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nconst _q = new Quaternion();\n\nclass GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = super.interpolate_( i1, t0, t, t1 );\n\n\t\t_q.fromArray( result ).normalize().toArray( result );\n\n\t\treturn result;\n\n\t}\n\n}\n\n\n/*********************************/\n/********** INTERNALS ************/\n/*********************************/\n\n/* CONSTANTS */\n\nconst WEBGL_CONSTANTS = {\n\tFLOAT: 5126,\n\t//FLOAT_MAT2: 35674,\n\tFLOAT_MAT3: 35675,\n\tFLOAT_MAT4: 35676,\n\tFLOAT_VEC2: 35664,\n\tFLOAT_VEC3: 35665,\n\tFLOAT_VEC4: 35666,\n\tLINEAR: 9729,\n\tREPEAT: 10497,\n\tSAMPLER_2D: 35678,\n\tPOINTS: 0,\n\tLINES: 1,\n\tLINE_LOOP: 2,\n\tLINE_STRIP: 3,\n\tTRIANGLES: 4,\n\tTRIANGLE_STRIP: 5,\n\tTRIANGLE_FAN: 6,\n\tUNSIGNED_BYTE: 5121,\n\tUNSIGNED_SHORT: 5123\n};\n\nconst WEBGL_COMPONENT_TYPES = {\n\t5120: Int8Array,\n\t5121: Uint8Array,\n\t5122: Int16Array,\n\t5123: Uint16Array,\n\t5125: Uint32Array,\n\t5126: Float32Array\n};\n\nconst WEBGL_FILTERS = {\n\t9728: NearestFilter,\n\t9729: LinearFilter,\n\t9984: NearestMipmapNearestFilter,\n\t9985: LinearMipmapNearestFilter,\n\t9986: NearestMipmapLinearFilter,\n\t9987: LinearMipmapLinearFilter\n};\n\nconst WEBGL_WRAPPINGS = {\n\t33071: ClampToEdgeWrapping,\n\t33648: MirroredRepeatWrapping,\n\t10497: RepeatWrapping\n};\n\nconst WEBGL_TYPE_SIZES = {\n\t'SCALAR': 1,\n\t'VEC2': 2,\n\t'VEC3': 3,\n\t'VEC4': 4,\n\t'MAT2': 4,\n\t'MAT3': 9,\n\t'MAT4': 16\n};\n\nconst ATTRIBUTES = {\n\tPOSITION: 'position',\n\tNORMAL: 'normal',\n\tTANGENT: 'tangent',\n\tTEXCOORD_0: 'uv',\n\tTEXCOORD_1: 'uv2',\n\tCOLOR_0: 'color',\n\tWEIGHTS_0: 'skinWeight',\n\tJOINTS_0: 'skinIndex',\n};\n\nconst PATH_PROPERTIES = {\n\tscale: 'scale',\n\ttranslation: 'position',\n\trotation: 'quaternion',\n\tweights: 'morphTargetInfluences'\n};\n\nconst INTERPOLATION = {\n\tCUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n\t\t // keyframe track will be initialized with a default interpolation type, then modified.\n\tLINEAR: InterpolateLinear,\n\tSTEP: InterpolateDiscrete\n};\n\nconst ALPHA_MODES = {\n\tOPAQUE: 'OPAQUE',\n\tMASK: 'MASK',\n\tBLEND: 'BLEND'\n};\n\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n */\nfunction createDefaultMaterial( cache ) {\n\n\tif ( cache[ 'DefaultMaterial' ] === undefined ) {\n\n\t\tcache[ 'DefaultMaterial' ] = new MeshStandardMaterial( {\n\t\t\tcolor: 0xFFFFFF,\n\t\t\temissive: 0x000000,\n\t\t\tmetalness: 1,\n\t\t\troughness: 1,\n\t\t\ttransparent: false,\n\t\t\tdepthTest: true,\n\t\t\tside: FrontSide\n\t\t} );\n\n\t}\n\n\treturn cache[ 'DefaultMaterial' ];\n\n}\n\nfunction addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {\n\n\t// Add unknown glTF extensions to an object's userData.\n\n\tfor ( const name in objectDef.extensions ) {\n\n\t\tif ( knownExtensions[ name ] === undefined ) {\n\n\t\t\tobject.userData.gltfExtensions = object.userData.gltfExtensions || {};\n\t\t\tobject.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @param {Object3D|Material|BufferGeometry} object\n * @param {GLTF.definition} gltfDef\n */\nfunction assignExtrasToUserData( object, gltfDef ) {\n\n\tif ( gltfDef.extras !== undefined ) {\n\n\t\tif ( typeof gltfDef.extras === 'object' ) {\n\n\t\t\tObject.assign( object.userData, gltfDef.extras );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n *\n * @param {BufferGeometry} geometry\n * @param {Array} targets\n * @param {GLTFParser} parser\n * @return {Promise}\n */\nfunction addMorphTargets( geometry, targets, parser ) {\n\n\tlet hasMorphPosition = false;\n\tlet hasMorphNormal = false;\n\tlet hasMorphColor = false;\n\n\tfor ( let i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\tconst target = targets[ i ];\n\n\t\tif ( target.POSITION !== undefined ) hasMorphPosition = true;\n\t\tif ( target.NORMAL !== undefined ) hasMorphNormal = true;\n\t\tif ( target.COLOR_0 !== undefined ) hasMorphColor = true;\n\n\t\tif ( hasMorphPosition && hasMorphNormal && hasMorphColor ) break;\n\n\t}\n\n\tif ( ! hasMorphPosition && ! hasMorphNormal && ! hasMorphColor ) return Promise.resolve( geometry );\n\n\tconst pendingPositionAccessors = [];\n\tconst pendingNormalAccessors = [];\n\tconst pendingColorAccessors = [];\n\n\tfor ( let i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\tconst target = targets[ i ];\n\n\t\tif ( hasMorphPosition ) {\n\n\t\t\tconst pendingAccessor = target.POSITION !== undefined\n\t\t\t\t? parser.getDependency( 'accessor', target.POSITION )\n\t\t\t\t: geometry.attributes.position;\n\n\t\t\tpendingPositionAccessors.push( pendingAccessor );\n\n\t\t}\n\n\t\tif ( hasMorphNormal ) {\n\n\t\t\tconst pendingAccessor = target.NORMAL !== undefined\n\t\t\t\t? parser.getDependency( 'accessor', target.NORMAL )\n\t\t\t\t: geometry.attributes.normal;\n\n\t\t\tpendingNormalAccessors.push( pendingAccessor );\n\n\t\t}\n\n\t\tif ( hasMorphColor ) {\n\n\t\t\tconst pendingAccessor = target.COLOR_0 !== undefined\n\t\t\t\t? parser.getDependency( 'accessor', target.COLOR_0 )\n\t\t\t\t: geometry.attributes.color;\n\n\t\t\tpendingColorAccessors.push( pendingAccessor );\n\n\t\t}\n\n\t}\n\n\treturn Promise.all( [\n\t\tPromise.all( pendingPositionAccessors ),\n\t\tPromise.all( pendingNormalAccessors ),\n\t\tPromise.all( pendingColorAccessors )\n\t] ).then( function ( accessors ) {\n\n\t\tconst morphPositions = accessors[ 0 ];\n\t\tconst morphNormals = accessors[ 1 ];\n\t\tconst morphColors = accessors[ 2 ];\n\n\t\tif ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions;\n\t\tif ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals;\n\t\tif ( hasMorphColor ) geometry.morphAttributes.color = morphColors;\n\t\tgeometry.morphTargetsRelative = true;\n\n\t\treturn geometry;\n\n\t} );\n\n}\n\n/**\n * @param {Mesh} mesh\n * @param {GLTF.Mesh} meshDef\n */\nfunction updateMorphTargets( mesh, meshDef ) {\n\n\tmesh.updateMorphTargets();\n\n\tif ( meshDef.weights !== undefined ) {\n\n\t\tfor ( let i = 0, il = meshDef.weights.length; i < il; i ++ ) {\n\n\t\t\tmesh.morphTargetInfluences[ i ] = meshDef.weights[ i ];\n\n\t\t}\n\n\t}\n\n\t// .extras has user-defined data, so check that .extras.targetNames is an array.\n\tif ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {\n\n\t\tconst targetNames = meshDef.extras.targetNames;\n\n\t\tif ( mesh.morphTargetInfluences.length === targetNames.length ) {\n\n\t\t\tmesh.morphTargetDictionary = {};\n\n\t\t\tfor ( let i = 0, il = targetNames.length; i < il; i ++ ) {\n\n\t\t\t\tmesh.morphTargetDictionary[ targetNames[ i ] ] = i;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' );\n\n\t\t}\n\n\t}\n\n}\n\nfunction createPrimitiveKey( primitiveDef ) {\n\n\tconst dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\n\tlet geometryKey;\n\n\tif ( dracoExtension ) {\n\n\t\tgeometryKey = 'draco:' + dracoExtension.bufferView\n\t\t\t\t+ ':' + dracoExtension.indices\n\t\t\t\t+ ':' + createAttributesKey( dracoExtension.attributes );\n\n\t} else {\n\n\t\tgeometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode;\n\n\t}\n\n\treturn geometryKey;\n\n}\n\nfunction createAttributesKey( attributes ) {\n\n\tlet attributesKey = '';\n\n\tconst keys = Object.keys( attributes ).sort();\n\n\tfor ( let i = 0, il = keys.length; i < il; i ++ ) {\n\n\t\tattributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';';\n\n\t}\n\n\treturn attributesKey;\n\n}\n\nfunction getNormalizedComponentScale( constructor ) {\n\n\t// Reference:\n\t// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data\n\n\tswitch ( constructor ) {\n\n\t\tcase Int8Array:\n\t\t\treturn 1 / 127;\n\n\t\tcase Uint8Array:\n\t\t\treturn 1 / 255;\n\n\t\tcase Int16Array:\n\t\t\treturn 1 / 32767;\n\n\t\tcase Uint16Array:\n\t\t\treturn 1 / 65535;\n\n\t\tdefault:\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported normalized accessor component type.' );\n\n\t}\n\n}\n\nfunction getImageURIMimeType( uri ) {\n\n\tif ( uri.search( /\\.jpe?g($|\\?)/i ) > 0 || uri.search( /^data\\:image\\/jpeg/ ) === 0 ) return 'image/jpeg';\n\tif ( uri.search( /\\.webp($|\\?)/i ) > 0 || uri.search( /^data\\:image\\/webp/ ) === 0 ) return 'image/webp';\n\n\treturn 'image/png';\n\n}\n\n/* GLTF PARSER */\n\nclass GLTFParser {\n\n\tconstructor( json = {}, options = {} ) {\n\n\t\tthis.json = json;\n\t\tthis.extensions = {};\n\t\tthis.plugins = {};\n\t\tthis.options = options;\n\n\t\t// loader object cache\n\t\tthis.cache = new GLTFRegistry();\n\n\t\t// associations between Three.js objects and glTF elements\n\t\tthis.associations = new Map();\n\n\t\t// BufferGeometry caching\n\t\tthis.primitiveCache = {};\n\n\t\t// Object3D instance caches\n\t\tthis.meshCache = { refs: {}, uses: {} };\n\t\tthis.cameraCache = { refs: {}, uses: {} };\n\t\tthis.lightCache = { refs: {}, uses: {} };\n\n\t\tthis.sourceCache = {};\n\t\tthis.textureCache = {};\n\n\t\t// Track node names, to ensure no duplicates\n\t\tthis.nodeNamesUsed = {};\n\n\t\t// Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n\t\t// expensive work of uploading a texture to the GPU off the main thread.\n\n\t\tconst isSafari = /^((?!chrome|android).)*safari/i.test( navigator.userAgent ) === true;\n\t\tconst isFirefox = navigator.userAgent.indexOf( 'Firefox' ) > - 1;\n\t\tconst firefoxVersion = isFirefox ? navigator.userAgent.match( /Firefox\\/([0-9]+)\\./ )[ 1 ] : - 1;\n\n\t\tif ( typeof createImageBitmap === 'undefined' || isSafari || ( isFirefox && firefoxVersion < 98 ) ) {\n\n\t\t\tthis.textureLoader = new TextureLoader( this.options.manager );\n\n\t\t} else {\n\n\t\t\tthis.textureLoader = new ImageBitmapLoader( this.options.manager );\n\n\t\t}\n\n\t\tthis.textureLoader.setCrossOrigin( this.options.crossOrigin );\n\t\tthis.textureLoader.setRequestHeader( this.options.requestHeader );\n\n\t\tthis.fileLoader = new FileLoader( this.options.manager );\n\t\tthis.fileLoader.setResponseType( 'arraybuffer' );\n\n\t\tif ( this.options.crossOrigin === 'use-credentials' ) {\n\n\t\t\tthis.fileLoader.setWithCredentials( true );\n\n\t\t}\n\n\t}\n\n\tsetExtensions( extensions ) {\n\n\t\tthis.extensions = extensions;\n\n\t}\n\n\tsetPlugins( plugins ) {\n\n\t\tthis.plugins = plugins;\n\n\t}\n\n\tparse( onLoad, onError ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\n\t\t// Clear the loader cache\n\t\tthis.cache.removeAll();\n\n\t\t// Mark the special nodes/meshes in json for efficient parse\n\t\tthis._invokeAll( function ( ext ) {\n\n\t\t\treturn ext._markDefs && ext._markDefs();\n\n\t\t} );\n\n\t\tPromise.all( this._invokeAll( function ( ext ) {\n\n\t\t\treturn ext.beforeRoot && ext.beforeRoot();\n\n\t\t} ) ).then( function () {\n\n\t\t\treturn Promise.all( [\n\n\t\t\t\tparser.getDependencies( 'scene' ),\n\t\t\t\tparser.getDependencies( 'animation' ),\n\t\t\t\tparser.getDependencies( 'camera' ),\n\n\t\t\t] );\n\n\t\t} ).then( function ( dependencies ) {\n\n\t\t\tconst result = {\n\t\t\t\tscene: dependencies[ 0 ][ json.scene || 0 ],\n\t\t\t\tscenes: dependencies[ 0 ],\n\t\t\t\tanimations: dependencies[ 1 ],\n\t\t\t\tcameras: dependencies[ 2 ],\n\t\t\t\tasset: json.asset,\n\t\t\t\tparser: parser,\n\t\t\t\tuserData: {}\n\t\t\t};\n\n\t\t\taddUnknownExtensionsToUserData( extensions, result, json );\n\n\t\t\tassignExtrasToUserData( result, json );\n\n\t\t\tPromise.all( parser._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.afterRoot && ext.afterRoot( result );\n\n\t\t\t} ) ).then( function () {\n\n\t\t\t\tonLoad( result );\n\n\t\t\t} );\n\n\t\t} ).catch( onError );\n\n\t}\n\n\t/**\n\t * Marks the special nodes/meshes in json for efficient parse.\n\t */\n\t_markDefs() {\n\n\t\tconst nodeDefs = this.json.nodes || [];\n\t\tconst skinDefs = this.json.skins || [];\n\t\tconst meshDefs = this.json.meshes || [];\n\n\t\t// Nothing in the node definition indicates whether it is a Bone or an\n\t\t// Object3D. Use the skins' joint references to mark bones.\n\t\tfor ( let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) {\n\n\t\t\tconst joints = skinDefs[ skinIndex ].joints;\n\n\t\t\tfor ( let i = 0, il = joints.length; i < il; i ++ ) {\n\n\t\t\t\tnodeDefs[ joints[ i ] ].isBone = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Iterate over all nodes, marking references to shared resources,\n\t\t// as well as skeleton joints.\n\t\tfor ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tconst nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.meshCache, nodeDef.mesh );\n\n\t\t\t\t// Nothing in the mesh definition indicates whether it is\n\t\t\t\t// a SkinnedMesh or Mesh. Use the node's mesh reference\n\t\t\t\t// to mark SkinnedMesh if node has skin.\n\t\t\t\tif ( nodeDef.skin !== undefined ) {\n\n\t\t\t\t\tmeshDefs[ nodeDef.mesh ].isSkinnedMesh = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.cameraCache, nodeDef.camera );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Counts references to shared node / Object3D resources. These resources\n\t * can be reused, or \"instantiated\", at multiple nodes in the scene\n\t * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n\t * be marked. Non-scenegraph resources (like Materials, Geometries, and\n\t * Textures) can be reused directly and are not marked here.\n\t *\n\t * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n\t */\n\t_addNodeRef( cache, index ) {\n\n\t\tif ( index === undefined ) return;\n\n\t\tif ( cache.refs[ index ] === undefined ) {\n\n\t\t\tcache.refs[ index ] = cache.uses[ index ] = 0;\n\n\t\t}\n\n\t\tcache.refs[ index ] ++;\n\n\t}\n\n\t/** Returns a reference to a shared resource, cloning it if necessary. */\n\t_getNodeRef( cache, index, object ) {\n\n\t\tif ( cache.refs[ index ] <= 1 ) return object;\n\n\t\tconst ref = object.clone();\n\n\t\t// Propagates mappings to the cloned object, prevents mappings on the\n\t\t// original object from being lost.\n\t\tconst updateMappings = ( original, clone ) => {\n\n\t\t\tconst mappings = this.associations.get( original );\n\t\t\tif ( mappings != null ) {\n\n\t\t\t\tthis.associations.set( clone, mappings );\n\n\t\t\t}\n\n\t\t\tfor ( const [ i, child ] of original.children.entries() ) {\n\n\t\t\t\tupdateMappings( child, clone.children[ i ] );\n\n\t\t\t}\n\n\t\t};\n\n\t\tupdateMappings( object, ref );\n\n\t\tref.name += '_instance_' + ( cache.uses[ index ] ++ );\n\n\t\treturn ref;\n\n\t}\n\n\t_invokeOne( func ) {\n\n\t\tconst extensions = Object.values( this.plugins );\n\t\textensions.push( this );\n\n\t\tfor ( let i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tconst result = func( extensions[ i ] );\n\n\t\t\tif ( result ) return result;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t_invokeAll( func ) {\n\n\t\tconst extensions = Object.values( this.plugins );\n\t\textensions.unshift( this );\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tconst result = func( extensions[ i ] );\n\n\t\t\tif ( result ) pending.push( result );\n\n\t\t}\n\n\t\treturn pending;\n\n\t}\n\n\t/**\n\t * Requests the specified dependency asynchronously, with caching.\n\t * @param {string} type\n\t * @param {number} index\n\t * @return {Promise}\n\t */\n\tgetDependency( type, index ) {\n\n\t\tconst cacheKey = type + ':' + index;\n\t\tlet dependency = this.cache.get( cacheKey );\n\n\t\tif ( ! dependency ) {\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 'scene':\n\t\t\t\t\tdependency = this.loadScene( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'node':\n\t\t\t\t\tdependency = this.loadNode( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'mesh':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMesh && ext.loadMesh( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'accessor':\n\t\t\t\t\tdependency = this.loadAccessor( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bufferView':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadBufferView && ext.loadBufferView( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'buffer':\n\t\t\t\t\tdependency = this.loadBuffer( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'material':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMaterial && ext.loadMaterial( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'texture':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadTexture && ext.loadTexture( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'skin':\n\t\t\t\t\tdependency = this.loadSkin( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'animation':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadAnimation && ext.loadAnimation( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'camera':\n\t\t\t\t\tdependency = this.loadCamera( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\n\n\t\t\t}\n\n\t\t\tthis.cache.add( cacheKey, dependency );\n\n\t\t}\n\n\t\treturn dependency;\n\n\t}\n\n\t/**\n\t * Requests all dependencies of the specified type asynchronously, with caching.\n\t * @param {string} type\n\t * @return {Promise>}\n\t */\n\tgetDependencies( type ) {\n\n\t\tlet dependencies = this.cache.get( type );\n\n\t\tif ( ! dependencies ) {\n\n\t\t\tconst parser = this;\n\t\t\tconst defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || [];\n\n\t\t\tdependencies = Promise.all( defs.map( function ( def, index ) {\n\n\t\t\t\treturn parser.getDependency( type, index );\n\n\t\t\t} ) );\n\n\t\t\tthis.cache.add( type, dependencies );\n\n\t\t}\n\n\t\treturn dependencies;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferIndex\n\t * @return {Promise}\n\t */\n\tloadBuffer( bufferIndex ) {\n\n\t\tconst bufferDef = this.json.buffers[ bufferIndex ];\n\t\tconst loader = this.fileLoader;\n\n\t\tif ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' );\n\n\t\t}\n\n\t\t// If present, GLB container is required to be the first buffer.\n\t\tif ( bufferDef.uri === undefined && bufferIndex === 0 ) {\n\n\t\t\treturn Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body );\n\n\t\t}\n\n\t\tconst options = this.options;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tloader.load( LoaderUtils.resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {\n\n\t\t\t\treject( new Error( 'THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".' ) );\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferViewIndex\n\t * @return {Promise}\n\t */\n\tloadBufferView( bufferViewIndex ) {\n\n\t\tconst bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\n\n\t\treturn this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) {\n\n\t\t\tconst byteLength = bufferViewDef.byteLength || 0;\n\t\t\tconst byteOffset = bufferViewDef.byteOffset || 0;\n\t\t\treturn buffer.slice( byteOffset, byteOffset + byteLength );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n\t * @param {number} accessorIndex\n\t * @return {Promise}\n\t */\n\tloadAccessor( accessorIndex ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\n\t\tconst accessorDef = this.json.accessors[ accessorIndex ];\n\n\t\tif ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) {\n\n\t\t\t// Ignore empty accessors, which may be used to declare runtime\n\t\t\t// information about attributes coming from another source (e.g. Draco\n\t\t\t// compression extension).\n\t\t\treturn Promise.resolve( null );\n\n\t\t}\n\n\t\tconst pendingBufferViews = [];\n\n\t\tif ( accessorDef.bufferView !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) );\n\n\t\t} else {\n\n\t\t\tpendingBufferViews.push( null );\n\n\t\t}\n\n\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) );\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) );\n\n\t\t}\n\n\t\treturn Promise.all( pendingBufferViews ).then( function ( bufferViews ) {\n\n\t\t\tconst bufferView = bufferViews[ 0 ];\n\n\t\t\tconst itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tconst TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\t\t\tconst elementBytes = TypedArray.BYTES_PER_ELEMENT;\n\t\t\tconst itemBytes = elementBytes * itemSize;\n\t\t\tconst byteOffset = accessorDef.byteOffset || 0;\n\t\t\tconst byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined;\n\t\t\tconst normalized = accessorDef.normalized === true;\n\t\t\tlet array, bufferAttribute;\n\n\t\t\t// The buffer is not interleaved if the stride is the item size in bytes.\n\t\t\tif ( byteStride && byteStride !== itemBytes ) {\n\n\t\t\t\t// Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n\t\t\t\t// This makes sure that IBA.count reflects accessor.count properly\n\t\t\t\tconst ibSlice = Math.floor( byteOffset / byteStride );\n\t\t\t\tconst ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\n\t\t\t\tlet ib = parser.cache.get( ibCacheKey );\n\n\t\t\t\tif ( ! ib ) {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes );\n\n\t\t\t\t\t// Integer parameters to IB/IBA are in array elements, not bytes.\n\t\t\t\t\tib = new InterleavedBuffer( array, byteStride / elementBytes );\n\n\t\t\t\t\tparser.cache.add( ibCacheKey, ib );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized );\n\n\t\t\t} else {\n\n\t\t\t\tif ( bufferView === null ) {\n\n\t\t\t\t\tarray = new TypedArray( accessorDef.count * itemSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t\t\t}\n\n\t\t\t// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\t\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\t\tconst itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n\t\t\t\tconst TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ];\n\n\t\t\t\tconst byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n\t\t\t\tconst byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n\n\t\t\t\tconst sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices );\n\t\t\t\tconst sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize );\n\n\t\t\t\tif ( bufferView !== null ) {\n\n\t\t\t\t\t// Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n\t\t\t\t\tbufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, il = sparseIndices.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst index = sparseIndices[ i ];\n\n\t\t\t\t\tbufferAttribute.setX( index, sparseValues[ i * itemSize ] );\n\t\t\t\t\tif ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] );\n\t\t\t\t\tif ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] );\n\t\t\t\t\tif ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] );\n\t\t\t\t\tif ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn bufferAttribute;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n\t * @param {number} textureIndex\n\t * @return {Promise}\n\t */\n\tloadTexture( textureIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst options = this.options;\n\t\tconst textureDef = json.textures[ textureIndex ];\n\t\tconst sourceIndex = textureDef.source;\n\t\tconst sourceDef = json.images[ sourceIndex ];\n\n\t\tlet loader = this.textureLoader;\n\n\t\tif ( sourceDef.uri ) {\n\n\t\t\tconst handler = options.manager.getHandler( sourceDef.uri );\n\t\t\tif ( handler !== null ) loader = handler;\n\n\t\t}\n\n\t\treturn this.loadTextureImage( textureIndex, sourceIndex, loader );\n\n\t}\n\n\tloadTextureImage( textureIndex, sourceIndex, loader ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\t\tconst sourceDef = json.images[ sourceIndex ];\n\n\t\tconst cacheKey = ( sourceDef.uri || sourceDef.bufferView ) + ':' + textureDef.sampler;\n\n\t\tif ( this.textureCache[ cacheKey ] ) {\n\n\t\t\t// See https://github.com/mrdoob/three.js/issues/21559.\n\t\t\treturn this.textureCache[ cacheKey ];\n\n\t\t}\n\n\t\tconst promise = this.loadImageSource( sourceIndex, loader ).then( function ( texture ) {\n\n\t\t\ttexture.flipY = false;\n\n\t\t\ttexture.name = textureDef.name || sourceDef.name || '';\n\n\t\t\tconst samplers = json.samplers || {};\n\t\t\tconst sampler = samplers[ textureDef.sampler ] || {};\n\n\t\t\ttexture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter;\n\t\t\ttexture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter;\n\t\t\ttexture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping;\n\t\t\ttexture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping;\n\n\t\t\tparser.associations.set( texture, { textures: textureIndex } );\n\n\t\t\treturn texture;\n\n\t\t} ).catch( function () {\n\n\t\t\treturn null;\n\n\t\t} );\n\n\t\tthis.textureCache[ cacheKey ] = promise;\n\n\t\treturn promise;\n\n\t}\n\n\tloadImageSource( sourceIndex, loader ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst options = this.options;\n\n\t\tif ( this.sourceCache[ sourceIndex ] !== undefined ) {\n\n\t\t\treturn this.sourceCache[ sourceIndex ].then( ( texture ) => texture.clone() );\n\n\t\t}\n\n\t\tconst sourceDef = json.images[ sourceIndex ];\n\n\t\tconst URL = self.URL || self.webkitURL;\n\n\t\tlet sourceURI = sourceDef.uri || '';\n\t\tlet isObjectURL = false;\n\n\t\tif ( sourceDef.bufferView !== undefined ) {\n\n\t\t\t// Load binary image data from bufferView, if provided.\n\n\t\t\tsourceURI = parser.getDependency( 'bufferView', sourceDef.bufferView ).then( function ( bufferView ) {\n\n\t\t\t\tisObjectURL = true;\n\t\t\t\tconst blob = new Blob( [ bufferView ], { type: sourceDef.mimeType } );\n\t\t\t\tsourceURI = URL.createObjectURL( blob );\n\t\t\t\treturn sourceURI;\n\n\t\t\t} );\n\n\t\t} else if ( sourceDef.uri === undefined ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Image ' + sourceIndex + ' is missing URI and bufferView' );\n\n\t\t}\n\n\t\tconst promise = Promise.resolve( sourceURI ).then( function ( sourceURI ) {\n\n\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\tlet onLoad = resolve;\n\n\t\t\t\tif ( loader.isImageBitmapLoader === true ) {\n\n\t\t\t\t\tonLoad = function ( imageBitmap ) {\n\n\t\t\t\t\t\tconst texture = new Texture( imageBitmap );\n\t\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\t\tresolve( texture );\n\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\tloader.load( LoaderUtils.resolveURL( sourceURI, options.path ), onLoad, undefined, reject );\n\n\t\t\t} );\n\n\t\t} ).then( function ( texture ) {\n\n\t\t\t// Clean up resources and configure Texture.\n\n\t\t\tif ( isObjectURL === true ) {\n\n\t\t\t\tURL.revokeObjectURL( sourceURI );\n\n\t\t\t}\n\n\t\t\ttexture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType( sourceDef.uri );\n\n\t\t\treturn texture;\n\n\t\t} ).catch( function ( error ) {\n\n\t\t\tconsole.error( 'THREE.GLTFLoader: Couldn\\'t load texture', sourceURI );\n\t\t\tthrow error;\n\n\t\t} );\n\n\t\tthis.sourceCache[ sourceIndex ] = promise;\n\t\treturn promise;\n\n\t}\n\n\t/**\n\t * Asynchronously assigns a texture to the given material parameters.\n\t * @param {Object} materialParams\n\t * @param {string} mapName\n\t * @param {Object} mapDef\n\t * @return {Promise}\n\t */\n\tassignTexture( materialParams, mapName, mapDef, encoding ) {\n\n\t\tconst parser = this;\n\n\t\treturn this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {\n\n\t\t\t// Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\n\t\t\t// However, we will copy UV set 0 to UV set 1 on demand for aoMap\n\t\t\tif ( mapDef.texCoord !== undefined && mapDef.texCoord != 0 && ! ( mapName === 'aoMap' && mapDef.texCoord == 1 ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV set ' + mapDef.texCoord + ' for texture ' + mapName + ' not yet supported.' );\n\n\t\t\t}\n\n\t\t\tif ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) {\n\n\t\t\t\tconst transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined;\n\n\t\t\t\tif ( transform ) {\n\n\t\t\t\t\tconst gltfReference = parser.associations.get( texture );\n\t\t\t\t\ttexture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform );\n\t\t\t\t\tparser.associations.set( texture, gltfReference );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( encoding !== undefined ) {\n\n\t\t\t\ttexture.encoding = encoding;\n\n\t\t\t}\n\n\t\t\tmaterialParams[ mapName ] = texture;\n\n\t\t\treturn texture;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Assigns final material to a Mesh, Line, or Points instance. The instance\n\t * already has a material (generated from the glTF material options alone)\n\t * but reuse of the same glTF material may require multiple threejs materials\n\t * to accommodate different primitive types, defines, etc. New materials will\n\t * be created if necessary, and reused from a cache.\n\t * @param {Object3D} mesh Mesh, Line, or Points instance.\n\t */\n\tassignFinalMaterial( mesh ) {\n\n\t\tconst geometry = mesh.geometry;\n\t\tlet material = mesh.material;\n\n\t\tconst useDerivativeTangents = geometry.attributes.tangent === undefined;\n\t\tconst useVertexColors = geometry.attributes.color !== undefined;\n\t\tconst useFlatShading = geometry.attributes.normal === undefined;\n\n\t\tif ( mesh.isPoints ) {\n\n\t\t\tconst cacheKey = 'PointsMaterial:' + material.uuid;\n\n\t\t\tlet pointsMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! pointsMaterial ) {\n\n\t\t\t\tpointsMaterial = new PointsMaterial();\n\t\t\t\tMaterial.prototype.copy.call( pointsMaterial, material );\n\t\t\t\tpointsMaterial.color.copy( material.color );\n\t\t\t\tpointsMaterial.map = material.map;\n\t\t\t\tpointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n\n\t\t\t\tthis.cache.add( cacheKey, pointsMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = pointsMaterial;\n\n\t\t} else if ( mesh.isLine ) {\n\n\t\t\tconst cacheKey = 'LineBasicMaterial:' + material.uuid;\n\n\t\t\tlet lineMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! lineMaterial ) {\n\n\t\t\t\tlineMaterial = new LineBasicMaterial();\n\t\t\t\tMaterial.prototype.copy.call( lineMaterial, material );\n\t\t\t\tlineMaterial.color.copy( material.color );\n\n\t\t\t\tthis.cache.add( cacheKey, lineMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = lineMaterial;\n\n\t\t}\n\n\t\t// Clone the material if it will be modified\n\t\tif ( useDerivativeTangents || useVertexColors || useFlatShading ) {\n\n\t\t\tlet cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n\n\t\t\tif ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:';\n\t\t\tif ( useDerivativeTangents ) cacheKey += 'derivative-tangents:';\n\t\t\tif ( useVertexColors ) cacheKey += 'vertex-colors:';\n\t\t\tif ( useFlatShading ) cacheKey += 'flat-shading:';\n\n\t\t\tlet cachedMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! cachedMaterial ) {\n\n\t\t\t\tcachedMaterial = material.clone();\n\n\t\t\t\tif ( useVertexColors ) cachedMaterial.vertexColors = true;\n\t\t\t\tif ( useFlatShading ) cachedMaterial.flatShading = true;\n\n\t\t\t\tif ( useDerivativeTangents ) {\n\n\t\t\t\t\t// https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\t\t\t\t\tif ( cachedMaterial.normalScale ) cachedMaterial.normalScale.y *= - 1;\n\t\t\t\t\tif ( cachedMaterial.clearcoatNormalScale ) cachedMaterial.clearcoatNormalScale.y *= - 1;\n\n\t\t\t\t}\n\n\t\t\t\tthis.cache.add( cacheKey, cachedMaterial );\n\n\t\t\t\tthis.associations.set( cachedMaterial, this.associations.get( material ) );\n\n\t\t\t}\n\n\t\t\tmaterial = cachedMaterial;\n\n\t\t}\n\n\t\t// workarounds for mesh and geometry\n\n\t\tif ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) {\n\n\t\t\tgeometry.setAttribute( 'uv2', geometry.attributes.uv );\n\n\t\t}\n\n\t\tmesh.material = material;\n\n\t}\n\n\tgetMaterialType( /* materialIndex */ ) {\n\n\t\treturn MeshStandardMaterial;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n\t * @param {number} materialIndex\n\t * @return {Promise}\n\t */\n\tloadMaterial( materialIndex ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\t\tconst materialDef = json.materials[ materialIndex ];\n\n\t\tlet materialType;\n\t\tconst materialParams = {};\n\t\tconst materialExtensions = materialDef.extensions || {};\n\n\t\tconst pending = [];\n\n\t\tif ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) {\n\n\t\t\tconst sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ];\n\t\t\tmaterialType = sgExtension.getMaterialType();\n\t\t\tpending.push( sgExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) {\n\n\t\t\tconst kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ];\n\t\t\tmaterialType = kmuExtension.getMaterialType();\n\t\t\tpending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else {\n\n\t\t\t// Specification:\n\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n\n\t\t\tconst metallicRoughness = materialDef.pbrMetallicRoughness || {};\n\n\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tconst array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, sRGBEncoding ) );\n\n\t\t\t}\n\n\t\t\tmaterialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n\t\t\tmaterialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n\t\t\tif ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialType = this._invokeOne( function ( ext ) {\n\n\t\t\t\treturn ext.getMaterialType && ext.getMaterialType( materialIndex );\n\n\t\t\t} );\n\n\t\t\tpending.push( Promise.all( this._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.extendMaterialParams && ext.extendMaterialParams( materialIndex, materialParams );\n\n\t\t\t} ) ) );\n\n\t\t}\n\n\t\tif ( materialDef.doubleSided === true ) {\n\n\t\t\tmaterialParams.side = DoubleSide;\n\n\t\t}\n\n\t\tconst alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n\t\tif ( alphaMode === ALPHA_MODES.BLEND ) {\n\n\t\t\tmaterialParams.transparent = true;\n\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/17706\n\t\t\tmaterialParams.depthWrite = false;\n\n\t\t} else {\n\n\t\t\tmaterialParams.transparent = false;\n\n\t\t\tif ( alphaMode === ALPHA_MODES.MASK ) {\n\n\t\t\t\tmaterialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) );\n\n\t\t\tmaterialParams.normalScale = new Vector2( 1, 1 );\n\n\t\t\tif ( materialDef.normalTexture.scale !== undefined ) {\n\n\t\t\t\tconst scale = materialDef.normalTexture.scale;\n\n\t\t\t\tmaterialParams.normalScale.set( scale, scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) );\n\n\t\t\tif ( materialDef.occlusionTexture.strength !== undefined ) {\n\n\t\t\t\tmaterialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tmaterialParams.emissive = new Color().fromArray( materialDef.emissiveFactor );\n\n\t\t}\n\n\t\tif ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture, sRGBEncoding ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\tlet material;\n\n\t\t\tif ( materialType === GLTFMeshStandardSGMaterial ) {\n\n\t\t\t\tmaterial = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams );\n\n\t\t\t} else {\n\n\t\t\t\tmaterial = new materialType( materialParams );\n\n\t\t\t}\n\n\t\t\tif ( materialDef.name ) material.name = materialDef.name;\n\n\t\t\tassignExtrasToUserData( material, materialDef );\n\n\t\t\tparser.associations.set( material, { materials: materialIndex } );\n\n\t\t\tif ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef );\n\n\t\t\treturn material;\n\n\t\t} );\n\n\t}\n\n\t/** When Object3D instances are targeted by animation, they need unique names. */\n\tcreateUniqueName( originalName ) {\n\n\t\tconst sanitizedName = PropertyBinding.sanitizeNodeName( originalName || '' );\n\n\t\tlet name = sanitizedName;\n\n\t\tfor ( let i = 1; this.nodeNamesUsed[ name ]; ++ i ) {\n\n\t\t\tname = sanitizedName + '_' + i;\n\n\t\t}\n\n\t\tthis.nodeNamesUsed[ name ] = true;\n\n\t\treturn name;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n\t *\n\t * Creates BufferGeometries from primitives.\n\t *\n\t * @param {Array} primitives\n\t * @return {Promise>}\n\t */\n\tloadGeometries( primitives ) {\n\n\t\tconst parser = this;\n\t\tconst extensions = this.extensions;\n\t\tconst cache = this.primitiveCache;\n\n\t\tfunction createDracoPrimitive( primitive ) {\n\n\t\t\treturn extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]\n\t\t\t\t.decodePrimitive( primitive, parser )\n\t\t\t\t.then( function ( geometry ) {\n\n\t\t\t\t\treturn addPrimitiveAttributes( geometry, primitive, parser );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tconst primitive = primitives[ i ];\n\t\t\tconst cacheKey = createPrimitiveKey( primitive );\n\n\t\t\t// See if we've already created this geometry\n\t\t\tconst cached = cache[ cacheKey ];\n\n\t\t\tif ( cached ) {\n\n\t\t\t\t// Use the cached geometry if it exists\n\t\t\t\tpending.push( cached.promise );\n\n\t\t\t} else {\n\n\t\t\t\tlet geometryPromise;\n\n\t\t\t\tif ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {\n\n\t\t\t\t\t// Use DRACO geometry if available\n\t\t\t\t\tgeometryPromise = createDracoPrimitive( primitive );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise create a new geometry\n\t\t\t\t\tgeometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser );\n\n\t\t\t\t}\n\n\t\t\t\t// Cache this geometry\n\t\t\t\tcache[ cacheKey ] = { primitive: primitive, promise: geometryPromise };\n\n\t\t\t\tpending.push( geometryPromise );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n\t * @param {number} meshIndex\n\t * @return {Promise}\n\t */\n\tloadMesh( meshIndex ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\n\t\tconst meshDef = json.meshes[ meshIndex ];\n\t\tconst primitives = meshDef.primitives;\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tconst material = primitives[ i ].material === undefined\n\t\t\t\t? createDefaultMaterial( this.cache )\n\t\t\t\t: this.getDependency( 'material', primitives[ i ].material );\n\n\t\t\tpending.push( material );\n\n\t\t}\n\n\t\tpending.push( parser.loadGeometries( primitives ) );\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tconst materials = results.slice( 0, results.length - 1 );\n\t\t\tconst geometries = results[ results.length - 1 ];\n\n\t\t\tconst meshes = [];\n\n\t\t\tfor ( let i = 0, il = geometries.length; i < il; i ++ ) {\n\n\t\t\t\tconst geometry = geometries[ i ];\n\t\t\t\tconst primitive = primitives[ i ];\n\n\t\t\t\t// 1. create Mesh\n\n\t\t\t\tlet mesh;\n\n\t\t\t\tconst material = materials[ i ];\n\n\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n\t\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n\t\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n\t\t\t\t\t\tprimitive.mode === undefined ) {\n\n\t\t\t\t\t// .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n\t\t\t\t\tmesh = meshDef.isSkinnedMesh === true\n\t\t\t\t\t\t? new SkinnedMesh( geometry, material )\n\t\t\t\t\t\t: new Mesh( geometry, material );\n\n\t\t\t\t\tif ( mesh.isSkinnedMesh === true && ! mesh.geometry.attributes.skinWeight.normalized ) {\n\n\t\t\t\t\t\t// we normalize floating point skin weight array to fix malformed assets (see #15319)\n\t\t\t\t\t\t// it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\n\t\t\t\t\t\tmesh.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode );\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) {\n\n\t\t\t\t\tmesh = new LineSegments( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) {\n\n\t\t\t\t\tmesh = new Line( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) {\n\n\t\t\t\t\tmesh = new LineLoop( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) {\n\n\t\t\t\t\tmesh = new Points( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode );\n\n\t\t\t\t}\n\n\t\t\t\tif ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) {\n\n\t\t\t\t\tupdateMorphTargets( mesh, meshDef );\n\n\t\t\t\t}\n\n\t\t\t\tmesh.name = parser.createUniqueName( meshDef.name || ( 'mesh_' + meshIndex ) );\n\n\t\t\t\tassignExtrasToUserData( mesh, meshDef );\n\n\t\t\t\tif ( primitive.extensions ) addUnknownExtensionsToUserData( extensions, mesh, primitive );\n\n\t\t\t\tparser.assignFinalMaterial( mesh );\n\n\t\t\t\tmeshes.push( mesh );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tparser.associations.set( meshes[ i ], {\n\t\t\t\t\tmeshes: meshIndex,\n\t\t\t\t\tprimitives: i\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tif ( meshes.length === 1 ) {\n\n\t\t\t\treturn meshes[ 0 ];\n\n\t\t\t}\n\n\t\t\tconst group = new Group();\n\n\t\t\tparser.associations.set( group, { meshes: meshIndex } );\n\n\t\t\tfor ( let i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tgroup.add( meshes[ i ] );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n\t * @param {number} cameraIndex\n\t * @return {Promise}\n\t */\n\tloadCamera( cameraIndex ) {\n\n\t\tlet camera;\n\t\tconst cameraDef = this.json.cameras[ cameraIndex ];\n\t\tconst params = cameraDef[ cameraDef.type ];\n\n\t\tif ( ! params ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing camera parameters.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( cameraDef.type === 'perspective' ) {\n\n\t\t\tcamera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 );\n\n\t\t} else if ( cameraDef.type === 'orthographic' ) {\n\n\t\t\tcamera = new OrthographicCamera( - params.xmag, params.xmag, params.ymag, - params.ymag, params.znear, params.zfar );\n\n\t\t}\n\n\t\tif ( cameraDef.name ) camera.name = this.createUniqueName( cameraDef.name );\n\n\t\tassignExtrasToUserData( camera, cameraDef );\n\n\t\treturn Promise.resolve( camera );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n\t * @param {number} skinIndex\n\t * @return {Promise}\n\t */\n\tloadSkin( skinIndex ) {\n\n\t\tconst skinDef = this.json.skins[ skinIndex ];\n\n\t\tconst skinEntry = { joints: skinDef.joints };\n\n\t\tif ( skinDef.inverseBindMatrices === undefined ) {\n\n\t\t\treturn Promise.resolve( skinEntry );\n\n\t\t}\n\n\t\treturn this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) {\n\n\t\t\tskinEntry.inverseBindMatrices = accessor;\n\n\t\t\treturn skinEntry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n\t * @param {number} animationIndex\n\t * @return {Promise}\n\t */\n\tloadAnimation( animationIndex ) {\n\n\t\tconst json = this.json;\n\n\t\tconst animationDef = json.animations[ animationIndex ];\n\n\t\tconst pendingNodes = [];\n\t\tconst pendingInputAccessors = [];\n\t\tconst pendingOutputAccessors = [];\n\t\tconst pendingSamplers = [];\n\t\tconst pendingTargets = [];\n\n\t\tfor ( let i = 0, il = animationDef.channels.length; i < il; i ++ ) {\n\n\t\t\tconst channel = animationDef.channels[ i ];\n\t\t\tconst sampler = animationDef.samplers[ channel.sampler ];\n\t\t\tconst target = channel.target;\n\t\t\tconst name = target.node;\n\t\t\tconst input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;\n\t\t\tconst output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;\n\n\t\t\tpendingNodes.push( this.getDependency( 'node', name ) );\n\t\t\tpendingInputAccessors.push( this.getDependency( 'accessor', input ) );\n\t\t\tpendingOutputAccessors.push( this.getDependency( 'accessor', output ) );\n\t\t\tpendingSamplers.push( sampler );\n\t\t\tpendingTargets.push( target );\n\n\t\t}\n\n\t\treturn Promise.all( [\n\n\t\t\tPromise.all( pendingNodes ),\n\t\t\tPromise.all( pendingInputAccessors ),\n\t\t\tPromise.all( pendingOutputAccessors ),\n\t\t\tPromise.all( pendingSamplers ),\n\t\t\tPromise.all( pendingTargets )\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tconst nodes = dependencies[ 0 ];\n\t\t\tconst inputAccessors = dependencies[ 1 ];\n\t\t\tconst outputAccessors = dependencies[ 2 ];\n\t\t\tconst samplers = dependencies[ 3 ];\n\t\t\tconst targets = dependencies[ 4 ];\n\n\t\t\tconst tracks = [];\n\n\t\t\tfor ( let i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tconst node = nodes[ i ];\n\t\t\t\tconst inputAccessor = inputAccessors[ i ];\n\t\t\t\tconst outputAccessor = outputAccessors[ i ];\n\t\t\t\tconst sampler = samplers[ i ];\n\t\t\t\tconst target = targets[ i ];\n\n\t\t\t\tif ( node === undefined ) continue;\n\n\t\t\t\tnode.updateMatrix();\n\n\t\t\t\tlet TypedKeyframeTrack;\n\n\t\t\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\t\t\tTypedKeyframeTrack = QuaternionKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.position:\n\t\t\t\t\tcase PATH_PROPERTIES.scale:\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tconst targetName = node.name ? node.name : node.uuid;\n\n\t\t\t\tconst interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear;\n\n\t\t\t\tconst targetNames = [];\n\n\t\t\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\t\t\tif ( object.morphTargetInfluences ) {\n\n\t\t\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttargetNames.push( targetName );\n\n\t\t\t\t}\n\n\t\t\t\tlet outputArray = outputAccessor.array;\n\n\t\t\t\tif ( outputAccessor.normalized ) {\n\n\t\t\t\t\tconst scale = getNormalizedComponentScale( outputArray.constructor );\n\t\t\t\t\tconst scaled = new Float32Array( outputArray.length );\n\n\t\t\t\t\tfor ( let j = 0, jl = outputArray.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tscaled[ j ] = outputArray[ j ] * scale;\n\n\t\t\t\t\t}\n\n\t\t\t\t\toutputArray = scaled;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0, jl = targetNames.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst track = new TypedKeyframeTrack(\n\t\t\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\t\t\tinputAccessor.array,\n\t\t\t\t\t\toutputArray,\n\t\t\t\t\t\tinterpolation\n\t\t\t\t\t);\n\n\t\t\t\t\t// Override interpolation with custom factory method.\n\t\t\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\n\n\t\t\t\t\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\n\n\t\t\t\t\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\n\t\t\t\t\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n\t\t\t\t\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\n\n\t\t\t\t\t\t\tconst interpolantType = ( this instanceof QuaternionKeyframeTrack ) ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant;\n\n\t\t\t\t\t\t\treturn new interpolantType( this.times, this.values, this.getValueSize() / 3, result );\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\t\t\t\t\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( track );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst name = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\n\n\t\t\treturn new AnimationClip( name, undefined, tracks );\n\n\t\t} );\n\n\t}\n\n\tcreateNodeMesh( nodeIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst parser = this;\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\tif ( nodeDef.mesh === undefined ) return null;\n\n\t\treturn parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) {\n\n\t\t\tconst node = parser._getNodeRef( parser.meshCache, nodeDef.mesh, mesh );\n\n\t\t\t// if weights are provided on the node, override weights on the mesh.\n\t\t\tif ( nodeDef.weights !== undefined ) {\n\n\t\t\t\tnode.traverse( function ( o ) {\n\n\t\t\t\t\tif ( ! o.isMesh ) return;\n\n\t\t\t\t\tfor ( let i = 0, il = nodeDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\t\t\to.morphTargetInfluences[ i ] = nodeDef.weights[ i ];\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n\t * @param {number} nodeIndex\n\t * @return {Promise}\n\t */\n\tloadNode( nodeIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\t\tconst parser = this;\n\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\t// reserve node's name before its dependencies, so the root has the intended name.\n\t\tconst nodeName = nodeDef.name ? parser.createUniqueName( nodeDef.name ) : '';\n\n\t\treturn ( function () {\n\n\t\t\tconst pending = [];\n\n\t\t\tconst meshPromise = parser._invokeOne( function ( ext ) {\n\n\t\t\t\treturn ext.createNodeMesh && ext.createNodeMesh( nodeIndex );\n\n\t\t\t} );\n\n\t\t\tif ( meshPromise ) {\n\n\t\t\t\tpending.push( meshPromise );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) {\n\n\t\t\t\t\treturn parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera );\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\tparser._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.createNodeAttachment && ext.createNodeAttachment( nodeIndex );\n\n\t\t\t} ).forEach( function ( promise ) {\n\n\t\t\t\tpending.push( promise );\n\n\t\t\t} );\n\n\t\t\treturn Promise.all( pending );\n\n\t\t}() ).then( function ( objects ) {\n\n\t\t\tlet node;\n\n\t\t\t// .isBone isn't in glTF spec. See ._markDefs\n\t\t\tif ( nodeDef.isBone === true ) {\n\n\t\t\t\tnode = new Bone();\n\n\t\t\t} else if ( objects.length > 1 ) {\n\n\t\t\t\tnode = new Group();\n\n\t\t\t} else if ( objects.length === 1 ) {\n\n\t\t\t\tnode = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tnode = new Object3D();\n\n\t\t\t}\n\n\t\t\tif ( node !== objects[ 0 ] ) {\n\n\t\t\t\tfor ( let i = 0, il = objects.length; i < il; i ++ ) {\n\n\t\t\t\t\tnode.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.name ) {\n\n\t\t\t\tnode.userData.name = nodeDef.name;\n\t\t\t\tnode.name = nodeName;\n\n\t\t\t}\n\n\t\t\tassignExtrasToUserData( node, nodeDef );\n\n\t\t\tif ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef );\n\n\t\t\tif ( nodeDef.matrix !== undefined ) {\n\n\t\t\t\tconst matrix = new Matrix4();\n\t\t\t\tmatrix.fromArray( nodeDef.matrix );\n\t\t\t\tnode.applyMatrix4( matrix );\n\n\t\t\t} else {\n\n\t\t\t\tif ( nodeDef.translation !== undefined ) {\n\n\t\t\t\t\tnode.position.fromArray( nodeDef.translation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.rotation !== undefined ) {\n\n\t\t\t\t\tnode.quaternion.fromArray( nodeDef.rotation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.scale !== undefined ) {\n\n\t\t\t\t\tnode.scale.fromArray( nodeDef.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ! parser.associations.has( node ) ) {\n\n\t\t\t\tparser.associations.set( node, {} );\n\n\t\t\t}\n\n\t\t\tparser.associations.get( node ).nodes = nodeIndex;\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n\t * @param {number} sceneIndex\n\t * @return {Promise}\n\t */\n\tloadScene( sceneIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\t\tconst sceneDef = this.json.scenes[ sceneIndex ];\n\t\tconst parser = this;\n\n\t\t// Loader returns Group, not Scene.\n\t\t// See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n\t\tconst scene = new Group();\n\t\tif ( sceneDef.name ) scene.name = parser.createUniqueName( sceneDef.name );\n\n\t\tassignExtrasToUserData( scene, sceneDef );\n\n\t\tif ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef );\n\n\t\tconst nodeIds = sceneDef.nodes || [];\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = nodeIds.length; i < il; i ++ ) {\n\n\t\t\tpending.push( buildNodeHierarchy( nodeIds[ i ], scene, json, parser ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\t// Removes dangling associations, associations that reference a node that\n\t\t\t// didn't make it into the scene.\n\t\t\tconst reduceAssociations = ( node ) => {\n\n\t\t\t\tconst reducedAssociations = new Map();\n\n\t\t\t\tfor ( const [ key, value ] of parser.associations ) {\n\n\t\t\t\t\tif ( key instanceof Material || key instanceof Texture ) {\n\n\t\t\t\t\t\treducedAssociations.set( key, value );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tnode.traverse( ( node ) => {\n\n\t\t\t\t\tconst mappings = parser.associations.get( node );\n\n\t\t\t\t\tif ( mappings != null ) {\n\n\t\t\t\t\t\treducedAssociations.set( node, mappings );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\treturn reducedAssociations;\n\n\t\t\t};\n\n\t\t\tparser.associations = reduceAssociations( scene );\n\n\t\t\treturn scene;\n\n\t\t} );\n\n\t}\n\n}\n\nfunction buildNodeHierarchy( nodeId, parentObject, json, parser ) {\n\n\tconst nodeDef = json.nodes[ nodeId ];\n\n\treturn parser.getDependency( 'node', nodeId ).then( function ( node ) {\n\n\t\tif ( nodeDef.skin === undefined ) return node;\n\n\t\t// build skeleton here as well\n\n\t\tlet skinEntry;\n\n\t\treturn parser.getDependency( 'skin', nodeDef.skin ).then( function ( skin ) {\n\n\t\t\tskinEntry = skin;\n\n\t\t\tconst pendingJoints = [];\n\n\t\t\tfor ( let i = 0, il = skinEntry.joints.length; i < il; i ++ ) {\n\n\t\t\t\tpendingJoints.push( parser.getDependency( 'node', skinEntry.joints[ i ] ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pendingJoints );\n\n\t\t} ).then( function ( jointNodes ) {\n\n\t\t\tnode.traverse( function ( mesh ) {\n\n\t\t\t\tif ( ! mesh.isMesh ) return;\n\n\t\t\t\tconst bones = [];\n\t\t\t\tconst boneInverses = [];\n\n\t\t\t\tfor ( let j = 0, jl = jointNodes.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst jointNode = jointNodes[ j ];\n\n\t\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\t\tconst mat = new Matrix4();\n\n\t\t\t\t\t\tif ( skinEntry.inverseBindMatrices !== undefined ) {\n\n\t\t\t\t\t\t\tmat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tmesh.bind( new Skeleton( bones, boneInverses ), mesh.matrixWorld );\n\n\t\t\t} );\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t} ).then( function ( node ) {\n\n\t\t// build node hierachy\n\n\t\tparentObject.add( node );\n\n\t\tconst pending = [];\n\n\t\tif ( nodeDef.children ) {\n\n\t\t\tconst children = nodeDef.children;\n\n\t\t\tfor ( let i = 0, il = children.length; i < il; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\t\t\t\tpending.push( buildNodeHierarchy( child, node, json, parser ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t} );\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n */\nfunction computeBounds( geometry, primitiveDef, parser ) {\n\n\tconst attributes = primitiveDef.attributes;\n\n\tconst box = new Box3();\n\n\tif ( attributes.POSITION !== undefined ) {\n\n\t\tconst accessor = parser.json.accessors[ attributes.POSITION ];\n\n\t\tconst min = accessor.min;\n\t\tconst max = accessor.max;\n\n\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\tbox.set(\n\t\t\t\tnew Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ),\n\t\t\t\tnew Vector3( max[ 0 ], max[ 1 ], max[ 2 ] )\n\t\t\t);\n\n\t\t\tif ( accessor.normalized ) {\n\n\t\t\t\tconst boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] );\n\t\t\t\tbox.min.multiplyScalar( boxScale );\n\t\t\t\tbox.max.multiplyScalar( boxScale );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\treturn;\n\n\t\t}\n\n\t} else {\n\n\t\treturn;\n\n\t}\n\n\tconst targets = primitiveDef.targets;\n\n\tif ( targets !== undefined ) {\n\n\t\tconst maxDisplacement = new Vector3();\n\t\tconst vector = new Vector3();\n\n\t\tfor ( let i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tconst target = targets[ i ];\n\n\t\t\tif ( target.POSITION !== undefined ) {\n\n\t\t\t\tconst accessor = parser.json.accessors[ target.POSITION ];\n\t\t\t\tconst min = accessor.min;\n\t\t\t\tconst max = accessor.max;\n\n\t\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\t\t// we need to get max of absolute components because target weight is [-1,1]\n\t\t\t\t\tvector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) );\n\t\t\t\t\tvector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) );\n\t\t\t\t\tvector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) );\n\n\n\t\t\t\t\tif ( accessor.normalized ) {\n\n\t\t\t\t\t\tconst boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] );\n\t\t\t\t\t\tvector.multiplyScalar( boxScale );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative\n\t\t\t\t\t// to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets\n\t\t\t\t\t// are used to implement key-frame animations and as such only two are active at a time - this results in very large\n\t\t\t\t\t// boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size.\n\t\t\t\t\tmaxDisplacement.max( vector );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets.\n\t\tbox.expandByVector( maxDisplacement );\n\n\t}\n\n\tgeometry.boundingBox = box;\n\n\tconst sphere = new Sphere();\n\n\tbox.getCenter( sphere.center );\n\tsphere.radius = box.min.distanceTo( box.max ) / 2;\n\n\tgeometry.boundingSphere = sphere;\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n * @return {Promise}\n */\nfunction addPrimitiveAttributes( geometry, primitiveDef, parser ) {\n\n\tconst attributes = primitiveDef.attributes;\n\n\tconst pending = [];\n\n\tfunction assignAttributeAccessor( accessorIndex, attributeName ) {\n\n\t\treturn parser.getDependency( 'accessor', accessorIndex )\n\t\t\t.then( function ( accessor ) {\n\n\t\t\t\tgeometry.setAttribute( attributeName, accessor );\n\n\t\t\t} );\n\n\t}\n\n\tfor ( const gltfAttributeName in attributes ) {\n\n\t\tconst threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase();\n\n\t\t// Skip attributes already provided by e.g. Draco extension.\n\t\tif ( threeAttributeName in geometry.attributes ) continue;\n\n\t\tpending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) );\n\n\t}\n\n\tif ( primitiveDef.indices !== undefined && ! geometry.index ) {\n\n\t\tconst accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) {\n\n\t\t\tgeometry.setIndex( accessor );\n\n\t\t} );\n\n\t\tpending.push( accessor );\n\n\t}\n\n\tassignExtrasToUserData( geometry, primitiveDef );\n\n\tcomputeBounds( geometry, primitiveDef, parser );\n\n\treturn Promise.all( pending ).then( function () {\n\n\t\treturn primitiveDef.targets !== undefined\n\t\t\t? addMorphTargets( geometry, primitiveDef.targets, parser )\n\t\t\t: geometry;\n\n\t} );\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {Number} drawMode\n * @return {BufferGeometry}\n */\nfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n\tlet index = geometry.getIndex();\n\n\t// generate index if not present\n\n\tif ( index === null ) {\n\n\t\tconst indices = [];\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\t\tindices.push( i );\n\n\t\t\t}\n\n\t\t\tgeometry.setIndex( indices );\n\t\t\tindex = geometry.getIndex();\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\n\t\t\treturn geometry;\n\n\t\t}\n\n\t}\n\n\t//\n\n\tconst numberOfTriangles = index.count - 2;\n\tconst newIndices = [];\n\n\tif ( drawMode === TriangleFanDrawMode ) {\n\n\t\t// gl.TRIANGLE_FAN\n\n\t\tfor ( let i = 1; i <= numberOfTriangles; i ++ ) {\n\n\t\t\tnewIndices.push( index.getX( 0 ) );\n\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\n\t\t}\n\n\t} else {\n\n\t\t// gl.TRIANGLE_STRIP\n\n\t\tfor ( let i = 0; i < numberOfTriangles; i ++ ) {\n\n\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\n\n\t\t\t} else {\n\n\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\n\n\t}\n\n\t// build final geometry\n\n\tconst newGeometry = geometry.clone();\n\tnewGeometry.setIndex( newIndices );\n\n\treturn newGeometry;\n\n}\n\nexport { GLTFLoader };\n","/**\n * @author Deepkolos / https://github.com/deepkolos\n */\n\nexport class WorkerPool {\n\n\tconstructor( pool = 4 ) {\n\n\t\tthis.pool = pool;\n\t\tthis.queue = [];\n\t\tthis.workers = [];\n\t\tthis.workersResolve = [];\n\t\tthis.workerStatus = 0;\n\n\t}\n\n\t_initWorker( workerId ) {\n\n\t\tif ( ! this.workers[ workerId ] ) {\n\n\t\t\tconst worker = this.workerCreator();\n\t\t\tworker.addEventListener( 'message', this._onMessage.bind( this, workerId ) );\n\t\t\tthis.workers[ workerId ] = worker;\n\n\t\t}\n\n\t}\n\n\t_getIdleWorker() {\n\n\t\tfor ( let i = 0; i < this.pool; i ++ )\n\t\t\tif ( ! ( this.workerStatus & ( 1 << i ) ) ) return i;\n\n\t\treturn - 1;\n\n\t}\n\n\t_onMessage( workerId, msg ) {\n\n\t\tconst resolve = this.workersResolve[ workerId ];\n\t\tresolve && resolve( msg );\n\n\t\tif ( this.queue.length ) {\n\n\t\t\tconst { resolve, msg, transfer } = this.queue.shift();\n\t\t\tthis.workersResolve[ workerId ] = resolve;\n\t\t\tthis.workers[ workerId ].postMessage( msg, transfer );\n\n\t\t} else {\n\n\t\t\tthis.workerStatus ^= 1 << workerId;\n\n\t\t}\n\n\t}\n\n\tsetWorkerCreator( workerCreator ) {\n\n\t\tthis.workerCreator = workerCreator;\n\n\t}\n\n\tsetWorkerLimit( pool ) {\n\n\t\tthis.pool = pool;\n\n\t}\n\n\tpostMessage( msg, transfer ) {\n\n\t\treturn new Promise( ( resolve ) => {\n\n\t\t\tconst workerId = this._getIdleWorker();\n\n\t\t\tif ( workerId !== - 1 ) {\n\n\t\t\t\tthis._initWorker( workerId );\n\t\t\t\tthis.workerStatus |= 1 << workerId;\n\t\t\t\tthis.workersResolve[ workerId ] = resolve;\n\t\t\t\tthis.workers[ workerId ].postMessage( msg, transfer );\n\n\t\t\t} else {\n\n\t\t\t\tthis.queue.push( { resolve, msg, transfer } );\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.workers.forEach( ( worker ) => worker.terminate() );\n\t\tthis.workersResolve.length = 0;\n\t\tthis.workers.length = 0;\n\t\tthis.queue.length = 0;\n\t\tthis.workerStatus = 0;\n\n\t}\n\n}\n","const t=0,e=1,n=2,i=3,s=0,a=0,r=2,o=0,l=1,f=160,U=161,c=162,h=163,_=0,p=1,g=0,y=1,x=2,u=3,b=4,d=5,m=6,w=7,D=8,B=9,L=10,A=11,k=12,v=13,S=14,I=15,O=16,T=17,V=18,E=0,F=1,P=2,C=3,z=4,M=5,W=6,N=7,H=8,K=9,X=10,j=11,R=0,Y=1,q=2,G=13,J=14,Q=15,Z=128,$=64,tt=32,et=16,nt=0,it=1,st=2,at=3,rt=4,ot=5,lt=6,ft=7,Ut=8,ct=9,ht=10,_t=13,pt=14,gt=15,yt=16,xt=17,ut=20,bt=21,dt=22,mt=23,wt=24,Dt=27,Bt=28,Lt=29,At=30,kt=31,vt=34,St=35,It=36,Ot=37,Tt=38,Vt=41,Et=42,Ft=43,Pt=44,Ct=45,zt=48,Mt=49,Wt=50,Nt=58,Ht=59,Kt=62,Xt=63,jt=64,Rt=65,Yt=68,qt=69,Gt=70,Jt=71,Qt=74,Zt=75,$t=76,te=77,ee=78,ne=81,ie=82,se=83,ae=84,re=85,oe=88,le=89,fe=90,Ue=91,ce=92,he=95,_e=96,pe=97,ge=98,ye=99,xe=100,ue=101,be=102,de=103,me=104,we=105,De=106,Be=107,Le=108,Ae=109,ke=110,ve=111,Se=112,Ie=113,Oe=114,Te=115,Ve=116,Ee=117,Fe=118,Pe=119,Ce=120,ze=121,Me=122,We=123,Ne=124,He=125,Ke=126,Xe=127,je=128,Re=129,Ye=130,qe=131,Ge=132,Je=133,Qe=134,Ze=135,$e=136,tn=137,en=138,nn=139,sn=140,an=141,rn=142,on=143,ln=144,fn=145,Un=146,cn=147,hn=148,_n=149,pn=150,gn=151,yn=152,xn=153,un=154,bn=155,dn=156,mn=157,wn=158,Dn=159,Bn=160,Ln=161,An=162,kn=163,vn=164,Sn=165,In=166,On=167,Tn=168,Vn=169,En=170,Fn=171,Pn=172,Cn=173,zn=174,Mn=175,Wn=176,Nn=177,Hn=178,Kn=179,Xn=180,jn=181,Rn=182,Yn=183,qn=184,Gn=1000156007,Jn=1000156008,Qn=1000156009,Zn=1000156010,$n=1000156011,ti=1000156017,ei=1000156018,ni=1000156019,ii=1000156020,si=1000156021,ai=1000054e3,ri=1000054001,oi=1000054002,li=1000054003,fi=1000054004,Ui=1000054005,ci=1000054006,hi=1000054007,_i=1000066e3,pi=1000066001,gi=1000066002,yi=1000066003,xi=1000066004,ui=1000066005,bi=1000066006,di=1000066007,mi=1000066008,wi=1000066009,Di=1000066010,Bi=1000066011,Li=1000066012,Ai=1000066013,ki=100034e4,vi=1000340001;class Si{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class Ii{constructor(t,e,n,i){this._dataView=new DataView(t.buffer,t.byteOffset+e,n),this._littleEndian=i,this._offset=0}_nextUint8(){const t=this._dataView.getUint8(this._offset);return this._offset+=1,t}_nextUint16(){const t=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,t}_nextUint32(){const t=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,t}_nextUint64(){const t=this._dataView.getUint32(this._offset,this._littleEndian)+2**32*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,t}_nextInt32(){const t=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,t}_skip(t){return this._offset+=t,this}_scan(t,e=0){const n=this._offset;let i=0;for(;this._dataView.getUint8(this._offset)!==e&&i0?c+a.byteLength:0;h%8&&(h+=8-h%8);const _=[],p=new DataView(new ArrayBuffer(3*t.levels.length*8));let g=(h||c+a.byteLength)+n.byteLength;for(let e=0;e0?h:0),!0),x.setBigUint64(60,BigInt(n.byteLength),!0),new Uint8Array(Fi([new Uint8Array(Ti).buffer,y,p.buffer,o,a,h>0?new ArrayBuffer(h-(c+a.byteLength)):new ArrayBuffer(0),n,..._]))}export{Q as KHR_DF_CHANNEL_RGBSDA_ALPHA,q as KHR_DF_CHANNEL_RGBSDA_BLUE,J as KHR_DF_CHANNEL_RGBSDA_DEPTH,Y as KHR_DF_CHANNEL_RGBSDA_GREEN,R as KHR_DF_CHANNEL_RGBSDA_RED,G as KHR_DF_CHANNEL_RGBSDA_STENCIL,p as KHR_DF_FLAG_ALPHA_PREMULTIPLIED,_ as KHR_DF_FLAG_ALPHA_STRAIGHT,s as KHR_DF_KHR_DESCRIPTORTYPE_BASICFORMAT,c as KHR_DF_MODEL_ASTC,f as KHR_DF_MODEL_ETC1,h as KHR_DF_MODEL_ETC1S,U as KHR_DF_MODEL_ETC2,l as KHR_DF_MODEL_RGBSDA,o as KHR_DF_MODEL_UNSPECIFIED,W as KHR_DF_PRIMARIES_ACES,N as KHR_DF_PRIMARIES_ACESCC,j as KHR_DF_PRIMARIES_ADOBERGB,z as KHR_DF_PRIMARIES_BT2020,P as KHR_DF_PRIMARIES_BT601_EBU,C as KHR_DF_PRIMARIES_BT601_SMPTE,F as KHR_DF_PRIMARIES_BT709,M as KHR_DF_PRIMARIES_CIEXYZ,X as KHR_DF_PRIMARIES_DISPLAYP3,H as KHR_DF_PRIMARIES_NTSC1953,K as KHR_DF_PRIMARIES_PAL525,E as KHR_DF_PRIMARIES_UNSPECIFIED,tt as KHR_DF_SAMPLE_DATATYPE_EXPONENT,Z as KHR_DF_SAMPLE_DATATYPE_FLOAT,et as KHR_DF_SAMPLE_DATATYPE_LINEAR,$ as KHR_DF_SAMPLE_DATATYPE_SIGNED,O as KHR_DF_TRANSFER_ACESCC,T as KHR_DF_TRANSFER_ACESCCT,V as KHR_DF_TRANSFER_ADOBERGB,w as KHR_DF_TRANSFER_BT1886,k as KHR_DF_TRANSFER_DCIP3,B as KHR_DF_TRANSFER_HLG_EOTF,D as KHR_DF_TRANSFER_HLG_OETF,u as KHR_DF_TRANSFER_ITU,y as KHR_DF_TRANSFER_LINEAR,b as KHR_DF_TRANSFER_NTSC,S as KHR_DF_TRANSFER_PAL625_EOTF,v as KHR_DF_TRANSFER_PAL_OETF,L as KHR_DF_TRANSFER_PQ_EOTF,A as KHR_DF_TRANSFER_PQ_OETF,d as KHR_DF_TRANSFER_SLOG,m as KHR_DF_TRANSFER_SLOG2,x as KHR_DF_TRANSFER_SRGB,I as KHR_DF_TRANSFER_ST240,g as KHR_DF_TRANSFER_UNSPECIFIED,a as KHR_DF_VENDORID_KHRONOS,r as KHR_DF_VERSION,e as KHR_SUPERCOMPRESSION_BASISLZ,t as KHR_SUPERCOMPRESSION_NONE,i as KHR_SUPERCOMPRESSION_ZLIB,n as KHR_SUPERCOMPRESSION_ZSTD,Si as KTX2Container,Ut as VK_FORMAT_A1R5G5B5_UNORM_PACK16,qt as VK_FORMAT_A2B10G10R10_SINT_PACK32,Rt as VK_FORMAT_A2B10G10R10_SNORM_PACK32,Yt as VK_FORMAT_A2B10G10R10_UINT_PACK32,jt as VK_FORMAT_A2B10G10R10_UNORM_PACK32,Xt as VK_FORMAT_A2R10G10B10_SINT_PACK32,Ht as VK_FORMAT_A2R10G10B10_SNORM_PACK32,Kt as VK_FORMAT_A2R10G10B10_UINT_PACK32,Nt as VK_FORMAT_A2R10G10B10_UNORM_PACK32,vi as VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT,ki as VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT,Bi as VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT,Xn as VK_FORMAT_ASTC_10x10_SRGB_BLOCK,Kn as VK_FORMAT_ASTC_10x10_UNORM_BLOCK,mi as VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT,zn as VK_FORMAT_ASTC_10x5_SRGB_BLOCK,Cn as VK_FORMAT_ASTC_10x5_UNORM_BLOCK,wi as VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT,Wn as VK_FORMAT_ASTC_10x6_SRGB_BLOCK,Mn as VK_FORMAT_ASTC_10x6_UNORM_BLOCK,Di as VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT,Hn as VK_FORMAT_ASTC_10x8_SRGB_BLOCK,Nn as VK_FORMAT_ASTC_10x8_UNORM_BLOCK,Li as VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT,Rn as VK_FORMAT_ASTC_12x10_SRGB_BLOCK,jn as VK_FORMAT_ASTC_12x10_UNORM_BLOCK,Ai as VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT,qn as VK_FORMAT_ASTC_12x12_SRGB_BLOCK,Yn as VK_FORMAT_ASTC_12x12_UNORM_BLOCK,_i as VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT,wn as VK_FORMAT_ASTC_4x4_SRGB_BLOCK,mn as VK_FORMAT_ASTC_4x4_UNORM_BLOCK,pi as VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT,Bn as VK_FORMAT_ASTC_5x4_SRGB_BLOCK,Dn as VK_FORMAT_ASTC_5x4_UNORM_BLOCK,gi as VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT,An as VK_FORMAT_ASTC_5x5_SRGB_BLOCK,Ln as VK_FORMAT_ASTC_5x5_UNORM_BLOCK,yi as VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT,vn as VK_FORMAT_ASTC_6x5_SRGB_BLOCK,kn as VK_FORMAT_ASTC_6x5_UNORM_BLOCK,xi as VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT,In as VK_FORMAT_ASTC_6x6_SRGB_BLOCK,Sn as VK_FORMAT_ASTC_6x6_UNORM_BLOCK,ui as VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT,Tn as VK_FORMAT_ASTC_8x5_SRGB_BLOCK,On as VK_FORMAT_ASTC_8x5_UNORM_BLOCK,bi as VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT,En as VK_FORMAT_ASTC_8x6_SRGB_BLOCK,Vn as VK_FORMAT_ASTC_8x6_UNORM_BLOCK,di as VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT,Pn as VK_FORMAT_ASTC_8x8_SRGB_BLOCK,Fn as VK_FORMAT_ASTC_8x8_UNORM_BLOCK,Me as VK_FORMAT_B10G11R11_UFLOAT_PACK32,$n as VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,si as VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,at as VK_FORMAT_B4G4R4A4_UNORM_PACK16,ft as VK_FORMAT_B5G5R5A1_UNORM_PACK16,ot as VK_FORMAT_B5G6R5_UNORM_PACK16,Mt as VK_FORMAT_B8G8R8A8_SINT,Ct as VK_FORMAT_B8G8R8A8_SNORM,Wt as VK_FORMAT_B8G8R8A8_SRGB,zt as VK_FORMAT_B8G8R8A8_UINT,Pt as VK_FORMAT_B8G8R8A8_UNORM,St as VK_FORMAT_B8G8R8_SINT,kt as VK_FORMAT_B8G8R8_SNORM,It as VK_FORMAT_B8G8R8_SRGB,vt as VK_FORMAT_B8G8R8_UINT,At as VK_FORMAT_B8G8R8_UNORM,Qe as VK_FORMAT_BC1_RGBA_SRGB_BLOCK,Je as VK_FORMAT_BC1_RGBA_UNORM_BLOCK,Ge as VK_FORMAT_BC1_RGB_SRGB_BLOCK,qe as VK_FORMAT_BC1_RGB_UNORM_BLOCK,$e as VK_FORMAT_BC2_SRGB_BLOCK,Ze as VK_FORMAT_BC2_UNORM_BLOCK,en as VK_FORMAT_BC3_SRGB_BLOCK,tn as VK_FORMAT_BC3_UNORM_BLOCK,sn as VK_FORMAT_BC4_SNORM_BLOCK,nn as VK_FORMAT_BC4_UNORM_BLOCK,rn as VK_FORMAT_BC5_SNORM_BLOCK,an as VK_FORMAT_BC5_UNORM_BLOCK,ln as VK_FORMAT_BC6H_SFLOAT_BLOCK,on as VK_FORMAT_BC6H_UFLOAT_BLOCK,Un as VK_FORMAT_BC7_SRGB_BLOCK,fn as VK_FORMAT_BC7_UNORM_BLOCK,Ne as VK_FORMAT_D16_UNORM,je as VK_FORMAT_D16_UNORM_S8_UINT,Re as VK_FORMAT_D24_UNORM_S8_UINT,Ke as VK_FORMAT_D32_SFLOAT,Ye as VK_FORMAT_D32_SFLOAT_S8_UINT,We as VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,dn as VK_FORMAT_EAC_R11G11_SNORM_BLOCK,bn as VK_FORMAT_EAC_R11G11_UNORM_BLOCK,un as VK_FORMAT_EAC_R11_SNORM_BLOCK,xn as VK_FORMAT_EAC_R11_UNORM_BLOCK,pn as VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,_n as VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,yn as VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,gn as VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,hn as VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,cn as VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,Zn as VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,ii as VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,fi as VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,ai as VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,Ui as VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,ri as VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,ci as VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,oi as VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,hi as VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG,li as VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,Qn as VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,Jn as VK_FORMAT_R10X6G10X6_UNORM_2PACK16,Gn as VK_FORMAT_R10X6_UNORM_PACK16,ni as VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,ei as VK_FORMAT_R12X4G12X4_UNORM_2PACK16,ti as VK_FORMAT_R12X4_UNORM_PACK16,pe as VK_FORMAT_R16G16B16A16_SFLOAT,_e as VK_FORMAT_R16G16B16A16_SINT,ce as VK_FORMAT_R16G16B16A16_SNORM,he as VK_FORMAT_R16G16B16A16_UINT,Ue as VK_FORMAT_R16G16B16A16_UNORM,fe as VK_FORMAT_R16G16B16_SFLOAT,le as VK_FORMAT_R16G16B16_SINT,re as VK_FORMAT_R16G16B16_SNORM,oe as VK_FORMAT_R16G16B16_UINT,ae as VK_FORMAT_R16G16B16_UNORM,se as VK_FORMAT_R16G16_SFLOAT,ie as VK_FORMAT_R16G16_SINT,ee as VK_FORMAT_R16G16_SNORM,ne as VK_FORMAT_R16G16_UINT,te as VK_FORMAT_R16G16_UNORM,$t as VK_FORMAT_R16_SFLOAT,Zt as VK_FORMAT_R16_SINT,Jt as VK_FORMAT_R16_SNORM,Qt as VK_FORMAT_R16_UINT,Gt as VK_FORMAT_R16_UNORM,Ae as VK_FORMAT_R32G32B32A32_SFLOAT,Le as VK_FORMAT_R32G32B32A32_SINT,Be as VK_FORMAT_R32G32B32A32_UINT,De as VK_FORMAT_R32G32B32_SFLOAT,we as VK_FORMAT_R32G32B32_SINT,me as VK_FORMAT_R32G32B32_UINT,de as VK_FORMAT_R32G32_SFLOAT,be as VK_FORMAT_R32G32_SINT,ue as VK_FORMAT_R32G32_UINT,xe as VK_FORMAT_R32_SFLOAT,ye as VK_FORMAT_R32_SINT,ge as VK_FORMAT_R32_UINT,st as VK_FORMAT_R4G4B4A4_UNORM_PACK16,it as VK_FORMAT_R4G4_UNORM_PACK8,lt as VK_FORMAT_R5G5B5A1_UNORM_PACK16,rt as VK_FORMAT_R5G6B5_UNORM_PACK16,ze as VK_FORMAT_R64G64B64A64_SFLOAT,Ce as VK_FORMAT_R64G64B64A64_SINT,Pe as VK_FORMAT_R64G64B64A64_UINT,Fe as VK_FORMAT_R64G64B64_SFLOAT,Ee as VK_FORMAT_R64G64B64_SINT,Ve as VK_FORMAT_R64G64B64_UINT,Te as VK_FORMAT_R64G64_SFLOAT,Oe as VK_FORMAT_R64G64_SINT,Ie as VK_FORMAT_R64G64_UINT,Se as VK_FORMAT_R64_SFLOAT,ve as VK_FORMAT_R64_SINT,ke as VK_FORMAT_R64_UINT,Et as VK_FORMAT_R8G8B8A8_SINT,Tt as VK_FORMAT_R8G8B8A8_SNORM,Ft as VK_FORMAT_R8G8B8A8_SRGB,Vt as VK_FORMAT_R8G8B8A8_UINT,Ot as VK_FORMAT_R8G8B8A8_UNORM,Bt as VK_FORMAT_R8G8B8_SINT,wt as VK_FORMAT_R8G8B8_SNORM,Lt as VK_FORMAT_R8G8B8_SRGB,Dt as VK_FORMAT_R8G8B8_UINT,mt as VK_FORMAT_R8G8B8_UNORM,bt as VK_FORMAT_R8G8_SINT,xt as VK_FORMAT_R8G8_SNORM,dt as VK_FORMAT_R8G8_SRGB,ut as VK_FORMAT_R8G8_UINT,yt as VK_FORMAT_R8G8_UNORM,pt as VK_FORMAT_R8_SINT,ht as VK_FORMAT_R8_SNORM,gt as VK_FORMAT_R8_SRGB,_t as VK_FORMAT_R8_UINT,ct as VK_FORMAT_R8_UNORM,Xe as VK_FORMAT_S8_UINT,nt as VK_FORMAT_UNDEFINED,He as VK_FORMAT_X8_D24_UNORM_PACK32,Pi as read,Mi as write};\n","let A,I,B;const g={env:{emscripten_notify_memory_growth:function(A){B=new Uint8Array(I.exports.memory.buffer)}}};class Q{init(){return A||(A=\"undefined\"!=typeof fetch?fetch(\"data:application/wasm;base64,\"+C).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,g)).then(this._init):WebAssembly.instantiate(Buffer.from(C,\"base64\"),g).then(this._init),A)}_init(A){I=A.instance,g.env.emscripten_notify_memory_growth(0)}decode(A,g=0){if(!I)throw new Error(\"ZSTDDecoder: Await .init() before decoding.\");const Q=A.byteLength,C=I.exports.malloc(Q);B.set(A,C),g=g||Number(I.exports.ZSTD_findDecompressedSize(C,Q));const E=I.exports.malloc(g),i=I.exports.ZSTD_decompress(E,g,C,Q),D=B.slice(E,E+i);return I.exports.free(C),I.exports.free(E),D}}const C=\"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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQhBSAGQQR2IQRBICAAdCIAQQFyIQkgASgCACEPQQAhAiADIQYCQANAIAlBAkggAiAPS3JFBEAgAiEHAkAgCARAA0AgBEH//wNxQf//A0YEQCAHQRhqIQcgBiAQSQR/IAZBAmoiBigAACAFdgUgBUEQaiEFIARBEHYLIQQMAQsLA0AgBEEDcSIIQQNGBEAgBUECaiEFIARBAnYhBCAHQQNqIQcMAQsLIAcgCGoiByAPSw0EIAVBAmohBQNAIAIgB0kEQCANIAJBAXRqQQA7AQAgAkEBaiECDAELCyAGIA5LQQAgBiAFQQN1aiIHIAxLG0UEQCAHKAAAIAVBB3EiBXYhBAwCCyAEQQJ2IQQLIAYhBwsCfyALQX9qIAQgAEF/anEiBiAAQQF0QX9qIgggCWsiEUkNABogBCAIcSIEQQAgESAEIABIG2shBiALCyEIIA0gAkEBdGogBkF/aiIEOwEAIAlBASAGayAEIAZBAUgbayEJA0AgCSAASARAIABBAXUhACALQX9qIQsMAQsLAn8gByAOS0EAIAcgBSAIaiIFQQN1aiIGIAxLG0UEQCAFQQdxDAELIAUgDCIGIAdrQQN0awshBSACQQFqIQIgBEUhCCAGKAAAIAVBH3F2IQQMAQsLQWwgCUEBRyAFQSBKcg0BGiABIAJBf2o2AgAgBiAFQQdqQQN1aiADawwBC0FQCyEAIApBEGokACAACwkAQQFBBSAAGwsMACAAIAEoAAA2AAALqgMBCn8jAEHwAGsiCiQAIAJBAWohDiAAQQhqIQtBgIAEIAVBf2p0QRB1IQxBACECQQEhBkEBIAV0IglBf2oiDyEIA0AgAiAORkUEQAJAIAEgAkEBdCINai8BACIHQf//A0YEQCALIAhBA3RqIAI2AgQgCEF/aiEIQQEhBwwBCyAGQQAgDCAHQRB0QRB1ShshBgsgCiANaiAHOwEAIAJBAWohAgwBCwsgACAFNgIEIAAgBjYCACAJQQN2IAlBAXZqQQNqIQxBACEAQQAhBkEAIQIDQCAGIA5GBEADQAJAIAAgCUYNACAKIAsgAEEDdGoiASgCBCIGQQF0aiICIAIvAQAiAkEBajsBACABIAUgAhAUayIIOgADIAEgAiAIQf8BcXQgCWs7AQAgASAEIAZBAnQiAmooAgA6AAIgASACIANqKAIANgIEIABBAWohAAwBCwsFIAEgBkEBdGouAQAhDUEAIQcDQCAHIA1ORQRAIAsgAkEDdGogBjYCBANAIAIgDGogD3EiAiAISw0ACyAHQQFqIQcMAQsLIAZBAWohBgwBCwsgCkHwAGokAAsjAEIAIAEQCSAAhUKHla+vmLbem55/fkLj3MqV/M7y9YV/fAsQACAAQn43AwggACABNgIACyQBAX8gAARAIAEoAgQiAgRAIAEoAgggACACEQEADwsgABAmCwsfACAAIAEgAi8BABAINgIAIAEQBBogACACQQRqNgIEC0oBAX9BoCAoAgAiASAAaiIAQX9MBEBBiCBBMDYCAEF/DwsCQCAAPwBBEHRNDQAgABBmDQBBiCBBMDYCAEF/DwtBoCAgADYCACABC9cBAQh/Qbp/IQoCQCACKAIEIgggAigCACIJaiIOIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQ0gACABQWBqIg8gCyAJQQAQKSADIAkgC2o2AgACQAJAIAwgBCAFa00EQCANIQUMAQsgDCAEIAZrSw0CIAcgDSAFayIAaiIBIAhqIAdNBEAgBCABIAgQDxoMAgsgBCABQQAgAGsQDyEBIAIgACAIaiIINgIEIAEgAGshBAsgBCAPIAUgCEEBECkLIA4hCgsgCgubAgEBfyMAQYABayINJAAgDSADNgJ8AkAgAkEDSwRAQX8hCQwBCwJAAkACQAJAIAJBAWsOAwADAgELIAZFBEBBuH8hCQwEC0FsIQkgBS0AACICIANLDQMgACAHIAJBAnQiAmooAgAgAiAIaigCABA7IAEgADYCAEEBIQkMAwsgASAJNgIAQQAhCQwCCyAKRQRAQWwhCQwCC0EAIQkgC0UgDEEZSHINAUEIIAR0QQhqIQBBACECA0AgAiAATw0CIAJBQGshAgwAAAsAC0FsIQkgDSANQfwAaiANQfgAaiAFIAYQFSICEAMNACANKAJ4IgMgBEsNACAAIA0gDSgCfCAHIAggAxAYIAEgADYCACACIQkLIA1BgAFqJAAgCQsLACAAIAEgAhALGgsQACAALwAAIAAtAAJBEHRyCy8AAn9BuH8gAUEISQ0AGkFyIAAoAAQiAEF3Sw0AGkG4fyAAQQhqIgAgACABSxsLCwkAIAAgATsAAAsDAAELigYBBX8gACAAKAIAIgVBfnE2AgBBACAAIAVBAXZqQYQgKAIAIgQgAEYbIQECQAJAIAAoAgQiAkUNACACKAIAIgNBAXENACACQQhqIgUgA0EBdkF4aiIDQQggA0EISxtnQR9zQQJ0QYAfaiIDKAIARgRAIAMgAigCDDYCAAsgAigCCCIDBEAgAyACKAIMNgIECyACKAIMIgMEQCADIAIoAgg2AgALIAIgAigCACAAKAIAQX5xajYCAEGEICEAAkACQCABRQ0AIAEgAjYCBCABKAIAIgNBAXENASADQQF2QXhqIgNBCCADQQhLG2dBH3NBAnRBgB9qIgMoAgAgAUEIakYEQCADIAEoAgw2AgALIAEoAggiAwRAIAMgASgCDDYCBAsgASgCDCIDBEAgAyABKAIINgIAQYQgKAIAIQQLIAIgAigCACABKAIAQX5xajYCACABIARGDQAgASABKAIAQQF2akEEaiEACyAAIAI2AgALIAIoAgBBAXZBeGoiAEEIIABBCEsbZ0Efc0ECdEGAH2oiASgCACEAIAEgBTYCACACIAA2AgwgAkEANgIIIABFDQEgACAFNgIADwsCQCABRQ0AIAEoAgAiAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAigCACABQQhqRgRAIAIgASgCDDYCAAsgASgCCCICBEAgAiABKAIMNgIECyABKAIMIgIEQCACIAEoAgg2AgBBhCAoAgAhBAsgACAAKAIAIAEoAgBBfnFqIgI2AgACQCABIARHBEAgASABKAIAQQF2aiAANgIEIAAoAgAhAgwBC0GEICAANgIACyACQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgIoAgAhASACIABBCGoiAjYCACAAIAE2AgwgAEEANgIIIAFFDQEgASACNgIADwsgBUEBdkF4aiIBQQggAUEISxtnQR9zQQJ0QYAfaiICKAIAIQEgAiAAQQhqIgI2AgAgACABNgIMIABBADYCCCABRQ0AIAEgAjYCAAsLDgAgAARAIABBeGoQJQsLgAIBA38CQCAAQQ9qQXhxQYQgKAIAKAIAQQF2ayICEB1Bf0YNAAJAQYQgKAIAIgAoAgAiAUEBcQ0AIAFBAXZBeGoiAUEIIAFBCEsbZ0Efc0ECdEGAH2oiASgCACAAQQhqRgRAIAEgACgCDDYCAAsgACgCCCIBBEAgASAAKAIMNgIECyAAKAIMIgFFDQAgASAAKAIINgIAC0EBIQEgACAAKAIAIAJBAXRqIgI2AgAgAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAygCACECIAMgAEEIaiIDNgIAIAAgAjYCDCAAQQA2AgggAkUNACACIAM2AgALIAELtwIBA38CQAJAIABBASAAGyICEDgiAA0AAkACQEGEICgCACIARQ0AIAAoAgAiA0EBcQ0AIAAgA0EBcjYCACADQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgAgAEEIakYEQCABIAAoAgw2AgALIAAoAggiAQRAIAEgACgCDDYCBAsgACgCDCIBBEAgASAAKAIINgIACyACECchAkEAIQFBhCAoAgAhACACDQEgACAAKAIAQX5xNgIAQQAPCyACQQ9qQXhxIgMQHSICQX9GDQIgAkEHakF4cSIAIAJHBEAgACACaxAdQX9GDQMLAkBBhCAoAgAiAUUEQEGAICAANgIADAELIAAgATYCBAtBhCAgADYCACAAIANBAXRBAXI2AgAMAQsgAEUNAQsgAEEIaiEBCyABC7kDAQJ/IAAgA2ohBQJAIANBB0wEQANAIAAgBU8NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwAAAsACyAEQQFGBEACQCAAIAJrIgZBB00EQCAAIAItAAA6AAAgACACLQABOgABIAAgAi0AAjoAAiAAIAItAAM6AAMgAEEEaiACIAZBAnQiBkHAHmooAgBqIgIQFyACIAZB4B5qKAIAayECDAELIAAgAhAMCyACQQhqIQIgAEEIaiEACwJAAkACQAJAIAUgAU0EQCAAIANqIQEgBEEBRyAAIAJrQQ9Kcg0BA0AgACACEAwgAkEIaiECIABBCGoiACABSQ0ACwwFCyAAIAFLBEAgACEBDAQLIARBAUcgACACa0EPSnINASAAIQMgAiEEA0AgAyAEEAwgBEEIaiEEIANBCGoiAyABSQ0ACwwCCwNAIAAgAhAHIAJBEGohAiAAQRBqIgAgAUkNAAsMAwsgACEDIAIhBANAIAMgBBAHIARBEGohBCADQRBqIgMgAUkNAAsLIAIgASAAa2ohAgsDQCABIAVPDQEgASACLQAAOgAAIAFBAWohASACQQFqIQIMAAALAAsLQQECfyAAIAAoArjgASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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\";export{Q as ZSTDDecoder};\n","/**\n * Loader for KTX 2.0 GPU Texture containers.\n *\n * KTX 2.0 is a container format for various GPU texture formats. The loader\n * supports Basis Universal GPU textures, which can be quickly transcoded to\n * a wide variety of GPU texture compression formats, as well as some\n * uncompressed DataTexture and Data3DTexture formats.\n *\n * References:\n * - KTX: http://github.khronos.org/KTX-Specification/\n * - DFD: https://www.khronos.org/registry/DataFormat/specs/1.3/dataformat.1.3.html#basicdescriptor\n */\n\nimport {\n\tCompressedTexture,\n\tCompressedArrayTexture,\n\tData3DTexture,\n\tDataTexture,\n\tFileLoader,\n\tFloatType,\n\tHalfFloatType,\n\tLinearEncoding,\n\tLinearFilter,\n\tLinearMipmapLinearFilter,\n\tLoader,\n\tRedFormat,\n\tRGB_ETC1_Format,\n\tRGB_ETC2_Format,\n\tRGB_PVRTC_4BPPV1_Format,\n\tRGB_S3TC_DXT1_Format,\n\tRGBA_ASTC_4x4_Format,\n\tRGBA_BPTC_Format,\n\tRGBA_ETC2_EAC_Format,\n\tRGBA_PVRTC_4BPPV1_Format,\n\tRGBA_S3TC_DXT5_Format,\n\tRGBAFormat,\n\tRGFormat,\n\tsRGBEncoding,\n\tUnsignedByteType,\n} from 'three';\nimport { WorkerPool } from '../utils/WorkerPool.js';\nimport {\n\tread,\n\tKHR_DF_FLAG_ALPHA_PREMULTIPLIED,\n\tKHR_DF_TRANSFER_SRGB,\n\tKHR_SUPERCOMPRESSION_NONE,\n\tKHR_SUPERCOMPRESSION_ZSTD,\n\tVK_FORMAT_UNDEFINED,\n\tVK_FORMAT_R16_SFLOAT,\n\tVK_FORMAT_R16G16_SFLOAT,\n\tVK_FORMAT_R16G16B16A16_SFLOAT,\n\tVK_FORMAT_R32_SFLOAT,\n\tVK_FORMAT_R32G32_SFLOAT,\n\tVK_FORMAT_R32G32B32A32_SFLOAT,\n\tVK_FORMAT_R8_SRGB,\n\tVK_FORMAT_R8_UNORM,\n\tVK_FORMAT_R8G8_SRGB,\n\tVK_FORMAT_R8G8_UNORM,\n\tVK_FORMAT_R8G8B8A8_SRGB,\n\tVK_FORMAT_R8G8B8A8_UNORM,\n} from '../libs/ktx-parse.module.js';\nimport { ZSTDDecoder } from '../libs/zstddec.module.js';\n\nconst _taskCache = new WeakMap();\n\nlet _activeLoaders = 0;\n\nlet _zstd;\n\nclass KTX2Loader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.transcoderPath = '';\n\t\tthis.transcoderBinary = null;\n\t\tthis.transcoderPending = null;\n\n\t\tthis.workerPool = new WorkerPool();\n\t\tthis.workerSourceURL = '';\n\t\tthis.workerConfig = null;\n\n\t\tif ( typeof MSC_TRANSCODER !== 'undefined' ) {\n\n\t\t\tconsole.warn(\n\n\t\t\t\t'THREE.KTX2Loader: Please update to latest \"basis_transcoder\".'\n\t\t\t\t+ ' \"msc_basis_transcoder\" is no longer supported in three.js r125+.'\n\n\t\t\t);\n\n\t\t}\n\n\t}\n\n\tsetTranscoderPath( path ) {\n\n\t\tthis.transcoderPath = path;\n\n\t\treturn this;\n\n\t}\n\n\tsetWorkerLimit( num ) {\n\n\t\tthis.workerPool.setWorkerLimit( num );\n\n\t\treturn this;\n\n\t}\n\n\tdetectSupport( renderer ) {\n\n\t\tthis.workerConfig = {\n\t\t\tastcSupported: renderer.extensions.has( 'WEBGL_compressed_texture_astc' ),\n\t\t\tetc1Supported: renderer.extensions.has( 'WEBGL_compressed_texture_etc1' ),\n\t\t\tetc2Supported: renderer.extensions.has( 'WEBGL_compressed_texture_etc' ),\n\t\t\tdxtSupported: renderer.extensions.has( 'WEBGL_compressed_texture_s3tc' ),\n\t\t\tbptcSupported: renderer.extensions.has( 'EXT_texture_compression_bptc' ),\n\t\t\tpvrtcSupported: renderer.extensions.has( 'WEBGL_compressed_texture_pvrtc' )\n\t\t\t\t|| renderer.extensions.has( 'WEBKIT_WEBGL_compressed_texture_pvrtc' )\n\t\t};\n\n\n\t\tif ( renderer.capabilities.isWebGL2 ) {\n\n\t\t\t// https://github.com/mrdoob/three.js/pull/22928\n\t\t\tthis.workerConfig.etc1Supported = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinit() {\n\n\t\tif ( ! this.transcoderPending ) {\n\n\t\t\t// Load transcoder wrapper.\n\t\t\tconst jsLoader = new FileLoader( this.manager );\n\t\t\tjsLoader.setPath( this.transcoderPath );\n\t\t\tjsLoader.setWithCredentials( this.withCredentials );\n\t\t\tconst jsContent = jsLoader.loadAsync( 'basis_transcoder.js' );\n\n\t\t\t// Load transcoder WASM binary.\n\t\t\tconst binaryLoader = new FileLoader( this.manager );\n\t\t\tbinaryLoader.setPath( this.transcoderPath );\n\t\t\tbinaryLoader.setResponseType( 'arraybuffer' );\n\t\t\tbinaryLoader.setWithCredentials( this.withCredentials );\n\t\t\tconst binaryContent = binaryLoader.loadAsync( 'basis_transcoder.wasm' );\n\n\t\t\tthis.transcoderPending = Promise.all( [ jsContent, binaryContent ] )\n\t\t\t\t.then( ( [ jsContent, binaryContent ] ) => {\n\n\t\t\t\t\tconst fn = KTX2Loader.BasisWorker.toString();\n\n\t\t\t\t\tconst body = [\n\t\t\t\t\t\t'/* constants */',\n\t\t\t\t\t\t'let _EngineFormat = ' + JSON.stringify( KTX2Loader.EngineFormat ),\n\t\t\t\t\t\t'let _TranscoderFormat = ' + JSON.stringify( KTX2Loader.TranscoderFormat ),\n\t\t\t\t\t\t'let _BasisFormat = ' + JSON.stringify( KTX2Loader.BasisFormat ),\n\t\t\t\t\t\t'/* basis_transcoder.js */',\n\t\t\t\t\t\tjsContent,\n\t\t\t\t\t\t'/* worker */',\n\t\t\t\t\t\tfn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) )\n\t\t\t\t\t].join( '\\n' );\n\n\t\t\t\t\tthis.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) );\n\t\t\t\t\tthis.transcoderBinary = binaryContent;\n\n\t\t\t\t\tthis.workerPool.setWorkerCreator( () => {\n\n\t\t\t\t\t\tconst worker = new Worker( this.workerSourceURL );\n\t\t\t\t\t\tconst transcoderBinary = this.transcoderBinary.slice( 0 );\n\n\t\t\t\t\t\tworker.postMessage( { type: 'init', config: this.workerConfig, transcoderBinary }, [ transcoderBinary ] );\n\n\t\t\t\t\t\treturn worker;\n\n\t\t\t\t\t} );\n\n\t\t\t\t} );\n\n\t\t\tif ( _activeLoaders > 0 ) {\n\n\t\t\t\t// Each instance loads a transcoder and allocates workers, increasing network and memory cost.\n\n\t\t\t\tconsole.warn(\n\n\t\t\t\t\t'THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues.'\n\t\t\t\t\t+ ' Use a single KTX2Loader instance, or call .dispose() on old instances.'\n\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\t_activeLoaders ++;\n\n\t\t}\n\n\t\treturn this.transcoderPending;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.workerConfig === null ) {\n\n\t\t\tthrow new Error( 'THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.' );\n\n\t\t}\n\n\t\tconst loader = new FileLoader( this.manager );\n\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tloader.load( url, ( buffer ) => {\n\n\t\t\t// Check for an existing task using this buffer. A transferred buffer cannot be transferred\n\t\t\t// again from this thread.\n\t\t\tif ( _taskCache.has( buffer ) ) {\n\n\t\t\t\tconst cachedTask = _taskCache.get( buffer );\n\n\t\t\t\treturn cachedTask.promise.then( onLoad ).catch( onError );\n\n\t\t\t}\n\n\t\t\tthis._createTexture( buffer )\n\t\t\t\t.then( ( texture ) => onLoad ? onLoad( texture ) : null )\n\t\t\t\t.catch( onError );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t_createTextureFrom( transcodeResult, container ) {\n\n\t\tconst { mipmaps, width, height, format, type, error, dfdTransferFn, dfdFlags } = transcodeResult;\n\n\t\tif ( type === 'error' ) return Promise.reject( error );\n\n\t\tconst texture = container.layerCount > 1\n\t\t\t? new CompressedArrayTexture( mipmaps, width, height, container.layerCount, format, UnsignedByteType )\n\t\t\t: new CompressedTexture( mipmaps, width, height, format, UnsignedByteType );\n\n\n\t\ttexture.minFilter = mipmaps.length === 1 ? LinearFilter : LinearMipmapLinearFilter;\n\t\ttexture.magFilter = LinearFilter;\n\t\ttexture.generateMipmaps = false;\n\n\t\ttexture.needsUpdate = true;\n\t\ttexture.encoding = dfdTransferFn === KHR_DF_TRANSFER_SRGB ? sRGBEncoding : LinearEncoding;\n\t\ttexture.premultiplyAlpha = !! ( dfdFlags & KHR_DF_FLAG_ALPHA_PREMULTIPLIED );\n\n\t\treturn texture;\n\n\t}\n\n\t/**\n\t * @param {ArrayBuffer} buffer\n\t * @param {object?} config\n\t * @return {Promise}\n\t */\n\tasync _createTexture( buffer, config = {} ) {\n\n\t\tconst container = read( new Uint8Array( buffer ) );\n\n\t\tif ( container.vkFormat !== VK_FORMAT_UNDEFINED ) {\n\n\t\t\treturn createDataTexture( container );\n\n\t\t}\n\n\t\t//\n\t\tconst taskConfig = config;\n\t\tconst texturePending = this.init().then( () => {\n\n\t\t\treturn this.workerPool.postMessage( { type: 'transcode', buffer, taskConfig: taskConfig }, [ buffer ] );\n\n\t\t} ).then( ( e ) => this._createTextureFrom( e.data, container ) );\n\n\t\t// Cache the task result.\n\t\t_taskCache.set( buffer, { promise: texturePending } );\n\n\t\treturn texturePending;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.workerPool.dispose();\n\t\tif ( this.workerSourceURL ) URL.revokeObjectURL( this.workerSourceURL );\n\n\t\t_activeLoaders --;\n\n\t\treturn this;\n\n\t}\n\n}\n\n\n/* CONSTANTS */\n\nKTX2Loader.BasisFormat = {\n\tETC1S: 0,\n\tUASTC_4x4: 1,\n};\n\nKTX2Loader.TranscoderFormat = {\n\tETC1: 0,\n\tETC2: 1,\n\tBC1: 2,\n\tBC3: 3,\n\tBC4: 4,\n\tBC5: 5,\n\tBC7_M6_OPAQUE_ONLY: 6,\n\tBC7_M5: 7,\n\tPVRTC1_4_RGB: 8,\n\tPVRTC1_4_RGBA: 9,\n\tASTC_4x4: 10,\n\tATC_RGB: 11,\n\tATC_RGBA_INTERPOLATED_ALPHA: 12,\n\tRGBA32: 13,\n\tRGB565: 14,\n\tBGR565: 15,\n\tRGBA4444: 16,\n};\n\nKTX2Loader.EngineFormat = {\n\tRGBAFormat: RGBAFormat,\n\tRGBA_ASTC_4x4_Format: RGBA_ASTC_4x4_Format,\n\tRGBA_BPTC_Format: RGBA_BPTC_Format,\n\tRGBA_ETC2_EAC_Format: RGBA_ETC2_EAC_Format,\n\tRGBA_PVRTC_4BPPV1_Format: RGBA_PVRTC_4BPPV1_Format,\n\tRGBA_S3TC_DXT5_Format: RGBA_S3TC_DXT5_Format,\n\tRGB_ETC1_Format: RGB_ETC1_Format,\n\tRGB_ETC2_Format: RGB_ETC2_Format,\n\tRGB_PVRTC_4BPPV1_Format: RGB_PVRTC_4BPPV1_Format,\n\tRGB_S3TC_DXT1_Format: RGB_S3TC_DXT1_Format,\n};\n\n\n/* WEB WORKER */\n\nKTX2Loader.BasisWorker = function () {\n\n\tlet config;\n\tlet transcoderPending;\n\tlet BasisModule;\n\n\tconst EngineFormat = _EngineFormat; // eslint-disable-line no-undef\n\tconst TranscoderFormat = _TranscoderFormat; // eslint-disable-line no-undef\n\tconst BasisFormat = _BasisFormat; // eslint-disable-line no-undef\n\n\tself.addEventListener( 'message', function ( e ) {\n\n\t\tconst message = e.data;\n\n\t\tswitch ( message.type ) {\n\n\t\t\tcase 'init':\n\t\t\t\tconfig = message.config;\n\t\t\t\tinit( message.transcoderBinary );\n\t\t\t\tbreak;\n\n\t\t\tcase 'transcode':\n\t\t\t\ttranscoderPending.then( () => {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\tconst { width, height, hasAlpha, mipmaps, format, dfdTransferFn, dfdFlags } = transcode( message.buffer );\n\n\t\t\t\t\t\tconst buffers = [];\n\n\t\t\t\t\t\tfor ( let i = 0; i < mipmaps.length; ++ i ) {\n\n\t\t\t\t\t\t\tbuffers.push( mipmaps[ i ].data.buffer );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tself.postMessage( { type: 'transcode', id: message.id, width, height, hasAlpha, mipmaps, format, dfdTransferFn, dfdFlags }, buffers );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tconsole.error( error );\n\n\t\t\t\t\t\tself.postMessage( { type: 'error', id: message.id, error: error.message } );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t} );\n\n\tfunction init( wasmBinary ) {\n\n\t\ttranscoderPending = new Promise( ( resolve ) => {\n\n\t\t\tBasisModule = { wasmBinary, onRuntimeInitialized: resolve };\n\t\t\tBASIS( BasisModule ); // eslint-disable-line no-undef\n\n\t\t} ).then( () => {\n\n\t\t\tBasisModule.initializeBasis();\n\n\t\t\tif ( BasisModule.KTX2File === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.KTX2Loader: Please update Basis Universal transcoder.' );\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tfunction transcode( buffer ) {\n\n\t\tconst ktx2File = new BasisModule.KTX2File( new Uint8Array( buffer ) );\n\n\t\tfunction cleanup() {\n\n\t\t\tktx2File.close();\n\t\t\tktx2File.delete();\n\n\t\t}\n\n\t\tif ( ! ktx2File.isValid() ) {\n\n\t\t\tcleanup();\n\t\t\tthrow new Error( 'THREE.KTX2Loader:\tInvalid or unsupported .ktx2 file' );\n\n\t\t}\n\n\t\tconst basisFormat = ktx2File.isUASTC() ? BasisFormat.UASTC_4x4 : BasisFormat.ETC1S;\n\t\tconst width = ktx2File.getWidth();\n\t\tconst height = ktx2File.getHeight();\n\t\tconst layers = ktx2File.getLayers() || 1;\n\t\tconst levels = ktx2File.getLevels();\n\t\tconst hasAlpha = ktx2File.getHasAlpha();\n\t\tconst dfdTransferFn = ktx2File.getDFDTransferFunc();\n\t\tconst dfdFlags = ktx2File.getDFDFlags();\n\n\t\tconst { transcoderFormat, engineFormat } = getTranscoderFormat( basisFormat, width, height, hasAlpha );\n\n\t\tif ( ! width || ! height || ! levels ) {\n\n\t\t\tcleanup();\n\t\t\tthrow new Error( 'THREE.KTX2Loader:\tInvalid texture' );\n\n\t\t}\n\n\t\tif ( ! ktx2File.startTranscoding() ) {\n\n\t\t\tcleanup();\n\t\t\tthrow new Error( 'THREE.KTX2Loader: .startTranscoding failed' );\n\n\t\t}\n\n\t\tconst mipmaps = [];\n\n\t\tfor ( let mip = 0; mip < levels; mip ++ ) {\n\n\t\t\tconst layerMips = [];\n\n\t\t\tlet mipWidth, mipHeight;\n\n\t\t\tfor ( let layer = 0; layer < layers; layer ++ ) {\n\n\t\t\t\tconst levelInfo = ktx2File.getImageLevelInfo( mip, layer, 0 );\n\t\t\t\tmipWidth = levelInfo.origWidth;\n\t\t\t\tmipHeight = levelInfo.origHeight;\n\t\t\t\tconst dst = new Uint8Array( ktx2File.getImageTranscodedSizeInBytes( mip, layer, 0, transcoderFormat ) );\n\t\t\t\tconst status = ktx2File.transcodeImage(\n\t\t\t\t\tdst,\n\t\t\t\t\tmip,\n\t\t\t\t\tlayer,\n\t\t\t\t\t0,\n\t\t\t\t\ttranscoderFormat,\n\t\t\t\t\t0,\n\t\t\t\t\t- 1,\n\t\t\t\t\t- 1,\n\t\t\t\t);\n\n\t\t\t\tif ( ! status ) {\n\n\t\t\t\t\tcleanup();\n\t\t\t\t\tthrow new Error( 'THREE.KTX2Loader: .transcodeImage failed.' );\n\n\t\t\t\t}\n\n\t\t\t\tlayerMips.push( dst );\n\n\t\t\t}\n\n\t\t\tmipmaps.push( { data: concat( layerMips ), width: mipWidth, height: mipHeight } );\n\n\t\t}\n\n\t\tcleanup();\n\n\t\treturn { width, height, hasAlpha, mipmaps, format: engineFormat, dfdTransferFn, dfdFlags };\n\n\t}\n\n\t//\n\n\t// Optimal choice of a transcoder target format depends on the Basis format (ETC1S or UASTC),\n\t// device capabilities, and texture dimensions. The list below ranks the formats separately\n\t// for ETC1S and UASTC.\n\t//\n\t// In some cases, transcoding UASTC to RGBA32 might be preferred for higher quality (at\n\t// significant memory cost) compared to ETC1/2, BC1/3, and PVRTC. The transcoder currently\n\t// chooses RGBA32 only as a last resort and does not expose that option to the caller.\n\tconst FORMAT_OPTIONS = [\n\t\t{\n\t\t\tif: 'astcSupported',\n\t\t\tbasisFormat: [ BasisFormat.UASTC_4x4 ],\n\t\t\ttranscoderFormat: [ TranscoderFormat.ASTC_4x4, TranscoderFormat.ASTC_4x4 ],\n\t\t\tengineFormat: [ EngineFormat.RGBA_ASTC_4x4_Format, EngineFormat.RGBA_ASTC_4x4_Format ],\n\t\t\tpriorityETC1S: Infinity,\n\t\t\tpriorityUASTC: 1,\n\t\t\tneedsPowerOfTwo: false,\n\t\t},\n\t\t{\n\t\t\tif: 'bptcSupported',\n\t\t\tbasisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ],\n\t\t\ttranscoderFormat: [ TranscoderFormat.BC7_M5, TranscoderFormat.BC7_M5 ],\n\t\t\tengineFormat: [ EngineFormat.RGBA_BPTC_Format, EngineFormat.RGBA_BPTC_Format ],\n\t\t\tpriorityETC1S: 3,\n\t\t\tpriorityUASTC: 2,\n\t\t\tneedsPowerOfTwo: false,\n\t\t},\n\t\t{\n\t\t\tif: 'dxtSupported',\n\t\t\tbasisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ],\n\t\t\ttranscoderFormat: [ TranscoderFormat.BC1, TranscoderFormat.BC3 ],\n\t\t\tengineFormat: [ EngineFormat.RGB_S3TC_DXT1_Format, EngineFormat.RGBA_S3TC_DXT5_Format ],\n\t\t\tpriorityETC1S: 4,\n\t\t\tpriorityUASTC: 5,\n\t\t\tneedsPowerOfTwo: false,\n\t\t},\n\t\t{\n\t\t\tif: 'etc2Supported',\n\t\t\tbasisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ],\n\t\t\ttranscoderFormat: [ TranscoderFormat.ETC1, TranscoderFormat.ETC2 ],\n\t\t\tengineFormat: [ EngineFormat.RGB_ETC2_Format, EngineFormat.RGBA_ETC2_EAC_Format ],\n\t\t\tpriorityETC1S: 1,\n\t\t\tpriorityUASTC: 3,\n\t\t\tneedsPowerOfTwo: false,\n\t\t},\n\t\t{\n\t\t\tif: 'etc1Supported',\n\t\t\tbasisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ],\n\t\t\ttranscoderFormat: [ TranscoderFormat.ETC1 ],\n\t\t\tengineFormat: [ EngineFormat.RGB_ETC1_Format ],\n\t\t\tpriorityETC1S: 2,\n\t\t\tpriorityUASTC: 4,\n\t\t\tneedsPowerOfTwo: false,\n\t\t},\n\t\t{\n\t\t\tif: 'pvrtcSupported',\n\t\t\tbasisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ],\n\t\t\ttranscoderFormat: [ TranscoderFormat.PVRTC1_4_RGB, TranscoderFormat.PVRTC1_4_RGBA ],\n\t\t\tengineFormat: [ EngineFormat.RGB_PVRTC_4BPPV1_Format, EngineFormat.RGBA_PVRTC_4BPPV1_Format ],\n\t\t\tpriorityETC1S: 5,\n\t\t\tpriorityUASTC: 6,\n\t\t\tneedsPowerOfTwo: true,\n\t\t},\n\t];\n\n\tconst ETC1S_OPTIONS = FORMAT_OPTIONS.sort( function ( a, b ) {\n\n\t\treturn a.priorityETC1S - b.priorityETC1S;\n\n\t} );\n\tconst UASTC_OPTIONS = FORMAT_OPTIONS.sort( function ( a, b ) {\n\n\t\treturn a.priorityUASTC - b.priorityUASTC;\n\n\t} );\n\n\tfunction getTranscoderFormat( basisFormat, width, height, hasAlpha ) {\n\n\t\tlet transcoderFormat;\n\t\tlet engineFormat;\n\n\t\tconst options = basisFormat === BasisFormat.ETC1S ? ETC1S_OPTIONS : UASTC_OPTIONS;\n\n\t\tfor ( let i = 0; i < options.length; i ++ ) {\n\n\t\t\tconst opt = options[ i ];\n\n\t\t\tif ( ! config[ opt.if ] ) continue;\n\t\t\tif ( ! opt.basisFormat.includes( basisFormat ) ) continue;\n\t\t\tif ( hasAlpha && opt.transcoderFormat.length < 2 ) continue;\n\t\t\tif ( opt.needsPowerOfTwo && ! ( isPowerOfTwo( width ) && isPowerOfTwo( height ) ) ) continue;\n\n\t\t\ttranscoderFormat = opt.transcoderFormat[ hasAlpha ? 1 : 0 ];\n\t\t\tengineFormat = opt.engineFormat[ hasAlpha ? 1 : 0 ];\n\n\t\t\treturn { transcoderFormat, engineFormat };\n\n\t\t}\n\n\t\tconsole.warn( 'THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32.' );\n\n\t\ttranscoderFormat = TranscoderFormat.RGBA32;\n\t\tengineFormat = EngineFormat.RGBAFormat;\n\n\t\treturn { transcoderFormat, engineFormat };\n\n\t}\n\n\tfunction isPowerOfTwo( value ) {\n\n\t\tif ( value <= 2 ) return true;\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t}\n\n\t/** Concatenates N byte arrays. */\n\tfunction concat( arrays ) {\n\n\t\tlet totalByteLength = 0;\n\n\t\tfor ( const array of arrays ) {\n\n\t\t\ttotalByteLength += array.byteLength;\n\n\t\t}\n\n\t\tconst result = new Uint8Array( totalByteLength );\n\n\t\tlet byteOffset = 0;\n\n\t\tfor ( const array of arrays ) {\n\n\t\t\tresult.set( array, byteOffset );\n\n\t\t\tbyteOffset += array.byteLength;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n};\n\n//\n// DataTexture and Data3DTexture parsing.\n\nconst FORMAT_MAP = {\n\n\t[ VK_FORMAT_R32G32B32A32_SFLOAT ]: RGBAFormat,\n\t[ VK_FORMAT_R16G16B16A16_SFLOAT ]: RGBAFormat,\n\t[ VK_FORMAT_R8G8B8A8_UNORM ]: RGBAFormat,\n\t[ VK_FORMAT_R8G8B8A8_SRGB ]: RGBAFormat,\n\n\t[ VK_FORMAT_R32G32_SFLOAT ]: RGFormat,\n\t[ VK_FORMAT_R16G16_SFLOAT ]: RGFormat,\n\t[ VK_FORMAT_R8G8_UNORM ]: RGFormat,\n\t[ VK_FORMAT_R8G8_SRGB ]: RGFormat,\n\n\t[ VK_FORMAT_R32_SFLOAT ]: RedFormat,\n\t[ VK_FORMAT_R16_SFLOAT ]: RedFormat,\n\t[ VK_FORMAT_R8_SRGB ]: RedFormat,\n\t[ VK_FORMAT_R8_UNORM ]: RedFormat,\n\n};\n\nconst TYPE_MAP = {\n\n\t[ VK_FORMAT_R32G32B32A32_SFLOAT ]: FloatType,\n\t[ VK_FORMAT_R16G16B16A16_SFLOAT ]: HalfFloatType,\n\t[ VK_FORMAT_R8G8B8A8_UNORM ]: UnsignedByteType,\n\t[ VK_FORMAT_R8G8B8A8_SRGB ]: UnsignedByteType,\n\n\t[ VK_FORMAT_R32G32_SFLOAT ]: FloatType,\n\t[ VK_FORMAT_R16G16_SFLOAT ]: HalfFloatType,\n\t[ VK_FORMAT_R8G8_UNORM ]: UnsignedByteType,\n\t[ VK_FORMAT_R8G8_SRGB ]: UnsignedByteType,\n\n\t[ VK_FORMAT_R32_SFLOAT ]: FloatType,\n\t[ VK_FORMAT_R16_SFLOAT ]: HalfFloatType,\n\t[ VK_FORMAT_R8_SRGB ]: UnsignedByteType,\n\t[ VK_FORMAT_R8_UNORM ]: UnsignedByteType,\n\n};\n\nconst ENCODING_MAP = {\n\n\t[ VK_FORMAT_R8G8B8A8_SRGB ]: sRGBEncoding,\n\t[ VK_FORMAT_R8G8_SRGB ]: sRGBEncoding,\n\t[ VK_FORMAT_R8_SRGB ]: sRGBEncoding,\n\n};\n\nasync function createDataTexture( container ) {\n\n\tconst { vkFormat, pixelWidth, pixelHeight, pixelDepth } = container;\n\n\tif ( FORMAT_MAP[ vkFormat ] === undefined ) {\n\n\t\tthrow new Error( 'THREE.KTX2Loader: Unsupported vkFormat.' );\n\n\t}\n\n\tconst level = container.levels[ 0 ];\n\n\tlet levelData;\n\tlet view;\n\n\tif ( container.supercompressionScheme === KHR_SUPERCOMPRESSION_NONE ) {\n\n\t\tlevelData = level.levelData;\n\n\t} else if ( container.supercompressionScheme === KHR_SUPERCOMPRESSION_ZSTD ) {\n\n\t\tif ( ! _zstd ) {\n\n\t\t\t_zstd = new Promise( async ( resolve ) => {\n\n\t\t\t\tconst zstd = new ZSTDDecoder();\n\t\t\t\tawait zstd.init();\n\t\t\t\tresolve( zstd );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tlevelData = ( await _zstd ).decode( level.levelData, level.uncompressedByteLength );\n\n\t} else {\n\n\t\tthrow new Error( 'THREE.KTX2Loader: Unsupported supercompressionScheme.' );\n\n\t}\n\n\tif ( TYPE_MAP[ vkFormat ] === FloatType ) {\n\n\t\tview = new Float32Array(\n\n\t\t\tlevelData.buffer,\n\t\t\tlevelData.byteOffset,\n\t\t\tlevelData.byteLength / Float32Array.BYTES_PER_ELEMENT\n\n\t\t);\n\n\t} else if ( TYPE_MAP[ vkFormat ] === HalfFloatType ) {\n\n\t\tview = new Uint16Array(\n\n\t\t\tlevelData.buffer,\n\t\t\tlevelData.byteOffset,\n\t\t\tlevelData.byteLength / Uint16Array.BYTES_PER_ELEMENT\n\n\t\t);\n\n\t} else {\n\n\t\tview = levelData;\n\n\t}\n\t//\n\n\tconst texture = pixelDepth === 0\n\t\t? new DataTexture( view, pixelWidth, pixelHeight )\n\t\t: new Data3DTexture( view, pixelWidth, pixelHeight, pixelDepth );\n\n\ttexture.type = TYPE_MAP[ vkFormat ];\n\ttexture.format = FORMAT_MAP[ vkFormat ];\n\ttexture.encoding = ENCODING_MAP[ vkFormat ] || LinearEncoding;\n\n\ttexture.needsUpdate = true;\n\n\t//\n\n\treturn Promise.resolve( texture );\n\n}\n\nexport { KTX2Loader };\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A mutable cache is any object that has that allows cache\n * items to be deleted imperatively given their key\n */\nexport interface MutableCache {\n delete(key: T): void;\n}\n\nconst $retainerCount = Symbol('retainerCount');\nconst $recentlyUsed = Symbol('recentlyUsed');\nconst $evict = Symbol('evict');\nconst $evictionThreshold = Symbol('evictionThreshold');\nconst $cache = Symbol('cache');\n\n/**\n * The CacheEvictionPolicy manages the lifecycle for items in a cache,\n * evicting any items outside some threshold bounds in \"recently used\" order,\n * if they are evictable.\n *\n * Items are considered cached as they are retained. When all retainers\n * of an item release it, that item is considered evictable.\n */\nexport class CacheEvictionPolicy {\n private[$retainerCount] = new Map();\n private[$recentlyUsed]: Array = [];\n private[$evictionThreshold]: number;\n private[$cache]: MutableCache;\n\n constructor(cache: MutableCache, evictionThreshold: number = 5) {\n this[$cache] = cache;\n this[$evictionThreshold] = evictionThreshold;\n }\n\n /**\n * The eviction threshold is the maximum number of items to hold\n * in cache indefinitely. Items within the threshold (in recently\n * used order) will continue to be cached even if they have zero\n * retainers.\n */\n set evictionThreshold(value: number) {\n this[$evictionThreshold] = value;\n this[$evict]();\n }\n\n get evictionThreshold(): number {\n return this[$evictionThreshold];\n }\n\n /**\n * A reference to the cache that operates under this policy\n */\n get cache(): MutableCache {\n return this[$cache];\n }\n\n /**\n * Given an item key, returns the number of retainers of that item\n */\n retainerCount(key: T): number {\n return this[$retainerCount].get(key) || 0;\n }\n\n /**\n * Resets the internal tracking of cache item retainers. Use only in cases\n * where it is certain that all retained cache items have been accounted for!\n */\n reset() {\n this[$retainerCount].clear();\n this[$recentlyUsed] = [];\n }\n\n /**\n * Mark a given cache item as retained, where the item is represented\n * by its key. An item can have any number of retainers.\n */\n retain(key: T) {\n if (!this[$retainerCount].has(key)) {\n this[$retainerCount].set(key, 0);\n }\n this[$retainerCount].set(key, this[$retainerCount].get(key)! + 1);\n\n const recentlyUsedIndex = this[$recentlyUsed].indexOf(key);\n\n if (recentlyUsedIndex !== -1) {\n this[$recentlyUsed].splice(recentlyUsedIndex, 1);\n }\n\n this[$recentlyUsed].unshift(key);\n // Evict, in case retaining a new item pushed an evictable item beyond the\n // eviction threshold\n this[$evict]();\n }\n\n /**\n * Mark a given cache item as released by one of its retainers, where the item\n * is represented by its key. When all retainers of an item have released it,\n * the item is considered evictable.\n */\n release(key: T) {\n if (this[$retainerCount].has(key)) {\n this[$retainerCount].set(\n key, Math.max(this[$retainerCount].get(key)! - 1, 0));\n }\n\n this[$evict]();\n }\n\n [$evict]() {\n if (this[$recentlyUsed].length < this[$evictionThreshold]) {\n return;\n }\n\n for (let i = this[$recentlyUsed].length - 1; i >= this[$evictionThreshold];\n --i) {\n const key = this[$recentlyUsed][i];\n const retainerCount = this[$retainerCount].get(key);\n\n if (retainerCount === 0) {\n this[$cache].delete(key);\n this[$recentlyUsed].splice(i, 1);\n }\n }\n }\n}\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Event as ThreeEvent, EventDispatcher, WebGLRenderer} from 'three';\nimport {DRACOLoader} from 'three/examples/jsm/loaders/DRACOLoader.js';\nimport {GLTF, GLTFLoader} from 'three/examples/jsm/loaders/GLTFLoader.js';\nimport {KTX2Loader} from 'three/examples/jsm/loaders/KTX2Loader.js';\n\nimport ModelViewerElementBase from '../model-viewer-base.js';\nimport {CacheEvictionPolicy} from '../utilities/cache-eviction-policy.js';\n\nimport GLTFMaterialsVariantsExtension from './gltf-instance/VariantMaterialLoaderPlugin';\nimport {GLTFInstance, GLTFInstanceConstructor} from './GLTFInstance.js';\n\nexport type ProgressCallback = (progress: number) => void;\n\nexport interface PreloadEvent extends ThreeEvent {\n type: 'preload';\n element: ModelViewerElementBase;\n src: String;\n}\n\n/**\n * A helper to Promise-ify a Three.js GLTFLoader\n */\nexport const loadWithLoader =\n (url: string,\n loader: GLTFLoader,\n progressCallback: ProgressCallback = () => {}) => {\n const onProgress = (event: ProgressEvent) => {\n const fraction = event.loaded / event.total;\n progressCallback!\n (Math.max(0, Math.min(1, isFinite(fraction) ? fraction : 1)));\n };\n return new Promise((resolve, reject) => {\n loader.load(url, resolve, onProgress, reject);\n });\n };\n\n/** Helper to load a script tag. */\nconst fetchScript = (src: string): Promise => {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n document.body.appendChild(script);\n script.onload = resolve;\n script.onerror = reject;\n script.async = true;\n script.src = src;\n });\n};\n\nconst cache = new Map>();\nconst preloaded = new Map();\n\nlet dracoDecoderLocation: string;\nconst dracoLoader = new DRACOLoader();\n\nlet ktx2TranscoderLocation: string;\nconst ktx2Loader = new KTX2Loader();\n\nlet meshoptDecoderLocation: string;\nlet meshoptDecoder: Promise|undefined;\n\ninterface MeshoptDecoder {\n ready: Promise;\n supported: boolean;\n}\n\ndeclare global {\n const MeshoptDecoder: MeshoptDecoder;\n}\n\nexport const $loader = Symbol('loader');\nexport const $evictionPolicy = Symbol('evictionPolicy');\nconst $GLTFInstance = Symbol('GLTFInstance');\n\nexport class CachingGLTFLoader extends\n EventDispatcher {\n static withCredentials: boolean;\n\n static setDRACODecoderLocation(url: string) {\n dracoDecoderLocation = url;\n dracoLoader.setDecoderPath(url);\n }\n\n static getDRACODecoderLocation() {\n return dracoDecoderLocation;\n }\n\n static setKTX2TranscoderLocation(url: string) {\n ktx2TranscoderLocation = url;\n ktx2Loader.setTranscoderPath(url);\n }\n\n static getKTX2TranscoderLocation() {\n return ktx2TranscoderLocation;\n }\n\n static setMeshoptDecoderLocation(url: string) {\n if (meshoptDecoderLocation !== url) {\n meshoptDecoderLocation = url;\n meshoptDecoder = fetchScript(url)\n .then(() => MeshoptDecoder.ready)\n .then(() => MeshoptDecoder);\n }\n }\n\n static getMeshoptDecoderLocation() {\n return meshoptDecoderLocation;\n }\n\n static initializeKTX2Loader(renderer: WebGLRenderer) {\n ktx2Loader.detectSupport(renderer);\n }\n\n static[$evictionPolicy]: CacheEvictionPolicy =\n new CacheEvictionPolicy(CachingGLTFLoader);\n\n static get cache() {\n return cache;\n }\n\n /** @nocollapse */\n static clearCache() {\n cache.forEach((_value, url) => {\n this.delete(url);\n });\n this[$evictionPolicy].reset();\n }\n\n static has(url: string) {\n return cache.has(url);\n }\n\n /** @nocollapse */\n static async delete(url: string) {\n if (!this.has(url)) {\n return;\n }\n\n const gltfLoads = cache.get(url);\n preloaded.delete(url);\n cache.delete(url);\n\n const gltf = await gltfLoads;\n // Dispose of the cached glTF's materials and geometries:\n\n gltf!.dispose();\n }\n\n /**\n * Returns true if the model that corresponds to the specified url is\n * available in our local cache.\n */\n static hasFinishedLoading(url: string) {\n return !!preloaded.get(url);\n }\n\n constructor(GLTFInstance: T) {\n super();\n this[$GLTFInstance] = GLTFInstance;\n this[$loader].setDRACOLoader(dracoLoader);\n this[$loader].setKTX2Loader(ktx2Loader);\n }\n\n protected[$loader]: GLTFLoader = new GLTFLoader().register(\n parser => new GLTFMaterialsVariantsExtension(parser));\n protected[$GLTFInstance]: T;\n\n protected get[$evictionPolicy](): CacheEvictionPolicy {\n return (this.constructor as typeof CachingGLTFLoader)[$evictionPolicy];\n }\n\n /**\n * Preloads a glTF, populating the cache. Returns a promise that resolves\n * when the cache is populated.\n */\n async preload(\n url: string, element: ModelViewerElementBase,\n progressCallback: ProgressCallback = () => {}) {\n this[$loader].setWithCredentials(CachingGLTFLoader.withCredentials);\n this.dispatchEvent(\n {type: 'preload', element: element, src: url} as PreloadEvent);\n if (!cache.has(url)) {\n if (meshoptDecoder != null) {\n this[$loader].setMeshoptDecoder(await meshoptDecoder);\n }\n\n const rawGLTFLoads =\n loadWithLoader(url, this[$loader], (progress: number) => {\n progressCallback(progress * 0.8);\n });\n\n const GLTFInstance = this[$GLTFInstance];\n const gltfInstanceLoads = rawGLTFLoads\n .then((rawGLTF) => {\n return GLTFInstance.prepare(rawGLTF);\n })\n .then((preparedGLTF) => {\n progressCallback(0.9);\n return new GLTFInstance(preparedGLTF);\n })\n .catch((reason => {\n console.error(reason);\n return new GLTFInstance();\n }));\n cache.set(url, gltfInstanceLoads);\n }\n\n await cache.get(url);\n\n preloaded.set(url, true);\n\n if (progressCallback) {\n progressCallback(1.0);\n }\n }\n\n /**\n * Loads a glTF from the specified url and resolves a unique clone of the\n * glTF. If the glTF has already been loaded, makes a clone of the cached\n * copy.\n */\n async load(\n url: string, element: ModelViewerElementBase,\n progressCallback: ProgressCallback = () => {}): Promise> {\n await this.preload(url, element, progressCallback);\n\n const gltf = await cache.get(url)!;\n const clone = await gltf.clone() as InstanceType;\n\n this[$evictionPolicy].retain(url);\n\n // Patch dispose so that we can properly account for instance use\n // in the caching layer:\n clone.dispose = () => {\n this[$evictionPolicy].release(url);\n };\n\n return clone;\n }\n}\n","/* @license\r\n * Copyright 2021 Google LLC. All Rights Reserved.\r\n * Licensed under the Apache License, Version 2.0 (the 'License');\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an 'AS IS' BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * Materials variants extension\r\n *\r\n * Specification:\r\n * https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_variants\r\n */\r\n\r\n/**\r\n * The code in this file is based on\r\n * https://github.com/takahirox/three-gltf-extensions/tree/main/loaders/KHR_materials_variants\r\n */\r\n\r\nimport {Material as ThreeMaterial, Mesh} from 'three';\r\nimport {GLTFReference} from 'three/examples/jsm/loaders/GLTFLoader';\r\nimport {GLTF, GLTFLoaderPlugin, GLTFParser} from 'three/examples/jsm/loaders/GLTFLoader.js';\r\n\r\n\r\nexport interface UserDataVariantMapping {\r\n material: ThreeMaterial|null;\r\n gltfMaterialIndex: number;\r\n}\r\n\r\n/**\r\n * KHR_materials_variants specification allows duplicated variant names\r\n * but it makes handling the extension complex.\r\n * We ensure tha names and make it easier.\r\n * If you want to export the extension with the original names\r\n * you are recommended to write GLTFExporter plugin to restore the names.\r\n *\r\n * @param variantNames {Array}\r\n * @return {Array}\r\n */\r\nconst ensureUniqueNames = (variantNames: string[]) => {\r\n const uniqueNames = [];\r\n const knownNames = new Set();\r\n\r\n for (const name of variantNames) {\r\n let uniqueName = name;\r\n let suffix = 0;\r\n // @TODO: An easy solution.\r\n // O(N^2) in the worst scenario where N is variantNames.length.\r\n // Fix me if needed.\r\n while (knownNames.has(uniqueName)) {\r\n uniqueName = name + '.' + (++suffix);\r\n }\r\n knownNames.add(uniqueName);\r\n uniqueNames.push(uniqueName);\r\n }\r\n\r\n return uniqueNames;\r\n};\r\n\r\n/**\r\n * Convert mappings array to table object to make handling the extension easier.\r\n *\r\n * @param\r\n * extensionDef {glTF.meshes[n].primitive.extensions.KHR_materials_variants}\r\n * @param variantNames {Array} Required to be unique names\r\n * @return {Map}\r\n */\r\nconst mappingsArrayToTable = (extensionDef:\r\n any): Map => {\r\n const table = new Map();\r\n for (const mapping of extensionDef.mappings) {\r\n for (const variant of mapping.variants) {\r\n table.set(variant, {material: null, gltfMaterialIndex: mapping.material});\r\n }\r\n }\r\n return table;\r\n};\r\n\r\nexport default class GLTFMaterialsVariantsExtension implements\r\n GLTFLoaderPlugin {\r\n parser: GLTFParser;\r\n name: string;\r\n\r\n constructor(parser: GLTFParser) {\r\n this.parser = parser;\r\n this.name = 'KHR_materials_variants';\r\n }\r\n\r\n // Note that the following properties will be overridden even if they are\r\n // pre-defined\r\n // - gltf.userData.variants\r\n // - mesh.userData.variantMaterials\r\n afterRoot(gltf: GLTF) {\r\n const parser = this.parser;\r\n const json = parser.json;\r\n\r\n if (json.extensions === undefined ||\r\n json.extensions[this.name] === undefined) {\r\n return null;\r\n }\r\n\r\n const extensionDef = json.extensions[this.name];\r\n const variantsDef = extensionDef.variants || [];\r\n const variants =\r\n ensureUniqueNames(variantsDef.map((v: {name: string}) => v.name));\r\n\r\n for (const scene of gltf.scenes) {\r\n // Save the variants data under associated mesh.userData\r\n scene.traverse(object => {\r\n const mesh = object as Mesh;\r\n\r\n if (!mesh.isMesh) {\r\n return;\r\n }\r\n\r\n const association = parser.associations.get(mesh) as GLTFReference &\r\n {primitives: number};\r\n\r\n if (association == null || association.meshes == null ||\r\n association.primitives == null) {\r\n return;\r\n }\r\n\r\n const meshDef = json.meshes[association.meshes];\r\n const primitivesDef = meshDef.primitives;\r\n const primitiveDef = primitivesDef[association.primitives];\r\n const extensionsDef = primitiveDef.extensions;\r\n\r\n if (!extensionsDef || !extensionsDef[this.name]) {\r\n return;\r\n }\r\n\r\n mesh.userData.variantMaterials =\r\n mappingsArrayToTable(extensionsDef[this.name]);\r\n });\r\n }\r\n\r\n gltf.userData.variants = variants;\r\n\r\n return Promise.resolve();\r\n }\r\n}\r\n","import {\n\tMatrix4,\n\tObject3D,\n\tVector3\n} from 'three';\n\nclass CSS2DObject extends Object3D {\n\n\tconstructor( element = document.createElement( 'div' ) ) {\n\n\t\tsuper();\n\n\t\tthis.isCSS2DObject = true;\n\n\t\tthis.element = element;\n\n\t\tthis.element.style.position = 'absolute';\n\t\tthis.element.style.userSelect = 'none';\n\n\t\tthis.element.setAttribute( 'draggable', false );\n\n\t\tthis.addEventListener( 'removed', function () {\n\n\t\t\tthis.traverse( function ( object ) {\n\n\t\t\t\tif ( object.element instanceof Element && object.element.parentNode !== null ) {\n\n\t\t\t\t\tobject.element.parentNode.removeChild( object.element );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.element = source.element.cloneNode( true );\n\n\t\treturn this;\n\n\t}\n\n}\n\n//\n\nconst _vector = new Vector3();\nconst _viewMatrix = new Matrix4();\nconst _viewProjectionMatrix = new Matrix4();\nconst _a = new Vector3();\nconst _b = new Vector3();\n\nclass CSS2DRenderer {\n\n\tconstructor( parameters = {} ) {\n\n\t\tconst _this = this;\n\n\t\tlet _width, _height;\n\t\tlet _widthHalf, _heightHalf;\n\n\t\tconst cache = {\n\t\t\tobjects: new WeakMap()\n\t\t};\n\n\t\tconst domElement = parameters.element !== undefined ? parameters.element : document.createElement( 'div' );\n\n\t\tdomElement.style.overflow = 'hidden';\n\n\t\tthis.domElement = domElement;\n\n\t\tthis.getSize = function () {\n\n\t\t\treturn {\n\t\t\t\twidth: _width,\n\t\t\t\theight: _height\n\t\t\t};\n\n\t\t};\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\t\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\t\t_viewMatrix.copy( camera.matrixWorldInverse );\n\t\t\t_viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, _viewMatrix );\n\n\t\t\trenderObject( scene, scene, camera );\n\t\t\tzOrder( scene );\n\n\t\t};\n\n\t\tthis.setSize = function ( width, height ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_widthHalf = _width / 2;\n\t\t\t_heightHalf = _height / 2;\n\n\t\t\tdomElement.style.width = width + 'px';\n\t\t\tdomElement.style.height = height + 'px';\n\n\t\t};\n\n\t\tfunction renderObject( object, scene, camera ) {\n\n\t\t\tif ( object.isCSS2DObject ) {\n\n\t\t\t\t_vector.setFromMatrixPosition( object.matrixWorld );\n\t\t\t\t_vector.applyMatrix4( _viewProjectionMatrix );\n\n\t\t\t\tconst visible = ( object.visible === true ) && ( _vector.z >= - 1 && _vector.z <= 1 ) && ( object.layers.test( camera.layers ) === true );\n\t\t\t\tobject.element.style.display = ( visible === true ) ? '' : 'none';\n\n\t\t\t\tif ( visible === true ) {\n\n\t\t\t\t\tobject.onBeforeRender( _this, scene, camera );\n\n\t\t\t\t\tconst element = object.element;\n\n\t\t\t\t\telement.style.transform = 'translate(-50%,-50%) translate(' + ( _vector.x * _widthHalf + _widthHalf ) + 'px,' + ( - _vector.y * _heightHalf + _heightHalf ) + 'px)';\n\n\t\t\t\t\tif ( element.parentNode !== domElement ) {\n\n\t\t\t\t\t\tdomElement.appendChild( element );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobject.onAfterRender( _this, scene, camera );\n\n\t\t\t\t}\n\n\t\t\t\tconst objectData = {\n\t\t\t\t\tdistanceToCameraSquared: getDistanceToSquared( camera, object )\n\t\t\t\t};\n\n\t\t\t\tcache.objects.set( object, objectData );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = object.children.length; i < l; i ++ ) {\n\n\t\t\t\trenderObject( object.children[ i ], scene, camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getDistanceToSquared( object1, object2 ) {\n\n\t\t\t_a.setFromMatrixPosition( object1.matrixWorld );\n\t\t\t_b.setFromMatrixPosition( object2.matrixWorld );\n\n\t\t\treturn _a.distanceToSquared( _b );\n\n\t\t}\n\n\t\tfunction filterAndFlatten( scene ) {\n\n\t\t\tconst result = [];\n\n\t\t\tscene.traverse( function ( object ) {\n\n\t\t\t\tif ( object.isCSS2DObject ) result.push( object );\n\n\t\t\t} );\n\n\t\t\treturn result;\n\n\t\t}\n\n\t\tfunction zOrder( scene ) {\n\n\t\t\tconst sorted = filterAndFlatten( scene ).sort( function ( a, b ) {\n\n\t\t\t\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\t\t\t\treturn b.renderOrder - a.renderOrder;\n\n\t\t\t\t}\n\n\t\t\t\tconst distanceA = cache.objects.get( a ).distanceToCameraSquared;\n\t\t\t\tconst distanceB = cache.objects.get( b ).distanceToCameraSquared;\n\n\t\t\t\treturn distanceA - distanceB;\n\n\t\t\t} );\n\n\t\t\tconst zMax = sorted.length;\n\n\t\t\tfor ( let i = 0, l = sorted.length; i < l; i ++ ) {\n\n\t\t\t\tsorted[ i ].element.style.zIndex = zMax - i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nexport { CSS2DObject, CSS2DRenderer };\n","import {\n\tBufferAttribute,\n\tClampToEdgeWrapping,\n\tDoubleSide,\n\tInterpolateDiscrete,\n\tInterpolateLinear,\n\tLinearEncoding,\n\tLinearFilter,\n\tLinearMipmapLinearFilter,\n\tLinearMipmapNearestFilter,\n\tMathUtils,\n\tMatrix4,\n\tMirroredRepeatWrapping,\n\tNearestFilter,\n\tNearestMipmapLinearFilter,\n\tNearestMipmapNearestFilter,\n\tPropertyBinding,\n\tRGBAFormat,\n\tRepeatWrapping,\n\tScene,\n\tSource,\n\tsRGBEncoding,\n\tVector3\n} from 'three';\n\nclass GLTFExporter {\n\n\tconstructor() {\n\n\t\tthis.pluginCallbacks = [];\n\n\t\tthis.register( function ( writer ) {\n\n\t\t\treturn new GLTFLightExtension( writer );\n\n\t\t} );\n\n\t\tthis.register( function ( writer ) {\n\n\t\t\treturn new GLTFMaterialsUnlitExtension( writer );\n\n\t\t} );\n\n\t\tthis.register( function ( writer ) {\n\n\t\t\treturn new GLTFMaterialsPBRSpecularGlossiness( writer );\n\n\t\t} );\n\n\t\tthis.register( function ( writer ) {\n\n\t\t\treturn new GLTFMaterialsTransmissionExtension( writer );\n\n\t\t} );\n\n\t\tthis.register( function ( writer ) {\n\n\t\t\treturn new GLTFMaterialsVolumeExtension( writer );\n\n\t\t} );\n\n\t\tthis.register( function ( writer ) {\n\n\t\t\treturn new GLTFMaterialsClearcoatExtension( writer );\n\n\t\t} );\n\n\t\tthis.register( function ( writer ) {\n\n\t\t\treturn new GLTFMaterialsIridescenceExtension( writer );\n\n\t\t} );\n\n\t}\n\n\tregister( callback ) {\n\n\t\tif ( this.pluginCallbacks.indexOf( callback ) === - 1 ) {\n\n\t\t\tthis.pluginCallbacks.push( callback );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunregister( callback ) {\n\n\t\tif ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) {\n\n\t\t\tthis.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Parse scenes and generate GLTF output\n\t * @param {Scene or [THREE.Scenes]} input Scene or Array of THREE.Scenes\n\t * @param {Function} onDone Callback on completed\n\t * @param {Function} onError Callback on errors\n\t * @param {Object} options options\n\t */\n\tparse( input, onDone, onError, options ) {\n\n\t\tconst writer = new GLTFWriter();\n\t\tconst plugins = [];\n\n\t\tfor ( let i = 0, il = this.pluginCallbacks.length; i < il; i ++ ) {\n\n\t\t\tplugins.push( this.pluginCallbacks[ i ]( writer ) );\n\n\t\t}\n\n\t\twriter.setPlugins( plugins );\n\t\twriter.write( input, onDone, options ).catch( onError );\n\n\t}\n\n\tparseAsync( input, options ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.parse( input, resolve, reject, options );\n\n\t\t} );\n\n\t}\n\n}\n\n//------------------------------------------------------------------------------\n// Constants\n//------------------------------------------------------------------------------\n\nconst WEBGL_CONSTANTS = {\n\tPOINTS: 0x0000,\n\tLINES: 0x0001,\n\tLINE_LOOP: 0x0002,\n\tLINE_STRIP: 0x0003,\n\tTRIANGLES: 0x0004,\n\tTRIANGLE_STRIP: 0x0005,\n\tTRIANGLE_FAN: 0x0006,\n\n\tUNSIGNED_BYTE: 0x1401,\n\tUNSIGNED_SHORT: 0x1403,\n\tFLOAT: 0x1406,\n\tUNSIGNED_INT: 0x1405,\n\tARRAY_BUFFER: 0x8892,\n\tELEMENT_ARRAY_BUFFER: 0x8893,\n\n\tNEAREST: 0x2600,\n\tLINEAR: 0x2601,\n\tNEAREST_MIPMAP_NEAREST: 0x2700,\n\tLINEAR_MIPMAP_NEAREST: 0x2701,\n\tNEAREST_MIPMAP_LINEAR: 0x2702,\n\tLINEAR_MIPMAP_LINEAR: 0x2703,\n\n\tCLAMP_TO_EDGE: 33071,\n\tMIRRORED_REPEAT: 33648,\n\tREPEAT: 10497\n};\n\nconst THREE_TO_WEBGL = {};\n\nTHREE_TO_WEBGL[ NearestFilter ] = WEBGL_CONSTANTS.NEAREST;\nTHREE_TO_WEBGL[ NearestMipmapNearestFilter ] = WEBGL_CONSTANTS.NEAREST_MIPMAP_NEAREST;\nTHREE_TO_WEBGL[ NearestMipmapLinearFilter ] = WEBGL_CONSTANTS.NEAREST_MIPMAP_LINEAR;\nTHREE_TO_WEBGL[ LinearFilter ] = WEBGL_CONSTANTS.LINEAR;\nTHREE_TO_WEBGL[ LinearMipmapNearestFilter ] = WEBGL_CONSTANTS.LINEAR_MIPMAP_NEAREST;\nTHREE_TO_WEBGL[ LinearMipmapLinearFilter ] = WEBGL_CONSTANTS.LINEAR_MIPMAP_LINEAR;\n\nTHREE_TO_WEBGL[ ClampToEdgeWrapping ] = WEBGL_CONSTANTS.CLAMP_TO_EDGE;\nTHREE_TO_WEBGL[ RepeatWrapping ] = WEBGL_CONSTANTS.REPEAT;\nTHREE_TO_WEBGL[ MirroredRepeatWrapping ] = WEBGL_CONSTANTS.MIRRORED_REPEAT;\n\nconst PATH_PROPERTIES = {\n\tscale: 'scale',\n\tposition: 'translation',\n\tquaternion: 'rotation',\n\tmorphTargetInfluences: 'weights'\n};\n\n// GLB constants\n// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#glb-file-format-specification\n\nconst GLB_HEADER_BYTES = 12;\nconst GLB_HEADER_MAGIC = 0x46546C67;\nconst GLB_VERSION = 2;\n\nconst GLB_CHUNK_PREFIX_BYTES = 8;\nconst GLB_CHUNK_TYPE_JSON = 0x4E4F534A;\nconst GLB_CHUNK_TYPE_BIN = 0x004E4942;\n\n//------------------------------------------------------------------------------\n// Utility functions\n//------------------------------------------------------------------------------\n\n/**\n * Compare two arrays\n * @param {Array} array1 Array 1 to compare\n * @param {Array} array2 Array 2 to compare\n * @return {Boolean} Returns true if both arrays are equal\n */\nfunction equalArray( array1, array2 ) {\n\n\treturn ( array1.length === array2.length ) && array1.every( function ( element, index ) {\n\n\t\treturn element === array2[ index ];\n\n\t} );\n\n}\n\n/**\n * Converts a string to an ArrayBuffer.\n * @param {string} text\n * @return {ArrayBuffer}\n */\nfunction stringToArrayBuffer( text ) {\n\n\treturn new TextEncoder().encode( text ).buffer;\n\n}\n\n/**\n * Is identity matrix\n *\n * @param {Matrix4} matrix\n * @returns {Boolean} Returns true, if parameter is identity matrix\n */\nfunction isIdentityMatrix( matrix ) {\n\n\treturn equalArray( matrix.elements, [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ] );\n\n}\n\n/**\n * Get the min and max vectors from the given attribute\n * @param {BufferAttribute} attribute Attribute to find the min/max in range from start to start + count\n * @param {Integer} start\n * @param {Integer} count\n * @return {Object} Object containing the `min` and `max` values (As an array of attribute.itemSize components)\n */\nfunction getMinMax( attribute, start, count ) {\n\n\tconst output = {\n\n\t\tmin: new Array( attribute.itemSize ).fill( Number.POSITIVE_INFINITY ),\n\t\tmax: new Array( attribute.itemSize ).fill( Number.NEGATIVE_INFINITY )\n\n\t};\n\n\tfor ( let i = start; i < start + count; i ++ ) {\n\n\t\tfor ( let a = 0; a < attribute.itemSize; a ++ ) {\n\n\t\t\tlet value;\n\n\t\t\tif ( attribute.itemSize > 4 ) {\n\n\t\t\t\t // no support for interleaved data for itemSize > 4\n\n\t\t\t\tvalue = attribute.array[ i * attribute.itemSize + a ];\n\n\t\t\t} else {\n\n\t\t\t\tif ( a === 0 ) value = attribute.getX( i );\n\t\t\t\telse if ( a === 1 ) value = attribute.getY( i );\n\t\t\t\telse if ( a === 2 ) value = attribute.getZ( i );\n\t\t\t\telse if ( a === 3 ) value = attribute.getW( i );\n\n\t\t\t}\n\n\t\t\toutput.min[ a ] = Math.min( output.min[ a ], value );\n\t\t\toutput.max[ a ] = Math.max( output.max[ a ], value );\n\n\t\t}\n\n\t}\n\n\treturn output;\n\n}\n\n/**\n * Get the required size + padding for a buffer, rounded to the next 4-byte boundary.\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#data-alignment\n *\n * @param {Integer} bufferSize The size the original buffer.\n * @returns {Integer} new buffer size with required padding.\n *\n */\nfunction getPaddedBufferSize( bufferSize ) {\n\n\treturn Math.ceil( bufferSize / 4 ) * 4;\n\n}\n\n/**\n * Returns a buffer aligned to 4-byte boundary.\n *\n * @param {ArrayBuffer} arrayBuffer Buffer to pad\n * @param {Integer} paddingByte (Optional)\n * @returns {ArrayBuffer} The same buffer if it's already aligned to 4-byte boundary or a new buffer\n */\nfunction getPaddedArrayBuffer( arrayBuffer, paddingByte = 0 ) {\n\n\tconst paddedLength = getPaddedBufferSize( arrayBuffer.byteLength );\n\n\tif ( paddedLength !== arrayBuffer.byteLength ) {\n\n\t\tconst array = new Uint8Array( paddedLength );\n\t\tarray.set( new Uint8Array( arrayBuffer ) );\n\n\t\tif ( paddingByte !== 0 ) {\n\n\t\t\tfor ( let i = arrayBuffer.byteLength; i < paddedLength; i ++ ) {\n\n\t\t\t\tarray[ i ] = paddingByte;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn array.buffer;\n\n\t}\n\n\treturn arrayBuffer;\n\n}\n\nfunction getCanvas() {\n\n\tif ( typeof document === 'undefined' && typeof OffscreenCanvas !== 'undefined' ) {\n\n\t\treturn new OffscreenCanvas( 1, 1 );\n\n\t}\n\n\treturn document.createElement( 'canvas' );\n\n}\n\nfunction getToBlobPromise( canvas, mimeType ) {\n\n\tif ( canvas.toBlob !== undefined ) {\n\n\t\treturn new Promise( ( resolve ) => canvas.toBlob( resolve, mimeType ) );\n\n\t}\n\n\tlet quality;\n\n\t// Blink's implementation of convertToBlob seems to default to a quality level of 100%\n\t// Use the Blink default quality levels of toBlob instead so that file sizes are comparable.\n\tif ( mimeType === 'image/jpeg' ) {\n\n\t\tquality = 0.92;\n\n\t} else if ( mimeType === 'image/webp' ) {\n\n\t\tquality = 0.8;\n\n\t}\n\n\treturn canvas.convertToBlob( {\n\n\t\ttype: mimeType,\n\t\tquality: quality\n\n\t} );\n\n}\n\n/**\n * Writer\n */\nclass GLTFWriter {\n\n\tconstructor() {\n\n\t\tthis.plugins = [];\n\n\t\tthis.options = {};\n\t\tthis.pending = [];\n\t\tthis.buffers = [];\n\n\t\tthis.byteOffset = 0;\n\t\tthis.buffers = [];\n\t\tthis.nodeMap = new Map();\n\t\tthis.skins = [];\n\t\tthis.extensionsUsed = {};\n\n\t\tthis.uids = new Map();\n\t\tthis.uid = 0;\n\n\t\tthis.json = {\n\t\t\tasset: {\n\t\t\t\tversion: '2.0',\n\t\t\t\tgenerator: 'THREE.GLTFExporter'\n\t\t\t}\n\t\t};\n\n\t\tthis.cache = {\n\t\t\tmeshes: new Map(),\n\t\t\tattributes: new Map(),\n\t\t\tattributesNormalized: new Map(),\n\t\t\tmaterials: new Map(),\n\t\t\ttextures: new Map(),\n\t\t\timages: new Map()\n\t\t};\n\n\t}\n\n\tsetPlugins( plugins ) {\n\n\t\tthis.plugins = plugins;\n\n\t}\n\n\t/**\n\t * Parse scenes and generate GLTF output\n\t * @param {Scene or [THREE.Scenes]} input Scene or Array of THREE.Scenes\n\t * @param {Function} onDone Callback on completed\n\t * @param {Object} options options\n\t */\n\tasync write( input, onDone, options ) {\n\n\t\tthis.options = Object.assign( {}, {\n\t\t\t// default options\n\t\t\tbinary: false,\n\t\t\ttrs: false,\n\t\t\tonlyVisible: true,\n\t\t\tmaxTextureSize: Infinity,\n\t\t\tanimations: [],\n\t\t\tincludeCustomExtensions: false\n\t\t}, options );\n\n\t\tif ( this.options.animations.length > 0 ) {\n\n\t\t\t// Only TRS properties, and not matrices, may be targeted by animation.\n\t\t\tthis.options.trs = true;\n\n\t\t}\n\n\t\tthis.processInput( input );\n\n\t\tawait Promise.all( this.pending );\n\n\t\tconst writer = this;\n\t\tconst buffers = writer.buffers;\n\t\tconst json = writer.json;\n\t\toptions = writer.options;\n\t\tconst extensionsUsed = writer.extensionsUsed;\n\n\t\t// Merge buffers.\n\t\tconst blob = new Blob( buffers, { type: 'application/octet-stream' } );\n\n\t\t// Declare extensions.\n\t\tconst extensionsUsedList = Object.keys( extensionsUsed );\n\n\t\tif ( extensionsUsedList.length > 0 ) json.extensionsUsed = extensionsUsedList;\n\n\t\t// Update bytelength of the single buffer.\n\t\tif ( json.buffers && json.buffers.length > 0 ) json.buffers[ 0 ].byteLength = blob.size;\n\n\t\tif ( options.binary === true ) {\n\n\t\t\t// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#glb-file-format-specification\n\n\t\t\tconst reader = new FileReader();\n\t\t\treader.readAsArrayBuffer( blob );\n\t\t\treader.onloadend = function () {\n\n\t\t\t\t// Binary chunk.\n\t\t\t\tconst binaryChunk = getPaddedArrayBuffer( reader.result );\n\t\t\t\tconst binaryChunkPrefix = new DataView( new ArrayBuffer( GLB_CHUNK_PREFIX_BYTES ) );\n\t\t\t\tbinaryChunkPrefix.setUint32( 0, binaryChunk.byteLength, true );\n\t\t\t\tbinaryChunkPrefix.setUint32( 4, GLB_CHUNK_TYPE_BIN, true );\n\n\t\t\t\t// JSON chunk.\n\t\t\t\tconst jsonChunk = getPaddedArrayBuffer( stringToArrayBuffer( JSON.stringify( json ) ), 0x20 );\n\t\t\t\tconst jsonChunkPrefix = new DataView( new ArrayBuffer( GLB_CHUNK_PREFIX_BYTES ) );\n\t\t\t\tjsonChunkPrefix.setUint32( 0, jsonChunk.byteLength, true );\n\t\t\t\tjsonChunkPrefix.setUint32( 4, GLB_CHUNK_TYPE_JSON, true );\n\n\t\t\t\t// GLB header.\n\t\t\t\tconst header = new ArrayBuffer( GLB_HEADER_BYTES );\n\t\t\t\tconst headerView = new DataView( header );\n\t\t\t\theaderView.setUint32( 0, GLB_HEADER_MAGIC, true );\n\t\t\t\theaderView.setUint32( 4, GLB_VERSION, true );\n\t\t\t\tconst totalByteLength = GLB_HEADER_BYTES\n\t\t\t\t\t+ jsonChunkPrefix.byteLength + jsonChunk.byteLength\n\t\t\t\t\t+ binaryChunkPrefix.byteLength + binaryChunk.byteLength;\n\t\t\t\theaderView.setUint32( 8, totalByteLength, true );\n\n\t\t\t\tconst glbBlob = new Blob( [\n\t\t\t\t\theader,\n\t\t\t\t\tjsonChunkPrefix,\n\t\t\t\t\tjsonChunk,\n\t\t\t\t\tbinaryChunkPrefix,\n\t\t\t\t\tbinaryChunk\n\t\t\t\t], { type: 'application/octet-stream' } );\n\n\t\t\t\tconst glbReader = new FileReader();\n\t\t\t\tglbReader.readAsArrayBuffer( glbBlob );\n\t\t\t\tglbReader.onloadend = function () {\n\n\t\t\t\t\tonDone( glbReader.result );\n\n\t\t\t\t};\n\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tif ( json.buffers && json.buffers.length > 0 ) {\n\n\t\t\t\tconst reader = new FileReader();\n\t\t\t\treader.readAsDataURL( blob );\n\t\t\t\treader.onloadend = function () {\n\n\t\t\t\t\tconst base64data = reader.result;\n\t\t\t\t\tjson.buffers[ 0 ].uri = base64data;\n\t\t\t\t\tonDone( json );\n\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tonDone( json );\n\n\t\t\t}\n\n\t\t}\n\n\n\t}\n\n\t/**\n\t * Serializes a userData.\n\t *\n\t * @param {THREE.Object3D|THREE.Material} object\n\t * @param {Object} objectDef\n\t */\n\tserializeUserData( object, objectDef ) {\n\n\t\tif ( Object.keys( object.userData ).length === 0 ) return;\n\n\t\tconst options = this.options;\n\t\tconst extensionsUsed = this.extensionsUsed;\n\n\t\ttry {\n\n\t\t\tconst json = JSON.parse( JSON.stringify( object.userData ) );\n\n\t\t\tif ( options.includeCustomExtensions && json.gltfExtensions ) {\n\n\t\t\t\tif ( objectDef.extensions === undefined ) objectDef.extensions = {};\n\n\t\t\t\tfor ( const extensionName in json.gltfExtensions ) {\n\n\t\t\t\t\tobjectDef.extensions[ extensionName ] = json.gltfExtensions[ extensionName ];\n\t\t\t\t\textensionsUsed[ extensionName ] = true;\n\n\t\t\t\t}\n\n\t\t\t\tdelete json.gltfExtensions;\n\n\t\t\t}\n\n\t\t\tif ( Object.keys( json ).length > 0 ) objectDef.extras = json;\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFExporter: userData of \\'' + object.name + '\\' ' +\n\t\t\t\t'won\\'t be serialized because of JSON.stringify error - ' + error.message );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns ids for buffer attributes.\n\t * @param {Object} object\n\t * @return {Integer}\n\t */\n\tgetUID( attribute, isRelativeCopy = false ) {\n\n\t\tif ( this.uids.has( attribute ) === false ) {\n\n\t\t\tconst uids = new Map();\n\n\t\t\tuids.set( true, this.uid ++ );\n\t\t\tuids.set( false, this.uid ++ );\n\n\t\t\tthis.uids.set( attribute, uids );\n\n\t\t}\n\n\t\tconst uids = this.uids.get( attribute );\n\n\t\treturn uids.get( isRelativeCopy );\n\n\t}\n\n\t/**\n\t * Checks if normal attribute values are normalized.\n\t *\n\t * @param {BufferAttribute} normal\n\t * @returns {Boolean}\n\t */\n\tisNormalizedNormalAttribute( normal ) {\n\n\t\tconst cache = this.cache;\n\n\t\tif ( cache.attributesNormalized.has( normal ) ) return false;\n\n\t\tconst v = new Vector3();\n\n\t\tfor ( let i = 0, il = normal.count; i < il; i ++ ) {\n\n\t\t\t// 0.0005 is from glTF-validator\n\t\t\tif ( Math.abs( v.fromBufferAttribute( normal, i ).length() - 1.0 ) > 0.0005 ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Creates normalized normal buffer attribute.\n\t *\n\t * @param {BufferAttribute} normal\n\t * @returns {BufferAttribute}\n\t *\n\t */\n\tcreateNormalizedNormalAttribute( normal ) {\n\n\t\tconst cache = this.cache;\n\n\t\tif ( cache.attributesNormalized.has( normal ) )\treturn cache.attributesNormalized.get( normal );\n\n\t\tconst attribute = normal.clone();\n\t\tconst v = new Vector3();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\tv.fromBufferAttribute( attribute, i );\n\n\t\t\tif ( v.x === 0 && v.y === 0 && v.z === 0 ) {\n\n\t\t\t\t// if values can't be normalized set (1, 0, 0)\n\t\t\t\tv.setX( 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\tv.normalize();\n\n\t\t\t}\n\n\t\t\tattribute.setXYZ( i, v.x, v.y, v.z );\n\n\t\t}\n\n\t\tcache.attributesNormalized.set( normal, attribute );\n\n\t\treturn attribute;\n\n\t}\n\n\t/**\n\t * Applies a texture transform, if present, to the map definition. Requires\n\t * the KHR_texture_transform extension.\n\t *\n\t * @param {Object} mapDef\n\t * @param {THREE.Texture} texture\n\t */\n\tapplyTextureTransform( mapDef, texture ) {\n\n\t\tlet didTransform = false;\n\t\tconst transformDef = {};\n\n\t\tif ( texture.offset.x !== 0 || texture.offset.y !== 0 ) {\n\n\t\t\ttransformDef.offset = texture.offset.toArray();\n\t\t\tdidTransform = true;\n\n\t\t}\n\n\t\tif ( texture.rotation !== 0 ) {\n\n\t\t\ttransformDef.rotation = texture.rotation;\n\t\t\tdidTransform = true;\n\n\t\t}\n\n\t\tif ( texture.repeat.x !== 1 || texture.repeat.y !== 1 ) {\n\n\t\t\ttransformDef.scale = texture.repeat.toArray();\n\t\t\tdidTransform = true;\n\n\t\t}\n\n\t\tif ( didTransform ) {\n\n\t\t\tmapDef.extensions = mapDef.extensions || {};\n\t\t\tmapDef.extensions[ 'KHR_texture_transform' ] = transformDef;\n\t\t\tthis.extensionsUsed[ 'KHR_texture_transform' ] = true;\n\n\t\t}\n\n\t}\n\n\tbuildMetalRoughTexture( metalnessMap, roughnessMap ) {\n\n\t\tif ( metalnessMap === roughnessMap ) return metalnessMap;\n\n\t\tfunction getEncodingConversion( map ) {\n\n\t\t\tif ( map.encoding === sRGBEncoding ) {\n\n\t\t\t\treturn function SRGBToLinear( c ) {\n\n\t\t\t\t\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\treturn function LinearToLinear( c ) {\n\n\t\t\t\treturn c;\n\n\t\t\t};\n\n\t\t}\n\n\t\tconsole.warn( 'THREE.GLTFExporter: Merged metalnessMap and roughnessMap textures.' );\n\n\t\tconst metalness = metalnessMap?.image;\n\t\tconst roughness = roughnessMap?.image;\n\n\t\tconst width = Math.max( metalness?.width || 0, roughness?.width || 0 );\n\t\tconst height = Math.max( metalness?.height || 0, roughness?.height || 0 );\n\n\t\tconst canvas = getCanvas();\n\t\tcanvas.width = width;\n\t\tcanvas.height = height;\n\n\t\tconst context = canvas.getContext( '2d' );\n\t\tcontext.fillStyle = '#00ffff';\n\t\tcontext.fillRect( 0, 0, width, height );\n\n\t\tconst composite = context.getImageData( 0, 0, width, height );\n\n\t\tif ( metalness ) {\n\n\t\t\tcontext.drawImage( metalness, 0, 0, width, height );\n\n\t\t\tconst convert = getEncodingConversion( metalnessMap );\n\t\t\tconst data = context.getImageData( 0, 0, width, height ).data;\n\n\t\t\tfor ( let i = 2; i < data.length; i += 4 ) {\n\n\t\t\t\tcomposite.data[ i ] = convert( data[ i ] / 256 ) * 256;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( roughness ) {\n\n\t\t\tcontext.drawImage( roughness, 0, 0, width, height );\n\n\t\t\tconst convert = getEncodingConversion( roughnessMap );\n\t\t\tconst data = context.getImageData( 0, 0, width, height ).data;\n\n\t\t\tfor ( let i = 1; i < data.length; i += 4 ) {\n\n\t\t\t\tcomposite.data[ i ] = convert( data[ i ] / 256 ) * 256;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcontext.putImageData( composite, 0, 0 );\n\n\t\t//\n\n\t\tconst reference = metalnessMap || roughnessMap;\n\n\t\tconst texture = reference.clone();\n\n\t\ttexture.source = new Source( canvas );\n\t\ttexture.encoding = LinearEncoding;\n\n\t\treturn texture;\n\n\t}\n\n\t/**\n\t * Process a buffer to append to the default one.\n\t * @param {ArrayBuffer} buffer\n\t * @return {Integer}\n\t */\n\tprocessBuffer( buffer ) {\n\n\t\tconst json = this.json;\n\t\tconst buffers = this.buffers;\n\n\t\tif ( ! json.buffers ) json.buffers = [ { byteLength: 0 } ];\n\n\t\t// All buffers are merged before export.\n\t\tbuffers.push( buffer );\n\n\t\treturn 0;\n\n\t}\n\n\t/**\n\t * Process and generate a BufferView\n\t * @param {BufferAttribute} attribute\n\t * @param {number} componentType\n\t * @param {number} start\n\t * @param {number} count\n\t * @param {number} target (Optional) Target usage of the BufferView\n\t * @return {Object}\n\t */\n\tprocessBufferView( attribute, componentType, start, count, target ) {\n\n\t\tconst json = this.json;\n\n\t\tif ( ! json.bufferViews ) json.bufferViews = [];\n\n\t\t// Create a new dataview and dump the attribute's array into it\n\n\t\tlet componentSize;\n\n\t\tif ( componentType === WEBGL_CONSTANTS.UNSIGNED_BYTE ) {\n\n\t\t\tcomponentSize = 1;\n\n\t\t} else if ( componentType === WEBGL_CONSTANTS.UNSIGNED_SHORT ) {\n\n\t\t\tcomponentSize = 2;\n\n\t\t} else {\n\n\t\t\tcomponentSize = 4;\n\n\t\t}\n\n\t\tconst byteLength = getPaddedBufferSize( count * attribute.itemSize * componentSize );\n\t\tconst dataView = new DataView( new ArrayBuffer( byteLength ) );\n\t\tlet offset = 0;\n\n\t\tfor ( let i = start; i < start + count; i ++ ) {\n\n\t\t\tfor ( let a = 0; a < attribute.itemSize; a ++ ) {\n\n\t\t\t\tlet value;\n\n\t\t\t\tif ( attribute.itemSize > 4 ) {\n\n\t\t\t\t\t // no support for interleaved data for itemSize > 4\n\n\t\t\t\t\tvalue = attribute.array[ i * attribute.itemSize + a ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( a === 0 ) value = attribute.getX( i );\n\t\t\t\t\telse if ( a === 1 ) value = attribute.getY( i );\n\t\t\t\t\telse if ( a === 2 ) value = attribute.getZ( i );\n\t\t\t\t\telse if ( a === 3 ) value = attribute.getW( i );\n\n\t\t\t\t}\n\n\t\t\t\tif ( componentType === WEBGL_CONSTANTS.FLOAT ) {\n\n\t\t\t\t\tdataView.setFloat32( offset, value, true );\n\n\t\t\t\t} else if ( componentType === WEBGL_CONSTANTS.UNSIGNED_INT ) {\n\n\t\t\t\t\tdataView.setUint32( offset, value, true );\n\n\t\t\t\t} else if ( componentType === WEBGL_CONSTANTS.UNSIGNED_SHORT ) {\n\n\t\t\t\t\tdataView.setUint16( offset, value, true );\n\n\t\t\t\t} else if ( componentType === WEBGL_CONSTANTS.UNSIGNED_BYTE ) {\n\n\t\t\t\t\tdataView.setUint8( offset, value );\n\n\t\t\t\t}\n\n\t\t\t\toffset += componentSize;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bufferViewDef = {\n\n\t\t\tbuffer: this.processBuffer( dataView.buffer ),\n\t\t\tbyteOffset: this.byteOffset,\n\t\t\tbyteLength: byteLength\n\n\t\t};\n\n\t\tif ( target !== undefined ) bufferViewDef.target = target;\n\n\t\tif ( target === WEBGL_CONSTANTS.ARRAY_BUFFER ) {\n\n\t\t\t// Only define byteStride for vertex attributes.\n\t\t\tbufferViewDef.byteStride = attribute.itemSize * componentSize;\n\n\t\t}\n\n\t\tthis.byteOffset += byteLength;\n\n\t\tjson.bufferViews.push( bufferViewDef );\n\n\t\t// @TODO Merge bufferViews where possible.\n\t\tconst output = {\n\n\t\t\tid: json.bufferViews.length - 1,\n\t\t\tbyteLength: 0\n\n\t\t};\n\n\t\treturn output;\n\n\t}\n\n\t/**\n\t * Process and generate a BufferView from an image Blob.\n\t * @param {Blob} blob\n\t * @return {Promise}\n\t */\n\tprocessBufferViewImage( blob ) {\n\n\t\tconst writer = this;\n\t\tconst json = writer.json;\n\n\t\tif ( ! json.bufferViews ) json.bufferViews = [];\n\n\t\treturn new Promise( function ( resolve ) {\n\n\t\t\tconst reader = new FileReader();\n\t\t\treader.readAsArrayBuffer( blob );\n\t\t\treader.onloadend = function () {\n\n\t\t\t\tconst buffer = getPaddedArrayBuffer( reader.result );\n\n\t\t\t\tconst bufferViewDef = {\n\t\t\t\t\tbuffer: writer.processBuffer( buffer ),\n\t\t\t\t\tbyteOffset: writer.byteOffset,\n\t\t\t\t\tbyteLength: buffer.byteLength\n\t\t\t\t};\n\n\t\t\t\twriter.byteOffset += buffer.byteLength;\n\t\t\t\tresolve( json.bufferViews.push( bufferViewDef ) - 1 );\n\n\t\t\t};\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Process attribute to generate an accessor\n\t * @param {BufferAttribute} attribute Attribute to process\n\t * @param {THREE.BufferGeometry} geometry (Optional) Geometry used for truncated draw range\n\t * @param {Integer} start (Optional)\n\t * @param {Integer} count (Optional)\n\t * @return {Integer|null} Index of the processed accessor on the \"accessors\" array\n\t */\n\tprocessAccessor( attribute, geometry, start, count ) {\n\n\t\tconst json = this.json;\n\n\t\tconst types = {\n\n\t\t\t1: 'SCALAR',\n\t\t\t2: 'VEC2',\n\t\t\t3: 'VEC3',\n\t\t\t4: 'VEC4',\n\t\t\t16: 'MAT4'\n\n\t\t};\n\n\t\tlet componentType;\n\n\t\t// Detect the component type of the attribute array (float, uint or ushort)\n\t\tif ( attribute.array.constructor === Float32Array ) {\n\n\t\t\tcomponentType = WEBGL_CONSTANTS.FLOAT;\n\n\t\t} else if ( attribute.array.constructor === Uint32Array ) {\n\n\t\t\tcomponentType = WEBGL_CONSTANTS.UNSIGNED_INT;\n\n\t\t} else if ( attribute.array.constructor === Uint16Array ) {\n\n\t\t\tcomponentType = WEBGL_CONSTANTS.UNSIGNED_SHORT;\n\n\t\t} else if ( attribute.array.constructor === Uint8Array ) {\n\n\t\t\tcomponentType = WEBGL_CONSTANTS.UNSIGNED_BYTE;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.GLTFExporter: Unsupported bufferAttribute component type.' );\n\n\t\t}\n\n\t\tif ( start === undefined ) start = 0;\n\t\tif ( count === undefined ) count = attribute.count;\n\n\t\t// Skip creating an accessor if the attribute doesn't have data to export\n\t\tif ( count === 0 ) return null;\n\n\t\tconst minMax = getMinMax( attribute, start, count );\n\t\tlet bufferViewTarget;\n\n\t\t// If geometry isn't provided, don't infer the target usage of the bufferView. For\n\t\t// animation samplers, target must not be set.\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tbufferViewTarget = attribute === geometry.index ? WEBGL_CONSTANTS.ELEMENT_ARRAY_BUFFER : WEBGL_CONSTANTS.ARRAY_BUFFER;\n\n\t\t}\n\n\t\tconst bufferView = this.processBufferView( attribute, componentType, start, count, bufferViewTarget );\n\n\t\tconst accessorDef = {\n\n\t\t\tbufferView: bufferView.id,\n\t\t\tbyteOffset: bufferView.byteOffset,\n\t\t\tcomponentType: componentType,\n\t\t\tcount: count,\n\t\t\tmax: minMax.max,\n\t\t\tmin: minMax.min,\n\t\t\ttype: types[ attribute.itemSize ]\n\n\t\t};\n\n\t\tif ( attribute.normalized === true ) accessorDef.normalized = true;\n\t\tif ( ! json.accessors ) json.accessors = [];\n\n\t\treturn json.accessors.push( accessorDef ) - 1;\n\n\t}\n\n\t/**\n\t * Process image\n\t * @param {Image} image to process\n\t * @param {Integer} format of the image (RGBAFormat)\n\t * @param {Boolean} flipY before writing out the image\n\t * @param {String} mimeType export format\n\t * @return {Integer} Index of the processed texture in the \"images\" array\n\t */\n\tprocessImage( image, format, flipY, mimeType = 'image/png' ) {\n\n\t\tconst writer = this;\n\t\tconst cache = writer.cache;\n\t\tconst json = writer.json;\n\t\tconst options = writer.options;\n\t\tconst pending = writer.pending;\n\n\t\tif ( ! cache.images.has( image ) ) cache.images.set( image, {} );\n\n\t\tconst cachedImages = cache.images.get( image );\n\n\t\tconst key = mimeType + ':flipY/' + flipY.toString();\n\n\t\tif ( cachedImages[ key ] !== undefined ) return cachedImages[ key ];\n\n\t\tif ( ! json.images ) json.images = [];\n\n\t\tconst imageDef = { mimeType: mimeType };\n\n\t\tconst canvas = getCanvas();\n\n\t\tcanvas.width = Math.min( image.width, options.maxTextureSize );\n\t\tcanvas.height = Math.min( image.height, options.maxTextureSize );\n\n\t\tconst ctx = canvas.getContext( '2d' );\n\n\t\tif ( flipY === true ) {\n\n\t\t\tctx.translate( 0, canvas.height );\n\t\t\tctx.scale( 1, - 1 );\n\n\t\t}\n\n\t\tif ( image.data !== undefined ) { // THREE.DataTexture\n\n\t\t\tif ( format !== RGBAFormat ) {\n\n\t\t\t\tconsole.error( 'GLTFExporter: Only RGBAFormat is supported.' );\n\n\t\t\t}\n\n\t\t\tif ( image.width > options.maxTextureSize || image.height > options.maxTextureSize ) {\n\n\t\t\t\tconsole.warn( 'GLTFExporter: Image size is bigger than maxTextureSize', image );\n\n\t\t\t}\n\n\t\t\tconst data = new Uint8ClampedArray( image.height * image.width * 4 );\n\n\t\t\tfor ( let i = 0; i < data.length; i += 4 ) {\n\n\t\t\t\tdata[ i + 0 ] = image.data[ i + 0 ];\n\t\t\t\tdata[ i + 1 ] = image.data[ i + 1 ];\n\t\t\t\tdata[ i + 2 ] = image.data[ i + 2 ];\n\t\t\t\tdata[ i + 3 ] = image.data[ i + 3 ];\n\n\t\t\t}\n\n\t\t\tctx.putImageData( new ImageData( data, image.width, image.height ), 0, 0 );\n\n\t\t} else {\n\n\t\t\tctx.drawImage( image, 0, 0, canvas.width, canvas.height );\n\n\t\t}\n\n\t\tif ( options.binary === true ) {\n\n\t\t\tpending.push(\n\n\t\t\t\tgetToBlobPromise( canvas, mimeType )\n\t\t\t\t\t.then( blob => writer.processBufferViewImage( blob ) )\n\t\t\t\t\t.then( bufferViewIndex => {\n\n\t\t\t\t\t\timageDef.bufferView = bufferViewIndex;\n\n\t\t\t\t\t} )\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tif ( canvas.toDataURL !== undefined ) {\n\n\t\t\t\timageDef.uri = canvas.toDataURL( mimeType );\n\n\t\t\t} else {\n\n\t\t\t\tpending.push(\n\n\t\t\t\t\tgetToBlobPromise( canvas, mimeType )\n\t\t\t\t\t\t.then( blob => new FileReader().readAsDataURL( blob ) )\n\t\t\t\t\t\t.then( dataURL => {\n\n\t\t\t\t\t\t\timageDef.uri = dataURL;\n\n\t\t\t\t\t\t} )\n\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst index = json.images.push( imageDef ) - 1;\n\t\tcachedImages[ key ] = index;\n\t\treturn index;\n\n\t}\n\n\t/**\n\t * Process sampler\n\t * @param {Texture} map Texture to process\n\t * @return {Integer} Index of the processed texture in the \"samplers\" array\n\t */\n\tprocessSampler( map ) {\n\n\t\tconst json = this.json;\n\n\t\tif ( ! json.samplers ) json.samplers = [];\n\n\t\tconst samplerDef = {\n\t\t\tmagFilter: THREE_TO_WEBGL[ map.magFilter ],\n\t\t\tminFilter: THREE_TO_WEBGL[ map.minFilter ],\n\t\t\twrapS: THREE_TO_WEBGL[ map.wrapS ],\n\t\t\twrapT: THREE_TO_WEBGL[ map.wrapT ]\n\t\t};\n\n\t\treturn json.samplers.push( samplerDef ) - 1;\n\n\t}\n\n\t/**\n\t * Process texture\n\t * @param {Texture} map Map to process\n\t * @return {Integer} Index of the processed texture in the \"textures\" array\n\t */\n\tprocessTexture( map ) {\n\n\t\tconst cache = this.cache;\n\t\tconst json = this.json;\n\n\t\tif ( cache.textures.has( map ) ) return cache.textures.get( map );\n\n\t\tif ( ! json.textures ) json.textures = [];\n\n\t\tlet mimeType = map.userData.mimeType;\n\n\t\tif ( mimeType === 'image/webp' ) mimeType = 'image/png';\n\n\t\tconst textureDef = {\n\t\t\tsampler: this.processSampler( map ),\n\t\t\tsource: this.processImage( map.image, map.format, map.flipY, mimeType )\n\t\t};\n\n\t\tif ( map.name ) textureDef.name = map.name;\n\n\t\tthis._invokeAll( function ( ext ) {\n\n\t\t\text.writeTexture && ext.writeTexture( map, textureDef );\n\n\t\t} );\n\n\t\tconst index = json.textures.push( textureDef ) - 1;\n\t\tcache.textures.set( map, index );\n\t\treturn index;\n\n\t}\n\n\t/**\n\t * Process material\n\t * @param {THREE.Material} material Material to process\n\t * @return {Integer|null} Index of the processed material in the \"materials\" array\n\t */\n\tprocessMaterial( material ) {\n\n\t\tconst cache = this.cache;\n\t\tconst json = this.json;\n\n\t\tif ( cache.materials.has( material ) ) return cache.materials.get( material );\n\n\t\tif ( material.isShaderMaterial ) {\n\n\t\t\tconsole.warn( 'GLTFExporter: THREE.ShaderMaterial not supported.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( ! json.materials ) json.materials = [];\n\n\t\t// @QUESTION Should we avoid including any attribute that has the default value?\n\t\tconst materialDef = {\tpbrMetallicRoughness: {} };\n\n\t\tif ( material.isMeshStandardMaterial !== true && material.isMeshBasicMaterial !== true ) {\n\n\t\t\tconsole.warn( 'GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.' );\n\n\t\t}\n\n\t\t// pbrMetallicRoughness.baseColorFactor\n\t\tconst color = material.color.toArray().concat( [ material.opacity ] );\n\n\t\tif ( ! equalArray( color, [ 1, 1, 1, 1 ] ) ) {\n\n\t\t\tmaterialDef.pbrMetallicRoughness.baseColorFactor = color;\n\n\t\t}\n\n\t\tif ( material.isMeshStandardMaterial ) {\n\n\t\t\tmaterialDef.pbrMetallicRoughness.metallicFactor = material.metalness;\n\t\t\tmaterialDef.pbrMetallicRoughness.roughnessFactor = material.roughness;\n\n\t\t} else {\n\n\t\t\tmaterialDef.pbrMetallicRoughness.metallicFactor = 0.5;\n\t\t\tmaterialDef.pbrMetallicRoughness.roughnessFactor = 0.5;\n\n\t\t}\n\n\t\t// pbrMetallicRoughness.metallicRoughnessTexture\n\t\tif ( material.metalnessMap || material.roughnessMap ) {\n\n\t\t\tconst metalRoughTexture = this.buildMetalRoughTexture( material.metalnessMap, material.roughnessMap );\n\n\t\t\tconst metalRoughMapDef = { index: this.processTexture( metalRoughTexture ) };\n\t\t\tthis.applyTextureTransform( metalRoughMapDef, metalRoughTexture );\n\t\t\tmaterialDef.pbrMetallicRoughness.metallicRoughnessTexture = metalRoughMapDef;\n\n\t\t}\n\n\t\t// pbrMetallicRoughness.baseColorTexture or pbrSpecularGlossiness diffuseTexture\n\t\tif ( material.map ) {\n\n\t\t\tconst baseColorMapDef = { index: this.processTexture( material.map ) };\n\t\t\tthis.applyTextureTransform( baseColorMapDef, material.map );\n\t\t\tmaterialDef.pbrMetallicRoughness.baseColorTexture = baseColorMapDef;\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\t// note: emissive components are limited to stay within the 0 - 1 range to accommodate glTF spec. see #21849 and #22000.\n\t\t\tconst emissive = material.emissive.clone().multiplyScalar( material.emissiveIntensity );\n\t\t\tconst maxEmissiveComponent = Math.max( emissive.r, emissive.g, emissive.b );\n\n\t\t\tif ( maxEmissiveComponent > 1 ) {\n\n\t\t\t\temissive.multiplyScalar( 1 / maxEmissiveComponent );\n\n\t\t\t\tconsole.warn( 'THREE.GLTFExporter: Some emissive components exceed 1; emissive has been limited' );\n\n\t\t\t}\n\n\t\t\tif ( maxEmissiveComponent > 0 ) {\n\n\t\t\t\tmaterialDef.emissiveFactor = emissive.toArray();\n\n\t\t\t}\n\n\t\t\t// emissiveTexture\n\t\t\tif ( material.emissiveMap ) {\n\n\t\t\t\tconst emissiveMapDef = { index: this.processTexture( material.emissiveMap ) };\n\t\t\t\tthis.applyTextureTransform( emissiveMapDef, material.emissiveMap );\n\t\t\t\tmaterialDef.emissiveTexture = emissiveMapDef;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// normalTexture\n\t\tif ( material.normalMap ) {\n\n\t\t\tconst normalMapDef = { index: this.processTexture( material.normalMap ) };\n\n\t\t\tif ( material.normalScale && material.normalScale.x !== 1 ) {\n\n\t\t\t\t// glTF normal scale is univariate. Ignore `y`, which may be flipped.\n\t\t\t\t// Context: https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\t\t\t\tnormalMapDef.scale = material.normalScale.x;\n\n\t\t\t}\n\n\t\t\tthis.applyTextureTransform( normalMapDef, material.normalMap );\n\t\t\tmaterialDef.normalTexture = normalMapDef;\n\n\t\t}\n\n\t\t// occlusionTexture\n\t\tif ( material.aoMap ) {\n\n\t\t\tconst occlusionMapDef = {\n\t\t\t\tindex: this.processTexture( material.aoMap ),\n\t\t\t\ttexCoord: 1\n\t\t\t};\n\n\t\t\tif ( material.aoMapIntensity !== 1.0 ) {\n\n\t\t\t\tocclusionMapDef.strength = material.aoMapIntensity;\n\n\t\t\t}\n\n\t\t\tthis.applyTextureTransform( occlusionMapDef, material.aoMap );\n\t\t\tmaterialDef.occlusionTexture = occlusionMapDef;\n\n\t\t}\n\n\t\t// alphaMode\n\t\tif ( material.transparent ) {\n\n\t\t\tmaterialDef.alphaMode = 'BLEND';\n\n\t\t} else {\n\n\t\t\tif ( material.alphaTest > 0.0 ) {\n\n\t\t\t\tmaterialDef.alphaMode = 'MASK';\n\t\t\t\tmaterialDef.alphaCutoff = material.alphaTest;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// doubleSided\n\t\tif ( material.side === DoubleSide ) materialDef.doubleSided = true;\n\t\tif ( material.name !== '' ) materialDef.name = material.name;\n\n\t\tthis.serializeUserData( material, materialDef );\n\n\t\tthis._invokeAll( function ( ext ) {\n\n\t\t\text.writeMaterial && ext.writeMaterial( material, materialDef );\n\n\t\t} );\n\n\t\tconst index = json.materials.push( materialDef ) - 1;\n\t\tcache.materials.set( material, index );\n\t\treturn index;\n\n\t}\n\n\t/**\n\t * Process mesh\n\t * @param {THREE.Mesh} mesh Mesh to process\n\t * @return {Integer|null} Index of the processed mesh in the \"meshes\" array\n\t */\n\tprocessMesh( mesh ) {\n\n\t\tconst cache = this.cache;\n\t\tconst json = this.json;\n\n\t\tconst meshCacheKeyParts = [ mesh.geometry.uuid ];\n\n\t\tif ( Array.isArray( mesh.material ) ) {\n\n\t\t\tfor ( let i = 0, l = mesh.material.length; i < l; i ++ ) {\n\n\t\t\t\tmeshCacheKeyParts.push( mesh.material[ i ].uuid\t);\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tmeshCacheKeyParts.push( mesh.material.uuid );\n\n\t\t}\n\n\t\tconst meshCacheKey = meshCacheKeyParts.join( ':' );\n\n\t\tif ( cache.meshes.has( meshCacheKey ) ) return cache.meshes.get( meshCacheKey );\n\n\t\tconst geometry = mesh.geometry;\n\n\t\tlet mode;\n\n\t\t// Use the correct mode\n\t\tif ( mesh.isLineSegments ) {\n\n\t\t\tmode = WEBGL_CONSTANTS.LINES;\n\n\t\t} else if ( mesh.isLineLoop ) {\n\n\t\t\tmode = WEBGL_CONSTANTS.LINE_LOOP;\n\n\t\t} else if ( mesh.isLine ) {\n\n\t\t\tmode = WEBGL_CONSTANTS.LINE_STRIP;\n\n\t\t} else if ( mesh.isPoints ) {\n\n\t\t\tmode = WEBGL_CONSTANTS.POINTS;\n\n\t\t} else {\n\n\t\t\tmode = mesh.material.wireframe ? WEBGL_CONSTANTS.LINES : WEBGL_CONSTANTS.TRIANGLES;\n\n\t\t}\n\n\t\tconst meshDef = {};\n\t\tconst attributes = {};\n\t\tconst primitives = [];\n\t\tconst targets = [];\n\n\t\t// Conversion between attributes names in threejs and gltf spec\n\t\tconst nameConversion = {\n\t\t\tuv: 'TEXCOORD_0',\n\t\t\tuv2: 'TEXCOORD_1',\n\t\t\tcolor: 'COLOR_0',\n\t\t\tskinWeight: 'WEIGHTS_0',\n\t\t\tskinIndex: 'JOINTS_0'\n\t\t};\n\n\t\tconst originalNormal = geometry.getAttribute( 'normal' );\n\n\t\tif ( originalNormal !== undefined && ! this.isNormalizedNormalAttribute( originalNormal ) ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one.' );\n\n\t\t\tgeometry.setAttribute( 'normal', this.createNormalizedNormalAttribute( originalNormal ) );\n\n\t\t}\n\n\t\t// @QUESTION Detect if .vertexColors = true?\n\t\t// For every attribute create an accessor\n\t\tlet modifiedAttribute = null;\n\n\t\tfor ( let attributeName in geometry.attributes ) {\n\n\t\t\t// Ignore morph target attributes, which are exported later.\n\t\t\tif ( attributeName.slice( 0, 5 ) === 'morph' ) continue;\n\n\t\t\tconst attribute = geometry.attributes[ attributeName ];\n\t\t\tattributeName = nameConversion[ attributeName ] || attributeName.toUpperCase();\n\n\t\t\t// Prefix all geometry attributes except the ones specifically\n\t\t\t// listed in the spec; non-spec attributes are considered custom.\n\t\t\tconst validVertexAttributes =\n\t\t\t\t\t/^(POSITION|NORMAL|TANGENT|TEXCOORD_\\d+|COLOR_\\d+|JOINTS_\\d+|WEIGHTS_\\d+)$/;\n\n\t\t\tif ( ! validVertexAttributes.test( attributeName ) ) attributeName = '_' + attributeName;\n\n\t\t\tif ( cache.attributes.has( this.getUID( attribute ) ) ) {\n\n\t\t\t\tattributes[ attributeName ] = cache.attributes.get( this.getUID( attribute ) );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// JOINTS_0 must be UNSIGNED_BYTE or UNSIGNED_SHORT.\n\t\t\tmodifiedAttribute = null;\n\t\t\tconst array = attribute.array;\n\n\t\t\tif ( attributeName === 'JOINTS_0' &&\n\t\t\t\t! ( array instanceof Uint16Array ) &&\n\t\t\t\t! ( array instanceof Uint8Array ) ) {\n\n\t\t\t\tconsole.warn( 'GLTFExporter: Attribute \"skinIndex\" converted to type UNSIGNED_SHORT.' );\n\t\t\t\tmodifiedAttribute = new BufferAttribute( new Uint16Array( array ), attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tconst accessor = this.processAccessor( modifiedAttribute || attribute, geometry );\n\n\t\t\tif ( accessor !== null ) {\n\n\t\t\t\tattributes[ attributeName ] = accessor;\n\t\t\t\tcache.attributes.set( this.getUID( attribute ), accessor );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( originalNormal !== undefined ) geometry.setAttribute( 'normal', originalNormal );\n\n\t\t// Skip if no exportable attributes found\n\t\tif ( Object.keys( attributes ).length === 0 ) return null;\n\n\t\t// Morph targets\n\t\tif ( mesh.morphTargetInfluences !== undefined && mesh.morphTargetInfluences.length > 0 ) {\n\n\t\t\tconst weights = [];\n\t\t\tconst targetNames = [];\n\t\t\tconst reverseDictionary = {};\n\n\t\t\tif ( mesh.morphTargetDictionary !== undefined ) {\n\n\t\t\t\tfor ( const key in mesh.morphTargetDictionary ) {\n\n\t\t\t\t\treverseDictionary[ mesh.morphTargetDictionary[ key ] ] = key;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < mesh.morphTargetInfluences.length; ++ i ) {\n\n\t\t\t\tconst target = {};\n\t\t\t\tlet warned = false;\n\n\t\t\t\tfor ( const attributeName in geometry.morphAttributes ) {\n\n\t\t\t\t\t// glTF 2.0 morph supports only POSITION/NORMAL/TANGENT.\n\t\t\t\t\t// Three.js doesn't support TANGENT yet.\n\n\t\t\t\t\tif ( attributeName !== 'position' && attributeName !== 'normal' ) {\n\n\t\t\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'GLTFExporter: Only POSITION and NORMAL morph are supported.' );\n\t\t\t\t\t\t\twarned = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst attribute = geometry.morphAttributes[ attributeName ][ i ];\n\t\t\t\t\tconst gltfAttributeName = attributeName.toUpperCase();\n\n\t\t\t\t\t// Three.js morph attribute has absolute values while the one of glTF has relative values.\n\t\t\t\t\t//\n\t\t\t\t\t// glTF 2.0 Specification:\n\t\t\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#morph-targets\n\n\t\t\t\t\tconst baseAttribute = geometry.attributes[ attributeName ];\n\n\t\t\t\t\tif ( cache.attributes.has( this.getUID( attribute, true ) ) ) {\n\n\t\t\t\t\t\ttarget[ gltfAttributeName ] = cache.attributes.get( this.getUID( attribute, true ) );\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Clones attribute not to override\n\t\t\t\t\tconst relativeAttribute = attribute.clone();\n\n\t\t\t\t\tif ( ! geometry.morphTargetsRelative ) {\n\n\t\t\t\t\t\tfor ( let j = 0, jl = attribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\trelativeAttribute.setXYZ(\n\t\t\t\t\t\t\t\tj,\n\t\t\t\t\t\t\t\tattribute.getX( j ) - baseAttribute.getX( j ),\n\t\t\t\t\t\t\t\tattribute.getY( j ) - baseAttribute.getY( j ),\n\t\t\t\t\t\t\t\tattribute.getZ( j ) - baseAttribute.getZ( j )\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttarget[ gltfAttributeName ] = this.processAccessor( relativeAttribute, geometry );\n\t\t\t\t\tcache.attributes.set( this.getUID( baseAttribute, true ), target[ gltfAttributeName ] );\n\n\t\t\t\t}\n\n\t\t\t\ttargets.push( target );\n\n\t\t\t\tweights.push( mesh.morphTargetInfluences[ i ] );\n\n\t\t\t\tif ( mesh.morphTargetDictionary !== undefined ) targetNames.push( reverseDictionary[ i ] );\n\n\t\t\t}\n\n\t\t\tmeshDef.weights = weights;\n\n\t\t\tif ( targetNames.length > 0 ) {\n\n\t\t\t\tmeshDef.extras = {};\n\t\t\t\tmeshDef.extras.targetNames = targetNames;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst isMultiMaterial = Array.isArray( mesh.material );\n\n\t\tif ( isMultiMaterial && geometry.groups.length === 0 ) return null;\n\n\t\tconst materials = isMultiMaterial ? mesh.material : [ mesh.material ];\n\t\tconst groups = isMultiMaterial ? geometry.groups : [ { materialIndex: 0, start: undefined, count: undefined } ];\n\n\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\tconst primitive = {\n\t\t\t\tmode: mode,\n\t\t\t\tattributes: attributes,\n\t\t\t};\n\n\t\t\tthis.serializeUserData( geometry, primitive );\n\n\t\t\tif ( targets.length > 0 ) primitive.targets = targets;\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\tlet cacheKey = this.getUID( geometry.index );\n\n\t\t\t\tif ( groups[ i ].start !== undefined || groups[ i ].count !== undefined ) {\n\n\t\t\t\t\tcacheKey += ':' + groups[ i ].start + ':' + groups[ i ].count;\n\n\t\t\t\t}\n\n\t\t\t\tif ( cache.attributes.has( cacheKey ) ) {\n\n\t\t\t\t\tprimitive.indices = cache.attributes.get( cacheKey );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tprimitive.indices = this.processAccessor( geometry.index, geometry, groups[ i ].start, groups[ i ].count );\n\t\t\t\t\tcache.attributes.set( cacheKey, primitive.indices );\n\n\t\t\t\t}\n\n\t\t\t\tif ( primitive.indices === null ) delete primitive.indices;\n\n\t\t\t}\n\n\t\t\tconst material = this.processMaterial( materials[ groups[ i ].materialIndex ] );\n\n\t\t\tif ( material !== null ) primitive.material = material;\n\n\t\t\tprimitives.push( primitive );\n\n\t\t}\n\n\t\tmeshDef.primitives = primitives;\n\n\t\tif ( ! json.meshes ) json.meshes = [];\n\n\t\tthis._invokeAll( function ( ext ) {\n\n\t\t\text.writeMesh && ext.writeMesh( mesh, meshDef );\n\n\t\t} );\n\n\t\tconst index = json.meshes.push( meshDef ) - 1;\n\t\tcache.meshes.set( meshCacheKey, index );\n\t\treturn index;\n\n\t}\n\n\t/**\n\t * Process camera\n\t * @param {THREE.Camera} camera Camera to process\n\t * @return {Integer} Index of the processed mesh in the \"camera\" array\n\t */\n\tprocessCamera( camera ) {\n\n\t\tconst json = this.json;\n\n\t\tif ( ! json.cameras ) json.cameras = [];\n\n\t\tconst isOrtho = camera.isOrthographicCamera;\n\n\t\tconst cameraDef = {\n\t\t\ttype: isOrtho ? 'orthographic' : 'perspective'\n\t\t};\n\n\t\tif ( isOrtho ) {\n\n\t\t\tcameraDef.orthographic = {\n\t\t\t\txmag: camera.right * 2,\n\t\t\t\tymag: camera.top * 2,\n\t\t\t\tzfar: camera.far <= 0 ? 0.001 : camera.far,\n\t\t\t\tznear: camera.near < 0 ? 0 : camera.near\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tcameraDef.perspective = {\n\t\t\t\taspectRatio: camera.aspect,\n\t\t\t\tyfov: MathUtils.degToRad( camera.fov ),\n\t\t\t\tzfar: camera.far <= 0 ? 0.001 : camera.far,\n\t\t\t\tznear: camera.near < 0 ? 0 : camera.near\n\t\t\t};\n\n\t\t}\n\n\t\t// Question: Is saving \"type\" as name intentional?\n\t\tif ( camera.name !== '' ) cameraDef.name = camera.type;\n\n\t\treturn json.cameras.push( cameraDef ) - 1;\n\n\t}\n\n\t/**\n\t * Creates glTF animation entry from AnimationClip object.\n\t *\n\t * Status:\n\t * - Only properties listed in PATH_PROPERTIES may be animated.\n\t *\n\t * @param {THREE.AnimationClip} clip\n\t * @param {THREE.Object3D} root\n\t * @return {number|null}\n\t */\n\tprocessAnimation( clip, root ) {\n\n\t\tconst json = this.json;\n\t\tconst nodeMap = this.nodeMap;\n\n\t\tif ( ! json.animations ) json.animations = [];\n\n\t\tclip = GLTFExporter.Utils.mergeMorphTargetTracks( clip.clone(), root );\n\n\t\tconst tracks = clip.tracks;\n\t\tconst channels = [];\n\t\tconst samplers = [];\n\n\t\tfor ( let i = 0; i < tracks.length; ++ i ) {\n\n\t\t\tconst track = tracks[ i ];\n\t\t\tconst trackBinding = PropertyBinding.parseTrackName( track.name );\n\t\t\tlet trackNode = PropertyBinding.findNode( root, trackBinding.nodeName );\n\t\t\tconst trackProperty = PATH_PROPERTIES[ trackBinding.propertyName ];\n\n\t\t\tif ( trackBinding.objectName === 'bones' ) {\n\n\t\t\t\tif ( trackNode.isSkinnedMesh === true ) {\n\n\t\t\t\t\ttrackNode = trackNode.skeleton.getBoneByName( trackBinding.objectIndex );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttrackNode = undefined;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ! trackNode || ! trackProperty ) {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFExporter: Could not export animation track \"%s\".', track.name );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tconst inputItemSize = 1;\n\t\t\tlet outputItemSize = track.values.length / track.times.length;\n\n\t\t\tif ( trackProperty === PATH_PROPERTIES.morphTargetInfluences ) {\n\n\t\t\t\toutputItemSize /= trackNode.morphTargetInfluences.length;\n\n\t\t\t}\n\n\t\t\tlet interpolation;\n\n\t\t\t// @TODO export CubicInterpolant(InterpolateSmooth) as CUBICSPLINE\n\n\t\t\t// Detecting glTF cubic spline interpolant by checking factory method's special property\n\t\t\t// GLTFCubicSplineInterpolant is a custom interpolant and track doesn't return\n\t\t\t// valid value from .getInterpolation().\n\t\t\tif ( track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline === true ) {\n\n\t\t\t\tinterpolation = 'CUBICSPLINE';\n\n\t\t\t\t// itemSize of CUBICSPLINE keyframe is 9\n\t\t\t\t// (VEC3 * 3: inTangent, splineVertex, and outTangent)\n\t\t\t\t// but needs to be stored as VEC3 so dividing by 3 here.\n\t\t\t\toutputItemSize /= 3;\n\n\t\t\t} else if ( track.getInterpolation() === InterpolateDiscrete ) {\n\n\t\t\t\tinterpolation = 'STEP';\n\n\t\t\t} else {\n\n\t\t\t\tinterpolation = 'LINEAR';\n\n\t\t\t}\n\n\t\t\tsamplers.push( {\n\t\t\t\tinput: this.processAccessor( new BufferAttribute( track.times, inputItemSize ) ),\n\t\t\t\toutput: this.processAccessor( new BufferAttribute( track.values, outputItemSize ) ),\n\t\t\t\tinterpolation: interpolation\n\t\t\t} );\n\n\t\t\tchannels.push( {\n\t\t\t\tsampler: samplers.length - 1,\n\t\t\t\ttarget: {\n\t\t\t\t\tnode: nodeMap.get( trackNode ),\n\t\t\t\t\tpath: trackProperty\n\t\t\t\t}\n\t\t\t} );\n\n\t\t}\n\n\t\tjson.animations.push( {\n\t\t\tname: clip.name || 'clip_' + json.animations.length,\n\t\t\tsamplers: samplers,\n\t\t\tchannels: channels\n\t\t} );\n\n\t\treturn json.animations.length - 1;\n\n\t}\n\n\t/**\n\t * @param {THREE.Object3D} object\n\t * @return {number|null}\n\t */\n\t processSkin( object ) {\n\n\t\tconst json = this.json;\n\t\tconst nodeMap = this.nodeMap;\n\n\t\tconst node = json.nodes[ nodeMap.get( object ) ];\n\n\t\tconst skeleton = object.skeleton;\n\n\t\tif ( skeleton === undefined ) return null;\n\n\t\tconst rootJoint = object.skeleton.bones[ 0 ];\n\n\t\tif ( rootJoint === undefined ) return null;\n\n\t\tconst joints = [];\n\t\tconst inverseBindMatrices = new Float32Array( skeleton.bones.length * 16 );\n\t\tconst temporaryBoneInverse = new Matrix4();\n\n\t\tfor ( let i = 0; i < skeleton.bones.length; ++ i ) {\n\n\t\t\tjoints.push( nodeMap.get( skeleton.bones[ i ] ) );\n\t\t\ttemporaryBoneInverse.copy( skeleton.boneInverses[ i ] );\n\t\t\ttemporaryBoneInverse.multiply( object.bindMatrix ).toArray( inverseBindMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( json.skins === undefined ) json.skins = [];\n\n\t\tjson.skins.push( {\n\t\t\tinverseBindMatrices: this.processAccessor( new BufferAttribute( inverseBindMatrices, 16 ) ),\n\t\t\tjoints: joints,\n\t\t\tskeleton: nodeMap.get( rootJoint )\n\t\t} );\n\n\t\tconst skinIndex = node.skin = json.skins.length - 1;\n\n\t\treturn skinIndex;\n\n\t}\n\n\t/**\n\t * Process Object3D node\n\t * @param {THREE.Object3D} node Object3D to processNode\n\t * @return {Integer} Index of the node in the nodes list\n\t */\n\tprocessNode( object ) {\n\n\t\tconst json = this.json;\n\t\tconst options = this.options;\n\t\tconst nodeMap = this.nodeMap;\n\n\t\tif ( ! json.nodes ) json.nodes = [];\n\n\t\tconst nodeDef = {};\n\n\t\tif ( options.trs ) {\n\n\t\t\tconst rotation = object.quaternion.toArray();\n\t\t\tconst position = object.position.toArray();\n\t\t\tconst scale = object.scale.toArray();\n\n\t\t\tif ( ! equalArray( rotation, [ 0, 0, 0, 1 ] ) ) {\n\n\t\t\t\tnodeDef.rotation = rotation;\n\n\t\t\t}\n\n\t\t\tif ( ! equalArray( position, [ 0, 0, 0 ] ) ) {\n\n\t\t\t\tnodeDef.translation = position;\n\n\t\t\t}\n\n\t\t\tif ( ! equalArray( scale, [ 1, 1, 1 ] ) ) {\n\n\t\t\t\tnodeDef.scale = scale;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( object.matrixAutoUpdate ) {\n\n\t\t\t\tobject.updateMatrix();\n\n\t\t\t}\n\n\t\t\tif ( isIdentityMatrix( object.matrix ) === false ) {\n\n\t\t\t\tnodeDef.matrix = object.matrix.elements;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// We don't export empty strings name because it represents no-name in Three.js.\n\t\tif ( object.name !== '' ) nodeDef.name = String( object.name );\n\n\t\tthis.serializeUserData( object, nodeDef );\n\n\t\tif ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\tconst meshIndex = this.processMesh( object );\n\n\t\t\tif ( meshIndex !== null ) nodeDef.mesh = meshIndex;\n\n\t\t} else if ( object.isCamera ) {\n\n\t\t\tnodeDef.camera = this.processCamera( object );\n\n\t\t}\n\n\t\tif ( object.isSkinnedMesh ) this.skins.push( object );\n\n\t\tif ( object.children.length > 0 ) {\n\n\t\t\tconst children = [];\n\n\t\t\tfor ( let i = 0, l = object.children.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = object.children[ i ];\n\n\t\t\t\tif ( child.visible || options.onlyVisible === false ) {\n\n\t\t\t\t\tconst nodeIndex = this.processNode( child );\n\n\t\t\t\t\tif ( nodeIndex !== null ) children.push( nodeIndex );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( children.length > 0 ) nodeDef.children = children;\n\n\t\t}\n\n\t\tthis._invokeAll( function ( ext ) {\n\n\t\t\text.writeNode && ext.writeNode( object, nodeDef );\n\n\t\t} );\n\n\t\tconst nodeIndex = json.nodes.push( nodeDef ) - 1;\n\t\tnodeMap.set( object, nodeIndex );\n\t\treturn nodeIndex;\n\n\t}\n\n\t/**\n\t * Process Scene\n\t * @param {Scene} node Scene to process\n\t */\n\tprocessScene( scene ) {\n\n\t\tconst json = this.json;\n\t\tconst options = this.options;\n\n\t\tif ( ! json.scenes ) {\n\n\t\t\tjson.scenes = [];\n\t\t\tjson.scene = 0;\n\n\t\t}\n\n\t\tconst sceneDef = {};\n\n\t\tif ( scene.name !== '' ) sceneDef.name = scene.name;\n\n\t\tjson.scenes.push( sceneDef );\n\n\t\tconst nodes = [];\n\n\t\tfor ( let i = 0, l = scene.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = scene.children[ i ];\n\n\t\t\tif ( child.visible || options.onlyVisible === false ) {\n\n\t\t\t\tconst nodeIndex = this.processNode( child );\n\n\t\t\t\tif ( nodeIndex !== null ) nodes.push( nodeIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( nodes.length > 0 ) sceneDef.nodes = nodes;\n\n\t\tthis.serializeUserData( scene, sceneDef );\n\n\t}\n\n\t/**\n\t * Creates a Scene to hold a list of objects and parse it\n\t * @param {Array} objects List of objects to process\n\t */\n\tprocessObjects( objects ) {\n\n\t\tconst scene = new Scene();\n\t\tscene.name = 'AuxScene';\n\n\t\tfor ( let i = 0; i < objects.length; i ++ ) {\n\n\t\t\t// We push directly to children instead of calling `add` to prevent\n\t\t\t// modify the .parent and break its original scene and hierarchy\n\t\t\tscene.children.push( objects[ i ] );\n\n\t\t}\n\n\t\tthis.processScene( scene );\n\n\t}\n\n\t/**\n\t * @param {THREE.Object3D|Array} input\n\t */\n\tprocessInput( input ) {\n\n\t\tconst options = this.options;\n\n\t\tinput = input instanceof Array ? input : [ input ];\n\n\t\tthis._invokeAll( function ( ext ) {\n\n\t\t\text.beforeParse && ext.beforeParse( input );\n\n\t\t} );\n\n\t\tconst objectsWithoutScene = [];\n\n\t\tfor ( let i = 0; i < input.length; i ++ ) {\n\n\t\t\tif ( input[ i ] instanceof Scene ) {\n\n\t\t\t\tthis.processScene( input[ i ] );\n\n\t\t\t} else {\n\n\t\t\t\tobjectsWithoutScene.push( input[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( objectsWithoutScene.length > 0 ) this.processObjects( objectsWithoutScene );\n\n\t\tfor ( let i = 0; i < this.skins.length; ++ i ) {\n\n\t\t\tthis.processSkin( this.skins[ i ] );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < options.animations.length; ++ i ) {\n\n\t\t\tthis.processAnimation( options.animations[ i ], input[ 0 ] );\n\n\t\t}\n\n\t\tthis._invokeAll( function ( ext ) {\n\n\t\t\text.afterParse && ext.afterParse( input );\n\n\t\t} );\n\n\t}\n\n\t_invokeAll( func ) {\n\n\t\tfor ( let i = 0, il = this.plugins.length; i < il; i ++ ) {\n\n\t\t\tfunc( this.plugins[ i ] );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Punctual Lights Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n */\nclass GLTFLightExtension {\n\n\tconstructor( writer ) {\n\n\t\tthis.writer = writer;\n\t\tthis.name = 'KHR_lights_punctual';\n\n\t}\n\n\twriteNode( light, nodeDef ) {\n\n\t\tif ( ! light.isLight ) return;\n\n\t\tif ( ! light.isDirectionalLight && ! light.isPointLight && ! light.isSpotLight ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFExporter: Only directional, point, and spot lights are supported.', light );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst writer = this.writer;\n\t\tconst json = writer.json;\n\t\tconst extensionsUsed = writer.extensionsUsed;\n\n\t\tconst lightDef = {};\n\n\t\tif ( light.name ) lightDef.name = light.name;\n\n\t\tlightDef.color = light.color.toArray();\n\n\t\tlightDef.intensity = light.intensity;\n\n\t\tif ( light.isDirectionalLight ) {\n\n\t\t\tlightDef.type = 'directional';\n\n\t\t} else if ( light.isPointLight ) {\n\n\t\t\tlightDef.type = 'point';\n\n\t\t\tif ( light.distance > 0 ) lightDef.range = light.distance;\n\n\t\t} else if ( light.isSpotLight ) {\n\n\t\t\tlightDef.type = 'spot';\n\n\t\t\tif ( light.distance > 0 ) lightDef.range = light.distance;\n\n\t\t\tlightDef.spot = {};\n\t\t\tlightDef.spot.innerConeAngle = ( light.penumbra - 1.0 ) * light.angle * - 1.0;\n\t\t\tlightDef.spot.outerConeAngle = light.angle;\n\n\t\t}\n\n\t\tif ( light.decay !== undefined && light.decay !== 2 ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, '\n\t\t\t\t+ 'and expects light.decay=2.' );\n\n\t\t}\n\n\t\tif ( light.target\n\t\t\t\t&& ( light.target.parent !== light\n\t\t\t\t|| light.target.position.x !== 0\n\t\t\t\t|| light.target.position.y !== 0\n\t\t\t\t|| light.target.position.z !== - 1 ) ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFExporter: Light direction may be lost. For best results, '\n\t\t\t\t+ 'make light.target a child of the light with position 0,0,-1.' );\n\n\t\t}\n\n\t\tif ( ! extensionsUsed[ this.name ] ) {\n\n\t\t\tjson.extensions = json.extensions || {};\n\t\t\tjson.extensions[ this.name ] = { lights: [] };\n\t\t\textensionsUsed[ this.name ] = true;\n\n\t\t}\n\n\t\tconst lights = json.extensions[ this.name ].lights;\n\t\tlights.push( lightDef );\n\n\t\tnodeDef.extensions = nodeDef.extensions || {};\n\t\tnodeDef.extensions[ this.name ] = { light: lights.length - 1 };\n\n\t}\n\n}\n\n/**\n * Unlit Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n */\nclass GLTFMaterialsUnlitExtension {\n\n\tconstructor( writer ) {\n\n\t\tthis.writer = writer;\n\t\tthis.name = 'KHR_materials_unlit';\n\n\t}\n\n\twriteMaterial( material, materialDef ) {\n\n\t\tif ( ! material.isMeshBasicMaterial ) return;\n\n\t\tconst writer = this.writer;\n\t\tconst extensionsUsed = writer.extensionsUsed;\n\n\t\tmaterialDef.extensions = materialDef.extensions || {};\n\t\tmaterialDef.extensions[ this.name ] = {};\n\n\t\textensionsUsed[ this.name ] = true;\n\n\t\tmaterialDef.pbrMetallicRoughness.metallicFactor = 0.0;\n\t\tmaterialDef.pbrMetallicRoughness.roughnessFactor = 0.9;\n\n\t}\n\n}\n\n/**\n * Specular-Glossiness Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Archived/KHR_materials_pbrSpecularGlossiness\n */\nclass GLTFMaterialsPBRSpecularGlossiness {\n\n\tconstructor( writer ) {\n\n\t\tthis.writer = writer;\n\t\tthis.name = 'KHR_materials_pbrSpecularGlossiness';\n\n\t}\n\n\twriteMaterial( material, materialDef ) {\n\n\t\tif ( ! material.isGLTFSpecularGlossinessMaterial ) return;\n\n\t\tconst writer = this.writer;\n\t\tconst extensionsUsed = writer.extensionsUsed;\n\n\t\tconst extensionDef = {};\n\n\t\tif ( materialDef.pbrMetallicRoughness.baseColorFactor ) {\n\n\t\t\textensionDef.diffuseFactor = materialDef.pbrMetallicRoughness.baseColorFactor;\n\n\t\t}\n\n\t\tconst specularFactor = [ 1, 1, 1 ];\n\t\tmaterial.specular.toArray( specularFactor, 0 );\n\t\textensionDef.specularFactor = specularFactor;\n\t\textensionDef.glossinessFactor = material.glossiness;\n\n\t\tif ( materialDef.pbrMetallicRoughness.baseColorTexture ) {\n\n\t\t\textensionDef.diffuseTexture = materialDef.pbrMetallicRoughness.baseColorTexture;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tconst specularMapDef = { index: writer.processTexture( material.specularMap ) };\n\t\t\twriter.applyTextureTransform( specularMapDef, material.specularMap );\n\t\t\textensionDef.specularGlossinessTexture = specularMapDef;\n\n\t\t}\n\n\t\tmaterialDef.extensions = materialDef.extensions || {};\n\t\tmaterialDef.extensions[ this.name ] = extensionDef;\n\t\textensionsUsed[ this.name ] = true;\n\n\t}\n\n}\n\n/**\n * Clearcoat Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n */\nclass GLTFMaterialsClearcoatExtension {\n\n\tconstructor( writer ) {\n\n\t\tthis.writer = writer;\n\t\tthis.name = 'KHR_materials_clearcoat';\n\n\t}\n\n\twriteMaterial( material, materialDef ) {\n\n\t\tif ( ! material.isMeshPhysicalMaterial ) return;\n\n\t\tconst writer = this.writer;\n\t\tconst extensionsUsed = writer.extensionsUsed;\n\n\t\tconst extensionDef = {};\n\n\t\textensionDef.clearcoatFactor = material.clearcoat;\n\n\t\tif ( material.clearcoatMap ) {\n\n\t\t\tconst clearcoatMapDef = { index: writer.processTexture( material.clearcoatMap ) };\n\t\t\twriter.applyTextureTransform( clearcoatMapDef, material.clearcoatMap );\n\t\t\textensionDef.clearcoatTexture = clearcoatMapDef;\n\n\t\t}\n\n\t\textensionDef.clearcoatRoughnessFactor = material.clearcoatRoughness;\n\n\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\tconst clearcoatRoughnessMapDef = { index: writer.processTexture( material.clearcoatRoughnessMap ) };\n\t\t\twriter.applyTextureTransform( clearcoatRoughnessMapDef, material.clearcoatRoughnessMap );\n\t\t\textensionDef.clearcoatRoughnessTexture = clearcoatRoughnessMapDef;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\tconst clearcoatNormalMapDef = { index: writer.processTexture( material.clearcoatNormalMap ) };\n\t\t\twriter.applyTextureTransform( clearcoatNormalMapDef, material.clearcoatNormalMap );\n\t\t\textensionDef.clearcoatNormalTexture = clearcoatNormalMapDef;\n\n\t\t}\n\n\t\tmaterialDef.extensions = materialDef.extensions || {};\n\t\tmaterialDef.extensions[ this.name ] = extensionDef;\n\n\t\textensionsUsed[ this.name ] = true;\n\n\n\t}\n\n}\n\n/**\n * Iridescence Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence\n */\nclass GLTFMaterialsIridescenceExtension {\n\n\tconstructor( writer ) {\n\n\t\tthis.writer = writer;\n\t\tthis.name = 'KHR_materials_iridescence';\n\n\t}\n\n\twriteMaterial( material, materialDef ) {\n\n\t\tif ( ! material.isMeshPhysicalMaterial ) return;\n\n\t\tconst writer = this.writer;\n\t\tconst extensionsUsed = writer.extensionsUsed;\n\n\t\tconst extensionDef = {};\n\n\t\textensionDef.iridescenceFactor = material.iridescence;\n\n\t\tif ( material.iridescenceMap ) {\n\n\t\t\tconst iridescenceMapDef = { index: writer.processTexture( material.iridescenceMap ) };\n\t\t\twriter.applyTextureTransform( iridescenceMapDef, material.iridescenceMap );\n\t\t\textensionDef.iridescenceTexture = iridescenceMapDef;\n\n\t\t}\n\n\t\textensionDef.iridescenceIor = material.iridescenceIOR;\n\t\textensionDef.iridescenceThicknessMinimum = material.iridescenceThicknessRange[ 0 ];\n\t\textensionDef.iridescenceThicknessMaximum = material.iridescenceThicknessRange[ 1 ];\n\n\t\tif ( material.iridescenceThicknessMap ) {\n\n\t\t\tconst iridescenceThicknessMapDef = { index: writer.processTexture( material.iridescenceThicknessMap ) };\n\t\t\twriter.applyTextureTransform( iridescenceThicknessMapDef, material.iridescenceThicknessMap );\n\t\t\textensionDef.iridescenceThicknessTexture = iridescenceThicknessMapDef;\n\n\t\t}\n\n\t\tmaterialDef.extensions = materialDef.extensions || {};\n\t\tmaterialDef.extensions[ this.name ] = extensionDef;\n\n\t\textensionsUsed[ this.name ] = true;\n\n\t}\n\n}\n\n/**\n * Transmission Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n */\nclass GLTFMaterialsTransmissionExtension {\n\n\tconstructor( writer ) {\n\n\t\tthis.writer = writer;\n\t\tthis.name = 'KHR_materials_transmission';\n\n\t}\n\n\twriteMaterial( material, materialDef ) {\n\n\t\tif ( ! material.isMeshPhysicalMaterial || material.transmission === 0 ) return;\n\n\t\tconst writer = this.writer;\n\t\tconst extensionsUsed = writer.extensionsUsed;\n\n\t\tconst extensionDef = {};\n\n\t\textensionDef.transmissionFactor = material.transmission;\n\n\t\tif ( material.transmissionMap ) {\n\n\t\t\tconst transmissionMapDef = { index: writer.processTexture( material.transmissionMap ) };\n\t\t\twriter.applyTextureTransform( transmissionMapDef, material.transmissionMap );\n\t\t\textensionDef.transmissionTexture = transmissionMapDef;\n\n\t\t}\n\n\t\tmaterialDef.extensions = materialDef.extensions || {};\n\t\tmaterialDef.extensions[ this.name ] = extensionDef;\n\n\t\textensionsUsed[ this.name ] = true;\n\n\t}\n\n}\n\n/**\n * Materials Volume Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume\n */\nclass GLTFMaterialsVolumeExtension {\n\n\tconstructor( writer ) {\n\n\t\tthis.writer = writer;\n\t\tthis.name = 'KHR_materials_volume';\n\n\t}\n\n\twriteMaterial( material, materialDef ) {\n\n\t\tif ( ! material.isMeshPhysicalMaterial || material.transmission === 0 ) return;\n\n\t\tconst writer = this.writer;\n\t\tconst extensionsUsed = writer.extensionsUsed;\n\n\t\tconst extensionDef = {};\n\n\t\textensionDef.thicknessFactor = material.thickness;\n\n\t\tif ( material.thicknessMap ) {\n\n\t\t\tconst thicknessMapDef = { index: writer.processTexture( material.thicknessMap ) };\n\t\t\twriter.applyTextureTransform( thicknessMapDef, material.thicknessMap );\n\t\t\textensionDef.thicknessTexture = thicknessMapDef;\n\n\t\t}\n\n\t\textensionDef.attenuationDistance = material.attenuationDistance;\n\t\textensionDef.attenuationColor = material.attenuationColor.toArray();\n\n\t\tmaterialDef.extensions = materialDef.extensions || {};\n\t\tmaterialDef.extensions[ this.name ] = extensionDef;\n\n\t\textensionsUsed[ this.name ] = true;\n\n\t}\n\n}\n\n/**\n * Static utility functions\n */\nGLTFExporter.Utils = {\n\n\tinsertKeyframe: function ( track, time ) {\n\n\t\tconst tolerance = 0.001; // 1ms\n\t\tconst valueSize = track.getValueSize();\n\n\t\tconst times = new track.TimeBufferType( track.times.length + 1 );\n\t\tconst values = new track.ValueBufferType( track.values.length + valueSize );\n\t\tconst interpolant = track.createInterpolant( new track.ValueBufferType( valueSize ) );\n\n\t\tlet index;\n\n\t\tif ( track.times.length === 0 ) {\n\n\t\t\ttimes[ 0 ] = time;\n\n\t\t\tfor ( let i = 0; i < valueSize; i ++ ) {\n\n\t\t\t\tvalues[ i ] = 0;\n\n\t\t\t}\n\n\t\t\tindex = 0;\n\n\t\t} else if ( time < track.times[ 0 ] ) {\n\n\t\t\tif ( Math.abs( track.times[ 0 ] - time ) < tolerance ) return 0;\n\n\t\t\ttimes[ 0 ] = time;\n\t\t\ttimes.set( track.times, 1 );\n\n\t\t\tvalues.set( interpolant.evaluate( time ), 0 );\n\t\t\tvalues.set( track.values, valueSize );\n\n\t\t\tindex = 0;\n\n\t\t} else if ( time > track.times[ track.times.length - 1 ] ) {\n\n\t\t\tif ( Math.abs( track.times[ track.times.length - 1 ] - time ) < tolerance ) {\n\n\t\t\t\treturn track.times.length - 1;\n\n\t\t\t}\n\n\t\t\ttimes[ times.length - 1 ] = time;\n\t\t\ttimes.set( track.times, 0 );\n\n\t\t\tvalues.set( track.values, 0 );\n\t\t\tvalues.set( interpolant.evaluate( time ), track.values.length );\n\n\t\t\tindex = times.length - 1;\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < track.times.length; i ++ ) {\n\n\t\t\t\tif ( Math.abs( track.times[ i ] - time ) < tolerance ) return i;\n\n\t\t\t\tif ( track.times[ i ] < time && track.times[ i + 1 ] > time ) {\n\n\t\t\t\t\ttimes.set( track.times.slice( 0, i + 1 ), 0 );\n\t\t\t\t\ttimes[ i + 1 ] = time;\n\t\t\t\t\ttimes.set( track.times.slice( i + 1 ), i + 2 );\n\n\t\t\t\t\tvalues.set( track.values.slice( 0, ( i + 1 ) * valueSize ), 0 );\n\t\t\t\t\tvalues.set( interpolant.evaluate( time ), ( i + 1 ) * valueSize );\n\t\t\t\t\tvalues.set( track.values.slice( ( i + 1 ) * valueSize ), ( i + 2 ) * valueSize );\n\n\t\t\t\t\tindex = i + 1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttrack.times = times;\n\t\ttrack.values = values;\n\n\t\treturn index;\n\n\t},\n\n\tmergeMorphTargetTracks: function ( clip, root ) {\n\n\t\tconst tracks = [];\n\t\tconst mergedTracks = {};\n\t\tconst sourceTracks = clip.tracks;\n\n\t\tfor ( let i = 0; i < sourceTracks.length; ++ i ) {\n\n\t\t\tlet sourceTrack = sourceTracks[ i ];\n\t\t\tconst sourceTrackBinding = PropertyBinding.parseTrackName( sourceTrack.name );\n\t\t\tconst sourceTrackNode = PropertyBinding.findNode( root, sourceTrackBinding.nodeName );\n\n\t\t\tif ( sourceTrackBinding.propertyName !== 'morphTargetInfluences' || sourceTrackBinding.propertyIndex === undefined ) {\n\n\t\t\t\t// Tracks that don't affect morph targets, or that affect all morph targets together, can be left as-is.\n\t\t\t\ttracks.push( sourceTrack );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( sourceTrack.createInterpolant !== sourceTrack.InterpolantFactoryMethodDiscrete\n\t\t\t\t&& sourceTrack.createInterpolant !== sourceTrack.InterpolantFactoryMethodLinear ) {\n\n\t\t\t\tif ( sourceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\t\t// This should never happen, because glTF morph target animations\n\t\t\t\t\t// affect all targets already.\n\t\t\t\t\tthrow new Error( 'THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.' );\n\n\t\t\t\t}\n\n\t\t\t\tconsole.warn( 'THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead.' );\n\n\t\t\t\tsourceTrack = sourceTrack.clone();\n\t\t\t\tsourceTrack.setInterpolation( InterpolateLinear );\n\n\t\t\t}\n\n\t\t\tconst targetCount = sourceTrackNode.morphTargetInfluences.length;\n\t\t\tconst targetIndex = sourceTrackNode.morphTargetDictionary[ sourceTrackBinding.propertyIndex ];\n\n\t\t\tif ( targetIndex === undefined ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFExporter: Morph target name not found: ' + sourceTrackBinding.propertyIndex );\n\n\t\t\t}\n\n\t\t\tlet mergedTrack;\n\n\t\t\t// If this is the first time we've seen this object, create a new\n\t\t\t// track to store merged keyframe data for each morph target.\n\t\t\tif ( mergedTracks[ sourceTrackNode.uuid ] === undefined ) {\n\n\t\t\t\tmergedTrack = sourceTrack.clone();\n\n\t\t\t\tconst values = new mergedTrack.ValueBufferType( targetCount * mergedTrack.times.length );\n\n\t\t\t\tfor ( let j = 0; j < mergedTrack.times.length; j ++ ) {\n\n\t\t\t\t\tvalues[ j * targetCount + targetIndex ] = mergedTrack.values[ j ];\n\n\t\t\t\t}\n\n\t\t\t\t// We need to take into consideration the intended target node\n\t\t\t\t// of our original un-merged morphTarget animation.\n\t\t\t\tmergedTrack.name = ( sourceTrackBinding.nodeName || '' ) + '.morphTargetInfluences';\n\t\t\t\tmergedTrack.values = values;\n\n\t\t\t\tmergedTracks[ sourceTrackNode.uuid ] = mergedTrack;\n\t\t\t\ttracks.push( mergedTrack );\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst sourceInterpolant = sourceTrack.createInterpolant( new sourceTrack.ValueBufferType( 1 ) );\n\n\t\t\tmergedTrack = mergedTracks[ sourceTrackNode.uuid ];\n\n\t\t\t// For every existing keyframe of the merged track, write a (possibly\n\t\t\t// interpolated) value from the source track.\n\t\t\tfor ( let j = 0; j < mergedTrack.times.length; j ++ ) {\n\n\t\t\t\tmergedTrack.values[ j * targetCount + targetIndex ] = sourceInterpolant.evaluate( mergedTrack.times[ j ] );\n\n\t\t\t}\n\n\t\t\t// For every existing keyframe of the source track, write a (possibly\n\t\t\t// new) keyframe to the merged track. Values from the previous loop may\n\t\t\t// be written again, but keyframes are de-duplicated.\n\t\t\tfor ( let j = 0; j < sourceTrack.times.length; j ++ ) {\n\n\t\t\t\tconst keyframeIndex = this.insertKeyframe( mergedTrack, sourceTrack.times[ j ] );\n\t\t\t\tmergedTrack.values[ keyframeIndex * targetCount + targetIndex ] = sourceTrack.values[ j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\treturn clip;\n\n\t}\n\n};\n\nexport { GLTFExporter };\n","/* @license\r\n * Copyright 2021 Google LLC. All Rights Reserved.\r\n * Licensed under the Apache License, Version 2.0 (the 'License');\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an 'AS IS' BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * Materials variants extension\r\n *\r\n * Specification:\r\n * https://github.com/takahirox/three-gltf-extensions/tree/main/loaders/KHR_materials_variants\r\n */\r\n\r\n/**\r\n * The code in this file is based on\r\n * https://github.com/takahirox/three-gltf-extensions/tree/main/exporters/KHR_materials_variants\r\n */\r\n\r\nimport {Material, Mesh, Object3D} from 'three';\r\n\r\nimport {VariantData} from '../../features/scene-graph/model';\r\n\r\nimport {UserDataVariantMapping} from './VariantMaterialLoaderPlugin';\r\n\r\n\r\n\r\n/**\r\n * @param object {THREE.Object3D}\r\n * @return {boolean}\r\n */\r\nconst compatibleObject = (object: Object3D) => {\r\n // @TODO: Need properer variantMaterials format validation?\r\n return (object as Mesh).material !==\r\n undefined && // easier than (!object.isMesh && !object.isLine &&\r\n // !object.isPoints)\r\n object.userData && // just in case\r\n object.userData.variantMaterials &&\r\n // Is this line costly?\r\n !!Array\r\n .from((object.userData.variantMaterials as\r\n Map)\r\n .values())\r\n .filter(m => compatibleMaterial(m.material));\r\n};\r\n\r\n/**\r\n * @param material {THREE.Material}\r\n * @return {boolean}\r\n */\r\nconst compatibleMaterial = (material: Material|null) => {\r\n // @TODO: support multi materials?\r\n return material && material.isMaterial && !Array.isArray(material);\r\n};\r\n\r\nexport default class GLTFExporterMaterialsVariantsExtension {\r\n writer: any; // @TODO: Replace with GLTFWriter when GLTFExporter plugin TS\r\n // declaration is ready\r\n name: string;\r\n variantNames: string[];\r\n\r\n constructor(writer: any) {\r\n this.writer = writer;\r\n this.name = 'KHR_materials_variants';\r\n this.variantNames = [];\r\n }\r\n\r\n beforeParse(objects: Object3D[]) {\r\n // Find all variant names and store them to the table\r\n const variantNameSet = new Set();\r\n for (const object of objects) {\r\n object.traverse(o => {\r\n if (!compatibleObject(o)) {\r\n return;\r\n }\r\n const variantMaterials =\r\n o.userData.variantMaterials as Map;\r\n const variantDataMap =\r\n o.userData.variantData as Map;\r\n for (const [variantName, variantData] of variantDataMap) {\r\n const variantMaterial = variantMaterials.get(variantData.index);\r\n // Ignore unloaded variant materials\r\n if (variantMaterial && compatibleMaterial(variantMaterial.material)) {\r\n variantNameSet.add(variantName);\r\n }\r\n }\r\n });\r\n }\r\n // We may want to sort?\r\n variantNameSet.forEach(name => this.variantNames.push(name));\r\n }\r\n\r\n writeMesh(mesh: Mesh, meshDef: any) {\r\n if (!compatibleObject(mesh)) {\r\n return;\r\n }\r\n\r\n const userData = mesh.userData;\r\n const variantMaterials =\r\n userData.variantMaterials as Map;\r\n const variantDataMap = userData.variantData as Map;\r\n const mappingTable =\r\n new Map();\r\n\r\n // Removes gaps in the variant indices list (caused by deleting variants).\r\n const reIndexedVariants = new Map();\r\n const variants = Array.from(variantDataMap.values()).sort((a, b) => {\r\n return a.index - b.index;\r\n });\r\n for (const [i, variantData] of variants.entries()) {\r\n reIndexedVariants.set(variantData.index, i);\r\n }\r\n\r\n for (const variantData of variantDataMap.values()) {\r\n const variantInstance = variantMaterials.get(variantData.index);\r\n if (!variantInstance || !compatibleMaterial(variantInstance.material)) {\r\n continue;\r\n }\r\n\r\n const materialIndex =\r\n this.writer.processMaterial(variantInstance.material);\r\n if (!mappingTable.has(materialIndex)) {\r\n mappingTable.set(\r\n materialIndex, {material: materialIndex, variants: []});\r\n }\r\n mappingTable.get(materialIndex)!.variants.push(\r\n reIndexedVariants.get(variantData.index)!);\r\n }\r\n\r\n const mappingsDef =\r\n Array.from(mappingTable.values())\r\n .map((m => {return m.variants.sort((a, b) => a - b) && m}))\r\n .sort((a, b) => a.material - b.material);\r\n\r\n if (mappingsDef.length === 0) {\r\n return;\r\n }\r\n\r\n const originalMaterialIndex =\r\n compatibleMaterial(userData.originalMaterial) ?\r\n this.writer.processMaterial(userData.originalMaterial) :\r\n -1;\r\n\r\n for (const primitiveDef of meshDef.primitives) {\r\n // Override primitiveDef.material with original material.\r\n if (originalMaterialIndex >= 0) {\r\n primitiveDef.material = originalMaterialIndex;\r\n }\r\n primitiveDef.extensions = primitiveDef.extensions || {};\r\n primitiveDef.extensions[this.name] = {mappings: mappingsDef};\r\n }\r\n }\r\n\r\n afterParse() {\r\n if (this.variantNames.length === 0) {\r\n return;\r\n }\r\n\r\n const root = this.writer.json;\r\n root.extensions = root.extensions || {};\r\n\r\n const variantsDef = this.variantNames.map(n => {\r\n return {name: n};\r\n });\r\n root.extensions[this.name] = {variants: variantsDef};\r\n this.writer.extensionsUsed[this.name] = true;\r\n }\r\n}\r\n","import {\n\tDirectionalLight,\n\tGroup,\n\tLightProbe,\n\tWebGLCubeRenderTarget\n} from 'three';\n\nclass SessionLightProbe {\n\n\tconstructor( xrLight, renderer, lightProbe, environmentEstimation, estimationStartCallback ) {\n\n\t\tthis.xrLight = xrLight;\n\t\tthis.renderer = renderer;\n\t\tthis.lightProbe = lightProbe;\n\t\tthis.xrWebGLBinding = null;\n\t\tthis.estimationStartCallback = estimationStartCallback;\n\t\tthis.frameCallback = this.onXRFrame.bind( this );\n\n\t\tconst session = renderer.xr.getSession();\n\n\t\t// If the XRWebGLBinding class is available then we can also query an\n\t\t// estimated reflection cube map.\n\t\tif ( environmentEstimation && 'XRWebGLBinding' in window ) {\n\n\t\t\t// This is the simplest way I know of to initialize a WebGL cubemap in Three.\n\t\t\tconst cubeRenderTarget = new WebGLCubeRenderTarget( 16 );\n\t\t\txrLight.environment = cubeRenderTarget.texture;\n\n\t\t\tconst gl = renderer.getContext();\n\n\t\t\t// Ensure that we have any extensions needed to use the preferred cube map format.\n\t\t\tswitch ( session.preferredReflectionFormat ) {\n\n\t\t\t\tcase 'srgba8':\n\t\t\t\t\tgl.getExtension( 'EXT_sRGB' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'rgba16f':\n\t\t\t\t\tgl.getExtension( 'OES_texture_half_float' );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tthis.xrWebGLBinding = new XRWebGLBinding( session, gl );\n\n\t\t\tthis.lightProbe.addEventListener( 'reflectionchange', () => {\n\n\t\t\t\tthis.updateReflection();\n\n\t\t\t} );\n\n\t\t}\n\n\t\t// Start monitoring the XR animation frame loop to look for lighting\n\t\t// estimation changes.\n\t\tsession.requestAnimationFrame( this.frameCallback );\n\n\t}\n\n\tupdateReflection() {\n\n\t\tconst textureProperties = this.renderer.properties.get( this.xrLight.environment );\n\n\t\tif ( textureProperties ) {\n\n\t\t\tconst cubeMap = this.xrWebGLBinding.getReflectionCubeMap( this.lightProbe );\n\n\t\t\tif ( cubeMap ) {\n\n\t\t\t\ttextureProperties.__webglTexture = cubeMap;\n\n\t\t\t\tthis.xrLight.environment.needsPMREMUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tonXRFrame( time, xrFrame ) {\n\n\t\t// If either this obejct or the XREstimatedLight has been destroyed, stop\n\t\t// running the frame loop.\n\t\tif ( ! this.xrLight ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst session = xrFrame.session;\n\t\tsession.requestAnimationFrame( this.frameCallback );\n\n\t\tconst lightEstimate = xrFrame.getLightEstimate( this.lightProbe );\n\t\tif ( lightEstimate ) {\n\n\t\t\t// We can copy the estimate's spherical harmonics array directly into the light probe.\n\t\t\tthis.xrLight.lightProbe.sh.fromArray( lightEstimate.sphericalHarmonicsCoefficients );\n\t\t\tthis.xrLight.lightProbe.intensity = 1.0;\n\n\t\t\t// For the directional light we have to normalize the color and set the scalar as the\n\t\t\t// intensity, since WebXR can return color values that exceed 1.0.\n\t\t\tconst intensityScalar = Math.max( 1.0,\n\t\t\t\tMath.max( lightEstimate.primaryLightIntensity.x,\n\t\t\t\t\tMath.max( lightEstimate.primaryLightIntensity.y,\n\t\t\t\t\t\tlightEstimate.primaryLightIntensity.z ) ) );\n\n\t\t\tthis.xrLight.directionalLight.color.setRGB(\n\t\t\t\tlightEstimate.primaryLightIntensity.x / intensityScalar,\n\t\t\t\tlightEstimate.primaryLightIntensity.y / intensityScalar,\n\t\t\t\tlightEstimate.primaryLightIntensity.z / intensityScalar );\n\t\t\tthis.xrLight.directionalLight.intensity = intensityScalar;\n\t\t\tthis.xrLight.directionalLight.position.copy( lightEstimate.primaryLightDirection );\n\n\t\t\tif ( this.estimationStartCallback ) {\n\n\t\t\t\tthis.estimationStartCallback();\n\t\t\t\tthis.estimationStartCallback = null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispose() {\n\n\t\tthis.xrLight = null;\n\t\tthis.renderer = null;\n\t\tthis.lightProbe = null;\n\t\tthis.xrWebGLBinding = null;\n\n\t}\n\n}\n\nexport class XREstimatedLight extends Group {\n\n\tconstructor( renderer, environmentEstimation = true ) {\n\n\t\tsuper();\n\n\t\tthis.lightProbe = new LightProbe();\n\t\tthis.lightProbe.intensity = 0;\n\t\tthis.add( this.lightProbe );\n\n\t\tthis.directionalLight = new DirectionalLight();\n\t\tthis.directionalLight.intensity = 0;\n\t\tthis.add( this.directionalLight );\n\n\t\t// Will be set to a cube map in the SessionLightProbe is environment estimation is\n\t\t// available and requested.\n\t\tthis.environment = null;\n\n\t\tlet sessionLightProbe = null;\n\t\tlet estimationStarted = false;\n\t\trenderer.xr.addEventListener( 'sessionstart', () => {\n\n\t\t\tconst session = renderer.xr.getSession();\n\n\t\t\tif ( 'requestLightProbe' in session ) {\n\n\t\t\t\tsession.requestLightProbe( {\n\n\t\t\t\t\treflectionFormat: session.preferredReflectionFormat\n\n\t\t\t\t} ).then( ( probe ) => {\n\n\t\t\t\t\tsessionLightProbe = new SessionLightProbe( this, renderer, probe, environmentEstimation, () => {\n\n\t\t\t\t\t\testimationStarted = true;\n\n\t\t\t\t\t\t// Fired to indicate that the estimated lighting values are now being updated.\n\t\t\t\t\t\tthis.dispatchEvent( { type: 'estimationstart' } );\n\n\t\t\t\t\t} );\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} );\n\n\t\trenderer.xr.addEventListener( 'sessionend', () => {\n\n\t\t\tif ( sessionLightProbe ) {\n\n\t\t\t\tsessionLightProbe.dispose();\n\t\t\t\tsessionLightProbe = null;\n\n\t\t\t}\n\n\t\t\tif ( estimationStarted ) {\n\n\t\t\t\t// Fired to indicate that the estimated lighting values are no longer being updated.\n\t\t\t\tthis.dispatchEvent( { type: 'estimationend' } );\n\n\t\t\t}\n\n\t\t} );\n\n\t\t// Done inline to provide access to sessionLightProbe.\n\t\tthis.dispose = () => {\n\n\t\t\tif ( sessionLightProbe ) {\n\n\t\t\t\tsessionLightProbe.dispose();\n\t\t\t\tsessionLightProbe = null;\n\n\t\t\t}\n\n\t\t\tthis.remove( this.lightProbe );\n\t\t\tthis.lightProbe = null;\n\n\t\t\tthis.remove( this.directionalLight );\n\t\t\tthis.directionalLight = null;\n\n\t\t\tthis.environment = null;\n\n\t\t};\n\n\t}\n\n}\n","/* @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const SETTLING_TIME = 10000; // plenty long enough\nconst MIN_DECAY_MILLISECONDS = 0.001;\nexport const DECAY_MILLISECONDS = 50;\n\n/**\n * The Damper class is a generic second-order critically damped system that does\n * one linear step of the desired length of time. The only parameter is\n * DECAY_MILLISECONDS. This common parameter makes all states converge at the\n * same rate regardless of scale. xNormalization is a number to provide the\n * rough scale of x, such that NIL_SPEED clamping also happens at roughly the\n * same convergence for all states.\n */\nexport class Damper {\n private velocity: number = 0;\n private naturalFrequency: number = 0;\n\n constructor(decayMilliseconds: number = DECAY_MILLISECONDS) {\n this.setDecayTime(decayMilliseconds);\n }\n\n setDecayTime(decayMilliseconds: number) {\n this.naturalFrequency =\n 1 / Math.max(MIN_DECAY_MILLISECONDS, decayMilliseconds);\n }\n\n update(\n x: number,\n xGoal: number,\n timeStepMilliseconds: number,\n xNormalization: number,\n ): number {\n const nilSpeed = 0.0002 * this.naturalFrequency;\n\n if (x == null || xNormalization === 0) {\n return xGoal;\n }\n if (x === xGoal && this.velocity === 0) {\n return xGoal;\n }\n if (timeStepMilliseconds < 0) {\n return x;\n }\n // Exact solution to a critically damped second-order system, where:\n // acceleration = this.naturalFrequency * this.naturalFrequency * (xGoal\n // - x) - 2 * this.naturalFrequency * this.velocity;\n const deltaX = (x - xGoal);\n const intermediateVelocity = this.velocity + this.naturalFrequency * deltaX;\n const intermediateX = deltaX + timeStepMilliseconds * intermediateVelocity;\n const decay = Math.exp(-this.naturalFrequency * timeStepMilliseconds);\n const newVelocity =\n (intermediateVelocity - this.naturalFrequency * intermediateX) * decay;\n const acceleration =\n -this.naturalFrequency * (newVelocity + intermediateVelocity * decay);\n if (Math.abs(newVelocity) < nilSpeed * Math.abs(xNormalization) &&\n acceleration * deltaX >= 0) {\n // This ensures the controls settle and stop calling this function instead\n // of asymptotically approaching their goal.\n this.velocity = 0;\n return xGoal;\n } else {\n this.velocity = newVelocity;\n return xGoal + intermediateX * decay;\n }\n }\n}\n","/* @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {BufferGeometry, DoubleSide, Float32BufferAttribute, Material, Mesh, MeshBasicMaterial, PlaneGeometry, Vector2, Vector3} from 'three';\n\nimport {Damper} from './Damper.js';\nimport {ModelScene} from './ModelScene.js';\nimport {Side} from './Shadow.js';\n\nconst RADIUS = 0.2;\nconst LINE_WIDTH = 0.03;\nconst MAX_OPACITY = 0.75;\nconst SEGMENTS = 12;\nconst DELTA_PHI = Math.PI / (2 * SEGMENTS);\n\nconst vector2 = new Vector2();\n\n/**\n * Adds a quarter-annulus of vertices to the array, centered on cornerX,\n * cornerY.\n */\nconst addCorner =\n (vertices: Array, cornerX: number, cornerY: number) => {\n let phi = cornerX > 0 ? (cornerY > 0 ? 0 : -Math.PI / 2) :\n (cornerY > 0 ? Math.PI / 2 : Math.PI);\n for (let i = 0; i <= SEGMENTS; ++i) {\n vertices.push(\n cornerX + (RADIUS - LINE_WIDTH) * Math.cos(phi),\n cornerY + (RADIUS - LINE_WIDTH) * Math.sin(phi),\n 0,\n cornerX + RADIUS * Math.cos(phi),\n cornerY + RADIUS * Math.sin(phi),\n 0);\n phi += DELTA_PHI;\n }\n };\n\n/**\n * This class is a set of two coincident planes. The first is just a cute box\n * outline with rounded corners and damped opacity to indicate the floor extents\n * of a scene. It is purposely larger than the scene's bounding box by RADIUS on\n * all sides so that small scenes are still visible / selectable. Its center is\n * actually carved out by vertices to ensure its fragment shader doesn't add\n * much time.\n *\n * The child plane is a simple plane with the same extents for use in hit\n * testing (translation is triggered when the touch hits the plane, rotation\n * otherwise).\n */\nexport class PlacementBox extends Mesh {\n private hitPlane: Mesh;\n private shadowHeight: number;\n private side: Side;\n private goalOpacity: number;\n private opacityDamper: Damper;\n\n constructor(scene: ModelScene, side: Side) {\n const geometry = new BufferGeometry();\n const triangles: Array = [];\n const vertices: Array = [];\n const {size, boundingBox} = scene;\n\n const x = size.x / 2;\n const y = (side === 'back' ? size.y : size.z) / 2;\n addCorner(vertices, x, y);\n addCorner(vertices, -x, y);\n addCorner(vertices, -x, -y);\n addCorner(vertices, x, -y);\n\n const numVertices = vertices.length / 3;\n for (let i = 0; i < numVertices - 2; i += 2) {\n triangles.push(i, i + 1, i + 3, i, i + 3, i + 2);\n }\n const i = numVertices - 2;\n triangles.push(i, i + 1, 1, i, 1, 0);\n\n geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3));\n geometry.setIndex(triangles);\n\n super(geometry);\n\n this.side = side;\n const material = this.material as MeshBasicMaterial;\n material.side = DoubleSide;\n material.transparent = true;\n material.opacity = 0;\n this.goalOpacity = 0;\n this.opacityDamper = new Damper();\n\n this.hitPlane =\n new Mesh(new PlaneGeometry(2 * (x + RADIUS), 2 * (y + RADIUS)));\n this.hitPlane.visible = false;\n (this.hitPlane.material as Material).side = DoubleSide;\n this.add(this.hitPlane);\n\n boundingBox.getCenter(this.position);\n\n switch (side) {\n case 'bottom':\n this.rotateX(-Math.PI / 2);\n this.shadowHeight = boundingBox.min.y;\n this.position.y = this.shadowHeight;\n break;\n case 'back':\n this.shadowHeight = boundingBox.min.z;\n this.position.z = this.shadowHeight;\n }\n\n scene.target.add(this);\n this.offsetHeight = 0;\n }\n\n /**\n * Get the world hit position if the touch coordinates hit the box, and null\n * otherwise. Pass the scene in to get access to its raycaster.\n */\n getHit(scene: ModelScene, screenX: number, screenY: number): Vector3|null {\n vector2.set(screenX, -screenY);\n this.hitPlane.visible = true;\n const hitResult = scene.positionAndNormalFromPoint(vector2, this.hitPlane);\n this.hitPlane.visible = false;\n return hitResult == null ? null : hitResult.position;\n }\n\n getExpandedHit(scene: ModelScene, screenX: number, screenY: number): Vector3\n |null {\n this.hitPlane.scale.set(1000, 1000, 1000);\n this.hitPlane.updateMatrixWorld();\n const hitResult = this.getHit(scene, screenX, screenY);\n this.hitPlane.scale.set(1, 1, 1);\n return hitResult;\n }\n\n /**\n * Offset the height of the box relative to the bottom of the scene. Positive\n * is up, so generally only negative values are used.\n */\n set offsetHeight(offset: number) {\n offset -= 0.001; // push 1 mm below shadow to avoid z-fighting\n if (this.side === 'back') {\n this.position.z = this.shadowHeight + offset;\n } else {\n this.position.y = this.shadowHeight + offset;\n }\n }\n\n get offsetHeight(): number {\n if (this.side === 'back') {\n return this.position.z - this.shadowHeight;\n } else {\n return this.position.y - this.shadowHeight;\n }\n }\n\n /**\n * Set the box's visibility; it will fade in and out.\n */\n set show(visible: boolean) {\n this.goalOpacity = visible ? MAX_OPACITY : 0;\n }\n\n /**\n * Call on each frame with the frame delta to fade the box.\n */\n updateOpacity(delta: number) {\n const material = this.material as MeshBasicMaterial;\n material.opacity =\n this.opacityDamper.update(material.opacity, this.goalOpacity, delta, 1);\n this.visible = material.opacity > 0;\n }\n\n /**\n * Call this to clean up Three's cache when you remove the box.\n */\n dispose() {\n const {geometry, material} = this.hitPlane;\n geometry.dispose();\n (material as Material).dispose();\n this.geometry.dispose();\n (this.material as Material).dispose();\n this.parent?.remove(this);\n }\n}","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Event as ThreeEvent, EventDispatcher, Matrix4, PerspectiveCamera, Vector3, WebGLRenderer} from 'three';\nimport {XREstimatedLight} from 'three/examples/jsm/webxr/XREstimatedLight.js';\n\nimport {ControlsInterface} from '../features/controls.js';\nimport {$currentBackground, $currentEnvironmentMap} from '../features/environment.js';\nimport ModelViewerElementBase, {$onResize} from '../model-viewer-base.js';\nimport {assertIsArCandidate} from '../utilities.js';\n\nimport {Damper} from './Damper.js';\nimport {ModelScene} from './ModelScene.js';\nimport {PlacementBox} from './PlacementBox.js';\nimport {Renderer} from './Renderer.js';\n\n// number of initial null pose XRFrames allowed before we post not-tracking\nconst INIT_FRAMES = 30;\n// AR shadow is not user-configurable. This is to pave the way for AR lighting\n// estimation, which will be used once available in WebXR.\nconst AR_SHADOW_INTENSITY = 0.8;\nconst ROTATION_RATE = 1.5;\n// Angle down (towards bottom of screen) from camera center ray to use for hit\n// testing against the floor. This makes placement faster and more intuitive\n// assuming the phone is in portrait mode. This seems to be a reasonable\n// assumption for the start of the session and UI will lack landscape mode to\n// encourage upright use.\nconst HIT_ANGLE_DEG = 20;\nconst SCALE_SNAP_HIGH = 1.3;\nconst SCALE_SNAP_LOW = 1 / SCALE_SNAP_HIGH;\n// For automatic dynamic viewport scaling, don't let the scale drop below this\n// limit.\nconst MIN_VIEWPORT_SCALE = 0.25;\n// Furthest away you can move an object (meters).\nconst MAX_DISTANCE = 10;\n\nexport type ARStatus =\n 'not-presenting'|'session-started'|'object-placed'|'failed';\n\nexport const ARStatus: {[index: string]: ARStatus} = {\n NOT_PRESENTING: 'not-presenting',\n SESSION_STARTED: 'session-started',\n OBJECT_PLACED: 'object-placed',\n FAILED: 'failed'\n};\n\nexport interface ARStatusEvent extends ThreeEvent {\n status: ARStatus,\n}\n\nexport type ARTracking = 'tracking'|'not-tracking';\n\nexport const ARTracking: {[index: string]: ARTracking} = {\n TRACKING: 'tracking',\n NOT_TRACKING: 'not-tracking'\n};\n\nexport interface ARTrackingEvent extends ThreeEvent {\n status: ARTracking,\n}\n\nconst vector3 = new Vector3();\nconst matrix4 = new Matrix4();\nconst hitPosition = new Vector3();\nconst camera = new PerspectiveCamera(45, 1, 0.1, 100);\n\nexport class ARRenderer extends EventDispatcher {\n public threeRenderer: WebGLRenderer;\n public currentSession: XRSession|null = null;\n public placeOnWall = false;\n\n private placementBox: PlacementBox|null = null;\n private lastTick: number|null = null;\n private turntableRotation: number|null = null;\n private oldShadowIntensity: number|null = null;\n private frame: XRFrame|null = null;\n private initialHitSource: XRHitTestSource|null = null;\n private transientHitTestSource: XRTransientInputHitTestSource|null = null;\n private inputSource: XRInputSource|null = null;\n private _presentedScene: ModelScene|null = null;\n private resolveCleanup: ((...args: any[]) => void)|null = null;\n private exitWebXRButtonContainer: HTMLElement|null = null;\n private overlay: HTMLElement|null = null;\n private xrLight: XREstimatedLight|null = null;\n\n private tracking = true;\n private frames = 0;\n private initialized = false;\n private oldTarget = new Vector3();\n private placementComplete = false;\n private isTranslating = false;\n private isRotating = false;\n private isTwoFingering = false;\n private lastDragPosition = new Vector3();\n private firstRatio = 0;\n private lastAngle = 0;\n private goalPosition = new Vector3();\n private goalYaw = 0;\n private goalScale = 1;\n private xDamper = new Damper();\n private yDamper = new Damper();\n private zDamper = new Damper();\n private yawDamper = new Damper();\n private scaleDamper = new Damper();\n\n private onExitWebXRButtonContainerClick = () => this.stopPresenting();\n\n constructor(private renderer: Renderer) {\n super();\n this.threeRenderer = renderer.threeRenderer;\n this.threeRenderer.xr.enabled = true;\n }\n\n async resolveARSession(): Promise {\n assertIsArCandidate();\n\n const session: XRSession =\n await navigator.xr!.requestSession!('immersive-ar', {\n requiredFeatures: ['hit-test'],\n optionalFeatures: ['dom-overlay', 'light-estimation'],\n domOverlay: this.overlay ? {root: this.overlay} : undefined\n });\n\n this.threeRenderer.xr.setReferenceSpaceType('local');\n\n await this.threeRenderer.xr.setSession(session);\n\n this.threeRenderer.xr.cameraAutoUpdate = false;\n\n return session;\n }\n\n /**\n * The currently presented scene, if any\n */\n get presentedScene() {\n return this._presentedScene;\n }\n\n /**\n * Resolves to true if the renderer has detected all the necessary qualities\n * to support presentation in AR.\n */\n async supportsPresentation(): Promise {\n try {\n assertIsArCandidate();\n return await navigator.xr!.isSessionSupported('immersive-ar');\n } catch (error) {\n console.warn('Request to present in WebXR denied:');\n console.warn(error);\n console.warn('Falling back to next ar-mode');\n return false;\n }\n }\n\n /**\n * Present a scene in AR\n */\n async present(scene: ModelScene, environmentEstimation: boolean = false):\n Promise {\n if (this.isPresenting) {\n console.warn('Cannot present while a model is already presenting');\n }\n\n let waitForAnimationFrame = new Promise((resolve, _reject) => {\n requestAnimationFrame(() => resolve());\n });\n\n scene.setHotspotsVisibility(false);\n scene.queueRender();\n // Render a frame to turn off the hotspots\n await waitForAnimationFrame;\n\n // This sets isPresenting to true\n this._presentedScene = scene;\n this.overlay = scene.element.shadowRoot!.querySelector('div.default');\n\n if (environmentEstimation === true) {\n this.xrLight = new XREstimatedLight(this.threeRenderer);\n\n this.xrLight.addEventListener('estimationstart', () => {\n if (!this.isPresenting || this.xrLight == null) {\n return;\n }\n\n const scene = this.presentedScene!;\n scene.add(this.xrLight);\n\n scene.environment = this.xrLight.environment;\n });\n }\n\n const currentSession = await this.resolveARSession();\n\n currentSession.addEventListener('end', () => {\n this.postSessionCleanup();\n }, {once: true});\n\n const exitButton = scene.element.shadowRoot!.querySelector(\n '.slot.exit-webxr-ar-button') as HTMLElement;\n exitButton.classList.add('enabled');\n exitButton.addEventListener('click', this.onExitWebXRButtonContainerClick);\n this.exitWebXRButtonContainer = exitButton;\n\n const viewerRefSpace = await currentSession.requestReferenceSpace('viewer');\n\n this.tracking = true;\n this.frames = 0;\n this.initialized = false;\n\n this.turntableRotation = scene.yaw;\n this.goalYaw = scene.yaw;\n this.goalScale = 1;\n\n scene.background = null;\n\n this.oldShadowIntensity = scene.shadowIntensity;\n scene.setShadowIntensity(0.01); // invisible, but not changing the shader\n\n this.oldTarget.copy(scene.getTarget());\n\n scene.element.addEventListener('load', this.onUpdateScene);\n\n const radians = HIT_ANGLE_DEG * Math.PI / 180;\n const ray = this.placeOnWall === true ?\n undefined :\n new XRRay(\n new DOMPoint(0, 0, 0),\n {x: 0, y: -Math.sin(radians), z: -Math.cos(radians)});\n currentSession\n .requestHitTestSource!\n ({space: viewerRefSpace, offsetRay: ray})!.then(hitTestSource => {\n this.initialHitSource = hitTestSource;\n });\n\n this.currentSession = currentSession;\n this.placementBox =\n new PlacementBox(scene, this.placeOnWall ? 'back' : 'bottom');\n this.placementComplete = false;\n\n this.lastTick = performance.now();\n this.dispatchEvent({type: 'status', status: ARStatus.SESSION_STARTED});\n }\n\n /**\n * If currently presenting a scene in AR, stops presentation and exits AR.\n */\n async stopPresenting() {\n if (!this.isPresenting) {\n return;\n }\n\n const cleanupPromise = new Promise((resolve) => {\n this.resolveCleanup = resolve;\n });\n\n try {\n await this.currentSession!.end();\n await cleanupPromise;\n } catch (error) {\n console.warn('Error while trying to end WebXR AR session');\n console.warn(error);\n\n this.postSessionCleanup();\n }\n }\n\n /**\n * True if a scene is currently in the process of being presented in AR\n */\n get isPresenting(): boolean {\n return this.presentedScene != null;\n }\n\n get target(): Vector3 {\n return this.oldTarget;\n }\n\n updateTarget() {\n const scene = this.presentedScene;\n if (scene != null) {\n const target = scene.getTarget();\n this.oldTarget.copy(target);\n if (this.placeOnWall) {\n // Move the scene's target to the center of the back of the model's\n // bounding box.\n target.z = scene.boundingBox.min.z;\n } else {\n // Move the scene's target to the model's floor height.\n target.y = scene.boundingBox.min.y;\n }\n scene.setTarget(target.x, target.y, target.z);\n }\n }\n\n onUpdateScene = () => {\n if (this.placementBox != null && this.isPresenting) {\n this.placementBox!.dispose();\n this.placementBox = new PlacementBox(\n this.presentedScene!, this.placeOnWall ? 'back' : 'bottom');\n }\n };\n\n private postSessionCleanup() {\n const session = this.currentSession;\n if (session != null) {\n session.removeEventListener('selectstart', this.onSelectStart);\n session.removeEventListener('selectend', this.onSelectEnd);\n this.currentSession = null;\n }\n\n const scene = this.presentedScene;\n this._presentedScene = null;\n if (scene != null) {\n const {element} = scene;\n\n if (this.xrLight != null) {\n scene.remove(this.xrLight);\n (this.xrLight as any).dispose();\n this.xrLight = null;\n }\n\n scene.position.set(0, 0, 0);\n scene.scale.set(1, 1, 1);\n scene.setShadowOffset(0);\n const yaw = this.turntableRotation;\n if (yaw != null) {\n scene.yaw = yaw;\n }\n const intensity = this.oldShadowIntensity;\n if (intensity != null) {\n scene.setShadowIntensity(intensity);\n }\n scene.setEnvironmentAndSkybox(\n (element as any)[$currentEnvironmentMap],\n (element as any)[$currentBackground]);\n const point = this.oldTarget;\n scene.setTarget(point.x, point.y, point.z);\n scene.xrCamera = null;\n\n scene.element.removeEventListener('load', this.onUpdateScene);\n scene.orientHotspots(0);\n element.requestUpdate('cameraTarget');\n element.requestUpdate('maxCameraOrbit');\n element[$onResize](element.getBoundingClientRect());\n }\n\n // Force the Renderer to update its size\n this.renderer.height = 0;\n\n const exitButton = this.exitWebXRButtonContainer;\n if (exitButton != null) {\n exitButton.classList.remove('enabled');\n exitButton.removeEventListener(\n 'click', this.onExitWebXRButtonContainerClick);\n this.exitWebXRButtonContainer = null;\n }\n\n const hitSource = this.transientHitTestSource;\n if (hitSource != null) {\n hitSource.cancel();\n this.transientHitTestSource = null;\n }\n\n const hitSourceInitial = this.initialHitSource;\n if (hitSourceInitial != null) {\n hitSourceInitial.cancel();\n this.initialHitSource = null;\n }\n\n if (this.placementBox != null) {\n this.placementBox!.dispose();\n this.placementBox = null;\n }\n\n this.lastTick = null;\n this.turntableRotation = null;\n this.oldShadowIntensity = null;\n this.frame = null;\n this.inputSource = null;\n this.overlay = null;\n\n if (this.resolveCleanup != null) {\n this.resolveCleanup!();\n }\n\n this.dispatchEvent({type: 'status', status: ARStatus.NOT_PRESENTING});\n }\n\n private updateView(view: XRView) {\n const scene = this.presentedScene!;\n const xr = this.threeRenderer.xr as any;\n\n xr.updateCamera(camera);\n scene.xrCamera = xr.getCamera();\n const {elements} = scene.getCamera().matrixWorld;\n scene.orientHotspots(Math.atan2(elements[1], elements[5]));\n\n if (!this.initialized) {\n this.placeInitially();\n this.initialized = true;\n }\n\n // Use automatic dynamic viewport scaling if supported.\n if (view.requestViewportScale && view.recommendedViewportScale) {\n const scale = view.recommendedViewportScale;\n view.requestViewportScale(Math.max(scale, MIN_VIEWPORT_SCALE));\n }\n const layer = this.currentSession!.renderState.baseLayer;\n const viewport = layer!.getViewport(view)!;\n this.threeRenderer.setViewport(\n viewport.x, viewport.y, viewport.width, viewport.height);\n }\n\n private placeInitially() {\n const scene = this.presentedScene!;\n const {position, element} = scene;\n const xrCamera = scene.getCamera();\n\n const {width, height} = this.overlay!.getBoundingClientRect();\n scene.setSize(width, height);\n\n xrCamera.projectionMatrixInverse.copy(xrCamera.projectionMatrix).invert();\n\n const {theta, radius} =\n (element as ModelViewerElementBase & ControlsInterface)\n .getCameraOrbit();\n // Orient model to match the 3D camera view\n const cameraDirection = xrCamera.getWorldDirection(vector3);\n scene.yaw = Math.atan2(-cameraDirection.x, -cameraDirection.z) - theta;\n this.goalYaw = scene.yaw;\n\n position.copy(xrCamera.position)\n .add(cameraDirection.multiplyScalar(radius));\n\n this.updateTarget();\n const target = scene.getTarget();\n position.add(target).sub(this.oldTarget);\n\n this.goalPosition.copy(position);\n\n scene.setHotspotsVisibility(true);\n\n const {session} = this.frame!;\n session.addEventListener('selectstart', this.onSelectStart);\n session.addEventListener('selectend', this.onSelectEnd);\n session\n .requestHitTestSourceForTransientInput!\n ({profile: 'generic-touchscreen'})!.then(hitTestSource => {\n this.transientHitTestSource = hitTestSource;\n });\n }\n\n private getTouchLocation(): Vector3|null {\n const {axes} = this.inputSource!.gamepad!;\n let location = this.placementBox!.getExpandedHit(\n this.presentedScene!, axes[0], axes[1]);\n if (location != null) {\n vector3.copy(location).sub(this.presentedScene!.getCamera().position);\n if (vector3.length() > MAX_DISTANCE)\n return null;\n }\n return location;\n }\n\n private getHitPoint(hitResult: XRHitTestResult): Vector3|null {\n const refSpace = this.threeRenderer.xr.getReferenceSpace()!;\n const pose = hitResult.getPose(refSpace);\n if (pose == null) {\n return null;\n }\n\n const hitMatrix = matrix4.fromArray(pose.transform.matrix);\n\n if (this.placeOnWall === true) {\n // Orient the model to the wall's normal vector.\n this.goalYaw = Math.atan2(hitMatrix.elements[4], hitMatrix.elements[6]);\n }\n // Check that the y-coordinate of the normal is large enough that the normal\n // is pointing up for floor placement; opposite for wall placement.\n return hitMatrix.elements[5] > 0.75 !== this.placeOnWall ?\n hitPosition.setFromMatrixPosition(hitMatrix) :\n null;\n }\n\n public moveToFloor(frame: XRFrame) {\n const hitSource = this.initialHitSource;\n if (hitSource == null) {\n return;\n }\n\n const hitTestResults = frame.getHitTestResults(hitSource);\n if (hitTestResults.length == 0) {\n return;\n }\n\n const hit = hitTestResults[0];\n const hitPoint = this.getHitPoint(hit);\n if (hitPoint == null) {\n return;\n }\n\n this.placementBox!.show = true;\n\n // If the user is translating, let the finger hit-ray take precedence and\n // ignore this hit result.\n if (!this.isTranslating) {\n if (this.placeOnWall) {\n this.goalPosition.copy(hitPoint);\n } else {\n this.goalPosition.y = hitPoint.y;\n }\n }\n\n hitSource.cancel();\n this.initialHitSource = null;\n this.dispatchEvent({type: 'status', status: ARStatus.OBJECT_PLACED});\n }\n\n private onSelectStart = (event: Event) => {\n const hitSource = this.transientHitTestSource;\n if (hitSource == null) {\n return;\n }\n const fingers = this.frame!.getHitTestResultsForTransientInput(hitSource);\n const scene = this.presentedScene!;\n const box = this.placementBox!;\n\n if (fingers.length === 1) {\n this.inputSource = (event as XRInputSourceEvent).inputSource;\n const {axes} = this.inputSource!.gamepad!;\n\n const hitPosition = box.getHit(this.presentedScene!, axes[0], axes[1]);\n box.show = true;\n\n if (hitPosition != null) {\n this.isTranslating = true;\n this.lastDragPosition.copy(hitPosition);\n } else if (this.placeOnWall === false) {\n this.isRotating = true;\n this.lastAngle = axes[0] * ROTATION_RATE;\n }\n } else if (fingers.length === 2) {\n box.show = true;\n this.isTwoFingering = true;\n const {separation} = this.fingerPolar(fingers);\n this.firstRatio = separation / scene.scale.x;\n }\n };\n\n private onSelectEnd = () => {\n this.isTranslating = false;\n this.isRotating = false;\n this.isTwoFingering = false;\n this.inputSource = null;\n this.goalPosition.y +=\n this.placementBox!.offsetHeight * this.presentedScene!.scale.x;\n this.placementBox!.show = false\n };\n\n private fingerPolar(fingers: XRTransientInputHitTestResult[]):\n {separation: number, deltaYaw: number} {\n const fingerOne = fingers[0].inputSource.gamepad!.axes;\n const fingerTwo = fingers[1].inputSource.gamepad!.axes;\n const deltaX = fingerTwo[0] - fingerOne[0];\n const deltaY = fingerTwo[1] - fingerOne[1];\n const angle = Math.atan2(deltaY, deltaX);\n let deltaYaw = this.lastAngle - angle;\n if (deltaYaw > Math.PI) {\n deltaYaw -= 2 * Math.PI;\n } else if (deltaYaw < -Math.PI) {\n deltaYaw += 2 * Math.PI;\n }\n this.lastAngle = angle;\n return {\n separation: Math.sqrt(deltaX * deltaX + deltaY * deltaY),\n deltaYaw: deltaYaw\n };\n }\n\n private processInput(frame: XRFrame) {\n const hitSource = this.transientHitTestSource;\n if (hitSource == null) {\n return;\n }\n if (!this.isTranslating && !this.isTwoFingering && !this.isRotating) {\n return;\n }\n const fingers = frame.getHitTestResultsForTransientInput(hitSource);\n const scene = this.presentedScene!;\n const scale = scene.scale.x;\n\n // Rotating, translating and scaling are mutually exclusive operations; only\n // one can happen at a time, but we can switch during a gesture.\n if (this.isTwoFingering) {\n if (fingers.length < 2) {\n // If we lose the second finger, stop scaling (in fact, stop processing\n // input altogether until a new gesture starts).\n this.isTwoFingering = false;\n } else {\n const {separation, deltaYaw} = this.fingerPolar(fingers);\n if (this.placeOnWall === false) {\n this.goalYaw += deltaYaw;\n }\n if (scene.canScale) {\n const scale = separation / this.firstRatio;\n this.goalScale =\n (scale < SCALE_SNAP_HIGH && scale > SCALE_SNAP_LOW) ? 1 : scale;\n }\n }\n return;\n } else if (fingers.length === 2) {\n // If we were rotating or translating and we get a second finger, switch\n // to scaling instead.\n this.isTranslating = false;\n this.isRotating = false;\n this.isTwoFingering = true;\n const {separation} = this.fingerPolar(fingers);\n this.firstRatio = separation / scale;\n return;\n }\n\n if (this.isRotating) {\n const angle = this.inputSource!.gamepad!.axes[0] * ROTATION_RATE;\n this.goalYaw += angle - this.lastAngle;\n this.lastAngle = angle;\n } else if (this.isTranslating) {\n fingers.forEach(finger => {\n if (finger.inputSource !== this.inputSource) {\n return;\n }\n\n let hit = null;\n if (finger.results.length > 0) {\n hit = this.getHitPoint(finger.results[0])\n }\n if (hit == null) {\n hit = this.getTouchLocation();\n }\n if (hit == null) {\n return;\n }\n\n this.goalPosition.sub(this.lastDragPosition);\n\n if (this.placeOnWall === false) {\n const offset = hit.y - this.lastDragPosition.y;\n // When a lower floor is found, keep the model at the same height, but\n // drop the placement box to the floor. The model falls on select end.\n if (offset < 0) {\n this.placementBox!.offsetHeight = offset / scale;\n this.presentedScene!.setShadowOffset(offset);\n // Interpolate hit ray up to drag plane\n const cameraPosition = vector3.copy(scene.getCamera().position);\n const alpha = -offset / (cameraPosition.y - hit.y);\n cameraPosition.multiplyScalar(alpha);\n hit.multiplyScalar(1 - alpha).add(cameraPosition);\n }\n }\n\n this.goalPosition.add(hit);\n this.lastDragPosition.copy(hit);\n });\n }\n }\n\n private moveScene(delta: number) {\n const scene = this.presentedScene!;\n const {position, yaw} = scene;\n const boundingRadius = scene.boundingSphere.radius;\n const goal = this.goalPosition;\n const oldScale = scene.scale.x;\n const box = this.placementBox!;\n\n if (!goal.equals(position) || this.goalScale !== oldScale) {\n let {x, y, z} = position;\n x = this.xDamper.update(x, goal.x, delta, boundingRadius);\n y = this.yDamper.update(y, goal.y, delta, boundingRadius);\n z = this.zDamper.update(z, goal.z, delta, boundingRadius);\n position.set(x, y, z);\n\n const newScale =\n this.scaleDamper.update(oldScale, this.goalScale, delta, 1);\n scene.scale.set(newScale, newScale, newScale);\n\n if (!this.isTranslating) {\n const offset = goal.y - y;\n if (this.placementComplete && this.placeOnWall === false) {\n box.offsetHeight = offset / newScale;\n scene.setShadowOffset(offset);\n } else if (offset === 0) {\n this.placementComplete = true;\n box.show = false;\n scene.setShadowIntensity(AR_SHADOW_INTENSITY);\n }\n }\n }\n box.updateOpacity(delta);\n scene.updateTarget(delta);\n // yaw must be updated last, since this also updates the shadow position.\n scene.yaw = this.yawDamper.update(yaw, this.goalYaw, delta, Math.PI);\n }\n\n /**\n * Only public to make it testable.\n */\n public onWebXRFrame(time: number, frame: XRFrame) {\n this.frame = frame;\n ++this.frames;\n const refSpace = this.threeRenderer.xr.getReferenceSpace()!;\n const pose = frame.getViewerPose(refSpace);\n\n if (pose == null && this.tracking === true && this.frames > INIT_FRAMES) {\n this.tracking = false;\n this.dispatchEvent({type: 'tracking', status: ARTracking.NOT_TRACKING});\n }\n\n const scene = this.presentedScene;\n if (pose == null || scene == null || !scene.element.loaded) {\n this.threeRenderer.clear();\n return;\n }\n\n if (this.tracking === false) {\n this.tracking = true;\n this.dispatchEvent({type: 'tracking', status: ARTracking.TRACKING});\n }\n\n // WebXR may return multiple views, i.e. for headset AR. This\n // isn't really supported at this point, but make a best-effort\n // attempt to render other views also, using the first view\n // as the main viewpoint.\n let isFirstView: boolean = true;\n for (const view of pose.views) {\n this.updateView(view);\n\n if (isFirstView) {\n this.moveToFloor(frame);\n\n this.processInput(frame);\n\n const delta = time - this.lastTick!;\n this.moveScene(delta);\n this.renderer.preRender(scene, time, delta);\n this.lastTick = time;\n\n scene.renderShadow(this.threeRenderer);\n }\n\n this.threeRenderer.render(scene, scene.getCamera());\n isFirstView = false;\n }\n }\n}\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Mesh, OrthographicCamera, PlaneGeometry, Scene, ShaderMaterial, Texture, WebGLRenderTarget} from 'three';\n\nimport {Constructor} from '../utilities.js';\n\nimport {ModelScene} from './ModelScene.js';\nimport {Renderer} from './Renderer.js';\n\nexport interface ModelViewerRendererDebugDetails {\n renderer: Renderer;\n THREE: {\n ShaderMaterial: Constructor;\n PlaneGeometry: Constructor;\n OrthographicCamera: Constructor;\n WebGLRenderTarget: Constructor;\n Texture: Constructor;\n Scene: Constructor;\n Mesh: Constructor;\n };\n}\n\nexport interface ModelViewerSceneDetails {\n scene: ModelScene\n}\n\n/**\n * This Debugger exposes internal details of the rendering\n * substructure so that external tools can more easily inspect and operate on\n * them.\n *\n * It also activates shader debugging on the associated GL context. Shader\n * debugging trades performance for useful error information, so it is not\n * recommended to activate this unless needed.\n */\nexport class Debugger {\n constructor(renderer: Renderer) {\n // Force WebGL shader debugging on:\n renderer.threeRenderer.debug = {checkShaderErrors: true};\n // Announce debug details at microtask timing to give the `Renderer`\n // constructor time to complete its initialization, just to be on the safe\n // side:\n Promise.resolve().then(() => {\n self.dispatchEvent(new CustomEvent(\n 'model-viewer-renderer-debug', {\n detail: {\n renderer,\n THREE: {\n ShaderMaterial,\n Texture,\n Mesh,\n Scene,\n PlaneGeometry,\n OrthographicCamera,\n WebGLRenderTarget\n }\n }\n }));\n });\n }\n\n addScene(scene: ModelScene) {\n self.dispatchEvent(new CustomEvent(\n 'model-viewer-scene-added-debug', {detail: {scene}}));\n }\n\n removeScene(scene: ModelScene) {\n self.dispatchEvent(new CustomEvent(\n 'model-viewer-scene-removed-debug', {detail: {scene}}));\n }\n}\n","import {\n\tAnimationClip,\n\tAnimationMixer,\n\tEuler,\n\tMatrix4,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tSkeletonHelper,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack\n} from 'three';\n\n\nfunction retarget( target, source, options = {} ) {\n\n\tconst pos = new Vector3(),\n\t\tquat = new Quaternion(),\n\t\tscale = new Vector3(),\n\t\tbindBoneMatrix = new Matrix4(),\n\t\trelativeMatrix = new Matrix4(),\n\t\tglobalMatrix = new Matrix4();\n\n\toptions.preserveMatrix = options.preserveMatrix !== undefined ? options.preserveMatrix : true;\n\toptions.preservePosition = options.preservePosition !== undefined ? options.preservePosition : true;\n\toptions.preserveHipPosition = options.preserveHipPosition !== undefined ? options.preserveHipPosition : false;\n\toptions.useTargetMatrix = options.useTargetMatrix !== undefined ? options.useTargetMatrix : false;\n\toptions.hip = options.hip !== undefined ? options.hip : 'hip';\n\toptions.names = options.names || {};\n\n\tconst sourceBones = source.isObject3D ? source.skeleton.bones : getBones( source ),\n\t\tbones = target.isObject3D ? target.skeleton.bones : getBones( target );\n\n\tlet bindBones,\n\t\tbone, name, boneTo,\n\t\tbonesPosition;\n\n\t// reset bones\n\n\tif ( target.isObject3D ) {\n\n\t\ttarget.skeleton.pose();\n\n\t} else {\n\n\t\toptions.useTargetMatrix = true;\n\t\toptions.preserveMatrix = false;\n\n\t}\n\n\tif ( options.preservePosition ) {\n\n\t\tbonesPosition = [];\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tbonesPosition.push( bones[ i ].position.clone() );\n\n\t\t}\n\n\t}\n\n\tif ( options.preserveMatrix ) {\n\n\t\t// reset matrix\n\n\t\ttarget.updateMatrixWorld();\n\n\t\ttarget.matrixWorld.identity();\n\n\t\t// reset children matrix\n\n\t\tfor ( let i = 0; i < target.children.length; ++ i ) {\n\n\t\t\ttarget.children[ i ].updateMatrixWorld( true );\n\n\t\t}\n\n\t}\n\n\tif ( options.offsets ) {\n\n\t\tbindBones = [];\n\n\t\tfor ( let i = 0; i < bones.length; ++ i ) {\n\n\t\t\tbone = bones[ i ];\n\t\t\tname = options.names[ bone.name ] || bone.name;\n\n\t\t\tif ( options.offsets[ name ] ) {\n\n\t\t\t\tbone.matrix.multiply( options.offsets[ name ] );\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t\tbone.updateMatrixWorld();\n\n\t\t\t}\n\n\t\t\tbindBones.push( bone.matrixWorld.clone() );\n\n\t\t}\n\n\t}\n\n\tfor ( let i = 0; i < bones.length; ++ i ) {\n\n\t\tbone = bones[ i ];\n\t\tname = options.names[ bone.name ] || bone.name;\n\n\t\tboneTo = getBoneByName( name, sourceBones );\n\n\t\tglobalMatrix.copy( bone.matrixWorld );\n\n\t\tif ( boneTo ) {\n\n\t\t\tboneTo.updateMatrixWorld();\n\n\t\t\tif ( options.useTargetMatrix ) {\n\n\t\t\t\trelativeMatrix.copy( boneTo.matrixWorld );\n\n\t\t\t} else {\n\n\t\t\t\trelativeMatrix.copy( target.matrixWorld ).invert();\n\t\t\t\trelativeMatrix.multiply( boneTo.matrixWorld );\n\n\t\t\t}\n\n\t\t\t// ignore scale to extract rotation\n\n\t\t\tscale.setFromMatrixScale( relativeMatrix );\n\t\t\trelativeMatrix.scale( scale.set( 1 / scale.x, 1 / scale.y, 1 / scale.z ) );\n\n\t\t\t// apply to global matrix\n\n\t\t\tglobalMatrix.makeRotationFromQuaternion( quat.setFromRotationMatrix( relativeMatrix ) );\n\n\t\t\tif ( target.isObject3D ) {\n\n\t\t\t\tconst boneIndex = bones.indexOf( bone ),\n\t\t\t\t\twBindMatrix = bindBones ? bindBones[ boneIndex ] : bindBoneMatrix.copy( target.skeleton.boneInverses[ boneIndex ] ).invert();\n\n\t\t\t\tglobalMatrix.multiply( wBindMatrix );\n\n\t\t\t}\n\n\t\t\tglobalMatrix.copyPosition( relativeMatrix );\n\n\t\t}\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\tbone.matrix.multiply( globalMatrix );\n\n\t\t} else {\n\n\t\t\tbone.matrix.copy( globalMatrix );\n\n\t\t}\n\n\t\tif ( options.preserveHipPosition && name === options.hip ) {\n\n\t\t\tbone.matrix.setPosition( pos.set( 0, bone.position.y, 0 ) );\n\n\t\t}\n\n\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\tbone.updateMatrixWorld();\n\n\t}\n\n\tif ( options.preservePosition ) {\n\n\t\tfor ( let i = 0; i < bones.length; ++ i ) {\n\n\t\t\tbone = bones[ i ];\n\t\t\tname = options.names[ bone.name ] || bone.name;\n\n\t\t\tif ( name !== options.hip ) {\n\n\t\t\t\tbone.position.copy( bonesPosition[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tif ( options.preserveMatrix ) {\n\n\t\t// restore matrix\n\n\t\ttarget.updateMatrixWorld( true );\n\n\t}\n\n}\n\nfunction retargetClip( target, source, clip, options = {} ) {\n\n\toptions.useFirstFramePosition = options.useFirstFramePosition !== undefined ? options.useFirstFramePosition : false;\n\toptions.fps = options.fps !== undefined ? options.fps : 30;\n\toptions.names = options.names || [];\n\n\tif ( ! source.isObject3D ) {\n\n\t\tsource = getHelperFromSkeleton( source );\n\n\t}\n\n\tconst numFrames = Math.round( clip.duration * ( options.fps / 1000 ) * 1000 ),\n\t\tdelta = 1 / options.fps,\n\t\tconvertedTracks = [],\n\t\tmixer = new AnimationMixer( source ),\n\t\tbones = getBones( target.skeleton ),\n\t\tboneDatas = [];\n\tlet positionOffset,\n\t\tbone, boneTo, boneData,\n\t\tname;\n\n\tmixer.clipAction( clip ).play();\n\tmixer.update( 0 );\n\n\tsource.updateMatrixWorld();\n\n\tfor ( let i = 0; i < numFrames; ++ i ) {\n\n\t\tconst time = i * delta;\n\n\t\tretarget( target, source, options );\n\n\t\tfor ( let j = 0; j < bones.length; ++ j ) {\n\n\t\t\tname = options.names[ bones[ j ].name ] || bones[ j ].name;\n\n\t\t\tboneTo = getBoneByName( name, source.skeleton );\n\n\t\t\tif ( boneTo ) {\n\n\t\t\t\tbone = bones[ j ];\n\t\t\t\tboneData = boneDatas[ j ] = boneDatas[ j ] || { bone: bone };\n\n\t\t\t\tif ( options.hip === name ) {\n\n\t\t\t\t\tif ( ! boneData.pos ) {\n\n\t\t\t\t\t\tboneData.pos = {\n\t\t\t\t\t\t\ttimes: new Float32Array( numFrames ),\n\t\t\t\t\t\t\tvalues: new Float32Array( numFrames * 3 )\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( options.useFirstFramePosition ) {\n\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\tpositionOffset = bone.position.clone();\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbone.position.sub( positionOffset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tboneData.pos.times[ i ] = time;\n\n\t\t\t\t\tbone.position.toArray( boneData.pos.values, i * 3 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! boneData.quat ) {\n\n\t\t\t\t\tboneData.quat = {\n\t\t\t\t\t\ttimes: new Float32Array( numFrames ),\n\t\t\t\t\t\tvalues: new Float32Array( numFrames * 4 )\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\tboneData.quat.times[ i ] = time;\n\n\t\t\t\tbone.quaternion.toArray( boneData.quat.values, i * 4 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tmixer.update( delta );\n\n\t\tsource.updateMatrixWorld();\n\n\t}\n\n\tfor ( let i = 0; i < boneDatas.length; ++ i ) {\n\n\t\tboneData = boneDatas[ i ];\n\n\t\tif ( boneData ) {\n\n\t\t\tif ( boneData.pos ) {\n\n\t\t\t\tconvertedTracks.push( new VectorKeyframeTrack(\n\t\t\t\t\t'.bones[' + boneData.bone.name + '].position',\n\t\t\t\t\tboneData.pos.times,\n\t\t\t\t\tboneData.pos.values\n\t\t\t\t) );\n\n\t\t\t}\n\n\t\t\tconvertedTracks.push( new QuaternionKeyframeTrack(\n\t\t\t\t'.bones[' + boneData.bone.name + '].quaternion',\n\t\t\t\tboneData.quat.times,\n\t\t\t\tboneData.quat.values\n\t\t\t) );\n\n\t\t}\n\n\t}\n\n\tmixer.uncacheAction( clip );\n\n\treturn new AnimationClip( clip.name, - 1, convertedTracks );\n\n}\n\nfunction getHelperFromSkeleton( skeleton ) {\n\n\tconst source = new SkeletonHelper( skeleton.bones[ 0 ] );\n\tsource.skeleton = skeleton;\n\n\treturn source;\n\n}\n\nfunction getSkeletonOffsets( target, source, options = {} ) {\n\n\tconst targetParentPos = new Vector3(),\n\t\ttargetPos = new Vector3(),\n\t\tsourceParentPos = new Vector3(),\n\t\tsourcePos = new Vector3(),\n\t\ttargetDir = new Vector2(),\n\t\tsourceDir = new Vector2();\n\n\toptions.hip = options.hip !== undefined ? options.hip : 'hip';\n\toptions.names = options.names || {};\n\n\tif ( ! source.isObject3D ) {\n\n\t\tsource = getHelperFromSkeleton( source );\n\n\t}\n\n\tconst nameKeys = Object.keys( options.names ),\n\t\tnameValues = Object.values( options.names ),\n\t\tsourceBones = source.isObject3D ? source.skeleton.bones : getBones( source ),\n\t\tbones = target.isObject3D ? target.skeleton.bones : getBones( target ),\n\t\toffsets = [];\n\n\tlet bone, boneTo,\n\t\tname, i;\n\n\ttarget.skeleton.pose();\n\n\tfor ( i = 0; i < bones.length; ++ i ) {\n\n\t\tbone = bones[ i ];\n\t\tname = options.names[ bone.name ] || bone.name;\n\n\t\tboneTo = getBoneByName( name, sourceBones );\n\n\t\tif ( boneTo && name !== options.hip ) {\n\n\t\t\tconst boneParent = getNearestBone( bone.parent, nameKeys ),\n\t\t\t\tboneToParent = getNearestBone( boneTo.parent, nameValues );\n\n\t\t\tboneParent.updateMatrixWorld();\n\t\t\tboneToParent.updateMatrixWorld();\n\n\t\t\ttargetParentPos.setFromMatrixPosition( boneParent.matrixWorld );\n\t\t\ttargetPos.setFromMatrixPosition( bone.matrixWorld );\n\n\t\t\tsourceParentPos.setFromMatrixPosition( boneToParent.matrixWorld );\n\t\t\tsourcePos.setFromMatrixPosition( boneTo.matrixWorld );\n\n\t\t\ttargetDir.subVectors(\n\t\t\t\tnew Vector2( targetPos.x, targetPos.y ),\n\t\t\t\tnew Vector2( targetParentPos.x, targetParentPos.y )\n\t\t\t).normalize();\n\n\t\t\tsourceDir.subVectors(\n\t\t\t\tnew Vector2( sourcePos.x, sourcePos.y ),\n\t\t\t\tnew Vector2( sourceParentPos.x, sourceParentPos.y )\n\t\t\t).normalize();\n\n\t\t\tconst laterialAngle = targetDir.angle() - sourceDir.angle();\n\n\t\t\tconst offset = new Matrix4().makeRotationFromEuler(\n\t\t\t\tnew Euler(\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t\tlaterialAngle\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tbone.matrix.multiply( offset );\n\n\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\tbone.updateMatrixWorld();\n\n\t\t\toffsets[ name ] = offset;\n\n\t\t}\n\n\t}\n\n\treturn offsets;\n\n}\n\nfunction renameBones( skeleton, names ) {\n\n\tconst bones = getBones( skeleton );\n\n\tfor ( let i = 0; i < bones.length; ++ i ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( names[ bone.name ] ) {\n\n\t\t\tbone.name = names[ bone.name ];\n\n\t\t}\n\n\t}\n\n\treturn this;\n\n}\n\nfunction getBones( skeleton ) {\n\n\treturn Array.isArray( skeleton ) ? skeleton : skeleton.bones;\n\n}\n\nfunction getBoneByName( name, skeleton ) {\n\n\tfor ( let i = 0, bones = getBones( skeleton ); i < bones.length; i ++ ) {\n\n\t\tif ( name === bones[ i ].name )\n\n\t\t\treturn bones[ i ];\n\n\t}\n\n}\n\nfunction getNearestBone( bone, names ) {\n\n\twhile ( bone.isBone ) {\n\n\t\tif ( names.indexOf( bone.name ) !== - 1 ) {\n\n\t\t\treturn bone;\n\n\t\t}\n\n\t\tbone = bone.parent;\n\n\t}\n\n}\n\nfunction findBoneTrackData( name, tracks ) {\n\n\tconst regexp = /\\[(.*)\\]\\.(.*)/,\n\t\tresult = { name: name };\n\n\tfor ( let i = 0; i < tracks.length; ++ i ) {\n\n\t\t// 1 is track name\n\t\t// 2 is track type\n\t\tconst trackData = regexp.exec( tracks[ i ].name );\n\n\t\tif ( trackData && name === trackData[ 1 ] ) {\n\n\t\t\tresult[ trackData[ 2 ] ] = i;\n\n\t\t}\n\n\t}\n\n\treturn result;\n\n}\n\nfunction getEqualsBonesNames( skeleton, targetSkeleton ) {\n\n\tconst sourceBones = getBones( skeleton ),\n\t\ttargetBones = getBones( targetSkeleton ),\n\t\tbones = [];\n\n\tsearch : for ( let i = 0; i < sourceBones.length; i ++ ) {\n\n\t\tconst boneName = sourceBones[ i ].name;\n\n\t\tfor ( let j = 0; j < targetBones.length; j ++ ) {\n\n\t\t\tif ( boneName === targetBones[ j ].name ) {\n\n\t\t\t\tbones.push( boneName );\n\n\t\t\t\tcontinue search;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn bones;\n\n}\n\nfunction clone( source ) {\n\n\tconst sourceLookup = new Map();\n\tconst cloneLookup = new Map();\n\n\tconst clone = source.clone();\n\n\tparallelTraverse( source, clone, function ( sourceNode, clonedNode ) {\n\n\t\tsourceLookup.set( clonedNode, sourceNode );\n\t\tcloneLookup.set( sourceNode, clonedNode );\n\n\t} );\n\n\tclone.traverse( function ( node ) {\n\n\t\tif ( ! node.isSkinnedMesh ) return;\n\n\t\tconst clonedMesh = node;\n\t\tconst sourceMesh = sourceLookup.get( node );\n\t\tconst sourceBones = sourceMesh.skeleton.bones;\n\n\t\tclonedMesh.skeleton = sourceMesh.skeleton.clone();\n\t\tclonedMesh.bindMatrix.copy( sourceMesh.bindMatrix );\n\n\t\tclonedMesh.skeleton.bones = sourceBones.map( function ( bone ) {\n\n\t\t\treturn cloneLookup.get( bone );\n\n\t\t} );\n\n\t\tclonedMesh.bind( clonedMesh.skeleton, clonedMesh.bindMatrix );\n\n\t} );\n\n\treturn clone;\n\n}\n\n\n\n\nfunction parallelTraverse( a, b, callback ) {\n\n\tcallback( a, b );\n\n\tfor ( let i = 0; i < a.children.length; i ++ ) {\n\n\t\tparallelTraverse( a.children[ i ], b.children[ i ], callback );\n\n\t}\n\n}\n\nexport {\n\tretarget,\n\tretargetClip,\n\tgetHelperFromSkeleton,\n\tgetSkeletonOffsets,\n\trenameBones,\n\tgetBones,\n\tgetBoneByName,\n\tgetNearestBone,\n\tfindBoneTrackData,\n\tgetEqualsBonesNames,\n\tclone,\n};\n","/* @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Group, Mesh, Object3D, Texture} from 'three';\nimport {GLTF} from 'three/examples/jsm/loaders/GLTFLoader.js';\nimport * as SkeletonUtils from 'three/examples/jsm/utils/SkeletonUtils.js';\n\nimport {Constructor} from '../utilities.js';\n\n\n\nexport const $prepared = Symbol('prepared');\n\nexport interface PreparedGLTF extends GLTF {\n [$prepared]?: boolean;\n}\n\nexport const $prepare = Symbol('prepare');\nexport const $preparedGLTF = Symbol('preparedGLTF');\nexport const $clone = Symbol('clone');\n\n/**\n * Represents the preparation and enhancement of the output of a Three.js\n * GLTFLoader (a Three.js-flavor \"GLTF\"), to make it suitable for optimal,\n * correct viewing in a given presentation context and also make the cloning\n * process more explicit and legible.\n *\n * A GLTFInstance is API-compatible with a Three.js-flavor \"GLTF\", so it should\n * be considered to be interchangeable with the loaded result of a GLTFLoader.\n *\n * This basic implementation only implements trivial preparation and enhancement\n * of a GLTF. These operations are intended to be enhanced by inheriting\n * classes.\n */\nexport class GLTFInstance implements GLTF {\n /**\n * Prepares a given GLTF for presentation and future cloning. A GLTF that is\n * prepared can safely have this method invoked on it multiple times; it will\n * only be prepared once, including after being cloned.\n */\n static prepare(source: GLTF): PreparedGLTF {\n if (source.scene == null) {\n throw new Error('Model does not have a scene');\n }\n\n if ((source as PreparedGLTF)[$prepared]) {\n return source;\n }\n\n const prepared = this[$prepare](source) as Partial;\n\n // NOTE: ES5 Symbol polyfill is not compatible with spread operator\n // so {...prepared, [$prepared]: true} does not work\n prepared[$prepared] = true;\n\n return prepared as PreparedGLTF;\n }\n\n /**\n * Override in an inheriting class to apply specialty one-time preparations\n * for a given input GLTF.\n */\n protected static[$prepare](source: GLTF): GLTF {\n // TODO(#195,#1003): We don't currently support multiple scenes, so we don't\n // bother preparing extra scenes for now:\n const {scene} = source;\n const scenes = [scene];\n\n return {...source, scene, scenes};\n }\n\n protected[$preparedGLTF]: PreparedGLTF;\n\n get parser() {\n return this[$preparedGLTF].parser;\n }\n\n get animations() {\n return this[$preparedGLTF].animations;\n }\n\n get scene() {\n return this[$preparedGLTF].scene;\n }\n\n get scenes() {\n return this[$preparedGLTF].scenes;\n }\n\n get cameras() {\n return this[$preparedGLTF].cameras;\n }\n\n get asset() {\n return this[$preparedGLTF].asset;\n }\n\n get userData() {\n return this[$preparedGLTF].userData;\n }\n\n constructor(preparedGLTF: PreparedGLTF) {\n this[$preparedGLTF] = preparedGLTF;\n }\n\n /**\n * Creates and returns a copy of this instance.\n */\n clone(): T {\n const GLTFInstanceConstructor = this.constructor as Constructor;\n const clonedGLTF = this[$clone]();\n\n return new GLTFInstanceConstructor(clonedGLTF);\n }\n\n /**\n * Cleans up any retained memory that might not otherwise be released when\n * this instance is done being used.\n */\n dispose(): void {\n this.scenes.forEach((scene: Group) => {\n scene.traverse((object: Object3D) => {\n if (!(object as Mesh).isMesh) {\n return;\n }\n const mesh = object as Mesh;\n const materials =\n Array.isArray(mesh.material) ? mesh.material : [mesh.material];\n materials.forEach(material => {\n // Explicitly dispose any textures assigned to this material\n for (const propertyName in material) {\n const texture = (material as any)[propertyName];\n if (texture instanceof Texture) {\n const image = texture.source.data;\n if (image.close != null) {\n image.close();\n }\n texture.dispose();\n }\n }\n material.dispose();\n });\n mesh.geometry.dispose();\n });\n });\n }\n\n /**\n * Override in an inheriting class to implement specialized cloning strategies\n */\n protected[$clone](): PreparedGLTF {\n const source = this[$preparedGLTF];\n // TODO(#195,#1003): We don't currently support multiple scenes, so we don't\n // bother cloning extra scenes for now:\n const scene = SkeletonUtils.clone(this.scene) as Group;\n cloneVariantMaterials(scene, this.scene);\n const scenes = [scene];\n const userData = source.userData ? {...source.userData} : {};\n return {...source, scene, scenes, userData};\n }\n}\n\n// Variant materials and original material instances are stored under\n// object.userData.variantMaterials/originalMaterial.\n// Three.js Object3D.clone() doesn't clone Three.js objects under\n// .userData so this function is a workaround.\nconst cloneVariantMaterials = (dst: Object3D, src: Object3D) => {\n traversePair(dst, src, (dst, src) => {\n if (src.userData.variantMaterials !== undefined) {\n dst.userData.variantMaterials = new Map(src.userData.variantMaterials);\n }\n if (src.userData.variantData !== undefined) {\n dst.userData.variantData = src.userData.variantData;\n }\n if (src.userData.originalMaterial !== undefined) {\n dst.userData.originalMaterial = src.userData.originalMaterial;\n }\n });\n};\n\nconst traversePair =\n (obj1: Object3D,\n obj2: Object3D,\n callback: (obj1: Object3D, obj2: Object3D) => void) => {\n callback(obj1, obj2);\n // Assume obj1 and obj2 have the same tree structure\n for (let i = 0; i < obj1.children.length; i++) {\n traversePair(obj1.children[i], obj2.children[i], callback);\n }\n };\n\nexport type GLTFInstanceConstructor =\n Constructor;\n","import {Group, Material, Mesh, Object3D, Texture} from 'three';\nimport {GLTF as ThreeGLTF, GLTFReference, GLTFReferenceType} from 'three/examples/jsm/loaders/GLTFLoader.js';\n\nimport {GLTF, GLTFElement} from '../../three-components/gltf-instance/gltf-2.0.js';\n\n\n\nexport type ThreeSceneObject = Object3D|Material|Texture;\ntype ThreeSceneObjectCallback = (a: ThreeSceneObject, b: ThreeSceneObject) =>\n void;\n\nexport type ThreeObjectSet = Set;\n\nexport type GLTFElementToThreeObjectMap = Map;\nexport type ThreeObjectToGLTFElementHandleMap =\n Map;\n\nconst $threeGLTF = Symbol('threeGLTF');\nconst $gltf = Symbol('gltf');\nconst $gltfElementMap = Symbol('gltfElementMap');\nconst $threeObjectMap = Symbol('threeObjectMap');\nconst $parallelTraverseThreeScene = Symbol('parallelTraverseThreeScene');\n\nconst $correlateOriginalThreeGLTF = Symbol('correlateOriginalThreeGLTF');\nconst $correlateCloneThreeGLTF = Symbol('correlateCloneThreeGLTF');\n\n/**\n * The Three.js GLTFLoader provides us with an in-memory representation\n * of a glTF in terms of Three.js constructs. It also provides us with a copy\n * of the deserialized glTF without any Three.js decoration, and a mapping of\n * glTF elements to their corresponding Three.js constructs.\n *\n * A CorrelatedSceneGraph exposes a synchronously available mapping of glTF\n * element references to their corresponding Three.js constructs.\n */\nexport class CorrelatedSceneGraph {\n /**\n * Produce a CorrelatedSceneGraph from a naturally generated Three.js GLTF.\n * Such GLTFs are produced by Three.js' GLTFLoader, and contain cached\n * details that expedite the correlation step.\n *\n * If a CorrelatedSceneGraph is provided as the second argument, re-correlates\n * a cloned Three.js GLTF with a clone of the glTF hierarchy used to produce\n * the upstream Three.js GLTF that the clone was created from. The result\n * CorrelatedSceneGraph is representative of the cloned hierarchy.\n */\n static from(\n threeGLTF: ThreeGLTF,\n upstreamCorrelatedSceneGraph?: CorrelatedSceneGraph):\n CorrelatedSceneGraph {\n if (upstreamCorrelatedSceneGraph != null) {\n return this[$correlateCloneThreeGLTF](\n threeGLTF, upstreamCorrelatedSceneGraph);\n } else {\n return this[$correlateOriginalThreeGLTF](threeGLTF);\n }\n }\n\n private static[$correlateOriginalThreeGLTF](threeGLTF: ThreeGLTF):\n CorrelatedSceneGraph {\n const gltf = threeGLTF.parser.json as GLTF;\n\n const associations =\n threeGLTF.parser.associations as Map;\n const gltfElementMap: GLTFElementToThreeObjectMap = new Map();\n\n const defaultMaterial = {name: 'Default'} as Material;\n const defaultReference = {type: 'materials', index: -1};\n\n for (const threeMaterial of associations.keys()) {\n // Note: GLTFLoader creates a \"default\" material that has no\n // corresponding glTF element in the case that no materials are\n // specified in the source glTF. In this case we append a default\n // material to allow this to be operated upon.\n if (threeMaterial instanceof Material &&\n associations.get(threeMaterial) == null) {\n if (defaultReference.index < 0) {\n if (gltf.materials == null) {\n gltf.materials = [];\n }\n defaultReference.index = gltf.materials.length;\n gltf.materials.push(defaultMaterial);\n }\n\n threeMaterial.name = defaultMaterial.name;\n associations.set(threeMaterial, {materials: defaultReference.index});\n }\n }\n\n // Creates a reverse look up map (gltf-object to Three-object)\n for (const [threeObject, gltfMappings] of associations) {\n if (gltfMappings) {\n const objWithUserData = threeObject as {userData: {associations: {}}};\n objWithUserData.userData = objWithUserData.userData || {};\n objWithUserData.userData.associations = gltfMappings;\n }\n\n for (const mapping in gltfMappings) {\n if (mapping != null && mapping !== 'primitives') {\n const type = mapping as GLTFReferenceType;\n const elementArray = gltf[type] || [];\n const gltfElement = elementArray[gltfMappings[type]!];\n if (gltfElement == null) {\n // TODO: Maybe throw here...\n continue;\n }\n\n let threeObjects = gltfElementMap.get(gltfElement);\n\n if (threeObjects == null) {\n threeObjects = new Set();\n gltfElementMap.set(gltfElement, threeObjects);\n }\n\n threeObjects.add(threeObject);\n }\n }\n }\n\n return new CorrelatedSceneGraph(\n threeGLTF, gltf, associations, gltfElementMap);\n }\n\n /**\n * Transfers the association between a raw glTF and a Three.js scene graph\n * to a clone of the Three.js scene graph, resolved as a new\n * CorrelatedSceneGraph instance.\n */\n private static[$correlateCloneThreeGLTF](\n cloneThreeGLTF: ThreeGLTF,\n upstreamCorrelatedSceneGraph: CorrelatedSceneGraph):\n CorrelatedSceneGraph {\n const originalThreeGLTF = upstreamCorrelatedSceneGraph.threeGLTF;\n const originalGLTF = upstreamCorrelatedSceneGraph.gltf;\n const cloneGLTF: GLTF = JSON.parse(JSON.stringify(originalGLTF));\n const cloneThreeObjectMap: ThreeObjectToGLTFElementHandleMap = new Map();\n const cloneGLTFElementMap: GLTFElementToThreeObjectMap = new Map();\n\n for (let i = 0; i < originalThreeGLTF.scenes.length; i++) {\n this[$parallelTraverseThreeScene](\n originalThreeGLTF.scenes[i],\n cloneThreeGLTF.scenes[i],\n (object: ThreeSceneObject, cloneObject: ThreeSceneObject) => {\n const elementReference =\n upstreamCorrelatedSceneGraph.threeObjectMap.get(object);\n\n if (elementReference == null) {\n return;\n }\n\n for (const mapping in elementReference) {\n if (mapping != null && mapping !== 'primitives') {\n const type = mapping as GLTFReferenceType;\n const index = elementReference[type]!;\n const cloneElement = cloneGLTF[type]![index];\n\n const mappings =\n cloneThreeObjectMap.get(cloneObject) || {} as GLTFReference;\n mappings[type] = index;\n cloneThreeObjectMap.set(cloneObject, mappings);\n\n const cloneObjects: Set =\n cloneGLTFElementMap.get(cloneElement) || new Set();\n cloneObjects.add(cloneObject);\n\n cloneGLTFElementMap.set(cloneElement, cloneObjects);\n }\n }\n });\n }\n\n return new CorrelatedSceneGraph(\n cloneThreeGLTF, cloneGLTF, cloneThreeObjectMap, cloneGLTFElementMap);\n }\n\n /**\n * Traverses two presumably identical Three.js scenes, and invokes a\n * callback for each Object3D or Material encountered, including the initial\n * scene. Adapted from\n * https://github.com/mrdoob/three.js/blob/7c1424c5819ab622a346dd630ee4e6431388021e/examples/jsm/utils/SkeletonUtils.js#L586-L596\n */\n private static[$parallelTraverseThreeScene](\n sceneOne: Group, sceneTwo: Group, callback: ThreeSceneObjectCallback) {\n const isMesh = (object: unknown): object is Mesh => {\n return (object as Mesh).isMesh;\n };\n const traverse = (a: ThreeSceneObject, b: ThreeSceneObject) => {\n callback(a, b);\n\n if ((a as Object3D).isObject3D) {\n if (isMesh(a)) {\n if (Array.isArray(a.material)) {\n for (let i = 0; i < a.material.length; ++i) {\n traverse(\n a.material[i], ((b as typeof a).material as Material[])[i]);\n }\n } else {\n traverse(a.material, (b as typeof a).material as Material);\n }\n }\n\n for (let i = 0; i < (a as Object3D).children.length; ++i) {\n traverse((a as Object3D).children[i], (b as Object3D).children[i]);\n }\n }\n };\n\n traverse(sceneOne, sceneTwo);\n }\n\n private[$threeGLTF]: ThreeGLTF;\n private[$gltf]: GLTF;\n private[$gltfElementMap]: GLTFElementToThreeObjectMap;\n private[$threeObjectMap]: ThreeObjectToGLTFElementHandleMap;\n\n /**\n * The source Three.js GLTF result given to us by a Three.js GLTFLoader.\n */\n get threeGLTF(): ThreeGLTF {\n return this[$threeGLTF];\n }\n\n /**\n * The in-memory deserialized source glTF.\n */\n get gltf(): GLTF {\n return this[$gltf];\n }\n\n /**\n * A Map of glTF element references to arrays of corresponding Three.js\n * object references. Three.js objects are kept in arrays to account for\n * cases where more than one Three.js object corresponds to a single glTF\n * element.\n */\n get gltfElementMap(): GLTFElementToThreeObjectMap {\n return this[$gltfElementMap];\n }\n\n /**\n * A map of individual Three.js objects to corresponding elements in the\n * source glTF.\n */\n get threeObjectMap(): ThreeObjectToGLTFElementHandleMap {\n return this[$threeObjectMap];\n }\n\n constructor(\n threeGLTF: ThreeGLTF, gltf: GLTF,\n threeObjectMap: ThreeObjectToGLTFElementHandleMap,\n gltfElementMap: GLTFElementToThreeObjectMap) {\n this[$threeGLTF] = threeGLTF;\n this[$gltf] = gltf;\n this[$gltfElementMap] = gltfElementMap;\n this[$threeObjectMap] = threeObjectMap;\n }\n}\n","/* @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {FrontSide, Material, Mesh, MeshStandardMaterial, Object3D, Sphere} from 'three';\nimport {GLTF} from 'three/examples/jsm/loaders/GLTFLoader.js';\n\nimport {$clone, $prepare, $preparedGLTF, GLTFInstance, PreparedGLTF} from '../GLTFInstance.js';\n\nimport {CorrelatedSceneGraph} from './correlated-scene-graph.js';\n\nconst $correlatedSceneGraph = Symbol('correlatedSceneGraph');\n\ninterface PreparedModelViewerGLTF extends PreparedGLTF {\n [$correlatedSceneGraph]?: CorrelatedSceneGraph;\n}\n\n/**\n * This specialization of GLTFInstance collects all of the processing needed\n * to prepare a model and to clone it making special considerations for\n * use cases.\n */\nexport class ModelViewerGLTFInstance extends GLTFInstance {\n /**\n * @override\n */\n protected static[$prepare](source: GLTF) {\n const prepared = super[$prepare](source) as PreparedModelViewerGLTF;\n\n if (prepared[$correlatedSceneGraph] == null) {\n prepared[$correlatedSceneGraph] = CorrelatedSceneGraph.from(prepared);\n }\n\n const {scene} = prepared;\n\n const nullSphere = new Sphere(undefined, Infinity);\n\n scene.traverse((node: Object3D) => {\n // Set a high renderOrder while we're here to ensure the model\n // always renders on top of the sky sphere\n node.renderOrder = 1000;\n\n // Three.js seems to cull some animated models incorrectly. Since we\n // expect to view our whole scene anyway, we turn off the frustum\n // culling optimization here.\n node.frustumCulled = false;\n // Animations for objects without names target their UUID instead. When\n // objects are cloned, they get new UUIDs which the animation can't\n // find. To fix this, we assign their UUID as their name.\n if (!node.name) {\n node.name = node.uuid;\n }\n const mesh = node as Mesh;\n if (mesh.isMesh) {\n const {geometry} = mesh;\n mesh.castShadow = true;\n if ((mesh as any).isSkinnedMesh) {\n // Akin to disabling frustum culling above, we have to also manually\n // disable the bounds to make raycasting correct for skinned meshes.\n geometry.boundingSphere = nullSphere;\n // The bounding box is set in GLTFLoader by the accessor bounds, which\n // are not updated with animation.\n geometry.boundingBox = null;\n }\n\n const material = mesh.material as MeshStandardMaterial;\n if ((material as any).isMeshBasicMaterial === true) {\n material.toneMapped = false;\n }\n // This makes shadows better for non-manifold meshes\n material.shadowSide = FrontSide;\n\n // Fixes an edge case with unused extra UV-coords being incorrectly\n // referenced by three.js; remove when\n // https://github.com/mrdoob/three.js/pull/23974 is merged.\n if (material.aoMap) {\n const {gltf, threeObjectMap} = prepared[$correlatedSceneGraph]!;\n const gltfRef = threeObjectMap.get(material);\n if (gltf.materials != null && gltfRef != null &&\n gltfRef.materials != null) {\n const gltfMaterial = gltf.materials[gltfRef.materials];\n if (gltfMaterial.occlusionTexture &&\n gltfMaterial.occlusionTexture.texCoord === 0 &&\n geometry.attributes.uv != null) {\n geometry.setAttribute('uv2', geometry.attributes.uv);\n }\n }\n }\n }\n });\n\n return prepared;\n }\n\n get correlatedSceneGraph() {\n return (\n this[$preparedGLTF] as PreparedModelViewerGLTF)[$correlatedSceneGraph]!;\n }\n\n /**\n * @override\n */\n [$clone](): PreparedGLTF {\n const clone: PreparedModelViewerGLTF = super[$clone]();\n const sourceUUIDToClonedMaterial = new Map();\n\n clone.scene.traverse((node: Object3D) => {\n // Materials aren't cloned when cloning meshes; geometry\n // and materials are copied by reference. This is necessary\n // for the same model to be used twice with different\n // scene-graph operations.\n if ((node as Mesh).isMesh) {\n const mesh = node as Mesh;\n const material = mesh.material as MeshStandardMaterial;\n if (material != null) {\n if (sourceUUIDToClonedMaterial.has(material.uuid)) {\n mesh.material = sourceUUIDToClonedMaterial.get(material.uuid)!;\n return;\n }\n\n mesh.material = material.clone() as MeshStandardMaterial;\n sourceUUIDToClonedMaterial.set(material.uuid, mesh.material);\n }\n }\n });\n\n // Cross-correlate the scene graph by relying on information in the\n // current scene graph; without this step, relationships between the\n // Three.js object graph and the glTF scene graph will be lost.\n clone[$correlatedSceneGraph] =\n CorrelatedSceneGraph.from(clone, this.correlatedSceneGraph);\n\n return clone;\n }\n}\n","import {\n\tDataTextureLoader,\n\tDataUtils,\n\tFloatType,\n\tHalfFloatType,\n\tLinearEncoding,\n\tLinearFilter\n} from 'three';\n\n// https://github.com/mrdoob/three.js/issues/5552\n// http://en.wikipedia.org/wiki/RGBE_image_format\n\nclass RGBELoader extends DataTextureLoader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.type = HalfFloatType;\n\n\t}\n\n\t// adapted from http://www.graphics.cornell.edu/~bjw/rgbe.html\n\n\tparse( buffer ) {\n\n\t\tconst\n\t\t\t/* return codes for rgbe routines */\n\t\t\t//RGBE_RETURN_SUCCESS = 0,\n\t\t\tRGBE_RETURN_FAILURE = - 1,\n\n\t\t\t/* default error routine. change this to change error handling */\n\t\t\trgbe_read_error = 1,\n\t\t\trgbe_write_error = 2,\n\t\t\trgbe_format_error = 3,\n\t\t\trgbe_memory_error = 4,\n\t\t\trgbe_error = function ( rgbe_error_code, msg ) {\n\n\t\t\t\tswitch ( rgbe_error_code ) {\n\n\t\t\t\t\tcase rgbe_read_error: console.error( 'THREE.RGBELoader Read Error: ' + ( msg || '' ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase rgbe_write_error: console.error( 'THREE.RGBELoader Write Error: ' + ( msg || '' ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase rgbe_format_error: console.error( 'THREE.RGBELoader Bad File Format: ' + ( msg || '' ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\tcase rgbe_memory_error: console.error( 'THREE.RGBELoader: Error: ' + ( msg || '' ) );\n\n\t\t\t\t}\n\n\t\t\t\treturn RGBE_RETURN_FAILURE;\n\n\t\t\t},\n\n\t\t\t/* offsets to red, green, and blue components in a data (float) pixel */\n\t\t\t//RGBE_DATA_RED = 0,\n\t\t\t//RGBE_DATA_GREEN = 1,\n\t\t\t//RGBE_DATA_BLUE = 2,\n\n\t\t\t/* number of floats per pixel, use 4 since stored in rgba image format */\n\t\t\t//RGBE_DATA_SIZE = 4,\n\n\t\t\t/* flags indicating which fields in an rgbe_header_info are valid */\n\t\t\tRGBE_VALID_PROGRAMTYPE = 1,\n\t\t\tRGBE_VALID_FORMAT = 2,\n\t\t\tRGBE_VALID_DIMENSIONS = 4,\n\n\t\t\tNEWLINE = '\\n',\n\n\t\t\tfgets = function ( buffer, lineLimit, consume ) {\n\n\t\t\t\tconst chunkSize = 128;\n\n\t\t\t\tlineLimit = ! lineLimit ? 1024 : lineLimit;\n\t\t\t\tlet p = buffer.pos,\n\t\t\t\t\ti = - 1, len = 0, s = '',\n\t\t\t\t\tchunk = String.fromCharCode.apply( null, new Uint16Array( buffer.subarray( p, p + chunkSize ) ) );\n\n\t\t\t\twhile ( ( 0 > ( i = chunk.indexOf( NEWLINE ) ) ) && ( len < lineLimit ) && ( p < buffer.byteLength ) ) {\n\n\t\t\t\t\ts += chunk; len += chunk.length;\n\t\t\t\t\tp += chunkSize;\n\t\t\t\t\tchunk += String.fromCharCode.apply( null, new Uint16Array( buffer.subarray( p, p + chunkSize ) ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( - 1 < i ) {\n\n\t\t\t\t\t/*for (i=l-1; i>=0; i--) {\n\t\t\t\t\t\tbyteCode = m.charCodeAt(i);\n\t\t\t\t\t\tif (byteCode > 0x7f && byteCode <= 0x7ff) byteLen++;\n\t\t\t\t\t\telse if (byteCode > 0x7ff && byteCode <= 0xffff) byteLen += 2;\n\t\t\t\t\t\tif (byteCode >= 0xDC00 && byteCode <= 0xDFFF) i--; //trail surrogate\n\t\t\t\t\t}*/\n\t\t\t\t\tif ( false !== consume ) buffer.pos += len + i + 1;\n\t\t\t\t\treturn s + chunk.slice( 0, i );\n\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t},\n\n\t\t\t/* minimal header reading. modify if you want to parse more information */\n\t\t\tRGBE_ReadHeader = function ( buffer ) {\n\n\n\t\t\t\t// regexes to parse header info fields\n\t\t\t\tconst magic_token_re = /^#\\?(\\S+)/,\n\t\t\t\t\tgamma_re = /^\\s*GAMMA\\s*=\\s*(\\d+(\\.\\d+)?)\\s*$/,\n\t\t\t\t\texposure_re = /^\\s*EXPOSURE\\s*=\\s*(\\d+(\\.\\d+)?)\\s*$/,\n\t\t\t\t\tformat_re = /^\\s*FORMAT=(\\S+)\\s*$/,\n\t\t\t\t\tdimensions_re = /^\\s*\\-Y\\s+(\\d+)\\s+\\+X\\s+(\\d+)\\s*$/,\n\n\t\t\t\t\t// RGBE format header struct\n\t\t\t\t\theader = {\n\n\t\t\t\t\t\tvalid: 0, /* indicate which fields are valid */\n\n\t\t\t\t\t\tstring: '', /* the actual header string */\n\n\t\t\t\t\t\tcomments: '', /* comments found in header */\n\n\t\t\t\t\t\tprogramtype: 'RGBE', /* listed at beginning of file to identify it after \"#?\". defaults to \"RGBE\" */\n\n\t\t\t\t\t\tformat: '', /* RGBE format, default 32-bit_rle_rgbe */\n\n\t\t\t\t\t\tgamma: 1.0, /* image has already been gamma corrected with given gamma. defaults to 1.0 (no correction) */\n\n\t\t\t\t\t\texposure: 1.0, /* a value of 1.0 in an image corresponds to watts/steradian/m^2. defaults to 1.0 */\n\n\t\t\t\t\t\twidth: 0, height: 0 /* image dimensions, width/height */\n\n\t\t\t\t\t};\n\n\t\t\t\tlet line, match;\n\n\t\t\t\tif ( buffer.pos >= buffer.byteLength || ! ( line = fgets( buffer ) ) ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_read_error, 'no header found' );\n\n\t\t\t\t}\n\n\t\t\t\t/* if you want to require the magic token then uncomment the next line */\n\t\t\t\tif ( ! ( match = line.match( magic_token_re ) ) ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'bad initial token' );\n\n\t\t\t\t}\n\n\t\t\t\theader.valid |= RGBE_VALID_PROGRAMTYPE;\n\t\t\t\theader.programtype = match[ 1 ];\n\t\t\t\theader.string += line + '\\n';\n\n\t\t\t\twhile ( true ) {\n\n\t\t\t\t\tline = fgets( buffer );\n\t\t\t\t\tif ( false === line ) break;\n\t\t\t\t\theader.string += line + '\\n';\n\n\t\t\t\t\tif ( '#' === line.charAt( 0 ) ) {\n\n\t\t\t\t\t\theader.comments += line + '\\n';\n\t\t\t\t\t\tcontinue; // comment line\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( gamma_re ) ) {\n\n\t\t\t\t\t\theader.gamma = parseFloat( match[ 1 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( exposure_re ) ) {\n\n\t\t\t\t\t\theader.exposure = parseFloat( match[ 1 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( format_re ) ) {\n\n\t\t\t\t\t\theader.valid |= RGBE_VALID_FORMAT;\n\t\t\t\t\t\theader.format = match[ 1 ];//'32-bit_rle_rgbe';\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( dimensions_re ) ) {\n\n\t\t\t\t\t\theader.valid |= RGBE_VALID_DIMENSIONS;\n\t\t\t\t\t\theader.height = parseInt( match[ 1 ], 10 );\n\t\t\t\t\t\theader.width = parseInt( match[ 2 ], 10 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( header.valid & RGBE_VALID_FORMAT ) && ( header.valid & RGBE_VALID_DIMENSIONS ) ) break;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! ( header.valid & RGBE_VALID_FORMAT ) ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'missing format specifier' );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! ( header.valid & RGBE_VALID_DIMENSIONS ) ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'missing image size specifier' );\n\n\t\t\t\t}\n\n\t\t\t\treturn header;\n\n\t\t\t},\n\n\t\t\tRGBE_ReadPixels_RLE = function ( buffer, w, h ) {\n\n\t\t\t\tconst scanline_width = w;\n\n\t\t\t\tif (\n\t\t\t\t\t// run length encoding is not allowed so read flat\n\t\t\t\t\t( ( scanline_width < 8 ) || ( scanline_width > 0x7fff ) ) ||\n\t\t\t\t\t// this file is not run length encoded\n\t\t\t\t\t( ( 2 !== buffer[ 0 ] ) || ( 2 !== buffer[ 1 ] ) || ( buffer[ 2 ] & 0x80 ) )\n\t\t\t\t) {\n\n\t\t\t\t\t// return the flat buffer\n\t\t\t\t\treturn new Uint8Array( buffer );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scanline_width !== ( ( buffer[ 2 ] << 8 ) | buffer[ 3 ] ) ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'wrong scanline width' );\n\n\t\t\t\t}\n\n\t\t\t\tconst data_rgba = new Uint8Array( 4 * w * h );\n\n\t\t\t\tif ( ! data_rgba.length ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_memory_error, 'unable to allocate buffer space' );\n\n\t\t\t\t}\n\n\t\t\t\tlet offset = 0, pos = 0;\n\n\t\t\t\tconst ptr_end = 4 * scanline_width;\n\t\t\t\tconst rgbeStart = new Uint8Array( 4 );\n\t\t\t\tconst scanline_buffer = new Uint8Array( ptr_end );\n\t\t\t\tlet num_scanlines = h;\n\n\t\t\t\t// read in each successive scanline\n\t\t\t\twhile ( ( num_scanlines > 0 ) && ( pos < buffer.byteLength ) ) {\n\n\t\t\t\t\tif ( pos + 4 > buffer.byteLength ) {\n\n\t\t\t\t\t\treturn rgbe_error( rgbe_read_error );\n\n\t\t\t\t\t}\n\n\t\t\t\t\trgbeStart[ 0 ] = buffer[ pos ++ ];\n\t\t\t\t\trgbeStart[ 1 ] = buffer[ pos ++ ];\n\t\t\t\t\trgbeStart[ 2 ] = buffer[ pos ++ ];\n\t\t\t\t\trgbeStart[ 3 ] = buffer[ pos ++ ];\n\n\t\t\t\t\tif ( ( 2 != rgbeStart[ 0 ] ) || ( 2 != rgbeStart[ 1 ] ) || ( ( ( rgbeStart[ 2 ] << 8 ) | rgbeStart[ 3 ] ) != scanline_width ) ) {\n\n\t\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'bad rgbe scanline format' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// read each of the four channels for the scanline into the buffer\n\t\t\t\t\t// first red, then green, then blue, then exponent\n\t\t\t\t\tlet ptr = 0, count;\n\n\t\t\t\t\twhile ( ( ptr < ptr_end ) && ( pos < buffer.byteLength ) ) {\n\n\t\t\t\t\t\tcount = buffer[ pos ++ ];\n\t\t\t\t\t\tconst isEncodedRun = count > 128;\n\t\t\t\t\t\tif ( isEncodedRun ) count -= 128;\n\n\t\t\t\t\t\tif ( ( 0 === count ) || ( ptr + count > ptr_end ) ) {\n\n\t\t\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'bad scanline data' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( isEncodedRun ) {\n\n\t\t\t\t\t\t\t// a (encoded) run of the same value\n\t\t\t\t\t\t\tconst byteValue = buffer[ pos ++ ];\n\t\t\t\t\t\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\t\t\t\t\t\tscanline_buffer[ ptr ++ ] = byteValue;\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t//ptr += count;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// a literal-run\n\t\t\t\t\t\t\tscanline_buffer.set( buffer.subarray( pos, pos + count ), ptr );\n\t\t\t\t\t\t\tptr += count; pos += count;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\t// now convert data from buffer into rgba\n\t\t\t\t\t// first red, then green, then blue, then exponent (alpha)\n\t\t\t\t\tconst l = scanline_width; //scanline_buffer.byteLength;\n\t\t\t\t\tfor ( let i = 0; i < l; i ++ ) {\n\n\t\t\t\t\t\tlet off = 0;\n\t\t\t\t\t\tdata_rgba[ offset ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toff += scanline_width; //1;\n\t\t\t\t\t\tdata_rgba[ offset + 1 ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toff += scanline_width; //1;\n\t\t\t\t\t\tdata_rgba[ offset + 2 ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toff += scanline_width; //1;\n\t\t\t\t\t\tdata_rgba[ offset + 3 ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toffset += 4;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tnum_scanlines --;\n\n\t\t\t\t}\n\n\t\t\t\treturn data_rgba;\n\n\t\t\t};\n\n\t\tconst RGBEByteToRGBFloat = function ( sourceArray, sourceOffset, destArray, destOffset ) {\n\n\t\t\tconst e = sourceArray[ sourceOffset + 3 ];\n\t\t\tconst scale = Math.pow( 2.0, e - 128.0 ) / 255.0;\n\n\t\t\tdestArray[ destOffset + 0 ] = sourceArray[ sourceOffset + 0 ] * scale;\n\t\t\tdestArray[ destOffset + 1 ] = sourceArray[ sourceOffset + 1 ] * scale;\n\t\t\tdestArray[ destOffset + 2 ] = sourceArray[ sourceOffset + 2 ] * scale;\n\t\t\tdestArray[ destOffset + 3 ] = 1;\n\n\t\t};\n\n\t\tconst RGBEByteToRGBHalf = function ( sourceArray, sourceOffset, destArray, destOffset ) {\n\n\t\t\tconst e = sourceArray[ sourceOffset + 3 ];\n\t\t\tconst scale = Math.pow( 2.0, e - 128.0 ) / 255.0;\n\n\t\t\t// clamping to 65504, the maximum representable value in float16\n\t\t\tdestArray[ destOffset + 0 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 0 ] * scale, 65504 ) );\n\t\t\tdestArray[ destOffset + 1 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 1 ] * scale, 65504 ) );\n\t\t\tdestArray[ destOffset + 2 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 2 ] * scale, 65504 ) );\n\t\t\tdestArray[ destOffset + 3 ] = DataUtils.toHalfFloat( 1 );\n\n\t\t};\n\n\t\tconst byteArray = new Uint8Array( buffer );\n\t\tbyteArray.pos = 0;\n\t\tconst rgbe_header_info = RGBE_ReadHeader( byteArray );\n\n\t\tif ( RGBE_RETURN_FAILURE !== rgbe_header_info ) {\n\n\t\t\tconst w = rgbe_header_info.width,\n\t\t\t\th = rgbe_header_info.height,\n\t\t\t\timage_rgba_data = RGBE_ReadPixels_RLE( byteArray.subarray( byteArray.pos ), w, h );\n\n\t\t\tif ( RGBE_RETURN_FAILURE !== image_rgba_data ) {\n\n\t\t\t\tlet data, type;\n\t\t\t\tlet numElements;\n\n\t\t\t\tswitch ( this.type ) {\n\n\t\t\t\t\tcase FloatType:\n\n\t\t\t\t\t\tnumElements = image_rgba_data.length / 4;\n\t\t\t\t\t\tconst floatArray = new Float32Array( numElements * 4 );\n\n\t\t\t\t\t\tfor ( let j = 0; j < numElements; j ++ ) {\n\n\t\t\t\t\t\t\tRGBEByteToRGBFloat( image_rgba_data, j * 4, floatArray, j * 4 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdata = floatArray;\n\t\t\t\t\t\ttype = FloatType;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase HalfFloatType:\n\n\t\t\t\t\t\tnumElements = image_rgba_data.length / 4;\n\t\t\t\t\t\tconst halfArray = new Uint16Array( numElements * 4 );\n\n\t\t\t\t\t\tfor ( let j = 0; j < numElements; j ++ ) {\n\n\t\t\t\t\t\t\tRGBEByteToRGBHalf( image_rgba_data, j * 4, halfArray, j * 4 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdata = halfArray;\n\t\t\t\t\t\ttype = HalfFloatType;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.error( 'THREE.RGBELoader: unsupported type: ', this.type );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\twidth: w, height: h,\n\t\t\t\t\tdata: data,\n\t\t\t\t\theader: rgbe_header_info.string,\n\t\t\t\t\tgamma: rgbe_header_info.gamma,\n\t\t\t\t\texposure: rgbe_header_info.exposure,\n\t\t\t\t\ttype: type\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tsetDataType( value ) {\n\n\t\tthis.type = value;\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tfunction onLoadCallback( texture, texData ) {\n\n\t\t\tswitch ( texture.type ) {\n\n\t\t\t\tcase FloatType:\n\t\t\t\tcase HalfFloatType:\n\n\t\t\t\t\ttexture.encoding = LinearEncoding;\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\ttexture.magFilter = LinearFilter;\n\t\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\t\ttexture.flipY = true;\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}\n\n\t\treturn super.load( url, onLoadCallback, onProgress, onError );\n\n\t}\n\n}\n\nexport { RGBELoader };\n","/* @license\n * Copyright 2021 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {BackSide, BoxGeometry, Mesh, MeshBasicMaterial, MeshStandardMaterial, PointLight, Scene} from 'three';\n\nexport default class EnvironmentScene extends Scene {\n constructor() {\n super();\n\n this.position.y = -3.5;\n\n const geometry = new BoxGeometry();\n geometry.deleteAttribute('uv');\n\n const roomMaterial =\n new MeshStandardMaterial({metalness: 0, side: BackSide});\n const boxMaterial = new MeshStandardMaterial({metalness: 0});\n\n const mainLight = new PointLight(0xffffff, 500.0, 28, 2);\n mainLight.position.set(0.418, 16.199, 0.300);\n this.add(mainLight);\n\n const room = new Mesh(geometry, roomMaterial);\n room.position.set(-0.757, 13.219, 0.717);\n room.scale.set(31.713, 28.305, 28.591);\n this.add(room);\n\n const box1 = new Mesh(geometry, boxMaterial);\n box1.position.set(-10.906, 2.009, 1.846);\n box1.rotation.set(0, -0.195, 0);\n box1.scale.set(2.328, 7.905, 4.651);\n this.add(box1);\n\n const box2 = new Mesh(geometry, boxMaterial);\n box2.position.set(-5.607, -0.754, -0.758);\n box2.rotation.set(0, 0.994, 0);\n box2.scale.set(1.970, 1.534, 3.955);\n this.add(box2);\n\n const box3 = new Mesh(geometry, boxMaterial);\n box3.position.set(6.167, 0.857, 7.803);\n box3.rotation.set(0, 0.561, 0);\n box3.scale.set(3.927, 6.285, 3.687);\n this.add(box3);\n\n const box4 = new Mesh(geometry, boxMaterial);\n box4.position.set(-2.017, 0.018, 6.124);\n box4.rotation.set(0, 0.333, 0);\n box4.scale.set(2.002, 4.566, 2.064);\n this.add(box4);\n\n const box5 = new Mesh(geometry, boxMaterial);\n box5.position.set(2.291, -0.756, -2.621);\n box5.rotation.set(0, -0.286, 0);\n box5.scale.set(1.546, 1.552, 1.496);\n this.add(box5);\n\n const box6 = new Mesh(geometry, boxMaterial);\n box6.position.set(-2.193, -0.369, -5.547);\n box6.rotation.set(0, 0.516, 0);\n box6.scale.set(3.875, 3.487, 2.986);\n this.add(box6);\n\n\n // -x right\n const light1 = new Mesh(geometry, this.createAreaLightMaterial(50));\n light1.position.set(-16.116, 14.37, 8.208);\n light1.scale.set(0.1, 2.428, 2.739);\n this.add(light1);\n\n // -x left\n const light2 = new Mesh(geometry, this.createAreaLightMaterial(50));\n light2.position.set(-16.109, 18.021, -8.207);\n light2.scale.set(0.1, 2.425, 2.751);\n this.add(light2);\n\n // +x\n const light3 = new Mesh(geometry, this.createAreaLightMaterial(17));\n light3.position.set(14.904, 12.198, -1.832);\n light3.scale.set(0.15, 4.265, 6.331);\n this.add(light3);\n\n // +z\n const light4 = new Mesh(geometry, this.createAreaLightMaterial(43));\n light4.position.set(-0.462, 8.89, 14.520);\n light4.scale.set(4.38, 5.441, 0.088);\n this.add(light4);\n\n // -z\n const light5 = new Mesh(geometry, this.createAreaLightMaterial(20));\n light5.position.set(3.235, 11.486, -12.541);\n light5.scale.set(2.5, 2.0, 0.1);\n this.add(light5);\n\n // +y\n const light6 = new Mesh(geometry, this.createAreaLightMaterial(100));\n light6.position.set(0.0, 20.0, 0.0);\n light6.scale.set(1.0, 0.1, 1.0);\n this.add(light6);\n }\n\n createAreaLightMaterial(intensity: number): MeshBasicMaterial {\n const material = new MeshBasicMaterial();\n material.color.setScalar(intensity);\n return material;\n }\n}\n","/* @license\n * Copyright 2021 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {BackSide, BoxGeometry, Mesh, MeshBasicMaterial, MeshStandardMaterial, PointLight, Scene} from 'three';\n\nexport default class EnvironmentSceneAlt extends Scene {\n constructor() {\n super();\n\n this.position.y = -3.5;\n\n const geometry = new BoxGeometry();\n geometry.deleteAttribute('uv');\n\n const roomMaterial =\n new MeshStandardMaterial({metalness: 0, side: BackSide});\n const boxMaterial = new MeshStandardMaterial({metalness: 0});\n\n const mainLight = new PointLight(0xffffff, 400.0, 28, 2);\n mainLight.position.set(0.5, 14.0, 0.5);\n this.add(mainLight);\n\n const room = new Mesh(geometry, roomMaterial);\n room.position.set(0.0, 13.2, 0.0);\n room.scale.set(31.5, 28.5, 31.5);\n this.add(room);\n\n const box1 = new Mesh(geometry, boxMaterial);\n box1.position.set(-10.906, -1.0, 1.846);\n box1.rotation.set(0, -0.195, 0);\n box1.scale.set(2.328, 7.905, 4.651);\n this.add(box1);\n\n const box2 = new Mesh(geometry, boxMaterial);\n box2.position.set(-5.607, -0.754, -0.758);\n box2.rotation.set(0, 0.994, 0);\n box2.scale.set(1.970, 1.534, 3.955);\n this.add(box2);\n\n const box3 = new Mesh(geometry, boxMaterial);\n box3.position.set(6.167, -0.16, 7.803);\n box3.rotation.set(0, 0.561, 0);\n box3.scale.set(3.927, 6.285, 3.687);\n this.add(box3);\n\n const box4 = new Mesh(geometry, boxMaterial);\n box4.position.set(-2.017, 0.018, 6.124);\n box4.rotation.set(0, 0.333, 0);\n box4.scale.set(2.002, 4.566, 2.064);\n this.add(box4);\n\n const box5 = new Mesh(geometry, boxMaterial);\n box5.position.set(2.291, -0.756, -2.621);\n box5.rotation.set(0, -0.286, 0);\n box5.scale.set(1.546, 1.552, 1.496);\n this.add(box5);\n\n const box6 = new Mesh(geometry, boxMaterial);\n box6.position.set(-2.193, -0.369, -5.547);\n box6.rotation.set(0, 0.516, 0);\n box6.scale.set(3.875, 3.487, 2.986);\n this.add(box6);\n\n // -x_left\n const light1 = new Mesh(geometry, this.createAreaLightMaterial(80));\n light1.position.set(-14.0, 10.0, 8.0);\n light1.scale.set(0.1, 2.5, 2.5);\n this.add(light1);\n\n // -x_right\n const light2 = new Mesh(geometry, this.createAreaLightMaterial(80));\n light2.position.set(-14.0, 14.0, -4.0);\n light2.scale.set(0.1, 2.5, 2.5);\n this.add(light2);\n\n\n\n // +x only on light\n const light3 = new Mesh(geometry, this.createAreaLightMaterial(23));\n light3.position.set(14.0, 12.0, 0.0);\n light3.scale.set(0.1, 5.0, 5.0);\n this.add(light3);\n\n // +z\n const light4 = new Mesh(geometry, this.createAreaLightMaterial(16));\n light4.position.set(0.0, 9.0, 14.0);\n light4.scale.set(5.0, 5.0, 0.1);\n this.add(light4);\n\n // -z right\n const light5 = new Mesh(geometry, this.createAreaLightMaterial(80));\n light5.position.set(7.0, 8.0, -14.0);\n light5.scale.set(2.5, 2.5, 0.1);\n this.add(light5);\n\n // -z left\n const light6 = new Mesh(geometry, this.createAreaLightMaterial(80));\n light6.position.set(-7.0, 16.0, -14.0);\n light6.scale.set(2.5, 2.5, 0.1);\n this.add(light6);\n\n // +y\n const light7 = new Mesh(geometry, this.createAreaLightMaterial(1));\n light7.position.set(0.0, 20.0, 0.0);\n light7.scale.set(0.1, 0.1, 0.1);\n this.add(light7);\n }\n\n createAreaLightMaterial(intensity: number): MeshBasicMaterial {\n const material = new MeshBasicMaterial();\n material.color.setScalar(intensity);\n return material;\n }\n}\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {BackSide, BoxGeometry, CubeCamera, CubeTexture, EquirectangularReflectionMapping, EventDispatcher, HalfFloatType, LinearEncoding, Mesh, NoBlending, NoToneMapping, RGBAFormat, Scene, ShaderMaterial, sRGBEncoding, Texture, TextureLoader, Vector3, WebGLCubeRenderTarget, WebGLRenderer} from 'three';\nimport {RGBELoader} from 'three/examples/jsm/loaders/RGBELoader.js';\n\nimport {deserializeUrl, timePasses} from '../utilities.js';\n\nimport EnvironmentScene from './EnvironmentScene.js';\nimport EnvironmentSceneAlt from './EnvironmentSceneAlt.js';\n\nexport interface EnvironmentMapAndSkybox {\n environmentMap: Texture;\n skybox: Texture|null;\n}\n\nconst GENERATED_SIGMA = 0.04;\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst HDR_FILE_RE = /\\.hdr(\\.js)?$/;\nconst ldrLoader = new TextureLoader();\nconst hdrLoader = new RGBELoader();\nhdrLoader.setDataType(HalfFloatType);\n\nexport default class TextureUtils extends EventDispatcher {\n private generatedEnvironmentMap: Promise|null = null;\n private generatedEnvironmentMapAlt: Promise|null = null;\n\n private skyboxCache = new Map>();\n\n private blurMaterial: ShaderMaterial|null = null;\n private blurScene: Scene|null = null;\n\n constructor(private threeRenderer: WebGLRenderer) {\n super();\n }\n\n async load(\n url: string, progressCallback: (progress: number) => void = () => {}):\n Promise {\n try {\n const isHDR: boolean = HDR_FILE_RE.test(url);\n const loader = isHDR ? hdrLoader : ldrLoader;\n const texture: Texture = await new Promise(\n (resolve, reject) => loader.load(\n url, resolve, (event: {loaded: number, total: number}) => {\n progressCallback(event.loaded / event.total * 0.9);\n }, reject));\n\n progressCallback(1.0);\n\n texture.name = url;\n texture.mapping = EquirectangularReflectionMapping;\n\n if (!isHDR) {\n texture.encoding = sRGBEncoding;\n }\n\n return texture;\n\n } finally {\n if (progressCallback) {\n progressCallback(1);\n }\n }\n }\n\n /**\n * Returns a { skybox, environmentMap } object with the targets/textures\n * accordingly. `skybox` is a WebGLRenderCubeTarget, and `environmentMap`\n * is a Texture from a WebGLRenderCubeTarget.\n */\n async generateEnvironmentMapAndSkybox(\n skyboxUrl: string|null = null, environmentMapUrl: string|null = null,\n progressCallback: (progress: number) => void = () => {}):\n Promise {\n const useAltEnvironment = environmentMapUrl !== 'legacy';\n if (environmentMapUrl === 'legacy' || environmentMapUrl === 'neutral') {\n environmentMapUrl = null;\n }\n environmentMapUrl = deserializeUrl(environmentMapUrl);\n\n let skyboxLoads: Promise = Promise.resolve(null);\n let environmentMapLoads: Promise;\n\n // If we have a skybox URL, attempt to load it as a cubemap\n if (!!skyboxUrl) {\n skyboxLoads = this.loadEquirectFromUrl(skyboxUrl, progressCallback);\n }\n\n if (!!environmentMapUrl) {\n // We have an available environment map URL\n environmentMapLoads =\n this.loadEquirectFromUrl(environmentMapUrl, progressCallback);\n } else if (!!skyboxUrl) {\n // Fallback to deriving the environment map from an available skybox\n environmentMapLoads =\n this.loadEquirectFromUrl(skyboxUrl, progressCallback);\n } else {\n // Fallback to generating the environment map\n environmentMapLoads = useAltEnvironment ?\n this.loadGeneratedEnvironmentMapAlt() :\n this.loadGeneratedEnvironmentMap();\n }\n\n const [environmentMap, skybox] =\n await Promise.all([environmentMapLoads, skyboxLoads]);\n\n if (environmentMap == null) {\n throw new Error('Failed to load environment map.');\n }\n\n return {environmentMap, skybox};\n }\n\n /**\n * Loads an equirect Texture from a given URL, for use as a skybox.\n */\n private async loadEquirectFromUrl(\n url: string,\n progressCallback: (progress: number) => void): Promise {\n if (!this.skyboxCache.has(url)) {\n const skyboxMapLoads = this.load(url, progressCallback);\n\n this.skyboxCache.set(url, skyboxMapLoads);\n }\n\n return this.skyboxCache.get(url)!;\n }\n\n private async GenerateEnvironmentMap(scene: Scene, name: string) {\n await timePasses();\n\n const renderer = this.threeRenderer;\n const cubeTarget = new WebGLCubeRenderTarget(256, {\n generateMipmaps: false,\n type: HalfFloatType,\n format: RGBAFormat,\n encoding: LinearEncoding,\n depthBuffer: true\n });\n const cubeCamera = new CubeCamera(0.1, 100, cubeTarget);\n const generatedEnvironmentMap = cubeCamera.renderTarget.texture;\n generatedEnvironmentMap.name = name;\n\n const outputEncoding = renderer.outputEncoding;\n const toneMapping = renderer.toneMapping;\n renderer.toneMapping = NoToneMapping;\n renderer.outputEncoding = LinearEncoding;\n\n cubeCamera.update(renderer, scene);\n\n this.blurCubemap(cubeTarget, GENERATED_SIGMA);\n\n renderer.toneMapping = toneMapping;\n renderer.outputEncoding = outputEncoding;\n\n return generatedEnvironmentMap;\n }\n\n /**\n * Loads a dynamically generated environment map.\n */\n private async loadGeneratedEnvironmentMap(): Promise {\n if (this.generatedEnvironmentMap == null) {\n this.generatedEnvironmentMap =\n this.GenerateEnvironmentMap(new EnvironmentScene(), 'legacy');\n }\n return this.generatedEnvironmentMap;\n }\n\n /**\n * Loads a dynamically generated environment map, designed to be neutral and\n * color-preserving. Shows less contrast around the different sides of the\n * object.\n */\n private async loadGeneratedEnvironmentMapAlt(): Promise {\n if (this.generatedEnvironmentMapAlt == null) {\n this.generatedEnvironmentMapAlt =\n this.GenerateEnvironmentMap(new EnvironmentSceneAlt(), 'neutral');\n }\n return this.generatedEnvironmentMapAlt;\n }\n\n private blurCubemap(cubeTarget: WebGLCubeRenderTarget, sigma: number) {\n if (this.blurMaterial == null) {\n this.blurMaterial = this.getBlurShader(MAX_SAMPLES);\n const box = new BoxGeometry();\n const blurMesh = new Mesh(box, this.blurMaterial!);\n this.blurScene = new Scene();\n this.blurScene.add(blurMesh);\n }\n const tempTarget = cubeTarget.clone();\n this.halfblur(cubeTarget, tempTarget, sigma, 'latitudinal');\n this.halfblur(tempTarget, cubeTarget, sigma, 'longitudinal');\n // Disposing this target after we're done with it somehow corrupts Safari's\n // whole graphics driver. It's random, but occurs more frequently on\n // lower-powered GPUs (macbooks with intel graphics, older iPhones). It goes\n // beyond just messing up the PMREM, as it also occasionally causes\n // visible corruption on the canvas and even on the rest of the page.\n /** tempTarget.dispose(); */\n }\n\n private halfblur(\n targetIn: WebGLCubeRenderTarget, targetOut: WebGLCubeRenderTarget,\n sigmaRadians: number, direction: 'latitudinal'|'longitudinal') {\n // Number of standard deviations at which to cut off the discrete\n // approximation.\n const STANDARD_DEVIATIONS = 3;\n\n const pixels = targetIn.width;\n const radiansPerPixel = isFinite(sigmaRadians) ?\n Math.PI / (2 * pixels) :\n 2 * Math.PI / (2 * MAX_SAMPLES - 1);\n const sigmaPixels = sigmaRadians / radiansPerPixel;\n const samples = isFinite(sigmaRadians) ?\n 1 + Math.floor(STANDARD_DEVIATIONS * sigmaPixels) :\n MAX_SAMPLES;\n\n if (samples > MAX_SAMPLES) {\n console.warn(`sigmaRadians, ${\n sigmaRadians}, is too large and will clip, as it requested ${\n samples} samples when the maximum is set to ${MAX_SAMPLES}`);\n }\n\n const weights = [];\n let sum = 0;\n\n for (let i = 0; i < MAX_SAMPLES; ++i) {\n const x = i / sigmaPixels;\n const weight = Math.exp(-x * x / 2);\n weights.push(weight);\n\n if (i == 0) {\n sum += weight;\n\n } else if (i < samples) {\n sum += 2 * weight;\n }\n }\n\n for (let i = 0; i < weights.length; i++) {\n weights[i] = weights[i] / sum;\n }\n\n const blurUniforms = this.blurMaterial!.uniforms;\n blurUniforms['envMap'].value = targetIn.texture;\n blurUniforms['samples'].value = samples;\n blurUniforms['weights'].value = weights;\n blurUniforms['latitudinal'].value = direction === 'latitudinal';\n blurUniforms['dTheta'].value = radiansPerPixel;\n\n const cubeCamera = new CubeCamera(0.1, 100, targetOut);\n cubeCamera.update(this.threeRenderer, this.blurScene!);\n }\n\n private getBlurShader(maxSamples: number) {\n const weights = new Float32Array(maxSamples);\n const poleAxis = new Vector3(0, 1, 0);\n const shaderMaterial = new ShaderMaterial({\n\n name: 'SphericalGaussianBlur',\n\n defines: {'n': maxSamples},\n\n uniforms: {\n 'envMap': {value: null},\n 'samples': {value: 1},\n 'weights': {value: weights},\n 'latitudinal': {value: false},\n 'dTheta': {value: 0},\n 'poleAxis': {value: poleAxis}\n },\n\n vertexShader: /* glsl */ `\n \n varying vec3 vOutputDirection;\n \n void main() {\n \n vOutputDirection = vec3( position );\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n \n }\n `,\n\n fragmentShader: /* glsl */ `\n varying vec3 vOutputDirection;\n \n uniform samplerCube envMap;\n uniform int samples;\n uniform float weights[ n ];\n uniform bool latitudinal;\n uniform float dTheta;\n uniform vec3 poleAxis;\n \n vec3 getSample( float theta, vec3 axis ) {\n \n float cosTheta = cos( theta );\n // Rodrigues' axis-angle rotation\n vec3 sampleDirection = vOutputDirection * cosTheta\n + cross( axis, vOutputDirection ) * sin( theta )\n + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n \n return vec3( textureCube( envMap, sampleDirection ) );\n \n }\n \n void main() {\n \n vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n \n if ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n \n axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n \n }\n \n axis = normalize( axis );\n \n gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n \n for ( int i = 1; i < n; i++ ) {\n \n if ( i >= samples ) {\n \n break;\n \n }\n \n float theta = dTheta * float( i );\n gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n gl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n \n }\n }\n `,\n\n blending: NoBlending,\n depthTest: false,\n depthWrite: false,\n side: BackSide\n\n });\n\n return shaderMaterial;\n }\n\n async dispose() {\n for (const [, promise] of this.skyboxCache) {\n const skybox = await promise;\n skybox.dispose();\n }\n if (this.generatedEnvironmentMap != null) {\n (await this.generatedEnvironmentMap).dispose();\n this.generatedEnvironmentMap = null;\n }\n if (this.generatedEnvironmentMapAlt != null) {\n (await this.generatedEnvironmentMapAlt).dispose();\n this.generatedEnvironmentMapAlt = null;\n }\n if (this.blurMaterial != null) {\n this.blurMaterial.dispose();\n }\n }\n}\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ACESFilmicToneMapping, Event, EventDispatcher, sRGBEncoding, Vector2, WebGLRenderer} from 'three';\n\nimport {$updateEnvironment} from '../features/environment.js';\nimport {ModelViewerGlobalConfig} from '../features/loading.js';\nimport ModelViewerElementBase, {$canvas, $tick, $updateSize} from '../model-viewer-base.js';\nimport {clamp, isDebugMode, resolveDpr} from '../utilities.js';\n\nimport {ARRenderer} from './ARRenderer.js';\nimport {CachingGLTFLoader} from './CachingGLTFLoader.js';\nimport {Debugger} from './Debugger.js';\nimport {ModelViewerGLTFInstance} from './gltf-instance/ModelViewerGLTFInstance.js';\nimport {ModelScene} from './ModelScene.js';\nimport TextureUtils from './TextureUtils.js';\n\nexport interface RendererOptions {\n powerPreference: string;\n debug?: boolean;\n}\n\nexport interface ContextLostEvent extends Event {\n type: 'contextlost';\n sourceEvent: WebGLContextEvent;\n}\n\n// Between 0 and 1: larger means the average responds faster and is less smooth.\nconst DURATION_DECAY = 0.2;\nconst LOW_FRAME_DURATION_MS = 40;\nconst HIGH_FRAME_DURATION_MS = 60;\nconst MAX_AVG_CHANGE_MS = 5;\nconst SCALE_STEPS = [1, 0.79, 0.62, 0.5, 0.4, 0.31, 0.25];\nconst DEFAULT_LAST_STEP = 3;\n\nexport const DEFAULT_POWER_PREFERENCE: string = 'high-performance';\n\n/**\n * Registers canvases with Canvas2DRenderingContexts and renders them\n * all in the same WebGLRenderingContext, spitting out textures to apply\n * to the canvases. Creates a fullscreen WebGL canvas that is not added\n * to the DOM, and on each frame, renders each registered canvas on a portion\n * of the WebGL canvas, and applies the texture on the registered canvas.\n *\n * In the future, can use ImageBitmapRenderingContext instead of\n * Canvas2DRenderingContext if supported for cheaper transferring of\n * the texture.\n */\nexport class Renderer extends EventDispatcher {\n private static _singleton = new Renderer({\n powerPreference:\n (((self as any).ModelViewerElement || {}) as ModelViewerGlobalConfig)\n .powerPreference ||\n DEFAULT_POWER_PREFERENCE,\n debug: isDebugMode()\n });\n\n static get singleton() {\n return this._singleton;\n }\n\n static resetSingleton() {\n const elements = this._singleton.dispose();\n for (const element of elements) {\n element.disconnectedCallback();\n }\n\n this._singleton = new Renderer({\n powerPreference:\n (((self as any).ModelViewerElement || {}) as ModelViewerGlobalConfig)\n .powerPreference ||\n DEFAULT_POWER_PREFERENCE,\n debug: isDebugMode()\n });\n\n for (const element of elements) {\n element.connectedCallback();\n }\n }\n\n public threeRenderer!: WebGLRenderer;\n public canvas3D: HTMLCanvasElement;\n public textureUtils: TextureUtils|null;\n public arRenderer: ARRenderer;\n public loader = new CachingGLTFLoader(ModelViewerGLTFInstance);\n public width = 0;\n public height = 0;\n public dpr = 1;\n\n protected debugger: Debugger|null = null;\n private scenes: Set = new Set();\n private multipleScenesVisible = false;\n private lastTick = performance.now();\n private renderedLastFrame = false;\n private scaleStep = 0;\n private lastStep = DEFAULT_LAST_STEP;\n private avgFrameDuration =\n (HIGH_FRAME_DURATION_MS + LOW_FRAME_DURATION_MS) / 2;\n\n get canRender() {\n return this.threeRenderer != null;\n }\n\n get scaleFactor() {\n return SCALE_STEPS[this.scaleStep];\n }\n\n set minScale(scale: number) {\n let i = 1;\n while (i < SCALE_STEPS.length) {\n if (SCALE_STEPS[i] < scale) {\n break;\n }\n ++i;\n }\n this.lastStep = i - 1;\n }\n\n constructor(options: RendererOptions) {\n super();\n\n this.dpr = resolveDpr();\n\n this.canvas3D = document.createElement('canvas');\n this.canvas3D.id = 'webgl-canvas';\n this.canvas3D.classList.add('show');\n\n try {\n this.threeRenderer = new WebGLRenderer({\n canvas: this.canvas3D,\n alpha: true,\n antialias: true,\n powerPreference: options.powerPreference as WebGLPowerPreference,\n preserveDrawingBuffer: true\n });\n this.threeRenderer.autoClear = true;\n this.threeRenderer.outputEncoding = sRGBEncoding;\n this.threeRenderer.physicallyCorrectLights = true;\n this.threeRenderer.setPixelRatio(1); // handle pixel ratio externally\n\n this.debugger = !!options.debug ? new Debugger(this) : null;\n this.threeRenderer.debug = {checkShaderErrors: !!this.debugger};\n\n // ACESFilmicToneMapping appears to be the most \"saturated\",\n // and similar to Filament's gltf-viewer.\n this.threeRenderer.toneMapping = ACESFilmicToneMapping;\n } catch (error) {\n console.warn(error);\n }\n\n this.arRenderer = new ARRenderer(this);\n this.textureUtils =\n this.canRender ? new TextureUtils(this.threeRenderer) : null;\n CachingGLTFLoader.initializeKTX2Loader(this.threeRenderer);\n\n this.canvas3D.addEventListener('webglcontextlost', this.onWebGLContextLost);\n this.canvas3D.addEventListener(\n 'webglcontextrestored', this.onWebGLContextRestored);\n\n this.updateRendererSize();\n }\n\n registerScene(scene: ModelScene) {\n this.scenes.add(scene);\n\n scene.forceRescale();\n\n const size = new Vector2();\n this.threeRenderer.getSize(size);\n scene.canvas.width = size.x;\n scene.canvas.height = size.y;\n\n if (this.canRender && this.scenes.size > 0) {\n this.threeRenderer.setAnimationLoop(\n (time: number, frame?: any) => this.render(time, frame));\n }\n\n if (this.debugger != null) {\n this.debugger.addScene(scene);\n }\n }\n\n unregisterScene(scene: ModelScene) {\n this.scenes.delete(scene);\n\n if (this.canvas3D.parentElement === scene.canvas.parentElement) {\n scene.canvas.parentElement!.removeChild(this.canvas3D);\n }\n\n if (this.canRender && this.scenes.size === 0) {\n this.threeRenderer.setAnimationLoop(null);\n }\n\n if (this.debugger != null) {\n this.debugger.removeScene(scene);\n }\n }\n\n displayCanvas(scene: ModelScene): HTMLCanvasElement {\n return this.multipleScenesVisible ? scene.element[$canvas] : this.canvas3D;\n }\n\n /**\n * The function enables an optimization, where when there is only a single\n * element, we can use the renderer's 3D canvas directly for\n * display. Otherwise we need to use the element's 2D canvas and copy the\n * renderer's result into it.\n */\n private countVisibleScenes() {\n const {canvas3D} = this;\n let visibleScenes = 0;\n let canvas3DScene = null;\n for (const scene of this.scenes) {\n const {element} = scene;\n if (element.modelIsVisible && scene.externalRenderer == null) {\n ++visibleScenes;\n }\n if (canvas3D.parentElement === scene.canvas.parentElement) {\n canvas3DScene = scene;\n }\n }\n const multipleScenesVisible = visibleScenes > 1;\n\n if (canvas3DScene != null) {\n const newlyMultiple =\n multipleScenesVisible && !this.multipleScenesVisible;\n const disappearing = !canvas3DScene.element.modelIsVisible;\n if (newlyMultiple || disappearing) {\n const {width, height} = this.sceneSize(canvas3DScene);\n this.copyPixels(canvas3DScene, width, height);\n canvas3D.parentElement!.removeChild(canvas3D);\n }\n }\n this.multipleScenesVisible = multipleScenesVisible;\n }\n\n /**\n * Updates the renderer's size based on the largest scene and any changes to\n * device pixel ratio.\n */\n private updateRendererSize() {\n const dpr = resolveDpr();\n if (dpr !== this.dpr) {\n // If the device pixel ratio has changed due to page zoom, elements\n // specified by % width do not fire a resize event even though their CSS\n // pixel dimensions change, so we force them to update their size here.\n for (const scene of this.scenes) {\n const {element} = scene;\n element[$updateSize](element.getBoundingClientRect());\n }\n }\n\n // Make the renderer the size of the largest scene\n let width = 0;\n let height = 0;\n for (const scene of this.scenes) {\n width = Math.max(width, scene.width);\n height = Math.max(height, scene.height);\n }\n\n if (width === this.width && height === this.height && dpr === this.dpr) {\n return;\n }\n this.width = width;\n this.height = height;\n this.dpr = dpr;\n width = Math.ceil(width * dpr);\n height = Math.ceil(height * dpr);\n\n if (this.canRender) {\n this.threeRenderer.setSize(width, height, false);\n }\n\n // Each scene's canvas must match the renderer size. In general they can be\n // larger than the element that contains them, but the overflow is hidden\n // and only the portion that is shown is copied over.\n for (const scene of this.scenes) {\n const {canvas} = scene;\n canvas.width = width;\n canvas.height = height;\n scene.forceRescale();\n }\n }\n\n private updateRendererScale(delta: number) {\n const scaleStep = this.scaleStep;\n\n this.avgFrameDuration += clamp(\n DURATION_DECAY * (delta - this.avgFrameDuration),\n -MAX_AVG_CHANGE_MS,\n MAX_AVG_CHANGE_MS);\n\n if (this.avgFrameDuration > HIGH_FRAME_DURATION_MS) {\n ++this.scaleStep;\n } else if (\n this.avgFrameDuration < LOW_FRAME_DURATION_MS && this.scaleStep > 0) {\n --this.scaleStep;\n }\n this.scaleStep = Math.min(this.scaleStep, this.lastStep);\n\n if (scaleStep !== this.scaleStep) {\n this.avgFrameDuration =\n (HIGH_FRAME_DURATION_MS + LOW_FRAME_DURATION_MS) / 2;\n }\n }\n\n private shouldRender(scene: ModelScene): boolean {\n if (!scene.shouldRender()) {\n // The first frame we stop rendering the scene (because it stops moving),\n // trigger one extra render at full scale.\n if (scene.scaleStep != 0) {\n scene.scaleStep = 0;\n this.rescaleCanvas(scene);\n } else {\n return false;\n }\n } else if (scene.scaleStep != this.scaleStep) {\n // Update render scale\n scene.scaleStep = this.scaleStep;\n this.rescaleCanvas(scene);\n }\n return true;\n }\n\n private rescaleCanvas(scene: ModelScene) {\n const scale = SCALE_STEPS[scene.scaleStep];\n const width = Math.ceil(this.width / scale);\n const height = Math.ceil(this.height / scale);\n\n const {style} = scene.canvas;\n style.width = `${width}px`;\n style.height = `${height}px`;\n this.canvas3D.style.width = `${width}px`;\n this.canvas3D.style.height = `${height}px`;\n\n const renderedDpr = this.dpr * scale;\n const reason = scale < 1 ? 'GPU throttling' :\n this.dpr !== window.devicePixelRatio ? 'No meta viewport tag' :\n '';\n scene.element.dispatchEvent(new CustomEvent('render-scale', {\n detail: {\n reportedDpr: window.devicePixelRatio,\n renderedDpr: renderedDpr,\n minimumDpr: this.dpr * SCALE_STEPS[this.lastStep],\n pixelWidth: Math.ceil(scene.width * renderedDpr),\n pixelHeight: Math.ceil(scene.height * renderedDpr),\n reason: reason\n }\n }));\n }\n\n private sceneSize(scene: ModelScene) {\n const {dpr} = this;\n const scaleFactor = SCALE_STEPS[scene.scaleStep];\n // We avoid using the Three.js PixelRatio and handle it ourselves here so\n // that we can do proper rounding and avoid white boundary pixels.\n const width = Math.min(\n Math.ceil(scene.width * scaleFactor * dpr), this.canvas3D.width);\n const height = Math.min(\n Math.ceil(scene.height * scaleFactor * dpr), this.canvas3D.height);\n return {width, height};\n }\n\n private copyPixels(scene: ModelScene, width: number, height: number) {\n const context2D = scene.context;\n if (context2D == null) {\n console.log('could not acquire 2d context');\n return;\n }\n context2D.clearRect(0, 0, width, height);\n context2D.drawImage(\n this.canvas3D, 0, 0, width, height, 0, 0, width, height);\n scene.canvas.classList.add('show');\n }\n\n /**\n * Returns an array version of this.scenes where the non-visible ones are\n * first. This allows eager scenes to be rendered before they are visible,\n * without needing the multi-canvas render path.\n */\n private orderedScenes(): Array {\n const scenes = [];\n for (const visible of [false, true]) {\n for (const scene of this.scenes) {\n if (scene.element.modelIsVisible === visible) {\n scenes.push(scene);\n }\n }\n }\n return scenes;\n }\n\n get isPresenting(): boolean {\n return this.arRenderer.isPresenting;\n }\n\n /**\n * This method takes care of updating the element and renderer state based on\n * the time that has passed since the last rendered frame.\n */\n preRender(scene: ModelScene, t: number, delta: number) {\n const {element, exposure} = scene;\n\n element[$tick](t, delta);\n\n const exposureIsNumber =\n typeof exposure === 'number' && !Number.isNaN(exposure);\n this.threeRenderer.toneMappingExposure = exposureIsNumber ? exposure : 1.0;\n }\n\n render(t: number, frame?: XRFrame) {\n if (frame != null) {\n this.arRenderer.onWebXRFrame(t, frame);\n return;\n }\n\n const delta = t - this.lastTick;\n this.lastTick = t;\n\n if (!this.canRender || this.isPresenting) {\n return;\n }\n\n this.countVisibleScenes();\n this.updateRendererSize();\n if (this.renderedLastFrame) {\n this.updateRendererScale(delta);\n this.renderedLastFrame = false;\n }\n\n const {canvas3D} = this;\n\n for (const scene of this.orderedScenes()) {\n const {element} = scene;\n if (!element.loaded ||\n (!element.modelIsVisible && scene.renderCount > 0)) {\n continue;\n }\n\n this.preRender(scene, t, delta);\n\n if (!this.shouldRender(scene)) {\n continue;\n }\n\n if (scene.externalRenderer != null) {\n const camera = scene.getCamera();\n camera.updateMatrix();\n const {matrix, projectionMatrix} = camera;\n const viewMatrix = matrix.elements.slice();\n const target = scene.getTarget();\n viewMatrix[12] += target.x;\n viewMatrix[13] += target.y;\n viewMatrix[14] += target.z;\n\n scene.externalRenderer.render({\n viewMatrix: viewMatrix,\n projectionMatrix: projectionMatrix.elements\n });\n continue;\n }\n\n if (!element.modelIsVisible && !this.multipleScenesVisible) {\n // Here we are pre-rendering on the visible canvas, so we must mark the\n // visible scene dirty to ensure it overwrites us.\n for (const visibleScene of this.scenes) {\n if (visibleScene.element.modelIsVisible) {\n visibleScene.queueRender();\n }\n }\n }\n\n const {width, height} = this.sceneSize(scene);\n\n scene.renderShadow(this.threeRenderer);\n\n // Need to set the render target in order to prevent\n // clearing the depth from a different buffer\n this.threeRenderer.setRenderTarget(null);\n this.threeRenderer.setViewport(\n 0, Math.ceil(this.height * this.dpr) - height, width, height);\n this.threeRenderer.render(scene, scene.camera);\n\n if (this.multipleScenesVisible || scene.renderCount === 0) {\n this.copyPixels(scene, width, height);\n } else {\n if (canvas3D.parentElement !== scene.canvas.parentElement) {\n scene.canvas.parentElement!.appendChild(canvas3D);\n scene.canvas.classList.remove('show');\n }\n }\n\n scene.hasRendered();\n ++scene.renderCount;\n this.renderedLastFrame = true;\n }\n }\n\n dispose(): Array {\n if (this.textureUtils != null) {\n this.textureUtils.dispose();\n }\n\n if (this.threeRenderer != null) {\n this.threeRenderer.dispose();\n }\n\n this.textureUtils = null;\n (this as any).threeRenderer = null;\n\n const elements = [];\n for (const scene of this.scenes) {\n elements.push(scene.element);\n }\n\n this.canvas3D.removeEventListener(\n 'webglcontextlost', this.onWebGLContextLost);\n this.canvas3D.removeEventListener(\n 'webglcontextrestored', this.onWebGLContextRestored);\n\n return elements;\n }\n\n onWebGLContextLost = (event: Event) => {\n this.dispatchEvent(\n {type: 'contextlost', sourceEvent: event} as ContextLostEvent);\n };\n\n onWebGLContextRestored = () => {\n this.textureUtils?.dispose();\n this.textureUtils = new TextureUtils(this.threeRenderer);\n for (const scene of this.scenes) {\n (scene.element as any)[$updateEnvironment]();\n }\n };\n}\n","/* @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Material, Object3D, Texture} from 'three';\n\nimport {GLTFElement} from '../../three-components/gltf-instance/gltf-defaulted.js';\n\n\n\nexport const $correlatedObjects = Symbol('correlatedObjects');\nexport const $sourceObject = Symbol('sourceObject');\nexport const $onUpdate = Symbol('onUpdate');\n\ntype CorrelatedObjects = Set|Set|Set;\n\n/**\n * A SerializableThreeDOMElement is the common primitive of all scene graph\n * elements that have been facaded in the host execution context. It adds\n * a common interface to these elements in support of convenient\n * serializability.\n */\nexport class ThreeDOMElement {\n readonly[$onUpdate]: () => void;\n // The canonical GLTF or GLTFElement represented by this facade.\n readonly[$sourceObject]: GLTFElement;\n // The backing Three.js scene graph construct for this element.\n [$correlatedObjects]: CorrelatedObjects|null;\n\n constructor(\n onUpdate: () => void, element: GLTFElement,\n correlatedObjects: CorrelatedObjects|null = null) {\n this[$onUpdate] = onUpdate;\n this[$sourceObject] = element;\n this[$correlatedObjects] = correlatedObjects;\n }\n}\n","import {TextureFilter, Wrapping} from 'three';\n\nexport type RGB = [number, number, number];\n\nexport type RGBA = [number, number, number, number];\n\nexport type Quaternion = [number, number, number, number];\n\nexport type Vector3 = [number, number, number];\n\nexport type Matrix4 = [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n];\n\nexport type Extras = any;\n\n// TODO: Document known extensions and update this type\nexport interface ExtensionDictionary {\n [index: string]: any;\n}\n\nexport type VariantMapping = {\n material: number; variants: Array;\n}\n\nexport type VariantMappings = Array;\n\nexport type Variants = Array<{name: string}>;\n\nexport interface PerspectiveCameraIntrinsics {\n aspectRatio?: number;\n yfov: number;\n zfar: number;\n znear: number;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport interface OrthographicCameraIntrinsics {\n xmag: number;\n ymag: number;\n zfar: number;\n znear: number;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport type CameraType = 'perspective'|'orthographic';\n\nexport interface PerspectiveCamera {\n name?: string;\n type: 'perspective';\n perspective?: PerspectiveCameraIntrinsics;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport interface OrthographicCamera {\n name?: string;\n type: 'orthographic';\n orthographic?: OrthographicCamera;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport type Camera = PerspectiveCamera|OrthographicCamera;\n\nexport enum Filter {\n Nearest = 9728,\n Linear = 9729,\n NearestMipmapNearest = 9984,\n LinearMipmapNearest = 9985,\n NearestMipmapLinear = 9986,\n LinearMipmapLinear = 9987,\n}\n\nexport type NearestFilter = Filter.Nearest;\nexport type LinearFilter = Filter.Linear;\nexport type NearestMipmapNearestFilter = Filter.NearestMipmapNearest;\nexport type LinearMipmapNearestFilter = Filter.LinearMipmapNearest;\nexport type NearestMipmapLinearFilter = Filter.NearestMipmapLinear;\nexport type LinearMipmapLinearFilter = Filter.LinearMipmapLinear;\n\nexport type MagFilter = NearestFilter|LinearFilter|TextureFilter;\nexport type MinFilter = NearestFilter|LinearFilter|NearestMipmapNearestFilter|\n LinearMipmapNearestFilter|NearestMipmapLinearFilter|\n LinearMipmapLinearFilter|TextureFilter;\n\nexport enum Wrap {\n ClampToEdge = 33071,\n MirroredRepeat = 33648,\n Repeat = 10497,\n}\n\nexport type ClampToEdgeWrap = Wrap.ClampToEdge;\nexport type MirroredRepeatWrap = Wrap.MirroredRepeat;\nexport type RepeatWrap = Wrap.Repeat;\n\nexport type WrapMode = RepeatWrap|ClampToEdgeWrap|MirroredRepeatWrap|Wrapping;\n\nexport interface Sampler {\n name?: string;\n magFilter?: MagFilter;\n minFilter?: MinFilter;\n wrapS?: WrapMode;\n wrapT?: WrapMode;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport interface Texture {\n name?: string;\n sampler?: number;\n source?: number;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport interface TextureInfo {\n index: number;\n texCoord?: number;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport interface OcclusionTextureInfo extends TextureInfo {\n strength?: number;\n}\n\nexport interface NormalTextureInfo extends TextureInfo {\n scale?: number;\n}\n\nexport interface PBRMetallicRoughness {\n baseColorFactor?: RGBA;\n baseColorTexture?: TextureInfo;\n metallicRoughnessTexture?: TextureInfo;\n metallicFactor?: number;\n roughnessFactor?: number;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport type AlphaMode = 'OPAQUE'|'MASK'|'BLEND';\n\nexport interface Material {\n name?: string;\n doubleSided?: boolean;\n alphaMode?: AlphaMode;\n alphaCutoff?: number;\n emissiveFactor?: RGB;\n pbrMetallicRoughness?: PBRMetallicRoughness;\n normalTexture?: NormalTextureInfo;\n occlusionTexture?: OcclusionTextureInfo;\n emissiveTexture?: TextureInfo;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\nexport interface KHRMaterialsVariants {\n mappings: VariantMapping[];\n}\n\nexport type AttributeDictionary = {\n [index: string]: number;\n};\n\nexport interface Primitive {\n attributes: AttributeDictionary;\n indices?: number;\n material?: number;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport interface Mesh {\n name?: string;\n primitives: Primitive[];\n weights: number[];\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport interface Node {\n name?: string;\n mesh?: number;\n matrix?: Matrix4;\n rotation?: Quaternion;\n scale?: Vector3;\n translation?: Vector3;\n weights?: number[];\n children?: number[];\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport interface Image {\n name?: string;\n uri?: string;\n bufferView?: number;\n mimeType?: string;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport interface Scene {\n name?: string;\n nodes: number[];\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport type AccessorType = 'SCALAR'|'VEC2'|'VEC3'|'VEC4'|'MAT2'|'MAT3'|'MAT4';\n\nexport interface Accessor {\n name?: string;\n bufferView?: number;\n byteOffset?: number;\n componentType: number;\n normalized?: boolean;\n count: number;\n type: AccessorType;\n max?: number;\n min?: number;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n\n // TODO: What is this?\n // @see https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#accessorsparse\n sparse?: any;\n}\n\nexport type ChannelTargetPath = 'rotation'|'scale'|'translation'|'weights';\n\nexport interface ChannelTarget {\n node: number;\n path: ChannelTargetPath;\n}\n\nexport interface Channel {\n sampler: number;\n target: ChannelTarget;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport type AnimationInterpolation = 'LINEAR'|'STEP'|'CUBICSPLINE';\n\nexport interface AnimationSampler {\n input: number;\n interpolation: AnimationInterpolation;\n output: number;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport interface Animation {\n name?: string;\n channels: Channel[];\n samplers: AnimationSampler[];\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport interface Skin {\n inverseBindMatrices?: number;\n skeleton?: number;\n joints: number[];\n name?: string;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport type GLTFElement =\n Scene|Node|Mesh|Material|Image|Texture|TextureInfo|Sampler|\n PBRMetallicRoughness|Accessor|Camera|Animation|AnimationSampler|Skin;\n\nexport interface GLTFElementMap {\n 'scene': Scene;\n 'node': Node;\n 'mesh': Mesh;\n 'material': Material;\n 'image': Image;\n 'texture': Texture;\n 'texture-info': TextureInfo;\n 'sampler': Sampler;\n 'accessor': Accessor;\n 'camera': Camera;\n 'animation': Animation;\n 'animation-sampler': AnimationSampler;\n 'skin': Skin;\n}\n\nexport interface Asset {\n version: '2.0';\n copyright?: string;\n generator?: string;\n minVersion?: string;\n extensions?: ExtensionDictionary;\n extras?: Extras;\n}\n\nexport interface GLTF {\n asset: Asset;\n scene?: number;\n scenes?: Scene[];\n nodes?: Node[];\n materials?: Material[];\n accessors?: Accessor[];\n samplers?: Sampler[];\n images?: Image[];\n textures?: Texture[];\n meshes?: Mesh[];\n cameras?: Camera[];\n animations?: Animation[];\n skins?: Skin[];\n}\n","/* @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Mesh, MeshBasicMaterial, OrthographicCamera, PlaneGeometry, Scene, Texture as ThreeTexture, WebGLRenderTarget} from 'three';\n\nimport {blobCanvas} from '../../model-viewer-base.js';\nimport {Image as GLTFImage} from '../../three-components/gltf-instance/gltf-2.0.js';\nimport {Renderer} from '../../three-components/Renderer.js';\n\nimport {Image as ImageInterface} from './api.js';\nimport {$correlatedObjects, $sourceObject, ThreeDOMElement} from './three-dom-element.js';\n\n\nconst quadMaterial = new MeshBasicMaterial();\nconst quad = new PlaneGeometry(2, 2);\nlet adhocNum = 0;\n\nexport const $threeTexture = Symbol('threeTexture');\nexport const $applyTexture = Symbol('applyTexture');\n\n/**\n * Image facade implementation for Three.js textures\n */\nexport class Image extends ThreeDOMElement implements ImageInterface {\n get[$threeTexture]() {\n console.assert(\n this[$correlatedObjects] != null && this[$correlatedObjects]!.size > 0,\n 'Image correlated object is undefined');\n return this[$correlatedObjects]?.values().next().value as ThreeTexture;\n }\n\n constructor(\n onUpdate: () => void, texture: ThreeTexture|null,\n gltfImage: GLTFImage|null) {\n gltfImage = gltfImage ?? {\n name: (texture && texture.image && texture.image.src) ?\n texture.image.src.split('/').pop() :\n 'adhoc_image',\n uri: (texture && texture.image && texture.image.src) ?\n texture.image.src :\n 'adhoc_image' + adhocNum++\n };\n super(onUpdate, gltfImage, new Set(texture ? [texture] : []));\n }\n\n get name(): string {\n return (this[$sourceObject] as GLTFImage).name || '';\n }\n\n get uri(): string|undefined {\n return (this[$sourceObject] as GLTFImage).uri;\n }\n\n get bufferView(): number|undefined {\n return (this[$sourceObject] as GLTFImage).bufferView;\n }\n\n get type(): 'embedded'|'external' {\n return this.uri != null ? 'external' : 'embedded';\n }\n\n set name(name: string) {\n (this[$sourceObject] as GLTFImage).name = name;\n }\n\n async createThumbnail(width: number, height: number): Promise {\n const scene = new Scene();\n quadMaterial.map = this[$threeTexture];\n const mesh = new Mesh(quad, quadMaterial);\n scene.add(mesh);\n const camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);\n\n const {threeRenderer} = Renderer.singleton;\n const renderTarget = new WebGLRenderTarget(width, height);\n threeRenderer.setRenderTarget(renderTarget);\n threeRenderer.render(scene, camera);\n threeRenderer.setRenderTarget(null);\n\n const buffer = new Uint8Array(width * height * 4);\n threeRenderer.readRenderTargetPixels(\n renderTarget, 0, 0, width, height, buffer);\n\n blobCanvas.width = width;\n blobCanvas.height = height;\n const blobContext = blobCanvas.getContext('2d')!;\n const imageData = blobContext.createImageData(width, height);\n imageData.data.set(buffer);\n blobContext.putImageData(imageData, 0, 0);\n\n return new Promise(async (resolve, reject) => {\n blobCanvas.toBlob(blob => {\n if (!blob) {\n return reject('Failed to capture thumbnail.');\n }\n resolve(URL.createObjectURL(blob));\n }, 'image/png');\n });\n }\n}\n","/* @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Texture as ThreeTexture} from 'three';\n\nimport {Filter, MagFilter, MinFilter, Sampler as GLTFSampler, Wrap, WrapMode} from '../../three-components/gltf-instance/gltf-2.0.js';\nimport {Sampler as DefaultedSampler} from '../../three-components/gltf-instance/gltf-defaulted.js';\n\nimport {Sampler as SamplerInterface} from './api.js';\nimport {$correlatedObjects, $onUpdate, $sourceObject, ThreeDOMElement} from './three-dom-element.js';\n\n\n\nconst isMinFilter = (() => {\n const minFilterValues: Array = [\n Filter.Nearest,\n Filter.Linear,\n Filter.NearestMipmapNearest,\n Filter.LinearMipmapLinear,\n Filter.NearestMipmapLinear,\n Filter.LinearMipmapLinear\n ];\n return (value: unknown): value is MinFilter =>\n minFilterValues.indexOf(value as MinFilter) > -1;\n})();\n\nconst isMagFilter = (() => {\n const magFilterValues: Array = [Filter.Nearest, Filter.Linear];\n return (value: unknown): value is MagFilter =>\n magFilterValues.indexOf(value as MagFilter) > -1;\n})();\n\nconst isWrapMode = (() => {\n const wrapModes: Array =\n [Wrap.ClampToEdge, Wrap.MirroredRepeat, Wrap.Repeat];\n return (value: unknown): value is WrapMode =>\n wrapModes.indexOf(value as WrapMode) > -1;\n})();\n\nconst isValidSamplerValue =

(\n property: P, value: unknown): value is DefaultedSampler[P] => {\n switch (property) {\n case 'minFilter':\n return isMinFilter(value);\n case 'magFilter':\n return isMagFilter(value);\n case 'wrapS':\n case 'wrapT':\n return isWrapMode(value);\n default:\n throw new Error(`Cannot configure property \"${property}\" on Sampler`);\n }\n};\n\nconst $threeTextures = Symbol('threeTextures');\nconst $setProperty = Symbol('setProperty');\nconst $sourceSampler = Symbol('sourceSampler');\n\n/**\n * Sampler facade implementation for Three.js textures\n */\nexport class Sampler extends ThreeDOMElement implements SamplerInterface {\n private get[$threeTextures]() {\n console.assert(\n this[$correlatedObjects] != null && this[$correlatedObjects]!.size > 0,\n 'Sampler correlated object is undefined');\n return this[$correlatedObjects] as Set;\n }\n\n private get[$sourceSampler]() {\n console.assert(this[$sourceObject] != null, 'Sampler source is undefined');\n return (this[$sourceObject] as DefaultedSampler);\n }\n\n constructor(\n onUpdate: () => void, texture: ThreeTexture|null,\n gltfSampler: GLTFSampler|null) {\n gltfSampler = gltfSampler ?? {} as GLTFSampler;\n // These defaults represent a convergence of glTF defaults for wrap mode and\n // Three.js defaults for filters. Per glTF 2.0 spec, a renderer may choose\n // its own defaults for filters.\n // @see https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-sampler\n // @see https://threejs.org/docs/#api/en/textures/Texture\n if (gltfSampler.minFilter == null) {\n gltfSampler.minFilter =\n texture ? texture.minFilter as MinFilter : Filter.LinearMipmapLinear;\n }\n if (gltfSampler.magFilter == null) {\n gltfSampler.magFilter =\n texture ? texture.magFilter as MagFilter : Filter.Linear;\n }\n if (gltfSampler.wrapS == null) {\n gltfSampler.wrapS = texture ? texture.wrapS as WrapMode : Wrap.Repeat;\n }\n if (gltfSampler.wrapT == null) {\n gltfSampler.wrapT = texture ? texture.wrapT as WrapMode : Wrap.Repeat;\n }\n\n super(\n onUpdate, gltfSampler, new Set(texture ? [texture] : []));\n }\n\n get name(): string {\n return (this[$sourceObject] as Sampler).name || '';\n }\n\n get minFilter(): MinFilter {\n return this[$sourceSampler].minFilter;\n }\n\n get magFilter(): MagFilter {\n return this[$sourceSampler].magFilter;\n }\n\n get wrapS(): WrapMode {\n return this[$sourceSampler].wrapS;\n }\n\n get wrapT(): WrapMode {\n return this[$sourceSampler].wrapT;\n }\n\n setMinFilter(filter: MinFilter) {\n this[$setProperty]('minFilter', filter);\n }\n\n setMagFilter(filter: MagFilter) {\n this[$setProperty]('magFilter', filter);\n }\n\n setWrapS(mode: WrapMode) {\n this[$setProperty]('wrapS', mode);\n }\n\n setWrapT(mode: WrapMode) {\n this[$setProperty]('wrapT', mode);\n }\n\n private[$setProperty]

(\n property: P, value: MinFilter|MagFilter|WrapMode) {\n const sampler = this[$sourceSampler];\n if (sampler != null) {\n if (isValidSamplerValue(property, value)) {\n sampler[property] = value;\n\n for (const texture of this[$threeTextures]) {\n (texture[property] as MinFilter | MagFilter | WrapMode) = value;\n texture.needsUpdate = true;\n }\n }\n this[$onUpdate]();\n }\n }\n}\n","/* @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {LinearEncoding, MeshStandardMaterial, sRGBEncoding, Texture as ThreeTexture, TextureEncoding, Vector2} from 'three';\n\nimport {GLTF, TextureInfo as GLTFTextureInfo} from '../../three-components/gltf-instance/gltf-2.0.js';\n\nimport {TextureInfo as TextureInfoInterface} from './api.js';\nimport {$threeTexture} from './image.js';\nimport {Texture} from './texture.js';\n\nconst $texture = Symbol('texture');\nconst $transform = Symbol('transform');\nexport const $materials = Symbol('materials');\nexport const $usage = Symbol('usage');\n\n// Defines what a texture will be used for.\nexport enum TextureUsage {\n Base,\n MetallicRoughness,\n Normal,\n Occlusion,\n Emissive,\n}\n\ninterface TextureTransform {\n rotation: number;\n scale: Vector2;\n offset: Vector2;\n}\n\n/**\n * TextureInfo facade implementation for Three.js materials\n */\nexport class TextureInfo implements TextureInfoInterface {\n private[$texture]: Texture|null = null;\n private[$transform]: TextureTransform = {\n rotation: 0,\n scale: new Vector2(1, 1),\n offset: new Vector2(0, 0)\n };\n\n // Holds a reference to the Three data that backs the material object.\n [$materials]: Set|null;\n\n // Texture usage defines the how the texture is used (ie Normal, Emissive...\n // etc)\n [$usage]: TextureUsage;\n onUpdate: () => void;\n\n constructor(\n onUpdate: () => void, usage: TextureUsage,\n threeTexture: ThreeTexture|null, material: Set,\n gltf: GLTF, gltfTextureInfo: GLTFTextureInfo|null) {\n // Creates image, sampler, and texture if valid texture info is provided.\n if (gltfTextureInfo && threeTexture) {\n const gltfTexture =\n gltf.textures ? gltf.textures[gltfTextureInfo.index] : null;\n const sampler = gltfTexture ?\n (gltf.samplers ? gltf.samplers[gltfTexture.sampler!] : null) :\n null;\n const image = gltfTexture ?\n (gltf.images ? gltf.images[gltfTexture.source!] : null) :\n null;\n\n this[$transform].rotation = threeTexture.rotation;\n this[$transform].scale.copy(threeTexture.repeat);\n this[$transform].offset.copy(threeTexture.offset);\n\n this[$texture] =\n new Texture(onUpdate, threeTexture, gltfTexture, sampler, image);\n }\n\n this.onUpdate = onUpdate;\n this[$materials] = material;\n this[$usage] = usage;\n }\n\n get texture(): Texture|null {\n return this[$texture];\n }\n\n setTexture(texture: Texture|null): void {\n const threeTexture: ThreeTexture|null =\n texture != null ? texture.source[$threeTexture] : null;\n let encoding: TextureEncoding = sRGBEncoding;\n this[$texture] = texture;\n\n if (this[$materials]) {\n for (const material of this[$materials]!) {\n switch (this[$usage]) {\n case TextureUsage.Base:\n material.map = threeTexture;\n break;\n case TextureUsage.MetallicRoughness:\n encoding = LinearEncoding;\n material.metalnessMap = threeTexture;\n material.roughnessMap = threeTexture;\n break;\n case TextureUsage.Normal:\n encoding = LinearEncoding;\n material.normalMap = threeTexture;\n break;\n case TextureUsage.Occlusion:\n encoding = LinearEncoding;\n material.aoMap = threeTexture;\n break;\n case TextureUsage.Emissive:\n material.emissiveMap = threeTexture;\n break;\n default:\n }\n material.needsUpdate = true;\n }\n }\n\n if (threeTexture) {\n // Updates the encoding for the texture, affects all references.\n threeTexture.encoding = encoding;\n threeTexture.rotation = this[$transform].rotation;\n threeTexture.repeat = this[$transform].scale;\n threeTexture.offset = this[$transform].offset;\n }\n this.onUpdate();\n }\n}\n","/* @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Texture as ThreeTexture} from 'three';\n\nimport {Image as GLTFImage, Sampler as GLTFSampler, Texture as GLTFTexture} from '../../three-components/gltf-instance/gltf-2.0.js';\n\nimport {Texture as TextureInterface} from './api.js';\nimport {Image} from './image.js';\nimport {Sampler} from './sampler.js';\nimport {$sourceObject, ThreeDOMElement} from './three-dom-element.js';\n\n\n\nconst $image = Symbol('image');\nconst $sampler = Symbol('sampler');\n\n/**\n * Material facade implementation for Three.js materials\n */\nexport class Texture extends ThreeDOMElement implements TextureInterface {\n private[$image]: Image;\n private[$sampler]: Sampler;\n\n constructor(\n onUpdate: () => void,\n threeTexture: ThreeTexture|null,\n gltfTexture: GLTFTexture|null = null,\n gltfSampler: GLTFSampler|null = null,\n gltfImage: GLTFImage|null = null,\n ) {\n super(\n onUpdate,\n gltfTexture ? gltfTexture : {} as GLTFTexture,\n new Set(threeTexture ? [threeTexture] : []));\n\n this[$sampler] = new Sampler(onUpdate, threeTexture, gltfSampler);\n this[$image] = new Image(onUpdate, threeTexture, gltfImage);\n }\n\n get name(): string {\n return (this[$sourceObject] as any).name || '';\n }\n\n set name(name: string) {\n (this[$sourceObject] as any).name = name;\n }\n\n get sampler(): Sampler {\n return this[$sampler];\n }\n\n get source(): Image {\n return this[$image];\n }\n}\n","/* @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Color, MeshStandardMaterial} from 'three';\n\nimport {GLTF, PBRMetallicRoughness as GLTFPBRMetallicRoughness} from '../../three-components/gltf-instance/gltf-2.0.js';\nimport {PBRMetallicRoughness as DefaultedPBRMetallicRoughness} from '../../three-components/gltf-instance/gltf-defaulted.js';\n\nimport {PBRMetallicRoughness as PBRMetallicRoughnessInterface, RGBA} from './api.js';\nimport {TextureInfo, TextureUsage} from './texture-info.js';\nimport {$correlatedObjects, $onUpdate, $sourceObject, ThreeDOMElement} from './three-dom-element.js';\n\n\n\nconst $threeMaterials = Symbol('threeMaterials');\nconst $baseColorTexture = Symbol('baseColorTexture');\nconst $metallicRoughnessTexture = Symbol('metallicRoughnessTexture');\n\n/**\n * PBR material properties facade implementation for Three.js materials\n */\nexport class PBRMetallicRoughness extends ThreeDOMElement implements\n PBRMetallicRoughnessInterface {\n private[$baseColorTexture]: TextureInfo;\n private[$metallicRoughnessTexture]: TextureInfo;\n\n private get[$threeMaterials](): Set {\n return this[$correlatedObjects] as Set;\n }\n\n constructor(\n onUpdate: () => void, gltf: GLTF,\n pbrMetallicRoughness: GLTFPBRMetallicRoughness,\n correlatedMaterials: Set) {\n super(onUpdate, pbrMetallicRoughness, correlatedMaterials);\n\n // Assign glTF default values\n if (pbrMetallicRoughness.baseColorFactor == null) {\n pbrMetallicRoughness.baseColorFactor = [1, 1, 1, 1];\n }\n if (pbrMetallicRoughness.roughnessFactor == null) {\n pbrMetallicRoughness.roughnessFactor = 1;\n }\n if (pbrMetallicRoughness.metallicFactor == null) {\n pbrMetallicRoughness.metallicFactor = 1;\n }\n\n const {\n baseColorTexture: gltfBaseColorTexture,\n metallicRoughnessTexture: gltfMetallicRoughnessTexture\n } = pbrMetallicRoughness;\n\n const {map, metalnessMap} = correlatedMaterials.values().next().value;\n\n this[$baseColorTexture] = new TextureInfo(\n onUpdate,\n TextureUsage.Base,\n map,\n correlatedMaterials,\n gltf,\n gltfBaseColorTexture ? gltfBaseColorTexture : null);\n\n this[$metallicRoughnessTexture] = new TextureInfo(\n onUpdate,\n TextureUsage.MetallicRoughness,\n metalnessMap,\n correlatedMaterials,\n gltf,\n gltfMetallicRoughnessTexture ? gltfMetallicRoughnessTexture : null);\n }\n\n\n get baseColorFactor(): RGBA {\n return (this[$sourceObject] as DefaultedPBRMetallicRoughness)\n .baseColorFactor;\n }\n\n get metallicFactor(): number {\n return (this[$sourceObject] as DefaultedPBRMetallicRoughness)\n .metallicFactor;\n }\n\n get roughnessFactor(): number {\n return (this[$sourceObject] as DefaultedPBRMetallicRoughness)\n .roughnessFactor;\n }\n\n get baseColorTexture(): TextureInfo {\n return this[$baseColorTexture];\n }\n\n get metallicRoughnessTexture(): TextureInfo {\n return this[$metallicRoughnessTexture];\n }\n\n setBaseColorFactor(rgba: RGBA|string) {\n const color = new Color();\n if (rgba instanceof Array) {\n color.fromArray(rgba);\n } else {\n color.set(rgba).convertSRGBToLinear();\n }\n for (const material of this[$threeMaterials]) {\n material.color.set(color);\n if (rgba instanceof Array) {\n material.opacity = (rgba)[3];\n } else {\n rgba = [0, 0, 0, material.opacity];\n color.toArray(rgba);\n }\n }\n const pbrMetallicRoughness =\n this[$sourceObject] as DefaultedPBRMetallicRoughness;\n pbrMetallicRoughness.baseColorFactor = rgba as RGBA;\n this[$onUpdate]();\n }\n\n setMetallicFactor(value: number) {\n for (const material of this[$threeMaterials]) {\n material.metalness = value;\n }\n const pbrMetallicRoughness =\n this[$sourceObject] as DefaultedPBRMetallicRoughness;\n pbrMetallicRoughness.metallicFactor = value;\n this[$onUpdate]();\n }\n\n setRoughnessFactor(value: number) {\n for (const material of this[$threeMaterials]) {\n material.roughness = value;\n }\n const pbrMetallicRoughness =\n this[$sourceObject] as DefaultedPBRMetallicRoughness;\n pbrMetallicRoughness.roughnessFactor = value;\n this[$onUpdate]();\n }\n}\n","/* @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Color, DoubleSide, FrontSide, MeshStandardMaterial} from 'three';\n\nimport {AlphaMode, GLTF, Material as GLTFMaterial, RGB} from '../../three-components/gltf-instance/gltf-2.0.js';\nimport {Material as DefaultedMaterial} from '../../three-components/gltf-instance/gltf-defaulted.js';\n\nimport {Material as MaterialInterface} from './api.js';\nimport {LazyLoader, VariantData} from './model.js';\nimport {PBRMetallicRoughness} from './pbr-metallic-roughness.js';\nimport {TextureInfo, TextureUsage} from './texture-info.js';\nimport {$correlatedObjects, $onUpdate, $sourceObject, ThreeDOMElement} from './three-dom-element.js';\n\n\n\nconst $pbrMetallicRoughness = Symbol('pbrMetallicRoughness');\nconst $normalTexture = Symbol('normalTexture');\nconst $occlusionTexture = Symbol('occlusionTexture');\nconst $emissiveTexture = Symbol('emissiveTexture');\nconst $backingThreeMaterial = Symbol('backingThreeMaterial');\nconst $applyAlphaCutoff = Symbol('applyAlphaCutoff');\nexport const $lazyLoadGLTFInfo = Symbol('lazyLoadGLTFInfo');\nconst $initialize = Symbol('initialize');\nexport const $getLoadedMaterial = Symbol('getLoadedMaterial');\nexport const $ensureMaterialIsLoaded = Symbol('ensureMaterialIsLoaded');\nexport const $gltfIndex = Symbol('gltfIndex');\nexport const $setActive = Symbol('setActive');\nexport const $variantIndices = Symbol('variantIndices');\nconst $isActive = Symbol('isActive');\nexport const $variantSet = Symbol('variantSet');\nconst $modelVariants = Symbol('modelVariants');\n\n/**\n * Material facade implementation for Three.js materials\n */\nexport class Material extends ThreeDOMElement implements MaterialInterface {\n private[$pbrMetallicRoughness]!: PBRMetallicRoughness;\n private[$normalTexture]!: TextureInfo;\n private[$occlusionTexture]!: TextureInfo;\n private[$emissiveTexture]!: TextureInfo;\n private[$lazyLoadGLTFInfo]?: LazyLoader;\n private[$gltfIndex]: number;\n private[$isActive]: boolean;\n private[$variantSet] = new Set();\n readonly[$modelVariants]: Map;\n\n get[$backingThreeMaterial](): MeshStandardMaterial {\n return (this[$correlatedObjects] as Set)\n .values()\n .next()\n .value;\n }\n\n constructor(\n onUpdate: () => void, gltf: GLTF, gltfMaterial: GLTFMaterial,\n gltfIndex: number, isActive: boolean,\n modelVariants: Map,\n correlatedMaterials: Set,\n lazyLoadInfo: LazyLoader|undefined = undefined) {\n super(onUpdate, gltfMaterial, correlatedMaterials);\n this[$gltfIndex] = gltfIndex;\n this[$isActive] = isActive;\n this[$modelVariants] = modelVariants;\n\n if (lazyLoadInfo == null) {\n this[$initialize](gltf);\n } else {\n this[$lazyLoadGLTFInfo] = lazyLoadInfo;\n }\n }\n\n private[$initialize](gltf: GLTF): void {\n const onUpdate = this[$onUpdate] as () => void;\n const gltfMaterial = this[$sourceObject] as GLTFMaterial;\n const correlatedMaterials =\n this[$correlatedObjects] as Set;\n\n if (gltfMaterial.extensions &&\n gltfMaterial.extensions['KHR_materials_pbrSpecularGlossiness']) {\n console.warn(`Material ${gltfMaterial.name} uses a deprecated extension\n \"KHR_materials_pbrSpecularGlossiness\", please use\n \"pbrMetallicRoughness\" instead. Specular Glossiness materials are\n currently supported for rendering, but not for our scene-graph API,\n nor for auto-generation of USDZ for Quick Look.`);\n }\n\n if (gltfMaterial.pbrMetallicRoughness == null) {\n gltfMaterial.pbrMetallicRoughness = {};\n }\n this[$pbrMetallicRoughness] = new PBRMetallicRoughness(\n onUpdate, gltf, gltfMaterial.pbrMetallicRoughness, correlatedMaterials);\n\n if (gltfMaterial.emissiveFactor == null) {\n gltfMaterial.emissiveFactor = [0, 0, 0];\n }\n\n if (gltfMaterial.doubleSided == null) {\n gltfMaterial.doubleSided = false;\n }\n\n if (gltfMaterial.alphaMode == null) {\n gltfMaterial.alphaMode = 'OPAQUE';\n }\n\n if (gltfMaterial.alphaCutoff == null) {\n gltfMaterial.alphaCutoff = 0.5;\n }\n\n const {\n normalTexture: gltfNormalTexture,\n occlusionTexture: gltfOcclusionTexture,\n emissiveTexture: gltfEmissiveTexture\n } = gltfMaterial;\n\n const {normalMap, aoMap, emissiveMap} =\n correlatedMaterials.values().next().value;\n\n this[$normalTexture] = new TextureInfo(\n onUpdate,\n TextureUsage.Normal,\n normalMap,\n correlatedMaterials,\n gltf,\n gltfNormalTexture ? gltfNormalTexture : null,\n );\n\n this[$occlusionTexture] = new TextureInfo(\n onUpdate,\n TextureUsage.Occlusion,\n aoMap,\n correlatedMaterials,\n gltf,\n gltfOcclusionTexture ? gltfOcclusionTexture : null,\n );\n\n this[$emissiveTexture] = new TextureInfo(\n onUpdate,\n TextureUsage.Emissive,\n emissiveMap,\n correlatedMaterials,\n gltf,\n gltfEmissiveTexture ? gltfEmissiveTexture : null,\n );\n }\n\n async[$getLoadedMaterial](): Promise {\n if (this[$lazyLoadGLTFInfo] != null) {\n const {set, material} = await this[$lazyLoadGLTFInfo]!.doLazyLoad();\n\n // Fills in the missing data.\n this[$correlatedObjects] = set as Set;\n\n this[$initialize](this[$lazyLoadGLTFInfo]!.gltf);\n // Releases lazy load info.\n this[$lazyLoadGLTFInfo] = undefined;\n // Redefines the method as a noop method.\n this.ensureLoaded = async () => {};\n return material as MeshStandardMaterial;\n }\n return this[$correlatedObjects]!.values().next().value;\n }\n\n [$ensureMaterialIsLoaded]() {\n if (this[$lazyLoadGLTFInfo] == null) {\n return;\n }\n throw new Error(`Material \"${this.name}\" has not been loaded, call 'await\n myMaterial.ensureLoaded()' before using an unloaded material.`);\n }\n\n async ensureLoaded() {\n await this[$getLoadedMaterial]();\n }\n\n get isLoaded() {\n return this[$lazyLoadGLTFInfo] == null;\n }\n\n get isActive(): boolean {\n return this[$isActive];\n }\n\n [$setActive](isActive: boolean) {\n this[$isActive] = isActive;\n }\n\n get name(): string {\n return (this[$sourceObject] as Material).name;\n }\n\n set name(name: string) {\n const sourceMaterial = (this[$sourceObject] as Material);\n if (sourceMaterial != null) {\n sourceMaterial.name = name;\n }\n\n if (this[$correlatedObjects] != null) {\n for (const threeMaterial of this[$correlatedObjects]!) {\n threeMaterial.name = name;\n }\n }\n }\n\n get pbrMetallicRoughness(): PBRMetallicRoughness {\n this[$ensureMaterialIsLoaded]();\n return this[$pbrMetallicRoughness];\n }\n\n get normalTexture(): TextureInfo {\n this[$ensureMaterialIsLoaded]();\n return this[$normalTexture];\n }\n\n get occlusionTexture(): TextureInfo {\n this[$ensureMaterialIsLoaded]();\n return this[$occlusionTexture];\n }\n\n get emissiveTexture(): TextureInfo {\n this[$ensureMaterialIsLoaded]();\n return this[$emissiveTexture];\n }\n\n get emissiveFactor(): RGB {\n this[$ensureMaterialIsLoaded]();\n return (this[$sourceObject] as DefaultedMaterial).emissiveFactor;\n }\n\n get index(): number {\n return this[$gltfIndex];\n }\n\n [$variantIndices]() {\n return this[$variantSet];\n }\n\n hasVariant(name: string): boolean {\n const variantData = this[$modelVariants].get(name);\n return variantData != null && this[$variantSet].has(variantData.index);\n }\n\n setEmissiveFactor(rgb: RGB|string) {\n this[$ensureMaterialIsLoaded]();\n const color = new Color();\n if (rgb instanceof Array) {\n color.fromArray(rgb);\n } else {\n color.set(rgb).convertSRGBToLinear();\n }\n for (const material of this[$correlatedObjects] as\n Set) {\n material.emissive.set(color);\n }\n (this[$sourceObject] as DefaultedMaterial).emissiveFactor =\n color.toArray() as [number, number, number];\n this[$onUpdate]();\n }\n\n [$applyAlphaCutoff]() {\n this[$ensureMaterialIsLoaded]();\n const gltfMaterial = this[$sourceObject] as DefaultedMaterial;\n for (const material of this[$correlatedObjects] as\n Set) {\n if ((this[$sourceObject] as DefaultedMaterial).alphaMode === 'MASK') {\n material.alphaTest = gltfMaterial.alphaCutoff;\n } else {\n (material.alphaTest as number | undefined) = undefined;\n }\n\n material.needsUpdate = true;\n }\n }\n\n setAlphaCutoff(cutoff: number): void {\n this[$ensureMaterialIsLoaded]();\n (this[$sourceObject] as DefaultedMaterial).alphaCutoff = cutoff;\n this[$applyAlphaCutoff]();\n this[$onUpdate]();\n }\n\n getAlphaCutoff(): number {\n this[$ensureMaterialIsLoaded]();\n return (this[$sourceObject] as DefaultedMaterial).alphaCutoff;\n }\n\n setDoubleSided(doubleSided: boolean): void {\n this[$ensureMaterialIsLoaded]();\n for (const material of this[$correlatedObjects] as\n Set) {\n // When double-sided is disabled gltf spec dictates that Back-Face culling\n // must be disabled, in three.js parlance that would mean FrontSide\n // rendering only.\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#double-sided\n material.side = doubleSided ? DoubleSide : FrontSide;\n material.needsUpdate = true;\n }\n (this[$sourceObject] as DefaultedMaterial).doubleSided = doubleSided;\n this[$onUpdate]();\n }\n\n getDoubleSided(): boolean {\n this[$ensureMaterialIsLoaded]();\n return (this[$sourceObject] as DefaultedMaterial).doubleSided;\n }\n\n setAlphaMode(alphaMode: AlphaMode): void {\n this[$ensureMaterialIsLoaded]();\n const enableTransparency =\n (material: MeshStandardMaterial, enabled: boolean): void => {\n material.transparent = enabled;\n material.depthWrite = !enabled;\n };\n\n (this[$sourceObject] as DefaultedMaterial).alphaMode = alphaMode;\n\n for (const material of this[$correlatedObjects] as\n Set) {\n enableTransparency(material, alphaMode === 'BLEND');\n this[$applyAlphaCutoff]();\n material.needsUpdate = true;\n }\n\n this[$onUpdate]();\n }\n\n getAlphaMode(): AlphaMode {\n this[$ensureMaterialIsLoaded]();\n return (this[$sourceObject] as DefaultedMaterial).alphaMode;\n }\n}\n","/* @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Material as ThreeMaterial, Mesh} from 'three';\nimport {GLTFReference} from 'three/examples/jsm/loaders/GLTFLoader.js';\n\nimport {CorrelatedSceneGraph} from '../../../three-components/gltf-instance/correlated-scene-graph.js';\nimport {KHRMaterialsVariants, Primitive} from '../../../three-components/gltf-instance/gltf-2.0.js';\nimport {UserDataVariantMapping} from '../../../three-components/gltf-instance/VariantMaterialLoaderPlugin.js';\nimport {$getLoadedMaterial, $variantIndices, Material} from '../material.js';\nimport {VariantData} from '../model.js';\nimport {$correlatedObjects} from '../three-dom-element.js';\n\n\n\nconst $materials = Symbol('materials');\nconst $variantToMaterialMap = Symbol('variantToMaterialMap');\nconst $modelVariants = Symbol('modelVariants');\nconst $mesh = Symbol('mesh');\nexport const $primitives = Symbol('primitives');\nexport const $loadVariant = Symbol('loadVariant');\nexport const $prepareVariantsForExport = Symbol('prepareVariantsForExport');\nexport const $switchVariant = Symbol('switchVariant');\nexport const $children = Symbol('children');\nexport const $initialMaterialIdx = Symbol('initialMaterialIdx');\nexport const $activeMaterialIdx = Symbol('activeMaterialIdx');\n\n// Defines the base level node methods and data.\nexport class Node {\n name: string = '';\n [$children] = new Array();\n constructor(name: string) {\n this.name = name;\n }\n}\n\n// Represents a primitive in a glTF mesh.\nexport class PrimitiveNode extends Node {\n private[$mesh]: Mesh;\n // Maps glTF material index number to a material that this primitive supports.\n [$materials] = new Map();\n // Maps variant index to material.\n private[$variantToMaterialMap] = new Map();\n private[$initialMaterialIdx] = 0;\n private[$activeMaterialIdx] = 0;\n private[$modelVariants]: Map;\n\n constructor(\n mesh: Mesh, mvMaterials: Material[],\n modelVariants: Map,\n correlatedSceneGraph: CorrelatedSceneGraph) {\n super(mesh.name);\n this[$mesh] = mesh;\n const {gltf, threeGLTF, threeObjectMap} = correlatedSceneGraph;\n this[$modelVariants] = modelVariants;\n this.mesh.userData.variantData = modelVariants;\n // Captures the primitive's initial material.\n const materialMappings =\n threeObjectMap.get(mesh.material as ThreeMaterial)!;\n if (materialMappings.materials != null) {\n this[$initialMaterialIdx] = this[$activeMaterialIdx] =\n materialMappings.materials;\n } else {\n console.error(\n `Primitive (${mesh.name}) missing initial material reference.`);\n }\n\n // Gets the mesh index from the node.\n const associations =\n (mesh.userData.associations as GLTFReference & {primitives: number}) ||\n {};\n\n if (associations.meshes == null) {\n console.error('Mesh is missing primitive index association');\n return;\n }\n // The gltf mesh array to sample from.\n const meshElementArray = gltf['meshes'] || [];\n // List of primitives under the mesh.\n const gltfPrimitives =\n (meshElementArray[associations.meshes].primitives || []) as Primitive[];\n\n const gltfPrimitive = gltfPrimitives[associations.primitives];\n if (gltfPrimitive == null) {\n console.error('Mesh primitive definition is missing.');\n return;\n }\n\n // Maps the gltfPrimitive default to a material.\n if (gltfPrimitive.material != null) {\n this[$materials].set(\n gltfPrimitive.material, mvMaterials[gltfPrimitive.material]);\n } else {\n const defaultIdx = mvMaterials.findIndex((mat: Material) => {\n return mat.name === 'Default';\n });\n if (defaultIdx >= 0) {\n this[$materials].set(defaultIdx, mvMaterials[defaultIdx]);\n } else {\n console.warn('gltfPrimitive has no material!');\n }\n }\n\n if (gltfPrimitive.extensions &&\n gltfPrimitive.extensions['KHR_materials_variants']) {\n const variantsExtension =\n gltfPrimitive.extensions['KHR_materials_variants'] as\n KHRMaterialsVariants;\n const extensions = threeGLTF.parser.json.extensions;\n const variantNames = extensions['KHR_materials_variants'].variants;\n // Provides definition now that we know there are variants to\n // support.\n for (const mapping of variantsExtension.mappings) {\n const mvMaterial = mvMaterials[mapping.material];\n // Maps variant indices to Materials.\n this[$materials].set(mapping.material, mvMaterial);\n for (const variant of mapping.variants) {\n const {name} = variantNames[variant];\n this[$variantToMaterialMap].set(variant, mvMaterial);\n // Provides variant info for material self lookup.\n mvMaterial[$variantIndices]().add(variant);\n // Updates the models variant data.\n if (!modelVariants.has(name)) {\n modelVariants.set(name, {name, index: variant} as VariantData);\n }\n }\n }\n }\n }\n\n get mesh() {\n return this[$mesh];\n }\n\n async setActiveMaterial(material: number): Promise {\n const mvMaterial = this[$materials].get(material);\n if (mvMaterial != null) {\n this.mesh.material = await mvMaterial[$getLoadedMaterial]();\n this[$activeMaterialIdx] = material;\n }\n return this.mesh.material as ThreeMaterial;\n }\n\n getActiveMaterial(): Material {\n return this[$materials].get(this[$activeMaterialIdx])!;\n }\n\n getMaterial(index: number): Material|undefined {\n return this[$materials].get(index);\n }\n\n async enableVariant(name: string|null): Promise {\n if (name == null) {\n return this.setActiveMaterial(this[$initialMaterialIdx]);\n }\n if (this[$variantToMaterialMap] != null && this[$modelVariants].has(name)) {\n const modelVariants = this[$modelVariants].get(name)!;\n return this.enableVariantHelper(modelVariants.index);\n }\n return null;\n }\n\n private async enableVariantHelper(index: number|\n null): Promise {\n if (this[$variantToMaterialMap] != null && index != null) {\n const material = this[$variantToMaterialMap].get(index);\n if (material != null) {\n return this.setActiveMaterial(material.index);\n }\n }\n return null;\n }\n\n async instantiateVariants() {\n if (this[$variantToMaterialMap] == null) {\n return;\n }\n for (const index of this[$variantToMaterialMap].keys()) {\n const variantMaterial = this.mesh.userData.variantMaterials.get(index) as\n UserDataVariantMapping;\n if (variantMaterial.material != null) {\n continue;\n }\n const threeMaterial = await this.enableVariantHelper(index);\n if (threeMaterial != null) {\n variantMaterial.material = threeMaterial;\n }\n }\n }\n\n get variantInfo() {\n return this[$variantToMaterialMap];\n }\n\n addVariant(materialVariant: Material, variantName: string) {\n if (!this.ensureVariantIsUnused(variantName)) {\n return false;\n }\n\n // Adds the variant to the model variants if needed.\n if (!this[$modelVariants].has(variantName)) {\n this[$modelVariants].set(\n variantName, {name: variantName, index: this[$modelVariants].size});\n }\n const modelVariantData = this[$modelVariants].get(variantName)!;\n const variantIndex = modelVariantData.index;\n\n // Updates materials mapped to the variant.\n materialVariant[$variantIndices]().add(variantIndex);\n\n // Updates internal mappings.\n this[$variantToMaterialMap].set(variantIndex, materialVariant);\n this[$materials].set(materialVariant.index, materialVariant);\n\n this.updateVariantUserData(variantIndex, materialVariant);\n\n return true;\n }\n\n deleteVariant(variantIndex: number) {\n if (this.variantInfo.has(variantIndex)) {\n this.variantInfo.delete(variantIndex);\n\n const userDataMap = this.mesh.userData.variantMaterials! as\n Map;\n if (userDataMap != null) {\n userDataMap.delete(variantIndex);\n }\n }\n }\n\n private updateVariantUserData(\n variantIndex: number, materialVariant: Material) {\n // Adds variants name to material variants set.\n materialVariant[$variantIndices]().add(variantIndex);\n\n this.mesh.userData.variantData = this[$modelVariants];\n // Updates import data (see VariantMaterialLoaderPlugin.ts).\n this.mesh.userData.variantMaterials = this.mesh.userData.variantMaterials ||\n new Map();\n const map = this.mesh.userData.variantMaterials! as\n Map;\n map.set(variantIndex, {\n material: materialVariant[$correlatedObjects]!.values().next().value,\n gltfMaterialIndex: materialVariant.index,\n });\n }\n\n private ensureVariantIsUnused(variantName: string) {\n const modelVariants = this[$modelVariants].get(variantName);\n\n if (modelVariants != null && this.variantInfo.has(modelVariants!.index)) {\n console.warn(`Primitive cannot add variant '${\n variantName}' for this material, it already exists.`);\n return false;\n }\n\n return true;\n }\n}\n","/* @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Group, Intersection, Material as ThreeMaterial, Mesh, MeshStandardMaterial, Object3D, Raycaster} from 'three';\n\nimport {CorrelatedSceneGraph, GLTFElementToThreeObjectMap, ThreeObjectSet} from '../../three-components/gltf-instance/correlated-scene-graph.js';\nimport {GLTF, GLTFElement, Material as GLTFMaterial} from '../../three-components/gltf-instance/gltf-2.0.js';\n\nimport {Model as ModelInterface} from './api.js';\nimport {$setActive, $variantSet, Material} from './material.js';\nimport {$children, Node, PrimitiveNode} from './nodes/primitive-node.js';\nimport {$correlatedObjects, $sourceObject} from './three-dom-element.js';\n\n\n\nexport const $materials = Symbol('materials');\nconst $hierarchy = Symbol('hierarchy');\nconst $roots = Symbol('roots');\nexport const $primitivesList = Symbol('primitives');\nexport const $loadVariant = Symbol('loadVariant');\nexport const $correlatedSceneGraph = Symbol('correlatedSceneGraph');\nexport const $prepareVariantsForExport = Symbol('prepareVariantsForExport');\nexport const $switchVariant = Symbol('switchVariant');\nexport const $threeScene = Symbol('threeScene');\nexport const $materialsFromPoint = Symbol('materialsFromPoint');\nexport const $materialFromPoint = Symbol('materialFromPoint');\nexport const $variantData = Symbol('variantData');\nexport const $availableVariants = Symbol('availableVariants');\nconst $modelOnUpdate = Symbol('modelOnUpdate');\nconst $cloneMaterial = Symbol('cloneMaterial');\n\n// Holds onto temporary scene context information needed to perform lazy loading\n// of a resource.\nexport class LazyLoader {\n gltf: GLTF;\n gltfElementMap: GLTFElementToThreeObjectMap;\n mapKey: GLTFElement;\n doLazyLoad: () => Promise<{set: ThreeObjectSet, material: ThreeMaterial}>;\n constructor(\n gltf: GLTF, gltfElementMap: GLTFElementToThreeObjectMap,\n mapKey: GLTFElement,\n doLazyLoad:\n () => Promise<{set: ThreeObjectSet, material: ThreeMaterial}>) {\n this.gltf = gltf;\n this.gltfElementMap = gltfElementMap;\n this.mapKey = mapKey;\n this.doLazyLoad = doLazyLoad;\n }\n}\n\n/**\n * Facades variant mapping data.\n */\nexport interface VariantData {\n name: string;\n index: number;\n}\n\n/**\n * A Model facades the top-level GLTF object returned by Three.js' GLTFLoader.\n * Currently, the model only bothers itself with the materials in the Three.js\n * scene graph.\n */\nexport class Model implements ModelInterface {\n private[$materials] = new Array();\n private[$hierarchy] = new Array();\n private[$roots] = new Array();\n private[$primitivesList] = new Array();\n private[$threeScene]: Object3D|Group;\n private[$modelOnUpdate]: () => void = () => {};\n private[$correlatedSceneGraph]: CorrelatedSceneGraph;\n private[$variantData] = new Map();\n\n constructor(\n correlatedSceneGraph: CorrelatedSceneGraph,\n onUpdate: () => void = () => {}) {\n this[$modelOnUpdate] = onUpdate;\n this[$correlatedSceneGraph] = correlatedSceneGraph;\n const {gltf, threeGLTF, gltfElementMap} = correlatedSceneGraph;\n this[$threeScene] = threeGLTF.scene;\n\n for (const [i, material] of gltf.materials!.entries()) {\n const correlatedMaterial =\n gltfElementMap.get(material) as Set;\n\n if (correlatedMaterial != null) {\n this[$materials].push(new Material(\n onUpdate,\n gltf,\n material,\n i,\n true,\n this[$variantData],\n correlatedMaterial));\n } else {\n const elementArray = gltf['materials'] || [];\n const gltfMaterialDef = elementArray[i];\n\n // Loads the three.js material.\n const capturedMatIndex = i;\n const materialLoadCallback = async () => {\n const threeMaterial =\n await threeGLTF.parser.getDependency(\n 'material', capturedMatIndex) as MeshStandardMaterial;\n\n // Adds correlation, maps the variant gltf-def to the\n // three material set containing the variant material.\n const threeMaterialSet = new Set();\n gltfElementMap.set(gltfMaterialDef, threeMaterialSet);\n threeMaterialSet.add(threeMaterial);\n\n return {set: threeMaterialSet, material: threeMaterial};\n };\n\n // Configures the material for lazy loading.\n this[$materials].push(new Material(\n onUpdate,\n gltf,\n gltfMaterialDef,\n i,\n false,\n this[$variantData],\n correlatedMaterial,\n new LazyLoader(\n gltf, gltfElementMap, gltfMaterialDef, materialLoadCallback)));\n }\n }\n\n // Creates a hierarchy of Nodes. Allows not just for switching which\n // material is applied to a mesh but also exposes a way to provide API\n // for switching materials and general assignment/modification.\n\n // Prepares for scene iteration.\n const parentMap = new Map();\n const nodeStack = new Array();\n for (const object of threeGLTF.scene.children) {\n nodeStack.push(object);\n }\n\n // Walks the hierarchy and creates a node tree.\n while (nodeStack.length > 0) {\n const object = nodeStack.pop()!;\n\n let node: Node|null = null;\n\n if (object instanceof Mesh) {\n node = new PrimitiveNode(\n object as Mesh,\n this.materials,\n this[$variantData],\n correlatedSceneGraph);\n this[$primitivesList].push(node as PrimitiveNode);\n } else {\n node = new Node(object.name);\n }\n\n const parent: Node|undefined = parentMap.get(object);\n if (parent != null) {\n parent[$children].push(node);\n } else {\n this[$roots].push(node);\n }\n this[$hierarchy].push(node);\n\n for (const child of object.children) {\n nodeStack.push(child);\n parentMap.set(object, node);\n }\n }\n }\n\n /**\n * Materials are listed in the order of the GLTF materials array, plus a\n * default material at the end if one is used.\n *\n * TODO(#1003): How do we handle non-active scenes?\n */\n get materials(): Material[] {\n return this[$materials];\n }\n\n [$availableVariants]() {\n const variants = Array.from(this[$variantData].values());\n variants.sort((a, b) => {\n return a.index - b.index;\n });\n\n return variants.map((data) => {\n return data.name;\n });\n }\n\n getMaterialByName(name: string): Material|null {\n const matches = this[$materials].filter(material => {\n return material.name === name;\n });\n\n if (matches.length > 0) {\n return matches[0];\n }\n return null;\n }\n\n\n /**\n * Intersects a ray with the Model and returns a list of materials whose\n * objects were intersected.\n */\n [$materialsFromPoint](raycaster: Raycaster): Material[] {\n const hits = raycaster.intersectObject(this[$threeScene], true);\n\n // Map the object hits to primitives and then to the active material of\n // the primitive.\n return hits.map((hit: Intersection) => {\n const found = this[$hierarchy].find((node: Node) => {\n if (node instanceof PrimitiveNode) {\n const primitive = node as PrimitiveNode;\n if (primitive.mesh === hit.object) {\n return true;\n }\n }\n return false;\n }) as PrimitiveNode;\n\n if (found != null) {\n return found.getActiveMaterial();\n }\n return null;\n }) as Material[];\n }\n\n /**\n * Intersects a ray with the Model and returns the first material whose\n * object was intersected.\n */\n [$materialFromPoint](raycaster: Raycaster): Material|null {\n const materials = this[$materialsFromPoint](raycaster);\n\n if (materials.length > 0) {\n return materials[0];\n }\n\n return null;\n }\n\n /**\n * Switches model variant to the variant name provided, or switches to\n * default/initial materials if 'null' is provided.\n */\n async[$switchVariant](variantName: string|null) {\n for (const primitive of this[$primitivesList]) {\n await primitive.enableVariant(variantName);\n }\n\n for (const material of this.materials) {\n material[$setActive](false);\n }\n // Marks the materials that are now in use after the variant switch.\n for (const primitive of this[$primitivesList]) {\n this.materials[primitive.getActiveMaterial().index][$setActive](true);\n }\n }\n\n async[$prepareVariantsForExport]() {\n const promises = new Array>();\n for (const primitive of this[$primitivesList]) {\n promises.push(primitive.instantiateVariants());\n }\n await Promise.all(promises);\n }\n\n [$cloneMaterial](index: number, newMaterialName: string): Material {\n const material = this.materials[index];\n\n if (!material.isLoaded) {\n console.error(`Cloning an unloaded material,\n call 'material.ensureLoaded() before cloning the material.`);\n }\n\n const threeMaterialSet =\n material[$correlatedObjects] as Set;\n\n // clones the gltf material data and updates the material name.\n const gltfSourceMaterial =\n JSON.parse(JSON.stringify(material[$sourceObject])) as GLTFMaterial;\n gltfSourceMaterial.name = newMaterialName;\n // Adds the source material clone to the gltf def.\n const gltf = this[$correlatedSceneGraph].gltf;\n gltf.materials!.push(gltfSourceMaterial);\n\n const clonedSet = new Set();\n for (const [i, threeMaterial] of threeMaterialSet.entries()) {\n const clone = threeMaterial.clone() as MeshStandardMaterial;\n clone.name =\n newMaterialName + (threeMaterialSet.size > 1 ? '_inst' + i : '');\n clonedSet.add(clone);\n }\n\n const clonedMaterial = new Material(\n this[$modelOnUpdate],\n this[$correlatedSceneGraph].gltf,\n gltfSourceMaterial,\n this[$materials].length,\n false, // Cloned as inactive.\n this[$variantData],\n clonedSet);\n\n this[$materials].push(clonedMaterial);\n\n return clonedMaterial;\n }\n\n createMaterialInstanceForVariant(\n originalMaterialIndex: number, newMaterialName: string,\n variantName: string, activateVariant: boolean = true): Material|null {\n let variantMaterialInstance: Material|null = null;\n\n for (const primitive of this[$primitivesList]) {\n const variantData = this[$variantData].get(variantName);\n // Skips the primitive if the variant already exists.\n if (variantData != null && primitive.variantInfo.has(variantData.index)) {\n continue;\n }\n\n // Skips the primitive if the source/original material does not exist.\n if (primitive.getMaterial(originalMaterialIndex) == null) {\n continue;\n }\n\n if (!this.hasVariant(variantName)) {\n this.createVariant(variantName);\n }\n\n if (variantMaterialInstance == null) {\n variantMaterialInstance =\n this[$cloneMaterial](originalMaterialIndex, newMaterialName);\n }\n primitive.addVariant(variantMaterialInstance, variantName)\n }\n\n if (activateVariant && variantMaterialInstance != null) {\n (variantMaterialInstance as Material)[$setActive](true);\n this.materials[originalMaterialIndex][$setActive](false);\n for (const primitive of this[$primitivesList]) {\n primitive.enableVariant(variantName);\n }\n }\n\n return variantMaterialInstance;\n }\n\n createVariant(variantName: string) {\n if (!this[$variantData].has(variantName)) {\n // Adds the name if it's not already in the list.\n this[$variantData].set(\n variantName,\n {name: variantName, index: this[$variantData].size} as VariantData);\n } else {\n console.warn(`Variant '${variantName}'' already exists`);\n }\n }\n\n hasVariant(variantName: string) {\n return this[$variantData].has(variantName);\n }\n\n setMaterialToVariant(materialIndex: number, targetVariantName: string) {\n if (this[$availableVariants]().find(name => name === targetVariantName) ==\n null) {\n console.warn(`Can't add material to '${\n targetVariantName}', the variant does not exist.'`);\n return;\n }\n\n if (materialIndex < 0 || materialIndex >= this.materials.length) {\n console.error(`setMaterialToVariant(): materialIndex is out of bounds.`);\n return;\n }\n\n for (const primitive of this[$primitivesList]) {\n const material = primitive.getMaterial(materialIndex);\n // Ensures the material exists on the primitive before setting it to a\n // variant.\n if (material != null) {\n primitive.addVariant(material, targetVariantName);\n }\n }\n }\n\n updateVariantName(currentName: string, newName: string) {\n const variantData = this[$variantData].get(currentName);\n if (variantData == null) {\n return;\n }\n variantData.name = newName;\n this[$variantData].set(newName, variantData!);\n this[$variantData].delete(currentName);\n }\n\n deleteVariant(variantName: string) {\n const variant = this[$variantData].get(variantName);\n if (variant == null) {\n return;\n }\n\n for (const material of this.materials) {\n if (material.hasVariant(variantName)) {\n material[$variantSet].delete(variant.index);\n }\n }\n\n for (const primitive of this[$primitivesList]) {\n primitive.deleteVariant(variant.index);\n }\n\n this[$variantData].delete(variantName);\n }\n}\n","/* @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {property} from 'lit/decorators.js';\nimport {RepeatWrapping, sRGBEncoding, Texture, TextureLoader} from 'three';\nimport {GLTFExporter, GLTFExporterOptions} from 'three/examples/jsm/exporters/GLTFExporter.js';\n\nimport ModelViewerElementBase, {$needsRender, $onModelLoad, $progressTracker, $renderer, $scene} from '../model-viewer-base.js';\nimport {GLTF} from '../three-components/gltf-instance/gltf-defaulted.js';\nimport {ModelViewerGLTFInstance} from '../three-components/gltf-instance/ModelViewerGLTFInstance.js';\nimport GLTFExporterMaterialsVariantsExtension from '../three-components/gltf-instance/VariantMaterialExporterPlugin';\nimport {Constructor} from '../utilities.js';\n\nimport {Image, PBRMetallicRoughness, Sampler, TextureInfo} from './scene-graph/api.js';\nimport {Material} from './scene-graph/material.js';\nimport {$availableVariants, $materialFromPoint, $prepareVariantsForExport, $switchVariant, Model} from './scene-graph/model.js';\nimport {Texture as ModelViewerTexture} from './scene-graph/texture';\n\n\n\nexport const $currentGLTF = Symbol('currentGLTF');\nexport const $originalGltfJson = Symbol('originalGltfJson');\nexport const $model = Symbol('model');\nconst $getOnUpdateMethod = Symbol('getOnUpdateMethod');\nconst $textureLoader = Symbol('textureLoader');\n\ninterface SceneExportOptions {\n binary?: boolean, trs?: boolean, onlyVisible?: boolean,\n maxTextureSize?: number, includeCustomExtensions?: boolean,\n forceIndices?: boolean\n}\n\nexport interface SceneGraphInterface {\n readonly model?: Model;\n variantName: string|null;\n readonly availableVariants: string[];\n orientation: string;\n scale: string;\n readonly originalGltfJson: GLTF|null;\n exportScene(options?: SceneExportOptions): Promise;\n createTexture(uri: string, type?: string): Promise;\n /**\n * Intersects a ray with the scene and returns a list of materials who's\n * objects were intersected.\n * @param pixelX X coordinate of the mouse.\n * @param pixelY Y coordinate of the mouse.\n * @returns a material, if no intersection is made then null is returned.\n */\n materialFromPoint(pixelX: number, pixelY: number): Material|null;\n}\n\n/**\n * SceneGraphMixin manages exposes a model API in order to support operations on\n * the scene graph.\n */\nexport const SceneGraphMixin = >(\n ModelViewerElement: T): Constructor&T => {\n class SceneGraphModelViewerElement extends ModelViewerElement {\n protected[$model]: Model|undefined = undefined;\n protected[$currentGLTF]: ModelViewerGLTFInstance|null = null;\n private[$textureLoader] = new TextureLoader();\n private[$originalGltfJson]: GLTF|null = null;\n\n @property({type: String, attribute: 'variant-name'})\n variantName: string|null = null;\n\n @property({type: String, attribute: 'orientation'})\n orientation: string = '0 0 0';\n\n @property({type: String, attribute: 'scale'}) scale: string = '1 1 1';\n\n // Scene-graph API:\n /** @export */\n get model() {\n return this[$model];\n }\n\n get availableVariants() {\n return this.model ? this.model[$availableVariants]() : [] as string[];\n }\n\n /**\n * Returns a deep copy of the gltf JSON as loaded. It will not reflect\n * changes to the scene-graph, nor will editing it have any effect.\n */\n get originalGltfJson() {\n return this[$originalGltfJson];\n }\n\n /**\n * References to each element constructor. Supports instanceof checks; these\n * classes are not directly constructable.\n */\n static Model: Constructor;\n static Material: Constructor;\n static PBRMetallicRoughness: Constructor;\n static Sampler: Constructor;\n static TextureInfo: Constructor;\n static Texture: Constructor;\n static Image: Constructor;\n\n private[$getOnUpdateMethod]() {\n return () => {\n this[$needsRender]();\n };\n }\n\n async createTexture(uri: string, type: string = 'image/png'):\n Promise {\n const currentGLTF = this[$currentGLTF];\n const texture: Texture = await new Promise(\n (resolve) => this[$textureLoader].load(uri, resolve));\n if (!currentGLTF || !texture) {\n return null;\n }\n // Applies default settings.\n texture.encoding = sRGBEncoding;\n texture.wrapS = RepeatWrapping;\n texture.wrapT = RepeatWrapping;\n texture.flipY = false;\n texture.userData.mimeType = type;\n\n return new ModelViewerTexture(this[$getOnUpdateMethod](), texture);\n }\n\n async updated(changedProperties: Map) {\n super.updated(changedProperties);\n\n if (changedProperties.has('variantName')) {\n const updateVariantProgress = this[$progressTracker].beginActivity();\n updateVariantProgress(0.1);\n const model = this[$model];\n const {variantName} = this;\n\n if (model != null) {\n await model[$switchVariant](variantName!);\n this[$needsRender]();\n this.dispatchEvent(new CustomEvent('variant-applied'));\n }\n updateVariantProgress(1.0);\n }\n\n if (changedProperties.has('orientation') ||\n changedProperties.has('scale')) {\n if (!this.loaded) {\n return;\n }\n const scene = this[$scene];\n scene.applyTransform();\n scene.updateBoundingBox();\n scene.updateShadow();\n this[$renderer].arRenderer.onUpdateScene();\n this[$needsRender]();\n }\n }\n\n [$onModelLoad]() {\n super[$onModelLoad]();\n\n const {currentGLTF} = this[$scene];\n\n if (currentGLTF != null) {\n const {correlatedSceneGraph} = currentGLTF;\n\n if (correlatedSceneGraph != null &&\n currentGLTF !== this[$currentGLTF]) {\n this[$model] =\n new Model(correlatedSceneGraph, this[$getOnUpdateMethod]());\n this[$originalGltfJson] =\n JSON.parse(JSON.stringify(correlatedSceneGraph.gltf));\n }\n\n // KHR_materials_variants extension spec:\n // https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_variants\n\n if ('variants' in currentGLTF.userData) {\n this.requestUpdate('variantName');\n }\n }\n\n this[$currentGLTF] = currentGLTF;\n }\n\n /** @export */\n async exportScene(options?: SceneExportOptions): Promise {\n const scene = this[$scene];\n return new Promise(async (resolve, reject) => {\n // Defaults\n const opts = {\n binary: true,\n onlyVisible: true,\n maxTextureSize: Infinity,\n includeCustomExtensions: false,\n forceIndices: false\n } as GLTFExporterOptions;\n\n Object.assign(opts, options);\n // Not configurable\n opts.animations = scene.animations;\n opts.truncateDrawRange = true;\n\n const shadow = scene.shadow;\n let visible = false;\n // Remove shadow from export\n if (shadow != null) {\n visible = shadow.visible;\n shadow.visible = false;\n }\n\n await this[$model]![$prepareVariantsForExport]();\n\n const exporter =\n (new GLTFExporter() as any)\n .register(\n (writer: any) =>\n new GLTFExporterMaterialsVariantsExtension(writer));\n exporter.parse(\n scene.model,\n (gltf: object) => {\n return resolve(new Blob(\n [opts.binary ? gltf as Blob : JSON.stringify(gltf)], {\n type: opts.binary ? 'application/octet-stream' :\n 'application/json'\n }));\n },\n () => {\n return reject('glTF export failed');\n },\n opts);\n\n if (shadow != null) {\n shadow.visible = visible;\n }\n });\n }\n\n materialFromPoint(pixelX: number, pixelY: number): Material|null {\n const scene = this[$scene];\n const ndcCoords = scene.getNDC(pixelX, pixelY);\n scene.raycaster.setFromCamera(ndcCoords, scene.getCamera());\n\n return this[$model]![$materialFromPoint](scene.raycaster);\n }\n }\n\n return SceneGraphModelViewerElement;\n};\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// The operators that are available in CSS calc() functions\n// include symbols for addition, subtraction, multiplication and division\n// @see https://www.w3.org/TR/css-values-3/#calc-syntax\nexport type Operator = '+'|'-'|'*'|'/';\n\n// We only support units for length in meters, radians and degrees for angles\n// and percentage values\nexport type Unit = 'm'|'cm'|'mm'|'rad'|'deg';\nexport type Percentage = '%';\n\n// Any node that might appear in a parsed expression is referred to as an\n// ExpressionTerm\nexport type ExpressionTerm =\n IdentNode|HexNode|NumberNode|OperatorNode|FunctionNode;\n\nexport interface IdentNode {\n type: 'ident';\n value: string;\n}\n\nexport interface HexNode {\n type: 'hex';\n value: string;\n}\n\nexport interface NumberNode {\n type: 'number';\n number: number;\n unit: U;\n}\n\nexport const numberNode =\n (value: number, unit: T): NumberNode =>\n ({type: 'number', number: value, unit});\n\nexport interface OperatorNode {\n type: 'operator';\n value: Operator;\n}\n\nexport interface FunctionNode {\n type: 'function';\n name: IdentNode;\n arguments: Array;\n}\n\nexport interface ExpressionNode {\n type: 'expression';\n terms: Array;\n}\n\nexport type ASTNode =\n IdentNode|HexNode|NumberNode|OperatorNode|FunctionNode|ExpressionNode;\n\n// As an internal detail of this module, non-exported parsers return both a\n// set of nodes and the remaining string input to be parsed. This saves us a bit\n// of book keeping work and allows our internal parser implementations to remain\n// essentially stateless.\ninterface ParseResult {\n nodes: Array;\n remainingInput: string;\n}\n\n/**\n * Given a string representing a comma-separated set of CSS-like expressions,\n * parses and returns an array of ASTs that correspond to those expressions.\n *\n * Currently supported syntax includes:\n *\n * - functions (top-level and nested)\n * - calc() arithmetic operators\n * - numbers with units\n * - hexadecimal-encoded colors in 3, 6 or 8 digit form\n * - idents\n *\n * All syntax is intended to match the parsing rules and semantics of the actual\n * CSS spec as closely as possible.\n *\n * @see https://www.w3.org/TR/CSS2/\n * @see https://www.w3.org/TR/css-values-3/\n */\nexport const parseExpressions = (() => {\n const cache: {[index: string]: Array} = {};\n const MAX_PARSE_ITERATIONS = 1000; // Arbitrarily large\n\n return (inputString: string): Array => {\n const cacheKey = inputString;\n\n if (cacheKey in cache) {\n return cache[cacheKey];\n }\n\n const expressions: Array = [];\n let parseIterations = 0;\n\n while (inputString) {\n if (++parseIterations > MAX_PARSE_ITERATIONS) {\n // Avoid a potentially infinite loop due to typos:\n inputString = '';\n break;\n }\n\n const expressionParseResult = parseExpression(inputString);\n const expression = expressionParseResult.nodes[0];\n\n if (expression == null || expression.terms.length === 0) {\n break;\n }\n\n expressions.push(expression);\n inputString = expressionParseResult.remainingInput;\n }\n\n return cache[cacheKey] = expressions;\n };\n})();\n\n\n/**\n * Parse a single expression. For the purposes of our supported syntax, an\n * expression is the set of semantically meaningful terms that appear before the\n * next comma, or between the parens of a function invocation.\n */\nconst parseExpression = (() => {\n const IS_IDENT_RE = /^(\\-\\-|[a-z\\u0240-\\uffff])/i;\n const IS_OPERATOR_RE = /^([\\*\\+\\/]|[\\-]\\s)/i;\n const IS_EXPRESSION_END_RE = /^[\\),]/;\n const FUNCTION_ARGUMENTS_FIRST_TOKEN = '(';\n const HEX_FIRST_TOKEN = '#';\n\n return (inputString: string): ParseResult => {\n const terms: Array = [];\n\n while (inputString.length) {\n inputString = inputString.trim();\n\n if (IS_EXPRESSION_END_RE.test(inputString)) {\n break;\n } else if (inputString[0] === FUNCTION_ARGUMENTS_FIRST_TOKEN) {\n const {nodes, remainingInput} = parseFunctionArguments(inputString);\n\n inputString = remainingInput;\n\n terms.push({\n type: 'function',\n name: {type: 'ident', value: 'calc'},\n arguments: nodes\n });\n } else if (IS_IDENT_RE.test(inputString)) {\n const identParseResult = parseIdent(inputString);\n const identNode = identParseResult.nodes[0];\n\n inputString = identParseResult.remainingInput;\n\n if (inputString[0] === FUNCTION_ARGUMENTS_FIRST_TOKEN) {\n const {nodes, remainingInput} = parseFunctionArguments(inputString);\n terms.push({type: 'function', name: identNode, arguments: nodes});\n inputString = remainingInput;\n } else {\n terms.push(identNode);\n }\n } else if (IS_OPERATOR_RE.test(inputString)) {\n // Operators are always a single character, so just pluck them out:\n terms.push({type: 'operator', value: inputString[0] as Operator});\n inputString = inputString.slice(1);\n } else {\n const {nodes, remainingInput} = inputString[0] === HEX_FIRST_TOKEN ?\n parseHex(inputString) :\n parseNumber(inputString);\n\n // The remaining string may not have had any meaningful content. Exit\n // early if this is the case:\n if (nodes.length === 0) {\n break;\n }\n\n terms.push(nodes[0]);\n inputString = remainingInput;\n }\n }\n\n return {nodes: [{type: 'expression', terms}], remainingInput: inputString};\n };\n})();\n\n\n/**\n * An ident is something like a function name or the keyword \"auto\".\n */\nconst parseIdent = (() => {\n const NOT_IDENT_RE = /[^a-z0-9_\\-\\u0240-\\uffff]/i;\n\n return (inputString: string): ParseResult => {\n const match = inputString.match(NOT_IDENT_RE);\n const ident =\n match == null ? inputString : inputString.substr(0, match.index);\n const remainingInput =\n match == null ? '' : inputString.substr(match.index!);\n\n return {nodes: [{type: 'ident', value: ident}], remainingInput};\n };\n})();\n\n\n/**\n * Parses a number. A number value can be expressed with an integer or\n * non-integer syntax, and usually includes a unit (but does not strictly\n * require one for our purposes).\n */\nconst parseNumber = (() => {\n // @see https://www.w3.org/TR/css-syntax/#number-token-diagram\n const VALUE_RE = /[\\+\\-]?(\\d+[\\.]\\d+|\\d+|[\\.]\\d+)([eE][\\+\\-]?\\d+)?/;\n const UNIT_RE = /^[a-z%]+/i;\n const ALLOWED_UNITS = /^(m|mm|cm|rad|deg|[%])$/;\n\n return (inputString: string): ParseResult => {\n const valueMatch = inputString.match(VALUE_RE);\n const value = valueMatch == null ? '0' : valueMatch[0];\n inputString = value == null ? inputString : inputString.slice(value.length);\n\n const unitMatch = inputString.match(UNIT_RE);\n let unit = unitMatch != null && unitMatch[0] !== '' ? unitMatch[0] : null;\n const remainingInput =\n unitMatch == null ? inputString : inputString.slice(unit!.length);\n\n if (unit != null && !ALLOWED_UNITS.test(unit)) {\n unit = null;\n }\n\n return {\n nodes: [{\n type: 'number',\n number: parseFloat(value) || 0,\n unit: unit as Unit | Percentage | null\n }],\n remainingInput\n };\n };\n})();\n\n\n/**\n * Parses a hexadecimal-encoded color in 3, 6 or 8 digit form.\n */\nconst parseHex = (() => {\n // TODO(cdata): right now we don't actually enforce the number of digits\n const HEX_RE = /^[a-f0-9]*/i;\n\n return (inputString: string): ParseResult => {\n inputString = inputString.slice(1).trim();\n const hexMatch = inputString.match(HEX_RE);\n const nodes: Array =\n hexMatch == null ? [] : [{type: 'hex', value: hexMatch[0]}];\n\n return {\n nodes,\n remainingInput: hexMatch == null ? inputString :\n inputString.slice(hexMatch[0].length)\n };\n };\n})();\n\n\n/**\n * Parses arguments passed to a function invocation (e.g., the expressions\n * within a matched set of parens).\n */\nconst parseFunctionArguments =\n (inputString: string): ParseResult => {\n const expressionNodes: Array = [];\n\n // Consume the opening paren\n inputString = inputString.slice(1).trim();\n\n while (inputString.length) {\n const expressionParseResult = parseExpression(inputString);\n expressionNodes.push(expressionParseResult.nodes[0]);\n inputString = expressionParseResult.remainingInput.trim();\n\n if (inputString[0] === ',') {\n inputString = inputString.slice(1).trim();\n } else if (inputString[0] === ')') {\n // Consume the closing paren and stop parsing\n inputString = inputString.slice(1);\n break;\n }\n }\n\n return {nodes: expressionNodes, remainingInput: inputString};\n };\n\n\nexport type ASTWalkerCallback = (node: T) => void;\n\nconst $visitedTypes = Symbol('visitedTypes');\n\n/**\n * An ASTWalker walks an array of ASTs such as the type produced by\n * parseExpressions and invokes a callback for a configured set of nodes that\n * the user wishes to \"visit\" during the walk.\n */\nexport class ASTWalker {\n protected[$visitedTypes]: Array;\n constructor(visitedTypes: Array) {\n this[$visitedTypes] = visitedTypes;\n }\n\n /**\n * Walk the given set of ASTs, and invoke the provided callback for nodes that\n * match the filtered set that the ASTWalker was constructed with.\n */\n walk(ast: Array, callback: ASTWalkerCallback) {\n const remaining: Array = ast.slice();\n\n while (remaining.length) {\n const next = remaining.shift()!;\n\n if (this[$visitedTypes].indexOf(next.type) > -1) {\n callback(next as T);\n }\n\n switch (next.type) {\n case 'expression':\n remaining.unshift(...next.terms);\n break;\n case 'function':\n remaining.unshift(next.name, ...next.arguments);\n break;\n }\n }\n }\n}\n\nexport const ZERO: NumberNode =\n Object.freeze({type: 'number', number: 0, unit: null});","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NumberNode, ZERO} from './parsers';\n\n/**\n * Ensures that a given number is expressed in radians. If the number is already\n * in radians, does nothing. If the value is in degrees, converts it to radians.\n * If the value has no specified unit, the unit is assumed to be radians. If the\n * value is not in radians or degrees, the value is resolved as 0 radians.\n *\n * Also accepts a second argument that is a default value to use if the input\n * numberNode number is NaN or Infinity.\n */\nexport const degreesToRadians =\n (numberNode: NumberNode, fallbackRadianValue: number = 0): NumberNode => {\n let {number, unit} = numberNode;\n if (!isFinite(number)) {\n number = fallbackRadianValue;\n unit = 'rad';\n } else if (numberNode.unit === 'rad' || numberNode.unit == null) {\n return numberNode;\n }\n\n const valueIsDegrees = unit === 'deg' && number != null;\n const value = valueIsDegrees ? number : 0;\n const radians = value * Math.PI / 180;\n\n return {type: 'number', number: radians, unit: 'rad'};\n };\n\n/**\n * Ensures that a given number is expressed in degrees. If the number is already\n * in degrees, does nothing. If the value is in radians or has no specified\n * unit, converts it to degrees. If the value is not in radians or degrees, the\n * value is resolved as 0 degrees.\n *\n * Also accepts a second argument that is a default value to use if the input\n * numberNode number is NaN or Infinity.\n */\nexport const radiansToDegrees =\n (numberNode: NumberNode, fallbackDegreeValue: number = 0): NumberNode => {\n let {number, unit} = numberNode;\n\n if (!isFinite(number)) {\n number = fallbackDegreeValue;\n unit = 'deg';\n } else if (numberNode.unit === 'deg') {\n return numberNode;\n }\n\n const valueIsRadians =\n (unit === null || unit === 'rad') && number != null;\n\n const value = valueIsRadians ? number : 0;\n const degrees = value * 180 / Math.PI;\n\n return {type: 'number', number: degrees, unit: 'deg'};\n };\n\n/**\n * Converts a given length to meters. Currently supported input units are\n * meters, centimeters and millimeters.\n *\n * Also accepts a second argument that is a default value to use if the input\n * numberNode number is NaN or Infinity.\n */\nexport const lengthToBaseMeters =\n (numberNode: NumberNode, fallbackMeterValue: number = 0): NumberNode => {\n let {number, unit} = numberNode;\n\n if (!isFinite(number)) {\n number = fallbackMeterValue;\n unit = 'm';\n } else if (numberNode.unit === 'm') {\n return numberNode;\n }\n\n let scale;\n\n switch (unit) {\n default:\n scale = 1;\n break;\n case 'cm':\n scale = 1 / 100;\n break;\n case 'mm':\n scale = 1 / 1000;\n break;\n }\n\n const value = scale * number;\n return {type: 'number', number: value, unit: 'm'};\n };\n\n/**\n * Normalizes the unit of a given input number so that it is expressed in a\n * preferred unit. For length nodes, the return value will be expressed in\n * meters. For angle nodes, the return value will be expressed in radians.\n *\n * Also takes a fallback number that is used when the number value is not a\n * valid number or when the unit of the given number cannot be normalized.\n */\nexport const normalizeUnit = (() => {\n const identity = (node: NumberNode) => node;\n const unitNormalizers: {[index: string]: (node: NumberNode) => NumberNode} = {\n 'rad': identity,\n 'deg': degreesToRadians,\n 'm': identity,\n 'mm': lengthToBaseMeters,\n 'cm': lengthToBaseMeters\n };\n\n return (node: NumberNode, fallback: NumberNode = ZERO) => {\n if (!isFinite(node.number)) {\n node.number = fallback.number;\n node.unit = fallback.unit;\n }\n\n const {unit} = node;\n\n if (unit == null) {\n return node;\n }\n\n const normalize = unitNormalizers[unit];\n\n if (normalize == null) {\n return fallback;\n }\n\n return normalize(node);\n };\n})();","/* @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Vector3} from 'three';\nimport {CSS2DObject} from 'three/examples/jsm/renderers/CSS2DRenderer.js';\n\nimport {normalizeUnit} from '../styles/conversions.js';\nimport {NumberNode, parseExpressions} from '../styles/parsers.js';\n\nexport interface HotspotVisibilityDetails {\n visible: boolean;\n}\n\n/**\n * Hotspots are configured by slot name, and this name must begin with \"hotspot\"\n * to be recognized. The position and normal strings are in the form of the\n * camera-target attribute and default to \"0m 0m 0m\" and \"0m 1m 0m\",\n * respectively.\n */\nexport interface HotspotConfiguration {\n name: string;\n position?: string;\n normal?: string;\n}\n\n/**\n * The Hotspot object is a reference-counted slot. If decrement() returns true,\n * it should be removed from the tree so it can be garbage-collected.\n */\nexport class Hotspot extends CSS2DObject {\n public normal: Vector3 = new Vector3(0, 1, 0);\n private initialized = false;\n private referenceCount = 1;\n private pivot = document.createElement('div');\n private slot: HTMLSlotElement = document.createElement('slot');\n\n constructor(config: HotspotConfiguration) {\n super(document.createElement('div'));\n\n this.element.classList.add('annotation-wrapper');\n\n this.slot.name = config.name;\n\n this.element.appendChild(this.pivot);\n this.pivot.appendChild(this.slot);\n\n this.updatePosition(config.position);\n this.updateNormal(config.normal);\n }\n\n get facingCamera(): boolean {\n return !this.element.classList.contains('hide');\n }\n\n /**\n * Sets the hotspot to be in the highly visible foreground state.\n */\n show() {\n if (!this.facingCamera || !this.initialized) {\n this.updateVisibility(true);\n }\n }\n\n /**\n * Sets the hotspot to be in the diminished background state.\n */\n hide() {\n if (this.facingCamera || !this.initialized) {\n this.updateVisibility(false);\n }\n }\n\n /**\n * Call this when adding elements to the same slot to keep track.\n */\n increment() {\n this.referenceCount++;\n }\n\n /**\n * Call this when removing elements from the slot; returns true when the slot\n * is unused.\n */\n decrement(): boolean {\n if (this.referenceCount > 0) {\n --this.referenceCount;\n }\n return this.referenceCount === 0;\n }\n\n /**\n * Change the position of the hotspot to the input string, in the same format\n * as the data-position attribute.\n */\n updatePosition(position?: string) {\n if (position == null)\n return;\n const positionNodes = parseExpressions(position)[0].terms;\n for (let i = 0; i < 3; ++i) {\n this.position.setComponent(\n i, normalizeUnit(positionNodes[i] as NumberNode<'m'>).number);\n }\n this.updateMatrixWorld();\n }\n\n /**\n * Change the hotspot's normal to the input string, in the same format as the\n * data-normal attribute.\n */\n updateNormal(normal?: string) {\n if (normal == null)\n return;\n const normalNodes = parseExpressions(normal)[0].terms;\n for (let i = 0; i < 3; ++i) {\n this.normal.setComponent(\n i, normalizeUnit(normalNodes[i] as NumberNode<'m'>).number);\n }\n }\n\n orient(radians: number) {\n this.pivot.style.transform = `rotate(${radians}rad)`;\n }\n\n updateVisibility(show: boolean) {\n // NOTE: IE11 doesn't support a second arg for classList.toggle\n if (show) {\n this.element.classList.remove('hide');\n } else {\n this.element.classList.add('hide');\n }\n\n // NOTE: ShadyDOM doesn't support slot.assignedElements, otherwise we could\n // use that here.\n this.slot.assignedNodes().forEach((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n\n const element = node as HTMLElement;\n // Visibility attribute can be configured per-node in the hotspot:\n const visibilityAttribute = element.dataset.visibilityAttribute;\n\n if (visibilityAttribute != null) {\n const attributeName = `data-${visibilityAttribute}`;\n\n // NOTE: IE11 doesn't support toggleAttribute\n if (show) {\n element.setAttribute(attributeName, '');\n } else {\n element.removeAttribute(attributeName);\n }\n }\n\n element.dispatchEvent(new CustomEvent('hotspot-visibility', {\n detail: {\n visible: show,\n },\n }));\n });\n\n this.initialized = true;\n }\n}","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Object3D, Vector3} from 'three';\n\n/**\n * Moves Three.js objects from one parent to another\n */\nexport const moveChildren = (from: Object3D, to: Object3D) => {\n while (from.children.length) {\n to.add(from.children.shift()!);\n }\n};\n\n/**\n * Performs a reduction across all the vertices of the input model and all its\n * children. The supplied function takes the reduced value and a vertex and\n * returns the newly reduced value. The value is initialized as zero.\n *\n * Adapted from Three.js, @see https://github.com/mrdoob/three.js/blob/7e0a78beb9317e580d7fa4da9b5b12be051c6feb/src/math/Box3.js#L241\n */\nexport const reduceVertices = (\n model: Object3D, func: (value: T, vertex: Vector3) => T, initialValue: T):\n T => {\n let value = initialValue;\n const vertex = new Vector3();\n model.traverseVisible((object: any) => {\n let i, l;\n\n object.updateWorldMatrix(false, false);\n\n const geometry = object.geometry;\n\n if (geometry !== undefined) {\n if (geometry.isGeometry) {\n const vertices = geometry.vertices;\n\n for (i = 0, l = vertices.length; i < l; i++) {\n vertex.copy(vertices[i]);\n if (object.isSkinnedMesh) {\n object.boneTransform(i, vertex);\n } else {\n vertex.applyMatrix4(object.matrixWorld);\n }\n value = func(value, vertex);\n }\n\n } else if (geometry.isBufferGeometry) {\n const {position} = geometry.attributes;\n\n if (position !== undefined) {\n for (i = 0, l = position.count; i < l; i++) {\n vertex.fromBufferAttribute(position, i);\n if (object.isSkinnedMesh) {\n object.boneTransform(i, vertex);\n } else {\n vertex.applyMatrix4(object.matrixWorld);\n }\n\n value = func(value, vertex);\n }\n }\n }\n }\n });\n return value;\n };\n","/**\n * Two pass Gaussian blur filter (horizontal and vertical blur shaders)\n * - see http://www.cake23.de/traveling-wavefronts-lit-up.html\n *\n * - 9 samples per pass\n * - standard deviation 2.7\n * - \"h\" and \"v\" parameters should be set to \"1 / width\" and \"1 / height\"\n */\n\nconst HorizontalBlurShader = {\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'h': { value: 1.0 / 512.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float h;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 sum = vec4( 0.0 );\n\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 4.0 * h, vUv.y ) ) * 0.051;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 3.0 * h, vUv.y ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 2.0 * h, vUv.y ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 1.0 * h, vUv.y ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 1.0 * h, vUv.y ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 2.0 * h, vUv.y ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 3.0 * h, vUv.y ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 4.0 * h, vUv.y ) ) * 0.051;\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}`\n\n};\n\nexport { HorizontalBlurShader };\n","/**\n * Two pass Gaussian blur filter (horizontal and vertical blur shaders)\n * - see http://www.cake23.de/traveling-wavefronts-lit-up.html\n *\n * - 9 samples per pass\n * - standard deviation 2.7\n * - \"h\" and \"v\" parameters should be set to \"1 / width\" and \"1 / height\"\n */\n\nconst VerticalBlurShader = {\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'v': { value: 1.0 / 512.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float v;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 sum = vec4( 0.0 );\n\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 4.0 * v ) ) * 0.051;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 3.0 * v ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 2.0 * v ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 1.0 * v ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 1.0 * v ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 2.0 * v ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 3.0 * v ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 4.0 * v ) ) * 0.051;\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}`\n\n};\n\nexport { VerticalBlurShader };\n","const _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\n\n\nexport {\n\tDEG2RAD,\n\tRAD2DEG,\n\tgenerateUUID,\n\tclamp,\n\teuclideanModulo,\n\tmapLinear,\n\tinverseLerp,\n\tlerp,\n\tdamp,\n\tpingpong,\n\tsmoothstep,\n\tsmootherstep,\n\trandInt,\n\trandFloat,\n\trandFloatSpread,\n\tseededRandom,\n\tdegToRad,\n\tradToDeg,\n\tisPowerOfTwo,\n\tceilPowerOfTwo,\n\tfloorPowerOfTwo,\n\tsetQuaternionFromProperEuler,\n\tnormalize,\n\tdenormalize,\n};\n","/* @license\n * Copyright 2022 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {BackSide, Box3, Material, Mesh, MeshBasicMaterial, MeshDepthMaterial, Object3D, OrthographicCamera, PlaneGeometry, RGBAFormat, Scene, ShaderMaterial, Vector3, WebGLRenderer, WebGLRenderTarget, WebGLRenderTargetOptions} from 'three';\nimport {HorizontalBlurShader} from 'three/examples/jsm/shaders/HorizontalBlurShader.js';\nimport {VerticalBlurShader} from 'three/examples/jsm/shaders/VerticalBlurShader.js';\nimport {lerp} from 'three/src/math/MathUtils.js';\n\nimport {ModelScene} from './ModelScene';\n\nexport type Side = 'back'|'bottom';\n\n// The softness [0, 1] of the shadow is mapped to a resolution between\n// 2^LOG_MAX_RESOLUTION and 2^LOG_MIN_RESOLUTION.\nconst LOG_MAX_RESOLUTION = 9;\nconst LOG_MIN_RESOLUTION = 6;\n// Animated models are not in general contained in their bounding box, as this\n// is calculated only for their resting pose. We create a cubic shadow volume\n// for animated models sized to their largest bounding box dimension multiplied\n// by this scale factor.\nconst ANIMATION_SCALING = 2;\n// Since hard shadows are not lightened by blurring and depth, set a lower\n// default intensity to make them more perceptually similar to the intensity of\n// the soft shadows.\nconst DEFAULT_HARD_INTENSITY = 0.3;\n\n/**\n * The Shadow class creates a shadow that fits a given scene and follows a\n * target. This shadow will follow the scene without any updates needed so long\n * as the shadow and scene are both parented to the same object (call it the\n * scene) and this scene is passed as the target parameter to the shadow's\n * constructor. We also must constrain the scene to motion within the horizontal\n * plane and call the setRotation() method whenever the scene's Y-axis rotation\n * changes. For motion outside of the horizontal plane, this.needsUpdate must be\n * set to true.\n *\n * The softness of the shadow is controlled by changing its resolution, making\n * softer shadows faster, but less precise.\n */\nexport class Shadow extends Object3D {\n private camera = new OrthographicCamera();\n // private cameraHelper = new CameraHelper(this.camera);\n private renderTarget: WebGLRenderTarget|null = null;\n private renderTargetBlur: WebGLRenderTarget|null = null;\n private depthMaterial = new MeshDepthMaterial();\n private horizontalBlurMaterial = new ShaderMaterial(HorizontalBlurShader);\n private verticalBlurMaterial = new ShaderMaterial(VerticalBlurShader);\n private intensity = 0;\n private softness = 1;\n private floor: Mesh;\n private blurPlane: Mesh;\n private boundingBox = new Box3;\n private size = new Vector3;\n private maxDimension = 0;\n private isAnimated = false;\n public needsUpdate = false;\n\n constructor(scene: ModelScene, softness: number, side: Side) {\n super();\n\n const {camera} = this;\n camera.rotation.x = Math.PI / 2;\n camera.left = -0.5;\n camera.right = 0.5;\n camera.bottom = -0.5;\n camera.top = 0.5;\n this.add(camera);\n\n // this.add(this.cameraHelper);\n // this.cameraHelper.updateMatrixWorld = function() {\n // this.matrixWorld = this.camera.matrixWorld;\n // };\n\n const plane = new PlaneGeometry();\n const shadowMaterial = new MeshBasicMaterial({\n // color: new Color(1, 0, 0),\n opacity: 1,\n transparent: true,\n side: BackSide,\n });\n this.floor = new Mesh(plane, shadowMaterial);\n this.floor.userData.shadow = true;\n camera.add(this.floor);\n\n // the plane onto which to blur the texture\n this.blurPlane = new Mesh(plane);\n this.blurPlane.visible = false;\n camera.add(this.blurPlane);\n\n scene.target.add(this);\n\n // like MeshDepthMaterial, but goes from black to transparent\n this.depthMaterial.onBeforeCompile = function(shader) {\n shader.fragmentShader = shader.fragmentShader.replace(\n 'gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n 'gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * opacity );');\n };\n\n this.horizontalBlurMaterial.depthTest = false;\n this.verticalBlurMaterial.depthTest = false;\n\n this.setScene(scene, softness, side);\n }\n\n /**\n * Update the shadow's size and position for a new scene. Softness is also\n * needed, as this controls the shadow's resolution.\n */\n setScene(scene: ModelScene, softness: number, side: Side) {\n const {boundingBox, size, rotation, position} = this;\n\n this.isAnimated = scene.animationNames.length > 0;\n this.boundingBox.copy(scene.boundingBox);\n this.size.copy(scene.size);\n this.maxDimension = Math.max(size.x, size.y, size.z) *\n (this.isAnimated ? ANIMATION_SCALING : 1);\n\n this.boundingBox.getCenter(position);\n\n if (side === 'back') {\n const {min, max} = boundingBox;\n [min.y, min.z] = [min.z, min.y];\n [max.y, max.z] = [max.z, max.y];\n [size.y, size.z] = [size.z, size.y];\n rotation.x = Math.PI / 2;\n rotation.y = Math.PI;\n } else {\n rotation.x = 0;\n rotation.y = 0;\n }\n\n if (this.isAnimated) {\n const minY = boundingBox.min.y;\n const maxY = boundingBox.max.y;\n size.y = this.maxDimension;\n boundingBox.expandByVector(\n size.subScalar(this.maxDimension).multiplyScalar(-0.5));\n boundingBox.min.y = minY;\n boundingBox.max.y = maxY;\n size.set(this.maxDimension, maxY - minY, this.maxDimension);\n }\n\n if (side === 'bottom') {\n position.y = boundingBox.min.y;\n } else {\n position.z = boundingBox.min.y;\n }\n\n this.setSoftness(softness);\n }\n\n /**\n * Update the shadow's resolution based on softness (between 0 and 1). Should\n * not be called frequently, as this results in reallocation.\n */\n setSoftness(softness: number) {\n this.softness = softness;\n const {size, camera} = this;\n const scaleY = (this.isAnimated ? ANIMATION_SCALING : 1);\n\n const resolution = scaleY *\n Math.pow(\n 2,\n LOG_MAX_RESOLUTION -\n softness * (LOG_MAX_RESOLUTION - LOG_MIN_RESOLUTION));\n this.setMapSize(resolution);\n\n const softFar = size.y / 2;\n const hardFar = size.y * scaleY;\n\n camera.near = 0;\n camera.far = lerp(hardFar, softFar, softness);\n // we have co-opted opacity to scale the depth to clip\n this.depthMaterial.opacity = 1.0 / softness;\n camera.updateProjectionMatrix();\n // this.cameraHelper.update();\n\n this.setIntensity(this.intensity);\n this.setOffset(0);\n }\n\n /**\n * Lower-level version of the above function.\n */\n setMapSize(maxMapSize: number) {\n const {size} = this;\n\n if (this.isAnimated) {\n maxMapSize *= ANIMATION_SCALING;\n }\n\n const baseWidth =\n Math.floor(size.x > size.z ? maxMapSize : maxMapSize * size.x / size.z);\n const baseHeight =\n Math.floor(size.x > size.z ? maxMapSize * size.z / size.x : maxMapSize);\n // width of blur filter in pixels (not adjustable)\n const TAP_WIDTH = 10;\n const width = TAP_WIDTH + baseWidth;\n const height = TAP_WIDTH + baseHeight;\n\n if (this.renderTarget != null &&\n (this.renderTarget.width !== width ||\n this.renderTarget.height !== height)) {\n this.renderTarget.dispose();\n this.renderTarget = null;\n this.renderTargetBlur!.dispose();\n this.renderTargetBlur = null;\n }\n\n if (this.renderTarget == null) {\n const params: WebGLRenderTargetOptions = {format: RGBAFormat};\n this.renderTarget = new WebGLRenderTarget(width, height, params);\n this.renderTargetBlur = new WebGLRenderTarget(width, height, params);\n\n (this.floor.material as MeshBasicMaterial).map =\n this.renderTarget.texture;\n }\n\n // These pads account for the softening radius around the shadow.\n this.camera.scale.set(\n size.x * (1 + TAP_WIDTH / baseWidth),\n size.z * (1 + TAP_WIDTH / baseHeight),\n 1);\n this.needsUpdate = true;\n }\n\n /**\n * Set the shadow's intensity (0 to 1), which is just its opacity. Turns off\n * shadow rendering if zero.\n */\n setIntensity(intensity: number) {\n this.intensity = intensity;\n if (intensity > 0) {\n this.visible = true;\n this.floor.visible = true;\n (this.floor.material as MeshBasicMaterial).opacity = intensity *\n lerp(DEFAULT_HARD_INTENSITY, 1, this.softness * this.softness);\n } else {\n this.visible = false;\n this.floor.visible = false;\n }\n }\n\n getIntensity(): number {\n return this.intensity;\n }\n\n /**\n * An offset can be specified to move the\n * shadow vertically relative to the bottom of the scene. Positive is up, so\n * values are generally negative. A small offset keeps our shadow from\n * z-fighting with any baked-in shadow plane.\n */\n setOffset(offset: number) {\n this.floor.position.z = -offset + 0.001 * this.maxDimension;\n }\n\n render(renderer: WebGLRenderer, scene: Scene) {\n // this.cameraHelper.visible = false;\n\n // force the depthMaterial to everything\n scene.overrideMaterial = this.depthMaterial;\n\n // set renderer clear alpha\n const initialClearAlpha = renderer.getClearAlpha();\n renderer.setClearAlpha(0);\n this.floor.visible = false;\n\n // disable XR for offscreen rendering\n const xrEnabled = renderer.xr.enabled;\n renderer.xr.enabled = false;\n\n // render to the render target to get the depths\n const oldRenderTarget = renderer.getRenderTarget();\n renderer.setRenderTarget(this.renderTarget);\n renderer.render(scene, this.camera);\n\n // and reset the override material\n scene.overrideMaterial = null;\n this.floor.visible = true;\n\n this.blurShadow(renderer);\n\n // reset and render the normal scene\n renderer.xr.enabled = xrEnabled;\n renderer.setRenderTarget(oldRenderTarget);\n renderer.setClearAlpha(initialClearAlpha);\n // this.cameraHelper.visible = true;\n }\n\n blurShadow(renderer: WebGLRenderer) {\n const {\n camera,\n horizontalBlurMaterial,\n verticalBlurMaterial,\n renderTarget,\n renderTargetBlur,\n blurPlane\n } = this;\n blurPlane.visible = true;\n\n // blur horizontally and draw in the renderTargetBlur\n blurPlane.material = horizontalBlurMaterial;\n horizontalBlurMaterial.uniforms.h.value = 1 / this.renderTarget!.width;\n horizontalBlurMaterial.uniforms.tDiffuse.value = this.renderTarget!.texture;\n\n renderer.setRenderTarget(renderTargetBlur);\n renderer.render(blurPlane, camera);\n\n // blur vertically and draw in the main renderTarget\n blurPlane.material = verticalBlurMaterial;\n verticalBlurMaterial.uniforms.v.value = 1 / this.renderTarget!.height;\n verticalBlurMaterial.uniforms.tDiffuse.value =\n this.renderTargetBlur!.texture;\n\n renderer.setRenderTarget(renderTarget);\n renderer.render(blurPlane, camera);\n\n blurPlane.visible = false;\n }\n\n dispose() {\n if (this.renderTarget != null) {\n this.renderTarget.dispose();\n }\n if (this.renderTargetBlur != null) {\n this.renderTargetBlur.dispose();\n }\n this.depthMaterial.dispose();\n this.horizontalBlurMaterial.dispose();\n this.verticalBlurMaterial.dispose();\n (this.floor.material as Material).dispose();\n this.floor.geometry.dispose();\n this.blurPlane.geometry.dispose();\n this.removeFromParent();\n }\n}","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {AnimationAction, AnimationClip, AnimationMixer, Box3, Camera, Euler, Event as ThreeEvent, LoopPingPong, LoopRepeat, Material, Matrix3, Mesh, Object3D, PerspectiveCamera, Raycaster, Scene, Sphere, Texture, Vector2, Vector3, WebGLRenderer} from 'three';\nimport {CSS2DRenderer} from 'three/examples/jsm/renderers/CSS2DRenderer.js';\n\nimport {$currentGLTF, $model, $originalGltfJson} from '../features/scene-graph.js';\nimport ModelViewerElementBase, {$renderer, RendererInterface} from '../model-viewer-base.js';\nimport {ModelViewerElement} from '../model-viewer.js';\nimport {normalizeUnit} from '../styles/conversions.js';\nimport {NumberNode, parseExpressions} from '../styles/parsers.js';\nimport {resolveDpr} from '../utilities.js';\n\nimport {Damper, SETTLING_TIME} from './Damper.js';\nimport {ModelViewerGLTFInstance} from './gltf-instance/ModelViewerGLTFInstance.js';\nimport {Hotspot} from './Hotspot.js';\nimport {reduceVertices} from './ModelUtils.js';\nimport {Shadow} from './Shadow.js';\n\nconst MIN_SHADOW_RATIO = 100;\n\nexport interface ModelLoadEvent extends ThreeEvent {\n url: string;\n}\n\nexport interface ModelSceneConfig {\n element: ModelViewerElementBase;\n canvas: HTMLCanvasElement;\n width: number;\n height: number;\n}\n\nexport type IlluminationRole = 'primary'|'secondary';\n\nexport const IlluminationRole: {[index: string]: IlluminationRole} = {\n Primary: 'primary',\n Secondary: 'secondary'\n};\n\nconst view = new Vector3();\nconst target = new Vector3();\nconst normalWorld = new Vector3();\n\nconst raycaster = new Raycaster();\nconst vector3 = new Vector3();\nconst ndc = new Vector2();\n\n/**\n * A THREE.Scene object that takes a Model and CanvasHTMLElement and\n * constructs a framed scene based off of the canvas dimensions.\n * Provides lights and cameras to be used in a renderer.\n */\nexport class ModelScene extends Scene {\n public element: ModelViewerElement;\n public canvas: HTMLCanvasElement;\n public annotationRenderer = new CSS2DRenderer();\n public schemaElement = document.createElement('script');\n public width = 1;\n public height = 1;\n public aspect = 1;\n public scaleStep = 0;\n public renderCount = 0;\n public externalRenderer: RendererInterface|null = null;\n\n // These default camera values are never used, as they are reset once the\n // model is loaded and framing is computed.\n public camera = new PerspectiveCamera(45, 1, 0.1, 100);\n public xrCamera: Camera|null = null;\n\n public url: string|null = null;\n public target = new Object3D();\n public animationNames: Array = [];\n public boundingBox = new Box3();\n public boundingSphere = new Sphere();\n public size = new Vector3();\n public idealAspect = 0;\n public framedFoVDeg = 0;\n\n public shadow: Shadow|null = null;\n public shadowIntensity = 0;\n public shadowSoftness = 1;\n public bakedShadows = new Set();\n\n public exposure = 1;\n public canScale = true;\n\n private isDirty = false;\n\n private goalTarget = new Vector3();\n private targetDamperX = new Damper();\n private targetDamperY = new Damper();\n private targetDamperZ = new Damper();\n\n private _currentGLTF: ModelViewerGLTFInstance|null = null;\n private _model: Object3D|null = null;\n private mixer: AnimationMixer;\n private cancelPendingSourceChange: (() => void)|null = null;\n private animationsByName: Map = new Map();\n private currentAnimationAction: AnimationAction|null = null;\n\n constructor({canvas, element, width, height}: ModelSceneConfig) {\n super();\n\n this.name = 'ModelScene';\n\n this.element = element as ModelViewerElement;\n this.canvas = canvas;\n\n // These default camera values are never used, as they are reset once the\n // model is loaded and framing is computed.\n this.camera = new PerspectiveCamera(45, 1, 0.1, 100);\n this.camera.name = 'MainCamera';\n\n this.add(this.target);\n\n this.setSize(width, height);\n\n this.target.name = 'Target';\n\n this.mixer = new AnimationMixer(this.target);\n\n const {domElement} = this.annotationRenderer;\n const {style} = domElement;\n style.display = 'none';\n style.pointerEvents = 'none';\n style.position = 'absolute';\n style.top = '0';\n this.element.shadowRoot!.querySelector('.default')!.appendChild(domElement);\n\n this.schemaElement.setAttribute('type', 'application/ld+json');\n }\n\n /**\n * Function to create the context lazily, as when there is only one\n * element, the renderer's 3D context can be displayed\n * directly. This extra context is necessary to copy the renderings into when\n * there are more than one.\n */\n get context() {\n return this.canvas.getContext('2d');\n }\n\n getCamera(): Camera {\n return this.xrCamera != null ? this.xrCamera : this.camera;\n }\n\n queueRender() {\n this.isDirty = true;\n }\n\n shouldRender() {\n return this.isDirty;\n }\n\n hasRendered() {\n this.isDirty = false;\n }\n\n forceRescale() {\n this.scaleStep = -1;\n this.queueRender();\n }\n\n /**\n * Pass in a THREE.Object3D to be controlled\n * by this model.\n */\n async setObject(model: Object3D) {\n this.reset();\n this._model = model;\n this.target.add(model);\n await this.setupScene();\n }\n\n /**\n * Sets the model via URL.\n */\n\n async setSource(\n url: string|null,\n progressCallback: (progress: number) => void = () => {}) {\n if (!url || url === this.url) {\n progressCallback(1);\n return;\n }\n this.reset();\n this.url = url;\n\n if (this.externalRenderer != null) {\n const framingInfo = await this.externalRenderer.load(progressCallback);\n\n this.boundingSphere.radius = framingInfo.framedRadius;\n this.idealAspect = framingInfo.fieldOfViewAspect;\n return;\n }\n\n // If we have pending work due to a previous source change in progress,\n // cancel it so that we do not incur a race condition:\n if (this.cancelPendingSourceChange != null) {\n this.cancelPendingSourceChange!();\n this.cancelPendingSourceChange = null;\n }\n\n let gltf: ModelViewerGLTFInstance;\n\n try {\n gltf = await new Promise(\n async (resolve, reject) => {\n this.cancelPendingSourceChange = () => reject();\n try {\n const result = await this.element[$renderer].loader.load(\n url, this.element, progressCallback);\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n } catch (error) {\n if (error == null) {\n // Loading was cancelled, so silently return\n return;\n }\n\n throw error;\n }\n\n this.cancelPendingSourceChange = null;\n this.reset();\n this.url = url;\n this._currentGLTF = gltf;\n\n if (gltf != null) {\n this._model = gltf.scene;\n this.target.add(gltf.scene);\n }\n\n const {animations} = gltf!;\n const animationsByName = new Map();\n const animationNames = [];\n\n for (const animation of animations) {\n animationsByName.set(animation.name, animation);\n animationNames.push(animation.name);\n }\n\n this.animations = animations;\n this.animationsByName = animationsByName;\n this.animationNames = animationNames;\n\n await this.setupScene();\n }\n\n private async setupScene() {\n this.applyTransform();\n this.updateBoundingBox();\n\n await this.updateFraming();\n\n this.updateShadow();\n this.setShadowIntensity(this.shadowIntensity);\n }\n\n reset() {\n this.url = null;\n this.queueRender();\n if (this.shadow != null) {\n this.shadow.setIntensity(0);\n }\n this.bakedShadows.clear();\n\n const {_model} = this;\n if (_model != null) {\n _model.removeFromParent();\n this._model = null;\n }\n\n const gltf = this._currentGLTF;\n if (gltf != null) {\n gltf.dispose();\n this._currentGLTF = null;\n }\n\n if (this.currentAnimationAction != null) {\n this.currentAnimationAction.stop();\n this.currentAnimationAction = null;\n }\n\n this.mixer.stopAllAction();\n this.mixer.uncacheRoot(this);\n }\n\n dispose() {\n this.reset();\n if (this.shadow != null) {\n this.shadow.dispose();\n this.shadow = null;\n }\n (this.element as any)[$currentGLTF] = null;\n (this.element as any)[$originalGltfJson] = null;\n (this.element as any)[$model] = null;\n }\n\n get currentGLTF() {\n return this._currentGLTF;\n }\n\n /**\n * Updates the ModelScene for a new container size in CSS pixels.\n */\n setSize(width: number, height: number) {\n if (this.width === width && this.height === height) {\n return;\n }\n this.width = Math.max(width, 1);\n this.height = Math.max(height, 1);\n this.annotationRenderer.setSize(width, height);\n\n this.aspect = this.width / this.height;\n\n if (this.externalRenderer != null) {\n const dpr = resolveDpr();\n this.externalRenderer.resize(width * dpr, height * dpr);\n }\n\n this.queueRender();\n }\n\n markBakedShadow(mesh: Mesh) {\n mesh.userData.shadow = true;\n this.bakedShadows.add(mesh);\n }\n\n unmarkBakedShadow(mesh: Mesh) {\n mesh.userData.shadow = false;\n mesh.visible = true;\n this.bakedShadows.delete(mesh);\n this.boundingBox.expandByObject(mesh);\n }\n\n findBakedShadows(group: Object3D) {\n const boundingBox = new Box3();\n\n group.traverse((object: Object3D) => {\n const mesh = object as Mesh;\n if (!mesh.isMesh) {\n return;\n }\n const material = mesh.material as Material;\n if (!material.transparent) {\n return;\n }\n boundingBox.setFromObject(mesh);\n const size = boundingBox.getSize(vector3);\n const minDim = Math.min(size.x, size.y, size.z);\n const maxDim = Math.max(size.x, size.y, size.z);\n if (maxDim < MIN_SHADOW_RATIO * minDim) {\n return;\n }\n this.markBakedShadow(mesh);\n });\n }\n\n checkBakedShadows() {\n const {min, max} = this.boundingBox;\n const shadowBox = new Box3();\n this.boundingBox.getSize(this.size);\n\n for (const mesh of this.bakedShadows) {\n shadowBox.setFromObject(mesh);\n if (shadowBox.min.y < min.y + this.size.y / MIN_SHADOW_RATIO &&\n shadowBox.min.x <= min.x && shadowBox.max.x >= max.x &&\n shadowBox.min.z <= min.z && shadowBox.max.z >= max.z) {\n // floor shadow\n continue;\n }\n if (shadowBox.min.z < min.z + this.size.z / MIN_SHADOW_RATIO &&\n shadowBox.min.x <= min.x && shadowBox.max.x >= max.x &&\n shadowBox.min.y <= min.y && shadowBox.max.y >= max.y) {\n // wall shadow\n continue;\n }\n this.unmarkBakedShadow(mesh);\n }\n }\n\n applyTransform() {\n const {model} = this;\n if (model == null) {\n return;\n }\n const orientation = parseExpressions(this.element.orientation)[0]\n .terms as [NumberNode, NumberNode, NumberNode];\n\n const roll = normalizeUnit(orientation[0]).number;\n const pitch = normalizeUnit(orientation[1]).number;\n const yaw = normalizeUnit(orientation[2]).number;\n\n model.quaternion.setFromEuler(new Euler(pitch, yaw, roll, 'YXZ'));\n\n const scale = parseExpressions(this.element.scale)[0]\n .terms as [NumberNode, NumberNode, NumberNode];\n\n model.scale.set(scale[0].number, scale[1].number, scale[2].number);\n }\n\n updateBoundingBox() {\n const {model} = this;\n if (model == null) {\n return;\n }\n this.target.remove(model);\n\n this.findBakedShadows(model);\n\n const bound = (box: Box3, vertex: Vector3): Box3 => {\n return box.expandByPoint(vertex);\n };\n this.setBakedShadowVisibility(false);\n this.boundingBox = reduceVertices(model, bound, new Box3());\n // If there's nothing but the baked shadow, then it's not a baked shadow.\n if (this.boundingBox.isEmpty()) {\n this.setBakedShadowVisibility(true);\n this.bakedShadows.forEach((mesh) => this.unmarkBakedShadow(mesh));\n this.boundingBox = reduceVertices(model, bound, new Box3());\n }\n this.checkBakedShadows();\n this.setBakedShadowVisibility();\n\n this.boundingBox.getSize(this.size);\n\n this.target.add(model);\n }\n\n /**\n * Calculates the boundingSphere and idealAspect that allows the 3D\n * object to be framed tightly in a 2D window of any aspect ratio without\n * clipping at any camera orbit. The camera's center target point can be\n * optionally specified. If no center is specified, it defaults to the center\n * of the bounding box, which means asymmetric models will tend to be tight on\n * one side instead of both. Proper choice of center can correct this.\n */\n async updateFraming() {\n const {model} = this;\n if (model == null) {\n return;\n }\n this.target.remove(model);\n this.setBakedShadowVisibility(false);\n const {center} = this.boundingSphere;\n\n this.element.requestUpdate('cameraTarget');\n await this.element.updateComplete;\n center.copy(this.getTarget());\n\n const radiusSquared = (value: number, vertex: Vector3): number => {\n return Math.max(value, center!.distanceToSquared(vertex));\n };\n this.boundingSphere.radius =\n Math.sqrt(reduceVertices(model, radiusSquared, 0));\n\n const horizontalTanFov = (value: number, vertex: Vector3): number => {\n vertex.sub(center!);\n const radiusXZ = Math.sqrt(vertex.x * vertex.x + vertex.z * vertex.z);\n return Math.max(\n value, radiusXZ / (this.idealCameraDistance() - Math.abs(vertex.y)));\n };\n this.idealAspect = reduceVertices(model, horizontalTanFov, 0) /\n Math.tan((this.framedFoVDeg / 2) * Math.PI / 180);\n\n this.setBakedShadowVisibility();\n this.target.add(model);\n }\n\n setBakedShadowVisibility(visible: boolean = this.shadowIntensity <= 0) {\n for (const shadow of this.bakedShadows) {\n shadow.visible = visible;\n }\n }\n\n idealCameraDistance(): number {\n const halfFovRad = (this.framedFoVDeg / 2) * Math.PI / 180;\n return this.boundingSphere.radius / Math.sin(halfFovRad);\n }\n\n /**\n * Set's the framedFieldOfView based on the aspect ratio of the window in\n * order to keep the model fully visible at any camera orientation.\n */\n adjustedFoV(fovDeg: number): number {\n const vertical = Math.tan((fovDeg / 2) * Math.PI / 180) *\n Math.max(1, this.idealAspect / this.aspect);\n return 2 * Math.atan(vertical) * 180 / Math.PI;\n }\n\n getNDC(clientX: number, clientY: number): Vector2 {\n if (this.xrCamera != null) {\n ndc.set(clientX / window.screen.width, clientY / window.screen.height);\n } else {\n const rect = this.element.getBoundingClientRect();\n ndc.set(\n (clientX - rect.x) / this.width, (clientY - rect.y) / this.height);\n }\n\n ndc.multiplyScalar(2).subScalar(1);\n ndc.y *= -1;\n return ndc;\n }\n\n /**\n * Returns the size of the corresponding canvas element.\n */\n getSize(): {width: number, height: number} {\n return {width: this.width, height: this.height};\n }\n\n setEnvironmentAndSkybox(environment: Texture|null, skybox: Texture|null) {\n if (this.element[$renderer].arRenderer.presentedScene === this) {\n return;\n }\n this.environment = environment;\n this.background = skybox;\n this.queueRender();\n }\n\n /**\n * Sets the point in model coordinates the model should orbit/pivot around.\n */\n setTarget(modelX: number, modelY: number, modelZ: number) {\n this.goalTarget.set(-modelX, -modelY, -modelZ);\n }\n\n /**\n * Set the decay time of, affects the speed of target transitions.\n */\n setTargetDamperDecayTime(decayMilliseconds: number) {\n this.targetDamperX.setDecayTime(decayMilliseconds);\n this.targetDamperY.setDecayTime(decayMilliseconds);\n this.targetDamperZ.setDecayTime(decayMilliseconds);\n }\n\n /**\n * Gets the point in model coordinates the model should orbit/pivot around.\n */\n getTarget(): Vector3 {\n return this.goalTarget.clone().multiplyScalar(-1);\n }\n\n /**\n * Shifts the model to the target point immediately instead of easing in.\n */\n jumpToGoal() {\n this.updateTarget(SETTLING_TIME);\n }\n\n /**\n * This should be called every frame with the frame delta to cause the target\n * to transition to its set point.\n */\n updateTarget(delta: number): boolean {\n const goal = this.goalTarget;\n const target = this.target.position;\n if (!goal.equals(target)) {\n const normalization = this.boundingSphere.radius / 10;\n let {x, y, z} = target;\n x = this.targetDamperX.update(x, goal.x, delta, normalization);\n y = this.targetDamperY.update(y, goal.y, delta, normalization);\n z = this.targetDamperZ.update(z, goal.z, delta, normalization);\n this.target.position.set(x, y, z);\n this.target.updateMatrixWorld();\n this.queueRender();\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Yaw the +z (front) of the model toward the indicated world coordinates.\n */\n pointTowards(worldX: number, worldZ: number) {\n const {x, z} = this.position;\n this.yaw = Math.atan2(worldX - x, worldZ - z);\n }\n\n get model() {\n return this._model;\n }\n\n /**\n * Yaw is the scene's orientation about the y-axis, around the rotation\n * center.\n */\n set yaw(radiansY: number) {\n this.rotation.y = radiansY;\n this.queueRender();\n }\n\n get yaw(): number {\n return this.rotation.y;\n }\n\n set animationTime(value: number) {\n this.mixer.setTime(value);\n this.queueShadowRender();\n }\n\n get animationTime(): number {\n if (this.currentAnimationAction != null) {\n const loopCount =\n Math.max((this.currentAnimationAction as any)._loopCount, 0);\n if (this.currentAnimationAction.loop === LoopPingPong &&\n (loopCount & 1) === 1) {\n return this.duration - this.currentAnimationAction.time\n } else {\n return this.currentAnimationAction.time;\n }\n }\n\n return 0;\n }\n\n set animationTimeScale(value: number) {\n this.mixer.timeScale = value;\n }\n\n get animationTimeScale(): number {\n return this.mixer.timeScale;\n }\n\n get duration(): number {\n if (this.currentAnimationAction != null &&\n this.currentAnimationAction.getClip()) {\n return this.currentAnimationAction.getClip().duration;\n }\n\n return 0;\n }\n\n get hasActiveAnimation(): boolean {\n return this.currentAnimationAction != null;\n }\n\n /**\n * Plays an animation if there are any associated with the current model.\n * Accepts an optional string name of an animation to play. If no name is\n * provided, or if no animation is found by the given name, always falls back\n * to playing the first animation.\n */\n playAnimation(\n name: string|null = null, crossfadeTime: number = 0,\n loopMode: number = LoopRepeat, repetitionCount: number = Infinity) {\n if (this._currentGLTF == null) {\n return;\n }\n const {animations} = this;\n if (animations == null || animations.length === 0) {\n console.warn(\n `Cannot play animation (model does not have any animations)`);\n return;\n }\n\n let animationClip = null;\n\n if (name != null) {\n animationClip = this.animationsByName.get(name);\n\n if (animationClip == null) {\n const parsedAnimationIndex = parseInt(name);\n\n if (!isNaN(parsedAnimationIndex) && parsedAnimationIndex >= 0 &&\n parsedAnimationIndex < animations.length) {\n animationClip = animations[parsedAnimationIndex];\n }\n }\n }\n\n if (animationClip == null) {\n animationClip = animations[0];\n }\n\n try {\n const {currentAnimationAction: lastAnimationAction} = this;\n\n const action = this.mixer.clipAction(animationClip, this);\n this.currentAnimationAction = action;\n\n if (this.element.paused) {\n this.mixer.stopAllAction();\n } else {\n action.paused = false;\n if (lastAnimationAction != null && action !== lastAnimationAction) {\n action.crossFadeFrom(lastAnimationAction, crossfadeTime, false);\n } else if (\n this.animationTimeScale > 0 &&\n this.animationTime == this.duration) {\n // This is a workaround for what I believe is a three.js bug.\n this.animationTime = 0;\n }\n }\n\n action.setLoop(loopMode, repetitionCount);\n\n action.enabled = true;\n action.clampWhenFinished = true;\n\n action.play();\n } catch (error) {\n console.error(error);\n }\n }\n\n stopAnimation() {\n this.currentAnimationAction = null;\n this.mixer.stopAllAction();\n }\n\n updateAnimation(step: number) {\n this.mixer.update(step);\n this.queueShadowRender();\n }\n\n subscribeMixerEvent(event: string, callback: (...args: any[]) => void) {\n this.mixer.addEventListener(event, callback);\n }\n\n /**\n * Call if the object has been changed in such a way that the shadow's shape\n * has changed (not a rotation about the Y axis).\n */\n updateShadow() {\n const shadow = this.shadow;\n if (shadow != null) {\n const side = this.element.arPlacement === 'wall' ? 'back' : 'bottom';\n shadow.setScene(this, this.shadowSoftness, side);\n shadow.needsUpdate = true;\n }\n }\n\n renderShadow(renderer: WebGLRenderer) {\n const shadow = this.shadow;\n if (shadow != null && shadow.needsUpdate == true) {\n shadow.render(renderer, this);\n shadow.needsUpdate = false;\n }\n }\n\n private queueShadowRender() {\n if (this.shadow != null) {\n this.shadow.needsUpdate = true;\n }\n }\n\n /**\n * Sets the shadow's intensity, lazily creating the shadow as necessary.\n */\n setShadowIntensity(shadowIntensity: number) {\n this.shadowIntensity = shadowIntensity;\n if (this._currentGLTF == null) {\n return;\n }\n this.setBakedShadowVisibility();\n if (shadowIntensity <= 0 && this.shadow == null) {\n return;\n }\n\n if (this.shadow == null) {\n const side = this.element.arPlacement === 'wall' ? 'back' : 'bottom';\n this.shadow = new Shadow(this, this.shadowSoftness, side);\n }\n this.shadow.setIntensity(shadowIntensity);\n }\n\n /**\n * Sets the shadow's softness by mapping a [0, 1] softness parameter to the\n * shadow's resolution. This involves reallocation, so it should not be\n * changed frequently. Softer shadows are cheaper to render.\n */\n setShadowSoftness(softness: number) {\n this.shadowSoftness = softness;\n const shadow = this.shadow;\n if (shadow != null) {\n shadow.setSoftness(softness);\n }\n }\n\n /**\n * Shift the floor vertically from the bottom of the model's bounding box by\n * offset (should generally be negative).\n */\n setShadowOffset(offset: number) {\n const shadow = this.shadow;\n if (shadow != null) {\n shadow.setOffset(offset);\n }\n }\n\n get raycaster() {\n return raycaster;\n }\n\n /**\n * This method returns the world position, model-space normal and texture\n * coordinate of the point on the mesh corresponding to the input pixel\n * coordinates given relative to the model-viewer element. If the mesh\n * is not hit, the result is null.\n */\n positionAndNormalFromPoint(ndcPosition: Vector2, object: Object3D = this):\n {position: Vector3, normal: Vector3, uv: Vector2|null}|null {\n this.raycaster.setFromCamera(ndcPosition, this.getCamera());\n const hits = this.raycaster.intersectObject(object, true);\n\n const hit =\n hits.find((hit) => hit.object.visible && !hit.object.userData.shadow);\n if (hit == null || hit.face == null) {\n return null;\n }\n\n if (hit.uv == null) {\n return {position: hit.point, normal: hit.face.normal, uv: null};\n }\n\n hit.face.normal.applyNormalMatrix(\n new Matrix3().getNormalMatrix(hit.object.matrixWorld));\n\n return {position: hit.point, normal: hit.face.normal, uv: hit.uv};\n }\n\n /**\n * The following methods are for operating on the set of Hotspot objects\n * attached to the scene. These come from DOM elements, provided to slots by\n * the Annotation Mixin.\n */\n addHotspot(hotspot: Hotspot) {\n this.target.add(hotspot);\n // This happens automatically in render(), but we do it early so that\n // the slots appear in the shadow DOM and the elements get attached,\n // allowing us to dispatch events on them.\n this.annotationRenderer.domElement.appendChild(hotspot.element);\n }\n\n removeHotspot(hotspot: Hotspot) {\n this.target.remove(hotspot);\n }\n\n /**\n * Helper method to apply a function to all hotspots.\n */\n forHotspots(func: (hotspot: Hotspot) => void) {\n const {children} = this.target;\n for (let i = 0, l = children.length; i < l; i++) {\n const hotspot = children[i];\n if (hotspot instanceof Hotspot) {\n func(hotspot);\n }\n }\n }\n\n /**\n * Update the CSS visibility of the hotspots based on whether their normals\n * point toward the camera.\n */\n updateHotspots(viewerPosition: Vector3) {\n this.forHotspots((hotspot) => {\n view.copy(viewerPosition);\n target.setFromMatrixPosition(hotspot.matrixWorld);\n view.sub(target);\n normalWorld.copy(hotspot.normal)\n .transformDirection(this.target.matrixWorld);\n if (view.dot(normalWorld) < 0) {\n hotspot.hide();\n } else {\n hotspot.show();\n }\n });\n }\n\n /**\n * Rotate all hotspots to an absolute orientation given by the input number of\n * radians. Zero returns them to upright.\n */\n orientHotspots(radians: number) {\n this.forHotspots((hotspot) => {\n hotspot.orient(radians);\n });\n }\n\n /**\n * Set the rendering visibility of all hotspots. This is used to hide them\n * during transitions and such.\n */\n setHotspotsVisibility(visible: boolean) {\n this.forHotspots((hotspot) => {\n hotspot.visible = visible;\n });\n }\n\n updateSchema(src: string|null) {\n const {schemaElement, element} = this;\n const {alt, poster, iosSrc} = element;\n if (src != null) {\n const encoding = [{\n '@type': 'MediaObject',\n contentUrl: src,\n encodingFormat: src.split('.').pop()?.toLowerCase() === 'gltf' ?\n 'model/gltf+json' :\n 'model/gltf-binary'\n }];\n\n if (iosSrc) {\n encoding.push({\n '@type': 'MediaObject',\n contentUrl: iosSrc,\n encodingFormat: 'model/vnd.usdz+zip'\n });\n }\n\n const structuredData = {\n '@context': 'http://schema.org/',\n '@type': '3DModel',\n image: poster ?? undefined,\n name: alt ?? undefined,\n encoding\n };\n\n schemaElement.textContent = JSON.stringify(structuredData);\n document.head.appendChild(schemaElement);\n } else if (schemaElement.parentElement != null) {\n schemaElement.parentElement.removeChild(schemaElement);\n }\n }\n}\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Converts a base64 string which represents a data url\n * into a Blob of the same contents.\n */\nexport const dataUrlToBlob = async(base64DataUrl: string): Promise => {\n return new Promise((resolve, reject) => {\n const sliceSize = 512;\n const typeMatch = base64DataUrl.match(/data:(.*);/);\n\n if (!typeMatch) {\n return reject(new Error(`${base64DataUrl} is not a valid data Url`));\n }\n\n const type = typeMatch[1];\n const base64 = base64DataUrl.replace(/data:image\\/\\w+;base64,/, '');\n\n const byteCharacters = atob(base64);\n const byteArrays = [];\n\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n const slice = byteCharacters.slice(offset, offset + sliceSize);\n\n const byteNumbers = new Array(slice.length);\n for (let i = 0; i < slice.length; i++) {\n byteNumbers[i] = slice.charCodeAt(i);\n }\n\n const byteArray = new Uint8Array(byteNumbers);\n byteArrays.push(byteArray);\n }\n\n resolve(new Blob(byteArrays, {type}));\n });\n};\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {clamp} from '../utilities.js';\n\ninterface OngoingActivity {\n progress: number;\n completed: boolean;\n}\n\n/**\n * An Activity is represented by a callback that accepts values from 0 to 1,\n * where 1 represents the completion of the activity. The callback returns the\n * actual progress as it is stored by the ProgressTracker (which may be clamped,\n * and can never be lower than its previous value).\n */\nexport type Activity = (progress: number) => number;\n\n/**\n * A progress event contains the total progress of all ongoing activities in the\n * ProgressTracker. The total progress is a heuristic, but has some useful\n * properties: for a single activity, it equals the input progress; for multiple\n * activities that progress in lockstep, it will also equal each input progress.\n * When more activities overlap as time goes on, total progress will tend to\n * decelerate.\n */\nexport interface ProgressDetails {\n totalProgress: number;\n}\n\n/**\n * ProgressTracker is an event emitter that helps to track the ongoing progress\n * of many simultaneous actions.\n *\n * ProgressTracker reports progress activity in the form of a progress event.\n * The event.detail.totalProgress value indicates the elapsed progress of all\n * activities being tracked by the ProgressTracker.\n *\n * The value of totalProgress is a number that progresses from 0 to 1. The\n * ProgressTracker allows for the lazy accumulation of tracked actions, so the\n * total progress represents a abstract, non-absolute progress towards the\n * completion of all currently tracked events.\n *\n * When all currently tracked activities are finished, the ProgressTracker\n * emits one final progress event and then resets the list of its currently\n * tracked activities. This means that from an observer's perspective,\n * ongoing activities will accumulate and collectively contribute to the notion\n * of total progress until all currently tracked ongoing activities have\n * completed.\n */\nexport class ProgressTracker extends EventTarget {\n private ongoingActivities: Set = new Set();\n private totalProgress = 0;\n\n /**\n * The total number of activities currently being tracked.\n */\n get ongoingActivityCount(): number {\n return this.ongoingActivities.size;\n }\n\n /**\n * Registers a new activity to be tracked by the progress tracker. The method\n * returns a special callback that should be invoked whenever new progress is\n * ready to be reported. The progress should be reported as a value between 0\n * and 1, where 0 would represent the beginning of the action and 1 would\n * represent its completion.\n *\n * There is no built-in notion of a time-out for ongoing activities, so once\n * an ongoing activity is begun, it is up to the consumer of this API to\n * update the progress until that activity is no longer ongoing.\n *\n * Progress is only allowed to move forward for any given activity. If a lower\n * progress is reported than the previously reported progress, it will be\n * ignored.\n */\n beginActivity(): Activity {\n const activity: OngoingActivity = {progress: 0, completed: false};\n\n this.ongoingActivities.add(activity);\n\n if (this.ongoingActivityCount === 1) {\n // Announce the first progress event (which should always be 0 / 1\n // total progress):\n this.announceTotalProgress(activity, 0);\n }\n\n return (progress: number): number => {\n let nextProgress: number;\n\n nextProgress = Math.max(clamp(progress, 0, 1), activity.progress);\n\n if (nextProgress !== activity.progress) {\n this.announceTotalProgress(activity, nextProgress);\n }\n\n return activity.progress;\n };\n }\n\n private announceTotalProgress(\n updatedActivity: OngoingActivity, nextProgress: number) {\n let progressLeft = 0;\n let completedActivities = 0;\n\n if (nextProgress == 1.0)\n updatedActivity.completed = true;\n\n for (const activity of this.ongoingActivities) {\n const {progress} = activity;\n progressLeft += 1.0 - progress;\n\n if (activity.completed === true) {\n completedActivities++;\n }\n }\n\n const lastProgress = updatedActivity.progress;\n updatedActivity.progress = nextProgress;\n\n // Advance the total progress by the fraction of total remaining progress\n // due to this activity.\n this.totalProgress += (nextProgress - lastProgress) *\n (1.0 - this.totalProgress) / progressLeft;\n\n const totalProgress = completedActivities === this.ongoingActivityCount ?\n 1.0 :\n this.totalProgress;\n\n this.dispatchEvent(new CustomEvent(\n 'progress', {detail: {totalProgress}}));\n\n if (completedActivities === this.ongoingActivityCount) {\n this.totalProgress = 0.0;\n this.ongoingActivities.clear();\n }\n }\n}\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ReactiveElement} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {Event as ThreeEvent, Vector2, Vector3} from 'three';\n\nimport {HAS_INTERSECTION_OBSERVER, HAS_RESIZE_OBSERVER} from './constants.js';\nimport {$updateEnvironment} from './features/environment.js';\nimport {makeTemplate} from './template.js';\nimport {$evictionPolicy, CachingGLTFLoader} from './three-components/CachingGLTFLoader.js';\nimport {ModelScene} from './three-components/ModelScene.js';\nimport {ContextLostEvent, Renderer} from './three-components/Renderer.js';\nimport {clamp, debounce} from './utilities.js';\nimport {dataUrlToBlob} from './utilities/data-conversion.js';\nimport {ProgressTracker} from './utilities/progress-tracker.js';\n\nconst CLEAR_MODEL_TIMEOUT_MS = 1000;\nconst FALLBACK_SIZE_UPDATE_THRESHOLD_MS = 50;\nconst ANNOUNCE_MODEL_VISIBILITY_DEBOUNCE_THRESHOLD = 0;\nconst UNSIZED_MEDIA_WIDTH = 300;\nconst UNSIZED_MEDIA_HEIGHT = 150;\n\nexport const blobCanvas = document.createElement('canvas');\n\nconst $fallbackResizeHandler = Symbol('fallbackResizeHandler');\nconst $defaultAriaLabel = Symbol('defaultAriaLabel');\n\nconst $resizeObserver = Symbol('resizeObserver');\nconst $clearModelTimeout = Symbol('clearModelTimeout');\nconst $onContextLost = Symbol('onContextLost');\nconst $loaded = Symbol('loaded');\nconst $status = Symbol('status');\nconst $onFocus = Symbol('onFocus');\nconst $onBlur = Symbol('onBlur');\n\nexport const $updateSize = Symbol('updateSize');\nexport const $intersectionObserver = Symbol('intersectionObserver');\nexport const $isElementInViewport = Symbol('isElementInViewport');\nexport const $announceModelVisibility = Symbol('announceModelVisibility');\nexport const $ariaLabel = Symbol('ariaLabel');\nexport const $altDefaulted = Symbol('altDefaulted');\nexport const $statusElement = Symbol('statusElement');\nexport const $updateStatus = Symbol('updateStatus');\nexport const $loadedTime = Symbol('loadedTime');\nexport const $updateSource = Symbol('updateSource');\nexport const $markLoaded = Symbol('markLoaded');\nexport const $container = Symbol('container');\nexport const $userInputElement = Symbol('input');\nexport const $canvas = Symbol('canvas');\nexport const $scene = Symbol('scene');\nexport const $needsRender = Symbol('needsRender');\nexport const $tick = Symbol('tick');\nexport const $onModelLoad = Symbol('onModelLoad');\nexport const $onResize = Symbol('onResize');\nexport const $renderer = Symbol('renderer');\nexport const $progressTracker = Symbol('progressTracker');\nexport const $getLoaded = Symbol('getLoaded');\nexport const $getModelIsVisible = Symbol('getModelIsVisible');\nexport const $shouldAttemptPreload = Symbol('shouldAttemptPreload');\n\nexport interface Vector3D {\n x: number\n y: number\n z: number\n toString(): string\n}\n\nexport const toVector3D = (v: Vector3) => {\n return {\n x: v.x,\n y: v.y,\n z: v.z,\n toString() {\n return `${this.x}m ${this.y}m ${this.z}m`;\n }\n };\n};\n\nexport interface Vector2D {\n u: number\n v: number\n toString(): string\n}\n\nexport const toVector2D = (v: Vector2) => {\n return {\n u: v.x,\n v: v.y,\n toString() {\n return `${this.u} ${this.v}`;\n }\n };\n};\n\ninterface ToBlobOptions {\n mimeType?: string, qualityArgument?: number, idealAspect?: boolean\n}\n\nexport interface FramingInfo {\n framedRadius: number;\n fieldOfViewAspect: number;\n}\n\nexport interface Camera {\n viewMatrix: Array;\n projectionMatrix: Array;\n}\n\nexport interface RendererInterface {\n load(progressCallback: (progress: number) => void): Promise;\n render(camera: Camera): void;\n resize(width: number, height: number): void;\n}\n\n/**\n * Definition for a basic element.\n */\nexport default class ModelViewerElementBase extends ReactiveElement {\n static get is() {\n return 'model-viewer';\n }\n\n /** @export */\n static set modelCacheSize(value: number) {\n CachingGLTFLoader[$evictionPolicy].evictionThreshold = value;\n }\n\n /** @export */\n static get modelCacheSize(): number {\n return CachingGLTFLoader[$evictionPolicy].evictionThreshold\n }\n\n /** @export */\n static set minimumRenderScale(value: number) {\n if (value > 1) {\n console.warn(\n ' minimumRenderScale has been clamped to a maximum value of 1.');\n }\n if (value <= 0) {\n console.warn(\n ' minimumRenderScale has been clamped to a minimum value of 0.25.');\n }\n Renderer.singleton.minScale = value;\n }\n\n /** @export */\n static get minimumRenderScale(): number {\n return Renderer.singleton.minScale;\n }\n\n @property({type: String}) alt: string|null = null;\n\n @property({type: String}) src: string|null = null;\n\n @property({type: Boolean, attribute: 'with-credentials'})\n withCredentials: boolean = false;\n\n /**\n * Generates a 3D model schema https://schema.org/3DModel associated with\n * the loaded src and inserts it into the header of the page for search\n * engines to crawl.\n */\n @property({type: Boolean, attribute: 'generate-schema'})\n generateSchema = false;\n\n protected[$isElementInViewport] = false;\n protected[$loaded] = false;\n protected[$loadedTime] = 0;\n protected[$scene]: ModelScene;\n protected[$container]: HTMLDivElement;\n protected[$userInputElement]: HTMLDivElement;\n protected[$canvas]: HTMLCanvasElement;\n protected[$statusElement]: HTMLSpanElement;\n protected[$status] = '';\n protected[$defaultAriaLabel]: string;\n protected[$clearModelTimeout]: number|null = null;\n\n protected[$fallbackResizeHandler] = debounce(() => {\n const boundingRect = this.getBoundingClientRect();\n this[$updateSize](boundingRect);\n }, FALLBACK_SIZE_UPDATE_THRESHOLD_MS);\n\n protected[$announceModelVisibility] = debounce((oldVisibility: boolean) => {\n const newVisibility = this.modelIsVisible;\n if (newVisibility !== oldVisibility) {\n this.dispatchEvent(new CustomEvent(\n 'model-visibility', {detail: {visible: newVisibility}}));\n }\n }, ANNOUNCE_MODEL_VISIBILITY_DEBOUNCE_THRESHOLD);\n\n protected[$resizeObserver]: ResizeObserver|null = null;\n protected[$intersectionObserver]: IntersectionObserver|null = null;\n\n protected[$progressTracker]: ProgressTracker = new ProgressTracker();\n\n /** @export */\n get loaded() {\n return this[$getLoaded]();\n }\n\n get[$renderer]() {\n return Renderer.singleton;\n }\n\n /** @export */\n get modelIsVisible() {\n return this[$getModelIsVisible]();\n }\n\n /**\n * Creates a new ModelViewerElement.\n */\n constructor() {\n super();\n\n this.attachShadow({mode: 'open'});\n\n const shadowRoot = this.shadowRoot!;\n\n makeTemplate(shadowRoot);\n\n this[$container] = shadowRoot.querySelector('.container') as HTMLDivElement;\n this[$userInputElement] =\n shadowRoot.querySelector('.userInput') as HTMLDivElement;\n this[$canvas] = shadowRoot.querySelector('canvas') as HTMLCanvasElement;\n this[$statusElement] =\n shadowRoot.querySelector('#status') as HTMLSpanElement;\n this[$defaultAriaLabel] =\n this[$userInputElement].getAttribute('aria-label')!;\n\n // Because of potential race conditions related to invoking the constructor\n // we only use the bounding rect to set the initial size if the element is\n // already connected to the document:\n let width, height;\n if (this.isConnected) {\n const rect = this.getBoundingClientRect();\n width = rect.width;\n height = rect.height;\n } else {\n width = UNSIZED_MEDIA_WIDTH;\n height = UNSIZED_MEDIA_HEIGHT;\n }\n\n // Create the underlying ModelScene.\n this[$scene] =\n new ModelScene({canvas: this[$canvas], element: this, width, height});\n\n // Update initial size on microtask timing so that subclasses have a\n // chance to initialize\n Promise.resolve().then(() => {\n this[$updateSize](this.getBoundingClientRect());\n });\n\n if (HAS_RESIZE_OBSERVER) {\n // Set up a resize observer so we can scale our canvas\n // if our changes\n this[$resizeObserver] =\n new ResizeObserver((entries: Array) => {\n // Don't resize anything if in AR mode; otherwise the canvas\n // scaling to fullscreen on entering AR will clobber the flat/2d\n // dimensions of the element.\n if (this[$renderer].isPresenting) {\n return;\n }\n\n for (let entry of entries) {\n if (entry.target === this) {\n this[$updateSize](entry.contentRect);\n }\n }\n });\n }\n\n if (HAS_INTERSECTION_OBSERVER) {\n this[$intersectionObserver] = new IntersectionObserver(entries => {\n for (let entry of entries) {\n if (entry.target === this) {\n const oldVisibility = this.modelIsVisible;\n this[$isElementInViewport] = entry.isIntersecting;\n this[$announceModelVisibility](oldVisibility);\n if (this[$isElementInViewport] && !this.loaded) {\n this[$updateSource]();\n }\n }\n }\n }, {\n root: null,\n // We used to have margin here, but it was causing animated models below\n // the fold to steal the frame budget. Weirder still, it would also\n // cause input events to be swallowed, sometimes for seconds on the\n // model above the fold, but only when the animated model was completely\n // below. Setting this margin to zero fixed it.\n rootMargin: '0px',\n // With zero threshold, an element adjacent to but not intersecting the\n // viewport will be reported as intersecting, which will cause\n // unnecessary rendering. Any slight positive threshold alleviates this.\n threshold: 0.00001,\n });\n } else {\n // If there is no intersection observer, then all models should be visible\n // at all times:\n this[$isElementInViewport] = true;\n }\n }\n\n connectedCallback() {\n super.connectedCallback && super.connectedCallback();\n if (HAS_RESIZE_OBSERVER) {\n this[$resizeObserver]!.observe(this);\n } else {\n self.addEventListener('resize', this[$fallbackResizeHandler]);\n }\n\n if (HAS_INTERSECTION_OBSERVER) {\n this[$intersectionObserver]!.observe(this);\n }\n\n this.addEventListener('focus', this[$onFocus]);\n this.addEventListener('blur', this[$onBlur]);\n\n const renderer = this[$renderer];\n renderer.addEventListener(\n 'contextlost', this[$onContextLost] as (event: ThreeEvent) => void);\n\n renderer.registerScene(this[$scene]);\n\n if (this[$clearModelTimeout] != null) {\n self.clearTimeout(this[$clearModelTimeout]!);\n this[$clearModelTimeout] = null;\n // Force an update in case the model has been evicted from our GLTF cache\n // @see https://lit-element.polymer-project.org/guide/lifecycle#requestupdate\n this.requestUpdate('src', null);\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback && super.disconnectedCallback();\n if (HAS_RESIZE_OBSERVER) {\n this[$resizeObserver]!.unobserve(this);\n } else {\n self.removeEventListener('resize', this[$fallbackResizeHandler]);\n }\n\n if (HAS_INTERSECTION_OBSERVER) {\n this[$intersectionObserver]!.unobserve(this);\n }\n\n this.removeEventListener('focus', this[$onFocus]);\n this.removeEventListener('blur', this[$onBlur]);\n\n const renderer = this[$renderer];\n renderer.removeEventListener(\n 'contextlost', this[$onContextLost] as (event: ThreeEvent) => void);\n\n renderer.unregisterScene(this[$scene]);\n\n this[$clearModelTimeout] = self.setTimeout(() => {\n this[$scene].dispose();\n this[$clearModelTimeout] = null;\n }, CLEAR_MODEL_TIMEOUT_MS);\n }\n\n updated(changedProperties: Map) {\n super.updated(changedProperties);\n\n // NOTE(cdata): If a property changes from values A -> B -> A in the space\n // of a microtask, LitElement/UpdatingElement will notify of a change even\n // though the value has effectively not changed, so we need to check to make\n // sure that the value has actually changed before changing the loaded flag.\n if (changedProperties.has('src')) {\n if (this.src == null) {\n this[$loaded] = false;\n this[$loadedTime] = 0;\n this[$scene].reset();\n } else if (this.src !== this[$scene].url) {\n this[$loaded] = false;\n this[$loadedTime] = 0;\n this[$updateSource]();\n }\n }\n\n if (changedProperties.has('alt')) {\n this[$userInputElement].setAttribute('aria-label', this[$ariaLabel]);\n }\n\n if (changedProperties.has('withCredentials')) {\n CachingGLTFLoader.withCredentials = this.withCredentials\n }\n\n if (changedProperties.has('generateSchema')) {\n if (this.generateSchema) {\n this[$scene].updateSchema(this.src);\n } else {\n this[$scene].updateSchema(null);\n }\n }\n }\n\n /** @export */\n toDataURL(type?: string, encoderOptions?: number): string {\n return this[$renderer]\n .displayCanvas(this[$scene])\n .toDataURL(type, encoderOptions);\n }\n\n /** @export */\n async toBlob(options?: ToBlobOptions): Promise {\n const mimeType = options ? options.mimeType : undefined;\n const qualityArgument = options ? options.qualityArgument : undefined;\n const useIdealAspect = options ? options.idealAspect : undefined;\n\n const {width, height, idealAspect, aspect} = this[$scene];\n const {dpr, scaleFactor} = this[$renderer];\n let outputWidth = width * scaleFactor * dpr;\n let outputHeight = height * scaleFactor * dpr;\n let offsetX = 0;\n let offsetY = 0;\n if (useIdealAspect === true) {\n if (idealAspect > aspect) {\n const oldHeight = outputHeight;\n outputHeight = Math.round(outputWidth / idealAspect);\n offsetY = (oldHeight - outputHeight) / 2;\n } else {\n const oldWidth = outputWidth;\n outputWidth = Math.round(outputHeight * idealAspect);\n offsetX = (oldWidth - outputWidth) / 2;\n }\n }\n blobCanvas.width = outputWidth;\n blobCanvas.height = outputHeight;\n try {\n return new Promise(async (resolve, reject) => {\n blobCanvas.getContext('2d')!.drawImage(\n this[$renderer].displayCanvas(this[$scene]),\n offsetX,\n offsetY,\n outputWidth,\n outputHeight,\n 0,\n 0,\n outputWidth,\n outputHeight);\n if ((blobCanvas as any).msToBlob) {\n // NOTE: msToBlob only returns image/png\n // so ensure mimeType is not specified (defaults to image/png)\n // or is image/png, otherwise fallback to using toDataURL on IE.\n if (!mimeType || mimeType === 'image/png') {\n return resolve((blobCanvas as any).msToBlob());\n }\n }\n\n if (!blobCanvas.toBlob) {\n return resolve(await dataUrlToBlob(\n blobCanvas.toDataURL(mimeType, qualityArgument)));\n }\n\n blobCanvas.toBlob((blob) => {\n if (!blob) {\n return reject(new Error('Unable to retrieve canvas blob'));\n }\n\n resolve(blob);\n }, mimeType, qualityArgument);\n });\n } finally {\n this[$updateSize]({width, height});\n };\n }\n\n registerRenderer(renderer: RendererInterface) {\n this[$scene].externalRenderer = renderer;\n }\n\n unregisterRenderer() {\n this[$scene].externalRenderer = null;\n }\n\n get[$ariaLabel]() {\n return this[$altDefaulted];\n }\n\n get[$altDefaulted]() {\n return (this.alt == null || this.alt === 'null') ? this[$defaultAriaLabel] :\n this.alt;\n }\n\n // NOTE(cdata): Although this may seem extremely redundant, it is required in\n // order to support overloading when TypeScript is compiled to ES5\n // @see https://github.com/Polymer/lit-element/pull/745\n // @see https://github.com/microsoft/TypeScript/issues/338\n [$getLoaded](): boolean {\n return this[$loaded];\n }\n\n // @see [$getLoaded]\n [$getModelIsVisible](): boolean {\n return this.loaded && this[$isElementInViewport];\n }\n\n [$shouldAttemptPreload](): boolean {\n return !!this.src && this[$isElementInViewport];\n }\n\n /**\n * Called on initialization and when the resize observer fires.\n */\n [$updateSize]({width, height}: {width: any, height: any}) {\n this[$container].style.width = `${width}px`;\n this[$container].style.height = `${height}px`;\n\n this[$onResize]({width: parseFloat(width), height: parseFloat(height)});\n }\n\n [$tick](_time: number, _delta: number) {\n }\n\n [$markLoaded]() {\n if (this[$loaded]) {\n return;\n }\n\n this[$loaded] = true;\n this[$loadedTime] = performance.now();\n }\n\n [$needsRender]() {\n this[$scene].queueRender();\n }\n\n [$onModelLoad]() {\n }\n\n [$updateStatus](status: string) {\n this[$status] = status;\n const rootNode = this.getRootNode() as Document | ShadowRoot | null;\n // Only change the aria-label if is currently focused:\n if (rootNode != null && rootNode.activeElement === this &&\n this[$statusElement].textContent != status) {\n this[$statusElement].textContent = status;\n }\n }\n\n [$onFocus] = () => {\n this[$statusElement].textContent = this[$status];\n };\n\n [$onBlur] = () => {\n this[$statusElement].textContent = '';\n };\n\n [$onResize](e: {width: number, height: number}) {\n this[$scene].setSize(e.width, e.height);\n }\n\n [$onContextLost] = (event: ContextLostEvent) => {\n this.dispatchEvent(new CustomEvent(\n 'error',\n {detail: {type: 'webglcontextlost', sourceError: event.sourceEvent}}));\n };\n\n /**\n * Parses the element for an appropriate source URL and\n * sets the views to use the new model based.\n */\n async[$updateSource]() {\n const scene = this[$scene];\n if (this.loaded || !this[$shouldAttemptPreload]() ||\n this.src === scene.url) {\n return;\n }\n\n if (this.generateSchema) {\n scene.updateSchema(this.src);\n }\n this[$updateStatus]('Loading');\n // If we are loading a new model, we need to stop the animation of\n // the current one (if any is playing). Otherwise, we might lose\n // the reference to the scene root and running actions start to\n // throw exceptions and/or behave in unexpected ways:\n scene.stopAnimation();\n\n const updateSourceProgress = this[$progressTracker].beginActivity();\n const source = this.src;\n try {\n const srcUpdated = scene.setSource(\n source,\n (progress: number) =>\n updateSourceProgress(clamp(progress, 0, 1) * 0.95));\n\n const envUpdated = (this as any)[$updateEnvironment]();\n\n await Promise.all([srcUpdated, envUpdated]);\n\n this[$markLoaded]();\n this[$onModelLoad]();\n\n // Wait for shaders to compile and pixels to be drawn.\n await new Promise(resolve => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n this.dispatchEvent(\n new CustomEvent('load', {detail: {url: source}}));\n resolve();\n });\n });\n });\n } catch (error) {\n this.dispatchEvent(new CustomEvent(\n 'error', {detail: {type: 'loadfailure', sourceError: error}}));\n } finally {\n updateSourceProgress(1.0);\n }\n }\n}\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {property} from 'lit/decorators.js';\nimport {LoopOnce, LoopPingPong, LoopRepeat} from 'three';\n\nimport ModelViewerElementBase, {$getModelIsVisible, $needsRender, $onModelLoad, $renderer, $scene, $tick} from '../model-viewer-base.js';\nimport {Constructor} from '../utilities.js';\n\nconst MILLISECONDS_PER_SECOND = 1000.0\n\nconst $changeAnimation = Symbol('changeAnimation');\nconst $paused = Symbol('paused');\n\ninterface PlayAnimationOptions {\n repetitions: number, pingpong: boolean,\n}\n\nconst DEFAULT_PLAY_OPTIONS: PlayAnimationOptions = {\n repetitions: Infinity,\n pingpong: false\n};\n\nexport declare interface AnimationInterface {\n autoplay: boolean;\n animationName: string|void;\n animationCrossfadeDuration: number;\n readonly availableAnimations: Array;\n readonly paused: boolean;\n readonly duration: number;\n currentTime: number;\n timeScale: number;\n pause(): void;\n play(options?: PlayAnimationOptions): void;\n}\n\nexport const AnimationMixin = >(\n ModelViewerElement: T): Constructor&T => {\n class AnimationModelViewerElement extends ModelViewerElement {\n @property({type: Boolean}) autoplay: boolean = false;\n @property({type: String, attribute: 'animation-name'})\n animationName: string|undefined = undefined;\n @property({type: Number, attribute: 'animation-crossfade-duration'})\n animationCrossfadeDuration: number = 300;\n\n protected[$paused]: boolean = true;\n\n constructor(...args: any[]) {\n super(args);\n\n this[$scene].subscribeMixerEvent('loop', (e) => {\n const count = e.action._loopCount;\n this.dispatchEvent(new CustomEvent('loop', {detail: {count}}));\n });\n this[$scene].subscribeMixerEvent('finished', () => {\n this[$paused] = true;\n this.dispatchEvent(new CustomEvent('finished'));\n });\n }\n\n /**\n * Returns an array\n */\n get availableAnimations(): Array {\n if (this.loaded) {\n return this[$scene].animationNames;\n }\n\n return [];\n }\n\n get duration(): number {\n return this[$scene].duration;\n }\n\n get paused(): boolean {\n return this[$paused];\n }\n\n get currentTime(): number {\n return this[$scene].animationTime;\n }\n\n set currentTime(value: number) {\n this[$scene].animationTime = value;\n this[$needsRender]();\n }\n\n get timeScale(): number {\n return this[$scene].animationTimeScale;\n }\n\n set timeScale(value: number) {\n this[$scene].animationTimeScale = value;\n }\n\n pause() {\n if (this[$paused]) {\n return;\n }\n\n this[$paused] = true;\n this.dispatchEvent(new CustomEvent('pause'));\n }\n\n play(options?: PlayAnimationOptions) {\n if (this.availableAnimations.length > 0) {\n this[$paused] = false;\n\n this[$changeAnimation](options);\n\n this.dispatchEvent(new CustomEvent('play'));\n }\n }\n\n [$onModelLoad]() {\n super[$onModelLoad]();\n\n this[$paused] = true;\n\n if (this.autoplay) {\n this.play();\n }\n }\n\n [$tick](_time: number, delta: number) {\n super[$tick](_time, delta);\n\n if (this[$paused] ||\n (!this[$getModelIsVisible]() && !this[$renderer].isPresenting)) {\n return;\n }\n\n this[$scene].updateAnimation(delta / MILLISECONDS_PER_SECOND);\n\n this[$needsRender]();\n }\n\n updated(changedProperties: Map) {\n super.updated(changedProperties);\n\n if (changedProperties.has('autoplay') && this.autoplay) {\n this.play();\n }\n\n if (changedProperties.has('animationName')) {\n this[$changeAnimation]();\n }\n }\n\n [$changeAnimation](options: PlayAnimationOptions = DEFAULT_PLAY_OPTIONS) {\n const repetitions = options.repetitions ?? Infinity;\n const mode = options.pingpong ?\n LoopPingPong :\n (repetitions === 1 ? LoopOnce : LoopRepeat);\n this[$scene].playAnimation(\n this.animationName,\n this.animationCrossfadeDuration / MILLISECONDS_PER_SECOND,\n mode,\n repetitions);\n\n // If we are currently paused, we need to force a render so that\n // the scene updates to the first frame of the new animation\n if (this[$paused]) {\n this[$scene].updateAnimation(0);\n this[$needsRender]();\n }\n }\n }\n\n return AnimationModelViewerElement;\n};\n","\n/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Matrix3, Matrix4, Vector3} from 'three';\n\nimport ModelViewerElementBase, {$needsRender, $scene, $tick, toVector2D, toVector3D, Vector2D, Vector3D} from '../model-viewer-base.js';\nimport {Hotspot, HotspotConfiguration} from '../three-components/Hotspot.js';\nimport {Constructor} from '../utilities.js';\n\nconst $hotspotMap = Symbol('hotspotMap');\nconst $mutationCallback = Symbol('mutationCallback');\nconst $observer = Symbol('observer');\nconst $addHotspot = Symbol('addHotspot');\nconst $removeHotspot = Symbol('removeHotspot');\n\nconst worldToModel = new Matrix4();\nconst worldToModelNormal = new Matrix3();\n\nexport declare type HotspotData = {\n position: Vector3D,\n normal: Vector3D,\n canvasPosition: Vector3D,\n facingCamera: boolean,\n}\n\nexport declare interface AnnotationInterface {\n updateHotspot(config: HotspotConfiguration): void;\n queryHotspot(name: string): HotspotData|null;\n positionAndNormalFromPoint(pixelX: number, pixelY: number):\n {position: Vector3D, normal: Vector3D, uv: Vector2D|null}|null\n}\n\n/**\n * AnnotationMixin implements a declarative API to add hotspots and annotations.\n * Child elements of the element that have a slot name that\n * begins with \"hotspot\" and data-position and data-normal attributes in\n * the format of the camera-target attribute will be added to the scene and\n * track the specified model coordinates.\n */\nexport const AnnotationMixin = >(\n ModelViewerElement: T): Constructor&T => {\n class AnnotationModelViewerElement extends ModelViewerElement {\n private[$hotspotMap] = new Map();\n private[$mutationCallback] = (mutations: Array) => {\n mutations.forEach((mutation) => {\n // NOTE: Be wary that in ShadyDOM cases, the MutationRecord\n // only has addedNodes and removedNodes (and no other details).\n if (!(mutation instanceof MutationRecord) ||\n mutation.type === 'childList') {\n (mutation as MutationRecord).addedNodes.forEach((node) => {\n this[$addHotspot](node);\n });\n (mutation as MutationRecord).removedNodes.forEach((node) => {\n this[$removeHotspot](node);\n });\n this[$needsRender]();\n }\n });\n };\n private[$observer] = new MutationObserver(this[$mutationCallback]);\n\n connectedCallback() {\n super.connectedCallback();\n\n for (let i = 0; i < this.children.length; ++i) {\n this[$addHotspot](this.children[i]);\n }\n\n const {ShadyDOM} = self as any;\n\n if (ShadyDOM == null) {\n this[$observer].observe(this, {childList: true});\n } else {\n this[$observer] =\n ShadyDOM.observeChildren(this, this[$mutationCallback]);\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n const {ShadyDOM} = self as any;\n\n if (ShadyDOM == null) {\n this[$observer].disconnect();\n } else {\n ShadyDOM.unobserveChildren(this[$observer]);\n }\n }\n\n [$tick](time: number, delta: number) {\n super[$tick](time, delta);\n const scene = this[$scene];\n const {annotationRenderer} = scene;\n const camera = scene.getCamera();\n\n if (scene.shouldRender()) {\n scene.updateHotspots(camera.position);\n annotationRenderer.domElement.style.display = '';\n annotationRenderer.render(scene, camera);\n }\n }\n\n /**\n * Since the data-position and data-normal attributes are not observed, use\n * this method to move a hotspot. Keep in mind that all hotspots with the\n * same slot name use a single location and the first definition takes\n * precedence, until updated with this method.\n */\n updateHotspot(config: HotspotConfiguration) {\n const hotspot = this[$hotspotMap].get(config.name);\n\n if (hotspot == null) {\n return;\n }\n\n hotspot.updatePosition(config.position);\n hotspot.updateNormal(config.normal);\n this[$needsRender]();\n }\n\n /**\n * This method returns in-scene data about a requested hotspot including\n * its position in screen (canvas) space and its current visibility.\n */\n queryHotspot(name: string): HotspotData|null {\n const hotspot = this[$hotspotMap].get(name);\n if (hotspot == null) {\n return null;\n }\n\n const position = toVector3D(hotspot.position);\n const normal = toVector3D(hotspot.normal);\n const facingCamera = hotspot.facingCamera;\n\n const scene = this[$scene];\n const camera = scene.getCamera();\n const vector = new Vector3();\n\n vector.setFromMatrixPosition(hotspot.matrixWorld);\n vector.project(camera);\n\n const widthHalf = scene.width / 2;\n const heightHalf = scene.height / 2;\n\n vector.x = (vector.x * widthHalf) + widthHalf;\n vector.y = -(vector.y * heightHalf) + heightHalf;\n\n const canvasPosition =\n toVector3D(new Vector3(vector.x, vector.y, vector.z));\n\n if (!Number.isFinite(canvasPosition.x) ||\n !Number.isFinite(canvasPosition.y)) {\n return null;\n }\n\n return {position, normal, canvasPosition, facingCamera};\n }\n\n /**\n * This method returns the model position, normal and texture coordinate\n * of the point on the mesh corresponding to the input pixel coordinates\n * given relative to the model-viewer element. The position and normal\n * are returned as strings in the format suitable for putting in a\n * hotspot's data-position and data-normal attributes. If the mesh is\n * not hit, the result is null.\n */\n positionAndNormalFromPoint(pixelX: number, pixelY: number):\n {position: Vector3D, normal: Vector3D, uv: Vector2D|null}|null {\n const scene = this[$scene];\n const ndcPosition = scene.getNDC(pixelX, pixelY);\n\n const hit = scene.positionAndNormalFromPoint(ndcPosition);\n if (hit == null) {\n return null;\n }\n\n worldToModel.copy(scene.target.matrixWorld).invert();\n const position = toVector3D(hit.position.applyMatrix4(worldToModel));\n\n worldToModelNormal.getNormalMatrix(worldToModel);\n const normal =\n toVector3D(hit.normal.applyNormalMatrix(worldToModelNormal));\n\n let uv = null;\n if (hit.uv != null) {\n uv = toVector2D(hit.uv);\n }\n\n return {position: position, normal: normal, uv: uv};\n }\n\n private[$addHotspot](node: Node) {\n if (!(node instanceof HTMLElement &&\n node.slot.indexOf('hotspot') === 0)) {\n return;\n }\n\n let hotspot = this[$hotspotMap].get(node.slot);\n\n if (hotspot != null) {\n hotspot.increment();\n } else {\n hotspot = new Hotspot({\n name: node.slot,\n position: node.dataset.position,\n normal: node.dataset.normal,\n });\n this[$hotspotMap].set(node.slot, hotspot);\n this[$scene].addHotspot(hotspot);\n }\n this[$scene].queueRender();\n }\n\n private[$removeHotspot](node: Node) {\n if (!(node instanceof HTMLElement)) {\n return;\n }\n\n const hotspot = this[$hotspotMap].get(node.slot);\n\n if (!hotspot) {\n return;\n }\n\n if (hotspot.decrement()) {\n this[$scene].removeHotspot(hotspot);\n this[$hotspotMap].delete(node.slot);\n }\n this[$scene].queueRender();\n }\n }\n\n return AnnotationModelViewerElement;\n};\n","/*!\nfflate - fast JavaScript compression/decompression\n\nLicensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE\nversion 0.6.9\n*/\n\n// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar durl = function (c) { return URL.createObjectURL(new Blob([c], { type: 'text/javascript' })); };\nvar cwk = function (u) { return new Worker(u); };\ntry {\n URL.revokeObjectURL(durl(''));\n}\ncatch (e) {\n // We're in Deno or a very old browser\n durl = function (c) { return 'data:application/javascript;charset=UTF-8,' + encodeURI(c); };\n // If Deno, this is necessary; if not, this changes nothing\n cwk = function (u) { return new Worker(u, { type: 'module' }); };\n}\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = cwk(ch2[id] || (ch2[id] = durl(c)));\n w.onerror = function (e) { return cb(e.error, null); };\n w.onmessage = function (e) { return cb(null, e.data); };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\n// see fleb note\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new u32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return [b, r];\n};\nvar _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i)\n ++l[cd[i] - 1];\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 0; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >>> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p / 8) | 0) + (p & 7 && 1); };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, buf, st) {\n // source length\n var sl = dat.length;\n if (!sl || (st && !st.l && sl < 5))\n return buf || new u8(0);\n // have to estimate size\n var noBuf = !buf || st;\n // no state\n var noSt = !st || st.i;\n if (!st)\n st = {};\n // Assumes roughly 33% compression ratio average\n if (!buf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n st.f = final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n throw 'unexpected EOF';\n break;\n }\n // ensure size\n if (noBuf)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >>> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n throw 'invalid block type';\n if (pos > tbts) {\n if (noSt)\n throw 'unexpected EOF';\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17;\n if (noBuf)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n throw 'unexpected EOF';\n break;\n }\n if (!c)\n throw 'invalid length/literal';\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;\n if (!d)\n throw 'invalid distance';\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n throw 'unexpected EOF';\n break;\n }\n if (noBuf)\n cbuf(bt + 131072);\n var end = bt + add;\n for (; bt < end; bt += 4) {\n buf[bt] = buf[bt - dt];\n buf[bt + 1] = buf[bt + 1 - dt];\n buf[bt + 2] = buf[bt + 2 - dt];\n buf[bt + 3] = buf[bt + 3 - dt];\n }\n bt = end;\n }\n }\n st.l = lm, st.p = lpos, st.b = bt;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n return bt == buf.length ? buf : slc(buf, 0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n d[o + 2] |= v >>> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return [et, 0];\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return [v, 1];\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return [new u8(tr), mbt];\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return [cl.subarray(0, cli), s];\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >>> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1];\n var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1];\n var _c = lc(dlt), lclt = _c[0], nlc = _c[1];\n var _d = lc(ddt), lcdt = _d[0], ndc = _d[1];\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n lcfreq[lclt[i] & 31]++;\n for (var i = 0; i < lcdt.length; ++i)\n lcfreq[lcdt[i] & 31]++;\n var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1];\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n if (flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n if (syms[i] > 255) {\n var len = (syms[i] >>> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len];\n var dst = syms[i] & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, lst) {\n var s = dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var pos = 0;\n if (!lvl || s < 8) {\n for (var i = 0; i <= s; i += 65535) {\n // end\n var e = i + 65535;\n if (e < s) {\n // write full block\n pos = wfblk(w, pos, dat.subarray(i, e));\n }\n else {\n // write final block\n w[i] = lst;\n pos = wfblk(w, pos, dat.subarray(i, s));\n }\n }\n }\n else {\n var opt = deo[lvl - 1];\n var n = opt >>> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = new u16(32768), head = new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new u32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx bitpos\n var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;\n for (; i < s; ++i) {\n // hash value\n // deopt when i > s - 3 - at end, deopt acceptable\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && rem > 423) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = (i - dif + j + 32768) & 32767;\n var pti = prev[ti];\n var cd = (ti - pti + 32768) & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += (imod - pimod + 32768) & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one Uint32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n // this is the easiest way to avoid needing to maintain state\n if (!lst && pos & 7)\n pos = wfblk(w, pos + 1, et);\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new u32(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && 0xEDB88320) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Alder32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/ /g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return [fnStr, td];\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k] instanceof u8 || v[k] instanceof u16 || v[k] instanceof u32)\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n var _a;\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n _a = wcln(fns[i], fnStr, td_1), fnStr = _a[0], td_1 = _a[1];\n ch[id] = wcln(fns[m], fnStr, td_1);\n }\n var td = mrg({}, ch[id][1]);\n return wk(ch[id][0] + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, hMap, max, bits, bits16, shft, slc, inflt, inflateSync, pbf, gu8]; };\nvar bDflt = function () { return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zlv]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get u8\nvar gu8 = function (o) { return o && o.size && new u8(o.size); };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) { return strm.push(ev.data[0], ev.data[1]); };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.push = function (d, f) {\n if (t)\n throw 'stream finished';\n if (!strm.ondata)\n throw 'no stream handler';\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n throw 'invalid gzip data';\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += d[10] | (d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return ((d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) | (d[l - 1] << 24)) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + ((o.filename && (o.filename.length + 1)) || 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1);\n};\n// zlib valid\nvar zlv = function (d) {\n if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n throw 'invalid zlib data';\n if (d[1] & 32)\n throw 'invalid zlib data: preset dictionaries not supported';\n};\nfunction AsyncCmpStrm(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n// zlib footer: -4 to -0 is Adler32\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, !f), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (this.d)\n throw 'stream finished';\n if (!this.ondata)\n throw 'no stream handler';\n this.d = final;\n this.p(chunk, final || false);\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n /**\n * Creates an inflation stream\n * @param cb The callback to call whenever data is inflated\n */\n function Inflate(cb) {\n this.s = {};\n this.p = new u8(0);\n this.ondata = cb;\n }\n Inflate.prototype.e = function (c) {\n if (this.d)\n throw 'stream finished';\n if (!this.ondata)\n throw 'no stream handler';\n var l = this.p.length;\n var n = new u8(l + c.length);\n n.set(this.p), n.set(c, l), this.p = n;\n };\n Inflate.prototype.c = function (final) {\n this.d = this.s.i = final || false;\n var bts = this.s.b;\n var dt = inflt(this.p, this.o, this.s);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous inflation stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncInflate(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, 0, function () {\n var strm = new Inflate();\n onmessage = astrm(strm);\n }, 7);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gu8(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, out) {\n return inflt(data, out);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n this.c.p(c);\n this.l += c.length;\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, !f);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n /**\n * Creates a GUNZIP stream\n * @param cb The callback to call whenever data is inflated\n */\n function Gunzip(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n var s = this.p.length > 3 ? gzs(this.p) : 4;\n if (s >= this.p.length && !final)\n return;\n this.p = this.p.subarray(s), this.v = 0;\n }\n if (final) {\n if (this.p.length < 8)\n throw 'invalid gzip stream';\n this.p = this.p.subarray(0, -8);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous GUNZIP stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncGunzip(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, 0, function () {\n var strm = new Gunzip();\n onmessage = astrm(strm);\n }, 9);\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory.\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, out) {\n return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n this.c.p(c);\n var raw = dopt(c, this.o, this.v && 2, f && 4, !f);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n /**\n * Creates a Zlib decompression stream\n * @param cb The callback to call whenever data is inflated\n */\n function Unzlib(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 2 && !final)\n return;\n this.p = this.p.subarray(2), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n throw 'invalid zlib stream';\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous Zlib decompression stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncUnzlib(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, 0, function () {\n var strm = new Unzlib();\n onmessage = astrm(strm);\n }, 11);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gu8(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, out) {\n return inflt((zlv(data), data.subarray(2, -4)), out);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n /**\n * Creates a decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function Decompress(cb) {\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n throw 'no stream handler';\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n var _this_1 = this;\n var cb = function () { _this_1.ondata.apply(_this_1, arguments); };\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(cb)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(cb)\n : new this.Z(cb);\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function AsyncDecompress(cb) {\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, out) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, out)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, out)\n : unzlibSync(data, out);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k;\n if (val instanceof u8)\n t[n] = [val, o];\n else if (Array.isArray(val))\n t[n] = [val[0], mrg(o, val[1])];\n else\n fltn(val, n + '/', t, o);\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return [r, slc(d, i - 1)];\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n throw 'no callback';\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n throw 'invalid utf-8 data';\n this.t = null;\n }\n return;\n }\n if (!this.p)\n throw 'stream finished';\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), ch = _a[0], np = _a[1];\n if (final) {\n if (np.length)\n throw 'invalid utf-8 data';\n this.p = null;\n }\n else\n this.p = np;\n this.ondata(ch, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n throw 'no callback';\n if (this.d)\n throw 'stream finished';\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td)\n return td.decode(dat);\n else {\n var _a = dutf8(dat), out = _a[0], ext = _a[1];\n if (ext.length)\n throw 'invalid utf-8 data';\n return out;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n throw 'extra field too long';\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c == null && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n throw 'date not in range 1980-2099';\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >>> 1)), b += 4;\n if (c != null) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n throw 'no callback - add to ZIP archive before pushing';\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this_1 = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this_1 = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this_1.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this_1 = this;\n if (this.d & 2)\n throw 'stream finished';\n var f = strToU8(file.filename), fl = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl != file.filename.length || (o && (com.length != o.length));\n var hl = fl + exfl(file.extra) + 30;\n if (fl > 65535)\n throw 'filename too long';\n var header = new u8(hl);\n wzh(header, 0, file, f, u);\n var chks = [header];\n var pAll = function () {\n for (var _i = 0, chks_1 = chks; _i < chks_1.length; _i++) {\n var chk = chks_1[_i];\n _this_1.ondata(null, chk, false);\n }\n chks = [];\n };\n var tr = this.d;\n this.d = 0;\n var ind = this.u.length;\n var uf = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll();\n if (tr) {\n var nxt = _this_1.u[ind + 1];\n if (nxt)\n nxt.r();\n else\n _this_1.d = 1;\n }\n tr = 1;\n }\n });\n var cl = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this_1.ondata(err, dat, final);\n _this_1.terminate();\n }\n else {\n cl += dat.length;\n chks.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl);\n wbytes(dd, 12, file.size);\n chks.push(dd);\n uf.c = cl, uf.b = hl + cl + 16, uf.crc = file.crc, uf.size = file.size;\n if (tr)\n uf.r();\n tr = 1;\n }\n else if (tr)\n pAll();\n }\n };\n this.u.push(uf);\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this_1 = this;\n if (this.d & 2) {\n if (this.d & 1)\n throw 'stream finishing';\n throw 'stream finished';\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this_1.d & 1))\n return;\n _this_1.u.splice(-1, 1);\n _this_1.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, f.c, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cb(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cb(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cb(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl('filename too long', null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n throw 'filename too long';\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this_1 = this;\n this.i = new Inflate(function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, data, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this_1 = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this_1.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this_1 = this;\n if (!this.onfile)\n throw 'no callback';\n if (!this.p)\n throw 'stream finished';\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_2 = [];\n this_1.k.unshift(chks_2);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n throw 'no callback';\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this_1.o[cmp_1];\n if (!ctr)\n throw 'unknown compression type ' + cmp_1;\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_3 = chks_2; _i < chks_3.length; _i++) {\n var dat = chks_3[_i];\n d_1.push(dat, false);\n }\n if (_this_1.k[0] == chks_2 && _this_1.c)\n _this_1.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n throw 'invalid zip file';\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\n/**\n * Asynchronously decompresses a ZIP archive\n * @param data The raw compressed ZIP file\n * @param cb The callback to call with the decompressed files\n * @returns A function that can be used to immediately terminate the unzipping\n */\nexport function unzip(data, cb) {\n if (typeof cb != 'function')\n throw 'no callback';\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cb('invalid zip file', null);\n return;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (!lft)\n cb(null, {});\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50) {\n cb('invalid zip file', null);\n return;\n }\n c = lft = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cb(e, null);\n }\n else {\n files[fn] = d;\n if (!--lft)\n cb(null, files);\n }\n };\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n if (sc < 320000) {\n try {\n cbl(null, inflateSync(infl, new u8(su)));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl('unknown compression type ' + c_1, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @returns The decompressed files\n */\nexport function unzipSync(data) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n throw 'invalid zip file';\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50)\n throw 'invalid zip file';\n c = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), new u8(su));\n else\n throw 'unknown compression type ' + c_2;\n }\n return files;\n}\n","import {\n\tDoubleSide\n} from 'three';\n\nimport * as fflate from '../libs/fflate.module.js';\n\nclass USDZExporter {\n\n\tasync parse( scene ) {\n\n\t\tconst files = {};\n\t\tconst modelFileName = 'model.usda';\n\n\t\t// model file should be first in USDZ archive so we init it here\n\t\tfiles[ modelFileName ] = null;\n\n\t\tlet output = buildHeader();\n\n\t\tconst materials = {};\n\t\tconst textures = {};\n\n\t\tscene.traverseVisible( ( object ) => {\n\n\t\t\tif ( object.isMesh ) {\n\n\t\t\t\tconst geometry = object.geometry;\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( material.isMeshStandardMaterial ) {\n\n\t\t\t\t\tconst geometryFileName = 'geometries/Geometry_' + geometry.id + '.usd';\n\n\t\t\t\t\tif ( ! ( geometryFileName in files ) ) {\n\n\t\t\t\t\t\tconst meshObject = buildMeshObject( geometry );\n\t\t\t\t\t\tfiles[ geometryFileName ] = buildUSDFileAsString( meshObject );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! ( material.uuid in materials ) ) {\n\n\t\t\t\t\t\tmaterials[ material.uuid ] = material;\n\n\t\t\t\t\t}\n\n\t\t\t\t\toutput += buildXform( object, geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.USDZExporter: Unsupported material type (USDZ only supports MeshStandardMaterial)', object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isCamera ) {\n\t\t\t\t\n\t\t\t\toutput += buildCamera( object );\n\n\t\t\t}\n\n\t\t} );\n\n\t\toutput += buildMaterials( materials, textures );\n\n\t\tfiles[ modelFileName ] = fflate.strToU8( output );\n\t\toutput = null;\n\n\t\tfor ( const id in textures ) {\n\n\t\t\tconst texture = textures[ id ];\n\t\t\tconst color = id.split( '_' )[ 1 ];\n\t\t\tconst isRGBA = texture.format === 1023;\n\n\t\t\tconst canvas = imageToCanvas( texture.image, color );\n\t\t\tconst blob = await new Promise( resolve => canvas.toBlob( resolve, isRGBA ? 'image/png' : 'image/jpeg', 1 ) );\n\n\t\t\tfiles[ `textures/Texture_${ id }.${ isRGBA ? 'png' : 'jpg' }` ] = new Uint8Array( await blob.arrayBuffer() );\n\n\t\t}\n\n\t\t// 64 byte alignment\n\t\t// https://github.com/101arrowz/fflate/issues/39#issuecomment-777263109\n\n\t\tlet offset = 0;\n\n\t\tfor ( const filename in files ) {\n\n\t\t\tconst file = files[ filename ];\n\t\t\tconst headerSize = 34 + filename.length;\n\n\t\t\toffset += headerSize;\n\n\t\t\tconst offsetMod64 = offset & 63;\n\n\t\t\tif ( offsetMod64 !== 4 ) {\n\n\t\t\t\tconst padLength = 64 - offsetMod64;\n\t\t\t\tconst padding = new Uint8Array( padLength );\n\n\t\t\t\tfiles[ filename ] = [ file, { extra: { 12345: padding } } ];\n\n\t\t\t}\n\n\t\t\toffset = file.length;\n\n\t\t}\n\n\t\treturn fflate.zipSync( files, { level: 0 } );\n\n\t}\n\n}\n\nfunction imageToCanvas( image, color ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof OffscreenCanvas !== 'undefined' && image instanceof OffscreenCanvas ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\tconst scale = 1024 / Math.max( image.width, image.height );\n\n\t\tconst canvas = document.createElement( 'canvas' );\n\t\tcanvas.width = image.width * Math.min( 1, scale );\n\t\tcanvas.height = image.height * Math.min( 1, scale );\n\n\t\tconst context = canvas.getContext( '2d' );\n\t\tcontext.drawImage( image, 0, 0, canvas.width, canvas.height );\n\n\t\tif ( color !== undefined ) {\n\n\t\t\tconst hex = parseInt( color, 16 );\n\n\t\t\tconst r = ( hex >> 16 & 255 ) / 255;\n\t\t\tconst g = ( hex >> 8 & 255 ) / 255;\n\t\t\tconst b = ( hex & 255 ) / 255;\n\n\t\t\tconst imagedata = context.getImageData( 0, 0, canvas.width, canvas.height );\n\t\t\tconst data = imagedata.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i += 4 ) {\n\n\t\t\t\tdata[ i + 0 ] = data[ i + 0 ] * r;\n\t\t\t\tdata[ i + 1 ] = data[ i + 1 ] * g;\n\t\t\t\tdata[ i + 2 ] = data[ i + 2 ] * b;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imagedata, 0, 0 );\n\n\t\t}\n\n\t\treturn canvas;\n\n\t}\n\n}\n\n//\n\nconst PRECISION = 7;\n\nfunction buildHeader() {\n\n\treturn `#usda 1.0\n(\n customLayerData = {\n string creator = \"Three.js USDZExporter\"\n }\n metersPerUnit = 1\n upAxis = \"Y\"\n)\n\n`;\n\n}\n\nfunction buildUSDFileAsString( dataToInsert ) {\n\n\tlet output = buildHeader();\n\toutput += dataToInsert;\n\treturn fflate.strToU8( output );\n\n}\n\n// Xform\n\nfunction buildXform( object, geometry, material ) {\n\n\tconst name = 'Object_' + object.id;\n\tconst transform = buildMatrix( object.matrixWorld );\n\n\tif ( object.matrixWorld.determinant() < 0 ) {\n\n\t\tconsole.warn( 'THREE.USDZExporter: USDZ does not support negative scales', object );\n\n\t}\n\n\treturn `def Xform \"${ name }\" (\n prepend references = @./geometries/Geometry_${ geometry.id }.usd@\n)\n{\n matrix4d xformOp:transform = ${ transform }\n uniform token[] xformOpOrder = [\"xformOp:transform\"]\n\n rel material:binding = \n}\n\n`;\n\n}\n\nfunction buildMatrix( matrix ) {\n\n\tconst array = matrix.elements;\n\n\treturn `( ${ buildMatrixRow( array, 0 ) }, ${ buildMatrixRow( array, 4 ) }, ${ buildMatrixRow( array, 8 ) }, ${ buildMatrixRow( array, 12 ) } )`;\n\n}\n\nfunction buildMatrixRow( array, offset ) {\n\n\treturn `(${ array[ offset + 0 ] }, ${ array[ offset + 1 ] }, ${ array[ offset + 2 ] }, ${ array[ offset + 3 ] })`;\n\n}\n\n// Mesh\n\nfunction buildMeshObject( geometry ) {\n\n\tconst mesh = buildMesh( geometry );\n\treturn `\ndef \"Geometry\"\n{\n ${mesh}\n}\n`;\n\n}\n\nfunction buildMesh( geometry ) {\n\n\tconst name = 'Geometry';\n\tconst attributes = geometry.attributes;\n\tconst count = attributes.position.count;\n\n\treturn `\n def Mesh \"${ name }\"\n {\n int[] faceVertexCounts = [${ buildMeshVertexCount( geometry ) }]\n int[] faceVertexIndices = [${ buildMeshVertexIndices( geometry ) }]\n normal3f[] normals = [${ buildVector3Array( attributes.normal, count )}] (\n interpolation = \"vertex\"\n )\n point3f[] points = [${ buildVector3Array( attributes.position, count )}]\n float2[] primvars:st = [${ buildVector2Array( attributes.uv, count )}] (\n interpolation = \"vertex\"\n )\n uniform token subdivisionScheme = \"none\"\n }\n`;\n\n}\n\nfunction buildMeshVertexCount( geometry ) {\n\n\tconst count = geometry.index !== null ? geometry.index.count : geometry.attributes.position.count;\n\n\treturn Array( count / 3 ).fill( 3 ).join( ', ' );\n\n}\n\nfunction buildMeshVertexIndices( geometry ) {\n\n\tconst index = geometry.index;\n\tconst array = [];\n\n\tif ( index !== null ) {\n\n\t\tfor ( let i = 0; i < index.count; i ++ ) {\n\n\t\t\tarray.push( index.getX( i ) );\n\n\t\t}\n\n\t} else {\n\n\t\tconst length = geometry.attributes.position.count;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tarray.push( i );\n\n\t\t}\n\n\t}\n\n\treturn array.join( ', ' );\n\n}\n\nfunction buildVector3Array( attribute, count ) {\n\n\tif ( attribute === undefined ) {\n\n\t\tconsole.warn( 'USDZExporter: Normals missing.' );\n\t\treturn Array( count ).fill( '(0, 0, 0)' ).join( ', ' );\n\n\t}\n\n\tconst array = [];\n\n\tfor ( let i = 0; i < attribute.count; i ++ ) {\n\n\t\tconst x = attribute.getX( i );\n\t\tconst y = attribute.getY( i );\n\t\tconst z = attribute.getZ( i );\n\n\t\tarray.push( `(${ x.toPrecision( PRECISION ) }, ${ y.toPrecision( PRECISION ) }, ${ z.toPrecision( PRECISION ) })` );\n\n\t}\n\n\treturn array.join( ', ' );\n\n}\n\nfunction buildVector2Array( attribute, count ) {\n\n\tif ( attribute === undefined ) {\n\n\t\tconsole.warn( 'USDZExporter: UVs missing.' );\n\t\treturn Array( count ).fill( '(0, 0)' ).join( ', ' );\n\n\t}\n\n\tconst array = [];\n\n\tfor ( let i = 0; i < attribute.count; i ++ ) {\n\n\t\tconst x = attribute.getX( i );\n\t\tconst y = attribute.getY( i );\n\n\t\tarray.push( `(${ x.toPrecision( PRECISION ) }, ${ 1 - y.toPrecision( PRECISION ) })` );\n\n\t}\n\n\treturn array.join( ', ' );\n\n}\n\n// Materials\n\nfunction buildMaterials( materials, textures ) {\n\n\tconst array = [];\n\n\tfor ( const uuid in materials ) {\n\n\t\tconst material = materials[ uuid ];\n\n\t\tarray.push( buildMaterial( material, textures ) );\n\n\t}\n\n\treturn `def \"Materials\"\n{\n${ array.join( '' ) }\n}\n\n`;\n\n}\n\nfunction buildMaterial( material, textures ) {\n\n\t// https://graphics.pixar.com/usd/docs/UsdPreviewSurface-Proposal.html\n\n\tconst pad = ' ';\n\tconst inputs = [];\n\tconst samplers = [];\n\n\tfunction buildTexture( texture, mapType, color ) {\n\n\t\tconst id = texture.id + ( color ? '_' + color.getHexString() : '' );\n\t\tconst isRGBA = texture.format === 1023;\n\n\t\ttextures[ id ] = texture;\n\n\t\treturn `\n def Shader \"Transform2d_${ mapType }\" (\n sdrMetadata = {\n string role = \"math\"\n }\n )\n {\n uniform token info:id = \"UsdTransform2d\"\n float2 inputs:in.connect = \n float2 inputs:scale = ${ buildVector2( texture.repeat ) }\n float2 inputs:translation = ${ buildVector2( texture.offset ) }\n float2 outputs:result\n }\n\n def Shader \"Texture_${ texture.id }_${ mapType }\"\n {\n uniform token info:id = \"UsdUVTexture\"\n asset inputs:file = @textures/Texture_${ id }.${ isRGBA ? 'png' : 'jpg' }@\n float2 inputs:st.connect = \n token inputs:wrapS = \"repeat\"\n token inputs:wrapT = \"repeat\"\n float outputs:r\n float outputs:g\n float outputs:b\n float3 outputs:rgb\n ${ material.transparent || material.alphaTest > 0.0 ? 'float outputs:a' : '' }\n }`;\n\n\t}\n\n\n\tif ( material.side === DoubleSide ) {\n\n\t\tconsole.warn( 'THREE.USDZExporter: USDZ does not support double sided materials', material );\n\n\t}\n\n\tif ( material.map !== null ) {\n\n\t\tinputs.push( `${ pad }color3f inputs:diffuseColor.connect = ` );\n\n\t\tif ( material.transparent ) {\n\n\t\t\tinputs.push( `${ pad }float inputs:opacity.connect = ` );\n\n\t\t} else if ( material.alphaTest > 0.0 ) {\n\n\t\t\tinputs.push( `${ pad }float inputs:opacity.connect = ` );\n\t\t\tinputs.push( `${ pad }float inputs:opacityThreshold = ${material.alphaTest}` );\n\n\t\t}\n\n\t\tsamplers.push( buildTexture( material.map, 'diffuse', material.color ) );\n\n\t} else {\n\n\t\tinputs.push( `${ pad }color3f inputs:diffuseColor = ${ buildColor( material.color ) }` );\n\n\t}\n\n\tif ( material.emissiveMap !== null ) {\n\n\t\tinputs.push( `${ pad }color3f inputs:emissiveColor.connect = ` );\n\n\t\tsamplers.push( buildTexture( material.emissiveMap, 'emissive' ) );\n\n\t} else if ( material.emissive.getHex() > 0 ) {\n\n\t\tinputs.push( `${ pad }color3f inputs:emissiveColor = ${ buildColor( material.emissive ) }` );\n\n\t}\n\n\tif ( material.normalMap !== null ) {\n\n\t\tinputs.push( `${ pad }normal3f inputs:normal.connect = ` );\n\n\t\tsamplers.push( buildTexture( material.normalMap, 'normal' ) );\n\n\t}\n\n\tif ( material.aoMap !== null ) {\n\n\t\tinputs.push( `${ pad }float inputs:occlusion.connect = ` );\n\n\t\tsamplers.push( buildTexture( material.aoMap, 'occlusion' ) );\n\n\t}\n\n\tif ( material.roughnessMap !== null && material.roughness === 1 ) {\n\n\t\tinputs.push( `${ pad }float inputs:roughness.connect = ` );\n\n\t\tsamplers.push( buildTexture( material.roughnessMap, 'roughness' ) );\n\n\t} else {\n\n\t\tinputs.push( `${ pad }float inputs:roughness = ${ material.roughness }` );\n\n\t}\n\n\tif ( material.metalnessMap !== null && material.metalness === 1 ) {\n\n\t\tinputs.push( `${ pad }float inputs:metallic.connect = ` );\n\n\t\tsamplers.push( buildTexture( material.metalnessMap, 'metallic' ) );\n\n\t} else {\n\n\t\tinputs.push( `${ pad }float inputs:metallic = ${ material.metalness }` );\n\n\t}\n\n\tif ( material.alphaMap !== null ) {\n\n\t\tinputs.push( `${pad}float inputs:opacity.connect = ` );\n\t\tinputs.push( `${pad}float inputs:opacityThreshold = 0.0001` );\n\n\t\tsamplers.push( buildTexture( material.alphaMap, 'opacity' ) );\n\n\t} else {\n\n\t\tinputs.push( `${pad}float inputs:opacity = ${material.opacity}` );\n\n\t}\n\n\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\tinputs.push( `${ pad }float inputs:clearcoat = ${ material.clearcoat }` );\n\t\tinputs.push( `${ pad }float inputs:clearcoatRoughness = ${ material.clearcoatRoughness }` );\n\t\tinputs.push( `${ pad }float inputs:ior = ${ material.ior }` );\n\n\t}\n\n\treturn `\n def Material \"Material_${ material.id }\"\n {\n def Shader \"PreviewSurface\"\n {\n uniform token info:id = \"UsdPreviewSurface\"\n${ inputs.join( '\\n' ) }\n int inputs:useSpecularWorkflow = 0\n token outputs:surface\n }\n\n token outputs:surface.connect = \n token inputs:frame:stPrimvarName = \"st\"\n\n def Shader \"uvReader_st\"\n {\n uniform token info:id = \"UsdPrimvarReader_float2\"\n token inputs:varname.connect = \n float2 inputs:fallback = (0.0, 0.0)\n float2 outputs:result\n }\n\n${ samplers.join( '\\n' ) }\n\n }\n`;\n\n}\n\nfunction buildColor( color ) {\n\n\treturn `(${ color.r }, ${ color.g }, ${ color.b })`;\n\n}\n\nfunction buildVector2( vector ) {\n\n\treturn `(${ vector.x }, ${ vector.y })`;\n\n}\n\n\nfunction buildCamera( camera ) {\n\n\tconst name = camera.name ? camera.name : 'Camera_' + camera.id;\n\n\tconst transform = buildMatrix( camera.matrixWorld );\n\n\tif ( camera.matrixWorld.determinant() < 0 ) {\n\n\t\tconsole.warn( 'THREE.USDZExporter: USDZ does not support negative scales', camera );\n\n\t}\n\n\tif (camera.isOrthographicCamera) {\n\t\treturn `def Camera \"${name}\"\n\t\t{\n\t\t\tmatrix4d xformOp:transform = ${ transform }\n\t\t\tuniform token[] xformOpOrder = [\"xformOp:transform\"]\n\t\n\t\t\tfloat2 clippingRange = (${camera.near}, ${camera.far})\n\t\t\tfloat horizontalAperture = ${(Math.abs(camera.left) + Math.abs(camera.right)) * 10}\n\t\t\tfloat verticalAperture = ${(Math.abs(camera.top) + Math.abs(camera.bottom)) * 10}\n\t\t\ttoken projection = \"orthographic\"\n\t\t}\n\t\n\t`;\n\t} else {\n\t\treturn `def Camera \"${name}\"\n\t\t{\n\t\t\tmatrix4d xformOp:transform = ${ transform }\n\t\t\tuniform token[] xformOpOrder = [\"xformOp:transform\"]\n\t\n\t\t\tfloat2 clippingRange = (${camera.near}, ${camera.far})\n\t\t\tfloat focalLength = ${camera.getFocalLength()}\n\t\t\tfloat focusDistance = ${camera.focus}\n\t\t\tfloat horizontalAperture = ${camera.getFilmWidth()}\n\t\t\ttoken projection = \"perspective\"\n\t\t\tfloat verticalAperture = ${camera.getFilmHeight()}\n\t\t}\n\t\n\t`;\n\t}\n\n}\n\nexport { USDZExporter };\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {IdentNode, parseExpressions} from './parsers.js';\n\n\n/**\n * For our purposes, an enumeration is a fixed set of CSS-expression-compatible\n * names. When serialized, a selected subset of the members may be specified as\n * whitespace-separated strings. An enumeration deserializer is a function that\n * parses a serialized subset of an enumeration and returns any members that are\n * found as a Set.\n *\n * The following example will produce a deserializer for the days of the\n * week:\n *\n * const deserializeDaysOfTheWeek = enumerationDeserializer([\n * 'Monday',\n * 'Tuesday',\n * 'Wednesday',\n * 'Thursday',\n * 'Friday',\n * 'Saturday',\n * 'Sunday'\n * ]);\n */\nexport const enumerationDeserializer = (allowedNames: T[]) =>\n (valueString: string): Set => {\n try {\n const expressions = parseExpressions(valueString);\n const names = (expressions.length ? expressions[0].terms : [])\n .filter(\n (valueNode): valueNode is IdentNode =>\n valueNode && valueNode.type === 'ident')\n .map(valueNode => valueNode.value as T)\n .filter(name => allowedNames.indexOf(name) > -1);\n\n // NOTE(cdata): IE11 does not support constructing a Set directly from\n // an iterable, so we need to manually add all the items:\n const result = new Set();\n for (const name of names) {\n result.add(name);\n }\n return result;\n } catch (_error) {\n }\n return new Set();\n };","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {property} from 'lit/decorators.js';\nimport {Event as ThreeEvent} from 'three';\nimport {USDZExporter} from 'three/examples/jsm/exporters/USDZExporter.js';\n\nimport {IS_AR_QUICKLOOK_CANDIDATE, IS_SCENEVIEWER_CANDIDATE, IS_WEBXR_AR_CANDIDATE} from '../constants.js';\nimport ModelViewerElementBase, {$needsRender, $progressTracker, $renderer, $scene, $shouldAttemptPreload, $updateSource} from '../model-viewer-base.js';\nimport {enumerationDeserializer} from '../styles/deserializers.js';\nimport {ARStatus, ARTracking} from '../three-components/ARRenderer.js';\nimport {Constructor, waitForEvent} from '../utilities.js';\n\nlet isWebXRBlocked = false;\nlet isSceneViewerBlocked = false;\nconst noArViewerSigil = '#model-viewer-no-ar-fallback';\n\nexport type ARMode = 'quick-look'|'scene-viewer'|'webxr'|'none';\n\nconst deserializeARModes = enumerationDeserializer(\n ['quick-look', 'scene-viewer', 'webxr', 'none']);\n\nconst DEFAULT_AR_MODES = 'webxr scene-viewer quick-look';\n\nconst ARMode: {[index: string]: ARMode} = {\n QUICK_LOOK: 'quick-look',\n SCENE_VIEWER: 'scene-viewer',\n WEBXR: 'webxr',\n NONE: 'none'\n};\n\nexport interface ARStatusDetails {\n status: ARStatus;\n}\n\nexport interface ARTrackingDetails {\n status: ARTracking;\n}\n\nconst $arButtonContainer = Symbol('arButtonContainer');\nconst $enterARWithWebXR = Symbol('enterARWithWebXR');\nexport const $openSceneViewer = Symbol('openSceneViewer');\nexport const $openIOSARQuickLook = Symbol('openIOSARQuickLook');\nconst $canActivateAR = Symbol('canActivateAR');\nconst $arMode = Symbol('arMode');\nconst $arModes = Symbol('arModes');\nconst $arAnchor = Symbol('arAnchor');\nconst $preload = Symbol('preload');\n\nconst $onARButtonContainerClick = Symbol('onARButtonContainerClick');\nconst $onARStatus = Symbol('onARStatus');\nconst $onARTracking = Symbol('onARTracking');\nconst $onARTap = Symbol('onARTap');\nconst $selectARMode = Symbol('selectARMode');\nconst $triggerLoad = Symbol('triggerLoad');\n\nexport declare interface ARInterface {\n ar: boolean;\n arModes: string;\n arScale: string;\n arPlacement: string;\n iosSrc: string|null;\n xrEnvironment: boolean;\n readonly canActivateAR: boolean;\n activateAR(): Promise;\n}\n\nexport const ARMixin = >(\n ModelViewerElement: T): Constructor&T => {\n class ARModelViewerElement extends ModelViewerElement {\n @property({type: Boolean, attribute: 'ar'}) ar: boolean = false;\n\n @property({type: String, attribute: 'ar-scale'}) arScale: string = 'auto';\n\n @property({type: String, attribute: 'ar-placement'})\n arPlacement: string = 'floor';\n\n @property({type: String, attribute: 'ar-modes'})\n arModes: string = DEFAULT_AR_MODES;\n\n @property({type: String, attribute: 'ios-src'}) iosSrc: string|null = null;\n\n @property({type: Boolean, attribute: 'xr-environment'})\n xrEnvironment: boolean = false;\n\n get canActivateAR(): boolean {\n return this[$arMode] !== ARMode.NONE;\n }\n\n protected[$canActivateAR]: boolean = false;\n\n // TODO: Add this to the shadow root as part of this mixin's\n // implementation:\n protected[$arButtonContainer]: HTMLElement =\n this.shadowRoot!.querySelector('.ar-button') as HTMLElement;\n\n protected[$arAnchor] = document.createElement('a');\n\n protected[$arModes]: Set = new Set();\n protected[$arMode]: ARMode = ARMode.NONE;\n protected[$preload] = false;\n\n private[$onARButtonContainerClick] = (event: Event) => {\n event.preventDefault();\n this.activateAR();\n };\n\n private[$onARStatus] = ({status}: ThreeEvent) => {\n if (status === ARStatus.NOT_PRESENTING ||\n this[$renderer].arRenderer.presentedScene === this[$scene]) {\n this.setAttribute('ar-status', status);\n this.dispatchEvent(\n new CustomEvent('ar-status', {detail: {status}}));\n if (status === ARStatus.NOT_PRESENTING) {\n this.removeAttribute('ar-tracking');\n } else if (status === ARStatus.SESSION_STARTED) {\n this.setAttribute('ar-tracking', ARTracking.TRACKING);\n }\n }\n };\n\n private[$onARTracking] = ({status}: ThreeEvent) => {\n this.setAttribute('ar-tracking', status);\n this.dispatchEvent(new CustomEvent(\n 'ar-tracking', {detail: {status}}));\n };\n\n private[$onARTap] = (event: Event) => {\n if ((event as any).data == '_apple_ar_quicklook_button_tapped') {\n this.dispatchEvent(new CustomEvent('quick-look-button-tapped'));\n }\n };\n\n connectedCallback() {\n super.connectedCallback();\n\n this[$renderer].arRenderer.addEventListener('status', this[$onARStatus]);\n this.setAttribute('ar-status', ARStatus.NOT_PRESENTING);\n\n this[$renderer].arRenderer.addEventListener(\n 'tracking', this[$onARTracking]);\n\n this[$arAnchor].addEventListener('message', this[$onARTap]);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this[$renderer].arRenderer.removeEventListener(\n 'status', this[$onARStatus]);\n this[$renderer].arRenderer.removeEventListener(\n 'tracking', this[$onARTracking]);\n\n this[$arAnchor].removeEventListener('message', this[$onARTap]);\n }\n\n update(changedProperties: Map) {\n super.update(changedProperties);\n\n if (changedProperties.has('arScale')) {\n this[$scene].canScale = this.arScale !== 'fixed';\n }\n\n if (changedProperties.has('arPlacement')) {\n this[$scene].updateShadow();\n this[$needsRender]();\n }\n\n if (changedProperties.has('arModes')) {\n this[$arModes] = deserializeARModes(this.arModes);\n }\n\n if (changedProperties.has('ar') || changedProperties.has('arModes') ||\n changedProperties.has('src') || changedProperties.has('iosSrc')) {\n this[$selectARMode]();\n }\n }\n\n /**\n * Activates AR. Note that for any mode that is not WebXR-based, this\n * method most likely has to be called synchronous from a user\n * interaction handler. Otherwise, attempts to activate modes that\n * require user interaction will most likely be ignored.\n */\n async activateAR() {\n switch (this[$arMode]) {\n case ARMode.QUICK_LOOK:\n this[$openIOSARQuickLook]();\n break;\n case ARMode.WEBXR:\n await this[$enterARWithWebXR]();\n break;\n case ARMode.SCENE_VIEWER:\n this[$openSceneViewer]();\n break;\n default:\n console.warn(\n 'No AR Mode can be activated. This is probably due to missing \\\nconfiguration or device capabilities');\n break;\n }\n }\n\n async[$selectARMode]() {\n let arMode = ARMode.NONE;\n if (this.ar) {\n if (this.src != null) {\n for (const value of this[$arModes]) {\n if (value === 'webxr' && IS_WEBXR_AR_CANDIDATE && !isWebXRBlocked &&\n await this[$renderer].arRenderer.supportsPresentation()) {\n arMode = ARMode.WEBXR;\n break;\n }\n if (value === 'scene-viewer' && IS_SCENEVIEWER_CANDIDATE &&\n !isSceneViewerBlocked) {\n arMode = ARMode.SCENE_VIEWER;\n break;\n }\n if (value === 'quick-look' && IS_AR_QUICKLOOK_CANDIDATE) {\n arMode = ARMode.QUICK_LOOK;\n break;\n }\n }\n }\n\n // The presence of ios-src overrides the absence of quick-look\n // ar-mode.\n if (arMode === ARMode.NONE && this.iosSrc != null &&\n IS_AR_QUICKLOOK_CANDIDATE) {\n arMode = ARMode.QUICK_LOOK;\n }\n }\n\n if (arMode !== ARMode.NONE) {\n this[$arButtonContainer].classList.add('enabled');\n this[$arButtonContainer].addEventListener(\n 'click', this[$onARButtonContainerClick]);\n } else if (this[$arButtonContainer].classList.contains('enabled')) {\n this[$arButtonContainer].removeEventListener(\n 'click', this[$onARButtonContainerClick]);\n this[$arButtonContainer].classList.remove('enabled');\n\n // If AR went from working to not, notify the element.\n const status = ARStatus.FAILED;\n this.setAttribute('ar-status', status);\n this.dispatchEvent(\n new CustomEvent('ar-status', {detail: {status}}));\n }\n this[$arMode] = arMode;\n }\n\n protected async[$enterARWithWebXR]() {\n console.log('Attempting to present in AR with WebXR...');\n\n await this[$triggerLoad]();\n\n try {\n this[$arButtonContainer].removeEventListener(\n 'click', this[$onARButtonContainerClick]);\n const {arRenderer} = this[$renderer];\n arRenderer.placeOnWall = this.arPlacement === 'wall';\n await arRenderer.present(this[$scene], this.xrEnvironment);\n } catch (error) {\n console.warn('Error while trying to present in AR with WebXR');\n console.error(error);\n await this[$renderer].arRenderer.stopPresenting();\n isWebXRBlocked = true;\n console.warn('Falling back to next ar-mode');\n await this[$selectARMode]();\n this.activateAR();\n } finally {\n this[$selectARMode]();\n }\n }\n\n async[$triggerLoad]() {\n if (!this.loaded) {\n this[$preload] = true;\n this[$updateSource]();\n await waitForEvent(this, 'load');\n this[$preload] = false;\n }\n }\n\n [$shouldAttemptPreload](): boolean {\n return super[$shouldAttemptPreload]() || this[$preload];\n }\n\n /**\n * Takes a URL and a title string, and attempts to launch Scene Viewer on\n * the current device.\n */\n [$openSceneViewer]() {\n const location = self.location.toString();\n const locationUrl = new URL(location);\n const modelUrl = new URL(this.src!, location);\n const params = new URLSearchParams(modelUrl.search);\n\n locationUrl.hash = noArViewerSigil;\n\n // modelUrl can contain title/link/sound etc.\n params.set('mode', 'ar_preferred');\n if (!params.has('disable_occlusion')) {\n params.set('disable_occlusion', 'true');\n }\n if (this.arScale === 'fixed') {\n params.set('resizable', 'false');\n }\n if (this.arPlacement === 'wall') {\n params.set('enable_vertical_placement', 'true');\n }\n if (params.has('sound')) {\n const soundUrl = new URL(params.get('sound')!, location);\n params.set('sound', soundUrl.toString());\n }\n if (params.has('link')) {\n const linkUrl = new URL(params.get('link')!, location);\n params.set('link', linkUrl.toString());\n }\n\n const intent = `intent://arvr.google.com/scene-viewer/1.0?${\n params.toString() + '&file=' +\n encodeURIComponent(\n modelUrl\n .toString())}#Intent;scheme=https;package=com.google.ar.core;action=android.intent.action.VIEW;S.browser_fallback_url=${\n encodeURIComponent(locationUrl.toString())};end;`;\n\n const undoHashChange = () => {\n if (self.location.hash === noArViewerSigil) {\n isSceneViewerBlocked = true;\n // The new history will be the current URL with a new hash.\n // Go back one step so that we reset to the expected URL.\n // NOTE(cdata): this should not invoke any browser-level navigation\n // because hash-only changes modify the URL in-place without\n // navigating:\n self.history.back();\n console.warn('Error while trying to present in AR with Scene Viewer');\n console.warn('Falling back to next ar-mode');\n this[$selectARMode]();\n // Would be nice to activateAR() here, but webXR fails due to not\n // seeing a user activation.\n }\n };\n\n self.addEventListener('hashchange', undoHashChange, {once: true});\n\n this[$arAnchor].setAttribute('href', intent);\n console.log('Attempting to present in AR with Scene Viewer...');\n this[$arAnchor].click();\n }\n\n /**\n * Takes a URL to a USDZ file and sets the appropriate fields so that\n * Safari iOS can intent to their AR Quick Look.\n */\n async[$openIOSARQuickLook]() {\n const generateUsdz = !this.iosSrc;\n\n this[$arButtonContainer].classList.remove('enabled');\n\n const objectURL = generateUsdz ? await this.prepareUSDZ() : this.iosSrc!;\n const modelUrl = new URL(objectURL, self.location.toString());\n\n if (generateUsdz) {\n const location = self.location.toString();\n const locationUrl = new URL(location);\n const srcUrl = new URL(this.src!, locationUrl);\n if (srcUrl.hash) {\n modelUrl.hash = srcUrl.hash;\n }\n }\n\n if (this.arScale === 'fixed') {\n if (modelUrl.hash) {\n modelUrl.hash += '&';\n }\n modelUrl.hash += 'allowsContentScaling=0';\n }\n\n const anchor = this[$arAnchor];\n anchor.setAttribute('rel', 'ar');\n const img = document.createElement('img');\n anchor.appendChild(img);\n anchor.setAttribute('href', modelUrl.toString());\n if (generateUsdz) {\n anchor.setAttribute('download', 'model.usdz');\n }\n\n // attach anchor to shadow DOM to ensure iOS16 ARQL banner click message event propagation \n anchor.style.display = 'none';\n if(!anchor.isConnected) this.shadowRoot!.appendChild(anchor);\n\n console.log('Attempting to present in AR with Quick Look...');\n anchor.click();\n anchor.removeChild(img);\n if (generateUsdz) {\n URL.revokeObjectURL(objectURL);\n }\n this[$arButtonContainer].classList.add('enabled');\n }\n\n async prepareUSDZ(): Promise {\n const updateSourceProgress = this[$progressTracker].beginActivity();\n\n await this[$triggerLoad]();\n\n const {model, shadow} = this[$scene];\n if (model == null) {\n return '';\n }\n\n let visible = false;\n\n // Remove shadow from export\n if (shadow != null) {\n visible = shadow.visible;\n shadow.visible = false;\n }\n\n updateSourceProgress(0.2);\n\n const exporter = new USDZExporter();\n const arraybuffer = await exporter.parse(model);\n const blob = new Blob([arraybuffer], {\n type: 'model/vnd.usdz+zip',\n });\n\n const url = URL.createObjectURL(blob);\n\n updateSourceProgress(1);\n\n if (shadow != null) {\n shadow.visible = visible;\n }\n\n return url;\n }\n }\n\n return ARModelViewerElement;\n};\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {normalizeUnit} from './conversions';\nimport {ExpressionNode, ExpressionTerm, FunctionNode, IdentNode, NumberNode, numberNode, OperatorNode, Percentage, Unit, ZERO} from './parsers';\n\nexport type Evaluatable = Evaluator|T;\n\n/**\n * A NumberNodeSequence is a vector of NumberNodes with a specified\n * sequence of units.\n */\nexport type NumberNodeSequence, U = never> = {\n [I in keyof T]:\n NumberNode&{\n unit: T[I]|U;\n };\n};\n\nexport type Sparse = {\n [I in keyof T]: null|T[I];\n};\n\n/**\n * Intrinsics describe the metadata required to do four things for any given\n * type of number-based CSS expression:\n *\n * 1. Establish the expected units of a final, evaluated result\n * 2. Provide a foundational value that percentages should scale against\n * 3. Describe the analog number values that correspond to various keywords\n * 4. Have an available concrete value to fallback to when needed\n *\n * Intrinsics must always specify a basis and the substitute values for the\n * keyword 'auto'.\n *\n * Intrinsics may optionally specify the substitute values for any additional\n * number of keywords.\n */\nexport interface Intrinsics = []> {\n basis: NumberNodeSequence;\n keywords: {\n auto: Sparse>;\n [index: string]: Sparse>;\n };\n}\n\nconst $evaluate = Symbol('evaluate');\nconst $lastValue = Symbol('lastValue');\n\n/**\n * An Evaluator is used to derive a computed style from part (or all) of a CSS\n * expression AST. This construct is particularly useful for complex ASTs\n * containing function calls such as calc, var and env. Such styles could be\n * costly to re-evaluate on every frame (and in some cases we may try to do\n * that). The Evaluator construct allows us to mark sub-trees of the AST as\n * constant, so that only the dynamic parts are re-evaluated. It also separates\n * one-time AST preparation work from work that necessarily has to happen upon\n * each evaluation.\n */\nexport abstract class Evaluator {\n /**\n * An Evaluatable is a NumberNode or an Evaluator that evaluates a NumberNode\n * as the result of invoking its evaluate method. This is mainly used to\n * ensure that CSS function nodes are cast to the corresponding Evaluators\n * that will resolve the result of the function, but is also used to ensure\n * that a percentage nested at arbitrary depth in the expression will always\n * be evaluated against the correct basis.\n */\n static evaluatableFor(\n node: ExpressionTerm|Evaluator,\n basis: NumberNode = ZERO): Evaluatable {\n if (node instanceof Evaluator) {\n return node;\n }\n\n if (node.type === 'number') {\n if (node.unit === '%') {\n return new PercentageEvaluator(node as NumberNode<'%'>, basis);\n }\n return node;\n }\n\n switch ((node as FunctionNode).name.value) {\n case 'calc':\n return new CalcEvaluator(node as FunctionNode, basis);\n case 'env':\n return new EnvEvaluator(node as FunctionNode);\n }\n\n return ZERO;\n }\n\n /**\n * If the input is an Evaluator, returns the result of evaluating it.\n * Otherwise, returns the input.\n *\n * This is a helper to aide in resolving a NumberNode without conditionally\n * checking if the Evaluatable is an Evaluator everywhere.\n */\n static evaluate(evaluatable: Evaluatable):\n T {\n if (evaluatable instanceof Evaluator) {\n return evaluatable.evaluate();\n }\n\n return evaluatable;\n }\n\n /**\n * If the input is an Evaluator, returns the value of its isConstant property.\n * Returns true for all other input values.\n */\n static isConstant(evaluatable: Evaluatable): boolean {\n if (evaluatable instanceof Evaluator) {\n return evaluatable.isConstant;\n }\n return true;\n }\n\n /**\n * This method applies a set of structured intrinsic metadata to an evaluated\n * result from a parsed CSS-like string of expressions. Intrinsics provide\n * sufficient metadata (e.g., basis values, analogs for keywords) such that\n * omitted values in the input string can be backfilled, and keywords can be\n * converted to concrete numbers.\n *\n * The result of applying intrinsics is a tuple of NumberNode values whose\n * units match the units used by the basis of the intrinsics.\n *\n * The following is a high-level description of how intrinsics are applied:\n *\n * 1. Determine the value of 'auto' for the current term\n * 2. If there is no corresponding input value for this term, substitute the\n * 'auto' value.\n * 3. If the term is an IdentNode, treat it as a keyword and perform the\n * appropriate substitution.\n * 4. If the term is still null, fallback to the 'auto' value\n * 5. If the term is a percentage, apply it to the basis and return that\n * value\n * 6. Normalize the unit of the term\n * 7. If the term's unit does not match the basis unit, return the basis\n * value\n * 8. Return the term as is\n */\n static applyIntrinsics>(\n evaluated: Array, intrinsics: Intrinsics): NumberNodeSequence {\n const {basis, keywords} = intrinsics;\n const {auto} = keywords;\n\n return basis.map((basisNode, index) => {\n // Use an auto value if we have it, otherwise the auto value is the basis:\n const autoSubstituteNode = auto[index] == null ? basisNode : auto[index];\n\n // If the evaluated nodes do not have a node at the current\n // index, fallback to the \"auto\" substitute right away:\n let evaluatedNode =\n evaluated[index] ? evaluated[index] : autoSubstituteNode;\n\n // Any ident node is considered a keyword:\n if (evaluatedNode.type === 'ident') {\n const keyword = evaluatedNode.value;\n // Substitute any keywords for concrete values first:\n if (keyword in keywords) {\n evaluatedNode = keywords[keyword][index];\n }\n }\n\n // If we don't have a NumberNode at this point, fall back to whatever\n // is specified for auto:\n if (evaluatedNode == null || evaluatedNode.type === 'ident') {\n evaluatedNode = autoSubstituteNode;\n }\n\n // For percentages, we always apply the percentage to the basis value:\n if (evaluatedNode.unit === '%') {\n return numberNode(\n evaluatedNode.number / 100 * basisNode.number, basisNode.unit);\n }\n\n // Otherwise, normalize whatever we have:\n evaluatedNode = normalizeUnit(evaluatedNode, basisNode);\n\n // If the normalized units do not match, return the basis as a fallback:\n if (evaluatedNode.unit !== basisNode.unit) {\n return basisNode;\n }\n\n // Finally, return the evaluated node with intrinsics applied:\n return evaluatedNode;\n }) as NumberNodeSequence;\n }\n\n /**\n * If true, the Evaluator will only evaluate its AST one time. If false, the\n * Evaluator will re-evaluate the AST each time that the public evaluate\n * method is invoked.\n */\n get isConstant(): boolean {\n return false;\n }\n\n protected[$lastValue]: T|null = null;\n\n /**\n * This method must be implemented by subclasses. Its implementation should be\n * the actual steps to evaluate the AST, and should return the evaluated\n * result.\n */\n protected abstract[$evaluate](): T;\n\n /**\n * Evaluate the Evaluator and return the result. If the Evaluator is constant,\n * the corresponding AST will only be evaluated once, and the result of\n * evaluating it the first time will be returned on all subsequent\n * evaluations.\n */\n evaluate(): T {\n if (!this.isConstant || this[$lastValue] == null) {\n this[$lastValue] = this[$evaluate]();\n }\n return this[$lastValue]!;\n }\n}\n\n\nconst $percentage = Symbol('percentage');\nconst $basis = Symbol('basis');\n\n\n/**\n * A PercentageEvaluator scales a given basis value by a given percentage value.\n * The evaluated result is always considered to be constant.\n */\nexport class PercentageEvaluator extends Evaluator {\n protected[$percentage]: NumberNode<'%'>;\n protected[$basis]: NumberNode;\n\n constructor(percentage: NumberNode<'%'>, basis: NumberNode) {\n super();\n\n this[$percentage] = percentage;\n this[$basis] = basis;\n }\n\n get isConstant() {\n return true;\n }\n\n [$evaluate]() {\n return numberNode(\n this[$percentage].number / 100 * this[$basis].number,\n this[$basis].unit);\n }\n}\n\n\nconst $identNode = Symbol('identNode');\n\n/**\n * Evaluator for CSS-like env() functions. Currently, only one environment\n * variable is accepted as an argument for such functions: window-scroll-y.\n *\n * The env() Evaluator is explicitly dynamic because it always refers to\n * external state that changes as the user scrolls, so it should always be\n * re-evaluated to ensure we get the most recent value.\n *\n * Some important notes about this feature include:\n *\n * - There is no such thing as a \"window-scroll-y\" CSS environment variable in\n * any stable browser at the time that this comment is being written.\n * - The actual CSS env() function accepts a second argument as a fallback for\n * the case that the specified first argument isn't set; our syntax does not\n * support this second argument.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/env\n */\nexport class EnvEvaluator extends Evaluator {\n protected[$identNode]: IdentNode|null = null;\n\n constructor(envFunction: FunctionNode) {\n super();\n\n const identNode =\n envFunction.arguments.length ? envFunction.arguments[0].terms[0] : null;\n\n if (identNode != null && identNode.type === 'ident') {\n this[$identNode] = identNode;\n }\n }\n\n get isConstant(): boolean {\n return false;\n };\n\n [$evaluate](): NumberNode {\n if (this[$identNode] != null) {\n switch (this[$identNode]!.value) {\n case 'window-scroll-y':\n const verticalScrollPosition = window.pageYOffset;\n const verticalScrollMax = Math.max(\n document.body.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.clientHeight,\n document.documentElement.scrollHeight,\n document.documentElement.offsetHeight);\n const scrollY = verticalScrollPosition /\n (verticalScrollMax - window.innerHeight) ||\n 0;\n\n return {type: 'number', number: scrollY, unit: null};\n }\n }\n\n return ZERO;\n }\n}\n\n\nconst IS_MULTIPLICATION_RE = /[\\*\\/]/;\nconst $evaluator = Symbol('evaluator');\n\n/**\n * Evaluator for CSS-like calc() functions. Our implementation of calc()\n * evaluation currently support nested function calls, an unlimited number of\n * terms, and all four algebraic operators (+, -, * and /).\n *\n * The Evaluator is marked as constant unless the calc expression contains an\n * internal env expression at any depth, in which case it will be marked as\n * dynamic.\n *\n * @see https://www.w3.org/TR/css-values-3/#calc-syntax\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/calc\n */\nexport class CalcEvaluator extends Evaluator {\n protected[$evaluator]: Evaluator|null = null;\n\n constructor(calcFunction: FunctionNode, basis: NumberNode = ZERO) {\n super();\n\n if (calcFunction.arguments.length !== 1) {\n return;\n }\n\n const terms: Array =\n calcFunction.arguments[0].terms.slice();\n const secondOrderTerms: Array> = [];\n\n while (terms.length) {\n const term: ExpressionTerm = terms.shift()!;\n\n if (secondOrderTerms.length > 0) {\n const previousTerm =\n secondOrderTerms[secondOrderTerms.length - 1] as ExpressionTerm;\n if (previousTerm.type === 'operator' &&\n IS_MULTIPLICATION_RE.test(previousTerm.value)) {\n const operator = secondOrderTerms.pop() as OperatorNode;\n const leftValue = secondOrderTerms.pop();\n\n if (leftValue == null) {\n return;\n }\n\n secondOrderTerms.push(new OperatorEvaluator(\n operator,\n Evaluator.evaluatableFor(leftValue, basis),\n Evaluator.evaluatableFor(term, basis)));\n continue;\n }\n }\n\n secondOrderTerms.push(\n term.type === 'operator' ? term :\n Evaluator.evaluatableFor(term, basis));\n }\n\n while (secondOrderTerms.length > 2) {\n const [left, operator, right] = secondOrderTerms.splice(0, 3);\n if ((operator as ExpressionTerm).type !== 'operator') {\n return;\n }\n\n secondOrderTerms.unshift(new OperatorEvaluator(\n operator as OperatorNode,\n Evaluator.evaluatableFor(left, basis),\n Evaluator.evaluatableFor(right, basis)));\n }\n\n // There should only be one combined evaluator at this point:\n if (secondOrderTerms.length === 1) {\n this[$evaluator] = secondOrderTerms[0] as Evaluator;\n }\n }\n\n get isConstant() {\n return this[$evaluator] == null || Evaluator.isConstant(this[$evaluator]!);\n }\n\n [$evaluate]() {\n return this[$evaluator] != null ? Evaluator.evaluate(this[$evaluator]!) :\n ZERO;\n }\n}\n\n\n\nconst $operator = Symbol('operator');\nconst $left = Symbol('left');\nconst $right = Symbol('right');\n\n/**\n * An Evaluator for the operators found inside CSS calc() functions.\n * The evaluator accepts an operator and left/right operands. The operands can\n * be any valid expression term typically allowed inside a CSS calc function.\n *\n * As detail of this implementation, the only supported unit types are angles\n * expressed as radians or degrees, and lengths expressed as meters, centimeters\n * or millimeters.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/calc\n */\nexport class OperatorEvaluator extends Evaluator {\n protected[$operator]: OperatorNode;\n protected[$left]: Evaluatable;\n protected[$right]: Evaluatable;\n\n constructor(\n operator: OperatorNode, left: Evaluatable,\n right: Evaluatable) {\n super();\n this[$operator] = operator;\n this[$left] = left;\n this[$right] = right;\n }\n\n get isConstant() {\n return Evaluator.isConstant(this[$left]) &&\n Evaluator.isConstant(this[$right]);\n }\n\n [$evaluate](): NumberNode {\n const leftNode = normalizeUnit(Evaluator.evaluate(this[$left]));\n const rightNode = normalizeUnit(Evaluator.evaluate(this[$right]));\n const {number: leftValue, unit: leftUnit} = leftNode;\n const {number: rightValue, unit: rightUnit} = rightNode;\n\n // Disallow operations for mismatched normalized units e.g., m and rad:\n if (rightUnit != null && leftUnit != null && rightUnit != leftUnit) {\n return ZERO;\n }\n\n // NOTE(cdata): rules for calc type checking are defined here\n // https://drafts.csswg.org/css-values-3/#calc-type-checking\n // This is a simplification and may not hold up once we begin to support\n // additional unit types:\n const unit = leftUnit || rightUnit;\n let value;\n\n switch (this[$operator].value) {\n case '+':\n value = leftValue + rightValue;\n break;\n case '-':\n value = leftValue - rightValue;\n break;\n case '/':\n value = leftValue / rightValue;\n break;\n case '*':\n value = leftValue * rightValue;\n break;\n default:\n return ZERO;\n }\n\n return {type: 'number', number: value, unit};\n }\n}\n\n\nexport type EvaluatedStyle>> = {\n [I in keyof T['basis']]: number;\n}&Array;\n\nconst $evaluatables = Symbol('evaluatables');\nconst $intrinsics = Symbol('intrinsics');\n\n/**\n * A VectorEvaluator evaluates a series of numeric terms that usually represent\n * a data structure such as a multi-dimensional vector or a spherical\n *\n * The form of the evaluator's result is determined by the Intrinsics that are\n * given to it when it is constructed. For example, spherical intrinsics would\n * establish two angle terms and a length term, so the result of evaluating the\n * evaluator that is configured with spherical intrinsics is a three element\n * array where the first two elements represent angles in radians and the third\n * element representing a length in meters.\n */\nexport class StyleEvaluator>> extends\n Evaluator> {\n protected[$intrinsics]: T;\n protected[$evaluatables]: Array>;\n\n constructor(expressions: Array, intrinsics: T) {\n super();\n\n this[$intrinsics] = intrinsics;\n\n const firstExpression = expressions[0];\n const terms = firstExpression != null ? firstExpression.terms : [];\n\n this[$evaluatables] =\n intrinsics.basis.map>(\n (basisNode, index) => {\n const term = terms[index];\n if (term == null) {\n return {type: 'ident', value: 'auto'};\n }\n\n if (term.type === 'ident') {\n return term;\n }\n\n return Evaluator.evaluatableFor(term, basisNode);\n });\n }\n\n get isConstant(): boolean {\n for (const evaluatable of this[$evaluatables]) {\n if (!Evaluator.isConstant(evaluatable)) {\n return false;\n }\n }\n return true;\n }\n\n [$evaluate]() {\n const evaluated = this[$evaluatables].map(\n evaluatable => Evaluator.evaluate(evaluatable));\n return Evaluator.applyIntrinsics(evaluated, this[$intrinsics])\n .map(numberNode => numberNode.number) as\n EvaluatedStyle;\n }\n}\n\n// SphericalIntrinsics are Intrinsics that expect two angle terms\n// and one length term\nexport type SphericalIntrinsics = Intrinsics<['rad', 'rad', 'm']>;\n// Vector3Intrinsics expect three length terms\nexport type Vector3Intrinsics = Intrinsics<['m', 'm', 'm']>;\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ASTWalker, ExpressionNode, FunctionNode} from './parsers';\n\ninterface AnyObserver {\n observe(): void;\n disconnect(): void;\n}\n\nconst $instances = Symbol('instances');\nconst $activateListener = Symbol('activateListener');\nconst $deactivateListener = Symbol('deactivateListener');\nconst $notifyInstances = Symbol('notifyInstances');\nconst $notify = Symbol('notify');\nconst $scrollCallback = Symbol('callback');\n\ntype ScrollObserverCallback = () => void;\n\n/**\n * This internal helper is intended to work as a reference-counting manager of\n * scroll event listeners. Only one scroll listener is ever registered for all\n * instances of the class, and when the last ScrollObserver \"disconnects\", that\n * event listener is removed. This spares us from thrashing\n * the {add,remove}EventListener API (the binding cost of these methods has been\n * known to show up in performance analyses) as well as potential memory leaks.\n */\nclass ScrollObserver {\n private static[$notifyInstances]() {\n for (const instance of ScrollObserver[$instances]) {\n instance[$notify]();\n }\n }\n private static[$instances]: Set = new Set();\n private static[$activateListener]() {\n window.addEventListener('scroll', this[$notifyInstances], {passive: true});\n }\n private static[$deactivateListener]() {\n window.removeEventListener('scroll', this[$notifyInstances]);\n }\n\n private[$scrollCallback]: ScrollObserverCallback;\n\n constructor(callback: ScrollObserverCallback) {\n this[$scrollCallback] = callback;\n }\n\n /**\n * Listen for scroll events. The configured callback (passed to the\n * constructor) will be invoked for subsequent global scroll events.\n */\n observe() {\n if (ScrollObserver[$instances].size === 0) {\n ScrollObserver[$activateListener]();\n }\n ScrollObserver[$instances].add(this);\n }\n\n /**\n * Stop listening for scroll events.\n */\n disconnect() {\n ScrollObserver[$instances].delete(this);\n if (ScrollObserver[$instances].size === 0) {\n ScrollObserver[$deactivateListener]();\n }\n }\n\n private[$notify]() {\n this[$scrollCallback]();\n };\n}\n\n\nexport type EnvironmentState = 'window-scroll';\n\nexport type StyleEffectorCallback = (record: EnvironmentChangeRecord) => void;\nexport interface EnvironmentChangeRecord {\n relatedState: EnvironmentState;\n}\n\ntype EnvironmentDependencies = {\n [key in EnvironmentState]?: AnyObserver\n};\n\nconst $computeStyleCallback = Symbol('computeStyleCallback');\nconst $astWalker = Symbol('astWalker');\nconst $dependencies = Symbol('dependencies');\n\nconst $onScroll = Symbol('onScroll');\n\n/**\n * The StyleEffector is configured with a callback that will be invoked at the\n * optimal time that some array of CSS expression ASTs ought to be evaluated.\n *\n * For example, our CSS-like expression syntax supports usage of the env()\n * function to incorporate the current top-level scroll position into a CSS\n * expression: env(window-scroll-y).\n *\n * This \"environment variable\" will change dynamically as the user scrolls the\n * page. If an AST contains such a usage of env(), we would have to evaluate the\n * AST on every frame in order to be sure that the computed style stays up to\n * date.\n *\n * The StyleEffector spares us from evaluating the expressions on every frame by\n * correlating specific parts of an AST with observers of the external effects\n * that they refer to (if any). So, if the AST contains env(window-scroll-y),\n * the StyleEffector manages the lifetime of a global scroll event listener and\n * notifies the user at the optimal time to evaluate the computed style.\n */\nexport class StyleEffector {\n protected[$dependencies]: EnvironmentDependencies = {};\n\n protected[$computeStyleCallback]: StyleEffectorCallback;\n protected[$astWalker] = new ASTWalker(['function']);\n\n constructor(callback: StyleEffectorCallback) {\n this[$computeStyleCallback] = callback;\n }\n\n /**\n * Sets the expressions that govern when the StyleEffector callback will be\n * invoked.\n */\n observeEffectsFor(ast: Array) {\n const newDependencies: EnvironmentDependencies = {};\n const oldDependencies = this[$dependencies];\n\n this[$astWalker].walk(ast, functionNode => {\n const {name} = functionNode;\n const firstArgument = functionNode.arguments[0];\n const firstTerm = firstArgument.terms[0];\n\n if (name.value !== 'env' || firstTerm == null ||\n firstTerm.type !== 'ident') {\n return;\n }\n\n switch (firstTerm.value) {\n case 'window-scroll-y':\n if (newDependencies['window-scroll'] == null) {\n const observer = 'window-scroll' in oldDependencies ?\n oldDependencies['window-scroll'] :\n new ScrollObserver(this[$onScroll]);\n observer!.observe();\n delete oldDependencies['window-scroll'];\n newDependencies['window-scroll'] = observer;\n }\n break;\n }\n });\n\n for (const environmentState in oldDependencies) {\n const observer = oldDependencies[environmentState as EnvironmentState]!;\n observer.disconnect();\n }\n\n this[$dependencies] = newDependencies;\n }\n\n /**\n * Disposes of the StyleEffector by disconnecting all observers of external\n * effects.\n */\n dispose() {\n for (const environmentState in this[$dependencies]) {\n const observer =\n this[$dependencies][environmentState as EnvironmentState]!;\n observer.disconnect();\n }\n }\n\n protected[$onScroll] = () => {\n this[$computeStyleCallback]({relatedState: 'window-scroll'});\n };\n}","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ReactiveElement} from 'lit';\nimport {EvaluatedStyle, Intrinsics, StyleEvaluator} from './styles/evaluators';\nimport {parseExpressions, Unit} from './styles/parsers';\nimport {StyleEffector} from './styles/style-effector';\n\n// An IntrinsicsFactory generates up-to-date intrinsics for a given ModelViewer\n// element instance when it is invoked.\nexport type IntrinsicsFactory>,\n U extends ReactiveElement> =\n (element: U) => T;\n\n// When applying the @style decorator, it needs to be configured with\n// corresponding Intrinsics and the property key of a method to receive updated\n// values. Optionally, it can also be configured to observe environment effects,\n// which causes a StyleEffector to be created for the property.\nexport interface StyleDecoratorConfig>,\n U extends ReactiveElement> {\n intrinsics: T|IntrinsicsFactory;\n updateHandler: symbol;\n observeEffects?: boolean;\n}\n\n/**\n * The @style decorator is responsible for coordinating the conversion of a\n * CSS-like string property value into numbers that can be applied to\n * lower-level constructs. It also can optionally manage the lifecycle of a\n * StyleEffector which allows automatic updates for styles that use env() or\n * var() functions.\n *\n * The decorator is configured with Intrinsics and the property key for a\n * method that handles updates. The named update handler is invoked with the\n * result of parsing and evaluating the raw property string value. The format of\n * the evaluated result is derived from the basis of the configured Intrinsics,\n * and is always an array of numbers of fixed length.\n *\n * NOTE: This decorator depends on the property updating mechanism defined by\n * UpdatingElement as exported by the lit-element module. That means it *must*\n * be used in conjunction with the @property decorator, or equivalent\n * JavaScript.\n *\n * Supported configurations are:\n *\n * - `intrinsics`: An Intrinsics struct that describes how to interpret a\n * serialized style attribute. For more detail on intrinsics see\n * ./styles/evaluators.ts\n * - `updateHandler`: A string or Symbol that is the key of a method to be\n * invoked with the result of parsing and evaluating a serialized style string.\n * - `observeEffects`: Optional, if set to true then styles that use env() will\n * cause their update handlers to be invoked every time the corresponding\n * environment variable changes (even if the style attribute itself remains\n * static).\n */\nexport const style =\n >, U extends ReactiveElement>(\n config: StyleDecoratorConfig) => {\n const observeEffects: boolean = config.observeEffects || false;\n const getIntrinsics = config.intrinsics instanceof Function ?\n config.intrinsics :\n (() => config.intrinsics) as IntrinsicsFactory;\n\n return (\n proto: U, propertyName: string) => {\n const originalUpdated = (proto as any).updated;\n const originalConnectedCallback = proto.connectedCallback;\n const originalDisconnectedCallback = proto.disconnectedCallback;\n\n const $styleEffector = Symbol(`${propertyName}StyleEffector`);\n const $styleEvaluator = Symbol(`${propertyName}StyleEvaluator`);\n const $updateEvaluator = Symbol(`${propertyName}UpdateEvaluator`);\n const $evaluateAndSync = Symbol(`${propertyName}EvaluateAndSync`);\n\n Object.defineProperties(proto, {\n [$styleEffector]:\n {value: null as StyleEffector | null, writable: true},\n [$styleEvaluator]:\n {value: null as StyleEvaluator| null, writable: true},\n\n [$updateEvaluator]: {\n value: function() {\n const ast = parseExpressions(\n this[propertyName as keyof ReactiveElement] as string);\n this[$styleEvaluator] =\n new StyleEvaluator(ast, getIntrinsics(this));\n\n if (this[$styleEffector] == null && observeEffects) {\n this[$styleEffector] =\n new StyleEffector(() => this[$evaluateAndSync]());\n }\n\n if (this[$styleEffector] != null) {\n this[$styleEffector].observeEffectsFor(ast);\n }\n }\n },\n\n [$evaluateAndSync]: {\n value: function() {\n if (this[$styleEvaluator] == null) {\n return;\n }\n\n const result = this[$styleEvaluator].evaluate();\n\n // @see https://github.com/microsoft/TypeScript/pull/30769\n // @see https://github.com/Microsoft/TypeScript/issues/1863\n (this as unknown as Record<\n string,\n (style: EvaluatedStyle) =>\n void>)[config.updateHandler as unknown as string](\n result);\n }\n },\n\n updated: {\n value: function(changedProperties: Map) {\n // Always invoke updates to styles first. This gives a class that\n // uses this decorator the opportunity to override the effect, or\n // respond to it, in its own implementation of `updated`.\n if (changedProperties.has(propertyName)) {\n this[$updateEvaluator]();\n this[$evaluateAndSync]();\n }\n\n originalUpdated.call(this, changedProperties);\n }\n },\n\n connectedCallback: {\n value: function() {\n originalConnectedCallback.call(this);\n this.requestUpdate(propertyName, this[propertyName]);\n }\n },\n\n disconnectedCallback: {\n value: function() {\n originalDisconnectedCallback.call(this);\n if (this[$styleEffector] != null) {\n this[$styleEffector].dispose();\n this[$styleEffector] = null;\n }\n }\n }\n });\n };\n };","/* @license\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Euler, Event as ThreeEvent, EventDispatcher, Matrix3, PerspectiveCamera, Spherical, Vector2, Vector3} from 'three';\n\nimport {$panElement, TouchAction} from '../features/controls.js';\nimport {clamp} from '../utilities.js';\n\nimport {Damper, SETTLING_TIME} from './Damper.js';\nimport {ModelScene} from './ModelScene.js';\n\nconst PAN_SENSITIVITY = 0.018;\nconst TAP_DISTANCE = 2;\nconst TAP_MS = 300;\nconst vector2 = new Vector2();\nconst vector3 = new Vector3();\n\nexport type TouchMode = null|((dx: number, dy: number) => void);\n\nexport interface Pointer {\n clientX: number;\n clientY: number;\n id: number;\n}\n\nexport interface SmoothControlsOptions {\n // The closest the camera can be to the target\n minimumRadius?: number;\n // The farthest the camera can be from the target\n maximumRadius?: number;\n // The minimum angle between model-up and the camera polar position\n minimumPolarAngle?: number;\n // The maximum angle between model-up and the camera polar position\n maximumPolarAngle?: number;\n // The minimum angle between model-forward and the camera azimuthal position\n minimumAzimuthalAngle?: number;\n // The maximum angle between model-forward and the camera azimuthal position\n maximumAzimuthalAngle?: number;\n // The minimum camera field of view in degrees\n minimumFieldOfView?: number;\n // The maximum camera field of view in degrees\n maximumFieldOfView?: number;\n // Controls scrolling behavior\n touchAction?: TouchAction;\n}\n\nexport const DEFAULT_OPTIONS = Object.freeze({\n minimumRadius: 0,\n maximumRadius: Infinity,\n minimumPolarAngle: Math.PI / 8,\n maximumPolarAngle: Math.PI - Math.PI / 8,\n minimumAzimuthalAngle: -Infinity,\n maximumAzimuthalAngle: Infinity,\n minimumFieldOfView: 10,\n maximumFieldOfView: 45,\n touchAction: 'none'\n});\n\n// Constants\nconst KEYBOARD_ORBIT_INCREMENT = Math.PI / 8;\nconst ZOOM_SENSITIVITY = 0.04;\n\n// The move size on pan key event\nconst PAN_KEY_INCREMENT = 10;\n\nexport const KeyCode = {\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n};\n\nexport type ChangeSource = 'user-interaction'|'none'|'automatic';\n\nexport const ChangeSource: {[index: string]: ChangeSource} = {\n USER_INTERACTION: 'user-interaction',\n NONE: 'none',\n AUTOMATIC: 'automatic'\n};\n\n/**\n * ChangEvents are dispatched whenever the camera position or orientation has\n * changed\n */\nexport interface ChangeEvent extends ThreeEvent {\n /**\n * determines what was the originating reason for the change event eg user or\n * none\n */\n source: ChangeSource,\n}\n\nexport interface PointerChangeEvent extends ThreeEvent {\n type: 'pointer-change-start'|'pointer-change-end';\n}\n\n/**\n * SmoothControls is a Three.js helper for adding delightful pointer and\n * keyboard-based input to a staged Three.js scene. Its API is very similar to\n * OrbitControls, but it offers more opinionated (subjectively more delightful)\n * defaults, easy extensibility and subjectively better out-of-the-box keyboard\n * support.\n *\n * One important change compared to OrbitControls is that the `update` method\n * of SmoothControls must be invoked on every frame, otherwise the controls\n * will not have an effect.\n *\n * Another notable difference compared to OrbitControls is that SmoothControls\n * does not currently support panning (but probably will in a future revision).\n *\n * Like OrbitControls, SmoothControls assumes that the orientation of the camera\n * has been set in terms of position, rotation and scale, so it is important to\n * ensure that the camera's matrixWorld is in sync before using SmoothControls.\n */\nexport class SmoothControls extends EventDispatcher {\n public orbitSensitivity = 1;\n public inputSensitivity = 1;\n public changeSource = ChangeSource.NONE;\n\n private _interactionEnabled: boolean = false;\n private _options: SmoothControlsOptions;\n private _disableZoom = false;\n private isUserPointing = false;\n\n // Pan state\n public enablePan = true;\n public enableTap = true;\n private panProjection = new Matrix3();\n private panPerPixel = 0;\n\n // Internal orbital position state\n private spherical = new Spherical();\n private goalSpherical = new Spherical();\n private thetaDamper = new Damper();\n private phiDamper = new Damper();\n private radiusDamper = new Damper();\n private logFov = Math.log(DEFAULT_OPTIONS.maximumFieldOfView!);\n private goalLogFov = this.logFov;\n private fovDamper = new Damper();\n\n // Pointer state\n private touchMode: TouchMode = null;\n private pointers: Pointer[] = [];\n private startTime = 0;\n private startPointerPosition = {clientX: 0, clientY: 0};\n private lastSeparation = 0;\n private touchDecided = false;\n\n constructor(\n readonly camera: PerspectiveCamera, readonly element: HTMLElement,\n readonly scene: ModelScene) {\n super();\n\n this._options = Object.assign({}, DEFAULT_OPTIONS);\n\n this.setOrbit(0, Math.PI / 2, 1);\n this.setFieldOfView(100);\n this.jumpToGoal();\n }\n\n get interactionEnabled(): boolean {\n return this._interactionEnabled;\n }\n\n enableInteraction() {\n if (this._interactionEnabled === false) {\n const {element} = this;\n element.addEventListener('pointerdown', this.onPointerDown);\n element.addEventListener('pointercancel', this.onPointerUp);\n\n if (!this._disableZoom) {\n element.addEventListener('wheel', this.onWheel);\n }\n element.addEventListener('keydown', this.onKeyDown);\n // This little beauty is to work around a WebKit bug that otherwise makes\n // touch events randomly not cancelable.\n element.addEventListener('touchmove', () => {}, {passive: false});\n element.addEventListener('contextmenu', this.onContext);\n\n this.element.style.cursor = 'grab';\n this._interactionEnabled = true;\n\n this.updateTouchActionStyle();\n }\n }\n\n disableInteraction() {\n if (this._interactionEnabled === true) {\n const {element} = this;\n\n element.removeEventListener('pointerdown', this.onPointerDown);\n element.removeEventListener('pointermove', this.onPointerMove);\n element.removeEventListener('pointerup', this.onPointerUp);\n element.removeEventListener('pointercancel', this.onPointerUp);\n element.removeEventListener('wheel', this.onWheel);\n element.removeEventListener('keydown', this.onKeyDown);\n element.removeEventListener('contextmenu', this.onContext);\n\n element.style.cursor = '';\n this.touchMode = null;\n this._interactionEnabled = false;\n\n this.updateTouchActionStyle();\n }\n }\n\n /**\n * The options that are currently configured for the controls instance.\n */\n get options() {\n return this._options;\n }\n\n onContext = (event: MouseEvent) => {\n if (this.enablePan) {\n event.preventDefault();\n } else {\n for (const pointer of this.pointers) {\n // Required because of a common browser bug where the context menu never\n // fires a pointercancel event.\n this.onPointerUp(new PointerEvent(\n 'pointercancel',\n {...this.startPointerPosition, pointerId: pointer.id}));\n }\n }\n };\n\n set disableZoom(disable: boolean) {\n if (this._disableZoom != disable) {\n this._disableZoom = disable;\n if (disable === true) {\n this.element.removeEventListener('wheel', this.onWheel);\n } else {\n this.element.addEventListener('wheel', this.onWheel);\n }\n\n this.updateTouchActionStyle();\n }\n }\n\n /**\n * Copy the spherical values that represent the current camera orbital\n * position relative to the configured target into a provided Spherical\n * instance. If no Spherical is provided, a new Spherical will be allocated\n * to copy the values into. The Spherical that values are copied into is\n * returned.\n */\n getCameraSpherical(target: Spherical = new Spherical()) {\n return target.copy(this.spherical);\n }\n\n /**\n * Returns the camera's current vertical field of view in degrees.\n */\n getFieldOfView(): number {\n return this.camera.fov;\n }\n\n /**\n * Configure the _options of the controls. Configured _options will be\n * merged with whatever _options have already been configured for this\n * controls instance.\n */\n applyOptions(_options: SmoothControlsOptions) {\n Object.assign(this._options, _options);\n // Re-evaluates clamping based on potentially new values for min/max\n // polar, azimuth and radius:\n this.setOrbit();\n this.setFieldOfView(Math.exp(this.goalLogFov));\n }\n\n /**\n * Sets the near and far planes of the camera.\n */\n updateNearFar(nearPlane: number, farPlane: number) {\n this.camera.near = Math.max(nearPlane, farPlane / 1000);\n this.camera.far = farPlane;\n this.camera.updateProjectionMatrix();\n }\n\n /**\n * Sets the aspect ratio of the camera\n */\n updateAspect(aspect: number) {\n this.camera.aspect = aspect;\n this.camera.updateProjectionMatrix();\n }\n\n /**\n * Set the absolute orbital goal of the camera. The change will be\n * applied over a number of frames depending on configured acceleration and\n * dampening _options.\n *\n * Returns true if invoking the method will result in the camera changing\n * position and/or rotation, otherwise false.\n */\n setOrbit(\n goalTheta: number = this.goalSpherical.theta,\n goalPhi: number = this.goalSpherical.phi,\n goalRadius: number = this.goalSpherical.radius): boolean {\n const {\n minimumAzimuthalAngle,\n maximumAzimuthalAngle,\n minimumPolarAngle,\n maximumPolarAngle,\n minimumRadius,\n maximumRadius\n } = this._options;\n\n const {theta, phi, radius} = this.goalSpherical;\n\n const nextTheta =\n clamp(goalTheta, minimumAzimuthalAngle!, maximumAzimuthalAngle!);\n if (!isFinite(minimumAzimuthalAngle!) &&\n !isFinite(maximumAzimuthalAngle!)) {\n this.spherical.theta =\n this.wrapAngle(this.spherical.theta - nextTheta) + nextTheta;\n }\n\n const nextPhi = clamp(goalPhi, minimumPolarAngle!, maximumPolarAngle!);\n const nextRadius = clamp(goalRadius, minimumRadius!, maximumRadius!);\n\n if (nextTheta === theta && nextPhi === phi && nextRadius === radius) {\n return false;\n }\n\n this.goalSpherical.theta = nextTheta;\n this.goalSpherical.phi = nextPhi;\n this.goalSpherical.radius = nextRadius;\n this.goalSpherical.makeSafe();\n\n return true;\n }\n\n /**\n * Subset of setOrbit() above, which only sets the camera's radius.\n */\n setRadius(radius: number) {\n this.goalSpherical.radius = radius;\n this.setOrbit();\n }\n\n /**\n * Sets the goal field of view for the camera\n */\n setFieldOfView(fov: number) {\n const {minimumFieldOfView, maximumFieldOfView} = this._options;\n fov = clamp(fov, minimumFieldOfView!, maximumFieldOfView!);\n this.goalLogFov = Math.log(fov);\n }\n\n /**\n * Sets the smoothing decay time.\n */\n setDamperDecayTime(decayMilliseconds: number) {\n this.thetaDamper.setDecayTime(decayMilliseconds);\n this.phiDamper.setDecayTime(decayMilliseconds);\n this.radiusDamper.setDecayTime(decayMilliseconds);\n this.fovDamper.setDecayTime(decayMilliseconds);\n }\n\n /**\n * Adjust the orbital position of the camera relative to its current orbital\n * position. Does not let the theta goal get more than pi ahead of the current\n * theta, which ensures interpolation continues in the direction of the delta.\n * The deltaZoom parameter adjusts both the field of view and the orbit radius\n * such that they progress across their allowed ranges in sync.\n */\n adjustOrbit(deltaTheta: number, deltaPhi: number, deltaZoom: number) {\n const {theta, phi, radius} = this.goalSpherical;\n const {\n minimumRadius,\n maximumRadius,\n minimumFieldOfView,\n maximumFieldOfView\n } = this._options;\n\n const dTheta = this.spherical.theta - theta;\n const dThetaLimit = Math.PI - 0.001;\n const goalTheta =\n theta - clamp(deltaTheta, -dThetaLimit - dTheta, dThetaLimit - dTheta);\n const goalPhi = phi - deltaPhi;\n\n const deltaRatio = deltaZoom === 0 ?\n 0 :\n ((deltaZoom > 0 ? maximumRadius! : minimumRadius!) - radius) /\n (Math.log(\n deltaZoom > 0 ? maximumFieldOfView! : minimumFieldOfView!) -\n this.goalLogFov);\n\n const goalRadius = radius +\n deltaZoom *\n (isFinite(deltaRatio) ? deltaRatio :\n (maximumRadius! - minimumRadius!) * 2);\n this.setOrbit(goalTheta, goalPhi, goalRadius);\n\n if (deltaZoom !== 0) {\n const goalLogFov = this.goalLogFov + deltaZoom;\n this.setFieldOfView(Math.exp(goalLogFov));\n }\n }\n\n /**\n * Move the camera instantly instead of accelerating toward the goal\n * parameters.\n */\n jumpToGoal() {\n this.update(0, SETTLING_TIME);\n }\n\n /**\n * Update controls. In most cases, this will result in the camera\n * interpolating its position and rotation until it lines up with the\n * designated goal orbital position.\n *\n * Time and delta are measured in milliseconds.\n */\n update(_time: number, delta: number) {\n if (this.isStationary()) {\n return;\n }\n const {maximumPolarAngle, maximumRadius} = this._options;\n\n const dTheta = this.spherical.theta - this.goalSpherical.theta;\n if (Math.abs(dTheta) > Math.PI &&\n !isFinite(this._options.minimumAzimuthalAngle!) &&\n !isFinite(this._options.maximumAzimuthalAngle!)) {\n this.spherical.theta -= Math.sign(dTheta) * 2 * Math.PI;\n }\n\n this.spherical.theta = this.thetaDamper.update(\n this.spherical.theta, this.goalSpherical.theta, delta, Math.PI);\n\n this.spherical.phi = this.phiDamper.update(\n this.spherical.phi, this.goalSpherical.phi, delta, maximumPolarAngle!);\n\n this.spherical.radius = this.radiusDamper.update(\n this.spherical.radius, this.goalSpherical.radius, delta, maximumRadius!\n );\n\n this.logFov = this.fovDamper.update(this.logFov, this.goalLogFov, delta, 1);\n\n this.moveCamera();\n }\n\n updateTouchActionStyle() {\n const {style} = this.element;\n\n if (this._interactionEnabled) {\n const {touchAction} = this._options;\n if (this._disableZoom && touchAction !== 'none') {\n style.touchAction = 'manipulation';\n } else {\n style.touchAction = touchAction!;\n }\n } else {\n style.touchAction = '';\n }\n }\n\n private isStationary(): boolean {\n return this.goalSpherical.theta === this.spherical.theta &&\n this.goalSpherical.phi === this.spherical.phi &&\n this.goalSpherical.radius === this.spherical.radius &&\n this.goalLogFov === this.logFov;\n }\n\n private dispatchChange() {\n this.dispatchEvent({type: 'change', source: this.changeSource});\n }\n\n private moveCamera() {\n // Derive the new camera position from the updated spherical:\n this.spherical.makeSafe();\n this.camera.position.setFromSpherical(this.spherical);\n this.camera.setRotationFromEuler(new Euler(\n this.spherical.phi - Math.PI / 2, this.spherical.theta, 0, 'YXZ'));\n\n if (this.camera.fov !== Math.exp(this.logFov)) {\n this.camera.fov = Math.exp(this.logFov);\n this.camera.updateProjectionMatrix();\n }\n\n this.dispatchChange();\n }\n\n private userAdjustOrbit(\n deltaTheta: number, deltaPhi: number, deltaZoom: number) {\n this.adjustOrbit(\n deltaTheta * this.orbitSensitivity * this.inputSensitivity,\n deltaPhi * this.orbitSensitivity * this.inputSensitivity,\n deltaZoom * this.inputSensitivity);\n\n // Always make sure that an initial event is triggered in case there is\n // contention between user interaction and imperative changes. This initial\n // event will give external observers that chance to observe that\n // interaction occurred at all:\n this.dispatchChange();\n }\n\n // Wraps to between -pi and pi\n private wrapAngle(radians: number): number {\n const normalized = (radians + Math.PI) / (2 * Math.PI);\n const wrapped = normalized - Math.floor(normalized);\n return wrapped * 2 * Math.PI - Math.PI;\n }\n\n private pixelLengthToSphericalAngle(pixelLength: number): number {\n return 2 * Math.PI * pixelLength / this.element.clientHeight;\n }\n\n private twoTouchDistance(touchOne: Pointer, touchTwo: Pointer): number {\n const {clientX: xOne, clientY: yOne} = touchOne;\n const {clientX: xTwo, clientY: yTwo} = touchTwo;\n const xDelta = xTwo - xOne;\n const yDelta = yTwo - yOne;\n\n return Math.sqrt(xDelta * xDelta + yDelta * yDelta);\n }\n\n private touchModeZoom: TouchMode = (dx: number, dy: number) => {\n if (!this._disableZoom) {\n const touchDistance =\n this.twoTouchDistance(this.pointers[0], this.pointers[1]);\n const deltaZoom = ZOOM_SENSITIVITY *\n (this.lastSeparation - touchDistance) * 50 / this.scene.height;\n this.lastSeparation = touchDistance;\n\n this.userAdjustOrbit(0, 0, deltaZoom);\n }\n\n if (this.panPerPixel > 0) {\n this.movePan(dx, dy);\n }\n };\n\n // We implement our own version of the browser's CSS touch-action, enforced by\n // this function, because the iOS implementation of pan-y is bad and doesn't\n // match Android. Specifically, even if a touch gesture begins by panning X,\n // iOS will switch to scrolling as soon as the gesture moves in the Y, rather\n // than staying in the same mode until the end of the gesture.\n private disableScroll = (event: TouchEvent) => {\n event.preventDefault();\n };\n\n private touchModeRotate: TouchMode = (dx: number, dy: number) => {\n const {touchAction} = this._options;\n if (!this.touchDecided && touchAction !== 'none') {\n this.touchDecided = true;\n const dxMag = Math.abs(dx);\n const dyMag = Math.abs(dy);\n // If motion is mostly vertical, assume scrolling is the intent.\n if (this.changeSource === ChangeSource.USER_INTERACTION &&\n ((touchAction === 'pan-y' && dyMag > dxMag) ||\n (touchAction === 'pan-x' && dxMag > dyMag))) {\n this.touchMode = null;\n return;\n } else {\n this.element.addEventListener(\n 'touchmove', this.disableScroll, {passive: false});\n }\n }\n this.handleSinglePointerMove(dx, dy);\n };\n\n private handleSinglePointerMove(dx: number, dy: number) {\n const deltaTheta = this.pixelLengthToSphericalAngle(dx);\n const deltaPhi = this.pixelLengthToSphericalAngle(dy);\n\n if (this.isUserPointing === false) {\n this.isUserPointing = true;\n this.dispatchEvent({type: 'pointer-change-start'});\n }\n\n this.userAdjustOrbit(deltaTheta, deltaPhi, 0);\n }\n\n private initializePan() {\n const {theta, phi} = this.spherical;\n const psi = theta - this.scene.yaw;\n this.panPerPixel = PAN_SENSITIVITY / this.scene.height;\n this.panProjection.set(\n -Math.cos(psi),\n -Math.cos(phi) * Math.sin(psi),\n 0,\n 0,\n Math.sin(phi),\n 0,\n Math.sin(psi),\n -Math.cos(phi) * Math.cos(psi),\n 0);\n }\n\n private movePan(dx: number, dy: number) {\n const {scene} = this;\n const dxy = vector3.set(dx, dy, 0).multiplyScalar(this.inputSensitivity);\n const metersPerPixel =\n this.spherical.radius * Math.exp(this.logFov) * this.panPerPixel;\n dxy.multiplyScalar(metersPerPixel);\n\n const target = scene.getTarget();\n target.add(dxy.applyMatrix3(this.panProjection));\n scene.boundingSphere.clampPoint(target, target);\n scene.setTarget(target.x, target.y, target.z);\n\n this.dispatchChange();\n }\n\n private recenter(pointer: PointerEvent) {\n if (performance.now() > this.startTime + TAP_MS ||\n Math.abs(pointer.clientX - this.startPointerPosition.clientX) >\n TAP_DISTANCE ||\n Math.abs(pointer.clientY - this.startPointerPosition.clientY) >\n TAP_DISTANCE) {\n return;\n }\n const {scene} = this;\n\n const hit = scene.positionAndNormalFromPoint(\n scene.getNDC(pointer.clientX, pointer.clientY));\n\n if (hit == null) {\n const {cameraTarget} = scene.element;\n scene.element.cameraTarget = '';\n scene.element.cameraTarget = cameraTarget;\n // Zoom all the way out.\n this.userAdjustOrbit(0, 0, 1);\n } else {\n scene.target.worldToLocal(hit.position);\n scene.setTarget(hit.position.x, hit.position.y, hit.position.z);\n }\n }\n\n private resetRadius() {\n const {scene} = this;\n\n const hit = scene.positionAndNormalFromPoint(vector2.set(0, 0));\n if (hit == null) {\n return;\n }\n\n scene.target.worldToLocal(hit.position);\n const goalTarget = scene.getTarget();\n const {theta, phi} = this.spherical;\n\n // Set target to surface hit point, except the target is still settling,\n // so offset the goal accordingly so the transition is smooth even though\n // this will drift the target slightly away from the hit point.\n const psi = theta - scene.yaw;\n const n = vector3.set(\n Math.sin(phi) * Math.sin(psi),\n Math.cos(phi),\n Math.sin(phi) * Math.cos(psi));\n const dr = n.dot(hit.position.sub(goalTarget));\n goalTarget.add(n.multiplyScalar(dr));\n\n scene.setTarget(goalTarget.x, goalTarget.y, goalTarget.z);\n // Change the camera radius to match the change in target so that the\n // camera itself does not move, unless it hits a radius bound.\n this.setOrbit(undefined, undefined, this.goalSpherical.radius - dr);\n }\n\n private onPointerDown = (event: PointerEvent) => {\n if (this.pointers.length > 2) {\n return;\n }\n const {element} = this;\n\n if (this.pointers.length === 0) {\n element.addEventListener('pointermove', this.onPointerMove);\n element.addEventListener('pointerup', this.onPointerUp);\n this.touchMode = null;\n this.touchDecided = false;\n this.startPointerPosition.clientX = event.clientX;\n this.startPointerPosition.clientY = event.clientY;\n this.startTime = performance.now();\n }\n\n try {\n element.setPointerCapture(event.pointerId);\n } catch {\n }\n this.pointers.push(\n {clientX: event.clientX, clientY: event.clientY, id: event.pointerId});\n\n this.isUserPointing = false;\n\n if (event.pointerType === 'touch') {\n this.changeSource = event.altKey ? // set by interact() in controls.ts\n ChangeSource.AUTOMATIC :\n ChangeSource.USER_INTERACTION;\n this.onTouchChange(event);\n } else {\n this.changeSource = ChangeSource.USER_INTERACTION;\n this.onMouseDown(event);\n }\n };\n\n private onPointerMove = (event: PointerEvent) => {\n const pointer =\n this.pointers.find((pointer) => pointer.id === event.pointerId);\n if (pointer == null) {\n return;\n }\n\n const numTouches = this.pointers.length;\n const dx = (event.clientX - pointer.clientX) / numTouches;\n const dy = (event.clientY - pointer.clientY) / numTouches;\n if (dx === 0 && dy === 0) {\n return;\n }\n pointer.clientX = event.clientX;\n pointer.clientY = event.clientY;\n\n if (event.pointerType === 'touch') {\n this.changeSource = event.altKey ? // set by interact() in controls.ts\n ChangeSource.AUTOMATIC :\n ChangeSource.USER_INTERACTION;\n if (this.touchMode !== null) {\n this.touchMode(dx, dy);\n }\n } else {\n this.changeSource = ChangeSource.USER_INTERACTION;\n if (this.panPerPixel > 0) {\n this.movePan(dx, dy);\n } else {\n this.handleSinglePointerMove(dx, dy);\n }\n }\n };\n\n private onPointerUp = (event: PointerEvent) => {\n const {element} = this;\n\n const index =\n this.pointers.findIndex((pointer) => pointer.id === event.pointerId);\n if (index !== -1) {\n this.pointers.splice(index, 1);\n }\n\n // altKey indicates an interaction prompt; don't reset radius in this case\n // as it will cause the camera to drift.\n if (this.panPerPixel > 0 && !event.altKey) {\n this.resetRadius();\n }\n if (this.pointers.length === 0) {\n element.removeEventListener('pointermove', this.onPointerMove);\n element.removeEventListener('pointerup', this.onPointerUp);\n element.removeEventListener('touchmove', this.disableScroll);\n if (this.enablePan && this.enableTap) {\n this.recenter(event);\n }\n } else if (this.touchMode !== null) {\n this.onTouchChange(event);\n }\n\n (this.scene.element as any)[$panElement].style.opacity = 0;\n element.style.cursor = 'grab';\n this.panPerPixel = 0;\n\n if (this.isUserPointing) {\n this.dispatchEvent({type: 'pointer-change-end'});\n }\n };\n\n private onTouchChange(event: PointerEvent) {\n if (this.pointers.length === 1) {\n this.touchMode = this.touchModeRotate;\n } else {\n if (this._disableZoom) {\n this.touchMode = null;\n this.element.removeEventListener('touchmove', this.disableScroll);\n return;\n }\n this.touchMode = (this.touchDecided && this.touchMode === null) ?\n null :\n this.touchModeZoom;\n this.touchDecided = true;\n this.element.addEventListener(\n 'touchmove', this.disableScroll, {passive: false});\n this.lastSeparation =\n this.twoTouchDistance(this.pointers[0], this.pointers[1]);\n\n if (this.enablePan && this.touchMode != null) {\n this.initializePan();\n if (!event.altKey) { // user interaction, not prompt\n (this.scene.element as any)[$panElement].style.opacity = 1;\n }\n }\n }\n }\n\n private onMouseDown(event: MouseEvent) {\n this.panPerPixel = 0;\n if (this.enablePan &&\n (event.button === 2 || event.ctrlKey || event.metaKey ||\n event.shiftKey)) {\n this.initializePan();\n (this.scene.element as any)[$panElement].style.opacity = 1;\n }\n this.element.style.cursor = 'grabbing';\n }\n\n private onWheel = (event: Event) => {\n this.changeSource = ChangeSource.USER_INTERACTION;\n\n const deltaZoom = (event as WheelEvent).deltaY *\n ((event as WheelEvent).deltaMode == 1 ? 18 : 1) * ZOOM_SENSITIVITY / 30;\n this.userAdjustOrbit(0, 0, deltaZoom);\n\n event.preventDefault();\n };\n\n private onKeyDown = (event: KeyboardEvent) => {\n // We track if the key is actually one we respond to, so as not to\n // accidentally clobber unrelated key inputs when the has\n // focus.\n const {changeSource} = this;\n this.changeSource = ChangeSource.USER_INTERACTION;\n\n const relevantKey = (event.shiftKey && this.enablePan) ?\n this.panKeyCodeHandler(event) :\n this.orbitZoomKeyCodeHandler(event);\n\n if (relevantKey) {\n event.preventDefault();\n } else {\n this.changeSource = changeSource;\n }\n };\n\n /**\n * Handles the orbit and Zoom key presses\n * Uses constants for the increment.\n * @param event The keyboard event for the .key value\n * @returns boolean to indicate if the key event has been handled\n */\n private orbitZoomKeyCodeHandler(event: KeyboardEvent) {\n let relevantKey = true;\n switch (event.key) {\n case 'PageUp':\n this.userAdjustOrbit(0, 0, ZOOM_SENSITIVITY);\n break;\n case 'PageDown':\n this.userAdjustOrbit(0, 0, -1 * ZOOM_SENSITIVITY);\n break;\n case 'ArrowUp':\n this.userAdjustOrbit(0, -KEYBOARD_ORBIT_INCREMENT, 0);\n break;\n case 'ArrowDown':\n this.userAdjustOrbit(0, KEYBOARD_ORBIT_INCREMENT, 0);\n break;\n case 'ArrowLeft':\n this.userAdjustOrbit(-KEYBOARD_ORBIT_INCREMENT, 0, 0);\n break;\n case 'ArrowRight':\n this.userAdjustOrbit(KEYBOARD_ORBIT_INCREMENT, 0, 0);\n break;\n default:\n relevantKey = false;\n break;\n }\n return relevantKey;\n }\n\n /**\n * Handles the Pan key presses\n * Uses constants for the increment.\n * @param event The keyboard event for the .key value\n * @returns boolean to indicate if the key event has been handled\n */\n private panKeyCodeHandler(event: KeyboardEvent) {\n this.initializePan();\n let relevantKey = true;\n switch (event.key) {\n case 'ArrowUp':\n this.movePan(\n 0,\n -1 * PAN_KEY_INCREMENT); // This is the negative one so that the\n // model appears to move as the arrow\n // direction rather than the view moving\n break;\n case 'ArrowDown':\n this.movePan(0, PAN_KEY_INCREMENT);\n break;\n case 'ArrowLeft':\n this.movePan(-1 * PAN_KEY_INCREMENT, 0);\n break;\n case 'ArrowRight':\n this.movePan(PAN_KEY_INCREMENT, 0);\n break;\n default:\n relevantKey = false;\n break;\n }\n return relevantKey;\n }\n}\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {clamp} from '../utilities';\n\n// Adapted from https://gist.github.com/gre/1650294\nexport const easeInOutQuad: TimingFunction = (t: number) =>\n t < .5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n\n/**\n * A TimingFunction accepts a value from 0-1 and returns a corresponding\n * interpolated value\n */\nexport type TimingFunction = (time: number) => number;\n\n/**\n * Creates a TimingFunction that uses a given ease to interpolate between\n * two configured number values.\n */\nexport const interpolate =\n (start: number, end: number, ease: TimingFunction = easeInOutQuad):\n TimingFunction => (time: number) => start + (end - start) * ease(time);\n\n/**\n * Creates a TimingFunction that interpolates through a weighted list\n * of other TimingFunctions (\"tracks\"). Tracks are interpolated in order, and\n * allocated a percentage of the total time based on their relative weight.\n */\nexport const sequence =\n (tracks: Array, weights: Array): TimingFunction => {\n const cumulativeSum = ((sum: number) => (value: number) => sum += value);\n const times = weights.map(cumulativeSum(0));\n\n return (time: number) => {\n time = clamp(time, 0, 1);\n time *= times[times.length - 1];\n const i = times.findIndex((val) => val >= time);\n\n const start = i < 1 ? 0 : times[i - 1];\n const end = times[i];\n\n return tracks[i]((time - start) / (end - start));\n }\n };\n\n/**\n * A Frame groups a target value, the number of frames to interpolate towards\n * that value and an optional easing function to use for interpolation.\n */\nexport interface Frame {\n value: number;\n frames: number;\n ease?: TimingFunction;\n}\n\nexport interface Path {\n initialValue: number;\n keyframes: Frame[];\n}\n\n/**\n * Creates a \"timeline\" TimingFunction out of an initial value and a series of\n * Keyframes. The timeline function accepts value from 0-1 and returns the\n * current value based on keyframe interpolation across the total number of\n * frames. Frames are only used to indicate the relative length of each keyframe\n * transition, so interpolated values will be computed for fractional frames.\n */\nexport const timeline = (path: Path): TimingFunction => {\n const tracks: Array = [];\n const weights: Array = [];\n\n let lastValue = path.initialValue;\n\n for (let i = 0; i < path.keyframes.length; ++i) {\n const keyframe = path.keyframes[i];\n const {value, frames} = keyframe;\n const ease = keyframe.ease || easeInOutQuad;\n const track = interpolate(lastValue, value, ease);\n\n tracks.push(track);\n weights.push(frames);\n lastValue = value;\n }\n\n return sequence(tracks, weights);\n};\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {property} from 'lit/decorators.js';\nimport {Event, PerspectiveCamera, Spherical, Vector3} from 'three';\n\nimport {style} from '../decorators.js';\nimport ModelViewerElementBase, {$ariaLabel, $container, $getModelIsVisible, $loadedTime, $needsRender, $onModelLoad, $onResize, $renderer, $scene, $tick, $updateStatus, $userInputElement, toVector3D, Vector3D} from '../model-viewer-base.js';\nimport {degreesToRadians, normalizeUnit} from '../styles/conversions.js';\nimport {EvaluatedStyle, Intrinsics, SphericalIntrinsics, StyleEvaluator, Vector3Intrinsics} from '../styles/evaluators.js';\nimport {IdentNode, NumberNode, numberNode, parseExpressions} from '../styles/parsers.js';\nimport {DECAY_MILLISECONDS} from '../three-components/Damper.js';\nimport {ChangeEvent, ChangeSource, PointerChangeEvent, SmoothControls} from '../three-components/SmoothControls.js';\nimport {Constructor} from '../utilities.js';\nimport {Path, timeline, TimingFunction} from '../utilities/animation.js';\n\n\n\n// NOTE(cdata): The following \"animation\" timing functions are deliberately\n// being used in favor of CSS animations. In Safari 12.1 and 13, CSS animations\n// would cause the interaction prompt to glitch unexpectedly\n// @see https://github.com/google/model-viewer/issues/839\nconst PROMPT_ANIMATION_TIME = 5000;\n\n// For timing purposes, a \"frame\" is a timing agnostic relative unit of time\n// and a \"value\" is a target value for the Frame.\nconst wiggle = timeline({\n initialValue: 0,\n keyframes: [\n {frames: 5, value: -1},\n {frames: 1, value: -1},\n {frames: 8, value: 1},\n {frames: 1, value: 1},\n {frames: 5, value: 0},\n {frames: 18, value: 0}\n ]\n});\n\nconst fade = timeline({\n initialValue: 0,\n keyframes: [\n {frames: 1, value: 1},\n {frames: 5, value: 1},\n {frames: 1, value: 0},\n {frames: 6, value: 0}\n ]\n});\n\nexport const DEFAULT_FOV_DEG = 30;\nexport const DEFAULT_MIN_FOV_DEG = 12;\n\nexport const DEFAULT_CAMERA_ORBIT = '0deg 75deg 105%';\nconst DEFAULT_CAMERA_TARGET = 'auto auto auto';\nconst DEFAULT_FIELD_OF_VIEW = 'auto';\n\nconst MINIMUM_RADIUS_RATIO = 2.2;\n\nconst AZIMUTHAL_QUADRANT_LABELS = ['front', 'right', 'back', 'left'];\nconst POLAR_TRIENT_LABELS = ['upper-', '', 'lower-'];\n\nexport const DEFAULT_INTERACTION_PROMPT_THRESHOLD = 3000;\nexport const INTERACTION_PROMPT = '. Use mouse, touch or arrow keys to move.';\n\nexport interface CameraChangeDetails {\n source: ChangeSource;\n}\n\nexport interface SphericalPosition {\n theta: number; // equator angle around the y (up) axis.\n phi: number; // polar angle from the y (up) axis.\n radius: number;\n toString(): string;\n}\n\nexport interface Finger {\n x: Path;\n y: Path;\n}\n\nexport type InteractionPromptStrategy = 'auto'|'none';\nexport type InteractionPromptStyle = 'basic'|'wiggle';\nexport type TouchAction = 'pan-y'|'pan-x'|'none';\n\nexport const InteractionPromptStrategy:\n {[index: string]: InteractionPromptStrategy} = {\n AUTO: 'auto',\n NONE: 'none'\n };\n\nexport const InteractionPromptStyle:\n {[index: string]: InteractionPromptStyle} = {\n BASIC: 'basic',\n WIGGLE: 'wiggle'\n };\n\nexport const TouchAction: {[index: string]: TouchAction} = {\n PAN_Y: 'pan-y',\n PAN_X: 'pan-x',\n NONE: 'none'\n};\n\nexport const fieldOfViewIntrinsics = () => {\n return {\n basis:\n [degreesToRadians(numberNode(DEFAULT_FOV_DEG, 'deg')) as\n NumberNode<'rad'>],\n keywords: {auto: [null]}\n };\n};\n\nconst minFieldOfViewIntrinsics = () => {\n return {\n basis:\n [degreesToRadians(numberNode(DEFAULT_MIN_FOV_DEG, 'deg')) as\n NumberNode<'rad'>],\n keywords: {auto: [null]}\n };\n};\n\nexport const cameraOrbitIntrinsics = (() => {\n const defaultTerms =\n parseExpressions(DEFAULT_CAMERA_ORBIT)[0]\n .terms as [NumberNode<'rad'>, NumberNode<'rad'>, IdentNode];\n\n const theta = normalizeUnit(defaultTerms[0]) as NumberNode<'rad'>;\n const phi = normalizeUnit(defaultTerms[1]) as NumberNode<'rad'>;\n\n return (element: ModelViewerElementBase) => {\n const radius = element[$scene].idealCameraDistance();\n\n return {\n basis: [theta, phi, numberNode(radius, 'm')],\n keywords: {auto: [null, null, numberNode(105, '%')]}\n };\n };\n})();\n\nconst minCameraOrbitIntrinsics = (element: ModelViewerElementBase&\n ControlsInterface) => {\n const radius = MINIMUM_RADIUS_RATIO * element[$scene].boundingSphere.radius;\n\n return {\n basis: [\n numberNode(-Infinity, 'rad'),\n numberNode(Math.PI / 8, 'rad'),\n numberNode(radius, 'm')\n ],\n keywords: {auto: [null, null, null]}\n };\n};\n\nconst maxCameraOrbitIntrinsics = (element: ModelViewerElementBase) => {\n const orbitIntrinsics = cameraOrbitIntrinsics(element);\n const evaluator = new StyleEvaluator([], orbitIntrinsics);\n const defaultRadius = evaluator.evaluate()[2];\n\n return {\n basis: [\n numberNode(Infinity, 'rad'),\n numberNode(Math.PI - Math.PI / 8, 'rad'),\n numberNode(defaultRadius, 'm')\n ],\n keywords: {auto: [null, null, null]}\n };\n};\n\nexport const cameraTargetIntrinsics = (element: ModelViewerElementBase) => {\n const center = element[$scene].boundingBox.getCenter(new Vector3());\n\n return {\n basis: [\n numberNode(center.x, 'm'),\n numberNode(center.y, 'm'),\n numberNode(center.z, 'm')\n ],\n keywords: {auto: [null, null, null]}\n };\n};\n\nconst HALF_PI = Math.PI / 2.0;\nconst THIRD_PI = Math.PI / 3.0;\nconst QUARTER_PI = HALF_PI / 2.0;\nconst TAU = 2.0 * Math.PI;\n\nexport const $controls = Symbol('controls');\nexport const $panElement = Symbol('panElement');\nexport const $promptElement = Symbol('promptElement');\nexport const $promptAnimatedContainer = Symbol('promptAnimatedContainer');\nexport const $fingerAnimatedContainers = Symbol('fingerAnimatedContainers');\n\nconst $deferInteractionPrompt = Symbol('deferInteractionPrompt');\nconst $updateAria = Symbol('updateAria');\nconst $updateCameraForRadius = Symbol('updateCameraForRadius');\n\nconst $onChange = Symbol('onChange');\nconst $onPointerChange = Symbol('onPointerChange');\n\nconst $waitingToPromptUser = Symbol('waitingToPromptUser');\nconst $userHasInteracted = Symbol('userHasInteracted');\nconst $promptElementVisibleTime = Symbol('promptElementVisibleTime');\nconst $lastPromptOffset = Symbol('lastPromptOffset');\n\nconst $lastSpherical = Symbol('lastSpherical');\nconst $jumpCamera = Symbol('jumpCamera');\nconst $initialized = Symbol('initialized');\nconst $maintainThetaPhi = Symbol('maintainThetaPhi');\n\nconst $syncCameraOrbit = Symbol('syncCameraOrbit');\nconst $syncFieldOfView = Symbol('syncFieldOfView');\nconst $syncCameraTarget = Symbol('syncCameraTarget');\n\nconst $syncMinCameraOrbit = Symbol('syncMinCameraOrbit');\nconst $syncMaxCameraOrbit = Symbol('syncMaxCameraOrbit');\nconst $syncMinFieldOfView = Symbol('syncMinFieldOfView');\nconst $syncMaxFieldOfView = Symbol('syncMaxFieldOfView');\n\nexport declare interface ControlsInterface {\n cameraControls: boolean;\n cameraOrbit: string;\n cameraTarget: string;\n fieldOfView: string;\n minCameraOrbit: string;\n maxCameraOrbit: string;\n minFieldOfView: string;\n maxFieldOfView: string;\n interactionPrompt: InteractionPromptStrategy;\n interactionPromptStyle: InteractionPromptStyle;\n interactionPromptThreshold: number;\n orbitSensitivity: number;\n touchAction: TouchAction;\n interpolationDecay: number;\n disableZoom: boolean;\n disablePan: boolean;\n disableTap: boolean;\n getCameraOrbit(): SphericalPosition;\n getCameraTarget(): Vector3D;\n getFieldOfView(): number;\n getMinimumFieldOfView(): number;\n getMaximumFieldOfView(): number;\n getIdealAspect(): number;\n jumpCameraToGoal(): void;\n updateFraming(): Promise;\n resetInteractionPrompt(): void;\n zoom(keyPresses: number): void;\n interact(duration: number, finger0: Finger, finger1?: Finger): void;\n inputSensitivity: number;\n}\n\nexport const ControlsMixin = >(\n ModelViewerElement: T): Constructor&T => {\n class ControlsModelViewerElement extends ModelViewerElement {\n @property({type: Boolean, attribute: 'camera-controls'})\n cameraControls: boolean = false;\n\n @style({\n intrinsics: cameraOrbitIntrinsics,\n observeEffects: true,\n updateHandler: $syncCameraOrbit\n })\n @property({type: String, attribute: 'camera-orbit', hasChanged: () => true})\n cameraOrbit: string = DEFAULT_CAMERA_ORBIT;\n\n @style({\n intrinsics: cameraTargetIntrinsics,\n observeEffects: true,\n updateHandler: $syncCameraTarget\n })\n @property(\n {type: String, attribute: 'camera-target', hasChanged: () => true})\n cameraTarget: string = DEFAULT_CAMERA_TARGET;\n\n @style({\n intrinsics: fieldOfViewIntrinsics,\n observeEffects: true,\n updateHandler: $syncFieldOfView\n })\n @property(\n {type: String, attribute: 'field-of-view', hasChanged: () => true})\n fieldOfView: string = DEFAULT_FIELD_OF_VIEW;\n\n @style({\n intrinsics: minCameraOrbitIntrinsics,\n updateHandler: $syncMinCameraOrbit\n })\n @property(\n {type: String, attribute: 'min-camera-orbit', hasChanged: () => true})\n minCameraOrbit: string = 'auto';\n\n @style({\n intrinsics: maxCameraOrbitIntrinsics,\n updateHandler: $syncMaxCameraOrbit\n })\n @property(\n {type: String, attribute: 'max-camera-orbit', hasChanged: () => true})\n maxCameraOrbit: string = 'auto';\n\n @style({\n intrinsics: minFieldOfViewIntrinsics,\n updateHandler: $syncMinFieldOfView\n })\n @property(\n {type: String, attribute: 'min-field-of-view', hasChanged: () => true})\n minFieldOfView: string = 'auto';\n\n @style(\n {intrinsics: fieldOfViewIntrinsics, updateHandler: $syncMaxFieldOfView})\n @property(\n {type: String, attribute: 'max-field-of-view', hasChanged: () => true})\n maxFieldOfView: string = 'auto';\n\n @property({type: Number, attribute: 'interaction-prompt-threshold'})\n interactionPromptThreshold: number = DEFAULT_INTERACTION_PROMPT_THRESHOLD;\n\n @property({type: String, attribute: 'interaction-prompt'})\n interactionPrompt: InteractionPromptStrategy =\n InteractionPromptStrategy.AUTO;\n\n @property({type: String, attribute: 'interaction-prompt-style'})\n interactionPromptStyle: InteractionPromptStyle =\n InteractionPromptStyle.WIGGLE;\n\n @property({type: Number, attribute: 'orbit-sensitivity'})\n orbitSensitivity: number = 1;\n\n @property({type: String, attribute: 'touch-action'})\n touchAction: TouchAction = TouchAction.NONE;\n\n @property({type: Boolean, attribute: 'disable-zoom'})\n disableZoom: boolean = false;\n\n @property({type: Boolean, attribute: 'disable-pan'})\n disablePan: boolean = false;\n\n @property({type: Boolean, attribute: 'disable-tap'})\n disableTap: boolean = false;\n\n @property({type: Number, attribute: 'interpolation-decay'})\n interpolationDecay: number = DECAY_MILLISECONDS;\n\n protected[$promptElement] =\n this.shadowRoot!.querySelector('.interaction-prompt') as HTMLElement;\n protected[$promptAnimatedContainer] =\n this.shadowRoot!.querySelector('#prompt') as HTMLElement;\n protected[$fingerAnimatedContainers]: HTMLElement[] = [\n this.shadowRoot!.querySelector('#finger0')!,\n this.shadowRoot!.querySelector('#finger1')!\n ];\n protected[$panElement] =\n this.shadowRoot!.querySelector('.pan-target') as HTMLElement;\n\n protected[$lastPromptOffset] = 0;\n protected[$promptElementVisibleTime] = Infinity;\n protected[$userHasInteracted] = false;\n protected[$waitingToPromptUser] = false;\n\n protected[$controls] = new SmoothControls(\n this[$scene].camera as PerspectiveCamera, this[$userInputElement],\n this[$scene]);\n\n protected[$lastSpherical] = new Spherical();\n protected[$jumpCamera] = false;\n protected[$initialized] = false;\n protected[$maintainThetaPhi] = false;\n\n get inputSensitivity(): number {\n return this[$controls].inputSensitivity;\n }\n\n set inputSensitivity(value: number) {\n this[$controls].inputSensitivity = value;\n }\n\n getCameraOrbit(): SphericalPosition {\n const {theta, phi, radius} = this[$lastSpherical];\n return {\n theta,\n phi,\n radius,\n toString() {\n return `${this.theta}rad ${this.phi}rad ${this.radius}m`;\n }\n };\n }\n\n getCameraTarget(): Vector3D {\n return toVector3D(\n this[$renderer].isPresenting ? this[$renderer].arRenderer.target :\n this[$scene].getTarget());\n }\n\n getFieldOfView(): number {\n return this[$controls].getFieldOfView();\n }\n\n // Provided so user code does not have to parse these from attributes.\n getMinimumFieldOfView(): number {\n return this[$controls].options.minimumFieldOfView!;\n }\n\n getMaximumFieldOfView(): number {\n return this[$controls].options.maximumFieldOfView!;\n }\n\n getIdealAspect(): number {\n return this[$scene].idealAspect;\n }\n\n jumpCameraToGoal() {\n this[$jumpCamera] = true;\n this.requestUpdate($jumpCamera, false);\n }\n\n resetInteractionPrompt() {\n this[$lastPromptOffset] = 0;\n this[$promptElementVisibleTime] = Infinity;\n this[$userHasInteracted] = false;\n this[$waitingToPromptUser] =\n this.interactionPrompt === InteractionPromptStrategy.AUTO &&\n this.cameraControls;\n }\n\n zoom(keyPresses: number) {\n const event = new WheelEvent('wheel', {deltaY: -30 * keyPresses});\n this[$userInputElement].dispatchEvent(event);\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n this[$controls].addEventListener(\n 'change', this[$onChange] as (event: Event) => void);\n this[$controls].addEventListener(\n 'pointer-change-start',\n this[$onPointerChange] as (event: Event) => void);\n this[$controls].addEventListener(\n 'pointer-change-end',\n this[$onPointerChange] as (event: Event) => void);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this[$controls].removeEventListener(\n 'change', this[$onChange] as (event: Event) => void);\n this[$controls].removeEventListener(\n 'pointer-change-start',\n this[$onPointerChange] as (event: Event) => void);\n this[$controls].removeEventListener(\n 'pointer-change-end',\n this[$onPointerChange] as (event: Event) => void);\n }\n\n updated(changedProperties: Map) {\n super.updated(changedProperties);\n\n const controls = this[$controls];\n const scene = this[$scene];\n\n if (changedProperties.has('cameraControls')) {\n if (this.cameraControls) {\n controls.enableInteraction();\n if (this.interactionPrompt === InteractionPromptStrategy.AUTO) {\n this[$waitingToPromptUser] = true;\n }\n } else {\n controls.disableInteraction();\n this[$deferInteractionPrompt]();\n }\n this[$userInputElement].setAttribute('aria-label', this[$ariaLabel]);\n }\n\n if (changedProperties.has('disableZoom')) {\n controls.disableZoom = this.disableZoom;\n }\n\n if (changedProperties.has('disablePan')) {\n controls.enablePan = !this.disablePan;\n }\n\n if (changedProperties.has('disableTap')) {\n controls.enableTap = !this.disableTap;\n }\n\n if (changedProperties.has('interactionPrompt') ||\n changedProperties.has('cameraControls') ||\n changedProperties.has('src')) {\n if (this.interactionPrompt === InteractionPromptStrategy.AUTO &&\n this.cameraControls && !this[$userHasInteracted]) {\n this[$waitingToPromptUser] = true;\n } else {\n this[$deferInteractionPrompt]();\n }\n }\n\n if (changedProperties.has('interactionPromptStyle')) {\n this[$promptAnimatedContainer].style.opacity =\n this.interactionPromptStyle == InteractionPromptStyle.BASIC ? '1' :\n '0';\n }\n\n if (changedProperties.has('touchAction')) {\n const touchAction = this.touchAction;\n controls.applyOptions({touchAction});\n controls.updateTouchActionStyle();\n }\n\n if (changedProperties.has('orbitSensitivity')) {\n controls.orbitSensitivity = this.orbitSensitivity;\n }\n\n if (changedProperties.has('interpolationDecay')) {\n controls.setDamperDecayTime(this.interpolationDecay);\n scene.setTargetDamperDecayTime(this.interpolationDecay);\n }\n\n if (this[$jumpCamera] === true) {\n Promise.resolve().then(() => {\n controls.jumpToGoal();\n scene.jumpToGoal();\n this[$jumpCamera] = false;\n });\n }\n }\n\n async updateFraming() {\n const scene = this[$scene];\n const oldFramedFoV = scene.adjustedFoV(scene.framedFoVDeg);\n\n await scene.updateFraming();\n\n const newFramedFoV = scene.adjustedFoV(scene.framedFoVDeg);\n const zoom = this[$controls].getFieldOfView() / oldFramedFoV;\n this[$controls].setFieldOfView(newFramedFoV * zoom);\n this[$maintainThetaPhi] = true;\n\n this.requestUpdate('maxFieldOfView');\n this.requestUpdate('fieldOfView');\n this.requestUpdate('minCameraOrbit');\n this.requestUpdate('maxCameraOrbit');\n this.requestUpdate('cameraOrbit');\n await this.updateComplete;\n }\n\n interact(duration: number, finger0: Finger, finger1?: Finger) {\n const inputElement = this[$userInputElement];\n const fingerElements = this[$fingerAnimatedContainers];\n\n if (fingerElements[0].style.opacity === '1') {\n console.warn(\n 'interact() failed because an existing interaction is running.')\n return;\n }\n\n const xy = new Array<{x: TimingFunction, y: TimingFunction}>();\n xy.push({x: timeline(finger0.x), y: timeline(finger0.y)});\n const positions = [{x: xy[0].x(0), y: xy[0].y(0)}];\n\n if (finger1 != null) {\n xy.push({x: timeline(finger1.x), y: timeline(finger1.y)});\n positions.push({x: xy[1].x(0), y: xy[1].y(0)});\n }\n\n let startTime = performance.now();\n const {width, height} = this[$scene];\n\n const dispatchTouches = (type: string) => {\n for (const [i, position] of positions.entries()) {\n const {style} = fingerElements[i];\n style.transform = `translateX(${width * position.x}px) translateY(${\n height * position.y}px)`;\n if (type === 'pointerdown') {\n style.opacity = '1';\n } else if (type === 'pointerup') {\n style.opacity = '0';\n }\n\n const init = {\n pointerId: i - 5678, // help ensure uniqueness\n pointerType: 'touch',\n target: inputElement,\n clientX: width * position.x,\n clientY: height * position.y,\n altKey: true // flag that this is not a user interaction\n } as PointerEventInit;\n\n inputElement.dispatchEvent(new PointerEvent(type, init));\n }\n };\n\n const moveTouches = () => {\n // Cancel interaction if something else moves the camera or input is\n // removed from the DOM.\n const {changeSource} = this[$controls];\n if (changeSource !== ChangeSource.AUTOMATIC ||\n !inputElement.isConnected) {\n for (const fingerElement of this[$fingerAnimatedContainers]) {\n fingerElement.style.opacity = '0';\n }\n dispatchTouches('pointercancel');\n this.dispatchEvent(new CustomEvent(\n 'interact-stopped', {detail: {source: changeSource}}));\n document.removeEventListener('visibilitychange', onVisibilityChange);\n return;\n }\n\n const time = Math.min(1, (performance.now() - startTime) / duration);\n for (const [i, position] of positions.entries()) {\n position.x = xy[i].x(time);\n position.y = xy[i].y(time);\n }\n dispatchTouches('pointermove');\n\n if (time < 1) {\n requestAnimationFrame(moveTouches);\n } else {\n dispatchTouches('pointerup');\n this.dispatchEvent(new CustomEvent(\n 'interact-stopped', {detail: {source: changeSource}}));\n document.removeEventListener('visibilitychange', onVisibilityChange);\n }\n };\n\n const onVisibilityChange = () => {\n let elapsed = 0;\n if (document.visibilityState === 'hidden') {\n elapsed = performance.now() - startTime;\n } else {\n startTime = performance.now() - elapsed;\n }\n };\n\n document.addEventListener('visibilitychange', onVisibilityChange);\n\n dispatchTouches('pointerdown');\n\n requestAnimationFrame(moveTouches);\n }\n\n [$syncFieldOfView](style: EvaluatedStyle>) {\n const scene = this[$scene];\n scene.framedFoVDeg = style[0] * 180 / Math.PI;\n this[$controls].setFieldOfView(scene.adjustedFoV(scene.framedFoVDeg));\n }\n\n [$syncCameraOrbit](style: EvaluatedStyle) {\n const controls = this[$controls];\n if (this[$maintainThetaPhi]) {\n const {theta, phi} = this.getCameraOrbit();\n style[0] = theta;\n style[1] = phi;\n this[$maintainThetaPhi] = false;\n }\n controls.changeSource = ChangeSource.NONE;\n controls.setOrbit(style[0], style[1], style[2]);\n }\n\n [$syncMinCameraOrbit](style: EvaluatedStyle) {\n this[$controls].applyOptions({\n minimumAzimuthalAngle: style[0],\n minimumPolarAngle: style[1],\n minimumRadius: style[2]\n });\n this.jumpCameraToGoal();\n }\n\n [$syncMaxCameraOrbit](style: EvaluatedStyle) {\n this[$controls].applyOptions({\n maximumAzimuthalAngle: style[0],\n maximumPolarAngle: style[1],\n maximumRadius: style[2]\n });\n this[$updateCameraForRadius](style[2]);\n this.jumpCameraToGoal();\n }\n\n [$syncMinFieldOfView](style: EvaluatedStyle>) {\n this[$controls].applyOptions(\n {minimumFieldOfView: style[0] * 180 / Math.PI});\n this.jumpCameraToGoal();\n }\n\n [$syncMaxFieldOfView](style: EvaluatedStyle>) {\n const fov = this[$scene].adjustedFoV(style[0] * 180 / Math.PI);\n this[$controls].applyOptions({maximumFieldOfView: fov});\n this.jumpCameraToGoal();\n }\n\n [$syncCameraTarget](style: EvaluatedStyle) {\n const [x, y, z] = style;\n if (!this[$renderer].arRenderer.isPresenting) {\n this[$scene].setTarget(x, y, z);\n }\n this[$controls].changeSource = ChangeSource.NONE;\n this[$renderer].arRenderer.updateTarget();\n }\n\n [$tick](time: number, delta: number) {\n super[$tick](time, delta);\n\n if (this[$renderer].isPresenting || !this[$getModelIsVisible]()) {\n return;\n }\n\n const controls = this[$controls];\n const scene = this[$scene];\n\n const now = performance.now();\n if (this[$waitingToPromptUser]) {\n if (this.loaded &&\n now > this[$loadedTime] + this.interactionPromptThreshold) {\n this[$waitingToPromptUser] = false;\n this[$promptElementVisibleTime] = now;\n\n this[$promptElement].classList.add('visible');\n }\n }\n\n if (isFinite(this[$promptElementVisibleTime]) &&\n this.interactionPromptStyle === InteractionPromptStyle.WIGGLE) {\n const animationTime =\n ((now - this[$promptElementVisibleTime]) / PROMPT_ANIMATION_TIME) %\n 1;\n const offset = wiggle(animationTime);\n const opacity = fade(animationTime);\n\n this[$promptAnimatedContainer].style.opacity = `${opacity}`;\n\n if (offset !== this[$lastPromptOffset]) {\n const xOffset = offset * scene.width * 0.05;\n const deltaTheta = (offset - this[$lastPromptOffset]) * Math.PI / 16;\n\n this[$promptAnimatedContainer].style.transform =\n `translateX(${xOffset}px)`;\n\n controls.changeSource = ChangeSource.AUTOMATIC;\n controls.adjustOrbit(deltaTheta, 0, 0);\n\n this[$lastPromptOffset] = offset;\n }\n }\n\n controls.update(time, delta);\n if (scene.updateTarget(delta)) {\n this[$onChange]({type: 'change', source: controls.changeSource});\n }\n }\n\n [$deferInteractionPrompt]() {\n // Effectively cancel the timer waiting for user interaction:\n this[$waitingToPromptUser] = false;\n this[$promptElement].classList.remove('visible');\n this[$promptElementVisibleTime] = Infinity;\n }\n\n /**\n * Updates the camera's near and far planes to enclose the scene when\n * orbiting at the supplied radius.\n */\n [$updateCameraForRadius](radius: number) {\n const maximumRadius =\n Math.max(this[$scene].boundingSphere.radius, radius);\n\n const near = 0;\n const far = 2 * maximumRadius;\n this[$controls].updateNearFar(near, far);\n }\n\n [$updateAria]() {\n const {theta, phi} =\n this[$controls]!.getCameraSpherical(this[$lastSpherical]);\n\n const azimuthalQuadrant =\n (4 + Math.floor(((theta % TAU) + QUARTER_PI) / HALF_PI)) % 4;\n\n const polarTrient = Math.floor(phi / THIRD_PI);\n\n const azimuthalQuadrantLabel =\n AZIMUTHAL_QUADRANT_LABELS[azimuthalQuadrant];\n const polarTrientLabel = POLAR_TRIENT_LABELS[polarTrient];\n\n this[$updateStatus](\n `View from stage ${polarTrientLabel}${azimuthalQuadrantLabel}`);\n }\n\n get[$ariaLabel]() {\n return super[$ariaLabel] +\n (this.cameraControls ? INTERACTION_PROMPT : '');\n }\n\n async[$onResize](event: any) {\n const controls = this[$controls];\n const scene = this[$scene];\n const oldFramedFoV = scene.adjustedFoV(scene.framedFoVDeg);\n\n // The super of $onResize may update the scene's adjustedFoV, so we\n // compare the before and after to calculate the proper zoom.\n super[$onResize](event);\n\n const fovRatio = scene.adjustedFoV(scene.framedFoVDeg) / oldFramedFoV;\n const fov =\n controls.getFieldOfView() * (isFinite(fovRatio) ? fovRatio : 1);\n\n controls.updateAspect(this[$scene].aspect);\n\n this.requestUpdate('maxFieldOfView', this.maxFieldOfView);\n await this.updateComplete;\n this[$controls].setFieldOfView(fov);\n\n this.jumpCameraToGoal();\n }\n\n [$onModelLoad]() {\n super[$onModelLoad]();\n\n if (this[$initialized]) {\n this[$maintainThetaPhi] = true;\n } else {\n this[$initialized] = true;\n }\n this.requestUpdate('maxFieldOfView', this.maxFieldOfView);\n this.requestUpdate('fieldOfView', this.fieldOfView);\n this.requestUpdate('minCameraOrbit', this.minCameraOrbit);\n this.requestUpdate('maxCameraOrbit', this.maxCameraOrbit);\n this.requestUpdate('cameraOrbit', this.cameraOrbit);\n this.requestUpdate('cameraTarget', this.cameraTarget);\n this.jumpCameraToGoal();\n }\n\n [$onChange] = ({source}: ChangeEvent) => {\n this[$updateAria]();\n this[$needsRender]();\n\n if (source === ChangeSource.USER_INTERACTION) {\n this[$userHasInteracted] = true;\n this[$deferInteractionPrompt]();\n }\n\n this.dispatchEvent(new CustomEvent(\n 'camera-change', {detail: {source}}));\n };\n\n [$onPointerChange] = (event: PointerChangeEvent) => {\n if (event.type === 'pointer-change-start') {\n this[$container].classList.add('pointer-tumbling');\n } else {\n this[$container].classList.remove('pointer-tumbling');\n }\n };\n }\n\n return ControlsModelViewerElement;\n};\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {property} from 'lit/decorators.js';\nimport {Vector3} from 'three';\n\nimport ModelViewerElementBase, {$altDefaulted, $announceModelVisibility, $getModelIsVisible, $isElementInViewport, $progressTracker, $scene, $shouldAttemptPreload, $updateSource, $userInputElement, toVector3D, Vector3D} from '../model-viewer-base.js';\nimport {$loader, CachingGLTFLoader} from '../three-components/CachingGLTFLoader.js';\nimport {Renderer} from '../three-components/Renderer.js';\nimport {Constructor, throttle} from '../utilities.js';\n\nexport type RevealAttributeValue = 'auto'|'manual';\nexport type LoadingAttributeValue = 'auto'|'lazy'|'eager';\n\nexport const POSTER_TRANSITION_TIME = 300;\nexport const PROGRESS_BAR_UPDATE_THRESHOLD = 100;\n\nconst DEFAULT_DRACO_DECODER_LOCATION =\n 'https://www.gstatic.com/draco/versioned/decoders/1.4.1/';\n\nconst DEFAULT_KTX2_TRANSCODER_LOCATION =\n 'https://www.gstatic.com/basis-universal/versioned/2021-04-15-ba1c3e4/';\n\nconst RevealStrategy: {[index: string]: RevealAttributeValue} = {\n AUTO: 'auto',\n MANUAL: 'manual'\n};\n\nconst LoadingStrategy: {[index: string]: LoadingAttributeValue} = {\n AUTO: 'auto',\n LAZY: 'lazy',\n EAGER: 'eager'\n};\n\nexport const $defaultProgressBarElement = Symbol('defaultProgressBarElement');\n\nexport const $posterContainerElement = Symbol('posterContainerElement');\nexport const $defaultPosterElement = Symbol('defaultPosterElement');\n\nconst $shouldDismissPoster = Symbol('shouldDismissPoster');\nconst $hidePoster = Symbol('hidePoster');\nconst $modelIsRevealed = Symbol('modelIsRevealed');\nconst $updateProgressBar = Symbol('updateProgressBar');\n\nconst $ariaLabelCallToAction = Symbol('ariaLabelCallToAction');\n\nconst $onProgress = Symbol('onProgress');\n\nexport declare interface LoadingInterface {\n poster: string|null;\n reveal: RevealAttributeValue;\n loading: LoadingAttributeValue;\n readonly loaded: boolean;\n readonly modelIsVisible: boolean;\n dismissPoster(): void;\n showPoster(): void;\n getDimensions(): Vector3D;\n getBoundingBoxCenter(): Vector3D;\n}\n\nexport declare interface LoadingStaticInterface {\n dracoDecoderLocation: string;\n ktx2TranscoderLocation: string;\n meshoptDecoderLocation: string;\n mapURLs(callback: (url: string) => string): void;\n}\n\nexport interface ModelViewerGlobalConfig {\n dracoDecoderLocation?: string;\n ktx2TranscoderLocation?: string;\n meshoptDecoderLocation?: string;\n powerPreference?: string;\n}\n\n/**\n * LoadingMixin implements features related to lazy loading, as well as\n * presentation details related to the pre-load / pre-render presentation of a\n * \n *\n * This mixin implements support for models with DRACO-compressed meshes.\n * The DRACO decoder will be loaded on-demand if a glTF that uses the DRACO mesh\n * compression extension is encountered.\n *\n * By default, the DRACO decoder will be loaded from a Google CDN. It is\n * possible to customize where the decoder is loaded from by defining a global\n * configuration option for `` like so:\n *\n * ```html\n * \n * ```\n *\n * Note that the above configuration strategy must be performed *before* the\n * first `` element is created in the browser. The configuration\n * can be done anywhere, but the easiest way to ensure it is done at the right\n * time is to do it in the `` of the HTML document. This is the\n * recommended way to set the location because it is most compatible with\n * scenarios where the `` library is lazily loaded.\n *\n * If you absolutely have to set the DRACO decoder location *after* the first\n * `` element is created, you can do it this way:\n *\n * ```html\n * \n * ```\n *\n * Note that the above configuration approach will not work until *after*\n * `` is defined in the browser. Also note that this configuration\n * *must* be set *before* the first DRACO model is fully loaded.\n *\n * It is recommended that users who intend to take advantage of DRACO mesh\n * compression consider whether or not it is acceptable for their use case to\n * have code side-loaded from a Google CDN. If it is not acceptable, then the\n * location must be customized before loading any DRACO models in order to cause\n * the decoder to be loaded from an alternative, acceptable location.\n */\nexport const LoadingMixin = >(\n ModelViewerElement:\n T): Constructor&T => {\n class LoadingModelViewerElement extends ModelViewerElement {\n static set dracoDecoderLocation(value: string) {\n CachingGLTFLoader.setDRACODecoderLocation(value);\n }\n\n static get dracoDecoderLocation() {\n return CachingGLTFLoader.getDRACODecoderLocation();\n }\n\n static set ktx2TranscoderLocation(value: string) {\n CachingGLTFLoader.setKTX2TranscoderLocation(value);\n }\n\n static get ktx2TranscoderLocation() {\n return CachingGLTFLoader.getKTX2TranscoderLocation();\n }\n\n static set meshoptDecoderLocation(value: string) {\n CachingGLTFLoader.setMeshoptDecoderLocation(value);\n }\n\n static get meshoptDecoderLocation() {\n return CachingGLTFLoader.getMeshoptDecoderLocation();\n }\n\n /**\n * If provided, the callback will be passed each resource URL before a\n * request is sent. The callback may return the original URL, or a new URL\n * to override loading behavior. This behavior can be used to load assets\n * from .ZIP files, drag-and-drop APIs, and Data URIs.\n */\n static mapURLs(callback: (url: string) => string) {\n Renderer.singleton.loader[$loader].manager.setURLModifier(callback);\n }\n\n /**\n * A URL pointing to the image to use as a poster in scenarios where the\n * is not ready to reveal a rendered model to the viewer.\n */\n @property({type: String}) poster: string|null = null;\n\n /**\n * An enumerable attribute describing under what conditions the\n * should reveal a model to the viewer.\n *\n * The default value is \"auto\". The only supported alternative values is\n * \"manual\".\n */\n @property({type: String})\n reveal: RevealAttributeValue = RevealStrategy.AUTO;\n\n /**\n * An enumerable attribute describing under what conditions the\n * should preload a model.\n *\n * The default value is \"auto\". The only supported alternative values are\n * \"lazy\" and \"eager\". Auto is equivalent to lazy, which loads the model\n * when it is near the viewport for reveal = \"auto\", and when interacted\n * with for reveal = \"interaction\". Eager loads the model immediately.\n */\n @property({type: String})\n loading: LoadingAttributeValue = LoadingStrategy.AUTO;\n\n /**\n * Dismisses the poster, causing the model to load and render if\n * necessary. This is currently effectively the same as interacting with\n * the poster via user input.\n */\n dismissPoster() {\n if (this.loaded) {\n this[$hidePoster]();\n } else {\n this[$shouldDismissPoster] = true;\n this[$updateSource]();\n }\n }\n\n /**\n * Displays the poster, hiding the 3D model. If this is called after the 3D\n * model has been revealed, then it must be dismissed by a call to\n * dismissPoster().\n */\n showPoster() {\n const posterContainerElement = this[$posterContainerElement];\n if (posterContainerElement.classList.contains('show')) {\n return;\n }\n posterContainerElement.classList.add('show');\n this[$userInputElement].classList.remove('show');\n\n const defaultPosterElement = this[$defaultPosterElement];\n defaultPosterElement.removeAttribute('tabindex');\n defaultPosterElement.removeAttribute('aria-hidden');\n\n const oldVisibility = this.modelIsVisible;\n this[$modelIsRevealed] = false;\n this[$announceModelVisibility](oldVisibility);\n }\n\n /**\n * Returns the model's bounding box dimensions in meters, independent of\n * turntable rotation.\n */\n getDimensions(): Vector3D {\n return toVector3D(this[$scene].size);\n }\n\n getBoundingBoxCenter(): Vector3D {\n return toVector3D(this[$scene].boundingBox.getCenter(new Vector3()));\n }\n\n protected[$modelIsRevealed] = false;\n\n protected[$shouldDismissPoster] = false;\n\n // TODO: Add this to the shadow root as part of this mixin's\n // implementation:\n protected[$posterContainerElement]: HTMLElement =\n this.shadowRoot!.querySelector('.slot.poster') as HTMLElement;\n\n protected[$defaultPosterElement]: HTMLElement =\n this.shadowRoot!.querySelector('#default-poster') as HTMLElement;\n\n protected[$defaultProgressBarElement]: HTMLElement =\n this.shadowRoot!.querySelector('#default-progress-bar > .bar') as\n HTMLElement;\n\n protected[$ariaLabelCallToAction] =\n this[$defaultPosterElement].getAttribute('aria-label');\n\n protected[$updateProgressBar] = throttle((progress: number) => {\n const parentNode = this[$defaultProgressBarElement].parentNode as Element;\n\n requestAnimationFrame(() => {\n this[$defaultProgressBarElement].style.transform =\n `scaleX(${progress})`;\n\n if (progress === 0) {\n // NOTE(cdata): We remove and re-append the progress bar in this\n // condition so that the progress bar does not appear to\n // transition backwards from the right when we reset to 0 (or\n // otherwise <1) progress after having already reached 1 progress\n // previously.\n parentNode.removeChild(this[$defaultProgressBarElement]);\n parentNode.appendChild(this[$defaultProgressBarElement]);\n }\n\n // NOTE(cdata): IE11 does not properly respect the second parameter\n // of classList.toggle, which this implementation originally used.\n // @see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11865865/\n if (progress === 1.0) {\n this[$defaultProgressBarElement].classList.add('hide');\n } else {\n this[$defaultProgressBarElement].classList.remove('hide');\n }\n });\n }, PROGRESS_BAR_UPDATE_THRESHOLD);\n\n constructor(...args: Array) {\n super(...args);\n\n const ModelViewerElement: ModelViewerGlobalConfig =\n (self as any).ModelViewerElement || {};\n\n const dracoDecoderLocation = ModelViewerElement.dracoDecoderLocation ||\n DEFAULT_DRACO_DECODER_LOCATION;\n CachingGLTFLoader.setDRACODecoderLocation(dracoDecoderLocation);\n\n const ktx2TranscoderLocation =\n ModelViewerElement.ktx2TranscoderLocation ||\n DEFAULT_KTX2_TRANSCODER_LOCATION;\n CachingGLTFLoader.setKTX2TranscoderLocation(ktx2TranscoderLocation);\n\n if (ModelViewerElement.meshoptDecoderLocation) {\n CachingGLTFLoader.setMeshoptDecoderLocation(\n ModelViewerElement.meshoptDecoderLocation);\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n this.showPoster();\n\n this[$progressTracker].addEventListener('progress', this[$onProgress]);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this[$progressTracker].removeEventListener('progress', this[$onProgress]);\n }\n\n async updated(changedProperties: Map) {\n super.updated(changedProperties);\n\n if (changedProperties.has('poster') && this.poster != null) {\n this[$defaultPosterElement].style.backgroundImage =\n `url(${this.poster})`;\n }\n\n if (changedProperties.has('alt')) {\n this[$defaultPosterElement].setAttribute(\n 'aria-label', this[$altDefaulted]);\n }\n\n if (changedProperties.has('reveal') || changedProperties.has('loading')) {\n this[$updateSource]();\n }\n }\n\n [$onProgress] = (event: Event) => {\n const progress = (event as any).detail.totalProgress;\n\n if (progress === 1.0) {\n this[$updateProgressBar].flush();\n if (this.loaded &&\n (this[$shouldDismissPoster] ||\n this.reveal === RevealStrategy.AUTO)) {\n this[$hidePoster]();\n }\n }\n\n this[$updateProgressBar](progress);\n\n this.dispatchEvent(\n new CustomEvent('progress', {detail: {totalProgress: progress}}));\n };\n\n [$shouldAttemptPreload](): boolean {\n return !!this.src &&\n (this[$shouldDismissPoster] ||\n this.loading === LoadingStrategy.EAGER ||\n (this.reveal === RevealStrategy.AUTO && this[$isElementInViewport]));\n }\n\n [$hidePoster]() {\n this[$shouldDismissPoster] = false;\n const posterContainerElement = this[$posterContainerElement];\n if (!posterContainerElement.classList.contains('show')) {\n return;\n }\n posterContainerElement.classList.remove('show');\n this[$userInputElement].classList.add('show');\n\n const oldVisibility = this.modelIsVisible;\n this[$modelIsRevealed] = true;\n this[$announceModelVisibility](oldVisibility);\n\n const root = this.getRootNode();\n\n // If the is still focused, forward the focus to\n // the canvas that has just been revealed\n if (root && (root as Document | ShadowRoot).activeElement === this) {\n this[$userInputElement].focus();\n }\n\n // Ensure that the poster is no longer focusable or visible to\n // screen readers\n const defaultPosterElement = this[$defaultPosterElement];\n defaultPosterElement.setAttribute('aria-hidden', 'true');\n defaultPosterElement.tabIndex = -1;\n this.dispatchEvent(new CustomEvent('poster-dismissed'));\n }\n\n [$getModelIsVisible]() {\n return super[$getModelIsVisible]() && this[$modelIsRevealed];\n }\n }\n\n return LoadingModelViewerElement;\n};\n","\n/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {property} from 'lit/decorators.js';\n\nimport {style} from '../decorators.js';\nimport ModelViewerElementBase, {$getModelIsVisible, $renderer, $scene, $tick} from '../model-viewer-base.js';\nimport {degreesToRadians} from '../styles/conversions.js';\nimport {EvaluatedStyle, Intrinsics} from '../styles/evaluators.js';\nimport {numberNode, NumberNode} from '../styles/parsers.js';\nimport {Constructor} from '../utilities.js';\n\nimport {CameraChangeDetails} from './controls.js';\n\n\n// How much the model will rotate per\n// second in radians:\nconst DEFAULT_ROTATION_SPEED = Math.PI / 32;\nexport const AUTO_ROTATE_DELAY_DEFAULT = 3000;\n\nconst rotationRateIntrinsics = {\n basis:\n [degreesToRadians(numberNode(DEFAULT_ROTATION_SPEED, 'rad')) as\n NumberNode<'rad'>],\n keywords: {auto: [null]}\n};\n\nconst $autoRotateStartTime = Symbol('autoRotateStartTime');\nconst $radiansPerSecond = Symbol('radiansPerSecond');\nconst $syncRotationRate = Symbol('syncRotationRate');\nconst $onCameraChange = Symbol('onCameraChange');\n\nexport declare interface StagingInterface {\n autoRotate: boolean;\n autoRotateDelay: number;\n readonly turntableRotation: number;\n resetTurntableRotation(theta?: number): void;\n}\n\nexport const StagingMixin = >(\n ModelViewerElement: T): Constructor&T => {\n class StagingModelViewerElement extends ModelViewerElement {\n @property({type: Boolean, attribute: 'auto-rotate'})\n autoRotate: boolean = false;\n\n @property({type: Number, attribute: 'auto-rotate-delay'})\n autoRotateDelay: number = AUTO_ROTATE_DELAY_DEFAULT;\n\n @style(\n {intrinsics: rotationRateIntrinsics, updateHandler: $syncRotationRate})\n @property({type: String, attribute: 'rotation-per-second'})\n rotationPerSecond: string = 'auto';\n\n private[$autoRotateStartTime] = performance.now();\n private[$radiansPerSecond] = 0;\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener(\n 'camera-change', this[$onCameraChange] as EventListener);\n this[$autoRotateStartTime] = performance.now();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener(\n 'camera-change', this[$onCameraChange] as EventListener);\n this[$autoRotateStartTime] = performance.now();\n }\n\n updated(changedProperties: Map) {\n super.updated(changedProperties);\n\n if (changedProperties.has('autoRotate')) {\n this[$autoRotateStartTime] = performance.now();\n }\n }\n\n [$syncRotationRate](style: EvaluatedStyle>) {\n this[$radiansPerSecond] = style[0];\n }\n\n [$tick](time: number, delta: number) {\n super[$tick](time, delta);\n\n if (!this.autoRotate || !this[$getModelIsVisible]() ||\n this[$renderer].isPresenting) {\n return;\n }\n\n const rotationDelta = Math.min(\n delta, time - this[$autoRotateStartTime] - this.autoRotateDelay);\n\n if (rotationDelta > 0) {\n this[$scene].yaw = this.turntableRotation +\n this[$radiansPerSecond] * rotationDelta * 0.001;\n }\n }\n\n [$onCameraChange] = (event: CustomEvent) => {\n if (!this.autoRotate) {\n return;\n }\n\n if (event.detail.source === 'user-interaction') {\n this[$autoRotateStartTime] = performance.now();\n }\n };\n\n get turntableRotation(): number {\n return this[$scene].yaw;\n }\n\n resetTurntableRotation(theta = 0) {\n this[$scene].yaw = theta;\n }\n }\n\n return StagingModelViewerElement;\n};\n","/* @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {AnimationMixin} from './features/animation.js';\nimport {AnnotationMixin} from './features/annotation.js';\nimport {ARMixin} from './features/ar.js';\nimport {ControlsMixin} from './features/controls.js';\nimport {EnvironmentMixin} from './features/environment.js';\nimport {LoadingMixin} from './features/loading.js';\nimport {SceneGraphMixin} from './features/scene-graph.js';\nimport {StagingMixin} from './features/staging.js';\nimport ModelViewerElementBase from './model-viewer-base.js';\nimport {FocusVisiblePolyfillMixin} from './utilities/focus-visible.js';\n\n// Uncomment these lines to export PMREM textures in Glitch:\n// export {default as TextureUtils} from './three-components/TextureUtils';\n// export * from 'three';\n\nexport const ModelViewerElement = AnnotationMixin(SceneGraphMixin(StagingMixin(\n EnvironmentMixin(ControlsMixin(ARMixin(LoadingMixin(AnimationMixin(\n FocusVisiblePolyfillMixin(ModelViewerElementBase)))))))));\n\nexport type ModelViewerElement = InstanceType;\n\nexport {RGB, RGBA} from './three-components/gltf-instance/gltf-2.0';\n\ncustomElements.define('model-viewer', ModelViewerElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'model-viewer': ModelViewerElement;\n }\n}\n","/* @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Constructor} from '../utilities.js';\n\nexport interface OptionalLifecycleCallbacks {\n connectedCallback?(): void;\n disconnectedCallback?(): void;\n}\n\nexport type MixableBaseClass = HTMLElement&OptionalLifecycleCallbacks;\n\ntype EndPolyfillCoordinationCallback = () => void;\n\n/**\n * This mixin function is designed to be applied to a class that inherits\n * from HTMLElement. It makes it easy for a custom element to coordinate with\n * the :focus-visible polyfill.\n *\n * NOTE(cdata): The code here was adapted from an example proposed with the\n * introduction of ShadowDOM support in the :focus-visible polyfill.\n *\n * @see https://github.com/WICG/focus-visible/pull/196\n * @param {Function} SuperClass The base class implementation to decorate with\n * implementation that coordinates with the :focus-visible polyfill\n */\nexport const FocusVisiblePolyfillMixin =\n >(SuperClass: T): T => {\n const coordinateWithPolyfill =\n (instance: MixableBaseClass): EndPolyfillCoordinationCallback => {\n // If there is no shadow root, there is no need to coordinate with\n // the polyfill. If we already coordinated with the polyfill, we can\n // skip subsequent invocations:\n if (instance.shadowRoot == null ||\n instance.hasAttribute('data-js-focus-visible')) {\n return () => {};\n }\n\n // The polyfill might already be loaded. If so, we can apply it to\n // the shadow root immediately:\n if ((self as any).applyFocusVisiblePolyfill) {\n (self as any).applyFocusVisiblePolyfill(instance.shadowRoot);\n } else {\n const coordinationHandler = () => {\n (self as any).applyFocusVisiblePolyfill(instance.shadowRoot);\n };\n // Otherwise, wait for the polyfill to be loaded lazily. It might\n // never be loaded, but if it is then we can apply it to the\n // shadow root at the appropriate time by waiting for the ready\n // event:\n self.addEventListener(\n 'focus-visible-polyfill-ready',\n coordinationHandler,\n {once: true});\n\n return () => {\n self.removeEventListener(\n 'focus-visible-polyfill-ready', coordinationHandler);\n };\n }\n\n return () => {};\n };\n\n const $endPolyfillCoordination = Symbol('endPolyfillCoordination');\n\n // IE11 doesn't natively support custom elements or JavaScript class\n // syntax The mixin implementation assumes that the user will take the\n // appropriate steps to support both:\n class FocusVisibleCoordinator extends SuperClass {\n private[$endPolyfillCoordination]: EndPolyfillCoordinationCallback|\n null = null;\n // Attempt to coordinate with the polyfill when connected to the\n // document:\n connectedCallback() {\n super.connectedCallback && super.connectedCallback();\n if (this[$endPolyfillCoordination] == null) {\n this[$endPolyfillCoordination] = coordinateWithPolyfill(this);\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback && super.disconnectedCallback();\n // It's important to remove the polyfill event listener when we\n // disconnect, otherwise we will leak the whole element via window:\n if (this[$endPolyfillCoordination] != null) {\n this[$endPolyfillCoordination]!();\n this[$endPolyfillCoordination] = null;\n }\n }\n };\n\n return FocusVisibleCoordinator;\n };","import { GlobalStateContext } from '../App'\n\nimport { useState, useEffect, useContext } from 'react'\nimport { useParams, useSearchParams } from 'react-router-dom'\nimport styled from 'styled-components'\nimport '@google/model-viewer'\n\nimport { COMPUTE_URL } from './__urlsSystem'\nimport { ArMobileLinkButton, ArMobileLinkModal } from './_commonComponents'\nimport { backgroundColor } from './Global'\nimport { computeUrl, arUrl, unabbreviateParams } from './_makeUrls'\nimport { modelPlacement } from './_uiHelpers'\nimport { logAction, logArSession } from './_logging'\nimport { localize } from './_localization'\n\n// import stratumIcon from './images/stratum-icon-black.png'\n\nexport default function ArModelViewer() {\n\tconst { globalState } = useContext(GlobalStateContext)\n\tconst { productId } = useParams()\n\tconst [searchParams] = useSearchParams()\n\tconst incomingParamsEncoded = Object.fromEntries(new URLSearchParams(searchParams)) // convert to an object (flat list of key:value pairs)\n\t// console.log('View..Block', productId, incomingParamsEncoded)\n\n\tconst [qrModalIsOpen, setQrModalIsOpen] = useState(false)\n\tconst [modelSrc, setModelSrc] = useState(false)\n\tconst [placement, setPlacement] = useState('floor')\n\tconst [qrUrl, setQrUrl] = useState(false)\n\n\tfunction QRClicked() {\n\t\tsetQrModalIsOpen(true)\n\t\tlogAction(productId, 'ArMobileLink')\n\t}\n\n\tuseEffect(() => {\n\t\t// console.log('Ar..1', productId)\n\t\tlogArSession(productId)\n\t\tsetModelSrc(computeUrl(productId, unabbreviateParams(productId, incomingParamsEncoded)))\n\t\tsetQrUrl(arUrl(productId, incomingParamsEncoded))\n\n\t\t// determine placement, 'floor' or 'wall'\n\t\tsetPlacement(modelPlacement(productId))\n\t\t// eslint-disable-next-line\n\t}, [])\n\n\tconst envImage = COMPUTE_URL + '/texture/music_hall_01_1k.hdr'\n\n\treturn (\n\t\t

\n\t\t\t\n\t\t\t\t{/* */}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t)\n}\n\nconst ModelDiv = styled.div`\n\tposition: relative;\n\tbackground-color: ${backgroundColor};\n\twidth: 100%;\n\theight: 100vh;\n`\n\nconst ArDiv = styled.div`\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: flex;\n\tjustify-content: center;\n`\n\nconst ActionButtonDiv = styled.div`\n\tposition: absolute;\n\tbottom: 20px;\n\twidth: 100%;\n\tdisplay: flex;\n\tjustify-content: center;\n`\n\n","import { GlobalStateContext } from '../App'\n\nimport { useEffect, useState, useContext } from 'react'\nimport { Link } from 'react-router-dom'\nimport styled from 'styled-components'\n\nimport BlockBanner from './BlockBanner'\nimport { getRawSpecsProduct, toProperCase } from './_uiHelpers'\nimport { configPresetUrl } from './_makeUrls'\nimport { backgroundColor, setFixedPageSizeMode } from './Global'\nimport { localize } from './_localization'\n\nexport default function SelectorGallery() {\n\tconst { globalState } = useContext(GlobalStateContext)\n\n\tconst [gallery, setGallery] = useState()\n\n\tuseEffect(() => {\n\t\tsetFixedPageSizeMode(false)\n\n\t\tconst seriesSpecs = [\n\t\t\t['Wave', 'AW', 'B01'],\n\t\t\t['Cascade', 'AC', 'B01'],\n\t\t\t['Tide', 'AT', 'B01'],\n\t\t\t['Stream', 'AS', 'N01'],\n\t\t\t['Stream Double', 'AD', 'B01'],\n\t\t\t['Tabouret', 'UA', 'B01'],\n\t\t\t['Lumiere', 'CL', 'N01'],\n\t\t\t['Champignon', 'FC', 'N01'],\n\t\t\t['River', 'AF', 'B01'],\n\t\t\t['Swell', 'SW', 'N01'],\n\t\t\t['LikeButter', 'LB', 'B01'],\n\t\t]\n\n\t\tconst allRawLines = getRawSpecsProduct()\n\t\t\t.split('\\n')\n\t\t\t.filter((line) => line.trim() !== '')\n\t\tallRawLines.shift() // eliminate the header row\n\n\t\t// get the friendly product names and associate them with the 'base' productId for that subproduct\n\t\tconst idNameTriples = []\n\t\tallRawLines.forEach((rawId) => {\n\t\t\tconst idComponents = rawId.split(':')\n\t\t\tconst series = idComponents[0].trim()\n\t\t\tconst subproduct = idComponents[1]\n\t\t\tconst seriesSpec = seriesSpecs.find((spec) => spec[1] === series)\n\t\t\tconst defaultAccent = seriesSpec[2]\n\t\t\tconst baseId = `${series}.${defaultAccent}.${subproduct}`\n\t\t\tidNameTriples.push([baseId, toProperCase(localize(idComponents[2], globalState.language).trim()), idComponents[3]]) // baseID (e.g., AW), name (e.g., COFFEE TABLE), img source (e.g., COFFEE_CURVE_Mobile_B01_8a6cc9c52c)\n\t\t})\n\n\t\tsetGallery(\n\t\t\t
\n\t\t\t\t{seriesSpecs\n\t\t\t\t\t.map((seriesTriple) => (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{toProperCase(seriesTriple[0])}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{idNameTriples\n\t\t\t\t\t\t\t\t\t.filter((idTriple) => idTriple[0].startsWith(seriesTriple[1]))\n\t\t\t\t\t\t\t\t\t.map((productTriple) => (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{productTriple[1]}\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\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t
\n\t\t)\n\t}, [globalState])\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{gallery}\n\t\t\t\n\t\t\n\t)\n}\n\nconst OuterDiv = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n`\n\nconst ContentDiv = styled.div`\n\tpadding-top: 50px;\n\tpadding-left: 150px;\n\tbackground-color: ${backgroundColor};\n`\nconst GalleryTitleDiv = styled.div``\n\nconst GalleryTitleText = styled.p`\n\tmargin: 0;\n\tfont-family: 'Sharp Sans No1 Bold';\n\tfont-style: normal;\n\t// font-weight: 800;\n\tfont-size: 24px;\n\tline-height: 32px;\n\tletter-spacing: 0.05em;\n\tcolor: black;\n`\n\nconst GalleryRowDiv = styled.div`\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n\tjustify-contents: start;\n`\n\nconst ProductDiv = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 20px;\n\tmargin-top: 5px;\n\twidth: 180px;\n\tbackground-color: black;\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: space-between;\n`\nconst ProductText = styled.p`\n\theight: 30px;\n\tmargin: 0;\n\talign-self: center;\n\tfont-family: 'Sharp Sans No1 Bold';\n\tfont-style: normal;\n\tfont-size: 14px;\n\tline-height: 32px;\n\tletter-spacing: 0.05em;\n\tcolor: white;\n\tbackground-color: black;\n`\n","/**\n * @license\n * Copyright 2010-2023 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '161';\n\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst ConstantColorFactor = 211;\nconst OneMinusConstantColorFactor = 212;\nconst ConstantAlphaFactor = 213;\nconst OneMinusConstantAlphaFactor = 214;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\nconst AgXToneMapping = 6;\nconst AttachedBindMode = 'attached';\nconst DetachedBindMode = 'detached';\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst RGB_BPTC_SIGNED_Format = 36494;\nconst RGB_BPTC_UNSIGNED_Format = 36495;\nconst RED_RGTC1_Format = 36283;\nconst SIGNED_RED_RGTC1_Format = 36284;\nconst RED_GREEN_RGTC2_Format = 36285;\nconst SIGNED_RED_GREEN_RGTC2_Format = 36286;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\n/** @deprecated Use LinearSRGBColorSpace or NoColorSpace in three.js r152+. */\nconst LinearEncoding = 3000;\n/** @deprecated Use SRGBColorSpace in three.js r152+. */\nconst sRGBEncoding = 3001;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nconst NoColorSpace = '';\nconst SRGBColorSpace = 'srgb';\nconst LinearSRGBColorSpace = 'srgb-linear';\nconst DisplayP3ColorSpace = 'display-p3';\nconst LinearDisplayP3ColorSpace = 'display-p3-linear';\n\nconst LinearTransfer = 'linear';\nconst SRGBTransfer = 'srgb';\n\nconst Rec709Primaries = 'rec709';\nconst P3Primaries = 'p3';\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst NeverCompare = 512;\nconst LessCompare = 513;\nconst EqualCompare = 514;\nconst LessEqualCompare = 515;\nconst GreaterCompare = 516;\nconst NotEqualCompare = 517;\nconst GreaterEqualCompare = 518;\nconst AlwaysCompare = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\nconst _SRGBAFormat = 1035; // fallback for WebGL 1\n\nconst WebGLCoordinateSystem = 2000;\nconst WebGPUCoordinateSystem = 2001;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\thasEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn value / 4294967295.0;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.max( value / 2147483647.0, - 1.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn Math.round( value * 4294967295.0 );\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.round( value * 2147483647.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nconst MathUtils = {\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize\n};\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tVector2.prototype.isVector2 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nclass Matrix3 {\n\n\tconstructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tscale( sx, sy ) {\n\n\t\tthis.premultiply( _m3.makeScale( sx, sy ) );\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tthis.premultiply( _m3.makeRotation( - theta ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tthis.premultiply( _m3.makeTranslation( tx, ty ) );\n\n\t\treturn this;\n\n\t}\n\n\t// for 2D Transforms\n\n\tmakeTranslation( x, y ) {\n\n\t\tif ( x.isVector2 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x.x,\n\t\t\t\t0, 1, x.y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x,\n\t\t\t\t0, 1, y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotation( theta ) {\n\n\t\t// counterclockwise\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0,\n\t\t\ts, c, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0,\n\t\t\t0, y, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nconst _m3 = /*@__PURE__*/ new Matrix3();\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nconst _cache = {};\n\nfunction warnOnce( message ) {\n\n\tif ( message in _cache ) return;\n\n\t_cache[ message ] = true;\n\n\tconsole.warn( message );\n\n}\n\n/**\n * Matrices converting P3 <-> Rec. 709 primaries, without gamut mapping\n * or clipping. Based on W3C specifications for sRGB and Display P3,\n * and ICC specifications for the D50 connection space. Values in/out\n * are _linear_ sRGB and _linear_ Display P3.\n *\n * Note that both sRGB and Display P3 use the sRGB transfer functions.\n *\n * Reference:\n * - http://www.russellcottrell.com/photo/matrixCalculator.htm\n */\n\nconst LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = /*@__PURE__*/ new Matrix3().set(\n\t0.8224621, 0.177538, 0.0,\n\t0.0331941, 0.9668058, 0.0,\n\t0.0170827, 0.0723974, 0.9105199,\n);\n\nconst LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = /*@__PURE__*/ new Matrix3().set(\n\t1.2249401, - 0.2249404, 0.0,\n\t- 0.0420569, 1.0420571, 0.0,\n\t- 0.0196376, - 0.0786361, 1.0982735\n);\n\n/**\n * Defines supported color spaces by transfer function and primaries,\n * and provides conversions to/from the Linear-sRGB reference space.\n */\nconst COLOR_SPACES = {\n\t[ LinearSRGBColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\ttoReference: ( color ) => color,\n\t\tfromReference: ( color ) => color,\n\t},\n\t[ SRGBColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\ttoReference: ( color ) => color.convertSRGBToLinear(),\n\t\tfromReference: ( color ) => color.convertLinearToSRGB(),\n\t},\n\t[ LinearDisplayP3ColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: P3Primaries,\n\t\ttoReference: ( color ) => color.applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ),\n\t},\n\t[ DisplayP3ColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: P3Primaries,\n\t\ttoReference: ( color ) => color.convertSRGBToLinear().applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ).convertLinearToSRGB(),\n\t},\n};\n\nconst SUPPORTED_WORKING_COLOR_SPACES = new Set( [ LinearSRGBColorSpace, LinearDisplayP3ColorSpace ] );\n\nconst ColorManagement = {\n\n\tenabled: true,\n\n\t_workingColorSpace: LinearSRGBColorSpace,\n\n\tget workingColorSpace() {\n\n\t\treturn this._workingColorSpace;\n\n\t},\n\n\tset workingColorSpace( colorSpace ) {\n\n\t\tif ( ! SUPPORTED_WORKING_COLOR_SPACES.has( colorSpace ) ) {\n\n\t\t\tthrow new Error( `Unsupported working color space, \"${ colorSpace }\".` );\n\n\t\t}\n\n\t\tthis._workingColorSpace = colorSpace;\n\n\t},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.enabled === false || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tconst sourceToReference = COLOR_SPACES[ sourceColorSpace ].toReference;\n\t\tconst targetFromReference = COLOR_SPACES[ targetColorSpace ].fromReference;\n\n\t\treturn targetFromReference( sourceToReference( color ) );\n\n\t},\n\n\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\treturn this.convert( color, this._workingColorSpace, targetColorSpace );\n\n\t},\n\n\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\treturn this.convert( color, sourceColorSpace, this._workingColorSpace );\n\n\t},\n\n\tgetPrimaries: function ( colorSpace ) {\n\n\t\treturn COLOR_SPACES[ colorSpace ].primaries;\n\n\t},\n\n\tgetTransfer: function ( colorSpace ) {\n\n\t\tif ( colorSpace === NoColorSpace ) return LinearTransfer;\n\n\t\treturn COLOR_SPACES[ colorSpace ].transfer;\n\n\t},\n\n};\n\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement === 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nlet _sourceId = 0;\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.isSource = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _sourceId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\t\tthis.dataReady = true;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.from( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nlet _textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace ) {\n\n\t\tsuper();\n\n\t\tthis.isTexture = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.source = new Source( image );\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\t\tthis.channel = 0;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\tif ( typeof colorSpace === 'string' ) {\n\n\t\t\tthis.colorSpace = colorSpace;\n\n\t\t} else { // @deprecated, r152\n\n\t\t\twarnOnce( 'THREE.Texture: Property .encoding has been replaced by .colorSpace.' );\n\t\t\tthis.colorSpace = colorSpace === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t\t}\n\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not\n\t\tthis.needsPMREMUpdate = false; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)\n\n\t}\n\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value = null ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\t\tthis.channel = source.channel;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.colorSpace = source.colorSpace;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\t\t\tchannel: this.channel,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\tinternalFormat: this.internalFormat,\n\t\t\ttype: this.type,\n\t\t\tcolorSpace: this.colorSpace,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tgenerateMipmaps: this.generateMipmaps,\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tget encoding() { // @deprecated, r152\n\n\t\twarnOnce( 'THREE.Texture: Property .encoding has been replaced by .colorSpace.' );\n\t\treturn this.colorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding;\n\n\t}\n\n\tset encoding( encoding ) { // @deprecated, r152\n\n\t\twarnOnce( 'THREE.Texture: Property .encoding has been replaced by .colorSpace.' );\n\t\tthis.colorSpace = encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\nTexture.DEFAULT_ANISOTROPY = 1;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tVector4.prototype.isVector4 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\t\tthis.w = Math.trunc( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass RenderTarget extends EventDispatcher {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.isRenderTarget = true;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\tif ( options.encoding !== undefined ) {\n\n\t\t\t// @deprecated, r152\n\t\t\twarnOnce( 'THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace.' );\n\t\t\toptions.colorSpace = options.encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t\t}\n\n\t\toptions = Object.assign( {\n\t\t\tgenerateMipmaps: false,\n\t\t\tinternalFormat: null,\n\t\t\tminFilter: LinearFilter,\n\t\t\tdepthBuffer: true,\n\t\t\tstencilBuffer: false,\n\t\t\tdepthTexture: null,\n\t\t\tsamples: 0\n\t\t}, options );\n\n\t\tthis.texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.flipY = false;\n\t\tthis.texture.generateMipmaps = options.generateMipmaps;\n\t\tthis.texture.internalFormat = options.internalFormat;\n\n\t\tthis.depthBuffer = options.depthBuffer;\n\t\tthis.stencilBuffer = options.stencilBuffer;\n\n\t\tthis.depthTexture = options.depthTexture;\n\n\t\tthis.samples = options.samples;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\t\t\tthis.texture.image.depth = depth;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\t// ensure image object is not shared, see #20328\n\n\t\tconst image = Object.assign( {}, source.texture.image );\n\t\tthis.texture.source = new Source( image );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass WebGLRenderTarget extends RenderTarget {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLRenderTarget = true;\n\n\t}\n\n}\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.isDataArrayTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLArrayRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.isData3DTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGL3DRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, count = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLMultipleRenderTargets = true;\n\n\t\tconst texture = this.texture;\n\n\t\tthis.texture = [];\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.texture[ i ] = texture.clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.texture.length; i < il; i ++ ) {\n\n\t\t\t\tthis.texture[ i ].image.width = width;\n\t\t\t\tthis.texture[ i ].image.height = height;\n\t\t\t\tthis.texture[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.dispose();\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.texture.length = 0;\n\n\t\tfor ( let i = 0, il = source.texture.length; i < il; i ++ ) {\n\n\t\t\tthis.texture[ i ] = source.texture[ i ].clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update = true ) {\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize(); // normalize calls _onChangeCallback()\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.toArray();\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tVector3.prototype.isVector3 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t// quaternion q is assumed to have unit length\n\n\t\tconst vx = this.x, vy = this.y, vz = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// t = 2 * cross( q.xyz, v );\n\t\tconst tx = 2 * ( qy * vz - qz * vy );\n\t\tconst ty = 2 * ( qz * vx - qx * vz );\n\t\tconst tz = 2 * ( qx * vy - qy * vx );\n\n\t\t// v + q.w * t + cross( q.xyz, t );\n\t\tthis.x = vx + qw * tx + qy * tz - qz * ty;\n\t\tthis.y = vy + qw * ty + qz * tx - qx * tz;\n\t\tthis.z = vz + qw * tz + qx * ty - qy * tx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromColor( c ) {\n\n\t\tthis.x = c.r;\n\t\tthis.y = c.g;\n\t\tthis.z = c.b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox3 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromArray( array, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromBufferAttribute( attribute, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\t\t// precise AABB computation based on vertex data requires at least a position attribute.\n\t\t\t// instancing isn't supported so far and uses the normal (conservative) code path.\n\n\t\t\tif ( precise === true && positionAttribute !== undefined && object.isInstancedMesh !== true ) {\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\tif ( object.isMesh === true ) {\n\n\t\t\t\t\t\tobject.getVertexPosition( i, _vector$b );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_vector$b.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_vector$b.applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( object.boundingBox !== undefined ) {\n\n\t\t\t\t\t// object-level bounding box\n\n\t\t\t\t\tif ( object.boundingBox === null ) {\n\n\t\t\t\t\t\tobject.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( object.boundingBox );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// geometry-level bounding box\n\n\t\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( geometry.boundingBox );\n\n\t\t\t\t}\n\n\t\t\t\t_box$4.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$4 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$4.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$4, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$4 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$b ).distanceTo( point );\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\ttarget.makeEmpty();\n\n\t\t} else {\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$4 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$4 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$3 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.isSphere = true;\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$3.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.center.copy( point );\n\n\t\t\tthis.radius = 0;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t_v1$6.subVectors( point, this.center );\n\n\t\tconst lengthSq = _v1$6.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\t// calculate the minimal sphere\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\n\t\t\tconst delta = ( length - this.radius ) * 0.5;\n\n\t\t\tthis.center.addScaledVector( _v1$6, delta / length );\n\n\t\t\tthis.radius += delta;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\tif ( sphere.isEmpty() ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.copy( sphere );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t this.radius = Math.max( this.radius, sphere.radius );\n\n\t\t} else {\n\n\t\t\t_v2$3.subVectors( sphere.center, this.center ).setLength( sphere.radius );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _v2$3 ) );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _v2$3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, t );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.origin ).addScaledVector( this.direction, s0 );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segCenter ).addScaledVector( _segDir, s1 );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if t1 is behind the ray - if so, return null\n\t\tif ( t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\tif ( tymin > tmin || isNaN( tmin ) ) tmin = tymin;\n\n\t\tif ( tymax < tmax || isNaN( tmax ) ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x.x,\n\t\t\t\t0, 1, 0, x.y,\n\t\t\t\t0, 0, 1, x.z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\n\t\tlet c, d;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tc = - ( far + near ) / ( far - near );\n\t\t\td = ( - 2 * far * near ) / ( far - near );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tc = - far / ( far - near );\n\t\t\td = ( - far * near ) / ( far - near );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a; \tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b; \tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c; \tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\n\t\tlet z, zInv;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tz = ( far + near ) * p;\n\t\t\tzInv = - 2 * p;\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tz = near * p;\n\t\t\tzInv = - 1 * p;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\t\tte[ 8 ] = 0; \t\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0; \t\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0; \t\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0; \t\tte[ 6 ] = 0;\t\tte[ 10 ] = zInv;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0; \t\tte[ 7 ] = 0;\t\tte[ 11 ] = 0;\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) {\n\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$1.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$1, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n}\n\nEuler.DEFAULT_ORDER = 'XYZ';\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isObject3D = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DEFAULT_UP.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;\n\n\t\tthis.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\treturn this.remove( ... this.children );\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetObjectsByProperty( name, value, result = [] ) {\n\n\t\tif ( this[ name ] === value ) result.push( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].getObjectsByProperty( name, value, result );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast( /* raycaster, intersects */ ) {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tconst child = children[ i ];\n\n\t\t\tif ( child.matrixWorldAutoUpdate === true || force === true ) {\n\n\t\t\t\tchild.updateMatrixWorld( force );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null && parent.matrixWorldAutoUpdate === true ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\n\t\t\t\tif ( child.matrixWorldAutoUpdate === true ) {\n\n\t\t\t\t\tchild.updateWorldMatrix( false, true );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\t\tobject.up = this.up.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\tif ( this.isBatchedMesh ) {\n\n\t\t\tobject.type = 'BatchedMesh';\n\t\t\tobject.perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\t\tobject.sortObjects = this.sortObjects;\n\n\t\t\tobject.drawRanges = this._drawRanges;\n\t\t\tobject.reservedRanges = this._reservedRanges;\n\n\t\t\tobject.visibility = this._visibility;\n\t\t\tobject.active = this._active;\n\t\t\tobject.bounds = this._bounds.map( bound => ( {\n\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\tboxMin: bound.box.min.toArray(),\n\t\t\t\tboxMax: bound.box.max.toArray(),\n\n\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\tsphereRadius: bound.sphere.radius,\n\t\t\t\tsphereCenter: bound.sphere.center.toArray()\n\t\t\t} ) );\n\n\t\t\tobject.maxGeometryCount = this._maxGeometryCount;\n\t\t\tobject.maxVertexCount = this._maxVertexCount;\n\t\t\tobject.maxIndexCount = this._maxIndexCount;\n\n\t\t\tobject.geometryInitialized = this._geometryInitialized;\n\t\t\tobject.geometryCount = this._geometryCount;\n\n\t\t\tobject.matricesTexture = this._matricesTexture.toJSON( meta );\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tobject.boundingSphere = {\n\t\t\t\t\tcenter: object.boundingSphere.center.toArray(),\n\t\t\t\t\tradius: object.boundingSphere.radius\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tobject.boundingBox = {\n\t\t\t\t\tmin: object.boundingBox.min.toArray(),\n\t\t\t\t\tmax: object.boundingBox.max.toArray()\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\tthis.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.animations = source.animations.slice();\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nObject3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\nObject3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$2 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\ttarget.set( 0, 0, 0 );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\t// if the triangle is degenerate then we can't contain a point\n\t\tif ( this.getBarycoord( point, a, b, c, _v3$2 ) === null ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn ( _v3$2.x >= 0 ) && ( _v3$2.y >= 0 ) && ( ( _v3$2.x + _v3$2.y ) <= 1 );\n\n\t}\n\n\tstatic getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {\n\n\t\tif ( this.getBarycoord( point, p1, p2, p3, _v3$2 ) === null ) {\n\n\t\t\ttarget.x = 0;\n\t\t\ttarget.y = 0;\n\t\t\tif ( 'z' in target ) target.z = 0;\n\t\t\tif ( 'w' in target ) target.w = 0;\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( v1, _v3$2.x );\n\t\ttarget.addScaledVector( v2, _v3$2.y );\n\t\ttarget.addScaledVector( v3, _v3$2.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetInterpolation( point, v1, v2, v3, target ) {\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tthis.isColor = true;\n\n\t\tthis.r = 1;\n\t\tthis.g = 1;\n\t\tthis.b = 1;\n\n\t\treturn this.set( r, g, b );\n\n\t}\n\n\tset( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\n\t\t\tconst value = r;\n\n\t\t\tif ( value && value.isColor ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.setRGB( r, g, b );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^(\\w+)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 1 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 2 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 3 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 1 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 2 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 3 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL(\n\t\t\t\t\t\t\tparseFloat( color[ 1 ] ) / 360,\n\t\t\t\t\t\t\tparseFloat( color[ 2 ] ) / 100,\n\t\t\t\t\t\t\tparseFloat( color[ 3 ] ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tconsole.warn( 'THREE.Color: Unknown color model ' + style );\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\treturn this.setRGB(\n\t\t\t\t\tparseInt( hex.charAt( 0 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 1 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 2 ), 16 ) / 15,\n\t\t\t\t\tcolorSpace\n\t\t\t\t);\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\treturn this.setHex( parseInt( hex, 16 ), colorSpace );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Invalid hex color ' + style );\n\n\t\t\t}\n\n\t\t} else if ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\treturn Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) );\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetRGB( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\ttarget.r = _color.r;\n\t\ttarget.g = _color.g;\n\t\ttarget.b = _color.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ r.toFixed( 3 ) } ${ g.toFixed( 3 ) } ${ b.toFixed( 3 ) })`;\n\n\t\t}\n\n\t\treturn `rgb(${ Math.round( r * 255 ) },${ Math.round( g * 255 ) },${ Math.round( b * 255 ) })`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\treturn this.setHSL( _hslA.h + h, _hslA.s + s, _hslA.l + l );\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\tthis.r = v.x;\n\t\tthis.g = v.y;\n\t\tthis.b = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\t\tconst e = m.elements;\n\n\t\tthis.r = e[ 0 ] * r + e[ 3 ] * g + e[ 6 ] * b;\n\t\tthis.g = e[ 1 ] * r + e[ 4 ] * g + e[ 7 ] * b;\n\t\tthis.b = e[ 2 ] * r + e[ 5 ] * g + e[ 8 ] * b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nconst _color = /*@__PURE__*/ new Color();\n\nColor.NAMES = _colorKeywords;\n\nlet _materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isMaterial = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\t\tthis.alphaHash = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\t\tthis.blendColor = new Color( 0, 0, 0 );\n\t\tthis.blendAlpha = 0;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\t\tthis.forceSinglePass = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: parameter '${ key }' has value of undefined.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: '${ key }' is not a property of THREE.${ this.type }.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.anisotropy !== undefined ) data.anisotropy = this.anisotropy;\n\t\tif ( this.anisotropyRotation !== undefined ) data.anisotropyRotation = this.anisotropyRotation;\n\n\t\tif ( this.anisotropyMap && this.anisotropyMap.isTexture ) {\n\n\t\t\tdata.anisotropyMap = this.anisotropyMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined && this.attenuationDistance !== Infinity ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors === true ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = true;\n\n\t\tif ( this.blendSrc !== SrcAlphaFactor ) data.blendSrc = this.blendSrc;\n\t\tif ( this.blendDst !== OneMinusSrcAlphaFactor ) data.blendDst = this.blendDst;\n\t\tif ( this.blendEquation !== AddEquation ) data.blendEquation = this.blendEquation;\n\t\tif ( this.blendSrcAlpha !== null ) data.blendSrcAlpha = this.blendSrcAlpha;\n\t\tif ( this.blendDstAlpha !== null ) data.blendDstAlpha = this.blendDstAlpha;\n\t\tif ( this.blendEquationAlpha !== null ) data.blendEquationAlpha = this.blendEquationAlpha;\n\t\tif ( this.blendColor && this.blendColor.isColor ) data.blendColor = this.blendColor.getHex();\n\t\tif ( this.blendAlpha !== 0 ) data.blendAlpha = this.blendAlpha;\n\n\t\tif ( this.depthFunc !== LessEqualDepth ) data.depthFunc = this.depthFunc;\n\t\tif ( this.depthTest === false ) data.depthTest = this.depthTest;\n\t\tif ( this.depthWrite === false ) data.depthWrite = this.depthWrite;\n\t\tif ( this.colorWrite === false ) data.colorWrite = this.colorWrite;\n\n\t\tif ( this.stencilWriteMask !== 0xff ) data.stencilWriteMask = this.stencilWriteMask;\n\t\tif ( this.stencilFunc !== AlwaysStencilFunc ) data.stencilFunc = this.stencilFunc;\n\t\tif ( this.stencilRef !== 0 ) data.stencilRef = this.stencilRef;\n\t\tif ( this.stencilFuncMask !== 0xff ) data.stencilFuncMask = this.stencilFuncMask;\n\t\tif ( this.stencilFail !== KeepStencilOp ) data.stencilFail = this.stencilFail;\n\t\tif ( this.stencilZFail !== KeepStencilOp ) data.stencilZFail = this.stencilZFail;\n\t\tif ( this.stencilZPass !== KeepStencilOp ) data.stencilZPass = this.stencilZPass;\n\t\tif ( this.stencilWrite === true ) data.stencilWrite = this.stencilWrite;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaHash === true ) data.alphaHash = true;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = true;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;\n\t\tif ( this.forceSinglePass === true ) data.forceSinglePass = true;\n\n\t\tif ( this.wireframe === true ) data.wireframe = true;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\t\tthis.blendColor.copy( source.blendColor );\n\t\tthis.blendAlpha = source.blendAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaHash = source.alphaHash;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\t\tthis.forceSinglePass = source.forceSinglePass;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshBasicMaterial = true;\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nconst _tables = /*@__PURE__*/ _generateTables();\n\nfunction _generateTables() {\n\n\t// float32 to float16 helpers\n\n\tconst buffer = new ArrayBuffer( 4 );\n\tconst floatView = new Float32Array( buffer );\n\tconst uint32View = new Uint32Array( buffer );\n\n\tconst baseTable = new Uint32Array( 512 );\n\tconst shiftTable = new Uint32Array( 512 );\n\n\tfor ( let i = 0; i < 256; ++ i ) {\n\n\t\tconst e = i - 127;\n\n\t\t// very small number (0, -0)\n\n\t\tif ( e < - 27 ) {\n\n\t\t\tbaseTable[ i ] = 0x0000;\n\t\t\tbaseTable[ i | 0x100 ] = 0x8000;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// small number (denorm)\n\n\t\t} else if ( e < - 14 ) {\n\n\t\t\tbaseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t\tbaseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t\tshiftTable[ i ] = - e - 1;\n\t\t\tshiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t\t// normal number\n\n\t\t} else if ( e <= 15 ) {\n\n\t\t\tbaseTable[ i ] = ( e + 15 ) << 10;\n\t\t\tbaseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t\t// large number (Infinity, -Infinity)\n\n\t\t} else if ( e < 128 ) {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// stay (NaN, Infinity, -Infinity)\n\n\t\t} else {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t}\n\n\t}\n\n\t// float16 to float32 helpers\n\n\tconst mantissaTable = new Uint32Array( 2048 );\n\tconst exponentTable = new Uint32Array( 64 );\n\tconst offsetTable = new Uint32Array( 64 );\n\n\tfor ( let i = 1; i < 1024; ++ i ) {\n\n\t\tlet m = i << 13; // zero pad mantissa bits\n\t\tlet e = 0; // zero exponent\n\n\t\t// normalized\n\t\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\t\tm <<= 1;\n\t\t\te -= 0x00800000; // decrement exponent\n\n\t\t}\n\n\t\tm &= ~ 0x00800000; // clear leading 1 bit\n\t\te += 0x38800000; // adjust bias\n\n\t\tmantissaTable[ i ] = m | e;\n\n\t}\n\n\tfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t\tmantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n\t}\n\n\tfor ( let i = 1; i < 31; ++ i ) {\n\n\t\texponentTable[ i ] = i << 23;\n\n\t}\n\n\texponentTable[ 31 ] = 0x47800000;\n\texponentTable[ 32 ] = 0x80000000;\n\n\tfor ( let i = 33; i < 63; ++ i ) {\n\n\t\texponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n\t}\n\n\texponentTable[ 63 ] = 0xc7800000;\n\n\tfor ( let i = 1; i < 64; ++ i ) {\n\n\t\tif ( i !== 32 ) {\n\n\t\t\toffsetTable[ i ] = 1024;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tfloatView: floatView,\n\t\tuint32View: uint32View,\n\t\tbaseTable: baseTable,\n\t\tshiftTable: shiftTable,\n\t\tmantissaTable: mantissaTable,\n\t\texponentTable: exponentTable,\n\t\toffsetTable: offsetTable\n\t};\n\n}\n\n// float32 to float16\n\nfunction toHalfFloat( val ) {\n\n\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\tval = clamp( val, - 65504, 65504 );\n\n\t_tables.floatView[ 0 ] = val;\n\tconst f = _tables.uint32View[ 0 ];\n\tconst e = ( f >> 23 ) & 0x1ff;\n\treturn _tables.baseTable[ e ] + ( ( f & 0x007fffff ) >> _tables.shiftTable[ e ] );\n\n}\n\n// float16 to float32\n\nfunction fromHalfFloat( val ) {\n\n\tconst m = val >> 10;\n\t_tables.uint32View[ 0 ] = _tables.mantissaTable[ _tables.offsetTable[ m ] + ( val & 0x3ff ) ] + _tables.exponentTable[ m ];\n\treturn _tables.floatView[ 0 ];\n\n}\n\nconst DataUtils = {\n\ttoHalfFloat: toHalfFloat,\n\tfromHalfFloat: fromHalfFloat,\n};\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized = false ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.isBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis._updateRange = { offset: 0, count: - 1 };\n\t\tthis.updateRanges = [];\n\t\tthis.gpuType = FloatType;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tget updateRange() {\n\n\t\twarnOnce( 'THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159\n\t\treturn this._updateRange;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\t\tthis.gpuType = source.gpuType;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\t// Matching BufferAttribute constructor, do not normalize the array.\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.itemSize + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.array[ index * this.itemSize + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.array[ index * this.itemSize ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.array[ index * this.itemSize + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.array[ index * this.itemSize + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.array[ index * this.itemSize + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.from( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\n\t\treturn data;\n\n\t}\n\n}\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = fromHalfFloat( this.array[ index * this.itemSize ] );\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = toHalfFloat( x );\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = fromHalfFloat( this.array[ index * this.itemSize + 1 ] );\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = fromHalfFloat( this.array[ index * this.itemSize + 2 ] );\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = fromHalfFloat( this.array[ index * this.itemSize + 3 ] );\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\t\tthis.array[ index + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n}\n\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float64BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float64Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$2 = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBufferGeometry = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id$2 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = this.getAttribute( 'tangent' ).array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$3 = /*@__PURE__*/ new Matrix4();\nconst _ray$3 = /*@__PURE__*/ new Ray();\nconst _sphere$6 = /*@__PURE__*/ new Sphere();\nconst _sphereHitAt = /*@__PURE__*/ new Vector3();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _morphA = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _normalA = /*@__PURE__*/ new Vector3();\nconst _normalB = /*@__PURE__*/ new Vector3();\nconst _normalC = /*@__PURE__*/ new Vector3();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isMesh = true;\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\n\t\ttarget.fromBufferAttribute( position, index );\n\n\t\tconst morphInfluences = this.morphTargetInfluences;\n\n\t\tif ( morphPosition && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morphAttribute, index );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( target ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttarget.add( _morphA );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$6.copy( geometry.boundingSphere );\n\t\t_sphere$6.applyMatrix4( matrixWorld );\n\n\t\t// check distance from ray origin to bounding sphere\n\n\t\t_ray$3.copy( raycaster.ray ).recast( raycaster.near );\n\n\t\tif ( _sphere$6.containsPoint( _ray$3.origin ) === false ) {\n\n\t\t\tif ( _ray$3.intersectSphere( _sphere$6, _sphereHitAt ) === null ) return;\n\n\t\t\tif ( _ray$3.origin.distanceToSquared( _sphereHitAt ) > ( raycaster.far - raycaster.near ) ** 2 ) return;\n\n\t\t}\n\n\t\t// convert ray to local space of mesh\n\n\t\t_inverseMatrix$3.copy( matrixWorld ).invert();\n\t\t_ray$3.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$3 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$3.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$3 );\n\n\t}\n\n\t_computeIntersections( raycaster, intersects, rayLocalSpace ) {\n\n\t\tlet intersection;\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv1 = geometry.attributes.uv1;\n\t\tconst normal = geometry.attributes.normal;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, ( material.side === FrontSide ), point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, normal, a, b, c ) {\n\n\tobject.getVertexPosition( a, _vA$1 );\n\tobject.getVertexPosition( b, _vB$1 );\n\tobject.getVertexPosition( c, _vC$1 );\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv1 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv1, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv1, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv1, c );\n\n\t\t\tintersection.uv1 = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\t\t\tintersection.uv2 = intersection.uv1; // @deprecated, r152\n\n\t\t}\n\n\t\tif ( normal ) {\n\n\t\t\t_normalA.fromBufferAttribute( normal, a );\n\t\t\t_normalB.fromBufferAttribute( normal, b );\n\t\t\t_normalC.fromBufferAttribute( normal, c );\n\n\t\t\tintersection.normal = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _normalA, _normalB, _normalC, new Vector3() );\n\n\t\t\tif ( intersection.normal.dot( ray.direction ) > 0 ) {\n\n\t\t\t\tintersection.normal.multiplyScalar( - 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tif ( property.isRenderTargetTexture ) {\n\n\t\t\t\t\tconsole.warn( 'UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().' );\n\t\t\t\t\tdst[ u ][ p ] = null;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t\t}\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\nfunction cloneUniformsGroups( src ) {\n\n\tconst dst = [];\n\n\tfor ( let u = 0; u < src.length; u ++ ) {\n\n\t\tdst.push( src[ u ].clone() );\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction getUnlitUniformColorSpace( renderer ) {\n\n\tif ( renderer.getRenderTarget() === null ) {\n\n\t\t// https://github.com/mrdoob/three.js/pull/23937#issuecomment-1111067398\n\t\treturn renderer.outputColorSpace;\n\n\t}\n\n\treturn ColorManagement.workingColorSpace;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShaderMaterial = true;\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\t\tthis.uniformsGroups = [];\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.forceSinglePass = true;\n\n\t\tthis.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false, // set to use shader texture LOD\n\t\t\tclipCullDistance: false, // set to use vertex shader clipping\n\t\t\tmultiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv1': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\t\tthis.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tdata.lights = this.lights;\n\t\tdata.clipping = this.clipping;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t\tthis.coordinateSystem = WebGLCoordinateSystem;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\tthis.coordinateSystem = source.coordinateSystem;\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\treturn super.getWorldDirection( target ).negate();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _v3$1 = /*@__PURE__*/ new Vector3();\nconst _minTarget = /*@__PURE__*/ new Vector2();\nconst _maxTarget = /*@__PURE__*/ new Vector2();\n\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.\n\t * Sets minTarget and maxTarget to the coordinates of the lower-left and upper-right corners of the view rectangle.\n\t */\n\tgetViewBounds( distance, minTarget, maxTarget ) {\n\n\t\t_v3$1.set( - 1, - 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tminTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t\t_v3$1.set( 1, 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tmaxTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t}\n\n\t/**\n\t * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.\n\t * Copies the result into the target Vector2, where x is width and y is height.\n\t */\n\tgetViewSize( distance, target ) {\n\n\t\tthis.getViewBounds( distance, _minTarget, _maxTarget );\n\n\t\treturn target.subVectors( _maxTarget, _minTarget );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst fov = - 90; // negative fov is not an error\nconst aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tthis.renderTarget = renderTarget;\n\t\tthis.coordinateSystem = null;\n\t\tthis.activeMipmapLevel = 0;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdateCoordinateSystem() {\n\n\t\tconst coordinateSystem = this.coordinateSystem;\n\n\t\tconst cameras = this.children.concat();\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = cameras;\n\n\t\tfor ( const camera of cameras ) this.remove( camera );\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, 1, 0 );\n\t\t\tcameraPX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, 1, 0 );\n\t\t\tcameraNX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, - 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\t\tcameraPX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\t\tcameraNX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tfor ( const camera of cameras ) {\n\n\t\t\tthis.add( camera );\n\n\t\t\tcamera.updateMatrixWorld();\n\n\t\t}\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst { renderTarget, activeMipmapLevel } = this;\n\n\t\tif ( this.coordinateSystem !== renderer.coordinateSystem ) {\n\n\t\t\tthis.coordinateSystem = renderer.coordinateSystem;\n\n\t\t\tthis.updateCoordinateSystem();\n\n\t\t}\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst currentActiveCubeFace = renderer.getActiveCubeFace();\n\t\tconst currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\t// mipmaps are generated during the last call of render()\n\t\t// at this point, all sides of the cube render target are defined\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size = 1, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tthis.isWebGLCubeRenderTarget = true;\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tif ( options.encoding !== undefined ) {\n\n\t\t\t// @deprecated, r152\n\t\t\twarnOnce( 'THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace.' );\n\t\t\toptions.colorSpace = options.encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;\n\n\t\t}\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.colorSpace = texture.colorSpace;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\tthis.isPlane = true;\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( point ).addScaledVector( this.normal, - this.distanceToPoint( point ) );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( line.start ).addScaledVector( direction, t );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _sphere$5 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize();\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t}\n\n\t\treturn this.intersectsSphere( _sphere$5 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$5.center.set( 0, 0, 0 );\n\t\t_sphere$5.radius = 0.7071067811865476;\n\t\t_sphere$5.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$5 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\t\tconst size = array.byteLength;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = gl.FLOAT;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = gl.HALF_FLOAT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = gl.UNSIGNED_SHORT;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = gl.SHORT;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = gl.INT;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = gl.BYTE;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version,\n\t\t\tsize: size\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute._updateRange; // @deprecated, r159\n\t\tconst updateRanges = attribute.updateRanges;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 && updateRanges.length === 0 ) {\n\n\t\t\t// Not using update ranges\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t}\n\n\t\tif ( updateRanges.length !== 0 ) {\n\n\t\t\tfor ( let i = 0, l = updateRanges.length; i < l; i ++ ) {\n\n\t\t\t\tconst range = updateRanges[ i ];\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tgl.bufferSubData( bufferType, range.start * array.BYTES_PER_ELEMENT,\n\t\t\t\t\t\tarray, range.start, range.count );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.bufferSubData( bufferType, range.start * array.BYTES_PER_ELEMENT,\n\t\t\t\t\t\tarray.subarray( range.start, range.start + range.count ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tattribute.clearUpdateRanges();\n\n\t\t}\n\n\t\t// @deprecated, r159\n\t\tif ( updateRange.count !== - 1 ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t\tattribute.onUploadCallback();\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tif ( data.size !== attribute.array.byteLength ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: The size of the buffer attribute\\'s array buffer does not match the original size. Resizing buffer attributes is not supported.' );\n\n\t\t\t}\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphahash_fragment = \"#ifdef USE_ALPHAHASH\\n\\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\\n#endif\";\n\nvar alphahash_pars_fragment = \"#ifdef USE_ALPHAHASH\\n\\tconst float ALPHA_HASH_SCALE = 0.05;\\n\\tfloat hash2D( vec2 value ) {\\n\\t\\treturn fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\\n\\t}\\n\\tfloat hash3D( vec3 value ) {\\n\\t\\treturn hash2D( vec2( hash2D( value.xy ), value.z ) );\\n\\t}\\n\\tfloat getAlphaHashThreshold( vec3 position ) {\\n\\t\\tfloat maxDeriv = max(\\n\\t\\t\\tlength( dFdx( position.xyz ) ),\\n\\t\\t\\tlength( dFdy( position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\\n\\t\\tvec2 pixScales = vec2(\\n\\t\\t\\texp2( floor( log2( pixScale ) ) ),\\n\\t\\t\\texp2( ceil( log2( pixScale ) ) )\\n\\t\\t);\\n\\t\\tvec2 alpha = vec2(\\n\\t\\t\\thash3D( floor( pixScales.x * position.xyz ) ),\\n\\t\\t\\thash3D( floor( pixScales.y * position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat lerpFactor = fract( log2( pixScale ) );\\n\\t\\tfloat x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\\n\\t\\tfloat a = min( lerpFactor, 1.0 - lerpFactor );\\n\\t\\tvec3 cases = vec3(\\n\\t\\t\\tx * x / ( 2.0 * a * ( 1.0 - a ) ),\\n\\t\\t\\t( x - 0.5 * a ) / ( 1.0 - a ),\\n\\t\\t\\t1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\\n\\t\\t);\\n\\t\\tfloat threshold = ( x < ( 1.0 - a ) )\\n\\t\\t\\t? ( ( x < a ) ? cases.x : cases.y )\\n\\t\\t\\t: cases.z;\\n\\t\\treturn clamp( threshold , 1.0e-6, 1.0 );\\n\\t}\\n#endif\";\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\t#ifdef ALPHA_TO_COVERAGE\\n\\tdiffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );\\n\\tif ( diffuseColor.a == 0.0 ) discard;\\n\\t#else\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n\\t#endif\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_CLEARCOAT ) \\n\\t\\tclearcoatSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_SHEEN ) \\n\\t\\tsheenSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar batching_pars_vertex = \"#ifdef USE_BATCHING\\n\\tattribute float batchId;\\n\\tuniform highp sampler2D batchingTexture;\\n\\tmat4 getBatchingMatrix( const in float i ) {\\n\\t\\tint size = textureSize( batchingTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n#endif\";\n\nvar batching_vertex = \"#ifdef USE_BATCHING\\n\\tmat4 batchingMatrix = getBatchingMatrix( batchId );\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\\n#ifdef USE_ALPHAHASH\\n\\tvPosition = vec3( position );\\n#endif\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"float G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n} // validated\";\n\nvar iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\n\\tconst mat3 XYZ_TO_REC709 = mat3(\\n\\t\\t 3.2404542, -0.9692660, 0.0556434,\\n\\t\\t-1.5371385, 1.8760108, -0.2040259,\\n\\t\\t-0.4985314, 0.0415560, 1.0572252\\n\\t);\\n\\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\\t\\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\\t\\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\\t}\\n\\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\\t}\\n\\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\\t}\\n\\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\\t\\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\\t\\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\\t\\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\\t\\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\\t\\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\\t\\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\\t\\txyz /= 1.0685e-7;\\n\\t\\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\\t\\treturn rgb;\\n\\t}\\n\\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\\t\\tvec3 I;\\n\\t\\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\\t\\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\\t\\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\\t\\tif ( cosTheta2Sq < 0.0 ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t}\\n\\t\\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\\t\\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\\t\\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\\t\\tfloat T121 = 1.0 - R12;\\n\\t\\tfloat phi12 = 0.0;\\n\\t\\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n\\t\\tfloat phi21 = PI - phi12;\\n\\t\\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\\t\\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\\t\\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\\t\\tvec3 phi23 = vec3( 0.0 );\\n\\t\\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\\n\\t\\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\\n\\t\\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\\n\\t\\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\\t\\tvec3 phi = vec3( phi21 ) + phi23;\\n\\t\\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\\t\\tvec3 r123 = sqrt( R123 );\\n\\t\\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\\t\\tvec3 C0 = R12 + Rs;\\n\\t\\tI = C0;\\n\\t\\tvec3 Cm = Rs - T121;\\n\\t\\tfor ( int m = 1; m <= 2; ++ m ) {\\n\\t\\t\\tCm *= r123;\\n\\t\\t\\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\\t\\t\\tI += Cm * Sm;\\n\\t\\t}\\n\\t\\treturn max( I, vec3( 0.0 ) );\\n\\t}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vBumpMapUv );\\n\\t\\tvec2 dSTdy = dFdy( vBumpMapUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\\n\\t\\tvec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#ifdef ALPHA_TO_COVERAGE\\n\\t\\tfloat distanceToPlane, distanceGradient;\\n\\t\\tfloat clipOpacity = 1.0;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\\t\\t\\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\\t\\t\\tclipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\\t\\t\\tif ( clipOpacity == 0.0 ) discard;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\t\\tfloat unionClipOpacity = 1.0;\\n\\t\\t\\t#pragma unroll_loop_start\\n\\t\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\t\\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\\t\\t\\t\\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\\t\\t\\t\\tunionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\\t\\t\\t}\\n\\t\\t\\t#pragma unroll_loop_end\\n\\t\\t\\tclipOpacity *= 1.0 - unionClipOpacity;\\n\\t\\t#endif\\n\\t\\tdiffuseColor.a *= clipOpacity;\\n\\t\\tif ( diffuseColor.a == 0.0 ) discard;\\n\\t#else\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\t\\tbool clipped = true;\\n\\t\\t\\t#pragma unroll_loop_start\\n\\t\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t\\t}\\n\\t\\t\\t#pragma unroll_loop_end\\n\\t\\t\\tif ( clipped ) discard;\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\n#ifdef USE_ALPHAHASH\\n\\tvarying vec3 vPosition;\\n#endif\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat luminance( const in vec3 rgb ) {\\n\\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\\n\\treturn dot( weights, rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n} // validated\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define cubeUV_r0 1.0\\n\\t#define cubeUV_m0 - 2.0\\n\\t#define cubeUV_r1 0.8\\n\\t#define cubeUV_m1 - 1.0\\n\\t#define cubeUV_r4 0.4\\n\\t#define cubeUV_m4 2.0\\n\\t#define cubeUV_r5 0.305\\n\\t#define cubeUV_m5 3.0\\n\\t#define cubeUV_r6 0.21\\n\\t#define cubeUV_m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= cubeUV_r1 ) {\\n\\t\\t\\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\\n\\t\\t} else if ( roughness >= cubeUV_r4 ) {\\n\\t\\t\\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\\n\\t\\t} else if ( roughness >= cubeUV_r5 ) {\\n\\t\\t\\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\\n\\t\\t} else if ( roughness >= cubeUV_r6 ) {\\n\\t\\t\\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = objectTangent;\\n#endif\\n#ifdef USE_BATCHING\\n\\tmat3 bm = mat3( batchingMatrix );\\n\\ttransformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\\n\\ttransformedNormal = bm * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = bm * transformedTangent;\\n\\t#endif\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmat3 im = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\\n\\ttransformedNormal = im * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = im * transformedTangent;\\n\\t#endif\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\ttransformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar colorspace_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar colorspace_pars_fragment = \"\\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\\n\\tvec3( 0.8224621, 0.177538, 0.0 ),\\n\\tvec3( 0.0331941, 0.9668058, 0.0 ),\\n\\tvec3( 0.0170827, 0.0723974, 0.9105199 )\\n);\\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.2249401, - 0.2249404, 0.0 ),\\n\\tvec3( - 0.0420569, 1.0420571, 0.0 ),\\n\\tvec3( - 0.0196376, - 0.0786361, 1.0982735 )\\n);\\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\\n\\treturn vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\\n}\\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\\n\\treturn vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\\n}\\nvec4 LinearTransferOETF( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 sRGBTransferOETF( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn sRGBTransferOETF( value );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn vec3( texture2D( gradientMap, coord ).r );\\n\\t#else\\n\\t\\tvec2 fw = fwidth( coord ) * 0.5;\\n\\t\\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_lambert_pars_fragment = \"varying vec3 vViewPosition;\\nstruct LambertMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Lambert\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Lambert\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\n#if defined( USE_LIGHT_PROBES )\\n\\tuniform vec3 lightProbe[ 9 ];\\n#endif\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( LEGACY_LIGHTS )\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#else\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometryPosition;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometryPosition;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 reflectVec = reflect( - viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\\n\\t\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\t\\tvec3 bentNormal = cross( bitangent, viewDir );\\n\\t\\t\\t\\tbentNormal = normalize( cross( bentNormal, bitangent ) );\\n\\t\\t\\t\\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\\n\\t\\t\\t\\treturn getIBLRadiance( viewDir, bentNormal, roughness );\\n\\t\\t\\t#else\\n\\t\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\tmaterial.ior = ior;\\n\\t#ifdef USE_SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tmaterial.iridescence = iridescence;\\n\\tmaterial.iridescenceIOR = iridescenceIOR;\\n\\t#ifdef USE_IRIDESCENCEMAP\\n\\t\\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\t\\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\\n\\t#else\\n\\t\\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\\n\\t\\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\\n\\t\\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\\n\\t#else\\n\\t\\tvec2 anisotropyV = anisotropyVector;\\n\\t#endif\\n\\tmaterial.anisotropy = length( anisotropyV );\\n\\tif( material.anisotropy == 0.0 ) {\\n\\t\\tanisotropyV = vec2( 1.0, 0.0 );\\n\\t} else {\\n\\t\\tanisotropyV /= material.anisotropy;\\n\\t\\tmaterial.anisotropy = saturate( material.anisotropy );\\n\\t}\\n\\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\\n\\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\\n\\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tfloat iridescence;\\n\\t\\tfloat iridescenceIOR;\\n\\t\\tfloat iridescenceThickness;\\n\\t\\tvec3 iridescenceFresnel;\\n\\t\\tvec3 iridescenceF0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n\\t#ifdef IOR\\n\\t\\tfloat ior;\\n\\t#endif\\n\\t#ifdef USE_TRANSMISSION\\n\\t\\tfloat transmission;\\n\\t\\tfloat transmissionAlpha;\\n\\t\\tfloat thickness;\\n\\t\\tfloat attenuationDistance;\\n\\t\\tvec3 attenuationColor;\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat anisotropy;\\n\\t\\tfloat alphaT;\\n\\t\\tvec3 anisotropyT;\\n\\t\\tvec3 anisotropyB;\\n\\t#endif\\n};\\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\\nvec3 sheenSpecularDirect = vec3( 0.0 );\\nvec3 sheenSpecularIndirect = vec3(0.0 );\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n float x2 = x * x;\\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\n#ifdef USE_ANISOTROPY\\n\\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\\n\\t\\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\\n\\t\\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\\n\\t\\tfloat v = 0.5 / ( gv + gl );\\n\\t\\treturn saturate(v);\\n\\t}\\n\\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\\n\\t\\tfloat a2 = alphaT * alphaB;\\n\\t\\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\\n\\t\\thighp float v2 = dot( v, v );\\n\\t\\tfloat w2 = a2 / v2;\\n\\t\\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\\n\\t}\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\\n\\t\\tvec3 f0 = material.clearcoatF0;\\n\\t\\tfloat f90 = material.clearcoatF90;\\n\\t\\tfloat roughness = material.clearcoatRoughness;\\n\\t\\tfloat alpha = pow2( roughness );\\n\\t\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\t\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\t\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\t\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\t\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\t\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t\\treturn F * ( V * D );\\n\\t}\\n#endif\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\\n\\tvec3 f0 = material.specularColor;\\n\\tfloat f90 = material.specularF90;\\n\\tfloat roughness = material.roughness;\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tF = mix( F, material.iridescenceFresnel, material.iridescence );\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat dotTL = dot( material.anisotropyT, lightDir );\\n\\t\\tfloat dotTV = dot( material.anisotropyT, viewDir );\\n\\t\\tfloat dotTH = dot( material.anisotropyT, halfDir );\\n\\t\\tfloat dotBL = dot( material.anisotropyB, lightDir );\\n\\t\\tfloat dotBV = dot( material.anisotropyB, viewDir );\\n\\t\\tfloat dotBH = dot( material.anisotropyB, halfDir );\\n\\t\\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\\n\\t\\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\\n\\t#else\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t#endif\\n\\treturn F * ( V * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\\t#else\\n\\t\\tvec3 Fr = specularColor;\\n\\t#endif\\n\\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometryNormal;\\n\\t\\tvec3 viewDir = geometryViewDir;\\n\\t\\tvec3 position = geometryPosition;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\\t#else\\n\\t\\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\t#endif\\n\\tvec3 totalScattering = singleScattering + multiScattering;\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nvec3 geometryPosition = - vViewPosition;\\nvec3 geometryNormal = normal;\\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\nvec3 geometryClearcoatNormal = vec3( 0.0 );\\n#ifdef USE_CLEARCOAT\\n\\tgeometryClearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\\n\\tif ( material.iridescenceThickness == 0.0 ) {\\n\\t\\tmaterial.iridescence = 0.0;\\n\\t} else {\\n\\t\\tmaterial.iridescence = saturate( material.iridescence );\\n\\t}\\n\\tif ( material.iridescence > 0.0 ) {\\n\\t\\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\\t\\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\\t}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometryPosition, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\tvec4 spotColor;\\n\\tvec3 spotLightCoord;\\n\\tbool inSpotLightMap;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometryPosition, directLight );\\n\\t\\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\\n\\t\\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\\n\\t\\t#else\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#endif\\n\\t\\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\\n\\t\\t\\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\\n\\t\\t\\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\\n\\t\\t\\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\\n\\t\\t\\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\\n\\t\\t#endif\\n\\t\\t#undef SPOT_LIGHT_MAP_INDEX\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\t#if defined( USE_LIGHT_PROBES )\\n\\t\\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\\n\\t#endif\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometryNormal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\\n\\t#else\\n\\t\\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\\t\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t#if defined( USE_POINTS_UV )\\n\\t\\tvec2 uv = vUv;\\n\\t#else\\n\\t\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_POINTS_UV )\\n\\tvarying vec2 vUv;\\n#else\\n\\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t\\tuniform mat3 uvTransform;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform ivec2 morphTargetsTextureSize;\\n\\t\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = dFdx( vViewPosition );\\n\\tvec3 fdy = dFdy( vViewPosition );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal *= faceDirection;\\n\\t#endif\\n#endif\\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\\n\\t\\t#if defined( USE_NORMALMAP )\\n\\t\\t\\tvNormalMapUv\\n\\t\\t#elif defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tvClearcoatNormalMapUv\\n\\t\\t#else\\n\\t\\t\\tvUv\\n\\t\\t#endif\\n\\t\\t);\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn[0] *= faceDirection;\\n\\t\\ttbn[1] *= faceDirection;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn2[0] *= faceDirection;\\n\\t\\ttbn2[1] *= faceDirection;\\n\\t#endif\\n#endif\\nvec3 nonPerturbedNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\tnormal = normalize( tbn * mapN );\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\\n\\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\\n\\t\\tvec3 q0 = dFdx( eye_pos.xyz );\\n\\t\\tvec3 q1 = dFdy( eye_pos.xyz );\\n\\t\\tvec2 st0 = dFdx( uv.st );\\n\\t\\tvec2 st1 = dFdy( uv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\\n\\t\\treturn mat3( T * scale, B * scale, N );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = nonPerturbedNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\";\n\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\n\nvar opaque_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec2 packDepthToRG( in highp float v ) {\\n\\treturn packDepthToRGBA( v ).yx;\\n}\\nfloat unpackRGToDepth( const in highp vec2 v ) {\\n\\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\\treturn depth * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * depth - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_BATCHING\\n\\tmvPosition = batchingMatrix * mvPosition;\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n\\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\\n\\t\\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\\n\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\tvec4 shadowWorldPosition;\\n#endif\\n#if defined( USE_SHADOWMAP )\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if NUM_SPOT_LIGHT_COORDS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition;\\n\\t\\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t\\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\\n\\t\\t#endif\\n\\t\\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\tuniform highp sampler2D boneTexture;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tint size = textureSize( boneTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn saturate( toneMappingExposure * color );\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.6605, - 0.1246, - 0.0182 ),\\n\\tvec3( - 0.5876, 1.1329, - 0.1006 ),\\n\\tvec3( - 0.0728, - 0.0083, 1.1187 )\\n);\\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\\n\\tvec3( 0.6274, 0.0691, 0.0164 ),\\n\\tvec3( 0.3293, 0.9195, 0.0880 ),\\n\\tvec3( 0.0433, 0.0113, 0.8956 )\\n);\\nvec3 agxDefaultContrastApprox( vec3 x ) {\\n\\tvec3 x2 = x * x;\\n\\tvec3 x4 = x2 * x2;\\n\\treturn + 15.5 * x4 * x2\\n\\t\\t- 40.14 * x4 * x\\n\\t\\t+ 31.96 * x4\\n\\t\\t- 6.868 * x2 * x\\n\\t\\t+ 0.4298 * x2\\n\\t\\t+ 0.1191 * x\\n\\t\\t- 0.00232;\\n}\\nvec3 AgXToneMapping( vec3 color ) {\\n\\tconst mat3 AgXInsetMatrix = mat3(\\n\\t\\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\\n\\t\\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\\n\\t\\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\\n\\t);\\n\\tconst mat3 AgXOutsetMatrix = mat3(\\n\\t\\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\\n\\t\\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\\n\\t\\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\\n\\t);\\n\\tconst float AgxMinEv = - 12.47393;\\tconst float AgxMaxEv = 4.026069;\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\\n\\tcolor = AgXInsetMatrix * color;\\n\\tcolor = max( color, 1e-10 );\\tcolor = log2( color );\\n\\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\\n\\tcolor = clamp( color, 0.0, 1.0 );\\n\\tcolor = agxDefaultContrastApprox( color );\\n\\tcolor = AgXOutsetMatrix * color;\\n\\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\\n\\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\\n\\tcolor = clamp( color, 0.0, 1.0 );\\n\\treturn color;\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tmaterial.transmission = transmission;\\n\\tmaterial.transmissionAlpha = 1.0;\\n\\tmaterial.thickness = thickness;\\n\\tmaterial.attenuationDistance = attenuationDistance;\\n\\tmaterial.attenuationColor = attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmitted = getIBLVolumeRefraction(\\n\\t\\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\\n\\t\\tmaterial.attenuationColor, material.attenuationDistance );\\n\\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\\n\\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tfloat w0( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w1( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\\n\\t}\\n\\tfloat w2( float a ){\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w3( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * a );\\n\\t}\\n\\tfloat g0( float a ) {\\n\\t\\treturn w0( a ) + w1( a );\\n\\t}\\n\\tfloat g1( float a ) {\\n\\t\\treturn w2( a ) + w3( a );\\n\\t}\\n\\tfloat h0( float a ) {\\n\\t\\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\\n\\t}\\n\\tfloat h1( float a ) {\\n\\t\\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\\n\\t}\\n\\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\\n\\t\\tuv = uv * texelSize.zw + 0.5;\\n\\t\\tvec2 iuv = floor( uv );\\n\\t\\tvec2 fuv = fract( uv );\\n\\t\\tfloat g0x = g0( fuv.x );\\n\\t\\tfloat g1x = g1( fuv.x );\\n\\t\\tfloat h0x = h0( fuv.x );\\n\\t\\tfloat h1x = h1( fuv.x );\\n\\t\\tfloat h0y = h0( fuv.y );\\n\\t\\tfloat h1y = h1( fuv.y );\\n\\t\\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\\n\\t\\t\\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\\n\\t}\\n\\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\\n\\t\\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\\n\\t\\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\\n\\t\\tvec2 fLodSizeInv = 1.0 / fLodSize;\\n\\t\\tvec2 cLodSizeInv = 1.0 / cLodSize;\\n\\t\\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\\n\\t\\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\\n\\t\\treturn mix( fSample, cSample, fract( lod ) );\\n\\t}\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\\n\\t}\\n\\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( isinf( attenuationDistance ) ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform mat3 mapTransform;\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform mat3 alphaMapTransform;\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tuniform mat3 lightMapTransform;\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tuniform mat3 aoMapTransform;\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tuniform mat3 bumpMapTransform;\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tuniform mat3 normalMapTransform;\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tuniform mat3 displacementMapTransform;\\n\\tvarying vec2 vDisplacementMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tuniform mat3 emissiveMapTransform;\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tuniform mat3 metalnessMapTransform;\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tuniform mat3 roughnessMapTransform;\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tuniform mat3 anisotropyMapTransform;\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tuniform mat3 clearcoatMapTransform;\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform mat3 clearcoatNormalMapTransform;\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform mat3 clearcoatRoughnessMapTransform;\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tuniform mat3 sheenColorMapTransform;\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tuniform mat3 sheenRoughnessMapTransform;\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tuniform mat3 iridescenceMapTransform;\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform mat3 iridescenceThicknessMapTransform;\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tuniform mat3 specularMapTransform;\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tuniform mat3 specularColorMapTransform;\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tuniform mat3 specularIntensityMapTransform;\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvUv = vec3( uv, 1 ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_BATCHING\\n\\t\\tworldPosition = batchingMatrix * worldPosition;\\n\\t#endif\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$h = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nconst fragment$h = \"uniform sampler2D t2D;\\nuniform float backgroundIntensity;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$g = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$g = \"#ifdef ENVMAP_TYPE_CUBE\\n\\tuniform samplerCube envMap;\\n#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\tuniform sampler2D envMap;\\n#endif\\nuniform float flipEnvMap;\\nuniform float backgroundBlurriness;\\nuniform float backgroundIntensity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\\n\\t#else\\n\\t\\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\nvoid main() {\\n\\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\\n\\tgl_FragColor = texColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$9 = \"#define LAMBERT\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define USE_SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef USE_SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tuniform float iridescence;\\n\\tuniform float iridescenceIOR;\\n\\tuniform float iridescenceThicknessMinimum;\\n\\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\tuniform vec2 anisotropyVector;\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tuniform sampler2D anisotropyMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_SHEEN\\n\\t\\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\\t\\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#ifdef USE_POINTS_UV\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\\nvoid main() {\\n\\t#ifdef USE_POINTS_UV\\n\\t\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$2 = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphahash_fragment: alphahash_fragment,\n\talphahash_pars_fragment: alphahash_pars_fragment,\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbatching_pars_vertex: batching_pars_vertex,\n\tbatching_vertex: batching_vertex,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tiridescence_fragment: iridescence_fragment,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tcolorspace_fragment: colorspace_fragment,\n\tcolorspace_pars_fragment: colorspace_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_fragment: lights_lambert_fragment,\n\tlights_lambert_pars_fragment: lights_lambert_pars_fragment,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphcolor_vertex: morphcolor_vertex,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tiridescence_pars_fragment: iridescence_pars_fragment,\n\topaque_fragment: opaque_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$h,\n\tbackground_frag: fragment$h,\n\tbackgroundCube_vert: vertex$g,\n\tbackgroundCube_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\t\tspecularMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // physical\n\t\trefractionRatio: { value: 0.98 }, // basic, lambert, phong\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 },\n\t\taoMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 },\n\t\tlightMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tnormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null },\n\t\temissiveMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null },\n\t\tmetalnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null },\n\t\troughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: /*@__PURE__*/ new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotLightMap: { value: [] },\n\t\tspotShadowMap: { value: [] },\n\t\tspotLightMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: /*@__PURE__*/ new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: /*@__PURE__*/ new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t\tbackgroundIntensity: { value: 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\n\tbackgroundCube: {\n\n\t\tuniforms: {\n\t\t\tenvMap: { value: null },\n\t\t\tflipEnvMap: { value: - 1 },\n\t\t\tbackgroundBlurriness: { value: 0 },\n\t\t\tbackgroundIntensity: { value: 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.backgroundCube_vert,\n\t\tfragmentShader: ShaderChunk.backgroundCube_frag\n\n\t},\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: /*@__PURE__*/ new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: /*@__PURE__*/ new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tclearcoatNormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescence: { value: 0 },\n\t\t\tiridescenceMap: { value: null },\n\t\t\tiridescenceMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescenceIOR: { value: 1.3 },\n\t\t\tiridescenceThicknessMinimum: { value: 100 },\n\t\t\tiridescenceThicknessMaximum: { value: 400 },\n\t\t\tiridescenceThicknessMap: { value: null },\n\t\t\tiridescenceThicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\tsheenRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tthicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tspecularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t\tspecularColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tanisotropyVector: { value: /*@__PURE__*/ new Vector2() },\n\t\t\tanisotropyMap: { value: null },\n\t\t\tanisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nconst _rgb = { r: 0, b: 0, g: 0 };\n\nfunction WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = alpha === true ? 0 : 1;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene ) {\n\n\t\tlet forceClear = false;\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tconst usePMREM = scene.backgroundBlurriness > 0; // use PMREM if the user wants to blur the background\n\t\t\tbackground = ( usePMREM ? cubeuvmaps : cubemaps ).get( background );\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tconst environmentBlendMode = renderer.xr.getEnvironmentBlendMode();\n\n\t\tif ( environmentBlendMode === 'additive' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 1, premultipliedAlpha );\n\n\t\t} else if ( environmentBlendMode === 'alpha-blend' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 0, premultipliedAlpha );\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.backgroundCube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.backgroundCube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.backgroundCube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// add \"envMap\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\n\t\t\tboxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;\n\t\t\tboxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tboxMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tboxMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// add \"map\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\t\t\tplaneMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tplaneMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tplaneMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tcolor.getRGB( _rgb, getUnlitUniformColorSpace( renderer ) );\n\n\t\tstate.buffers.color.setClear( _rgb.r, _rgb.g, _rgb.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\tlet forceUpdate = false;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( object, geometry, program, index );\n\n\t\t\tif ( updateBuffers ) saveCache( object, geometry, program, index );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t}\n\n\t\tif ( updateBuffers || forceUpdate ) {\n\n\t\t\tforceUpdate = false;\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( object, geometry, program, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tconst cachedAttribute = cachedAttributes[ name ];\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\t\tif ( geometryAttribute && cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( object, geometry, program, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet attribute = attributes[ name ];\n\n\t\t\t\tif ( attribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) attribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) attribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tconst data = {};\n\t\t\t\tdata.attribute = attribute;\n\n\t\t\t\tif ( attribute && attribute.data ) {\n\n\t\t\t\t\tdata.data = attribute.data;\n\n\t\t\t\t}\n\n\t\t\t\tcache[ name ] = data;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset, integer ) {\n\n\t\tif ( integer === true ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\t// check for integer attributes (WebGL 2 only)\n\n\t\t\t\t\tconst integer = ( capabilities.isWebGL2 === true && ( type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType ) );\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\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\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\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\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute.location, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\t\tforceUpdate = true;\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatibility\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\tthis.render( starts[ i ], counts[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawArraysWEBGL( mode, starts, 0, counts, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tconst isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl.constructor.name === 'WebGL2RenderingContext';\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst drawBuffers = isWebGL2 || extensions.has( 'WEBGL_draw_buffers' );\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tconst maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tconst maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tconst maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tconst maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tconst maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tconst maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tconst maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || extensions.has( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( gl.MAX_SAMPLES ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tdrawBuffers: drawBuffers,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\n\t};\n\n\tthis.setGlobalState = function ( planes, camera ) {\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isOrthographicCamera = true;\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t}\n\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst LOD_MIN = 4;\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\nlet _oldActiveCubeFace = 0;\nlet _oldActiveMipmapLevel = 0;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._lodMax = 0;\n\t\tthis._cubeSize = 0;\n\t\tthis._lodPlanes = [];\n\t\tthis._sizeLods = [];\n\t\tthis._sigmas = [];\n\n\t\tthis._blurMaterial = null;\n\t\tthis._cubemapMaterial = null;\n\t\tthis._equirectMaterial = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\n\t\tthis._setSize( 256 );\n\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\t\tcubeUVRenderTarget.depthBuffer = true;\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * or HDR. The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular( equirectangular, renderTarget = null ) {\n\n\t\treturn this._fromTexture( equirectangular, renderTarget );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * or HDR. The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap( cubemap, renderTarget = null ) {\n\n\t\treturn this._fromTexture( cubemap, renderTarget );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\t\t\tthis._compileMaterial( this._cubemapMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\t\t\tthis._compileMaterial( this._equirectMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._dispose();\n\n\t\tif ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();\n\t\tif ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();\n\n\t}\n\n\t// private interface\n\n\t_setSize( cubeSize ) {\n\n\t\tthis._lodMax = Math.floor( Math.log2( cubeSize ) );\n\t\tthis._cubeSize = Math.pow( 2, this._lodMax );\n\n\t}\n\n\t_dispose() {\n\n\t\tif ( this._blurMaterial !== null ) this._blurMaterial.dispose();\n\n\t\tif ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();\n\n\t\tfor ( let i = 0; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tthis._lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._renderer.setRenderTarget( _oldTarget, _oldActiveCubeFace, _oldActiveMipmapLevel );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture, renderTarget ) {\n\n\t\tif ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {\n\n\t\t\tthis._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );\n\n\t\t} else { // Equirectangular\n\n\t\t\tthis._setSize( texture.image.width / 4 );\n\n\t\t}\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\n\t\tconst cubeUVRenderTarget = renderTarget || this._allocateTargets();\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets() {\n\n\t\tconst width = 3 * Math.max( this._cubeSize, 16 * 7 );\n\t\tconst height = 4 * this._cubeSize;\n\n\t\tconst params = {\n\t\t\tmagFilter: LinearFilter,\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: HalfFloatType,\n\t\t\tformat: RGBAFormat,\n\t\t\tcolorSpace: LinearSRGBColorSpace,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( width, height, params );\n\n\t\tif ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width || this._pingPongRenderTarget.height !== height ) {\n\n\t\t\tif ( this._pingPongRenderTarget !== null ) {\n\n\t\t\t\tthis._dispose();\n\n\t\t\t}\n\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget( width, height, params );\n\n\t\t\tconst { _lodMax } = this;\n\t\t\t( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );\n\n\t\t\tthis._blurMaterial = _getBlurShader( _lodMax, width, height );\n\n\t\t}\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\n\t\t\tif ( col === 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col === 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\tconst size = this._cubeSize;\n\n\t\t\t_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );\n\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\n\t\t\t}\n\n\t\t\tthis._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t} else {\n\n\t\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n\t\tconst mesh = new Mesh( this._lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tconst size = this._cubeSize;\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = this._sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i === 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tconst { _lodMax } = this;\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = _lodMax - lodIn;\n\n\t\tconst outputSize = this._sizeLods[ lodOut ];\n\t\tconst x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );\n\t\tconst y = 4 * ( this._cubeSize - outputSize );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\n\n\nfunction _createPlanes( lodMax ) {\n\n\tconst lodPlanes = [];\n\tconst sizeLods = [];\n\tconst sigmas = [];\n\n\tlet lod = lodMax;\n\n\tconst totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n\tfor ( let i = 0; i < totalLods; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\tsizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > lodMax - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];\n\n\t\t} else if ( i === 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\tsigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 2 );\n\t\tconst min = - texelSize;\n\t\tconst max = 1 + texelSize;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\tlodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { lodPlanes, sizeLods, sigmas };\n\n}\n\nfunction _createRenderTarget( width, height, params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( width, height, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( lodMax, width, height ) {\n\n\tconst weights = new Float32Array( MAX_SAMPLES );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new ShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: {\n\t\t\t'n': MAX_SAMPLES,\n\t\t\t'CUBEUV_TEXEL_WIDTH': 1.0 / width,\n\t\t\t'CUBEUV_TEXEL_HEIGHT': 1.0 / height,\n\t\t\t'CUBEUV_MAX_MIP': `${lodMax}.0`,\n\t\t},\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCubemapMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'flipEnvMap': { value: - 1 }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.needsPMREMUpdate === true ) {\n\n\t\t\t\t\ttexture.needsPMREMUpdate = false;\n\n\t\t\t\t\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );\n\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cubeUVmaps.has( texture ) ) {\n\n\t\t\t\t\t\treturn cubeUVmaps.get( texture ).texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\t\tconst renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\t\t\t\tgetExtension( 'WEBGL_clip_cull_distance' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tfor ( const name in geometry.morphAttributes ) {\n\n\t\t\tconst array = geometry.morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.remove( array[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else if ( geometryPosition !== undefined ) {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\tthis.render( starts[ i ] / bytesPerElement, counts[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawElementsWEBGL( mode, counts, 0, type, starts, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase gl.TRIANGLES:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINES:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_STRIP:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_LOOP:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase gl.POINTS:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tif ( capabilities.isWebGL2 === true ) {\n\n\t\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tlet entry = morphTextures.get( geometry );\n\n\t\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\t\tlet vertexDataCount = 0;\n\n\t\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\t\tlet height = 1;\n\n\t\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t\t}\n\n\t\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\t\ttexture.type = FloatType;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t// fill buffer\n\n\t\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tentry = {\n\t\t\t\t\tcount: morphTargetsCount,\n\t\t\t\t\ttexture: texture,\n\t\t\t\t\tsize: new Vector2( width, height )\n\t\t\t\t};\n\n\t\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\t\tfunction disposeTexture() {\n\n\t\t\t\t\ttexture.dispose();\n\n\t\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\n\t\t} else {\n\n\t\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\t\tlet influences = influencesList[ geometry.id ];\n\n\t\t\tif ( influences === undefined || influences.length !== length ) {\n\n\t\t\t\t// initialise list\n\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t\t}\n\n\t\t\t// Collect influences\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tconst influence = influences[ i ];\n\n\t\t\t\tinfluence[ 0 ] = i;\n\t\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tinfluences.sort( absNumericalSort );\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tworkInfluences.sort( numericalSort );\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\tconst morphNormals = geometry.morphAttributes.normal;\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tconst influence = workInfluences[ i ];\n\t\t\t\tconst index = influence[ 0 ];\n\t\t\t\tconst value = influence[ 1 ];\n\n\t\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tif ( updateMap.get( object ) !== frame ) {\n\n\t\t\t\tattributes.update( object.instanceMatrix, gl.ARRAY_BUFFER );\n\n\t\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\t\tattributes.update( object.instanceColor, gl.ARRAY_BUFFER );\n\n\t\t\t\t}\n\n\t\t\t\tupdateMap.set( object, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( updateMap.get( skeleton ) !== frame ) {\n\n\t\t\t\tskeleton.update();\n\n\t\t\t\tupdateMap.set( skeleton, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedIntType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isDepthTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.compareFunction = null;\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.compareFunction = source.compareFunction;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.compareFunction !== null ) data.compareFunction = this.compareFunction;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\n\nconst emptyTexture = /*@__PURE__*/ new Texture();\n\nconst emptyShadowTexture = /*@__PURE__*/ new DepthTexture( 1, 1 );\nemptyShadowTexture.compareFunction = LessEqualCompare;\n\nconst emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();\nconst empty3dTexture = /*@__PURE__*/ new Data3DTexture();\nconst emptyCubeTexture = /*@__PURE__*/ new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single integer / boolean vector (from flat array or THREE.VectorN)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2i( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3i( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4i( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array or THREE.VectorN)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2ui( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3ui( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4ui( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\tconst emptyTexture2D = ( this.type === gl.SAMPLER_2D_SHADOW ) ? emptyShadowTexture : emptyTexture;\n\n\ttextures.setTexture2D( v || emptyTexture2D, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || empty3dTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyArrayTexture, unit );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || empty3dTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] );\n\n\t}\n\n}\n\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nclass SingleUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass PureArrayUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.size = activeInfo.size;\n\t\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass StructuredUniform {\n\n\tconstructor( id ) {\n\n\t\tthis.id = id;\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t}\n\n\tsetValue( gl, value, textures ) {\n\n\t\tconst seq = this.seq;\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t\t}\n\n\t}\n\n}\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nclass WebGLUniforms {\n\n\tconstructor( gl, program ) {\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t\tconst n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\t\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\t\tparseUniform( info, addr, this );\n\n\t\t}\n\n\t}\n\n\tsetValue( gl, name, value, textures ) {\n\n\t\tconst u = this.map[ name ];\n\n\t\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n\t}\n\n\tsetOptional( gl, object, name ) {\n\n\t\tconst v = object[ name ];\n\n\t\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n\t}\n\n\tstatic upload( gl, seq, values, textures ) {\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ],\n\t\t\t\tv = values[ u.id ];\n\n\t\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic seqWithValue( seq, values ) {\n\n\t\tconst r = [];\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tif ( u.id in values ) r.push( u );\n\n\t\t}\n\n\t\treturn r;\n\n\t}\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n// From https://www.khronos.org/registry/webgl/extensions/KHR_parallel_shader_compile/\nconst COMPLETION_STATUS_KHR = 0x91B1;\n\nlet programIdCount = 0;\n\nfunction handleSource( string, errorLine ) {\n\n\tconst lines = string.split( '\\n' );\n\tconst lines2 = [];\n\n\tconst from = Math.max( errorLine - 6, 0 );\n\tconst to = Math.min( errorLine + 6, lines.length );\n\n\tfor ( let i = from; i < to; i ++ ) {\n\n\t\tconst line = i + 1;\n\t\tlines2.push( `${line === errorLine ? '>' : ' '} ${line}: ${lines[ i ]}` );\n\n\t}\n\n\treturn lines2.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( colorSpace ) {\n\n\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\tconst encodingPrimaries = ColorManagement.getPrimaries( colorSpace );\n\n\tlet gamutMapping;\n\n\tif ( workingPrimaries === encodingPrimaries ) {\n\n\t\tgamutMapping = '';\n\n\t} else if ( workingPrimaries === P3Primaries && encodingPrimaries === Rec709Primaries ) {\n\n\t\tgamutMapping = 'LinearDisplayP3ToLinearSRGB';\n\n\t} else if ( workingPrimaries === Rec709Primaries && encodingPrimaries === P3Primaries ) {\n\n\t\tgamutMapping = 'LinearSRGBToLinearDisplayP3';\n\n\t}\n\n\tswitch ( colorSpace ) {\n\n\t\tcase LinearSRGBColorSpace:\n\t\tcase LinearDisplayP3ColorSpace:\n\t\t\treturn [ gamutMapping, 'LinearTransferOETF' ];\n\n\t\tcase SRGBColorSpace:\n\t\tcase DisplayP3ColorSpace:\n\t\t\treturn [ gamutMapping, 'sRGBTransferOETF' ];\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported color space:', colorSpace );\n\t\t\treturn [ gamutMapping, 'LinearTransferOETF' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, gl.COMPILE_STATUS );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\tconst errorMatches = /ERROR: 0:(\\d+)/.exec( errors );\n\tif ( errorMatches ) {\n\n\t\t// --enable-privileged-webgl-extension\n\t\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\tconst errorLine = parseInt( errorMatches[ 1 ] );\n\t\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + handleSource( gl.getShaderSource( shader ), errorLine );\n\n\t} else {\n\n\t\treturn errors;\n\n\t}\n\n}\n\nfunction getTexelEncodingFunction( functionName, colorSpace ) {\n\n\tconst components = getEncodingComponents( colorSpace );\n\treturn `vec4 ${functionName}( vec4 value ) { return ${components[ 0 ]}( ${components[ 1 ]}( value ) ); }`;\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase AgXToneMapping:\n\t\t\ttoneMappingName = 'AgX';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || !! parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.normalMapTangentSpace || parameters.clearcoatNormalMap || parameters.flatShading || parameters.alphaToCoverage || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateVertexExtensions( parameters ) {\n\n\tconst chunks = [\n\t\tparameters.extensionClipCullDistance ? '#extension GL_ANGLE_clip_cull_distance : require' : '',\n\t\tparameters.extensionMultiDraw ? '#extension GL_ANGLE_multi_draw : require' : '',\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === gl.FLOAT_MAT2 ) locationSize = 2;\n\t\tif ( info.type === gl.FLOAT_MAT3 ) locationSize = 3;\n\t\tif ( info.type === gl.FLOAT_MAT4 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\tconst numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps;\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nconst shaderChunkMap = new Map( [\n\t[ 'encodings_fragment', 'colorspace_fragment' ], // @deprecated, r154\n\t[ 'encodings_pars_fragment', 'colorspace_pars_fragment' ], // @deprecated, r154\n\t[ 'output_fragment', 'opaque_fragment' ], // @deprecated, r154\n] );\n\nfunction includeReplacer( match, include ) {\n\n\tlet string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tconst newInclude = shaderChunkMap.get( include );\n\n\t\tif ( newInclude !== undefined ) {\n\n\t\t\tstring = ShaderChunk[ newInclude ];\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Shader chunk \"%s\" has been deprecated. Use \"%s\" instead.', include, newInclude );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string.replace( unrollLoopPattern, loopReplacer );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = `precision ${parameters.precision} float;\n\tprecision ${parameters.precision} int;\n\tprecision ${parameters.precision} sampler2D;\n\tprecision ${parameters.precision} samplerCube;\n\t`;\n\n\tif ( parameters.isWebGL2 ) {\n\n\t\tprecisionstring += `precision ${parameters.precision} sampler3D;\n\t\tprecision ${parameters.precision} sampler2DArray;\n\t\tprecision ${parameters.precision} sampler2DShadow;\n\t\tprecision ${parameters.precision} samplerCubeShadow;\n\t\tprecision ${parameters.precision} sampler2DArrayShadow;\n\t\tprecision ${parameters.precision} isampler2D;\n\t\tprecision ${parameters.precision} isampler3D;\n\t\tprecision ${parameters.precision} isamplerCube;\n\t\tprecision ${parameters.precision} isampler2DArray;\n\t\tprecision ${parameters.precision} usampler2D;\n\t\tprecision ${parameters.precision} usampler3D;\n\t\tprecision ${parameters.precision} usamplerCube;\n\t\tprecision ${parameters.precision} usampler2DArray;\n\t\t`;\n\n\t}\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction generateCubeUVSize( parameters ) {\n\n\tconst imageHeight = parameters.envMapCubeUVHeight;\n\n\tif ( imageHeight === null ) return null;\n\n\tconst maxMip = Math.log2( imageHeight ) - 2;\n\n\tconst texelHeight = 1.0 / imageHeight;\n\n\tconst texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );\n\n\treturn { texelWidth, texelHeight, maxMip };\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\tconst envMapCubeUVSize = generateCubeUVSize( parameters );\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customVertexExtensions = generateVertexExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.extensionClipCullDistance ? '#define USE_CLIP_DISTANCE' : '',\n\t\t\tparameters.batching ? '#define USE_BATCHING' : '',\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\t//\n\n\t\t\tparameters.mapUv ? '#define MAP_UV ' + parameters.mapUv : '',\n\t\t\tparameters.alphaMapUv ? '#define ALPHAMAP_UV ' + parameters.alphaMapUv : '',\n\t\t\tparameters.lightMapUv ? '#define LIGHTMAP_UV ' + parameters.lightMapUv : '',\n\t\t\tparameters.aoMapUv ? '#define AOMAP_UV ' + parameters.aoMapUv : '',\n\t\t\tparameters.emissiveMapUv ? '#define EMISSIVEMAP_UV ' + parameters.emissiveMapUv : '',\n\t\t\tparameters.bumpMapUv ? '#define BUMPMAP_UV ' + parameters.bumpMapUv : '',\n\t\t\tparameters.normalMapUv ? '#define NORMALMAP_UV ' + parameters.normalMapUv : '',\n\t\t\tparameters.displacementMapUv ? '#define DISPLACEMENTMAP_UV ' + parameters.displacementMapUv : '',\n\n\t\t\tparameters.metalnessMapUv ? '#define METALNESSMAP_UV ' + parameters.metalnessMapUv : '',\n\t\t\tparameters.roughnessMapUv ? '#define ROUGHNESSMAP_UV ' + parameters.roughnessMapUv : '',\n\n\t\t\tparameters.anisotropyMapUv ? '#define ANISOTROPYMAP_UV ' + parameters.anisotropyMapUv : '',\n\n\t\t\tparameters.clearcoatMapUv ? '#define CLEARCOATMAP_UV ' + parameters.clearcoatMapUv : '',\n\t\t\tparameters.clearcoatNormalMapUv ? '#define CLEARCOAT_NORMALMAP_UV ' + parameters.clearcoatNormalMapUv : '',\n\t\t\tparameters.clearcoatRoughnessMapUv ? '#define CLEARCOAT_ROUGHNESSMAP_UV ' + parameters.clearcoatRoughnessMapUv : '',\n\n\t\t\tparameters.iridescenceMapUv ? '#define IRIDESCENCEMAP_UV ' + parameters.iridescenceMapUv : '',\n\t\t\tparameters.iridescenceThicknessMapUv ? '#define IRIDESCENCE_THICKNESSMAP_UV ' + parameters.iridescenceThicknessMapUv : '',\n\n\t\t\tparameters.sheenColorMapUv ? '#define SHEEN_COLORMAP_UV ' + parameters.sheenColorMapUv : '',\n\t\t\tparameters.sheenRoughnessMapUv ? '#define SHEEN_ROUGHNESSMAP_UV ' + parameters.sheenRoughnessMapUv : '',\n\n\t\t\tparameters.specularMapUv ? '#define SPECULARMAP_UV ' + parameters.specularMapUv : '',\n\t\t\tparameters.specularColorMapUv ? '#define SPECULAR_COLORMAP_UV ' + parameters.specularColorMapUv : '',\n\t\t\tparameters.specularIntensityMapUv ? '#define SPECULAR_INTENSITYMAP_UV ' + parameters.specularIntensityMapUv : '',\n\n\t\t\tparameters.transmissionMapUv ? '#define TRANSMISSIONMAP_UV ' + parameters.transmissionMapUv : '',\n\t\t\tparameters.thicknessMapUv ? '#define THICKNESSMAP_UV ' + parameters.thicknessMapUv : '',\n\n\t\t\t//\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t( parameters.morphColors && parameters.isWebGL2 ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_UV1',\n\n\t\t\t'\tattribute vec2 uv1;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV2',\n\n\t\t\t'\tattribute vec2 uv2;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV3',\n\n\t\t\t'\tattribute vec2 uv3;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.alphaToCoverage ? '#define ALPHA_TO_COVERAGE' : '',\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescence ? '#define USE_IRIDESCENCE' : '',\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',\n\n\t\t\tparameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\t\t\tparameters.opaque ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'colorspace_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputColorSpace ),\n\n\t\t\tparameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\tcustomVertexExtensions,\n\t\t\t'precision mediump sampler2DArray;',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'precision mediump sampler2DArray;',\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\tfunction onFirstUse( self ) {\n\n\t\t// check for link errors\n\t\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\t\tlet runnable = true;\n\t\t\tlet haveDiagnostics = true;\n\n\t\t\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\t\t\trunnable = false;\n\n\t\t\t\tif ( typeof renderer.debug.onShaderError === 'function' ) {\n\n\t\t\t\t\trenderer.debug.onShaderError( gl, program, glVertexShader, glFragmentShader );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// default error reporting\n\n\t\t\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\\n\\n' +\n\t\t\t\t\t\t'Material Name: ' + self.name + '\\n' +\n\t\t\t\t\t\t'Material Type: ' + self.type + '\\n\\n' +\n\t\t\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\t\t\tfragmentErrors\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t} else if ( programLog !== '' ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\t\thaveDiagnostics = false;\n\n\t\t\t}\n\n\t\t\tif ( haveDiagnostics ) {\n\n\t\t\t\tself.diagnostics = {\n\n\t\t\t\t\trunnable: runnable,\n\n\t\t\t\t\tprogramLog: programLog,\n\n\t\t\t\t\tvertexShader: {\n\n\t\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t\t},\n\n\t\t\t\t\tfragmentShader: {\n\n\t\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Clean up\n\n\t\t// Crashes in iOS9 and iOS10. #18402\n\t\t// gl.detachShader( program, glVertexShader );\n\t\t// gl.detachShader( program, glFragmentShader );\n\n\t\tgl.deleteShader( glVertexShader );\n\t\tgl.deleteShader( glFragmentShader );\n\n\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t}\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\t// Populates cachedUniforms and cachedAttributes\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\t// Populates cachedAttributes and cachedUniforms\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// indicate when the program is ready to be used. if the KHR_parallel_shader_compile extension isn't supported,\n\t// flag the program as ready immediately. It may cause a stall when it's first used.\n\n\tlet programReady = ( parameters.rendererExtensionParallelShaderCompile === false );\n\n\tthis.isReady = function () {\n\n\t\tif ( programReady === false ) {\n\n\t\t\tprogramReady = gl.getProgramParameter( program, COMPLETION_STATUS_KHR );\n\n\t\t}\n\n\t\treturn programReady;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.type = parameters.shaderType;\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nlet _id$1 = 0;\n\nclass WebGLShaderCache {\n\n\tconstructor() {\n\n\t\tthis.shaderCache = new Map();\n\t\tthis.materialCache = new Map();\n\n\t}\n\n\tupdate( material ) {\n\n\t\tconst vertexShader = material.vertexShader;\n\t\tconst fragmentShader = material.fragmentShader;\n\n\t\tconst vertexShaderStage = this._getShaderStage( vertexShader );\n\t\tconst fragmentShaderStage = this._getShaderStage( fragmentShader );\n\n\t\tconst materialShaders = this._getShaderCacheForMaterial( material );\n\n\t\tif ( materialShaders.has( vertexShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( vertexShaderStage );\n\t\t\tvertexShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\tif ( materialShaders.has( fragmentShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( fragmentShaderStage );\n\t\t\tfragmentShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( material ) {\n\n\t\tconst materialShaders = this.materialCache.get( material );\n\n\t\tfor ( const shaderStage of materialShaders ) {\n\n\t\t\tshaderStage.usedTimes --;\n\n\t\t\tif ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage.code );\n\n\t\t}\n\n\t\tthis.materialCache.delete( material );\n\n\t\treturn this;\n\n\t}\n\n\tgetVertexShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.vertexShader ).id;\n\n\t}\n\n\tgetFragmentShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.fragmentShader ).id;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shaderCache.clear();\n\t\tthis.materialCache.clear();\n\n\t}\n\n\t_getShaderCacheForMaterial( material ) {\n\n\t\tconst cache = this.materialCache;\n\t\tlet set = cache.get( material );\n\n\t\tif ( set === undefined ) {\n\n\t\t\tset = new Set();\n\t\t\tcache.set( material, set );\n\n\t\t}\n\n\t\treturn set;\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\t\tlet stage = cache.get( code );\n\n\t\tif ( stage === undefined ) {\n\n\t\t\tstage = new WebGLShaderStage( code );\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn stage;\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor( code ) {\n\n\t\tthis.id = _id$1 ++;\n\n\t\tthis.code = code;\n\t\tthis.usedTimes = 0;\n\n\t}\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst _programLayers = new Layers();\n\tconst _customShaders = new WebGLShaderCache();\n\tconst _activeChannels = new Set();\n\tconst programs = [];\n\n\tconst IS_WEBGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tfunction getChannel( value ) {\n\n\t\t_activeChannels.add( value );\n\n\t\tif ( value === 0 ) return 'uv';\n\n\t\treturn `uv${ value }`;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst geometry = object.geometry;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet morphTextureStride = 0;\n\n\t\tif ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1;\n\t\tif ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2;\n\t\tif ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3;\n\n\t\t//\n\n\t\tlet vertexShader, fragmentShader;\n\t\tlet customVertexShaderID, customFragmentShaderID;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t\t_customShaders.update( material );\n\n\t\t\tcustomVertexShaderID = _customShaders.getVertexShaderID( material );\n\t\t\tcustomFragmentShaderID = _customShaders.getFragmentShaderID( material );\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst IS_INSTANCEDMESH = object.isInstancedMesh === true;\n\t\tconst IS_BATCHEDMESH = object.isBatchedMesh === true;\n\n\t\tconst HAS_MAP = !! material.map;\n\t\tconst HAS_MATCAP = !! material.matcap;\n\t\tconst HAS_ENVMAP = !! envMap;\n\t\tconst HAS_AOMAP = !! material.aoMap;\n\t\tconst HAS_LIGHTMAP = !! material.lightMap;\n\t\tconst HAS_BUMPMAP = !! material.bumpMap;\n\t\tconst HAS_NORMALMAP = !! material.normalMap;\n\t\tconst HAS_DISPLACEMENTMAP = !! material.displacementMap;\n\t\tconst HAS_EMISSIVEMAP = !! material.emissiveMap;\n\n\t\tconst HAS_METALNESSMAP = !! material.metalnessMap;\n\t\tconst HAS_ROUGHNESSMAP = !! material.roughnessMap;\n\n\t\tconst HAS_ANISOTROPY = material.anisotropy > 0;\n\t\tconst HAS_CLEARCOAT = material.clearcoat > 0;\n\t\tconst HAS_IRIDESCENCE = material.iridescence > 0;\n\t\tconst HAS_SHEEN = material.sheen > 0;\n\t\tconst HAS_TRANSMISSION = material.transmission > 0;\n\n\t\tconst HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !! material.anisotropyMap;\n\n\t\tconst HAS_CLEARCOATMAP = HAS_CLEARCOAT && !! material.clearcoatMap;\n\t\tconst HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !! material.clearcoatNormalMap;\n\t\tconst HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !! material.clearcoatRoughnessMap;\n\n\t\tconst HAS_IRIDESCENCEMAP = HAS_IRIDESCENCE && !! material.iridescenceMap;\n\t\tconst HAS_IRIDESCENCE_THICKNESSMAP = HAS_IRIDESCENCE && !! material.iridescenceThicknessMap;\n\n\t\tconst HAS_SHEEN_COLORMAP = HAS_SHEEN && !! material.sheenColorMap;\n\t\tconst HAS_SHEEN_ROUGHNESSMAP = HAS_SHEEN && !! material.sheenRoughnessMap;\n\n\t\tconst HAS_SPECULARMAP = !! material.specularMap;\n\t\tconst HAS_SPECULAR_COLORMAP = !! material.specularColorMap;\n\t\tconst HAS_SPECULAR_INTENSITYMAP = !! material.specularIntensityMap;\n\n\t\tconst HAS_TRANSMISSIONMAP = HAS_TRANSMISSION && !! material.transmissionMap;\n\t\tconst HAS_THICKNESSMAP = HAS_TRANSMISSION && !! material.thicknessMap;\n\n\t\tconst HAS_GRADIENTMAP = !! material.gradientMap;\n\n\t\tconst HAS_ALPHAMAP = !! material.alphaMap;\n\n\t\tconst HAS_ALPHATEST = material.alphaTest > 0;\n\n\t\tconst HAS_ALPHAHASH = !! material.alphaHash;\n\n\t\tconst HAS_EXTENSIONS = !! material.extensions;\n\n\t\tlet toneMapping = NoToneMapping;\n\n\t\tif ( material.toneMapped ) {\n\n\t\t\tif ( currentRenderTarget === null || currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\ttoneMapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: IS_WEBGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderType: material.type,\n\t\t\tshaderName: material.name,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tcustomVertexShaderID: customVertexShaderID,\n\t\t\tcustomFragmentShaderID: customFragmentShaderID,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tbatching: IS_BATCHEDMESH,\n\t\t\tinstancing: IS_INSTANCEDMESH,\n\t\t\tinstancingColor: IS_INSTANCEDMESH && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: SUPPORTS_VERTEX_TEXTURES,\n\t\t\toutputColorSpace: ( currentRenderTarget === null ) ? renderer.outputColorSpace : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace ),\n\t\t\talphaToCoverage: !! material.alphaToCoverage,\n\n\t\t\tmap: HAS_MAP,\n\t\t\tmatcap: HAS_MATCAP,\n\t\t\tenvMap: HAS_ENVMAP,\n\t\t\tenvMapMode: HAS_ENVMAP && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\taoMap: HAS_AOMAP,\n\t\t\tlightMap: HAS_LIGHTMAP,\n\t\t\tbumpMap: HAS_BUMPMAP,\n\t\t\tnormalMap: HAS_NORMALMAP,\n\t\t\tdisplacementMap: SUPPORTS_VERTEX_TEXTURES && HAS_DISPLACEMENTMAP,\n\t\t\temissiveMap: HAS_EMISSIVEMAP,\n\n\t\t\tnormalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap,\n\t\t\tnormalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tmetalnessMap: HAS_METALNESSMAP,\n\t\t\troughnessMap: HAS_ROUGHNESSMAP,\n\n\t\t\tanisotropy: HAS_ANISOTROPY,\n\t\t\tanisotropyMap: HAS_ANISOTROPYMAP,\n\n\t\t\tclearcoat: HAS_CLEARCOAT,\n\t\t\tclearcoatMap: HAS_CLEARCOATMAP,\n\t\t\tclearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,\n\t\t\tclearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP,\n\n\t\t\tiridescence: HAS_IRIDESCENCE,\n\t\t\tiridescenceMap: HAS_IRIDESCENCEMAP,\n\t\t\tiridescenceThicknessMap: HAS_IRIDESCENCE_THICKNESSMAP,\n\n\t\t\tsheen: HAS_SHEEN,\n\t\t\tsheenColorMap: HAS_SHEEN_COLORMAP,\n\t\t\tsheenRoughnessMap: HAS_SHEEN_ROUGHNESSMAP,\n\n\t\t\tspecularMap: HAS_SPECULARMAP,\n\t\t\tspecularColorMap: HAS_SPECULAR_COLORMAP,\n\t\t\tspecularIntensityMap: HAS_SPECULAR_INTENSITYMAP,\n\n\t\t\ttransmission: HAS_TRANSMISSION,\n\t\t\ttransmissionMap: HAS_TRANSMISSIONMAP,\n\t\t\tthicknessMap: HAS_THICKNESSMAP,\n\n\t\t\tgradientMap: HAS_GRADIENTMAP,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending && material.alphaToCoverage === false,\n\n\t\t\talphaMap: HAS_ALPHAMAP,\n\t\t\talphaTest: HAS_ALPHATEST,\n\t\t\talphaHash: HAS_ALPHAHASH,\n\n\t\t\tcombine: material.combine,\n\n\t\t\t//\n\n\t\t\tmapUv: HAS_MAP && getChannel( material.map.channel ),\n\t\t\taoMapUv: HAS_AOMAP && getChannel( material.aoMap.channel ),\n\t\t\tlightMapUv: HAS_LIGHTMAP && getChannel( material.lightMap.channel ),\n\t\t\tbumpMapUv: HAS_BUMPMAP && getChannel( material.bumpMap.channel ),\n\t\t\tnormalMapUv: HAS_NORMALMAP && getChannel( material.normalMap.channel ),\n\t\t\tdisplacementMapUv: HAS_DISPLACEMENTMAP && getChannel( material.displacementMap.channel ),\n\t\t\temissiveMapUv: HAS_EMISSIVEMAP && getChannel( material.emissiveMap.channel ),\n\n\t\t\tmetalnessMapUv: HAS_METALNESSMAP && getChannel( material.metalnessMap.channel ),\n\t\t\troughnessMapUv: HAS_ROUGHNESSMAP && getChannel( material.roughnessMap.channel ),\n\n\t\t\tanisotropyMapUv: HAS_ANISOTROPYMAP && getChannel( material.anisotropyMap.channel ),\n\n\t\t\tclearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ),\n\t\t\tclearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ),\n\t\t\tclearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ),\n\n\t\t\tiridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel( material.iridescenceMap.channel ),\n\t\t\tiridescenceThicknessMapUv: HAS_IRIDESCENCE_THICKNESSMAP && getChannel( material.iridescenceThicknessMap.channel ),\n\n\t\t\tsheenColorMapUv: HAS_SHEEN_COLORMAP && getChannel( material.sheenColorMap.channel ),\n\t\t\tsheenRoughnessMapUv: HAS_SHEEN_ROUGHNESSMAP && getChannel( material.sheenRoughnessMap.channel ),\n\n\t\t\tspecularMapUv: HAS_SPECULARMAP && getChannel( material.specularMap.channel ),\n\t\t\tspecularColorMapUv: HAS_SPECULAR_COLORMAP && getChannel( material.specularColorMap.channel ),\n\t\t\tspecularIntensityMapUv: HAS_SPECULAR_INTENSITYMAP && getChannel( material.specularIntensityMap.channel ),\n\n\t\t\ttransmissionMapUv: HAS_TRANSMISSIONMAP && getChannel( material.transmissionMap.channel ),\n\t\t\tthicknessMapUv: HAS_THICKNESSMAP && getChannel( material.thicknessMap.channel ),\n\n\t\t\talphaMapUv: HAS_ALPHAMAP && getChannel( material.alphaMap.channel ),\n\n\t\t\t//\n\n\t\t\tvertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n\n\t\t\tpointsUvs: object.isPoints === true && !! geometry.attributes.uv && ( HAS_MAP || HAS_ALPHAMAP ),\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog === true,\n\t\t\tfogExp2: ( !! fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading === true,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation === true,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: object.isSkinnedMesh === true,\n\n\t\t\tmorphTargets: geometry.morphAttributes.position !== undefined,\n\t\t\tmorphNormals: geometry.morphAttributes.normal !== undefined,\n\t\t\tmorphColors: geometry.morphAttributes.color !== undefined,\n\t\t\tmorphTargetsCount: morphTargetsCount,\n\t\t\tmorphTextureStride: morphTextureStride,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumSpotLightMaps: lights.spotLightMap.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\t\t\tnumSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps,\n\n\t\t\tnumLightProbes: lights.numLightProbes,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: toneMapping,\n\t\t\tuseLegacyLights: renderer._useLegacyLights,\n\n\t\t\tdecodeVideoTexture: HAS_MAP && ( material.map.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.map.colorSpace ) === SRGBTransfer ),\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tuseDepthPacking: material.depthPacking >= 0,\n\t\t\tdepthPacking: material.depthPacking || 0,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: HAS_EXTENSIONS && material.extensions.derivatives === true,\n\t\t\textensionFragDepth: HAS_EXTENSIONS && material.extensions.fragDepth === true,\n\t\t\textensionDrawBuffers: HAS_EXTENSIONS && material.extensions.drawBuffers === true,\n\t\t\textensionShaderTextureLOD: HAS_EXTENSIONS && material.extensions.shaderTextureLOD === true,\n\t\t\textensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance === true && extensions.has( 'WEBGL_clip_cull_distance' ),\n\t\t\textensionMultiDraw: HAS_EXTENSIONS && material.extensions.multiDraw === true && extensions.has( 'WEBGL_multi_draw' ),\n\n\t\t\trendererExtensionFragDepth: IS_WEBGL2 || extensions.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: IS_WEBGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: IS_WEBGL2 || extensions.has( 'EXT_shader_texture_lod' ),\n\t\t\trendererExtensionParallelShaderCompile: extensions.has( 'KHR_parallel_shader_compile' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\t// the usage of getChannel() determines the active texture channels for this shader\n\n\t\tparameters.vertexUv1s = _activeChannels.has( 1 );\n\t\tparameters.vertexUv2s = _activeChannels.has( 2 );\n\t\tparameters.vertexUv3s = _activeChannels.has( 3 );\n\n\t\t_activeChannels.clear();\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.customVertexShaderID );\n\t\t\tarray.push( parameters.customFragmentShaderID );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tgetProgramCacheKeyParameters( array, parameters );\n\t\t\tgetProgramCacheKeyBooleans( array, parameters );\n\t\t\tarray.push( renderer.outputColorSpace );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getProgramCacheKeyParameters( array, parameters ) {\n\n\t\tarray.push( parameters.precision );\n\t\tarray.push( parameters.outputColorSpace );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.mapUv );\n\t\tarray.push( parameters.alphaMapUv );\n\t\tarray.push( parameters.lightMapUv );\n\t\tarray.push( parameters.aoMapUv );\n\t\tarray.push( parameters.bumpMapUv );\n\t\tarray.push( parameters.normalMapUv );\n\t\tarray.push( parameters.displacementMapUv );\n\t\tarray.push( parameters.emissiveMapUv );\n\t\tarray.push( parameters.metalnessMapUv );\n\t\tarray.push( parameters.roughnessMapUv );\n\t\tarray.push( parameters.anisotropyMapUv );\n\t\tarray.push( parameters.clearcoatMapUv );\n\t\tarray.push( parameters.clearcoatNormalMapUv );\n\t\tarray.push( parameters.clearcoatRoughnessMapUv );\n\t\tarray.push( parameters.iridescenceMapUv );\n\t\tarray.push( parameters.iridescenceThicknessMapUv );\n\t\tarray.push( parameters.sheenColorMapUv );\n\t\tarray.push( parameters.sheenRoughnessMapUv );\n\t\tarray.push( parameters.specularMapUv );\n\t\tarray.push( parameters.specularColorMapUv );\n\t\tarray.push( parameters.specularIntensityMapUv );\n\t\tarray.push( parameters.transmissionMapUv );\n\t\tarray.push( parameters.thicknessMapUv );\n\t\tarray.push( parameters.combine );\n\t\tarray.push( parameters.fogExp2 );\n\t\tarray.push( parameters.sizeAttenuation );\n\t\tarray.push( parameters.morphTargetsCount );\n\t\tarray.push( parameters.morphAttributeCount );\n\t\tarray.push( parameters.numDirLights );\n\t\tarray.push( parameters.numPointLights );\n\t\tarray.push( parameters.numSpotLights );\n\t\tarray.push( parameters.numSpotLightMaps );\n\t\tarray.push( parameters.numHemiLights );\n\t\tarray.push( parameters.numRectAreaLights );\n\t\tarray.push( parameters.numDirLightShadows );\n\t\tarray.push( parameters.numPointLightShadows );\n\t\tarray.push( parameters.numSpotLightShadows );\n\t\tarray.push( parameters.numSpotLightShadowsWithMaps );\n\t\tarray.push( parameters.numLightProbes );\n\t\tarray.push( parameters.shadowMapType );\n\t\tarray.push( parameters.toneMapping );\n\t\tarray.push( parameters.numClippingPlanes );\n\t\tarray.push( parameters.numClipIntersection );\n\t\tarray.push( parameters.depthPacking );\n\n\t}\n\n\tfunction getProgramCacheKeyBooleans( array, parameters ) {\n\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.isWebGL2 )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.supportsVertexTextures )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.normalMapObjectSpace )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.normalMapTangentSpace )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.iridescence )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.vertexUv1s )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.vertexUv2s )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.vertexUv3s )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.anisotropy )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.alphaHash )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.batching )\n\t\t\t_programLayers.enable( 19 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.shadowMapEnabled )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.useLegacyLights )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.doubleSided )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.flipSided )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.useDepthPacking )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.dithering )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.transmission )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.pointsUvs )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.decodeVideoTexture )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.alphaToCoverage )\n\t\t\t_programLayers.enable( 20 );\n\n\t\tarray.push( _programLayers.mask );\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\tfunction releaseShaderCache( material ) {\n\n\t\t_customShaders.remove( material );\n\n\t}\n\n\tfunction dispose() {\n\n\t\t_customShaders.dispose();\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\treleaseShaderCache: releaseShaderCache,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tconst listArray = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( listArray === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= listArray.length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlistArray.push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = listArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingAndTexturingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 2 : 0 ) - ( lightA.castShadow ? 2 : 0 ) + ( lightB.map ? 1 : 0 ) - ( lightA.map ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions, capabilities ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1,\n\t\t\tnumSpotMaps: - 1,\n\n\t\t\tnumLightProbes: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotLightMap: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotLightMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: [],\n\t\tnumSpotLightShadowsWithMaps: 0,\n\t\tnumLightProbes: 0\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, useLegacyLights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\t\tlet numSpotMaps = 0;\n\t\tlet numSpotShadowsWithMaps = 0;\n\n\t\tlet numLightProbes = 0;\n\n\t\t// ordering : [shadow casting + map texturing, map texturing, shadow casting, none ]\n\t\tlights.sort( shadowCastingAndTexturingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( useLegacyLights === true ) ? Math.PI : 1;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t\tnumLightProbes ++;\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\tif ( light.map ) {\n\n\t\t\t\t\tstate.spotLightMap[ numSpotMaps ] = light.map;\n\t\t\t\t\tnumSpotMaps ++;\n\n\t\t\t\t\t// make sure the lightMatrix is up to date\n\t\t\t\t\t// TODO : do it if required only\n\t\t\t\t\tshadow.updateMatrices( light );\n\n\t\t\t\t\tif ( light.castShadow ) numSpotShadowsWithMaps ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotLightMatrix[ spotLength ] = shadow.matrix;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ||\n\t\t\thash.numSpotMaps !== numSpotMaps ||\n\t\t\thash.numLightProbes !== numLightProbes ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps;\n\t\t\tstate.spotLightMap.length = numSpotMaps;\n\t\t\tstate.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps;\n\t\t\tstate.numLightProbes = numLightProbes;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\t\t\thash.numSpotMaps = numSpotMaps;\n\n\t\t\thash.numLightProbes = numLightProbes;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( useLegacyLights ) {\n\n\t\tlights.setup( lightsArray, useLegacyLights );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tconst renderStateArray = renderStates.get( scene );\n\t\tlet renderState;\n\n\t\tif ( renderStateArray === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStateArray.length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStateArray.push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStateArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDepthMaterial = true;\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDistanceMaterial = true;\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, _capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = _capabilities.maxTextureSize;\n\n\tconst shadowSide = { [ FrontSide ]: BackSide, [ BackSide ]: FrontSide, [ DoubleSide ]: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\tlet _previousType = this.type;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// check for shadow map type changes\n\n\t\tconst toVSM = ( _previousType !== VSMShadowMap && this.type === VSMShadowMap );\n\t\tconst fromVSM = ( _previousType === VSMShadowMap && this.type !== VSMShadowMap );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null || toVSM === true || fromVSM === true ) {\n\n\t\t\t\tconst pars = ( this.type !== VSMShadowMap ) ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n\n\t\t\t\tif ( shadow.map !== null ) {\n\n\t\t\t\t\tshadow.map.dispose();\n\n\t\t\t\t}\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( shadow.isPointLightShadow !== true && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\t_previousType = this.type;\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( shadow.mapPass === null ) {\n\n\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t\tif ( ( _renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||\n\t\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t\t( material.alphaMap && material.alphaTest > 0 ) ||\n\t\t\t\t( material.map && material.alphaTest > 0 ) ) {\n\n\t\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t\t// appropriate state\n\n\t\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t\t}\n\n\t\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\t\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\t}\n\n\t\t\t\tresult = cachedMaterial;\n\n\t\t\t}\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\t\tresult.map = material.map;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tconst materialProperties = _renderer.properties.get( result );\n\t\t\tmaterialProperties.light = light;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, groupMaterial, light, type );\n\n\t\t\t\t\t\t\tobject.onBeforeShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t\tobject.onAfterShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, material, light, type );\n\n\t\t\t\t\tobject.onBeforeShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t\tobject.onAfterShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t// make sure to remove the unique distance/depth materials used for shadow map rendering\n\n\t\tfor ( const id in _materialCache ) {\n\n\t\t\tconst cache = _materialCache[ id ];\n\n\t\t\tconst uuid = event.target.uuid;\n\n\t\t\tif ( uuid in cache ) {\n\n\t\t\t\tconst shadowMaterial = cache[ uuid ];\n\t\t\t\tshadowMaterial.dispose();\n\t\t\t\tdelete cache[ uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef !== stencilRef ||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tconst uboBindings = new WeakMap();\n\tconst uboProgramMap = new WeakMap();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\tlet currentDrawbuffers = new WeakMap();\n\tlet defaultDrawbuffers = [];\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentBlendColor = new Color( 0, 0, 0 );\n\tlet currentBlendAlpha = 0;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( gl.VERSION );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( gl.SCISSOR_BOX );\n\tconst viewportParam = gl.getParameter( gl.VIEWPORT );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count, dimensions ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tif ( isWebGL2 && ( type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY ) ) {\n\n\t\t\t\tgl.texImage3D( target, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t} else {\n\n\t\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\n\tif ( isWebGL2 ) {\n\n\t\temptyTextures[ gl.TEXTURE_2D_ARRAY ] = createTexture( gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1 );\n\t\temptyTextures[ gl.TEXTURE_3D ] = createTexture( gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1 );\n\n\t}\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( gl.DEPTH_TEST );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( gl.CULL_FACE );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t// gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER\n\n\t\t\t\tif ( target === gl.DRAW_FRAMEBUFFER ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ gl.FRAMEBUFFER ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t\tif ( target === gl.FRAMEBUFFER ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ gl.DRAW_FRAMEBUFFER ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction drawBuffers( renderTarget, framebuffer ) {\n\n\t\tlet drawBuffers = defaultDrawbuffers;\n\n\t\tlet needsUpdate = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tdrawBuffers = currentDrawbuffers.get( framebuffer );\n\n\t\t\tif ( drawBuffers === undefined ) {\n\n\t\t\t\tdrawBuffers = [];\n\t\t\t\tcurrentDrawbuffers.set( framebuffer, drawBuffers );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tdrawBuffers[ i ] = gl.COLOR_ATTACHMENT0 + i;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {\n\n\t\t\t\t\tdrawBuffers[ 0 ] = gl.COLOR_ATTACHMENT0;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== gl.BACK ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = gl.BACK;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgl.drawBuffers( drawBuffers );\n\n\t\t\t} else {\n\n\t\t\t\textensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( drawBuffers );\n\n\t\t\t}\n\n\t\t}\n\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: gl.FUNC_ADD,\n\t\t[ SubtractEquation ]: gl.FUNC_SUBTRACT,\n\t\t[ ReverseSubtractEquation ]: gl.FUNC_REVERSE_SUBTRACT\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = gl.MIN;\n\t\tequationToGL[ MaxEquation ] = gl.MAX;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: gl.ZERO,\n\t\t[ OneFactor ]: gl.ONE,\n\t\t[ SrcColorFactor ]: gl.SRC_COLOR,\n\t\t[ SrcAlphaFactor ]: gl.SRC_ALPHA,\n\t\t[ SrcAlphaSaturateFactor ]: gl.SRC_ALPHA_SATURATE,\n\t\t[ DstColorFactor ]: gl.DST_COLOR,\n\t\t[ DstAlphaFactor ]: gl.DST_ALPHA,\n\t\t[ OneMinusSrcColorFactor ]: gl.ONE_MINUS_SRC_COLOR,\n\t\t[ OneMinusSrcAlphaFactor ]: gl.ONE_MINUS_SRC_ALPHA,\n\t\t[ OneMinusDstColorFactor ]: gl.ONE_MINUS_DST_COLOR,\n\t\t[ OneMinusDstAlphaFactor ]: gl.ONE_MINUS_DST_ALPHA,\n\t\t[ ConstantColorFactor ]: gl.CONSTANT_COLOR,\n\t\t[ OneMinusConstantColorFactor ]: gl.ONE_MINUS_CONSTANT_COLOR,\n\t\t[ ConstantAlphaFactor ]: gl.CONSTANT_ALPHA,\n\t\t[ OneMinusConstantAlphaFactor ]: gl.ONE_MINUS_CONSTANT_ALPHA\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, blendColor, blendAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\n\n\t\t\t\tdisable( gl.BLEND );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( currentBlendingEnabled === false ) {\n\n\t\t\tenable( gl.BLEND );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ONE, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\t\t\t\tcurrentBlendColor.set( 0, 0, 0 );\n\t\t\t\tcurrentBlendAlpha = 0;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tif ( blendColor.equals( currentBlendColor ) === false || blendAlpha !== currentBlendAlpha ) {\n\n\t\t\tgl.blendColor( blendColor.r, blendColor.g, blendColor.b, blendAlpha );\n\n\t\t\tcurrentBlendColor.copy( blendColor );\n\t\t\tcurrentBlendAlpha = blendAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = false;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( gl.CULL_FACE )\n\t\t\t: enable( gl.CULL_FACE );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.blendColor, material.blendAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( gl.SAMPLE_ALPHA_TO_COVERAGE )\n\t\t\t: disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture, webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) {\n\n\t\t\tif ( currentTextureSlot === null ) {\n\n\t\t\t\twebglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\t\t} else {\n\n\t\t\t\twebglSlot = currentTextureSlot;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ webglSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ webglSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\t\tgl.activeTexture( webglSlot );\n\t\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t\t}\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\tfunction updateUBOMapping( uniformsGroup, program ) {\n\n\t\tlet mapping = uboProgramMap.get( program );\n\n\t\tif ( mapping === undefined ) {\n\n\t\t\tmapping = new WeakMap();\n\n\t\t\tuboProgramMap.set( program, mapping );\n\n\t\t}\n\n\t\tlet blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( blockIndex === undefined ) {\n\n\t\t\tblockIndex = gl.getUniformBlockIndex( program, uniformsGroup.name );\n\n\t\t\tmapping.set( uniformsGroup, blockIndex );\n\n\t\t}\n\n\t}\n\n\tfunction uniformBlockBinding( uniformsGroup, program ) {\n\n\t\tconst mapping = uboProgramMap.get( program );\n\t\tconst blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( uboBindings.get( program ) !== blockIndex ) {\n\n\t\t\t// bind shader specific block index to global block point\n\t\t\tgl.uniformBlockBinding( program, blockIndex, uniformsGroup.__bindingPointIndex );\n\n\t\t\tuboBindings.set( program, blockIndex );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\t// reset state\n\n\t\tgl.disable( gl.BLEND );\n\t\tgl.disable( gl.CULL_FACE );\n\t\tgl.disable( gl.DEPTH_TEST );\n\t\tgl.disable( gl.POLYGON_OFFSET_FILL );\n\t\tgl.disable( gl.SCISSOR_TEST );\n\t\tgl.disable( gl.STENCIL_TEST );\n\t\tgl.disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\tgl.blendFunc( gl.ONE, gl.ZERO );\n\t\tgl.blendFuncSeparate( gl.ONE, gl.ZERO, gl.ONE, gl.ZERO );\n\t\tgl.blendColor( 0, 0, 0, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( gl.LESS );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( gl.ALWAYS, 0, 0xffffffff );\n\t\tgl.stencilOp( gl.KEEP, gl.KEEP, gl.KEEP );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( gl.BACK );\n\t\tgl.frontFace( gl.CCW );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( gl.TEXTURE0 );\n\n\t\tgl.bindFramebuffer( gl.FRAMEBUFFER, null );\n\n\t\tif ( isWebGL2 === true ) {\n\n\t\t\tgl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, null );\n\t\t\tgl.bindFramebuffer( gl.READ_FRAMEBUFFER, null );\n\n\t\t}\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\t\tcurrentDrawbuffers = new WeakMap();\n\t\tdefaultDrawbuffers = [];\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentBlendColor = new Color( 0, 0, 0 );\n\t\tcurrentBlendAlpha = 0;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\n\t\tdrawBuffers: drawBuffers,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\tcompressedTexImage3D: compressedTexImage3D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tupdateUBOMapping: updateUBOMapping,\n\t\tuniformBlockBinding: uniformBlockBinding,\n\n\t\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\t\tcompressedTexSubImage3D: compressedTexSubImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\tconst supportsInvalidateFramebuffer = typeof navigator === 'undefined' ? false : /OculusBrowser/g.test( navigator.userAgent );\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\tconst _sources = new WeakMap(); // maps WebglTexture objects to instances of Source\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo$1( image ) {\n\n\t\treturn isPowerOfTwo( image.width ) && isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, colorSpace, forceLinearTransfer = false ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === _gl.RED ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.R32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.R16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RED_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.R16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.R32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.R8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.R16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.R32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RG ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RG32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RG16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGBA ) {\n\n\t\t\tconst transfer = forceLinearTransfer ? LinearTransfer : ColorManagement.getTransfer( colorSpace );\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RGBA32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RGBA16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = ( transfer === SRGBTransfer ) ? _gl.SRGB8_ALPHA8 : _gl.RGBA8;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_4_4_4_4 ) internalFormat = _gl.RGBA4;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_5_5_5_1 ) internalFormat = _gl.RGB5_A1;\n\n\t\t}\n\n\t\tif ( internalFormat === _gl.R16F || internalFormat === _gl.R32F ||\n\t\t\tinternalFormat === _gl.RG16F || internalFormat === _gl.RG32F ||\n\t\t\tinternalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\tfunction getMipLevels( texture, image, supportsMips ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {\n\n\t\t\treturn image.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn _gl.NEAREST;\n\n\t\t}\n\n\t\treturn _gl.LINEAR;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t// check if it's necessary to remove the WebGLTexture object\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures ) {\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\t\t\twebglTexture.usedTimes --;\n\n\t\t\t// the WebGLTexture object is not used anymore, remove it\n\n\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\tdeleteTexture( texture );\n\n\t\t\t}\n\n\t\t\t// remove the weak map entry if no WebGLTexture uses the source anymore\n\n\t\t\tif ( Object.keys( webglTextures ).length === 0 ) {\n\n\t\t\t\t_sources.delete( source );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deleteTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\t\tdelete webglTextures[ textureProperties.__cacheKey ];\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\tinfo.memory.textures --;\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer[ i ] ) ) {\n\n\t\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer[ i ].length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ][ level ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer ) ) {\n\n\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer.length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ level ] );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) {\n\n\t\t\t\tfor ( let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer[ i ] ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = texture.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachmentProperties = properties.get( texture[ i ] );\n\n\t\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\t\tinfo.memory.textures --;\n\n\t\t\t\t}\n\n\t\t\t\tproperties.remove( texture[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tfunction getTextureCacheKey( texture ) {\n\n\t\tconst array = [];\n\n\t\tarray.push( texture.wrapS );\n\t\tarray.push( texture.wrapT );\n\t\tarray.push( texture.wrapR || 0 );\n\t\tarray.push( texture.magFilter );\n\t\tarray.push( texture.minFilter );\n\t\tarray.push( texture.anisotropy );\n\t\tarray.push( texture.internalFormat );\n\t\tarray.push( texture.format );\n\t\tarray.push( texture.type );\n\t\tarray.push( texture.generateMipmaps );\n\t\tarray.push( texture.premultiplyAlpha );\n\t\tarray.push( texture.flipY );\n\t\tarray.push( texture.unpackAlignment );\n\t\tarray.push( texture.colorSpace );\n\n\t\treturn array.join();\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_3D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: _gl.REPEAT,\n\t\t[ ClampToEdgeWrapping ]: _gl.CLAMP_TO_EDGE,\n\t\t[ MirroredRepeatWrapping ]: _gl.MIRRORED_REPEAT\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: _gl.NEAREST,\n\t\t[ NearestMipmapNearestFilter ]: _gl.NEAREST_MIPMAP_NEAREST,\n\t\t[ NearestMipmapLinearFilter ]: _gl.NEAREST_MIPMAP_LINEAR,\n\n\t\t[ LinearFilter ]: _gl.LINEAR,\n\t\t[ LinearMipmapNearestFilter ]: _gl.LINEAR_MIPMAP_NEAREST,\n\t\t[ LinearMipmapLinearFilter ]: _gl.LINEAR_MIPMAP_LINEAR\n\t};\n\n\tconst compareToGL = {\n\t\t[ NeverCompare ]: _gl.NEVER,\n\t\t[ AlwaysCompare ]: _gl.ALWAYS,\n\t\t[ LessCompare ]: _gl.LESS,\n\t\t[ LessEqualCompare ]: _gl.LEQUAL,\n\t\t[ EqualCompare ]: _gl.EQUAL,\n\t\t[ GreaterEqualCompare ]: _gl.GEQUAL,\n\t\t[ GreaterCompare ]: _gl.GREATER,\n\t\t[ NotEqualCompare ]: _gl.NOTEQUAL\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false &&\n\t\t\t( texture.magFilter === LinearFilter || texture.magFilter === LinearMipmapNearestFilter || texture.magFilter === NearestMipmapLinearFilter || texture.magFilter === LinearMipmapLinearFilter ||\n\t\t\ttexture.minFilter === LinearFilter || texture.minFilter === LinearMipmapNearestFilter || texture.minFilter === NearestMipmapLinearFilter || texture.minFilter === LinearMipmapLinearFilter ) ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.' );\n\n\t\t}\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );\n\n\t\t\tif ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, _gl.CLAMP_TO_EDGE );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( texture.compareFunction ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ] );\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( texture.magFilter === NearestFilter ) return;\n\t\t\tif ( texture.minFilter !== NearestMipmapLinearFilter && texture.minFilter !== LinearMipmapLinearFilter ) return;\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension for WebGL 1 and WebGL 2\n\t\t\tif ( isWebGL2 === false && ( texture.type === HalfFloatType && extensions.has( 'OES_texture_half_float_linear' ) === false ) ) return; // verify extension for WebGL 1 only\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tlet forceUpload = false;\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t}\n\n\t\t// create Source <-> WebGLTextures mapping if necessary\n\n\t\tconst source = texture.source;\n\t\tlet webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures === undefined ) {\n\n\t\t\twebglTextures = {};\n\t\t\t_sources.set( source, webglTextures );\n\n\t\t}\n\n\t\t// check if there is already a WebGLTexture object for the given texture parameters\n\n\t\tconst textureCacheKey = getTextureCacheKey( texture );\n\n\t\tif ( textureCacheKey !== textureProperties.__cacheKey ) {\n\n\t\t\t// if not, create a new instance of WebGLTexture\n\n\t\t\tif ( webglTextures[ textureCacheKey ] === undefined ) {\n\n\t\t\t\t// create new entry\n\n\t\t\t\twebglTextures[ textureCacheKey ] = {\n\t\t\t\t\ttexture: _gl.createTexture(),\n\t\t\t\t\tusedTimes: 0\n\t\t\t\t};\n\n\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t// when a new instance of WebGLTexture was created, a texture upload is required\n\t\t\t\t// even if the image contents are identical\n\n\t\t\t\tforceUpload = true;\n\n\t\t\t}\n\n\t\t\twebglTextures[ textureCacheKey ].usedTimes ++;\n\n\t\t\t// every time the texture cache key changes, it's necessary to check if an instance of\n\t\t\t// WebGLTexture can be deleted in order to avoid a memory leak.\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\n\t\t\tif ( webglTexture !== undefined ) {\n\n\t\t\t\twebglTextures[ textureProperties.__cacheKey ].usedTimes --;\n\n\t\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\t\tdeleteTexture( texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// store references to cache key and WebGLTexture object\n\n\t\t\ttextureProperties.__cacheKey = textureCacheKey;\n\t\t\ttextureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture;\n\n\t\t}\n\n\t\treturn forceUpload;\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = _gl.TEXTURE_2D;\n\n\t\tif ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) textureType = _gl.TEXTURE_2D_ARRAY;\n\t\tif ( texture.isData3DTexture ) textureType = _gl.TEXTURE_3D;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo$1( texture.image ) === false;\n\t\t\tlet image = resizeImage( texture.image, needsPowerOfTwo, false, capabilities.maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst supportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.colorSpace );\n\n\t\t\tlet glType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture );\n\n\t\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true && glInternalFormat !== RGB_ETC1_Format );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst dataReady = source.dataReady;\n\t\t\tconst levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\t// populate depth texture with dummy data\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT;\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH24_STENCIL8;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT16; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// validation checks for WebGL 1\n\n\t\t\t\tif ( texture.format === DepthFormat && glInternalFormat === _gl.DEPTH_COMPONENT ) {\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedIntType;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === _gl.DEPTH_COMPONENT ) {\n\n\t\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tglInternalFormat = _gl.DEPTH_STENCIL;\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\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\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tif ( texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\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\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\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\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataArrayTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_3D, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_3D, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isFramebufferTexture ) {\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlet width = image.width, height = image.height;\n\n\t\t\t\t\t\tfor ( let i = 0; i < levels; i ++ ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t\t\t\t\twidth >>= 1;\n\t\t\t\t\t\t\theight >>= 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, glFormat, glType, mipmap );\n\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\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tconst isCompressed = ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, capabilities.maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] );\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.colorSpace ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst dataReady = source.dataReady;\n\t\t\tlet levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\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\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t// TODO: Uniformly handle mipmap definitions\n\t\t\t\t\t// Normal textures and compressed cube textures define base level + mips with their mipmap array\n\t\t\t\t\t// Uncompressed cube textures use their mipmap array only for mips (no base level)\n\n\t\t\t\t\tif ( mipmaps.length > 0 ) levels ++;\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, cubeImage[ 0 ].width, cubeImage[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );\n\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\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\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\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget, level ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tconst width = Math.max( 1, renderTarget.width >> level );\n\t\t\tconst height = Math.max( 1, renderTarget.height >> level );\n\n\t\t\tif ( textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, level, glInternalFormat, width, height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, level, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else if ( textureTarget === _gl.TEXTURE_2D || ( textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, level );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = ( isWebGL2 === true ) ? _gl.DEPTH_COMPONENT24 : _gl.DEPTH_COMPONENT16;\n\n\t\t\tif ( isMultisample || useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tconst texture = textures[ i ];\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, 0 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets !== true ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = [];\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ][ level ] = _gl.createFramebuffer();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ level ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tif ( capabilities.drawBuffers ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tconst textures = isMultipleRenderTargets ? texture : [ texture ];\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = [];\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tconst texture = textures[ i ];\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer[ i ] = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, renderTarget.isXRRenderTarget === true );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ][ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, level );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tconst textures = renderTarget.texture;\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_2D, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_2D, attachment, supportsMips );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, 0 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {\n\n\t\t\t\t\tgenerateMipmap( _gl.TEXTURE_2D );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = _gl.TEXTURE_2D;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture, supportsMips );\n\n\t\t\tif ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, level );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, 0 );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets ? renderTarget.texture : [ renderTarget.texture ];\n\t\t\tconst width = renderTarget.width;\n\t\t\tconst height = renderTarget.height;\n\t\t\tlet mask = _gl.COLOR_BUFFER_BIT;\n\t\t\tconst invalidationArray = [];\n\t\t\tconst depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\n\t\t\t// If MRT we need to remove FBO attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, null );\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, null, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tinvalidationArray.push( _gl.COLOR_ATTACHMENT0 + i );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\tinvalidationArray.push( depthStyle );\n\n\t\t\t\t}\n\n\t\t\t\tconst ignoreDepthValues = ( renderTargetProperties.__ignoreDepthValues !== undefined ) ? renderTargetProperties.__ignoreDepthValues : false;\n\n\t\t\t\tif ( ignoreDepthValues === false ) {\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) mask |= _gl.DEPTH_BUFFER_BIT;\n\t\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ignoreDepthValues === true ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, [ depthStyle ] );\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, [ depthStyle ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST );\n\n\t\t\t\tif ( supportsInvalidateFramebuffer ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, invalidationArray );\n\n\t\t\t\t}\n\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );\n\n\t\t\t// If MRT since pre-blit we removed the FBO we need to reconstruct the attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( capabilities.maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn isWebGL2 && renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tfunction verifyColorSpace( texture, image ) {\n\n\t\tconst colorSpace = texture.colorSpace;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.isVideoTexture === true || texture.format === _SRGBAFormat ) return image;\n\n\t\tif ( colorSpace !== LinearSRGBColorSpace && colorSpace !== NoColorSpace ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( ColorManagement.getTransfer( colorSpace ) === SRGBTransfer ) {\n\n\t\t\t\tif ( isWebGL2 === false ) {\n\n\t\t\t\t\t// in WebGL 1, try to use EXT_sRGB extension and unsized formats\n\n\t\t\t\t\tif ( extensions.has( 'EXT_sRGB' ) === true && format === RGBAFormat ) {\n\n\t\t\t\t\t\ttexture.format = _SRGBAFormat;\n\n\t\t\t\t\t\t// it's not possible to generate mips in WebGL 1 with this extension\n\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// slow fallback (CPU decode)\n\n\t\t\t\t\t\timage = ImageUtils.sRGBToLinear( image );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format\n\n\t\t\t\t\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture color space:', colorSpace );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\tthis.useMultisampledRTT = useMultisampledRTT;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p, colorSpace = NoColorSpace ) {\n\n\t\tlet extension;\n\n\t\tconst transfer = ColorManagement.getTransfer( colorSpace );\n\n\t\tif ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1;\n\n\t\tif ( p === ByteType ) return gl.BYTE;\n\t\tif ( p === ShortType ) return gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return gl.INT;\n\t\tif ( p === UnsignedIntType ) return gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return gl.FLOAT;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return gl.HALF_FLOAT;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return gl.ALPHA;\n\t\tif ( p === RGBAFormat ) return gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;\n\n\t\t// WebGL 1 sRGB fallback\n\n\t\tif ( p === _SRGBAFormat ) {\n\n\t\t\textension = extensions.get( 'EXT_sRGB' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.SRGB_ALPHA_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedFormat ) return gl.RED;\n\t\tif ( p === RedIntegerFormat ) return gl.RED_INTEGER;\n\t\tif ( p === RGFormat ) return gl.RG;\n\t\tif ( p === RGIntegerFormat ) return gl.RG_INTEGER;\n\t\tif ( p === RGBAIntegerFormat ) return gl.RGBA_INTEGER;\n\n\t\t// S3TC\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\tif ( transfer === SRGBTransfer ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// PVRTC\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC1\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC2\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ASTC\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_ASTC_4x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// BPTC\n\n\t\tif ( p === RGBA_BPTC_Format || p === RGB_BPTC_SIGNED_Format || p === RGB_BPTC_UNSIGNED_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\t\t\t\tif ( p === RGB_BPTC_SIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;\n\t\t\t\tif ( p === RGB_BPTC_UNSIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// RGTC\n\n\t\tif ( p === RED_RGTC1_Format || p === SIGNED_RED_RGTC1_Format || p === RED_GREEN_RGTC2_Format || p === SIGNED_RED_GREEN_RGTC2_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_rgtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return extension.COMPRESSED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === SIGNED_RED_RGTC1_Format ) return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_RED_GREEN_RGTC2_EXT;\n\t\t\t\tif ( p === SIGNED_RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return gl.UNSIGNED_INT_24_8;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// if \"p\" can't be resolved, assume the user defines a WebGL constant as a string (fallback/workaround for packed RGB formats)\n\n\t\treturn ( gl[ p ] !== undefined ) ? gl[ p ] : null;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isArrayCamera = true;\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isGroup = true;\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tconnect( inputSource ) {\n\n\t\tif ( inputSource && inputSource.hand ) {\n\n\t\t\tconst hand = this._hand;\n\n\t\t\tif ( hand ) {\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Initialize hand with joints when connected\n\t\t\t\t\tthis._getHandJoint( hand, inputjoint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tconst joint = this._getHandJoint( hand, inputjoint );\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.matrixWorldNeedsUpdate = true;\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\t\t\t\t\t\tgrip.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t// Some runtimes (namely Vive Cosmos with Vive OpenXR Runtime) have only grip space and ray space is equal to it\n\t\t\t\tif ( inputPose === null && gripPose !== null ) {\n\n\t\t\t\t\tinputPose = gripPose;\n\n\t\t\t\t}\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\t\t\t\t\ttargetRay.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// private method\n\n\t_getHandJoint( hand, inputjoint ) {\n\n\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\tconst joint = new Group();\n\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\tjoint.visible = false;\n\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\n\t\t\thand.add( joint );\n\n\t\t}\n\n\t\treturn hand.joints[ inputjoint.jointName ];\n\n\t}\n\n}\n\nconst _occlusion_vertex = `\nvoid main() {\n\n\tgl_Position = vec4( position, 1.0 );\n\n}`;\n\nconst _occlusion_fragment = `\nuniform sampler2DArray depthColor;\nuniform float depthWidth;\nuniform float depthHeight;\n\nvoid main() {\n\n\tvec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight );\n\n\tif ( coord.x >= 1.0 ) {\n\n\t\tgl_FragDepthEXT = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r;\n\n\t} else {\n\n\t\tgl_FragDepthEXT = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r;\n\n\t}\n\n}`;\n\nclass WebXRDepthSensing {\n\n\tconstructor() {\n\n\t\tthis.texture = null;\n\t\tthis.mesh = null;\n\n\t\tthis.depthNear = 0;\n\t\tthis.depthFar = 0;\n\n\t}\n\n\tinit( renderer, depthData, renderState ) {\n\n\t\tif ( this.texture === null ) {\n\n\t\t\tconst texture = new Texture();\n\n\t\t\tconst texProps = renderer.properties.get( texture );\n\t\t\ttexProps.__webglTexture = depthData.texture;\n\n\t\t\tif ( ( depthData.depthNear != renderState.depthNear ) || ( depthData.depthFar != renderState.depthFar ) ) {\n\n\t\t\t\tthis.depthNear = depthData.depthNear;\n\t\t\t\tthis.depthFar = depthData.depthFar;\n\n\t\t\t}\n\n\t\t\tthis.texture = texture;\n\n\t\t}\n\n\t}\n\n\trender( renderer, cameraXR ) {\n\n\t\tif ( this.texture !== null ) {\n\n\t\t\tif ( this.mesh === null ) {\n\n\t\t\t\tconst viewport = cameraXR.cameras[ 0 ].viewport;\n\t\t\t\tconst material = new ShaderMaterial( {\n\t\t\t\t\textensions: { fragDepth: true },\n\t\t\t\t\tvertexShader: _occlusion_vertex,\n\t\t\t\t\tfragmentShader: _occlusion_fragment,\n\t\t\t\t\tuniforms: {\n\t\t\t\t\t\tdepthColor: { value: this.texture },\n\t\t\t\t\t\tdepthWidth: { value: viewport.z },\n\t\t\t\t\t\tdepthHeight: { value: viewport.w }\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tthis.mesh = new Mesh( new PlaneGeometry( 20, 20 ), material );\n\n\t\t\t}\n\n\t\t\trenderer.render( this.mesh, cameraXR );\n\n\t\t}\n\n\t}\n\n\treset() {\n\n\t\tthis.texture = null;\n\t\tthis.mesh = null;\n\n\t}\n\n}\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\t// Set default foveation to maximum.\n\t\tlet foveation = 1.0;\n\t\tlet customReferenceSpace = null;\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet xrFrame = null;\n\n\t\tconst depthSensing = new WebXRDepthSensing();\n\t\tconst attributes = gl.getContextAttributes();\n\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst controllerInputSources = [];\n\n\t\tconst currentSize = new Vector2();\n\t\tlet currentPixelRatio = null;\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraXR = new ArrayCamera();\n\t\tcameraXR.layers.enable( 1 );\n\t\tcameraXR.layers.enable( 2 );\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controllerIndex = controllerInputSources.indexOf( event.inputSource );\n\n\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\tcontroller.update( event.inputSource, event.frame, customReferenceSpace || referenceSpace );\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tsession.removeEventListener( 'select', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'end', onSessionEnd );\n\t\t\tsession.removeEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\n\t\t\t\tif ( inputSource === null ) continue;\n\n\t\t\t\tcontrollerInputSources[ i ] = null;\n\n\t\t\t\tcontrollers[ i ].disconnect( inputSource );\n\n\t\t\t}\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\tdepthSensing.reset();\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\trenderer.setPixelRatio( currentPixelRatio );\n\t\t\trenderer.setSize( currentSize.width, currentSize.height, false );\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn customReferenceSpace || referenceSpace;\n\n\t\t};\n\n\t\tthis.setReferenceSpace = function ( space ) {\n\n\t\t\tcustomReferenceSpace = space;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tcurrentPixelRatio = renderer.getPixelRatio();\n\t\t\t\trenderer.getSize( currentSize );\n\n\t\t\t\tif ( ( session.renderState.layers === undefined ) || ( renderer.capabilities.isWebGL2 === false ) ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: ( session.renderState.layers === undefined ) ? attributes.antialias : true,\n\t\t\t\t\t\talpha: true,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: gl.RGBA8,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glProjLayer.textureWidth, glProjLayer.textureHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0\n\t\t\t\t\t\t} );\n\n\t\t\t\t\tconst renderTargetProperties = renderer.properties.get( newRenderTarget );\n\t\t\t\t\trenderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues;\n\n\t\t\t\t}\n\n\t\t\t\tnewRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278\n\n\t\t\t\tthis.setFoveation( foveation );\n\n\t\t\t\tcustomReferenceSpace = null;\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getEnvironmentBlendMode = function () {\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\treturn session.environmentBlendMode;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst index = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( index >= 0 ) {\n\n\t\t\t\t\tcontrollerInputSources[ index ] = null;\n\t\t\t\t\tcontrollers[ index ].disconnect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\n\t\t\t\tlet controllerIndex = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\t\t// Assign input source a controller that currently has no input source\n\n\t\t\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\t\t\tif ( i >= controllerInputSources.length ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources.push( inputSource );\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t} else if ( controllerInputSources[ i ] === null ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources[ i ] = inputSource;\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// If all controllers do currently receive input we ignore new ones\n\n\t\t\t\t\tif ( controllerIndex === - 1 ) break;\n\n\t\t\t\t}\n\n\t\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.connect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tif ( depthSensing.texture !== null ) {\n\n\t\t\t\tcamera.near = depthSensing.depthNear;\n\t\t\t\tcamera.far = depthSensing.depthFar;\n\n\t\t\t}\n\n\t\t\tcameraXR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraXR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraXR.near,\n\t\t\t\t\tdepthFar: cameraXR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraXR.near;\n\t\t\t\t_currentDepthFar = cameraXR.far;\n\n\t\t\t\tcameraL.near = _currentDepthNear;\n\t\t\t\tcameraL.far = _currentDepthFar;\n\t\t\t\tcameraR.near = _currentDepthNear;\n\t\t\t\tcameraR.far = _currentDepthFar;\n\n\t\t\t\tcameraL.updateProjectionMatrix();\n\t\t\t\tcameraR.updateProjectionMatrix();\n\t\t\t\tcamera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraXR.cameras;\n\n\t\t\tupdateCamera( cameraXR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraXR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraXR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t\t// update user camera and its children\n\n\t\t\tupdateUserCamera( camera, cameraXR, parent );\n\n\t\t};\n\n\t\tfunction updateUserCamera( camera, cameraXR, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrix.copy( cameraXR.matrixWorld );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrix.copy( parent.matrixWorld );\n\t\t\t\tcamera.matrix.invert();\n\t\t\t\tcamera.matrix.multiply( cameraXR.matrixWorld );\n\n\t\t\t}\n\n\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.updateMatrixWorld( true );\n\n\t\t\tcamera.projectionMatrix.copy( cameraXR.projectionMatrix );\n\t\t\tcamera.projectionMatrixInverse.copy( cameraXR.projectionMatrixInverse );\n\n\t\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\t\tcamera.fov = RAD2DEG * 2 * Math.atan( 1 / camera.projectionMatrix.elements[ 5 ] );\n\t\t\t\tcamera.zoom = 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraXR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer === null && glBaseLayer === null ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn foveation;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( value ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tfoveation = value;\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.hasDepthSensing = function () {\n\n\t\t\treturn depthSensing.texture !== null;\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( customReferenceSpace || referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraXRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraXR's camera list\n\n\t\t\t\tif ( views.length !== cameraXR.cameras.length ) {\n\n\t\t\t\t\tcameraXR.cameras.length = 0;\n\t\t\t\t\tcameraXRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet camera = cameras[ i ];\n\n\t\t\t\t\tif ( camera === undefined ) {\n\n\t\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\t\tcamera.layers.enable( i );\n\t\t\t\t\t\tcamera.viewport = new Vector4();\n\t\t\t\t\t\tcameras[ i ] = camera;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraXR.matrix.copy( camera.matrix );\n\t\t\t\t\t\tcameraXR.matrix.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraXRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraXR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tconst enabledFeatures = session.enabledFeatures;\n\n\t\t\t\tif ( enabledFeatures && enabledFeatures.includes( 'depth-sensing' ) ) {\n\n\t\t\t\t\tconst depthData = glBinding.getDepthInformation( views[ 0 ] );\n\n\t\t\t\t\tif ( depthData && depthData.isValid && depthData.texture ) {\n\n\t\t\t\t\t\tdepthSensing.init( renderer, depthData, session.renderState );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\t\t\t\tconst controller = controllers[ i ];\n\n\t\t\t\tif ( inputSource !== null && controller !== undefined ) {\n\n\t\t\t\t\tcontroller.update( inputSource, frame, customReferenceSpace || referenceSpace );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdepthSensing.render( renderer, cameraXR );\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\tif ( frame.detectedPlanes ) {\n\n\t\t\t\tscope.dispatchEvent( { type: 'planesdetected', data: frame } );\n\n\t\t\t}\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\n}\n\nfunction WebGLMaterials( renderer, properties ) {\n\n\tfunction refreshTransformUniform( map, uniform ) {\n\n\t\tif ( map.matrixAutoUpdate === true ) {\n\n\t\t\tmap.updateMatrix();\n\n\t\t}\n\n\t\tuniform.value.copy( map.matrix );\n\n\t}\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tfog.color.getRGB( uniforms.fogColor.value, getUnlitUniformColorSpace( renderer ) );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\n\t\t\trefreshTransformUniform( material.bumpMap, uniforms.bumpMapTransform );\n\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.bumpScale.value *= - 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\n\t\t\trefreshTransformUniform( material.normalMap, uniforms.normalMapTransform );\n\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.normalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\n\t\t\trefreshTransformUniform( material.displacementMap, uniforms.displacementMapTransform );\n\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t\trefreshTransformUniform( material.emissiveMap, uniforms.emissiveMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t\trefreshTransformUniform( material.specularMap, uniforms.specularMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\n\t\t\t// artist-friendly light intensity scaling factor\n\t\t\tconst scaleFactor = ( renderer._useLegacyLights === true ) ? Math.PI : 1;\n\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;\n\n\t\t\trefreshTransformUniform( material.lightMap, uniforms.lightMapTransform );\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t\trefreshTransformUniform( material.aoMap, uniforms.aoMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.uvTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t\trefreshTransformUniform( material.metalnessMap, uniforms.metalnessMapTransform );\n\n\t\t}\n\n\t\tuniforms.roughness.value = material.roughness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t\trefreshTransformUniform( material.roughnessMap, uniforms.roughnessMapTransform );\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) {\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenColorMap, uniforms.sheenColorMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenRoughnessMap, uniforms.sheenRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatMap, uniforms.clearcoatMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatRoughnessMap, uniforms.clearcoatRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatNormalMap, uniforms.clearcoatNormalMapTransform );\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.iridescence > 0 ) {\n\n\t\t\tuniforms.iridescence.value = material.iridescence;\n\t\t\tuniforms.iridescenceIOR.value = material.iridescenceIOR;\n\t\t\tuniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[ 0 ];\n\t\t\tuniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[ 1 ];\n\n\t\t\tif ( material.iridescenceMap ) {\n\n\t\t\t\tuniforms.iridescenceMap.value = material.iridescenceMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceMap, uniforms.iridescenceMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.iridescenceThicknessMap ) {\n\n\t\t\t\tuniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceThicknessMap, uniforms.iridescenceThicknessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t\trefreshTransformUniform( material.transmissionMap, uniforms.transmissionMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.thicknessMap, uniforms.thicknessMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tif ( material.anisotropy > 0 ) {\n\n\t\t\tuniforms.anisotropyVector.value.set( material.anisotropy * Math.cos( material.anisotropyRotation ), material.anisotropy * Math.sin( material.anisotropyRotation ) );\n\n\t\t\tif ( material.anisotropyMap ) {\n\n\t\t\t\tuniforms.anisotropyMap.value = material.anisotropyMap;\n\n\t\t\t\trefreshTransformUniform( material.anisotropyMap, uniforms.anisotropyMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t\trefreshTransformUniform( material.specularColorMap, uniforms.specularColorMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t\trefreshTransformUniform( material.specularIntensityMap, uniforms.specularIntensityMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tconst light = properties.get( material ).light;\n\n\t\tuniforms.referencePosition.value.setFromMatrixPosition( light.matrixWorld );\n\t\tuniforms.nearDistance.value = light.shadow.camera.near;\n\t\tuniforms.farDistance.value = light.shadow.camera.far;\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLUniformsGroups( gl, info, capabilities, state ) {\n\n\tlet buffers = {};\n\tlet updateList = {};\n\tlet allocatedBindingPoints = [];\n\n\tconst maxBindingPoints = ( capabilities.isWebGL2 ) ? gl.getParameter( gl.MAX_UNIFORM_BUFFER_BINDINGS ) : 0; // binding points are global whereas block indices are per shader program\n\n\tfunction bind( uniformsGroup, program ) {\n\n\t\tconst webglProgram = program.program;\n\t\tstate.uniformBlockBinding( uniformsGroup, webglProgram );\n\n\t}\n\n\tfunction update( uniformsGroup, program ) {\n\n\t\tlet buffer = buffers[ uniformsGroup.id ];\n\n\t\tif ( buffer === undefined ) {\n\n\t\t\tprepareUniformsGroup( uniformsGroup );\n\n\t\t\tbuffer = createBuffer( uniformsGroup );\n\t\t\tbuffers[ uniformsGroup.id ] = buffer;\n\n\t\t\tuniformsGroup.addEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\t}\n\n\t\t// ensure to update the binding points/block indices mapping for this program\n\n\t\tconst webglProgram = program.program;\n\t\tstate.updateUBOMapping( uniformsGroup, webglProgram );\n\n\t\t// update UBO once per frame\n\n\t\tconst frame = info.render.frame;\n\n\t\tif ( updateList[ uniformsGroup.id ] !== frame ) {\n\n\t\t\tupdateBufferData( uniformsGroup );\n\n\t\t\tupdateList[ uniformsGroup.id ] = frame;\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( uniformsGroup ) {\n\n\t\t// the setup of an UBO is independent of a particular shader program but global\n\n\t\tconst bindingPointIndex = allocateBindingPointIndex();\n\t\tuniformsGroup.__bindingPointIndex = bindingPointIndex;\n\n\t\tconst buffer = gl.createBuffer();\n\t\tconst size = uniformsGroup.__size;\n\t\tconst usage = uniformsGroup.usage;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\t\tgl.bufferData( gl.UNIFORM_BUFFER, size, usage );\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\t\tgl.bindBufferBase( gl.UNIFORM_BUFFER, bindingPointIndex, buffer );\n\n\t\treturn buffer;\n\n\t}\n\n\tfunction allocateBindingPointIndex() {\n\n\t\tfor ( let i = 0; i < maxBindingPoints; i ++ ) {\n\n\t\t\tif ( allocatedBindingPoints.indexOf( i ) === - 1 ) {\n\n\t\t\t\tallocatedBindingPoints.push( i );\n\t\t\t\treturn i;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconsole.error( 'THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' );\n\n\t\treturn 0;\n\n\t}\n\n\tfunction updateBufferData( uniformsGroup ) {\n\n\t\tconst buffer = buffers[ uniformsGroup.id ];\n\t\tconst uniforms = uniformsGroup.uniforms;\n\t\tconst cache = uniformsGroup.__cache;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\n\t\tfor ( let i = 0, il = uniforms.length; i < il; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tif ( hasUniformChanged( uniform, i, j, cache ) === true ) {\n\n\t\t\t\t\tconst offset = uniform.__offset;\n\n\t\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\t\tlet arrayOffset = 0;\n\n\t\t\t\t\tfor ( let k = 0; k < values.length; k ++ ) {\n\n\t\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\t\t// TODO add integer and struct support\n\t\t\t\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value;\n\t\t\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data );\n\n\t\t\t\t\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t\t\t\t\t// manually converting 3x3 to 3x4\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value.elements[ 0 ];\n\t\t\t\t\t\t\tuniform.__data[ 1 ] = value.elements[ 1 ];\n\t\t\t\t\t\t\tuniform.__data[ 2 ] = value.elements[ 2 ];\n\t\t\t\t\t\t\tuniform.__data[ 3 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 4 ] = value.elements[ 3 ];\n\t\t\t\t\t\t\tuniform.__data[ 5 ] = value.elements[ 4 ];\n\t\t\t\t\t\t\tuniform.__data[ 6 ] = value.elements[ 5 ];\n\t\t\t\t\t\t\tuniform.__data[ 7 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 8 ] = value.elements[ 6 ];\n\t\t\t\t\t\t\tuniform.__data[ 9 ] = value.elements[ 7 ];\n\t\t\t\t\t\t\tuniform.__data[ 10 ] = value.elements[ 8 ];\n\t\t\t\t\t\t\tuniform.__data[ 11 ] = 0;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvalue.toArray( uniform.__data, arrayOffset );\n\n\t\t\t\t\t\t\tarrayOffset += info.storage / Float32Array.BYTES_PER_ELEMENT;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset, uniform.__data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\n\t}\n\n\tfunction hasUniformChanged( uniform, index, indexArray, cache ) {\n\n\t\tconst value = uniform.value;\n\t\tconst indexString = index + '_' + indexArray;\n\n\t\tif ( cache[ indexString ] === undefined ) {\n\n\t\t\t// cache entry does not exist so far\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tcache[ indexString ] = value;\n\n\t\t\t} else {\n\n\t\t\t\tcache[ indexString ] = value.clone();\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t} else {\n\n\t\t\tconst cachedObject = cache[ indexString ];\n\n\t\t\t// compare current value with cached entry\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tif ( cachedObject !== value ) {\n\n\t\t\t\t\tcache[ indexString ] = value;\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( cachedObject.equals( value ) === false ) {\n\n\t\t\t\t\tcachedObject.copy( value );\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction prepareUniformsGroup( uniformsGroup ) {\n\n\t\t// determine total buffer size according to the STD140 layout\n\t\t// Hint: STD140 is the only supported layout in WebGL 2\n\n\t\tconst uniforms = uniformsGroup.uniforms;\n\n\t\tlet offset = 0; // global buffer offset in bytes\n\t\tconst chunkSize = 16; // size of a chunk in bytes\n\n\t\tfor ( let i = 0, l = uniforms.length; i < l; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\tfor ( let k = 0, kl = values.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\t// Calculate the chunk offset\n\t\t\t\t\tconst chunkOffsetUniform = offset % chunkSize;\n\n\t\t\t\t\t// Check for chunk overflow\n\t\t\t\t\tif ( chunkOffsetUniform !== 0 && ( chunkSize - chunkOffsetUniform ) < info.boundary ) {\n\n\t\t\t\t\t\t// Add padding and adjust offset\n\t\t\t\t\t\toffset += ( chunkSize - chunkOffsetUniform );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following two properties will be used for partial buffer updates\n\n\t\t\t\t\tuniform.__data = new Float32Array( info.storage / Float32Array.BYTES_PER_ELEMENT );\n\t\t\t\t\tuniform.__offset = offset;\n\n\n\t\t\t\t\t// Update the global offset\n\t\t\t\t\toffset += info.storage;\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ensure correct final padding\n\n\t\tconst chunkOffset = offset % chunkSize;\n\n\t\tif ( chunkOffset > 0 ) offset += ( chunkSize - chunkOffset );\n\n\t\t//\n\n\t\tuniformsGroup.__size = offset;\n\t\tuniformsGroup.__cache = {};\n\n\t\treturn this;\n\n\t}\n\n\tfunction getUniformSize( value ) {\n\n\t\tconst info = {\n\t\t\tboundary: 0, // bytes\n\t\t\tstorage: 0 // bytes\n\t\t};\n\n\t\t// determine sizes according to STD140\n\n\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t// float/int/bool\n\n\t\t\tinfo.boundary = 4;\n\t\t\tinfo.storage = 4;\n\n\t\t} else if ( value.isVector2 ) {\n\n\t\t\t// vec2\n\n\t\t\tinfo.boundary = 8;\n\t\t\tinfo.storage = 8;\n\n\t\t} else if ( value.isVector3 || value.isColor ) {\n\n\t\t\t// vec3\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 12; // evil: vec3 must start on a 16-byte boundary but it only consumes 12 bytes\n\n\t\t} else if ( value.isVector4 ) {\n\n\t\t\t// vec4\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 16;\n\n\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t// mat3 (in STD140 a 3x3 matrix is represented as 3x4)\n\n\t\t\tinfo.boundary = 48;\n\t\t\tinfo.storage = 48;\n\n\t\t} else if ( value.isMatrix4 ) {\n\n\t\t\t// mat4\n\n\t\t\tinfo.boundary = 64;\n\t\t\tinfo.storage = 64;\n\n\t\t} else if ( value.isTexture ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.' );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unsupported uniform value type.', value );\n\n\t\t}\n\n\t\treturn info;\n\n\t}\n\n\tfunction onUniformsGroupsDispose( event ) {\n\n\t\tconst uniformsGroup = event.target;\n\n\t\tuniformsGroup.removeEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\tconst index = allocatedBindingPoints.indexOf( uniformsGroup.__bindingPointIndex );\n\t\tallocatedBindingPoints.splice( index, 1 );\n\n\t\tgl.deleteBuffer( buffers[ uniformsGroup.id ] );\n\n\t\tdelete buffers[ uniformsGroup.id ];\n\t\tdelete updateList[ uniformsGroup.id ];\n\n\t}\n\n\tfunction dispose() {\n\n\t\tfor ( const id in buffers ) {\n\n\t\t\tgl.deleteBuffer( buffers[ id ] );\n\n\t\t}\n\n\t\tallocatedBindingPoints = [];\n\t\tbuffers = {};\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tbind: bind,\n\t\tupdate: update,\n\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass WebGLRenderer {\n\n\tconstructor( parameters = {} ) {\n\n\t\tconst {\n\t\t\tcanvas = createCanvasElement(),\n\t\t\tcontext = null,\n\t\t\tdepth = true,\n\t\t\tstencil = true,\n\t\t\talpha = false,\n\t\t\tantialias = false,\n\t\t\tpremultipliedAlpha = true,\n\t\t\tpreserveDrawingBuffer = false,\n\t\t\tpowerPreference = 'default',\n\t\t\tfailIfMajorPerformanceCaveat = false,\n\t\t} = parameters;\n\n\t\tthis.isWebGLRenderer = true;\n\n\t\tlet _alpha;\n\n\t\tif ( context !== null ) {\n\n\t\t\t_alpha = context.getContextAttributes().alpha;\n\n\t\t} else {\n\n\t\t\t_alpha = alpha;\n\n\t\t}\n\n\t\tconst uintClearColor = new Uint32Array( 4 );\n\t\tconst intClearColor = new Int32Array( 4 );\n\n\t\tlet currentRenderList = null;\n\t\tlet currentRenderState = null;\n\n\t\t// render() can be called from within a callback triggered by another render.\n\t\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\t\tconst renderListStack = [];\n\t\tconst renderStateStack = [];\n\n\t\t// public properties\n\n\t\tthis.domElement = canvas;\n\n\t\t// Debug configuration container\n\t\tthis.debug = {\n\n\t\t\t/**\n\t\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tcheckShaderErrors: true,\n\t\t\t/**\n\t\t\t * Callback for custom error reporting.\n\t\t\t * @type {?Function}\n\t\t\t */\n\t\t\tonShaderError: null\n\t\t};\n\n\t\t// clearing\n\n\t\tthis.autoClear = true;\n\t\tthis.autoClearColor = true;\n\t\tthis.autoClearDepth = true;\n\t\tthis.autoClearStencil = true;\n\n\t\t// scene graph\n\n\t\tthis.sortObjects = true;\n\n\t\t// user-defined clipping\n\n\t\tthis.clippingPlanes = [];\n\t\tthis.localClippingEnabled = false;\n\n\t\t// physically based shading\n\n\t\tthis._outputColorSpace = SRGBColorSpace;\n\n\t\t// physical lights\n\n\t\tthis._useLegacyLights = false;\n\n\t\t// tone mapping\n\n\t\tthis.toneMapping = NoToneMapping;\n\t\tthis.toneMappingExposure = 1.0;\n\n\t\t// internal properties\n\n\t\tconst _this = this;\n\n\t\tlet _isContextLost = false;\n\n\t\t// internal state cache\n\n\t\tlet _currentActiveCubeFace = 0;\n\t\tlet _currentActiveMipmapLevel = 0;\n\t\tlet _currentRenderTarget = null;\n\t\tlet _currentMaterialId = - 1;\n\n\t\tlet _currentCamera = null;\n\n\t\tconst _currentViewport = new Vector4();\n\t\tconst _currentScissor = new Vector4();\n\t\tlet _currentScissorTest = null;\n\n\t\tconst _currentClearColor = new Color( 0x000000 );\n\t\tlet _currentClearAlpha = 0;\n\n\t\t//\n\n\t\tlet _width = canvas.width;\n\t\tlet _height = canvas.height;\n\n\t\tlet _pixelRatio = 1;\n\t\tlet _opaqueSort = null;\n\t\tlet _transparentSort = null;\n\n\t\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\t\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\t\tlet _scissorTest = false;\n\n\t\t// frustum\n\n\t\tconst _frustum = new Frustum();\n\n\t\t// clipping\n\n\t\tlet _clippingEnabled = false;\n\t\tlet _localClippingEnabled = false;\n\n\t\t// transmission\n\n\t\tlet _transmissionRenderTarget = null;\n\n\t\t// camera matrices cache\n\n\t\tconst _projScreenMatrix = new Matrix4();\n\n\t\tconst _vector2 = new Vector2();\n\t\tconst _vector3 = new Vector3();\n\n\t\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\t\tfunction getTargetPixelRatio() {\n\n\t\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t\t}\n\n\t\t// initialize\n\n\t\tlet _gl = context;\n\n\t\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\t\tconst contextName = contextNames[ i ];\n\t\t\t\tconst context = canvas.getContext( contextName, contextAttributes );\n\t\t\t\tif ( context !== null ) return context;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttry {\n\n\t\t\tconst contextAttributes = {\n\t\t\t\talpha: true,\n\t\t\t\tdepth,\n\t\t\t\tstencil,\n\t\t\t\tantialias,\n\t\t\t\tpremultipliedAlpha,\n\t\t\t\tpreserveDrawingBuffer,\n\t\t\t\tpowerPreference,\n\t\t\t\tfailIfMajorPerformanceCaveat,\n\t\t\t};\n\n\t\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\t\tif ( 'setAttribute' in canvas ) canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t\tcanvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\t\tcontextNames.shift();\n\n\t\t\t\t}\n\n\t\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\t\tif ( _gl === null ) {\n\n\t\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( typeof WebGLRenderingContext !== 'undefined' && _gl instanceof WebGLRenderingContext ) { // @deprecated, r153\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163.' );\n\n\t\t\t}\n\n\t\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\t\tthrow error;\n\n\t\t}\n\n\t\tlet extensions, capabilities, state, info;\n\t\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\t\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\t\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\t\tlet utils, bindingStates, uniformsGroups;\n\n\t\tfunction initGLContext() {\n\n\t\t\textensions = new WebGLExtensions( _gl );\n\n\t\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\t\textensions.init( capabilities );\n\n\t\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\n\t\t\tinfo = new WebGLInfo( _gl );\n\t\t\tproperties = new WebGLProperties();\n\t\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\t\tclipping = new WebGLClipping( properties );\n\t\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\t\tmaterials = new WebGLMaterials( _this, properties );\n\t\t\trenderLists = new WebGLRenderLists();\n\t\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\t\tbackground = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha );\n\t\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\t\t\tuniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );\n\n\t\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\t\tinfo.programs = programCache.programs;\n\n\t\t\t_this.capabilities = capabilities;\n\t\t\t_this.extensions = extensions;\n\t\t\t_this.properties = properties;\n\t\t\t_this.renderLists = renderLists;\n\t\t\t_this.shadowMap = shadowMap;\n\t\t\t_this.state = state;\n\t\t\t_this.info = info;\n\n\t\t}\n\n\t\tinitGLContext();\n\n\t\t// xr\n\n\t\tconst xr = new WebXRManager( _this, _gl );\n\n\t\tthis.xr = xr;\n\n\t\t// API\n\n\t\tthis.getContext = function () {\n\n\t\t\treturn _gl;\n\n\t\t};\n\n\t\tthis.getContextAttributes = function () {\n\n\t\t\treturn _gl.getContextAttributes();\n\n\t\t};\n\n\t\tthis.forceContextLoss = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.loseContext();\n\n\t\t};\n\n\t\tthis.forceContextRestore = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.restoreContext();\n\n\t\t};\n\n\t\tthis.getPixelRatio = function () {\n\n\t\t\treturn _pixelRatio;\n\n\t\t};\n\n\t\tthis.setPixelRatio = function ( value ) {\n\n\t\t\tif ( value === undefined ) return;\n\n\t\t\t_pixelRatio = value;\n\n\t\t\tthis.setSize( _width, _height, false );\n\n\t\t};\n\n\t\tthis.getSize = function ( target ) {\n\n\t\t\treturn target.set( _width, _height );\n\n\t\t};\n\n\t\tthis.setSize = function ( width, height, updateStyle = true ) {\n\n\t\t\tif ( xr.isPresenting ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\tcanvas.width = Math.floor( width * _pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * _pixelRatio );\n\n\t\t\tif ( updateStyle === true ) {\n\n\t\t\t\tcanvas.style.width = width + 'px';\n\t\t\t\tcanvas.style.height = height + 'px';\n\n\t\t\t}\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t\t};\n\n\t\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_pixelRatio = pixelRatio;\n\n\t\t\tcanvas.width = Math.floor( width * pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * pixelRatio );\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getCurrentViewport = function ( target ) {\n\n\t\t\treturn target.copy( _currentViewport );\n\n\t\t};\n\n\t\tthis.getViewport = function ( target ) {\n\n\t\t\treturn target.copy( _viewport );\n\n\t\t};\n\n\t\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_viewport.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\t};\n\n\t\tthis.getScissor = function ( target ) {\n\n\t\t\treturn target.copy( _scissor );\n\n\t\t};\n\n\t\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_scissor.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\t};\n\n\t\tthis.getScissorTest = function () {\n\n\t\t\treturn _scissorTest;\n\n\t\t};\n\n\t\tthis.setScissorTest = function ( boolean ) {\n\n\t\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t\t};\n\n\t\tthis.setOpaqueSort = function ( method ) {\n\n\t\t\t_opaqueSort = method;\n\n\t\t};\n\n\t\tthis.setTransparentSort = function ( method ) {\n\n\t\t\t_transparentSort = method;\n\n\t\t};\n\n\t\t// Clearing\n\n\t\tthis.getClearColor = function ( target ) {\n\n\t\t\treturn target.copy( background.getClearColor() );\n\n\t\t};\n\n\t\tthis.setClearColor = function () {\n\n\t\t\tbackground.setClearColor.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.getClearAlpha = function () {\n\n\t\t\treturn background.getClearAlpha();\n\n\t\t};\n\n\t\tthis.setClearAlpha = function () {\n\n\t\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.clear = function ( color = true, depth = true, stencil = true ) {\n\n\t\t\tlet bits = 0;\n\n\t\t\tif ( color ) {\n\n\t\t\t\t// check if we're trying to clear an integer target\n\t\t\t\tlet isIntegerFormat = false;\n\t\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t\tconst targetFormat = _currentRenderTarget.texture.format;\n\t\t\t\t\tisIntegerFormat = targetFormat === RGBAIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RGIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RedIntegerFormat;\n\n\t\t\t\t}\n\n\t\t\t\t// use the appropriate clear functions to clear the target if it's a signed\n\t\t\t\t// or unsigned integer target\n\t\t\t\tif ( isIntegerFormat ) {\n\n\t\t\t\t\tconst targetType = _currentRenderTarget.texture.type;\n\t\t\t\t\tconst isUnsignedType = targetType === UnsignedByteType ||\n\t\t\t\t\t\ttargetType === UnsignedIntType ||\n\t\t\t\t\t\ttargetType === UnsignedShortType ||\n\t\t\t\t\t\ttargetType === UnsignedInt248Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort4444Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort5551Type;\n\n\t\t\t\t\tconst clearColor = background.getClearColor();\n\t\t\t\t\tconst a = background.getClearAlpha();\n\t\t\t\t\tconst r = clearColor.r;\n\t\t\t\t\tconst g = clearColor.g;\n\t\t\t\t\tconst b = clearColor.b;\n\n\t\t\t\t\tif ( isUnsignedType ) {\n\n\t\t\t\t\t\tuintClearColor[ 0 ] = r;\n\t\t\t\t\t\tuintClearColor[ 1 ] = g;\n\t\t\t\t\t\tuintClearColor[ 2 ] = b;\n\t\t\t\t\t\tuintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferuiv( _gl.COLOR, 0, uintClearColor );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tintClearColor[ 0 ] = r;\n\t\t\t\t\t\tintClearColor[ 1 ] = g;\n\t\t\t\t\t\tintClearColor[ 2 ] = b;\n\t\t\t\t\t\tintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferiv( _gl.COLOR, 0, intClearColor );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbits |= _gl.COLOR_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\t\tif ( stencil ) {\n\n\t\t\t\tbits |= _gl.STENCIL_BUFFER_BIT;\n\t\t\t\tthis.state.buffers.stencil.setMask( 0xffffffff );\n\n\t\t\t}\n\n\t\t\t_gl.clear( bits );\n\n\t\t};\n\n\t\tthis.clearColor = function () {\n\n\t\t\tthis.clear( true, false, false );\n\n\t\t};\n\n\t\tthis.clearDepth = function () {\n\n\t\t\tthis.clear( false, true, false );\n\n\t\t};\n\n\t\tthis.clearStencil = function () {\n\n\t\t\tthis.clear( false, false, true );\n\n\t\t};\n\n\t\t//\n\n\t\tthis.dispose = function () {\n\n\t\t\tcanvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\trenderLists.dispose();\n\t\t\trenderStates.dispose();\n\t\t\tproperties.dispose();\n\t\t\tcubemaps.dispose();\n\t\t\tcubeuvmaps.dispose();\n\t\t\tobjects.dispose();\n\t\t\tbindingStates.dispose();\n\t\t\tuniformsGroups.dispose();\n\t\t\tprogramCache.dispose();\n\n\t\t\txr.dispose();\n\n\t\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t\tif ( _transmissionRenderTarget ) {\n\n\t\t\t\t_transmissionRenderTarget.dispose();\n\t\t\t\t_transmissionRenderTarget = null;\n\n\t\t\t}\n\n\t\t\tanimation.stop();\n\n\t\t};\n\n\t\t// Events\n\n\t\tfunction onContextLost( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t\t_isContextLost = true;\n\n\t\t}\n\n\t\tfunction onContextRestore( /* event */ ) {\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t\t_isContextLost = false;\n\n\t\t\tconst infoAutoReset = info.autoReset;\n\t\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\t\tconst shadowMapType = shadowMap.type;\n\n\t\t\tinitGLContext();\n\n\t\t\tinfo.autoReset = infoAutoReset;\n\t\t\tshadowMap.enabled = shadowMapEnabled;\n\t\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\t\tshadowMap.type = shadowMapType;\n\n\t\t}\n\n\t\tfunction onContextCreationError( event ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );\n\n\t\t}\n\n\t\tfunction onMaterialDispose( event ) {\n\n\t\t\tconst material = event.target;\n\n\t\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tdeallocateMaterial( material );\n\n\t\t}\n\n\t\t// Buffer deallocation\n\n\t\tfunction deallocateMaterial( material ) {\n\n\t\t\treleaseMaterialProgramReferences( material );\n\n\t\t\tproperties.remove( material );\n\n\t\t}\n\n\n\t\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\t\tconst programs = properties.get( material ).programs;\n\n\t\t\tif ( programs !== undefined ) {\n\n\t\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t\t} );\n\n\t\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Buffer rendering\n\n\t\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t\t//\n\n\t\t\tlet index = geometry.index;\n\t\t\tlet rangeFactor = 1;\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\n\t\t\t\tif ( index === undefined ) return;\n\n\t\t\t\trangeFactor = 2;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst drawRange = geometry.drawRange;\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tlet drawStart = drawRange.start * rangeFactor;\n\t\t\tlet drawEnd = ( drawRange.start + drawRange.count ) * rangeFactor;\n\n\t\t\tif ( group !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, group.start * rangeFactor );\n\t\t\t\tdrawEnd = Math.min( drawEnd, ( group.start + group.count ) * rangeFactor );\n\n\t\t\t}\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, index.count );\n\n\t\t\t} else if ( position !== undefined && position !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, position.count );\n\n\t\t\t}\n\n\t\t\tconst drawCount = drawEnd - drawStart;\n\n\t\t\tif ( drawCount < 0 || drawCount === Infinity ) return;\n\n\t\t\t//\n\n\t\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\t\tlet attribute;\n\t\t\tlet renderer = bufferRenderer;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tattribute = attributes.get( index );\n\n\t\t\t\trenderer = indexedBufferRenderer;\n\t\t\t\trenderer.setIndex( attribute );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( object.isMesh ) {\n\n\t\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isLine ) {\n\n\t\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_LOOP );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isPoints ) {\n\n\t\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\trenderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );\n\n\t\t\t} else if ( object.isInstancedMesh ) {\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\t\tconst maxInstanceCount = geometry._maxInstanceCount !== undefined ? geometry._maxInstanceCount : Infinity;\n\t\t\t\tconst instanceCount = Math.min( geometry.instanceCount, maxInstanceCount );\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Compile\n\n\t\tfunction prepareMaterial( material, scene, object ) {\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.compile = function ( scene, camera, targetScene = null ) {\n\n\t\t\tif ( targetScene === null ) targetScene = scene;\n\n\t\t\tcurrentRenderState = renderStates.get( targetScene );\n\t\t\tcurrentRenderState.init();\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t// gather lights from both the target scene and the new object that will be added to the scene.\n\n\t\t\ttargetScene.traverseVisible( function ( object ) {\n\n\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tif ( scene !== targetScene ) {\n\n\t\t\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tcurrentRenderState.setupLights( _this._useLegacyLights );\n\n\t\t\t// Only initialize materials in the new scene, not the targetScene.\n\n\t\t\tconst materials = new Set();\n\n\t\t\tscene.traverse( function ( object ) {\n\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( material ) {\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\t\tprepareMaterial( material2, targetScene, object );\n\t\t\t\t\t\t\tmaterials.add( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tprepareMaterial( material, targetScene, object );\n\t\t\t\t\t\tmaterials.add( material );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\trenderStateStack.pop();\n\t\t\tcurrentRenderState = null;\n\n\t\t\treturn materials;\n\n\t\t};\n\n\t\t// compileAsync\n\n\t\tthis.compileAsync = function ( scene, camera, targetScene = null ) {\n\n\t\t\tconst materials = this.compile( scene, camera, targetScene );\n\n\t\t\t// Wait for all the materials in the new object to indicate that they're\n\t\t\t// ready to be used before resolving the promise.\n\n\t\t\treturn new Promise( ( resolve ) => {\n\n\t\t\t\tfunction checkMaterialsReady() {\n\n\t\t\t\t\tmaterials.forEach( function ( material ) {\n\n\t\t\t\t\t\tconst materialProperties = properties.get( material );\n\t\t\t\t\t\tconst program = materialProperties.currentProgram;\n\n\t\t\t\t\t\tif ( program.isReady() ) {\n\n\t\t\t\t\t\t\t// remove any programs that report they're ready to use from the list\n\t\t\t\t\t\t\tmaterials.delete( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\t// once the list of compiling materials is empty, call the callback\n\n\t\t\t\t\tif ( materials.size === 0 ) {\n\n\t\t\t\t\t\tresolve( scene );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// if some materials are still not ready, wait a bit and check again\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( extensions.get( 'KHR_parallel_shader_compile' ) !== null ) {\n\n\t\t\t\t\t// If we can check the compilation status of the materials without\n\t\t\t\t\t// blocking then do so right away.\n\n\t\t\t\t\tcheckMaterialsReady();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise start by waiting a bit to give the materials we just\n\t\t\t\t\t// initialized a chance to finish.\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time ) {\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t\t}\n\n\t\tfunction onXRSessionStart() {\n\n\t\t\tanimation.stop();\n\n\t\t}\n\n\t\tfunction onXRSessionEnd() {\n\n\t\t\tanimation.start();\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tif ( typeof self !== 'undefined' ) animation.setContext( self );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\t\t\txr.setAnimationLoop( callback );\n\n\t\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t\t};\n\n\t\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t// Rendering\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( _isContextLost === true ) return;\n\n\t\t\t// update scene graph\n\n\t\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t\t// update camera matrices and frustum\n\n\t\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t\t}\n\n\t\t\t//\n\t\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\t\tcurrentRenderState.init();\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );\n\n\t\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\t\tcurrentRenderList.init();\n\n\t\t\trenderListStack.push( currentRenderList );\n\n\t\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\t\tcurrentRenderList.finish();\n\n\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tthis.info.render.frame ++;\n\n\t\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t\t//\n\n\t\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\n\t\t\t//\n\n\t\t\tif ( xr.enabled === false || xr.isPresenting === false || xr.hasDepthSensing() === false ) {\n\n\t\t\t\tbackground.render( currentRenderList, scene );\n\n\t\t\t}\n\n\t\t\t// render scene\n\n\t\t\tcurrentRenderState.setupLights( _this._useLegacyLights );\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t\t// _gl.finish();\n\n\t\t\tbindingStates.resetDefaultState();\n\t\t\t_currentMaterialId = - 1;\n\t\t\t_currentCamera = null;\n\n\t\t\trenderStateStack.pop();\n\n\t\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderState = null;\n\n\t\t\t}\n\n\t\t\trenderListStack.pop();\n\n\t\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderList = null;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\t\tif ( object.visible === false ) return;\n\n\t\t\tconst visible = object.layers.test( camera.layers );\n\n\t\t\tif ( visible ) {\n\n\t\t\t\tif ( object.isGroup ) {\n\n\t\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\t\t\t\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector3.copy( object.boundingSphere.center );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector3.copy( geometry.boundingSphere.center );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_vector3\n\t\t\t\t\t\t\t\t.applyMatrix4( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst children = object.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );\n\n\t\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera );\n\n\t\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\t\tstate.buffers.depth.setTest( true );\n\t\t\tstate.buffers.depth.setMask( true );\n\t\t\tstate.buffers.color.setMask( true );\n\n\t\t\tstate.setPolygonOffset( false );\n\n\t\t}\n\n\t\tfunction renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tif ( overrideMaterial !== null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst isWebGL2 = capabilities.isWebGL2;\n\n\t\t\tif ( _transmissionRenderTarget === null ) {\n\n\t\t\t\t_transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {\n\t\t\t\t\tgenerateMipmaps: true,\n\t\t\t\t\ttype: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,\n\t\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\t\tsamples: ( isWebGL2 ) ? 4 : 0\n\t\t\t\t} );\n\n\t\t\t\t// debug\n\n\t\t\t\t/*\n\t\t\t\tconst geometry = new PlaneGeometry();\n\t\t\t\tconst material = new MeshBasicMaterial( { map: _transmissionRenderTarget.texture } );\n\n\t\t\t\tconst mesh = new Mesh( geometry, material );\n\t\t\t\tscene.add( mesh );\n\t\t\t\t*/\n\n\t\t\t}\n\n\t\t\t_this.getDrawingBufferSize( _vector2 );\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t_transmissionRenderTarget.setSize( _vector2.x, _vector2.y );\n\n\t\t\t} else {\n\n\t\t\t\t_transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t\t_this.setRenderTarget( _transmissionRenderTarget );\n\n\t\t\t_this.getClearColor( _currentClearColor );\n\t\t\t_currentClearAlpha = _this.getClearAlpha();\n\t\t\tif ( _currentClearAlpha < 1 ) _this.setClearColor( 0xffffff, 0.5 );\n\n\t\t\t_this.clear();\n\n\t\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\t\tconst currentToneMapping = _this.toneMapping;\n\t\t\t_this.toneMapping = NoToneMapping;\n\n\t\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t\tlet renderTargetNeedsUpdate = false;\n\n\t\t\tfor ( let i = 0, l = transmissiveObjects.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = transmissiveObjects[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = renderItem.material;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( material.side === DoubleSide && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tconst currentSide = material.side;\n\n\t\t\t\t\tmaterial.side = BackSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t\tmaterial.side = currentSide;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\trenderTargetNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetNeedsUpdate === true ) {\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\t\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t\t\t_this.setClearColor( _currentClearColor, _currentClearAlpha );\n\n\t\t\t_this.toneMapping = currentToneMapping;\n\n\t\t}\n\n\t\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t}\n\n\t\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t\t}\n\n\t\tfunction getProgram( material, scene, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tconst lights = currentRenderState.state.lights;\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tconst lightsStateVersion = lights.state.version;\n\n\t\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\t\tlet programs = materialProperties.programs;\n\n\t\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tmaterialProperties.fog = scene.fog;\n\t\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\n\t\t\tif ( programs === undefined ) {\n\n\t\t\t\t// new material\n\n\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\tprograms = new Map();\n\t\t\t\tmaterialProperties.programs = programs;\n\n\t\t\t}\n\n\t\t\tlet program = programs.get( programCacheKey );\n\n\t\t\tif ( program !== undefined ) {\n\n\t\t\t\t// early out if program and light state is identical\n\n\t\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\t\treturn program;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\t\tmaterial.onBuild( object, parameters, _this );\n\n\t\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t\t}\n\n\t\t\tconst uniforms = materialProperties.uniforms;\n\n\t\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t\t}\n\n\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t// store the light setup it was created for\n\n\t\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\t\tuniforms.spotLightMatrix.value = lights.state.spotLightMatrix;\n\t\t\t\tuniforms.spotLightMap.value = lights.state.spotLightMap;\n\t\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t\t}\n\n\t\t\tmaterialProperties.currentProgram = program;\n\t\t\tmaterialProperties.uniformsList = null;\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\tfunction getUniformList( materialProperties ) {\n\n\t\t\tif ( materialProperties.uniformsList === null ) {\n\n\t\t\t\tconst progUniforms = materialProperties.currentProgram.getUniforms();\n\t\t\t\tmaterialProperties.uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, materialProperties.uniforms );\n\n\t\t\t}\n\n\t\t\treturn materialProperties.uniformsList;\n\n\t\t}\n\n\t\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tmaterialProperties.outputColorSpace = parameters.outputColorSpace;\n\t\t\tmaterialProperties.batching = parameters.batching;\n\t\t\tmaterialProperties.instancing = parameters.instancing;\n\t\t\tmaterialProperties.instancingColor = parameters.instancingColor;\n\t\t\tmaterialProperties.skinning = parameters.skinning;\n\t\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t\t}\n\n\t\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\ttextures.resetTextureUnits();\n\n\t\t\tconst fog = scene.fog;\n\t\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tconst colorSpace = ( _currentRenderTarget === null ) ? _this.outputColorSpace : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace );\n\t\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\t\tconst vertexTangents = !! geometry.attributes.tangent && ( !! material.normalMap || material.anisotropy > 0 );\n\t\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\t\tconst morphColors = !! geometry.morphAttributes.color;\n\n\t\t\tlet toneMapping = NoToneMapping;\n\n\t\t\tif ( material.toneMapped ) {\n\n\t\t\t\tif ( _currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\t\ttoneMapping = _this.toneMapping;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tconst materialProperties = properties.get( material );\n\t\t\tconst lights = currentRenderState.state.lights;\n\n\t\t\tif ( _clippingEnabled === true ) {\n\n\t\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\t\tconst useCache =\n\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t\t// (#8465, #8379)\n\t\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet needsProgramChange = false;\n\n\t\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.outputColorSpace !== colorSpace ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isBatchedMesh && materialProperties.batching === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isBatchedMesh && materialProperties.batching === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( material.fog === true && materialProperties.fog !== fog ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tneedsProgramChange = true;\n\t\t\t\tmaterialProperties.__version = material.version;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet program = materialProperties.currentProgram;\n\n\t\t\tif ( needsProgramChange === true ) {\n\n\t\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t\tlet refreshProgram = false;\n\t\t\tlet refreshMaterial = false;\n\t\t\tlet refreshLights = false;\n\n\t\t\tconst p_uniforms = program.getUniforms(),\n\t\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\t\trefreshProgram = true;\n\t\t\t\trefreshMaterial = true;\n\t\t\t\trefreshLights = true;\n\n\t\t\t}\n\n\t\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t\t_currentMaterialId = material.id;\n\n\t\t\t\trefreshMaterial = true;\n\n\t\t\t}\n\n\t\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\t\t// common camera uniforms\n\n\t\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl, _vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t\t}\n\n\t\t\t\t// consider moving isOrthographic to UniformLib and WebGLMaterials, see https://github.com/mrdoob/three.js/pull/26467#issuecomment-1645185067\n\n\t\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t\t}\n\n\t\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\t\tconst skeleton = object.skeleton;\n\n\t\t\t\tif ( skeleton ) {\n\n\t\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\n\n\t\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'batchingTexture' );\n\t\t\t\tp_uniforms.setValue( _gl, 'batchingTexture', object._matricesTexture, textures );\n\n\t\t\t}\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined && capabilities.isWebGL2 === true ) ) {\n\n\t\t\t\tmorphtargets.update( object, geometry, program );\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t\t}\n\n\t\t\t// https://github.com/mrdoob/three.js/pull/24467#issuecomment-1209031512\n\n\t\t\tif ( material.isMeshGouraudMaterial && material.envMap !== null ) {\n\n\t\t\t\tm_uniforms.envMap.value = envMap;\n\n\t\t\t\tm_uniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t\t// values\n\t\t\t\t\t//\n\t\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t\t// the GL state when required\n\n\t\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t\t}\n\n\t\t\t\t// refresh uniforms common to several materials\n\n\t\t\t\tif ( fog && material.fog === true ) {\n\n\t\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget );\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\n\t\t\t}\n\n\t\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\t\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t\t}\n\n\t\t\t// common matrices\n\n\t\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\t\t// UBOs\n\n\t\t\tif ( material.isShaderMaterial || material.isRawShaderMaterial ) {\n\n\t\t\t\tconst groups = material.uniformsGroups;\n\n\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\t\t\tuniformsGroups.update( group, program );\n\t\t\t\t\t\tuniformsGroups.bind( group, program );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\t\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\t\tuniforms.directionalLights.needsUpdate = value;\n\t\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\t\tuniforms.pointLights.needsUpdate = value;\n\t\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\t\tuniforms.spotLights.needsUpdate = value;\n\t\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t\t}\n\n\t\tfunction materialNeedsLights( material ) {\n\n\t\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t\t}\n\n\t\tthis.getActiveCubeFace = function () {\n\n\t\t\treturn _currentActiveCubeFace;\n\n\t\t};\n\n\t\tthis.getActiveMipmapLevel = function () {\n\n\t\t\treturn _currentActiveMipmapLevel;\n\n\t\t};\n\n\t\tthis.getRenderTarget = function () {\n\n\t\t\treturn _currentRenderTarget;\n\n\t\t};\n\n\t\tthis.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\t\tif ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\t\trenderTargetProperties.__useRenderToTexture = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t\t};\n\n\t\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t\t_currentRenderTarget = renderTarget;\n\t\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\t\tlet useDefaultFramebuffer = true;\n\t\t\tlet framebuffer = null;\n\t\t\tlet isCube = false;\n\t\t\tlet isRenderTarget3D = false;\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\t\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t\t}\n\n\t\t\t\tconst texture = renderTarget.texture;\n\n\t\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t\t}\n\n\t\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer[ activeCubeFace ] ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ][ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tisCube = true;\n\n\t\t\t\t} else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t} else {\n\n\t\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t}\n\n\t\t\tconst framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\tif ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {\n\n\t\t\t\tstate.drawBuffers( renderTarget, framebuffer );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport );\n\t\t\tstate.scissor( _currentScissor );\n\t\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t\t_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t\t}\n\n\t\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t\t};\n\n\t\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t\t}\n\n\t\t\tif ( framebuffer ) {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\ttry {\n\n\t\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\n\n\t\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t\t! halfFloatSupportedByExt ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} finally {\n\n\t\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\t\tconst levelScale = Math.pow( 2, - level );\n\t\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t_gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, position.x, position.y, width, height );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\t\tconst width = srcTexture.image.width;\n\t\t\tconst height = srcTexture.image.height;\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t\t// As another texture upload may have changed pixelStorei\n\t\t\t// parameters, make sure they are correct for the dstTexture\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t\t_gl.compressedTexSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\t\tif ( _this.isWebGL1Renderer ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst width = sourceBox.max.x - sourceBox.min.x + 1;\n\t\t\tconst height = sourceBox.max.y - sourceBox.min.y + 1;\n\t\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\t\t\tlet glTarget;\n\n\t\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_3D;\n\n\t\t\t} else if ( dstTexture.isDataArrayTexture || dstTexture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tconst unpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH );\n\t\t\tconst unpackImageHeight = _gl.getParameter( _gl.UNPACK_IMAGE_HEIGHT );\n\t\t\tconst unpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS );\n\t\t\tconst unpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS );\n\t\t\tconst unpackSkipImages = _gl.getParameter( _gl.UNPACK_SKIP_IMAGES );\n\n\t\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ level ] : srcTexture.image;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, sourceBox.min.x );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, sourceBox.min.y );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, sourceBox.min.z );\n\n\t\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( srcTexture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );\n\t\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, unpackRowLen );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, unpackImageHeight );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, unpackSkipPixels );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, unpackSkipRows );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, unpackSkipImages );\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.initTexture = function ( texture ) {\n\n\t\t\tif ( texture.isCubeTexture ) {\n\n\t\t\t\ttextures.setTextureCube( texture, 0 );\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( texture, 0 );\n\n\t\t\t} else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( texture, 0 );\n\n\t\t\t} else {\n\n\t\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.resetState = function () {\n\n\t\t\t_currentActiveCubeFace = 0;\n\t\t\t_currentActiveMipmapLevel = 0;\n\t\t\t_currentRenderTarget = null;\n\n\t\t\tstate.reset();\n\t\t\tbindingStates.reset();\n\n\t\t};\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tget coordinateSystem() {\n\n\t\treturn WebGLCoordinateSystem;\n\n\t}\n\n\tget outputColorSpace() {\n\n\t\treturn this._outputColorSpace;\n\n\t}\n\n\tset outputColorSpace( colorSpace ) {\n\n\t\tthis._outputColorSpace = colorSpace;\n\n\t\tconst gl = this.getContext();\n\t\tgl.drawingBufferColorSpace = colorSpace === DisplayP3ColorSpace ? 'display-p3' : 'srgb';\n\t\tgl.unpackColorSpace = ColorManagement.workingColorSpace === LinearDisplayP3ColorSpace ? 'display-p3' : 'srgb';\n\n\t}\n\n\tget outputEncoding() { // @deprecated, r152\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );\n\t\treturn this.outputColorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding;\n\n\t}\n\n\tset outputEncoding( encoding ) { // @deprecated, r152\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );\n\t\tthis.outputColorSpace = encoding === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;\n\n\t}\n\n\tget useLegacyLights() { // @deprecated, r155\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );\n\t\treturn this._useLegacyLights;\n\n\t}\n\n\tset useLegacyLights( value ) { // @deprecated, r155\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );\n\t\tthis._useLegacyLights = value;\n\n\t}\n\n}\n\nclass WebGL1Renderer extends WebGLRenderer {}\n\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.isFogExp2 = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.isFog = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isScene = true;\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.backgroundBlurriness = 0;\n\t\tthis.backgroundIntensity = 1;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tthis.backgroundBlurriness = source.backgroundBlurriness;\n\t\tthis.backgroundIntensity = source.backgroundIntensity;\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\t\tif ( this.backgroundBlurriness > 0 ) data.object.backgroundBlurriness = this.backgroundBlurriness;\n\t\tif ( this.backgroundIntensity !== 1 ) data.object.backgroundIntensity = this.backgroundIntensity;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.isInterleavedBuffer = true;\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis._updateRange = { offset: 0, count: - 1 };\n\t\tthis.updateRanges = [];\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tget updateRange() {\n\n\t\twarnOnce( 'THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159\n\t\treturn this._updateRange;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.from( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.isInterleavedBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.data.stride + this.offset + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.data.array[ index * this.data.stride + this.offset ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// de-interleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interleaved attribute\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isSpriteMaterial = true;\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material = new SpriteMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isSprite = true;\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = material;\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getInterpolation( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance, level.hysteresis );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 0, hysteresis = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, hysteresis: hysteresis, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\n\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance < levelDistance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance >= levelDistance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance,\n\t\t\t\thysteresis: level.hysteresis\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector3 = /*@__PURE__*/ new Vector3();\nconst _matrix4 = /*@__PURE__*/ new Matrix4();\nconst _vertex = /*@__PURE__*/ new Vector3();\n\nconst _sphere$4 = /*@__PURE__*/ new Sphere();\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkinnedMesh = true;\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = AttachedBindMode;\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingBox.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingSphere.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$4.copy( this.boundingSphere );\n\t\t_sphere$4.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$4 ) === false ) return;\n\n\t\t// convert ray to local space of skinned mesh\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( this.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$2 );\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tsuper.getVertexPosition( index, target );\n\n\t\tthis.applyBoneTransform( index, target );\n\n\t\treturn target;\n\n\t}\n\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.fromBufferAttribute( skinWeight, i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === AttachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === DetachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\tapplyBoneTransform( index, vector ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( vector ).applyMatrix4( this.bindMatrix );\n\n\t\tvector.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix4.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\tvector.addScaledVector( _vector3.copy( _basePosition ).applyMatrix4( _matrix4 ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn vector.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBone = true;\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isDataTexture = true;\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix$1 = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix$1;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.isInstancedBufferAttribute = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _box3 = /*@__PURE__*/ new Box3();\nconst _identity = /*@__PURE__*/ new Matrix4();\nconst _mesh$1 = /*@__PURE__*/ new Mesh();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isInstancedMesh = true;\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\n\t\tthis.count = count;\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.setMatrixAt( i, _identity );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\tgeometry.computeBoundingBox();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_box3.copy( geometry.boundingBox ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingBox.union( _box3 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere === null ) {\n\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_sphere$3.copy( geometry.boundingSphere ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingSphere.union( _sphere$3 );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh$1.geometry = this.geometry;\n\t\t_mesh$1.material = this.material;\n\n\t\tif ( _mesh$1.material === undefined ) return;\n\n\t\t// test with bounding sphere first\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$3.copy( this.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t// now test each instance\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh$1.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh$1.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nfunction sortOpaque( a, b ) {\n\n\treturn a.z - b.z;\n\n}\n\nfunction sortTransparent( a, b ) {\n\n\treturn b.z - a.z;\n\n}\n\nclass MultiDrawRenderList {\n\n\tconstructor() {\n\n\t\tthis.index = 0;\n\t\tthis.pool = [];\n\t\tthis.list = [];\n\n\t}\n\n\tpush( drawRange, z ) {\n\n\t\tconst pool = this.pool;\n\t\tconst list = this.list;\n\t\tif ( this.index >= pool.length ) {\n\n\t\t\tpool.push( {\n\n\t\t\t\tstart: - 1,\n\t\t\t\tcount: - 1,\n\t\t\t\tz: - 1,\n\n\t\t\t} );\n\n\t\t}\n\n\t\tconst item = pool[ this.index ];\n\t\tlist.push( item );\n\t\tthis.index ++;\n\n\t\titem.start = drawRange.start;\n\t\titem.count = drawRange.count;\n\t\titem.z = z;\n\n\t}\n\n\treset() {\n\n\t\tthis.list.length = 0;\n\t\tthis.index = 0;\n\n\t}\n\n}\n\nconst ID_ATTR_NAME = 'batchId';\nconst _matrix = /*@__PURE__*/ new Matrix4();\nconst _invMatrixWorld = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\nconst _projScreenMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _frustum = /*@__PURE__*/ new Frustum();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _renderList = /*@__PURE__*/ new MultiDrawRenderList();\nconst _mesh = /*@__PURE__*/ new Mesh();\nconst _batchIntersects = [];\n\n// @TODO: SkinnedMesh support?\n// @TODO: geometry.groups support?\n// @TODO: geometry.drawRange support?\n// @TODO: geometry.morphAttributes support?\n// @TODO: Support uniform parameter per geometry\n// @TODO: Add an \"optimize\" function to pack geometry and remove data gaps\n\n// copies data from attribute \"src\" into \"target\" starting at \"targetOffset\"\nfunction copyAttributeData( src, target, targetOffset = 0 ) {\n\n\tconst itemSize = target.itemSize;\n\tif ( src.isInterleavedBufferAttribute || src.array.constructor !== target.array.constructor ) {\n\n\t\t// use the component getters and setters if the array data cannot\n\t\t// be copied directly\n\t\tconst vertexCount = src.count;\n\t\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\ttarget.setComponent( i + targetOffset, c, src.getComponent( i, c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// faster copy approach using typed array set function\n\t\ttarget.array.set( src.array, targetOffset * itemSize );\n\n\t}\n\n\ttarget.needsUpdate = true;\n\n}\n\nclass BatchedMesh extends Mesh {\n\n\tget maxGeometryCount() {\n\n\t\treturn this._maxGeometryCount;\n\n\t}\n\n\tconstructor( maxGeometryCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material ) {\n\n\t\tsuper( new BufferGeometry(), material );\n\n\t\tthis.isBatchedMesh = true;\n\t\tthis.perObjectFrustumCulled = true;\n\t\tthis.sortObjects = true;\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\t\tthis.customSort = null;\n\n\t\tthis._drawRanges = [];\n\t\tthis._reservedRanges = [];\n\n\t\tthis._visibility = [];\n\t\tthis._active = [];\n\t\tthis._bounds = [];\n\n\t\tthis._maxGeometryCount = maxGeometryCount;\n\t\tthis._maxVertexCount = maxVertexCount;\n\t\tthis._maxIndexCount = maxIndexCount;\n\n\t\tthis._geometryInitialized = false;\n\t\tthis._geometryCount = 0;\n\t\tthis._multiDrawCounts = new Int32Array( maxGeometryCount );\n\t\tthis._multiDrawStarts = new Int32Array( maxGeometryCount );\n\t\tthis._multiDrawCount = 0;\n\t\tthis._visibilityChanged = true;\n\n\t\t// Local matrix per geometry by using data texture\n\t\tthis._matricesTexture = null;\n\n\t\tthis._initMatricesTexture();\n\n\t}\n\n\t_initMatricesTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 matrices * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 matrices * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 matrices * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 matrices * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this._maxGeometryCount * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst matricesArray = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tconst matricesTexture = new DataTexture( matricesArray, size, size, RGBAFormat, FloatType );\n\n\t\tthis._matricesTexture = matricesTexture;\n\n\t}\n\n\t_initializeGeometry( reference ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst maxVertexCount = this._maxVertexCount;\n\t\tconst maxGeometryCount = this._maxGeometryCount;\n\t\tconst maxIndexCount = this._maxIndexCount;\n\t\tif ( this._geometryInitialized === false ) {\n\n\t\t\tfor ( const attributeName in reference.attributes ) {\n\n\t\t\t\tconst srcAttribute = reference.getAttribute( attributeName );\n\t\t\t\tconst { array, itemSize, normalized } = srcAttribute;\n\n\t\t\t\tconst dstArray = new array.constructor( maxVertexCount * itemSize );\n\t\t\t\tconst dstAttribute = new srcAttribute.constructor( dstArray, itemSize, normalized );\n\t\t\t\tdstAttribute.setUsage( srcAttribute.usage );\n\n\t\t\t\tgeometry.setAttribute( attributeName, dstAttribute );\n\n\t\t\t}\n\n\t\t\tif ( reference.getIndex() !== null ) {\n\n\t\t\t\tconst indexArray = maxVertexCount > 65536\n\t\t\t\t\t? new Uint32Array( maxIndexCount )\n\t\t\t\t\t: new Uint16Array( maxIndexCount );\n\n\t\t\t\tgeometry.setIndex( new BufferAttribute( indexArray, 1 ) );\n\n\t\t\t}\n\n\t\t\tconst idArray = maxGeometryCount > 65536\n\t\t\t\t? new Uint32Array( maxVertexCount )\n\t\t\t\t: new Uint16Array( maxVertexCount );\n\t\t\tgeometry.setAttribute( ID_ATTR_NAME, new BufferAttribute( idArray, 1 ) );\n\n\t\t\tthis._geometryInitialized = true;\n\n\t\t}\n\n\t}\n\n\t// Make sure the geometry is compatible with the existing combined geometry atributes\n\t_validateGeometry( geometry ) {\n\n\t\t// check that the geometry doesn't have a version of our reserved id attribute\n\t\tif ( geometry.getAttribute( ID_ATTR_NAME ) ) {\n\n\t\t\tthrow new Error( `BatchedMesh: Geometry cannot use attribute \"${ ID_ATTR_NAME }\"` );\n\n\t\t}\n\n\t\t// check to ensure the geometries are using consistent attributes and indices\n\t\tconst batchGeometry = this.geometry;\n\t\tif ( Boolean( geometry.getIndex() ) !== Boolean( batchGeometry.getIndex() ) ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: All geometries must consistently have \"index\".' );\n\n\t\t}\n\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( attributeName === ID_ATTR_NAME ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( ! geometry.hasAttribute( attributeName ) ) {\n\n\t\t\t\tthrow new Error( `BatchedMesh: Added geometry missing \"${ attributeName }\". All geometries must have consistent attributes.` );\n\n\t\t\t}\n\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tif ( srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized ) {\n\n\t\t\t\tthrow new Error( 'BatchedMesh: All attributes must have a consistent itemSize and normalized value.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tsetCustomSort( func ) {\n\n\t\tthis.customSort = func;\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst boundingBox = this.boundingBox;\n\t\tconst active = this._active;\n\n\t\tboundingBox.makeEmpty();\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( active[ i ] === false ) continue;\n\n\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\tthis.getBoundingBoxAt( i, _box$1 ).applyMatrix4( _matrix );\n\t\t\tboundingBox.union( _box$1 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst boundingSphere = this.boundingSphere;\n\t\tconst active = this._active;\n\n\t\tboundingSphere.makeEmpty();\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( active[ i ] === false ) continue;\n\n\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix );\n\t\t\tboundingSphere.union( _sphere$2 );\n\n\t\t}\n\n\t}\n\n\taddGeometry( geometry, vertexCount = - 1, indexCount = - 1 ) {\n\n\t\tthis._initializeGeometry( geometry );\n\n\t\tthis._validateGeometry( geometry );\n\n\t\t// ensure we're not over geometry\n\t\tif ( this._geometryCount >= this._maxGeometryCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\t// get the necessary range fo the geometry\n\t\tconst reservedRange = {\n\t\t\tvertexStart: - 1,\n\t\t\tvertexCount: - 1,\n\t\t\tindexStart: - 1,\n\t\t\tindexCount: - 1,\n\t\t};\n\n\t\tlet lastRange = null;\n\t\tconst reservedRanges = this._reservedRanges;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst bounds = this._bounds;\n\t\tif ( this._geometryCount !== 0 ) {\n\n\t\t\tlastRange = reservedRanges[ reservedRanges.length - 1 ];\n\n\t\t}\n\n\t\tif ( vertexCount === - 1 ) {\n\n\t\t\treservedRange.vertexCount = geometry.getAttribute( 'position' ).count;\n\n\t\t} else {\n\n\t\t\treservedRange.vertexCount = vertexCount;\n\n\t\t}\n\n\t\tif ( lastRange === null ) {\n\n\t\t\treservedRange.vertexStart = 0;\n\n\t\t} else {\n\n\t\t\treservedRange.vertexStart = lastRange.vertexStart + lastRange.vertexCount;\n\n\t\t}\n\n\t\tconst index = geometry.getIndex();\n\t\tconst hasIndex = index !== null;\n\t\tif ( hasIndex ) {\n\n\t\t\tif ( indexCount\t=== - 1 ) {\n\n\t\t\t\treservedRange.indexCount = index.count;\n\n\t\t\t} else {\n\n\t\t\t\treservedRange.indexCount = indexCount;\n\n\t\t\t}\n\n\t\t\tif ( lastRange === null ) {\n\n\t\t\t\treservedRange.indexStart = 0;\n\n\t\t\t} else {\n\n\t\t\t\treservedRange.indexStart = lastRange.indexStart + lastRange.indexCount;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif (\n\t\t\treservedRange.indexStart !== - 1 &&\n\t\t\treservedRange.indexStart + reservedRange.indexCount > this._maxIndexCount ||\n\t\t\treservedRange.vertexStart + reservedRange.vertexCount > this._maxVertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space request exceeds the maximum buffer size.' );\n\n\t\t}\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\n\t\t// push new visibility states\n\t\tvisibility.push( true );\n\t\tactive.push( true );\n\n\t\t// update id\n\t\tconst geometryId = this._geometryCount;\n\t\tthis._geometryCount ++;\n\n\t\t// initialize matrix information\n\t\t_identityMatrix.toArray( matricesArray, geometryId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\t// add the reserved range and draw range objects\n\t\treservedRanges.push( reservedRange );\n\t\tdrawRanges.push( {\n\t\t\tstart: hasIndex ? reservedRange.indexStart : reservedRange.vertexStart,\n\t\t\tcount: - 1\n\t\t} );\n\t\tbounds.push( {\n\t\t\tboxInitialized: false,\n\t\t\tbox: new Box3(),\n\n\t\t\tsphereInitialized: false,\n\t\t\tsphere: new Sphere()\n\t\t} );\n\n\t\t// set the id for the geometry\n\t\tconst idAttribute = this.geometry.getAttribute( ID_ATTR_NAME );\n\t\tfor ( let i = 0; i < reservedRange.vertexCount; i ++ ) {\n\n\t\t\tidAttribute.setX( reservedRange.vertexStart + i, geometryId );\n\n\t\t}\n\n\t\tidAttribute.needsUpdate = true;\n\n\t\t// update the geometry\n\t\tthis.setGeometryAt( geometryId, geometry );\n\n\t\treturn geometryId;\n\n\t}\n\n\tsetGeometryAt( id, geometry ) {\n\n\t\tif ( id >= this._geometryCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\tthis._validateGeometry( geometry );\n\n\t\tconst batchGeometry = this.geometry;\n\t\tconst hasIndex = batchGeometry.getIndex() !== null;\n\t\tconst dstIndex = batchGeometry.getIndex();\n\t\tconst srcIndex = geometry.getIndex();\n\t\tconst reservedRange = this._reservedRanges[ id ];\n\t\tif (\n\t\t\thasIndex &&\n\t\t\tsrcIndex.count > reservedRange.indexCount ||\n\t\t\tgeometry.attributes.position.count > reservedRange.vertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space not large enough for provided geometry.' );\n\n\t\t}\n\n\t\t// copy geometry over\n\t\tconst vertexStart = reservedRange.vertexStart;\n\t\tconst vertexCount = reservedRange.vertexCount;\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( attributeName === ID_ATTR_NAME ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// copy attribute data\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tcopyAttributeData( srcAttribute, dstAttribute, vertexStart );\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tconst itemSize = srcAttribute.itemSize;\n\t\t\tfor ( let i = srcAttribute.count, l = vertexCount; i < l; i ++ ) {\n\n\t\t\t\tconst index = vertexStart + i;\n\t\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\t\tdstAttribute.setComponent( index, c, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdstAttribute.needsUpdate = true;\n\n\t\t}\n\n\t\t// copy index\n\t\tif ( hasIndex ) {\n\n\t\t\tconst indexStart = reservedRange.indexStart;\n\n\t\t\t// copy index data over\n\t\t\tfor ( let i = 0; i < srcIndex.count; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart + srcIndex.getX( i ) );\n\n\t\t\t}\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tfor ( let i = srcIndex.count, l = reservedRange.indexCount; i < l; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart );\n\n\t\t\t}\n\n\t\t\tdstIndex.needsUpdate = true;\n\n\t\t}\n\n\t\t// store the bounding boxes\n\t\tconst bound = this._bounds[ id ];\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tbound.box.copy( geometry.boundingBox );\n\t\t\tbound.boxInitialized = true;\n\n\t\t} else {\n\n\t\t\tbound.boxInitialized = false;\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tbound.sphere.copy( geometry.boundingSphere );\n\t\t\tbound.sphereInitialized = true;\n\n\t\t} else {\n\n\t\t\tbound.sphereInitialized = false;\n\n\t\t}\n\n\t\t// set drawRange count\n\t\tconst drawRange = this._drawRanges[ id ];\n\t\tconst posAttr = geometry.getAttribute( 'position' );\n\t\tdrawRange.count = hasIndex ? srcIndex.count : posAttr.count;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn id;\n\n\t}\n\n\tdeleteGeometry( geometryId ) {\n\n\t\t// Note: User needs to call optimize() afterward to pack the data.\n\n\t\tconst active = this._active;\n\t\tif ( geometryId >= active.length || active[ geometryId ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tactive[ geometryId ] = false;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\t// get bounding box and compute it if it doesn't exist\n\tgetBoundingBoxAt( id, target ) {\n\n\t\tconst active = this._active;\n\t\tif ( active[ id ] === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding box\n\t\tconst bound = this._bounds[ id ];\n\t\tconst box = bound.box;\n\t\tconst geometry = this.geometry;\n\t\tif ( bound.boxInitialized === false ) {\n\n\t\t\tbox.makeEmpty();\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst drawRange = this._drawRanges[ id ];\n\t\t\tfor ( let i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\tbox.expandByPoint( _vector$5.fromBufferAttribute( position, iv ) );\n\n\t\t\t}\n\n\t\t\tbound.boxInitialized = true;\n\n\t\t}\n\n\t\ttarget.copy( box );\n\t\treturn target;\n\n\t}\n\n\t// get bounding sphere and compute it if it doesn't exist\n\tgetBoundingSphereAt( id, target ) {\n\n\t\tconst active = this._active;\n\t\tif ( active[ id ] === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding sphere\n\t\tconst bound = this._bounds[ id ];\n\t\tconst sphere = bound.sphere;\n\t\tconst geometry = this.geometry;\n\t\tif ( bound.sphereInitialized === false ) {\n\n\t\t\tsphere.makeEmpty();\n\n\t\t\tthis.getBoundingBoxAt( id, _box$1 );\n\t\t\t_box$1.getCenter( sphere.center );\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst drawRange = this._drawRanges[ id ];\n\n\t\t\tlet maxRadiusSq = 0;\n\t\t\tfor ( let i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\t_vector$5.fromBufferAttribute( position, iv );\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, sphere.center.distanceToSquared( _vector$5 ) );\n\n\t\t\t}\n\n\t\t\tsphere.radius = Math.sqrt( maxRadiusSq );\n\t\t\tbound.sphereInitialized = true;\n\n\t\t}\n\n\t\ttarget.copy( sphere );\n\t\treturn target;\n\n\t}\n\n\tsetMatrixAt( geometryId, matrix ) {\n\n\t\t// @TODO: Map geometryId to index of the arrays because\n\t\t// optimize() can make geometryId mismatch the index\n\n\t\tconst active = this._active;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tconst geometryCount = this._geometryCount;\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tmatrix.toArray( matricesArray, geometryId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetMatrixAt( geometryId, matrix ) {\n\n\t\tconst active = this._active;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tconst geometryCount = this._geometryCount;\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn matrix.fromArray( matricesArray, geometryId * 16 );\n\n\t}\n\n\tsetVisibleAt( geometryId, value ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst geometryCount = this._geometryCount;\n\n\t\t// if the geometry is out of range, not active, or visibility state\n\t\t// does not change then return early\n\t\tif (\n\t\t\tgeometryId >= geometryCount ||\n\t\t\tactive[ geometryId ] === false ||\n\t\t\tvisibility[ geometryId ] === value\n\t\t) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvisibility[ geometryId ] = value;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetVisibleAt( geometryId ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst geometryCount = this._geometryCount;\n\n\t\t// return early if the geometry is out of range or not active\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn visibility[ geometryId ];\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst batchGeometry = this.geometry;\n\n\t\t// iterate over each geometry\n\t\t_mesh.material = this.material;\n\t\t_mesh.geometry.index = batchGeometry.index;\n\t\t_mesh.geometry.attributes = batchGeometry.attributes;\n\t\tif ( _mesh.geometry.boundingBox === null ) {\n\n\t\t\t_mesh.geometry.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( _mesh.geometry.boundingSphere === null ) {\n\n\t\t\t_mesh.geometry.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( ! visibility[ i ] || ! active[ i ] ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst drawRange = drawRanges[ i ];\n\t\t\t_mesh.geometry.setDrawRange( drawRange.start, drawRange.count );\n\n\t\t\t// ge the intersects\n\t\t\tthis.getMatrixAt( i, _mesh.matrixWorld ).premultiply( matrixWorld );\n\t\t\tthis.getBoundingBoxAt( i, _mesh.geometry.boundingBox );\n\t\t\tthis.getBoundingSphereAt( i, _mesh.geometry.boundingSphere );\n\t\t\t_mesh.raycast( raycaster, _batchIntersects );\n\n\t\t\t// add batch id to the intersects\n\t\t\tfor ( let j = 0, l = _batchIntersects.length; j < l; j ++ ) {\n\n\t\t\t\tconst intersect = _batchIntersects[ j ];\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersect.batchId = i;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_batchIntersects.length = 0;\n\n\t\t}\n\n\t\t_mesh.material = null;\n\t\t_mesh.geometry.index = null;\n\t\t_mesh.geometry.attributes = {};\n\t\t_mesh.geometry.setDrawRange( 0, Infinity );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.geometry = source.geometry.clone();\n\t\tthis.perObjectFrustumCulled = source.perObjectFrustumCulled;\n\t\tthis.sortObjects = source.sortObjects;\n\t\tthis.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null;\n\t\tthis.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null;\n\n\t\tthis._drawRanges = source._drawRanges.map( range => ( { ...range } ) );\n\t\tthis._reservedRanges = source._reservedRanges.map( range => ( { ...range } ) );\n\n\t\tthis._visibility = source._visibility.slice();\n\t\tthis._active = source._active.slice();\n\t\tthis._bounds = source._bounds.map( bound => ( {\n\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\tbox: bound.box.clone(),\n\n\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\tsphere: bound.sphere.clone()\n\t\t} ) );\n\n\t\tthis._maxGeometryCount = source._maxGeometryCount;\n\t\tthis._maxVertexCount = source._maxVertexCount;\n\t\tthis._maxIndexCount = source._maxIndexCount;\n\n\t\tthis._geometryInitialized = source._geometryInitialized;\n\t\tthis._geometryCount = source._geometryCount;\n\t\tthis._multiDrawCounts = source._multiDrawCounts.slice();\n\t\tthis._multiDrawStarts = source._multiDrawStarts.slice();\n\n\t\tthis._matricesTexture = source._matricesTexture.clone();\n\t\tthis._matricesTexture.image.data = this._matricesTexture.image.slice();\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\t// Assuming the geometry is not shared with other meshes\n\t\tthis.geometry.dispose();\n\n\t\tthis._matricesTexture.dispose();\n\t\tthis._matricesTexture = null;\n\t\treturn this;\n\n\t}\n\n\tonBeforeRender( renderer, scene, camera, geometry, material/*, _group*/ ) {\n\n\t\t// if visibility has not changed and frustum culling and object sorting is not required\n\t\t// then skip iterating over all items\n\t\tif ( ! this._visibilityChanged && ! this.perObjectFrustumCulled && ! this.sortObjects ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// the indexed version of the multi draw function requires specifying the start\n\t\t// offset in bytes.\n\t\tconst index = geometry.getIndex();\n\t\tconst bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT;\n\n\t\tconst active = this._active;\n\t\tconst visibility = this._visibility;\n\t\tconst multiDrawStarts = this._multiDrawStarts;\n\t\tconst multiDrawCounts = this._multiDrawCounts;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst perObjectFrustumCulled = this.perObjectFrustumCulled;\n\n\t\t// prepare the frustum in the local frame\n\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t_projScreenMatrix$2\n\t\t\t\t.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse )\n\t\t\t\t.multiply( this.matrixWorld );\n\t\t\t_frustum.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\trenderer.coordinateSystem\n\t\t\t);\n\n\t\t}\n\n\t\tlet count = 0;\n\t\tif ( this.sortObjects ) {\n\n\t\t\t// get the camera position in the local frame\n\t\t\t_invMatrixWorld.copy( this.matrixWorld ).invert();\n\t\t\t_vector$5.setFromMatrixPosition( camera.matrixWorld ).applyMatrix4( _invMatrixWorld );\n\n\t\t\tfor ( let i = 0, l = visibility.length; i < l; i ++ ) {\n\n\t\t\t\tif ( visibility[ i ] && active[ i ] ) {\n\n\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix );\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\t// get the distance from camera used for sorting\n\t\t\t\t\t\tconst z = _vector$5.distanceTo( _sphere$2.center );\n\t\t\t\t\t\t_renderList.push( drawRanges[ i ], z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Sort the draw ranges and prep for rendering\n\t\t\tconst list = _renderList.list;\n\t\t\tconst customSort = this.customSort;\n\t\t\tif ( customSort === null ) {\n\n\t\t\t\tlist.sort( material.transparent ? sortTransparent : sortOpaque );\n\n\t\t\t} else {\n\n\t\t\t\tcustomSort.call( this, list, camera );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = list.length; i < l; i ++ ) {\n\n\t\t\t\tconst item = list[ i ];\n\t\t\t\tmultiDrawStarts[ count ] = item.start * bytesPerElement;\n\t\t\t\tmultiDrawCounts[ count ] = item.count;\n\t\t\t\tcount ++;\n\n\t\t\t}\n\n\t\t\t_renderList.reset();\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0, l = visibility.length; i < l; i ++ ) {\n\n\t\t\t\tif ( visibility[ i ] && active[ i ] ) {\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\t\tthis.getMatrixAt( i, _matrix );\n\t\t\t\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix );\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\tconst range = drawRanges[ i ];\n\t\t\t\t\t\tmultiDrawStarts[ count ] = range.start * bytesPerElement;\n\t\t\t\t\t\tmultiDrawCounts[ count ] = range.count;\n\t\t\t\t\t\tcount ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._multiDrawCount = count;\n\t\tthis._visibilityChanged = false;\n\n\t}\n\n\tonBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial/* , group */ ) {\n\n\t\tthis.onBeforeRender( renderer, null, shadowCamera, geometry, depthMaterial );\n\n\t}\n\n}\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _start$1 = /*@__PURE__*/ new Vector3();\nconst _end$1 = /*@__PURE__*/ new Vector3();\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isLine = true;\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineLoop = true;\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isPointsMaterial = true;\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isPoints = true;\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isVideoTexture = true;\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.isFramebufferTexture = true;\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCompressedTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nclass CompressedArrayTexture extends CompressedTexture {\n\n\tconstructor( mipmaps, width, height, depth, format, type ) {\n\n\t\tsuper( mipmaps, width, height, format, type );\n\n\t\tthis.isCompressedArrayTexture = true;\n\t\tthis.image.depth = depth;\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t}\n\n}\n\nclass CompressedCubeTexture extends CompressedTexture {\n\n\tconstructor( images, format, type ) {\n\n\t\tsuper( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping );\n\n\t\tthis.isCompressedCubeTexture = true;\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.image = images;\n\n\t}\n\n}\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isCanvasTexture = true;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t}\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.isEllipseCurve = true;\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst point = optionalTarget || new Vector2();\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = /*@__PURE__*/ new Vector3();\nconst px = /*@__PURE__*/ new CubicPoly();\nconst py = /*@__PURE__*/ new CubicPoly();\nconst pz = /*@__PURE__*/ new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.isCatmullRomCurve3 = true;\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Bezier Curves formulas obtained from\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve = true;\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve3 = true;\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve = true;\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector2() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector3() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve = true;\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve3 = true;\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isSplineCurve = true;\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tconst lineType = ( startPoint.isVector2 === true ) ? 'LineCurve' : 'LineCurve3';\n\t\t\tthis.curves.push( new Curves[ lineType ]( endPoint, startPoint ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, - 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass CapsuleGeometry extends LatheGeometry {\n\n\tconstructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {\n\n\t\tconst path = new Path();\n\t\tpath.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 );\n\t\tpath.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 );\n\n\t\tsuper( path.getPoints( capSegments ), radialSegments );\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tlength: length,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );\n\n\t}\n\n}\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivision with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\nconst _triangle = /*@__PURE__*/ new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.4)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 32767 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize, 0 );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim | 0 );\n\t\t\ttriangles.push( ear.i / dim | 0 );\n\t\t\ttriangles.push( next.i / dim | 0 );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\tlet p = c.next;\n\twhile ( p !== a ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( x0, y0, minX, minY, invSize ),\n\t\tmaxZ = zOrder( x1, y1, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim | 0 );\n\t\t\ttriangles.push( p.i / dim | 0 );\n\t\t\ttriangles.push( b.i / dim | 0 );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\touterNode = eliminateHole( queue[ i ], outerNode );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\tconst bridge = findHoleBridge( hole, outerNode );\n\tif ( ! bridge ) {\n\n\t\treturn outerNode;\n\n\t}\n\n\tconst bridgeReverse = splitPolygon( bridge, hole );\n\n\t// filter collinear points around the cuts\n\tfilterPoints( bridgeReverse, bridgeReverse.next );\n\treturn filterPoints( bridge, bridge.next );\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\tqx = - Infinity,\n\t\tm;\n\n\tconst hx = hole.x, hy = hole.y;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\t\t\t\tif ( x === hx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === 0 ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = ( x - minX ) * invSize | 0;\n\ty = ( y - minY ) * invSize | 0;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) >= ( ax - px ) * ( cy - py ) &&\n ( ax - px ) * ( by - py ) >= ( bx - px ) * ( ay - py ) &&\n ( bx - px ) * ( cy - py ) >= ( cx - px ) * ( by - py );\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n ( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n ( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n equals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = 0;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tconst depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn pt.clone().addScaledVector( vec, size );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\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\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tdata.options = Object.assign( {}, options );\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy === 0 && thetaStart === 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy === heightSegments && thetaEnd === Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShadowMaterial = true;\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.isRawShaderMaterial = true;\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshStandardMaterial = true;\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhysicalMaterial = true;\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.anisotropyRotation = 0;\n\t\tthis.anisotropyMap = null;\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.iridescenceMap = null;\n\t\tthis.iridescenceIOR = 1.3;\n\t\tthis.iridescenceThicknessRange = [ 100, 400 ];\n\t\tthis.iridescenceThicknessMap = null;\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = Infinity;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._anisotropy = 0;\n\t\tthis._clearcoat = 0;\n\t\tthis._iridescence = 0;\n\t\tthis._sheen = 0.0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget anisotropy() {\n\n\t\treturn this._anisotropy;\n\n\t}\n\n\tset anisotropy( value ) {\n\n\t\tif ( this._anisotropy > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._anisotropy = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget iridescence() {\n\n\t\treturn this._iridescence;\n\n\t}\n\n\tset iridescence( value ) {\n\n\t\tif ( this._iridescence > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._iridescence = value;\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.anisotropy = source.anisotropy;\n\t\tthis.anisotropyRotation = source.anisotropyRotation;\n\t\tthis.anisotropyMap = source.anisotropyMap;\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.ior = source.ior;\n\n\t\tthis.iridescence = source.iridescence;\n\t\tthis.iridescenceMap = source.iridescenceMap;\n\t\tthis.iridescenceIOR = source.iridescenceIOR;\n\t\tthis.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ];\n\t\tthis.iridescenceThicknessMap = source.iridescenceThicknessMap;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhongMaterial = true;\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshToonMaterial = true;\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshNormalMaterial = true;\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshLambertMaterial = true;\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshMatcapMaterial = true;\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineDashedMaterial = true;\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// converts an array to a specific type\nfunction convertArray( array, type, forceClone ) {\n\n\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t! forceClone && array.constructor === type ) return array;\n\n\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\treturn new type( array ); // create typed array\n\n\t}\n\n\treturn Array.prototype.slice.call( array ); // create Array\n\n}\n\nfunction isTypedArray( object ) {\n\n\treturn ArrayBuffer.isView( object ) &&\n\t\t! ( object instanceof DataView );\n\n}\n\n// returns an array by which times and values can be sorted\nfunction getKeyframeOrder( times ) {\n\n\tfunction compareTime( i, j ) {\n\n\t\treturn times[ i ] - times[ j ];\n\n\t}\n\n\tconst n = times.length;\n\tconst result = new Array( n );\n\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\tresult.sort( compareTime );\n\n\treturn result;\n\n}\n\n// uses the array previously returned by 'getKeyframeOrder' to sort data\nfunction sortedArray( values, stride, order ) {\n\n\tconst nValues = values.length;\n\tconst result = new values.constructor( nValues );\n\n\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\tconst srcOffset = order[ i ] * stride;\n\n\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t}\n\n\t}\n\n\treturn result;\n\n}\n\n// function for parsing AOS keyframe formats\nfunction flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\tlet i = 1, key = jsonKeys[ 0 ];\n\n\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\tkey = jsonKeys[ i ++ ];\n\n\t}\n\n\tif ( key === undefined ) return; // no data\n\n\tlet value = key[ valuePropertyName ];\n\tif ( value === undefined ) return; // no data\n\n\tif ( Array.isArray( value ) ) {\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else if ( value.toArray !== undefined ) {\n\n\t\t// ...assume THREE.Math-ish\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else {\n\n\t\t// otherwise push as-is\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( value );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t}\n\n}\n\nfunction subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\tconst clip = sourceClip.clone();\n\n\tclip.name = name;\n\n\tconst tracks = [];\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tconst track = clip.tracks[ i ];\n\t\tconst valueSize = track.getValueSize();\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( times.length === 0 ) continue;\n\n\t\ttrack.times = convertArray( times, track.times.constructor );\n\t\ttrack.values = convertArray( values, track.values.constructor );\n\n\t\ttracks.push( track );\n\n\t}\n\n\tclip.tracks = tracks;\n\n\t// find minimum .times value across all tracks in the trimmed clip\n\n\tlet minStartTime = Infinity;\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t}\n\n\t}\n\n\t// shift all tracks such that clip begins at t=0\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t}\n\n\tclip.resetDuration();\n\n\treturn clip;\n\n}\n\nfunction makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\tif ( fps <= 0 ) fps = 30;\n\n\tconst numTracks = referenceClip.tracks.length;\n\tconst referenceTime = referenceFrame / fps;\n\n\t// Make each track's values relative to the values at the reference frame\n\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t// Skip this track if it's non-numeric\n\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t} );\n\n\t\tif ( targetTrack === undefined ) continue;\n\n\t\tlet referenceOffset = 0;\n\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t}\n\n\t\tlet targetOffset = 0;\n\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t}\n\n\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\tlet referenceValue;\n\n\t\t// Find the value to subtract out of the track\n\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else {\n\n\t\t\t// Interpolate to the reference value\n\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\treferenceValue = interpolant.resultBuffer.slice( startIndex, endIndex );\n\n\t\t}\n\n\t\t// Conjugate the quaternion\n\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t}\n\n\t\t// Subtract the reference value from all of the track values\n\n\t\tconst numTimes = targetTrack.times.length;\n\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart,\n\t\t\t\t\treferenceValue,\n\t\t\t\t\t0,\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\treturn targetClip;\n\n}\n\nconst AnimationUtils = {\n\tconvertArray: convertArray,\n\tisTypedArray: isTypedArray,\n\tgetKeyframeOrder: getKeyframeOrder,\n\tsortedArray: sortedArray,\n\tflattenJSON: flattenJSON,\n\tsubclip: subclip,\n\tmakeClipAdditive: makeClipAdditive\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t// Template methods for derived classes:\n\n\tinterpolate_( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t}\n\n\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = convertArray( times, this.TimeBufferType );\n\t\tthis.values = convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': convertArray( track.times, Array ),\n\t\t\t\t'values': convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\tgetInterpolation() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t}\n\n\tgetValueSize() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t}\n\n\t// move all keyframes either forwards or backwards in time\n\tshift( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = times.slice( from, to );\n\t\t\tthis.values = this.values.slice( from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = this.times.slice(),\n\t\t\tvalues = this.values.slice(),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = times.slice( 0, writeIndex );\n\t\t\tthis.values = values.slice( 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = this.times.slice();\n\t\tconst values = this.values.slice();\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = getKeyframeOrder( times );\n\t\t\ttimes = sortedArray( times, 1, order );\n\t\t\tvalues = sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t}\n\n\t// parse the animation.hierarchy format\n\tstatic parseAnimation( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tflattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * fps;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tflattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = /*@__PURE__*/ new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nLoader.DEFAULT_MATERIAL_NAME = '__DEFAULT';\n\nconst loading = {};\n\nclass HttpError extends Error {\n\n\tconstructor( message, response ) {\n\n\t\tsuper( message );\n\t\tthis.response = response;\n\n\t}\n\n}\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\n\t\t\t\t\t// Nginx needs X-File-Size check\n\t\t\t\t\t// https://serverfault.com/questions/482875/why-does-nginx-remove-content-length-header-for-chunked-content\n\t\t\t\t\tconst contentLength = response.headers.get( 'Content-Length' ) || response.headers.get( 'X-File-Size' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new HttpError( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === undefined ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n}\n\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\t\ttexture.colorSpace = SRGBColorSpace;\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tlet texData;\n\n\t\t\ttry {\n\n\t\t\t\ttexData = scope.parse( buffer );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) {\n\n\t\t\t\t\tonError( error );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = texData.colorSpace;\n\n\t\t\t} else if ( texData.encoding !== undefined ) { // @deprecated, r152\n\n\t\t\t\ttexture.encoding = texData.encoding;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.isLight = true;\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.isHemisphereLight = true;\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( _projScreenMatrix$1 );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.isSpotLightShadow = true;\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isSpotLight = true;\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay;\n\n\t\tthis.map = null;\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isPointLight = true;\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay;\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t\tthis.isDirectionalLightShadow = true;\n\n\t}\n\n}\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isDirectionalLight = true;\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isAmbientLight = true;\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isRectAreaLight = true;\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.isSphericalHarmonics3 = true;\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isLightProbe = true;\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = MaterialLoader.createMaterialFromType( json.type );\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.iridescence !== undefined ) material.iridescence = json.iridescence;\n\t\tif ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR;\n\t\tif ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.anisotropy !== undefined ) material.anisotropy = json.anisotropy;\n\t\tif ( json.anisotropyRotation !== undefined ) material.anisotropyRotation = json.anisotropyRotation;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.alphaHash !== undefined ) material.alphaHash = json.alphaHash;\n\t\tif ( json.depthFunc !== undefined ) material.depthFunc = json.depthFunc;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.blendSrc !== undefined ) material.blendSrc = json.blendSrc;\n\t\tif ( json.blendDst !== undefined ) material.blendDst = json.blendDst;\n\t\tif ( json.blendEquation !== undefined ) material.blendEquation = json.blendEquation;\n\t\tif ( json.blendSrcAlpha !== undefined ) material.blendSrcAlpha = json.blendSrcAlpha;\n\t\tif ( json.blendDstAlpha !== undefined ) material.blendDstAlpha = json.blendDstAlpha;\n\t\tif ( json.blendEquationAlpha !== undefined ) material.blendEquationAlpha = json.blendEquationAlpha;\n\t\tif ( json.blendColor !== undefined && material.blendColor !== undefined ) material.blendColor.setHex( json.blendColor );\n\t\tif ( json.blendAlpha !== undefined ) material.blendAlpha = json.blendAlpha;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== undefined ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\t\tif ( json.forceSinglePass !== undefined ) material.forceSinglePass = json.forceSinglePass;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.glslVersion !== undefined ) material.glslVersion = json.glslVersion;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.lights !== undefined ) material.lights = json.lights;\n\t\tif ( json.clipping !== undefined ) material.clipping = json.clipping;\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap );\n\t\tif ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.anisotropyMap !== undefined ) material.anisotropyMap = getTexture( json.anisotropyMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n\tstatic createMaterialFromType( type ) {\n\n\t\tconst materialLib = {\n\t\t\tShadowMaterial,\n\t\t\tSpriteMaterial,\n\t\t\tRawShaderMaterial,\n\t\t\tShaderMaterial,\n\t\t\tPointsMaterial,\n\t\t\tMeshPhysicalMaterial,\n\t\t\tMeshStandardMaterial,\n\t\t\tMeshPhongMaterial,\n\t\t\tMeshToonMaterial,\n\t\t\tMeshNormalMaterial,\n\t\t\tMeshLambertMaterial,\n\t\t\tMeshDepthMaterial,\n\t\t\tMeshDistanceMaterial,\n\t\t\tMeshBasicMaterial,\n\t\t\tMeshMatcapMaterial,\n\t\t\tLineDashedMaterial,\n\t\t\tLineBasicMaterial,\n\t\t\tMaterial\n\t\t};\n\n\t\treturn new materialLib[ type ]();\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t}\n\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isInstancedBufferGeometry = true;\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\\'t load ' + url ) );\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ].data instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\t\t\t\tif ( data.channel !== undefined ) texture.channel = data.channel;\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.internalFormat !== undefined ) texture.internalFormat = data.internalFormat;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.colorSpace !== undefined ) texture.colorSpace = data.colorSpace;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding; // @deprecated, r152\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.generateMipmaps !== undefined ) texture.generateMipmaps = data.generateMipmaps;\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\t\t\t\tif ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data.fog.name !== '' ) {\n\n\t\t\t\t\t\tobject.fog.name = data.fog.name;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.backgroundBlurriness !== undefined ) object.backgroundBlurriness = data.backgroundBlurriness;\n\t\t\t\tif ( data.backgroundIntensity !== undefined ) object.backgroundIntensity = data.backgroundIntensity;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'BatchedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new BatchedMesh( data.maxGeometryCount, data.maxVertexCount, data.maxIndexCount, material );\n\t\t\t\tobject.geometry = geometry;\n\t\t\t\tobject.perObjectFrustumCulled = data.perObjectFrustumCulled;\n\t\t\t\tobject.sortObjects = data.sortObjects;\n\n\t\t\t\tobject._drawRanges = data.drawRanges;\n\t\t\t\tobject._reservedRanges = data.reservedRanges;\n\n\t\t\t\tobject._visibility = data.visibility;\n\t\t\t\tobject._active = data.active;\n\t\t\t\tobject._bounds = data.bounds.map( bound => {\n\n\t\t\t\t\tconst box = new Box3();\n\t\t\t\t\tbox.min.fromArray( bound.boxMin );\n\t\t\t\t\tbox.max.fromArray( bound.boxMax );\n\n\t\t\t\t\tconst sphere = new Sphere();\n\t\t\t\t\tsphere.radius = bound.sphereRadius;\n\t\t\t\t\tsphere.center.fromArray( bound.sphereCenter );\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\t\t\tbox: box,\n\n\t\t\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\t\t\tsphere: sphere\n\t\t\t\t\t};\n\n\t\t\t\t} );\n\n\t\t\t\tobject._maxGeometryCount = data.maxGeometryCount;\n\t\t\t\tobject._maxVertexCount = data.maxVertexCount;\n\t\t\t\tobject._maxIndexCount = data.maxIndexCount;\n\n\t\t\t\tobject._geometryInitialized = data.geometryInitialized;\n\t\t\t\tobject._geometryCount = data.geometryCount;\n\n\t\t\t\tobject._matricesTexture = getTexture( data.matricesTexture.uuid );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.up !== undefined ) object.up.fromArray( data.up );\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance, level.hysteresis );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.isImageBitmapLoader = true;\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\t// If cached is a promise, wait for it to resolve\n\t\t\tif ( cached.then ) {\n\n\t\t\t\tcached.then( imageBitmap => {\n\n\t\t\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} ).catch( e => {\n\n\t\t\t\t\tif ( onError ) onError( e );\n\n\t\t\t\t} );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// If cached is not a promise (i.e., it's already an imageBitmap)\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tconst promise = fetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t\treturn imageBitmap;\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tCache.remove( url );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tCache.add( url, promise );\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n}\n\nlet _context;\n\nclass AudioContext {\n\n\tstatic getContext() {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t}\n\n\tstatic setContext( value ) {\n\n\t\t_context = value;\n\n\t}\n\n}\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} ).catch( handleError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\thandleError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\tfunction handleError( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\n\t\t}\n\n\t}\n\n}\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tif ( this.source !== null ) {\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t}\n\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this._connected === false ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.isPlaying === true && this.source.detune !== undefined ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tconnect() {\n\n\t\tsuper.connect();\n\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /*@__PURE__*/ /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /*@__PURE__*/ /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /*@__PURE__*/ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /*@__PURE__*/ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones', 'map' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName );\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t}\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName );\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'map':\n\n\t\t\t\t\tif ( 'map' in targetObject ) {\n\n\t\t\t\t\t\ttargetObject = targetObject.map;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.map ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.map;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\tunbind() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n}\n\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\n\n];\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n */\n\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.isAnimationObjectGroup = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// remove & forget\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\tdeltaTime = 0;\n\n\t\t\t} else {\n\n\n\t\t\t\tthis._startTime = null; // unschedule\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _controlInterpolantsResultBuffer = new Float32Array( 1 );\n\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, _controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t// get an existing action\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// advance the time and update apply the animation\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remove a targeted clip from the cache\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nlet _id = 0;\n\nclass UniformsGroup extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isUniformsGroup = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\t\tthis.name = '';\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.uniforms = [];\n\n\t}\n\n\tadd( uniform ) {\n\n\t\tthis.uniforms.push( uniform );\n\n\t\treturn this;\n\n\t}\n\n\tremove( uniform ) {\n\n\t\tconst index = this.uniforms.indexOf( uniform );\n\n\t\tif ( index !== - 1 ) this.uniforms.splice( index, 1 );\n\n\t\treturn this;\n\n\t}\n\n\tsetName( name ) {\n\n\t\tthis.name = name;\n\n\t\treturn this;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.usage = source.usage;\n\n\t\tconst uniformsSource = source.uniforms;\n\n\t\tthis.uniforms.length = 0;\n\n\t\tfor ( let i = 0, l = uniformsSource.length; i < l; i ++ ) {\n\n\t\t\tconst uniforms = Array.isArray( uniformsSource[ i ] ) ? uniformsSource[ i ] : [ uniformsSource[ i ] ];\n\n\t\t\tfor ( let j = 0; j < uniforms.length; j ++ ) {\n\n\t\t\t\tthis.uniforms.push( uniforms[ j ].clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.isInstancedInterleavedBuffer = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.isGLBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t}\n\n\tsetFromCamera( coords, camera ) {\n\n\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n\tintersectObjects( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be between EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox2 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$4 ).distanceTo( point );\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'SpotLightHelper';\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.type = 'SkeletonHelper';\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'HemisphereLightHelper';\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the sectors\n\n\t\tif ( sectors > 1 ) {\n\n\t\t\tfor ( let i = 0; i < sectors; i ++ ) {\n\n\t\t\t\tconst v = ( i / sectors ) * ( Math.PI * 2 );\n\n\t\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( x, 0, z );\n\n\t\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// create the rings\n\n\t\tfor ( let i = 0; i < rings; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / rings * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'DirectionalLightHelper';\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttps://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2' );\n\t\taddLine( 'n2', 'n4' );\n\t\taddLine( 'n4', 'n3' );\n\t\taddLine( 'n3', 'n1' );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2' );\n\t\taddLine( 'f2', 'f4' );\n\t\taddLine( 'f4', 'f3' );\n\t\taddLine( 'f3', 'f1' );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1' );\n\t\taddLine( 'n2', 'f2' );\n\t\taddLine( 'n3', 'f3' );\n\t\taddLine( 'n4', 'f4' );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1' );\n\t\taddLine( 'p', 'n2' );\n\t\taddLine( 'p', 'n3' );\n\t\taddLine( 'p', 'n4' );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2' );\n\t\taddLine( 'u2', 'u3' );\n\t\taddLine( 'u3', 'u1' );\n\n\t\t// target\n\n\t\taddLine( 'c', 't' );\n\t\taddLine( 'p', 'c' );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2' );\n\t\taddLine( 'cn3', 'cn4' );\n\n\t\taddLine( 'cf1', 'cf2' );\n\t\taddLine( 'cf3', 'cf4' );\n\n\t\tfunction addLine( a, b ) {\n\n\t\t\taddPoint( a );\n\t\t\taddPoint( b );\n\n\t\t}\n\n\t\tfunction addPoint( id ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( 0, 0, 0 );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\tthis.setColors( colorFrustum, colorCone, colorUp, colorTarget, colorCross );\n\n\t}\n\n\tsetColors( frustum, cone, up, target, cross ) {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\t// near\n\n\t\tcolorAttribute.setXYZ( 0, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 1, frustum.r, frustum.g, frustum.b ); // n1, n2\n\t\tcolorAttribute.setXYZ( 2, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 3, frustum.r, frustum.g, frustum.b ); // n2, n4\n\t\tcolorAttribute.setXYZ( 4, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 5, frustum.r, frustum.g, frustum.b ); // n4, n3\n\t\tcolorAttribute.setXYZ( 6, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 7, frustum.r, frustum.g, frustum.b ); // n3, n1\n\n\t\t// far\n\n\t\tcolorAttribute.setXYZ( 8, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 9, frustum.r, frustum.g, frustum.b ); // f1, f2\n\t\tcolorAttribute.setXYZ( 10, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 11, frustum.r, frustum.g, frustum.b ); // f2, f4\n\t\tcolorAttribute.setXYZ( 12, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 13, frustum.r, frustum.g, frustum.b ); // f4, f3\n\t\tcolorAttribute.setXYZ( 14, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 15, frustum.r, frustum.g, frustum.b ); // f3, f1\n\n\t\t// sides\n\n\t\tcolorAttribute.setXYZ( 16, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 17, frustum.r, frustum.g, frustum.b ); // n1, f1\n\t\tcolorAttribute.setXYZ( 18, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 19, frustum.r, frustum.g, frustum.b ); // n2, f2\n\t\tcolorAttribute.setXYZ( 20, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 21, frustum.r, frustum.g, frustum.b ); // n3, f3\n\t\tcolorAttribute.setXYZ( 22, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 23, frustum.r, frustum.g, frustum.b ); // n4, f4\n\n\t\t// cone\n\n\t\tcolorAttribute.setXYZ( 24, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 25, cone.r, cone.g, cone.b ); // p, n1\n\t\tcolorAttribute.setXYZ( 26, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 27, cone.r, cone.g, cone.b ); // p, n2\n\t\tcolorAttribute.setXYZ( 28, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 29, cone.r, cone.g, cone.b ); // p, n3\n\t\tcolorAttribute.setXYZ( 30, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 31, cone.r, cone.g, cone.b ); // p, n4\n\n\t\t// up\n\n\t\tcolorAttribute.setXYZ( 32, up.r, up.g, up.b ); colorAttribute.setXYZ( 33, up.r, up.g, up.b ); // u1, u2\n\t\tcolorAttribute.setXYZ( 34, up.r, up.g, up.b ); colorAttribute.setXYZ( 35, up.r, up.g, up.b ); // u2, u3\n\t\tcolorAttribute.setXYZ( 36, up.r, up.g, up.b ); colorAttribute.setXYZ( 37, up.r, up.g, up.b ); // u3, u1\n\n\t\t// target\n\n\t\tcolorAttribute.setXYZ( 38, target.r, target.g, target.b ); colorAttribute.setXYZ( 39, target.r, target.g, target.b ); // c, t\n\t\tcolorAttribute.setXYZ( 40, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 41, cross.r, cross.g, cross.b ); // p, c\n\n\t\t// cross\n\n\t\tcolorAttribute.setXYZ( 42, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 43, cross.r, cross.g, cross.b ); // cn1, cn2\n\t\tcolorAttribute.setXYZ( 44, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 45, cross.r, cross.g, cross.b ); // cn3, cn4\n\n\t\tcolorAttribute.setXYZ( 46, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 47, cross.r, cross.g, cross.b ); // cf1, cf2\n\t\tcolorAttribute.setXYZ( 48, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 49, cross.r, cross.g, cross.b ); // cf3, cf4\n\n\t\tcolorAttribute.needsUpdate = true;\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, - 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tthis.position.set( 0, 0, 0 );\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, 1 );\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tthis.translateZ( - this.plane.constant );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.line.geometry.dispose();\n\t\tthis.line.material.dispose();\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DisplayP3ColorSpace, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, Float64BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearDisplayP3ColorSpace, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, P3Primaries, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, Rec709Primaries, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoTexture, WebGL1Renderer, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLRenderTarget, WebGLRenderer, WebGLUtils, WebGPUCoordinateSystem, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, _SRGBAFormat, createCanvasElement, sRGBEncoding };\n","/** Key for render batches. */\nexport class BatchingKey {\n /**\n * Components order matters for lookup by prefix.\n * @param layerName {?String} Layer name, null if not bound to a layer (e.g. block definition\n * without layer specified).\n * @param blockName {?String} Block name if applicable. If specified and geometryType is not\n * BLOCK_INSTANCE, the batch is part of block definition. Otherwise it is block instance.\n * @param geometryType {?number} One of BatchingKey.GeometryType.\n * @param color {number} Color ARGB value.\n * @param lineType {?number} Line type ID, null for non-lines. Zero is default type (solid\n * line).\n */\n constructor(layerName, blockName, geometryType, color, lineType) {\n this.layerName = layerName ?? null\n this.blockName = blockName ?? null\n this.geometryType = geometryType ?? null\n this.color = color\n this.lineType = lineType ?? null\n }\n\n /** Comparator function. Fields lexical order corresponds to the constructor arguments order.\n * Null values are always first.\n */\n Compare(other) {\n let c = CompareValues(this.layerName, other.layerName)\n if (c !== 0) {\n return c\n }\n c = CompareValues(this.blockName, other.blockName)\n if (c !== 0) {\n return c\n }\n c = CompareValues(this.geometryType, other.geometryType)\n if (c !== 0) {\n return c\n }\n c = CompareValues(this.color, other.color)\n if (c !== 0) {\n return c\n }\n return CompareValues(this.lineType, other.lineType)\n }\n\n IsIndexed() {\n return this.geometryType === BatchingKey.GeometryType.INDEXED_LINES ||\n this.geometryType === BatchingKey.GeometryType.INDEXED_TRIANGLES\n }\n\n IsInstanced() {\n return this.geometryType === BatchingKey.GeometryType.BLOCK_INSTANCE ||\n this.geometryType === BatchingKey.GeometryType.POINT_INSTANCE\n }\n}\n\nBatchingKey.GeometryType = Object.freeze({\n POINTS: 0,\n LINES: 1,\n INDEXED_LINES: 2,\n TRIANGLES: 3,\n INDEXED_TRIANGLES: 4,\n BLOCK_INSTANCE: 5,\n /** Shaped point instances. */\n POINT_INSTANCE: 6\n})\n\n/** Comparator function for arbitrary types. Null is always first. This is used just to make some\n * ordering for keys in tree structures, so no locale-aware string comparison.\n */\nexport function CompareValues(v1, v2) {\n if (v1 === null) {\n if (v2 === null) {\n return 0\n }\n return -1\n }\n if (v2 === null) {\n return 1\n }\n if (v1 < v2) {\n return -1\n }\n if (v1 > v2) {\n return 1\n }\n return 0\n}\n","/**\n * DxfArrayScanner\n *\n * Based off the AutoCad 2012 DXF Reference\n * http://images.autodesk.com/adsk/files/autocad_2012_pdf_dxf-reference_enu.pdf\n *\n * Reads through an array representing lines of a dxf file. Takes an array and\n * provides an easy interface to extract group code and value pairs.\n * @param data - an array where each element represents a line in the dxf file\n * @constructor\n */\nexport default function DxfArrayScanner(data) {\n this._pointer = 0;\n this._data = data;\n this._eof = false;\n}\n\n/**\n * Gets the next group (code, value) from the array. A group is two consecutive elements\n * in the array. The first is the code, the second is the value.\n * @returns {{code: Number}|*}\n */\nDxfArrayScanner.prototype.next = function() {\n var group;\n if(!this.hasNext()) {\n if(!this._eof)\n throw new Error('Unexpected end of input: EOF group not read before end of file. Ended on code ' + this._data[this._pointer]);\n else\n throw new Error('Cannot call \\'next\\' after EOF group has been read');\n }\n\n group = {\n code: parseInt(this._data[this._pointer])\n };\n\n if (isNaN(group.code)) {\n throw new Error(\"Cannot parse group code: \" + this._data[this._pointer])\n }\n\n this._pointer++;\n\n group.value = parseGroupValue(group.code, this._data[this._pointer]);\n\n this._pointer++;\n\n if(group.code === 0 && group.value === 'EOF') this._eof = true;\n\n this.lastReadGroup = group;\n\n return group;\n};\n\nDxfArrayScanner.prototype.peek = function() {\n if(!this.hasNext()) {\n if(!this._eof)\n throw new Error('Unexpected end of input: EOF group not read before end of file. Ended on code ' + this._data[this._pointer]);\n else\n throw new Error('Cannot call \\'next\\' after EOF group has been read');\n }\n\n var group = {\n code: parseInt(this._data[this._pointer])\n };\n\n if (isNaN(group.code)) {\n throw new Error(\"Cannot parse group code: \" + this._data[this._pointer])\n }\n\n group.value = parseGroupValue(group.code, this._data[this._pointer + 1]);\n\n return group;\n};\n\n\nDxfArrayScanner.prototype.rewind = function(numberOfGroups) {\n numberOfGroups = numberOfGroups || 1;\n this._pointer = this._pointer - numberOfGroups * 2;\n};\n\n/**\n * Returns true if there is another code/value pair (2 elements in the array).\n * @returns {boolean}\n */\nDxfArrayScanner.prototype.hasNext = function() {\n // Check if we have read EOF group code\n if(this._eof) {\n return false;\n }\n\n // We need to be sure there are two lines available\n if(this._pointer > this._data.length - 2) {\n return false;\n }\n return true;\n};\n\n/**\n * Returns true if the scanner is at the end of the array\n * @returns {boolean}\n */\nDxfArrayScanner.prototype.isEOF = function() {\n return this._eof;\n};\n\n/**\n * Parse a value to its proper type.\n * See pages 3 - 10 of the AutoCad DXF 2012 reference given at the top of this file\n *\n * @param code\n * @param value\n * @returns {*}\n */\nfunction parseGroupValue(code, value) {\n if(code <= 9) return value;\n if(code >= 10 && code <= 59) return parseFloat(value.trim());\n if(code >= 60 && code <= 99) return parseInt(value.trim());\n if(code >= 100 && code <= 109) return value;\n if(code >= 110 && code <= 149) return parseFloat(value.trim());\n if(code >= 160 && code <= 179) return parseInt(value.trim());\n if(code >= 210 && code <= 239) return parseFloat(value.trim());\n if(code >= 270 && code <= 289) return parseInt(value.trim());\n if(code >= 290 && code <= 299) return parseBoolean(value.trim());\n if(code >= 300 && code <= 369) return value;\n if(code >= 370 && code <= 389) return parseInt(value.trim());\n if(code >= 390 && code <= 399) return value;\n if(code >= 400 && code <= 409) return parseInt(value.trim());\n if(code >= 410 && code <= 419) return value;\n if(code >= 420 && code <= 429) return parseInt(value.trim());\n if(code >= 430 && code <= 439) return value;\n if(code >= 440 && code <= 459) return parseInt(value.trim());\n if(code >= 460 && code <= 469) return parseFloat(value.trim());\n if(code >= 470 && code <= 481) return value;\n if(code === 999) return value;\n if(code >= 1000 && code <= 1009) return value;\n if(code >= 1010 && code <= 1059) return parseFloat(value.trim());\n if(code >= 1060 && code <= 1071) return parseInt(value.trim());\n\n console.log('WARNING: Group code does not have a defined type: %j', { code: code, value: value });\n return value;\n}\n\n/**\n * Parse a boolean according to a 1 or 0 value\n * @param str\n * @returns {boolean}\n */\nfunction parseBoolean(str) {\n if(str === '0') return false;\n if(str === '1') return true;\n throw TypeError('String \\'' + str + '\\' cannot be cast to Boolean type');\n}\n","/**\n * AutoCad files sometimes use an indexed color value between 1 and 255 inclusive.\n * Each value corresponds to a color. index 1 is red, that is 16711680 or 0xFF0000.\n * index 0 and 256, while included in this array, are actually reserved for inheritance\n * values in AutoCad so they should not be used for index color lookups.\n */\n\nexport default [\n 0,\n 16711680,\n 16776960,\n 65280,\n 65535,\n 255,\n 16711935,\n 16777215,\n 8421504,\n 12632256,\n 16711680,\n 16744319,\n 13369344,\n 13395558,\n 10027008,\n 10046540,\n 8323072,\n 8339263,\n 4980736,\n 4990502,\n 16727808,\n 16752511,\n 13382400,\n 13401958,\n 10036736,\n 10051404,\n 8331008,\n 8343359,\n 4985600,\n 4992806,\n 16744192,\n 16760703,\n 13395456,\n 13408614,\n 10046464,\n 10056268,\n 8339200,\n 8347455,\n 4990464,\n 4995366,\n 16760576,\n 16768895,\n 13408512,\n 13415014,\n 10056192,\n 10061132,\n 8347392,\n 8351551,\n 4995328,\n 4997670,\n 16776960,\n 16777087,\n 13421568,\n 13421670,\n 10000384,\n 10000460,\n 8355584,\n 8355647,\n 5000192,\n 5000230,\n 12582656,\n 14679935,\n 10079232,\n 11717734,\n 7510016,\n 8755276,\n 6258432,\n 7307071,\n 3755008,\n 4344870,\n 8388352,\n 12582783,\n 6736896,\n 10079334,\n 5019648,\n 7510092,\n 4161280,\n 6258495,\n 2509824,\n 3755046,\n 4194048,\n 10485631,\n 3394560,\n 8375398,\n 2529280,\n 6264908,\n 2064128,\n 5209919,\n 1264640,\n 3099686,\n 65280,\n 8388479,\n 52224,\n 6736998,\n 38912,\n 5019724,\n 32512,\n 4161343,\n 19456,\n 2509862,\n 65343,\n 8388511,\n 52275,\n 6737023,\n 38950,\n 5019743,\n 32543,\n 4161359,\n 19475,\n 2509871,\n 65407,\n 8388543,\n 52326,\n 6737049,\n 38988,\n 5019762,\n 32575,\n 4161375,\n 19494,\n 2509881,\n 65471,\n 8388575,\n 52377,\n 6737074,\n 39026,\n 5019781,\n 32607,\n 4161391,\n 19513,\n 2509890,\n 65535,\n 8388607,\n 52428,\n 6737100,\n 39064,\n 5019800,\n 32639,\n 4161407,\n 19532,\n 2509900,\n 49151,\n 8380415,\n 39372,\n 6730444,\n 29336,\n 5014936,\n 24447,\n 4157311,\n 14668,\n 2507340,\n 32767,\n 8372223,\n 26316,\n 6724044,\n 19608,\n 5010072,\n 16255,\n 4153215,\n 9804,\n 2505036,\n 16383,\n 8364031,\n 13260,\n 6717388,\n 9880,\n 5005208,\n 8063,\n 4149119,\n 4940,\n 2502476,\n 255,\n 8355839,\n 204,\n 6710988,\n 152,\n 5000344,\n 127,\n 4145023,\n 76,\n 2500172,\n 4129023,\n 10452991,\n 3342540,\n 8349388,\n 2490520,\n 6245528,\n 2031743,\n 5193599,\n 1245260,\n 3089996,\n 8323327,\n 12550143,\n 6684876,\n 10053324,\n 4980888,\n 7490712,\n 4128895,\n 6242175,\n 2490444,\n 3745356,\n 12517631,\n 14647295,\n 10027212,\n 11691724,\n 7471256,\n 8735896,\n 6226047,\n 7290751,\n 3735628,\n 4335180,\n 16711935,\n 16744447,\n 13369548,\n 13395660,\n 9961624,\n 9981080,\n 8323199,\n 8339327,\n 4980812,\n 4990540,\n 16711871,\n 16744415,\n 13369497,\n 13395634,\n 9961586,\n 9981061,\n 8323167,\n 8339311,\n 4980793,\n 4990530,\n 16711807,\n 16744383,\n 13369446,\n 13395609,\n 9961548,\n 9981042,\n 8323135,\n 8339295,\n 4980774,\n 4990521,\n 16711743,\n 16744351,\n 13369395,\n 13395583,\n 9961510,\n 9981023,\n 8323103,\n 8339279,\n 4980755,\n 4990511,\n 3355443,\n 5987163,\n 8684676,\n 11382189,\n 14079702,\n 16777215\n];","import log from \"loglevel\"\n\n\nexport default class ExtendedDataParser {\n\n constructor() {\n this.appName = null\n this.appNameWarningShown = false\n this.lastString = null\n this.sectionStack = [this._CreateSection()]\n this.failure = false\n }\n\n /**\n * Feed next token.\n * @return {boolean} True if new parser instance should be created for this token.\n */\n Feed(curr) {\n if (!this.appName) {\n if (curr.code == 1001) {\n this.appName = curr.value\n return false\n }\n if (!this.appNameWarningShown) {\n this.appNameWarningShown = true\n log.warn(\"XDATA section does not start with application name\")\n }\n return false\n }\n\n if (curr.code == 1001) {\n return true\n }\n\n if (this.failure) {\n /* Ignore all the rest content in case of parsing failure. */\n return false\n }\n\n if (curr.code == 1000) {\n if (this.lastString) {\n log.warn(\"XDATA section unused string: \" + this.lastString)\n }\n this.lastString = curr.value\n return false\n }\n\n const curSection = this._currentSection\n\n if (curr.code == 1002) {\n if (curr.value == \"{\") {\n if (!this.lastString) {\n log.warn(\"Unnamed XDATA section encountered\")\n this.failure = true\n return false\n }\n const newSection = this._CreateSection()\n curSection[this.lastString] = newSection\n this.lastString = null\n this.sectionStack.push(newSection)\n return false\n }\n if (curr.value == \"}\") {\n if (this.sectionStack.length < 2) {\n log.warn(\"Unmatched XDATA section closing\")\n this.failure = true\n return false\n }\n this.sectionStack.length = this.sectionStack.length - 1\n return false\n }\n log.warn(\"Bad XDATA section control string encountered: \" + curr.value)\n this.failure = true\n return false\n }\n\n if (this.lastString !== null) {\n curSection.values.push(this._CreateValue(1000, this.lastString))\n this.lastString = null\n }\n\n curSection.values.push(this._CreateValue(curr.code, curr.value))\n\n return false\n }\n\n /** Finalize XDATA section parsing. */\n Finish(entity) {\n if (this.failure) {\n return\n }\n if (this.appName) {\n let xdata\n if (entity.hasOwnProperty(\"xdata\")) {\n xdata = entity.xdata\n } else {\n xdata = {}\n entity.xdata = xdata\n }\n xdata[this.appName] = this.sectionStack[0]\n }\n }\n\n get _currentSection() {\n return this.sectionStack[this.sectionStack.length - 1]\n }\n\n _CreateSection() {\n return {\n values: []\n }\n }\n\n _CreateValue(code, value) {\n return {code, value}\n }\n}\n","import AUTO_CAD_COLOR_INDEX from \"./AutoCadColorIndex.js\";\nimport ExtendedDataParser from \"./ExtendedDataParser.js\";\n\n/**\n * Returns the truecolor value of the given AutoCad color index value\n * @return {Number} truecolor value as a number\n */\nexport function getAcadColor(index) {\n return AUTO_CAD_COLOR_INDEX[index];\n}\n\n/**\n * Parses the 2D or 3D coordinate, vector, or point. When complete,\n * the scanner remains on the last group of the coordinate.\n * @param {*} scanner\n */\nexport function parsePoint(scanner) {\n var point = {};\n\n // Reread group for the first coordinate\n scanner.rewind();\n var curr = scanner.next();\n\n var code = curr.code;\n point.x = curr.value;\n\n code += 10;\n curr = scanner.next();\n if(curr.code !== code)\n throw new Error('Expected code for point value to be ' + code +\n ' but got ' + curr.code + '.');\n point.y = curr.value;\n\n code += 10;\n curr = scanner.next();\n if(curr.code !== code)\n {\n // Only the x and y are specified. Don't read z.\n scanner.rewind(); // Let the calling code advance off the point\n return point;\n }\n point.z = curr.value;\n\n return point;\n}\n\n/** Some entities may contain embedded object which is started by group 101. All the rest data until\n * end of entity should not be interpreted as entity attributes. There is no documentation for this\n * feature.\n * @param scanner\n */\nexport function skipEmbeddedObject(scanner) {\n /* Ensure proper start group. */\n scanner.rewind()\n let curr = scanner.next()\n if (curr.code !== 101) {\n throw new Error(\"Bad call for skipEmbeddedObject()\")\n }\n do {\n curr = scanner.next()\n } while (curr.code !== 0)\n scanner.rewind()\n}\n\n/**\n * Attempts to parse codes common to all entities. Returns true if the group\n * was handled by this function.\n * @param {*} entity - the entity currently being parsed\n * @param {*} curr - the current group being parsed\n */\nexport function checkCommonEntityProperties(entity, curr, scanner) {\n let xdataParser = null\n while (curr.code >= 1000) {\n if (xdataParser == null) {\n xdataParser = new ExtendedDataParser()\n }\n if (xdataParser.Feed(curr)) {\n xdataParser.Finish(entity)\n xdataParser = null\n } else {\n curr = scanner.next()\n }\n }\n if (xdataParser) {\n xdataParser.Finish(entity)\n /* Groups following XDATA should be parsed on next iteration. */\n scanner.rewind()\n return true\n }\n\n switch(curr.code) {\n case 0:\n entity.type = curr.value;\n break;\n case 5:\n entity.handle = curr.value;\n break;\n case 6:\n entity.lineType = curr.value;\n break;\n case 8: // Layer name\n entity.layer = curr.value;\n break;\n case 48:\n entity.lineTypeScale = curr.value;\n break;\n case 60:\n entity.hidden = !!curr.value;\n break;\n case 62: // Acad Index Color. 0 inherits ByBlock. 256 inherits ByLayer. Default is bylayer\n entity.colorIndex = curr.value;\n entity.color = getAcadColor(Math.abs(curr.value));\n break;\n case 67:\n entity.inPaperSpace = curr.value !== 0;\n break;\n case 100:\n //ignore\n break;\n case 330:\n entity.ownerHandle = curr.value;\n break;\n case 347:\n entity.materialObjectHandle = curr.value;\n break;\n case 370:\n //From https://www.woutware.com/Forum/Topic/955/lineweight?returnUrl=%2FForum%2FUserPosts%3FuserId%3D478262319\n // An integer representing 100th of mm, must be one of the following values:\n // 0, 5, 9, 13, 15, 18, 20, 25, 30, 35, 40, 50, 53, 60, 70, 80, 90, 100, 106, 120, 140, 158, 200, 211.\n // -3 = STANDARD, -2 = BYLAYER, -1 = BYBLOCK\n entity.lineweight = curr.value;\n break;\n case 420: // TrueColor Color\n entity.color = curr.value;\n break;\n default:\n return false;\n }\n return true;\n}\n","\nimport * as helpers from \"../ParseHelpers.js\"\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = '3DFACE';\n\nEntityParser.prototype.parseEntity = function(scanner, curr) {\n\n var entity = { type: curr.value, vertices: [] };\n curr = scanner.next();\n while (curr !== 'EOF') {\n if (curr.code === 0) break;\n switch (curr.code) {\n case 70: // 1 = Closed shape, 128 = plinegen?, 0 = default\n entity.shape = ((curr.value & 1) === 1);\n entity.hasContinuousLinetypePattern = ((curr.value & 128) === 128);\n break;\n case 10: // X coordinate of point\n entity.vertices = parse3dFaceVertices(scanner, curr);\n curr = scanner.lastReadGroup;\n break;\n default:\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n curr = scanner.next();\n }\n return entity;\n};\n\nfunction parse3dFaceVertices(scanner, curr) {\n var vertices = [],\n i;\n var vertexIsStarted = false;\n var vertexIsFinished = false;\n var verticesPer3dFace = 4; // there can be up to four vertices per face, although 3 is most used for TIN\n\n for (i = 0; i <= verticesPer3dFace; i++) {\n var vertex = {};\n while (curr !== 'EOF') {\n if (curr.code === 0 || vertexIsFinished) break;\n\n switch (curr.code) {\n case 10: // X0\n case 11: // X1\n case 12: // X2\n case 13: // X3\n if (vertexIsStarted) {\n vertexIsFinished = true;\n continue;\n }\n vertex.x = curr.value;\n vertexIsStarted = true;\n break;\n case 20: // Y\n case 21:\n case 22:\n case 23:\n vertex.y = curr.value;\n break;\n case 30: // Z\n case 31:\n case 32:\n case 33:\n vertex.z = curr.value;\n break;\n default:\n // it is possible to have entity codes after the vertices.\n // So if code is not accounted for return to entity parser where it might be accounted for\n return vertices;\n continue;\n }\n curr = scanner.next();\n }\n // See https://groups.google.com/forum/#!topic/comp.cad.autocad/9gn8s5O_w6E\n vertices.push(vertex);\n vertexIsStarted = false;\n vertexIsFinished = false;\n }\n scanner.rewind();\n return vertices;\n};\n","\nimport * as helpers from \"../ParseHelpers.js\"\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'ARC';\n\nEntityParser.prototype.parseEntity = function(scanner, curr) {\n var entity, endAngle;\n entity = { type: curr.value };\n curr = scanner.next();\n while(curr !== 'EOF') {\n if(curr.code === 0) break;\n\n switch(curr.code) {\n case 10: // X coordinate of point\n entity.center = helpers.parsePoint(scanner);\n break;\n case 40: // radius\n entity.radius = curr.value;\n break;\n case 50: // start angle\n entity.startAngle = Math.PI / 180 * curr.value;\n break;\n case 51: // end angle\n entity.endAngle = Math.PI / 180 * curr.value;\n break;\n case 210:\n entity.extrusionDirection = helpers.parsePoint(scanner);\n break;\n default: // ignored attribute\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n curr = scanner.next();\n }\n return entity;\n};\n","import * as helpers from \"../ParseHelpers.js\";\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'ATTDEF';\n\nEntityParser.prototype.parseEntity = function (scanner, curr) {\n var entity = {\n type: curr.value,\n scale: 1,\n textStyle: 'STANDARD',\n };\n curr = scanner.next();\n while (curr !== 'EOF') {\n if (curr.code === 0) {\n break;\n }\n switch (curr.code) {\n case 1:\n entity.text = curr.value;\n break;\n case 2:\n entity.tag = curr.value;\n break;\n case 3:\n entity.prompt = curr.value;\n break;\n case 7:\n entity.textStyle = curr.value;\n break;\n case 10: // X coordinate of 'first alignment point'\n entity.startPoint = helpers.parsePoint(scanner);\n break;\n case 11: // X coordinate of 'second alignment point'\n entity.endPoint = helpers.parsePoint(scanner);\n break;\n case 39:\n entity.thickness = curr.value;\n break;\n case 40:\n entity.textHeight = curr.value;\n break;\n case 41:\n entity.scale = curr.value;\n break;\n case 50:\n entity.rotation = curr.value;\n break;\n case 51:\n entity.obliqueAngle = curr.value;\n break;\n case 70:\n entity.hidden = !!(curr.value & 0x01);\n entity.constant = !!(curr.value & 0x02);\n entity.verificationRequired = !!(curr.value & 0x04);\n entity.preset = !!(curr.value & 0x08);\n break;\n case 71:\n entity.backwards = !!(curr.value & 0x02);\n entity.mirrored = !!(curr.value & 0x04);\n break;\n case 72:\n // TODO: enum values?\n entity.horizontalJustification = curr.value;\n break;\n case 73:\n entity.fieldLength = curr.value;\n break;\n case 74:\n // TODO: enum values?\n entity.verticalJustification = curr.value;\n break;\n case 100:\n break;\n case 101:\n helpers.skipEmbeddedObject(scanner);\n break;\n case 210:\n entity.extrusionDirection = helpers.parsePoint(scanner);\n break;\n default:\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n curr = scanner.next();\n }\n\n return entity;\n};\n","import * as helpers from \"../ParseHelpers.js\";\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'ATTRIB';\n\nEntityParser.prototype.parseEntity = function (scanner, curr) {\n var entity = {\n type: curr.value,\n scale: 1,\n textStyle: 'STANDARD',\n };\n curr = scanner.next();\n while (curr !== 'EOF') {\n if (curr.code === 0) {\n break;\n }\n switch (curr.code) {\n case 1:\n entity.text = curr.value;\n break;\n case 2:\n entity.tag = curr.value;\n break;\n case 3:\n entity.prompt = curr.value;\n break;\n case 7:\n entity.textStyle = curr.value;\n break;\n case 10: // X coordinate of 'first alignment point'\n entity.startPoint = helpers.parsePoint(scanner);\n break;\n case 11: // X coordinate of 'second alignment point'\n entity.endPoint = helpers.parsePoint(scanner);\n break;\n case 39:\n entity.thickness = curr.value;\n break;\n case 40:\n entity.textHeight = curr.value;\n break;\n case 41:\n entity.scale = curr.value;\n break;\n case 44:\n entity.lineSpacingFactor = curr.value;\n break;\n case 45:\n entity.fillBoxScale = curr.value;\n break;\n case 46:\n entity.annotationHeight = curr.value;\n break;\n case 50:\n entity.rotation = curr.value;\n break;\n case 51:\n entity.obliqueAngle = curr.value;\n break;\n case 63:\n entity.backgroundFillColor = curr.value;\n break;\n case 70:\n entity.hidden = !!(curr.value & 0x01);\n entity.constant = !!(curr.value & 0x02);\n entity.verificationRequired = !!(curr.value & 0x04);\n entity.preset = !!(curr.value & 0x08);\n break;\n case 71:\n entity.attachmentPoint = curr.value;\n break;\n case 72:\n entity.horizontalJustification = curr.value;\n break;\n case 73:\n entity.lineSpacing = curr.value;\n break;\n case 74:\n entity.verticalJustification = curr.value;\n break;\n case 90:\n // TODO:: enum\n // 0 = Background fill off\n // 1 = Use background fill color\n // 2 = Use drawing window color as background fill color\n // and 420 ~ 439 background color check\n entity.backgroundFillSetting = curr.value;\n break;\n case 100:\n break;\n case 210:\n entity.extrusionDirection = helpers.parsePoint(scanner);\n break;\n case 280:\n entity.lockPositionFlag = curr.value;\n break;\n case 340:\n entity.hardPointerId = curr.value;\n break;\n default:\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n curr = scanner.next();\n }\n\n return entity;\n};\n","\nimport * as helpers from \"../ParseHelpers.js\"\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'CIRCLE';\n\nEntityParser.prototype.parseEntity = function(scanner, curr) {\n var entity, endAngle;\n entity = { type: curr.value };\n curr = scanner.next();\n while(curr !== 'EOF') {\n if(curr.code === 0) break;\n\n switch(curr.code) {\n case 10: // X coordinate of point\n entity.center = helpers.parsePoint(scanner);\n break;\n case 40: // radius\n entity.radius = curr.value;\n break;\n case 50: // start angle\n entity.startAngle = Math.PI / 180 * curr.value;\n break;\n case 51: // end angle\n endAngle = Math.PI / 180 * curr.value;\n if(endAngle < entity.startAngle)\n entity.angleLength = endAngle + 2 * Math.PI - entity.startAngle;\n else\n entity.angleLength = endAngle - entity.startAngle;\n entity.endAngle = endAngle;\n break;\n case 210:\n entity.extrusionDirection = helpers.parsePoint(scanner);\n break;\n default: // ignored attribute\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n curr = scanner.next();\n }\n return entity;\n};\n","\nimport * as helpers from \"../ParseHelpers.js\"\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'DIMENSION';\n\nEntityParser.prototype.parseEntity = function(scanner, curr) {\n var entity;\n entity = { type: curr.value };\n curr = scanner.next();\n while(curr !== 'EOF') {\n if(curr.code === 0) break;\n\n switch(curr.code) {\n case 2: // Referenced block name\n entity.block = curr.value;\n break;\n case 3: // Dimension style name\n entity.styleName = curr.value;\n break;\n case 10: // X coordinate of 'first alignment point'\n entity.anchorPoint = helpers.parsePoint(scanner);\n break;\n case 11:\n entity.middleOfText = helpers.parsePoint(scanner);\n break;\n case 12: // Insertion point for clones of a dimension\n entity.insertionPoint = helpers.parsePoint(scanner);\n break;\n case 13: // Definition point for linear and angular dimensions\n entity.linearOrAngularPoint1 = helpers.parsePoint(scanner);\n break;\n case 14: // Definition point for linear and angular dimensions\n entity.linearOrAngularPoint2 = helpers.parsePoint(scanner);\n break;\n case 15: // Definition point for diameter, radius, and angular dimensions\n entity.diameterOrRadiusPoint = helpers.parsePoint(scanner);\n break;\n case 16: // Point defining dimension arc for angular dimensions\n entity.arcPoint = helpers.parsePoint(scanner);\n break;\n case 70: // Dimension type\n entity.dimensionType = curr.value;\n break;\n case 71: // 5 = Middle center\n entity.attachmentPoint = curr.value;\n break;\n case 42: // Actual measurement\n entity.actualMeasurement = curr.value;\n break;\n case 1: // Text entered by user explicitly\n entity.text = curr.value;\n break;\n case 50: // Angle of rotated, horizontal, or vertical dimensions\n entity.angle = curr.value;\n break;\n case 53: // Rotation angle of the dimension text away from its default orientation (the\n //direction of the dimension line)\n entity.textRotation = curr.value;\n break;\n\n default: // check common entity attributes\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n curr = scanner.next();\n }\n\n return entity;\n};\n","\nimport * as helpers from \"../ParseHelpers.js\"\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'ELLIPSE';\n\nEntityParser.prototype.parseEntity = function(scanner, curr) {\n var entity;\n entity = { type: curr.value };\n curr = scanner.next();\n while(curr !== 'EOF') {\n if(curr.code === 0) break;\n\n switch(curr.code) {\n case 10:\n entity.center = helpers.parsePoint(scanner);\n break;\n case 11:\n entity.majorAxisEndPoint = helpers.parsePoint(scanner);\n break;\n case 40:\n entity.axisRatio = curr.value;\n break;\n case 41:\n /* Already in radians. */\n entity.startAngle = curr.value;\n break;\n case 42:\n /* Already in radians. */\n entity.endAngle = curr.value;\n break;\n case 2:\n entity.name = curr.value;\n break;\n case 210:\n entity.extrusionDirection = helpers.parsePoint(scanner);\n break;\n default: // check common entity attributes\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n\n curr = scanner.next();\n }\n\n return entity;\n};\n","\nimport * as helpers from \"../ParseHelpers.js\"\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'INSERT';\n\nEntityParser.prototype.parseEntity = function(scanner, curr) {\n var entity;\n entity = { type: curr.value };\n curr = scanner.next();\n while(curr !== 'EOF') {\n if(curr.code === 0) break;\n\n switch(curr.code) {\n case 2:\n entity.name = curr.value;\n break;\n case 41:\n entity.xScale = curr.value;\n break;\n case 42:\n entity.yScale = curr.value;\n break;\n case 43:\n entity.zScale = curr.value;\n break;\n case 10:\n entity.position = helpers.parsePoint(scanner);\n break;\n case 50:\n entity.rotation = curr.value;\n break;\n case 70:\n entity.columnCount = curr.value;\n break;\n case 71:\n entity.rowCount = curr.value;\n break;\n case 44:\n entity.columnSpacing = curr.value;\n break;\n case 45:\n entity.rowSpacing = curr.value;\n break;\n case 210:\n entity.extrusionDirection = helpers.parsePoint(scanner);\n break;\n default: // check common entity attributes\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n curr = scanner.next();\n }\n\n return entity;\n};\n","\nimport * as helpers from \"../ParseHelpers.js\"\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'LINE';\n\nEntityParser.prototype.parseEntity = function(scanner, curr) {\n var entity = { type: curr.value, vertices: [] };\n curr = scanner.next();\n while(curr !== 'EOF') {\n if(curr.code === 0) break;\n\n switch(curr.code) {\n case 10: // X coordinate of point\n entity.vertices.unshift(helpers.parsePoint(scanner));\n break;\n case 11:\n entity.vertices.push(helpers.parsePoint(scanner));\n break;\n case 210:\n entity.extrusionDirection = helpers.parsePoint(scanner);\n break;\n case 100:\n break;\n default:\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n\n curr = scanner.next();\n }\n return entity;\n};\n","\nimport * as helpers from \"../ParseHelpers.js\"\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'LWPOLYLINE';\n\nEntityParser.prototype.parseEntity = function(scanner, curr) {\n var entity = { type: curr.value, vertices: [] },\n numberOfVertices = 0;\n curr = scanner.next();\n while(curr !== 'EOF') {\n if(curr.code === 0) break;\n\n switch(curr.code) {\n case 38:\n entity.elevation = curr.value;\n break;\n case 39:\n entity.depth = curr.value;\n break;\n case 70: // 1 = Closed shape, 128 = plinegen?, 0 = default\n entity.shape = ((curr.value & 1) === 1);\n entity.hasContinuousLinetypePattern = ((curr.value & 128) === 128);\n break;\n case 90:\n numberOfVertices = curr.value;\n break;\n case 10: // X coordinate of point\n entity.vertices = parseLWPolylineVertices(numberOfVertices, scanner);\n break;\n case 43:\n if(curr.value !== 0) entity.width = curr.value;\n break;\n case 210:\n entity.extrusionDirection = helpers.parsePoint(scanner);\n break;\n default:\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n curr = scanner.next();\n }\n return entity;\n};\n\nfunction parseLWPolylineVertices(n, scanner) {\n if(!n || n <= 0) throw Error('n must be greater than 0 vertices');\n var vertices = [], i;\n var vertexIsStarted = false;\n var vertexIsFinished = false;\n var curr = scanner.lastReadGroup;\n\n for(i = 0; i < n; i++) {\n var vertex = {};\n while(curr !== 'EOF') {\n if(curr.code === 0 || vertexIsFinished) break;\n\n switch(curr.code) {\n case 10: // X\n if(vertexIsStarted) {\n vertexIsFinished = true;\n continue;\n }\n vertex.x = curr.value;\n vertexIsStarted = true;\n break;\n case 20: // Y\n vertex.y = curr.value;\n break;\n case 30: // Z\n vertex.z = curr.value;\n break;\n case 40: // start width\n vertex.startWidth = curr.value;\n break;\n case 41: // end width\n vertex.endWidth = curr.value;\n break;\n case 42: // bulge\n if(curr.value != 0) vertex.bulge = curr.value;\n break;\n case 91: // vertex identifier\n vertex.id = curr.value;\n break;\n default:\n // if we do not hit known code return vertices. Code might belong to entity\n if (vertexIsStarted) {\n vertices.push(vertex);\n }\n scanner.rewind();\n return vertices;\n }\n curr = scanner.next();\n }\n // See https://groups.google.com/forum/#!topic/comp.cad.autocad/9gn8s5O_w6E\n vertices.push(vertex);\n vertexIsStarted = false;\n vertexIsFinished = false;\n }\n scanner.rewind();\n return vertices;\n};\n","\nimport * as helpers from \"../ParseHelpers.js\"\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'MTEXT';\n\nEntityParser.prototype.parseEntity = function(scanner, curr) {\n var entity = { type: curr.value };\n curr = scanner.next();\n while(curr !== 'EOF') {\n if(curr.code === 0) break;\n\n switch(curr.code) {\n case 3:\n case 1:\n entity.text ? entity.text += curr.value : entity.text = curr.value;\n break;\n case 10:\n entity.position = helpers.parsePoint(scanner);\n break;\n case 11:\n entity.direction = helpers.parsePoint(scanner);\n break;\n case 40:\n //Note: this is the text height\n entity.height = curr.value;\n break;\n case 41:\n entity.width = curr.value;\n break;\n case 44:\n entity.lineSpacing = curr.value;\n break;\n case 50:\n entity.rotation = curr.value;\n break;\n case 7: // Text style name\n entity.styleName = curr.value;\n break;\n case 71:\n entity.attachmentPoint = curr.value;\n break;\n case 72:\n entity.drawingDirection = curr.value;\n break;\n case 101:\n helpers.skipEmbeddedObject(scanner);\n break;\n default:\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n curr = scanner.next();\n }\n return entity;\n};\n","\nimport * as helpers from \"../ParseHelpers.js\"\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'POINT';\n\nEntityParser.prototype.parseEntity = function(scanner, curr) {\n var entity;\n entity = { type: curr.value };\n curr = scanner.next();\n while(curr !== 'EOF') {\n if(curr.code === 0) break;\n\n switch(curr.code) {\n case 10:\n entity.position = helpers.parsePoint(scanner);\n break;\n case 39:\n entity.thickness = curr.value;\n break;\n case 210:\n entity.extrusionDirection = helpers.parsePoint(scanner);\n break;\n case 100:\n break;\n default: // check common entity attributes\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n curr = scanner.next();\n }\n\n return entity;\n};\n","\nimport * as helpers from \"../ParseHelpers.js\"\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'VERTEX';\n\nEntityParser.prototype.parseEntity = function(scanner, curr) {\n var entity = { type: curr.value };\n curr = scanner.next();\n while(curr !== 'EOF') {\n if(curr.code === 0) break;\n\n switch(curr.code) {\n case 10: // X\n entity.x = curr.value;\n break;\n case 20: // Y\n entity.y = curr.value;\n break;\n case 30: // Z\n entity.z = curr.value;\n break;\n case 40: // start width\n break;\n case 41: // end width\n break;\n case 42: // bulge\n if(curr.value != 0) entity.bulge = curr.value;\n break;\n case 70: // flags\n entity.curveFittingVertex = (curr.value & 1) !== 0;\n entity.curveFitTangent = (curr.value & 2) !== 0;\n entity.splineVertex = (curr.value & 8) !== 0;\n entity.splineControlPoint = (curr.value & 16) !== 0;\n entity.threeDPolylineVertex = (curr.value & 32) !== 0;\n entity.threeDPolylineMesh = (curr.value & 64) !== 0;\n entity.polyfaceMeshVertex = (curr.value & 128) !== 0;\n break;\n case 50: // curve fit tangent direction\n break;\n case 71: // polyface mesh vertex index\n entity.faces = [curr.value];\n break;\n case 72: // polyface mesh vertex index\n entity.faces[1] = curr.value;\n break;\n case 73: // polyface mesh vertex index\n entity.faces[2] = curr.value;\n break;\n case 74: // polyface mesh vertex index\n entity.faces[3] = curr.value;\n break;\n default:\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n\n curr = scanner.next();\n }\n return entity;\n};\n","\nimport * as helpers from \"../ParseHelpers.js\"\nimport VertexParser from \"./vertex.js\";\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'POLYLINE';\n\nEntityParser.prototype.parseEntity = function(scanner, curr) {\n var entity = { type: curr.value, vertices: [] };\n curr = scanner.next();\n while(curr !== 'EOF') {\n if(curr.code === 0) break;\n\n switch(curr.code) {\n case 10: // always 0\n break;\n case 20: // always 0\n break;\n case 30: // elevation\n break;\n case 39: // thickness\n entity.thickness = curr.value;\n break;\n case 40: // start width\n break;\n case 41: // end width\n break;\n case 70:\n entity.shape = (curr.value & 1) !== 0;\n entity.includesCurveFitVertices = (curr.value & 2) !== 0;\n entity.includesSplineFitVertices = (curr.value & 4) !== 0;\n entity.is3dPolyline = (curr.value & 8) !== 0;\n entity.is3dPolygonMesh = (curr.value & 16) !== 0;\n entity.is3dPolygonMeshClosed = (curr.value & 32) !== 0; // 32 = The polygon mesh is closed in the N direction\n entity.isPolyfaceMesh = (curr.value & 64) !== 0;\n entity.hasContinuousLinetypePattern = (curr.value & 128) !== 0;\n break;\n case 71: // Polygon mesh M vertex count\n break;\n case 72: // Polygon mesh N vertex count\n break;\n case 73: // Smooth surface M density\n break;\n case 74: // Smooth surface N density\n break;\n case 75: // Curves and smooth surface type\n break;\n case 210:\n entity.extrusionDirection = helpers.parsePoint(scanner);\n break;\n default:\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n curr = scanner.next();\n }\n\n entity.vertices = parsePolylineVertices(scanner, curr);\n\n return entity;\n};\n\nfunction parsePolylineVertices(scanner, curr) {\n var vertexParser = new VertexParser();\n\n var vertices = [];\n while (!scanner.isEOF()) {\n if (curr.code === 0) {\n if (curr.value === 'VERTEX') {\n vertices.push(vertexParser.parseEntity(scanner, curr));\n curr = scanner.lastReadGroup;\n } else if (curr.value === 'SEQEND') {\n parseSeqEnd(scanner, curr);\n break;\n }\n }\n }\n return vertices;\n};\n\nfunction parseSeqEnd(scanner, curr) {\n var entity = { type: curr.value };\n curr = scanner.next();\n while(curr != 'EOF') {\n if (curr.code == 0) break;\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n curr = scanner.next();\n }\n\n return entity;\n};\n","\nimport * as helpers from \"../ParseHelpers.js\"\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'SOLID';\n\nEntityParser.prototype.parseEntity = function(scanner, currentGroup) {\n var entity;\n entity = { type: currentGroup.value };\n entity.points = [];\n currentGroup = scanner.next();\n while(currentGroup !== 'EOF') {\n if(currentGroup.code === 0) break;\n\n switch(currentGroup.code) {\n case 10:\n entity.points[0] = helpers.parsePoint(scanner);\n break;\n case 11:\n entity.points[1] = helpers.parsePoint(scanner);\n break;\n case 12:\n entity.points[2] = helpers.parsePoint(scanner);\n break;\n case 13:\n entity.points[3] = helpers.parsePoint(scanner);\n break;\n case 210:\n entity.extrusionDirection = helpers.parsePoint(scanner);\n break;\n default: // check common entity attributes\n helpers.checkCommonEntityProperties(entity, currentGroup, scanner);\n break;\n }\n currentGroup = scanner.next();\n }\n\n return entity;\n};\n","\nimport * as helpers from \"../ParseHelpers.js\"\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'SPLINE';\n\nEntityParser.prototype.parseEntity = function(scanner, curr) {\n var entity;\n entity = { type: curr.value };\n curr = scanner.next();\n while(curr !== 'EOF')\n {\n if(curr.code === 0) break;\n\n switch(curr.code) {\n case 10:\n if (!entity.controlPoints) entity.controlPoints = [];\n entity.controlPoints.push(helpers.parsePoint(scanner));\n break;\n case 11:\n if (!entity.fitPoints) entity.fitPoints = [];\n entity.fitPoints.push(helpers.parsePoint(scanner));\n break;\n case 12:\n entity.startTangent = helpers.parsePoint(scanner);\n break;\n case 13:\n entity.endTangent = helpers.parsePoint(scanner);\n break;\n case 40:\n if (!entity.knotValues) entity.knotValues = [];\n entity.knotValues.push(curr.value);\n break;\n case 70:\n if ((curr.value & 1) != 0) entity.closed = true;\n if ((curr.value & 2) != 0) entity.periodic = true;\n if ((curr.value & 4) != 0) entity.rational = true;\n if ((curr.value & 8) != 0) entity.planar = true;\n if ((curr.value & 16) != 0)\n {\n entity.planar = true;\n entity.linear = true;\n }\n break;\n\n case 71:\n entity.degreeOfSplineCurve = curr.value;\n break;\n case 72:\n entity.numberOfKnots = curr.value;\n break;\n case 73:\n entity.numberOfControlPoints = curr.value;\n break;\n case 74:\n entity.numberOfFitPoints = curr.value;\n break;\n case 210:\n entity.extrusionDirection = helpers.parsePoint(scanner);\n break;\n default:\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n curr = scanner.next();\n }\n\n return entity;\n};\n","\nimport * as helpers from \"../ParseHelpers.js\"\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'TEXT';\n\nEntityParser.prototype.parseEntity = function(scanner, curr) {\n var entity;\n entity = { type: curr.value };\n curr = scanner.next();\n while(curr !== 'EOF') {\n if(curr.code === 0) break;\n switch(curr.code) {\n case 10: // X coordinate of 'first alignment point'\n entity.startPoint = helpers.parsePoint(scanner);\n break;\n case 11: // X coordinate of 'second alignment point'\n entity.endPoint = helpers.parsePoint(scanner);\n break;\n case 40: // Text height\n entity.textHeight = curr.value;\n break;\n case 41:\n entity.xScale = curr.value;\n break;\n case 50: // Rotation in degrees\n entity.rotation = curr.value;\n break;\n case 7: // Text style name\n entity.styleName = curr.value;\n break;\n case 1: // Text\n entity.text = curr.value;\n break;\n // NOTE: 72 and 73 are meaningless without 11 (second alignment point)\n case 72: // Horizontal alignment\n entity.halign = curr.value;\n break;\n case 73: // Vertical alignment\n entity.valign = curr.value;\n break;\n default: // check common entity attributes\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n curr = scanner.next();\n }\n return entity;\n};\n","import * as helpers from \"../ParseHelpers.js\"\n\nexport default function EntityParser() {}\n\nEntityParser.ForEntityName = 'HATCH';\n\nEntityParser.prototype.parseEntity = function(scanner, curr) {\n var entity;\n entity = { type: curr.value };\n\n let numBoundaryLoops = 0;\n let numDefinitionLines = 0;\n let numSeedPoints = 0;\n\n curr = scanner.next();\n while(curr !== 'EOF') {\n if (curr.code === 0) break;\n\n while (numBoundaryLoops > 0) {\n const loop = ParseBoundaryLoop(curr, scanner)\n if (loop) {\n entity.boundaryLoops.push(loop);\n numBoundaryLoops--;\n curr = scanner.next();\n } else {\n numBoundaryLoops = 0\n }\n }\n\n while (numDefinitionLines > 0) {\n const line = ParseDefinitionLine(curr, scanner)\n if (line) {\n entity.definitionLines.push(line);\n numDefinitionLines--;\n curr = scanner.next();\n } else {\n numDefinitionLines = 0\n }\n }\n\n while (numSeedPoints > 0) {\n const pt = ParseSeedPoint(curr, scanner);\n if (pt) {\n entity.seedPoints.push(pt);\n numSeedPoints--;\n curr = scanner.next();\n } else {\n numSeedPoints = 0\n }\n }\n\n if (curr.code === 0) break;\n\n switch(curr.code) {\n\n case 2: // Hatch pattern name\n entity.patternName = curr.value;\n break;\n\n case 70: //Solid fill flag (solid fill = 1; pattern fill = 0)\n entity.isSolid = curr.value != 0;\n break;\n\n case 91: // Number of boundary paths (loops)\n numBoundaryLoops = curr.value;\n if (numBoundaryLoops > 0) {\n entity.boundaryLoops = []\n }\n break;\n\n // Hatch style:\n // 0 = Hatch “odd parity” area (Normal style)\n // 1 = Hatch outermost area only (Outer style)\n // 2 = Hatch through entire area (Ignore style)\n case 75:\n entity.hatchStyle = curr.value;\n break;\n\n //Hatch pattern type:\n // 0 = User-defined; 1 = Predefined; 2 = Custom\n case 76:\n entity.patternType = curr.value;\n break;\n\n case 52: // Hatch pattern angle (pattern fill only)\n entity.patternAngle = curr.value * Math.PI / 180;\n break;\n\n case 41: // Hatch pattern scale or spacing (pattern fill only)\n entity.patternScale = curr.value;\n break;\n\n case 78: // Number of pattern definition lines\n numDefinitionLines = curr.value;\n if (numDefinitionLines > 0) {\n entity.definitionLines = []\n }\n break;\n\n case 98: // Number of seed points\n numSeedPoints = curr.value;\n if (numSeedPoints > 0) {\n entity.seedPoints = []\n }\n break;\n\n default: // check common entity attributes\n helpers.checkCommonEntityProperties(entity, curr, scanner);\n break;\n }\n curr = scanner.next();\n }\n\n return entity;\n};\n\nfunction ParseBoundaryLoop(curr, scanner) {\n let entity = null\n\n const ParsePolyline = () => {\n const pl = {vertices: [], isClosed: false};\n let hasBulge = false;\n let numVertices = 0;\n while (true) {\n if (numVertices > 0) {\n for (let i = 0; i < numVertices; i++) {\n if (curr.code != 10) {\n break\n }\n const p = helpers.parsePoint(scanner)\n curr = scanner.next();\n if (curr.code == 42) {\n p.bulge = curr.value\n curr = scanner.next();\n }\n pl.vertices.push(p)\n }\n return pl\n }\n\n switch (curr.code) {\n case 72:\n hasBulge = curr.value;\n break;\n case 73:\n pl.isClosed = curr.value;\n break;\n case 93:\n numVertices = curr.value;\n break;\n default:\n return pl;\n }\n curr = scanner.next();\n }\n }\n\n const ParseEdge = () => {\n if (curr.code != 72) {\n return null\n }\n const e = {type: curr.value}\n curr = scanner.next();\n const isSpline = e.type == 4\n\n while (true) {\n switch (curr.code) {\n case 10:\n if (isSpline) {\n if (!e.controlPoints) {\n e.controlPoints = [];\n }\n e.controlPoints.push(helpers.parsePoint(scanner));\n } else {\n e.start = helpers.parsePoint(scanner);\n }\n break;\n case 11:\n if (isSpline) {\n if (!e.fitPoints) {\n e.fitPoints = [];\n }\n e.fitPoints.push(helpers.parsePoint(scanner));\n } else {\n e.end = helpers.parsePoint(scanner);\n }\n break;\n case 40:\n if (isSpline) {\n if (!e.knotValues) {\n e.knotValues = [];\n }\n e.knotValues.push(curr.value);\n } else {\n e.radius = curr.value;\n }\n break;\n case 50:\n e.startAngle = curr.value * Math.PI / 180;\n break;\n case 51:\n e.endAngle = curr.value * Math.PI / 180;\n break;\n case 73:\n if (isSpline) {\n e.rational = curr.value;\n } else {\n e.isCcw = curr.value;\n }\n break;\n case 74:\n e.periodic = curr.value;\n break;\n case 94:\n e.degreeOfSplineCurve = curr.value;\n break;\n\n //XXX ignore some groups for now, mostly spline\n case 95:\n case 96:\n case 40:\n case 42:\n case 97:\n break;\n default:\n return e\n }\n curr = scanner.next();\n }\n }\n\n let polylineParsed = false;\n let numEdges = 0;\n let numSourceRefs = 0;\n\n while (true) {\n\n if (!entity) {\n if (curr.code != 92) {\n return null\n }\n entity = {\n type: curr.value,\n isExternal: (curr.value & 1) != 0,\n isOutermost: (curr.value & 16) != 0\n }\n curr = scanner.next()\n }\n\n if ((entity.type & 2) && !polylineParsed) {\n entity.polyline = ParsePolyline()\n polylineParsed = true\n }\n\n while (numEdges) {\n const edge = ParseEdge()\n if (edge) {\n entity.edges.push(edge)\n numEdges--\n } else {\n numEdges = 0;\n }\n }\n\n while (numSourceRefs) {\n if (curr.code == 330) {\n entity.sourceRefs.push(curr.value)\n numSourceRefs--\n curr = scanner.next()\n } else {\n numSourceRefs = 0\n }\n }\n\n switch (curr.code) {\n case 93:\n numEdges = curr.value\n if (numEdges > 0) {\n entity.edges = []\n }\n break;\n case 97:\n numSourceRefs = curr.value\n if (numSourceRefs > 0) {\n entity.sourceRefs = []\n }\n break;\n default:\n scanner.rewind()\n return entity\n }\n curr = scanner.next()\n }\n}\n\nfunction ParseDefinitionLine(curr, scanner) {\n /* Assuming always starts from group 53. */\n if (curr.code != 53) {\n return null\n }\n const entity = {\n angle: curr.value * Math.PI / 180,\n base: {x: 0, y: 0},\n offset: {x: 0, y: 0}\n };\n curr = scanner.next();\n\n let numDashes = 0;\n while (true) {\n switch (curr.code) {\n case 43:\n entity.base.x = curr.value;\n break;\n case 44:\n entity.base.y = curr.value;\n break;\n case 45:\n entity.offset.x = curr.value;\n break;\n case 46:\n entity.offset.y = curr.value;\n break;\n case 49:\n if (numDashes > 0) {\n entity.dashes.push(curr.value);\n numDashes--;\n }\n break;\n case 79:\n numDashes = curr.value;\n if (curr.value) {\n entity.dashes = []\n }\n break;\n default:\n scanner.rewind();\n return entity;\n }\n curr = scanner.next();\n }\n}\n\nfunction ParseSeedPoint(curr, scanner) {\n if (curr.code != 10) {\n return null\n }\n return helpers.parsePoint(scanner);\n}\n","/** Dimension style variables are used either in DIMSTYLE table or in DIMENSION entity style\n * override in XDATA.\n */\nconst codes = new Map([\n [140, \"DIMTXT\"],\n [142, \"DIMTSZ\"],\n [144, \"DIMLFAC\"],\n [147, \"DIMGAP\"],\n [173, \"DIMSAH\"],\n [175, \"DIMSOXD\"],\n [176, \"DIMCLRD\"],\n [177, \"DIMCLRE\"],\n [178, \"DIMCLRT\"],\n [271, \"DIMDEC\"],\n [278 ,\"DIMDSEP\"],\n [281, \"DIMSD1\"],\n [282, \"DIMSD2\"],\n [3, \"DIMPOST\"],\n [40, \"DIMSCALE\"],\n [41, \"DIMASZ\"],\n [42, \"DIMEXO\"],\n [44, \"DIMEXE\"],\n [45, \"DIMRND\"],\n [46, \"DIMDLE\"],\n [5, \"DIMBLK\"],\n [6, \"DIMBLK1\"],\n [7, \"DIMBLK2\"],\n [75, \"DIMSE1\"],\n [76, \"DIMSE2\"],\n [78, \"DIMZIN\"],\n])\n\nexport default codes\n","import DxfArrayScanner from \"./DxfArrayScanner.js\";\nimport AUTO_CAD_COLOR_INDEX from \"./AutoCadColorIndex.js\";\n\nimport Face from \"./entities/3dface.js\";\nimport Arc from \"./entities/arc.js\";\nimport AttDef from \"./entities/attdef.js\";\nimport Attribute from \"./entities/attribute.js\"\nimport Circle from \"./entities/circle.js\";\nimport Dimension from \"./entities/dimension.js\";\nimport Ellipse from \"./entities/ellipse.js\";\nimport Insert from \"./entities/insert.js\";\nimport Line from \"./entities/line.js\";\nimport LWPolyline from \"./entities/lwpolyline.js\";\nimport MText from \"./entities/mtext.js\";\nimport Point from \"./entities/point.js\";\nimport Polyline from \"./entities/polyline.js\";\nimport Solid from \"./entities/solid.js\";\nimport Spline from \"./entities/spline.js\";\nimport Text from \"./entities/text.js\";\nimport Hatch from \"./entities/hatch.js\";\nimport dimStyleCodes from \"./DimStyleCodes.js\";\n//import Vertex from \"./entities/.js\";\n\nimport log from 'loglevel';\n\n//log.setLevel('trace');\n//log.setLevel('debug');\n//log.setLevel('info');\n//log.setLevel('warn');\nlog.setLevel('error');\n//log.setLevel('silent');\n\nfunction registerDefaultEntityHandlers(dxfParser) {\n // Supported entities here (some entity code is still being refactored into this flow)\n dxfParser.registerEntityHandler(Face);\n dxfParser.registerEntityHandler(Arc);\n dxfParser.registerEntityHandler(AttDef);\n dxfParser.registerEntityHandler(Attribute);\n dxfParser.registerEntityHandler(Circle);\n dxfParser.registerEntityHandler(Dimension);\n dxfParser.registerEntityHandler(Ellipse);\n dxfParser.registerEntityHandler(Insert);\n dxfParser.registerEntityHandler(Line);\n dxfParser.registerEntityHandler(LWPolyline);\n dxfParser.registerEntityHandler(MText);\n dxfParser.registerEntityHandler(Point);\n dxfParser.registerEntityHandler(Polyline);\n dxfParser.registerEntityHandler(Solid);\n dxfParser.registerEntityHandler(Spline);\n dxfParser.registerEntityHandler(Text);\n dxfParser.registerEntityHandler(Hatch);\n //dxfParser.registerEntityHandler(require('./entities/vertex'));\n}\n\nexport default function DxfParser() {\n this._entityHandlers = {};\n\n registerDefaultEntityHandlers(this);\n}\n\nDxfParser.prototype.parse = function(source, done) {\n throw new Error(\"read() not implemented. Use readSync()\");\n};\n\nDxfParser.prototype.registerEntityHandler = function(handlerType) {\n var instance = new handlerType();\n this._entityHandlers[handlerType.ForEntityName] = instance;\n}\n\nDxfParser.prototype.parseSync = function(source) {\n if(typeof(source) === 'string') {\n return this._parse(source);\n }else {\n console.error('Cannot read DXF source of type `' + typeof(source));\n return null;\n }\n};\n\nDxfParser.prototype.parseStream = function(stream, done) {\n\n var dxfString = \"\";\n var self = this;\n\n stream.on('data', onData);\n stream.on('end', onEnd);\n stream.on('error', onError);\n\n function onData(chunk) {\n dxfString += chunk;\n }\n\n function onEnd() {\n try {\n var dxf = self._parse(dxfString);\n } catch(err) {\n return done(err);\n }\n done(null, dxf);\n }\n\n function onError(err) {\n done(err);\n }\n};\n\nDxfParser.prototype._parse = function(dxfString) {\n var scanner, curr, dxf = {}, lastHandle = 0;\n var dxfLinesArray = dxfString.split(/\\r\\n|\\r|\\n/g);\n\n scanner = new DxfArrayScanner(dxfLinesArray);\n if (!scanner.hasNext()) {\n throw Error('Empty file');\n }\n\n var self = this;\n\n var parseAll = function() {\n curr = scanner.next();\n while(!scanner.isEOF()) {\n if(curr.code === 0 && curr.value === 'SECTION') {\n curr = scanner.next();\n\n // Be sure we are reading a section code\n if (curr.code !== 2) {\n console.error('Unexpected code %s after 0:SECTION', debugCode(curr));\n curr = scanner.next();\n continue;\n }\n\n if (curr.value === 'HEADER') {\n log.debug('> HEADER');\n dxf.header = parseHeader();\n log.debug('<');\n } else if (curr.value === 'BLOCKS') {\n log.debug('> BLOCKS');\n dxf.blocks = parseBlocks();\n log.debug('<');\n } else if(curr.value === 'ENTITIES') {\n log.debug('> ENTITIES');\n dxf.entities = parseEntities(false);\n log.debug('<');\n } else if(curr.value === 'TABLES') {\n log.debug('> TABLES');\n dxf.tables = parseTables();\n log.debug('<');\n } else if(curr.value === 'EOF') {\n log.debug('EOF');\n } else {\n log.warn('Skipping section \\'%s\\'', curr.value);\n }\n } else {\n curr = scanner.next();\n }\n // If is a new section\n }\n };\n\n var groupIs = function(code, value) {\n return curr.code === code && curr.value === value;\n };\n\n /**\n *\n * @return {object} header\n */\n var parseHeader = function() {\n // interesting variables:\n // $ACADVER, $VIEWDIR, $VIEWSIZE, $VIEWCTR, $TDCREATE, $TDUPDATE\n // http://www.autodesk.com/techpubs/autocad/acadr14/dxf/header_section_al_u05_c.htm\n // Also see VPORT table entries\n var currVarName = null, currVarValue = null;\n var header = {};\n // loop through header variables\n curr = scanner.next();\n\n while(true) {\n if(groupIs(0, 'ENDSEC')) {\n if (currVarName != null) header[currVarName] = currVarValue;\n break;\n } else if(curr.code === 9) {\n if (currVarName != null) header[currVarName] = currVarValue;\n currVarName = curr.value;\n // Filter here for particular variables we are interested in\n } else {\n if(curr.code === 10) {\n currVarValue = { x: curr.value };\n } else if(curr.code === 20) {\n currVarValue.y = curr.value;\n } else if(curr.code === 30) {\n currVarValue.z = curr.value;\n } else {\n currVarValue = curr.value;\n }\n }\n curr = scanner.next();\n }\n // console.log(util.inspect(header, { colors: true, depth: null }));\n curr = scanner.next(); // swallow up ENDSEC\n return header;\n };\n\n\n /**\n *\n */\n var parseBlocks = function() {\n var blocks = {}, block;\n\n curr = scanner.next();\n\n while(curr.value !== 'EOF') {\n if(groupIs(0, 'ENDSEC')) {\n break;\n }\n\n if(groupIs(0, 'BLOCK')) {\n log.debug('block {');\n block = parseBlock();\n log.debug('}');\n ensureHandle(block);\n if(!block.name)\n log.error('block with handle \"' + block.handle + '\" is missing a name.');\n else\n blocks[block.name] = block;\n } else {\n logUnhandledGroup(curr);\n curr = scanner.next();\n }\n }\n return blocks;\n };\n\n var parseBlock = function() {\n var block = {};\n curr = scanner.next();\n\n while(curr.value !== 'EOF') {\n switch(curr.code) {\n case 1:\n block.xrefPath = curr.value;\n curr = scanner.next();\n break;\n case 2:\n block.name = curr.value;\n curr = scanner.next();\n break;\n case 3:\n block.name2 = curr.value;\n curr = scanner.next();\n break;\n case 5:\n block.handle = curr.value;\n curr = scanner.next();\n break;\n case 8:\n block.layer = curr.value;\n curr = scanner.next();\n break;\n case 10:\n block.position = parsePoint();\n curr = scanner.next();\n break;\n case 67:\n block.inPaperSpace = (curr.value && curr.value == 1) ? true : false;\n curr = scanner.next();\n break;\n case 70:\n if (curr.value != 0) {\n //if(curr.value & BLOCK_ANONYMOUS_FLAG) console.log(' Anonymous block');\n //if(curr.value & BLOCK_NON_CONSTANT_FLAG) console.log(' Non-constant attributes');\n //if(curr.value & BLOCK_XREF_FLAG) console.log(' Is xref');\n //if(curr.value & BLOCK_XREF_OVERLAY_FLAG) console.log(' Is xref overlay');\n //if(curr.value & BLOCK_EXTERNALLY_DEPENDENT_FLAG) console.log(' Is externally dependent');\n //if(curr.value & BLOCK_RESOLVED_OR_DEPENDENT_FLAG) console.log(' Is resolved xref or dependent of an xref');\n //if(curr.value & BLOCK_REFERENCED_XREF) console.log(' This definition is a referenced xref');\n block.type = curr.value;\n }\n curr = scanner.next();\n break;\n case 100:\n // ignore class markers\n curr = scanner.next();\n break;\n case 330:\n block.ownerHandle = curr.value;\n curr = scanner.next();\n break;\n case 0:\n if(curr.value == 'ENDBLK')\n break;\n block.entities = parseEntities(true);\n break;\n default:\n logUnhandledGroup(curr);\n curr = scanner.next();\n }\n\n if(groupIs(0, 'ENDBLK')) {\n curr = scanner.next();\n break;\n }\n }\n return block;\n };\n\n /**\n * parseTables\n * @return {Object} Object representing tables\n */\n var parseTables = function() {\n var tables = {};\n curr = scanner.next();\n while(curr.value !== 'EOF') {\n if(groupIs(0, 'ENDSEC'))\n break;\n\n if(groupIs(0, 'TABLE')) {\n curr = scanner.next();\n\n var tableDefinition = tableDefinitions[curr.value];\n if(tableDefinition) {\n log.debug(curr.value + ' Table {');\n tables[tableDefinitions[curr.value].tableName] = parseTable();\n log.debug('}');\n } else {\n log.debug('Unhandled Table ' + curr.value);\n }\n } else {\n // else ignored\n curr = scanner.next();\n }\n }\n\n curr = scanner.next();\n return tables;\n };\n\n const END_OF_TABLE_VALUE = 'ENDTAB';\n\n var parseTable = function() {\n var tableDefinition = tableDefinitions[curr.value],\n table = {},\n expectedCount = 0,\n actualCount;\n\n curr = scanner.next();\n while(!groupIs(0, END_OF_TABLE_VALUE)) {\n\n switch(curr.code) {\n case 5:\n table.handle = curr.value;\n curr = scanner.next();\n break;\n case 330:\n table.ownerHandle = curr.value;\n curr = scanner.next();\n break;\n case 100:\n if(curr.value === 'AcDbSymbolTable') {\n // ignore\n curr = scanner.next();\n }else{\n logUnhandledGroup(curr);\n curr = scanner.next();\n }\n break;\n case 70:\n expectedCount = curr.value;\n curr = scanner.next();\n break;\n case 0:\n if(curr.value === tableDefinition.dxfSymbolName) {\n table[tableDefinition.tableRecordsProperty] = tableDefinition.parseTableRecords();\n } else {\n logUnhandledGroup(curr);\n curr = scanner.next();\n }\n break;\n default:\n logUnhandledGroup(curr);\n curr = scanner.next();\n }\n }\n var tableRecords = table[tableDefinition.tableRecordsProperty];\n if (tableRecords) {\n if(tableRecords.constructor === Array){\n actualCount = tableRecords.length;\n } else if(typeof(tableRecords) === 'object') {\n actualCount = Object.keys(tableRecords).length;\n }\n if(expectedCount !== actualCount) {\n log.warn(`Parsed ${actualCount} ${tableDefinition.dxfSymbolName}'s but expected ${expectedCount}`);\n }\n } else {\n table[tableDefinition.tableRecordsProperty] = []\n }\n curr = scanner.next();\n return table;\n };\n\n var parseViewPortRecords = function() {\n var viewPorts = [], // Multiple table entries may have the same name indicating a multiple viewport configuration\n viewPort = {};\n\n log.debug('ViewPort {');\n curr = scanner.next();\n while(!groupIs(0, END_OF_TABLE_VALUE)) {\n\n switch(curr.code) {\n case 2: // layer name\n viewPort.name = curr.value;\n curr = scanner.next();\n break;\n case 10:\n viewPort.lowerLeftCorner = parsePoint();\n curr = scanner.next();\n break;\n case 11:\n viewPort.upperRightCorner = parsePoint();\n curr = scanner.next();\n break;\n case 12:\n viewPort.center = parsePoint();\n curr = scanner.next();\n break;\n case 13:\n viewPort.snapBasePoint = parsePoint();\n curr = scanner.next();\n break;\n case 14:\n viewPort.snapSpacing = parsePoint();\n curr = scanner.next();\n break;\n case 15:\n viewPort.gridSpacing = parsePoint();\n curr = scanner.next();\n break;\n case 16:\n viewPort.viewDirectionFromTarget = parsePoint();\n curr = scanner.next();\n break;\n case 17:\n viewPort.viewTarget = parsePoint();\n curr = scanner.next();\n break;\n case 42:\n viewPort.lensLength = curr.value;\n curr = scanner.next();\n break;\n case 43:\n viewPort.frontClippingPlane = curr.value;\n curr = scanner.next();\n break;\n case 44:\n viewPort.backClippingPlane = curr.value;\n curr = scanner.next();\n break;\n case 45:\n viewPort.viewHeight = curr.value;\n curr = scanner.next();\n break;\n case 50:\n viewPort.snapRotationAngle = curr.value;\n curr = scanner.next();\n break;\n case 51:\n viewPort.viewTwistAngle = curr.value;\n curr = scanner.next();\n break;\n case 79:\n viewPort.orthographicType = curr.value;\n curr = scanner.next();\n break;\n case 110:\n viewPort.ucsOrigin = parsePoint();\n curr = scanner.next();\n break;\n case 111:\n viewPort.ucsXAxis = parsePoint();\n curr = scanner.next();\n break;\n case 112:\n viewPort.ucsYAxis = parsePoint();\n curr = scanner.next();\n break;\n case 110:\n viewPort.ucsOrigin = parsePoint();\n curr = scanner.next();\n break;\n case 281:\n viewPort.renderMode = curr.value;\n curr = scanner.next();\n break;\n case 281:\n // 0 is one distant light, 1 is two distant lights\n viewPort.defaultLightingType = curr.value;\n curr = scanner.next();\n break;\n case 292:\n viewPort.defaultLightingOn = curr.value;\n curr = scanner.next();\n break;\n case 330:\n viewPort.ownerHandle = curr.value;\n curr = scanner.next();\n break;\n case 63: // These are all ambient color. Perhaps should be a gradient when multiple are set.\n case 421:\n case 431:\n viewPort.ambientColor = curr.value;\n curr = scanner.next();\n break;\n case 0:\n // New ViewPort\n if(curr.value === 'VPORT') {\n log.debug('}');\n viewPorts.push(viewPort);\n log.debug('ViewPort {');\n viewPort = {};\n curr = scanner.next();\n }\n break;\n default:\n logUnhandledGroup(curr);\n curr = scanner.next();\n break;\n }\n }\n // Note: do not call scanner.next() here,\n // parseTable() needs the current group\n log.debug('}');\n viewPorts.push(viewPort);\n\n return viewPorts;\n };\n\n var parseLineTypes = function() {\n var ltypes = {},\n ltypeName,\n ltype = {},\n length;\n\n log.debug('LType {');\n curr = scanner.next();\n while(!groupIs(0, 'ENDTAB')) {\n\n switch(curr.code) {\n case 2:\n ltype.name = curr.value;\n ltypeName = curr.value;\n curr = scanner.next();\n break;\n case 3:\n ltype.description = curr.value;\n curr = scanner.next();\n break;\n case 73: // Number of elements for this line type (dots, dashes, spaces);\n length = curr.value;\n if(length > 0) ltype.pattern = [];\n curr = scanner.next();\n break;\n case 40: // total pattern length\n ltype.patternLength = curr.value;\n curr = scanner.next();\n break;\n case 49:\n ltype.pattern.push(curr.value);\n curr = scanner.next();\n break;\n case 0:\n log.debug('}');\n if (length > 0 && length !== ltype.pattern.length) {\n log.warn('lengths do not match on LTYPE pattern');\n }\n ltypes[ltypeName] = ltype;\n ltype = {};\n log.debug('LType {');\n curr = scanner.next();\n break;\n default:\n curr = scanner.next();\n }\n }\n\n log.debug('}');\n ltypes[ltypeName] = ltype;\n return ltypes;\n };\n\n var parseLayers = function() {\n var layers = {},\n layerName,\n layer = {};\n\n log.debug('Layer {');\n curr = scanner.next();\n while(!groupIs(0, 'ENDTAB')) {\n\n switch(curr.code) {\n case 2: // layer name\n layer.name = curr.value;\n layerName = curr.value;\n curr = scanner.next();\n break;\n case 62: // color, visibility\n layer.visible = curr.value >= 0;\n // TODO 0 and 256 are BYBLOCK and BYLAYER respectively. Need to handle these values for layers?.\n layer.colorIndex = Math.abs(curr.value);\n layer.color = getAcadColor(layer.colorIndex);\n curr = scanner.next();\n break;\n case 70: // frozen layer\n layer.frozen = ((curr.value & 1) !== 0 || (curr.value & 2) !== 0);\n curr = scanner.next();\n break;\n case 420: // TrueColor Color\n layer.color = curr.value;\n curr = scanner.next();\n break;\n case 0:\n // New Layer\n if(curr.value === 'LAYER') {\n log.debug('}');\n layers[layerName] = layer;\n log.debug('Layer {');\n layer = {};\n layerName = undefined;\n curr = scanner.next();\n }\n break;\n default:\n logUnhandledGroup(curr);\n curr = scanner.next();\n break;\n }\n }\n // Note: do not call scanner.next() here,\n // parseLayerTable() needs the current group\n log.debug('}');\n layers[layerName] = layer;\n\n return layers;\n };\n\n var parseDimStyles = function() {\n var dimStyles = {},\n styleName,\n style = {};\n\n log.debug('DimStyle {');\n curr = scanner.next();\n while(!groupIs(0, 'ENDTAB')) {\n\n if (dimStyleCodes.has(curr.code)) {\n style[dimStyleCodes.get(curr.code)] = curr.value\n curr = scanner.next();\n } else {\n switch(curr.code) {\n case 2: // style name\n style.name = curr.value;\n styleName = curr.value;\n curr = scanner.next();\n break;\n case 0:\n // New style\n if(curr.value === 'DIMSTYLE') {\n log.debug('}');\n dimStyles[styleName] = style;\n log.debug('DimStyle {');\n style = {};\n styleName = undefined;\n curr = scanner.next();\n }\n break;\n default:\n logUnhandledGroup(curr);\n curr = scanner.next();\n break;\n }\n }\n }\n // Note: do not call scanner.next() here,\n // parseLayerTable() needs the current group\n log.debug('}');\n dimStyles[styleName] = style;\n\n return dimStyles;\n };\n\n var parseStyles = function () {\n var styles = {};\n var style = {};\n var styleName;\n\n log.debug('Style {');\n curr = scanner.next();\n while (!groupIs(0, END_OF_TABLE_VALUE)) {\n switch (curr.code) {\n case 100:\n style.subClassMarker = curr.value;\n curr = scanner.next();\n break;\n case 2:\n style.styleName = curr.value;\n styleName = curr.value;\n curr = scanner.next();\n break;\n case 70:\n style.standardFlag = curr.value;\n curr = scanner.next();\n break;\n case 40:\n style.fixedTextHeight = curr.value;\n curr = scanner.next();\n break;\n case 41:\n style.widthFactor = curr.value;\n curr = scanner.next();\n break;\n case 50:\n style.obliqueAngle = curr.value;\n curr = scanner.next();\n break;\n case 71:\n style.textGenerationFlag = curr.value;\n curr = scanner.next();\n break;\n case 42:\n style.lastHeight = curr.value;\n curr = scanner.next();\n break;\n case 3:\n style.font = curr.value;\n curr = scanner.next();\n break;\n case 4:\n style.bigFont = curr.value;\n curr = scanner.next();\n break;\n case 1071:\n style.extendedFont = curr.value;\n curr = scanner.next();\n break;\n case 0:\n if (curr.value === 'STYLE') {\n log.debug('}');\n styles[styleName] = style;\n log.debug('Style {');\n style = {};\n styleName = undefined;\n curr = scanner.next();\n }\n break;\n default:\n logUnhandledGroup(curr);\n curr = scanner.next();\n break;\n }\n }\n log.debug('}');\n styles[styleName] = style;\n return styles;\n };\n\n var tableDefinitions = {\n VPORT: {\n tableRecordsProperty: 'viewPorts',\n tableName: 'viewPort',\n dxfSymbolName: 'VPORT',\n parseTableRecords: parseViewPortRecords\n },\n LTYPE: {\n tableRecordsProperty: 'lineTypes',\n tableName: 'lineType',\n dxfSymbolName: 'LTYPE',\n parseTableRecords: parseLineTypes\n },\n LAYER: {\n tableRecordsProperty: 'layers',\n tableName: 'layer',\n dxfSymbolName: 'LAYER',\n parseTableRecords: parseLayers\n },\n DIMSTYLE: {\n tableRecordsProperty: 'dimStyles',\n tableName: 'dimstyle',\n dxfSymbolName: 'DIMSTYLE',\n parseTableRecords: parseDimStyles\n },\n STYLE: {\n tableRecordsProperty: 'styles',\n tableName: 'style',\n dxfSymbolName: 'STYLE',\n parseTableRecords: parseStyles,\n },\n };\n\n /**\n * Is called after the parser first reads the 0:ENTITIES group. The scanner\n * should be on the start of the first entity already.\n * @return {Array} the resulting entities\n */\n var parseEntities = function(forBlock) {\n var entities = [];\n\n var endingOnValue = forBlock ? 'ENDBLK' : 'ENDSEC';\n\n if (!forBlock) {\n curr = scanner.next();\n }\n while(true) {\n\n if(curr.code === 0) {\n if(curr.value === endingOnValue) {\n break;\n }\n\n var entity;\n var handler = self._entityHandlers[curr.value];\n if (handler != null) {\n log.debug(curr.value + ' {');\n entity = handler.parseEntity(scanner, curr);\n curr = scanner.lastReadGroup;\n log.debug('}');\n } else {\n log.warn('Unhandled entity ' + curr.value);\n curr = scanner.next();\n continue;\n }\n ensureHandle(entity);\n entities.push(entity);\n } else {\n // ignored lines from unsupported entity\n curr = scanner.next();\n }\n }\n if (endingOnValue == 'ENDSEC') {\n curr = scanner.next(); // swallow up ENDSEC, but not ENDBLK\n }\n return entities;\n };\n\n /**\n * Parses a 2D or 3D point, returning it as an object with x, y, and\n * (sometimes) z property if it is 3D. It is assumed the current group\n * is x of the point being read in, and scanner.next() will return the\n * y. The parser will determine if there is a z point automatically.\n * @return {Object} The 2D or 3D point as an object with x, y[, z]\n */\n var parsePoint = function() {\n var point = {},\n code = curr.code;\n\n point.x = curr.value;\n\n code += 10;\n curr = scanner.next();\n if(curr.code != code)\n throw new Error('Expected code for point value to be ' + code +\n ' but got ' + curr.code + '.');\n point.y = curr.value;\n\n code += 10;\n curr = scanner.next();\n if(curr.code != code)\n {\n scanner.rewind();\n return point;\n }\n point.z = curr.value;\n\n return point;\n };\n\n var ensureHandle = function(entity) {\n if (!entity) {\n throw new TypeError('entity cannot be undefined or null');\n }\n\n if (!entity.handle) {\n entity.handle = lastHandle++;\n }\n }\n\n parseAll();\n return dxf;\n};\n\nfunction logUnhandledGroup(curr) {\n log.debug('unhandled group ' + debugCode(curr));\n}\n\n\nfunction debugCode(curr) {\n return curr.code + ':' + curr.value;\n}\n\n/**\n * Returns the truecolor value of the given AutoCad color index value\n * @return {Number} truecolor value as a number\n */\nfunction getAcadColor(index) {\n return AUTO_CAD_COLOR_INDEX[index];\n}\n\nconst BLOCK_ANONYMOUS_FLAG = 1;\nconst BLOCK_NON_CONSTANT_FLAG = 2;\nconst BLOCK_XREF_FLAG = 4;\nconst BLOCK_XREF_OVERLAY_FLAG = 8;\nconst BLOCK_EXTERNALLY_DEPENDENT_FLAG = 16;\nconst BLOCK_RESOLVED_OR_DEPENDENT_FLAG = 32;\nconst BLOCK_REFERENCED_XREF = 64;\n\n\n/* Notes */\n// Code 6 of an entity indicates inheritance of properties (eg. color).\n// BYBLOCK means inherits from block\n// BYLAYER (default) mean inherits from layer\n","import DxfParser from \"./parser/DxfParser.js\"\n\n/** Fetches and parses DXF file. */\nexport class DxfFetcher {\n constructor(url, encoding = \"utf-8\") {\n this.url = url\n this.encoding = encoding\n }\n\n /** @param progressCbk {Function} (phase, receivedSize, totalSize) */\n async Fetch(progressCbk = null) {\n const response = await fetch(this.url)\n const totalSize = +response.headers.get('Content-Length')\n\n const reader = response.body.getReader()\n let receivedSize = 0\n //XXX streaming parsing is not supported in dxf-parser for now (its parseStream() method\n // just accumulates chunks in a string buffer before parsing. Fix it later.\n let buffer = \"\"\n let decoder = new TextDecoder(this.encoding)\n while(true) {\n const {done, value} = await reader.read()\n if (done) {\n buffer += decoder.decode(new ArrayBuffer(0), {stream: false})\n break\n }\n buffer += decoder.decode(value, {stream: true})\n receivedSize += value.length\n if (progressCbk !== null) {\n progressCbk(\"fetch\", receivedSize, totalSize)\n }\n }\n\n if (progressCbk !== null) {\n progressCbk(\"parse\", 0, null)\n }\n const parser = new DxfParser()\n return parser.parseSync(buffer)\n }\n}\n","/** Typed-array-based buffer which can be dynamically extended. */\nexport class DynamicBuffer {\n /**\n * @param type Array type, see NativeType.\n * @param initialCapacity Initial capacity, number of elements.\n */\n constructor(type, initialCapacity = 16) {\n this.type = type\n this.capacity = initialCapacity\n this.size = 0\n this.buffer = new (NativeArray(type))(initialCapacity)\n }\n\n GetSize() {\n return this.size\n }\n\n /**\n * Append new value to the buffer end.\n * @return Appended value position in the buffer.\n */\n Push(value) {\n this._CheckGrow()\n const pos = this.size\n this.buffer[pos] = value\n this.size++\n return pos\n }\n\n Get(index) {\n if (index >= this.size) {\n throw new Error(`Index out of range: ${index}/${this.size}`)\n }\n return this.buffer[index]\n }\n\n /** Copy content to the specified buffer.\n * @param dstBuffer Destination buffer, should be typed array of the same type.\n * @param dstOffset {number} Offset in elements in the destination buffer.\n * @param srcOffset {number} Offset in elements in this buffer.\n * @param size {number} Number of elements to copy, -1 (default) to copy till this buffer end.\n */\n CopyTo(dstBuffer, dstOffset, srcOffset = 0, size = -1) {\n if (size === -1) {\n size = this.size - srcOffset\n }\n const src = new (NativeArray(this.type))(this.buffer.buffer, srcOffset, size)\n dstBuffer.set(src, dstOffset)\n }\n\n _CheckGrow() {\n if (this.size < this.capacity) {\n return\n }\n this.capacity *= 2\n const newBuffer = new (NativeArray(this.type))(this.capacity)\n newBuffer.set(this.buffer)\n this.buffer = newBuffer\n }\n}\n\nexport const NativeType = {\n INT8: 0,\n UINT8: 1,\n UINT8_CLAMPED: 2,\n INT16: 3,\n UINT16: 4,\n INT32: 5,\n UINT32: 6,\n INT64: 7,\n UINT64: 8,\n FLOAT32: 9,\n FLOAT64: 10\n}\n\n/** Get TypedArray type corresponding to the specified NativeType. */\nexport function NativeArray(type) {\n switch (type) {\n case NativeType.INT8:\n return Int8Array\n case NativeType.UINT8:\n return Uint8Array\n case NativeType.UINT8_CLAMPED:\n return Uint8ClampedArray\n case NativeType.INT16:\n return Int16Array\n case NativeType.UINT16:\n return Uint16Array\n case NativeType.INT32:\n return Int32Array\n case NativeType.UINT32:\n return Uint32Array\n case NativeType.FLOAT32:\n return Float32Array\n case NativeType.FLOAT64:\n return Float64Array\n default:\n throw new Error(\"Unrecognized native type: \" + type)\n }\n}","const _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn value / 4294967295.0;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.max( value / 2147483647.0, - 1.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn Math.round( value * 4294967295.0 );\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.round( value * 2147483647.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nconst MathUtils = {\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize\n};\n\nexport {\n\tDEG2RAD,\n\tRAD2DEG,\n\tgenerateUUID,\n\tclamp,\n\teuclideanModulo,\n\tmapLinear,\n\tinverseLerp,\n\tlerp,\n\tdamp,\n\tpingpong,\n\tsmoothstep,\n\tsmootherstep,\n\trandInt,\n\trandFloat,\n\trandFloatSpread,\n\tseededRandom,\n\tdegToRad,\n\tradToDeg,\n\tisPowerOfTwo,\n\tceilPowerOfTwo,\n\tfloorPowerOfTwo,\n\tsetQuaternionFromProperEuler,\n\tnormalize,\n\tdenormalize,\n\tMathUtils\n};\n","export const REVISION = '161';\n\nexport const MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nexport const TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nexport const CullFaceNone = 0;\nexport const CullFaceBack = 1;\nexport const CullFaceFront = 2;\nexport const CullFaceFrontBack = 3;\nexport const BasicShadowMap = 0;\nexport const PCFShadowMap = 1;\nexport const PCFSoftShadowMap = 2;\nexport const VSMShadowMap = 3;\nexport const FrontSide = 0;\nexport const BackSide = 1;\nexport const DoubleSide = 2;\nexport const NoBlending = 0;\nexport const NormalBlending = 1;\nexport const AdditiveBlending = 2;\nexport const SubtractiveBlending = 3;\nexport const MultiplyBlending = 4;\nexport const CustomBlending = 5;\nexport const AddEquation = 100;\nexport const SubtractEquation = 101;\nexport const ReverseSubtractEquation = 102;\nexport const MinEquation = 103;\nexport const MaxEquation = 104;\nexport const ZeroFactor = 200;\nexport const OneFactor = 201;\nexport const SrcColorFactor = 202;\nexport const OneMinusSrcColorFactor = 203;\nexport const SrcAlphaFactor = 204;\nexport const OneMinusSrcAlphaFactor = 205;\nexport const DstAlphaFactor = 206;\nexport const OneMinusDstAlphaFactor = 207;\nexport const DstColorFactor = 208;\nexport const OneMinusDstColorFactor = 209;\nexport const SrcAlphaSaturateFactor = 210;\nexport const ConstantColorFactor = 211;\nexport const OneMinusConstantColorFactor = 212;\nexport const ConstantAlphaFactor = 213;\nexport const OneMinusConstantAlphaFactor = 214;\nexport const NeverDepth = 0;\nexport const AlwaysDepth = 1;\nexport const LessDepth = 2;\nexport const LessEqualDepth = 3;\nexport const EqualDepth = 4;\nexport const GreaterEqualDepth = 5;\nexport const GreaterDepth = 6;\nexport const NotEqualDepth = 7;\nexport const MultiplyOperation = 0;\nexport const MixOperation = 1;\nexport const AddOperation = 2;\nexport const NoToneMapping = 0;\nexport const LinearToneMapping = 1;\nexport const ReinhardToneMapping = 2;\nexport const CineonToneMapping = 3;\nexport const ACESFilmicToneMapping = 4;\nexport const CustomToneMapping = 5;\nexport const AgXToneMapping = 6;\nexport const AttachedBindMode = 'attached';\nexport const DetachedBindMode = 'detached';\n\nexport const UVMapping = 300;\nexport const CubeReflectionMapping = 301;\nexport const CubeRefractionMapping = 302;\nexport const EquirectangularReflectionMapping = 303;\nexport const EquirectangularRefractionMapping = 304;\nexport const CubeUVReflectionMapping = 306;\nexport const RepeatWrapping = 1000;\nexport const ClampToEdgeWrapping = 1001;\nexport const MirroredRepeatWrapping = 1002;\nexport const NearestFilter = 1003;\nexport const NearestMipmapNearestFilter = 1004;\nexport const NearestMipMapNearestFilter = 1004;\nexport const NearestMipmapLinearFilter = 1005;\nexport const NearestMipMapLinearFilter = 1005;\nexport const LinearFilter = 1006;\nexport const LinearMipmapNearestFilter = 1007;\nexport const LinearMipMapNearestFilter = 1007;\nexport const LinearMipmapLinearFilter = 1008;\nexport const LinearMipMapLinearFilter = 1008;\nexport const UnsignedByteType = 1009;\nexport const ByteType = 1010;\nexport const ShortType = 1011;\nexport const UnsignedShortType = 1012;\nexport const IntType = 1013;\nexport const UnsignedIntType = 1014;\nexport const FloatType = 1015;\nexport const HalfFloatType = 1016;\nexport const UnsignedShort4444Type = 1017;\nexport const UnsignedShort5551Type = 1018;\nexport const UnsignedInt248Type = 1020;\nexport const AlphaFormat = 1021;\nexport const RGBAFormat = 1023;\nexport const LuminanceFormat = 1024;\nexport const LuminanceAlphaFormat = 1025;\nexport const DepthFormat = 1026;\nexport const DepthStencilFormat = 1027;\nexport const RedFormat = 1028;\nexport const RedIntegerFormat = 1029;\nexport const RGFormat = 1030;\nexport const RGIntegerFormat = 1031;\nexport const RGBAIntegerFormat = 1033;\n\nexport const RGB_S3TC_DXT1_Format = 33776;\nexport const RGBA_S3TC_DXT1_Format = 33777;\nexport const RGBA_S3TC_DXT3_Format = 33778;\nexport const RGBA_S3TC_DXT5_Format = 33779;\nexport const RGB_PVRTC_4BPPV1_Format = 35840;\nexport const RGB_PVRTC_2BPPV1_Format = 35841;\nexport const RGBA_PVRTC_4BPPV1_Format = 35842;\nexport const RGBA_PVRTC_2BPPV1_Format = 35843;\nexport const RGB_ETC1_Format = 36196;\nexport const RGB_ETC2_Format = 37492;\nexport const RGBA_ETC2_EAC_Format = 37496;\nexport const RGBA_ASTC_4x4_Format = 37808;\nexport const RGBA_ASTC_5x4_Format = 37809;\nexport const RGBA_ASTC_5x5_Format = 37810;\nexport const RGBA_ASTC_6x5_Format = 37811;\nexport const RGBA_ASTC_6x6_Format = 37812;\nexport const RGBA_ASTC_8x5_Format = 37813;\nexport const RGBA_ASTC_8x6_Format = 37814;\nexport const RGBA_ASTC_8x8_Format = 37815;\nexport const RGBA_ASTC_10x5_Format = 37816;\nexport const RGBA_ASTC_10x6_Format = 37817;\nexport const RGBA_ASTC_10x8_Format = 37818;\nexport const RGBA_ASTC_10x10_Format = 37819;\nexport const RGBA_ASTC_12x10_Format = 37820;\nexport const RGBA_ASTC_12x12_Format = 37821;\nexport const RGBA_BPTC_Format = 36492;\nexport const RGB_BPTC_SIGNED_Format = 36494;\nexport const RGB_BPTC_UNSIGNED_Format = 36495;\nexport const RED_RGTC1_Format = 36283;\nexport const SIGNED_RED_RGTC1_Format = 36284;\nexport const RED_GREEN_RGTC2_Format = 36285;\nexport const SIGNED_RED_GREEN_RGTC2_Format = 36286;\nexport const LoopOnce = 2200;\nexport const LoopRepeat = 2201;\nexport const LoopPingPong = 2202;\nexport const InterpolateDiscrete = 2300;\nexport const InterpolateLinear = 2301;\nexport const InterpolateSmooth = 2302;\nexport const ZeroCurvatureEnding = 2400;\nexport const ZeroSlopeEnding = 2401;\nexport const WrapAroundEnding = 2402;\nexport const NormalAnimationBlendMode = 2500;\nexport const AdditiveAnimationBlendMode = 2501;\nexport const TrianglesDrawMode = 0;\nexport const TriangleStripDrawMode = 1;\nexport const TriangleFanDrawMode = 2;\n/** @deprecated Use LinearSRGBColorSpace or NoColorSpace in three.js r152+. */\nexport const LinearEncoding = 3000;\n/** @deprecated Use SRGBColorSpace in three.js r152+. */\nexport const sRGBEncoding = 3001;\nexport const BasicDepthPacking = 3200;\nexport const RGBADepthPacking = 3201;\nexport const TangentSpaceNormalMap = 0;\nexport const ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nexport const NoColorSpace = '';\nexport const SRGBColorSpace = 'srgb';\nexport const LinearSRGBColorSpace = 'srgb-linear';\nexport const DisplayP3ColorSpace = 'display-p3';\nexport const LinearDisplayP3ColorSpace = 'display-p3-linear';\n\nexport const LinearTransfer = 'linear';\nexport const SRGBTransfer = 'srgb';\n\nexport const Rec709Primaries = 'rec709';\nexport const P3Primaries = 'p3';\n\nexport const ZeroStencilOp = 0;\nexport const KeepStencilOp = 7680;\nexport const ReplaceStencilOp = 7681;\nexport const IncrementStencilOp = 7682;\nexport const DecrementStencilOp = 7683;\nexport const IncrementWrapStencilOp = 34055;\nexport const DecrementWrapStencilOp = 34056;\nexport const InvertStencilOp = 5386;\n\nexport const NeverStencilFunc = 512;\nexport const LessStencilFunc = 513;\nexport const EqualStencilFunc = 514;\nexport const LessEqualStencilFunc = 515;\nexport const GreaterStencilFunc = 516;\nexport const NotEqualStencilFunc = 517;\nexport const GreaterEqualStencilFunc = 518;\nexport const AlwaysStencilFunc = 519;\n\nexport const NeverCompare = 512;\nexport const LessCompare = 513;\nexport const EqualCompare = 514;\nexport const LessEqualCompare = 515;\nexport const GreaterCompare = 516;\nexport const NotEqualCompare = 517;\nexport const GreaterEqualCompare = 518;\nexport const AlwaysCompare = 519;\n\nexport const StaticDrawUsage = 35044;\nexport const DynamicDrawUsage = 35048;\nexport const StreamDrawUsage = 35040;\nexport const StaticReadUsage = 35045;\nexport const DynamicReadUsage = 35049;\nexport const StreamReadUsage = 35041;\nexport const StaticCopyUsage = 35046;\nexport const DynamicCopyUsage = 35050;\nexport const StreamCopyUsage = 35042;\n\nexport const GLSL1 = '100';\nexport const GLSL3 = '300 es';\n\nexport const _SRGBAFormat = 1035; // fallback for WebGL 1\n\nexport const WebGLCoordinateSystem = 2000;\nexport const WebGPUCoordinateSystem = 2001;\n","class Matrix3 {\n\n\tconstructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tscale( sx, sy ) {\n\n\t\tthis.premultiply( _m3.makeScale( sx, sy ) );\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tthis.premultiply( _m3.makeRotation( - theta ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tthis.premultiply( _m3.makeTranslation( tx, ty ) );\n\n\t\treturn this;\n\n\t}\n\n\t// for 2D Transforms\n\n\tmakeTranslation( x, y ) {\n\n\t\tif ( x.isVector2 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x.x,\n\t\t\t\t0, 1, x.y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x,\n\t\t\t\t0, 1, y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotation( theta ) {\n\n\t\t// counterclockwise\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0,\n\t\t\ts, c, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0,\n\t\t\t0, y, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nconst _m3 = /*@__PURE__*/ new Matrix3();\n\nexport { Matrix3 };\n","import { SRGBColorSpace, LinearSRGBColorSpace, DisplayP3ColorSpace, LinearDisplayP3ColorSpace, Rec709Primaries, P3Primaries, SRGBTransfer, LinearTransfer, NoColorSpace, } from '../constants.js';\nimport { Matrix3 } from './Matrix3.js';\n\n/**\n * Matrices converting P3 <-> Rec. 709 primaries, without gamut mapping\n * or clipping. Based on W3C specifications for sRGB and Display P3,\n * and ICC specifications for the D50 connection space. Values in/out\n * are _linear_ sRGB and _linear_ Display P3.\n *\n * Note that both sRGB and Display P3 use the sRGB transfer functions.\n *\n * Reference:\n * - http://www.russellcottrell.com/photo/matrixCalculator.htm\n */\n\nconst LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = /*@__PURE__*/ new Matrix3().set(\n\t0.8224621, 0.177538, 0.0,\n\t0.0331941, 0.9668058, 0.0,\n\t0.0170827, 0.0723974, 0.9105199,\n);\n\nconst LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = /*@__PURE__*/ new Matrix3().set(\n\t1.2249401, - 0.2249404, 0.0,\n\t- 0.0420569, 1.0420571, 0.0,\n\t- 0.0196376, - 0.0786361, 1.0982735\n);\n\n/**\n * Defines supported color spaces by transfer function and primaries,\n * and provides conversions to/from the Linear-sRGB reference space.\n */\nconst COLOR_SPACES = {\n\t[ LinearSRGBColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\ttoReference: ( color ) => color,\n\t\tfromReference: ( color ) => color,\n\t},\n\t[ SRGBColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\ttoReference: ( color ) => color.convertSRGBToLinear(),\n\t\tfromReference: ( color ) => color.convertLinearToSRGB(),\n\t},\n\t[ LinearDisplayP3ColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: P3Primaries,\n\t\ttoReference: ( color ) => color.applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ),\n\t},\n\t[ DisplayP3ColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: P3Primaries,\n\t\ttoReference: ( color ) => color.convertSRGBToLinear().applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ).convertLinearToSRGB(),\n\t},\n};\n\nconst SUPPORTED_WORKING_COLOR_SPACES = new Set( [ LinearSRGBColorSpace, LinearDisplayP3ColorSpace ] );\n\nexport const ColorManagement = {\n\n\tenabled: true,\n\n\t_workingColorSpace: LinearSRGBColorSpace,\n\n\tget workingColorSpace() {\n\n\t\treturn this._workingColorSpace;\n\n\t},\n\n\tset workingColorSpace( colorSpace ) {\n\n\t\tif ( ! SUPPORTED_WORKING_COLOR_SPACES.has( colorSpace ) ) {\n\n\t\t\tthrow new Error( `Unsupported working color space, \"${ colorSpace }\".` );\n\n\t\t}\n\n\t\tthis._workingColorSpace = colorSpace;\n\n\t},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.enabled === false || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tconst sourceToReference = COLOR_SPACES[ sourceColorSpace ].toReference;\n\t\tconst targetFromReference = COLOR_SPACES[ targetColorSpace ].fromReference;\n\n\t\treturn targetFromReference( sourceToReference( color ) );\n\n\t},\n\n\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\treturn this.convert( color, this._workingColorSpace, targetColorSpace );\n\n\t},\n\n\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\treturn this.convert( color, sourceColorSpace, this._workingColorSpace );\n\n\t},\n\n\tgetPrimaries: function ( colorSpace ) {\n\n\t\treturn COLOR_SPACES[ colorSpace ].primaries;\n\n\t},\n\n\tgetTransfer: function ( colorSpace ) {\n\n\t\tif ( colorSpace === NoColorSpace ) return LinearTransfer;\n\n\t\treturn COLOR_SPACES[ colorSpace ].transfer;\n\n\t},\n\n};\n\n\nexport function SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nexport function LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n","import { clamp, euclideanModulo, lerp } from './MathUtils.js';\nimport { ColorManagement, SRGBToLinear, LinearToSRGB } from './ColorManagement.js';\nimport { SRGBColorSpace } from '../constants.js';\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tthis.isColor = true;\n\n\t\tthis.r = 1;\n\t\tthis.g = 1;\n\t\tthis.b = 1;\n\n\t\treturn this.set( r, g, b );\n\n\t}\n\n\tset( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\n\t\t\tconst value = r;\n\n\t\t\tif ( value && value.isColor ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.setRGB( r, g, b );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^(\\w+)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 1 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 2 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 3 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 1 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 2 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 3 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL(\n\t\t\t\t\t\t\tparseFloat( color[ 1 ] ) / 360,\n\t\t\t\t\t\t\tparseFloat( color[ 2 ] ) / 100,\n\t\t\t\t\t\t\tparseFloat( color[ 3 ] ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tconsole.warn( 'THREE.Color: Unknown color model ' + style );\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\treturn this.setRGB(\n\t\t\t\t\tparseInt( hex.charAt( 0 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 1 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 2 ), 16 ) / 15,\n\t\t\t\t\tcolorSpace\n\t\t\t\t);\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\treturn this.setHex( parseInt( hex, 16 ), colorSpace );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Invalid hex color ' + style );\n\n\t\t\t}\n\n\t\t} else if ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\treturn Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) );\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetRGB( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\ttarget.r = _color.r;\n\t\ttarget.g = _color.g;\n\t\ttarget.b = _color.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ r.toFixed( 3 ) } ${ g.toFixed( 3 ) } ${ b.toFixed( 3 ) })`;\n\n\t\t}\n\n\t\treturn `rgb(${ Math.round( r * 255 ) },${ Math.round( g * 255 ) },${ Math.round( b * 255 ) })`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\treturn this.setHSL( _hslA.h + h, _hslA.s + s, _hslA.l + l );\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\tthis.r = v.x;\n\t\tthis.g = v.y;\n\t\tthis.b = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\t\tconst e = m.elements;\n\n\t\tthis.r = e[ 0 ] * r + e[ 3 ] * g + e[ 6 ] * b;\n\t\tthis.g = e[ 1 ] * r + e[ 4 ] * g + e[ 7 ] * b;\n\t\tthis.b = e[ 2 ] * r + e[ 5 ] * g + e[ 8 ] * b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nconst _color = /*@__PURE__*/ new Color();\n\nColor.NAMES = _colorKeywords;\n\nexport { Color };\n","import * as MathUtils from './MathUtils.js';\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tVector2.prototype.isVector2 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( MathUtils.clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nexport { Vector2 };\n","import * as MathUtils from './MathUtils.js';\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update = true ) {\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize(); // normalize calls _onChangeCallback()\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.toArray();\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nexport { Quaternion };\n","import * as MathUtils from './MathUtils.js';\nimport { Quaternion } from './Quaternion.js';\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tVector3.prototype.isVector3 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t// quaternion q is assumed to have unit length\n\n\t\tconst vx = this.x, vy = this.y, vz = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// t = 2 * cross( q.xyz, v );\n\t\tconst tx = 2 * ( qy * vz - qz * vy );\n\t\tconst ty = 2 * ( qz * vx - qx * vz );\n\t\tconst tz = 2 * ( qx * vy - qy * vx );\n\n\t\t// v + q.w * t + cross( q.xyz, t );\n\t\tthis.x = vx + qw * tx + qy * tz - qz * ty;\n\t\tthis.y = vy + qw * ty + qz * tx - qx * tz;\n\t\tthis.z = vz + qw * tz + qx * ty - qy * tx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( MathUtils.clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromColor( c ) {\n\n\t\tthis.x = c.r;\n\t\tthis.y = c.g;\n\t\tthis.z = c.b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\n\nexport { Vector3 };\n","import { WebGLCoordinateSystem, WebGPUCoordinateSystem } from '../constants.js';\nimport { Vector3 } from './Vector3.js';\n\nclass Matrix4 {\n\n\tconstructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x.x,\n\t\t\t\t0, 1, 0, x.y,\n\t\t\t\t0, 0, 1, x.z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1.elements[ 0 ] *= invSX;\n\t\t_m1.elements[ 1 ] *= invSX;\n\t\t_m1.elements[ 2 ] *= invSX;\n\n\t\t_m1.elements[ 4 ] *= invSY;\n\t\t_m1.elements[ 5 ] *= invSY;\n\t\t_m1.elements[ 6 ] *= invSY;\n\n\t\t_m1.elements[ 8 ] *= invSZ;\n\t\t_m1.elements[ 9 ] *= invSZ;\n\t\t_m1.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\n\t\tlet c, d;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tc = - ( far + near ) / ( far - near );\n\t\t\td = ( - 2 * far * near ) / ( far - near );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tc = - far / ( far - near );\n\t\t\td = ( - far * near ) / ( far - near );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a; \tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b; \tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c; \tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\n\t\tlet z, zInv;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tz = ( far + near ) * p;\n\t\t\tzInv = - 2 * p;\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tz = near * p;\n\t\t\tzInv = - 1 * p;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\t\tte[ 8 ] = 0; \t\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0; \t\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0; \t\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0; \t\tte[ 6 ] = 0;\t\tte[ 10 ] = zInv;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0; \t\tte[ 7 ] = 0;\t\tte[ 11 ] = 0;\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nexport { Matrix4 };\n","import * as MathUtils from '../../math/MathUtils.js';\nimport { Vector2 } from '../../math/Vector2.js';\nimport { Vector3 } from '../../math/Vector3.js';\nimport { Matrix4 } from '../../math/Matrix4.js';\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t}\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( MathUtils.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( MathUtils.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\n\nexport { Curve };\n","import { Curve } from '../core/Curve.js';\nimport { Vector2 } from '../../math/Vector2.js';\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.isEllipseCurve = true;\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst point = optionalTarget || new Vector2();\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { EllipseCurve };\n","import { EllipseCurve } from './EllipseCurve.js';\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\nexport { ArcCurve };\n","import { Vector3 } from '../../math/Vector3.js';\nimport { Curve } from '../core/Curve.js';\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = /*@__PURE__*/ new Vector3();\nconst px = /*@__PURE__*/ new CubicPoly();\nconst py = /*@__PURE__*/ new CubicPoly();\nconst pz = /*@__PURE__*/ new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.isCatmullRomCurve3 = true;\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { CatmullRomCurve3 };\n","/**\n * Bezier Curves formulas obtained from\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nexport { CatmullRom, QuadraticBezier, CubicBezier };\n","import { Curve } from '../core/Curve.js';\nimport { CubicBezier } from '../core/Interpolations.js';\nimport { Vector2 } from '../../math/Vector2.js';\n\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve = true;\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { CubicBezierCurve };\n","import { Curve } from '../core/Curve.js';\nimport { CubicBezier } from '../core/Interpolations.js';\nimport { Vector3 } from '../../math/Vector3.js';\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve3 = true;\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { CubicBezierCurve3 };\n","import { Vector2 } from '../../math/Vector2.js';\nimport { Curve } from '../core/Curve.js';\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve = true;\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector2() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { LineCurve };\n","import { Vector3 } from '../../math/Vector3.js';\nimport { Curve } from '../core/Curve.js';\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector3() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { LineCurve3 };\n","import { Curve } from '../core/Curve.js';\nimport { QuadraticBezier } from '../core/Interpolations.js';\nimport { Vector2 } from '../../math/Vector2.js';\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve = true;\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { QuadraticBezierCurve };\n","import { Curve } from '../core/Curve.js';\nimport { QuadraticBezier } from '../core/Interpolations.js';\nimport { Vector3 } from '../../math/Vector3.js';\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve3 = true;\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { QuadraticBezierCurve3 };\n","import { Curve } from '../core/Curve.js';\nimport { CatmullRom } from '../core/Interpolations.js';\nimport { Vector2 } from '../../math/Vector2.js';\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isSplineCurve = true;\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { SplineCurve };\n","import { Curve } from './Curve.js';\nimport * as Curves from '../curves/Curves.js';\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tconst lineType = ( startPoint.isVector2 === true ) ? 'LineCurve' : 'LineCurve3';\n\t\t\tthis.curves.push( new Curves[ lineType ]( endPoint, startPoint ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n\nexport { CurvePath };\n","import { Vector2 } from '../../math/Vector2.js';\nimport { CurvePath } from './CurvePath.js';\nimport { EllipseCurve } from '../curves/EllipseCurve.js';\nimport { SplineCurve } from '../curves/SplineCurve.js';\nimport { CubicBezierCurve } from '../curves/CubicBezierCurve.js';\nimport { QuadraticBezierCurve } from '../curves/QuadraticBezierCurve.js';\nimport { LineCurve } from '../curves/LineCurve.js';\n\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\n\nexport { Path };\n","import { Path } from './Path.js';\nimport * as MathUtils from '../../math/MathUtils.js';\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = MathUtils.generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n\nexport { Shape };\n","/**\n * Port from https://github.com/mapbox/earcut (v2.2.4)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 32767 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize, 0 );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim | 0 );\n\t\t\ttriangles.push( ear.i / dim | 0 );\n\t\t\ttriangles.push( next.i / dim | 0 );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\tlet p = c.next;\n\twhile ( p !== a ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( x0, y0, minX, minY, invSize ),\n\t\tmaxZ = zOrder( x1, y1, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim | 0 );\n\t\t\ttriangles.push( p.i / dim | 0 );\n\t\t\ttriangles.push( b.i / dim | 0 );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\touterNode = eliminateHole( queue[ i ], outerNode );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\tconst bridge = findHoleBridge( hole, outerNode );\n\tif ( ! bridge ) {\n\n\t\treturn outerNode;\n\n\t}\n\n\tconst bridgeReverse = splitPolygon( bridge, hole );\n\n\t// filter collinear points around the cuts\n\tfilterPoints( bridgeReverse, bridgeReverse.next );\n\treturn filterPoints( bridge, bridge.next );\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\tqx = - Infinity,\n\t\tm;\n\n\tconst hx = hole.x, hy = hole.y;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\t\t\t\tif ( x === hx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === 0 ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = ( x - minX ) * invSize | 0;\n\ty = ( y - minY ) * invSize | 0;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) >= ( ax - px ) * ( cy - py ) &&\n ( ax - px ) * ( by - py ) >= ( bx - px ) * ( ay - py ) &&\n ( bx - px ) * ( cy - py ) >= ( cx - px ) * ( by - py );\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n ( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n ( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n equals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = 0;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nexport { Earcut };\n","import { Earcut } from './Earcut.js';\n\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\nexport { ShapeUtils };\n","import { Color } from '../../math/Color.js';\nimport { Path } from './Path.js';\nimport { Shape } from './Shape.js';\nimport { ShapeUtils } from '../ShapeUtils.js';\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\n\nexport { ShapePath };\n","/** Parses MTEXT formatted text into more convenient intermediate representation. The MTEXT\n * formatting is not well documented, the only source I found:\n * https://adndevblog.typepad.com/autocad/2017/09/dissecting-mtext-format-codes.html\n */\n\nconst State = Object.freeze({\n TEXT: 0,\n ESCAPE: 1,\n /* Skip currently unsupported format codes till ';' */\n SKIP_FORMAT: 2,\n /* For \\pxq* paragraph formatting. Not found documentation yet, so temporal naming for now. */\n PARAGRAPH1: 3,\n PARAGRAPH2: 4,\n PARAGRAPH3: 5\n})\n\nconst EntityType = Object.freeze({\n TEXT: 0,\n SCOPE: 1,\n PARAGRAPH: 2,\n NON_BREAKING_SPACE: 3,\n /** \"alignment\" property is either \"r\", \"c\", \"l\", \"j\", \"d\" for right, center, left, justify\n * (seems to be the same as left), distribute (justify) alignment.\n */\n PARAGRAPH_ALIGNMENT: 4\n\n /* Many others are not yet implemented. */\n})\n\n/** Single letter format codes which are not terminated by \";\". */\nconst shortFormats = new Set([\n \"L\", \"l\", \"O\", \"o\", \"K\", \"k\", \"P\", \"X\", \"~\"\n])\n\nconst longFormats = new Set([\n \"f\", \"F\", \"p\", \"Q\", \"H\", \"W\", \"S\", \"A\", \"C\", \"T\"\n])\n\nconst validEscapes = new Set([\n \"\\\\\", \"{\", \"}\"\n])\n\nexport class MTextFormatParser {\n\n constructor() {\n this.entities = []\n }\n\n Parse(text) {\n const n = text.length\n let textStart = 0\n let state = State.TEXT\n let scopeStack = []\n let curEntities = this.entities\n let curPos = 0\n const _this = this\n\n function EmitText() {\n if (state !== State.TEXT || textStart === curPos) {\n return\n }\n curEntities.push({\n type: EntityType.TEXT,\n content: text.slice(textStart, curPos)\n })\n textStart = curPos\n }\n\n function EmitEntity(type) {\n curEntities.push({type: type})\n }\n\n function PushScope() {\n const scope = {\n type: EntityType.SCOPE,\n content: []\n }\n curEntities.push(scope)\n curEntities = scope.content\n scopeStack.push(scope)\n }\n\n function PopScope() {\n if (scopeStack.length === 0) {\n /* Stack underflow, just ignore now. */\n return\n }\n scopeStack.pop()\n if (scopeStack.length === 0) {\n curEntities = _this.entities\n } else {\n curEntities = scopeStack[scopeStack.length - 1].content\n }\n }\n\n for ( ;curPos < n; curPos++) {\n const c = text.charAt(curPos)\n\n switch (state) {\n\n case State.TEXT:\n if (c === \"{\") {\n EmitText()\n PushScope()\n textStart = curPos + 1\n continue\n }\n if (c === \"}\") {\n EmitText()\n PopScope()\n textStart = curPos + 1\n continue\n }\n if (c === \"\\\\\") {\n EmitText()\n state = State.ESCAPE\n continue\n }\n continue\n\n case State.ESCAPE:\n if (shortFormats.has(c)) {\n switch (c) {\n case \"P\":\n EmitEntity(EntityType.PARAGRAPH)\n break\n case \"~\":\n EmitEntity(EntityType.NON_BREAKING_SPACE)\n break\n }\n state = State.TEXT\n textStart = curPos + 1\n continue\n }\n if (longFormats.has(c)) {\n switch (c) {\n case \"p\":\n state = State.PARAGRAPH1\n continue\n }\n state = State.SKIP_FORMAT\n continue\n }\n /* Include current character into a next text chunk. Backslash is also included if\n * character is not among allowed ones (that is how Autodesk viewer behaves).\n */\n if (validEscapes.has(c)) {\n textStart = curPos\n } else {\n textStart = curPos - 1\n }\n state = State.TEXT\n continue\n\n case State.PARAGRAPH1:\n state = c === \"x\" ? State.PARAGRAPH2 : State.SKIP_FORMAT\n continue\n\n case State.PARAGRAPH2:\n state = c === \"q\" ? State.PARAGRAPH3 : State.SKIP_FORMAT\n continue\n\n case State.PARAGRAPH3:\n curEntities.push({type: EntityType.PARAGRAPH_ALIGNMENT, alignment: c})\n state = State.SKIP_FORMAT\n continue\n\n case State.SKIP_FORMAT:\n if (c === \";\") {\n textStart = curPos + 1\n state = State.TEXT\n }\n continue\n\n default:\n throw new Error(\"Unhandled state\")\n }\n }\n\n EmitText()\n }\n\n /** @typedef MTextFormatEntity\n * @property type One of EntityType\n *\n * @return {MTextFormatEntity[]} List of format chunks. Each chunk is either a text chunk with\n * TEXT type or some format entity. Entity with type SCOPE represents format scope which has\n * nested list of entities in \"content\" property.\n */\n GetContent() {\n return this.entities\n }\n\n /** Return only text chunks in a flattened sequence of strings. */\n *GetText() {\n\n function *TraverseItems(items) {\n for (const item of items) {\n if (item.type === EntityType.TEXT) {\n yield item.content\n } else if (item.type === EntityType.SCOPE) {\n yield *TraverseItems(item.content)\n }\n }\n }\n\n yield *TraverseItems(this.GetContent())\n }\n}\n\nMTextFormatParser.EntityType = EntityType","import {Entity} from \"./DxfScene.js\"\nimport {ShapePath} from \"three/src/extras/core/ShapePath.js\"\nimport {ShapeUtils} from \"three/src/extras/ShapeUtils.js\"\nimport {Matrix3, Vector2} from \"three\"\nimport {MTextFormatParser} from \"./MTextFormatParser.js\"\n\n/** Regex for parsing special characters in text entities. */\nconst SPECIAL_CHARS_RE = /(?:%%([dpcou%]))|(?:\\\\U\\+([0-9a-fA-F]{4}))/g\n\n/**\n * Parse special characters in text entities and convert them to corresponding unicode\n * characters.\n * https://knowledge.autodesk.com/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2019/ENU/AutoCAD-Core/files/GUID-518E1A9D-398C-4A8A-AC32-2D85590CDBE1-htm.html\n * @param {string} text Raw string.\n * @return {string} String with special characters replaced.\n */\nexport function ParseSpecialChars(text) {\n return text.replaceAll(SPECIAL_CHARS_RE, (match, p1, p2) => {\n if (p1 !== undefined) {\n switch (p1) {\n case \"d\":\n return \"\\xb0\"\n case \"p\":\n return \"\\xb1\"\n case \"c\":\n return \"\\u2205\"\n case \"o\":\n /* Toggles overscore mode on and off, not implemented. */\n return \"\"\n case \"u\":\n /* Toggles underscore mode on and off, not implemented. */\n return \"\"\n case \"%\":\n return \"%\"\n }\n } else if (p2 !== undefined) {\n const code = parseInt(p2, 16)\n if (isNaN(code)) {\n return match\n }\n return String.fromCharCode(code)\n }\n return match\n })\n}\n\n/**\n * Helper class for rendering text.\n * Currently it is just basic very simplified implementation for MVP. Further work should include:\n * * Support DXF text styles and weight.\n * * Bitmap fonts generation in texture atlas for more optimal rendering.\n */\nexport class TextRenderer {\n\n /**\n * @param fontFetchers {?Function[]} List of font fetchers. Fetcher should return promise with\n * loaded font object (opentype.js). They are invoked only when necessary. Each glyph is being\n * searched sequentially in each provided font.\n * @param options {?{}} See TextRenderer.DefaultOptions.\n */\n constructor(fontFetchers, options = null) {\n this.fontFetchers = fontFetchers\n this.fonts = []\n\n this.options = Object.create(TextRenderer.DefaultOptions)\n if (options) {\n Object.assign(this.options, options)\n }\n /* Indexed by character, value is CharShape. */\n this.shapes = new Map()\n this.stubShapeLoaded = false\n /* Shape to display if no glyph found in the specified fonts. May be null if fallback\n * character can not be rendered as well.\n */\n this.stubShape = null\n }\n\n /** Fetch necessary fonts to render the provided text. Should be called for each string which\n * will be rendered later.\n * @param text {string}\n * @return {Boolean} True if all characters can be rendered, false if none of the provided fonts\n * contains glyphs for some of the specified text characters.\n */\n async FetchFonts(text) {\n if (!this.stubShapeLoaded) {\n this.stubShapeLoaded = true\n for (const char of Array.from(this.options.fallbackChar)) {\n if (await this.FetchFonts(char)) {\n this.stubShape = this._CreateCharShape(char)\n break\n }\n }\n }\n let charMissing = false\n for (const char of text) {\n if (char.codePointAt(0) < 0x20) {\n /* Control character. */\n continue\n }\n let found = false\n for (const font of this.fonts) {\n if (font.HasChar(char)) {\n found = true\n break\n }\n }\n if (found) {\n continue\n }\n if (!this.fontFetchers) {\n return false\n }\n while (this.fontFetchers.length > 0) {\n const fetcher = this.fontFetchers.shift()\n const font = await this._FetchFont(fetcher)\n this.fonts.push(font)\n if (font.HasChar(char)) {\n found = true\n break\n }\n }\n if (!found) {\n charMissing = true\n }\n }\n return !charMissing\n }\n\n get canRender() {\n return this.fonts !== null && this.fonts.length > 0\n }\n\n /** Get width in model space units for a single line of text.\n * @param text {string}\n * @param fontSize {number}\n */\n GetLineWidth(text, fontSize) {\n const block = new TextBlock(fontSize)\n for (const char of text) {\n const shape = this._GetCharShape(char)\n if (!shape) {\n continue\n }\n block.PushChar(char, shape)\n }\n return block.GetCurrentPosition()\n }\n\n /**\n * @param {string} text\n * @param {{x,y}} startPos\n * @param {?{x,y}} endPos TEXT group second alignment point.\n * @param {?number} rotation Rotation attribute, deg.\n * @param {?number} widthFactor Relative X scale factor (group 41)\n * @param {?number} hAlign Horizontal text justification type code (group 72)\n * @param {?number} vAlign Vertical text justification type code (group 73).\n * @param {number} color\n * @param {?string} layer\n * @param {number} fontSize Font size.\n * @return {Generator} Rendering entities. Currently just indexed triangles for each\n * glyph.\n */\n *Render({text, startPos, endPos, rotation = 0, widthFactor = 1, hAlign = 0, vAlign = 0,\n color, layer = null, fontSize}) {\n const block = new TextBlock(fontSize)\n for (const char of text) {\n const shape = this._GetCharShape(char)\n if (!shape) {\n continue\n }\n block.PushChar(char, shape)\n }\n yield* block.Render(startPos, endPos, rotation, widthFactor, hAlign, vAlign, color, layer)\n }\n\n /**\n * @param {MTextFormatEntity[]} formattedText Parsed formatted text.\n * @param {{x, y}} position Insertion position.\n * @param {?number} fontSize If not specified, then it still may be defined by inline\n * formatting codes, otherwise 1 is used as fall-back value.\n * @param {?Number} width Text block width, no wrapping if undefined.\n * @param {?Number} rotation Text block rotation in degrees.\n * @param {?{x, y}} direction Text block orientation defined as direction vector. Takes a\n * precedence over rotation if both provided.\n * @param {number} attachment Attachment point, one of MTextAttachment values.\n * @param {?number} lineSpacing Line spacing ratio relative to default one (5/3 of font size).\n * @param {number} color\n * @param {?string} layer\n * @return {Generator} Rendering entities. Currently just indexed triangles for each\n * glyph.\n */\n *RenderMText({formattedText, position, fontSize, width = null, rotation = 0, direction = null,\n attachment, lineSpacing = 1, color, layer = null}) {\n if (!fontSize) {\n fontSize = 1;\n }\n const box = new TextBox(fontSize, this._GetCharShape.bind(this))\n box.FeedText(formattedText)\n yield* box.Render(position, width, rotation, direction, attachment, lineSpacing, color,\n layer)\n }\n\n /** @return {CharShape} Shape for the specified character.\n * Each shape is indexed triangles mesh for font size 1. They should be further transformed as\n * needed.\n */\n _GetCharShape(char) {\n let shape = this.shapes.get(char)\n if (shape) {\n return shape\n }\n shape = this._CreateCharShape(char)\n this.shapes.set(char, shape)\n return shape\n }\n\n _CreateCharShape(char) {\n for (const font of this.fonts) {\n const path = font.GetCharPath(char)\n if (path) {\n return new CharShape(font, path, this.options)\n }\n }\n return this.stubShape\n }\n\n async _FetchFont(fontFetcher) {\n return new Font(await fontFetcher())\n }\n}\n\n\nTextRenderer.DefaultOptions = {\n /** Number of segments for each curve in a glyph. Currently Three.js does not have more\n * adequate angle-based or length-based tessellation option.\n */\n curveSubdivision: 2,\n /** Character to use when the specified fonts does not contain necessary glyph. Several ones can\n * be specified, the first one available is used.\n */\n fallbackChar: \"\\uFFFD?\"\n}\n\n/** @typedef {Object} CharPath\n * @property advance {number}\n * @property path {?ShapePath}\n * @property bounds {xMin: number, xMax: number, yMin: number, yMax: number}\n */\n\nclass CharShape {\n /**\n * @param font {Font}\n * @param glyph {CharPath}\n * @param options {{}} Renderer options.\n */\n constructor(font, glyph, options) {\n this.font = font\n this.advance = glyph.advance\n this.bounds = glyph.bounds\n if (glyph.path) {\n const shapes = glyph.path.toShapes(false)\n this.vertices = []\n this.indices = []\n for (const shape of shapes) {\n const shapePoints = shape.extractPoints(options.curveSubdivision)\n /* Ensure proper vertices winding. */\n if (!ShapeUtils.isClockWise(shapePoints.shape)) {\n shapePoints.shape = shapePoints.shape.reverse()\n for (const hole of shapePoints.holes) {\n if (ShapeUtils.isClockWise(hole)) {\n shapePoints.holes[h] = hole.reverse()\n }\n }\n }\n /* This call also removes duplicated end vertices. */\n const indices = ShapeUtils.triangulateShape(shapePoints.shape, shapePoints.holes)\n\n const _this = this\n const baseIdx = this.vertices.length\n\n function AddVertices(vertices) {\n for (const v of vertices) {\n _this.vertices.push(v)\n }\n }\n\n AddVertices(shapePoints.shape)\n for (const hole of shapePoints.holes) {\n AddVertices(hole)\n }\n for (const tuple of indices) {\n for (const idx of tuple) {\n this.indices.push(baseIdx + idx)\n }\n }\n }\n\n } else {\n this.vertices = null\n }\n }\n\n /** Get vertices array transformed to the specified position and with the specified size.\n * @param position {{x,y}}\n * @param size {number}\n * @return {Vector2[]}\n */\n GetVertices(position, size) {\n return this.vertices.map(v => v.clone().multiplyScalar(size).add(position))\n }\n}\n\nclass Font {\n constructor(data) {\n this.data = data\n this.charMap = new Map()\n for (const glyph of Object.values(data.glyphs.glyphs)) {\n if (glyph.unicode === undefined) {\n continue\n }\n this.charMap.set(String.fromCodePoint(glyph.unicode), glyph)\n }\n /* Scale to transform the paths to size 1. */\n //XXX not really clear what is the resulting unit, check, review and comment it later\n // (100px?)\n this.scale = 100 / ((this.data.unitsPerEm || 2048) * 72)\n }\n\n /**\n * @param char {string} Character code point as string.\n * @return {Boolean} True if the font has glyphs for the specified character.\n */\n HasChar(char) {\n return this.charMap.has(char)\n }\n\n /**\n * @param char {string} Character code point as string.\n * @return {?CharPath} Path is scaled to size 1. Null if no glyphs for the specified characters.\n */\n GetCharPath(char) {\n const glyph = this.charMap.get(char)\n if (!glyph) {\n return null\n }\n const scale = this.scale\n const path = new ShapePath()\n for (const cmd of glyph.path.commands) {\n switch (cmd.type) {\n\n case 'M':\n path.moveTo(cmd.x * scale, cmd.y * scale)\n break\n\n case 'L':\n path.lineTo(cmd.x * scale, cmd.y * scale)\n break\n\n case 'Q':\n path.quadraticCurveTo(cmd.x1 * scale, cmd.y1 * scale,\n cmd.x * scale, cmd.y * scale)\n break\n\n case 'C':\n path.bezierCurveTo(cmd.x1 * scale, cmd.y1 * scale,\n cmd.x2 * scale, cmd.y2 * scale,\n cmd.x * scale, cmd.y * scale)\n break\n }\n }\n return {advance: glyph.advanceWidth * scale, path,\n bounds: {xMin: glyph.xMin * scale, xMax: glyph.xMax * scale,\n yMin: glyph.yMin * scale, yMax: glyph.yMax * scale}}\n }\n\n /**\n * @param c1 {string}\n * @param c2 {string}\n * @return {number}\n */\n GetKerning(c1, c2) {\n const i1 = this.data.charToGlyphIndex(c1)\n if (i1 === 0) {\n return 0\n }\n const i2 = this.data.charToGlyphIndex(c1)\n if (i2 === 0) {\n return 0\n }\n return this.data.getKerningValue(i1, i2) * this.scale\n }\n}\n\n/** TEXT group attribute 72 values. */\nexport const HAlign = Object.freeze({\n LEFT: 0,\n CENTER: 1,\n RIGHT: 2,\n ALIGNED: 3,\n MIDDLE: 4,\n FIT: 5\n})\n\n/** TEXT group attribute 73 values. */\nexport const VAlign = Object.freeze({\n BASELINE: 0,\n BOTTOM: 1,\n MIDDLE: 2,\n TOP: 3\n})\n\n/** MTEXT group attribute 71 values. */\nconst MTextAttachment = Object.freeze({\n TOP_LEFT: 1,\n TOP_CENTER: 2,\n TOP_RIGHT: 3,\n MIDDLE_LEFT: 4,\n MIDDLE_CENTER: 5,\n MIDDLE_RIGHT: 6,\n BOTTOM_LEFT: 7,\n BOTTOM_CENTER: 8,\n BOTTOM_RIGHT: 9\n})\n\n/** Encapsulates layout calculations for a multiline-line text block. */\nclass TextBox {\n /**\n * @param fontSize\n * @param {Function} charShapeProvider\n */\n constructor(fontSize, charShapeProvider) {\n this.fontSize = fontSize\n this.charShapeProvider = charShapeProvider\n this.curParagraph = new TextBox.Paragraph(this)\n this.paragraphs = [this.curParagraph]\n this.spaceShape = charShapeProvider(\" \")\n }\n\n /** Add some formatted text to the box.\n * @param {MTextFormatEntity[]} formattedText Parsed formatted text.\n */\n FeedText(formattedText) {\n /* For now advanced formatting is not implemented so scopes are just flattened. */\n function *FlattenItems(items) {\n for (const item of items) {\n if (item.type === MTextFormatParser.EntityType.SCOPE) {\n yield *FlattenItems(item.content)\n } else {\n yield item\n }\n }\n }\n\n /* Null is default alignment which depends on attachment point. */\n let curAlignment = null\n\n for (const item of FlattenItems(formattedText)) {\n switch(item.type) {\n\n case MTextFormatParser.EntityType.TEXT:\n for (const c of item.content) {\n if (c === \" \") {\n this.curParagraph.FeedSpace()\n } else {\n this.curParagraph.FeedChar(c)\n }\n }\n break\n\n case MTextFormatParser.EntityType.PARAGRAPH:\n this.curParagraph = new TextBox.Paragraph(this)\n this.curParagraph.SetAlignment(curAlignment)\n this.paragraphs.push(this.curParagraph)\n break\n\n case MTextFormatParser.EntityType.NON_BREAKING_SPACE:\n this.curParagraph.FeedChar(\" \")\n break\n\n case MTextFormatParser.EntityType.PARAGRAPH_ALIGNMENT:\n let a = null\n switch (item.alignment) {\n case \"l\":\n a = TextBox.Paragraph.Alignment.LEFT\n break\n case \"c\":\n a = TextBox.Paragraph.Alignment.CENTER\n break\n case \"r\":\n a = TextBox.Paragraph.Alignment.RIGHT\n break\n case \"d\":\n a = TextBox.Paragraph.Alignment.JUSTIFY\n break\n case \"j\":\n a = null\n break\n }\n this.curParagraph.SetAlignment(a)\n curAlignment = a\n break\n }\n }\n }\n\n *Render(position, width, rotation, direction, attachment, lineSpacing, color, layer) {\n for (const p of this.paragraphs) {\n p.BuildLines(width)\n }\n if (width === null || width === 0) {\n /* Find maximal paragraph width which will define overall box width. */\n width = 0\n for (const p of this.paragraphs) {\n const pWidth = p.GetMaxLineWidth()\n if (pWidth > width) {\n width = pWidth\n }\n }\n }\n\n let defaultAlignment = TextBox.Paragraph.Alignment.LEFT\n switch (attachment) {\n case MTextAttachment.TOP_CENTER:\n case MTextAttachment.MIDDLE_CENTER:\n case MTextAttachment.BOTTOM_CENTER:\n defaultAlignment = TextBox.Paragraph.Alignment.CENTER\n break\n case MTextAttachment.TOP_RIGHT:\n case MTextAttachment.MIDDLE_RIGHT:\n case MTextAttachment.BOTTOM_RIGHT:\n defaultAlignment = TextBox.Paragraph.Alignment.RIGHT\n break\n }\n\n for (const p of this.paragraphs) {\n p.ApplyAlignment(width, defaultAlignment)\n }\n\n /* Box local coordinates have top-left corner origin, so Y values are negative. The\n * specified attachment should be used to obtain attachment point offset relatively to box\n * CS origin.\n */\n\n if (direction !== null) {\n /* Direction takes precedence over rotation if specified. */\n rotation = Math.atan2(direction.y, direction.x) * 180 / Math.PI\n }\n\n const lineHeight = lineSpacing * 5 * this.fontSize / 3\n\n let height = 0\n for (const p of this.paragraphs) {\n if (p.lines === null) {\n /* Paragraph always occupies at least one line. */\n height++\n } else {\n height += p.lines.length\n }\n }\n height *= lineHeight\n\n let origin = new Vector2()\n switch (attachment) {\n case MTextAttachment.TOP_LEFT:\n break\n case MTextAttachment.TOP_CENTER:\n origin.x = width / 2\n break\n case MTextAttachment.TOP_RIGHT:\n origin.x = width\n break\n case MTextAttachment.MIDDLE_LEFT:\n origin.y = -height / 2\n break\n case MTextAttachment.MIDDLE_CENTER:\n origin.x = width / 2\n origin.y = -height / 2\n break\n case MTextAttachment.MIDDLE_RIGHT:\n origin.x = width\n origin.y = -height / 2\n break\n case MTextAttachment.BOTTOM_LEFT:\n origin.y = -height\n break\n case MTextAttachment.BOTTOM_CENTER:\n origin.x = width / 2\n origin.y = -height\n break\n case MTextAttachment.BOTTOM_RIGHT:\n origin.x = width\n origin.y = -height\n break\n default:\n throw new Error(\"Unhandled alignment\")\n }\n\n /* Transform for each chunk insertion point. */\n const transform = new Matrix3().translate(-origin.x, -origin.y)\n .rotate(-rotation * Math.PI / 180).translate(position.x, position.y)\n\n let y = -this.fontSize\n for (const p of this.paragraphs) {\n if (p.lines === null) {\n y -= lineHeight\n continue\n }\n for (const line of p.lines) {\n for (let chunkIdx = line.startChunkIdx;\n chunkIdx < line.startChunkIdx + line.numChunks;\n chunkIdx++) {\n\n const chunk = p.chunks[chunkIdx]\n let x = chunk.position\n /* First chunk of continuation line never prepended by whitespace. */\n if (chunkIdx === 0 || chunkIdx !== line.startChunkIdx) {\n x += chunk.GetSpacingWidth()\n }\n const v = new Vector2(x, y)\n v.applyMatrix3(transform)\n if (chunk.block) {\n yield* chunk.block.Render(v, null, rotation, null,\n HAlign.LEFT, VAlign.BASELINE,\n color, layer)\n }\n }\n y -= lineHeight\n }\n }\n }\n}\n\nTextBox.Paragraph = class {\n constructor(textBox) {\n this.textBox = textBox\n this.chunks = []\n this.curChunk = null\n this.alignment = null\n this.lines = null\n }\n\n /** Feed character for current chunk. Spaces should be fed by FeedSpace() method. If space\n * character is fed into this method, it is interpreted as non-breaking space.\n */\n FeedChar(c) {\n const shape = this.textBox.charShapeProvider(c)\n if (shape === null) {\n return\n }\n if (this.curChunk === null) {\n this._AddChunk()\n }\n this.curChunk.PushChar(c, shape)\n }\n\n FeedSpace() {\n if (this.curChunk === null || this.curChunk.lastChar !== null) {\n this._AddChunk()\n }\n this.curChunk.PushSpace()\n }\n\n SetAlignment(alignment) {\n this.alignment = alignment\n }\n\n /** Group chunks into lines.\n *\n * @param {?number} boxWidth Box width. Do not wrap lines if null (one line is created).\n */\n BuildLines(boxWidth) {\n if (this.curChunk === null) {\n return\n }\n this.lines = []\n let startChunkIdx = 0\n let curChunkIdx = 0\n let curWidth = 0\n\n const CommitLine = () => {\n this.lines.push(new TextBox.Paragraph.Line(this,\n startChunkIdx,\n curChunkIdx - startChunkIdx,\n curWidth))\n startChunkIdx = curChunkIdx\n curWidth = 0\n }\n\n for (; curChunkIdx < this.chunks.length; curChunkIdx++) {\n const chunk = this.chunks[curChunkIdx]\n const chunkWidth = chunk.GetWidth(startChunkIdx === 0 || curChunkIdx !== startChunkIdx)\n if (boxWidth !== null && boxWidth !== 0 && curWidth !== 0 &&\n curWidth + chunkWidth > boxWidth) {\n\n CommitLine()\n }\n chunk.position = curWidth\n curWidth += chunkWidth\n }\n if (startChunkIdx !== curChunkIdx && curWidth !== 0) {\n CommitLine()\n }\n }\n\n GetMaxLineWidth() {\n if (this.lines === null) {\n return 0\n }\n let maxWidth = 0\n for (const line of this.lines) {\n if (line.width > maxWidth) {\n maxWidth = line.width\n }\n }\n return maxWidth\n }\n\n ApplyAlignment(boxWidth, defaultAlignment) {\n if (this.lines) {\n for (const line of this.lines) {\n line.ApplyAlignment(boxWidth, defaultAlignment)\n }\n }\n }\n\n _AddChunk() {\n this.curChunk = new TextBox.Paragraph.Chunk(this, this.textBox.fontSize, this.curChunk)\n this.chunks.push(this.curChunk)\n }\n}\n\nTextBox.Paragraph.Alignment = Object.freeze({\n LEFT: 0,\n CENTER: 1,\n RIGHT: 2,\n JUSTIFY: 3\n})\n\nTextBox.Paragraph.Chunk = class {\n /**\n * @param {TextBox.Paragraph} paragraph\n * @param {number} fontSize\n * @param {?TextBox.Paragraph.Chunk} prevChunk\n */\n constructor(paragraph, fontSize, prevChunk) {\n this.paragraph = paragraph\n this.fontSize = fontSize\n this.prevChunk = prevChunk\n this.lastChar = null\n this.lastShape = null\n this.leadingSpaces = 0\n this.spaceStartKerning = null\n this.spaceEndKerning = null\n this.block = null\n this.position = null\n }\n\n PushSpace() {\n if (this.block) {\n throw new Error(\"Illegal operation\")\n }\n this.leadingSpaces++\n }\n\n /**\n * @param char {string}\n * @param shape {CharShape}\n */\n PushChar(char, shape) {\n if (this.spaceStartKerning === null) {\n if (this.leadingSpaces === 0) {\n this.spaceStartKerning = 0\n this.spaceEndKerning = 0\n } else {\n if (this.prevChunk && this.prevChunk.lastShape &&\n this.prevChunk.fontSize === this.fontSize &&\n this.prevChunk.lastShape.font === this.paragraph.textBox.spaceShape.font) {\n\n this.spaceStartKerning =\n this.prevChunk.lastShape.font.GetKerning(this.prevChunk.lastChar, \" \")\n } else {\n this.spaceStartKerning = 0\n }\n if (shape.font === this.paragraph.textBox.spaceShape.font) {\n this.spaceEndKerning = shape.font.GetKerning(\" \", char)\n } else {\n this.spaceEndKerning = 0\n }\n }\n }\n\n if (this.block === null) {\n this.block = new TextBlock(this.fontSize)\n }\n this.block.PushChar(char, shape)\n\n this.lastChar = char\n this.lastShape = shape\n }\n\n GetSpacingWidth() {\n return (this.leadingSpaces * this.paragraph.textBox.spaceShape.advance +\n this.spaceStartKerning + this.spaceEndKerning) * this.fontSize\n }\n\n GetWidth(withSpacing) {\n if (this.block === null) {\n return 0\n }\n let width = this.block.GetCurrentPosition()\n if (withSpacing) {\n width += this.GetSpacingWidth()\n }\n return width\n }\n}\n\nTextBox.Paragraph.Line = class {\n constructor(paragraph, startChunkIdx, numChunks, width) {\n this.paragraph = paragraph\n this.startChunkIdx = startChunkIdx\n this.numChunks = numChunks\n this.width = width\n }\n\n ApplyAlignment(boxWidth, defaultAlignment) {\n let alignment = this.paragraph.alignment ?? defaultAlignment\n switch (alignment) {\n case TextBox.Paragraph.Alignment.LEFT:\n break\n case TextBox.Paragraph.Alignment.CENTER: {\n const offset = (boxWidth - this.width) / 2\n this.ForEachChunk(chunk => chunk.position += offset)\n break\n }\n case TextBox.Paragraph.Alignment.RIGHT: {\n const offset = boxWidth - this.width\n this.ForEachChunk(chunk => chunk.position += offset)\n break\n }\n case TextBox.Paragraph.Alignment.JUSTIFY: {\n const space = boxWidth - this.width\n if (space <= 0 || this.numChunks === 1) {\n break\n }\n const step = space / (this.numChunks - 1)\n let offset = 0\n this.ForEachChunk(chunk => {\n chunk.position += offset\n offset += step\n })\n break\n }\n default:\n throw new Error(\"Unhandled alignment: \" + this.paragraph.alignment)\n }\n }\n\n ForEachChunk(handler) {\n for (let i = 0; i < this.numChunks; i++) {\n handler(this.paragraph.chunks[this.startChunkIdx + i])\n }\n }\n}\n\n/** Encapsulates calculations for a single-line text block. */\nclass TextBlock {\n constructor(fontSize) {\n this.fontSize = fontSize\n /* Element is {shape: CharShape, vertices: ?{Vector2}[]} */\n this.glyphs = []\n this.bounds = null\n this.curX = 0\n this.prevChar = null\n this.prevFont = null\n }\n\n /**\n * @param char {string}\n * @param shape {CharShape}\n */\n PushChar(char, shape) {\n /* Initially store with just font size and characters position applied. Origin is the first\n * character base point.\n */\n let offset\n if (this.prevChar !== null && this.prevFont === shape.font) {\n offset = this.prevFont.GetKerning(this.prevChar, char)\n } else {\n offset = 0\n }\n const x = this.curX + offset * this.fontSize\n let vertices\n if (shape.vertices && shape.vertices.length > 0) {\n vertices = shape.GetVertices({x, y: 0}, this.fontSize)\n const xMin = x + shape.bounds.xMin * this.fontSize\n const xMax = x + shape.bounds.xMax * this.fontSize\n const yMin = shape.bounds.yMin * this.fontSize\n const yMax = shape.bounds.yMax * this.fontSize\n /* Leading/trailing spaces not accounted intentionally now. */\n if (this.bounds === null) {\n this.bounds = {xMin, xMax, yMin, yMax}\n } else {\n if (xMin < this.bounds.xMin) {\n this.bounds.xMin = xMin\n }\n if (yMin < this.bounds.yMin) {\n this.bounds.yMin = yMin\n }\n if (xMax > this.bounds.xMax) {\n this.bounds.xMax = xMax\n }\n if (yMax > this.bounds.yMax) {\n this.bounds.yMax = yMax\n }\n }\n } else {\n vertices = null\n }\n this.curX = x + shape.advance * this.fontSize\n this.glyphs.push({shape, vertices})\n this.prevChar = char\n this.prevFont = shape.font\n }\n\n GetCurrentPosition() {\n return this.curX\n }\n\n /**\n * @param startPos {{x,y}} TEXT group first alignment point.\n * @param endPos {?{x,y}} TEXT group second alignment point.\n * @param rotation {?number} Rotation attribute, deg.\n * @param widthFactor {?number} Relative X scale factor (group 41).\n * @param hAlign {?number} Horizontal text justification type code (group 72).\n * @param vAlign {?number} Vertical text justification type code (group 73).\n * @param color {number}\n * @param layer {?string}\n * @return {Generator} Rendering entities. Currently just indexed triangles for each\n * glyph.\n */\n *Render(startPos, endPos, rotation, widthFactor, hAlign, vAlign, color, layer) {\n\n if (this.bounds === null) {\n return\n }\n\n endPos = endPos ?? startPos\n if (rotation) {\n rotation *= -Math.PI / 180\n } else {\n rotation = 0\n }\n widthFactor = widthFactor ?? 1\n hAlign = hAlign ?? HAlign.LEFT\n vAlign = vAlign ?? VAlign.BASELINE\n\n let origin = new Vector2()\n let scale = new Vector2(widthFactor, 1)\n let insertionPos =\n (hAlign === HAlign.LEFT && vAlign === VAlign.BASELINE) ||\n hAlign === HAlign.FIT || hAlign === HAlign.ALIGNED ?\n new Vector2(startPos.x, startPos.y) : new Vector2(endPos.x, endPos.y)\n\n const GetFitScale = () => {\n const width = endPos.x - startPos.x\n if (width < Number.MIN_VALUE * 2) {\n return widthFactor\n }\n return width / (this.bounds.xMax - this.bounds.xMin)\n }\n\n const GetFitRotation = () => {\n return -Math.atan2(endPos.y - startPos.y, endPos.x - startPos.x)\n }\n\n switch (hAlign) {\n case HAlign.LEFT:\n origin.x = this.bounds.xMin\n break\n case HAlign.CENTER:\n origin.x = (this.bounds.xMax - this.bounds.xMin) / 2\n break\n case HAlign.RIGHT:\n origin.x = this.bounds.xMax\n break\n case HAlign.MIDDLE:\n origin.x = (this.bounds.xMax - this.bounds.xMin) / 2\n origin.y = (this.bounds.yMax - this.bounds.yMin) / 2\n break\n case HAlign.ALIGNED: {\n const f = GetFitScale()\n scale.x = f\n scale.y = f\n rotation = GetFitRotation()\n break\n }\n case HAlign.FIT:\n scale.x = GetFitScale()\n rotation = GetFitRotation()\n break\n default:\n console.warn(\"Unrecognized hAlign value: \" + hAlign)\n }\n\n switch (vAlign) {\n case VAlign.BASELINE:\n break\n case VAlign.BOTTOM:\n origin.y = this.bounds.yMin\n break\n case VAlign.MIDDLE:\n origin.y = (this.bounds.yMax - this.bounds.yMin) / 2\n break\n case VAlign.TOP:\n origin.y = this.bounds.yMax\n break\n default:\n console.warn(\"Unrecognized vAlign value: \" + vAlign)\n }\n\n const transform = new Matrix3().translate(-origin.x, -origin.y).scale(scale.x, scale.y)\n .rotate(rotation).translate(insertionPos.x, insertionPos.y)\n\n for (const glyph of this.glyphs) {\n if (glyph.vertices) {\n for (const v of glyph.vertices) {\n v.applyMatrix3(transform)\n }\n yield new Entity({\n type: Entity.Type.TRIANGLES,\n vertices: glyph.vertices,\n indices: glyph.shape.indices,\n layer, color\n })\n }\n }\n }\n}\n","/** Based on bintrees package (https://github.com/vadimg/js_bintrees). Fixed web-worker support. */\n\nfunction TreeBase() {}\n\n// removes all nodes from the tree\nTreeBase.prototype.clear = function() {\n this._root = null;\n this.size = 0;\n};\n\n// returns node data if found, null otherwise\nTreeBase.prototype.find = function(data) {\n var res = this._root;\n\n while(res !== null) {\n var c = this._comparator(data, res.data);\n if(c === 0) {\n return res.data;\n }\n else {\n res = res.get_child(c > 0);\n }\n }\n\n return null;\n};\n\n// returns iterator to node if found, null otherwise\nTreeBase.prototype.findIter = function(data) {\n var res = this._root;\n var iter = this.iterator();\n\n while(res !== null) {\n var c = this._comparator(data, res.data);\n if(c === 0) {\n iter._cursor = res;\n return iter;\n }\n else {\n iter._ancestors.push(res);\n res = res.get_child(c > 0);\n }\n }\n\n return null;\n};\n\n// Returns an iterator to the tree node at or immediately after the item\nTreeBase.prototype.lowerBound = function(item) {\n var cur = this._root;\n var iter = this.iterator();\n var cmp = this._comparator;\n\n while(cur !== null) {\n var c = cmp(item, cur.data);\n if(c === 0) {\n iter._cursor = cur;\n return iter;\n }\n iter._ancestors.push(cur);\n cur = cur.get_child(c > 0);\n }\n\n for(var i=iter._ancestors.length - 1; i >= 0; --i) {\n cur = iter._ancestors[i];\n if(cmp(item, cur.data) < 0) {\n iter._cursor = cur;\n iter._ancestors.length = i;\n return iter;\n }\n }\n\n iter._ancestors.length = 0;\n return iter;\n};\n\n// Returns an iterator to the tree node immediately after the item\nTreeBase.prototype.upperBound = function(item) {\n var iter = this.lowerBound(item);\n var cmp = this._comparator;\n\n while(iter.data() !== null && cmp(iter.data(), item) === 0) {\n iter.next();\n }\n\n return iter;\n};\n\n// returns null if tree is empty\nTreeBase.prototype.min = function() {\n var res = this._root;\n if(res === null) {\n return null;\n }\n\n while(res.left !== null) {\n res = res.left;\n }\n\n return res.data;\n};\n\n// returns null if tree is empty\nTreeBase.prototype.max = function() {\n var res = this._root;\n if(res === null) {\n return null;\n }\n\n while(res.right !== null) {\n res = res.right;\n }\n\n return res.data;\n};\n\n// returns a null iterator\n// call next() or prev() to point to an element\nTreeBase.prototype.iterator = function() {\n return new Iterator(this);\n};\n\n// calls cb on each node's data, in order\nTreeBase.prototype.each = function(cb) {\n var it=this.iterator(), data;\n while((data = it.next()) !== null) {\n cb(data);\n }\n};\n\n// calls cb on each node's data, in reverse order\nTreeBase.prototype.reach = function(cb) {\n var it=this.iterator(), data;\n while((data = it.prev()) !== null) {\n cb(data);\n }\n};\n\n\nfunction Iterator(tree) {\n this._tree = tree;\n this._ancestors = [];\n this._cursor = null;\n}\n\nIterator.prototype.data = function() {\n return this._cursor !== null ? this._cursor.data : null;\n};\n\n// if null-iterator, returns first node\n// otherwise, returns next node\nIterator.prototype.next = function() {\n if(this._cursor === null) {\n var root = this._tree._root;\n if(root !== null) {\n this._minNode(root);\n }\n }\n else {\n if(this._cursor.right === null) {\n // no greater node in subtree, go up to parent\n // if coming from a right child, continue up the stack\n var save;\n do {\n save = this._cursor;\n if(this._ancestors.length) {\n this._cursor = this._ancestors.pop();\n }\n else {\n this._cursor = null;\n break;\n }\n } while(this._cursor.right === save);\n }\n else {\n // get the next node from the subtree\n this._ancestors.push(this._cursor);\n this._minNode(this._cursor.right);\n }\n }\n return this._cursor !== null ? this._cursor.data : null;\n};\n\n// if null-iterator, returns last node\n// otherwise, returns previous node\nIterator.prototype.prev = function() {\n if(this._cursor === null) {\n var root = this._tree._root;\n if(root !== null) {\n this._maxNode(root);\n }\n }\n else {\n if(this._cursor.left === null) {\n var save;\n do {\n save = this._cursor;\n if(this._ancestors.length) {\n this._cursor = this._ancestors.pop();\n }\n else {\n this._cursor = null;\n break;\n }\n } while(this._cursor.left === save);\n }\n else {\n this._ancestors.push(this._cursor);\n this._maxNode(this._cursor.left);\n }\n }\n return this._cursor !== null ? this._cursor.data : null;\n};\n\nIterator.prototype._minNode = function(start) {\n while(start.left !== null) {\n this._ancestors.push(start);\n start = start.left;\n }\n this._cursor = start;\n};\n\nIterator.prototype._maxNode = function(start) {\n while(start.right !== null) {\n this._ancestors.push(start);\n start = start.right;\n }\n this._cursor = start;\n};\n\n\nfunction Node(data) {\n this.data = data;\n this.left = null;\n this.right = null;\n this.red = true;\n}\n\nNode.prototype.get_child = function(dir) {\n return dir ? this.right : this.left;\n};\n\nNode.prototype.set_child = function(dir, val) {\n if(dir) {\n this.right = val;\n }\n else {\n this.left = val;\n }\n};\n\n\nexport function RBTree(comparator) {\n this._root = null;\n this._comparator = comparator;\n this.size = 0;\n}\n\nRBTree.prototype = new TreeBase();\n\n// returns true if inserted, false if duplicate\nRBTree.prototype.insert = function(data) {\n var ret = false;\n\n if(this._root === null) {\n // empty tree\n this._root = new Node(data);\n ret = true;\n this.size++;\n }\n else {\n var head = new Node(undefined); // fake tree root\n\n var dir = 0;\n var last = 0;\n\n // setup\n var gp = null; // grandparent\n var ggp = head; // grand-grand-parent\n var p = null; // parent\n var node = this._root;\n ggp.right = this._root;\n\n // search down\n while(true) {\n if(node === null) {\n // insert new node at the bottom\n node = new Node(data);\n p.set_child(dir, node);\n ret = true;\n this.size++;\n }\n else if(is_red(node.left) && is_red(node.right)) {\n // color flip\n node.red = true;\n node.left.red = false;\n node.right.red = false;\n }\n\n // fix red violation\n if(is_red(node) && is_red(p)) {\n var dir2 = ggp.right === gp;\n\n if(node === p.get_child(last)) {\n ggp.set_child(dir2, single_rotate(gp, !last));\n }\n else {\n ggp.set_child(dir2, double_rotate(gp, !last));\n }\n }\n\n var cmp = this._comparator(node.data, data);\n\n // stop if found\n if(cmp === 0) {\n break;\n }\n\n last = dir;\n dir = cmp < 0;\n\n // update helpers\n if(gp !== null) {\n ggp = gp;\n }\n gp = p;\n p = node;\n node = node.get_child(dir);\n }\n\n // update root\n this._root = head.right;\n }\n\n // make root black\n this._root.red = false;\n\n return ret;\n};\n\n// returns true if removed, false if not found\nRBTree.prototype.remove = function(data) {\n if(this._root === null) {\n return false;\n }\n\n var head = new Node(undefined); // fake tree root\n var node = head;\n node.right = this._root;\n var p = null; // parent\n var gp = null; // grand parent\n var found = null; // found item\n var dir = 1;\n\n while(node.get_child(dir) !== null) {\n var last = dir;\n\n // update helpers\n gp = p;\n p = node;\n node = node.get_child(dir);\n\n var cmp = this._comparator(data, node.data);\n\n dir = cmp > 0;\n\n // save found node\n if(cmp === 0) {\n found = node;\n }\n\n // push the red node down\n if(!is_red(node) && !is_red(node.get_child(dir))) {\n if(is_red(node.get_child(!dir))) {\n var sr = single_rotate(node, dir);\n p.set_child(last, sr);\n p = sr;\n }\n else if(!is_red(node.get_child(!dir))) {\n var sibling = p.get_child(!last);\n if(sibling !== null) {\n if(!is_red(sibling.get_child(!last)) && !is_red(sibling.get_child(last))) {\n // color flip\n p.red = false;\n sibling.red = true;\n node.red = true;\n }\n else {\n var dir2 = gp.right === p;\n\n if(is_red(sibling.get_child(last))) {\n gp.set_child(dir2, double_rotate(p, last));\n }\n else if(is_red(sibling.get_child(!last))) {\n gp.set_child(dir2, single_rotate(p, last));\n }\n\n // ensure correct coloring\n var gpc = gp.get_child(dir2);\n gpc.red = true;\n node.red = true;\n gpc.left.red = false;\n gpc.right.red = false;\n }\n }\n }\n }\n }\n\n // replace and remove if found\n if(found !== null) {\n found.data = node.data;\n p.set_child(p.right === node, node.get_child(node.left === null));\n this.size--;\n }\n\n // update root and make it black\n this._root = head.right;\n if(this._root !== null) {\n this._root.red = false;\n }\n\n return found !== null;\n};\n\nfunction is_red(node) {\n return node !== null && node.red;\n}\n\nfunction single_rotate(root, dir) {\n var save = root.get_child(!dir);\n\n root.set_child(!dir, save.get_child(dir));\n save.set_child(dir, root);\n\n root.red = true;\n save.red = false;\n\n return save;\n}\n\nfunction double_rotate(root, dir) {\n root.set_child(!dir, single_rotate(root.get_child(!dir), !dir));\n return single_rotate(root, dir);\n}\n","import {Vector2, Matrix3} from \"three\"\nimport { ParseSpecialChars } from \"./TextRenderer.js\"\n\n/**\n * @property {{color: ?number, start: Vector2, end: Vector2}[]} lines\n * @property {{color: ?number, vertices: Vector2[]}[], indices: number[]} triangles On or more\n * triangles in each item.\n * @property {{text: string, size: number, angle: number, color: number, position: Vector2}[]} texts\n * Each item position is specified as middle point of the rendered text.\n */\nexport class DimensionLayout {\n constructor() {\n this.lines = []\n this.triangles = []\n this.texts = []\n }\n\n AddLine(start, end, color = null) {\n this.lines.push({start, end, color})\n }\n\n /** Add one or more triangles. */\n AddTriangles(vertices, indices, color = null) {\n this.triangles.push({vertices, indices, color})\n }\n\n AddText(text, size, angle, color, position) {\n this.texts.push({text, size, angle, color, position})\n }\n}\n\nconst arrowHeadShape = {\n vertices: [\n new Vector2(0, 0),\n new Vector2(1, -0.25),\n new Vector2(1, 0.25)\n ],\n indices: [0, 1, 2]\n}\n\n/** Encapsulates all calculations about linear dimensions layout. */\nexport class LinearDimension {\n\n /**\n * @typedef LinearDimensionParams\n * @property {Vector2} p1 First definition point.\n * @property {Vector2} p2 Second definition point.\n * @property {Vector2} anchor Anchor point defines dimension line location.\n * @property {?number} angle Rotation angle for rotated dimension, deg.\n * @property {boolean} isAligned Dimension line is parallel to base line for aligned dimension.\n * @property {?string} text Dimension text pattern.\n * @property {?Vector2} textAnchor Text location (middle point) override.\n * @property {?number} textRotation Rotation angle of the dimension text away from its default\n * orientation (the direction of the dimension line)\n */\n\n /**\n * @param {LinearDimensionParams} params\n * @param {Function} styleResolver Provides value for a requested style parameter.\n * @param {Function} textWidthCalculator Get text width in model space\n * units for a given text and font size (height).\n */\n constructor(params, styleResolver, textWidthCalculator) {\n this.params = params\n this.styleResolver = styleResolver\n this.textWidthCalculator = textWidthCalculator\n /* Can be set to indicate some invalid geometric solution. */\n this.isValid = true\n this._CalculateGeometry()\n }\n\n IsValid() {\n return this.isValid\n }\n\n GetTexts() {\n return [this._GetText()]\n }\n\n /**\n * @return {DimensionLayout}\n */\n GenerateLayout() {\n /* See https://ezdxf.readthedocs.io/en/stable/tables/dimstyle_table_entry.html */\n const result = new DimensionLayout()\n\n /* Dimension line(s). */\n const dimSize = this.d1.distanceTo(this.d2)\n const dimColor = this.styleResolver(\"DIMCLRD\")\n let dimScale = this.styleResolver(\"DIMSCALE\") ?? 1\n if (dimScale == 0) {\n /* No any auto calculation implemented, since no support for paper space. */\n dimScale = 1\n }\n\n const text = this._GetText()\n const fontSize = (this.styleResolver(\"DIMTXT\") ?? 1) * dimScale\n const textWidth = this.textWidthCalculator(text, fontSize)\n const textColor = this.styleResolver(\"DIMCLRT\")\n const arrowSize = (this.styleResolver(\"DIMASZ\") ?? 1) * dimScale\n const tickSize = (this.styleResolver(\"DIMTSZ\") ?? 0) * dimScale\n\n let textAnchor = this.params.textAnchor\n let flipArrows = false\n\n const start = this.d1.clone()\n const dimExt = (this.styleResolver(\"DIMDLE\") ?? 0) * dimScale\n if (dimExt != 0) {\n start.add(this.vDim.clone().multiplyScalar(-dimExt))\n }\n const end = this.d2.clone()\n if (dimExt != 0) {\n end.add(this.vDim.clone().multiplyScalar(dimExt))\n }\n result.AddLine(start, end, dimColor)\n\n if (dimSize < arrowSize * 2) {\n flipArrows = true\n }\n\n if (!textAnchor) {\n //XXX for now just always draw the text above dimension line with fixed gap\n textAnchor = this.vDim.clone().multiplyScalar(this.d1.distanceTo(this.d2) / 2)\n .add(this.d1).add(this.vDimNorm.clone().multiplyScalar(fontSize * 0.75))\n }\n const angle = this.vDimNorm.angle() * 180 / Math.PI - 90 +\n (this.params.textRotation ?? 0)\n result.AddText(text, fontSize, angle, textColor, textAnchor)\n\n\n /* Extension lines. */\n const extColor = this.styleResolver(\"DIMCLRE\")\n const extOffset = (this.styleResolver(\"DIMEXO\") ?? 0) * dimScale\n const extExt = (this.styleResolver(\"DIMEXE\") ?? 0) * dimScale\n\n const DrawExtLine = (basePt, dimPt) => {\n const vExt = dimPt.clone().sub(basePt)\n const dist = vExt.length()\n if (dist == 0) {\n return\n }\n vExt.normalize()\n const start = basePt.clone()\n if (extOffset != 0) {\n start.add(vExt.clone().multiplyScalar(extOffset))\n }\n const end = dimPt.clone()\n if (extExt != 0) {\n end.add(vExt.clone().multiplyScalar(extExt))\n }\n result.AddLine(start, end, extColor)\n }\n\n if (!(this.styleResolver(\"DIMSE1\") ?? 0)) {\n DrawExtLine(this.params.p1, this.d1)\n }\n if (!(this.styleResolver(\"DIMSE2\") ?? 0)) {\n DrawExtLine(this.params.p2, this.d2)\n }\n\n /* Draw arrows (or anything defined as dimension shape). Assuming shape is defined\n * horizontally for left side with the origin in the dimension point, scale corresponding to\n * size 1. Calculate appropriate transform for the shape.\n */\n //XXX check suppression by DIMSOXD, DIMSD1, DIMSD2\n for (let i = 0; i < 2; i++) {\n const dimPt = i == 0 ? this.d1 : this.d2\n let flip = i == 1\n if (flipArrows) {\n flip = !flip\n }\n\n let transform = new Matrix3().identity()\n if (tickSize > 0) {\n transform.scale(tickSize, tickSize)\n } else {\n transform.scale(arrowSize, arrowSize)\n /* Tick is not flipped. */\n if (flip) {\n transform.scale(-1, 1)\n }\n }\n\n const angle = -this.vDim.angle()\n transform.rotate(angle)\n\n transform.translate(dimPt.x, dimPt.y)\n\n if (tickSize > 0) {\n this._CreateTick(result, transform, dimColor)\n } else {\n this._CreateArrowShape(result, transform, dimColor)\n }\n }\n\n return result\n }\n\n _CreateArrowShape(layout, transform, color) {\n const vertices = []\n for (const v of arrowHeadShape.vertices) {\n vertices.push(v.clone().applyMatrix3(transform))\n }\n layout.AddTriangles(vertices, arrowHeadShape.indices, color)\n }\n\n _CreateTick(layout, transform, color) {\n layout.AddLine(new Vector2(0.5, 0.5).applyMatrix3(transform),\n new Vector2(-0.5, -0.5).applyMatrix3(transform),\n color)\n }\n\n /** Calculate and set basic geometric parameters (some points and vectors which define the\n * dimension layout).\n */\n _CalculateGeometry() {\n /* Base vector. */\n this.vBase = this.params.p2.clone().sub(this.params.p1).normalize()\n\n /* Dimension vector. */\n if (this.params.isAligned) {\n this.vDim = this.vBase\n } else {\n /* Angle is defined as angle between X axis and dimension line (CCW is positive). */\n const angle = (this.params.angle ?? 0) * Math.PI / 180\n this.vDim = new Vector2(Math.cos(angle), Math.sin(angle))\n }\n\n /* Dimension points. Calculate them by projecting base points to dimension line. */\n this.d1 = this.vDim.clone().multiplyScalar(\n /* Projected signed length. */\n this.params.p1.clone().sub(this.params.anchor).dot(this.vDim))\n .add(this.params.anchor)\n this.d2 = this.vDim.clone().multiplyScalar(\n /* Projected signed length. */\n this.params.p2.clone().sub(this.params.anchor).dot(this.vDim))\n .add(this.params.anchor)\n\n if (this.d1.distanceTo(this.d2) == 0) {\n this.isValid = false\n }\n\n /* Ensure dimension vector still points from d1 to d2 after rotation. */\n this.vDim.copy(this.d2).sub(this.d1).normalize()\n\n /* Dimension normal vector is perpendicular to dimension line and is either above or on its\n * left side.\n * 90deg rotated vector is either [y; -x] or [-y; x]. Select most suitable from them\n * (y > x).\n */\n if (this.vDim.y < -this.vDim.x) {\n this.vDimNorm = new Vector2(this.vDim.y, -this.vDim.x)\n } else {\n this.vDimNorm = new Vector2(-this.vDim.y, this.vDim.x)\n }\n }\n\n _GetText() {\n if (this.params.text == \" \") {\n /* Space indicates empty text. */\n return \"\"\n }\n if ((this.params.text ?? \"\") != \"\" && this.params.text.indexOf(\"<>\") == -1) {\n /* No value placeholder, just return the text. */\n return ParseSpecialChars(this.params.text)\n }\n\n let measurement = this.d2.distanceTo(this.d1)\n measurement *= this.styleResolver(\"DIMLFAC\") ?? 1\n\n const rnd = this.styleResolver(\"DIMRND\") ?? 0\n if (rnd > 0) {\n const n = Math.round(measurement / rnd)\n measurement = rnd * n\n }\n\n const zeroSupp = this.styleResolver(\"DIMZIN\") ?? 0\n const leadZeroSupp = (zeroSupp & 4) != 0\n const trailingZeroSupp = (zeroSupp & 8) != 0\n\n let measText = measurement.toFixed(this.styleResolver(\"DIMDEC\") ?? 2)\n\n if (trailingZeroSupp) {\n measText = measText.replace(/.0+$/, \"\")\n }\n\n if (leadZeroSupp) {\n measText = measText.replace(/^0+/, \"\")\n }\n\n if (measText.startsWith(\".\")) {\n measText = \"0\" + measText\n } else if (measText == \"\") {\n measText = \"0\"\n }\n if (measText.endsWith(\".\")) {\n measText = measText.substring(0, measText.length - 1)\n }\n\n let decSep = this.styleResolver(\"DIMDSEP\") ?? \".\"\n if (!isNaN(decSep)) {\n decSep = String.fromCharCode(decSep)\n }\n if (decSep != \".\") {\n measText = measText.replace(\".\", decSep)\n }\n\n const suffix = this.styleResolver(\"DIMPOST\") ?? \"\"\n if (suffix != \"\") {\n if (suffix.indexOf(\"<>\") != -1) {\n measText = suffix.replaceAll(\"<>\", measText)\n } else {\n measText += suffix\n }\n }\n\n if ((this.params.text ?? \"\") != \"\") {\n measText = this.params.text.replaceAll(\"<>\", measText)\n }\n\n return ParseSpecialChars(measText)\n }\n}\n","import { Vector2 } from \"three\"\n\n\n/** Find intersection points of two segments in a parametric form.\n * @param {Vector2} a1 First segment start point.\n * @param {Vector2} a2 First segment end point.\n * @param {Vector2} b1 Second segment start point.\n * @param {Vector2} b2 Second segment end point.\n * @param {boolean} force Force intersection calculation even if intersection point is out of\n * segment range.\n * @return {?number[3]} Parameters for the first and second segment in the intersection point\n * (parameter value 0 corresponds to a start point, 1 - to an end point). Third number is segments\n * direction vectors pseudo-cross-product. Null if there is no intersection.\n */\nexport function IntersectSegmentsParametric(a1, a2, b1, b2, force = false) {\n const a = a2.clone().sub(a1)\n const b = b2.clone().sub(b1)\n\n if (a.lengthSq() == 0 || b.lengthSq() == 0) {\n return null\n }\n\n const S = a.cross(b)\n if (Math.abs(S) <= Number.EPSILON) {\n /* Consider parallel. */\n return null\n }\n\n const c = b1.clone().sub(a1)\n\n const t = c.cross(b) / S\n if (!force && (t < 0 || t > 1)) {\n /* Intersection point is out the first segment endpoints. */\n return null\n }\n\n const u = c.cross(a) / S\n if (!force && (u < 0 || u > 1)) {\n /* Intersection point is out the second segment endpoints. */\n return null\n }\n\n return [t, u, S]\n}\n\n/** Find intersection points of two segments.\n * @param {Vector2} a1 First segment start point.\n * @param {Vector2} a2 First segment end point.\n * @param {Vector2} b1 Second segment start point.\n * @param {Vector2} b2 Second segment end point.\n * @return {?Vector2} Intersection point coordinate, null if no intersection.\n */\nexport function IntersectSegments(a1, a2, b1, b2) {\n const params = IntersectSegmentsParametric(a1, a2, b1, b2)\n if (!params) {\n return null\n }\n return a2.clone().sub(a1).multiplyScalar(params[0]).add(a1)\n}\n","import { Vector2, Matrix3, Box2 } from \"three\"\nimport { IntersectSegmentsParametric } from \"./math/utils.js\"\n\nexport const HatchStyle = Object.freeze({\n ODD_PARITY: 0,\n OUTERMOST: 1,\n THROUGH_ENTIRE_AREA: 2\n})\n\n/** Force intersection at this distance from edge endpoint (parameter value). */\nconst ENDPOINT_MARGIN = 1e-4\n\n/** @return {boolean} True if both edges crossed from the same side, false otherwise. */\nfunction EdgeSameSide(e1, e2) {\n return (e1.intersection[2] > 0 && e2.intersection[2]) > 0 ||\n (e1.intersection[2] < 0 && e2.intersection[2] < 0)\n}\n\n/** Context for one line clipping calculations. */\nclass ClipCalculator {\n\n constructor(boundaryLoops, style, line) {\n this.style = style\n this.line = line\n this.lineDir = line[1].clone().sub(line[0]).normalize()\n\n this.loops = []\n for (let loopIdx = 0; loopIdx < boundaryLoops.length; loopIdx++) {\n const loop = boundaryLoops[loopIdx]\n const _loop = []\n for (let vtxIdx = 0; vtxIdx < loop.length; vtxIdx++) {\n _loop.push({\n idx: vtxIdx,\n start: loop[vtxIdx],\n end: loop[vtxIdx == loop.length - 1 ? 0 : vtxIdx + 1],\n loopIdx\n })\n }\n this.loops.push(_loop)\n }\n }\n\n /**\n * @return {number[2][]} List of resulting line segments in parametric form. Parameter value 0\n * corresponds to the provided line start point, 1 - to end point.\n */\n Calculate() {\n this._ProcessEdges()\n this._CreateNodes()\n /* Sort from line start towards end. */\n this.nodes.sort((e1, e2) => e1.intersection[0] - e2.intersection[0])\n if (this.style == HatchStyle.THROUGH_ENTIRE_AREA) {\n return this._GenerateThroughAllSegments()\n }\n /* ODD_PARITY and OUTERMOST are differentiated by filtering loops list (for outermost style\n * only external and outermost loop should be left).\n */\n return this._GenerateOddParitySegments()\n }\n\n _ProcessEdges() {\n for (const loop of this.loops) {\n for (const edge of loop) {\n const edgeVec = edge.end.clone().sub(edge.start)\n const len = edgeVec.length()\n edge.isZero = len <= Number.EPSILON\n if (edge.isZero) {\n continue\n }\n edgeVec.divideScalar(len)\n const a = edgeVec.cross(this.lineDir)\n edge.isParallel = Math.abs(a) <= 1e-6\n if (edge.isParallel) {\n continue\n }\n edge.intersection = IntersectSegmentsParametric(this.line[0], this.line[1],\n edge.start, edge.end, true)\n }\n }\n }\n\n /** Create intersection nodes. Each node with `toggle` property set causes line state change, so\n * unnecessary changes should be filtered out inside this method. Node also can suppress or\n * un-suppress line if currently enabled, this is done by setting `suppress` and\n * `unsuppress` properties on the edge.\n */\n _CreateNodes() {\n this.nodes = []\n for (const loop of this.loops) {\n for (let edge of loop) {\n if (edge.isZero || edge.isParallel || edge.isProcessed || !edge.intersection) {\n continue\n }\n\n if (edge.intersection[1] < -ENDPOINT_MARGIN ||\n edge.intersection[1] > 1 + ENDPOINT_MARGIN) {\n /* No intersection. */\n continue\n }\n\n /* Some intersection exists, check if near endpoints. */\n const isStartVtx = edge.intersection[1] <= ENDPOINT_MARGIN\n if (isStartVtx || edge.intersection[1] >= 1 - ENDPOINT_MARGIN) {\n /* Intersection near start or end vertex, force connected edge check. */\n let [connEdge, isDirect] = this._GetConnectedEdge(edge, isStartVtx)\n if (!connEdge) {\n /* Some invalid case, ignore. */\n continue\n }\n edge.isProcessed = true\n connEdge.isProcessed = true\n if (isDirect) {\n if (EdgeSameSide(edge, connEdge)) {\n edge.toggle = true\n this.nodes.push(edge)\n }\n } else {\n /** Connected through colinear edge(s). Mark the first edge to temporarily\n * disable line if it is enabled. Second edge either toggles the state or\n * restores previous one.\n */\n if (edge.intersection[0] > connEdge.intersection[0]) {\n /* Set proper order, `edge` is the first intersection, `connEdge` - the\n * second one.\n */\n const tmp = connEdge\n connEdge = edge\n edge = tmp\n }\n\n edge.suppress = true\n connEdge.unsuppress = true\n\n this.nodes.push(edge)\n\n if (EdgeSameSide(edge, connEdge)) {\n connEdge.toggle = true\n }\n this.nodes.push(connEdge)\n }\n\n } else {\n /* Clean inner intersection. */\n edge.isProcessed = true\n edge.toggle = true\n this.nodes.push(edge)\n }\n }\n }\n }\n\n /**\n * @param {Edge} edge\n * @param {boolean} isStartVtx True for connected through start vertex, false for end vertex.\n * @return {[?Edge, boolean]} Connected valid edge if found, null if not found (e.g. is the same\n * edge for some reason). Second value is true if directly connected, false if though colinear\n * edges.\n */\n _GetConnectedEdge(edge, isStartVtx) {\n const loop = this.loops[edge.loopIdx]\n let i = edge.idx\n let isDirect = true\n do {\n if (isStartVtx) {\n if (i == 0) {\n i = loop.length - 1\n } else {\n i--\n }\n } else {\n if (i == loop.length - 1) {\n i = 0\n } else {\n i++\n }\n }\n const connEdge = loop[i]\n if (connEdge.isZero || connEdge.isParallel) {\n isDirect = false\n } else {\n return [connEdge, isDirect]\n }\n } while (i != edge.idx)\n return [null, false]\n }\n\n _GenerateOddParitySegments() {\n const result = []\n let state = false\n /* Incremented with each suppression, decremented with each un-suppression. */\n let suppress = 0\n /* Previous node when line was enabled. */\n let prevNode = null\n\n for (const node of this.nodes) {\n if (node.suppress) {\n suppress++\n }\n if (node.unsuppress) {\n suppress--\n }\n if (node.toggle) {\n state = !state\n }\n if (suppress == 0 && state && (node.unsuppress || node.toggle)) {\n /* Just started new segment. */\n prevNode = node\n } else if ((suppress || !state) && prevNode) {\n if (node.intersection[0] - prevNode.intersection[0] > Number.EPSILON) {\n result.push([prevNode.intersection[0], node.intersection[0]])\n }\n prevNode = null\n }\n }\n\n return result\n }\n\n _GenerateThroughAllSegments() {\n const result = []\n /* Incremented with each suppression, decremented with each un-suppression. */\n let suppress = 0\n /* Previous node when line was enabled. */\n let prevNode = null\n /** For each loop count number of crossing from each side. One side increments corresponding\n * loop value, other decrements. When all values are zero, line is outside of any loop and\n * should not be rendered.\n */\n const loopStack = new Array(this.loops.length).fill(0);\n\n function IsOutside() {\n for (const n of loopStack) {\n if (n != 0) {\n return false\n }\n }\n return true\n }\n\n for (const node of this.nodes) {\n if (node.suppress) {\n suppress++\n }\n if (node.unsuppress) {\n suppress--\n }\n const wasOutside = IsOutside()\n if (node.toggle) {\n if (node.intersection[2] > 0) {\n loopStack[node.loopIdx]++\n } else {\n loopStack[node.loopIdx]--\n }\n }\n if (suppress == 0 && !IsOutside() && (node.unsuppress || wasOutside)) {\n /* Just started new segment. */\n prevNode = node\n } else if ((suppress || IsOutside()) && prevNode) {\n if (node.intersection[0] - prevNode.intersection[0] > Number.EPSILON) {\n result.push([prevNode.intersection[0], node.intersection[0]])\n }\n prevNode = null\n }\n }\n\n return result\n }\n}\n\nexport class HatchCalculator {\n boundaryLoops\n style\n\n /**\n * Arrays of `Path` to use as boundary, and each `Path` is array of `Point`.\n *\n * @param {Vector2[][]} boundaryLoops\n * @param {HatchStyle} style\n */\n constructor(boundaryLoops, style) {\n this.boundaryLoops = boundaryLoops\n this.style = style\n }\n\n /**\n * Clip `line` using strategy defined by `this.style`\n *\n * @param {[Vector2, Vector2]} line Line segment defined by start and end points. Assuming start\n * and end points lie out of the boundary loops specified in the constructor.\n * @returns {[Vector2, Vector2][]} clipped line segments\n */\n ClipLine(line) {\n return new ClipCalculator(this.boundaryLoops, this.style, line).Calculate()\n }\n\n /**\n * @param {Vector2} seedPoint Pattern seed point coordinates in OCS.\n * @param {?number} angle Pattern rotation angle in radians.\n * @param {?number} scale Pattern scale.\n * @return {Matrix3} Transformation from OCS to pattern space.\n */\n GetPatternTransform({seedPoint, angle, scale}) {\n const m = new Matrix3().makeTranslation(-seedPoint.x, -seedPoint.y)\n if (angle) {\n /* Matrix3.rotate() inverts angle sign. */\n m.rotate(angle)\n }\n if ((scale ?? 1) != 1) {\n m.scale(1 / scale, 1 / scale)\n }\n return m\n }\n\n /**\n * @param {Matrix3} patTransform Transformation from OCS to pattern space previously obtained by\n * GetPatternTransform() method.\n * @param {?Vector2} basePoint Line base point coordinate in pattern space.\n * @param {?number} angle Line direction angle in radians, CCW from +X direction.\n * @return {Matrix3} Transformation from OCS to pattern line space. Line is started at origin\n * and directed into position X axis direction.\n */\n GetLineTransform({patTransform, basePoint, angle}) {\n const m = patTransform.clone()\n if (basePoint) {\n m.translate(-basePoint.x, -basePoint.y)\n }\n if (angle) {\n /* Matrix3.rotate() inverts angle sign. */\n m.rotate(angle)\n }\n return m\n }\n\n /**\n * @param {Matrix3} transform Transformation from OCS to target coordinates space.\n * @return {Box2} Pattern AABB in target coordinate space.\n */\n GetBoundingBox(transform) {\n const box = new Box2()\n for (const path of this.boundaryLoops) {\n for (const v of path) {\n box.expandByPoint(v.clone().applyMatrix3(transform))\n }\n }\n return box\n }\n}\n","import { Vector2 } from \"three\"\n\n/**\n * @typedef PatternLineDef\n * @property {number} angle Line angle in radians.\n * @property {?Vector2} base Base point for scaling, rotation and anchoring. [0,0] if not specified.\n * @property {Vector2} offset Offset for line instantiation.\n * @property {?number[]} dashes Dash lengths. Solid line if not specified. Negative numbers for\n * spaces, positive for dashes, zero for dots.\n */\n\nexport class Pattern {\n /**\n * @param {PatternLineDef[]} lines\n * @param {boolean} offsetInLineSpace Line offset is defined in line space when true, in pattern\n * space when false. Pattern space offset is the observed behavior of AutoDesk viewer for\n * patterns defined in hatch entity itself.\n */\n constructor(lines, name = null, offsetInLineSpace = true) {\n this.lines = lines\n this.name = name\n this.offsetInLineSpace = offsetInLineSpace\n }\n\n /** Detect QCAD default pattern embedded in HATCH entity. It does not correspond to real pattern\n * referenced by name.\n */\n get isQcadDefault() {\n if (this.lines.length != 1) {\n return false\n }\n const line = this.lines[0]\n if (line.dashes) {\n return false\n }\n if (Math.abs(line.angle - Math.PI / 4) > 10e-14) {\n return false\n }\n return true\n }\n\n static ParsePatFile(content) {\n const lines = content.split(/\\r?\\n/)\n if (lines.length < 2) {\n throw new Error(\"Invalid .pat file content\")\n }\n let name = null\n const lineDefs = []\n for (let line of lines) {\n line = line.trim()\n if (line == \"\") {\n continue\n }\n if (line.startsWith(\";\")) {\n continue\n }\n if (name === null) {\n const m = line.match(/\\*([^,]+)(?:,.*)?/)\n if (!m) {\n throw new Error(\"Bad header for .pat file content\")\n }\n name = m[1]\n continue\n }\n const commentPos = line.indexOf(\";\")\n if (commentPos != -1) {\n line = line.substring(0, commentPos).trim()\n }\n let params = line.split(/\\s*,\\s*/)\n /* Tolerate trailing comma. */\n if (params[params.length - 1] == \"\") {\n params.length = params.length - 1\n }\n params = params.map(s => {\n const x = parseFloat(s)\n if (isNaN(x)) {\n throw new Error(\"Failed to parse number in .pat file: \" + s)\n }\n return x\n })\n const lineDef = {\n angle: params[0] * Math.PI / 180,\n base: new Vector2(params[1], params[2]),\n offset: new Vector2(params[3], params[4])\n }\n if (params.length > 5) {\n lineDef.dashes = params.slice(5)\n }\n lineDefs.push(lineDef)\n }\n return new Pattern(lineDefs, name)\n }\n}\n\nconst patternsRegistryMetric = new Map()\nconst patternsRegistryImperial = new Map()\n\n/** @param {Pattern} pattern */\nexport function RegisterPattern(pattern, isMetric = true) {\n if (!pattern.name) {\n throw new Error(\"Anonymous pattern cannot be registered\")\n }\n const name = pattern.name.toUpperCase()\n const registry = isMetric ? patternsRegistryMetric : patternsRegistryImperial\n if (registry.has(name)) {\n console.warn(`Pattern with name ${name} is already registered`)\n return\n }\n registry.set(name, pattern)\n}\n\n/** @return {?Pattern} */\nexport function LookupPattern(name, isMetric = true) {\n return (isMetric ? patternsRegistryMetric : patternsRegistryImperial).get(name.toUpperCase())\n}\n","\nexport default function earcut(data, holeIndices, dim = 2) {\n\n const hasHoles = holeIndices && holeIndices.length;\n const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n let outerNode = linkedList(data, 0, outerLen, dim, true);\n const triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n let minX, minY, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = Infinity;\n minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (let i = dim; i < outerLen; i += dim) {\n const x = data[i];\n const y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n let last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (let i = start; i < end; i += dim) last = insertNode(i / dim | 0, data[i], data[i + 1], last);\n } else {\n for (let i = end - dim; i >= start; i -= dim) last = insertNode(i / dim | 0, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n let p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n let stop = ear;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n const prev = ear.prev;\n const next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n triangles.push(prev.i, ear.i, next.i); // cut off the triangle\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n const a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n const x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n let p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n const a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n const x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n const minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n let p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles) {\n let p = start;\n do {\n const a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i, p.i, b.i);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n let a = start;\n do {\n let b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n let c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n const queue = [];\n\n for (let i = 0, len = holeIndices.length; i < len; i++) {\n const start = holeIndices[i] * dim;\n const end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n const list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (let i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n const bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n const bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n let p = outerNode;\n const hx = hole.x;\n const hy = hole.y;\n let qx = -Infinity;\n let m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n const stop = m;\n const mx = m.x;\n const my = m.y;\n let tanMin = Infinity;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n const tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n let p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n let numMerges;\n let inSize = 1;\n\n do {\n let p = list;\n let e;\n list = null;\n let tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n let q = p;\n let pSize = 0;\n for (let i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n let qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n let p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n const o1 = sign(area(p1, q1, p2));\n const o2 = sign(area(p1, q1, q2));\n const o3 = sign(area(p2, q2, p1));\n const o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n let p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n let p = a;\n let inside = false;\n const px = (a.x + b.x) / 2;\n const py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n const a2 = createNode(a.i, a.x, a.y),\n b2 = createNode(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n const p = createNode(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction createNode(i, x, y) {\n return {\n i, // vertex index in coordinates array\n x, y, // vertex coordinates\n prev: null, // previous and next vertex nodes in a polygon ring\n next: null,\n z: 0, // z-order curve value\n prevZ: null, // previous and next nodes in z-order\n nextZ: null,\n steiner: false // indicates whether this is a steiner point\n };\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nexport function deviation(data, holeIndices, dim, triangles) {\n const hasHoles = holeIndices && holeIndices.length;\n const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n let polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (let i = 0, len = holeIndices.length; i < len; i++) {\n const start = holeIndices[i] * dim;\n const end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n let trianglesArea = 0;\n for (let i = 0; i < triangles.length; i += 3) {\n const a = triangles[i] * dim;\n const b = triangles[i + 1] * dim;\n const c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n}\n\nfunction signedArea(data, start, end, dim) {\n let sum = 0;\n for (let i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nexport function flatten(data) {\n const vertices = [];\n const holes = [];\n const dimensions = data[0][0].length;\n let holeIndex = 0;\n let prevLen = 0;\n\n for (const ring of data) {\n for (const p of ring) {\n for (let d = 0; d < dimensions; d++) vertices.push(p[d]);\n }\n if (prevLen) {\n holeIndex += prevLen;\n holes.push(holeIndex);\n }\n prevLen = ring.length;\n }\n return {vertices, holes, dimensions};\n}\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO02W100,ACAD_ISO02W100\n0, 0,0, 0,5, 12,-3\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO03W100,ACAD_ISO03W100\n0, 0,0, 0,5, 12,-18\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO04W100,ACAD_ISO04W100\n0, 0,0, 0,5, 24,-3,.5,-3\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO05W100,ACAD_ISO05W100\n0, 0,0, 0,5, 24,-3,.5,-3,.5,-3\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO06W100,ACAD_ISO06W100\n0, 0,0, 0,5, 24,-3,.5,-3,.5,-6.5\n0, 0,0, 0,5, -34,.5,-3\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO07W100,ACAD_ISO07W100\n0, 0,0, 0,5, .5,-3\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO08W100,ACAD_ISO08W100\n0, 0,0, 0,5, 24,-3,6,-3\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO09W100,ACAD_ISO09W100\n0, 0,0, 0,5, 24,-3,6,-3,6,-3\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO10W100,ACAD_ISO10W100\n0, 0,0, 0,5, 12,-3,.5,-3\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO11W100,ACAD_ISO11W100\n0, 0,0, 0,5, 12,-3,12,-3,.5,-3\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO12W100,ACAD_ISO12W100\n0, 0,0, 0,5, 12,-3,.5,-3,.5,-3\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO13W100,ACAD_ISO13W100\n0, 0,0, 0,5, 12,-3,12,-3,.5,-6.5\n0, 0,0, 0,5, -33.5,.5,-3\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO14W100,ACAD_ISO14W100\n0, 0,0, 0,5, 12,-3,.5,-3,.5,-6.5\n0, 0,0, 0,5, -22,.5,-3\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO15W100,ACAD_ISO15W100\n0, 0,0, 0,5, 12,-3,12,-3,.5,-10\n0, 0,0, 0,5, -33.5,.5,-3,.5,-3\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANGLE,ANGLE\n0, 0,0, 0,6.985, 5.08,-1.905\n90, 0,0, 0,6.985, 5.08,-1.905\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI31,ANSI31\n45, 0,0, 0,3.175\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI32,ANSI32\n45, 0,0, 0,9.525\n45, 4.49013,0, 0,9.525\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI33,ANSI33\n45, 0,0, 0,6.35\n45, 4.49013,0, 0,6.35, 3.175,-1.5875\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI34,ANSI34\n45, 0,0, 0,19.05\n45, 4.49013,0, 0,19.05\n45, 8.98026,0, 0,19.05\n45, 13.4704,0, 0,19.05\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI35,ANSI35\n45, 0,0, 0,6.35\n45, 4.49013,0, 0,6.35, 7.9375,-1.5875,0,-1.5875\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI36,ANSI36\n45, 0,0, 5.55625,3.175, 7.9375,-1.5875,0,-1.5875\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI37,ANSI37\n45, 0,0, 0,3.175\n135, 0,0, 0,3.175\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI38,ANSI38\n45, 0,0, 0,3.175\n135, 0,0, 6.35,3.175, 7.9375,-4.7625\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-B816,AR-B816\n0, 0,0, 0,203.2\n90, 0,0, 203.2,203.2, 203.2,-203.2\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-B816C,AR-B816C\n0, 0,0, 203.2,203.2, 396.875,-9.525\n0, -203.2,9.525, 203.2,203.2, 396.875,-9.525\n90, 0,0, 203.2,203.2, -212.725,193.675\n90, -9.525,0, 203.2,203.2, -212.725,193.675\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-B88,AR-B88\n0, 0,0, 0,203.2\n90, 0,0, 203.2,101.6, 203.2,-203.2\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-BRELM,AR-BRELM\n0, 0,0, 0,135.484, 193.675,-9.525\n0, 0,57.15, 0,135.484, 193.675,-9.525\n0, 50.8,67.7418, 0,135.484, 92.075,-9.525\n0, 50.8,124.892, 0,135.484, 92.075,-9.525\n90, 0,0, 0,203.2, 57.15,-78.3336\n90, -9.525,0, 0,203.2, 57.15,-78.3336\n90, 50.8,67.7418, 0,101.6, 57.15,-78.3336\n90, 41.275,67.7418, 0,101.6, 57.15,-78.3336\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-BRSTD,AR-BRSTD\n0, 0,0, 0,67.7418\n90, 0,0, 67.7418,101.6, 67.7418,-67.7418\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-CONC-01,AR-CONC-01\n;Optimize to replace existing AR-CONC Pattern\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in mm as metric QCAD3 pattern\n243.434949,7.62,20.32,227.18450626,113.5922544,5.67961272,-562.2816542\n90,7.62,15.24,0,254,5.08,-248.92\n0,5.08,15.24,0,254,2.54,-251.46\n315,2.54,2.54,179.60512212,179.60512212,3.59210356,-355.61814322\n206.565051,7.62,5.08,340.77676066,113.5922544,5.67961272,-562.2816542\n63.434949,5.08,0,227.18450626,113.5922544,5.67961272,-562.2816542\n45,50.8,10.16,179.60512212,179.60512212,7.18420458,-352.02603966\n161.565051,58.42,7.62,240.9655582,80.32185358,8.03218612,-795.18633952\n288.434949,55.88,15.24,562.25296744,80.32185358,8.03218612,-795.18633952\n315,58.42,22.86,179.60512212,179.60512212,3.59210356,-355.61814322\n206.565051,63.5,25.4,340.77676066,113.5922544,5.67961272,-562.2816542\n63.434949,60.96,20.32,227.18450626,113.5922544,5.67961272,-562.2816542\n270,104.14,15.24,0,254,5.08,-248.92\n45,99.06,10.16,179.60512212,179.60512212,7.18420458,-352.02603966\n180,104.14,10.16,0,254,5.08,-248.92\n333.434949,99.06,5.08,227.18450626,113.5922544,5.67961272,-562.2816542\n225,101.6,7.62,179.60512212,179.60512212,3.59210356,-355.61814322\n116.565051,104.14,2.54,340.77676066,113.5922544,5.67961272,-562.2816542\n198.434949,160.02,20.32,562.25296744,80.32185358,8.03218612,-795.18633952\n63.434949,157.48,15.24,227.18450626,113.5922544,5.67961272,-562.2816542\n333.434949,152.4,17.78,227.18450626,113.5922544,5.67961272,-562.2816542\n26.565051,144.78,0,340.77676066,113.5922544,5.67961272,-562.2816542\n251.565051,147.32,7.62,240.9655582,80.32185358,8.03218612,-795.18633952\n116.565051,149.86,2.54,340.77676066,113.5922544,5.67961272,-562.2816542\n45,170.18,2.54,179.60512212,179.60512212,7.18420458,-352.02603966\n161.565051,177.8,0,240.9655582,80.32185358,8.03218612,-795.18633952\n288.434949,175.26,7.62,562.25296744,80.32185358,8.03218612,-795.18633952\n315,76.2,71.12,179.60512212,179.60512212,3.59210356,-355.61814322\n206.565051,81.28,73.66,340.77676066,113.5922544,5.67961272,-562.2816542\n63.434949,78.74,68.58,227.18450626,113.5922544,5.67961272,-562.2816542\n45,27.94,20.32,179.60512212,179.60512212,7.18420458,-352.02603966\n180,33.02,20.32,0,254,5.08,-248.92\n270,33.02,25.4,0,254,5.08,-248.92\n225,45.72,60.96,179.60512212,179.60512212,3.59210356,-355.61814322\n270,45.72,66.04,0,254,5.08,-248.92\n71.565051,43.18,58.42,240.9655582,80.32185358,8.03218612,-795.18633952\n198.434949,25.4,53.34,562.25296744,80.32185358,8.03218612,-795.18633952\n63.434949,22.86,48.26,227.18450626,113.5922544,5.67961272,-562.2816542\n333.434949,17.78,50.8,227.18450626,113.5922544,5.67961272,-562.2816542\n0,88.9,55.88,0,254,5.08,-248.92\n225,93.98,60.96,179.60512212,179.60512212,7.18420458,-352.02603966\n90,93.98,55.88,0,254,5.08,-248.92\n315,114.3,43.18,179.60512212,179.60512212,3.59210356,-355.61814322\n206.565051,119.38,45.72,340.77676066,113.5922544,5.67961272,-562.2816542\n63.434949,116.84,40.64,227.18450626,113.5922544,5.67961272,-562.2816542\n315,139.7,53.34,179.60512212,179.60512212,3.59210356,-355.61814322\n270,139.7,58.42,0,254,5.08,-248.92\n108.434949,142.24,50.8,562.25296744,80.32185358,8.03218612,-795.18633952\n206.565051,175.26,68.58,340.77676066,113.5922544,5.67961272,-562.2816542\n63.434949,172.72,63.5,227.18450626,113.5922544,5.67961272,-562.2816542\n315,170.18,66.04,179.60512212,179.60512212,3.59210356,-355.61814322\n333.434949,185.42,48.26,227.18450626,113.5922544,5.67961272,-562.2816542\n225,187.96,50.8,179.60512212,179.60512212,3.59210356,-355.61814322\n116.565051,190.5,45.72,340.77676066,113.5922544,5.67961272,-562.2816542\n26.565051,208.28,38.1,340.77676066,113.5922544,5.67961272,-562.2816542\n153.434949,213.36,35.56,227.18450626,113.5922544,5.67961272,-562.2816542\n270,213.36,40.64,0,254,5.08,-248.92\n180,236.22,43.18,0,254,2.54,-251.46\n270,236.22,45.72,0,254,2.54,-251.46\n45,233.68,43.18,179.60512212,179.60512212,3.59210356,-355.61814322\n153.434949,236.22,60.96,227.18450626,113.5922544,5.67961272,-562.2816542\n270,236.22,68.58,0,254,7.62,-246.38\n45,231.14,63.5,179.60512212,179.60512212,7.18420458,-352.02603966\n206.565051,231.14,88.9,340.77676066,113.5922544,5.67961272,-562.2816542\n63.434949,228.6,83.82,227.18450626,113.5922544,5.67961272,-562.2816542\n315,226.06,86.36,179.60512212,179.60512212,3.59210356,-355.61814322\n180,165.1,73.66,0,254,5.08,-248.92\n270,165.1,81.28,0,254,7.62,-246.38\n56.309932,160.02,73.66,563.57539812,70.4469254,9.15809954,-906.65192304\n198.434949,137.16,96.52,562.25296744,80.32185358,8.03218612,-795.18633952\n71.565051,134.62,88.9,240.9655582,80.32185358,8.03218612,-795.18633952\n315,129.54,93.98,179.60512212,179.60512212,7.18420458,-352.02603966\n180,96.52,83.82,0,254,7.62,-246.38\n270,96.52,91.44,0,254,7.62,-246.38\n45,88.9,83.82,179.60512212,179.60512212,10.77630814,-348.43393864\n225,83.82,109.22,179.60512212,179.60512212,7.18420458,-352.02603966\n90,83.82,104.14,0,254,5.08,-248.92\n0,78.74,104.14,0,254,5.08,-248.92\n206.565051,40.64,99.06,340.77676066,113.5922544,5.67961272,-562.2816542\n63.434949,38.1,93.98,227.18450626,113.5922544,5.67961272,-562.2816542\n315,35.56,96.52,179.60512212,179.60512212,3.59210356,-355.61814322\n108.434949,25.4,93.98,562.25296744,80.32185358,8.03218612,-795.18633952\n341.565051,17.78,96.52,240.9655582,80.32185358,8.03218612,-795.18633952\n225,22.86,101.6,179.60512212,179.60512212,7.18420458,-352.02603966\n270,38.1,114.3,0,254,5.08,-248.92\n45,33.02,109.22,179.60512212,179.60512212,7.18420458,-352.02603966\n180,38.1,109.22,0,254,5.08,-248.92\n315,91.44,119.38,179.60512212,179.60512212,3.59210356,-355.61814322\n206.565051,96.52,121.92,340.77676066,113.5922544,5.67961272,-562.2816542\n63.434949,93.98,116.84,227.18450626,113.5922544,5.67961272,-562.2816542\n0,129.54,101.6,0,254,2.54,-251.46\n225,132.08,104.14,179.60512212,179.60512212,3.59210356,-355.61814322\n90,132.08,101.6,0,254,2.54,-251.46\n0,175.26,96.52,0,254,5.08,-248.92\n243.434949,177.8,101.6,227.18450626,113.5922544,5.67961272,-562.2816542\n116.565051,180.34,96.52,340.77676066,113.5922544,5.67961272,-562.2816542\n26.565051,185.42,114.3,340.77676066,113.5922544,5.67961272,-562.2816542\n116.565051,187.96,109.22,340.77676066,113.5922544,5.67961272,-562.2816542\n251.565051,190.5,116.84,240.9655582,80.32185358,8.03218612,-795.18633952\n63.434949,223.52,91.44,227.18450626,113.5922544,5.67961272,-562.2816542\n180,228.6,91.44,0,254,5.08,-248.92\n296.565051,226.06,96.52,340.77676066,113.5922544,5.67961272,-562.2816542\n180,228.6,137.16,0,254,7.62,-246.38\n270,228.6,144.78,0,254,7.62,-246.38\n45,220.98,137.16,179.60512212,179.60512212,10.77630814,-348.43393864\n180,218.44,142.24,0,254,5.08,-248.92\n270,218.44,147.32,0,254,5.08,-248.92\n45,213.36,142.24,179.60512212,179.60512212,7.18420458,-352.02603966\n243.434949,208.28,165.1,227.18450626,113.5922544,5.67961272,-562.2816542\n26.565051,203.2,162.56,340.77676066,113.5922544,5.67961272,-562.2816542\n135,205.74,160.02,179.60512212,179.60512212,3.59210356,-355.61814322\n243.434949,170.18,152.4,227.18450626,113.5922544,5.67961272,-562.2816542\n116.565051,172.72,147.32,340.77676066,113.5922544,5.67961272,-562.2816542\n0,167.64,147.32,0,254,5.08,-248.92\n225,157.48,154.94,179.60512212,179.60512212,7.18420458,-352.02603966\n108.434949,160.02,147.32,562.25296744,80.32185358,8.03218612,-795.18633952\n341.565051,152.4,149.86,240.9655582,80.32185358,8.03218612,-795.18633952\n135,149.86,137.16,179.60512212,179.60512212,3.59210356,-355.61814322\n243.434949,152.4,142.24,227.18450626,113.5922544,5.67961272,-562.2816542\n26.565051,147.32,139.7,340.77676066,113.5922544,5.67961272,-562.2816542\n180,121.92,152.4,0,254,2.54,-251.46\n270,121.92,154.94,0,254,2.54,-251.46\n45,119.38,152.4,179.60512212,179.60512212,3.59210356,-355.61814322\n206.565051,111.76,170.18,340.77676066,113.5922544,5.67961272,-562.2816542\n63.434949,109.22,165.1,227.18450626,113.5922544,5.67961272,-562.2816542\n315,106.68,167.64,179.60512212,179.60512212,3.59210356,-355.61814322\n225,86.36,165.1,179.60512212,179.60512212,7.18420458,-352.02603966\n90,86.36,157.48,0,254,7.62,-246.38\n333.434949,81.28,160.02,227.18450626,113.5922544,5.67961272,-562.2816542\n180,76.2,154.94,0,254,5.08,-248.92\n270,76.2,160.02,0,254,5.08,-248.92\n45,71.12,154.94,179.60512212,179.60512212,7.18420458,-352.02603966\n135,53.34,142.24,179.60512212,179.60512212,3.59210356,-355.61814322\n243.434949,55.88,147.32,227.18450626,113.5922544,5.67961272,-562.2816542\n26.565051,50.8,144.78,340.77676066,113.5922544,5.67961272,-562.2816542\n180,27.94,160.02,0,254,5.08,-248.92\n270,27.94,165.1,0,254,5.08,-248.92\n45,22.86,160.02,179.60512212,179.60512212,7.18420458,-352.02603966\n270,15.24,177.8,0,254,7.62,-246.38\n45,10.16,172.72,179.60512212,179.60512212,7.18420458,-352.02603966\n153.434949,15.24,170.18,227.18450626,113.5922544,5.67961272,-562.2816542\n243.434949,208.28,198.12,227.18450626,113.5922544,5.67961272,-562.2816542\n90,208.28,193.04,0,254,5.08,-248.92\n0,205.74,193.04,0,254,2.54,-251.46\n135,220.98,208.28,179.60512212,179.60512212,3.59210356,-355.61814322\n243.434949,223.52,213.36,227.18450626,113.5922544,5.67961272,-562.2816542\n26.565051,218.44,210.82,340.77676066,113.5922544,5.67961272,-562.2816542\n180,218.44,213.36,0,254,5.08,-248.92\n251.565051,220.98,220.98,240.9655582,80.32185358,8.03218612,-795.18633952\n45,213.36,213.36,179.60512212,179.60512212,10.77630814,-348.43393864\n153.434949,182.88,233.68,227.18450626,113.5922544,5.67961272,-562.2816542\n135,165.1,185.42,179.60512212,179.60512212,3.59210356,-355.61814322\n243.434949,167.64,190.5,227.18450626,113.5922544,5.67961272,-562.2816542\n26.565051,162.56,187.96,340.77676066,113.5922544,5.67961272,-562.2816542\n135,160.02,195.58,179.60512212,179.60512212,3.59210356,-355.61814322\n251.565051,162.56,203.2,240.9655582,80.32185358,8.03218612,-795.18633952\n45,157.48,198.12,179.60512212,179.60512212,7.18420458,-352.02603966\n26.565051,66.04,193.04,340.77676066,113.5922544,5.67961272,-562.2816542\n153.434949,71.12,190.5,227.18450626,113.5922544,5.67961272,-562.2816542\n270,71.12,195.58,0,254,5.08,-248.92\n90,114.3,200.66,0,254,5.08,-248.92\n0,109.22,200.66,0,254,5.08,-248.92\n225,114.3,205.74,179.60512212,179.60512212,7.18420458,-352.02603966\n63.434949,124.46,210.82,227.18450626,113.5922544,5.67961272,-562.2816542\n315,121.92,213.36,179.60512212,179.60512212,3.59210356,-355.61814322\n206.565051,127,215.9,340.77676066,113.5922544,5.67961272,-562.2816542\n153.434949,147.32,223.52,227.18450626,113.5922544,5.67961272,-562.2816542\n270,147.32,231.14,0,254,7.62,-246.38\n45,142.24,226.06,179.60512212,179.60512212,7.18420458,-352.02603966\n0,71.12,236.22,0,254,7.62,-246.38\n135,66.04,203.2,179.60512212,179.60512212,3.59210356,-355.61814322\n270,66.04,208.28,0,254,5.08,-248.92\n45,63.5,205.74,179.60512212,179.60512212,3.59210356,-355.61814322\n116.565051,20.32,208.28,340.77676066,113.5922544,5.67961272,-562.2816542\n333.434949,15.24,210.82,227.18450626,113.5922544,5.67961272,-562.2816542\n225,17.78,213.36,179.60512212,179.60512212,3.59210356,-355.61814322\n135,30.48,218.44,179.60512212,179.60512212,3.59210356,-355.61814322\n243.434949,33.02,223.52,227.18450626,113.5922544,5.67961272,-562.2816542\n26.565051,27.94,220.98,340.77676066,113.5922544,5.67961272,-562.2816542\n0,222.21825,218.170506,0,254,0,-254\n0,206.330804,232.72877,0,254,0,-254\n0,208.872836,188.32957,0,254,0,-254\n0,183.55056,211.532978,0,254,0,-254\n0,167.663114,226.091242,0,254,0,-254\n0,222.022924,134.20979,0,254,0,-254\n0,206.135224,148.768054,0,254,0,-254\n0,170.205146,181.692042,0,254,0,-254\n0,144.88287,204.895704,0,254,0,-254\n0,128.99517,219.453968,0,254,0,-254\n0,208.677256,104.368854,0,254,0,-254\n0,183.35498,127.572516,0,254,0,-254\n0,167.467534,142.13078,0,254,0,-254\n0,131.537202,175.054768,0,254,0,-254\n0,106.214926,198.258176,0,254,0,-254\n0,90.32748,212.81644,0,254,0,-254\n0,221.827344,50.249328,0,254,0,-254\n0,205.939898,64.807592,0,254,0,-254\n0,170.009566,97.73158,0,254,0,-254\n0,144.68729,120.934988,0,254,0,-254\n0,128.799844,135.493252,0,254,0,-254\n0,92.869512,168.41724,0,254,0,-254\n0,67.547236,191.620902,0,254,0,-254\n0,51.65979,206.179166,0,254,0,-254\n0,208.48193,20.408392,0,254,0,-254\n0,183.159654,43.6118,0,254,0,-254\n0,167.271954,58.170064,0,254,0,-254\n0,131.341876,91.094052,0,254,0,-254\n0,106.0196,114.297714,0,254,0,-254\n0,90.1319,128.855978,0,254,0,-254\n0,54.201822,161.779966,0,254,0,-254\n0,28.879546,184.983628,0,254,0,-254\n0,12.991846,199.541638,0,254,0,-254\n0,169.813986,13.770864,0,254,0,-254\n0,144.49171,36.974526,0,254,0,-254\n0,128.604264,51.53279,0,254,0,-254\n0,89.821004,81.952846,0,254,0,-254\n0,67.351656,107.660186,0,254,0,-254\n0,51.46421,122.21845,0,254,0,-254\n0,15.533878,155.142438,0,254,0,-254\n0,131.146296,7.13359,0,254,0,-254\n0,105.82402,30.336998,0,254,0,-254\n0,89.936574,44.895262,0,254,0,-254\n0,54.006242,77.81925,0,254,0,-254\n0,28.683966,101.022912,0,254,0,-254\n0,12.79652,115.581176,0,254,0,-254\n0,92.478606,0.496062,0,254,0,-254\n0,67.15633,23.699724,0,254,0,-254\n0,51.26863,38.257988,0,254,0,-254\n0,15.338552,71.181976,0,254,0,-254\n0,28.488386,17.062196,0,254,0,-254\n0,12.60094,31.62046,0,254,0,-254\n0,232.573576,212.125814,0,254,0,-254\n0,211.15909,204.714856,0,254,0,-254\n0,197.17893,213.621112,0,254,0,-254\n0,219.38234,178.422554,0,254,0,-254\n0,175.76419,206.210408,0,254,0,-254\n0,161.78403,215.116664,0,254,0,-254\n0,183.98744,179.918106,0,254,0,-254\n0,140.369544,207.705706,0,254,0,-254\n0,126.389384,216.612216,0,254,0,-254\n0,220.450664,135.634984,0,254,0,-254\n0,206.470504,144.541494,0,254,0,-254\n0,148.592794,181.413658,0,254,0,-254\n0,104.974898,209.201258,0,254,0,-254\n0,90.994738,218.107514,0,254,0,-254\n0,228.673914,109.342936,0,254,0,-254\n0,185.055764,137.130536,0,254,0,-254\n0,171.075858,146.036792,0,254,0,-254\n0,113.198148,182.908956,0,254,0,-254\n0,69.579998,210.69681,0,254,0,-254\n0,55.599838,219.603066,0,254,0,-254\n0,193.279268,110.838234,0,254,0,-254\n0,149.661118,138.626088,0,254,0,-254\n0,135.680958,147.532344,0,254,0,-254\n0,77.803248,184.404508,0,254,0,-254\n0,34.185352,212.192362,0,254,0,-254\n0,20.205192,221.098618,0,254,0,-254\n0,229.742238,66.555366,0,254,0,-254\n0,215.762078,75.461622,0,254,0,-254\n0,157.884368,112.333786,0,254,0,-254\n0,114.266472,140.12164,0,254,0,-254\n0,100.286312,149.027896,0,254,0,-254\n0,42.408602,185.90006,0,254,0,-254\n0,237.965488,40.263064,0,254,0,-254\n0,194.347592,68.050918,0,254,0,-254\n0,180.367432,76.957174,0,254,0,-254\n0,122.489722,113.829338,0,254,0,-254\n0,78.871572,141.616938,0,254,0,-254\n0,64.891666,150.523448,0,254,0,-254\n0,7.013702,187.395612,0,254,0,-254\n0,202.570842,41.758616,0,254,0,-254\n0,158.952692,69.546216,0,254,0,-254\n0,144.972532,78.452726,0,254,0,-254\n0,87.094822,115.32489,0,254,0,-254\n0,43.476926,143.11249,0,254,0,-254\n0,29.496766,152.018746,0,254,0,-254\n0,225.053652,6.38175,0,254,0,-254\n0,167.175942,43.254168,0,254,0,-254\n0,123.558046,71.041768,0,254,0,-254\n0,109.577886,79.948024,0,254,0,-254\n0,51.700176,116.820188,0,254,0,-254\n0,8.08228,144.608042,0,254,0,-254\n0,189.659006,7.877302,0,254,0,-254\n0,131.781296,44.749466,0,254,0,-254\n0,88.1634,72.53732,0,254,0,-254\n0,74.18324,81.443576,0,254,0,-254\n0,16.30553,118.31574,0,254,0,-254\n0,168.24452,0.466598,0,254,0,-254\n0,154.26436,9.372854,0,254,0,-254\n0,96.38665,46.245018,0,254,0,-254\n0,52.7685,74.032872,0,254,0,-254\n0,38.78834,82.939128,0,254,0,-254\n0,132.84962,1.961896,0,254,0,-254\n0,118.86946,10.868406,0,254,0,-254\n0,60.99175,47.74057,0,254,0,-254\n0,17.373854,75.52817,0,254,0,-254\n0,3.393694,84.43468,0,254,0,-254\n0,97.454974,3.457448,0,254,0,-254\n0,83.474814,12.363704,0,254,0,-254\n0,25.597104,49.235868,0,254,0,-254\n0,62.060074,4.953,0,254,0,-254\n0,48.080168,13.859256,0,254,0,-254\n0,26.665428,6.448552,0,254,0,-254\n0,12.685268,15.354808,0,254,0,-254\n0,163.20897,236.374178,0,254,0,-254\n0,121.33453,230.861362,0,254,0,-254\n0,96.22282,227.555298,0,254,0,-254\n0,79.624174,225.370136,0,254,0,-254\n0,37.749734,219.85732,0,254,0,-254\n0,12.638278,216.551256,0,254,0,-254\n0,229.351078,221.227142,0,254,0,-254\n0,187.476638,215.714326,0,254,0,-254\n0,162.364928,212.408262,0,254,0,-254\n0,145.766282,210.2231,0,254,0,-254\n0,103.891842,204.710284,0,254,0,-254\n0,78.780132,201.40422,0,254,0,-254\n0,62.18174,199.219058,0,254,0,-254\n0,20.307046,193.705988,0,254,0,-254\n0,228.507036,197.261226,0,254,0,-254\n0,211.90839,195.076064,0,254,0,-254\n0,170.03395,189.563248,0,254,0,-254\n0,144.92224,186.257184,0,254,0,-254\n0,128.323594,184.071768,0,254,0,-254\n0,86.449154,178.558952,0,254,0,-254\n0,61.337698,175.252888,0,254,0,-254\n0,44.739052,173.067726,0,254,0,-254\n0,2.864358,167.55491,0,254,0,-254\n0,236.176058,174.415958,0,254,0,-254\n0,211.064348,171.110148,0,254,0,-254\n0,194.465702,168.924732,0,254,0,-254\n0,152.591262,163.411916,0,254,0,-254\n0,127.479552,160.105852,0,254,0,-254\n0,110.88116,157.92069,0,254,0,-254\n0,69.006466,152.407874,0,254,0,-254\n0,43.89501,149.10181,0,254,0,-254\n0,27.296364,146.916648,0,254,0,-254\n0,218.73337,148.26488,0,254,0,-254\n0,193.62166,144.958816,0,254,0,-254\n0,177.023014,142.773654,0,254,0,-254\n0,135.148574,137.260838,0,254,0,-254\n0,110.037118,133.954774,0,254,0,-254\n0,93.438472,131.769358,0,254,0,-254\n0,51.563778,126.256542,0,254,0,-254\n0,26.452322,122.950478,0,254,0,-254\n0,9.853676,120.765316,0,254,0,-254\n0,201.290682,122.113548,0,254,0,-254\n0,176.178972,118.807738,0,254,0,-254\n0,159.58058,116.622322,0,254,0,-254\n0,117.705886,111.109506,0,254,0,-254\n0,92.59443,107.803442,0,254,0,-254\n0,75.995784,105.61828,0,254,0,-254\n0,34.121344,100.105464,0,254,0,-254\n0,9.009634,96.7994,0,254,0,-254\n0,225.722434,101.475286,0,254,0,-254\n0,183.847994,95.96247,0,254,0,-254\n0,158.736538,92.656406,0,254,0,-254\n0,142.137892,90.471244,0,254,0,-254\n0,100.263198,84.958428,0,254,0,-254\n0,75.151742,81.652364,0,254,0,-254\n0,58.553096,79.466948,0,254,0,-254\n0,16.678656,73.954132,0,254,0,-254\n0,224.878392,77.50937,0,254,0,-254\n0,208.279746,75.324208,0,254,0,-254\n0,166.405306,69.811138,0,254,0,-254\n0,141.29385,66.505328,0,254,0,-254\n0,124.695204,64.319912,0,254,0,-254\n0,82.82051,58.807096,0,254,0,-254\n0,57.709054,55.501032,0,254,0,-254\n0,41.110408,53.31587,0,254,0,-254\n0,232.547414,54.664102,0,254,0,-254\n0,207.435704,51.358038,0,254,0,-254\n0,190.837312,49.172876,0,254,0,-254\n0,148.962618,43.66006,0,254,0,-254\n0,123.851162,40.353996,0,254,0,-254\n0,107.252516,38.168834,0,254,0,-254\n0,65.378076,32.656018,0,254,0,-254\n0,40.266366,29.349954,0,254,0,-254\n0,23.66772,27.164538,0,254,0,-254\n0,215.104726,28.513024,0,254,0,-254\n0,189.99327,25.20696,0,254,0,-254\n0,173.394624,23.021798,0,254,0,-254\n0,131.51993,17.508728,0,254,0,-254\n0,106.408474,14.202918,0,254,0,-254\n0,89.809828,12.017502,0,254,0,-254\n0,47.935388,6.504686,0,254,0,-254\n0,22.823678,3.198622,0,254,0,-254\n0,6.225032,1.01346,0,254,0,-254\n0,197.662038,2.361692,0,254,0,-254\n0,31.866332,226.2124,0,254,0,-254\n0,65.909444,230.88092,0,254,0,-254\n0,31.060136,204.140054,0,254,0,-254\n0,99.400106,235.125768,0,254,0,-254\n0,65.103248,208.808574,0,254,0,-254\n0,30.253686,182.067962,0,254,0,-254\n0,98.59391,213.053422,0,254,0,-254\n0,64.296798,186.736482,0,254,0,-254\n0,29.44749,159.995616,0,254,0,-254\n0,133.031484,218.02471,0,254,0,-254\n0,97.787714,190.981076,0,254,0,-254\n0,63.490602,164.664136,0,254,0,-254\n0,28.641294,137.92327,0,254,0,-254\n0,167.074596,222.69323,0,254,0,-254\n0,132.225288,195.952364,0,254,0,-254\n0,96.981264,168.90873,0,254,0,-254\n0,62.684406,142.59179,0,254,0,-254\n0,27.835098,115.850924,0,254,0,-254\n0,200.565258,226.937824,0,254,0,-254\n0,166.2684,200.620884,0,254,0,-254\n0,131.419092,173.880018,0,254,0,-254\n0,96.175068,146.836384,0,254,0,-254\n0,61.87821,120.519444,0,254,0,-254\n0,27.028902,93.778578,0,254,0,-254\n0,235.002832,231.909112,0,254,0,-254\n0,199.759062,204.865478,0,254,0,-254\n0,165.46195,178.548538,0,254,0,-254\n0,130.612642,151.807672,0,254,0,-254\n0,95.368872,124.764292,0,254,0,-254\n0,61.07176,98.447098,0,254,0,-254\n0,26.222452,71.706232,0,254,0,-254\n0,234.196636,209.836766,0,254,0,-254\n0,198.952866,182.793386,0,254,0,-254\n0,164.655754,156.476192,0,254,0,-254\n0,129.806446,129.735326,0,254,0,-254\n0,94.562676,102.691946,0,254,0,-254\n0,60.265564,76.374752,0,254,0,-254\n0,25.416256,49.63414,0,254,0,-254\n0,233.39044,187.76442,0,254,0,-254\n0,198.14667,160.72104,0,254,0,-254\n0,163.849558,134.403846,0,254,0,-254\n0,129.00025,107.663234,0,254,0,-254\n0,93.75648,80.6196,0,254,0,-254\n0,59.459368,54.30266,0,254,0,-254\n0,24.61006,27.561794,0,254,0,-254\n0,232.584244,165.692328,0,254,0,-254\n0,197.34022,138.648694,0,254,0,-254\n0,163.043362,112.331754,0,254,0,-254\n0,128.194054,85.590888,0,254,0,-254\n0,58.653172,32.230314,0,254,0,-254\n0,23.803864,5.489448,0,254,0,-254\n0,231.777794,143.619982,0,254,0,-254\n0,196.534024,116.576348,0,254,0,-254\n0,162.237166,90.259408,0,254,0,-254\n0,127.387858,63.518542,0,254,0,-254\n0,92.143834,36.474908,0,254,0,-254\n0,57.846976,10.157968,0,254,0,-254\n0,230.971598,121.547636,0,254,0,-254\n0,195.727828,94.504002,0,254,0,-254\n0,161.430716,68.187062,0,254,0,-254\n0,126.581408,41.446196,0,254,0,-254\n0,91.337638,14.402562,0,254,0,-254\n0,230.165402,99.47529,0,254,0,-254\n0,194.921632,72.431656,0,254,0,-254\n0,160.62452,46.114716,0,254,0,-254\n0,125.775212,19.37385,0,254,0,-254\n0,229.359206,77.402944,0,254,0,-254\n0,194.115436,50.359564,0,254,0,-254\n0,159.818324,24.04237,0,254,0,-254\n0,228.55301,55.330598,0,254,0,-254\n0,193.308986,28.287218,0,254,0,-254\n0,159.012128,1.970024,0,254,0,-254\n0,227.74656,33.258506,0,254,0,-254\n0,192.50279,6.214872,0,254,0,-254\n0,226.940364,11.18616,0,254,0,-254\n206.565051,254,15.24,340.77676066,113.5922544,5.67961272,-562.2816542\n63.434949,251.46,10.16,227.18450626,113.5922544,5.67961272,-562.2816542\n315,248.92,12.7,179.60512212,179.60512212,3.59210356,-355.61814322\n206.565051,246.38,137.16,340.77676066,113.5922544,5.67961272,-562.2816542\n63.434949,243.84,132.08,227.18450626,113.5922544,5.67961272,-562.2816542\n315,241.3,134.62,179.60512212,179.60512212,3.59210356,-355.61814322\n153.434949,254,182.88,227.18450626,113.5922544,5.67961272,-562.2816542\n288.434949,251.46,190.5,562.25296744,80.32185358,8.03218612,-795.18633952\n63.434949,248.92,185.42,227.18450626,113.5922544,5.67961272,-562.2816542\n135,246.38,236.22,179.60512212,179.60512212,3.59210356,-355.61814322\n270,246.38,241.3,0,254,5.08,-248.92\n45,243.84,238.76,179.60512212,179.60512212,3.59210356,-355.61814322\n0,195.58,243.84,0,254,5.08,-248.92\n270,182.88,238.76,0,254,5.08,-248.92\n26.565051,177.8,236.22,340.77676066,113.5922544,5.67961272,-562.2816542\n0,241.457734,241.2111,0,254,0,-254\n0,247.540526,194.966844,0,254,0,-254\n0,244.803168,155.405582,0,254,0,-254\n0,247.3452,111.006382,0,254,0,-254\n0,244.607588,71.444866,0,254,0,-254\n0,247.14962,27.045666,0,254,0,-254\n0,246.553736,203.219304,0,254,0,-254\n0,241.86515,143.045942,0,254,0,-254\n0,251.156978,73.96607,0,254,0,-254\n0,204.919072,241.865658,0,254,0,-254\n0,179.807616,238.559594,0,254,0,-254\n0,245.949724,223.412558,0,254,0,-254\n0,253.618492,200.56729,0,254,0,-254\n0,243.165122,127.626618,0,254,0,-254\n0,242.32108,103.660448,0,254,0,-254\n0,249.990102,80.815434,0,254,0,-254\n0,239.536732,7.874762,0,254,0,-254\n243.434949,198.12,248.92,227.18450626,113.5922544,5.67961272,-562.2816542\n116.565051,200.66,243.84,340.77676066,113.5922544,5.67961272,-562.2816542\n180,152.4,246.38,0,254,5.08,-248.92\n270,152.4,251.46,0,254,5.08,-248.92\n45,147.32,246.38,179.60512212,179.60512212,7.18420458,-352.02603966\n296.565051,104.14,254,340.77676066,113.5922544,5.67961272,-562.2816542\n63.434949,101.6,248.92,227.18450626,113.5922544,5.67961272,-562.2816542\n180,106.68,248.92,0,254,5.08,-248.92\n135,86.36,238.76,179.60512212,179.60512212,3.59210356,-355.61814322\n243.434949,88.9,243.84,227.18450626,113.5922544,5.67961272,-562.2816542\n26.565051,83.82,241.3,340.77676066,113.5922544,5.67961272,-562.2816542\n116.565051,78.74,236.22,340.77676066,113.5922544,5.67961272,-562.2816542\n225,76.2,241.3,179.60512212,179.60512212,7.18420458,-352.02603966\n45,0,246.38,179.60512212,179.60512212,7.18420458,-352.02603966\n161.565051,7.62,243.84,240.9655582,80.32185358,8.03218612,-795.18633952\n288.434949,5.08,251.46,562.25296744,80.32185358,8.03218612,-795.18633952\n0,93.065092,252.377956,0,254,0,-254\n0,54.397148,245.740428,0,254,0,-254\n0,15.729458,239.103154,0,254,0,-254\n0,174.695866,248.997978,0,254,0,-254\n0,139.30122,250.493276,0,254,0,-254\n0,68.511674,253.48438,0,254,0,-254\n0,113.665508,253.70663,0,254,0,-254\n0,97.066862,251.521468,0,254,0,-254\n0,55.192422,246.008398,0,254,0,-254\n0,30.080966,242.702588,0,254,0,-254\n0,13.48232,240.517172,0,254,0,-254\n0,32.672528,248.284746,0,254,0,-254\n0,66.71564,252.953266,0,254,0,-254\n0,133.83768,240.097056,0,254,0,-254\n0,167.880792,244.765576,0,254,0,-254\n0,201.371454,249.01017,0,254,0,-254\n0,245.485412,246.006874,0,254,0,-254\n0,210.090512,247.502426,0,254,0,-254\n0,246.793766,247.378474,0,254,0,-254\n0,235.809282,253.981458,0,254,0,-254\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-CONC,AR-CONC\n50, 0,0, 104.896,-149.807, 19.05,-209.55\n355, 0,0, -51.7604,187.258, 15.24,-167.64\n100.451, 15.182,-1.32825, 145.557,-176.27, 16.19,-178.09\n46.1842, 0,50.8, 157.343,-224.71, 28.575,-314.325\n96.6356, 22.5899,47.2965, 218.335,-264.405, 24.285,-267.135\n351.184, 0,50.8, 196.679,280.887, 22.86,-251.46\n21, 25.4,38.1, 104.896,-149.807, 19.05,-209.55\n326, 25.4,38.1, -51.7604,187.258, 15.24,-167.64\n71.4514, 38.0345,29.5779, 145.557,-176.27, 16.19,-178.09\n37.5, 0,0, 53.9242,65.2018, 0,-165.608,0,-170.18,0,-168.275\n7.5, 0,0, 79.3242,90.6018, 0,-97.028,0,-161.798,0,-64.135\n-32.5, -56.642,0, 117.434,68.0212, 0,-63.5,0,-198.12,0,-262.89\n-42.5, -82.042,0, 92.0344,118.821, 0,-82.55,0,-131.572,0,-186.69\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-HBONE,AR-HBONE\n45, 0,0, 101.6,101.6, 304.8,-101.6\n135, 71.842,71.842, 101.6,-101.6, 304.8,-101.6\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-PARQ1,AR-PARQ1\n90, 0,0, 304.8,304.8, 304.8,-304.8\n90, 50.8,0, 304.8,304.8, 304.8,-304.8\n90, 101.6,0, 304.8,304.8, 304.8,-304.8\n90, 152.4,0, 304.8,304.8, 304.8,-304.8\n90, 203.2,0, 304.8,304.8, 304.8,-304.8\n90, 254,0, 304.8,304.8, 304.8,-304.8\n90, 304.8,0, 304.8,304.8, 304.8,-304.8\n0, 0,304.8, 304.8,-304.8, 304.8,-304.8\n0, 0,355.6, 304.8,-304.8, 304.8,-304.8\n0, 0,406.4, 304.8,-304.8, 304.8,-304.8\n0, 0,457.2, 304.8,-304.8, 304.8,-304.8\n0, 0,508, 304.8,-304.8, 304.8,-304.8\n0, 0,558.8, 304.8,-304.8, 304.8,-304.8\n0, 0,609.6, 304.8,-304.8, 304.8,-304.8\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-RROOF,AR-RROOF\n0, 0,0, 55.88,25.4, 381,-50.8,127,-25.4\n0, 33.782,12.7, -25.4,33.782, 76.2,-8.382,152.4,-19.05\n0, 12.7,21.59, 132.08,17.018, 203.2,-35.56,101.6,-25.4\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-RSHKE,AR-RSHKE\n0, 0,0, 647.7,304.8, 152.4,-127,177.8,-76.2,228.6,-101.6\n0, 152.4,12.7, 647.7,304.8, 127,-482.6,101.6,-152.4\n0, 457.2,-19.05, 647.7,304.8, 76.2,-787.4\n90, 0,0, 304.8,215.9, 292.1,-927.1\n90, 152.4,0, 304.8,215.9, 285.75,-933.45\n90, 279.4,0, 304.8,215.9, 266.7,-952.5\n90, 457.2,-19.05, 304.8,215.9, 292.1,-927.1\n90, 533.4,-19.05, 304.8,215.9, 292.1,-927.1\n90, 762,0, 304.8,215.9, 279.4,-939.8\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-SAND,AR-SAND\n37.5, 0,0, 28.5242,39.8018, 0,-38.608,0,-43.18,0,-41.275\n7.5, 0,0, 53.9242,65.2018, 0,-20.828,0,-34.798,0,-13.335\n-32.5, -31.242,0, 66.6344,42.6212, 0,-12.7,0,-45.72,0,-59.69\n-42.5, -31.242,0, 41.2344,68.0212, 0,-6.35,0,-29.972,0,-34.29\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BARBWIRE,BARBWIRE\n;By John Hyslop\n;Developed in mm as metric QCAD3 pattern\n315,7.62,14.224,17.960512212,17.960512212,0.359210356,-35.561814322\n288.434949,6.604,17.272,56.225296744,8.032185358,3.212874194,-77.10897837\n158.198591,7.874,16.764,80.18324705,4.716661636,1.36783191,-135.415354264\n116.565051,8.128,16.256,34.077676066,11.35922544,0.567961272,-56.22816542\n116.565051,8.636,15.24,34.077676066,11.35922544,1.135922544,-55.660204148\n111.801409,11.176,9.906,56.599939124,4.716661636,1.36783191,-135.415354264\n156.801409,12.954,9.144,136.74251925,3.335183322,1.934406342,-191.506230398\n289.653824,11.684,12.7,297.294468148,1.708588912,3.775981526,-373.822164724\n194.036243,7.874,9.144,80.085263502,6.160405002,1.047268924,-103.679614078\n251.565051,8.128,9.906,24.09655582,8.032185358,0.803218612,-79.518633952\n254.054604,8.636,11.684,104.668749768,3.488958224,1.84914794,-183.065643266\n74.744881,8.636,11.684,104.703186326,2.22772732,2.896045516,-286.708512434\n135,9.144,11.176,17.960512212,17.960512212,0.718420458,-35.202603966\n180,9.906,11.176,0,25.4,0.762,-24.638\n270,9.906,11.43,0,25.4,0.254,-25.146\n74.054604,9.906,11.43,104.668749768,3.488958224,3.69829588,-181.216495326\n161.565051,10.668,11.176,24.09655582,8.032185358,0.803218612,-79.518633952\n198.434949,11.43,11.43,56.225296744,8.032185358,0.803218612,-79.518633952\n258.231711,12.7,17.526,129.51095129,1.03608759,6.226886454,-616.461767582\n21.801409,11.43,17.018,56.599939124,4.716661636,1.36783191,-135.415354264\n75.963757,10.922,14.986,24.6416195,6.160405002,2.094537594,-102.632345154\n341.565051,10.16,15.24,24.09655582,8.032185358,0.803218612,-79.518633952\n45,9.398,14.478,17.960512212,17.960512212,1.077630814,-34.843393864\n288.434949,9.144,15.24,56.225296744,8.032185358,0.803218612,-79.518633952\n0,8.636,15.24,0,25.4,0.508,-24.892\n26.565051,8.128,14.986,34.077676066,11.35922544,0.567961272,-56.22816542\n78.231711,6.858,8.89,129.51095129,1.03608759,6.226886454,-616.461767582\n4.085617,19.812,12.192,331.17053781,1.80967507,3.565059926,-352.940928864\n0,17.526,12.192,0,25.4,2.286,-23.114\n354.289407,14.986,12.446,25.273944626,2.527394488,2.552668504,-252.714172244\n356.185925,11.938,13.97,25.343743064,1.689582854,3.818457184,-378.027270614\n351.469234,20.32,13.97,179.600730968,1.255949228,5.136831992,-508.546377622\n0,16.764,13.97,0,25.4,3.556,-21.844\n14.036243,11.684,12.7,80.085263502,6.160405002,5.236344112,-99.490538636\n189.865807,17.78,12.954,438.470633344,1.088016366,5.92968969,-587.039280834\n180,20.32,12.954,0,25.4,2.54,-22.86\n171.469234,25.4,12.192,179.600730968,1.255949228,5.136831992,-508.546377622\n186.115504,25.4,14.224,230.005013954,0.901980416,3.973724844,-711.296769428\n5.52754,3.499555612,13.546666582,255.265537982,0.815544724,4.394880466,-786.683623734\n3.691386,0,12.192,381.844852514,0.817654956,3.84896106,-785.188047096\n348.310631,0,13.208,129.51225558,0.85769704,7.522003244,-744.678315822\n348.690068,0,14.224,24.906749272,4.981349956,7.770905718,-121.744189836\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BLOCKS-01\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n270,7.874,16.764,25.4,25.4,5.588,-19.812\n180,2.032,2.286,0,25.4,14.478,-10.922\n270,2.032,2.286,25.4,25.4,5.334,-20.066\n180,2.032,22.352,0,25.4,14.478,-10.922\n270,12.954,2.286,25.4,25.4,5.334,-20.066\n270,22.606,8.128,25.4,25.4,5.08,-20.32\n0,12.446,8.128,0,25.4,10.16,-15.24\n90,12.446,3.048,25.4,25.4,5.08,-20.32\n180,22.606,3.048,0,25.4,10.16,-15.24\n270,17.526,21.336,25.4,25.4,12.192,-13.208\n0,12.192,21.336,0,25.4,5.334,-20.066\n90,12.192,9.144,25.4,25.4,12.192,-13.208\n180,17.526,9.144,0,25.4,5.334,-20.066\n270,3.048,0.762,25.4,25.4,8.382,-17.018\n0,3.048,17.78,0,25.4,8.128,-17.272\n270,11.176,0.762,25.4,25.4,8.382,-17.018\n0,3.048,0.762,0,25.4,8.128,-17.272\n270,11.43,17.018,25.4,25.4,6.096,-19.304\n0,9.144,17.018,0,25.4,2.286,-23.114\n90,9.144,10.922,25.4,25.4,6.096,-19.304\n180,11.43,10.922,0,25.4,2.286,-23.114\n270,11.43,10.16,25.4,25.4,8.382,-17.018\n0,2.794,10.16,0,25.4,8.636,-16.764\n90,2.794,1.778,25.4,25.4,8.382,-17.018\n180,11.43,1.778,0,25.4,8.636,-16.764\n270,22.606,10.414,25.4,25.4,1.524,-23.876\n0,18.542,10.414,0,25.4,4.064,-21.336\n90,18.542,8.89,25.4,25.4,1.524,-23.876\n180,22.606,8.89,0,25.4,4.064,-21.336\n180,1.778,10.16,0,25.4,3.556,-21.844\n270,23.622,10.16,25.4,25.4,6.858,-18.542\n180,1.778,3.302,0,25.4,3.556,-21.844\n270,1.778,10.16,25.4,25.4,6.858,-18.542\n180,2.032,20.574,0,25.4,8.636,-16.764\n270,18.796,20.574,25.4,25.4,2.54,-22.86\n180,2.032,18.034,0,25.4,8.636,-16.764\n270,2.032,20.574,25.4,25.4,2.54,-22.86\n180,7.874,16.764,0,25.4,14.986,-10.414\n270,18.288,16.764,25.4,25.4,5.588,-19.812\n180,7.874,11.176,0,25.4,14.986,-10.414\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BLOCKS-02\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n180,8.128,4.572,0,25.4,12.446,-12.954\n270,8.128,13.97,25.4,25.4,9.398,-16.002\n0,9.398,24.384,0,25.4,10.668,-14.732\n0,4.318,24.892,0,25.4,4.318,-21.082\n90,20.828,0,25.4,25.4,3.81,-21.59\n180,23.368,0,0,25.4,2.54,-22.86\n180,8.128,13.97,0,25.4,12.446,-12.954\n270,21.082,13.97,25.4,25.4,9.398,-16.002\n180,3.302,20.32,0,25.4,4.572,-20.828\n90,3.556,14.986,25.4,25.4,4.318,-21.082\n270,3.302,3.81,25.4,25.4,8.89,-16.51\n180,18.034,14.986,0,25.4,14.478,-10.922\n270,23.368,3.81,25.4,25.4,3.81,-21.59\n0,20.828,3.81,0,25.4,2.54,-22.86\n270,18.034,19.304,25.4,25.4,4.318,-21.082\n0,3.556,19.304,0,25.4,14.478,-10.922\n180,2.032,14.986,0,25.4,8.128,-17.272\n270,2.032,19.304,25.4,25.4,4.318,-21.082\n180,3.302,3.81,0,25.4,4.572,-20.828\n270,24.13,3.81,25.4,25.4,8.89,-16.51\n90,4.572,20.32,25.4,25.4,3.302,-22.098\n180,23.114,20.32,0,25.4,18.542,-6.858\n180,2.032,19.304,0,25.4,8.128,-17.272\n270,19.304,19.304,25.4,25.4,4.318,-21.082\n270,8.636,3.81,25.4,25.4,4.318,-21.082\n0,4.318,3.81,0,25.4,4.318,-21.082\n270,23.114,23.622,25.4,25.4,3.302,-22.098\n0,4.572,23.622,0,25.4,18.542,-6.858\n0,9.398,13.97,0,25.4,10.668,-14.732\n270,9.398,13.97,25.4,25.4,14.986,-10.414\n270,4.318,3.81,25.4,25.4,4.318,-21.082\n270,20.066,13.97,25.4,25.4,14.986,-10.414\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BOX-OVERLAP\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n180,5.08,17.78,0,25.4,10.16,-15.24\n90,5.08,5.08,25.4,25.4,15.24,-10.16\n270,7.62,5.08,25.4,25.4,10.16,-15.24\n180,5.08,7.62,0,25.4,10.16,-15.24\n0,5.08,20.32,0,25.4,15.24,-10.16\n180,20.32,5.08,0,25.4,15.24,-10.16\n270,20.32,20.32,25.4,25.4,15.24,-10.16\n270,17.78,5.08,25.4,25.4,10.16,-15.24\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BOX,BOX\n90, 0,0, 0,25.4\n90, 6.35,0, 0,25.4\n0, 0,0, 0,25.4, -6.35,6.35\n0, 0,6.35, 0,25.4, -6.35,6.35\n0, 0,12.7, 0,25.4, 6.35,-6.35\n0, 0,19.05, 0,25.4, 6.35,-6.35\n90, 12.7,0, 0,25.4, 6.35,-6.35\n90, 19.05,0, 0,25.4, 6.35,-6.35\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BOXJOIN-01\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n90,3.810000254,3.81,25.4,25.4,17.78,-7.62\n0,3.810000254,21.59,0,25.4,17.78,-7.62\n270,11.430000254,3.81,25.4,25.4,7.62,-17.78\n180,3.810000254,11.43,0,25.4,7.62,-17.78\n270,13.970000254,3.81,25.4,25.4,7.62,-17.78\n180,21.590000254,3.81,0,25.4,17.78,-7.62\n270,21.590000254,21.59,25.4,25.4,17.78,-7.62\n180,3.810000254,13.97,0,25.4,7.62,-17.78\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BOXJOIN-02\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n90,3.810000254,13.97,25.4,25.4,7.62,-17.78\n270,21.590000254,21.59,25.4,25.4,7.62,-17.78\n0,13.970000254,21.59,0,25.4,7.62,-17.78\n180,3.810000254,13.97,0,25.4,7.62,-17.78\n90,3.810000254,3.81,25.4,25.4,7.62,-17.78\n180,11.430000254,3.81,0,25.4,7.62,-17.78\n180,3.810000254,11.43,0,25.4,7.62,-17.78\n180,21.590000254,3.81,0,25.4,7.62,-17.78\n270,21.590000254,11.43,25.4,25.4,7.62,-17.78\n270,11.430000254,3.81,25.4,25.4,7.62,-17.78\n270,13.970000254,3.81,25.4,25.4,7.62,-17.78\n0,3.810000254,21.59,0,25.4,7.62,-17.78\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BRASS,BRASS\n0, 0,0, 0,6.35\n0, 0,3.175, 0,6.35, 3.175,-1.5875\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BRICK,BRICK\n0, 0,0, 0,6.35\n90, 0,0, 0,12.7, 6.35,-6.35\n90, 6.35,0, 0,12.7, -6.35,6.35\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BRSTONE,BRSTONE\n0, 0,0, 0,8.382\n90, 22.86,0, 8.382,12.7, 8.382,-8.382\n90, 20.32,0, 8.382,12.7, 8.382,-8.382\n0, 22.86,1.397, 12.7,8.382, -22.86,2.54\n0, 22.86,2.794, 12.7,8.382, -22.86,2.54\n0, 22.86,4.191, 12.7,8.382, -22.86,2.54\n0, 22.86,5.588, 12.7,8.382, -22.86,2.54\n0, 22.86,6.985, 12.7,8.382, -22.86,2.54\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BUBBLES-01,BUBBLES-01\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in mm as metric QCAD3 pattern\n0,1.4976856,0.4251706,0,25.4,0,-25.4\n0,1.5807944,0.8431022,0,25.4,0,-25.4\n0,1.7177766,1.2465812,0,25.4,0,-25.4\n0,1.9062192,1.6287242,0,25.4,0,-25.4\n0,2.1429472,1.9830034,0,25.4,0,-25.4\n0,2.4238966,2.3033736,0,25.4,0,-25.4\n0,2.7442414,2.584323,0,25.4,0,-25.4\n0,3.098546,2.821051,0,25.4,0,-25.4\n0,3.480689,3.0094936,0,25.4,0,-25.4\n0,3.884168,3.1464504,0,25.4,0,-25.4\n0,4.3020742,3.2295846,0,25.4,0,-25.4\n0,4.7272702,3.2574484,0,25.4,0,-25.4\n0,5.1524408,3.2295846,0,25.4,0,-25.4\n0,5.570347,3.1464504,0,25.4,0,-25.4\n0,5.973826,3.0094936,0,25.4,0,-25.4\n0,6.3559944,2.821051,0,25.4,0,-25.4\n0,6.7102736,2.584323,0,25.4,0,-25.4\n0,7.0306184,2.3033736,0,25.4,0,-25.4\n0,7.3115678,1.9830034,0,25.4,0,-25.4\n0,7.5482958,1.6287242,0,25.4,0,-25.4\n0,7.7367638,1.2465812,0,25.4,0,-25.4\n0,7.8737206,0.8431022,0,25.4,0,-25.4\n0,7.9568548,0.4251706,0,25.4,0,-25.4\n0,3.0482032,5.5942992,0,25.4,0,-25.4\n0,2.9839412,5.1610768,0,25.4,0,-25.4\n0,2.8775152,4.7362618,0,25.4,0,-25.4\n0,2.729992,4.3239182,0,25.4,0,-25.4\n0,2.5427432,3.9280338,0,25.4,0,-25.4\n0,2.3175976,3.5523932,0,25.4,0,-25.4\n0,2.0567142,3.2006286,0,25.4,0,-25.4\n0,1.7626076,2.8761436,0,25.4,0,-25.4\n0,1.4380972,2.582037,0,25.4,0,-25.4\n0,1.086358,2.3211536,0,25.4,0,-25.4\n0,0.7107174,2.096008,0,25.4,0,-25.4\n0,0.3148076,1.9087592,0,25.4,0,-25.4\n0,0.3148076,10.154666,0,25.4,0,-25.4\n0,0.7107174,9.9674172,0,25.4,0,-25.4\n0,1.086358,9.7422716,0,25.4,0,-25.4\n0,1.4380972,9.4813882,0,25.4,0,-25.4\n0,1.7626076,9.1872816,0,25.4,0,-25.4\n0,2.0567142,8.8627966,0,25.4,0,-25.4\n0,2.3175976,8.511032,0,25.4,0,-25.4\n0,2.5427432,8.1353914,0,25.4,0,-25.4\n0,2.729992,7.7394816,0,25.4,0,-25.4\n0,2.8775152,7.327138,0,25.4,0,-25.4\n0,2.9839412,6.902323,0,25.4,0,-25.4\n0,3.0482032,6.469126,0,25.4,0,-25.4\n0,3.0696916,6.0317126,0,25.4,0,-25.4\n0,18.7471304,9.4569026,0,25.4,0,-25.4\n0,18.6083702,9.0603324,0,25.4,0,-25.4\n0,18.3848248,8.70458,0,25.4,0,-25.4\n0,18.0877464,8.4074762,0,25.4,0,-25.4\n0,17.731994,8.1839562,0,25.4,0,-25.4\n0,17.3354238,8.0451706,0,25.4,0,-25.4\n0,16.9178986,7.9981298,0,25.4,0,-25.4\n0,16.5003988,8.0451706,0,25.4,0,-25.4\n0,16.1038286,8.1839562,0,25.4,0,-25.4\n0,15.7480762,8.4074762,0,25.4,0,-25.4\n0,15.4509724,8.70458,0,25.4,0,-25.4\n0,15.2274524,9.0603324,0,25.4,0,-25.4\n0,15.0886668,9.4569026,0,25.4,0,-25.4\n0,15.041626,9.8744024,0,25.4,0,-25.4\n0,15.0886668,10.2919276,0,25.4,0,-25.4\n0,15.2274524,10.6884978,0,25.4,0,-25.4\n0,15.4509724,11.0442502,0,25.4,0,-25.4\n0,15.7480762,11.341354,0,25.4,0,-25.4\n0,16.1038286,11.564874,0,25.4,0,-25.4\n0,16.5003988,11.7036342,0,25.4,0,-25.4\n0,16.9178986,11.750675,0,25.4,0,-25.4\n0,17.3354238,11.7036342,0,25.4,0,-25.4\n0,17.731994,11.564874,0,25.4,0,-25.4\n0,18.0877464,11.341354,0,25.4,0,-25.4\n0,18.3848248,11.0442502,0,25.4,0,-25.4\n0,18.6083702,10.6884978,0,25.4,0,-25.4\n0,18.7471304,10.2919276,0,25.4,0,-25.4\n0,18.7941712,9.8744024,0,25.4,0,-25.4\n0,21.2068664,21.1084414,0,25.4,0,-25.4\n0,20.8647792,21.3569804,0,25.4,0,-25.4\n0,20.5818486,21.6712292,0,25.4,0,-25.4\n0,11.7541802,19.0603632,0,25.4,0,-25.4\n0,11.6505482,18.6510676,0,25.4,0,-25.4\n0,11.480927,18.264378,0,25.4,0,-25.4\n0,11.2499902,17.9108862,0,25.4,0,-25.4\n0,10.9640116,17.6002442,0,25.4,0,-25.4\n0,10.6308144,17.3409102,0,25.4,0,-25.4\n0,10.2594664,17.1399454,0,25.4,0,-25.4\n0,9.8601022,17.0028362,0,25.4,0,-25.4\n0,9.4436184,16.9333418,0,25.4,0,-25.4\n0,9.0213688,16.9333418,0,25.4,0,-25.4\n0,8.6049104,17.0028362,0,25.4,0,-25.4\n0,8.2055462,17.1399454,0,25.4,0,-25.4\n0,7.8341982,17.3409102,0,25.4,0,-25.4\n0,7.5009756,17.6002442,0,25.4,0,-25.4\n0,7.2150224,17.9108862,0,25.4,0,-25.4\n0,6.9840602,18.264378,0,25.4,0,-25.4\n0,6.8144644,18.6510676,0,25.4,0,-25.4\n0,6.710807,19.0603632,0,25.4,0,-25.4\n0,6.6759328,19.481165,0,25.4,0,-25.4\n0,6.710807,19.9019668,0,25.4,0,-25.4\n0,6.8144644,20.3112878,0,25.4,0,-25.4\n0,6.9840602,20.697952,0,25.4,0,-25.4\n0,7.2150224,21.0514438,0,25.4,0,-25.4\n0,7.5009756,21.3620858,0,25.4,0,-25.4\n0,7.8341982,21.6214452,0,25.4,0,-25.4\n0,8.2055462,21.82241,0,25.4,0,-25.4\n0,10.2594664,21.82241,0,25.4,0,-25.4\n0,10.6308144,21.6214452,0,25.4,0,-25.4\n0,10.9640116,21.3620858,0,25.4,0,-25.4\n0,11.2499902,21.0514438,0,25.4,0,-25.4\n0,11.480927,20.697952,0,25.4,0,-25.4\n0,11.6505482,20.3112878,0,25.4,0,-25.4\n0,11.7541802,19.9019668,0,25.4,0,-25.4\n0,11.7890544,19.481165,0,25.4,0,-25.4\n0,20.8583784,16.4692076,0,25.4,0,-25.4\n0,20.7913224,16.0457896,0,25.4,0,-25.4\n0,20.6803752,15.6317442,0,25.4,0,-25.4\n0,20.5267306,15.2315418,0,25.4,0,-25.4\n0,20.3321158,14.8495766,0,25.4,0,-25.4\n0,20.0986644,14.490065,0,25.4,0,-25.4\n0,19.828891,14.1569186,0,25.4,0,-25.4\n0,19.5257674,13.853795,0,25.4,0,-25.4\n0,19.192621,13.5840216,0,25.4,0,-25.4\n0,18.8331094,13.3505448,0,25.4,0,-25.4\n0,18.4511442,13.15593,0,25.4,0,-25.4\n0,18.0509418,13.0023108,0,25.4,0,-25.4\n0,17.636871,12.8913636,0,25.4,0,-25.4\n0,17.2134784,12.8243076,0,25.4,0,-25.4\n0,16.7853868,12.8018794,0,25.4,0,-25.4\n0,16.3573206,12.8243076,0,25.4,0,-25.4\n0,15.9339026,12.8913636,0,25.4,0,-25.4\n0,15.5198572,13.0023108,0,25.4,0,-25.4\n0,15.1196548,13.15593,0,25.4,0,-25.4\n0,14.7376896,13.3505448,0,25.4,0,-25.4\n0,14.378178,13.5840216,0,25.4,0,-25.4\n0,14.0450316,13.853795,0,25.4,0,-25.4\n0,13.741908,14.1569186,0,25.4,0,-25.4\n0,13.4721346,14.490065,0,25.4,0,-25.4\n0,13.2386578,14.8495766,0,25.4,0,-25.4\n0,13.044043,15.2315418,0,25.4,0,-25.4\n0,12.8904238,15.6317442,0,25.4,0,-25.4\n0,12.7794766,16.0457896,0,25.4,0,-25.4\n0,12.7124206,16.4692076,0,25.4,0,-25.4\n0,12.6899924,16.8972738,0,25.4,0,-25.4\n0,12.7124206,17.3253654,0,25.4,0,-25.4\n0,12.7794766,17.748758,0,25.4,0,-25.4\n0,12.8904238,18.1628288,0,25.4,0,-25.4\n0,13.044043,18.5630312,0,25.4,0,-25.4\n0,13.2386578,18.9449964,0,25.4,0,-25.4\n0,13.4721346,19.304508,0,25.4,0,-25.4\n0,13.741908,19.6376544,0,25.4,0,-25.4\n0,14.0450316,19.9407526,0,25.4,0,-25.4\n0,14.378178,20.2105514,0,25.4,0,-25.4\n0,14.7376896,20.4440028,0,25.4,0,-25.4\n0,15.1196548,20.6386176,0,25.4,0,-25.4\n0,15.5198572,20.7922368,0,25.4,0,-25.4\n0,15.9339026,20.9032094,0,25.4,0,-25.4\n0,16.3573206,20.9702654,0,25.4,0,-25.4\n0,16.7853868,20.9926936,0,25.4,0,-25.4\n0,17.2134784,20.9702654,0,25.4,0,-25.4\n0,17.636871,20.9032094,0,25.4,0,-25.4\n0,18.0509418,20.7922368,0,25.4,0,-25.4\n0,18.4511442,20.6386176,0,25.4,0,-25.4\n0,18.8331094,20.4440028,0,25.4,0,-25.4\n0,19.192621,20.2105514,0,25.4,0,-25.4\n0,19.5257674,19.9407526,0,25.4,0,-25.4\n0,19.828891,19.6376544,0,25.4,0,-25.4\n0,20.0986644,19.304508,0,25.4,0,-25.4\n0,20.3321158,18.9449964,0,25.4,0,-25.4\n0,20.5267306,18.5630312,0,25.4,0,-25.4\n0,20.6803752,18.1628288,0,25.4,0,-25.4\n0,20.7913224,17.748758,0,25.4,0,-25.4\n0,20.8583784,17.3253654,0,25.4,0,-25.4\n0,20.8808066,16.8972738,0,25.4,0,-25.4\n0,13.3174994,9.6961452,0,25.4,0,-25.4\n0,13.2480558,9.2577158,0,25.4,0,-25.4\n0,13.1331716,8.8289638,0,25.4,0,-25.4\n0,12.9740914,8.4145628,0,25.4,0,-25.4\n0,12.7725932,8.0190594,0,25.4,0,-25.4\n0,12.530836,7.6467716,0,25.4,0,-25.4\n0,12.2514868,7.3018142,0,25.4,0,-25.4\n0,11.9375936,6.9879464,0,25.4,0,-25.4\n0,11.5926362,6.7085972,0,25.4,0,-25.4\n0,11.2203738,6.46684,0,25.4,0,-25.4\n0,10.824845,6.2653164,0,25.4,0,-25.4\n0,10.410444,6.1062362,0,25.4,0,-25.4\n0,9.981692,5.991352,0,25.4,0,-25.4\n0,9.5432626,5.9219084,0,25.4,0,-25.4\n0,9.0999818,5.8986928,0,25.4,0,-25.4\n0,8.6567264,5.9219084,0,25.4,0,-25.4\n0,8.218297,5.991352,0,25.4,0,-25.4\n0,7.7895196,6.1062362,0,25.4,0,-25.4\n0,7.3751186,6.2653164,0,25.4,0,-25.4\n0,6.9796152,6.46684,0,25.4,0,-25.4\n0,6.6073528,6.7085972,0,25.4,0,-25.4\n0,6.2623954,6.9879464,0,25.4,0,-25.4\n0,5.9485022,7.3018142,0,25.4,0,-25.4\n0,5.669153,7.6467716,0,25.4,0,-25.4\n0,5.4273958,8.0190594,0,25.4,0,-25.4\n0,5.2258722,8.4145628,0,25.4,0,-25.4\n0,5.0668174,8.8289638,0,25.4,0,-25.4\n0,4.9519332,9.2577158,0,25.4,0,-25.4\n0,4.8824896,9.6961452,0,25.4,0,-25.4\n0,4.8592486,10.139426,0,25.4,0,-25.4\n0,4.8824896,10.5827068,0,25.4,0,-25.4\n0,4.9519332,11.0211362,0,25.4,0,-25.4\n0,5.0668174,11.4498882,0,25.4,0,-25.4\n0,5.2258722,11.8642892,0,25.4,0,-25.4\n0,5.4273958,12.2597926,0,25.4,0,-25.4\n0,5.669153,12.6320804,0,25.4,0,-25.4\n0,5.9485022,12.9770378,0,25.4,0,-25.4\n0,6.2623954,13.2909056,0,25.4,0,-25.4\n0,6.6073528,13.5702548,0,25.4,0,-25.4\n0,6.9796152,13.812012,0,25.4,0,-25.4\n0,7.3751186,14.0135356,0,25.4,0,-25.4\n0,7.7895196,14.1726158,0,25.4,0,-25.4\n0,8.218297,14.2875,0,25.4,0,-25.4\n0,8.6567264,14.3569436,0,25.4,0,-25.4\n0,9.0999818,14.3801592,0,25.4,0,-25.4\n0,9.5432626,14.3569436,0,25.4,0,-25.4\n0,9.981692,14.2875,0,25.4,0,-25.4\n0,10.410444,14.1726158,0,25.4,0,-25.4\n0,10.824845,14.0135356,0,25.4,0,-25.4\n0,11.2203738,13.812012,0,25.4,0,-25.4\n0,11.5926362,13.5702548,0,25.4,0,-25.4\n0,11.9375936,13.2909056,0,25.4,0,-25.4\n0,12.2514868,12.9770378,0,25.4,0,-25.4\n0,12.530836,12.6320804,0,25.4,0,-25.4\n0,12.7725932,12.2597926,0,25.4,0,-25.4\n0,12.9740914,11.8642892,0,25.4,0,-25.4\n0,13.1331716,11.4498882,0,25.4,0,-25.4\n0,13.2480558,11.0211362,0,25.4,0,-25.4\n0,13.3174994,10.5827068,0,25.4,0,-25.4\n0,13.3407404,10.139426,0,25.4,0,-25.4\n0,21.5277192,2.3211536,0,25.4,0,-25.4\n0,21.1759546,2.582037,0,25.4,0,-25.4\n0,20.8514442,2.8761436,0,25.4,0,-25.4\n0,20.557363,3.2006286,0,25.4,0,-25.4\n0,20.2964796,3.5523932,0,25.4,0,-25.4\n0,20.0713086,3.9280338,0,25.4,0,-25.4\n0,19.8840852,4.3239182,0,25.4,0,-25.4\n0,19.7365366,4.7362618,0,25.4,0,-25.4\n0,19.630136,5.1610768,0,25.4,0,-25.4\n0,19.565874,5.5942992,0,25.4,0,-25.4\n0,19.5443856,6.0317126,0,25.4,0,-25.4\n0,19.565874,6.469126,0,25.4,0,-25.4\n0,19.630136,6.902323,0,25.4,0,-25.4\n0,19.7365366,7.327138,0,25.4,0,-25.4\n0,19.8840852,7.7394816,0,25.4,0,-25.4\n0,20.0713086,8.1353914,0,25.4,0,-25.4\n0,20.2964796,8.511032,0,25.4,0,-25.4\n0,20.557363,8.8627966,0,25.4,0,-25.4\n0,20.8514442,9.1872816,0,25.4,0,-25.4\n0,21.1759546,9.4813882,0,25.4,0,-25.4\n0,21.5277192,9.7422716,0,25.4,0,-25.4\n0,6.1278008,16.064738,0,25.4,0,-25.4\n0,6.0612782,15.6162756,0,25.4,0,-25.4\n0,5.9511438,15.1765,0,25.4,0,-25.4\n0,5.7983882,14.749653,0,25.4,0,-25.4\n0,5.6045608,14.339824,0,25.4,0,-25.4\n0,5.3714904,13.95095,0,25.4,0,-25.4\n0,5.1014122,13.5868156,0,25.4,0,-25.4\n0,4.7969678,13.2509006,0,25.4,0,-25.4\n0,4.4610528,12.9464308,0,25.4,0,-25.4\n0,4.0969184,12.676378,0,25.4,0,-25.4\n0,3.7080444,12.4433076,0,25.4,0,-25.4\n0,3.2982154,12.2494548,0,25.4,0,-25.4\n0,2.8713684,12.0967246,0,25.4,0,-25.4\n0,2.4315928,11.9865648,0,25.4,0,-25.4\n0,1.9831304,11.9200422,0,25.4,0,-25.4\n0,1.5303246,11.8977918,0,25.4,0,-25.4\n0,1.0774934,11.9200422,0,25.4,0,-25.4\n0,0.6290564,11.9865648,0,25.4,0,-25.4\n0,0.1892808,12.0967246,0,25.4,0,-25.4\n0,0.1892808,20.938363,0,25.4,0,-25.4\n0,0.6290564,21.0485228,0,25.4,0,-25.4\n0,1.0774934,21.1150454,0,25.4,0,-25.4\n0,1.5303246,21.1372958,0,25.4,0,-25.4\n0,1.9831304,21.1150454,0,25.4,0,-25.4\n0,2.4315928,21.0485228,0,25.4,0,-25.4\n0,2.8713684,20.938363,0,25.4,0,-25.4\n0,3.2982154,20.7856328,0,25.4,0,-25.4\n0,3.7080444,20.59178,0,25.4,0,-25.4\n0,4.0969184,20.3587096,0,25.4,0,-25.4\n0,4.4610528,20.0886568,0,25.4,0,-25.4\n0,4.7969678,19.784187,0,25.4,0,-25.4\n0,5.1014122,19.448272,0,25.4,0,-25.4\n0,5.3714904,19.0841376,0,25.4,0,-25.4\n0,5.6045608,18.6952636,0,25.4,0,-25.4\n0,5.7983882,18.2854346,0,25.4,0,-25.4\n0,5.9511438,17.8585876,0,25.4,0,-25.4\n0,6.0612782,17.418812,0,25.4,0,-25.4\n0,6.1278008,16.9703496,0,25.4,0,-25.4\n0,6.1500512,16.5175438,0,25.4,0,-25.4\n0,19.5946268,1.221359,0,25.4,0,-25.4\n0,19.5242688,0.7469886,0,25.4,0,-25.4\n0,19.4077336,0.281813,0,25.4,0,-25.4\n0,10.055352,0.281813,0,25.4,0,-25.4\n0,9.9388168,0.7469886,0,25.4,0,-25.4\n0,9.8684588,1.221359,0,25.4,0,-25.4\n0,9.844913,1.7003268,0,25.4,0,-25.4\n0,9.8684588,2.1792946,0,25.4,0,-25.4\n0,9.9388168,2.653665,0,25.4,0,-25.4\n0,10.055352,3.1188406,0,25.4,0,-25.4\n0,10.216896,3.570351,0,25.4,0,-25.4\n0,10.4219248,4.0038528,0,25.4,0,-25.4\n0,10.6684572,4.4151804,0,25.4,0,-25.4\n0,10.954131,4.800346,0,25.4,0,-25.4\n0,11.2761776,5.155692,0,25.4,0,-25.4\n0,11.6314982,5.4777386,0,25.4,0,-25.4\n0,12.0166892,5.763387,0,25.4,0,-25.4\n0,12.4280168,6.0099448,0,25.4,0,-25.4\n0,12.8615186,6.2149736,0,25.4,0,-25.4\n0,13.313029,6.3765176,0,25.4,0,-25.4\n0,13.7782046,6.4930528,0,25.4,0,-25.4\n0,14.252575,6.5634108,0,25.4,0,-25.4\n0,14.7315428,6.5869312,0,25.4,0,-25.4\n0,15.2105106,6.5634108,0,25.4,0,-25.4\n0,15.684881,6.4930528,0,25.4,0,-25.4\n0,16.1500566,6.3765176,0,25.4,0,-25.4\n0,16.601567,6.2149736,0,25.4,0,-25.4\n0,17.0350688,6.0099448,0,25.4,0,-25.4\n0,17.4463964,5.763387,0,25.4,0,-25.4\n0,17.8315874,5.4777386,0,25.4,0,-25.4\n0,18.186908,5.155692,0,25.4,0,-25.4\n0,18.5089546,4.800346,0,25.4,0,-25.4\n0,18.794603,4.4151804,0,25.4,0,-25.4\n0,19.0411608,4.0038528,0,25.4,0,-25.4\n0,19.2461896,3.570351,0,25.4,0,-25.4\n0,19.4077336,3.1188406,0,25.4,0,-25.4\n0,19.5242688,2.653665,0,25.4,0,-25.4\n0,19.5946268,2.1792946,0,25.4,0,-25.4\n0,19.6181472,1.7003268,0,25.4,0,-25.4\n0,25.1624084,12.2494548,0,25.4,0,-25.4\n0,24.7525794,12.4433076,0,25.4,0,-25.4\n0,24.3637308,12.676378,0,25.4,0,-25.4\n0,23.9995964,12.9464308,0,25.4,0,-25.4\n0,23.663656,13.2509006,0,25.4,0,-25.4\n0,23.3592116,13.5868156,0,25.4,0,-25.4\n0,23.0891334,13.95095,0,25.4,0,-25.4\n0,22.856063,14.339824,0,25.4,0,-25.4\n0,22.6622356,14.749653,0,25.4,0,-25.4\n0,22.5095054,15.1765,0,25.4,0,-25.4\n0,22.3993456,15.6162756,0,25.4,0,-25.4\n0,22.332823,16.064738,0,25.4,0,-25.4\n0,22.3105726,16.5175438,0,25.4,0,-25.4\n0,22.332823,16.9703496,0,25.4,0,-25.4\n0,22.3993456,17.418812,0,25.4,0,-25.4\n0,22.5095054,17.8585876,0,25.4,0,-25.4\n0,22.6622356,18.2854346,0,25.4,0,-25.4\n0,22.856063,18.6952636,0,25.4,0,-25.4\n0,23.0891334,19.0841376,0,25.4,0,-25.4\n0,23.3592116,19.448272,0,25.4,0,-25.4\n0,23.663656,19.784187,0,25.4,0,-25.4\n0,23.9995964,20.0886568,0,25.4,0,-25.4\n0,24.3637308,20.3587096,0,25.4,0,-25.4\n0,24.7525794,20.59178,0,25.4,0,-25.4\n0,25.1624084,20.7856328,0,25.4,0,-25.4\n0,24.0659412,22.037421,0,25.4,0,-25.4\n0,23.854537,21.6712292,0,25.4,0,-25.4\n0,23.571581,21.3569804,0,25.4,0,-25.4\n0,23.2294938,21.1084414,0,25.4,0,-25.4\n0,22.8432106,20.936458,0,25.4,0,-25.4\n0,22.429597,20.8485486,0,25.4,0,-25.4\n0,22.0067632,20.8485486,0,25.4,0,-25.4\n0,21.5931496,20.936458,0,25.4,0,-25.4\n0,20.370419,22.037421,0,25.4,0,-25.4\n0,25.302464,1.7612106,0,25.4,0,-25.4\n0,24.877649,1.65481,0,25.4,0,-25.4\n0,24.444452,1.590548,0,25.4,0,-25.4\n0,24.0070386,1.5690596,0,25.4,0,-25.4\n0,23.5696252,1.590548,0,25.4,0,-25.4\n0,23.1364028,1.65481,0,25.4,0,-25.4\n0,22.7115878,1.7612106,0,25.4,0,-25.4\n0,22.2992442,1.9087592,0,25.4,0,-25.4\n0,21.9033598,2.096008,0,25.4,0,-25.4\n0,21.9033598,9.9674172,0,25.4,0,-25.4\n0,22.2992442,10.154666,0,25.4,0,-25.4\n0,22.7115878,10.3022146,0,25.4,0,-25.4\n0,23.1364028,10.4086152,0,25.4,0,-25.4\n0,23.5696252,10.4728772,0,25.4,0,-25.4\n0,24.0070386,10.4943656,0,25.4,0,-25.4\n0,24.444452,10.4728772,0,25.4,0,-25.4\n0,24.877649,10.4086152,0,25.4,0,-25.4\n0,25.302464,10.3022146,0,25.4,0,-25.4\n0,19.2461896,25.2303026,0,25.4,0,-25.4\n0,19.0411608,24.7967754,0,25.4,0,-25.4\n0,18.794603,24.3854732,0,25.4,0,-25.4\n0,18.5089546,24.0002822,0,25.4,0,-25.4\n0,18.186908,23.6449616,0,25.4,0,-25.4\n0,17.8315874,23.322915,0,25.4,0,-25.4\n0,17.4463964,23.0372412,0,25.4,0,-25.4\n0,17.0350688,22.7907088,0,25.4,0,-25.4\n0,16.601567,22.58568,0,25.4,0,-25.4\n0,16.1500566,22.4241106,0,25.4,0,-25.4\n0,15.684881,22.3076008,0,25.4,0,-25.4\n0,15.2105106,22.2372428,0,25.4,0,-25.4\n0,14.7315428,22.213697,0,25.4,0,-25.4\n0,14.252575,22.2372428,0,25.4,0,-25.4\n0,13.7782046,22.3076008,0,25.4,0,-25.4\n0,13.313029,22.4241106,0,25.4,0,-25.4\n0,12.8615186,22.58568,0,25.4,0,-25.4\n0,12.4280168,22.7907088,0,25.4,0,-25.4\n0,12.0166892,23.0372412,0,25.4,0,-25.4\n0,11.6314982,23.322915,0,25.4,0,-25.4\n0,11.2761776,23.6449616,0,25.4,0,-25.4\n0,10.954131,24.0002822,0,25.4,0,-25.4\n0,10.6684572,24.3854732,0,25.4,0,-25.4\n0,10.4219248,24.7967754,0,25.4,0,-25.4\n0,10.216896,25.2303026,0,25.4,0,-25.4\n0,20.2397614,22.4395792,0,25.4,0,-25.4\n0,20.1955654,22.8601016,0,25.4,0,-25.4\n0,20.2397614,23.280624,0,25.4,0,-25.4\n0,20.370419,23.6827822,0,25.4,0,-25.4\n0,20.5818486,24.048974,0,25.4,0,-25.4\n0,20.8647792,24.3631974,0,25.4,0,-25.4\n0,21.2068664,24.6117364,0,25.4,0,-25.4\n0,8.6049104,21.9594938,0,25.4,0,-25.4\n0,9.0213688,22.0289882,0,25.4,0,-25.4\n0,9.4436184,22.0289882,0,25.4,0,-25.4\n0,9.8601022,21.9594938,0,25.4,0,-25.4\n0,7.9568548,24.9748294,0,25.4,0,-25.4\n0,7.8737206,24.5568978,0,25.4,0,-25.4\n0,7.7367638,24.1534188,0,25.4,0,-25.4\n0,7.5482958,23.7712758,0,25.4,0,-25.4\n0,7.3115678,23.4169966,0,25.4,0,-25.4\n0,7.0306184,23.0966264,0,25.4,0,-25.4\n0,6.7102736,22.815677,0,25.4,0,-25.4\n0,6.3559944,22.578949,0,25.4,0,-25.4\n0,5.973826,22.3905064,0,25.4,0,-25.4\n0,5.570347,22.2535496,0,25.4,0,-25.4\n0,5.1524408,22.1704154,0,25.4,0,-25.4\n0,4.7272702,22.1425516,0,25.4,0,-25.4\n0,4.3020742,22.1704154,0,25.4,0,-25.4\n0,3.884168,22.2535496,0,25.4,0,-25.4\n0,3.480689,22.3905064,0,25.4,0,-25.4\n0,3.098546,22.578949,0,25.4,0,-25.4\n0,2.7442414,22.815677,0,25.4,0,-25.4\n0,2.4238966,23.0966264,0,25.4,0,-25.4\n0,2.1429472,23.4169966,0,25.4,0,-25.4\n0,1.9062192,23.7712758,0,25.4,0,-25.4\n0,1.7177766,24.1534188,0,25.4,0,-25.4\n0,1.5807944,24.5568978,0,25.4,0,-25.4\n0,1.4976856,24.9748294,0,25.4,0,-25.4\n0,1.4697964,25.4,0,25.4,0,-25.4\n0,7.9847186,25.4,0,25.4,0,-25.4\n0,24.1966242,22.4395792,0,25.4,0,-25.4\n0,21.5931496,24.7837452,0,25.4,0,-25.4\n0,22.0067632,24.8716546,0,25.4,0,-25.4\n0,22.429597,24.8716546,0,25.4,0,-25.4\n0,22.8432106,24.7837452,0,25.4,0,-25.4\n0,23.2294938,24.6117364,0,25.4,0,-25.4\n0,23.571581,24.3631974,0,25.4,0,-25.4\n0,23.854537,24.048974,0,25.4,0,-25.4\n0,24.0659412,23.6827822,0,25.4,0,-25.4\n0,24.1966242,23.280624,0,25.4,0,-25.4\n0,24.2408202,22.8601016,0,25.4,0,-25.4\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BUBBLES-02,BUBBLES-02\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in mm as metric QCAD3 pattern\n0,0.315722,3.5481006,0,25.4,0,-25.4\n0,0.1191006,3.162173,0,25.4,0,-25.4\n0,0.1191006,4.7896018,0,25.4,0,-25.4\n0,0.315722,4.4036742,0,25.4,0,-25.4\n0,0.3834892,3.9758874,0,25.4,0,-25.4\n0,0.9946386,13.9859512,0,25.4,0,-25.4\n0,0.840232,13.5788146,0,25.4,0,-25.4\n0,0.5928614,13.220446,0,25.4,0,-25.4\n0,0.2669286,12.9316988,0,25.4,0,-25.4\n0,0.2669286,15.9047688,0,25.4,0,-25.4\n0,0.5928614,15.6160216,0,25.4,0,-25.4\n0,0.840232,15.257653,0,25.4,0,-25.4\n0,0.9946386,14.8505164,0,25.4,0,-25.4\n0,1.0471404,14.4182338,0,25.4,0,-25.4\n0,0.321437,1.5549118,0,25.4,0,-25.4\n0,0.7453122,1.6269208,0,25.4,0,-25.4\n0,1.1745976,1.6510254,0,25.4,0,-25.4\n0,1.6039084,1.6269208,0,25.4,0,-25.4\n0,2.0277836,1.5549118,0,25.4,0,-25.4\n0,2.44094,1.435862,0,25.4,0,-25.4\n0,2.838196,1.2713208,0,25.4,0,-25.4\n0,3.214497,1.0633456,0,25.4,0,-25.4\n0,3.5651694,0.8145526,0,25.4,0,-25.4\n0,3.8857682,0.5280406,0,25.4,0,-25.4\n0,4.1722802,0.2074418,0,25.4,0,-25.4\n0,5.3785008,15.8337504,0,25.4,0,-25.4\n0,5.1644804,15.4630628,0,25.4,0,-25.4\n0,4.8365664,15.1879046,0,25.4,0,-25.4\n0,4.434332,15.041499,0,25.4,0,-25.4\n0,4.0062658,15.041499,0,25.4,0,-25.4\n0,3.6040314,15.1879046,0,25.4,0,-25.4\n0,3.2761174,15.4630628,0,25.4,0,-25.4\n0,3.062097,15.8337504,0,25.4,0,-25.4\n0,2.9877512,16.2553142,0,25.4,0,-25.4\n0,3.062097,16.676878,0,25.4,0,-25.4\n0,3.2761174,17.0475656,0,25.4,0,-25.4\n0,3.6040314,17.3227238,0,25.4,0,-25.4\n0,4.0062658,17.4691294,0,25.4,0,-25.4\n0,4.434332,17.4691294,0,25.4,0,-25.4\n0,4.8365664,17.3227238,0,25.4,0,-25.4\n0,5.1644804,17.0475656,0,25.4,0,-25.4\n0,5.3785008,16.676878,0,25.4,0,-25.4\n0,5.4528212,16.2553142,0,25.4,0,-25.4\n0,1.6039084,19.4068192,0,25.4,0,-25.4\n0,1.1745976,19.3827146,0,25.4,0,-25.4\n0,0.7453122,19.4068192,0,25.4,0,-25.4\n0,8.07212,6.3135002,0,25.4,0,-25.4\n0,7.9904082,5.9026552,0,25.4,0,-25.4\n0,7.8557628,5.5059834,0,25.4,0,-25.4\n0,7.6704952,5.130292,0,25.4,0,-25.4\n0,7.437755,4.7820072,0,25.4,0,-25.4\n0,7.1615554,4.4670472,0,25.4,0,-25.4\n0,6.8466208,4.1908476,0,25.4,0,-25.4\n0,6.4983106,3.9581328,0,25.4,0,-25.4\n0,6.1226192,3.7728652,0,25.4,0,-25.4\n0,5.7259474,3.6382198,0,25.4,0,-25.4\n0,5.3151024,3.5564826,0,25.4,0,-25.4\n0,4.89712,3.5291014,0,25.4,0,-25.4\n0,4.4791122,3.5564826,0,25.4,0,-25.4\n0,4.0682672,3.6382198,0,25.4,0,-25.4\n0,3.6715954,3.7728652,0,25.4,0,-25.4\n0,3.295904,3.9581328,0,25.4,0,-25.4\n0,2.9475938,4.1908476,0,25.4,0,-25.4\n0,2.6326592,4.4670472,0,25.4,0,-25.4\n0,2.3564596,4.7820072,0,25.4,0,-25.4\n0,2.1237448,5.130292,0,25.4,0,-25.4\n0,1.9384772,5.5059834,0,25.4,0,-25.4\n0,1.8038064,5.9026552,0,25.4,0,-25.4\n0,1.7220946,6.3135002,0,25.4,0,-25.4\n0,1.694688,6.731508,0,25.4,0,-25.4\n0,1.7220946,7.1495158,0,25.4,0,-25.4\n0,1.8038064,7.5603608,0,25.4,0,-25.4\n0,1.9384772,7.9570072,0,25.4,0,-25.4\n0,2.1237448,8.332724,0,25.4,0,-25.4\n0,2.3564596,8.6810088,0,25.4,0,-25.4\n0,2.6326592,8.9959434,0,25.4,0,-25.4\n0,2.9475938,9.272143,0,25.4,0,-25.4\n0,3.295904,9.5048832,0,25.4,0,-25.4\n0,3.6715954,9.6901508,0,25.4,0,-25.4\n0,4.0682672,9.8247962,0,25.4,0,-25.4\n0,4.4791122,9.9065334,0,25.4,0,-25.4\n0,4.89712,9.9339146,0,25.4,0,-25.4\n0,5.3151024,9.9065334,0,25.4,0,-25.4\n0,5.7259474,9.8247962,0,25.4,0,-25.4\n0,6.1226192,9.6901508,0,25.4,0,-25.4\n0,6.4983106,9.5048832,0,25.4,0,-25.4\n0,6.8466208,9.272143,0,25.4,0,-25.4\n0,7.1615554,8.9959434,0,25.4,0,-25.4\n0,7.437755,8.6810088,0,25.4,0,-25.4\n0,7.6704952,8.332724,0,25.4,0,-25.4\n0,7.8557628,7.9570072,0,25.4,0,-25.4\n0,7.9904082,7.5603608,0,25.4,0,-25.4\n0,8.07212,7.1495158,0,25.4,0,-25.4\n0,8.0995266,6.731508,0,25.4,0,-25.4\n0,18.0404516,13.0813048,0,25.4,0,-25.4\n0,17.9789836,12.6669292,0,25.4,0,-25.4\n0,17.8771804,12.2606054,0,25.4,0,-25.4\n0,17.736058,11.8661942,0,25.4,0,-25.4\n0,17.5569626,11.4875056,0,25.4,0,-25.4\n0,17.3416214,11.1282226,0,25.4,0,-25.4\n0,17.0920664,10.7917488,0,25.4,0,-25.4\n0,16.8107614,10.4813862,0,25.4,0,-25.4\n0,16.5003734,10.2000558,0,25.4,0,-25.4\n0,16.163925,9.9505262,0,25.4,0,-25.4\n0,15.8046166,9.7351596,0,25.4,0,-25.4\n0,15.4259534,9.5560642,0,25.4,0,-25.4\n0,15.0315422,9.4149418,0,25.4,0,-25.4\n0,14.625193,9.313164,0,25.4,0,-25.4\n0,14.2108428,9.251696,0,25.4,0,-25.4\n0,13.792454,9.2311474,0,25.4,0,-25.4\n0,13.3740652,9.251696,0,25.4,0,-25.4\n0,12.9596896,9.313164,0,25.4,0,-25.4\n0,12.5533404,9.4149418,0,25.4,0,-25.4\n0,12.1589292,9.5560642,0,25.4,0,-25.4\n0,11.780266,9.7351596,0,25.4,0,-25.4\n0,11.4209576,9.9505262,0,25.4,0,-25.4\n0,11.0845092,10.2000558,0,25.4,0,-25.4\n0,10.7741212,10.4813862,0,25.4,0,-25.4\n0,10.4928162,10.7917488,0,25.4,0,-25.4\n0,10.2432866,11.1282226,0,25.4,0,-25.4\n0,10.02792,11.4875056,0,25.4,0,-25.4\n0,9.8488246,11.8661942,0,25.4,0,-25.4\n0,9.7077022,12.2606054,0,25.4,0,-25.4\n0,9.6059244,12.6669292,0,25.4,0,-25.4\n0,9.5444564,13.0813048,0,25.4,0,-25.4\n0,9.5239078,13.4996936,0,25.4,0,-25.4\n0,9.5444564,13.9180824,0,25.4,0,-25.4\n0,9.6059244,14.332458,0,25.4,0,-25.4\n0,9.7077022,14.7387818,0,25.4,0,-25.4\n0,9.8488246,15.133193,0,25.4,0,-25.4\n0,10.02792,15.5118816,0,25.4,0,-25.4\n0,10.2432866,15.8711646,0,25.4,0,-25.4\n0,10.4928162,16.2076384,0,25.4,0,-25.4\n0,10.7741212,16.518001,0,25.4,0,-25.4\n0,11.0845092,16.7993314,0,25.4,0,-25.4\n0,11.4209576,17.048861,0,25.4,0,-25.4\n0,11.780266,17.2642276,0,25.4,0,-25.4\n0,12.1589292,17.443323,0,25.4,0,-25.4\n0,12.5533404,17.5844454,0,25.4,0,-25.4\n0,12.9596896,17.6862232,0,25.4,0,-25.4\n0,13.3740652,17.7476912,0,25.4,0,-25.4\n0,13.792454,17.7682398,0,25.4,0,-25.4\n0,14.2108428,17.7476912,0,25.4,0,-25.4\n0,14.625193,17.6862232,0,25.4,0,-25.4\n0,15.0315422,17.5844454,0,25.4,0,-25.4\n0,15.4259534,17.443323,0,25.4,0,-25.4\n0,15.8046166,17.2642276,0,25.4,0,-25.4\n0,16.163925,17.048861,0,25.4,0,-25.4\n0,16.5003734,16.7993314,0,25.4,0,-25.4\n0,16.8107614,16.518001,0,25.4,0,-25.4\n0,17.0920664,16.2076384,0,25.4,0,-25.4\n0,17.3416214,15.8711646,0,25.4,0,-25.4\n0,17.5569626,15.5118816,0,25.4,0,-25.4\n0,17.736058,15.133193,0,25.4,0,-25.4\n0,17.8771804,14.7387818,0,25.4,0,-25.4\n0,17.9789836,14.332458,0,25.4,0,-25.4\n0,18.0404516,13.9180824,0,25.4,0,-25.4\n0,18.0610002,13.4996936,0,25.4,0,-25.4\n0,8.9792048,0.3298444,0,25.4,0,-25.4\n0,8.9318846,0.7497064,0,25.4,0,-25.4\n0,8.9160858,1.1719306,0,25.4,0,-25.4\n0,8.9318846,1.5941294,0,25.4,0,-25.4\n0,8.9792048,2.0139914,0,25.4,0,-25.4\n0,9.0577416,2.429129,0,25.4,0,-25.4\n0,9.1670886,2.8372562,0,25.4,0,-25.4\n0,9.3066362,3.2360616,0,25.4,0,-25.4\n0,9.475597,3.62331,0,25.4,0,-25.4\n0,9.6730312,3.9968424,0,25.4,0,-25.4\n0,9.8978212,4.3546014,0,25.4,0,-25.4\n0,10.1487224,4.694555,0,25.4,0,-25.4\n0,10.4243124,5.0147982,0,25.4,0,-25.4\n0,10.7230672,5.3135784,0,25.4,0,-25.4\n0,11.0433104,5.5891684,0,25.4,0,-25.4\n0,11.383264,5.8400696,0,25.4,0,-25.4\n0,11.741023,6.0648596,0,25.4,0,-25.4\n0,12.1145554,6.2622684,0,25.4,0,-25.4\n0,12.5018292,6.4312292,0,25.4,0,-25.4\n0,12.9006346,6.5707768,0,25.4,0,-25.4\n0,13.3087364,6.6801238,0,25.4,0,-25.4\n0,13.723874,6.758686,0,25.4,0,-25.4\n0,14.143736,6.8059808,0,25.4,0,-25.4\n0,14.5659602,6.8217796,0,25.4,0,-25.4\n0,14.988159,6.8059808,0,25.4,0,-25.4\n0,15.408021,6.758686,0,25.4,0,-25.4\n0,15.8231586,6.6801238,0,25.4,0,-25.4\n0,16.2312858,6.5707768,0,25.4,0,-25.4\n0,16.6300658,6.4312292,0,25.4,0,-25.4\n0,17.0173396,6.2622684,0,25.4,0,-25.4\n0,17.390872,6.0648596,0,25.4,0,-25.4\n0,17.748631,5.8400696,0,25.4,0,-25.4\n0,18.0885846,5.5891684,0,25.4,0,-25.4\n0,18.4088278,5.3135784,0,25.4,0,-25.4\n0,18.7075826,5.0147982,0,25.4,0,-25.4\n0,18.983198,4.694555,0,25.4,0,-25.4\n0,19.2340992,4.3546014,0,25.4,0,-25.4\n0,19.4588892,3.9968424,0,25.4,0,-25.4\n0,19.656298,3.62331,0,25.4,0,-25.4\n0,19.8252588,3.2360616,0,25.4,0,-25.4\n0,23.5769404,0.2074418,0,25.4,0,-25.4\n0,23.8634524,0.5280406,0,25.4,0,-25.4\n0,24.1840512,0.8145526,0,25.4,0,-25.4\n0,24.5347236,1.0633456,0,25.4,0,-25.4\n0,24.9110246,1.2713208,0,25.4,0,-25.4\n0,25.3082552,1.435862,0,25.4,0,-25.4\n0,25.2128274,2.8558998,0,25.4,0,-25.4\n0,24.8269252,2.6592784,0,25.4,0,-25.4\n0,24.399113,2.5915112,0,25.4,0,-25.4\n0,23.9713262,2.6592784,0,25.4,0,-25.4\n0,23.5853986,2.8558998,0,25.4,0,-25.4\n0,23.2791508,3.162173,0,25.4,0,-25.4\n0,23.082504,3.5481006,0,25.4,0,-25.4\n0,23.0147622,3.9758874,0,25.4,0,-25.4\n0,23.082504,4.4036742,0,25.4,0,-25.4\n0,23.2791508,4.7896018,0,25.4,0,-25.4\n0,23.5853986,5.095875,0,25.4,0,-25.4\n0,23.9713262,5.2924964,0,25.4,0,-25.4\n0,24.399113,5.3602636,0,25.4,0,-25.4\n0,24.8269252,5.2924964,0,25.4,0,-25.4\n0,25.2128274,5.095875,0,25.4,0,-25.4\n0,25.2813566,12.729337,0,25.4,0,-25.4\n0,24.8585736,12.6251208,0,25.4,0,-25.4\n0,24.423116,12.6251208,0,25.4,0,-25.4\n0,24.000333,12.729337,0,25.4,0,-25.4\n0,23.614761,12.9316988,0,25.4,0,-25.4\n0,23.2888028,13.220446,0,25.4,0,-25.4\n0,23.0414576,13.5788146,0,25.4,0,-25.4\n0,22.887051,13.9859512,0,25.4,0,-25.4\n0,22.8345492,14.4182338,0,25.4,0,-25.4\n0,22.887051,14.8505164,0,25.4,0,-25.4\n0,23.0414576,15.257653,0,25.4,0,-25.4\n0,23.2888028,15.6160216,0,25.4,0,-25.4\n0,23.614761,15.9047688,0,25.4,0,-25.4\n0,24.000333,16.1071306,0,25.4,0,-25.4\n0,24.423116,16.2113468,0,25.4,0,-25.4\n0,24.8585736,16.2113468,0,25.4,0,-25.4\n0,25.2813566,16.1071306,0,25.4,0,-25.4\n0,20.2000104,0.7497064,0,25.4,0,-25.4\n0,20.1527156,0.3298444,0,25.4,0,-25.4\n0,19.9648064,2.8372562,0,25.4,0,-25.4\n0,20.0741534,2.429129,0,25.4,0,-25.4\n0,20.1527156,2.0139914,0,25.4,0,-25.4\n0,20.2000104,1.5941294,0,25.4,0,-25.4\n0,20.2158092,1.1719306,0,25.4,0,-25.4\n0,20.0741534,25.3147068,0,25.4,0,-25.4\n0,19.9648064,24.906605,0,25.4,0,-25.4\n0,19.8252588,24.5077996,0,25.4,0,-25.4\n0,19.656298,24.1205512,0,25.4,0,-25.4\n0,19.4588892,23.7469934,0,25.4,0,-25.4\n0,19.2340992,23.3892344,0,25.4,0,-25.4\n0,18.983198,23.0492808,0,25.4,0,-25.4\n0,18.7075826,22.7290376,0,25.4,0,-25.4\n0,18.4088278,22.4302828,0,25.4,0,-25.4\n0,18.0885846,22.1546928,0,25.4,0,-25.4\n0,17.748631,21.9037916,0,25.4,0,-25.4\n0,17.390872,21.6790016,0,25.4,0,-25.4\n0,17.0173396,21.4815674,0,25.4,0,-25.4\n0,16.6300658,21.3126066,0,25.4,0,-25.4\n0,16.2312858,21.173059,0,25.4,0,-25.4\n0,15.8231586,21.063712,0,25.4,0,-25.4\n0,15.408021,20.9851752,0,25.4,0,-25.4\n0,14.988159,20.937855,0,25.4,0,-25.4\n0,14.5659602,20.9220562,0,25.4,0,-25.4\n0,14.143736,20.937855,0,25.4,0,-25.4\n0,13.723874,20.9851752,0,25.4,0,-25.4\n0,13.3087364,21.063712,0,25.4,0,-25.4\n0,12.9006346,21.173059,0,25.4,0,-25.4\n0,12.5018292,21.3126066,0,25.4,0,-25.4\n0,12.1145554,21.4815674,0,25.4,0,-25.4\n0,11.741023,21.6790016,0,25.4,0,-25.4\n0,11.383264,21.9037916,0,25.4,0,-25.4\n0,11.0433104,22.1546928,0,25.4,0,-25.4\n0,10.7230672,22.4302828,0,25.4,0,-25.4\n0,10.4243124,22.7290376,0,25.4,0,-25.4\n0,10.1487224,23.0492808,0,25.4,0,-25.4\n0,9.8978212,23.3892344,0,25.4,0,-25.4\n0,9.6730312,23.7469934,0,25.4,0,-25.4\n0,9.475597,24.1205512,0,25.4,0,-25.4\n0,9.3066362,24.5077996,0,25.4,0,-25.4\n0,9.1670886,24.906605,0,25.4,0,-25.4\n0,9.0577416,25.3147068,0,25.4,0,-25.4\n0,4.9846484,22.7875846,0,25.4,0,-25.4\n0,4.9126394,22.3637094,0,25.4,0,-25.4\n0,4.793615,21.9505276,0,25.4,0,-25.4\n0,4.6290738,21.553297,0,25.4,0,-25.4\n0,4.4210732,21.176996,0,25.4,0,-25.4\n0,4.1722802,20.8263236,0,25.4,0,-25.4\n0,3.8857682,20.5057248,0,25.4,0,-25.4\n0,3.5651694,20.2192128,0,25.4,0,-25.4\n0,3.214497,19.9703944,0,25.4,0,-25.4\n0,2.838196,19.7624192,0,25.4,0,-25.4\n0,2.44094,19.597878,0,25.4,0,-25.4\n0,2.0277836,19.4788536,0,25.4,0,-25.4\n0,0.321437,19.4788536,0,25.4,0,-25.4\n0,4.4210732,25.2567694,0,25.4,0,-25.4\n0,4.6290738,24.880443,0,25.4,0,-25.4\n0,4.793615,24.4832124,0,25.4,0,-25.4\n0,4.9126394,24.070056,0,25.4,0,-25.4\n0,4.9846484,23.6461554,0,25.4,0,-25.4\n0,5.008753,23.21687,0,25.4,0,-25.4\n0,25.3082552,19.597878,0,25.4,0,-25.4\n0,24.9110246,19.7624192,0,25.4,0,-25.4\n0,24.5347236,19.9703944,0,25.4,0,-25.4\n0,24.1840512,20.2192128,0,25.4,0,-25.4\n0,23.8634524,20.5057248,0,25.4,0,-25.4\n0,23.5769404,20.8263236,0,25.4,0,-25.4\n0,23.3281474,21.176996,0,25.4,0,-25.4\n0,23.1201468,21.553297,0,25.4,0,-25.4\n0,22.9556056,21.9505276,0,25.4,0,-25.4\n0,22.8365812,22.3637094,0,25.4,0,-25.4\n0,22.7645722,22.7875846,0,25.4,0,-25.4\n0,22.7404422,23.21687,0,25.4,0,-25.4\n0,22.7645722,23.6461554,0,25.4,0,-25.4\n0,22.8365812,24.070056,0,25.4,0,-25.4\n0,22.9556056,24.4832124,0,25.4,0,-25.4\n0,23.1201468,24.880443,0,25.4,0,-25.4\n0,23.3281474,25.2567694,0,25.4,0,-25.4\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BUBBLES-03,BUBBLES-03\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in mm as metric QCAD3 pattern\n0,10.1887274,4.1559734,0,25.4,0,-25.4\n0,10.0855526,3.6595304,0,25.4,0,-25.4\n0,9.9157536,3.181731,0,25.4,0,-25.4\n0,9.68248,2.7315414,0,25.4,0,-25.4\n0,9.3900752,2.3172928,0,25.4,0,-25.4\n0,9.0439748,1.9467068,0,25.4,0,-25.4\n0,8.6506558,1.6267176,0,25.4,0,-25.4\n0,8.217408,1.3632688,0,25.4,0,-25.4\n0,7.752334,1.1612372,0,25.4,0,-25.4\n0,7.2640952,1.0244582,0,25.4,0,-25.4\n0,6.7617594,0.9553956,0,25.4,0,-25.4\n0,6.2546992,0.9553956,0,25.4,0,-25.4\n0,5.7523634,1.0244582,0,25.4,0,-25.4\n0,5.2641246,1.1612372,0,25.4,0,-25.4\n0,4.7990252,1.3632688,0,25.4,0,-25.4\n0,4.3658028,1.6267176,0,25.4,0,-25.4\n0,3.9724838,1.9467068,0,25.4,0,-25.4\n0,3.6263834,2.3172928,0,25.4,0,-25.4\n0,3.3339786,2.7315414,0,25.4,0,-25.4\n0,3.100705,3.181731,0,25.4,0,-25.4\n0,2.9308806,3.6595304,0,25.4,0,-25.4\n0,2.8277312,4.1559734,0,25.4,0,-25.4\n0,2.7931364,4.6618398,0,25.4,0,-25.4\n0,2.8277312,5.1677062,0,25.4,0,-25.4\n0,2.9308806,5.6641746,0,25.4,0,-25.4\n0,3.100705,6.1419486,0,25.4,0,-25.4\n0,3.3339786,6.5921382,0,25.4,0,-25.4\n0,3.6263834,7.0063868,0,25.4,0,-25.4\n0,3.9724838,7.3769728,0,25.4,0,-25.4\n0,4.3658028,7.696962,0,25.4,0,-25.4\n0,4.7990252,7.9604362,0,25.4,0,-25.4\n0,5.2641246,8.1624424,0,25.4,0,-25.4\n0,5.7523634,8.2992468,0,25.4,0,-25.4\n0,6.2546992,8.368284,0,25.4,0,-25.4\n0,6.7617594,8.368284,0,25.4,0,-25.4\n0,7.2640952,8.2992468,0,25.4,0,-25.4\n0,7.752334,8.1624424,0,25.4,0,-25.4\n0,8.217408,7.9604362,0,25.4,0,-25.4\n0,8.6506558,7.696962,0,25.4,0,-25.4\n0,9.0439748,7.3769728,0,25.4,0,-25.4\n0,9.3900752,7.0063868,0,25.4,0,-25.4\n0,9.68248,6.5921382,0,25.4,0,-25.4\n0,9.9157536,6.1419486,0,25.4,0,-25.4\n0,10.0855526,5.6641746,0,25.4,0,-25.4\n0,10.1887274,5.1677062,0,25.4,0,-25.4\n0,10.2233222,4.6618398,0,25.4,0,-25.4\n0,18.2143908,14.7408138,0,25.4,0,-25.4\n0,17.687036,14.9496018,0,25.4,0,-25.4\n0,17.1900342,15.222855,0,25.4,0,-25.4\n0,16.7311578,15.55623,0,25.4,0,-25.4\n0,16.317722,15.9444944,0,25.4,0,-25.4\n0,15.9561784,16.3815014,0,25.4,0,-25.4\n0,15.6522674,16.860393,0,25.4,0,-25.4\n0,15.4107896,17.3736,0,25.4,0,-25.4\n0,15.2355042,17.9130198,0,25.4,0,-25.4\n0,15.1292306,18.4701434,0,25.4,0,-25.4\n0,15.0936198,19.0362078,0,25.4,0,-25.4\n0,15.1292306,19.6022722,0,25.4,0,-25.4\n0,15.2355042,20.1593958,0,25.4,0,-25.4\n0,15.4107896,20.6988156,0,25.4,0,-25.4\n0,18.1163722,0.530352,0,25.4,0,-25.4\n0,17.4814484,0.5615432,0,25.4,0,-25.4\n0,16.8526714,0.654812,0,25.4,0,-25.4\n0,16.236061,0.8092694,0,25.4,0,-25.4\n0,15.6375354,1.0234168,0,25.4,0,-25.4\n0,15.0629112,1.2951968,0,25.4,0,-25.4\n0,14.5176748,1.6219932,0,25.4,0,-25.4\n0,14.0071094,2.0006564,0,25.4,0,-25.4\n0,13.5361172,2.4275542,0,25.4,0,-25.4\n0,13.1092194,2.8985464,0,25.4,0,-25.4\n0,12.7305562,3.4091372,0,25.4,0,-25.4\n0,12.4037598,3.9543482,0,25.4,0,-25.4\n0,12.1319798,4.5289978,0,25.4,0,-25.4\n0,11.9178324,5.127498,0,25.4,0,-25.4\n0,11.763375,5.7441084,0,25.4,0,-25.4\n0,11.6701062,6.3729108,0,25.4,0,-25.4\n0,11.638915,7.0078092,0,25.4,0,-25.4\n0,11.6701062,7.6427076,0,25.4,0,-25.4\n0,11.763375,8.2714846,0,25.4,0,-25.4\n0,11.9178324,8.8881204,0,25.4,0,-25.4\n0,12.1319798,9.4866206,0,25.4,0,-25.4\n0,12.4037598,10.0612702,0,25.4,0,-25.4\n0,12.7305562,10.6064812,0,25.4,0,-25.4\n0,13.1092194,11.117072,0,25.4,0,-25.4\n0,13.5361172,11.5880642,0,25.4,0,-25.4\n0,14.0071094,12.0149366,0,25.4,0,-25.4\n0,14.5176748,12.3936252,0,25.4,0,-25.4\n0,15.0629112,12.7204216,0,25.4,0,-25.4\n0,15.6375354,12.9922016,0,25.4,0,-25.4\n0,16.236061,13.206349,0,25.4,0,-25.4\n0,16.8526714,13.3608064,0,25.4,0,-25.4\n0,17.4814484,13.4540752,0,25.4,0,-25.4\n0,18.1163722,13.4852664,0,25.4,0,-25.4\n0,14.3025876,16.7496744,0,25.4,0,-25.4\n0,14.1946122,16.0217104,0,25.4,0,-25.4\n0,14.0157962,15.3078434,0,25.4,0,-25.4\n0,13.7678668,14.6149568,0,25.4,0,-25.4\n0,13.453237,13.94968,0,25.4,0,-25.4\n0,13.0748786,13.3184646,0,25.4,0,-25.4\n0,12.6365,12.7273558,0,25.4,0,-25.4\n0,12.1422922,12.1820686,0,25.4,0,-25.4\n0,11.597005,11.6878608,0,25.4,0,-25.4\n0,11.0058962,11.2494822,0,25.4,0,-25.4\n0,10.3746808,10.8711492,0,25.4,0,-25.4\n0,9.7094294,10.556494,0,25.4,0,-25.4\n0,9.0165174,10.3085646,0,25.4,0,-25.4\n0,8.3026504,10.1297486,0,25.4,0,-25.4\n0,7.5746864,10.0217732,0,25.4,0,-25.4\n0,6.8396612,9.9856544,0,25.4,0,-25.4\n0,6.1046106,10.0217732,0,25.4,0,-25.4\n0,5.376672,10.1297486,0,25.4,0,-25.4\n0,4.662805,10.3085646,0,25.4,0,-25.4\n0,3.969893,10.556494,0,25.4,0,-25.4\n0,3.3046416,10.8711492,0,25.4,0,-25.4\n0,2.6734008,11.2494822,0,25.4,0,-25.4\n0,2.0823174,11.6878608,0,25.4,0,-25.4\n0,1.5370302,12.1820686,0,25.4,0,-25.4\n0,1.0428224,12.7273558,0,25.4,0,-25.4\n0,0.6044184,13.3184646,0,25.4,0,-25.4\n0,0.2260854,13.94968,0,25.4,0,-25.4\n0,13.7678668,20.3544678,0,25.4,0,-25.4\n0,14.0157962,19.6615558,0,25.4,0,-25.4\n0,14.1946122,18.9476888,0,25.4,0,-25.4\n0,14.3025876,18.2197502,0,25.4,0,-25.4\n0,14.3387064,17.4846996,0,25.4,0,-25.4\n0,25.3114302,14.6149568,0,25.4,0,-25.4\n0,25.0635262,15.3078434,0,25.4,0,-25.4\n0,24.8847102,16.0217104,0,25.4,0,-25.4\n0,24.7767094,16.7496744,0,25.4,0,-25.4\n0,24.740616,17.4846996,0,25.4,0,-25.4\n0,24.7767094,18.2197502,0,25.4,0,-25.4\n0,24.8847102,18.9476888,0,25.4,0,-25.4\n0,25.0635262,19.6615558,0,25.4,0,-25.4\n0,25.3114302,20.3544678,0,25.4,0,-25.4\n0,24.090884,18.4701434,0,25.4,0,-25.4\n0,23.984585,17.9130198,0,25.4,0,-25.4\n0,23.809325,17.3736,0,25.4,0,-25.4\n0,23.5678472,16.860393,0,25.4,0,-25.4\n0,23.2639362,16.3815014,0,25.4,0,-25.4\n0,22.9023926,15.9444944,0,25.4,0,-25.4\n0,22.4889314,15.55623,0,25.4,0,-25.4\n0,22.0300804,15.222855,0,25.4,0,-25.4\n0,21.5330532,14.9496018,0,25.4,0,-25.4\n0,21.0056984,14.7408138,0,25.4,0,-25.4\n0,20.4563472,14.5997676,0,25.4,0,-25.4\n0,19.8936356,14.528673,0,25.4,0,-25.4\n0,19.3264536,14.528673,0,25.4,0,-25.4\n0,18.7637674,14.5997676,0,25.4,0,-25.4\n0,15.6522674,21.2120226,0,25.4,0,-25.4\n0,15.9561784,21.6908888,0,25.4,0,-25.4\n0,16.317722,22.1279212,0,25.4,0,-25.4\n0,16.7311578,22.5161856,0,25.4,0,-25.4\n0,17.1900342,22.8495606,0,25.4,0,-25.4\n0,17.687036,23.1227884,0,25.4,0,-25.4\n0,18.2143908,23.3315764,0,25.4,0,-25.4\n0,18.7637674,23.472648,0,25.4,0,-25.4\n0,19.3264536,23.5437172,0,25.4,0,-25.4\n0,19.8936356,23.5437172,0,25.4,0,-25.4\n0,20.4563472,23.472648,0,25.4,0,-25.4\n0,21.0056984,23.3315764,0,25.4,0,-25.4\n0,21.5330532,23.1227884,0,25.4,0,-25.4\n0,22.0300804,22.8495606,0,25.4,0,-25.4\n0,22.4889314,22.5161856,0,25.4,0,-25.4\n0,22.9023926,22.1279212,0,25.4,0,-25.4\n0,23.2639362,21.6908888,0,25.4,0,-25.4\n0,23.5678472,21.2120226,0,25.4,0,-25.4\n0,23.809325,20.6988156,0,25.4,0,-25.4\n0,23.984585,20.1593958,0,25.4,0,-25.4\n0,24.090884,19.6022722,0,25.4,0,-25.4\n0,24.1264948,19.0362078,0,25.4,0,-25.4\n0,24.5626128,6.3729108,0,25.4,0,-25.4\n0,24.469344,5.7441084,0,25.4,0,-25.4\n0,24.3148866,5.127498,0,25.4,0,-25.4\n0,24.1007392,4.5289978,0,25.4,0,-25.4\n0,23.8289592,3.9543482,0,25.4,0,-25.4\n0,23.5021628,3.4091372,0,25.4,0,-25.4\n0,23.1234996,2.8985464,0,25.4,0,-25.4\n0,22.6966018,2.4275542,0,25.4,0,-25.4\n0,22.2256096,2.0006564,0,25.4,0,-25.4\n0,21.7150442,1.6219932,0,25.4,0,-25.4\n0,21.1698078,1.2951968,0,25.4,0,-25.4\n0,20.5951836,1.0234168,0,25.4,0,-25.4\n0,19.996658,0.8092694,0,25.4,0,-25.4\n0,19.3800476,0.654812,0,25.4,0,-25.4\n0,18.7512706,0.5615432,0,25.4,0,-25.4\n0,18.7512706,13.4540752,0,25.4,0,-25.4\n0,19.3800476,13.3608064,0,25.4,0,-25.4\n0,19.996658,13.206349,0,25.4,0,-25.4\n0,20.5951836,12.9922016,0,25.4,0,-25.4\n0,21.1698078,12.7204216,0,25.4,0,-25.4\n0,21.7150442,12.3936252,0,25.4,0,-25.4\n0,22.2256096,12.0149366,0,25.4,0,-25.4\n0,22.6966018,11.5880642,0,25.4,0,-25.4\n0,23.1234996,11.117072,0,25.4,0,-25.4\n0,23.5021628,10.6064812,0,25.4,0,-25.4\n0,23.8289592,10.0612702,0,25.4,0,-25.4\n0,24.1007392,9.4866206,0,25.4,0,-25.4\n0,24.3148866,8.8881204,0,25.4,0,-25.4\n0,24.469344,8.2714846,0,25.4,0,-25.4\n0,24.5626128,7.6427076,0,25.4,0,-25.4\n0,24.593804,7.0078092,0,25.4,0,-25.4\n0,12.6365,22.2420434,0,25.4,0,-25.4\n0,13.0748786,21.65096,0,25.4,0,-25.4\n0,13.453237,21.0197446,0,25.4,0,-25.4\n0,0.2260854,21.0197446,0,25.4,0,-25.4\n0,0.6044184,21.65096,0,25.4,0,-25.4\n0,1.0428224,22.2420434,0,25.4,0,-25.4\n0,1.5370302,22.7873306,0,25.4,0,-25.4\n0,2.0823174,23.2815638,0,25.4,0,-25.4\n0,2.6734008,23.7199424,0,25.4,0,-25.4\n0,3.3046416,24.0982754,0,25.4,0,-25.4\n0,3.969893,24.4129306,0,25.4,0,-25.4\n0,4.662805,24.66086,0,25.4,0,-25.4\n0,5.376672,24.839676,0,25.4,0,-25.4\n0,6.1046106,24.9476514,0,25.4,0,-25.4\n0,6.8396612,24.9837448,0,25.4,0,-25.4\n0,7.5746864,24.9476514,0,25.4,0,-25.4\n0,8.3026504,24.839676,0,25.4,0,-25.4\n0,9.0165174,24.66086,0,25.4,0,-25.4\n0,9.7094294,24.4129306,0,25.4,0,-25.4\n0,10.3746808,24.0982754,0,25.4,0,-25.4\n0,11.0058962,23.7199424,0,25.4,0,-25.4\n0,11.597005,23.2815638,0,25.4,0,-25.4\n0,12.1422922,22.7873306,0,25.4,0,-25.4\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CELTIC-01,CELTIC PATTERN 01\n;By John Hyslop\n;Developed in mm as Metric QCAD3 pattern\n135,9.144,10.72444439,17.96051221,17.96051221,2.235085954,-33.68593847\n135,10.72444439,9.934222194,17.96051221,17.96051221,6.565564974,-29.35545945\n315,9.934222194,14.67555561,17.96051221,17.96051221,2.235085954,-33.68593847\n315,7.662333418,16.15722219,17.96051221,17.96051221,6.565564974,-29.35545945\n225,19.31811122,10.82322219,17.96051221,17.96051221,2.235085954,-33.68593847\n225,21.98511122,12.7,17.96051221,17.96051221,7.124336526,-28.7966879\n225,21.68877781,8.452555612,17.96051221,17.96051221,2.235085954,-33.68593847\n225,25.146,12.7,17.96051221,17.96051221,9.35942248,-26.56160194\n225,19.31811122,18.52788878,17.96051221,17.96051221,2.235085954,-33.68593847\n225,21.68877781,16.15722219,17.96051221,17.96051221,2.235085954,-33.68593847\n90,25.146,22.91091405,0,25.4,2.235085954,-23.16491405\n0,22.91091405,22.35214249,0,25.4,2.235085954,-23.16491405\n0,21.33046966,22.91091405,0,25.4,3.815530342,-21.58446966\n0,20.40466658,25.146,0,25.4,4.741333418,-20.65866658\n90,22.91091405,21.33046966,0,25.4,1.021672836,-24.37832716\n90,25.146,20.40466658,0,25.4,1.947475912,-23.45252409\n180,2.489085954,25.146,0,25.4,2.235085954,-23.16491405\n90,3.047857506,22.91091405,0,25.4,2.235085954,-23.16491405\n90,2.489085954,21.33046966,0,25.4,3.815530342,-21.58446966\n90,0.254,20.40466658,0,25.4,4.741333418,-20.65866658\n180,4.069530342,22.91091405,0,25.4,1.021672836,-24.37832716\n180,4.995333418,25.146,0,25.4,1.947475912,-23.45252409\n270,0.254,2.489085954,0,25.4,2.235085954,-23.16491405\n180,2.489085954,3.047857506,0,25.4,2.235085954,-23.16491405\n180,4.069530342,2.489085954,0,25.4,3.815530342,-21.58446966\n180,4.995333418,0.254,0,25.4,4.741333418,-20.65866658\n270,2.489085954,4.069530342,0,25.4,1.021672836,-24.37832716\n270,0.254,4.995333418,0,25.4,1.947475912,-23.45252409\n45,17.83644439,13.09511122,17.96051221,17.96051221,10.3372727,-25.58375198\n45,13.09511122,7.563555612,17.96051221,17.96051221,2.235085954,-33.68593847\n45,10.82322219,6.081888776,17.96051221,17.96051221,6.565564974,-29.35545945\n45,4.995333418,0.254,17.96051221,17.96051221,4.889250572,-31.03177385\n45,16.256,14.67555561,17.96051221,17.96051221,9.41146962,-26.5095548\n45,10.72444439,9.934222194,17.96051221,17.96051221,2.235085954,-33.68593847\n45,9.242777806,7.662333418,17.96051221,17.96051221,6.565564974,-29.35545945\n45,4.069530342,2.489085954,17.96051221,17.96051221,3.96344775,-31.95757693\n45,16.94744439,21.68877781,17.96051221,17.96051221,4.889250572,-31.03177385\n45,10.72444439,16.256,17.96051221,17.96051221,2.235085954,-33.68593847\n45,3.711222194,9.242777806,17.96051221,17.96051221,2.235085954,-33.68593847\n45,9.934222194,14.67555561,17.96051221,17.96051221,6.565564974,-29.35545945\n45,0.254,4.995333418,17.96051221,17.96051221,10.3372727,-25.58375198\n45,18.52788878,20.10833342,17.96051221,17.96051221,3.96344775,-31.95757693\n45,6.081888776,6.872111224,17.96051221,17.96051221,2.235085954,-33.68593847\n45,13.09511122,13.88533342,17.96051221,17.96051221,2.235085954,-33.68593847\n45,11.51466658,13.09511122,17.96051221,17.96051221,6.565564974,-29.35545945\n45,2.489085954,4.069530342,17.96051221,17.96051221,9.41146962,-26.5095548\n0,22.91091405,0.254,0,25.4,2.235085954,-23.16491405\n135,17.83644439,13.09511122,17.96051221,17.96051221,2.235085954,-33.68593847\n135,10.82322219,20.10833342,17.96051221,17.96051221,2.235085954,-33.68593847\n135,12.30488878,17.83644439,17.96051221,17.96051221,10.3372727,-25.58375198\n135,19.31811122,10.82322219,17.96051221,17.96051221,6.565564974,-29.35545945\n135,25.146,4.995333418,17.96051221,17.96051221,4.889250572,-31.03177385\n135,8.452555612,17.73766658,17.96051221,17.96051221,2.235085954,-33.68593847\n135,10.72444439,16.256,17.96051221,17.96051221,9.41146962,-26.5095548\n135,15.46577781,10.72444439,17.96051221,17.96051221,2.235085954,-33.68593847\n135,17.73766658,9.242777806,17.96051221,17.96051221,6.565564974,-29.35545945\n135,22.91091405,4.069530342,17.96051221,17.96051221,3.96344775,-31.95757693\n135,16.15722219,3.711222194,17.96051221,17.96051221,2.235085954,-33.68593847\n135,3.711222194,16.94744439,17.96051221,17.96051221,4.889250572,-31.03177385\n135,20.40466658,0.254,17.96051221,17.96051221,10.3372727,-25.58375198\n135,18.52788878,6.081888776,17.96051221,17.96051221,2.235085954,-33.68593847\n135,5.291666582,18.52788878,17.96051221,17.96051221,3.96344775,-31.95757693\n135,21.33046966,2.489085954,17.96051221,17.96051221,9.41146962,-26.5095548\n270,22.35214249,2.489085954,0,25.4,2.235085954,-23.16491405\n270,22.91091405,4.069530342,0,25.4,3.815530342,-21.58446966\n270,25.146,4.995333418,0,25.4,4.741333418,-20.65866658\n0,21.33046966,2.489085954,0,25.4,1.021672836,-24.37832716\n0,20.40466658,0.254,0,25.4,1.947475912,-23.45252409\n135,25.146,12.7,17.96051221,17.96051221,4.889250572,-31.03177385\n45,12.7,0.254,17.96051221,17.96051221,4.889250572,-31.03177385\n315,6.872111224,5.291666582,17.96051221,17.96051221,2.235085954,-33.68593847\n315,6.081888776,6.872111224,17.96051221,17.96051221,9.35942248,-26.56160194\n315,0.254,12.7,17.96051221,17.96051221,4.889250572,-31.03177385\n225,5.291666582,18.52788878,17.96051221,17.96051221,2.235085954,-33.68593847\n225,6.872111224,19.31811122,17.96051221,17.96051221,9.35942248,-26.56160194\n225,12.7,25.146,17.96051221,17.96051221,4.889250572,-31.03177385\n135,18.52788878,20.10833342,17.96051221,17.96051221,2.235085954,-33.68593847\n135,19.31811122,18.52788878,17.96051221,17.96051221,9.35942248,-26.56160194\n135,21.98511122,12.7,17.96051221,17.96051221,2.654164618,-33.26685981\n45,12.7,3.414888776,17.96051221,17.96051221,2.654164618,-33.26685981\n315,9.242777806,7.662333418,17.96051221,17.96051221,2.235085954,-33.68593847\n315,7.662333418,8.452555612,17.96051221,17.96051221,7.124336526,-28.7966879\n315,3.414888776,12.7,17.96051221,17.96051221,2.654164618,-33.26685981\n225,7.662333418,16.15722219,17.96051221,17.96051221,2.235085954,-33.68593847\n225,8.452555612,17.73766658,17.96051221,17.96051221,7.124336526,-28.7966879\n225,12.7,21.98511122,17.96051221,17.96051221,2.654164618,-33.26685981\n135,16.15722219,17.73766658,17.96051221,17.96051221,2.235085954,-33.68593847\n135,17.73766658,16.94744439,17.96051221,17.96051221,7.124336526,-28.7966879\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CELTIC-02,CELTIC PATTERN 02\n;By John Hyslop\n;Developed in mm as Metric QCAD3 pattern,,,,,,\n180,11.1371634,0.392662664,0,25.4,3.125672946,-22.27432705\n270,25.00733734,11.1371634,0,25.4,3.125672946,-22.27432705\n270,0.392662664,17.38850955,0,25.4,3.125672946,-22.27432705\n180,17.38850955,25.00733734,0,25.4,3.125672946,-22.27432705\n90,25.00733734,11.9185817,0,25.4,13.08875564,-12.31124436\n270,25.00733734,7.230072408,0,25.4,6.837409744,-18.56259026\n180,11.1371634,7.230072408,0,25.4,3.125672946,-22.27432705\n180,13.4814183,8.011490454,0,25.4,9.18166439,-16.21833561\n0,8.011490454,11.9185817,0,25.4,3.125672946,-22.27432705\n0,4.29975391,11.1371634,0,25.4,9.18166439,-16.21833561\n270,21.10024609,17.38850955,0,25.4,3.125672946,-22.27432705\n270,21.88166439,21.88166439,0,25.4,9.96308269,-15.43691731\n270,13.4814183,25.00733734,0,25.4,3.125672946,-22.27432705\n270,18.16992759,25.00733734,0,25.4,3.125672946,-22.27432705\n90,17.38850955,18.16992759,0,25.4,6.837409744,-18.56259026\n90,18.16992759,8.011490454,0,25.4,3.125672946,-22.27432705\n90,17.38850955,4.29975391,0,25.4,9.18166439,-16.21833561\n90,14.2628366,18.16992759,0,25.4,6.837409744,-18.56259026\n90,13.4814183,8.011490454,0,25.4,3.125672946,-22.27432705\n90,14.2628366,4.29975391,0,25.4,9.18166439,-16.21833561\n90,7.230072408,14.2628366,0,25.4,3.125672946,-22.27432705\n90,7.230072408,0.392662664,0,25.4,3.125672946,-22.27432705\n90,8.011490454,11.9185817,0,25.4,9.18166439,-16.21833561\n90,8.011490454,0.392662664,0,25.4,6.837409744,-18.56259026\n90,11.9185817,0.392662664,0,25.4,3.125672946,-22.27432705\n90,11.9185817,14.2628366,0,25.4,3.125672946,-22.27432705\n90,11.1371634,11.9185817,0,25.4,9.18166439,-16.21833561\n90,11.1371634,0.392662664,0,25.4,6.837409744,-18.56259026\n180,17.38850955,18.16992759,0,25.4,3.125672946,-22.27432705\n180,3.51833561,18.16992759,0,25.4,3.125672946,-22.27432705\n180,7.230072408,17.38850955,0,25.4,6.837409744,-18.56259026\n180,21.10024609,17.38850955,0,25.4,9.18166439,-16.21833561\n180,3.51833561,13.4814183,0,25.4,3.125672946,-22.27432705\n180,7.230072408,14.2628366,0,25.4,6.837409744,-18.56259026\n180,17.38850955,13.4814183,0,25.4,3.125672946,-22.27432705\n180,21.10024609,14.2628366,0,25.4,9.18166439,-16.21833561\n180,25.00733734,7.230072408,0,25.4,3.125672946,-22.27432705\n180,25.00733734,8.011490454,0,25.4,6.837409744,-18.56259026\n180,25.00733734,11.9185817,0,25.4,3.125672946,-22.27432705\n180,25.00733734,11.1371634,0,25.4,6.837409744,-18.56259026\n180,25.00733734,25.00733734,0,25.4,6.837409744,-18.56259026\n0,11.9185817,0.392662664,0,25.4,13.08875564,-12.31124436\n0,0.392662664,0.392662664,0,25.4,6.837409744,-18.56259026\n270,0.392662664,13.4814183,0,25.4,13.08875564,-12.31124436\n270,0.392662664,25.00733734,0,25.4,6.837409744,-18.56259026\n180,13.4814183,25.00733734,0,25.4,13.08875564,-12.31124436\n180,21.88166439,21.88166439,0,25.4,3.711736544,-21.68826346\n90,21.88166439,3.51833561,0,25.4,3.711736544,-21.68826346\n0,14.2628366,4.29975391,0,25.4,3.125672946,-22.27432705\n0,11.9185817,3.51833561,0,25.4,9.96308269,-15.43691731\n0,3.51833561,3.51833561,0,25.4,3.711736544,-21.68826346\n270,4.29975391,11.1371634,0,25.4,3.125672946,-22.27432705\n270,3.51833561,13.4814183,0,25.4,9.96308269,-15.43691731\n270,3.51833561,21.88166439,0,25.4,3.711736544,-21.68826346\n180,11.1371634,21.10024609,0,25.4,3.125672946,-22.27432705\n180,13.4814183,21.88166439,0,25.4,9.96308269,-15.43691731\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CELTIC-03,CELTIC-03\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in inch as imperial QCAD3 pattern\n90,6.35,13.97,0,25.4,5.08,-20.32\n90,19.05,6.35,0,25.4,5.08,-20.32\n0,6.35,6.35,0,25.4,12.7,-12.7\n270,6.35,11.43,0,25.4,5.08,-20.32\n90,3.81,3.81,0,25.4,7.62,-17.78\n180,21.59,3.81,0,25.4,17.78,-7.62\n270,21.59,11.43,0,25.4,7.62,-17.78\n270,21.59,21.59,0,25.4,7.62,-17.78\n0,3.81,21.59,0,25.4,17.78,-7.62\n90,3.81,13.97,0,25.4,7.62,-17.78\n270,19.05,19.05,0,25.4,5.08,-20.32\n0,6.35,19.05,0,25.4,12.7,-12.7\n90,13.97,6.35,0,25.4,12.7,-12.7\n90,11.43,6.35,0,25.4,12.7,-12.7\n270,13.97,3.81,0,25.4,7.62,-17.78\n90,11.43,-3.81,0,25.4,7.62,-17.78\n180,11.43,11.43,0,25.4,22.86,-2.54\n0,-11.43,13.97,0,25.4,22.86,-2.54\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CELTIC-04,CELTIC-04\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in mm as metric QCAD3 pattern\n45,3.81,13.97,17.960512212,17.960512212,12.57235865,-23.348666028\n135,21.59,13.97,17.960512212,17.960512212,12.57235865,-23.348666028\n45,12.7,2.54,17.960512212,17.960512212,12.57235865,-23.348666028\n315,3.81,11.43,17.960512212,17.960512212,12.57235865,-23.348666028\n135,12.7,5.08,17.960512212,17.960512212,8.980256106,-26.940768318\n225,19.05,11.43,17.960512212,17.960512212,8.980256106,-26.940768318\n315,12.7,20.32,17.960512212,17.960512212,8.980256106,-26.940768318\n45,6.35,13.97,17.960512212,17.960512212,8.980256106,-26.940768318\n90,13.97,6.35,0,25.4,12.7,-12.7\n90,11.43,6.35,0,25.4,12.7,-12.7\n270,13.97,3.81,0,25.4,7.62,-17.78\n90,11.43,-3.81,0,25.4,7.62,-17.78\n180,11.43,11.43,0,25.4,22.86,-2.54\n0,-11.43,13.97,0,25.4,22.86,-2.54\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CIRCLES-02,CIRCLES-02\n;By John Hyslop\n;Developed in mm as Metric QCAD3 pattern\n0,24.3609368,11.9663464,0,25.4,0,-25.4\n0,24.2918742,11.2356138,0,25.4,0,-25.4\n0,24.1770408,10.510647,0,25.4,0,-25.4\n0,24.0169192,9.7943162,0,25.4,0,-25.4\n0,23.8121444,9.0894408,0,25.4,0,-25.4\n0,23.5635038,8.3988402,0,25.4,0,-25.4\n0,23.271988,7.7252068,0,25.4,0,-25.4\n0,22.9387654,7.0711822,0,25.4,0,-25.4\n0,22.5651314,6.439408,0,25.4,0,-25.4\n0,22.1525592,5.8323226,0,25.4,0,-25.4\n0,21.7026744,5.252339,0,25.4,0,-25.4\n0,21.2172804,4.7017432,0,25.4,0,-25.4\n0,20.6982568,4.1827196,0,25.4,0,-25.4\n0,20.147661,3.6973256,0,25.4,0,-25.4\n0,19.5676774,3.2474408,0,25.4,0,-25.4\n0,18.960592,2.8348686,0,25.4,0,-25.4\n0,18.3288178,2.4612346,0,25.4,0,-25.4\n0,17.6747932,2.128012,0,25.4,0,-25.4\n0,17.0011598,1.8364962,0,25.4,0,-25.4\n0,16.3105592,1.5878556,0,25.4,0,-25.4\n0,15.6056838,1.3830808,0,25.4,0,-25.4\n0,14.889353,1.2229592,0,25.4,0,-25.4\n0,14.1643862,1.1081258,0,25.4,0,-25.4\n0,13.4336536,1.0390632,0,25.4,0,-25.4\n0,12.7,1.016,0,25.4,0,-25.4\n0,11.9663464,1.0390632,0,25.4,0,-25.4\n0,11.2356138,1.1081258,0,25.4,0,-25.4\n0,10.510647,1.2229592,0,25.4,0,-25.4\n0,9.7943162,1.3830808,0,25.4,0,-25.4\n0,9.0894408,1.5878556,0,25.4,0,-25.4\n0,8.3988402,1.8364962,0,25.4,0,-25.4\n0,7.7252068,2.128012,0,25.4,0,-25.4\n0,7.0711822,2.4612346,0,25.4,0,-25.4\n0,6.439408,2.8348686,0,25.4,0,-25.4\n0,5.8323226,3.2474408,0,25.4,0,-25.4\n0,5.252339,3.6973256,0,25.4,0,-25.4\n0,4.7017432,4.1827196,0,25.4,0,-25.4\n0,4.1827196,4.7017432,0,25.4,0,-25.4\n0,3.6973256,5.252339,0,25.4,0,-25.4\n0,3.2474408,5.8323226,0,25.4,0,-25.4\n0,2.8348686,6.439408,0,25.4,0,-25.4\n0,2.4612346,7.0711822,0,25.4,0,-25.4\n0,2.128012,7.7252068,0,25.4,0,-25.4\n0,1.8364962,8.3988402,0,25.4,0,-25.4\n0,1.5878556,9.0894408,0,25.4,0,-25.4\n0,1.3830808,9.7943162,0,25.4,0,-25.4\n0,1.2229592,10.510647,0,25.4,0,-25.4\n0,1.1081258,11.2356138,0,25.4,0,-25.4\n0,1.0390632,11.9663464,0,25.4,0,-25.4\n0,1.016,12.7,0,25.4,0,-25.4\n0,1.0390632,13.4336536,0,25.4,0,-25.4\n0,1.1081258,14.1643862,0,25.4,0,-25.4\n0,1.2229592,14.889353,0,25.4,0,-25.4\n0,1.3830808,15.6056838,0,25.4,0,-25.4\n0,1.5878556,16.3105592,0,25.4,0,-25.4\n0,1.8364962,17.0011598,0,25.4,0,-25.4\n0,2.128012,17.6747932,0,25.4,0,-25.4\n0,2.4612346,18.3288178,0,25.4,0,-25.4\n0,2.8348686,18.960592,0,25.4,0,-25.4\n0,3.2474408,19.5676774,0,25.4,0,-25.4\n0,3.6973256,20.147661,0,25.4,0,-25.4\n0,4.1827196,20.6982568,0,25.4,0,-25.4\n0,4.7017432,21.2172804,0,25.4,0,-25.4\n0,5.252339,21.7026744,0,25.4,0,-25.4\n0,5.8323226,22.1525592,0,25.4,0,-25.4\n0,6.439408,22.5651314,0,25.4,0,-25.4\n0,7.0711822,22.9387654,0,25.4,0,-25.4\n0,7.7252068,23.271988,0,25.4,0,-25.4\n0,8.3988402,23.5635038,0,25.4,0,-25.4\n0,9.0894408,23.8121444,0,25.4,0,-25.4\n0,9.7943162,24.0169192,0,25.4,0,-25.4\n0,10.510647,24.1770408,0,25.4,0,-25.4\n0,11.2356138,24.2918742,0,25.4,0,-25.4\n0,11.9663464,24.3609368,0,25.4,0,-25.4\n0,12.7,24.384,0,25.4,0,-25.4\n0,13.4336536,24.3609368,0,25.4,0,-25.4\n0,14.1643862,24.2918742,0,25.4,0,-25.4\n0,14.889353,24.1770408,0,25.4,0,-25.4\n0,15.6056838,24.0169192,0,25.4,0,-25.4\n0,16.3105592,23.8121444,0,25.4,0,-25.4\n0,17.0011598,23.5635038,0,25.4,0,-25.4\n0,17.6747932,23.271988,0,25.4,0,-25.4\n0,18.3288178,22.9387654,0,25.4,0,-25.4\n0,18.960592,22.5651314,0,25.4,0,-25.4\n0,19.5676774,22.1525592,0,25.4,0,-25.4\n0,20.147661,21.7026744,0,25.4,0,-25.4\n0,20.6982568,21.2172804,0,25.4,0,-25.4\n0,21.2172804,20.6982568,0,25.4,0,-25.4\n0,21.7026744,20.147661,0,25.4,0,-25.4\n0,22.1525592,19.5676774,0,25.4,0,-25.4\n0,22.5651314,18.960592,0,25.4,0,-25.4\n0,22.9387654,18.3288178,0,25.4,0,-25.4\n0,23.271988,17.6747932,0,25.4,0,-25.4\n0,23.5635038,17.0011598,0,25.4,0,-25.4\n0,23.8121444,16.3105592,0,25.4,0,-25.4\n0,24.0169192,15.6056838,0,25.4,0,-25.4\n0,24.1770408,14.889353,0,25.4,0,-25.4\n0,24.2918742,14.1643862,0,25.4,0,-25.4\n0,24.3609368,13.4336536,0,25.4,0,-25.4\n0,24.384,12.7,0,25.4,0,-25.4\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CIRCLES,CIRCLES\n;By John Hyslop\n;Developed in mm as Metric QCAD3 pattern\n0,23.7384082,10.9516926,0,25.4,0,-25.4\n0,23.329011,9.2464382,0,25.4,0,-25.4\n0,22.6578922,7.6261976,0,25.4,0,-25.4\n0,21.7415618,6.1308996,0,25.4,0,-25.4\n0,20.6026258,4.7973742,0,25.4,0,-25.4\n0,19.2691004,3.6584382,0,25.4,0,-25.4\n0,17.7738024,2.7421078,0,25.4,0,-25.4\n0,16.1535618,2.070989,0,25.4,0,-25.4\n0,14.4483074,1.6615918,0,25.4,0,-25.4\n0,12.7,1.524,0,25.4,0,-25.4\n0,10.9516926,1.6615918,0,25.4,0,-25.4\n0,9.2464382,2.070989,0,25.4,0,-25.4\n0,7.6261976,2.7421078,0,25.4,0,-25.4\n0,6.1308996,3.6584382,0,25.4,0,-25.4\n0,4.7973742,4.7973742,0,25.4,0,-25.4\n0,3.6584382,6.1308996,0,25.4,0,-25.4\n0,2.7421078,7.6261976,0,25.4,0,-25.4\n0,2.070989,9.2464382,0,25.4,0,-25.4\n0,1.6615918,10.9516926,0,25.4,0,-25.4\n0,1.524,12.7,0,25.4,0,-25.4\n0,1.6615918,14.4483074,0,25.4,0,-25.4\n0,2.070989,16.1535618,0,25.4,0,-25.4\n0,2.7421078,17.7738024,0,25.4,0,-25.4\n0,3.6584382,19.2691004,0,25.4,0,-25.4\n0,4.7973742,20.6026258,0,25.4,0,-25.4\n0,6.1308996,21.7415618,0,25.4,0,-25.4\n0,7.6261976,22.6578922,0,25.4,0,-25.4\n0,9.2464382,23.329011,0,25.4,0,-25.4\n0,10.9516926,23.7384082,0,25.4,0,-25.4\n0,12.7,23.876,0,25.4,0,-25.4\n0,14.4483074,23.7384082,0,25.4,0,-25.4\n0,16.1535618,23.329011,0,25.4,0,-25.4\n0,17.7738024,22.6578922,0,25.4,0,-25.4\n0,19.2691004,21.7415618,0,25.4,0,-25.4\n0,20.6026258,20.6026258,0,25.4,0,-25.4\n0,21.7415618,19.2691004,0,25.4,0,-25.4\n0,22.6578922,17.7738024,0,25.4,0,-25.4\n0,23.329011,16.1535618,0,25.4,0,-25.4\n0,23.7384082,14.4483074,0,25.4,0,-25.4\n0,23.876,12.7,0,25.4,0,-25.4\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CLAY,CLAY\n0, 0,0, 0,4.7625\n0, 0,.79375, 0,4.7625\n0, 0,1.5875, 0,4.7625\n0, 0,3.175, 0,4.7625, 4.7625,-3.175\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CORK,CORK\n0, 0,0, 0,3.175\n135, 1.5875,-1.5875, 0,8.98026, 4.49013,-4.49013\n135, 2.38125,-1.5875, 0,8.98026, 4.49013,-4.49013\n135, 3.175,-1.5875, 0,8.98026, 4.49013,-4.49013\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CROSS,CROSS\n0, 0,0, 6.35,6.35, 3.175,-9.525\n90, 1.5875,-1.5875, 6.35,6.35, 3.175,-9.525\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*DASH,DASH\n0, 0,0, 3.175,3.175, 3.175,-3.175\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*DOLMIT,DOLMIT\n0, 0,0, 0,6.35\n45, 0,0, 0,17.9605, 8.98026,-17.9605\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*DOTS,DOTS\n0, 0,0, .79375,1.5875, 0,-1.5875\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*EARTH,EARTH\n0, 0,0, 6.35,6.35, 6.35,-6.35\n0, 0,2.38125, 6.35,6.35, 6.35,-6.35\n0, 0,4.7625, 6.35,6.35, 6.35,-6.35\n90, .79375,5.55625, 6.35,6.35, 6.35,-6.35\n90, 3.175,5.55625, 6.35,6.35, 6.35,-6.35\n90, 5.55625,5.55625, 6.35,6.35, 6.35,-6.35\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ESCHER,ESCHER\n60, 0,0, -15.24,26.3965, 27.94,-2.54\n180, 0,0, -15.24,26.3965, 27.94,-2.54\n300, 0,0, 15.24,26.3965, 27.94,-2.54\n60, 2.54,0, -15.24,26.3965, 5.08,-25.4\n300, 2.54,0, 15.24,26.3965, 5.08,-25.4\n60, -1.27,2.1997, -15.24,26.3965, 5.08,-25.4\n180, -1.27,2.1997, -15.24,26.3965, 5.08,-25.4\n300, -1.27,-2.1997, 15.24,26.3965, 5.08,-25.4\n180, -1.27,-2.1997, -15.24,26.3965, 5.08,-25.4\n60, -10.16,0, -15.24,26.3965, 5.08,-25.4\n300, -10.16,0, 15.24,26.3965, 5.08,-25.4\n60, 5.08,-8.79882, -15.24,26.3965, 5.08,-25.4\n180, 5.08,-8.79882, -15.24,26.3965, 5.08,-25.4\n300, 5.08,8.79882, 15.24,26.3965, 5.08,-25.4\n180, 5.08,8.79882, -15.24,26.3965, 5.08,-25.4\n0, 5.08,4.39941, -15.24,26.3965, 17.78,-12.7\n0, 5.08,-4.39941, -15.24,26.3965, 17.78,-12.7\n120, 1.27,6.59911, 15.24,26.3965, 17.78,-12.7\n120, -6.35,2.1997, 15.24,26.3965, 17.78,-12.7\n240, -6.35,-2.1997, 15.24,26.3965, 17.78,-12.7\n240, 1.27,-6.59911, 15.24,26.3965, 17.78,-12.7\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*EXPLOSION,EXPLOSION\n;By John Hyslop\n;Developed in mm as Metric QCAD3 pattern\n270,11.43,2.794,0,25.4,2.794,-22.606\n143.130102,12.446,2.032,91.44,5.08,1.27,-125.73\n270,12.446,4.318,0,25.4,2.286,-23.114\n112.380135,14.224,0,330.1971097,1.381577882,4.669733104,-462.3035852\n75.256437,12.954,20.574,104.7189028,1.292825964,4.990308282,-494.0405126\n287.525568,11.43,25.4,80.31173574,1.274789424,5.060914186,-501.0305006\n135,1.524,12.446,17.96051221,17.96051221,2.155261374,-33.76576305\n26.565051,0,11.684,34.07767607,11.35922544,1.703883816,-55.09224288\n353.884496,18.288,12.446,485.2654803,0.901980416,7.152705024,-708.1177892\n192.094757,25.4,13.97,234.1697095,1.774012962,7.273453068,-356.3992019\n3.691386,17.526,9.652,381.8448525,0.817654956,7.890370046,-781.1466379\n136.080924,24.384,3.048,916.1619403,0.677634662,9.52076582,-942.5558068\n336.037511,22.098,4.064,193.4234445,2.578979348,2.501609932,-247.6593782\n123.690068,24.638,0.254,35.22346245,7.04469254,4.579050024,-87.00195223\n324.462322,15.748,6.604,91.53339072,2.952690056,10.924953,-207.5741086\n117.645975,18.542,1.27,545.3600756,1.07143423,6.021460906,-596.1246343\n326.309932,13.97,4.318,56.35753981,7.04469254,5.494860232,-86.08614228\n106.38954,15.24,0,265.1799113,1.433404804,4.50089143,-445.5882554\n153.434949,3.048,8.636,22.71845063,11.35922544,3.407767632,-53.38835906\n64.798876,1.016,4.318,420.4426387,1.351905602,4.772226676,-472.4504468\n202.619865,4.064,5.588,193.4307693,1.953846232,3.302,-326.898\n59.036243,2.54,3.048,56.62883289,4.356064186,2.962123616,-145.1440546\n211.75948,7.874,6.35,239.620914,1.028416028,6.273337212,-621.0603858\n79.215702,6.858,1.016,413.4803361,1.188161962,5.429899732,-537.5600816\n212.471192,9.652,2.794,91.56028043,1.9480911,3.31175487,-327.8637273\n63.434949,8.89,1.27,22.71845063,11.35922544,1.703883816,-55.09224288\n135,10.16,0,17.96051221,17.96051221,1.796051272,-34.12497315\n74.357754,8.382,19.05,474.5101503,0.978371424,6.59422354,-652.8281297\n333.434949,0.762,22.86,22.71845063,11.35922544,8.51941908,-48.27670761\n110.556045,4.572,12.7,136.7508764,2.97284521,10.85088483,-206.1668104\n330.945396,0,15.24,56.74251999,2.467066186,5.23018004,-256.2788255\n99.462322,16.002,20.828,129.4477627,4.175734346,4.635065152,-149.8671031\n222.70939,19.304,23.876,35.89232217,1.435692836,4.493718724,-444.8781539\n74.744881,18.542,21.082,104.7031863,2.22772732,2.896045516,-286.7085124\n208.61046,24.13,24.13,261.5011486,2.027140726,6.365221712,-311.8958659\n62.744672,19.812,15.748,56.79200478,0.684240948,9.428841188,-933.4552873\n212.275644,24.638,18.796,331.1735533,1.130285268,5.70794007,-565.0860682\n55.00798,22.86,16.256,91.55735943,2.080849026,3.100465224,-306.9460475\n158.198591,25.4,15.24,80.18324705,4.716661636,2.73566382,-134.0475224\n51.911227,14.986,12.954,741.8363621,0.540303212,11.9407018,-1182.12948\n153.434949,16.51,12.192,22.71845063,11.35922544,1.703883816,-55.09224288\n35.537678,14.732,10.922,126.9656711,2.952690056,2.18499055,-216.3140711\n129.289407,19.304,5.334,198.3722919,1.78713765,7.220036614,-353.7817918\n322.30576,13.716,9.652,416.5899728,0.9135745,7.061931012,-699.1311588\n77.905243,12.954,6.096,129.5029455,1.774012962,3.636726534,-360.0359284\n282.994617,12.192,9.398,104.709577,1.903810518,3.388782656,-335.4894845\n62.525568,8.89,3.048,56.78897304,0.901412218,7.157213524,-708.564129\n267.137595,9.144,8.128,25.36830944,1.268415548,5.086345936,-503.5482576\n12.994617,2.54,6.604,104.709577,1.903810518,6.777565312,-332.1007018\n211.75948,7.874,9.906,239.620914,1.028416028,6.273337212,-621.0603858\n318.366461,5.588,11.938,269.9974641,2.109355192,3.05856513,-302.7979372\n189.462322,7.112,12.192,129.4477627,4.175734346,1.545021802,-152.9571465\n297.299572,3.048,20.066,829.3009284,0.728095572,8.860923858,-877.231464\n132.273689,8.128,14.478,35.8803669,1.708588912,7.551962798,-370.0461832\n282.994617,7.366,17.78,104.709577,1.903810518,3.388782656,-335.4894845\n140.194429,10.414,15.24,162.6068376,3.252136752,3.967606746,-194.4127349\n268.363423,10.668,24.13,25.38963909,0.725418158,8.893627882,-880.4691552\n102.200469,12.7,14.732,597.8446202,0.67098164,9.615166444,-951.9014896\n250.016893,14.732,20.32,80.29253258,2.170068558,5.9459876,-291.3533901\n84.559668,14.224,14.986,280.549586,1.20407557,5.358135842,-530.4554512\n222.184443,22.352,22.352,377.597688,0.588158336,10.96915408,-1085.946248\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*FLEX,FLEX\n0, 0,0, 0,6.35, 6.35,-6.35\n45, 6.35,0, 4.49013,4.49013, 1.5875,-5.80526,1.5875,-8.98026\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*GRASS,GRASS\n90, 0,0, 17.9605,17.9605, 4.7625,-31.1585\n45, 0,0, 0,25.4, 4.7625,-20.6375\n135, 0,0, 0,25.4, 4.7625,-20.6375\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*GRATE,GRATE\n0, 0,0, 0,.79375\n90, 0,0, 0,3.175\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*GRAVEL-01,GRAVEL-01\n;Optimize to replace existing GRAVEL Pattern\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in mm as metric QCAD3 pattern\n159.443955,4.064,3.302,80.266818638,2.97284521,4.340353778,-212.677341218\n114.775141,5.588,0,56.76841453,1.774012962,3.636726534,-360.03592839\n249.443955,8.128,2.032,80.266818638,2.97284521,2.170177016,-214.847518234\n186.009006,12.954,2.54,230.002940044,1.329496706,4.852663142,-480.413655376\n165.963757,18.034,1.27,24.6416195,6.160405002,5.236344112,-99.490538636\n101.309932,18.288,0,104.608346536,4.981349956,1.29515108,-128.219944728\n243.434949,21.336,3.556,22.718450626,11.35922544,3.975728904,-52.820397788\n355.426079,12.446,3.302,331.173933536,1.012764294,6.370287488,-630.658471472\n300.256437,10.668,6.35,148.094892532,1.828332132,3.528680776,-349.33939657\n228.012788,15.24,11.43,305.850675318,1.887967014,6.834440992,-334.887609878\n180,21.844,11.43,0,25.4,6.604,-18.796\n303.690068,15.748,15.748,35.223462446,7.04469254,3.66324007,-87.917762188\n225,18.288,18.288,17.960512212,17.960512212,3.592102544,-32.328922134\n110.224859,2.032,5.842,217.014069654,1.254416592,5.143108078,-509.167692864\n177.273689,7.366,5.588,25.371250756,1.20815481,5.340044184,-528.664375232\n217.69424,12.954,9.906,289.603117008,0.9135745,7.061931012,-699.131158758\n252.255328,14.986,16.256,586.403737782,0.967663038,6.667197486,-660.05256356\n301.429566,12.192,20.828,387.712303314,1.20407557,5.358135842,-530.455451152\n355.236358,6.096,21.336,25.312262304,2.109355192,6.117130006,-299.739372326\n43.66778,0.508,16.002,35.911314766,0.83514692,7.725108502,-764.785732808\n87.273689,0.254,10.668,25.371250756,1.20815481,5.340044184,-528.664375232\n30.963757,15.748,18.034,91.477345366,4.356064186,4.443185424,-143.662992836\n291.801409,14.732,20.574,56.599939124,4.716661636,2.73566382,-134.047522354\n203.198591,16.51,21.336,56.698117744,3.335183322,1.934406342,-191.506230398\n161.565051,19.558,20.32,24.09655582,8.032185358,3.212874194,-77.10897837\n4.969741,10.16,22.352,280.550012686,1.100196174,5.864045422,-580.540490682\n16.38954,0,20.574,265.179911346,1.433404804,4.50089143,-445.58825538\n197.354025,25.4,4.826,80.307559222,1.515237,4.25781597,-421.523771378\n74.054604,24.13,5.588,104.668749768,3.488958224,3.69829588,-181.216495326\n27.645975,18.796,2.794,545.360075648,1.07143423,6.021460906,-596.124634266\n145.304846,25.146,9.144,91.566911862,1.60643697,4.016092552,-397.593170268\n353.157227,17.78,12.7,434.77679618,1.008762778,6.395556678,-633.160101724\n171.469234,23.368,17.526,179.600730968,1.255949228,5.136831992,-508.546377622\n138.814075,25.4,15.748,234.164238554,2.389431086,2.700057084,-267.30564649\n90,25.4,14.224,0,25.4,1.524,-23.876\n60.945396,24.13,11.938,56.742519992,2.467066186,2.61509002,-258.893915536\n343.61046,21.082,21.844,184.909235464,1.433404804,4.50089143,-445.58825538\n293.198591,19.558,25.4,56.698117744,3.335183322,3.868812684,-189.571824056\n48.012788,16.002,22.86,305.850675318,1.887967014,3.417220496,-338.304830374\n312.510447,7.366,25.4,35.887120758,1.560309554,4.134820534,-409.347222706\n70.346176,4.318,21.844,80.303678102,1.708588912,3.775981526,-373.822164724\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*GRAVEL,GRAVEL\n228.0128, 18.288,25.4, 305.851,1.88796, 3.41721,-338.305\n184.9697, 16.002,22.86, -305.855,1.1002, 5.86405,-580.54\n132.5104, 10.16,22.352, -377.595,1.56032, 4.13482,-409.347\n267.2737, .254,16.002, -508.633,1.20815, 5.34005,-528.664\n292.8337, 0,10.668, -330.198,1.23208, 5.23634,-518.398\n357.2737, 2.032,5.842, -508.633,1.20815, 5.34005,-528.664\n37.6942, 7.366,5.588, -416.59,.913587, 7.06194,-699.131\n72.2553, 12.954,9.906, 586.404,.967664, 6.6672,-660.053\n121.4296, 14.986,16.256, 387.712,1.20409, 5.35813,-530.455\n175.2364, 12.192,20.828, -280.544,2.10934, 6.11713,-299.739\n222.3974, 6.096,21.336, 413.481,.815543, 7.91078,-783.168\n138.8141, 25.4,15.748, 234.164,2.38943, 2.70005,-267.306\n171.4692, 23.368,17.526, -334.082,1.25595, 5.13682,-508.546\n225, 18.288,18.288, 17.9605,17.9605, 3.59209,-32.3289\n203.1986, 16.51,21.336, -136.743,3.33517, 1.93441,-191.506\n291.8014, 14.732,20.574, -80.1833,4.71665, 2.73566,-134.048\n30.9638, 15.748,18.034, 91.4773,4.35607, 4.4432,-143.663\n161.5651, 19.558,20.32, -56.2253,8.03219, 3.21287,-77.109\n16.3895, 0,20.574, 265.18,1.4334, 4.50088,-445.588\n70.3462, 4.318,21.844, -297.294,1.70858, 3.77599,-373.822\n293.1986, 19.558,25.4, -136.743,3.33517, 3.8688,-189.572\n343.6105, 21.082,21.844, -265.18,1.4334, 4.50088,-445.588\n339.444, 0,4.826, -136.751,2.97284, 4.34035,-212.677\n294.7751, 4.064,3.302, -306.904,1.77401, 3.63672,-360.036\n66.8014, 19.812,0, 136.743,3.33517, 3.8688,-189.572\n17.354, 21.336,3.556, -345.474,1.51524, 4.25783,-421.524\n69.444, 7.366,0, -136.751,2.97284, 2.17018,-214.848\n101.3099, 18.288,0, 104.608,4.98135, 1.29515,-128.22\n165.9638, 18.034,1.27, -80.0853,6.16041, 5.23634,-99.4905\n186.009, 12.954,2.54, -255.263,1.32949, 4.85267,-480.414\n303.6901, 15.748,15.748, -56.3575,7.04469, 3.66324,-87.9178\n353.1572, 17.78,12.7, 434.777,1.00876, 6.39557,-633.16\n60.9454, 24.13,11.938, -204.766,2.46708, 2.61508,-258.894\n90, 25.4,14.224, 25.4,25.4, 1.524,-23.876\n120.2564, 12.446,3.302, -204.773,1.82834, 3.52867,-349.339\n48.0128, 10.668,6.35, 305.851,1.88796, 6.83443,-334.888\n0, 15.24,11.43, 25.4,25.4, 6.604,-18.796\n325.3048, 21.844,11.43, -310.042,1.60645, 4.0161,-397.593\n254.0546, 25.146,9.144, 104.669,3.48897, 3.69829,-181.217\n207.646, 24.13,5.588, 545.36,1.07142, 6.02145,-596.125\n175.4261, 18.796,2.794, 331.174,1.01277, 6.37029,-630.658\n175.4261, 18.796,2.794, 331.174,1.01277, 6.37029,-630.658\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HATCH-DOTS\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n225,14.364914374,2.934914374,17.960512212,17.960512212,11.492295278,-24.428729146\n225,6.359242552,5.089242552,17.960512212,17.960512212,16.19060262,-19.730421804\n225,3.281299762,9.631299762,17.960512212,17.960512212,18.261173282,-17.659851142\n225,19.161365538,5.191365538,17.960512212,17.960512212,11.492295278,-24.428729146\n225,7.864421914,4.054421914,17.960512212,17.960512212,16.85579052,-19.065234158\n225,2.841461932,11.731461932,17.960512212,17.960512212,20.609227006,-15.311797418\n225,9.631299762,3.281299762,17.960512212,17.960512212,18.261173282,-17.659851142\n225,2.934914374,14.364914374,17.960512212,17.960512212,11.492295278,-24.428729146\n225,5.089242552,6.359242552,17.960512212,17.960512212,16.19060262,-19.730421804\n225,11.731462186,2.841462186,17.960512212,17.960512212,20.60922726,-15.311797164\n225,5.191365538,19.161365538,17.960512212,17.960512212,11.492295278,-24.428729146\n225,4.054421914,7.864421914,17.960512212,17.960512212,16.85579052,-19.065234158\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HATCH-SQRS\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n225,2.794,9.144,17.960512212,17.960512212,7.902625292,-28.018399132\n225,2.794,21.844,17.960512212,17.960512212,7.902625292,-28.018399132\n225,2.794,6.604,17.960512212,17.960512212,13.290779108,-22.630245316\n225,19.304,2.794,17.960512212,17.960512212,7.902625292,-28.018399132\n225,2.794,14.224,17.960512212,17.960512212,7.902625292,-28.018399132\n225,2.794,11.684,17.960512212,17.960512212,7.902625292,-28.018399132\n225,6.604,2.794,17.960512212,17.960512212,13.290779108,-22.630245316\n225,2.794,19.304,17.960512212,17.960512212,7.902625292,-28.018399132\n225,2.794,4.064,17.960512212,17.960512212,9.698676564,-26.22234786\n225,4.064,2.794,17.960512212,17.960512212,9.698676564,-26.22234786\n225,11.684,2.794,17.960512212,17.960512212,7.902625292,-28.018399132\n225,14.224,2.794,17.960512212,17.960512212,7.902625292,-28.018399132\n225,9.144,2.794,17.960512212,17.960512212,7.902625292,-28.018399132\n225,21.844,2.794,17.960512212,17.960512212,7.902625292,-28.018399132\n225,2.794,16.764,17.960512212,17.960512212,7.902625292,-28.018399132\n225,16.764,2.794,17.960512212,17.960512212,7.902625292,-28.018399132\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HEX,HEX\n0, 0,0, 0,5.49926, 3.175,-6.35\n120, 0,0, 0,5.49926, 3.175,-6.35\n60, 3.175,0, 0,5.49926, 3.175,-6.35\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HEXAGONS\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n239.931417,5.587999746,25.399999492,204.778078632,1.15693825,5.576441984,-552.067817376\n239.931417,22.606,4.826,204.778078632,1.15693825,5.576441984,-552.067817376\n300.068583,19.812000254,25.399999492,352.866180728,1.15693825,5.576441984,-552.067817376\n60.068488,3.048,12.7,204.780260492,0.667036766,9.672031964,-957.531152498\n119.931512,7.874,4.318,762.42292397,0.667036766,9.67203171,-957.531152498\n300.068583,2.794,4.826,352.866180728,1.15693825,5.576441984,-552.067817376\n180,2.794,4.826,0,25.4,5.587998984,-19.812001016\n299.931512,17.526,21.082,762.42292397,0.667036766,9.67203171,-957.531152498\n0,7.874,21.082,0,25.4,9.652,-15.748\n180,17.526,4.318,0,25.4,9.652,-15.748\n240.068488,22.352,12.7,204.780260492,0.667036766,9.672031964,-957.531152498\n180,2.794,20.574,0,25.4,5.587998984,-19.812001016\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HEXJOIN-01\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n45,3.81,16.51,17.960512212,17.960512212,7.184204834,-28.73681959\n270,21.59,16.51,25.4,25.4,7.62,-17.78\n315,16.51,21.59,17.960512212,17.960512212,7.184204834,-28.73681959\n180,16.51,3.81,0,25.4,7.62,-17.78\n270,13.97,3.81,25.4,25.4,7.62,-17.78\n90,3.81,8.89,25.4,25.4,7.62,-17.78\n135,8.89,3.81,17.960512212,17.960512212,7.184204834,-28.73681959\n180,3.81,13.97,0,25.4,7.62,-17.78\n270,11.43,3.81,25.4,25.4,7.62,-17.78\n180,3.81,11.43,0,25.4,7.62,-17.78\n225,21.59,8.89,17.960512212,17.960512212,7.184204834,-28.73681959\n0,8.89,21.59,0,25.4,7.62,-17.78\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HEXJOIN-02\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n270,21.59,11.43,25.4,25.4,2.54,-22.86\n315,16.51,21.59,17.960512212,17.960512212,7.184204834,-28.73681959\n270,13.97,3.81,25.4,25.4,7.62,-17.78\n180,3.81,13.97,0,25.4,7.62,-17.78\n180,16.51,3.81,0,25.4,2.54,-22.86\n45,3.81,16.51,17.960512212,17.960512212,7.184204834,-28.73681959\n90,3.81,13.97,25.4,25.4,2.54,-22.86\n180,3.81,11.43,0,25.4,7.62,-17.78\n180,11.43,3.81,0,25.4,2.54,-22.86\n270,11.43,3.81,25.4,25.4,7.62,-17.78\n90,3.81,8.89,25.4,25.4,2.54,-22.86\n0,13.97,21.59,0,25.4,2.54,-22.86\n135,8.89,3.81,17.960512212,17.960512212,7.184204834,-28.73681959\n0,8.89,21.59,0,25.4,2.54,-22.86\n225,21.59,8.89,17.960512212,17.960512212,7.184204834,-28.73681959\n270,21.59,16.51,25.4,25.4,2.54,-22.86\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HOLLY,HOLLY\n;By John Hyslop\n;Developed in mm as Metric QCAD3 pattern\n99.462322,20.32,2.794,129.4477627,4.175734346,1.545021802,-152.9571465\n74.744881,17.018,2.032,104.7031863,2.22772732,2.896045516,-286.7085124\n68.198591,13.462,3.81,80.18324705,4.716661636,2.73566382,-134.0475224\n270,14.732,9.398,0,25.4,1.778,-23.622\n248.198591,19.05,8.89,80.18324705,4.716661636,2.73566382,-134.0475224\n45,20.32,5.08,17.96051221,17.96051221,2.155261374,-33.76576305\n351.869898,22.86,3.302,25.14471705,3.592102544,1.796051272,-177.8090711\n0,21.844,3.302,0,25.4,1.016,-24.384\n26.565051,20.828,2.794,34.07767607,11.35922544,1.135922544,-55.66020415\n45,20.32,2.286,17.96051221,17.96051221,0.718420458,-35.20260397\n341.565051,19.558,2.54,24.09655582,8.032185358,0.803218612,-79.51863395\n0,18.542,2.54,0,25.4,1.016,-24.384\n26.565051,18.034,2.286,34.07767607,11.35922544,0.567961272,-56.22816542\n26.565051,17.526,2.032,34.07767607,11.35922544,0.567961272,-56.22816542\n53.130102,16.764,1.016,91.44,5.08,1.27,-125.73\n270,16.764,2.032,0,25.4,1.016,-24.384\n303.690068,16.256,2.794,35.22346245,7.04469254,0.915809954,-90.6651923\n315,15.748,3.302,17.96051221,17.96051221,0.718420458,-35.20260397\n345.963757,14.732,3.556,24.6416195,6.160405002,1.047268924,-103.6796141\n0,13.716,3.556,0,25.4,1.016,-24.384\n33.690068,12.954,3.048,35.22346245,7.04469254,0.915809954,-90.6651923\n255.963757,13.208,4.064,24.6416195,6.160405002,1.047268924,-103.6796141\n281.309932,12.954,5.334,104.6083465,4.981349956,1.29515108,-128.2199447\n284.036243,12.7,6.35,80.0852635,6.160405002,1.047268924,-103.6796141\n296.565051,12.192,7.366,34.07767607,11.35922544,1.135922544,-55.66020415\n303.690068,11.684,8.128,35.22346245,7.04469254,0.915809954,-90.6651923\n180,12.7,8.128,0,25.4,1.016,-24.384\n180,13.462,8.128,0,25.4,0.762,-24.638\n213.690068,14.224,8.636,35.22346245,7.04469254,0.915809954,-90.6651923\n243.434949,14.478,9.144,22.71845063,11.35922544,0.567961272,-56.22816542\n251.565051,14.732,9.906,24.09655582,8.032185358,0.803218612,-79.51863395\n108.434949,14.986,9.144,56.22529674,8.032185358,0.803218612,-79.51863395\n135,15.494,8.636,17.96051221,17.96051221,0.718420458,-35.20260397\n153.434949,16.002,8.382,22.71845063,11.35922544,0.567961272,-56.22816542\n161.565051,16.764,8.128,24.09655582,8.032185358,0.803218612,-79.51863395\n180,17.526,8.128,0,25.4,0.762,-24.638\n198.434949,18.288,8.382,56.22529674,8.032185358,0.803218612,-79.51863395\n225,18.796,8.89,17.96051221,17.96051221,0.718420458,-35.20260397\n251.565051,19.05,9.652,24.09655582,8.032185358,0.803218612,-79.51863395\n108.434949,19.304,8.89,56.22529674,8.032185358,0.803218612,-79.51863395\n116.565051,19.812,7.874,34.07767607,11.35922544,1.135922544,-55.66020415\n135,20.574,7.112,17.96051221,17.96051221,1.077630814,-34.84339386\n161.565051,21.336,6.858,24.09655582,8.032185358,0.803218612,-79.51863395\n180,22.098,6.858,0,25.4,0.762,-24.638\n90,22.098,6.096,0,25.4,0.762,-24.638\n111.801409,22.606,4.826,56.59993912,4.716661636,1.36783191,-135.4153543\n126.869898,23.368,3.81,35.56,5.08,1.27,-125.73\n149.036243,24.638,3.048,56.62883289,4.356064186,1.481061808,-146.6251165\n338.587031,11.684,8.128,627.3335515,0.463661252,13.91447154,-1377.532674\n338.198591,20.32,17.526,80.18324705,4.716661636,1.36783191,-135.4153543\n323.972627,18.034,15.748,218.4910814,1.867445084,3.454773634,-342.0225773\n315,15.24,13.462,17.96051221,17.96051221,2.873681832,-33.04734259\n135,14.732,13.97,17.96051221,17.96051221,1.796051272,-34.12497315\n126.869898,17.272,16.51,35.56,5.08,2.54,-124.46\n105.945396,19.558,18.288,80.24604144,3.488958224,1.84914794,-183.0656433\n30.963757,22.098,20.32,91.47734537,4.356064186,1.481061808,-146.6251165\n14.036243,21.082,20.066,80.0852635,6.160405002,1.047268924,-103.6796141\n0,20.32,20.066,0,25.4,0.762,-24.638\n341.565051,19.558,20.32,24.09655582,8.032185358,0.803218612,-79.51863395\n333.434949,19.05,20.574,22.71845063,11.35922544,0.567961272,-56.22816542\n63.434949,18.796,20.066,22.71845063,11.35922544,0.567961272,-56.22816542\n45,18.288,19.558,17.96051221,17.96051221,0.718420458,-35.20260397\n33.690068,17.526,19.05,35.22346245,7.04469254,0.915809954,-90.6651923\n18.434949,16.764,18.796,56.22529674,8.032185358,0.803218612,-79.51863395\n0,16.002,18.796,0,25.4,0.762,-24.638\n341.565051,15.24,19.05,24.09655582,8.032185358,0.803218612,-79.51863395\n108.434949,15.494,18.288,56.22529674,8.032185358,0.803218612,-79.51863395\n90,15.494,17.526,0,25.4,0.762,-24.638\n75.963757,15.24,16.51,24.6416195,6.160405002,1.047268924,-103.6796141\n45,14.478,15.748,17.96051221,17.96051221,1.077630814,-34.84339386\n14.036243,13.462,15.494,80.0852635,6.160405002,1.047268924,-103.6796141\n0,12.7,15.494,0,25.4,0.762,-24.638\n126.869898,13.462,14.478,35.56,5.08,1.27,-125.73\n90,13.462,13.716,0,25.4,0.762,-24.638\n75.963757,13.208,12.7,24.6416195,6.160405002,1.047268924,-103.6796141\n56.309932,12.7,11.938,56.35753981,7.04469254,0.915809954,-90.6651923\n191.309932,13.97,12.192,104.6083465,4.981349956,1.29515108,-128.2199447\n168.690068,15.24,11.938,24.90674927,4.981349956,1.29515108,-128.2199447\n161.565051,16.764,11.43,24.09655582,8.032185358,1.60643697,-78.71541559\n143.130102,17.78,10.668,91.44,5.08,1.27,-125.73\n270,17.78,10.922,0,25.4,0.254,-25.146\n270,17.78,11.684,0,25.4,0.762,-24.638\n243.434949,18.288,12.7,22.71845063,11.35922544,1.135922544,-55.66020415\n213.690068,19.05,13.208,35.22346245,7.04469254,0.915809954,-90.6651923\n198.434949,19.812,13.462,56.22529674,8.032185358,0.803218612,-79.51863395\n180,20.828,13.462,0,25.4,1.016,-24.384\n146.309932,21.59,12.954,56.35753981,7.04469254,0.915809954,-90.6651923\n303.690068,21.082,13.716,35.22346245,7.04469254,0.915809954,-90.6651923\n270,21.082,14.478,0,25.4,0.762,-24.638\n270,21.082,15.494,0,25.4,1.016,-24.384\n243.434949,21.59,16.51,22.71845063,11.35922544,1.135922544,-55.66020415\n225,22.098,17.018,17.96051221,17.96051221,0.718420458,-35.20260397\n296.565051,21.844,17.526,34.07767607,11.35922544,0.567961272,-56.22816542\n270,21.844,18.034,0,25.4,0.508,-24.892\n255.963757,22.098,19.05,24.6416195,6.160405002,1.047268924,-103.6796141\n243.434949,22.606,20.066,22.71845063,11.35922544,1.135922544,-55.66020415\n233.130102,23.368,21.082,91.44,5.08,1.27,-125.73\n40.601295,12.7,11.938,35.81521869,2.755016842,14.05058582,-220.1258435\n195.945396,6.604,13.716,80.24604144,3.488958224,1.84914794,-183.0656433\n5.194429,7.366,13.97,255.2564824,2.29960805,2.805521694,-277.7466482\n19.983107,7.112,17.272,217.0068451,2.170068558,2.9729938,-294.3263839\n185.710593,5.842,17.272,229.9928961,2.527394488,2.552668504,-252.7141722\n164.054604,5.588,20.066,104.6687498,3.488958224,1.84914794,-183.0656433\n45,6.858,20.066,17.96051221,17.96051221,1.436840916,-34.48418351\n90,5.334,23.368,0,25.4,1.016,-24.384\n75.963757,5.08,22.352,24.6416195,6.160405002,1.047268924,-103.6796141\n243.434949,7.874,11.938,22.71845063,11.35922544,1.135922544,-55.66020415\n236.309932,8.382,12.7,56.35753981,7.04469254,0.915809954,-90.6651923\n225,9.144,13.462,17.96051221,17.96051221,1.077630814,-34.84339386\n213.690068,9.906,13.97,35.22346245,7.04469254,0.915809954,-90.6651923\n189.462322,11.43,14.224,129.4477627,4.175734346,1.545021802,-152.9571465\n333.434949,10.922,14.478,22.71845063,11.35922544,0.567961272,-56.22816542\n326.309932,10.16,14.986,56.35753981,7.04469254,0.915809954,-90.6651923\n303.690068,9.652,15.748,35.22346245,7.04469254,0.915809954,-90.6651923\n270,9.652,16.764,0,25.4,1.016,-24.384\n251.565051,9.906,17.526,24.09655582,8.032185358,0.803218612,-79.51863395\n236.309932,10.414,18.288,56.35753981,7.04469254,0.915809954,-90.6651923\n213.690068,11.176,18.796,35.22346245,7.04469254,0.915809954,-90.6651923\n0,10.16,18.796,0,25.4,1.016,-24.384\n333.434949,9.144,19.304,22.71845063,11.35922544,1.135922544,-55.66020415\n306.869898,8.382,20.32,35.56,5.08,1.27,-125.73\n284.036243,8.128,21.336,80.0852635,6.160405002,1.047268924,-103.6796141\n341.565051,7.366,21.59,24.09655582,8.032185358,0.803218612,-79.51863395\n326.309932,6.604,22.098,56.35753981,7.04469254,0.915809954,-90.6651923\n303.690068,6.096,22.86,35.22346245,7.04469254,0.915809954,-90.6651923\n296.565051,5.334,24.384,34.07767607,11.35922544,1.703883816,-55.09224288\n56.309932,4.572,21.59,56.35753981,7.04469254,0.915809954,-90.6651923\n45,4.064,21.082,17.96051221,17.96051221,0.718420458,-35.20260397\n33.690068,3.302,20.574,35.22346245,7.04469254,0.915809954,-90.6651923\n116.565051,3.556,20.066,34.07767607,11.35922544,0.567961272,-56.22816542\n108.434949,3.81,19.304,56.22529674,8.032185358,0.803218612,-79.51863395\n90,3.81,18.288,0,25.4,1.016,-24.384\n63.434949,3.302,17.272,22.71845063,11.35922544,1.135922544,-55.66020415\n33.690068,2.54,16.764,35.22346245,7.04469254,0.915809954,-90.6651923\n165.963757,3.556,16.51,24.6416195,6.160405002,1.047268924,-103.6796141\n143.130102,4.572,15.748,91.44,5.08,1.27,-125.73\n116.565051,5.08,14.732,34.07767607,11.35922544,1.135922544,-55.66020415\n75.963757,4.826,13.716,24.6416195,6.160405002,1.047268924,-103.6796141\n63.434949,4.318,12.7,22.71845063,11.35922544,1.135922544,-55.66020415\n180,5.334,12.7,0,25.4,1.016,-24.384\n165.963757,6.35,12.446,24.6416195,6.160405002,1.047268924,-103.6796141\n135,6.858,11.938,17.96051221,17.96051221,0.718420458,-35.20260397\n116.565051,7.366,10.922,34.07767607,11.35922544,1.135922544,-55.66020415\n278.583621,5.334,24.384,847.7664863,0.473877386,13.61449474,-1347.834983\n104.036243,7.62,5.08,80.0852635,6.160405002,1.047268924,-103.6796141\n123.690068,8.128,4.318,35.22346245,7.04469254,0.915809954,-90.6651923\n153.434949,9.144,3.81,22.71845063,11.35922544,1.135922544,-55.66020415\n180,9.906,3.81,0,25.4,0.762,-24.638\n206.565051,10.922,4.318,34.07767607,11.35922544,1.135922544,-55.66020415\n236.309932,11.43,5.08,56.35753981,7.04469254,0.915809954,-90.6651923\n255.963757,11.684,6.096,24.6416195,6.160405002,1.047268924,-103.6796141\n288.434949,11.43,6.858,56.22529674,8.032185358,0.803218612,-79.51863395\n303.690068,10.922,7.62,35.22346245,7.04469254,0.915809954,-90.6651923\n333.434949,9.906,8.128,22.71845063,11.35922544,1.135922544,-55.66020415\n0,9.144,8.128,0,25.4,0.762,-24.638\n26.565051,8.128,7.62,34.07767607,11.35922544,1.135922544,-55.66020415\n56.309932,7.62,6.858,56.35753981,7.04469254,0.915809954,-90.6651923\n71.565051,7.366,6.096,24.09655582,8.032185358,0.803218612,-79.51863395\n104.036243,4.064,7.874,80.0852635,6.160405002,1.047268924,-103.6796141\n123.690068,4.572,7.112,35.22346245,7.04469254,0.915809954,-90.6651923\n153.434949,5.588,6.604,22.71845063,11.35922544,1.135922544,-55.66020415\n180,6.35,6.604,0,25.4,0.762,-24.638\n206.565051,7.366,7.112,34.07767607,11.35922544,1.135922544,-55.66020415\n236.309932,7.874,7.874,56.35753981,7.04469254,0.915809954,-90.6651923\n255.963757,8.128,8.89,24.6416195,6.160405002,1.047268924,-103.6796141\n288.434949,7.874,9.652,56.22529674,8.032185358,0.803218612,-79.51863395\n303.690068,7.366,10.414,35.22346245,7.04469254,0.915809954,-90.6651923\n333.434949,6.35,10.922,22.71845063,11.35922544,1.135922544,-55.66020415\n0,5.588,10.922,0,25.4,0.762,-24.638\n26.565051,4.572,10.414,34.07767607,11.35922544,1.135922544,-55.66020415\n56.309932,4.064,9.652,56.35753981,7.04469254,0.915809954,-90.6651923\n71.565051,3.81,8.89,24.09655582,8.032185358,0.803218612,-79.51863395\n104.036243,8.636,9.652,80.0852635,6.160405002,1.047268924,-103.6796141\n123.690068,9.144,8.89,35.22346245,7.04469254,0.915809954,-90.6651923\n153.434949,10.16,8.382,22.71845063,11.35922544,1.135922544,-55.66020415\n180,10.922,8.382,0,25.4,0.762,-24.638\n206.565051,11.938,8.89,34.07767607,11.35922544,1.135922544,-55.66020415\n236.309932,12.446,9.652,56.35753981,7.04469254,0.915809954,-90.6651923\n255.963757,12.7,10.668,24.6416195,6.160405002,1.047268924,-103.6796141\n288.434949,12.446,11.43,56.22529674,8.032185358,0.803218612,-79.51863395\n303.690068,11.938,12.192,35.22346245,7.04469254,0.915809954,-90.6651923\n333.434949,10.922,12.7,22.71845063,11.35922544,1.135922544,-55.66020415\n0,10.16,12.7,0,25.4,0.762,-24.638\n26.565051,9.144,12.192,34.07767607,11.35922544,1.135922544,-55.66020415\n56.309932,8.636,11.43,56.35753981,7.04469254,0.915809954,-90.6651923\n71.565051,8.382,10.668,24.09655582,8.032185358,0.803218612,-79.51863395\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HONEY,HONEY\n0, 0,0, 4.7625,2.74963, 3.175,-6.35\n120, 0,0, 4.7625,2.74963, 3.175,-6.35\n60, 0,0, 4.7625,2.74963, -6.35,3.175\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HOUND,HOUND\n0, 0,0, 6.35,1.5875, 25.4,-12.7\n90, 0,0, -6.35,1.5875, 25.4,-12.7\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*INSUL,INSUL\n0, 0,0, 0,9.525\n0, 0,3.175, 0,9.525, 3.175,-3.175\n0, 0,6.35, 0,9.525, 3.175,-3.175\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*JIS_LC_20,JIS_LC_20\n45, 0,0, 0,20\n45, .4,0, 0,20\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*JIS_LC_20A,JIS_LC_20A\n45, 0,0, 0,20\n45, 1,0, 0,20\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*JIS_LC_8,JIS_LC_8\n45, 0,0, 0,7.8\n45, .4,0, 0,7.8\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*JIS_LC_8A,JIS_LC_8A\n45, 0,0, 0,7.8\n45, 1,0, 0,7.8\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*JIS_RC_10,JIS_RC_10\n45, 0,0, 0,10\n45, .725,0, 0,10\n45, 1.45,0, 0,10\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*JIS_RC_15,JIS_RC_15\n45, 0,0, 0,15\n45, .725,0, 0,15\n45, 1.45,0, 0,15\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*JIS_RC_18,JIS_RC_18\n45, 0,0, 0,18\n45, 1,0, 0,18\n45, 2,0, 0,18\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*JIS_RC_30,JIS_RC_30\n45, 0,0, 0,30\n45, 1,0, 0,30\n45, 2,0, 0,30\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*JIS_STN_1E,JIS_STN_1E\n45, 0,0, 0,1\n45, .705,0, 0,1, 1,-.5\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*JIS_STN_2.5,JIS_STN_2.5\n45, 0,0, 0,2.5\n45, 1.765,0, 0,2.5, 1.2,-.5\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*JIS_WOOD,JIS_WOOD\n45, 0,0, 0,.70710678\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LATTICE-01\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n180,2.162738626,10.16,0,25.4,4.325477252,-21.074522748\n270,15.24,2.162738626,25.4,25.4,4.325477252,-21.074522748\n270,10.16,2.162738626,25.4,25.4,4.325477252,-21.074522748\n135,12.7,6.80694346,17.960512212,17.960512212,8.334040482,-27.586983942\n225,18.59305654,12.7,17.960512212,17.960512212,8.334040482,-27.586983942\n45,2.162738626,15.24,17.960512212,17.960512212,11.309835394,-24.61118903\n180,2.162738626,15.24,0,25.4,4.325477252,-21.074522748\n315,12.7,18.59305654,17.960512212,17.960512212,8.334040482,-27.586983942\n45,6.80694346,12.7,17.960512212,17.960512212,8.334040482,-27.586983942\n315,15.24,23.237261374,17.960512212,17.960512212,11.309835394,-24.61118903\n45,15.24,2.162738626,17.960512212,17.960512212,11.309835394,-24.61118903\n315,2.162738626,10.16,17.960512212,17.960512212,11.309835394,-24.61118903\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LATTICE-02\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n180,9.736666582,9.736666582,0,25.4,19.473333164,-5.926666836\n270,15.663333418,25.4,25.4,25.4,25.4;,0 Removed 0 IT RENDERS A POINT\n180,9.736666582,15.663333418,0,25.4,19.473333164,-5.926666836\n270,9.736666582,25.4,25.4,25.4,25.4;,0 Removed 0 IT RENDERS A POINT\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LATTICE-03\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n180,9.736666582,9.736666582,0,25.4,19.473333164,-5.926666836\n180,9.736666582,15.663333418,0,25.4,19.473333164,-5.926666836\n270,15.663333418,9.736666582,25.4,25.4,19.473333164,-5.926666836\n270,9.736666582,9.736666582,25.4,25.4,19.473333164,-5.926666836\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LATTICE-04\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n296.565051,3.894666582,11.684,34.077676066,11.35922544,28.776704194,-28.019422498\n296.565051,8.636000254,14.054666582,34.077676066,11.35922544,28.776704194,-28.019422498\n206.565051,11.684,21.505333418,34.077676066,11.35922544,28.776704194,-28.019422498\n206.565051,14.054666582,16.763999746,34.077676066,11.35922544,28.776704194,-28.019422498\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LATTICE-05,LATTICE-05\n;By John Hyslop\n;Developed in mm as Metric QCAD3 pattern\n0,19.685,1.905,0,25.4,3.81,-21.59\n180,5.715,23.495,0,25.4,3.81,-21.59\n180,15.875,5.715,0,25.4,10.16,-15.24\n180,15.875,1.905,0,25.4,13.97,-11.43\n270,15.875,5.715,0,25.4,3.81,-21.59\n270,19.685,19.685,0,25.4,17.78,-7.62\n270,23.495,23.495,0,25.4,21.59,-3.81\n0,9.525,19.685,0,25.4,10.16,-15.24\n0,9.525,23.495,0,25.4,13.97,-11.43\n90,9.525,19.685,0,25.4,3.81,-21.59\n90,5.715,5.715,0,25.4,17.78,-7.62\n90,1.905,1.905,0,25.4,21.59,-3.81\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LATTICE-06,LATTICE-06\n;By John Hyslop\n;Developed in mm as Metric QCAD3 pattern\n180,15.875,9.525,0,25.4,6.35,-19.05\n270,15.875,15.875,0,25.4,6.35,-19.05\n0,9.525,15.875,0,25.4,6.35,-19.05\n90,9.525,9.525,0,25.4,6.35,-19.05\n0,19.685,1.905,0,25.4,3.81,-21.59\n180,5.715,23.495,0,25.4,3.81,-21.59\n180,15.875,5.715,0,25.4,10.16,-15.24\n180,15.875,1.905,0,25.4,13.97,-11.43\n270,15.875,5.715,0,25.4,3.81,-21.59\n270,19.685,19.685,0,25.4,17.78,-7.62\n270,23.495,23.495,0,25.4,21.59,-3.81\n0,9.525,19.685,0,25.4,10.16,-15.24\n0,9.525,23.495,0,25.4,13.97,-11.43\n90,9.525,19.685,0,25.4,3.81,-21.59\n90,5.715,5.715,0,25.4,17.78,-7.62\n90,1.905,1.905,0,25.4,21.59,-3.81\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LATTICE-07\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n270,17.568333418,17.568333164,25.4,25.4,22.436666582,-2.963333418\n270,20.531666836,17.568333164,25.4,25.4,22.436666582,-2.963333418\n270,4.868333164,4.868333418,25.4,25.4,22.436666582,-2.963333418\n270,7.831666582,4.868333418,25.4,25.4,22.436666582,-2.963333418\n180,17.568333418,7.831666582,0,25.4,22.436666582,-2.963333418\n180,17.568333418,4.868333164,0,25.4,22.436666582,-2.963333418\n180,4.868333418,20.531666836,0,25.4,22.436666582,-2.963333418\n180,4.868333418,17.568333418,0,25.4,22.436666582,-2.963333418\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LEAF-01,LEAF-01\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in mm as metric QCAD3 pattern\n83.659808,22.86,5.08,25.244646742,2.804960862,2.30006779,-227.706714766\n26.565051,22.352,4.826,34.077676066,11.35922544,0.567961272,-56.22816542\n14.036243,21.336,4.572,80.085263502,6.160405002,1.047268924,-103.679614078\n315,21.336,4.572,17.960512212,17.960512212,1.436840916,-34.484183508\n83.659808,21.336,4.572,25.244646742,2.804960862,2.30006779,-227.706714766\n0,20.066,4.572,0,25.4,1.27,-24.13\n345.963757,20.828,3.048,24.6416195,6.160405002,1.047268924,-103.679614078\n326.309932,20.066,3.556,56.357539812,7.04469254,0.915809954,-90.665192304\n303.690068,19.558,4.318,35.223462446,7.04469254,0.915809954,-90.665192304\n18.434949,18.796,4.064,56.225296744,8.032185358,0.803218612,-79.518633952\n288.434949,18.542,4.826,56.225296744,8.032185358,0.803218612,-79.518633952\n180,19.558,4.826,0,25.4,1.016,-24.384\n258.690068,19.812,6.096,24.906749272,4.981349956,1.29515108,-128.219944728\n243.434949,20.066,6.604,22.718450626,11.35922544,0.567961272,-56.22816542\n225,20.828,7.366,17.960512212,17.960512212,1.077630814,-34.843393864\n213.690068,21.59,7.874,35.223462446,7.04469254,0.915809954,-90.665192304\n191.309932,22.86,8.128,104.608346536,4.981349956,1.29515108,-128.219944728\n128.659808,7.62,10.668,35.701322044,3.966813504,1.626393496,-161.0129622\n143.130102,8.636,9.906,91.44,5.08,1.27,-125.73\n153.434949,9.652,9.398,22.718450626,11.35922544,1.135922544,-55.660204148\n192.528808,9.652,9.398,104.69063898,2.755016842,2.341764176,-231.834664854\n105.945396,9.652,9.398,80.246041438,3.488958224,1.84914794,-183.065643266\n153.434949,10.668,8.89,22.718450626,11.35922544,1.135922544,-55.660204148\n149.036243,11.938,8.128,56.628832894,4.356064186,1.481061808,-146.625116452\n95.710593,11.938,8.128,229.992896122,2.527394488,2.552668504,-252.714172244\n194.931417,11.938,8.128,289.599936166,1.636157764,3.94314045,-390.37089693\n135,12.954,7.112,17.960512212,17.960512212,1.436840916,-34.484183508\n123.690068,13.462,6.35,35.223462446,7.04469254,0.915809954,-90.665192304\n199.653824,13.462,6.35,297.294468148,1.708588912,3.775981526,-373.822164724\n71.565051,13.462,6.35,24.09655582,8.032185358,2.409655582,-77.912196982\n119.054604,14.732,4.064,204.766485564,2.467066186,2.61509002,-258.893915536\n288.434949,14.732,3.556,56.225296744,8.032185358,1.60643697,-78.715415594\n21.801409,13.462,3.048,56.599939124,4.716661636,1.36783191,-135.415354264\n11.309932,12.192,2.794,104.608346536,4.981349956,1.29515108,-128.219944728\n0,11.43,2.794,0,25.4,0.762,-24.638\n341.565051,9.906,3.302,24.09655582,8.032185358,1.60643697,-78.715415594\n326.309932,8.382,4.318,56.357539812,7.04469254,1.831620162,-89.74938235\n308.659808,7.366,5.588,35.701322044,3.966813504,1.626393496,-161.0129622\n300.963757,6.604,6.858,91.477345366,4.356064186,1.481061808,-146.625116452\n285.945396,6.096,8.636,80.246041438,3.488958224,1.84914794,-183.065643266\n270,6.096,10.414,0,25.4,1.778,-23.622\n279.462322,5.842,11.938,129.447762694,4.175734346,1.545021802,-152.95714646\n285.945396,5.334,13.716,80.246041438,3.488958224,1.84914794,-183.065643266\n123.690068,5.842,12.954,35.223462446,7.04469254,0.915809954,-90.665192304\n161.565051,6.604,12.7,24.09655582,8.032185358,0.803218612,-79.518633952\n171.869898,8.382,12.446,25.144717046,3.592102544,1.796051272,-177.809071102\n171.869898,10.16,12.192,25.144717046,3.592102544,1.796051272,-177.809071102\n161.565051,11.684,11.684,24.09655582,8.032185358,1.60643697,-78.715415594\n161.565051,13.208,11.176,24.09655582,8.032185358,1.60643697,-78.715415594\n146.309932,14.732,10.16,56.357539812,7.04469254,1.831620162,-89.74938235\n119.744881,15.748,8.382,148.072666262,3.150482142,2.047813532,-202.733533318\n111.801409,16.256,7.112,56.599939124,4.716661636,1.36783191,-135.415354264\n90,16.256,6.096,0,25.4,1.016,-24.384\n75.963757,16.002,5.08,24.6416195,6.160405002,1.047268924,-103.679614078\n56.309932,15.494,4.318,56.357539812,7.04469254,0.915809954,-90.665192304\n63.434949,15.24,3.81,22.718450626,11.35922544,0.567961272,-56.22816542\n126.869898,16.002,2.794,35.56,5.08,1.27,-125.73\n45,15.24,2.032,17.960512212,17.960512212,1.077630814,-34.843393864\n233.130102,22.606,1.016,91.44,5.08,1.27,-125.73\n258.690068,1.778,1.27,24.906749272,4.981349956,1.29515108,-128.219944728\n258.690068,3.556,1.27,24.906749272,4.981349956,1.29515108,-128.219944728\n198.434949,6.604,0.508,56.225296744,8.032185358,1.60643697,-78.715415594\n225,7.874,0.508,17.960512212,17.960512212,0.718420458,-35.202603966\n198.434949,8.636,0.762,56.225296744,8.032185358,0.803218612,-79.518633952\n348.690068,7.366,1.016,24.906749272,4.981349956,1.29515108,-128.219944728\n345.963757,6.35,1.27,24.6416195,6.160405002,1.047268924,-103.679614078\n333.434949,5.334,1.778,22.718450626,11.35922544,1.135922544,-55.660204148\n333.434949,3.81,2.54,22.718450626,11.35922544,1.703883816,-55.092242876\n348.690068,2.54,2.794,24.906749272,4.981349956,1.29515108,-128.219944728\n0,1.778,2.794,0,25.4,0.762,-24.638\n8.130102,0,2.54,154.460405328,3.592102544,1.796051272,-177.809071102\n236.309932,0.508,5.842,56.357539812,7.04469254,0.915809954,-90.665192304\n236.309932,1.016,6.604,56.357539812,7.04469254,0.915809954,-90.665192304\n213.690068,1.778,7.112,35.223462446,7.04469254,0.915809954,-90.665192304\n0,0.762,7.112,0,25.4,1.016,-24.384\n326.309932,0,7.62,56.357539812,7.04469254,0.915809954,-90.665192304\n18.434949,0,6.604,56.225296744,8.032185358,0.803218612,-79.518633952\n0,0,13.97,0,25.4,1.778,-23.622\n14.036243,2.54,15.494,80.085263502,6.160405002,1.047268924,-103.679614078\n21.801409,1.27,14.986,56.599939124,4.716661636,1.36783191,-135.415354264\n30.963757,0,14.224,91.477345366,4.356064186,1.481061808,-146.625116452\n254.054604,0.508,16.764,104.668749768,3.488958224,1.84914794,-183.065643266\n158.198591,1.27,17.526,80.18324705,4.716661636,1.36783191,-135.415354264\n153.434949,2.794,16.764,22.718450626,11.35922544,1.703883816,-55.092242876\n158.198591,4.064,16.256,80.18324705,4.716661636,1.36783191,-135.415354264\n180,5.334,16.256,0,25.4,1.27,-24.13\n33.690068,4.572,15.748,35.223462446,7.04469254,0.915809954,-90.665192304\n45,4.064,15.24,17.960512212,17.960512212,0.718420458,-35.202603966\n53.130102,3.302,14.224,91.44,5.08,1.27,-125.73\n56.309932,2.286,12.7,56.357539812,7.04469254,1.831620162,-89.74938235\n51.340192,1.27,11.43,126.938033652,3.966813504,1.626393496,-161.0129622\n38.659808,0,10.414,35.701322044,3.966813504,1.626393496,-161.0129622\n180,20.828,12.192,0,25.4,2.54,-22.86\n310.601295,20.828,12.192,35.815218692,2.755016842,2.341764176,-231.834664854\n82.405357,20.828,12.192,204.774468022,1.678479244,3.843717484,-380.528029646\n180,21.336,12.192,0,25.4,0.508,-24.892\n194.036243,22.352,12.446,80.085263502,6.160405002,1.047268924,-103.679614078\n198.434949,23.114,12.7,56.225296744,8.032185358,0.803218612,-79.518633952\n0,21.082,9.398,0,25.4,2.032,-23.368\n348.690068,19.812,9.652,24.906749272,4.981349956,1.29515108,-128.219944728\n321.340192,18.542,10.668,126.938033652,3.966813504,1.626393496,-161.0129622\n300.963757,17.78,11.938,91.477345366,4.356064186,1.481061808,-146.625116452\n21.801409,16.51,11.43,56.599939124,4.716661636,1.36783191,-135.415354264\n284.036243,16.256,12.446,80.085263502,6.160405002,1.047268924,-103.679614078\n180,17.78,12.446,0,25.4,1.524,-23.876\n261.869898,18.034,14.224,25.144717046,3.592102544,1.796051272,-177.809071102\n248.198591,18.542,15.494,80.18324705,4.716661636,1.36783191,-135.415354264\n225,19.558,16.51,17.960512212,17.960512212,1.436840916,-34.484183508\n216.869898,20.574,17.272,35.56,5.08,1.27,-125.73\n198.434949,22.86,18.034,56.225296744,8.032185358,2.409655582,-77.912196982\n153.434949,9.144,16.51,22.718450626,11.35922544,1.703883816,-55.092242876\n170.537678,10.668,16.256,25.054405568,4.175734346,1.545021802,-152.95714646\n188.130102,12.446,16.51,154.460405328,3.592102544,1.796051272,-177.809071102\n201.801409,13.716,17.018,56.599939124,4.716661636,1.36783191,-135.415354264\n219.805571,15.24,18.288,35.773504272,3.252136752,1.9838035,-196.396538372\n18.434949,24.638,6.35,56.225296744,8.032185358,0.803218612,-79.518633952\n33.690068,23.876,5.842,35.223462446,7.04469254,0.915809954,-90.665192304\n0,23.876,5.842,0,25.4,1.016,-24.384\n80.537678,23.876,5.842,25.054405568,4.175734346,1.545021802,-152.95714646\n36.869898,22.86,5.08,35.56,5.08,1.27,-125.73\n341.565051,22.86,5.08,24.09655582,8.032185358,1.60643697,-78.715415594\n53.130102,24.638,4.064,91.44,5.08,1.27,-125.73\n38.659808,23.368,3.048,35.701322044,3.966813504,1.626393496,-161.0129622\n9.462322,21.844,2.794,129.447762694,4.175734346,1.545021802,-152.95714646\n180,24.13,8.128,0,25.4,1.27,-24.13\n158.198591,25.4,7.62,80.18324705,4.716661636,1.36783191,-135.415354264\n216.869898,23.622,1.778,35.56,5.08,1.27,-125.73\n206.565051,24.638,2.286,34.077676066,11.35922544,1.135922544,-55.660204148\n198.434949,25.4,2.54,56.225296744,8.032185358,0.803218612,-79.518633952\n90,24.638,0,0,25.4,0.508,-24.892\n26.565051,24.384,13.462,34.077676066,11.35922544,1.135922544,-55.660204148\n56.309932,24.384,13.462,56.357539812,7.04469254,1.831620162,-89.74938235\n36.869898,24.384,13.462,35.56,5.08,1.27,-125.73\n30.963757,23.114,12.7,91.477345366,4.356064186,1.481061808,-146.625116452\n78.690068,23.114,12.7,24.906749272,4.981349956,3.885452986,-125.629642822\n156.037511,25.4,11.684,193.423444496,2.578979348,2.501609932,-247.659378188\n30.963757,24.13,9.652,91.477345366,4.356064186,1.481061808,-146.625116452\n14.036243,23.114,9.398,80.085263502,6.160405002,1.047268924,-103.679614078\n180,25.4,18.034,0,25.4,2.54,-22.86\n0,21.844,22.098,0,25.4,2.286,-23.114\n11.309932,24.13,22.098,104.608346536,4.981349956,1.29515108,-128.219944728\n135,25.4,20.828,17.960512212,17.960512212,1.796051272,-34.124973152\n0,24.384,19.304,0,25.4,1.016,-24.384\n345.963757,23.368,19.558,24.6416195,6.160405002,1.047268924,-103.679614078\n333.434949,22.352,20.066,22.718450626,11.35922544,1.135922544,-55.660204148\n315,21.844,20.574,17.960512212,17.960512212,0.718420458,-35.202603966\n306.869898,21.082,21.59,35.56,5.08,1.27,-125.73\n11.309932,19.812,21.336,104.608346536,4.981349956,1.29515108,-128.219944728\n284.036243,19.558,22.352,80.085263502,6.160405002,1.047268924,-103.679614078\n180,21.082,22.352,0,25.4,1.524,-23.876\n14.036243,16.51,22.606,80.085263502,6.160405002,1.047268924,-103.679614078\n18.434949,15.748,22.352,56.225296744,8.032185358,0.803218612,-79.518633952\n33.690068,14.986,21.844,35.223462446,7.04469254,0.915809954,-90.665192304\n230.194429,16.51,19.812,162.6068376,3.252136752,1.9838035,-196.396538372\n239.036243,17.272,21.082,56.628832894,4.356064186,1.481061808,-146.625116452\n236.309932,18.288,22.606,56.357539812,7.04469254,1.831620162,-89.74938235\n213.690068,19.05,23.114,35.223462446,7.04469254,0.915809954,-90.665192304\n198.434949,19.812,23.368,56.225296744,8.032185358,0.803218612,-79.518633952\n0,18.796,23.368,0,25.4,1.016,-24.384\n345.963757,17.78,23.622,24.6416195,6.160405002,1.047268924,-103.679614078\n261.869898,21.336,24.13,25.144717046,3.592102544,1.796051272,-177.809071102\n248.198591,21.844,25.4,80.18324705,4.716661636,1.36783191,-135.415354264\n36.869898,13.97,21.082,35.56,5.08,1.27,-125.73\n0,13.97,21.082,0,25.4,2.032,-23.368\n78.690068,13.97,21.082,24.906749272,4.981349956,2.590301906,-126.924793648\n33.690068,13.208,20.574,35.223462446,7.04469254,0.915809954,-90.665192304\n30.963757,11.938,19.812,91.477345366,4.356064186,1.481061808,-146.625116452\n336.037511,11.938,19.812,193.423444496,2.578979348,2.501609932,-247.659378188\n79.380345,11.938,19.812,283.976346702,1.560309554,4.134820534,-409.347222706\n26.565051,10.922,19.304,34.077676066,11.35922544,1.135922544,-55.660204148\n9.462322,9.398,19.05,129.447762694,4.175734346,1.545021802,-152.95714646\n318.814075,9.398,19.05,234.164238554,2.389431086,2.700057084,-267.30564649\n82.405357,9.398,19.05,204.774468022,1.678479244,3.843717484,-380.528029646\n0,8.382,19.05,0,25.4,1.016,-24.384\n0,7.366,19.05,0,25.4,1.016,-24.384\n0,5.08,19.304,0,25.4,1.524,-23.876\n104.036243,5.334,18.288,80.085263502,6.160405002,1.047268924,-103.679614078\n201.801409,6.604,18.796,56.599939124,4.716661636,1.36783191,-135.415354264\n123.690068,7.62,17.272,35.223462446,7.04469254,1.831620162,-89.74938235\n338.198591,16.51,24.13,80.18324705,4.716661636,1.36783191,-135.415354264\n333.434949,14.986,24.892,22.718450626,11.35922544,1.703883816,-55.092242876\n348.690068,13.716,25.146,24.906749272,4.981349956,1.29515108,-128.219944728\n0,11.684,25.146,0,25.4,2.032,-23.368\n18.434949,10.16,24.638,56.225296744,8.032185358,1.60643697,-78.715415594\n26.565051,8.636,23.876,34.077676066,11.35922544,1.703883816,-55.092242876\n45,7.366,22.606,17.960512212,17.960512212,1.796051272,-34.124973152\n71.565051,6.858,21.082,24.09655582,8.032185358,1.60643697,-78.715415594\n81.869898,6.604,19.304,25.144717046,3.592102544,1.796051272,-177.809071102\n;0,5.08,19.304,0,25.4,1.524,-23.876\n315,0,20.828,17.960512212,17.960512212,0.718420458,-35.202603966\n198.434949,0.762,22.606,56.225296744,8.032185358,0.803218612,-79.518633952\n343.300756,0.762,22.606,184.898786158,2.432878802,2.651837978,-262.531947376\n74.744881,0.762,22.606,104.703186326,2.22772732,2.896045516,-286.708512434\n206.565051,1.27,22.86,34.077676066,11.35922544,0.567961272,-56.22816542\n213.690068,2.032,23.368,35.223462446,7.04469254,0.915809954,-90.665192304\n216.869898,3.048,24.13,35.56,5.08,1.27,-125.73\n352.874984,3.048,24.13,25.203858152,3.150482142,2.047813532,-202.733533318\n78.690068,3.048,24.13,24.906749272,4.981349956,1.29515108,-128.219944728\n213.690068,3.81,24.638,35.223462446,7.04469254,0.915809954,-90.665192304\n213.690068,4.572,25.146,35.223462446,7.04469254,0.915809954,-90.665192304\n206.565051,5.08,25.4,34.077676066,11.35922544,0.567961272,-56.22816542\n45,7.112,25.146,17.960512212,17.960512212,0.359210356,-35.561814322\n56.309932,6.604,24.384,56.357539812,7.04469254,0.915809954,-90.665192304\n56.309932,5.588,22.86,56.357539812,7.04469254,1.831620162,-89.74938235\n53.130102,4.826,21.844,91.44,5.08,1.27,-125.73\n45,3.556,20.574,17.960512212,17.960512212,1.796051272,-34.124973152\n36.869898,2.54,19.812,35.56,5.08,1.27,-125.73\n18.434949,1.016,19.304,56.225296744,8.032185358,1.60643697,-78.715415594\n0,0,19.304,0,25.4,1.016,-24.384\n81.253838,24.13,22.098,179.594740378,1.931126186,3.340848284,-330.743991038\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LEAF-02,LEAF-02\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in mm as metric QCAD3 pattern\n303.690068,19.558,4.318,35.223462446,7.04469254,0.915809954,-90.665192304\n18.434949,18.796,4.064,56.225296744,8.032185358,0.803218612,-79.518633952\n288.434949,18.542,4.826,56.225296744,8.032185358,0.803218612,-79.518633952\n180,19.558,4.826,0,25.4,1.016,-24.384\n258.690068,19.812,6.096,24.906749272,4.981349956,1.29515108,-128.219944728\n243.434949,20.066,6.604,22.718450626,11.35922544,0.567961272,-56.22816542\n288.434949,14.732,3.556,56.225296744,8.032185358,1.60643697,-78.715415594\n21.801409,13.462,3.048,56.599939124,4.716661636,1.36783191,-135.415354264\n11.309932,12.192,2.794,104.608346536,4.981349956,1.29515108,-128.219944728\n0,11.43,2.794,0,25.4,0.762,-24.638\n341.565051,9.906,3.302,24.09655582,8.032185358,1.60643697,-78.715415594\n326.309932,8.382,4.318,56.357539812,7.04469254,1.831620162,-89.74938235\n308.659808,7.366,5.588,35.701322044,3.966813504,1.626393496,-161.0129622\n300.963757,6.604,6.858,91.477345366,4.356064186,1.481061808,-146.625116452\n285.945396,6.096,8.636,80.246041438,3.488958224,1.84914794,-183.065643266\n270,6.096,10.414,0,25.4,1.778,-23.622\n279.462322,5.842,11.938,129.447762694,4.175734346,1.545021802,-152.95714646\n285.945396,5.334,13.716,80.246041438,3.488958224,1.84914794,-183.065643266\n123.690068,5.842,12.954,35.223462446,7.04469254,0.915809954,-90.665192304\n161.565051,6.604,12.7,24.09655582,8.032185358,0.803218612,-79.518633952\n171.869898,8.382,12.446,25.144717046,3.592102544,1.796051272,-177.809071102\n171.869898,10.16,12.192,25.144717046,3.592102544,1.796051272,-177.809071102\n161.565051,11.684,11.684,24.09655582,8.032185358,1.60643697,-78.715415594\n161.565051,13.208,11.176,24.09655582,8.032185358,1.60643697,-78.715415594\n146.309932,14.732,10.16,56.357539812,7.04469254,1.831620162,-89.74938235\n119.744881,15.748,8.382,148.072666262,3.150482142,2.047813532,-202.733533318\n111.801409,16.256,7.112,56.599939124,4.716661636,1.36783191,-135.415354264\n90,16.256,6.096,0,25.4,1.016,-24.384\n75.963757,16.002,5.08,24.6416195,6.160405002,1.047268924,-103.679614078\n56.309932,15.494,4.318,56.357539812,7.04469254,0.915809954,-90.665192304\n63.434949,15.24,3.81,22.718450626,11.35922544,0.567961272,-56.22816542\n126.869898,16.002,2.794,35.56,5.08,1.27,-125.73\n45,15.24,2.032,17.960512212,17.960512212,1.077630814,-34.843393864\n225,7.874,0.508,17.960512212,17.960512212,0.718420458,-35.202603966\n198.434949,8.636,0.762,56.225296744,8.032185358,0.803218612,-79.518633952\n348.690068,7.366,1.016,24.906749272,4.981349956,1.29515108,-128.219944728\n345.963757,6.35,1.27,24.6416195,6.160405002,1.047268924,-103.679614078\n333.434949,5.334,1.778,22.718450626,11.35922544,1.135922544,-55.660204148\n333.434949,3.81,2.54,22.718450626,11.35922544,1.703883816,-55.092242876\n348.690068,2.54,2.794,24.906749272,4.981349956,1.29515108,-128.219944728\n0,1.778,2.794,0,25.4,0.762,-24.638\n8.130102,0,2.54,154.460405328,3.592102544,1.796051272,-177.809071102\n236.309932,0.508,5.842,56.357539812,7.04469254,0.915809954,-90.665192304\n236.309932,1.016,6.604,56.357539812,7.04469254,0.915809954,-90.665192304\n213.690068,1.778,7.112,35.223462446,7.04469254,0.915809954,-90.665192304\n0,0.762,7.112,0,25.4,1.016,-24.384\n326.309932,0,7.62,56.357539812,7.04469254,0.915809954,-90.665192304\n158.198591,1.27,17.526,80.18324705,4.716661636,1.36783191,-135.415354264\n153.434949,2.794,16.764,22.718450626,11.35922544,1.703883816,-55.092242876\n158.198591,4.064,16.256,80.18324705,4.716661636,1.36783191,-135.415354264\n180,5.334,16.256,0,25.4,1.27,-24.13\n33.690068,4.572,15.748,35.223462446,7.04469254,0.915809954,-90.665192304\n45,4.064,15.24,17.960512212,17.960512212,0.718420458,-35.202603966\n53.130102,3.302,14.224,91.44,5.08,1.27,-125.73\n56.309932,2.286,12.7,56.357539812,7.04469254,1.831620162,-89.74938235\n51.340192,1.27,11.43,126.938033652,3.966813504,1.626393496,-161.0129622\n38.659808,0,10.414,35.701322044,3.966813504,1.626393496,-161.0129622\n321.340192,18.542,10.668,126.938033652,3.966813504,1.626393496,-161.0129622\n300.963757,17.78,11.938,91.477345366,4.356064186,1.481061808,-146.625116452\n21.801409,16.51,11.43,56.599939124,4.716661636,1.36783191,-135.415354264\n284.036243,16.256,12.446,80.085263502,6.160405002,1.047268924,-103.679614078\n180,17.78,12.446,0,25.4,1.524,-23.876\n261.869898,18.034,14.224,25.144717046,3.592102544,1.796051272,-177.809071102\n248.198591,18.542,15.494,80.18324705,4.716661636,1.36783191,-135.415354264\n225,19.558,16.51,17.960512212,17.960512212,1.436840916,-34.484183508\n284.036243,19.558,22.352,80.085263502,6.160405002,1.047268924,-103.679614078\n0,5.08,19.304,0,25.4,1.524,-23.876\n104.036243,5.334,18.288,80.085263502,6.160405002,1.047268924,-103.679614078\n201.801409,6.604,18.796,56.599939124,4.716661636,1.36783191,-135.415354264\n123.690068,7.62,17.272,35.223462446,7.04469254,1.831620162,-89.74938235\n153.434949,9.144,16.51,22.718450626,11.35922544,1.703883816,-55.092242876\n170.537678,10.668,16.256,25.054405568,4.175734346,1.545021802,-152.95714646\n188.130102,12.446,16.51,154.460405328,3.592102544,1.796051272,-177.809071102\n201.801409,13.716,17.018,56.599939124,4.716661636,1.36783191,-135.415354264\n219.805571,15.24,18.288,35.773504272,3.252136752,1.9838035,-196.396538372\n230.194429,16.51,19.812,162.6068376,3.252136752,1.9838035,-196.396538372\n239.036243,17.272,21.082,56.628832894,4.356064186,1.481061808,-146.625116452\n236.309932,18.288,22.606,56.357539812,7.04469254,1.831620162,-89.74938235\n213.690068,19.05,23.114,35.223462446,7.04469254,0.915809954,-90.665192304\n198.434949,19.812,23.368,56.225296744,8.032185358,0.803218612,-79.518633952\n0,18.796,23.368,0,25.4,1.016,-24.384\n345.963757,17.78,23.622,24.6416195,6.160405002,1.047268924,-103.679614078\n338.198591,16.51,24.13,80.18324705,4.716661636,1.36783191,-135.415354264\n45,7.366,22.606,17.960512212,17.960512212,1.796051272,-34.124973152\n71.565051,6.858,21.082,24.09655582,8.032185358,1.60643697,-78.715415594\n81.869898,6.604,19.304,25.144717046,3.592102544,1.796051272,-177.809071102\n;0,5.08,19.304,0,25.4,1.524,-23.876\n53.130102,4.826,21.844,91.44,5.08,1.27,-125.73\n45,3.556,20.574,17.960512212,17.960512212,1.796051272,-34.124973152\n36.869898,2.54,19.812,35.56,5.08,1.27,-125.73\n18.434949,1.016,19.304,56.225296744,8.032185358,1.60643697,-78.715415594\n0,0,19.304,0,25.4,1.016,-24.384\n0,24.384,19.304,0,25.4,1.016,-24.384\n345.963757,23.368,19.558,24.6416195,6.160405002,1.047268924,-103.679614078\n333.434949,22.352,20.066,22.718450626,11.35922544,1.135922544,-55.660204148\n315,21.844,20.574,17.960512212,17.960512212,0.718420458,-35.202603966\n306.869898,21.082,21.59,35.56,5.08,1.27,-125.73\n11.309932,19.812,21.336,104.608346536,4.981349956,1.29515108,-128.219944728\n180,21.082,22.352,0,25.4,1.524,-23.876\n261.869898,21.336,24.13,25.144717046,3.592102544,1.796051272,-177.809071102\n248.198591,21.844,25.4,80.18324705,4.716661636,1.36783191,-135.415354264\n333.434949,14.986,24.892,22.718450626,11.35922544,1.703883816,-55.092242876\n348.690068,13.716,25.146,24.906749272,4.981349956,1.29515108,-128.219944728\n0,11.684,25.146,0,25.4,2.032,-23.368\n18.434949,10.16,24.638,56.225296744,8.032185358,1.60643697,-78.715415594\n26.565051,8.636,23.876,34.077676066,11.35922544,1.703883816,-55.092242876\n45,7.112,25.146,17.960512212,17.960512212,0.359210356,-35.561814322\n56.309932,6.604,24.384,56.357539812,7.04469254,0.915809954,-90.665192304\n56.309932,5.588,22.86,56.357539812,7.04469254,1.831620162,-89.74938235\n53.130102,24.638,4.064,91.44,5.08,1.27,-125.73\n38.659808,23.368,3.048,35.701322044,3.966813504,1.626393496,-161.0129622\n9.462322,21.844,2.794,129.447762694,4.175734346,1.545021802,-152.95714646\n345.963757,20.828,3.048,24.6416195,6.160405002,1.047268924,-103.679614078\n326.309932,20.066,3.556,56.357539812,7.04469254,0.915809954,-90.665192304\n225,20.828,7.366,17.960512212,17.960512212,1.077630814,-34.843393864\n213.690068,21.59,7.874,35.223462446,7.04469254,0.915809954,-90.665192304\n191.309932,22.86,8.128,104.608346536,4.981349956,1.29515108,-128.219944728\n180,24.13,8.128,0,25.4,1.27,-24.13\n158.198591,25.4,7.62,80.18324705,4.716661636,1.36783191,-135.415354264\n233.130102,22.606,1.016,91.44,5.08,1.27,-125.73\n216.869898,23.622,1.778,35.56,5.08,1.27,-125.73\n206.565051,24.638,2.286,34.077676066,11.35922544,1.135922544,-55.660204148\n198.434949,25.4,2.54,56.225296744,8.032185358,0.803218612,-79.518633952\n30.963757,24.13,9.652,91.477345366,4.356064186,1.481061808,-146.625116452\n14.036243,23.114,9.398,80.085263502,6.160405002,1.047268924,-103.679614078\n0,21.082,9.398,0,25.4,2.032,-23.368\n348.690068,19.812,9.652,24.906749272,4.981349956,1.29515108,-128.219944728\n216.869898,20.574,17.272,35.56,5.08,1.27,-125.73\n198.434949,22.86,18.034,56.225296744,8.032185358,2.409655582,-77.912196982\n180,25.4,18.034,0,25.4,2.54,-22.86\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LEAF-03,LEAF-03\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in mm as metric QCAD3 pattern\n344.054604,21.844,9.652,104.668749768,3.488958224,1.84914794,-183.065643266\n338.198591,20.574,10.16,80.18324705,4.716661636,1.36783191,-135.415354264\n326.309932,19.05,11.176,56.357539812,7.04469254,1.831620162,-89.74938235\n320.194429,17.526,12.446,162.6068376,3.252136752,1.9838035,-196.396538372\n308.659808,16.51,13.716,35.701322044,3.966813504,1.626393496,-161.0129622\n300.963757,15.748,14.986,91.477345366,4.356064186,1.481061808,-146.625116452\n293.198591,14.986,16.764,56.698117744,3.335183322,1.934406342,-191.506230398\n281.309932,14.732,18.034,104.608346536,4.981349956,1.29515108,-128.219944728\n276.340192,14.478,20.32,204.76213556,2.804960862,2.30006779,-227.706714766\n270,14.478,21.59,0,25.4,1.27,-24.13\n257.471192,14.986,23.876,129.485790304,2.755016842,2.341764176,-231.834664854\n164.054604,16.764,23.368,104.668749768,3.488958224,1.84914794,-183.065643266\n158.198591,18.034,22.86,80.18324705,4.716661636,1.36783191,-135.415354264\n146.309932,19.558,21.844,56.357539812,7.04469254,1.831620162,-89.74938235\n140.194429,21.082,20.574,162.6068376,3.252136752,1.9838035,-196.396538372\n125.537678,22.352,18.796,126.965671138,2.952690056,2.18499055,-216.314071054\n116.565051,23.368,16.764,34.077676066,11.35922544,2.271845088,-54.524281604\n105.945396,23.876,14.986,80.246041438,3.488958224,1.84914794,-183.065643266\n97.125016,24.13,12.954,179.577488698,3.150482142,2.047813532,-202.733533318\n90,24.13,11.43,0,25.4,1.524,-23.876\n77.471192,23.622,9.144,129.485790304,2.755016842,2.341764176,-231.834664854\n195.945396,3.556,9.652,80.246041438,3.488958224,1.84914794,-183.065643266\n201.801409,4.826,10.16,56.599939124,4.716661636,1.36783191,-135.415354264\n213.690068,6.35,11.176,35.223462446,7.04469254,1.831620162,-89.74938235\n219.805571,7.874,12.446,35.773504272,3.252136752,1.9838035,-196.396538372\n231.340192,8.89,13.716,126.938033652,3.966813504,1.626393496,-161.0129622\n239.036243,9.652,14.986,56.628832894,4.356064186,1.481061808,-146.625116452\n246.801409,10.414,16.764,136.74251925,3.335183322,1.934406342,-191.506230398\n258.690068,10.668,18.034,24.906749272,4.981349956,1.29515108,-128.219944728\n263.659808,10.922,20.32,25.244646742,2.804960862,2.30006779,-227.706714766\n270,10.922,21.59,0,25.4,1.27,-24.13\n282.528808,10.414,23.876,104.69063898,2.755016842,2.341764176,-231.834664854\n15.945396,8.636,23.368,80.246041438,3.488958224,1.84914794,-183.065643266\n21.801409,7.366,22.86,56.599939124,4.716661636,1.36783191,-135.415354264\n33.690068,5.842,21.844,35.223462446,7.04469254,1.831620162,-89.74938235\n39.805571,4.318,20.574,35.773504272,3.252136752,1.9838035,-196.396538372\n54.462322,3.048,18.796,91.53339072,2.952690056,2.18499055,-216.314071054\n63.434949,2.032,16.764,22.718450626,11.35922544,2.271845088,-54.524281604\n74.054604,1.524,14.986,104.668749768,3.488958224,1.84914794,-183.065643266\n82.874984,1.27,12.954,25.203858152,3.150482142,2.047813532,-202.733533318\n90,1.27,11.43,0,25.4,1.524,-23.876\n102.528808,1.778,9.144,104.69063898,2.755016842,2.341764176,-231.834664854\n128.659808,5.334,3.81,35.701322044,3.966813504,1.626393496,-161.0129622\n146.309932,6.858,2.794,56.357539812,7.04469254,1.831620162,-89.74938235\n153.434949,8.382,2.032,22.718450626,11.35922544,1.703883816,-55.092242876\n164.054604,10.16,1.524,104.668749768,3.488958224,1.84914794,-183.065643266\n171.869898,11.938,1.27,25.144717046,3.592102544,1.796051272,-177.809071102\n180,13.462,1.27,0,25.4,1.524,-23.876\n188.130102,15.24,1.524,154.460405328,3.592102544,1.796051272,-177.809071102\n195.945396,17.018,2.032,80.246041438,3.488958224,1.84914794,-183.065643266\n206.565051,18.542,2.794,34.077676066,11.35922544,1.703883816,-55.092242876\n218.659808,19.812,3.81,35.701322044,3.966813504,1.626393496,-161.0129622\n225,21.082,5.08,17.960512212,17.960512212,1.796051272,-34.124973152\n315,19.812,6.35,17.960512212,17.960512212,1.796051272,-34.124973152\n321.340192,18.542,7.366,126.938033652,3.966813504,1.626393496,-161.0129622\n336.801409,16.764,8.128,136.74251925,3.335183322,1.934406342,-191.506230398\n341.565051,15.24,8.636,24.09655582,8.032185358,1.60643697,-78.715415594\n351.869898,13.462,8.89,25.144717046,3.592102544,1.796051272,-177.809071102\n0,11.938,8.89,0,25.4,1.524,-23.876\n8.130102,10.16,8.636,154.460405328,3.592102544,1.796051272,-177.809071102\n18.434949,8.636,8.128,56.225296744,8.032185358,1.60643697,-78.715415594\n23.198591,6.858,7.366,56.698117744,3.335183322,1.934406342,-191.506230398\n38.659808,5.588,6.35,35.701322044,3.966813504,1.626393496,-161.0129622\n45,4.318,5.08,17.960512212,17.960512212,1.796051272,-34.124973152\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LINE,LINE\n0, 0,0, 0,3.175\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LOOPLINKS,LOOPLINKS\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in mm as metric QCAD3 pattern\n206.565051,13.462,17.018,34.077676066,11.35922544,0.567961272,-56.22816542\n243.434949,13.716,17.526,22.718450626,11.35922544,0.567961272,-56.22816542\n116.565051,11.938,17.018,34.077676066,11.35922544,0.567961272,-56.22816542\n153.434949,12.446,16.764,22.718450626,11.35922544,0.567961272,-56.22816542\n180,12.954,16.764,0,25.4,0.508,-24.892\n258.690068,4.826,14.986,24.906749272,4.981349956,1.29515108,-128.219944728\n251.565051,5.08,15.748,24.09655582,8.032185358,0.803218612,-79.518633952\n243.434949,5.588,16.764,22.718450626,11.35922544,1.135922544,-55.660204148\n230.194429,6.858,18.288,162.6068376,3.252136752,1.9838035,-196.396538372\n225,7.874,19.304,17.960512212,17.960512212,1.436840916,-34.484183508\n209.744881,9.652,20.32,148.072666262,3.150482142,2.047813532,-202.733533318\n194.036243,11.684,20.828,80.085263502,6.160405002,2.094537594,-102.632345154\n251.565051,7.112,15.24,24.09655582,8.032185358,1.60643697,-78.715415594\n239.036243,7.874,16.51,56.628832894,4.356064186,1.481061808,-146.625116452\n225,8.89,17.526,17.960512212,17.960512212,1.436840916,-34.484183508\n210.963757,10.16,18.288,91.477345366,4.356064186,1.481061808,-146.625116452\n198.434949,11.684,18.796,56.225296744,8.032185358,1.60643697,-78.715415594\n116.565051,17.018,11.938,34.077676066,11.35922544,0.567961272,-56.22816542\n153.434949,17.526,11.684,22.718450626,11.35922544,0.567961272,-56.22816542\n26.565051,17.018,13.462,34.077676066,11.35922544,0.567961272,-56.22816542\n63.434949,16.764,12.954,22.718450626,11.35922544,0.567961272,-56.22816542\n90,16.764,12.446,0,25.4,0.508,-24.892\n168.690068,14.986,20.574,24.906749272,4.981349956,1.29515108,-128.219944728\n161.565051,15.748,20.32,24.09655582,8.032185358,0.803218612,-79.518633952\n153.434949,16.764,19.812,22.718450626,11.35922544,1.135922544,-55.660204148\n140.194429,18.288,18.542,162.6068376,3.252136752,1.9838035,-196.396538372\n135,19.304,17.526,17.960512212,17.960512212,1.436840916,-34.484183508\n119.744881,20.32,15.748,148.072666262,3.150482142,2.047813532,-202.733533318\n104.036243,20.828,13.716,80.085263502,6.160405002,2.094537594,-102.632345154\n161.565051,15.24,18.288,24.09655582,8.032185358,1.60643697,-78.715415594\n149.036243,16.51,17.526,56.628832894,4.356064186,1.481061808,-146.625116452\n135,17.526,16.51,17.960512212,17.960512212,1.436840916,-34.484183508\n120.963757,18.288,15.24,91.477345366,4.356064186,1.481061808,-146.625116452\n108.434949,18.796,13.716,56.225296744,8.032185358,1.60643697,-78.715415594\n26.565051,11.938,8.382,34.077676066,11.35922544,0.567961272,-56.22816542\n63.434949,11.684,7.874,22.718450626,11.35922544,0.567961272,-56.22816542\n296.565051,13.462,8.382,34.077676066,11.35922544,0.567961272,-56.22816542\n333.434949,12.954,8.636,22.718450626,11.35922544,0.567961272,-56.22816542\n0,12.446,8.636,0,25.4,0.508,-24.892\n78.690068,20.574,10.414,24.906749272,4.981349956,1.29515108,-128.219944728\n71.565051,20.32,9.652,24.09655582,8.032185358,0.803218612,-79.518633952\n63.434949,19.812,8.636,22.718450626,11.35922544,1.135922544,-55.660204148\n50.194429,18.542,7.112,162.6068376,3.252136752,1.9838035,-196.396538372\n45,17.526,6.096,17.960512212,17.960512212,1.436840916,-34.484183508\n29.744881,15.748,5.08,148.072666262,3.150482142,2.047813532,-202.733533318\n14.036243,13.716,4.572,80.085263502,6.160405002,2.094537594,-102.632345154\n71.565051,18.288,10.16,24.09655582,8.032185358,1.60643697,-78.715415594\n59.036243,17.526,8.89,56.628832894,4.356064186,1.481061808,-146.625116452\n45,16.51,7.874,17.960512212,17.960512212,1.436840916,-34.484183508\n30.963757,15.24,7.112,91.477345366,4.356064186,1.481061808,-146.625116452\n18.434949,13.716,6.604,56.225296744,8.032185358,1.60643697,-78.715415594\n296.565051,8.382,13.462,34.077676066,11.35922544,0.567961272,-56.22816542\n333.434949,7.874,13.716,22.718450626,11.35922544,0.567961272,-56.22816542\n206.565051,8.382,11.938,34.077676066,11.35922544,0.567961272,-56.22816542\n243.434949,8.636,12.446,22.718450626,11.35922544,0.567961272,-56.22816542\n270,8.636,12.954,0,25.4,0.508,-24.892\n348.690068,10.414,4.826,24.906749272,4.981349956,1.29515108,-128.219944728\n341.565051,9.652,5.08,24.09655582,8.032185358,0.803218612,-79.518633952\n333.434949,8.636,5.588,22.718450626,11.35922544,1.135922544,-55.660204148\n320.194429,7.112,6.858,162.6068376,3.252136752,1.9838035,-196.396538372\n315,6.096,7.874,17.960512212,17.960512212,1.436840916,-34.484183508\n299.744881,5.08,9.652,148.072666262,3.150482142,2.047813532,-202.733533318\n284.036243,4.572,11.684,80.085263502,6.160405002,2.094537594,-102.632345154\n341.565051,10.16,7.112,24.09655582,8.032185358,1.60643697,-78.715415594\n329.036243,8.89,7.874,56.628832894,4.356064186,1.481061808,-146.625116452\n315,7.874,8.89,17.960512212,17.960512212,1.436840916,-34.484183508\n300.963757,7.112,10.16,91.477345366,4.356064186,1.481061808,-146.625116452\n288.434949,6.604,11.684,56.225296744,8.032185358,1.60643697,-78.715415594\n90,11.684,-7.874,0,25.4,15.748,-9.652\n270,13.716,7.874,0,25.4,15.748,-9.652\n180,7.874,11.684,0,25.4,15.748,-9.652\n0,-7.874,13.716,0,25.4,15.748,-9.652\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*MAZE-01\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n180,24.13,23.368,0,25.4,6.35,-19.05\n90,24.13,13.97,25.4,25.4,9.398,-16.002\n90,21.082,13.97,25.4,25.4,6.35,-19.05\n0,17.78,10.668,0,25.4,2.794,-22.606\n180,14.478,20.32,0,25.4,9.652,-15.748\n270,14.478,23.368,25.4,25.4,3.048,-22.352\n0,1.778,23.368,0,25.4,12.7,-12.7\n90,24.13,7.366,25.4,25.4,3.302,-22.098\n180,11.43,1.27,0,25.4,9.652,-15.748\n0,17.78,7.366,0,25.4,6.35,-19.05\n270,11.43,4.318,25.4,25.4,3.048,-22.352\n0,4.826,4.318,0,25.4,6.604,-18.796\n90,17.78,4.318,25.4,25.4,3.048,-22.352\n270,4.826,20.32,25.4,25.4,16.002,-9.398\n0,7.874,7.366,0,25.4,6.604,-18.796\n270,7.874,17.272,25.4,25.4,9.906,-15.494\n180,17.78,17.272,0,25.4,9.906,-15.494\n270,17.78,23.368,25.4,25.4,6.096,-19.304\n180,24.13,4.318,0,25.4,6.35,-19.05\n90,24.13,1.27,25.4,25.4,3.048,-22.352\n0,14.478,1.27,0,25.4,9.652,-15.748\n270,14.478,10.668,25.4,25.4,9.398,-16.002\n270,17.78,13.97,25.4,25.4,3.302,-22.098\n0,11.43,13.97,0,25.4,6.35,-19.05\n90,11.43,10.668,25.4,25.4,3.302,-22.098\n90,1.778,1.27,25.4,25.4,22.098,-3.302\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*MAZE-02\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n270,22.859999746,2.54,25.4,25.4,2.54,-22.86\n0,17.779999746,2.54,0,25.4,5.08,-20.32\n90,0,7.62,25.4,25.4,12.7,-12.7\n270,22.859999746,22.86,25.4,25.4,12.7,-12.7\n270,7.619999746,22.86,25.4,25.4,2.54,-22.86\n180,7.619999746,22.86,0,25.4,10.16,-15.24\n0,5.079999746,5.08,0,25.4,3.81,-21.59\n90,5.079999746,7.62,25.4,25.4,5.08,-20.32\n180,12.699999746,7.62,0,25.4,7.62,-17.78\n90,12.699999746,2.54,25.4,25.4,5.08,-20.32\n270,17.779999746,5.08,25.4,25.4,2.54,-22.86\n0,15.239999746,5.08,0,25.4,2.54,-22.86\n270,15.239999746,7.62,25.4,25.4,2.54,-22.86\n180,17.779999746,7.62,0,25.4,2.54,-22.86\n270,15.239999746,15.24,25.4,25.4,2.54,-22.86\n0,7.619999746,15.24,0,25.4,7.62,-17.78\n90,7.619999746,10.16,25.4,25.4,5.08,-20.32\n180,17.779999746,10.16,0,25.4,10.16,-15.24\n180,15.239999746,12.7,0,25.4,5.08,-20.32\n270,20.319999746,20.32,25.4,25.4,12.7,-12.7\n0,2.539999746,2.54,0,25.4,10.16,-15.24\n0,2.539999746,20.32,0,25.4,17.78,-7.62\n270,2.539999746,5.08,25.4,25.4,2.54,-22.86\n90,2.539999746,7.62,25.4,25.4,12.7,-12.7\n180,2.539999746,5.08,0,25.4,7.62,-17.78\n180,0,7.62,0,25.4,5.080000254,-20.319999746\n180,7.619999746,0,0,25.4,7.62,-17.78\n270,17.779999746,17.78,25.4,25.4,5.08,-20.32\n0,10.159999746,0,0,25.4,10.16,-15.24\n0,5.079999746,17.78,0,25.4,12.7,-12.7\n90,5.079999746,15.24,25.4,25.4,2.54,-22.86\n270,15.239999746,2.54,25.4,25.4,2.54,-22.86\n0,10.159999746,22.86,0,25.4,10.16,-15.24\n270,10.159999746,25.4,25.4,25.4,2.54,-22.86\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*MUDST,MUDST\n0, 0,0, 12.7,6.35, 6.35,-6.35,0,-6.35,0,-6.35\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*NET,NET\n0, 0,0, 0,3.175\n90, 0,0, 0,3.175\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*NET3,NET3\n0, 0,0, 0,3.175\n60, 0,0, 0,3.175\n120, 0,0, 0,3.175\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*PLAST,PLAST\n0, 0,0, 0,6.35\n0, 0,.79375, 0,6.35\n0, 0,1.5875, 0,6.35\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*PLASTI,PLASTI\n0, 0,0, 0,6.35\n0, 0,.79375, 0,6.35\n0, 0,1.5875, 0,6.35\n0, 0,3.96875, 0,6.35\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*QCAD-LOGO\n;By John Hyslop, Line 101 modified by CVH to fix left side of pencil drift when hatching far from Origin\n;Developed in mm as metric QCAD3 pattern\n243.434949,20.32,9.144,22.718450626,11.35922544,0.567961272,-56.22816542\n248.198591,20.828,10.414,80.18324705,4.716661636,1.36783191,-135.415354264\n263.659808,21.082,12.7,25.244646742,2.804960862,2.30006779,-227.706714766\n276.340192,20.828,14.986,204.76213556,2.804960862,2.30006779,-227.706714766\n290.556045,20.066,17.018,136.750876358,2.97284521,2.170177016,-214.847518234\n310.601295,18.542,18.796,35.815218692,2.755016842,2.341764176,-231.834664854\n324.462322,16.764,20.066,91.53339072,2.952690056,2.18499055,-216.314071054\n336.801409,14.986,20.828,136.74251925,3.335183322,1.934406342,-191.506230398\n351.869898,13.208,21.082,25.144717046,3.592102544,1.796051272,-177.809071102\n26.565051,15.494,4.572,34.077676066,11.35922544,1.703883816,-55.092242876\n7.125016,13.462,4.318,179.577488698,3.150482142,2.047813532,-202.733533318\n0,11.43,4.318,0,25.4,2.032,-23.368\n344.054604,9.652,4.826,104.668749768,3.488958224,1.84914794,-183.065643266\n336.801409,7.874,5.588,136.74251925,3.335183322,1.934406342,-191.506230398\n320.194429,6.35,6.858,162.6068376,3.252136752,1.9838035,-196.396538372\n308.659808,5.334,8.128,35.701322044,3.966813504,1.626393496,-161.0129622\n293.198591,4.572,9.906,56.698117744,3.335183322,1.934406342,-191.506230398\n285.945396,4.064,11.684,80.246041438,3.488958224,1.84914794,-183.065643266\n270,4.064,13.208,0,25.4,1.524,-23.876\n261.869898,4.318,14.986,25.144717046,3.592102544,1.796051272,-177.809071102\n246.801409,5.08,16.764,136.74251925,3.335183322,1.934406342,-191.506230398\n234.462322,6.35,18.542,91.53339072,2.952690056,2.18499055,-216.314071054\n219.805571,7.874,19.812,35.773504272,3.252136752,1.9838035,-196.396538372\n206.565051,9.398,20.574,34.077676066,11.35922544,1.703883816,-55.092242876\n195.945396,11.176,21.082,80.246041438,3.488958224,1.84914794,-183.065643266\n180,12.192,21.082,0,25.4,1.016,-24.384\n180,13.208,21.082,0,25.4,1.016,-24.384\n233.130102,23.368,6.858,91.44,5.08,1.27,-125.73\n248.198591,23.876,8.128,80.18324705,4.716661636,1.36783191,-135.415354264\n248.198591,24.384,9.398,80.18324705,4.716661636,1.36783191,-135.415354264\n260.537678,24.638,10.922,25.054405568,4.175734346,1.545021802,-152.95714646\n261.869898,24.892,12.7,25.144717046,3.592102544,1.796051272,-177.809071102\n278.130102,24.638,14.478,154.460405328,3.592102544,1.796051272,-177.809071102\n279.462322,24.384,16.002,129.447762694,4.175734346,1.545021802,-152.95714646\n288.434949,23.876,17.526,56.225296744,8.032185358,1.60643697,-78.715415594\n299.744881,22.86,19.304,148.072666262,3.150482142,2.047813532,-202.733533318\n308.659808,21.844,20.574,35.701322044,3.966813504,1.626393496,-161.0129622\n315,20.574,21.844,17.960512212,17.960512212,1.796051272,-34.124973152\n321.340192,19.304,22.86,126.938033652,3.966813504,1.626393496,-161.0129622\n329.036243,18.034,23.622,56.628832894,4.356064186,1.481061808,-146.625116452\n338.198591,16.764,24.13,80.18324705,4.716661636,1.36783191,-135.415354264\n338.198591,15.494,24.638,80.18324705,4.716661636,1.36783191,-135.415354264\n350.537678,13.97,24.892,25.054405568,4.175734346,1.545021802,-152.95714646\n0,12.7,24.892,0,25.4,1.27,-24.13\n0,11.43,24.892,0,25.4,1.27,-24.13\n11.309932,10.16,24.638,104.608346536,4.981349956,1.29515108,-128.219944728\n14.036243,9.144,24.384,80.085263502,6.160405002,1.047268924,-103.679614078\n21.801409,7.874,23.876,56.599939124,4.716661636,1.36783191,-135.415354264\n21.801409,6.604,23.368,56.599939124,4.716661636,1.36783191,-135.415354264\n36.869898,5.588,22.606,35.56,5.08,1.27,-125.73\n36.869898,4.572,21.844,35.56,5.08,1.27,-125.73\n33.690068,19.05,2.286,35.223462446,7.04469254,0.915809954,-90.665192304\n26.565051,17.526,1.524,34.077676066,11.35922544,1.703883816,-55.092242876\n21.801409,16.256,1.016,56.599939124,4.716661636,1.36783191,-135.415354264\n11.309932,14.986,0.762,104.608346536,4.981349956,1.29515108,-128.219944728\n8.130102,13.208,0.508,154.460405328,3.592102544,1.796051272,-177.809071102\n0,11.684,0.508,0,25.4,1.524,-23.876\n350.537678,10.16,0.762,25.054405568,4.175734346,1.545021802,-152.95714646\n348.690068,8.89,1.016,24.906749272,4.981349956,1.29515108,-128.219944728\n338.198591,7.62,1.524,80.18324705,4.716661636,1.36783191,-135.415354264\n333.434949,6.604,2.032,22.718450626,11.35922544,1.135922544,-55.660204148\n323.130102,5.588,2.794,91.44,5.08,1.27,-125.73\n323.130102,4.572,3.556,91.44,5.08,1.27,-125.73\n315,3.556,4.572,17.960512212,17.960512212,1.436840916,-34.484183508\n306.869898,2.794,5.588,35.56,5.08,1.27,-125.73\n306.869898,2.032,6.604,35.56,5.08,1.27,-125.73\n296.565051,1.524,7.62,34.077676066,11.35922544,1.135922544,-55.660204148\n291.801409,1.016,8.89,56.599939124,4.716661636,1.36783191,-135.415354264\n281.309932,0.762,10.16,104.608346536,4.981349956,1.29515108,-128.219944728\n281.309932,0.508,11.43,104.608346536,4.981349956,1.29515108,-128.219944728\n270,0.508,12.7,0,25.4,1.27,-24.13\n270,0.508,13.97,0,25.4,1.27,-24.13\n258.690068,0.762,15.24,24.906749272,4.981349956,1.29515108,-128.219944728\n258.690068,1.016,16.51,24.906749272,4.981349956,1.29515108,-128.219944728\n248.198591,1.524,17.78,80.18324705,4.716661636,1.36783191,-135.415354264\n243.434949,2.032,18.796,22.718450626,11.35922544,1.135922544,-55.660204148\n233.130102,2.794,19.812,91.44,5.08,1.27,-125.73\n233.130102,3.556,20.828,91.44,5.08,1.27,-125.73\n225,4.572,21.844,17.960512212,17.960512212,1.436840916,-34.484183508\n0,8.89,5.334,0,25.4,7.366,-18.034\n180,14.224,9.906,0,25.4,1.016,-24.384\n270,14.224,11.176,0,25.4,1.27,-24.13\n180,15.748,11.176,0,25.4,1.524,-23.876\n270,15.748,12.192,0,25.4,1.016,-24.384\n270,24.892,2.794,0,25.4,0.254,-25.146\n270,24.892,3.302,0,25.4,0.508,-24.892\n45,20.828,2.032,17.960512212,17.960512212,3.592102544,-32.328922134\n225,22.86,5.08,17.960512212,17.960512212,3.592102544,-32.328922134\n45,20.066,2.794,17.960512212,17.960512212,3.592102544,-32.328922134\n0,13.8209782,14.218285,0,25.4,0,-25.4\n0,14.9935692,16.1227008,0,25.4,0,-25.4\n0,16.2642042,18.3038496,0,25.4,0,-25.4\n135,24.892,3.302,17.960512212,17.960512212,12.57235865,-23.348666028\n56.309932,24.384,1.778,56.357539812,7.04469254,0.915809954,-90.665192304\n45,23.876,1.27,17.960512212,17.960512212,0.718420458,-35.202603966\n33.690068,23.114,0.762,35.223462446,7.04469254,0.915809954,-90.665192304\n18.434949,22.352,0.508,56.225296744,8.032185358,0.803218612,-79.518633952\n135.806929,22.352,0.508,-35.917462074,0.505879862,12.753228494,-1262.569616842\n289.983107,12.192,12.192,217.006845132,2.170068558,2.9729938,-294.326383914\n338.198591,13.462,13.208,80.18324705,4.716661636,2.73566382,-134.047522354\n105.945396,12.192,12.192,80.246041438,3.488958224,1.84914794,-183.065643266\n218.659808,13.462,13.208,35.701322044,3.966813504,1.626393496,-161.0129622\n336.801409,11.684,13.97,136.74251925,3.335183322,1.934406342,-191.506230398\n56.309932,16.764,19.177,56.357539812,7.04469254,0.457905104,-91.123097408\n239.036243,12.065,11.049,56.628832894,4.356064186,0.740530904,-147.365647356\n236.309932,14.478,15.24,56.357539812,7.04469254,0.457905104,-91.123097408\n236.309932,15.748,17.272,56.357539812,7.04469254,0.457905104,-91.123097408\n0,11.684,10.414,0,25.4,0,-25.4\n0,12.446,8.636,0,25.4,0.508,-24.892\n0,13.716,8.636,0,25.4,0,-25.4\n0,11.43,8.636,0,25.4,0,-25.4\n0,9.144,8.636,0,25.4,0,-25.4\n0,6.858,8.636,0,25.4,0,-25.4\n180,6.096,8.636,0,25.4,0.762,-24.638\n180,8.382,8.636,0,25.4,0.762,-24.638\n180,10.668,8.636,0,25.4,0.762,-24.638\n239.036243,11.43,9.906,56.628832894,4.356064186,1.481061808,-146.625116452\n0,11.176,11.176,0,25.4,1.27,-24.13\n341.565051,10.414,11.43,24.09655582,8.032185358,0.803218612,-79.518633952\n315,9.906,11.938,17.960512212,17.960512212,0.718420458,-35.202603966\n296.565051,9.652,12.446,34.077676066,11.35922544,0.567961272,-56.22816542\n180,9.652,12.446,0,25.4,5.334,-20.066\n240.068488,14.478,20.828,204.780260492,0.667036766,9.672031964,-957.531152498\n0,16.002,12.446,0,25.4,4.572,-20.828\n240.255119,19.05,17.78,56.708680588,3.150482142,6.143440342,-198.637906508\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*REDBACK,REDBACK\n;By John Hyslop\n;Developed in mm as Metric QCAD3 pattern\n63.434949,18.542,19.812,22.71845063,11.35922544,0.567961272,-56.22816542\n33.690068,17.78,19.304,35.22346245,7.04469254,0.915809954,-90.6651923\n75.963757,17.526,18.288,24.6416195,6.160405002,1.047268924,-103.6796141\n0,16.764,18.288,0,25.4,0.762,-24.638\n108.434949,17.018,17.526,56.22529674,8.032185358,0.803218612,-79.51863395\n90,17.018,17.272,0,25.4,0.254,-25.146\n0,13.716,14.478,0,25.4,0.254,-25.146\n270,13.716,14.732,0,25.4,0.254,-25.146\n225,13.97,14.986,17.96051221,17.96051221,0.359210356,-35.56181432\n180,14.224,14.986,0,25.4,0.254,-25.146\n315,13.97,15.24,17.96051221,17.96051221,0.359210356,-35.56181432\n15.524111,9.398,13.97,184.9097925,1.359630758,4.745111668,-469.7660475\n0,8.89,13.97,0,25.4,0.508,-24.892\n45,8.636,13.716,17.96051221,17.96051221,0.359210356,-35.56181432\n0,7.874,13.716,0,25.4,0.762,-24.638\n26.565051,4.826,12.192,34.07767607,11.35922544,3.407767632,-53.38835906\n0,4.572,12.192,0,25.4,0.254,-25.146\n33.690068,3.81,11.684,35.22346245,7.04469254,0.915809954,-90.6651923\n32.005383,1.778,10.414,91.54141687,2.692394666,2.396231174,-237.2268895\n45,1.524,10.16,17.96051221,17.96051221,0.359210356,-35.56181432\n270,1.524,10.414,0,25.4,0.254,-25.146\n225,1.778,10.668,17.96051221,17.96051221,0.359210356,-35.56181432\n213.690068,4.064,12.192,35.22346245,7.04469254,2.747430116,-88.8335724\n243.434949,4.318,12.7,22.71845063,11.35922544,0.567961272,-56.22816542\n205.016893,8.128,14.478,56.77539445,1.534470134,4.20444803,-416.2403639\n189.462322,9.652,14.732,129.4477627,4.175734346,1.545021802,-152.9571465\n194.036243,10.668,14.986,80.0852635,6.160405002,1.047268924,-103.6796141\n194.036243,12.7,15.494,80.0852635,6.160405002,2.094537594,-102.6323452\n198.434949,14.224,16.002,56.22529674,8.032185358,1.60643697,-78.71541559\n6.340192,11.938,15.748,204.7621356,2.804960862,2.30006779,-227.7067148\n315,11.684,16.002,17.96051221,17.96051221,0.359210356,-35.56181432\n45,11.43,15.748,17.96051221,17.96051221,0.359210356,-35.56181432\n23.198591,9.652,14.986,56.69811774,3.335183322,1.934406342,-191.5062304\n0,8.89,14.986,0,25.4,0.762,-24.638\n45,8.128,14.224,17.96051221,17.96051221,1.077630814,-34.84339386\n236.309932,8.636,14.986,56.35753981,7.04469254,0.915809954,-90.6651923\n206.565051,9.144,15.24,34.07767607,11.35922544,0.567961272,-56.22816542\n206.565051,10.668,16.002,34.07767607,11.35922544,1.703883816,-55.09224288\n206.565051,11.176,16.256,34.07767607,11.35922544,0.567961272,-56.22816542\n206.565051,11.684,16.51,34.07767607,11.35922544,0.567961272,-56.22816542\n180,14.478,16.51,0,25.4,2.794,-22.606\n225,14.732,16.764,17.96051221,17.96051221,0.359210356,-35.56181432\n321.340192,13.462,17.78,126.9380337,3.966813504,1.626393496,-161.0129622\n296.565051,13.208,18.288,34.07767607,11.35922544,0.567961272,-56.22816542\n285.945396,12.7,20.066,80.24604144,3.488958224,1.84914794,-183.0656433\n254.054604,13.208,21.844,104.6687498,3.488958224,1.84914794,-183.0656433\n135,13.462,21.59,17.96051221,17.96051221,0.359210356,-35.56181432\n90,13.462,20.828,0,25.4,0.762,-24.638\n71.565051,13.208,20.066,24.09655582,8.032185358,0.803218612,-79.51863395\n105.945396,13.716,18.288,80.24604144,3.488958224,1.84914794,-183.0656433\n135,14.732,17.272,17.96051221,17.96051221,1.436840916,-34.48418351\n180,14.986,17.272,0,25.4,0.254,-25.146\n270,14.986,17.526,0,25.4,0.254,-25.146\n270,14.986,18.034,0,25.4,0.508,-24.892\n296.565051,14.732,18.542,34.07767607,11.35922544,0.567961272,-56.22816542\n278.130102,14.478,20.32,154.4604053,3.592102544,1.796051272,-177.8090711\n251.565051,14.732,21.082,24.09655582,8.032185358,0.803218612,-79.51863395\n225,14.986,21.336,17.96051221,17.96051221,0.359210356,-35.56181432\n225,15.24,21.59,17.96051221,17.96051221,0.359210356,-35.56181432\n243.434949,15.494,22.098,22.71845063,11.35922544,0.567961272,-56.22816542\n243.434949,16.002,23.114,22.71845063,11.35922544,1.135922544,-55.66020415\n243.434949,16.51,24.13,22.71845063,11.35922544,1.135922544,-55.66020415\n225,16.764,24.384,17.96051221,17.96051221,0.359210356,-35.56181432\n168.690068,20.574,23.622,24.90674927,4.981349956,3.885452986,-125.6296428\n355.601295,17.272,23.876,25.32518405,1.9480911,3.31175487,-327.8637273\n56.309932,16.764,23.114,56.35753981,7.04469254,0.915809954,-90.6651923\n56.309932,16.256,22.352,56.35753981,7.04469254,0.915809954,-90.6651923\n63.434949,16.002,21.844,22.71845063,11.35922544,0.567961272,-56.22816542\n56.309932,15.494,21.082,56.35753981,7.04469254,0.915809954,-90.6651923\n71.565051,15.24,20.32,24.09655582,8.032185358,0.803218612,-79.51863395\n90,15.24,20.066,0,25.4,0.254,-25.146\n90,15.24,19.558,0,25.4,0.508,-24.892\n90,15.24,18.796,0,25.4,0.762,-24.638\n225,15.494,19.05,17.96051221,17.96051221,0.359210356,-35.56181432\n243.434949,15.748,19.558,22.71845063,11.35922544,0.567961272,-56.22816542\n225,16.002,19.812,17.96051221,17.96051221,0.359210356,-35.56181432\n206.565051,16.51,20.066,34.07767607,11.35922544,0.567961272,-56.22816542\n206.565051,17.018,20.32,34.07767607,11.35922544,0.567961272,-56.22816542\n180,17.526,20.32,0,25.4,0.508,-24.892\n180,18.034,20.32,0,25.4,0.508,-24.892\n180,18.796,20.32,0,25.4,0.762,-24.638\n153.434949,19.304,20.066,22.71845063,11.35922544,0.567961272,-56.22816542\n135,19.558,19.812,17.96051221,17.96051221,0.359210356,-35.56181432\n135,14.224,14.224,17.96051221,17.96051221,0.359210356,-35.56181432\n26.565051,19.558,18.796,34.07767607,11.35922544,0.567961272,-56.22816542\n56.309932,19.05,18.034,56.35753981,7.04469254,0.915809954,-90.6651923\n14.036243,18.034,17.78,80.0852635,6.160405002,1.047268924,-103.6796141\n90,18.034,17.018,0,25.4,0.762,-24.638\n341.565051,17.272,17.272,24.09655582,8.032185358,0.803218612,-79.51863395\n0,17.018,17.272,0,25.4,0.254,-25.146\n90,14.224,13.97,0,25.4,0.254,-25.146\n180,14.478,13.97,0,25.4,0.254,-25.146\n225,14.732,14.224,17.96051221,17.96051221,0.359210356,-35.56181432\n270,14.732,14.478,0,25.4,0.254,-25.146\n135,14.986,14.224,17.96051221,17.96051221,0.359210356,-35.56181432\n74.475889,13.716,9.652,289.6013664,1.359630758,4.745111668,-469.7660475\n90,13.716,9.144,0,25.4,0.508,-24.892\n45,13.462,8.89,17.96051221,17.96051221,0.359210356,-35.56181432\n90,13.462,8.128,0,25.4,0.762,-24.638\n63.434949,11.938,5.08,22.71845063,11.35922544,3.407767632,-53.38835906\n90,11.938,4.826,0,25.4,0.254,-25.146\n56.309932,11.43,4.064,56.35753981,7.04469254,0.915809954,-90.6651923\n57.994617,10.16,2.032,148.0817038,2.692394666,2.396231174,-237.2268895\n45,9.906,1.778,17.96051221,17.96051221,0.359210356,-35.56181432\n180,10.16,1.778,0,25.4,0.254,-25.146\n225,10.414,2.032,17.96051221,17.96051221,0.359210356,-35.56181432\n236.309932,11.938,4.318,56.35753981,7.04469254,2.747430116,-88.8335724\n206.565051,12.446,4.572,34.07767607,11.35922544,0.567961272,-56.22816542\n244.983107,14.224,8.382,363.6694177,1.534470134,4.20444803,-416.2403639\n260.537678,14.478,9.906,25.05440557,4.175734346,1.545021802,-152.9571465\n255.963757,14.732,10.922,24.6416195,6.160405002,1.047268924,-103.6796141\n255.963757,15.24,12.954,24.6416195,6.160405002,2.094537594,-102.6323452\n251.565051,15.748,14.478,24.09655582,8.032185358,1.60643697,-78.71541559\n83.659808,15.494,12.192,25.24464674,2.804960862,2.30006779,-227.7067148\n135,15.748,11.938,17.96051221,17.96051221,0.359210356,-35.56181432\n45,15.494,11.684,17.96051221,17.96051221,0.359210356,-35.56181432\n66.801409,14.732,9.906,136.7425193,3.335183322,1.934406342,-191.5062304\n90,14.732,9.144,0,25.4,0.762,-24.638\n45,13.97,8.382,17.96051221,17.96051221,1.077630814,-34.84339386\n213.690068,14.732,8.89,35.22346245,7.04469254,0.915809954,-90.6651923\n243.434949,14.986,9.398,22.71845063,11.35922544,0.567961272,-56.22816542\n243.434949,15.748,10.922,22.71845063,11.35922544,1.703883816,-55.09224288\n243.434949,16.002,11.43,22.71845063,11.35922544,0.567961272,-56.22816542\n243.434949,16.256,11.938,22.71845063,11.35922544,0.567961272,-56.22816542\n270,16.256,14.732,0,25.4,2.794,-22.606\n225,16.51,14.986,17.96051221,17.96051221,0.359210356,-35.56181432\n128.659808,17.526,13.716,35.70132204,3.966813504,1.626393496,-161.0129622\n153.434949,18.034,13.462,22.71845063,11.35922544,0.567961272,-56.22816542\n164.054604,19.812,12.954,104.6687498,3.488958224,1.84914794,-183.0656433\n195.945396,21.59,13.462,80.24604144,3.488958224,1.84914794,-183.0656433\n315,21.336,13.716,17.96051221,17.96051221,0.359210356,-35.56181432\n0,20.574,13.716,0,25.4,0.762,-24.638\n18.434949,19.812,13.462,56.22529674,8.032185358,0.803218612,-79.51863395\n344.054604,18.034,13.97,104.6687498,3.488958224,1.84914794,-183.0656433\n315,17.018,14.986,17.96051221,17.96051221,1.436840916,-34.48418351\n270,17.018,15.24,0,25.4,0.254,-25.146\n180,17.272,15.24,0,25.4,0.254,-25.146\n180,17.78,15.24,0,25.4,0.508,-24.892\n153.434949,18.288,14.986,22.71845063,11.35922544,0.567961272,-56.22816542\n171.869898,20.066,14.732,25.14471705,3.592102544,1.796051272,-177.8090711\n198.434949,20.828,14.986,56.22529674,8.032185358,0.803218612,-79.51863395\n225,21.082,15.24,17.96051221,17.96051221,0.359210356,-35.56181432\n225,21.336,15.494,17.96051221,17.96051221,0.359210356,-35.56181432\n206.565051,21.844,15.748,34.07767607,11.35922544,0.567961272,-56.22816542\n206.565051,22.86,16.256,34.07767607,11.35922544,1.135922544,-55.66020415\n206.565051,23.876,16.764,34.07767607,11.35922544,1.135922544,-55.66020415\n225,24.13,17.018,17.96051221,17.96051221,0.359210356,-35.56181432\n281.309932,23.368,20.828,104.6083465,4.981349956,3.885452986,-125.6296428\n94.398705,23.622,17.526,305.8502981,1.9480911,3.31175487,-327.8637273\n33.690068,22.86,17.018,35.22346245,7.04469254,0.915809954,-90.6651923\n33.690068,22.098,16.51,35.22346245,7.04469254,0.915809954,-90.6651923\n26.565051,21.59,16.256,34.07767607,11.35922544,0.567961272,-56.22816542\n33.690068,20.828,15.748,35.22346245,7.04469254,0.915809954,-90.6651923\n18.434949,20.066,15.494,56.22529674,8.032185358,0.803218612,-79.51863395\n0,19.812,15.494,0,25.4,0.254,-25.146\n0,19.304,15.494,0,25.4,0.508,-24.892\n0,18.542,15.494,0,25.4,0.762,-24.638\n225,18.796,15.748,17.96051221,17.96051221,0.359210356,-35.56181432\n206.565051,19.304,16.002,34.07767607,11.35922544,0.567961272,-56.22816542\n225,19.558,16.256,17.96051221,17.96051221,0.359210356,-35.56181432\n243.434949,19.812,16.764,22.71845063,11.35922544,0.567961272,-56.22816542\n243.434949,20.066,17.272,22.71845063,11.35922544,0.567961272,-56.22816542\n270,20.066,17.78,0,25.4,0.508,-24.892\n270,20.066,18.288,0,25.4,0.508,-24.892\n270,20.066,19.05,0,25.4,0.762,-24.638\n296.565051,19.812,19.558,34.07767607,11.35922544,0.567961272,-56.22816542\n315,19.558,19.812,17.96051221,17.96051221,0.359210356,-35.56181432\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*SACNCR,SACNCR\n45, 0,0, 0,2.38125\n45, 1.6838,0, 0,2.38125, 0,-2.38125\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*SCAFFOLD\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n270,19.304,21.336,25.4,25.4,0.508,-24.892\n326.3099325,6.604,4.064,56.357539812,7.04469254,14.652960026,-76.928042486\n90,6.096,12.446,25.4,25.4,0.508,-24.892\n270,6.35,4.064,25.4,25.4,8.128,-17.272\n146.3099325,6.096,21.336,56.357539812,7.04469254,14.65296028,-76.928041978\n180,19.304,12.446,0,25.4,0.508,-24.892\n270,18.796,4.572,25.4,25.4,0.508,-24.892\n0,18.796,21.336,0,25.4,0.508,-24.892\n90,6.35,12.954,25.4,25.4,7.874,-17.526\n270,19.304,12.954,25.4,25.4,0.508,-24.892\n0,6.604,4.318,0,25.4,12.192,-13.208\n0,6.096,12.954,0,25.4,0.508,-24.892\n180,19.304,4.572,0,25.4,0.508,-24.892\n90,18.796,20.828,25.4,25.4,0.508,-24.892\n212.855722,6.096,12.446,514.310608918,0.444520828,14.513605212,-1436.846928942\n147.144278,6.096,4.572,937.049925236,0.444520828,14.513605212,-1436.846928942\n213.6900675,6.096,4.064,35.223462446,7.04469254,14.652959772,-76.928042486\n180,6.096,4.318,0,25.4,12.192,-13.208\n0,6.604,21.082,0,25.4,12.192,-13.208\n90,6.604,4.064,25.4,25.4,0.508,-24.892\n180,19.304,20.828,0,25.4,0.508,-24.892\n90,18.796,12.446,25.4,25.4,0.508,-24.892\n147.144278,18.796,4.572,937.049925236,0.444520828,14.513605466,-1436.846928688\n0,6.096,4.064,0,25.4,0.508,-24.892\n0,6.604,12.7,0,25.4,12.192,-13.208\n270,6.604,21.336,25.4,25.4,0.508,-24.892\n90,19.05,4.572,25.4,25.4,7.874,-17.526\n212.855722,18.796,20.828,514.310608918,0.444520828,14.513605466,-1436.846928688\n180,6.604,12.446,0,25.4,0.508,-24.892\n270,6.096,4.572,25.4,25.4,0.508,-24.892\n0,6.096,21.336,0,25.4,0.508,-24.892\n270,6.604,12.954,25.4,25.4,0.508,-24.892\n270,19.05,20.828,25.4,25.4,7.874,-17.526\n32.855722,6.604,4.572,514.310608918,0.444520828,14.513605466,-1436.846928688\n180,6.604,4.572,0,25.4,0.508,-24.892\n0,18.796,12.954,0,25.4,0.508,-24.892\n90,19.304,4.064,25.4,25.4,0.508,-24.892\n90,6.096,20.828,25.4,25.4,0.508,-24.892\n180,6.096,21.082,0,25.4,12.192,-13.208\n147.144278,6.096,12.954,937.049925236,0.444520828,14.513605212,-1436.846928942\n180,6.096,12.7,0,25.4,12.192,-13.208\n270,6.35,12.446,25.4,25.4,7.874,-17.526\n212.855722,6.096,20.828,514.310608918,0.444520828,14.513605466,-1436.846928688\n0,18.796,4.064,0,25.4,0.508,-24.892\n270,19.05,4.064,25.4,25.4,8.128,-17.272\n180,6.604,20.828,0,25.4,0.508,-24.892\n213.6900675,18.796,4.064,35.223462446,7.04469254,14.652960026,-76.928042486\n327.144278,6.604,20.828,937.049925236,0.444520828,14.513605466,-1436.846928688\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*SQUARE,SQUARE\n0, 0,0, 0,3.175, 3.175,-3.175\n90, 0,0, 0,3.175, 3.175,-3.175\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*SQUIGGLE-01,SQUIGGLE-01\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in mm as metric QCAD3 pattern\n45,2.794,-9.906,17.960512212,17.960512212,28.377609234,-7.54341519\n56.309932,1.778,13.97,56.357539812,7.04469254,1.831620162,-89.74938235\n81.869898,1.524,12.192,25.144717046,3.592102544,1.796051272,-177.809071102\n99.462322,1.778,10.668,129.447762694,4.175734346,1.545021802,-152.95714646\n123.690068,2.794,9.144,35.223462446,7.04469254,1.831620162,-89.74938235\n146.309932,4.318,8.128,56.357539812,7.04469254,1.831620162,-89.74938235\n170.537678,5.842,7.874,25.054405568,4.175734346,1.545021802,-152.95714646\n188.130102,7.62,8.128,154.460405328,3.592102544,1.796051272,-177.809071102\n213.690068,9.144,9.144,35.223462446,7.04469254,1.831620162,-89.74938235\n225,16.51,16.51,17.960512212,17.960512212,10.417097022,-25.503927402\n213.690068,18.034,17.526,35.223462446,7.04469254,1.831620162,-89.74938235\n189.462322,19.558,17.78,129.447762694,4.175734346,1.545021802,-152.95714646\n171.869898,21.336,17.526,25.144717046,3.592102544,1.796051272,-177.809071102\n146.309932,22.86,16.51,56.357539812,7.04469254,1.831620162,-89.74938235\n123.690068,23.876,14.986,35.223462446,7.04469254,1.831620162,-89.74938235\n99.462322,24.13,13.462,129.447762694,4.175734346,1.545021802,-152.95714646\n81.869898,23.876,11.684,25.144717046,3.592102544,1.796051272,-177.809071102\n56.309932,22.86,10.16,56.357539812,7.04469254,1.831620162,-89.74938235\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*SQUIGGLE-02,SQUIGGLE-02\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in mm as metric QCAD3 pattern\n75.963757,25.146,4.064,24.6416195,6.160405002,1.047268924,-103.679614078\n63.434949,24.638,3.048,22.718450626,11.35922544,1.135922544,-55.660204148\n45,23.876,2.286,17.960512212,17.960512212,1.077630814,-34.843393864\n14.036243,22.86,2.032,80.085263502,6.160405002,1.047268924,-103.679614078\n0,21.59,2.032,0,25.4,1.27,-24.13\n345.963757,20.574,2.286,24.6416195,6.160405002,1.047268924,-103.679614078\n315,19.812,3.048,17.960512212,17.960512212,1.077630814,-34.843393864\n296.565051,19.304,4.064,34.077676066,11.35922544,1.135922544,-55.660204148\n284.036243,19.05,5.08,80.085263502,6.160405002,1.047268924,-103.679614078\n281.309932,18.796,21.59,104.608346536,4.981349956,1.29515108,-128.219944728\n303.690068,18.288,22.352,35.223462446,7.04469254,0.915809954,-90.665192304\n315,17.526,23.114,17.960512212,17.960512212,1.077630814,-34.843393864\n345.963757,16.51,23.368,24.6416195,6.160405002,1.047268924,-103.679614078\n0,15.24,23.368,0,25.4,1.27,-24.13\n14.036243,14.224,23.114,80.085263502,6.160405002,1.047268924,-103.679614078\n45,13.462,22.352,17.960512212,17.960512212,1.077630814,-34.843393864\n56.309932,12.954,21.59,56.357539812,7.04469254,0.915809954,-90.665192304\n78.690068,12.7,20.32,24.906749272,4.981349956,1.29515108,-128.219944728\n75.963757,12.446,4.064,24.6416195,6.160405002,1.047268924,-103.679614078\n63.434949,11.938,3.048,22.718450626,11.35922544,1.135922544,-55.660204148\n45,11.176,2.286,17.960512212,17.960512212,1.077630814,-34.843393864\n14.036243,10.16,2.032,80.085263502,6.160405002,1.047268924,-103.679614078\n0,8.89,2.032,0,25.4,1.27,-24.13\n345.963757,7.874,2.286,24.6416195,6.160405002,1.047268924,-103.679614078\n315,7.112,3.048,17.960512212,17.960512212,1.077630814,-34.843393864\n296.565051,6.604,4.064,34.077676066,11.35922544,1.135922544,-55.660204148\n284.036243,6.35,5.08,80.085263502,6.160405002,1.047268924,-103.679614078\n281.309932,6.096,21.59,104.608346536,4.981349956,1.29515108,-128.219944728\n303.690068,5.588,22.352,35.223462446,7.04469254,0.915809954,-90.665192304\n315,4.826,23.114,17.960512212,17.960512212,1.077630814,-34.843393864\n345.963757,3.81,23.368,24.6416195,6.160405002,1.047268924,-103.679614078\n0,2.54,23.368,0,25.4,1.27,-24.13\n14.036243,1.524,23.114,80.085263502,6.160405002,1.047268924,-103.679614078\n45,0.762,22.352,17.960512212,17.960512212,1.077630814,-34.843393864\n56.309932,0.254,21.59,56.357539812,7.04469254,0.915809954,-90.665192304\n78.690068,0,20.32,24.906749272,4.981349956,1.29515108,-128.219944728\n270,19.05,20.32,0,25.4,15.24,-10.16\n270,12.7,20.32,0,25.4,15.24,-10.16\n270,6.35,20.32,0,25.4,15.24,-10.16\n270,0,20.32,0,25.4,15.24,-10.16\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*STARS,STARS\n0, 0,0, 0,5.49926, 3.175,-3.175\n60, 0,0, 0,5.49926, 3.175,-3.175\n120, 1.5875,2.74963, 0,5.49926, 3.175,-3.175\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*STEEL,STEEL\n45, 0,0, 0,3.175\n45, 0,1.5875, 0,3.175\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*SWAMP,SWAMP\n0, 0,0, 12.7,21.997, 3.175,-22.225\n90, 1.5875,0, 21.997,12.7, 1.5875,-42.4066\n90, 1.98438,0, 21.997,12.7, 1.27,-42.7241\n90, 1.19062,0, 21.997,12.7, 1.27,-42.7241\n60, 2.38125,0, 12.7,21.997, 1.016,-24.384\n120, .79375,0, 12.7,21.997, 1.016,-24.384\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*TRANS,TRANS\n0, 0,0, 0,6.35\n0, 0,3.175, 0,6.35, 3.175,-3.175\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*TRI-OVERLAP\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n59.641885,2.286000254,3.81,1206.700468992,0.313103514,20.605334202,-2039.928082188\n300.358115,12.7,21.590000254,853.832947398,0.313103514,20.605334202,-2039.928082188\n180,9.129485678,15.494,0,25.4,18.258981262,-7.141018738\n59.036243,22.737590288,4.452650734,56.628832894,4.356064186,5.17479407,-142.931383936\n180,23.114,3.81,0,25.4,20.827999746,-4.572000254\n300.963757,0,8.89,91.477345366,4.356064186,5.174794324,-142.931383682\n300.784147,3.048,3.81,148.105450296,0.464280504,13.89591328,-1375.695350204\n239.215853,22.352,3.81,1241.485813188,0.464280504,13.89591328,-1375.695350204\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*TRIANG,TRIANG\n60, 0,0, 4.7625,8.24889, 4.7625,-4.7625\n120, 0,0, 4.76250001,8.24889, 4.7625,-4.7625\n0, -2.38125,4.12445, 4.7625,8.24889, 4.7625,-4.7625\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*WEATHERBOARD,WEATHERBOARD\n; By John Hyslop, Manually Entered QCAD3 pattern\n; Developed in mm as metric QCAD3 pattern\n; Metric Hatch Scale 1 Makes 152mm horizontally placed boards\n; with a 13mm offset line to simulate a rounded edge\n0,0,0,0,152\n0,0,13,0,152\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*WEAVING,WEAVING\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in mm as metric QCAD3 pattern\n90,22.86,5.08,0,25.4,1.27,-24.13\n75.963757,22.352,3.048,24.6416195,6.160405002,2.094537594,-102.632345154\n66.801409,21.59,1.27,136.74251925,3.335183322,1.934406342,-191.506230398\n54.462322,20.32,-0.508,91.53339072,2.952690056,2.18499055,-216.314071054\n56.309932,19.304,-2.032,56.357539812,7.04469254,1.831620162,-89.74938235\n90,20.066,5.588,0,25.4,1.778,-23.622\n80.537678,19.812,4.064,25.054405568,4.175734346,1.545021802,-152.95714646\n63.434949,19.05,2.54,22.718450626,11.35922544,1.703883816,-55.092242876\n56.309932,18.034,1.016,56.357539812,7.04469254,1.831620162,-89.74938235\n56.309932,17.018,-0.508,56.357539812,7.04469254,1.831620162,-89.74938235\n333.434949,21.844,6.858,22.718450626,11.35922544,1.703883816,-55.092242876\n344.054604,20.066,7.366,104.668749768,3.488958224,1.84914794,-183.065643266\n0,18.034,7.366,0,25.4,2.032,-23.368\n9.462322,16.51,7.112,129.447762694,4.175734346,1.545021802,-152.95714646\n26.565051,14.986,6.35,34.077676066,11.35922544,1.703883816,-55.092242876\n38.659808,13.716,5.334,35.701322044,3.966813504,1.626393496,-161.0129622\n36.869898,11.684,3.81,35.56,5.08,2.54,-124.46\n20.556045,9.652,3.048,136.750876358,2.97284521,2.170177016,-214.847518234\n330.255119,23.114,9.398,56.708680588,3.150482142,2.047813532,-202.733533318\n344.054604,21.336,9.906,104.668749768,3.488958224,1.84914794,-183.065643266\n352.874984,19.304,10.16,25.203858152,3.150482142,2.047813532,-202.733533318\n0,17.526,10.16,0,25.4,1.778,-23.622\n14.036243,15.494,9.652,80.085263502,6.160405002,2.094537594,-102.632345154\n26.565051,13.462,8.636,34.077676066,11.35922544,2.271845088,-54.524281604\n33.690068,11.938,7.62,35.223462446,7.04469254,1.831620162,-89.74938235\n35.537678,10.16,6.35,126.965671138,2.952690056,2.18499055,-216.314071054\n0,5.08,2.54,0,25.4,1.27,-24.13\n348.690068,3.81,2.794,24.906749272,4.981349956,1.29515108,-128.219944728\n341.565051,3.048,3.048,24.09655582,8.032185358,0.803218612,-79.518633952\n336.801409,1.27,3.81,136.74251925,3.335183322,1.934406342,-191.506230398\n326.309932,-0.254,4.826,56.357539812,7.04469254,1.831620162,-89.74938235\n324.462322,-2.032,6.096,91.53339072,2.952690056,2.18499055,-216.314071054\n0,5.588,5.334,0,25.4,1.778,-23.622\n350.537678,4.064,5.588,25.054405568,4.175734346,1.545021802,-152.95714646\n333.434949,2.54,6.35,22.718450626,11.35922544,1.703883816,-55.092242876\n326.309932,1.016,7.366,56.357539812,7.04469254,1.831620162,-89.74938235\n326.309932,-0.508,8.382,56.357539812,7.04469254,1.831620162,-89.74938235\n60.255119,16.002,23.114,56.708680588,3.150482142,2.047813532,-202.733533318\n180,20.066,20.066,0,25.4,2.032,-23.368\n164.054604,21.844,19.558,104.668749768,3.488958224,1.84914794,-183.065643266\n153.434949,23.368,18.796,22.718450626,11.35922544,1.703883816,-55.092242876\n330.255119,23.114,22.098,56.708680588,3.150482142,2.047813532,-202.733533318\n345.963757,21.082,22.606,24.6416195,6.160405002,2.094537594,-102.632345154\n352.874984,19.05,22.86,25.203858152,3.150482142,2.047813532,-202.733533318\n60.255119,18.288,21.59,56.708680588,3.150482142,2.047813532,-202.733533318\n80.537678,18.034,20.066,25.054405568,4.175734346,1.545021802,-152.95714646\n90,18.034,18.034,0,25.4,2.032,-23.368\n104.036243,18.542,16.002,80.085263502,6.160405002,2.094537594,-102.632345154\n116.565051,19.304,14.478,34.077676066,11.35922544,1.703883816,-55.092242876\n129.805571,20.574,12.954,35.773504272,3.252136752,1.9838035,-196.396538372\n123.690068,21.59,11.43,35.223462446,7.04469254,1.831620162,-89.74938235\n113.198591,22.352,9.652,56.698117744,3.335183322,1.934406342,-191.506230398\n309.805571,18.034,11.684,35.773504272,3.252136752,1.9838035,-196.396538372\n305.537678,16.764,13.462,126.965671138,2.952690056,2.18499055,-216.314071054\n299.744881,15.748,15.24,148.072666262,3.150482142,2.047813532,-202.733533318\n285.945396,15.24,17.018,80.246041438,3.488958224,1.84914794,-183.065643266\n270,15.24,19.304,0,25.4,2.286,-23.114\n74.054604,15.494,21.336,104.668749768,3.488958224,1.84914794,-183.065643266\n82.874984,15.24,19.304,25.203858152,3.150482142,2.047813532,-202.733533318\n39.805571,13.716,18.034,35.773504272,3.252136752,1.9838035,-196.396538372\n35.537678,11.938,16.764,126.965671138,2.952690056,2.18499055,-216.314071054\n33.690068,10.414,15.748,35.223462446,7.04469254,1.831620162,-89.74938235\n15.945396,8.636,15.24,80.246041438,3.488958224,1.84914794,-183.065643266\n6.340192,6.35,14.986,204.76213556,2.804960862,2.30006779,-227.706714766\n350.537678,4.826,15.24,25.054405568,4.175734346,1.545021802,-152.95714646\n344.054604,3.048,15.748,104.668749768,3.488958224,1.84914794,-183.065643266\n23.198591,13.97,21.59,56.698117744,3.335183322,1.934406342,-191.506230398\n29.744881,12.192,20.574,148.072666262,3.150482142,2.047813532,-202.733533318\n39.805571,10.668,19.304,35.773504272,3.252136752,1.9838035,-196.396538372\n29.744881,8.89,18.288,148.072666262,3.150482142,2.047813532,-202.733533318\n7.125016,6.858,18.034,179.577488698,3.150482142,2.047813532,-202.733533318\n0,5.334,18.034,0,25.4,1.524,-23.876\n344.054604,3.556,18.542,104.668749768,3.488958224,1.84914794,-183.065643266\n333.434949,2.54,19.05,22.718450626,11.35922544,1.135922544,-55.660204148\n234.462322,7.874,-0.254,91.53339072,2.952690056,2.18499055,-216.314071054\n240.255119,8.89,1.524,56.708680588,3.150482142,2.047813532,-202.733533318\n243.434949,9.906,3.556,22.718450626,11.35922544,2.271845088,-54.524281604\n262.874984,10.16,5.588,25.203858152,3.150482142,2.047813532,-202.733533318\n270,10.16,7.62,0,25.4,2.032,-23.368\n282.528808,9.652,9.906,104.69063898,2.755016842,2.341764176,-231.834664854\n293.198591,8.89,11.684,56.698117744,3.335183322,1.934406342,-191.506230398\n309.805571,7.62,13.208,35.773504272,3.252136752,1.9838035,-196.396538372\n305.537678,6.35,14.986,126.965671138,2.952690056,2.18499055,-216.314071054\n270,5.334,19.812,0,25.4,1.778,-23.622\n254.054604,5.842,21.59,104.668749768,3.488958224,1.84914794,-183.065643266\n246.801409,6.604,23.368,136.74251925,3.335183322,1.934406342,-191.506230398\n236.309932,5.334,1.016,56.357539812,7.04469254,1.831620162,-89.74938235\n234.462322,6.604,2.794,91.53339072,2.952690056,2.18499055,-216.314071054\n249.443955,7.366,4.826,80.266818638,2.97284521,2.170177016,-214.847518234\n270,7.366,6.858,0,25.4,2.032,-23.368\n278.130102,7.112,8.636,154.460405328,3.592102544,1.796051272,-177.809071102\n296.565051,6.096,10.668,34.077676066,11.35922544,2.271845088,-54.524281604\n309.805571,4.826,12.192,35.773504272,3.252136752,1.9838035,-196.396538372\n303.690068,3.81,13.716,35.223462446,7.04469254,1.831620162,-89.74938235\n290.556045,3.048,15.748,136.750876358,2.97284521,2.170177016,-214.847518234\n341.565051,1.524,16.256,24.09655582,8.032185358,1.60643697,-78.715415594\n324.462322,-0.254,17.526,91.53339072,2.952690056,2.18499055,-216.314071054\n324.462322,-2.032,18.796,91.53339072,2.952690056,2.18499055,-216.314071054\n146.309932,1.016,20.066,56.357539812,7.04469254,1.831620162,-89.74938235\n146.309932,2.54,19.05,56.357539812,7.04469254,1.831620162,-89.74938235\n262.874984,2.794,21.082,25.203858152,3.150482142,2.047813532,-202.733533318\n255.963757,3.302,23.114,24.6416195,6.160405002,2.094537594,-102.632345154\n240.255119,4.318,24.892,56.708680588,3.150482142,2.047813532,-202.733533318\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*WIRE-FENCE\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in mm as metric QCAD3 pattern\n315,11.684,12.7,17.960512212,17.960512212,1.186955462,-34.734068962\n315,13.353142966,14.332857034,17.960512212,17.960512212,1.231577928,-34.689446496\n3.731397,12.767918076,14.294690232,381.845330542,0.55100347,0.586467966,-1170.2956782\n183.17983,11.77579941,14.229987034,432.544118908,1.408938508,23.016097986,-434.888914066\n183.17983,11.714581854,13.209697736,432.544118908,1.408938508,23.012451308,-434.892560744\n153.434949,13.208,12.954,22.718450626,11.35922544,0.567961272,-56.22816542\n266.593556,13.208,12.954,432.546308388,0.301846742,25.69937837,-2111.67704156\n266.593556,14.224,13.462,432.546308388,0.301846742,25.69937837,-2111.67704156\n2.602562,12.523304392,11.860695608,534.003174054,1.153354564,0.622066574,-558.754908396\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*XMASTREE-01,XMASTREE-01\n;By John Hyslop\n;Developed in mm as metric QCAD3 pattern\n180,1.016,24.13,0,25.4,1.016,-24.384\n90,1.016,20.828,0,25.4,3.302,-22.098\n180,8.382,20.828,0,25.4,7.366,-18.034\n49.763642,5.588,17.526,198.374734568,1.491539308,4.325464044,-428.2209495\n180,7.112,17.526,0,25.4,1.524,-23.876\n51.340192,4.064,13.716,126.938033652,3.966813504,4.879180742,-157.760174954\n180,5.588,13.716,0,25.4,1.524,-23.876\n52.431408,3.048,10.414,126.990557296,1.548665432,4.165909626,-412.425064658\n180,4.318,10.414,0,25.4,1.27,-24.13\n53.130102,2.032,7.366,91.44,5.08,3.81,-123.19\n180,3.302,7.366,0,25.4,1.27,-24.13\n53.972627,1.27,4.572,218.491081432,1.867445084,3.454773634,-342.02257732\n180,2.54,4.572,0,25.4,1.27,-24.13\n54.462322,0,1.016,91.53339072,2.952690056,4.369981354,-214.129080504\n0,24.384,24.13,0,25.4,1.016,-24.384\n90,24.384,20.828,0,25.4,3.302,-22.098\n0,17.018,20.828,0,25.4,7.366,-18.034\n130.236358,19.812,17.526,234.17167923,1.491539308,4.325464044,-428.2209495\n0,18.288,17.526,0,25.4,1.524,-23.876\n128.659808,21.336,13.716,35.701322044,3.966813504,4.879180742,-157.760174954\n0,19.812,13.716,0,25.4,1.524,-23.876\n127.568592,22.352,10.414,289.600417242,1.548665432,4.165909626,-412.425064658\n0,21.082,10.414,0,25.4,1.27,-24.13\n126.869898,23.368,7.366,35.56,5.08,3.81,-123.19\n0,22.098,7.366,0,25.4,1.27,-24.13\n126.027373,24.13,4.572,126.986269522,1.867445084,3.454773634,-342.02257732\n0,22.86,4.572,0,25.4,1.27,-24.13\n125.537678,25.4,1.016,126.965671138,2.952690056,4.369981354,-214.129080504\n0,11.684,1.016,0,25.4,1.016,-24.384\n270,11.684,4.318,0,25.4,3.302,-22.098\n0,4.318,4.318,0,25.4,7.366,-18.034\n229.763642,7.112,7.62,198.374734568,1.491539308,4.325464044,-428.2209495\n0,5.588,7.62,0,25.4,1.524,-23.876\n231.340192,8.636,11.43,126.938033652,3.966813504,4.879180742,-157.760174954\n0,7.112,11.43,0,25.4,1.524,-23.876\n232.431408,9.652,14.732,126.990557296,1.548665432,4.165909626,-412.425064658\n0,8.382,14.732,0,25.4,1.27,-24.13\n233.130102,10.668,17.78,91.44,5.08,3.81,-123.19\n0,9.398,17.78,0,25.4,1.27,-24.13\n233.972627,11.43,20.574,218.491081432,1.867445084,3.454773634,-342.02257732\n0,10.16,20.574,0,25.4,1.27,-24.13\n234.462322,12.7,24.13,91.53339072,2.952690056,4.369981354,-214.129080504\n180,13.716,1.016,0,25.4,1.016,-24.384\n270,13.716,4.318,0,25.4,3.302,-22.098\n180,21.082,4.318,0,25.4,7.366,-18.034\n310.236358,18.288,7.62,234.17167923,1.491539308,4.325464044,-428.2209495\n180,19.812,7.62,0,25.4,1.524,-23.876\n308.659808,16.764,11.43,35.701322044,3.966813504,4.879180742,-157.760174954\n180,18.288,11.43,0,25.4,1.524,-23.876\n307.568592,15.748,14.732,289.600417242,1.548665432,4.165909626,-412.425064658\n180,17.018,14.732,0,25.4,1.27,-24.13\n306.869898,14.732,17.78,35.56,5.08,3.81,-123.19\n180,16.002,17.78,0,25.4,1.27,-24.13\n306.027373,13.97,20.574,126.986269522,1.867445084,3.454773634,-342.02257732\n180,15.24,20.574,0,25.4,1.27,-24.13\n305.537678,12.7,24.13,126.965671138,2.952690056,4.369981354,-214.129080504\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*XMASTREE-02,XMASTREE-02\n;By John Hyslop\n;Developed in mm as metric QCAD3 pattern\n180,1.016,6.604,0,25.4,1.016,-24.384\n90,1.016,3.302,0,25.4,3.302,-22.098\n180,8.382,3.302,0,25.4,7.366,-18.034\n49.763642,5.588,0,198.374734568,1.491539308,4.325464044,-428.2209495\n180,7.112,25.4,0,25.4,1.524,-23.876\n51.340192,4.064,21.59,126.938033652,3.966813504,4.879180742,-157.760174954\n180,5.588,21.59,0,25.4,1.524,-23.876\n52.431408,3.048,18.288,126.990557296,1.548665432,4.165909626,-412.425064658\n180,4.318,18.288,0,25.4,1.27,-24.13\n53.130102,2.032,15.24,91.44,5.08,3.81,-123.19\n180,3.302,15.24,0,25.4,1.27,-24.13\n53.972627,1.27,12.446,218.491081432,1.867445084,3.454773634,-342.02257732\n180,2.54,12.446,0,25.4,1.27,-24.13\n54.462322,0,8.89,91.53339072,2.952690056,4.369981354,-214.129080504\n0,24.384,6.604,0,25.4,1.016,-24.384\n90,24.384,3.302,0,25.4,3.302,-22.098\n0,17.018,3.302,0,25.4,7.366,-18.034\n130.236358,19.812,0,234.17167923,1.491539308,4.325464044,-428.2209495\n0,18.288,25.4,0,25.4,1.524,-23.876\n128.659808,21.336,21.59,35.701322044,3.966813504,4.879180742,-157.760174954\n0,19.812,21.59,0,25.4,1.524,-23.876\n127.568592,22.352,18.288,289.600417242,1.548665432,4.165909626,-412.425064658\n0,21.082,18.288,0,25.4,1.27,-24.13\n126.869898,23.368,15.24,35.56,5.08,3.81,-123.19\n0,22.098,15.24,0,25.4,1.27,-24.13\n126.027373,24.13,12.446,126.986269522,1.867445084,3.454773634,-342.02257732\n0,22.86,12.446,0,25.4,1.27,-24.13\n125.537678,25.4,8.89,126.965671138,2.952690056,4.369981354,-214.129080504\n0,11.684,2.286,0,25.4,1.016,-24.384\n270,11.684,5.588,0,25.4,3.302,-22.098\n0,4.318,5.588,0,25.4,7.366,-18.034\n229.763642,7.112,8.89,198.374734568,1.491539308,4.325464044,-428.2209495\n0,5.588,8.89,0,25.4,1.524,-23.876\n231.340192,8.636,12.7,126.938033652,3.966813504,4.879180742,-157.760174954\n0,7.112,12.7,0,25.4,1.524,-23.876\n232.431408,9.652,16.002,126.990557296,1.548665432,4.165909626,-412.425064658\n0,8.382,16.002,0,25.4,1.27,-24.13\n233.130102,10.668,19.05,91.44,5.08,3.81,-123.19\n0,9.398,19.05,0,25.4,1.27,-24.13\n233.972627,11.43,21.844,218.491081432,1.867445084,3.454773634,-342.02257732\n0,10.16,21.844,0,25.4,1.27,-24.13\n234.462322,12.7,25.4,91.53339072,2.952690056,4.369981354,-214.129080504\n180,13.716,2.286,0,25.4,1.016,-24.384\n270,13.716,5.588,0,25.4,3.302,-22.098\n180,21.082,5.588,0,25.4,7.366,-18.034\n310.236358,18.288,8.89,234.17167923,1.491539308,4.325464044,-428.2209495\n180,19.812,8.89,0,25.4,1.524,-23.876\n308.659808,16.764,12.7,35.701322044,3.966813504,4.879180742,-157.760174954\n180,18.288,12.7,0,25.4,1.524,-23.876\n307.568592,15.748,16.002,289.600417242,1.548665432,4.165909626,-412.425064658\n180,17.018,16.002,0,25.4,1.27,-24.13\n306.869898,14.732,19.05,35.56,5.08,3.81,-123.19\n180,16.002,19.05,0,25.4,1.27,-24.13\n306.027373,13.97,21.844,126.986269522,1.867445084,3.454773634,-342.02257732\n180,15.24,21.844,0,25.4,1.27,-24.13\n305.537678,12.7,25.4,126.965671138,2.952690056,4.369981354,-214.129080504\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ZIGZAG,ZIGZAG\n0, 0,0, 3.175,3.175, 3.175,-3.175\n90, 3.175,0, 3.175,3.175, 3.175,-3.175\n`))\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO02W100,ACAD_ISO02W100\n0, 0,0, 0,5, 12,-3\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO03W100,ACAD_ISO03W100\n0, 0,0, 0,5, 12,-18\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO04W100,ACAD_ISO04W100\n0, 0,0, 0,5, 24,-3,.5,-3\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO05W100,ACAD_ISO05W100\n0, 0,0, 0,5, 24,-3,.5,-3,.5,-3\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO06W100,ACAD_ISO06W100\n0, 0,0, 0,5, 24,-3,.5,-3,.5,-6.5\n0, 0,0, 0,5, -34,.5,-3\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO07W100,ACAD_ISO07W100\n0, 0,0, 0,5, .5,-3\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO08W100,ACAD_ISO08W100\n0, 0,0, 0,5, 24,-3,6,-3\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO09W100,ACAD_ISO09W100\n0, 0,0, 0,5, 24,-3,6,-3,6,-3\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO10W100,ACAD_ISO10W100\n0, 0,0, 0,5, 12,-3,.5,-3\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO11W100,ACAD_ISO11W100\n0, 0,0, 0,5, 12,-3,12,-3,.5,-3\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO12W100,ACAD_ISO12W100\n0, 0,0, 0,5, 12,-3,.5,-3,.5,-3\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO13W100,ACAD_ISO13W100\n0, 0,0, 0,5, 12,-3,12,-3,.5,-6.5\n0, 0,0, 0,5, -33.5,.5,-3\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO14W100,ACAD_ISO14W100\n0, 0,0, 0,5, 12,-3,.5,-3,.5,-6.5\n0, 0,0, 0,5, -22,.5,-3\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ACAD_ISO15W100,ACAD_ISO15W100\n0, 0,0, 0,5, 12,-3,12,-3,.5,-10\n0, 0,0, 0,5, -33.5,.5,-3,.5,-3\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANGLE,ANGLE\n0, 0,0, 0,.275, .2,-.075\n90, 0,0, 0,.275, .2,-.075\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI31,ANSI31\n45, 0,0, 0,.125\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI32,ANSI32\n45, 0,0, 0,.375\n45, .1767767,0, 0,.375\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI33,ANSI33\n45, 0,0, 0,.25\n45, .1767767,0, 0,.25, .125,-.0625\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI34,ANSI34\n45, 0,0, 0,.75\n45, .1767767,0, 0,.75\n45, .35355339,0, 0,.75\n45, .53033009,0, 0,.75\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI35,ANSI35\n45, 0,0, 0,.25\n45, .1767767,0, 0,.25, .3125,-.0625,0,-.0625\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI36,ANSI36\n45, 0,0, .21875,.125, .3125,-.0625,0,-.0625\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI37,ANSI37\n45, 0,0, 0,.125\n135, 0,0, 0,.125\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ANSI38,ANSI38\n45, 0,0, 0,.125\n135, 0,0, .25,.125, .3125,-.1875\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-B816C,AR-B816C\n0, 0,0, 8,8, 15.625,-.375\n0, -8,.375, 8,8, 15.625,-.375\n90, 0,0, 8,8, -8.375,7.625\n90, -.375,0, 8,8, -8.375,7.625\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-B816,AR-B816\n0, 0,0, 0,8\n90, 0,0, 8,8, 8,-8\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-B88,AR-B88\n0, 0,0, 0,8\n90, 0,0, 8,4, 8,-8\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-BRELM,AR-BRELM\n0, 0,0, 0,5.334, 7.625,-.375\n0, 0,2.25, 0,5.334, 7.625,-.375\n0, 2,2.667, 0,5.334, 3.625,-.375\n0, 2,4.917, 0,5.334, 3.625,-.375\n90, 0,0, 0,8, 2.25,-3.084\n90, -.375,0, 0,8, 2.25,-3.084\n90, 2,2.667, 0,4, 2.25,-3.084\n90, 1.625,2.667, 0,4, 2.25,-3.084\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-BRSTD,AR-BRSTD\n0, 0,0, 0,2.667\n90, 0,0, 2.667,4, 2.667,-2.667\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-CONC-01,AR-CONC-01\n;Optimize to replace existing AR-CONC Pattern\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in inch as imperial QCAD3 pattern\n243.434949,0.3,0.8,8.9442719,4.472136,0.2236068,-22.137073\n90,0.3,0.6,0,10,0.2,-9.8\n0,0.2,0.6,0,10,0.1,-9.9\n315,0.1,0.1,7.0710678,7.0710678,0.1414214,-14.0007143\n206.565051,0.3,0.2,13.4164079,4.472136,0.2236068,-22.137073\n63.434949,0.2,0,8.9442719,4.472136,0.2236068,-22.137073\n45,2,0.4,7.0710678,7.0710678,0.2828427,-13.8592929\n161.565051,2.3,0.3,9.486833,3.1622777,0.3162278,-31.3065488\n288.434949,2.2,0.6,22.1359436,3.1622777,0.3162278,-31.3065488\n315,2.3,0.9,7.0710678,7.0710678,0.1414214,-14.0007143\n206.565051,2.5,1,13.4164079,4.472136,0.2236068,-22.137073\n63.434949,2.4,0.8,8.9442719,4.472136,0.2236068,-22.137073\n270,4.1,0.6,0,10,0.2,-9.8\n45,3.9,0.4,7.0710678,7.0710678,0.2828427,-13.8592929\n180,4.1,0.4,0,10,0.2,-9.8\n333.434949,3.9,0.2,8.9442719,4.472136,0.2236068,-22.137073\n225,4,0.3,7.0710678,7.0710678,0.1414214,-14.0007143\n116.565051,4.1,0.1,13.4164079,4.472136,0.2236068,-22.137073\n198.434949,6.3,0.8,22.1359436,3.1622777,0.3162278,-31.3065488\n63.434949,6.2,0.6,8.9442719,4.472136,0.2236068,-22.137073\n333.434949,6,0.7,8.9442719,4.472136,0.2236068,-22.137073\n26.565051,5.7,0,13.4164079,4.472136,0.2236068,-22.137073\n251.565051,5.8,0.3,9.486833,3.1622777,0.3162278,-31.3065488\n116.565051,5.9,0.1,13.4164079,4.472136,0.2236068,-22.137073\n45,6.7,0.1,7.0710678,7.0710678,0.2828427,-13.8592929\n161.565051,7,0,9.486833,3.1622777,0.3162278,-31.3065488\n288.434949,6.9,0.3,22.1359436,3.1622777,0.3162278,-31.3065488\n315,3,2.8,7.0710678,7.0710678,0.1414214,-14.0007143\n206.565051,3.2,2.9,13.4164079,4.472136,0.2236068,-22.137073\n63.434949,3.1,2.7,8.9442719,4.472136,0.2236068,-22.137073\n45,1.1,0.8,7.0710678,7.0710678,0.2828427,-13.8592929\n180,1.3,0.8,0,10,0.2,-9.8\n270,1.3,1,0,10,0.2,-9.8\n225,1.8,2.4,7.0710678,7.0710678,0.1414214,-14.0007143\n270,1.8,2.6,0,10,0.2,-9.8\n71.565051,1.7,2.3,9.486833,3.1622777,0.3162278,-31.3065488\n198.434949,1,2.1,22.1359436,3.1622777,0.3162278,-31.3065488\n63.434949,0.9,1.9,8.9442719,4.472136,0.2236068,-22.137073\n333.434949,0.7,2,8.9442719,4.472136,0.2236068,-22.137073\n0,3.5,2.2,0,10,0.2,-9.8\n225,3.7,2.4,7.0710678,7.0710678,0.2828427,-13.8592929\n90,3.7,2.2,0,10,0.2,-9.8\n315,4.5,1.7,7.0710678,7.0710678,0.1414214,-14.0007143\n206.565051,4.7,1.8,13.4164079,4.472136,0.2236068,-22.137073\n63.434949,4.6,1.6,8.9442719,4.472136,0.2236068,-22.137073\n315,5.5,2.1,7.0710678,7.0710678,0.1414214,-14.0007143\n270,5.5,2.3,0,10,0.2,-9.8\n108.434949,5.6,2,22.1359436,3.1622777,0.3162278,-31.3065488\n206.565051,6.9,2.7,13.4164079,4.472136,0.2236068,-22.137073\n63.434949,6.8,2.5,8.9442719,4.472136,0.2236068,-22.137073\n315,6.7,2.6,7.0710678,7.0710678,0.1414214,-14.0007143\n333.434949,7.3,1.9,8.9442719,4.472136,0.2236068,-22.137073\n225,7.4,2,7.0710678,7.0710678,0.1414214,-14.0007143\n116.565051,7.5,1.8,13.4164079,4.472136,0.2236068,-22.137073\n26.565051,8.2,1.5,13.4164079,4.472136,0.2236068,-22.137073\n153.434949,8.4,1.4,8.9442719,4.472136,0.2236068,-22.137073\n270,8.4,1.6,0,10,0.2,-9.8\n180,9.3,1.7,0,10,0.1,-9.9\n270,9.3,1.8,0,10,0.1,-9.9\n45,9.2,1.7,7.0710678,7.0710678,0.1414214,-14.0007143\n153.434949,9.3,2.4,8.9442719,4.472136,0.2236068,-22.137073\n270,9.3,2.7,0,10,0.3,-9.7\n45,9.1,2.5,7.0710678,7.0710678,0.2828427,-13.8592929\n206.565051,9.1,3.5,13.4164079,4.472136,0.2236068,-22.137073\n63.434949,9,3.3,8.9442719,4.472136,0.2236068,-22.137073\n315,8.9,3.4,7.0710678,7.0710678,0.1414214,-14.0007143\n180,6.5,2.9,0,10,0.2,-9.8\n270,6.5,3.2,0,10,0.3,-9.7\n56.309932,6.3,2.9,22.1880078,2.773501,0.3605551,-35.6949576\n198.434949,5.4,3.8,22.1359436,3.1622777,0.3162278,-31.3065488\n71.565051,5.3,3.5,9.486833,3.1622777,0.3162278,-31.3065488\n315,5.1,3.7,7.0710678,7.0710678,0.2828427,-13.8592929\n180,3.8,3.3,0,10,0.3,-9.7\n270,3.8,3.6,0,10,0.3,-9.7\n45,3.5,3.3,7.0710678,7.0710678,0.4242641,-13.7178716\n225,3.3,4.3,7.0710678,7.0710678,0.2828427,-13.8592929\n90,3.3,4.1,0,10,0.2,-9.8\n0,3.1,4.1,0,10,0.2,-9.8\n206.565051,1.6,3.9,13.4164079,4.472136,0.2236068,-22.137073\n63.434949,1.5,3.7,8.9442719,4.472136,0.2236068,-22.137073\n315,1.4,3.8,7.0710678,7.0710678,0.1414214,-14.0007143\n108.434949,1,3.7,22.1359436,3.1622777,0.3162278,-31.3065488\n341.565051,0.7,3.8,9.486833,3.1622777,0.3162278,-31.3065488\n225,0.9,4,7.0710678,7.0710678,0.2828427,-13.8592929\n270,1.5,4.5,0,10,0.2,-9.8\n45,1.3,4.3,7.0710678,7.0710678,0.2828427,-13.8592929\n180,1.5,4.3,0,10,0.2,-9.8\n315,3.6,4.7,7.0710678,7.0710678,0.1414214,-14.0007143\n206.565051,3.8,4.8,13.4164079,4.472136,0.2236068,-22.137073\n63.434949,3.7,4.6,8.9442719,4.472136,0.2236068,-22.137073\n0,5.1,4,0,10,0.1,-9.9\n225,5.2,4.1,7.0710678,7.0710678,0.1414214,-14.0007143\n90,5.2,4,0,10,0.1,-9.9\n0,6.9,3.8,0,10,0.2,-9.8\n243.434949,7,4,8.9442719,4.472136,0.2236068,-22.137073\n116.565051,7.1,3.8,13.4164079,4.472136,0.2236068,-22.137073\n26.565051,7.3,4.5,13.4164079,4.472136,0.2236068,-22.137073\n116.565051,7.4,4.3,13.4164079,4.472136,0.2236068,-22.137073\n251.565051,7.5,4.6,9.486833,3.1622777,0.3162278,-31.3065488\n63.434949,8.8,3.6,8.9442719,4.472136,0.2236068,-22.137073\n180,9,3.6,0,10,0.2,-9.8\n296.565051,8.9,3.8,13.4164079,4.472136,0.2236068,-22.137073\n180,9,5.4,0,10,0.3,-9.7\n270,9,5.7,0,10,0.3,-9.7\n45,8.7,5.4,7.0710678,7.0710678,0.4242641,-13.7178716\n180,8.6,5.6,0,10,0.2,-9.8\n270,8.6,5.8,0,10,0.2,-9.8\n45,8.4,5.6,7.0710678,7.0710678,0.2828427,-13.8592929\n243.434949,8.2,6.5,8.9442719,4.472136,0.2236068,-22.137073\n26.565051,8,6.4,13.4164079,4.472136,0.2236068,-22.137073\n135,8.1,6.3,7.0710678,7.0710678,0.1414214,-14.0007143\n243.434949,6.7,6,8.9442719,4.472136,0.2236068,-22.137073\n116.565051,6.8,5.8,13.4164079,4.472136,0.2236068,-22.137073\n0,6.6,5.8,0,10,0.2,-9.8\n225,6.2,6.1,7.0710678,7.0710678,0.2828427,-13.8592929\n108.434949,6.3,5.8,22.1359436,3.1622777,0.3162278,-31.3065488\n341.565051,6,5.9,9.486833,3.1622777,0.3162278,-31.3065488\n135,5.9,5.4,7.0710678,7.0710678,0.1414214,-14.0007143\n243.434949,6,5.6,8.9442719,4.472136,0.2236068,-22.137073\n26.565051,5.8,5.5,13.4164079,4.472136,0.2236068,-22.137073\n180,4.8,6,0,10,0.1,-9.9\n270,4.8,6.1,0,10,0.1,-9.9\n45,4.7,6,7.0710678,7.0710678,0.1414214,-14.0007143\n206.565051,4.4,6.7,13.4164079,4.472136,0.2236068,-22.137073\n63.434949,4.3,6.5,8.9442719,4.472136,0.2236068,-22.137073\n315,4.2,6.6,7.0710678,7.0710678,0.1414214,-14.0007143\n225,3.4,6.5,7.0710678,7.0710678,0.2828427,-13.8592929\n90,3.4,6.2,0,10,0.3,-9.7\n333.434949,3.2,6.3,8.9442719,4.472136,0.2236068,-22.137073\n180,3,6.1,0,10,0.2,-9.8\n270,3,6.3,0,10,0.2,-9.8\n45,2.8,6.1,7.0710678,7.0710678,0.2828427,-13.8592929\n135,2.1,5.6,7.0710678,7.0710678,0.1414214,-14.0007143\n243.434949,2.2,5.8,8.9442719,4.472136,0.2236068,-22.137073\n26.565051,2,5.7,13.4164079,4.472136,0.2236068,-22.137073\n180,1.1,6.3,0,10,0.2,-9.8\n270,1.1,6.5,0,10,0.2,-9.8\n45,0.9,6.3,7.0710678,7.0710678,0.2828427,-13.8592929\n270,0.6,7,0,10,0.3,-9.7\n45,0.4,6.8,7.0710678,7.0710678,0.2828427,-13.8592929\n153.434949,0.6,6.7,8.9442719,4.472136,0.2236068,-22.137073\n243.434949,8.2,7.8,8.9442719,4.472136,0.2236068,-22.137073\n90,8.2,7.6,0,10,0.2,-9.8\n0,8.1,7.6,0,10,0.1,-9.9\n135,8.7,8.2,7.0710678,7.0710678,0.1414214,-14.0007143\n243.434949,8.8,8.4,8.9442719,4.472136,0.2236068,-22.137073\n26.565051,8.6,8.3,13.4164079,4.472136,0.2236068,-22.137073\n180,8.6,8.4,0,10,0.2,-9.8\n251.565051,8.7,8.7,9.486833,3.1622777,0.3162278,-31.3065488\n45,8.4,8.4,7.0710678,7.0710678,0.4242641,-13.7178716\n153.434949,7.2,9.2,8.9442719,4.472136,0.2236068,-22.137073\n135,6.5,7.3,7.0710678,7.0710678,0.1414214,-14.0007143\n243.434949,6.6,7.5,8.9442719,4.472136,0.2236068,-22.137073\n26.565051,6.4,7.4,13.4164079,4.472136,0.2236068,-22.137073\n135,6.3,7.7,7.0710678,7.0710678,0.1414214,-14.0007143\n251.565051,6.4,8,9.486833,3.1622777,0.3162278,-31.3065488\n45,6.2,7.8,7.0710678,7.0710678,0.2828427,-13.8592929\n26.565051,2.6,7.6,13.4164079,4.472136,0.2236068,-22.137073\n153.434949,2.8,7.5,8.9442719,4.472136,0.2236068,-22.137073\n270,2.8,7.7,0,10,0.2,-9.8\n90,4.5,7.9,0,10,0.2,-9.8\n0,4.3,7.9,0,10,0.2,-9.8\n225,4.5,8.1,7.0710678,7.0710678,0.2828427,-13.8592929\n63.434949,4.9,8.3,8.9442719,4.472136,0.2236068,-22.137073\n315,4.8,8.4,7.0710678,7.0710678,0.1414214,-14.0007143\n206.565051,5,8.5,13.4164079,4.472136,0.2236068,-22.137073\n153.434949,5.8,8.8,8.9442719,4.472136,0.2236068,-22.137073\n270,5.8,9.1,0,10,0.3,-9.7\n45,5.6,8.9,7.0710678,7.0710678,0.2828427,-13.8592929\n0,2.8,9.3,0,10,0.3,-9.7\n135,2.6,8,7.0710678,7.0710678,0.1414214,-14.0007143\n270,2.6,8.2,0,10,0.2,-9.8\n45,2.5,8.1,7.0710678,7.0710678,0.1414214,-14.0007143\n116.565051,0.8,8.2,13.4164079,4.472136,0.2236068,-22.137073\n333.434949,0.6,8.3,8.9442719,4.472136,0.2236068,-22.137073\n225,0.7,8.4,7.0710678,7.0710678,0.1414214,-14.0007143\n135,1.2,8.6,7.0710678,7.0710678,0.1414214,-14.0007143\n243.434949,1.3,8.8,8.9442719,4.472136,0.2236068,-22.137073\n26.565051,1.1,8.7,13.4164079,4.472136,0.2236068,-22.137073\n0,8.74875,8.58939,0,10,0,-10\n0,8.12326,9.16255,0,10,0,-10\n0,8.22334,7.41455,0,10,0,-10\n0,7.2264,8.32807,0,10,0,-10\n0,6.60091,8.90123,0,10,0,-10\n0,8.74106,5.28385,0,10,0,-10\n0,8.11556,5.85701,0,10,0,-10\n0,6.70099,7.15323,0,10,0,-10\n0,5.70405,8.06676,0,10,0,-10\n0,5.07855,8.63992,0,10,0,-10\n0,8.21564,4.10901,0,10,0,-10\n0,7.2187,5.02254,0,10,0,-10\n0,6.59321,5.5957,0,10,0,-10\n0,5.17863,6.89192,0,10,0,-10\n0,4.18169,7.80544,0,10,0,-10\n0,3.5562,8.3786,0,10,0,-10\n0,8.73336,1.97832,0,10,0,-10\n0,8.10787,2.55148,0,10,0,-10\n0,6.69329,3.8477,0,10,0,-10\n0,5.69635,4.76122,0,10,0,-10\n0,5.07086,5.33438,0,10,0,-10\n0,3.65628,6.6306,0,10,0,-10\n0,2.65934,7.54413,0,10,0,-10\n0,2.03385,8.11729,0,10,0,-10\n0,8.20795,0.80348,0,10,0,-10\n0,7.21101,1.717,0,10,0,-10\n0,6.58551,2.29016,0,10,0,-10\n0,5.17094,3.58638,0,10,0,-10\n0,4.174,4.49991,0,10,0,-10\n0,3.5485,5.07307,0,10,0,-10\n0,2.13393,6.36929,0,10,0,-10\n0,1.13699,7.28282,0,10,0,-10\n0,0.51149,7.85597,0,10,0,-10\n0,6.68559,0.54216,0,10,0,-10\n0,5.68865,1.45569,0,10,0,-10\n0,5.06316,2.02885,0,10,0,-10\n0,3.53626,3.22649,0,10,0,-10\n0,2.65164,4.23859,0,10,0,-10\n0,2.02615,4.81175,0,10,0,-10\n0,0.61157,6.10797,0,10,0,-10\n0,5.16324,0.28085,0,10,0,-10\n0,4.1663,1.19437,0,10,0,-10\n0,3.54081,1.76753,0,10,0,-10\n0,2.12623,3.06375,0,10,0,-10\n0,1.12929,3.97728,0,10,0,-10\n0,0.5038,4.55044,0,10,0,-10\n0,3.64089,0.01953,0,10,0,-10\n0,2.64395,0.93306,0,10,0,-10\n0,2.01845,1.50622,0,10,0,-10\n0,0.60388,2.80244,0,10,0,-10\n0,1.12159,0.67174,0,10,0,-10\n0,0.4961,1.2449,0,10,0,-10\n0,9.15644,8.35141,0,10,0,-10\n0,8.31335,8.05964,0,10,0,-10\n0,7.76295,8.41028,0,10,0,-10\n0,8.6371,7.02451,0,10,0,-10\n0,6.91985,8.11852,0,10,0,-10\n0,6.36945,8.46916,0,10,0,-10\n0,7.2436,7.08339,0,10,0,-10\n0,5.52636,8.17739,0,10,0,-10\n0,4.97596,8.52804,0,10,0,-10\n0,8.67916,5.33996,0,10,0,-10\n0,8.12876,5.69061,0,10,0,-10\n0,5.85011,7.14227,0,10,0,-10\n0,4.13287,8.23627,0,10,0,-10\n0,3.58247,8.58691,0,10,0,-10\n0,9.00291,4.30484,0,10,0,-10\n0,7.28566,5.39884,0,10,0,-10\n0,6.73527,5.74948,0,10,0,-10\n0,4.45662,7.20114,0,10,0,-10\n0,2.73937,8.29515,0,10,0,-10\n0,2.18897,8.64579,0,10,0,-10\n0,7.60942,4.36371,0,10,0,-10\n0,5.89217,5.45772,0,10,0,-10\n0,5.34177,5.80836,0,10,0,-10\n0,3.06312,7.26002,0,10,0,-10\n0,1.34588,8.35403,0,10,0,-10\n0,0.79548,8.70467,0,10,0,-10\n0,9.04497,2.62029,0,10,0,-10\n0,8.49457,2.97093,0,10,0,-10\n0,6.21592,4.42259,0,10,0,-10\n0,4.49868,5.5166,0,10,0,-10\n0,3.94828,5.86724,0,10,0,-10\n0,1.66963,7.3189,0,10,0,-10\n0,9.36872,1.58516,0,10,0,-10\n0,7.65148,2.67917,0,10,0,-10\n0,7.10108,3.02981,0,10,0,-10\n0,4.82243,4.48147,0,10,0,-10\n0,3.10518,5.57547,0,10,0,-10\n0,2.55479,5.92612,0,10,0,-10\n0,0.27613,7.37778,0,10,0,-10\n0,7.97523,1.64404,0,10,0,-10\n0,6.25798,2.73804,0,10,0,-10\n0,5.70758,3.08869,0,10,0,-10\n0,3.42893,4.54035,0,10,0,-10\n0,1.71169,5.63435,0,10,0,-10\n0,1.16129,5.98499,0,10,0,-10\n0,8.86038,0.25125,0,10,0,-10\n0,6.58173,1.70292,0,10,0,-10\n0,4.86449,2.79692,0,10,0,-10\n0,4.31409,3.14756,0,10,0,-10\n0,2.03544,4.59922,0,10,0,-10\n0,0.3182,5.69323,0,10,0,-10\n0,7.46689,0.31013,0,10,0,-10\n0,5.18824,1.76179,0,10,0,-10\n0,3.471,2.8558,0,10,0,-10\n0,2.9206,3.20644,0,10,0,-10\n0,0.64195,4.6581,0,10,0,-10\n0,6.6238,0.01837,0,10,0,-10\n0,6.0734,0.36901,0,10,0,-10\n0,3.79475,1.82067,0,10,0,-10\n0,2.0775,2.91468,0,10,0,-10\n0,1.5271,3.26532,0,10,0,-10\n0,5.2303,0.07724,0,10,0,-10\n0,4.6799,0.42789,0,10,0,-10\n0,2.40125,1.87955,0,10,0,-10\n0,0.68401,2.97355,0,10,0,-10\n0,0.13361,3.3242,0,10,0,-10\n0,3.83681,0.13612,0,10,0,-10\n0,3.28641,0.48676,0,10,0,-10\n0,1.00776,1.93842,0,10,0,-10\n0,2.44331,0.195,0,10,0,-10\n0,1.89292,0.54564,0,10,0,-10\n0,1.04982,0.25388,0,10,0,-10\n0,0.49942,0.60452,0,10,0,-10\n0,6.42555,9.30607,0,10,0,-10\n0,4.77695,9.08903,0,10,0,-10\n0,3.7883,8.95887,0,10,0,-10\n0,3.13481,8.87284,0,10,0,-10\n0,1.48621,8.6558,0,10,0,-10\n0,0.49757,8.52564,0,10,0,-10\n0,9.02957,8.70973,0,10,0,-10\n0,7.38097,8.49269,0,10,0,-10\n0,6.39232,8.36253,0,10,0,-10\n0,5.73883,8.2765,0,10,0,-10\n0,4.09023,8.05946,0,10,0,-10\n0,3.10158,7.9293,0,10,0,-10\n0,2.4481,7.84327,0,10,0,-10\n0,0.79949,7.62622,0,10,0,-10\n0,8.99634,7.76619,0,10,0,-10\n0,8.34285,7.68016,0,10,0,-10\n0,6.69425,7.46312,0,10,0,-10\n0,5.7056,7.33296,0,10,0,-10\n0,5.05211,7.24692,0,10,0,-10\n0,3.40351,7.02988,0,10,0,-10\n0,2.41487,6.89972,0,10,0,-10\n0,1.76138,6.81369,0,10,0,-10\n0,0.11277,6.59665,0,10,0,-10\n0,9.29827,6.86677,0,10,0,-10\n0,8.30962,6.73662,0,10,0,-10\n0,7.65613,6.65058,0,10,0,-10\n0,6.00753,6.43354,0,10,0,-10\n0,5.01888,6.30338,0,10,0,-10\n0,4.3654,6.21735,0,10,0,-10\n0,2.71679,6.00031,0,10,0,-10\n0,1.72815,5.87015,0,10,0,-10\n0,1.07466,5.78412,0,10,0,-10\n0,8.61155,5.8372,0,10,0,-10\n0,7.6229,5.70704,0,10,0,-10\n0,6.96941,5.62101,0,10,0,-10\n0,5.32081,5.40397,0,10,0,-10\n0,4.33217,5.27381,0,10,0,-10\n0,3.67868,5.18777,0,10,0,-10\n0,2.03007,4.97073,0,10,0,-10\n0,1.04143,4.84057,0,10,0,-10\n0,0.38794,4.75454,0,10,0,-10\n0,7.92483,4.80762,0,10,0,-10\n0,6.93618,4.67747,0,10,0,-10\n0,6.2827,4.59143,0,10,0,-10\n0,4.63409,4.37439,0,10,0,-10\n0,3.64545,4.24423,0,10,0,-10\n0,2.99196,4.1582,0,10,0,-10\n0,1.34336,3.94116,0,10,0,-10\n0,0.35471,3.811,0,10,0,-10\n0,8.88671,3.99509,0,10,0,-10\n0,7.23811,3.77805,0,10,0,-10\n0,6.24947,3.64789,0,10,0,-10\n0,5.59598,3.56186,0,10,0,-10\n0,3.94737,3.34482,0,10,0,-10\n0,2.95873,3.21466,0,10,0,-10\n0,2.30524,3.12862,0,10,0,-10\n0,0.65664,2.91158,0,10,0,-10\n0,8.85348,3.05155,0,10,0,-10\n0,8.19999,2.96552,0,10,0,-10\n0,6.55139,2.74847,0,10,0,-10\n0,5.56275,2.61832,0,10,0,-10\n0,4.90926,2.53228,0,10,0,-10\n0,3.26065,2.31524,0,10,0,-10\n0,2.27201,2.18508,0,10,0,-10\n0,1.61852,2.09905,0,10,0,-10\n0,9.15541,2.15213,0,10,0,-10\n0,8.16676,2.02197,0,10,0,-10\n0,7.51328,1.93594,0,10,0,-10\n0,5.86467,1.7189,0,10,0,-10\n0,4.87603,1.58874,0,10,0,-10\n0,4.22254,1.50271,0,10,0,-10\n0,2.57394,1.28567,0,10,0,-10\n0,1.58529,1.15551,0,10,0,-10\n0,0.9318,1.06947,0,10,0,-10\n0,8.46869,1.12256,0,10,0,-10\n0,7.48005,0.9924,0,10,0,-10\n0,6.82656,0.90637,0,10,0,-10\n0,5.17795,0.68932,0,10,0,-10\n0,4.18931,0.55917,0,10,0,-10\n0,3.53582,0.47313,0,10,0,-10\n0,1.88722,0.25609,0,10,0,-10\n0,0.89857,0.12593,0,10,0,-10\n0,0.24508,0.0399,0,10,0,-10\n0,7.78197,0.09298,0,10,0,-10\n0,1.25458,8.906,0,10,0,-10\n0,2.59486,9.0898,0,10,0,-10\n0,1.22284,8.03701,0,10,0,-10\n0,3.91339,9.25692,0,10,0,-10\n0,2.56312,8.22081,0,10,0,-10\n0,1.19109,7.16803,0,10,0,-10\n0,3.88165,8.38793,0,10,0,-10\n0,2.53137,7.35183,0,10,0,-10\n0,1.15935,6.29904,0,10,0,-10\n0,5.23746,8.58365,0,10,0,-10\n0,3.84991,7.51894,0,10,0,-10\n0,2.49963,6.48284,0,10,0,-10\n0,1.12761,5.43005,0,10,0,-10\n0,6.57774,8.76745,0,10,0,-10\n0,5.20572,7.71466,0,10,0,-10\n0,3.81816,6.64995,0,10,0,-10\n0,2.46789,5.61385,0,10,0,-10\n0,1.09587,4.56106,0,10,0,-10\n0,7.89627,8.93456,0,10,0,-10\n0,6.546,7.89846,0,10,0,-10\n0,5.17398,6.84567,0,10,0,-10\n0,3.78642,5.78096,0,10,0,-10\n0,2.43615,4.74486,0,10,0,-10\n0,1.06413,3.69207,0,10,0,-10\n0,9.25208,9.13028,0,10,0,-10\n0,7.86453,8.06557,0,10,0,-10\n0,6.51425,7.02947,0,10,0,-10\n0,5.14223,5.97668,0,10,0,-10\n0,3.75468,4.91198,0,10,0,-10\n0,2.4044,3.87587,0,10,0,-10\n0,1.03238,2.82308,0,10,0,-10\n0,9.22034,8.26129,0,10,0,-10\n0,7.83279,7.19659,0,10,0,-10\n0,6.48251,6.16048,0,10,0,-10\n0,5.11049,5.10769,0,10,0,-10\n0,3.72294,4.04299,0,10,0,-10\n0,2.37266,3.00688,0,10,0,-10\n0,1.00064,1.9541,0,10,0,-10\n0,9.1886,7.3923,0,10,0,-10\n0,7.80105,6.3276,0,10,0,-10\n0,6.45077,5.29149,0,10,0,-10\n0,5.07875,4.23871,0,10,0,-10\n0,3.6912,3.174,0,10,0,-10\n0,2.34092,2.1379,0,10,0,-10\n0,0.9689,1.08511,0,10,0,-10\n0,9.15686,6.52332,0,10,0,-10\n0,7.7693,5.45861,0,10,0,-10\n0,6.41903,4.42251,0,10,0,-10\n0,5.04701,3.36972,0,10,0,-10\n0,2.30918,1.26891,0,10,0,-10\n0,0.93716,0.21612,0,10,0,-10\n0,9.12511,5.65433,0,10,0,-10\n0,7.73756,4.58962,0,10,0,-10\n0,6.38729,3.55352,0,10,0,-10\n0,5.01527,2.50073,0,10,0,-10\n0,3.62771,1.43602,0,10,0,-10\n0,2.27744,0.39992,0,10,0,-10\n0,9.09337,4.78534,0,10,0,-10\n0,7.70582,3.72063,0,10,0,-10\n0,6.35554,2.68453,0,10,0,-10\n0,4.98352,1.63174,0,10,0,-10\n0,3.59597,0.56703,0,10,0,-10\n0,9.06163,3.91635,0,10,0,-10\n0,7.67408,2.85164,0,10,0,-10\n0,6.3238,1.81554,0,10,0,-10\n0,4.95178,0.76275,0,10,0,-10\n0,9.02989,3.04736,0,10,0,-10\n0,7.64234,1.98266,0,10,0,-10\n0,6.29206,0.94655,0,10,0,-10\n0,8.99815,2.17837,0,10,0,-10\n0,7.61059,1.11367,0,10,0,-10\n0,6.26032,0.07756,0,10,0,-10\n0,8.9664,1.30939,0,10,0,-10\n0,7.57885,0.24468,0,10,0,-10\n0,8.93466,0.4404,0,10,0,-10\n206.565051,10,0.6,13.4164079,4.472136,0.2236068,-22.137073\n63.434949,9.9,0.4,8.9442719,4.472136,0.2236068,-22.137073\n315,9.8,0.5,7.0710678,7.0710678,0.1414214,-14.0007143\n206.565051,9.7,5.4,13.4164079,4.472136,0.2236068,-22.137073\n63.434949,9.6,5.2,8.9442719,4.472136,0.2236068,-22.137073\n315,9.5,5.3,7.0710678,7.0710678,0.1414214,-14.0007143\n153.434949,10,7.2,8.9442719,4.472136,0.2236068,-22.137073\n288.434949,9.9,7.5,22.1359436,3.1622777,0.3162278,-31.3065488\n63.434949,9.8,7.3,8.9442719,4.472136,0.2236068,-22.137073\n135,9.7,9.3,7.0710678,7.0710678,0.1414214,-14.0007143\n270,9.7,9.5,0,10,0.2,-9.8\n45,9.6,9.4,7.0710678,7.0710678,0.1414214,-14.0007143\n0,7.7,9.6,0,10,0.2,-9.8\n270,7.2,9.4,0,10,0.2,-9.8\n26.565051,7,9.3,13.4164079,4.472136,0.2236068,-22.137073\n0,9.50621,9.4965,0,10,0,-10\n0,9.74569,7.67586,0,10,0,-10\n0,9.63792,6.11833,0,10,0,-10\n0,9.738,4.37033,0,10,0,-10\n0,9.63022,2.81279,0,10,0,-10\n0,9.7303,1.06479,0,10,0,-10\n0,9.70684,8.00076,0,10,0,-10\n0,9.52225,5.63173,0,10,0,-10\n0,9.88807,2.91205,0,10,0,-10\n0,8.06768,9.52227,0,10,0,-10\n0,7.07904,9.39211,0,10,0,-10\n0,9.68306,8.79577,0,10,0,-10\n0,9.98498,7.89635,0,10,0,-10\n0,9.57343,5.02467,0,10,0,-10\n0,9.5402,4.08112,0,10,0,-10\n0,9.84213,3.18171,0,10,0,-10\n0,9.43058,0.31003,0,10,0,-10\n243.434949,7.8,9.8,8.9442719,4.472136,0.2236068,-22.137073\n116.565051,7.9,9.6,13.4164079,4.472136,0.2236068,-22.137073\n180,6,9.7,0,10,0.2,-9.8\n270,6,9.9,0,10,0.2,-9.8\n45,5.8,9.7,7.0710678,7.0710678,0.2828427,-13.8592929\n296.565051,4.1,10,13.4164079,4.472136,0.2236068,-22.137073\n63.434949,4,9.8,8.9442719,4.472136,0.2236068,-22.137073\n180,4.2,9.8,0,10,0.2,-9.8\n135,3.4,9.4,7.0710678,7.0710678,0.1414214,-14.0007143\n243.434949,3.5,9.6,8.9442719,4.472136,0.2236068,-22.137073\n26.565051,3.3,9.5,13.4164079,4.472136,0.2236068,-22.137073\n116.565051,3.1,9.3,13.4164079,4.472136,0.2236068,-22.137073\n225,3,9.5,7.0710678,7.0710678,0.2828427,-13.8592929\n45,0,9.7,7.0710678,7.0710678,0.2828427,-13.8592929\n161.565051,0.3,9.6,9.486833,3.1622777,0.3162278,-31.3065488\n288.434949,0.2,9.9,22.1359436,3.1622777,0.3162278,-31.3065488\n0,3.66398,9.93614,0,10,0,-10\n0,2.14162,9.67482,0,10,0,-10\n0,0.61927,9.41351,0,10,0,-10\n0,6.87779,9.80307,0,10,0,-10\n0,5.4843,9.86194,0,10,0,-10\n0,2.69731,9.9797,0,10,0,-10\n0,4.47502,9.98845,0,10,0,-10\n0,3.82153,9.90242,0,10,0,-10\n0,2.17293,9.68537,0,10,0,-10\n0,1.18429,9.55522,0,10,0,-10\n0,0.5308,9.46918,0,10,0,-10\n0,1.28632,9.77499,0,10,0,-10\n0,2.6266,9.95879,0,10,0,-10\n0,5.2692,9.45264,0,10,0,-10\n0,6.60948,9.63644,0,10,0,-10\n0,7.92801,9.80355,0,10,0,-10\n0,9.66478,9.68531,0,10,0,-10\n0,8.27128,9.74419,0,10,0,-10\n0,9.71629,9.73931,0,10,0,-10\n0,9.28383,9.99927,0,10,0,-10\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-CONC,AR-CONC\n50, 0,0, 4.12975034,-5.89789472, .75,-8.25\n355, 0,0, -2.03781207,7.3723684, .6,-6.6\n100.4514, .5977168,-.0522934, 5.7305871,-6.9397673, .6374019,-7.01142112\n46.1842, 0,2, 6.19462551,-8.84684208, 1.125,-12.375\n96.6356, .88936745,1.86206693, 8.59588071,-10.40965104, .95610288,-10.51713\n351.1842, 0,2, 7.74328189,11.0585526, .9,-9.9\n21, 1,1.5, 4.12975034,-5.89789472, .75,-8.25\n326, 1,1.5, -2.03781207,7.3723684, .6,-6.6\n71.4514, 1.49742233,1.16448394, 5.7305871,-6.9397673, .6374019,-7.01142112\n37.5, 0,0, 2.123,2.567, 0,-6.52,0,-6.7,0,-6.625\n7.5, 0,0, 3.123,3.567, 0,-3.82,0,-6.37,0,-2.525\n-32.5, -2.23,0, 4.6234,2.678, 0,-2.5,0,-7.8,0,-10.35\n-42.5, -3.23,0, 3.6234,4.678, 0,-3.25,0,-5.18,0,-7.35\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-HBONE,AR-HBONE\n45, 0,0, 4,4, 12,-4\n135, 2.82842713,2.82842713, 4,-4, 12,-4\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-PARQ1,AR-PARQ1\n90, 0,0, 12,12, 12,-12\n90, 2,0, 12,12, 12,-12\n90, 4,0, 12,12, 12,-12\n90, 6,0, 12,12, 12,-12\n90, 8,0, 12,12, 12,-12\n90, 10,0, 12,12, 12,-12\n90, 12,0, 12,12, 12,-12\n0, 0,12, 12,-12, 12,-12\n0, 0,14, 12,-12, 12,-12\n0, 0,16, 12,-12, 12,-12\n0, 0,18, 12,-12, 12,-12\n0, 0,20, 12,-12, 12,-12\n0, 0,22, 12,-12, 12,-12\n0, 0,24, 12,-12, 12,-12\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-RROOF,AR-RROOF\n0, 0,0, 2.2,1, 15,-2,5,-1\n0, 1.33,.5, -1,1.33, 3,-.33,6,-.75\n0, .5,.85, 5.2,.67, 8,-1.4,4,-1\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-RSHKE,AR-RSHKE\n0, 0,0, 25.5,12, 6,-5,7,-3,9,-4\n0, 6,.5, 25.5,12, 5,-19,4,-6\n0, 18,-.75, 25.5,12, 3,-31\n90, 0,0, 12,8.5, 11.5,-36.5\n90, 6,0, 12,8.5, 11.25,-36.75\n90, 11,0, 12,8.5, 10.5,-37.5\n90, 18,-.75, 12,8.5, 11.5,-36.5\n90, 21,-.75, 12,8.5, 11.5,-36.5\n90, 30,0, 12,8.5, 11,-37\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*AR-SAND,AR-SAND\n37.5, 0,0, 1.123,1.567, 0,-1.52,0,-1.7,0,-1.625\n7.5, 0,0, 2.123,2.567, 0,-.82,0,-1.37,0,-.525\n-32.5, -1.23,0, 2.6234,1.678, 0,-.5,0,-1.8,0,-2.35\n-42.5, -1.23,0, 1.6234,2.678, 0,-.25,0,-1.18,0,-1.35\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BARBWIRE,BARBWIRE\n;By John Hyslop\n;Developed in inch as imperial QCAD3 pattern\n315,0.3,0.56,0.70710678,0.70710678,0.01414214,-1.40007143\n288.434949,0.26,0.68,2.21359436,0.31622777,0.12649111,-3.03578655\n158.198591,0.31,0.66,3.15682075,0.18569534,0.05385165,-5.33131316\n116.565051,0.32,0.64,1.34164079,0.4472136,0.02236068,-2.2137073\n116.565051,0.34,0.6,1.34164079,0.4472136,0.04472136,-2.19134662\n111.801409,0.44,0.39,2.22834406,0.18569534,0.05385165,-5.33131316\n156.801409,0.51,0.36,5.38356375,0.13130643,0.07615773,-7.53961537\n289.653824,0.46,0.5,11.70450662,0.06726728,0.14866069,-14.71740806\n194.036243,0.31,0.36,3.15296313,0.24253563,0.04123106,-4.08187457\n251.565051,0.32,0.39,0.9486833,0.31622777,0.03162278,-3.13065488\n254.054604,0.34,0.46,4.12081692,0.13736056,0.0728011,-7.20730879\n74.744881,0.34,0.46,4.12217269,0.0877058,0.11401754,-11.28773671\n135,0.36,0.44,0.70710678,0.70710678,0.02828427,-1.38592929\n180,0.39,0.44,0,1,0.03,-0.97\n270,0.39,0.45,0,1,0.01,-0.99\n74.054604,0.39,0.45,4.12081692,0.13736056,0.1456022,-7.13450769\n161.565051,0.42,0.44,0.9486833,0.31622777,0.03162278,-3.13065488\n198.434949,0.45,0.45,2.21359436,0.31622777,0.03162278,-3.13065488\n258.231711,0.5,0.69,5.09885635,0.04079085,0.24515301,-24.27014833\n21.801409,0.45,0.67,2.22834406,0.18569534,0.05385165,-5.33131316\n75.963757,0.43,0.59,0.9701425,0.24253563,0.08246211,-4.04064351\n341.565051,0.4,0.6,0.9486833,0.31622777,0.03162278,-3.13065488\n45,0.37,0.57,0.70710678,0.70710678,0.04242641,-1.37178716\n288.434949,0.36,0.6,2.21359436,0.31622777,0.03162278,-3.13065488\n0,0.34,0.6,0,1,0.02,-0.98\n26.565051,0.32,0.59,1.34164079,0.4472136,0.02236068,-2.2137073\n78.231711,0.27,0.35,5.09885635,0.04079085,0.24515301,-24.27014833\n4.085617,0.78,0.48,13.03821015,0.07124705,0.14035669,-13.89531216\n0,0.69,0.48,0,1,0.09,-0.91\n354.289407,0.59,0.49,0.99503719,0.09950372,0.10049876,-9.94937686\n356.185925,0.47,0.55,0.99778516,0.06651901,0.15033296,-14.88296341\n351.469234,0.8,0.55,7.07089492,0.04944682,0.20223748,-20.02151093\n0,0.66,0.55,0,1,0.14,-0.86\n14.036243,0.46,0.5,3.15296313,0.24253563,0.20615528,-3.91695034\n189.865807,0.7,0.51,17.26262336,0.04283529,0.23345235,-23.11178271\n180,0.8,0.51,0,1,0.1,-0.9\n171.469234,1,0.48,7.07089492,0.04944682,0.20223748,-20.02151093\n186.115504,1,0.56,9.05531551,0.03551104,0.15644586,-28.00380982\n5.52754,0.13777778,0.53333333,10.04982433,0.03210806,0.17302679,-30.97179621\n3.691386,0,0.48,15.03326191,0.03219114,0.1515339,-30.91291524\n348.310631,0,0.52,5.0989077,0.0337676,0.29614186,-29.31804393\n348.690068,0,0.56,0.98058068,0.19611614,0.30594117,-4.79307834\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BLOCKS-01,BLOCKS-01 verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n270,0.31,0.66,1,1,0.22,-0.78\n180,0.08,0.09,0,1,0.57,-0.43\n270,0.08,0.09,1,1,0.21,-0.79\n180,0.08,0.88,0,1,0.57,-0.43\n270,0.51,0.09,1,1,0.21,-0.79\n270,0.89,0.32,1,1,0.2,-0.8\n0,0.49,0.32,0,1,0.4,-0.6\n90,0.49,0.12,1,1,0.2,-0.8\n180,0.89,0.12,0,1,0.4,-0.6\n270,0.69,0.84,1,1,0.48,-0.52\n0,0.48,0.84,0,1,0.21,-0.79\n90,0.48,0.36,1,1,0.48,-0.52\n180,0.69,0.36,0,1,0.21,-0.79\n270,0.12,0.03,1,1,0.33,-0.67\n0,0.12,0.7,0,1,0.32,-0.68\n270,0.44,0.03,1,1,0.33,-0.67\n0,0.12,0.03,0,1,0.32,-0.68\n270,0.45,0.67,1,1,0.24,-0.76\n0,0.36,0.67,0,1,0.09,-0.91\n90,0.36,0.43,1,1,0.24,-0.76\n180,0.45,0.43,0,1,0.09,-0.91\n270,0.45,0.4,1,1,0.33,-0.67\n0,0.11,0.4,0,1,0.34,-0.66\n90,0.11,0.07,1,1,0.33,-0.67\n180,0.45,0.07,0,1,0.34,-0.66\n270,0.89,0.41,1,1,0.06,-0.94\n0,0.73,0.41,0,1,0.16,-0.84\n90,0.73,0.35,1,1,0.06,-0.94\n180,0.89,0.35,0,1,0.16,-0.84\n180,0.07,0.4,0,1,0.14,-0.86\n270,0.93,0.4,1,1,0.27,-0.73\n180,0.07,0.13,0,1,0.14,-0.86\n270,0.07,0.4,1,1,0.27,-0.73\n180,0.08,0.81,0,1,0.34,-0.66\n270,0.74,0.81,1,1,0.1,-0.9\n180,0.08,0.71,0,1,0.34,-0.66\n270,0.08,0.81,1,1,0.1,-0.9\n180,0.31,0.66,0,1,0.59,-0.41\n270,0.72,0.66,1,1,0.22,-0.78\n180,0.31,0.44,0,1,0.59,-0.41\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BLOCKS-02,BLOCKS-02 verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n180,0.32,0.18,0,1,0.49,-0.51\n270,0.32,0.55,1,1,0.37,-0.63\n0,0.37,0.96,0,1,0.42,-0.58\n0,0.17,0.98,0,1,0.17,-0.83\n90,0.82,0,1,1,0.15,-0.85\n180,0.92,0,0,1,0.1,-0.9\n180,0.32,0.55,0,1,0.49,-0.51\n270,0.83,0.55,1,1,0.37,-0.63\n180,0.13,0.8,0,1,0.18,-0.82\n90,0.14,0.59,1,1,0.17,-0.83\n270,0.13,0.15,1,1,0.35,-0.65\n180,0.71,0.59,0,1,0.57,-0.43\n270,0.92,0.15,1,1,0.15,-0.85\n0,0.82,0.15,0,1,0.1,-0.9\n270,0.71,0.76,1,1,0.17,-0.83\n0,0.14,0.76,0,1,0.57,-0.43\n180,0.08,0.59,0,1,0.32,-0.68\n270,0.08,0.76,1,1,0.17,-0.83\n180,0.13,0.15,0,1,0.18,-0.82\n270,0.95,0.15,1,1,0.35,-0.65\n90,0.18,0.8,1,1,0.13,-0.87\n180,0.91,0.8,0,1,0.73,-0.27\n180,0.08,0.76,0,1,0.32,-0.68\n270,0.76,0.76,1,1,0.17,-0.83\n270,0.34,0.15,1,1,0.17,-0.83\n0,0.17,0.15,0,1,0.17,-0.83\n270,0.91,0.93,1,1,0.13,-0.87\n0,0.18,0.93,0,1,0.73,-0.27\n0,0.37,0.55,0,1,0.42,-0.58\n270,0.37,0.55,1,1,0.59,-0.41\n270,0.17,0.15,1,1,0.17,-0.83\n270,0.79,0.55,1,1,0.59,-0.41\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BOXJOIN-01,BOXJOIN-01 verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n90,0.15000001,0.15,1,1,0.7,-0.3\n0,0.15000001,0.85,0,1,0.7,-0.3\n270,0.45000001,0.15,1,1,0.3,-0.7\n180,0.15000001,0.45,0,1,0.3,-0.7\n270,0.55000001,0.15,1,1,0.3,-0.7\n180,0.85000001,0.15,0,1,0.7,-0.3\n270,0.85000001,0.85,1,1,0.7,-0.3\n180,0.15000001,0.55,0,1,0.3,-0.7\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BOXJOIN-02,BOXJOIN-02 verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n90,0.15000001,0.55,1,1,0.3,-0.7\n270,0.85000001,0.85,1,1,0.3,-0.7\n0,0.55000001,0.85,0,1,0.3,-0.7\n180,0.15000001,0.55,0,1,0.3,-0.7\n90,0.15000001,0.15,1,1,0.3,-0.7\n180,0.45000001,0.15,0,1,0.3,-0.7\n180,0.15000001,0.45,0,1,0.3,-0.7\n180,0.85000001,0.15,0,1,0.3,-0.7\n270,0.85000001,0.45,1,1,0.3,-0.7\n270,0.45000001,0.15,1,1,0.3,-0.7\n270,0.55000001,0.15,1,1,0.3,-0.7\n0,0.15000001,0.85,0,1,0.3,-0.7\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BOX,BOX\n90, 0,0, 0,1\n90, .25,0, 0,1\n0, 0,0, 0,1, -.25,.25\n0, 0,.25, 0,1, -.25,.25\n0, 0,.5, 0,1, .25,-.25\n0, 0,.75, 0,1, .25,-.25\n90, .5,0, 0,1, .25,-.25\n90, .75,0, 0,1, .25,-.25\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BOX-OVERLAP,BOX-OVERLAP verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n180,0.2,0.7,0,1,0.4,-0.6\n90,0.2,0.2,1,1,0.6,-0.4\n270,0.3,0.2,1,1,0.4,-0.6\n180,0.2,0.3,0,1,0.4,-0.6\n0,0.2,0.8,0,1,0.6,-0.4\n180,0.8,0.2,0,1,0.6,-0.4\n270,0.8,0.8,1,1,0.6,-0.4\n270,0.7,0.2,1,1,0.4,-0.6\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BRASS,BRASS\n0, 0,0, 0,.25\n0, 0,.125, 0,.25, .125,-.0625\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BRICK,BRICK\n0, 0,0, 0,.25\n90, 0,0, 0,.5, .25,-.25\n90, .25,0, 0,.5, -.25,.25\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BRSTONE,BRSTONE\n0, 0,0, 0,.33\n90, .9,0, .33,.5, .33,-.33\n90, .8,0, .33,.5, .33,-.33\n0, .9,.055, .5,.33, -.9,.1\n0, .9,.11, .5,.33, -.9,.1\n0, .9,.165, .5,.33, -.9,.1\n0, .9,.22, .5,.33, -.9,.1\n0, .9,.275, .5,.33, -.9,.1\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BUBBLES-01,BUBBLES-01\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in inch as imperial QCAD3 pattern\n0,0.058964,0.016739,0,1,0,-1\n0,0.062236,0.033193,0,1,0,-1\n0,0.067629,0.049078,0,1,0,-1\n0,0.075048,0.064123,0,1,0,-1\n0,0.084368,0.078071,0,1,0,-1\n0,0.095429,0.090684,0,1,0,-1\n0,0.108041,0.101745,0,1,0,-1\n0,0.12199,0.111065,0,1,0,-1\n0,0.137035,0.118484,0,1,0,-1\n0,0.15292,0.123876,0,1,0,-1\n0,0.169373,0.127149,0,1,0,-1\n0,0.186113,0.128246,0,1,0,-1\n0,0.202852,0.127149,0,1,0,-1\n0,0.219305,0.123876,0,1,0,-1\n0,0.23519,0.118484,0,1,0,-1\n0,0.250236,0.111065,0,1,0,-1\n0,0.264184,0.101745,0,1,0,-1\n0,0.276796,0.090684,0,1,0,-1\n0,0.287857,0.078071,0,1,0,-1\n0,0.297177,0.064123,0,1,0,-1\n0,0.304597,0.049078,0,1,0,-1\n0,0.309989,0.033193,0,1,0,-1\n0,0.313262,0.016739,0,1,0,-1\n0,0.120008,0.220248,0,1,0,-1\n0,0.117478,0.203192,0,1,0,-1\n0,0.113288,0.186467,0,1,0,-1\n0,0.10748,0.170233,0,1,0,-1\n0,0.100108,0.154647,0,1,0,-1\n0,0.091244,0.139858,0,1,0,-1\n0,0.080973,0.126009,0,1,0,-1\n0,0.069394,0.113234,0,1,0,-1\n0,0.056618,0.101655,0,1,0,-1\n0,0.04277,0.091384,0,1,0,-1\n0,0.027981,0.08252,0,1,0,-1\n0,0.012394,0.075148,0,1,0,-1\n0,0.012394,0.39979,0,1,0,-1\n0,0.027981,0.392418,0,1,0,-1\n0,0.04277,0.383554,0,1,0,-1\n0,0.056618,0.373283,0,1,0,-1\n0,0.069394,0.361704,0,1,0,-1\n0,0.080973,0.348929,0,1,0,-1\n0,0.091244,0.33508,0,1,0,-1\n0,0.100108,0.320291,0,1,0,-1\n0,0.10748,0.304704,0,1,0,-1\n0,0.113288,0.28847,0,1,0,-1\n0,0.117478,0.271745,0,1,0,-1\n0,0.120008,0.25469,0,1,0,-1\n0,0.120854,0.237469,0,1,0,-1\n0,0.738076,0.372319,0,1,0,-1\n0,0.732613,0.356706,0,1,0,-1\n0,0.723812,0.3427,0,1,0,-1\n0,0.712116,0.331003,0,1,0,-1\n0,0.69811,0.322203,0,1,0,-1\n0,0.682497,0.316739,0,1,0,-1\n0,0.666059,0.314887,0,1,0,-1\n0,0.649622,0.316739,0,1,0,-1\n0,0.634009,0.322203,0,1,0,-1\n0,0.620003,0.331003,0,1,0,-1\n0,0.608306,0.3427,0,1,0,-1\n0,0.599506,0.356706,0,1,0,-1\n0,0.594042,0.372319,0,1,0,-1\n0,0.59219,0.388756,0,1,0,-1\n0,0.594042,0.405194,0,1,0,-1\n0,0.599506,0.420807,0,1,0,-1\n0,0.608306,0.434813,0,1,0,-1\n0,0.620003,0.44651,0,1,0,-1\n0,0.634009,0.45531,0,1,0,-1\n0,0.649622,0.460773,0,1,0,-1\n0,0.666059,0.462625,0,1,0,-1\n0,0.682497,0.460773,0,1,0,-1\n0,0.69811,0.45531,0,1,0,-1\n0,0.712116,0.44651,0,1,0,-1\n0,0.723812,0.434813,0,1,0,-1\n0,0.732613,0.420807,0,1,0,-1\n0,0.738076,0.405194,0,1,0,-1\n0,0.739928,0.388756,0,1,0,-1\n0,0.834916,0.831041,0,1,0,-1\n0,0.821448,0.840826,0,1,0,-1\n0,0.810309,0.853198,0,1,0,-1\n0,0.462763,0.750408,0,1,0,-1\n0,0.458683,0.734294,0,1,0,-1\n0,0.452005,0.71907,0,1,0,-1\n0,0.442913,0.705153,0,1,0,-1\n0,0.431654,0.692923,0,1,0,-1\n0,0.418536,0.682713,0,1,0,-1\n0,0.403916,0.674801,0,1,0,-1\n0,0.388193,0.669403,0,1,0,-1\n0,0.371796,0.666667,0,1,0,-1\n0,0.355172,0.666667,0,1,0,-1\n0,0.338776,0.669403,0,1,0,-1\n0,0.323053,0.674801,0,1,0,-1\n0,0.308433,0.682713,0,1,0,-1\n0,0.295314,0.692923,0,1,0,-1\n0,0.284056,0.705153,0,1,0,-1\n0,0.274963,0.71907,0,1,0,-1\n0,0.268286,0.734294,0,1,0,-1\n0,0.264205,0.750408,0,1,0,-1\n0,0.262832,0.766975,0,1,0,-1\n0,0.264205,0.783542,0,1,0,-1\n0,0.268286,0.799657,0,1,0,-1\n0,0.274963,0.81488,0,1,0,-1\n0,0.284056,0.828797,0,1,0,-1\n0,0.295314,0.841027,0,1,0,-1\n0,0.308433,0.851238,0,1,0,-1\n0,0.323053,0.85915,0,1,0,-1\n0,0.403916,0.85915,0,1,0,-1\n0,0.418536,0.851238,0,1,0,-1\n0,0.431654,0.841027,0,1,0,-1\n0,0.442913,0.828797,0,1,0,-1\n0,0.452005,0.81488,0,1,0,-1\n0,0.458683,0.799657,0,1,0,-1\n0,0.462763,0.783542,0,1,0,-1\n0,0.464136,0.766975,0,1,0,-1\n0,0.821196,0.648394,0,1,0,-1\n0,0.818556,0.631724,0,1,0,-1\n0,0.814188,0.615423,0,1,0,-1\n0,0.808139,0.599667,0,1,0,-1\n0,0.800477,0.584629,0,1,0,-1\n0,0.791286,0.570475,0,1,0,-1\n0,0.780665,0.557359,0,1,0,-1\n0,0.768731,0.545425,0,1,0,-1\n0,0.755615,0.534804,0,1,0,-1\n0,0.741461,0.525612,0,1,0,-1\n0,0.726423,0.51795,0,1,0,-1\n0,0.710667,0.511902,0,1,0,-1\n0,0.694365,0.507534,0,1,0,-1\n0,0.677696,0.504894,0,1,0,-1\n0,0.660842,0.504011,0,1,0,-1\n0,0.643989,0.504894,0,1,0,-1\n0,0.627319,0.507534,0,1,0,-1\n0,0.611018,0.511902,0,1,0,-1\n0,0.595262,0.51795,0,1,0,-1\n0,0.580224,0.525612,0,1,0,-1\n0,0.56607,0.534804,0,1,0,-1\n0,0.552954,0.545425,0,1,0,-1\n0,0.54102,0.557359,0,1,0,-1\n0,0.530399,0.570475,0,1,0,-1\n0,0.521207,0.584629,0,1,0,-1\n0,0.513545,0.599667,0,1,0,-1\n0,0.507497,0.615423,0,1,0,-1\n0,0.503129,0.631724,0,1,0,-1\n0,0.500489,0.648394,0,1,0,-1\n0,0.499606,0.665247,0,1,0,-1\n0,0.500489,0.682101,0,1,0,-1\n0,0.503129,0.69877,0,1,0,-1\n0,0.507497,0.715072,0,1,0,-1\n0,0.513545,0.730828,0,1,0,-1\n0,0.521207,0.745866,0,1,0,-1\n0,0.530399,0.76002,0,1,0,-1\n0,0.54102,0.773136,0,1,0,-1\n0,0.552954,0.785069,0,1,0,-1\n0,0.56607,0.795691,0,1,0,-1\n0,0.580224,0.804882,0,1,0,-1\n0,0.595262,0.812544,0,1,0,-1\n0,0.611018,0.818592,0,1,0,-1\n0,0.627319,0.822961,0,1,0,-1\n0,0.643989,0.825601,0,1,0,-1\n0,0.660842,0.826484,0,1,0,-1\n0,0.677696,0.825601,0,1,0,-1\n0,0.694365,0.822961,0,1,0,-1\n0,0.710667,0.818592,0,1,0,-1\n0,0.726423,0.812544,0,1,0,-1\n0,0.741461,0.804882,0,1,0,-1\n0,0.755615,0.795691,0,1,0,-1\n0,0.768731,0.785069,0,1,0,-1\n0,0.780665,0.773136,0,1,0,-1\n0,0.791286,0.76002,0,1,0,-1\n0,0.800477,0.745866,0,1,0,-1\n0,0.808139,0.730828,0,1,0,-1\n0,0.814188,0.715072,0,1,0,-1\n0,0.818556,0.69877,0,1,0,-1\n0,0.821196,0.682101,0,1,0,-1\n0,0.822079,0.665247,0,1,0,-1\n0,0.524311,0.381738,0,1,0,-1\n0,0.521577,0.364477,0,1,0,-1\n0,0.517054,0.347597,0,1,0,-1\n0,0.510791,0.331282,0,1,0,-1\n0,0.502858,0.315711,0,1,0,-1\n0,0.49334,0.301054,0,1,0,-1\n0,0.482342,0.287473,0,1,0,-1\n0,0.469984,0.275116,0,1,0,-1\n0,0.456403,0.264118,0,1,0,-1\n0,0.441747,0.2546,0,1,0,-1\n0,0.426175,0.246666,0,1,0,-1\n0,0.40986,0.240403,0,1,0,-1\n0,0.39298,0.23588,0,1,0,-1\n0,0.375719,0.233146,0,1,0,-1\n0,0.358267,0.232232,0,1,0,-1\n0,0.340816,0.233146,0,1,0,-1\n0,0.323555,0.23588,0,1,0,-1\n0,0.306674,0.240403,0,1,0,-1\n0,0.290359,0.246666,0,1,0,-1\n0,0.274788,0.2546,0,1,0,-1\n0,0.260132,0.264118,0,1,0,-1\n0,0.246551,0.275116,0,1,0,-1\n0,0.234193,0.287473,0,1,0,-1\n0,0.223195,0.301054,0,1,0,-1\n0,0.213677,0.315711,0,1,0,-1\n0,0.205743,0.331282,0,1,0,-1\n0,0.199481,0.347597,0,1,0,-1\n0,0.194958,0.364477,0,1,0,-1\n0,0.192224,0.381738,0,1,0,-1\n0,0.191309,0.39919,0,1,0,-1\n0,0.192224,0.416642,0,1,0,-1\n0,0.194958,0.433903,0,1,0,-1\n0,0.199481,0.450783,0,1,0,-1\n0,0.205743,0.467098,0,1,0,-1\n0,0.213677,0.482669,0,1,0,-1\n0,0.223195,0.497326,0,1,0,-1\n0,0.234193,0.510907,0,1,0,-1\n0,0.246551,0.523264,0,1,0,-1\n0,0.260132,0.534262,0,1,0,-1\n0,0.274788,0.54378,0,1,0,-1\n0,0.290359,0.551714,0,1,0,-1\n0,0.306674,0.557977,0,1,0,-1\n0,0.323555,0.5625,0,1,0,-1\n0,0.340816,0.565234,0,1,0,-1\n0,0.358267,0.566148,0,1,0,-1\n0,0.375719,0.565234,0,1,0,-1\n0,0.39298,0.5625,0,1,0,-1\n0,0.40986,0.557977,0,1,0,-1\n0,0.426175,0.551714,0,1,0,-1\n0,0.441747,0.54378,0,1,0,-1\n0,0.456403,0.534262,0,1,0,-1\n0,0.469984,0.523264,0,1,0,-1\n0,0.482342,0.510907,0,1,0,-1\n0,0.49334,0.497326,0,1,0,-1\n0,0.502858,0.482669,0,1,0,-1\n0,0.510791,0.467098,0,1,0,-1\n0,0.517054,0.450783,0,1,0,-1\n0,0.521577,0.433903,0,1,0,-1\n0,0.524311,0.416642,0,1,0,-1\n0,0.525226,0.39919,0,1,0,-1\n0,0.847548,0.091384,0,1,0,-1\n0,0.833699,0.101655,0,1,0,-1\n0,0.820923,0.113234,0,1,0,-1\n0,0.809345,0.126009,0,1,0,-1\n0,0.799074,0.139858,0,1,0,-1\n0,0.790209,0.154647,0,1,0,-1\n0,0.782838,0.170233,0,1,0,-1\n0,0.777029,0.186467,0,1,0,-1\n0,0.77284,0.203192,0,1,0,-1\n0,0.77031,0.220248,0,1,0,-1\n0,0.769464,0.237469,0,1,0,-1\n0,0.77031,0.25469,0,1,0,-1\n0,0.77284,0.271745,0,1,0,-1\n0,0.777029,0.28847,0,1,0,-1\n0,0.782838,0.304704,0,1,0,-1\n0,0.790209,0.320291,0,1,0,-1\n0,0.799074,0.33508,0,1,0,-1\n0,0.809345,0.348929,0,1,0,-1\n0,0.820923,0.361704,0,1,0,-1\n0,0.833699,0.373283,0,1,0,-1\n0,0.847548,0.383554,0,1,0,-1\n0,0.241252,0.63247,0,1,0,-1\n0,0.238633,0.614814,0,1,0,-1\n0,0.234297,0.5975,0,1,0,-1\n0,0.228283,0.580695,0,1,0,-1\n0,0.220652,0.56456,0,1,0,-1\n0,0.211476,0.54925,0,1,0,-1\n0,0.200843,0.534914,0,1,0,-1\n0,0.188857,0.521689,0,1,0,-1\n0,0.175632,0.509702,0,1,0,-1\n0,0.161296,0.49907,0,1,0,-1\n0,0.145986,0.489894,0,1,0,-1\n0,0.129851,0.482262,0,1,0,-1\n0,0.113046,0.476249,0,1,0,-1\n0,0.095732,0.471912,0,1,0,-1\n0,0.078076,0.469293,0,1,0,-1\n0,0.060249,0.468417,0,1,0,-1\n0,0.042421,0.469293,0,1,0,-1\n0,0.024766,0.471912,0,1,0,-1\n0,0.007452,0.476249,0,1,0,-1\n0,0.007452,0.824345,0,1,0,-1\n0,0.024766,0.828682,0,1,0,-1\n0,0.042421,0.831301,0,1,0,-1\n0,0.060249,0.832177,0,1,0,-1\n0,0.078076,0.831301,0,1,0,-1\n0,0.095732,0.828682,0,1,0,-1\n0,0.113046,0.824345,0,1,0,-1\n0,0.129851,0.818332,0,1,0,-1\n0,0.145986,0.8107,0,1,0,-1\n0,0.161296,0.801524,0,1,0,-1\n0,0.175632,0.790892,0,1,0,-1\n0,0.188857,0.778905,0,1,0,-1\n0,0.200843,0.76568,0,1,0,-1\n0,0.211476,0.751344,0,1,0,-1\n0,0.220652,0.736034,0,1,0,-1\n0,0.228283,0.719899,0,1,0,-1\n0,0.234297,0.703094,0,1,0,-1\n0,0.238633,0.68578,0,1,0,-1\n0,0.241252,0.668124,0,1,0,-1\n0,0.242128,0.650297,0,1,0,-1\n0,0.771442,0.048085,0,1,0,-1\n0,0.768672,0.029409,0,1,0,-1\n0,0.764084,0.011095,0,1,0,-1\n0,0.39588,0.011095,0,1,0,-1\n0,0.391292,0.029409,0,1,0,-1\n0,0.388522,0.048085,0,1,0,-1\n0,0.387595,0.066942,0,1,0,-1\n0,0.388522,0.085799,0,1,0,-1\n0,0.391292,0.104475,0,1,0,-1\n0,0.39588,0.122789,0,1,0,-1\n0,0.40224,0.140565,0,1,0,-1\n0,0.410312,0.157632,0,1,0,-1\n0,0.420018,0.173826,0,1,0,-1\n0,0.431265,0.18899,0,1,0,-1\n0,0.443944,0.20298,0,1,0,-1\n0,0.457933,0.215659,0,1,0,-1\n0,0.473098,0.226905,0,1,0,-1\n0,0.489292,0.236612,0,1,0,-1\n0,0.506359,0.244684,0,1,0,-1\n0,0.524135,0.251044,0,1,0,-1\n0,0.542449,0.255632,0,1,0,-1\n0,0.561125,0.258402,0,1,0,-1\n0,0.579982,0.259328,0,1,0,-1\n0,0.598839,0.258402,0,1,0,-1\n0,0.617515,0.255632,0,1,0,-1\n0,0.635829,0.251044,0,1,0,-1\n0,0.653605,0.244684,0,1,0,-1\n0,0.670672,0.236612,0,1,0,-1\n0,0.686866,0.226905,0,1,0,-1\n0,0.702031,0.215659,0,1,0,-1\n0,0.71602,0.20298,0,1,0,-1\n0,0.728699,0.18899,0,1,0,-1\n0,0.739945,0.173826,0,1,0,-1\n0,0.749652,0.157632,0,1,0,-1\n0,0.757724,0.140565,0,1,0,-1\n0,0.764084,0.122789,0,1,0,-1\n0,0.768672,0.104475,0,1,0,-1\n0,0.771442,0.085799,0,1,0,-1\n0,0.772368,0.066942,0,1,0,-1\n0,0.990646,0.482262,0,1,0,-1\n0,0.974511,0.489894,0,1,0,-1\n0,0.959202,0.49907,0,1,0,-1\n0,0.944866,0.509702,0,1,0,-1\n0,0.93164,0.521689,0,1,0,-1\n0,0.919654,0.534914,0,1,0,-1\n0,0.909021,0.54925,0,1,0,-1\n0,0.899845,0.56456,0,1,0,-1\n0,0.892214,0.580695,0,1,0,-1\n0,0.886201,0.5975,0,1,0,-1\n0,0.881864,0.614814,0,1,0,-1\n0,0.879245,0.63247,0,1,0,-1\n0,0.878369,0.650297,0,1,0,-1\n0,0.879245,0.668124,0,1,0,-1\n0,0.881864,0.68578,0,1,0,-1\n0,0.886201,0.703094,0,1,0,-1\n0,0.892214,0.719899,0,1,0,-1\n0,0.899845,0.736034,0,1,0,-1\n0,0.909021,0.751344,0,1,0,-1\n0,0.919654,0.76568,0,1,0,-1\n0,0.93164,0.778905,0,1,0,-1\n0,0.944866,0.790892,0,1,0,-1\n0,0.959202,0.801524,0,1,0,-1\n0,0.974511,0.8107,0,1,0,-1\n0,0.990646,0.818332,0,1,0,-1\n0,0.947478,0.867615,0,1,0,-1\n0,0.939155,0.853198,0,1,0,-1\n0,0.928015,0.840826,0,1,0,-1\n0,0.914547,0.831041,0,1,0,-1\n0,0.899339,0.82427,0,1,0,-1\n0,0.883055,0.820809,0,1,0,-1\n0,0.866408,0.820809,0,1,0,-1\n0,0.850124,0.82427,0,1,0,-1\n0,0.801985,0.867615,0,1,0,-1\n0,0.99616,0.069339,0,1,0,-1\n0,0.979435,0.06515,0,1,0,-1\n0,0.96238,0.06262,0,1,0,-1\n0,0.945159,0.061774,0,1,0,-1\n0,0.927938,0.06262,0,1,0,-1\n0,0.910882,0.06515,0,1,0,-1\n0,0.894157,0.069339,0,1,0,-1\n0,0.877923,0.075148,0,1,0,-1\n0,0.862337,0.08252,0,1,0,-1\n0,0.862337,0.392418,0,1,0,-1\n0,0.877923,0.39979,0,1,0,-1\n0,0.894157,0.405599,0,1,0,-1\n0,0.910882,0.409788,0,1,0,-1\n0,0.927938,0.412318,0,1,0,-1\n0,0.945159,0.413164,0,1,0,-1\n0,0.96238,0.412318,0,1,0,-1\n0,0.979435,0.409788,0,1,0,-1\n0,0.99616,0.405599,0,1,0,-1\n0,0.757724,0.993319,0,1,0,-1\n0,0.749652,0.976251,0,1,0,-1\n0,0.739945,0.960058,0,1,0,-1\n0,0.728699,0.944893,0,1,0,-1\n0,0.71602,0.930904,0,1,0,-1\n0,0.702031,0.918225,0,1,0,-1\n0,0.686866,0.906978,0,1,0,-1\n0,0.670672,0.897272,0,1,0,-1\n0,0.653605,0.8892,0,1,0,-1\n0,0.635829,0.882839,0,1,0,-1\n0,0.617515,0.878252,0,1,0,-1\n0,0.598839,0.875482,0,1,0,-1\n0,0.579982,0.874555,0,1,0,-1\n0,0.561125,0.875482,0,1,0,-1\n0,0.542449,0.878252,0,1,0,-1\n0,0.524135,0.882839,0,1,0,-1\n0,0.506359,0.8892,0,1,0,-1\n0,0.489292,0.897272,0,1,0,-1\n0,0.473098,0.906978,0,1,0,-1\n0,0.457933,0.918225,0,1,0,-1\n0,0.443944,0.930904,0,1,0,-1\n0,0.431265,0.944893,0,1,0,-1\n0,0.420018,0.960058,0,1,0,-1\n0,0.410312,0.976251,0,1,0,-1\n0,0.40224,0.993319,0,1,0,-1\n0,0.796841,0.883448,0,1,0,-1\n0,0.795101,0.900004,0,1,0,-1\n0,0.796841,0.91656,0,1,0,-1\n0,0.801985,0.932393,0,1,0,-1\n0,0.810309,0.94681,0,1,0,-1\n0,0.821448,0.959181,0,1,0,-1\n0,0.834916,0.968966,0,1,0,-1\n0,0.338776,0.864547,0,1,0,-1\n0,0.355172,0.867283,0,1,0,-1\n0,0.371796,0.867283,0,1,0,-1\n0,0.388193,0.864547,0,1,0,-1\n0,0.313262,0.983261,0,1,0,-1\n0,0.309989,0.966807,0,1,0,-1\n0,0.304597,0.950922,0,1,0,-1\n0,0.297177,0.935877,0,1,0,-1\n0,0.287857,0.921929,0,1,0,-1\n0,0.276796,0.909316,0,1,0,-1\n0,0.264184,0.898255,0,1,0,-1\n0,0.250236,0.888935,0,1,0,-1\n0,0.23519,0.881516,0,1,0,-1\n0,0.219305,0.876124,0,1,0,-1\n0,0.202852,0.872851,0,1,0,-1\n0,0.186113,0.871754,0,1,0,-1\n0,0.169373,0.872851,0,1,0,-1\n0,0.15292,0.876124,0,1,0,-1\n0,0.137035,0.881516,0,1,0,-1\n0,0.12199,0.888935,0,1,0,-1\n0,0.108041,0.898255,0,1,0,-1\n0,0.095429,0.909316,0,1,0,-1\n0,0.084368,0.921929,0,1,0,-1\n0,0.075048,0.935877,0,1,0,-1\n0,0.067629,0.950922,0,1,0,-1\n0,0.062236,0.966807,0,1,0,-1\n0,0.058964,0.983261,0,1,0,-1\n0,0.057866,1,0,1,0,-1\n0,0.314359,1,0,1,0,-1\n0,0.952623,0.883448,0,1,0,-1\n0,0.850124,0.975738,0,1,0,-1\n0,0.866408,0.979199,0,1,0,-1\n0,0.883055,0.979199,0,1,0,-1\n0,0.899339,0.975738,0,1,0,-1\n0,0.914547,0.968966,0,1,0,-1\n0,0.928015,0.959181,0,1,0,-1\n0,0.939155,0.94681,0,1,0,-1\n0,0.947478,0.932393,0,1,0,-1\n0,0.952623,0.91656,0,1,0,-1\n0,0.954363,0.900004,0,1,0,-1\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BUBBLES-02,BUBBLES-02\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in inch as imperial QCAD3 pattern\n0,0.01243,0.139689,0,1,0,-1\n0,0.004689,0.124495,0,1,0,-1\n0,0.004689,0.188567,0,1,0,-1\n0,0.01243,0.173373,0,1,0,-1\n0,0.015098,0.156531,0,1,0,-1\n0,0.039159,0.550628,0,1,0,-1\n0,0.03308,0.534599,0,1,0,-1\n0,0.023341,0.52049,0,1,0,-1\n0,0.010509,0.509122,0,1,0,-1\n0,0.010509,0.626172,0,1,0,-1\n0,0.023341,0.614804,0,1,0,-1\n0,0.03308,0.600695,0,1,0,-1\n0,0.039159,0.584666,0,1,0,-1\n0,0.041226,0.567647,0,1,0,-1\n0,0.012655,0.061217,0,1,0,-1\n0,0.029343,0.064052,0,1,0,-1\n0,0.046244,0.065001,0,1,0,-1\n0,0.063146,0.064052,0,1,0,-1\n0,0.079834,0.061217,0,1,0,-1\n0,0.0961,0.05653,0,1,0,-1\n0,0.11174,0.050052,0,1,0,-1\n0,0.126555,0.041864,0,1,0,-1\n0,0.140361,0.032069,0,1,0,-1\n0,0.152983,0.020789,0,1,0,-1\n0,0.164263,0.008167,0,1,0,-1\n0,0.211752,0.623376,0,1,0,-1\n0,0.203326,0.608782,0,1,0,-1\n0,0.190416,0.597949,0,1,0,-1\n0,0.17458,0.592185,0,1,0,-1\n0,0.157727,0.592185,0,1,0,-1\n0,0.141891,0.597949,0,1,0,-1\n0,0.128981,0.608782,0,1,0,-1\n0,0.120555,0.623376,0,1,0,-1\n0,0.117628,0.639973,0,1,0,-1\n0,0.120555,0.65657,0,1,0,-1\n0,0.128981,0.671164,0,1,0,-1\n0,0.141891,0.681997,0,1,0,-1\n0,0.157727,0.687761,0,1,0,-1\n0,0.17458,0.687761,0,1,0,-1\n0,0.190416,0.681997,0,1,0,-1\n0,0.203326,0.671164,0,1,0,-1\n0,0.211752,0.65657,0,1,0,-1\n0,0.214678,0.639973,0,1,0,-1\n0,0.063146,0.764048,0,1,0,-1\n0,0.046244,0.763099,0,1,0,-1\n0,0.029343,0.764048,0,1,0,-1\n0,0.3178,0.248563,0,1,0,-1\n0,0.314583,0.232388,0,1,0,-1\n0,0.309282,0.216771,0,1,0,-1\n0,0.301988,0.20198,0,1,0,-1\n0,0.292825,0.188268,0,1,0,-1\n0,0.281951,0.175868,0,1,0,-1\n0,0.269552,0.164994,0,1,0,-1\n0,0.255839,0.155832,0,1,0,-1\n0,0.241048,0.148538,0,1,0,-1\n0,0.225431,0.143237,0,1,0,-1\n0,0.209256,0.140019,0,1,0,-1\n0,0.1928,0.138941,0,1,0,-1\n0,0.176343,0.140019,0,1,0,-1\n0,0.160168,0.143237,0,1,0,-1\n0,0.144551,0.148538,0,1,0,-1\n0,0.12976,0.155832,0,1,0,-1\n0,0.116047,0.164994,0,1,0,-1\n0,0.103648,0.175868,0,1,0,-1\n0,0.092774,0.188268,0,1,0,-1\n0,0.083612,0.20198,0,1,0,-1\n0,0.076318,0.216771,0,1,0,-1\n0,0.071016,0.232388,0,1,0,-1\n0,0.067799,0.248563,0,1,0,-1\n0,0.06672,0.26502,0,1,0,-1\n0,0.067799,0.281477,0,1,0,-1\n0,0.071016,0.297652,0,1,0,-1\n0,0.076318,0.313268,0,1,0,-1\n0,0.083612,0.32806,0,1,0,-1\n0,0.092774,0.341772,0,1,0,-1\n0,0.103648,0.354171,0,1,0,-1\n0,0.116047,0.365045,0,1,0,-1\n0,0.12976,0.374208,0,1,0,-1\n0,0.144551,0.381502,0,1,0,-1\n0,0.160168,0.386803,0,1,0,-1\n0,0.176343,0.390021,0,1,0,-1\n0,0.1928,0.391099,0,1,0,-1\n0,0.209256,0.390021,0,1,0,-1\n0,0.225431,0.386803,0,1,0,-1\n0,0.241048,0.381502,0,1,0,-1\n0,0.255839,0.374208,0,1,0,-1\n0,0.269552,0.365045,0,1,0,-1\n0,0.281951,0.354171,0,1,0,-1\n0,0.292825,0.341772,0,1,0,-1\n0,0.301988,0.32806,0,1,0,-1\n0,0.309282,0.313268,0,1,0,-1\n0,0.314583,0.297652,0,1,0,-1\n0,0.3178,0.281477,0,1,0,-1\n0,0.318879,0.26502,0,1,0,-1\n0,0.710254,0.515012,0,1,0,-1\n0,0.707834,0.498698,0,1,0,-1\n0,0.703826,0.482701,0,1,0,-1\n0,0.69827,0.467173,0,1,0,-1\n0,0.691219,0.452264,0,1,0,-1\n0,0.682741,0.438119,0,1,0,-1\n0,0.672916,0.424872,0,1,0,-1\n0,0.661841,0.412653,0,1,0,-1\n0,0.649621,0.401577,0,1,0,-1\n0,0.636375,0.391753,0,1,0,-1\n0,0.622229,0.383274,0,1,0,-1\n0,0.607321,0.376223,0,1,0,-1\n0,0.591793,0.370667,0,1,0,-1\n0,0.575795,0.36666,0,1,0,-1\n0,0.559482,0.36424,0,1,0,-1\n0,0.54301,0.363431,0,1,0,-1\n0,0.526538,0.36424,0,1,0,-1\n0,0.510224,0.36666,0,1,0,-1\n0,0.494226,0.370667,0,1,0,-1\n0,0.478698,0.376223,0,1,0,-1\n0,0.46379,0.383274,0,1,0,-1\n0,0.449644,0.391753,0,1,0,-1\n0,0.436398,0.401577,0,1,0,-1\n0,0.424178,0.412653,0,1,0,-1\n0,0.413103,0.424872,0,1,0,-1\n0,0.403279,0.438119,0,1,0,-1\n0,0.3948,0.452264,0,1,0,-1\n0,0.387749,0.467173,0,1,0,-1\n0,0.382193,0.482701,0,1,0,-1\n0,0.378186,0.498698,0,1,0,-1\n0,0.375766,0.515012,0,1,0,-1\n0,0.374957,0.531484,0,1,0,-1\n0,0.375766,0.547956,0,1,0,-1\n0,0.378186,0.56427,0,1,0,-1\n0,0.382193,0.580267,0,1,0,-1\n0,0.387749,0.595795,0,1,0,-1\n0,0.3948,0.610704,0,1,0,-1\n0,0.403279,0.624849,0,1,0,-1\n0,0.413103,0.638096,0,1,0,-1\n0,0.424178,0.650315,0,1,0,-1\n0,0.436398,0.661391,0,1,0,-1\n0,0.449644,0.671215,0,1,0,-1\n0,0.46379,0.679694,0,1,0,-1\n0,0.478698,0.686745,0,1,0,-1\n0,0.494226,0.692301,0,1,0,-1\n0,0.510224,0.696308,0,1,0,-1\n0,0.526538,0.698728,0,1,0,-1\n0,0.54301,0.699537,0,1,0,-1\n0,0.559482,0.698728,0,1,0,-1\n0,0.575795,0.696308,0,1,0,-1\n0,0.591793,0.692301,0,1,0,-1\n0,0.607321,0.686745,0,1,0,-1\n0,0.622229,0.679694,0,1,0,-1\n0,0.636375,0.671215,0,1,0,-1\n0,0.649621,0.661391,0,1,0,-1\n0,0.661841,0.650315,0,1,0,-1\n0,0.672916,0.638096,0,1,0,-1\n0,0.682741,0.624849,0,1,0,-1\n0,0.691219,0.610704,0,1,0,-1\n0,0.69827,0.595795,0,1,0,-1\n0,0.703826,0.580267,0,1,0,-1\n0,0.707834,0.56427,0,1,0,-1\n0,0.710254,0.547956,0,1,0,-1\n0,0.711063,0.531484,0,1,0,-1\n0,0.353512,0.012986,0,1,0,-1\n0,0.351649,0.029516,0,1,0,-1\n0,0.351027,0.046139,0,1,0,-1\n0,0.351649,0.062761,0,1,0,-1\n0,0.353512,0.079291,0,1,0,-1\n0,0.356604,0.095635,0,1,0,-1\n0,0.360909,0.111703,0,1,0,-1\n0,0.366403,0.127404,0,1,0,-1\n0,0.373055,0.14265,0,1,0,-1\n0,0.380828,0.157356,0,1,0,-1\n0,0.389678,0.171441,0,1,0,-1\n0,0.399556,0.184825,0,1,0,-1\n0,0.410406,0.197433,0,1,0,-1\n0,0.422168,0.209196,0,1,0,-1\n0,0.434776,0.220046,0,1,0,-1\n0,0.44816,0.229924,0,1,0,-1\n0,0.462245,0.238774,0,1,0,-1\n0,0.476951,0.246546,0,1,0,-1\n0,0.492198,0.253198,0,1,0,-1\n0,0.507899,0.258692,0,1,0,-1\n0,0.523966,0.262997,0,1,0,-1\n0,0.54031,0.26609,0,1,0,-1\n0,0.55684,0.267952,0,1,0,-1\n0,0.573463,0.268574,0,1,0,-1\n0,0.590085,0.267952,0,1,0,-1\n0,0.606615,0.26609,0,1,0,-1\n0,0.622959,0.262997,0,1,0,-1\n0,0.639027,0.258692,0,1,0,-1\n0,0.654727,0.253198,0,1,0,-1\n0,0.669974,0.246546,0,1,0,-1\n0,0.68468,0.238774,0,1,0,-1\n0,0.698765,0.229924,0,1,0,-1\n0,0.712149,0.220046,0,1,0,-1\n0,0.724757,0.209196,0,1,0,-1\n0,0.736519,0.197433,0,1,0,-1\n0,0.74737,0.184825,0,1,0,-1\n0,0.757248,0.171441,0,1,0,-1\n0,0.766098,0.157356,0,1,0,-1\n0,0.77387,0.14265,0,1,0,-1\n0,0.780522,0.127404,0,1,0,-1\n0,0.928226,0.008167,0,1,0,-1\n0,0.939506,0.020789,0,1,0,-1\n0,0.952128,0.032069,0,1,0,-1\n0,0.965934,0.041864,0,1,0,-1\n0,0.980749,0.050052,0,1,0,-1\n0,0.996388,0.05653,0,1,0,-1\n0,0.992631,0.112437,0,1,0,-1\n0,0.977438,0.104696,0,1,0,-1\n0,0.960595,0.102028,0,1,0,-1\n0,0.943753,0.104696,0,1,0,-1\n0,0.928559,0.112437,0,1,0,-1\n0,0.916502,0.124495,0,1,0,-1\n0,0.90876,0.139689,0,1,0,-1\n0,0.906093,0.156531,0,1,0,-1\n0,0.90876,0.173373,0,1,0,-1\n0,0.916502,0.188567,0,1,0,-1\n0,0.928559,0.200625,0,1,0,-1\n0,0.943753,0.208366,0,1,0,-1\n0,0.960595,0.211034,0,1,0,-1\n0,0.977438,0.208366,0,1,0,-1\n0,0.992631,0.200625,0,1,0,-1\n0,0.995329,0.501155,0,1,0,-1\n0,0.978684,0.497052,0,1,0,-1\n0,0.96154,0.497052,0,1,0,-1\n0,0.944895,0.501155,0,1,0,-1\n0,0.929715,0.509122,0,1,0,-1\n0,0.916882,0.52049,0,1,0,-1\n0,0.907144,0.534599,0,1,0,-1\n0,0.901065,0.550628,0,1,0,-1\n0,0.898998,0.567647,0,1,0,-1\n0,0.901065,0.584666,0,1,0,-1\n0,0.907144,0.600695,0,1,0,-1\n0,0.916882,0.614804,0,1,0,-1\n0,0.929715,0.626172,0,1,0,-1\n0,0.944895,0.634139,0,1,0,-1\n0,0.96154,0.638242,0,1,0,-1\n0,0.978684,0.638242,0,1,0,-1\n0,0.995329,0.634139,0,1,0,-1\n0,0.795276,0.029516,0,1,0,-1\n0,0.793414,0.012986,0,1,0,-1\n0,0.786016,0.111703,0,1,0,-1\n0,0.790321,0.095635,0,1,0,-1\n0,0.793414,0.079291,0,1,0,-1\n0,0.795276,0.062761,0,1,0,-1\n0,0.795898,0.046139,0,1,0,-1\n0,0.790321,0.996642,0,1,0,-1\n0,0.786016,0.980575,0,1,0,-1\n0,0.780522,0.964874,0,1,0,-1\n0,0.77387,0.949628,0,1,0,-1\n0,0.766098,0.934921,0,1,0,-1\n0,0.757248,0.920836,0,1,0,-1\n0,0.74737,0.907452,0,1,0,-1\n0,0.736519,0.894844,0,1,0,-1\n0,0.724757,0.883082,0,1,0,-1\n0,0.712149,0.872232,0,1,0,-1\n0,0.698765,0.862354,0,1,0,-1\n0,0.68468,0.853504,0,1,0,-1\n0,0.669974,0.845731,0,1,0,-1\n0,0.654727,0.839079,0,1,0,-1\n0,0.639027,0.833585,0,1,0,-1\n0,0.622959,0.82928,0,1,0,-1\n0,0.606615,0.826188,0,1,0,-1\n0,0.590085,0.824325,0,1,0,-1\n0,0.573463,0.823703,0,1,0,-1\n0,0.55684,0.824325,0,1,0,-1\n0,0.54031,0.826188,0,1,0,-1\n0,0.523966,0.82928,0,1,0,-1\n0,0.507899,0.833585,0,1,0,-1\n0,0.492198,0.839079,0,1,0,-1\n0,0.476951,0.845731,0,1,0,-1\n0,0.462245,0.853504,0,1,0,-1\n0,0.44816,0.862354,0,1,0,-1\n0,0.434776,0.872232,0,1,0,-1\n0,0.422168,0.883082,0,1,0,-1\n0,0.410406,0.894844,0,1,0,-1\n0,0.399556,0.907452,0,1,0,-1\n0,0.389678,0.920836,0,1,0,-1\n0,0.380828,0.934921,0,1,0,-1\n0,0.373055,0.949628,0,1,0,-1\n0,0.366403,0.964874,0,1,0,-1\n0,0.360909,0.980575,0,1,0,-1\n0,0.356604,0.996642,0,1,0,-1\n0,0.196246,0.897149,0,1,0,-1\n0,0.193411,0.880461,0,1,0,-1\n0,0.188725,0.864194,0,1,0,-1\n0,0.182247,0.848555,0,1,0,-1\n0,0.174058,0.83374,0,1,0,-1\n0,0.164263,0.819934,0,1,0,-1\n0,0.152983,0.807312,0,1,0,-1\n0,0.140361,0.796032,0,1,0,-1\n0,0.126555,0.786236,0,1,0,-1\n0,0.11174,0.778048,0,1,0,-1\n0,0.0961,0.77157,0,1,0,-1\n0,0.079834,0.766884,0,1,0,-1\n0,0.012655,0.766884,0,1,0,-1\n0,0.174058,0.994361,0,1,0,-1\n0,0.182247,0.979545,0,1,0,-1\n0,0.188725,0.963906,0,1,0,-1\n0,0.193411,0.94764,0,1,0,-1\n0,0.196246,0.930951,0,1,0,-1\n0,0.197195,0.91405,0,1,0,-1\n0,0.996388,0.77157,0,1,0,-1\n0,0.980749,0.778048,0,1,0,-1\n0,0.965934,0.786236,0,1,0,-1\n0,0.952128,0.796032,0,1,0,-1\n0,0.939506,0.807312,0,1,0,-1\n0,0.928226,0.819934,0,1,0,-1\n0,0.918431,0.83374,0,1,0,-1\n0,0.910242,0.848555,0,1,0,-1\n0,0.903764,0.864194,0,1,0,-1\n0,0.899078,0.880461,0,1,0,-1\n0,0.896243,0.897149,0,1,0,-1\n0,0.895293,0.91405,0,1,0,-1\n0,0.896243,0.930951,0,1,0,-1\n0,0.899078,0.94764,0,1,0,-1\n0,0.903764,0.963906,0,1,0,-1\n0,0.910242,0.979545,0,1,0,-1\n0,0.918431,0.994361,0,1,0,-1\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*BUBBLES-03,BUBBLES-03\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in inch as imperial QCAD3 pattern\n0,0.401131,0.163621,0,1,0,-1\n0,0.397069,0.144076,0,1,0,-1\n0,0.390384,0.125265,0,1,0,-1\n0,0.3812,0.107541,0,1,0,-1\n0,0.369688,0.091232,0,1,0,-1\n0,0.356062,0.076642,0,1,0,-1\n0,0.340577,0.064044,0,1,0,-1\n0,0.32352,0.053672,0,1,0,-1\n0,0.30521,0.045718,0,1,0,-1\n0,0.285988,0.040333,0,1,0,-1\n0,0.266211,0.037614,0,1,0,-1\n0,0.246248,0.037614,0,1,0,-1\n0,0.226471,0.040333,0,1,0,-1\n0,0.207249,0.045718,0,1,0,-1\n0,0.188938,0.053672,0,1,0,-1\n0,0.171882,0.064044,0,1,0,-1\n0,0.156397,0.076642,0,1,0,-1\n0,0.142771,0.091232,0,1,0,-1\n0,0.131259,0.107541,0,1,0,-1\n0,0.122075,0.125265,0,1,0,-1\n0,0.115389,0.144076,0,1,0,-1\n0,0.111328,0.163621,0,1,0,-1\n0,0.109966,0.183537,0,1,0,-1\n0,0.111328,0.203453,0,1,0,-1\n0,0.115389,0.222999,0,1,0,-1\n0,0.122075,0.241809,0,1,0,-1\n0,0.131259,0.259533,0,1,0,-1\n0,0.142771,0.275842,0,1,0,-1\n0,0.156397,0.290432,0,1,0,-1\n0,0.171882,0.30303,0,1,0,-1\n0,0.188938,0.313403,0,1,0,-1\n0,0.207249,0.321356,0,1,0,-1\n0,0.226471,0.326742,0,1,0,-1\n0,0.246248,0.32946,0,1,0,-1\n0,0.266211,0.32946,0,1,0,-1\n0,0.285988,0.326742,0,1,0,-1\n0,0.30521,0.321356,0,1,0,-1\n0,0.32352,0.313403,0,1,0,-1\n0,0.340577,0.30303,0,1,0,-1\n0,0.356062,0.290432,0,1,0,-1\n0,0.369688,0.275842,0,1,0,-1\n0,0.3812,0.259533,0,1,0,-1\n0,0.390384,0.241809,0,1,0,-1\n0,0.397069,0.222999,0,1,0,-1\n0,0.401131,0.203453,0,1,0,-1\n0,0.402493,0.183537,0,1,0,-1\n0,0.717102,0.580347,0,1,0,-1\n0,0.69634,0.588567,0,1,0,-1\n0,0.676773,0.599325,0,1,0,-1\n0,0.658707,0.61245,0,1,0,-1\n0,0.64243,0.627736,0,1,0,-1\n0,0.628196,0.644941,0,1,0,-1\n0,0.616231,0.663795,0,1,0,-1\n0,0.606724,0.684,0,1,0,-1\n0,0.599823,0.705237,0,1,0,-1\n0,0.595639,0.727171,0,1,0,-1\n0,0.594237,0.749457,0,1,0,-1\n0,0.595639,0.771743,0,1,0,-1\n0,0.599823,0.793677,0,1,0,-1\n0,0.606724,0.814914,0,1,0,-1\n0,0.713243,0.02088,0,1,0,-1\n0,0.688246,0.022108,0,1,0,-1\n0,0.663491,0.02578,0,1,0,-1\n0,0.639215,0.031861,0,1,0,-1\n0,0.615651,0.040292,0,1,0,-1\n0,0.593028,0.050992,0,1,0,-1\n0,0.571562,0.063858,0,1,0,-1\n0,0.551461,0.078766,0,1,0,-1\n0,0.532918,0.095573,0,1,0,-1\n0,0.516111,0.114116,0,1,0,-1\n0,0.501203,0.134218,0,1,0,-1\n0,0.488337,0.155683,0,1,0,-1\n0,0.477637,0.178307,0,1,0,-1\n0,0.469206,0.20187,0,1,0,-1\n0,0.463125,0.226146,0,1,0,-1\n0,0.459453,0.250902,0,1,0,-1\n0,0.458225,0.275898,0,1,0,-1\n0,0.459453,0.300894,0,1,0,-1\n0,0.463125,0.325649,0,1,0,-1\n0,0.469206,0.349926,0,1,0,-1\n0,0.477637,0.373489,0,1,0,-1\n0,0.488337,0.396113,0,1,0,-1\n0,0.501203,0.417578,0,1,0,-1\n0,0.516111,0.43768,0,1,0,-1\n0,0.532918,0.456223,0,1,0,-1\n0,0.551461,0.473029,0,1,0,-1\n0,0.571562,0.487938,0,1,0,-1\n0,0.593028,0.500804,0,1,0,-1\n0,0.615651,0.511504,0,1,0,-1\n0,0.639215,0.519935,0,1,0,-1\n0,0.663491,0.526016,0,1,0,-1\n0,0.688246,0.529688,0,1,0,-1\n0,0.713243,0.530916,0,1,0,-1\n0,0.563094,0.659436,0,1,0,-1\n0,0.558843,0.630776,0,1,0,-1\n0,0.551803,0.602671,0,1,0,-1\n0,0.542042,0.575392,0,1,0,-1\n0,0.529655,0.5492,0,1,0,-1\n0,0.514759,0.524349,0,1,0,-1\n0,0.4975,0.501077,0,1,0,-1\n0,0.478043,0.479609,0,1,0,-1\n0,0.456575,0.460152,0,1,0,-1\n0,0.433303,0.442893,0,1,0,-1\n0,0.408452,0.427998,0,1,0,-1\n0,0.382261,0.41561,0,1,0,-1\n0,0.354981,0.405849,0,1,0,-1\n0,0.326876,0.398809,0,1,0,-1\n0,0.298216,0.394558,0,1,0,-1\n0,0.269278,0.393136,0,1,0,-1\n0,0.240339,0.394558,0,1,0,-1\n0,0.21168,0.398809,0,1,0,-1\n0,0.183575,0.405849,0,1,0,-1\n0,0.156295,0.41561,0,1,0,-1\n0,0.130104,0.427998,0,1,0,-1\n0,0.105252,0.442893,0,1,0,-1\n0,0.081981,0.460152,0,1,0,-1\n0,0.060513,0.479609,0,1,0,-1\n0,0.041056,0.501077,0,1,0,-1\n0,0.023796,0.524349,0,1,0,-1\n0,0.008901,0.5492,0,1,0,-1\n0,0.542042,0.801357,0,1,0,-1\n0,0.551803,0.774077,0,1,0,-1\n0,0.558843,0.745972,0,1,0,-1\n0,0.563094,0.717313,0,1,0,-1\n0,0.564516,0.688374,0,1,0,-1\n0,0.996513,0.575392,0,1,0,-1\n0,0.986753,0.602671,0,1,0,-1\n0,0.979713,0.630776,0,1,0,-1\n0,0.975461,0.659436,0,1,0,-1\n0,0.97404,0.688374,0,1,0,-1\n0,0.975461,0.717313,0,1,0,-1\n0,0.979713,0.745972,0,1,0,-1\n0,0.986753,0.774077,0,1,0,-1\n0,0.996513,0.801357,0,1,0,-1\n0,0.94846,0.727171,0,1,0,-1\n0,0.944275,0.705237,0,1,0,-1\n0,0.937375,0.684,0,1,0,-1\n0,0.927868,0.663795,0,1,0,-1\n0,0.915903,0.644941,0,1,0,-1\n0,0.901669,0.627736,0,1,0,-1\n0,0.885391,0.61245,0,1,0,-1\n0,0.867326,0.599325,0,1,0,-1\n0,0.847758,0.588567,0,1,0,-1\n0,0.826996,0.580347,0,1,0,-1\n0,0.805368,0.574794,0,1,0,-1\n0,0.783214,0.571995,0,1,0,-1\n0,0.760884,0.571995,0,1,0,-1\n0,0.738731,0.574794,0,1,0,-1\n0,0.616231,0.835119,0,1,0,-1\n0,0.628196,0.853972,0,1,0,-1\n0,0.64243,0.871178,0,1,0,-1\n0,0.658707,0.886464,0,1,0,-1\n0,0.676773,0.899589,0,1,0,-1\n0,0.69634,0.910346,0,1,0,-1\n0,0.717102,0.918566,0,1,0,-1\n0,0.738731,0.92412,0,1,0,-1\n0,0.760884,0.926918,0,1,0,-1\n0,0.783214,0.926918,0,1,0,-1\n0,0.805368,0.92412,0,1,0,-1\n0,0.826996,0.918566,0,1,0,-1\n0,0.847758,0.910346,0,1,0,-1\n0,0.867326,0.899589,0,1,0,-1\n0,0.885391,0.886464,0,1,0,-1\n0,0.901669,0.871178,0,1,0,-1\n0,0.915903,0.853972,0,1,0,-1\n0,0.927868,0.835119,0,1,0,-1\n0,0.937375,0.814914,0,1,0,-1\n0,0.944275,0.793677,0,1,0,-1\n0,0.94846,0.771743,0,1,0,-1\n0,0.949862,0.749457,0,1,0,-1\n0,0.967032,0.250902,0,1,0,-1\n0,0.96336,0.226146,0,1,0,-1\n0,0.957279,0.20187,0,1,0,-1\n0,0.948848,0.178307,0,1,0,-1\n0,0.938148,0.155683,0,1,0,-1\n0,0.925282,0.134218,0,1,0,-1\n0,0.910374,0.114116,0,1,0,-1\n0,0.893567,0.095573,0,1,0,-1\n0,0.875024,0.078766,0,1,0,-1\n0,0.854923,0.063858,0,1,0,-1\n0,0.833457,0.050992,0,1,0,-1\n0,0.810834,0.040292,0,1,0,-1\n0,0.78727,0.031861,0,1,0,-1\n0,0.762994,0.02578,0,1,0,-1\n0,0.738239,0.022108,0,1,0,-1\n0,0.738239,0.529688,0,1,0,-1\n0,0.762994,0.526016,0,1,0,-1\n0,0.78727,0.519935,0,1,0,-1\n0,0.810834,0.511504,0,1,0,-1\n0,0.833457,0.500804,0,1,0,-1\n0,0.854923,0.487938,0,1,0,-1\n0,0.875024,0.473029,0,1,0,-1\n0,0.893567,0.456223,0,1,0,-1\n0,0.910374,0.43768,0,1,0,-1\n0,0.925282,0.417578,0,1,0,-1\n0,0.938148,0.396113,0,1,0,-1\n0,0.948848,0.373489,0,1,0,-1\n0,0.957279,0.349926,0,1,0,-1\n0,0.96336,0.325649,0,1,0,-1\n0,0.967032,0.300894,0,1,0,-1\n0,0.96826,0.275898,0,1,0,-1\n0,0.4975,0.875671,0,1,0,-1\n0,0.514759,0.8524,0,1,0,-1\n0,0.529655,0.827549,0,1,0,-1\n0,0.008901,0.827549,0,1,0,-1\n0,0.023796,0.8524,0,1,0,-1\n0,0.041056,0.875671,0,1,0,-1\n0,0.060513,0.897139,0,1,0,-1\n0,0.081981,0.916597,0,1,0,-1\n0,0.105252,0.933856,0,1,0,-1\n0,0.130104,0.948751,0,1,0,-1\n0,0.156295,0.961139,0,1,0,-1\n0,0.183575,0.9709,0,1,0,-1\n0,0.21168,0.97794,0,1,0,-1\n0,0.240339,0.982191,0,1,0,-1\n0,0.269278,0.983612,0,1,0,-1\n0,0.298216,0.982191,0,1,0,-1\n0,0.326876,0.97794,0,1,0,-1\n0,0.354981,0.9709,0,1,0,-1\n0,0.382261,0.961139,0,1,0,-1\n0,0.408452,0.948751,0,1,0,-1\n0,0.433303,0.933856,0,1,0,-1\n0,0.456575,0.916597,0,1,0,-1\n0,0.478043,0.897139,0,1,0,-1\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CELTIC-01,CELTIC PATTERN 01\n;By John Hyslop\n;Developed in inch as imperial QCAD3 pattern\n135,0.36,0.42222222,0.70710678,0.70710678,0.08799551,-1.32621805\n135,0.42222222,0.39111111,0.70710678,0.70710678,0.25848681,-1.15572675\n315,0.39111111,0.57777778,0.70710678,0.70710678,0.08799551,-1.32621805\n315,0.30166667,0.63611111,0.70710678,0.70710678,0.25848681,-1.15572675\n225,0.76055556,0.42611111,0.70710678,0.70710678,0.08799551,-1.32621805\n225,0.86555556,0.5,0.70710678,0.70710678,0.28048569,-1.13372787\n225,0.85388889,0.33277778,0.70710678,0.70710678,0.08799551,-1.32621805\n225,0.99,0.5,0.70710678,0.70710678,0.3684812,-1.04573236\n225,0.76055556,0.72944444,0.70710678,0.70710678,0.08799551,-1.32621805\n225,0.85388889,0.63611111,0.70710678,0.70710678,0.08799551,-1.32621805\n90,0.99,0.90200449,0,1,0.08799551,-0.91200449\n0,0.90200449,0.88000561,0,1,0.08799551,-0.91200449\n0,0.83978227,0.90200449,0,1,0.15021773,-0.84978227\n0,0.80333333,0.99,0,1,0.18666667,-0.81333333\n90,0.90200449,0.83978227,0,1,0.04022334,-0.95977666\n90,0.99,0.80333333,0,1,0.07667228,-0.92332772\n180,0.09799551,0.99,0,1,0.08799551,-0.91200449\n90,0.11999439,0.90200449,0,1,0.08799551,-0.91200449\n90,0.09799551,0.83978227,0,1,0.15021773,-0.84978227\n90,0.01,0.80333333,0,1,0.18666667,-0.81333333\n180,0.16021773,0.90200449,0,1,0.04022334,-0.95977666\n180,0.19666667,0.99,0,1,0.07667228,-0.92332772\n270,0.01,0.09799551,0,1,0.08799551,-0.91200449\n180,0.09799551,0.11999439,0,1,0.08799551,-0.91200449\n180,0.16021773,0.09799551,0,1,0.15021773,-0.84978227\n180,0.19666667,0.01,0,1,0.18666667,-0.81333333\n270,0.09799551,0.16021773,0,1,0.04022334,-0.95977666\n270,0.01,0.19666667,0,1,0.07667228,-0.92332772\n45,0.70222222,0.51555556,0.70710678,0.70710678,0.40697924,-1.00723433\n45,0.51555556,0.29777778,0.70710678,0.70710678,0.08799551,-1.32621805\n45,0.42611111,0.23944444,0.70710678,0.70710678,0.25848681,-1.15572675\n45,0.19666667,0.01,0.70710678,0.70710678,0.19249018,-1.22172338\n45,0.64,0.57777778,0.70710678,0.70710678,0.3705303,-1.04368326\n45,0.42222222,0.39111111,0.70710678,0.70710678,0.08799551,-1.32621805\n45,0.36388889,0.30166667,0.70710678,0.70710678,0.25848681,-1.15572675\n45,0.16021773,0.09799551,0.70710678,0.70710678,0.15604125,-1.25817232\n45,0.66722222,0.85388889,0.70710678,0.70710678,0.19249018,-1.22172338\n45,0.42222222,0.64,0.70710678,0.70710678,0.08799551,-1.32621805\n45,0.14611111,0.36388889,0.70710678,0.70710678,0.08799551,-1.32621805\n45,0.39111111,0.57777778,0.70710678,0.70710678,0.25848681,-1.15572675\n45,0.01,0.19666667,0.70710678,0.70710678,0.40697924,-1.00723433\n45,0.72944444,0.79166667,0.70710678,0.70710678,0.15604125,-1.25817232\n45,0.23944444,0.27055556,0.70710678,0.70710678,0.08799551,-1.32621805\n45,0.51555556,0.54666667,0.70710678,0.70710678,0.08799551,-1.32621805\n45,0.45333333,0.51555556,0.70710678,0.70710678,0.25848681,-1.15572675\n45,0.09799551,0.16021773,0.70710678,0.70710678,0.3705303,-1.04368326\n0,0.90200449,0.01,0,1,0.08799551,-0.91200449\n135,0.70222222,0.51555556,0.70710678,0.70710678,0.08799551,-1.32621805\n135,0.42611111,0.79166667,0.70710678,0.70710678,0.08799551,-1.32621805\n135,0.48444444,0.70222222,0.70710678,0.70710678,0.40697924,-1.00723433\n135,0.76055556,0.42611111,0.70710678,0.70710678,0.25848681,-1.15572675\n135,0.99,0.19666667,0.70710678,0.70710678,0.19249018,-1.22172338\n135,0.33277778,0.69833333,0.70710678,0.70710678,0.08799551,-1.32621805\n135,0.42222222,0.64,0.70710678,0.70710678,0.3705303,-1.04368326\n135,0.60888889,0.42222222,0.70710678,0.70710678,0.08799551,-1.32621805\n135,0.69833333,0.36388889,0.70710678,0.70710678,0.25848681,-1.15572675\n135,0.90200449,0.16021773,0.70710678,0.70710678,0.15604125,-1.25817232\n135,0.63611111,0.14611111,0.70710678,0.70710678,0.08799551,-1.32621805\n135,0.14611111,0.66722222,0.70710678,0.70710678,0.19249018,-1.22172338\n135,0.80333333,0.01,0.70710678,0.70710678,0.40697924,-1.00723433\n135,0.72944444,0.23944444,0.70710678,0.70710678,0.08799551,-1.32621805\n135,0.20833333,0.72944444,0.70710678,0.70710678,0.15604125,-1.25817232\n135,0.83978227,0.09799551,0.70710678,0.70710678,0.3705303,-1.04368326\n270,0.88000561,0.09799551,0,1,0.08799551,-0.91200449\n270,0.90200449,0.16021773,0,1,0.15021773,-0.84978227\n270,0.99,0.19666667,0,1,0.18666667,-0.81333333\n0,0.83978227,0.09799551,0,1,0.04022334,-0.95977666\n0,0.80333333,0.01,0,1,0.07667228,-0.92332772\n135,0.99,0.5,0.70710678,0.70710678,0.19249018,-1.22172338\n45,0.5,0.01,0.70710678,0.70710678,0.19249018,-1.22172338\n315,0.27055556,0.20833333,0.70710678,0.70710678,0.08799551,-1.32621805\n315,0.23944444,0.27055556,0.70710678,0.70710678,0.3684812,-1.04573236\n315,0.01,0.5,0.70710678,0.70710678,0.19249018,-1.22172338\n225,0.20833333,0.72944444,0.70710678,0.70710678,0.08799551,-1.32621805\n225,0.27055556,0.76055556,0.70710678,0.70710678,0.3684812,-1.04573236\n225,0.5,0.99,0.70710678,0.70710678,0.19249018,-1.22172338\n135,0.72944444,0.79166667,0.70710678,0.70710678,0.08799551,-1.32621805\n135,0.76055556,0.72944444,0.70710678,0.70710678,0.3684812,-1.04573236\n135,0.86555556,0.5,0.70710678,0.70710678,0.10449467,-1.30971889\n45,0.5,0.13444444,0.70710678,0.70710678,0.10449467,-1.30971889\n315,0.36388889,0.30166667,0.70710678,0.70710678,0.08799551,-1.32621805\n315,0.30166667,0.33277778,0.70710678,0.70710678,0.28048569,-1.13372787\n315,0.13444444,0.5,0.70710678,0.70710678,0.10449467,-1.30971889\n225,0.30166667,0.63611111,0.70710678,0.70710678,0.08799551,-1.32621805\n225,0.33277778,0.69833333,0.70710678,0.70710678,0.28048569,-1.13372787\n225,0.5,0.86555556,0.70710678,0.70710678,0.10449467,-1.30971889\n135,0.63611111,0.69833333,0.70710678,0.70710678,0.08799551,-1.32621805\n135,0.69833333,0.66722222,0.70710678,0.70710678,0.28048569,-1.13372787\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CELTIC-02,CELTIC PATTERN 02\n;By John Hyslop\n;Developed in inch as imperial QCAD3 pattern\n180,0.438471,0.01545916,0,1,0.12305799,-0.87694201\n270,0.98454084,0.438471,0,1,0.12305799,-0.87694201\n270,0.01545916,0.68458699,0,1,0.12305799,-0.87694201\n180,0.68458699,0.98454084,0,1,0.12305799,-0.87694201\n90,0.98454084,0.4692355,0,1,0.51530534,-0.48469466\n270,0.98454084,0.28464852,0,1,0.26918936,-0.73081064\n180,0.438471,0.28464852,0,1,0.12305799,-0.87694201\n180,0.5307645,0.31541301,0,1,0.36148285,-0.63851715\n0,0.31541301,0.4692355,0,1,0.12305799,-0.87694201\n0,0.16928165,0.438471,0,1,0.36148285,-0.63851715\n270,0.83071835,0.68458699,0,1,0.12305799,-0.87694201\n270,0.86148285,0.86148285,0,1,0.39224735,-0.60775265\n270,0.5307645,0.98454084,0,1,0.12305799,-0.87694201\n270,0.71535148,0.98454084,0,1,0.12305799,-0.87694201\n90,0.68458699,0.71535148,0,1,0.26918936,-0.73081064\n90,0.71535148,0.31541301,0,1,0.12305799,-0.87694201\n90,0.68458699,0.16928165,0,1,0.36148285,-0.63851715\n90,0.561529,0.71535148,0,1,0.26918936,-0.73081064\n90,0.5307645,0.31541301,0,1,0.12305799,-0.87694201\n90,0.561529,0.16928165,0,1,0.36148285,-0.63851715\n90,0.28464852,0.561529,0,1,0.12305799,-0.87694201\n90,0.28464852,0.01545916,0,1,0.12305799,-0.87694201\n90,0.31541301,0.4692355,0,1,0.36148285,-0.63851715\n90,0.31541301,0.01545916,0,1,0.26918936,-0.73081064\n90,0.4692355,0.01545916,0,1,0.12305799,-0.87694201\n90,0.4692355,0.561529,0,1,0.12305799,-0.87694201\n90,0.438471,0.4692355,0,1,0.36148285,-0.63851715\n90,0.438471,0.01545916,0,1,0.26918936,-0.73081064\n180,0.68458699,0.71535148,0,1,0.12305799,-0.87694201\n180,0.13851715,0.71535148,0,1,0.12305799,-0.87694201\n180,0.28464852,0.68458699,0,1,0.26918936,-0.73081064\n180,0.83071835,0.68458699,0,1,0.36148285,-0.63851715\n180,0.13851715,0.5307645,0,1,0.12305799,-0.87694201\n180,0.28464852,0.561529,0,1,0.26918936,-0.73081064\n180,0.68458699,0.5307645,0,1,0.12305799,-0.87694201\n180,0.83071835,0.561529,0,1,0.36148285,-0.63851715\n180,0.98454084,0.28464852,0,1,0.12305799,-0.87694201\n180,0.98454084,0.31541301,0,1,0.26918936,-0.73081064\n180,0.98454084,0.4692355,0,1,0.12305799,-0.87694201\n180,0.98454084,0.438471,0,1,0.26918936,-0.73081064\n180,0.98454084,0.98454084,0,1,0.26918936,-0.73081064\n0,0.4692355,0.01545916,0,1,0.51530534,-0.48469466\n0,0.01545916,0.01545916,0,1,0.26918936,-0.73081064\n270,0.01545916,0.5307645,0,1,0.51530534,-0.48469466\n270,0.01545916,0.98454084,0,1,0.26918936,-0.73081064\n180,0.5307645,0.98454084,0,1,0.51530534,-0.48469466\n180,0.86148285,0.86148285,0,1,0.14613136,-0.85386864\n90,0.86148285,0.13851715,0,1,0.14613136,-0.85386864\n0,0.561529,0.16928165,0,1,0.12305799,-0.87694201\n0,0.4692355,0.13851715,0,1,0.39224735,-0.60775265\n0,0.13851715,0.13851715,0,1,0.14613136,-0.85386864\n270,0.16928165,0.438471,0,1,0.12305799,-0.87694201\n270,0.13851715,0.5307645,0,1,0.39224735,-0.60775265\n270,0.13851715,0.86148285,0,1,0.14613136,-0.85386864\n180,0.438471,0.83071835,0,1,0.12305799,-0.87694201\n180,0.5307645,0.86148285,0,1,0.39224735,-0.60775265\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CELTIC-03,CELTIC-03\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in inch as imperial QCAD3 pattern\n90,6.35,13.97,0,25.4,5.08,-20.32\n90,19.05,6.35,0,25.4,5.08,-20.32\n0,6.35,6.35,0,25.4,12.7,-12.7\n270,6.35,11.43,0,25.4,5.08,-20.32\n90,3.81,3.81,0,25.4,7.62,-17.78\n180,21.59,3.81,0,25.4,17.78,-7.62\n270,21.59,11.43,0,25.4,7.62,-17.78\n270,21.59,21.59,0,25.4,7.62,-17.78\n0,3.81,21.59,0,25.4,17.78,-7.62\n90,3.81,13.97,0,25.4,7.62,-17.78\n270,19.05,19.05,0,25.4,5.08,-20.32\n0,6.35,19.05,0,25.4,12.7,-12.7\n90,13.97,6.35,0,25.4,12.7,-12.7\n90,11.43,6.35,0,25.4,12.7,-12.7\n270,13.97,3.81,0,25.4,7.62,-17.78\n90,11.43,-3.81,0,25.4,7.62,-17.78\n180,11.43,11.43,0,25.4,22.86,-2.54\n0,-11.43,13.97,0,25.4,22.86,-2.54\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CELTIC-04,CELTIC-04\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in mm as metric QCAD3 pattern\n45,3.81,13.97,17.960512212,17.960512212,12.57235865,-23.348666028\n135,21.59,13.97,17.960512212,17.960512212,12.57235865,-23.348666028\n45,12.7,2.54,17.960512212,17.960512212,12.57235865,-23.348666028\n315,3.81,11.43,17.960512212,17.960512212,12.57235865,-23.348666028\n135,12.7,5.08,17.960512212,17.960512212,8.980256106,-26.940768318\n225,19.05,11.43,17.960512212,17.960512212,8.980256106,-26.940768318\n315,12.7,20.32,17.960512212,17.960512212,8.980256106,-26.940768318\n45,6.35,13.97,17.960512212,17.960512212,8.980256106,-26.940768318\n90,13.97,6.35,0,25.4,12.7,-12.7\n90,11.43,6.35,0,25.4,12.7,-12.7\n270,13.97,3.81,0,25.4,7.62,-17.78\n90,11.43,-3.81,0,25.4,7.62,-17.78\n180,11.43,11.43,0,25.4,22.86,-2.54\n0,-11.43,13.97,0,25.4,22.86,-2.54\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CIRCLES-02,CIRCLES-02\n;By John Hyslop\n;Developed in inch as imperial QCAD3 pattern\n0,0.959092,0.471116,0,1,0,-1\n0,0.956373,0.442347,0,1,0,-1\n0,0.951852,0.413805,0,1,0,-1\n0,0.945548,0.385603,0,1,0,-1\n0,0.937486,0.357852,0,1,0,-1\n0,0.927697,0.330663,0,1,0,-1\n0,0.91622,0.304142,0,1,0,-1\n0,0.903101,0.278393,0,1,0,-1\n0,0.888391,0.25352,0,1,0,-1\n0,0.872148,0.229619,0,1,0,-1\n0,0.854436,0.206785,0,1,0,-1\n0,0.835326,0.185108,0,1,0,-1\n0,0.814892,0.164674,0,1,0,-1\n0,0.793215,0.145564,0,1,0,-1\n0,0.770381,0.127852,0,1,0,-1\n0,0.74648,0.111609,0,1,0,-1\n0,0.721607,0.096899,0,1,0,-1\n0,0.695858,0.08378,0,1,0,-1\n0,0.669337,0.072303,0,1,0,-1\n0,0.642148,0.062514,0,1,0,-1\n0,0.614397,0.054452,0,1,0,-1\n0,0.586195,0.048148,0,1,0,-1\n0,0.557653,0.043627,0,1,0,-1\n0,0.528884,0.040908,0,1,0,-1\n0,0.5,0.04,0,1,0,-1\n0,0.471116,0.040908,0,1,0,-1\n0,0.442347,0.043627,0,1,0,-1\n0,0.413805,0.048148,0,1,0,-1\n0,0.385603,0.054452,0,1,0,-1\n0,0.357852,0.062514,0,1,0,-1\n0,0.330663,0.072303,0,1,0,-1\n0,0.304142,0.08378,0,1,0,-1\n0,0.278393,0.096899,0,1,0,-1\n0,0.25352,0.111609,0,1,0,-1\n0,0.229619,0.127852,0,1,0,-1\n0,0.206785,0.145564,0,1,0,-1\n0,0.185108,0.164674,0,1,0,-1\n0,0.164674,0.185108,0,1,0,-1\n0,0.145564,0.206785,0,1,0,-1\n0,0.127852,0.229619,0,1,0,-1\n0,0.111609,0.25352,0,1,0,-1\n0,0.096899,0.278393,0,1,0,-1\n0,0.08378,0.304142,0,1,0,-1\n0,0.072303,0.330663,0,1,0,-1\n0,0.062514,0.357852,0,1,0,-1\n0,0.054452,0.385603,0,1,0,-1\n0,0.048148,0.413805,0,1,0,-1\n0,0.043627,0.442347,0,1,0,-1\n0,0.040908,0.471116,0,1,0,-1\n0,0.04,0.5,0,1,0,-1\n0,0.040908,0.528884,0,1,0,-1\n0,0.043627,0.557653,0,1,0,-1\n0,0.048148,0.586195,0,1,0,-1\n0,0.054452,0.614397,0,1,0,-1\n0,0.062514,0.642148,0,1,0,-1\n0,0.072303,0.669337,0,1,0,-1\n0,0.08378,0.695858,0,1,0,-1\n0,0.096899,0.721607,0,1,0,-1\n0,0.111609,0.74648,0,1,0,-1\n0,0.127852,0.770381,0,1,0,-1\n0,0.145564,0.793215,0,1,0,-1\n0,0.164674,0.814892,0,1,0,-1\n0,0.185108,0.835326,0,1,0,-1\n0,0.206785,0.854436,0,1,0,-1\n0,0.229619,0.872148,0,1,0,-1\n0,0.25352,0.888391,0,1,0,-1\n0,0.278393,0.903101,0,1,0,-1\n0,0.304142,0.91622,0,1,0,-1\n0,0.330663,0.927697,0,1,0,-1\n0,0.357852,0.937486,0,1,0,-1\n0,0.385603,0.945548,0,1,0,-1\n0,0.413805,0.951852,0,1,0,-1\n0,0.442347,0.956373,0,1,0,-1\n0,0.471116,0.959092,0,1,0,-1\n0,0.5,0.96,0,1,0,-1\n0,0.528884,0.959092,0,1,0,-1\n0,0.557653,0.956373,0,1,0,-1\n0,0.586195,0.951852,0,1,0,-1\n0,0.614397,0.945548,0,1,0,-1\n0,0.642148,0.937486,0,1,0,-1\n0,0.669337,0.927697,0,1,0,-1\n0,0.695858,0.91622,0,1,0,-1\n0,0.721607,0.903101,0,1,0,-1\n0,0.74648,0.888391,0,1,0,-1\n0,0.770381,0.872148,0,1,0,-1\n0,0.793215,0.854436,0,1,0,-1\n0,0.814892,0.835326,0,1,0,-1\n0,0.835326,0.814892,0,1,0,-1\n0,0.854436,0.793215,0,1,0,-1\n0,0.872148,0.770381,0,1,0,-1\n0,0.888391,0.74648,0,1,0,-1\n0,0.903101,0.721607,0,1,0,-1\n0,0.91622,0.695858,0,1,0,-1\n0,0.927697,0.669337,0,1,0,-1\n0,0.937486,0.642148,0,1,0,-1\n0,0.945548,0.614397,0,1,0,-1\n0,0.951852,0.586195,0,1,0,-1\n0,0.956373,0.557653,0,1,0,-1\n0,0.959092,0.528884,0,1,0,-1\n0,0.96,0.5,0,1,0,-1\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CIRCLES,CIRCLES\n;By John Hyslop\n;Developed in inch as imperial QCAD3 pattern\n0,0.934583,0.431169,0,1,0,-1\n0,0.918465,0.364033,0,1,0,-1\n0,0.892043,0.300244,0,1,0,-1\n0,0.855967,0.241374,0,1,0,-1\n0,0.811127,0.188873,0,1,0,-1\n0,0.758626,0.144033,0,1,0,-1\n0,0.699756,0.107957,0,1,0,-1\n0,0.635967,0.081535,0,1,0,-1\n0,0.568831,0.065417,0,1,0,-1\n0,0.5,0.06,0,1,0,-1\n0,0.431169,0.065417,0,1,0,-1\n0,0.364033,0.081535,0,1,0,-1\n0,0.300244,0.107957,0,1,0,-1\n0,0.241374,0.144033,0,1,0,-1\n0,0.188873,0.188873,0,1,0,-1\n0,0.144033,0.241374,0,1,0,-1\n0,0.107957,0.300244,0,1,0,-1\n0,0.081535,0.364033,0,1,0,-1\n0,0.065417,0.431169,0,1,0,-1\n0,0.06,0.5,0,1,0,-1\n0,0.065417,0.568831,0,1,0,-1\n0,0.081535,0.635967,0,1,0,-1\n0,0.107957,0.699756,0,1,0,-1\n0,0.144033,0.758626,0,1,0,-1\n0,0.188873,0.811127,0,1,0,-1\n0,0.241374,0.855967,0,1,0,-1\n0,0.300244,0.892043,0,1,0,-1\n0,0.364033,0.918465,0,1,0,-1\n0,0.431169,0.934583,0,1,0,-1\n0,0.5,0.94,0,1,0,-1\n0,0.568831,0.934583,0,1,0,-1\n0,0.635967,0.918465,0,1,0,-1\n0,0.699756,0.892043,0,1,0,-1\n0,0.758626,0.855967,0,1,0,-1\n0,0.811127,0.811127,0,1,0,-1\n0,0.855967,0.758626,0,1,0,-1\n0,0.892043,0.699756,0,1,0,-1\n0,0.918465,0.635967,0,1,0,-1\n0,0.934583,0.568831,0,1,0,-1\n0,0.94,0.5,0,1,0,-1\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CLAY,CLAY\n0, 0,0, 0,.1875\n0, 0,.03125, 0,.1875\n0, 0,.0625, 0,.1875\n0, 0,.125, 0,.1875, .1875,-.125\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CORK,CORK\n0, 0,0, 0,.125\n135, .0625,-.0625, 0,.35355339, .1767767,-.1767767\n135, .09375,-.0625, 0,.35355339, .1767767,-.1767767\n135, .125,-.0625, 0,.35355339, .1767767,-.1767767\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*CROSS,CROSS\n0, 0,0, .25,.25, .125,-.375\n90, .0625,-.0625, .25,.25, .125,-.375\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*DASH,DASH\n0, 0,0, .125,.125, .125,-.125\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*DOLMIT,DOLMIT\n0, 0,0, 0,.25\n45, 0,0, 0,.70710678, .35355339,-.70710768\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*DOTS,DOTS\n0, 0,0, .03125,.0625, 0,-.0625\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*EARTH,EARTH\n0, 0,0, .25,.25, .25,-.25\n0, 0,.09375, .25,.25, .25,-.25\n0, 0,.1875, .25,.25, .25,-.25\n90, .03125,.21875, .25,.25, .25,-.25\n90, .125,.21875, .25,.25, .25,-.25\n90, .21875,.21875, .25,.25, .25,-.25\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ESCHER,ESCHER\n60, 0,0, -.6,1.03923048, 1.1,-.1\n180, 0,0, -.6,1.03923048, 1.1,-.1\n300, 0,0, .6,1.03923048, 1.1,-.1\n60, .1,0, -.6,1.03923048, .2,-1\n300, .1,0, .6,1.03923048, .2,-1\n60, -.05,.08660254, -.6,1.03923048, .2,-1\n180, -.05,.08660254, -.6,1.03923048, .2,-1\n300, -.05,-.08660254, .6,1.03923048, .2,-1\n180, -.05,-.08660254, -.6,1.03923048, .2,-1\n60, -.4,0, -.6,1.03923048, .2,-1\n300, -.4,0, .6,1.03923048, .2,-1\n60, .2,-.34641016, -.6,1.03923048, .2,-1\n180, .2,-.34641016, -.6,1.03923048, .2,-1\n300, .2,.34641016, .6,1.03923048, .2,-1\n180, .2,.34641016, -.6,1.03923048, .2,-1\n0, .2,.17320508, -.6,1.03923048, .7,-.5\n0, .2,-.17320508, -.6,1.03923048, .7,-.5\n120, .05,.25980762, .6,1.03923048, .7,-.5\n120, -.25,.08660254, .6,1.03923048, .7,-.5\n240, -.25,-.08660254, .6,1.03923048, .7,-.5\n240, .05,-.25980762, .6,1.03923048, .7,-.5\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*EXPLOSION,EXPLOSION\n;By John Hyslop\n;Developed in inch as imperial QCAD3 pattern\n270,0.45,0.11,0,1,0.11,-0.89\n143.130102,0.49,0.08,3.6,0.2,0.05,-4.95\n270,0.49,0.17,0,1,0.09,-0.91\n112.380135,0.56,0,12.99988621,0.05439283,0.18384776,-18.20092855\n75.256437,0.51,0.81,4.12279145,0.05089866,0.19646883,-19.45041388\n287.525568,0.45,1,3.16187936,0.05018856,0.19924859,-19.72561026\n135,0.06,0.49,0.70710678,0.70710678,0.08485281,-1.32936075\n26.565051,0,0.46,1.34164079,0.4472136,0.06708204,-2.16898594\n353.884496,0.72,0.49,19.10494017,0.03551104,0.28160256,-27.87865312\n192.094757,1,0.55,9.2192799,0.06984303,0.28635642,-14.03146464\n3.691386,0.69,0.38,15.03326191,0.03219114,0.31064449,-30.75380464\n136.080924,0.96,0.12,36.06936773,0.02667853,0.3748333,-37.10849633\n336.037511,0.87,0.16,7.61509624,0.10153462,0.09848858,-9.75036922\n123.690068,0.97,0.01,1.38675049,0.2773501,0.18027756,-3.42527371\n324.462322,0.62,0.26,3.6036768,0.11624764,0.43011626,-8.172209\n117.645975,0.73,0.05,21.47086912,0.04218245,0.23706539,-23.46947379\n326.309932,0.55,0.17,2.21880078,0.2773501,0.21633308,-3.3892182\n106.38954,0.6,0,10.44015399,0.05643326,0.17720045,-17.5428447\n153.434949,0.12,0.34,0.89442719,0.4472136,0.13416408,-2.1019039\n64.798876,0.04,0.17,16.55285979,0.05322463,0.18788294,-18.60041129\n202.619865,0.16,0.22,7.61538462,0.07692308,0.13,-12.87\n59.036243,0.1,0.12,2.22948161,0.17149859,0.11661904,-5.71433286\n211.75948,0.31,0.25,9.43389425,0.04048882,0.24698178,-24.45119629\n79.215702,0.27,0.04,16.27875339,0.04677803,0.21377558,-21.16378274\n212.471192,0.38,0.11,3.60473545,0.0766965,0.13038405,-12.90802076\n63.434949,0.35,0.05,0.89442719,0.4472136,0.06708204,-2.16898594\n135,0.4,0,0.70710678,0.70710678,0.07071068,-1.34350288\n74.357754,0.33,0.75,18.68150198,0.03851856,0.2596151,-25.70189487\n333.434949,0.03,0.9,0.89442719,0.4472136,0.3354102,-1.90065778\n110.556045,0.18,0.5,5.38389277,0.11704115,0.42720019,-8.11680356\n330.945396,0,0.6,2.23395748,0.09712859,0.2059126,-10.08971754\n99.462322,0.63,0.82,5.09636861,0.16439899,0.18248288,-5.90027965\n222.70939,0.76,0.94,1.41308355,0.05652334,0.17691806,-17.51488795\n74.744881,0.73,0.83,4.12217269,0.0877058,0.11401754,-11.28773671\n208.61046,0.95,0.95,10.29532081,0.07980869,0.25059928,-12.2793648\n62.744672,0.78,0.62,2.2359057,0.02693862,0.37121422,-36.75020816\n212.275644,0.97,0.74,13.03832887,0.04449942,0.22472205,-22.247483\n55.00798,0.9,0.64,3.60462045,0.08192319,0.12206556,-12.08449006\n158.198591,1,0.6,3.15682075,0.18569534,0.1077033,-5.27746151\n51.911227,0.59,0.51,29.20615599,0.02127178,0.47010637,-46.54053072\n153.434949,0.65,0.48,0.89442719,0.4472136,0.06708204,-2.16898594\n35.537678,0.58,0.43,4.99864847,0.11624764,0.08602325,-8.51630201\n129.289407,0.76,0.21,7.80993275,0.07035975,0.28425341,-13.928417\n322.30576,0.54,0.38,16.40118003,0.0359675,0.27802878,-27.52484877\n77.905243,0.51,0.24,5.09854116,0.06984303,0.14317821,-14.17464285\n282.994617,0.48,0.37,4.12242429,0.07495317,0.13341664,-13.20824742\n62.525568,0.35,0.12,2.23578634,0.03548867,0.28178006,-27.89622555\n267.137595,0.36,0.32,0.99875234,0.04993762,0.20024984,-19.82473455\n12.994617,0.1,0.26,4.12242429,0.07495317,0.26683328,-13.07483078\n211.75948,0.31,0.39,9.43389425,0.04048882,0.24698178,-24.45119629\n318.366461,0.22,0.47,10.62982142,0.08304548,0.12041595,-11.92117863\n189.462322,0.28,0.48,5.09636861,0.16439899,0.06082763,-6.0219349\n297.299572,0.12,0.79,32.64964285,0.02866518,0.34885527,-34.53667181\n132.273689,0.32,0.57,1.41261287,0.06726728,0.29732137,-14.56874737\n282.994617,0.29,0.7,4.12242429,0.07495317,0.13341664,-13.20824742\n140.194429,0.41,0.6,6.401844,0.12803688,0.15620499,-7.65404468\n268.363423,0.42,0.95,0.99959209,0.02855977,0.35014283,-34.66413997\n102.200469,0.5,0.58,23.53718977,0.0264166,0.37854986,-37.4764366\n250.016893,0.58,0.8,3.16112333,0.08543577,0.234094,-11.47060591\n84.559668,0.56,0.59,11.04525929,0.04740455,0.21095023,-20.88407288\n222.184443,0.88,0.88,14.86605071,0.02315584,0.43185646,-42.75378931\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*FLEX,FLEX\n0, 0,0, 0,.25, .25,-.25\n45, .25,0, .1767767,.1767767, .0625,-.22855339,.0625,-.35355339\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*GRASS,GRASS\n90, 0,0, .70710678,.70710678, .1875,-1.22671356\n45, 0,0, 0,1, .1875,-.8125\n135, 0,0, 0,1, .1875,-.8125\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*GRATE,GRATE\n0, 0,0, 0,.03125\n90, 0,0, 0,.125\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*GRAVEL-01,GRAVEL-01\n;Optimize to replace existing GRAVEL Pattern\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in inch as imperial QCAD3 pattern\n159.443955,0.16,0.13,3.16011097,0.11704115,0.17088007,-8.37312367\n114.775141,0.22,0,2.23497695,0.06984303,0.14317821,-14.17464285\n249.443955,0.32,0.08,3.16011097,0.11704115,0.08544004,-8.45856371\n186.009006,0.51,0.1,9.05523386,0.05234239,0.19104973,-18.91392344\n165.963757,0.71,0.05,0.9701425,0.24253563,0.20615528,-3.91695034\n101.309932,0.72,0,4.11843884,0.19611614,0.0509902,-5.04802932\n243.434949,0.84,0.14,0.89442719,0.4472136,0.15652476,-2.07954322\n355.426079,0.49,0.13,13.03834384,0.03987261,0.25079872,-24.82907368\n300.256437,0.42,0.25,5.83050758,0.07198158,0.13892444,-13.75351955\n228.012788,0.6,0.45,12.04136517,0.07432941,0.26907248,-13.18455157\n180,0.86,0.45,0,1,0.26,-0.74\n303.690068,0.62,0.62,1.38675049,0.2773501,0.14422205,-3.46132922\n225,0.72,0.72,0.70710678,0.70710678,0.14142136,-1.27279221\n110.224859,0.08,0.23,8.54386101,0.04938648,0.20248457,-20.04597216\n177.273689,0.29,0.22,0.99886814,0.04756515,0.21023796,-20.81355808\n217.69424,0.51,0.39,11.40169752,0.0359675,0.27802878,-27.52484877\n252.255328,0.59,0.64,23.08676133,0.03809697,0.26248809,-25.9863214\n301.429566,0.48,0.82,15.26426391,0.04740455,0.21095023,-20.88407288\n355.236358,0.24,0.84,0.99654576,0.08304548,0.24083189,-11.80076269\n43.66778,0.02,0.63,1.41383129,0.0328798,0.30413813,-30.10967452\n87.273689,0.01,0.42,0.99886814,0.04756515,0.21023796,-20.81355808\n30.963757,0.62,0.71,3.60147029,0.17149859,0.17492856,-5.65602334\n291.801409,0.58,0.81,2.22834406,0.18569534,0.1077033,-5.27746151\n203.198591,0.65,0.84,2.23220936,0.13130643,0.07615773,-7.53961537\n161.565051,0.77,0.8,0.9486833,0.31622777,0.12649111,-3.03578655\n4.969741,0.4,0.88,11.04527609,0.04331481,0.23086793,-22.85592483\n16.38954,0,0.81,10.44015399,0.05643326,0.17720045,-17.5428447\n197.354025,1,0.19,3.16171493,0.059655,0.16763055,-16.59542407\n74.054604,0.95,0.22,4.12081692,0.13736056,0.1456022,-7.13450769\n27.645975,0.74,0.11,21.47086912,0.04218245,0.23706539,-23.46947379\n145.304846,0.99,0.36,3.60499653,0.06324555,0.15811388,-15.65327442\n353.157227,0.7,0.5,17.1171967,0.03971507,0.25179357,-24.92756306\n171.469234,0.92,0.69,7.07089492,0.04944682,0.20223748,-20.02151093\n138.814075,1,0.62,9.21906451,0.09407209,0.10630146,-10.52384435\n90,1,0.56,0,1,0.06,-0.94\n60.945396,0.95,0.47,2.23395748,0.09712859,0.1029563,-10.19267384\n343.61046,0.83,0.86,7.27989116,0.05643326,0.17720045,-17.5428447\n293.198591,0.77,1,2.23220936,0.13130643,0.15231546,-7.46345764\n48.012788,0.63,0.9,12.04136517,0.07432941,0.13453624,-13.31908781\n312.510447,0.29,1,1.41287877,0.06142951,0.16278821,-16.11603239\n70.346176,0.17,0.86,3.16156213,0.06726728,0.14866069,-14.71740806\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*GRAVEL,GRAVEL\n228.0128, .72,1, 12.041365,.074329, .134536,-13.319088\n184.9697, .63,.9, -12.041517,.043315, .230868,-22.855925\n132.5104, .4,.88, -14.865942,.06143, .162788,-16.116032\n267.2737, .01,.63, -20.024928,.047565, .210238,-20.813558\n292.8337, 0,.42, -12.99991,.048507, .206155,-20.409373\n357.2737, .08,.23, -20.024928,.047565, .210238,-20.813558\n37.6942, .29,.22, -16.40118,.035968, .278029,-27.524849\n72.2553, .51,.39, 23.086761,.038097, .262488,-25.986321\n121.4296, .59,.64, 15.264264,.047405, .21095,-20.884073\n175.2364, .48,.82, -11.045049,.083045, .240832,-11.800763\n222.3974, .24,.84, 16.278789,.032108, .311448,-30.833375\n138.8141, 1,.62, 9.219065,.094072, .106301,-10.523844\n171.4692, .92,.69, -13.152853,.049447, .202237,-20.021511\n225, .72,.72, .707107,.707107, .141421,-1.272792\n203.1986, .65,.84, -5.383564,.131306, .076158,-7.539615\n291.8014, .58,.81, -3.156821,.185695, .107703,-5.277462\n30.9638, .62,.71, 3.60147,.171499, .174929,-5.656023\n161.5651, .77,.8, -2.213594,.316228, .126491,-3.035787\n16.3895, 0,.81, 10.440154,.056433, .1772,-17.542845\n70.3462, .17,.86, -11.704507,.067267, .148661,-14.717408\n293.1986, .77,1, -5.383564,.131306, .152315,-7.463458\n343.6105, .83,.86, -10.440154,.056433, .1772,-17.542845\n339.444, 0,.19, -5.383893,.117041, .17088,-8.373124\n294.7751, .16,.13, -12.082844,.069843, .143178,-14.174643\n66.8014, .78,0, 5.383564,.131306, .152315,-7.463458\n17.354, .84,.14, -13.60134,.059655, .167631,-16.595424\n69.444, .29,0, -5.383893,.117041, .08544,-8.458564\n101.3099, .72,0, 4.118439,.196116, .05099,-5.048029\n165.9638, .71,.05, -3.152963,.242536, .206155,-3.91695\n186.009, .51,.1, -10.049739,.052342, .19105,-18.913923\n303.6901, .62,.62, -2.218801,.27735, .144222,-3.461329\n353.1572, .7,.5, 17.117197,.039715, .251794,-24.927563\n60.9454, .95,.47, -8.061673,.097129, .102956,-10.192674\n90, 1,.56, 1,1, .06,-.94\n120.2564, .49,.13, -8.061936,.071982, .138924,-13.75352\n48.0128, .42,.25, 12.041365,.074329, .269072,-13.184552\n0, .6,.45, 1,1, .26,-.74\n325.3048, .86,.45, -12.206392,.063246, .158114,-15.653274\n254.0546, .99,.36, 4.120817,.137361, .145602,-7.134508\n207.646, .95,.22, 21.470869,.042182, .237065,-23.469474\n175.4261, .74,.11, 13.038344,.039873, .250799,-24.829074\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HATCH-DOTS,HATCH-DOTS verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n225,0.56554781,0.11554781,0.70710678,0.70710678,0.45245257,-0.96176099\n225,0.25036388,0.20036388,0.70710678,0.70710678,0.6374253,-0.77678826\n225,0.12918503,0.37918503,0.70710678,0.70710678,0.71894383,-0.69526973\n225,0.75438447,0.20438447,0.70710678,0.70710678,0.45245257,-0.96176099\n225,0.30962291,0.15962291,0.70710678,0.70710678,0.6636138,-0.75059977\n225,0.11186858,0.46186858,0.70710678,0.70710678,0.81138689,-0.60282667\n225,0.37918503,0.12918503,0.70710678,0.70710678,0.71894383,-0.69526973\n225,0.11554781,0.56554781,0.70710678,0.70710678,0.45245257,-0.96176099\n225,0.20036388,0.25036388,0.70710678,0.70710678,0.6374253,-0.77678826\n225,0.46186859,0.11186859,0.70710678,0.70710678,0.8113869,-0.60282666\n225,0.20438447,0.75438447,0.70710678,0.70710678,0.45245257,-0.96176099\n225,0.15962291,0.30962291,0.70710678,0.70710678,0.6636138,-0.75059977\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HATCH-SQRS,HATCH-SQRS verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n225,0.11,0.36,0.70710678,0.70710678,0.31112698,-1.10308658\n225,0.11,0.86,0.70710678,0.70710678,0.31112698,-1.10308658\n225,0.11,0.26,0.70710678,0.70710678,0.52325902,-0.89095454\n225,0.76,0.11,0.70710678,0.70710678,0.31112698,-1.10308658\n225,0.11,0.56,0.70710678,0.70710678,0.31112698,-1.10308658\n225,0.11,0.46,0.70710678,0.70710678,0.31112698,-1.10308658\n225,0.26,0.11,0.70710678,0.70710678,0.52325902,-0.89095454\n225,0.11,0.76,0.70710678,0.70710678,0.31112698,-1.10308658\n225,0.11,0.16,0.70710678,0.70710678,0.38183766,-1.0323759\n225,0.16,0.11,0.70710678,0.70710678,0.38183766,-1.0323759\n225,0.46,0.11,0.70710678,0.70710678,0.31112698,-1.10308658\n225,0.56,0.11,0.70710678,0.70710678,0.31112698,-1.10308658\n225,0.36,0.11,0.70710678,0.70710678,0.31112698,-1.10308658\n225,0.86,0.11,0.70710678,0.70710678,0.31112698,-1.10308658\n225,0.11,0.66,0.70710678,0.70710678,0.31112698,-1.10308658\n225,0.66,0.11,0.70710678,0.70710678,0.31112698,-1.10308658\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HEXAGONS,HEXAGONS verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n239.931417,0.21999999,0.99999998,8.06212908,0.04554875,0.21954496,-21.73495344\n239.931417,0.89,0.19,8.06212908,0.04554875,0.21954496,-21.73495344\n300.068583,0.78000001,0.99999998,13.89236932,0.04554875,0.21954496,-21.73495344\n60.068488,0.12,0.5,8.06221498,0.02626129,0.38078866,-37.69807687\n119.931512,0.31,0.17,30.01665055,0.02626129,0.38078865,-37.69807687\n300.068583,0.11,0.19,13.89236932,0.04554875,0.21954496,-21.73495344\n180,0.11,0.19,0,1,0.21999996,-0.78000004\n299.931512,0.69,0.83,30.01665055,0.02626129,0.38078865,-37.69807687\n0,0.31,0.83,0,1,0.38,-0.62\n180,0.69,0.17,0,1,0.38,-0.62\n240.068488,0.88,0.5,8.06221498,0.02626129,0.38078866,-37.69807687\n180,0.11,0.81,0,1,0.21999996,-0.78000004\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HEXJOIN-01,HEXJOIN-01 verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n45,0.15,0.65,0.70710678,0.70710678,0.28284271,-1.13137085\n270,0.85,0.65,1,1,0.3,-0.7\n315,0.65,0.85,0.70710678,0.70710678,0.28284271,-1.13137085\n180,0.65,0.15,0,1,0.3,-0.7\n270,0.55,0.15,1,1,0.3,-0.7\n90,0.15,0.35,1,1,0.3,-0.7\n135,0.35,0.15,0.70710678,0.70710678,0.28284271,-1.13137085\n180,0.15,0.55,0,1,0.3,-0.7\n270,0.45,0.15,1,1,0.3,-0.7\n180,0.15,0.45,0,1,0.3,-0.7\n225,0.85,0.35,0.70710678,0.70710678,0.28284271,-1.13137085\n0,0.35,0.85,0,1,0.3,-0.7\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HEXJOIN-02,HEXJOIN-02 verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n270,0.85,0.45,1,1,0.1,-0.9\n315,0.65,0.85,0.70710678,0.70710678,0.28284271,-1.13137085\n270,0.55,0.15,1,1,0.3,-0.7\n180,0.15,0.55,0,1,0.3,-0.7\n180,0.65,0.15,0,1,0.1,-0.9\n45,0.15,0.65,0.70710678,0.70710678,0.28284271,-1.13137085\n90,0.15,0.55,1,1,0.1,-0.9\n180,0.15,0.45,0,1,0.3,-0.7\n180,0.45,0.15,0,1,0.1,-0.9\n270,0.45,0.15,1,1,0.3,-0.7\n90,0.15,0.35,1,1,0.1,-0.9\n0,0.55,0.85,0,1,0.1,-0.9\n135,0.35,0.15,0.70710678,0.70710678,0.28284271,-1.13137085\n0,0.35,0.85,0,1,0.1,-0.9\n225,0.85,0.35,0.70710678,0.70710678,0.28284271,-1.13137085\n270,0.85,0.65,1,1,0.1,-0.9\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HEX,HEX\n0, 0,0, 0,.21650635, .125,-.25\n120, 0,0, 0,.21650635, .125,-.25\n60, .125,0, 0,.21650635, .125,-.25\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HOLLY,HOLLY\n;By John Hyslop\n;Developed in inch as imperial QCAD3 pattern\n99.462322,0.8,0.11,5.09636861,0.16439899,0.06082763,-6.0219349\n74.744881,0.67,0.08,4.12217269,0.0877058,0.11401754,-11.28773671\n68.198591,0.53,0.15,3.15682075,0.18569534,0.1077033,-5.27746151\n270,0.58,0.37,0,1,0.07,-0.93\n248.198591,0.75,0.35,3.15682075,0.18569534,0.1077033,-5.27746151\n45,0.8,0.2,0.70710678,0.70710678,0.08485281,-1.32936075\n351.869898,0.9,0.13,0.98994949,0.14142136,0.07071068,-7.00035713\n0,0.86,0.13,0,1,0.04,-0.96\n26.565051,0.82,0.11,1.34164079,0.4472136,0.04472136,-2.19134662\n45,0.8,0.09,0.70710678,0.70710678,0.02828427,-1.38592929\n341.565051,0.77,0.1,0.9486833,0.31622777,0.03162278,-3.13065488\n0,0.73,0.1,0,1,0.04,-0.96\n26.565051,0.71,0.09,1.34164079,0.4472136,0.02236068,-2.2137073\n26.565051,0.69,0.08,1.34164079,0.4472136,0.02236068,-2.2137073\n53.130102,0.66,0.04,3.6,0.2,0.05,-4.95\n270,0.66,0.08,0,1,0.04,-0.96\n303.690068,0.64,0.11,1.38675049,0.2773501,0.03605551,-3.56949576\n315,0.62,0.13,0.70710678,0.70710678,0.02828427,-1.38592929\n345.963757,0.58,0.14,0.9701425,0.24253563,0.04123106,-4.08187457\n0,0.54,0.14,0,1,0.04,-0.96\n33.690068,0.51,0.12,1.38675049,0.2773501,0.03605551,-3.56949576\n255.963757,0.52,0.16,0.9701425,0.24253563,0.04123106,-4.08187457\n281.309932,0.51,0.21,4.11843884,0.19611614,0.0509902,-5.04802932\n284.036243,0.5,0.25,3.15296313,0.24253563,0.04123106,-4.08187457\n296.565051,0.48,0.29,1.34164079,0.4472136,0.04472136,-2.19134662\n303.690068,0.46,0.32,1.38675049,0.2773501,0.03605551,-3.56949576\n180,0.5,0.32,0,1,0.04,-0.96\n180,0.53,0.32,0,1,0.03,-0.97\n213.690068,0.56,0.34,1.38675049,0.2773501,0.03605551,-3.56949576\n243.434949,0.57,0.36,0.89442719,0.4472136,0.02236068,-2.2137073\n251.565051,0.58,0.39,0.9486833,0.31622777,0.03162278,-3.13065488\n108.434949,0.59,0.36,2.21359436,0.31622777,0.03162278,-3.13065488\n135,0.61,0.34,0.70710678,0.70710678,0.02828427,-1.38592929\n153.434949,0.63,0.33,0.89442719,0.4472136,0.02236068,-2.2137073\n161.565051,0.66,0.32,0.9486833,0.31622777,0.03162278,-3.13065488\n180,0.69,0.32,0,1,0.03,-0.97\n198.434949,0.72,0.33,2.21359436,0.31622777,0.03162278,-3.13065488\n225,0.74,0.35,0.70710678,0.70710678,0.02828427,-1.38592929\n251.565051,0.75,0.38,0.9486833,0.31622777,0.03162278,-3.13065488\n108.434949,0.76,0.35,2.21359436,0.31622777,0.03162278,-3.13065488\n116.565051,0.78,0.31,1.34164079,0.4472136,0.04472136,-2.19134662\n135,0.81,0.28,0.70710678,0.70710678,0.04242641,-1.37178716\n161.565051,0.84,0.27,0.9486833,0.31622777,0.03162278,-3.13065488\n180,0.87,0.27,0,1,0.03,-0.97\n90,0.87,0.24,0,1,0.03,-0.97\n111.801409,0.89,0.19,2.22834406,0.18569534,0.05385165,-5.33131316\n126.869898,0.92,0.15,1.4,0.2,0.05,-4.95\n149.036243,0.97,0.12,2.22948161,0.17149859,0.05830952,-5.77264238\n338.587031,0.46,0.32,24.69817132,0.01825438,0.54781384,-54.23356986\n338.198591,0.8,0.69,3.15682075,0.18569534,0.05385165,-5.33131316\n323.972627,0.71,0.62,8.60201108,0.07352146,0.13601471,-13.4654558\n315,0.6,0.53,0.70710678,0.70710678,0.11313708,-1.30107648\n135,0.58,0.55,0.70710678,0.70710678,0.07071068,-1.34350288\n126.869898,0.68,0.65,1.4,0.2,0.1,-4.9\n105.945396,0.77,0.72,3.15929297,0.13736056,0.0728011,-7.20730879\n30.963757,0.87,0.8,3.60147029,0.17149859,0.05830952,-5.77264238\n14.036243,0.83,0.79,3.15296313,0.24253563,0.04123106,-4.08187457\n0,0.8,0.79,0,1,0.03,-0.97\n341.565051,0.77,0.8,0.9486833,0.31622777,0.03162278,-3.13065488\n333.434949,0.75,0.81,0.89442719,0.4472136,0.02236068,-2.2137073\n63.434949,0.74,0.79,0.89442719,0.4472136,0.02236068,-2.2137073\n45,0.72,0.77,0.70710678,0.70710678,0.02828427,-1.38592929\n33.690068,0.69,0.75,1.38675049,0.2773501,0.03605551,-3.56949576\n18.434949,0.66,0.74,2.21359436,0.31622777,0.03162278,-3.13065488\n0,0.63,0.74,0,1,0.03,-0.97\n341.565051,0.6,0.75,0.9486833,0.31622777,0.03162278,-3.13065488\n108.434949,0.61,0.72,2.21359436,0.31622777,0.03162278,-3.13065488\n90,0.61,0.69,0,1,0.03,-0.97\n75.963757,0.6,0.65,0.9701425,0.24253563,0.04123106,-4.08187457\n45,0.57,0.62,0.70710678,0.70710678,0.04242641,-1.37178716\n14.036243,0.53,0.61,3.15296313,0.24253563,0.04123106,-4.08187457\n0,0.5,0.61,0,1,0.03,-0.97\n126.869898,0.53,0.57,1.4,0.2,0.05,-4.95\n90,0.53,0.54,0,1,0.03,-0.97\n75.963757,0.52,0.5,0.9701425,0.24253563,0.04123106,-4.08187457\n56.309932,0.5,0.47,2.21880078,0.2773501,0.03605551,-3.56949576\n191.309932,0.55,0.48,4.11843884,0.19611614,0.0509902,-5.04802932\n168.690068,0.6,0.47,0.98058068,0.19611614,0.0509902,-5.04802932\n161.565051,0.66,0.45,0.9486833,0.31622777,0.06324555,-3.09903211\n143.130102,0.7,0.42,3.6,0.2,0.05,-4.95\n270,0.7,0.43,0,1,0.01,-0.99\n270,0.7,0.46,0,1,0.03,-0.97\n243.434949,0.72,0.5,0.89442719,0.4472136,0.04472136,-2.19134662\n213.690068,0.75,0.52,1.38675049,0.2773501,0.03605551,-3.56949576\n198.434949,0.78,0.53,2.21359436,0.31622777,0.03162278,-3.13065488\n180,0.82,0.53,0,1,0.04,-0.96\n146.309932,0.85,0.51,2.21880078,0.2773501,0.03605551,-3.56949576\n303.690068,0.83,0.54,1.38675049,0.2773501,0.03605551,-3.56949576\n270,0.83,0.57,0,1,0.03,-0.97\n270,0.83,0.61,0,1,0.04,-0.96\n243.434949,0.85,0.65,0.89442719,0.4472136,0.04472136,-2.19134662\n225,0.87,0.67,0.70710678,0.70710678,0.02828427,-1.38592929\n296.565051,0.86,0.69,1.34164079,0.4472136,0.02236068,-2.2137073\n270,0.86,0.71,0,1,0.02,-0.98\n255.963757,0.87,0.75,0.9701425,0.24253563,0.04123106,-4.08187457\n243.434949,0.89,0.79,0.89442719,0.4472136,0.04472136,-2.19134662\n233.130102,0.92,0.83,3.6,0.2,0.05,-4.95\n40.601295,0.5,0.47,1.41004798,0.10846523,0.55317267,-8.66637179\n195.945396,0.26,0.54,3.15929297,0.13736056,0.0728011,-7.20730879\n5.194429,0.29,0.55,10.04946781,0.09053575,0.11045361,-10.93490741\n19.983107,0.28,0.68,8.54357658,0.08543577,0.117047,-11.58765291\n185.710593,0.23,0.68,9.05483843,0.09950372,0.10049876,-9.94937686\n164.054604,0.22,0.79,4.12081692,0.13736056,0.0728011,-7.20730879\n45,0.27,0.79,0.70710678,0.70710678,0.05656854,-1.35764502\n90,0.21,0.92,0,1,0.04,-0.96\n75.963757,0.2,0.88,0.9701425,0.24253563,0.04123106,-4.08187457\n243.434949,0.31,0.47,0.89442719,0.4472136,0.04472136,-2.19134662\n236.309932,0.33,0.5,2.21880078,0.2773501,0.03605551,-3.56949576\n225,0.36,0.53,0.70710678,0.70710678,0.04242641,-1.37178716\n213.690068,0.39,0.55,1.38675049,0.2773501,0.03605551,-3.56949576\n189.462322,0.45,0.56,5.09636861,0.16439899,0.06082763,-6.0219349\n333.434949,0.43,0.57,0.89442719,0.4472136,0.02236068,-2.2137073\n326.309932,0.4,0.59,2.21880078,0.2773501,0.03605551,-3.56949576\n303.690068,0.38,0.62,1.38675049,0.2773501,0.03605551,-3.56949576\n270,0.38,0.66,0,1,0.04,-0.96\n251.565051,0.39,0.69,0.9486833,0.31622777,0.03162278,-3.13065488\n236.309932,0.41,0.72,2.21880078,0.2773501,0.03605551,-3.56949576\n213.690068,0.44,0.74,1.38675049,0.2773501,0.03605551,-3.56949576\n0,0.4,0.74,0,1,0.04,-0.96\n333.434949,0.36,0.76,0.89442719,0.4472136,0.04472136,-2.19134662\n306.869898,0.33,0.8,1.4,0.2,0.05,-4.95\n284.036243,0.32,0.84,3.15296313,0.24253563,0.04123106,-4.08187457\n341.565051,0.29,0.85,0.9486833,0.31622777,0.03162278,-3.13065488\n326.309932,0.26,0.87,2.21880078,0.2773501,0.03605551,-3.56949576\n303.690068,0.24,0.9,1.38675049,0.2773501,0.03605551,-3.56949576\n296.565051,0.21,0.96,1.34164079,0.4472136,0.06708204,-2.16898594\n56.309932,0.18,0.85,2.21880078,0.2773501,0.03605551,-3.56949576\n45,0.16,0.83,0.70710678,0.70710678,0.02828427,-1.38592929\n33.690068,0.13,0.81,1.38675049,0.2773501,0.03605551,-3.56949576\n116.565051,0.14,0.79,1.34164079,0.4472136,0.02236068,-2.2137073\n108.434949,0.15,0.76,2.21359436,0.31622777,0.03162278,-3.13065488\n90,0.15,0.72,0,1,0.04,-0.96\n63.434949,0.13,0.68,0.89442719,0.4472136,0.04472136,-2.19134662\n33.690068,0.1,0.66,1.38675049,0.2773501,0.03605551,-3.56949576\n165.963757,0.14,0.65,0.9701425,0.24253563,0.04123106,-4.08187457\n143.130102,0.18,0.62,3.6,0.2,0.05,-4.95\n116.565051,0.2,0.58,1.34164079,0.4472136,0.04472136,-2.19134662\n75.963757,0.19,0.54,0.9701425,0.24253563,0.04123106,-4.08187457\n63.434949,0.17,0.5,0.89442719,0.4472136,0.04472136,-2.19134662\n180,0.21,0.5,0,1,0.04,-0.96\n165.963757,0.25,0.49,0.9701425,0.24253563,0.04123106,-4.08187457\n135,0.27,0.47,0.70710678,0.70710678,0.02828427,-1.38592929\n116.565051,0.29,0.43,1.34164079,0.4472136,0.04472136,-2.19134662\n278.583621,0.21,0.96,33.37663332,0.01865659,0.53600373,-53.0643694\n104.036243,0.3,0.2,3.15296313,0.24253563,0.04123106,-4.08187457\n123.690068,0.32,0.17,1.38675049,0.2773501,0.03605551,-3.56949576\n153.434949,0.36,0.15,0.89442719,0.4472136,0.04472136,-2.19134662\n180,0.39,0.15,0,1,0.03,-0.97\n206.565051,0.43,0.17,1.34164079,0.4472136,0.04472136,-2.19134662\n236.309932,0.45,0.2,2.21880078,0.2773501,0.03605551,-3.56949576\n255.963757,0.46,0.24,0.9701425,0.24253563,0.04123106,-4.08187457\n288.434949,0.45,0.27,2.21359436,0.31622777,0.03162278,-3.13065488\n303.690068,0.43,0.3,1.38675049,0.2773501,0.03605551,-3.56949576\n333.434949,0.39,0.32,0.89442719,0.4472136,0.04472136,-2.19134662\n0,0.36,0.32,0,1,0.03,-0.97\n26.565051,0.32,0.3,1.34164079,0.4472136,0.04472136,-2.19134662\n56.309932,0.3,0.27,2.21880078,0.2773501,0.03605551,-3.56949576\n71.565051,0.29,0.24,0.9486833,0.31622777,0.03162278,-3.13065488\n104.036243,0.16,0.31,3.15296313,0.24253563,0.04123106,-4.08187457\n123.690068,0.18,0.28,1.38675049,0.2773501,0.03605551,-3.56949576\n153.434949,0.22,0.26,0.89442719,0.4472136,0.04472136,-2.19134662\n180,0.25,0.26,0,1,0.03,-0.97\n206.565051,0.29,0.28,1.34164079,0.4472136,0.04472136,-2.19134662\n236.309932,0.31,0.31,2.21880078,0.2773501,0.03605551,-3.56949576\n255.963757,0.32,0.35,0.9701425,0.24253563,0.04123106,-4.08187457\n288.434949,0.31,0.38,2.21359436,0.31622777,0.03162278,-3.13065488\n303.690068,0.29,0.41,1.38675049,0.2773501,0.03605551,-3.56949576\n333.434949,0.25,0.43,0.89442719,0.4472136,0.04472136,-2.19134662\n0,0.22,0.43,0,1,0.03,-0.97\n26.565051,0.18,0.41,1.34164079,0.4472136,0.04472136,-2.19134662\n56.309932,0.16,0.38,2.21880078,0.2773501,0.03605551,-3.56949576\n71.565051,0.15,0.35,0.9486833,0.31622777,0.03162278,-3.13065488\n104.036243,0.34,0.38,3.15296313,0.24253563,0.04123106,-4.08187457\n123.690068,0.36,0.35,1.38675049,0.2773501,0.03605551,-3.56949576\n153.434949,0.4,0.33,0.89442719,0.4472136,0.04472136,-2.19134662\n180,0.43,0.33,0,1,0.03,-0.97\n206.565051,0.47,0.35,1.34164079,0.4472136,0.04472136,-2.19134662\n236.309932,0.49,0.38,2.21880078,0.2773501,0.03605551,-3.56949576\n255.963757,0.5,0.42,0.9701425,0.24253563,0.04123106,-4.08187457\n288.434949,0.49,0.45,2.21359436,0.31622777,0.03162278,-3.13065488\n303.690068,0.47,0.48,1.38675049,0.2773501,0.03605551,-3.56949576\n333.434949,0.43,0.5,0.89442719,0.4472136,0.04472136,-2.19134662\n0,0.4,0.5,0,1,0.03,-0.97\n26.565051,0.36,0.48,1.34164079,0.4472136,0.04472136,-2.19134662\n56.309932,0.34,0.45,2.21880078,0.2773501,0.03605551,-3.56949576\n71.565051,0.33,0.42,0.9486833,0.31622777,0.03162278,-3.13065488\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HONEY,HONEY\n0, 0,0, .1875,.10825317, .125,-.25\n120, 0,0, .1875,.10825317, .125,-.25\n60, 0,0, .1875,.10825317, -.25,.125\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*HOUND,HOUND\n0, 0,0, .25,.0625, 1,-.5\n90, 0,0, -.25,.0625, 1,-.5\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*INSUL,INSUL\n0, 0,0, 0,.375\n0, 0,.125, 0,.375, .125,-.125\n0, 0,.25, 0,.375, .125,-.125\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LATTICE-01,LATTICE-01 verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n180,0.08514719,0.4,0,1,0.17029438,-0.82970562\n270,0.6,0.08514719,1,1,0.17029438,-0.82970562\n270,0.4,0.08514719,1,1,0.17029438,-0.82970562\n135,0.5,0.2679899,0.70710678,0.70710678,0.32811183,-1.08610173\n225,0.7320101,0.5,0.70710678,0.70710678,0.32811183,-1.08610173\n45,0.08514719,0.6,0.70710678,0.70710678,0.44526911,-0.96894445\n180,0.08514719,0.6,0,1,0.17029438,-0.82970562\n315,0.5,0.7320101,0.70710678,0.70710678,0.32811183,-1.08610173\n45,0.2679899,0.5,0.70710678,0.70710678,0.32811183,-1.08610173\n315,0.6,0.91485281,0.70710678,0.70710678,0.44526911,-0.96894445\n45,0.6,0.08514719,0.70710678,0.70710678,0.44526911,-0.96894445\n315,0.08514719,0.4,0.70710678,0.70710678,0.44526911,-0.96894445\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LATTICE-02,LATTICE-02 verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n180,0.38333333,0.38333333,0,1,0.76666666,-0.23333334\n270,0.61666667,1,1,1,1;,0 Removed 0 IT RENDERS A POINT\n180,0.38333333,0.61666667,0,1,0.76666666,-0.23333334\n270,0.38333333,1,1,1,1,;0 Removed 0 IT RENDERS A POINT\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LATTICE-03,LATTICE-03 verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n180,0.38333333,0.38333333,0,1,0.76666666,-0.23333334\n180,0.38333333,0.61666667,0,1,0.76666666,-0.23333334\n270,0.61666667,0.38333333,1,1,0.76666666,-0.23333334\n270,0.38333333,0.38333333,1,1,0.76666666,-0.23333334\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LATTICE-04,LATTICE-04 verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n296.565051,0.15333333,0.46,1.34164079,0.4472136,1.13294111,-1.10312687\n296.565051,0.34000001,0.55333333,1.34164079,0.4472136,1.13294111,-1.10312687\n206.565051,0.46,0.84666667,1.34164079,0.4472136,1.13294111,-1.10312687\n206.565051,0.55333333,0.65999999,1.34164079,0.4472136,1.13294111,-1.10312687\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LATTICE-05,LATTICE-05\n;By John Hyslop\n;Developed in inch as imperial QCAD3 pattern\n0,0.775,0.075,0,1,0.15,-0.85\n180,0.225,0.925,0,1,0.15,-0.85\n180,0.625,0.225,0,1,0.4,-0.6\n180,0.625,0.075,0,1,0.55,-0.45\n270,0.625,0.225,0,1,0.15,-0.85\n270,0.775,0.775,0,1,0.7,-0.3\n270,0.925,0.925,0,1,0.85,-0.15\n0,0.375,0.775,0,1,0.4,-0.6\n0,0.375,0.925,0,1,0.55,-0.45\n90,0.375,0.775,0,1,0.15,-0.85\n90,0.225,0.225,0,1,0.7,-0.3\n90,0.075,0.075,0,1,0.85,-0.15\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LATTICE-06,LATTICE-06\n;By John Hyslop\n;Developed in inch as imperial QCAD3 pattern\n180,0.625,0.375,0,1,0.25,-0.75\n270,0.625,0.625,0,1,0.25,-0.75\n0,0.375,0.625,0,1,0.25,-0.75\n90,0.375,0.375,0,1,0.25,-0.75\n0,0.775,0.075,0,1,0.15,-0.85\n180,0.225,0.925,0,1,0.15,-0.85\n180,0.625,0.225,0,1,0.4,-0.6\n180,0.625,0.075,0,1,0.55,-0.45\n270,0.625,0.225,0,1,0.15,-0.85\n270,0.775,0.775,0,1,0.7,-0.3\n270,0.925,0.925,0,1,0.85,-0.15\n0,0.375,0.775,0,1,0.4,-0.6\n0,0.375,0.925,0,1,0.55,-0.45\n90,0.375,0.775,0,1,0.15,-0.85\n90,0.225,0.225,0,1,0.7,-0.3\n90,0.075,0.075,0,1,0.85,-0.15\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LATTICE-07, verbose comment\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n270,0.69166667,0.69166666,1,1,0.88333333,-0.11666667\n270,0.80833334,0.69166666,1,1,0.88333333,-0.11666667\n270,0.19166666,0.19166667,1,1,0.88333333,-0.11666667\n270,0.30833333,0.19166667,1,1,0.88333333,-0.11666667\n180,0.69166667,0.30833333,0,1,0.88333333,-0.11666667\n180,0.69166667,0.19166666,0,1,0.88333333,-0.11666667\n180,0.19166667,0.80833334,0,1,0.88333333,-0.11666667\n180,0.19166667,0.69166667,0,1,0.88333333,-0.11666667\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LEAF-01,LEAF-01\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in inch as imperial QCAD3 pattern\n83.659808,0.9,0.2,0.99388373,0.11043153,0.09055385,-8.96483129\n26.565051,0.88,0.19,1.34164079,0.4472136,0.02236068,-2.2137073\n14.036243,0.84,0.18,3.15296313,0.24253563,0.04123106,-4.08187457\n315,0.84,0.18,0.70710678,0.70710678,0.05656854,-1.35764502\n83.659808,0.84,0.18,0.99388373,0.11043153,0.09055385,-8.96483129\n0,0.79,0.18,0,1,0.05,-0.95\n345.963757,0.82,0.12,0.9701425,0.24253563,0.04123106,-4.08187457\n326.309932,0.79,0.14,2.21880078,0.2773501,0.03605551,-3.56949576\n303.690068,0.77,0.17,1.38675049,0.2773501,0.03605551,-3.56949576\n18.434949,0.74,0.16,2.21359436,0.31622777,0.03162278,-3.13065488\n288.434949,0.73,0.19,2.21359436,0.31622777,0.03162278,-3.13065488\n180,0.77,0.19,0,1,0.04,-0.96\n258.690068,0.78,0.24,0.98058068,0.19611614,0.0509902,-5.04802932\n243.434949,0.79,0.26,0.89442719,0.4472136,0.02236068,-2.2137073\n225,0.82,0.29,0.70710678,0.70710678,0.04242641,-1.37178716\n213.690068,0.85,0.31,1.38675049,0.2773501,0.03605551,-3.56949576\n191.309932,0.9,0.32,4.11843884,0.19611614,0.0509902,-5.04802932\n128.659808,0.3,0.42,1.40556386,0.15617376,0.06403124,-6.339093\n143.130102,0.34,0.39,3.6,0.2,0.05,-4.95\n153.434949,0.38,0.37,0.89442719,0.4472136,0.04472136,-2.19134662\n192.528808,0.38,0.37,4.1216787,0.10846523,0.09219544,-9.12734901\n105.945396,0.38,0.37,3.15929297,0.13736056,0.0728011,-7.20730879\n153.434949,0.42,0.35,0.89442719,0.4472136,0.04472136,-2.19134662\n149.036243,0.47,0.32,2.22948161,0.17149859,0.05830952,-5.77264238\n95.710593,0.47,0.32,9.05483843,0.09950372,0.10049876,-9.94937686\n194.931417,0.47,0.32,11.40157229,0.06441566,0.15524175,-15.36893295\n135,0.51,0.28,0.70710678,0.70710678,0.05656854,-1.35764502\n123.690068,0.53,0.25,1.38675049,0.2773501,0.03605551,-3.56949576\n199.653824,0.53,0.25,11.70450662,0.06726728,0.14866069,-14.71740806\n71.565051,0.53,0.25,0.9486833,0.31622777,0.09486833,-3.06740933\n119.054604,0.58,0.16,8.06167266,0.09712859,0.1029563,-10.19267384\n288.434949,0.58,0.14,2.21359436,0.31622777,0.06324555,-3.09903211\n21.801409,0.53,0.12,2.22834406,0.18569534,0.05385165,-5.33131316\n11.309932,0.48,0.11,4.11843884,0.19611614,0.0509902,-5.04802932\n0,0.45,0.11,0,1,0.03,-0.97\n341.565051,0.39,0.13,0.9486833,0.31622777,0.06324555,-3.09903211\n326.309932,0.33,0.17,2.21880078,0.2773501,0.07211103,-3.53344025\n308.659808,0.29,0.22,1.40556386,0.15617376,0.06403124,-6.339093\n300.963757,0.26,0.27,3.60147029,0.17149859,0.05830952,-5.77264238\n285.945396,0.24,0.34,3.15929297,0.13736056,0.0728011,-7.20730879\n270,0.24,0.41,0,1,0.07,-0.93\n279.462322,0.23,0.47,5.09636861,0.16439899,0.06082763,-6.0219349\n285.945396,0.21,0.54,3.15929297,0.13736056,0.0728011,-7.20730879\n123.690068,0.23,0.51,1.38675049,0.2773501,0.03605551,-3.56949576\n161.565051,0.26,0.5,0.9486833,0.31622777,0.03162278,-3.13065488\n171.869898,0.33,0.49,0.98994949,0.14142136,0.07071068,-7.00035713\n171.869898,0.4,0.48,0.98994949,0.14142136,0.07071068,-7.00035713\n161.565051,0.46,0.46,0.9486833,0.31622777,0.06324555,-3.09903211\n161.565051,0.52,0.44,0.9486833,0.31622777,0.06324555,-3.09903211\n146.309932,0.58,0.4,2.21880078,0.2773501,0.07211103,-3.53344025\n119.744881,0.62,0.33,5.82963253,0.12403473,0.08062258,-7.98163517\n111.801409,0.64,0.28,2.22834406,0.18569534,0.05385165,-5.33131316\n90,0.64,0.24,0,1,0.04,-0.96\n75.963757,0.63,0.2,0.9701425,0.24253563,0.04123106,-4.08187457\n56.309932,0.61,0.17,2.21880078,0.2773501,0.03605551,-3.56949576\n63.434949,0.6,0.15,0.89442719,0.4472136,0.02236068,-2.2137073\n126.869898,0.63,0.11,1.4,0.2,0.05,-4.95\n45,0.6,0.08,0.70710678,0.70710678,0.04242641,-1.37178716\n233.130102,0.89,0.04,3.6,0.2,0.05,-4.95\n258.690068,0.07,0.05,0.98058068,0.19611614,0.0509902,-5.04802932\n258.690068,0.14,0.05,0.98058068,0.19611614,0.0509902,-5.04802932\n198.434949,0.26,0.02,2.21359436,0.31622777,0.06324555,-3.09903211\n225,0.31,0.02,0.70710678,0.70710678,0.02828427,-1.38592929\n198.434949,0.34,0.03,2.21359436,0.31622777,0.03162278,-3.13065488\n348.690068,0.29,0.04,0.98058068,0.19611614,0.0509902,-5.04802932\n345.963757,0.25,0.05,0.9701425,0.24253563,0.04123106,-4.08187457\n333.434949,0.21,0.07,0.89442719,0.4472136,0.04472136,-2.19134662\n333.434949,0.15,0.1,0.89442719,0.4472136,0.06708204,-2.16898594\n348.690068,0.1,0.11,0.98058068,0.19611614,0.0509902,-5.04802932\n0,0.07,0.11,0,1,0.03,-0.97\n8.130102,0,0.1,6.08111832,0.14142136,0.07071068,-7.00035713\n236.309932,0.02,0.23,2.21880078,0.2773501,0.03605551,-3.56949576\n236.309932,0.04,0.26,2.21880078,0.2773501,0.03605551,-3.56949576\n213.690068,0.07,0.28,1.38675049,0.2773501,0.03605551,-3.56949576\n0,0.03,0.28,0,1,0.04,-0.96\n326.309932,0,0.3,2.21880078,0.2773501,0.03605551,-3.56949576\n18.434949,0,0.26,2.21359436,0.31622777,0.03162278,-3.13065488\n0,0,0.55,0,1,0.07,-0.93\n14.036243,0.1,0.61,3.15296313,0.24253563,0.04123106,-4.08187457\n21.801409,0.05,0.59,2.22834406,0.18569534,0.05385165,-5.33131316\n30.963757,0,0.56,3.60147029,0.17149859,0.05830952,-5.77264238\n254.054604,0.02,0.66,4.12081692,0.13736056,0.0728011,-7.20730879\n158.198591,0.05,0.69,3.15682075,0.18569534,0.05385165,-5.33131316\n153.434949,0.11,0.66,0.89442719,0.4472136,0.06708204,-2.16898594\n158.198591,0.16,0.64,3.15682075,0.18569534,0.05385165,-5.33131316\n180,0.21,0.64,0,1,0.05,-0.95\n33.690068,0.18,0.62,1.38675049,0.2773501,0.03605551,-3.56949576\n45,0.16,0.6,0.70710678,0.70710678,0.02828427,-1.38592929\n53.130102,0.13,0.56,3.6,0.2,0.05,-4.95\n56.309932,0.09,0.5,2.21880078,0.2773501,0.07211103,-3.53344025\n51.340192,0.05,0.45,4.99756038,0.15617376,0.06403124,-6.339093\n38.659808,0,0.41,1.40556386,0.15617376,0.06403124,-6.339093\n180,0.82,0.48,0,1,0.1,-0.9\n310.601295,0.82,0.48,1.41004798,0.10846523,0.09219544,-9.12734901\n82.405357,0.82,0.48,8.06198693,0.06608186,0.15132746,-14.98141849\n180,0.84,0.48,0,1,0.02,-0.98\n194.036243,0.88,0.49,3.15296313,0.24253563,0.04123106,-4.08187457\n198.434949,0.91,0.5,2.21359436,0.31622777,0.03162278,-3.13065488\n0,0.83,0.37,0,1,0.08,-0.92\n348.690068,0.78,0.38,0.98058068,0.19611614,0.0509902,-5.04802932\n321.340192,0.73,0.42,4.99756038,0.15617376,0.06403124,-6.339093\n300.963757,0.7,0.47,3.60147029,0.17149859,0.05830952,-5.77264238\n21.801409,0.65,0.45,2.22834406,0.18569534,0.05385165,-5.33131316\n284.036243,0.64,0.49,3.15296313,0.24253563,0.04123106,-4.08187457\n180,0.7,0.49,0,1,0.06,-0.94\n261.869898,0.71,0.56,0.98994949,0.14142136,0.07071068,-7.00035713\n248.198591,0.73,0.61,3.15682075,0.18569534,0.05385165,-5.33131316\n225,0.77,0.65,0.70710678,0.70710678,0.05656854,-1.35764502\n216.869898,0.81,0.68,1.4,0.2,0.05,-4.95\n198.434949,0.9,0.71,2.21359436,0.31622777,0.09486833,-3.06740933\n153.434949,0.36,0.65,0.89442719,0.4472136,0.06708204,-2.16898594\n170.537678,0.42,0.64,0.98639392,0.16439899,0.06082763,-6.0219349\n188.130102,0.49,0.65,6.08111832,0.14142136,0.07071068,-7.00035713\n201.801409,0.54,0.67,2.22834406,0.18569534,0.05385165,-5.33131316\n219.805571,0.6,0.72,1.40840568,0.12803688,0.0781025,-7.73214718\n18.434949,0.97,0.25,2.21359436,0.31622777,0.03162278,-3.13065488\n33.690068,0.94,0.23,1.38675049,0.2773501,0.03605551,-3.56949576\n0,0.94,0.23,0,1,0.04,-0.96\n80.537678,0.94,0.23,0.98639392,0.16439899,0.06082763,-6.0219349\n36.869898,0.9,0.2,1.4,0.2,0.05,-4.95\n341.565051,0.9,0.2,0.9486833,0.31622777,0.06324555,-3.09903211\n53.130102,0.97,0.16,3.6,0.2,0.05,-4.95\n38.659808,0.92,0.12,1.40556386,0.15617376,0.06403124,-6.339093\n9.462322,0.86,0.11,5.09636861,0.16439899,0.06082763,-6.0219349\n180,0.95,0.32,0,1,0.05,-0.95\n158.198591,1,0.3,3.15682075,0.18569534,0.05385165,-5.33131316\n216.869898,0.93,0.07,1.4,0.2,0.05,-4.95\n206.565051,0.97,0.09,1.34164079,0.4472136,0.04472136,-2.19134662\n198.434949,1,0.1,2.21359436,0.31622777,0.03162278,-3.13065488\n90,0.97,0,0,1,0.02,-0.98\n26.565051,0.96,0.53,1.34164079,0.4472136,0.04472136,-2.19134662\n56.309932,0.96,0.53,2.21880078,0.2773501,0.07211103,-3.53344025\n36.869898,0.96,0.53,1.4,0.2,0.05,-4.95\n30.963757,0.91,0.5,3.60147029,0.17149859,0.05830952,-5.77264238\n78.690068,0.91,0.5,0.98058068,0.19611614,0.15297059,-4.94604893\n156.037511,1,0.46,7.61509624,0.10153462,0.09848858,-9.75036922\n30.963757,0.95,0.38,3.60147029,0.17149859,0.05830952,-5.77264238\n14.036243,0.91,0.37,3.15296313,0.24253563,0.04123106,-4.08187457\n180,1,0.71,0,1,0.1,-0.9\n0,0.86,0.87,0,1,0.09,-0.91\n11.309932,0.95,0.87,4.11843884,0.19611614,0.0509902,-5.04802932\n135,1,0.82,0.70710678,0.70710678,0.07071068,-1.34350288\n0,0.96,0.76,0,1,0.04,-0.96\n345.963757,0.92,0.77,0.9701425,0.24253563,0.04123106,-4.08187457\n333.434949,0.88,0.79,0.89442719,0.4472136,0.04472136,-2.19134662\n315,0.86,0.81,0.70710678,0.70710678,0.02828427,-1.38592929\n306.869898,0.83,0.85,1.4,0.2,0.05,-4.95\n11.309932,0.78,0.84,4.11843884,0.19611614,0.0509902,-5.04802932\n284.036243,0.77,0.88,3.15296313,0.24253563,0.04123106,-4.08187457\n180,0.83,0.88,0,1,0.06,-0.94\n14.036243,0.65,0.89,3.15296313,0.24253563,0.04123106,-4.08187457\n18.434949,0.62,0.88,2.21359436,0.31622777,0.03162278,-3.13065488\n33.690068,0.59,0.86,1.38675049,0.2773501,0.03605551,-3.56949576\n230.194429,0.65,0.78,6.401844,0.12803688,0.0781025,-7.73214718\n239.036243,0.68,0.83,2.22948161,0.17149859,0.05830952,-5.77264238\n236.309932,0.72,0.89,2.21880078,0.2773501,0.07211103,-3.53344025\n213.690068,0.75,0.91,1.38675049,0.2773501,0.03605551,-3.56949576\n198.434949,0.78,0.92,2.21359436,0.31622777,0.03162278,-3.13065488\n0,0.74,0.92,0,1,0.04,-0.96\n345.963757,0.7,0.93,0.9701425,0.24253563,0.04123106,-4.08187457\n261.869898,0.84,0.95,0.98994949,0.14142136,0.07071068,-7.00035713\n248.198591,0.86,1,3.15682075,0.18569534,0.05385165,-5.33131316\n36.869898,0.55,0.83,1.4,0.2,0.05,-4.95\n0,0.55,0.83,0,1,0.08,-0.92\n78.690068,0.55,0.83,0.98058068,0.19611614,0.10198039,-4.99703912\n33.690068,0.52,0.81,1.38675049,0.2773501,0.03605551,-3.56949576\n30.963757,0.47,0.78,3.60147029,0.17149859,0.05830952,-5.77264238\n336.037511,0.47,0.78,7.61509624,0.10153462,0.09848858,-9.75036922\n79.380345,0.47,0.78,11.18017113,0.06142951,0.16278821,-16.11603239\n26.565051,0.43,0.76,1.34164079,0.4472136,0.04472136,-2.19134662\n9.462322,0.37,0.75,5.09636861,0.16439899,0.06082763,-6.0219349\n318.814075,0.37,0.75,9.21906451,0.09407209,0.10630146,-10.52384435\n82.405357,0.37,0.75,8.06198693,0.06608186,0.15132746,-14.98141849\n0,0.33,0.75,0,1,0.04,-0.96\n0,0.29,0.75,0,1,0.04,-0.96\n0,0.2,0.76,0,1,0.06,-0.94\n104.036243,0.21,0.72,3.15296313,0.24253563,0.04123106,-4.08187457\n201.801409,0.26,0.74,2.22834406,0.18569534,0.05385165,-5.33131316\n123.690068,0.3,0.68,1.38675049,0.2773501,0.07211103,-3.53344025\n338.198591,0.65,0.95,3.15682075,0.18569534,0.05385165,-5.33131316\n333.434949,0.59,0.98,0.89442719,0.4472136,0.06708204,-2.16898594\n348.690068,0.54,0.99,0.98058068,0.19611614,0.0509902,-5.04802932\n0,0.46,0.99,0,1,0.08,-0.92\n18.434949,0.4,0.97,2.21359436,0.31622777,0.06324555,-3.09903211\n26.565051,0.34,0.94,1.34164079,0.4472136,0.06708204,-2.16898594\n45,0.29,0.89,0.70710678,0.70710678,0.07071068,-1.34350288\n71.565051,0.27,0.83,0.9486833,0.31622777,0.06324555,-3.09903211\n81.869898,0.26,0.76,0.98994949,0.14142136,0.07071068,-7.00035713\n;0,0.2,0.76,0,1,0.06,-0.94\n315,0,0.82,0.70710678,0.70710678,0.02828427,-1.38592929\n198.434949,0.03,0.89,2.21359436,0.31622777,0.03162278,-3.13065488\n343.300756,0.03,0.89,7.27947977,0.09578263,0.10440307,-10.33590344\n74.744881,0.03,0.89,4.12217269,0.0877058,0.11401754,-11.28773671\n206.565051,0.05,0.9,1.34164079,0.4472136,0.02236068,-2.2137073\n213.690068,0.08,0.92,1.38675049,0.2773501,0.03605551,-3.56949576\n216.869898,0.12,0.95,1.4,0.2,0.05,-4.95\n352.874984,0.12,0.95,0.99227788,0.12403473,0.08062258,-7.98163517\n78.690068,0.12,0.95,0.98058068,0.19611614,0.0509902,-5.04802932\n213.690068,0.15,0.97,1.38675049,0.2773501,0.03605551,-3.56949576\n213.690068,0.18,0.99,1.38675049,0.2773501,0.03605551,-3.56949576\n206.565051,0.2,1,1.34164079,0.4472136,0.02236068,-2.2137073\n45,0.28,0.99,0.70710678,0.70710678,0.01414214,-1.40007143\n56.309932,0.26,0.96,2.21880078,0.2773501,0.03605551,-3.56949576\n56.309932,0.22,0.9,2.21880078,0.2773501,0.07211103,-3.53344025\n53.130102,0.19,0.86,3.6,0.2,0.05,-4.95\n45,0.14,0.81,0.70710678,0.70710678,0.07071068,-1.34350288\n36.869898,0.1,0.78,1.4,0.2,0.05,-4.95\n18.434949,0.04,0.76,2.21359436,0.31622777,0.06324555,-3.09903211\n0,0,0.76,0,1,0.04,-0.96\n81.253838,0.95,0.87,7.07065907,0.07602859,0.13152946,-13.02141697\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LEAF-02,LEAF-02\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in inch as imperial QCAD3 pattern\n303.690068,0.77,0.17,1.38675049,0.2773501,0.03605551,-3.56949576\n18.434949,0.74,0.16,2.21359436,0.31622777,0.03162278,-3.13065488\n288.434949,0.73,0.19,2.21359436,0.31622777,0.03162278,-3.13065488\n180,0.77,0.19,0,1,0.04,-0.96\n258.690068,0.78,0.24,0.98058068,0.19611614,0.0509902,-5.04802932\n243.434949,0.79,0.26,0.89442719,0.4472136,0.02236068,-2.2137073\n288.434949,0.58,0.14,2.21359436,0.31622777,0.06324555,-3.09903211\n21.801409,0.53,0.12,2.22834406,0.18569534,0.05385165,-5.33131316\n11.309932,0.48,0.11,4.11843884,0.19611614,0.0509902,-5.04802932\n0,0.45,0.11,0,1,0.03,-0.97\n341.565051,0.39,0.13,0.9486833,0.31622777,0.06324555,-3.09903211\n326.309932,0.33,0.17,2.21880078,0.2773501,0.07211103,-3.53344025\n308.659808,0.29,0.22,1.40556386,0.15617376,0.06403124,-6.339093\n300.963757,0.26,0.27,3.60147029,0.17149859,0.05830952,-5.77264238\n285.945396,0.24,0.34,3.15929297,0.13736056,0.0728011,-7.20730879\n270,0.24,0.41,0,1,0.07,-0.93\n279.462322,0.23,0.47,5.09636861,0.16439899,0.06082763,-6.0219349\n285.945396,0.21,0.54,3.15929297,0.13736056,0.0728011,-7.20730879\n123.690068,0.23,0.51,1.38675049,0.2773501,0.03605551,-3.56949576\n161.565051,0.26,0.5,0.9486833,0.31622777,0.03162278,-3.13065488\n171.869898,0.33,0.49,0.98994949,0.14142136,0.07071068,-7.00035713\n171.869898,0.4,0.48,0.98994949,0.14142136,0.07071068,-7.00035713\n161.565051,0.46,0.46,0.9486833,0.31622777,0.06324555,-3.09903211\n161.565051,0.52,0.44,0.9486833,0.31622777,0.06324555,-3.09903211\n146.309932,0.58,0.4,2.21880078,0.2773501,0.07211103,-3.53344025\n119.744881,0.62,0.33,5.82963253,0.12403473,0.08062258,-7.98163517\n111.801409,0.64,0.28,2.22834406,0.18569534,0.05385165,-5.33131316\n90,0.64,0.24,0,1,0.04,-0.96\n75.963757,0.63,0.2,0.9701425,0.24253563,0.04123106,-4.08187457\n56.309932,0.61,0.17,2.21880078,0.2773501,0.03605551,-3.56949576\n63.434949,0.6,0.15,0.89442719,0.4472136,0.02236068,-2.2137073\n126.869898,0.63,0.11,1.4,0.2,0.05,-4.95\n45,0.6,0.08,0.70710678,0.70710678,0.04242641,-1.37178716\n225,0.31,0.02,0.70710678,0.70710678,0.02828427,-1.38592929\n198.434949,0.34,0.03,2.21359436,0.31622777,0.03162278,-3.13065488\n348.690068,0.29,0.04,0.98058068,0.19611614,0.0509902,-5.04802932\n345.963757,0.25,0.05,0.9701425,0.24253563,0.04123106,-4.08187457\n333.434949,0.21,0.07,0.89442719,0.4472136,0.04472136,-2.19134662\n333.434949,0.15,0.1,0.89442719,0.4472136,0.06708204,-2.16898594\n348.690068,0.1,0.11,0.98058068,0.19611614,0.0509902,-5.04802932\n0,0.07,0.11,0,1,0.03,-0.97\n8.130102,0,0.1,6.08111832,0.14142136,0.07071068,-7.00035713\n236.309932,0.02,0.23,2.21880078,0.2773501,0.03605551,-3.56949576\n236.309932,0.04,0.26,2.21880078,0.2773501,0.03605551,-3.56949576\n213.690068,0.07,0.28,1.38675049,0.2773501,0.03605551,-3.56949576\n0,0.03,0.28,0,1,0.04,-0.96\n326.309932,0,0.3,2.21880078,0.2773501,0.03605551,-3.56949576\n158.198591,0.05,0.69,3.15682075,0.18569534,0.05385165,-5.33131316\n153.434949,0.11,0.66,0.89442719,0.4472136,0.06708204,-2.16898594\n158.198591,0.16,0.64,3.15682075,0.18569534,0.05385165,-5.33131316\n180,0.21,0.64,0,1,0.05,-0.95\n33.690068,0.18,0.62,1.38675049,0.2773501,0.03605551,-3.56949576\n45,0.16,0.6,0.70710678,0.70710678,0.02828427,-1.38592929\n53.130102,0.13,0.56,3.6,0.2,0.05,-4.95\n56.309932,0.09,0.5,2.21880078,0.2773501,0.07211103,-3.53344025\n51.340192,0.05,0.45,4.99756038,0.15617376,0.06403124,-6.339093\n38.659808,0,0.41,1.40556386,0.15617376,0.06403124,-6.339093\n321.340192,0.73,0.42,4.99756038,0.15617376,0.06403124,-6.339093\n300.963757,0.7,0.47,3.60147029,0.17149859,0.05830952,-5.77264238\n21.801409,0.65,0.45,2.22834406,0.18569534,0.05385165,-5.33131316\n284.036243,0.64,0.49,3.15296313,0.24253563,0.04123106,-4.08187457\n180,0.7,0.49,0,1,0.06,-0.94\n261.869898,0.71,0.56,0.98994949,0.14142136,0.07071068,-7.00035713\n248.198591,0.73,0.61,3.15682075,0.18569534,0.05385165,-5.33131316\n225,0.77,0.65,0.70710678,0.70710678,0.05656854,-1.35764502\n284.036243,0.77,0.88,3.15296313,0.24253563,0.04123106,-4.08187457\n0,0.2,0.76,0,1,0.06,-0.94\n104.036243,0.21,0.72,3.15296313,0.24253563,0.04123106,-4.08187457\n201.801409,0.26,0.74,2.22834406,0.18569534,0.05385165,-5.33131316\n123.690068,0.3,0.68,1.38675049,0.2773501,0.07211103,-3.53344025\n153.434949,0.36,0.65,0.89442719,0.4472136,0.06708204,-2.16898594\n170.537678,0.42,0.64,0.98639392,0.16439899,0.06082763,-6.0219349\n188.130102,0.49,0.65,6.08111832,0.14142136,0.07071068,-7.00035713\n201.801409,0.54,0.67,2.22834406,0.18569534,0.05385165,-5.33131316\n219.805571,0.6,0.72,1.40840568,0.12803688,0.0781025,-7.73214718\n230.194429,0.65,0.78,6.401844,0.12803688,0.0781025,-7.73214718\n239.036243,0.68,0.83,2.22948161,0.17149859,0.05830952,-5.77264238\n236.309932,0.72,0.89,2.21880078,0.2773501,0.07211103,-3.53344025\n213.690068,0.75,0.91,1.38675049,0.2773501,0.03605551,-3.56949576\n198.434949,0.78,0.92,2.21359436,0.31622777,0.03162278,-3.13065488\n0,0.74,0.92,0,1,0.04,-0.96\n345.963757,0.7,0.93,0.9701425,0.24253563,0.04123106,-4.08187457\n338.198591,0.65,0.95,3.15682075,0.18569534,0.05385165,-5.33131316\n45,0.29,0.89,0.70710678,0.70710678,0.07071068,-1.34350288\n71.565051,0.27,0.83,0.9486833,0.31622777,0.06324555,-3.09903211\n81.869898,0.26,0.76,0.98994949,0.14142136,0.07071068,-7.00035713\n;0,0.2,0.76,0,1,0.06,-0.94\n53.130102,0.19,0.86,3.6,0.2,0.05,-4.95\n45,0.14,0.81,0.70710678,0.70710678,0.07071068,-1.34350288\n36.869898,0.1,0.78,1.4,0.2,0.05,-4.95\n18.434949,0.04,0.76,2.21359436,0.31622777,0.06324555,-3.09903211\n0,0,0.76,0,1,0.04,-0.96\n0,0.96,0.76,0,1,0.04,-0.96\n345.963757,0.92,0.77,0.9701425,0.24253563,0.04123106,-4.08187457\n333.434949,0.88,0.79,0.89442719,0.4472136,0.04472136,-2.19134662\n315,0.86,0.81,0.70710678,0.70710678,0.02828427,-1.38592929\n306.869898,0.83,0.85,1.4,0.2,0.05,-4.95\n11.309932,0.78,0.84,4.11843884,0.19611614,0.0509902,-5.04802932\n180,0.83,0.88,0,1,0.06,-0.94\n261.869898,0.84,0.95,0.98994949,0.14142136,0.07071068,-7.00035713\n248.198591,0.86,1,3.15682075,0.18569534,0.05385165,-5.33131316\n333.434949,0.59,0.98,0.89442719,0.4472136,0.06708204,-2.16898594\n348.690068,0.54,0.99,0.98058068,0.19611614,0.0509902,-5.04802932\n0,0.46,0.99,0,1,0.08,-0.92\n18.434949,0.4,0.97,2.21359436,0.31622777,0.06324555,-3.09903211\n26.565051,0.34,0.94,1.34164079,0.4472136,0.06708204,-2.16898594\n45,0.28,0.99,0.70710678,0.70710678,0.01414214,-1.40007143\n56.309932,0.26,0.96,2.21880078,0.2773501,0.03605551,-3.56949576\n56.309932,0.22,0.9,2.21880078,0.2773501,0.07211103,-3.53344025\n53.130102,0.97,0.16,3.6,0.2,0.05,-4.95\n38.659808,0.92,0.12,1.40556386,0.15617376,0.06403124,-6.339093\n9.462322,0.86,0.11,5.09636861,0.16439899,0.06082763,-6.0219349\n345.963757,0.82,0.12,0.9701425,0.24253563,0.04123106,-4.08187457\n326.309932,0.79,0.14,2.21880078,0.2773501,0.03605551,-3.56949576\n225,0.82,0.29,0.70710678,0.70710678,0.04242641,-1.37178716\n213.690068,0.85,0.31,1.38675049,0.2773501,0.03605551,-3.56949576\n191.309932,0.9,0.32,4.11843884,0.19611614,0.0509902,-5.04802932\n180,0.95,0.32,0,1,0.05,-0.95\n158.198591,1,0.3,3.15682075,0.18569534,0.05385165,-5.33131316\n233.130102,0.89,0.04,3.6,0.2,0.05,-4.95\n216.869898,0.93,0.07,1.4,0.2,0.05,-4.95\n206.565051,0.97,0.09,1.34164079,0.4472136,0.04472136,-2.19134662\n198.434949,1,0.1,2.21359436,0.31622777,0.03162278,-3.13065488\n30.963757,0.95,0.38,3.60147029,0.17149859,0.05830952,-5.77264238\n14.036243,0.91,0.37,3.15296313,0.24253563,0.04123106,-4.08187457\n0,0.83,0.37,0,1,0.08,-0.92\n348.690068,0.78,0.38,0.98058068,0.19611614,0.0509902,-5.04802932\n216.869898,0.81,0.68,1.4,0.2,0.05,-4.95\n198.434949,0.9,0.71,2.21359436,0.31622777,0.09486833,-3.06740933\n180,1,0.71,0,1,0.1,-0.9\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LEAF-03,LEAF-03\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in inch as imperial QCAD3 pattern\n344.054604,0.86,0.38,4.12081692,0.13736056,0.0728011,-7.20730879\n338.198591,0.81,0.4,3.15682075,0.18569534,0.05385165,-5.33131316\n326.309932,0.75,0.44,2.21880078,0.2773501,0.07211103,-3.53344025\n320.194429,0.69,0.49,6.401844,0.12803688,0.0781025,-7.73214718\n308.659808,0.65,0.54,1.40556386,0.15617376,0.06403124,-6.339093\n300.963757,0.62,0.59,3.60147029,0.17149859,0.05830952,-5.77264238\n293.198591,0.59,0.66,2.23220936,0.13130643,0.07615773,-7.53961537\n281.309932,0.58,0.71,4.11843884,0.19611614,0.0509902,-5.04802932\n276.340192,0.57,0.8,8.0615014,0.11043153,0.09055385,-8.96483129\n270,0.57,0.85,0,1,0.05,-0.95\n257.471192,0.59,0.94,5.09786576,0.10846523,0.09219544,-9.12734901\n164.054604,0.66,0.92,4.12081692,0.13736056,0.0728011,-7.20730879\n158.198591,0.71,0.9,3.15682075,0.18569534,0.05385165,-5.33131316\n146.309932,0.77,0.86,2.21880078,0.2773501,0.07211103,-3.53344025\n140.194429,0.83,0.81,6.401844,0.12803688,0.0781025,-7.73214718\n125.537678,0.88,0.74,4.99864847,0.11624764,0.08602325,-8.51630201\n116.565051,0.92,0.66,1.34164079,0.4472136,0.08944272,-2.14662526\n105.945396,0.94,0.59,3.15929297,0.13736056,0.0728011,-7.20730879\n97.125016,0.95,0.51,7.06997987,0.12403473,0.08062258,-7.98163517\n90,0.95,0.45,0,1,0.06,-0.94\n77.471192,0.93,0.36,5.09786576,0.10846523,0.09219544,-9.12734901\n195.945396,0.14,0.38,3.15929297,0.13736056,0.0728011,-7.20730879\n201.801409,0.19,0.4,2.22834406,0.18569534,0.05385165,-5.33131316\n213.690068,0.25,0.44,1.38675049,0.2773501,0.07211103,-3.53344025\n219.805571,0.31,0.49,1.40840568,0.12803688,0.0781025,-7.73214718\n231.340192,0.35,0.54,4.99756038,0.15617376,0.06403124,-6.339093\n239.036243,0.38,0.59,2.22948161,0.17149859,0.05830952,-5.77264238\n246.801409,0.41,0.66,5.38356375,0.13130643,0.07615773,-7.53961537\n258.690068,0.42,0.71,0.98058068,0.19611614,0.0509902,-5.04802932\n263.659808,0.43,0.8,0.99388373,0.11043153,0.09055385,-8.96483129\n270,0.43,0.85,0,1,0.05,-0.95\n282.528808,0.41,0.94,4.1216787,0.10846523,0.09219544,-9.12734901\n15.945396,0.34,0.92,3.15929297,0.13736056,0.0728011,-7.20730879\n21.801409,0.29,0.9,2.22834406,0.18569534,0.05385165,-5.33131316\n33.690068,0.23,0.86,1.38675049,0.2773501,0.07211103,-3.53344025\n39.805571,0.17,0.81,1.40840568,0.12803688,0.0781025,-7.73214718\n54.462322,0.12,0.74,3.6036768,0.11624764,0.08602325,-8.51630201\n63.434949,0.08,0.66,0.89442719,0.4472136,0.08944272,-2.14662526\n74.054604,0.06,0.59,4.12081692,0.13736056,0.0728011,-7.20730879\n82.874984,0.05,0.51,0.99227788,0.12403473,0.08062258,-7.98163517\n90,0.05,0.45,0,1,0.06,-0.94\n102.528808,0.07,0.36,4.1216787,0.10846523,0.09219544,-9.12734901\n128.659808,0.21,0.15,1.40556386,0.15617376,0.06403124,-6.339093\n146.309932,0.27,0.11,2.21880078,0.2773501,0.07211103,-3.53344025\n153.434949,0.33,0.08,0.89442719,0.4472136,0.06708204,-2.16898594\n164.054604,0.4,0.06,4.12081692,0.13736056,0.0728011,-7.20730879\n171.869898,0.47,0.05,0.98994949,0.14142136,0.07071068,-7.00035713\n180,0.53,0.05,0,1,0.06,-0.94\n188.130102,0.6,0.06,6.08111832,0.14142136,0.07071068,-7.00035713\n195.945396,0.67,0.08,3.15929297,0.13736056,0.0728011,-7.20730879\n206.565051,0.73,0.11,1.34164079,0.4472136,0.06708204,-2.16898594\n218.659808,0.78,0.15,1.40556386,0.15617376,0.06403124,-6.339093\n225,0.83,0.2,0.70710678,0.70710678,0.07071068,-1.34350288\n315,0.78,0.25,0.70710678,0.70710678,0.07071068,-1.34350288\n321.340192,0.73,0.29,4.99756038,0.15617376,0.06403124,-6.339093\n336.801409,0.66,0.32,5.38356375,0.13130643,0.07615773,-7.53961537\n341.565051,0.6,0.34,0.9486833,0.31622777,0.06324555,-3.09903211\n351.869898,0.53,0.35,0.98994949,0.14142136,0.07071068,-7.00035713\n0,0.47,0.35,0,1,0.06,-0.94\n8.130102,0.4,0.34,6.08111832,0.14142136,0.07071068,-7.00035713\n18.434949,0.34,0.32,2.21359436,0.31622777,0.06324555,-3.09903211\n23.198591,0.27,0.29,2.23220936,0.13130643,0.07615773,-7.53961537\n38.659808,0.22,0.25,1.40556386,0.15617376,0.06403124,-6.339093\n45,0.17,0.2,0.70710678,0.70710678,0.07071068,-1.34350288\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LINE,LINE\n0, 0,0, 0,.125\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*LOOPLINKS,LOOPLINKS\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in inch as imperial QCAD3 pattern\n206.565051,0.53,0.67,1.34164079,0.4472136,0.02236068,-2.2137073\n243.434949,0.54,0.69,0.89442719,0.4472136,0.02236068,-2.2137073\n116.565051,0.47,0.67,1.34164079,0.4472136,0.02236068,-2.2137073\n153.434949,0.49,0.66,0.89442719,0.4472136,0.02236068,-2.2137073\n180,0.51,0.66,0,1,0.02,-0.98\n258.690068,0.19,0.59,0.98058068,0.19611614,0.0509902,-5.04802932\n251.565051,0.2,0.62,0.9486833,0.31622777,0.03162278,-3.13065488\n243.434949,0.22,0.66,0.89442719,0.4472136,0.04472136,-2.19134662\n230.194429,0.27,0.72,6.401844,0.12803688,0.0781025,-7.73214718\n225,0.31,0.76,0.70710678,0.70710678,0.05656854,-1.35764502\n209.744881,0.38,0.8,5.82963253,0.12403473,0.08062258,-7.98163517\n194.036243,0.46,0.82,3.15296313,0.24253563,0.08246211,-4.04064351\n251.565051,0.28,0.6,0.9486833,0.31622777,0.06324555,-3.09903211\n239.036243,0.31,0.65,2.22948161,0.17149859,0.05830952,-5.77264238\n225,0.35,0.69,0.70710678,0.70710678,0.05656854,-1.35764502\n210.963757,0.4,0.72,3.60147029,0.17149859,0.05830952,-5.77264238\n198.434949,0.46,0.74,2.21359436,0.31622777,0.06324555,-3.09903211\n116.565051,0.67,0.47,1.34164079,0.4472136,0.02236068,-2.2137073\n153.434949,0.69,0.46,0.89442719,0.4472136,0.02236068,-2.2137073\n26.565051,0.67,0.53,1.34164079,0.4472136,0.02236068,-2.2137073\n63.434949,0.66,0.51,0.89442719,0.4472136,0.02236068,-2.2137073\n90,0.66,0.49,0,1,0.02,-0.98\n168.690068,0.59,0.81,0.98058068,0.19611614,0.0509902,-5.04802932\n161.565051,0.62,0.8,0.9486833,0.31622777,0.03162278,-3.13065488\n153.434949,0.66,0.78,0.89442719,0.4472136,0.04472136,-2.19134662\n140.194429,0.72,0.73,6.401844,0.12803688,0.0781025,-7.73214718\n135,0.76,0.69,0.70710678,0.70710678,0.05656854,-1.35764502\n119.744881,0.8,0.62,5.82963253,0.12403473,0.08062258,-7.98163517\n104.036243,0.82,0.54,3.15296313,0.24253563,0.08246211,-4.04064351\n161.565051,0.6,0.72,0.9486833,0.31622777,0.06324555,-3.09903211\n149.036243,0.65,0.69,2.22948161,0.17149859,0.05830952,-5.77264238\n135,0.69,0.65,0.70710678,0.70710678,0.05656854,-1.35764502\n120.963757,0.72,0.6,3.60147029,0.17149859,0.05830952,-5.77264238\n108.434949,0.74,0.54,2.21359436,0.31622777,0.06324555,-3.09903211\n26.565051,0.47,0.33,1.34164079,0.4472136,0.02236068,-2.2137073\n63.434949,0.46,0.31,0.89442719,0.4472136,0.02236068,-2.2137073\n296.565051,0.53,0.33,1.34164079,0.4472136,0.02236068,-2.2137073\n333.434949,0.51,0.34,0.89442719,0.4472136,0.02236068,-2.2137073\n0,0.49,0.34,0,1,0.02,-0.98\n78.690068,0.81,0.41,0.98058068,0.19611614,0.0509902,-5.04802932\n71.565051,0.8,0.38,0.9486833,0.31622777,0.03162278,-3.13065488\n63.434949,0.78,0.34,0.89442719,0.4472136,0.04472136,-2.19134662\n50.194429,0.73,0.28,6.401844,0.12803688,0.0781025,-7.73214718\n45,0.69,0.24,0.70710678,0.70710678,0.05656854,-1.35764502\n29.744881,0.62,0.2,5.82963253,0.12403473,0.08062258,-7.98163517\n14.036243,0.54,0.18,3.15296313,0.24253563,0.08246211,-4.04064351\n71.565051,0.72,0.4,0.9486833,0.31622777,0.06324555,-3.09903211\n59.036243,0.69,0.35,2.22948161,0.17149859,0.05830952,-5.77264238\n45,0.65,0.31,0.70710678,0.70710678,0.05656854,-1.35764502\n30.963757,0.6,0.28,3.60147029,0.17149859,0.05830952,-5.77264238\n18.434949,0.54,0.26,2.21359436,0.31622777,0.06324555,-3.09903211\n296.565051,0.33,0.53,1.34164079,0.4472136,0.02236068,-2.2137073\n333.434949,0.31,0.54,0.89442719,0.4472136,0.02236068,-2.2137073\n206.565051,0.33,0.47,1.34164079,0.4472136,0.02236068,-2.2137073\n243.434949,0.34,0.49,0.89442719,0.4472136,0.02236068,-2.2137073\n270,0.34,0.51,0,1,0.02,-0.98\n348.690068,0.41,0.19,0.98058068,0.19611614,0.0509902,-5.04802932\n341.565051,0.38,0.2,0.9486833,0.31622777,0.03162278,-3.13065488\n333.434949,0.34,0.22,0.89442719,0.4472136,0.04472136,-2.19134662\n320.194429,0.28,0.27,6.401844,0.12803688,0.0781025,-7.73214718\n315,0.24,0.31,0.70710678,0.70710678,0.05656854,-1.35764502\n299.744881,0.2,0.38,5.82963253,0.12403473,0.08062258,-7.98163517\n284.036243,0.18,0.46,3.15296313,0.24253563,0.08246211,-4.04064351\n341.565051,0.4,0.28,0.9486833,0.31622777,0.06324555,-3.09903211\n329.036243,0.35,0.31,2.22948161,0.17149859,0.05830952,-5.77264238\n315,0.31,0.35,0.70710678,0.70710678,0.05656854,-1.35764502\n300.963757,0.28,0.4,3.60147029,0.17149859,0.05830952,-5.77264238\n288.434949,0.26,0.46,2.21359436,0.31622777,0.06324555,-3.09903211\n90,0.46,-0.31,0,1,0.62,-0.38\n270,0.54,0.31,0,1,0.62,-0.38\n180,0.31,0.46,0,1,0.62,-0.38\n0,-0.31,0.54,0,1,0.62,-0.38\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*MAZE-01,MAZE-01 verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n180,0.95,0.92,0,1,0.25,-0.75\n90,0.95,0.55,1,1,0.37,-0.63\n90,0.83,0.55,1,1,0.25,-0.75\n0,0.7,0.42,0,1,0.11,-0.89\n180,0.57,0.8,0,1,0.38,-0.62\n270,0.57,0.92,1,1,0.12,-0.88\n0,0.07,0.92,0,1,0.5,-0.5\n90,0.95,0.29,1,1,0.13,-0.87\n180,0.45,0.05,0,1,0.38,-0.62\n0,0.7,0.29,0,1,0.25,-0.75\n270,0.45,0.17,1,1,0.12,-0.88\n0,0.19,0.17,0,1,0.26,-0.74\n90,0.7,0.17,1,1,0.12,-0.88\n270,0.19,0.8,1,1,0.63,-0.37\n0,0.31,0.29,0,1,0.26,-0.74\n270,0.31,0.68,1,1,0.39,-0.61\n180,0.7,0.68,0,1,0.39,-0.61\n270,0.7,0.92,1,1,0.24,-0.76\n180,0.95,0.17,0,1,0.25,-0.75\n90,0.95,0.05,1,1,0.12,-0.88\n0,0.57,0.05,0,1,0.38,-0.62\n270,0.57,0.42,1,1,0.37,-0.63\n270,0.7,0.55,1,1,0.13,-0.87\n0,0.45,0.55,0,1,0.25,-0.75\n90,0.45,0.42,1,1,0.13,-0.87\n90,0.07,0.05,1,1,0.87,-0.13\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*MAZE-02,MAZE-02 verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n270,0.89999999,0.1,1,1,0.1,-0.9\n0,0.69999999,0.1,0,1,0.2,-0.8\n90,0,0.3,1,1,0.5,-0.5\n270,0.89999999,0.9,1,1,0.5,-0.5\n270,0.29999999,0.9,1,1,0.1,-0.9\n180,0.29999999,0.9,0,1,0.4,-0.6\n0,0.19999999,0.2,0,1,0.15,-0.85\n90,0.19999999,0.3,1,1,0.2,-0.8\n180,0.49999999,0.3,0,1,0.3,-0.7\n90,0.49999999,0.1,1,1,0.2,-0.8\n270,0.69999999,0.2,1,1,0.1,-0.9\n0,0.59999999,0.2,0,1,0.1,-0.9\n270,0.59999999,0.3,1,1,0.1,-0.9\n180,0.69999999,0.3,0,1,0.1,-0.9\n270,0.59999999,0.6,1,1,0.1,-0.9\n0,0.29999999,0.6,0,1,0.3,-0.7\n90,0.29999999,0.4,1,1,0.2,-0.8\n180,0.69999999,0.4,0,1,0.4,-0.6\n180,0.59999999,0.5,0,1,0.2,-0.8\n270,0.79999999,0.8,1,1,0.5,-0.5\n0,0.09999999,0.1,0,1,0.4,-0.6\n0,0.09999999,0.8,0,1,0.7,-0.3\n270,0.09999999,0.2,1,1,0.1,-0.9\n90,0.09999999,0.3,1,1,0.5,-0.5\n180,0.09999999,0.2,0,1,0.3,-0.7\n180,0,0.3,0,1,0.20000001,-0.79999999\n180,0.29999999,0,0,1,0.3,-0.7\n270,0.69999999,0.7,1,1,0.2,-0.8\n0,0.39999999,0,0,1,0.4,-0.6\n0,0.19999999,0.7,0,1,0.5,-0.5\n90,0.19999999,0.6,1,1,0.1,-0.9\n270,0.59999999,0.1,1,1,0.1,-0.9\n0,0.39999999,0.9,0,1,0.4,-0.6\n270,0.39999999,1,1,1,0.1,-0.9\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*MUDST,MUDST\n0, 0,0, .5,.25, .25,-.25,0,-.25,0,-.25\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*NET3,NET3\n0, 0,0, 0,.125\n60, 0,0, 0,.125\n120, 0,0, 0,.125\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*NET,NET\n0, 0,0, 0,.125\n90, 0,0, 0,.125\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*PLASTI,PLASTI\n0, 0,0, 0,.25\n0, 0,.03125, 0,.25\n0, 0,.0625, 0,.25\n0, 0,.15625, 0,.25\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*PLAST,PLAST\n0, 0,0, 0,.25\n0, 0,.03125, 0,.25\n0, 0,.0625, 0,.25\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*QCAD-LOGO,QCAD-LOGO\n;By John Hyslop, Line 101 modified by CVH to fix left side of pencil drift when hatching far from Origin\n;Developed in inch as imperial QCAD3 pattern\n243.434949,0.8,0.36,0.89442719,0.4472136,0.02236068,-2.2137073\n248.198591,0.82,0.41,3.15682075,0.18569534,0.05385165,-5.33131316\n263.659808,0.83,0.5,0.99388373,0.11043153,0.09055385,-8.96483129\n276.340192,0.82,0.59,8.0615014,0.11043153,0.09055385,-8.96483129\n290.556045,0.79,0.67,5.38389277,0.11704115,0.08544004,-8.45856371\n310.601295,0.73,0.74,1.41004798,0.10846523,0.09219544,-9.12734901\n324.462322,0.66,0.79,3.6036768,0.11624764,0.08602325,-8.51630201\n336.801409,0.59,0.82,5.38356375,0.13130643,0.07615773,-7.53961537\n351.869898,0.52,0.83,0.98994949,0.14142136,0.07071068,-7.00035713\n26.565051,0.61,0.18,1.34164079,0.4472136,0.06708204,-2.16898594\n7.125016,0.53,0.17,7.06997987,0.12403473,0.08062258,-7.98163517\n0,0.45,0.17,0,1,0.08,-0.92\n344.054604,0.38,0.19,4.12081692,0.13736056,0.0728011,-7.20730879\n336.801409,0.31,0.22,5.38356375,0.13130643,0.07615773,-7.53961537\n320.194429,0.25,0.27,6.401844,0.12803688,0.0781025,-7.73214718\n308.659808,0.21,0.32,1.40556386,0.15617376,0.06403124,-6.339093\n293.198591,0.18,0.39,2.23220936,0.13130643,0.07615773,-7.53961537\n285.945396,0.16,0.46,3.15929297,0.13736056,0.0728011,-7.20730879\n270,0.16,0.52,0,1,0.06,-0.94\n261.869898,0.17,0.59,0.98994949,0.14142136,0.07071068,-7.00035713\n246.801409,0.2,0.66,5.38356375,0.13130643,0.07615773,-7.53961537\n234.462322,0.25,0.73,3.6036768,0.11624764,0.08602325,-8.51630201\n219.805571,0.31,0.78,1.40840568,0.12803688,0.0781025,-7.73214718\n206.565051,0.37,0.81,1.34164079,0.4472136,0.06708204,-2.16898594\n195.945396,0.44,0.83,3.15929297,0.13736056,0.0728011,-7.20730879\n180,0.48,0.83,0,1,0.04,-0.96\n180,0.52,0.83,0,1,0.04,-0.96\n233.130102,0.92,0.27,3.6,0.2,0.05,-4.95\n248.198591,0.94,0.32,3.15682075,0.18569534,0.05385165,-5.33131316\n248.198591,0.96,0.37,3.15682075,0.18569534,0.05385165,-5.33131316\n260.537678,0.97,0.43,0.98639392,0.16439899,0.06082763,-6.0219349\n261.869898,0.98,0.5,0.98994949,0.14142136,0.07071068,-7.00035713\n278.130102,0.97,0.57,6.08111832,0.14142136,0.07071068,-7.00035713\n279.462322,0.96,0.63,5.09636861,0.16439899,0.06082763,-6.0219349\n288.434949,0.94,0.69,2.21359436,0.31622777,0.06324555,-3.09903211\n299.744881,0.9,0.76,5.82963253,0.12403473,0.08062258,-7.98163517\n308.659808,0.86,0.81,1.40556386,0.15617376,0.06403124,-6.339093\n315,0.81,0.86,0.70710678,0.70710678,0.07071068,-1.34350288\n321.340192,0.76,0.9,4.99756038,0.15617376,0.06403124,-6.339093\n329.036243,0.71,0.93,2.22948161,0.17149859,0.05830952,-5.77264238\n338.198591,0.66,0.95,3.15682075,0.18569534,0.05385165,-5.33131316\n338.198591,0.61,0.97,3.15682075,0.18569534,0.05385165,-5.33131316\n350.537678,0.55,0.98,0.98639392,0.16439899,0.06082763,-6.0219349\n0,0.5,0.98,0,1,0.05,-0.95\n0,0.45,0.98,0,1,0.05,-0.95\n11.309932,0.4,0.97,4.11843884,0.19611614,0.0509902,-5.04802932\n14.036243,0.36,0.96,3.15296313,0.24253563,0.04123106,-4.08187457\n21.801409,0.31,0.94,2.22834406,0.18569534,0.05385165,-5.33131316\n21.801409,0.26,0.92,2.22834406,0.18569534,0.05385165,-5.33131316\n36.869898,0.22,0.89,1.4,0.2,0.05,-4.95\n36.869898,0.18,0.86,1.4,0.2,0.05,-4.95\n33.690068,0.75,0.09,1.38675049,0.2773501,0.03605551,-3.56949576\n26.565051,0.69,0.06,1.34164079,0.4472136,0.06708204,-2.16898594\n21.801409,0.64,0.04,2.22834406,0.18569534,0.05385165,-5.33131316\n11.309932,0.59,0.03,4.11843884,0.19611614,0.0509902,-5.04802932\n8.130102,0.52,0.02,6.08111832,0.14142136,0.07071068,-7.00035713\n0,0.46,0.02,0,1,0.06,-0.94\n350.537678,0.4,0.03,0.98639392,0.16439899,0.06082763,-6.0219349\n348.690068,0.35,0.04,0.98058068,0.19611614,0.0509902,-5.04802932\n338.198591,0.3,0.06,3.15682075,0.18569534,0.05385165,-5.33131316\n333.434949,0.26,0.08,0.89442719,0.4472136,0.04472136,-2.19134662\n323.130102,0.22,0.11,3.6,0.2,0.05,-4.95\n323.130102,0.18,0.14,3.6,0.2,0.05,-4.95\n315,0.14,0.18,0.70710678,0.70710678,0.05656854,-1.35764502\n306.869898,0.11,0.22,1.4,0.2,0.05,-4.95\n306.869898,0.08,0.26,1.4,0.2,0.05,-4.95\n296.565051,0.06,0.3,1.34164079,0.4472136,0.04472136,-2.19134662\n291.801409,0.04,0.35,2.22834406,0.18569534,0.05385165,-5.33131316\n281.309932,0.03,0.4,4.11843884,0.19611614,0.0509902,-5.04802932\n281.309932,0.02,0.45,4.11843884,0.19611614,0.0509902,-5.04802932\n270,0.02,0.5,0,1,0.05,-0.95\n270,0.02,0.55,0,1,0.05,-0.95\n258.690068,0.03,0.6,0.98058068,0.19611614,0.0509902,-5.04802932\n258.690068,0.04,0.65,0.98058068,0.19611614,0.0509902,-5.04802932\n248.198591,0.06,0.7,3.15682075,0.18569534,0.05385165,-5.33131316\n243.434949,0.08,0.74,0.89442719,0.4472136,0.04472136,-2.19134662\n233.130102,0.11,0.78,3.6,0.2,0.05,-4.95\n233.130102,0.14,0.82,3.6,0.2,0.05,-4.95\n225,0.18,0.86,0.70710678,0.70710678,0.05656854,-1.35764502\n0,0.35,0.21,0,1,0.29,-0.71\n180,0.56,0.39,0,1,0.04,-0.96\n270,0.56,0.44,0,1,0.05,-0.95\n180,0.62,0.44,0,1,0.06,-0.94\n270,0.62,0.48,0,1,0.04,-0.96\n270,0.98,0.11,0,1,0.01,-0.99\n270,0.98,0.13,0,1,0.02,-0.98\n45,0.82,0.08,0.70710678,0.70710678,0.14142136,-1.27279221\n225,0.9,0.2,0.70710678,0.70710678,0.14142136,-1.27279221\n45,0.79,0.11,0.70710678,0.70710678,0.14142136,-1.27279221\n0,0.544133,0.559775,0,1,0,-1\n0,0.590298,0.634752,0,1,0,-1\n0,0.640323,0.720624,0,1,0,-1\n135,0.98,0.13,0.70710678,0.70710678,0.49497475,-0.91923882\n56.309932,0.96,0.07,2.21880078,0.2773501,0.03605551,-3.56949576\n45,0.94,0.05,0.70710678,0.70710678,0.02828427,-1.38592929\n33.690068,0.91,0.03,1.38675049,0.2773501,0.03605551,-3.56949576\n18.434949,0.88,0.02,2.21359436,0.31622777,0.03162278,-3.13065488\n135.806929,0.88,0.02,-1.41407331,0.01991653,0.50209561,-49.70746523\n289.983107,0.48,0.48,8.54357658,0.08543577,0.117047,-11.58765291\n338.198591,0.53,0.52,3.15682075,0.18569534,0.1077033,-5.27746151\n105.945396,0.48,0.48,3.15929297,0.13736056,0.0728011,-7.20730879\n218.659808,0.53,0.52,1.40556386,0.15617376,0.06403124,-6.339093\n336.801409,0.46,0.55,5.38356375,0.13130643,0.07615773,-7.53961537\n56.309932,0.66,0.755,2.21880078,0.2773501,0.01802776,-3.58752352\n239.036243,0.475,0.435,2.22948161,0.17149859,0.02915476,-5.80179714\n236.309932,0.57,0.6,2.21880078,0.2773501,0.01802776,-3.58752352\n236.309932,0.62,0.68,2.21880078,0.2773501,0.01802776,-3.58752352\n0,0.46,0.41,0,1,0,-1\n0,0.49,0.34,0,1,0.02,-0.98\n0,0.54,0.34,0,1,0,-1\n0,0.45,0.34,0,1,0,-1\n0,0.36,0.34,0,1,0,-1\n0,0.27,0.34,0,1,0,-1\n180,0.24,0.34,0,1,0.03,-0.97\n180,0.33,0.34,0,1,0.03,-0.97\n180,0.42,0.34,0,1,0.03,-0.97\n239.036243,0.45,0.39,2.22948161,0.17149859,0.05830952,-5.77264238\n0,0.44,0.44,0,1,0.05,-0.95\n341.565051,0.41,0.45,0.9486833,0.31622777,0.03162278,-3.13065488\n315,0.39,0.47,0.70710678,0.70710678,0.02828427,-1.38592929\n296.565051,0.38,0.49,1.34164079,0.4472136,0.02236068,-2.2137073\n180,0.38,0.49,0,1,0.21,-0.79\n240.068488,0.57,0.82,8.06221498,0.02626129,0.38078866,-37.69807687\n0,0.63,0.49,0,1,0.18,-0.82\n240.255119,0.75,0.7,2.23262522,0.12403473,0.24186773,-7.82039002\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*REDBACK,REDBACK\n;By John Hyslop\n;Developed in inch as imperial QCAD3 pattern\n63.434949,0.73,0.78,0.89442719,0.4472136,0.02236068,-2.2137073\n33.690068,0.7,0.76,1.38675049,0.2773501,0.03605551,-3.56949576\n75.963757,0.69,0.72,0.9701425,0.24253563,0.04123106,-4.08187457\n0,0.66,0.72,0,1,0.03,-0.97\n108.434949,0.67,0.69,2.21359436,0.31622777,0.03162278,-3.13065488\n90,0.67,0.68,0,1,0.01,-0.99\n0,0.54,0.57,0,1,0.01,-0.99\n270,0.54,0.58,0,1,0.01,-0.99\n225,0.55,0.59,0.70710678,0.70710678,0.01414214,-1.40007143\n180,0.56,0.59,0,1,0.01,-0.99\n315,0.55,0.6,0.70710678,0.70710678,0.01414214,-1.40007143\n15.524111,0.37,0.55,7.27991309,0.05352877,0.18681542,-18.49472628\n0,0.35,0.55,0,1,0.02,-0.98\n45,0.34,0.54,0.70710678,0.70710678,0.01414214,-1.40007143\n0,0.31,0.54,0,1,0.03,-0.97\n26.565051,0.19,0.48,1.34164079,0.4472136,0.13416408,-2.1019039\n0,0.18,0.48,0,1,0.01,-0.99\n33.690068,0.15,0.46,1.38675049,0.2773501,0.03605551,-3.56949576\n32.005383,0.07,0.41,3.60399279,0.10599979,0.09433981,-9.33964132\n45,0.06,0.4,0.70710678,0.70710678,0.01414214,-1.40007143\n270,0.06,0.41,0,1,0.01,-0.99\n225,0.07,0.42,0.70710678,0.70710678,0.01414214,-1.40007143\n213.690068,0.16,0.48,1.38675049,0.2773501,0.10816654,-3.49738474\n243.434949,0.17,0.5,0.89442719,0.4472136,0.02236068,-2.2137073\n205.016893,0.32,0.57,2.23525175,0.06041221,0.16552945,-16.3874159\n189.462322,0.38,0.58,5.09636861,0.16439899,0.06082763,-6.0219349\n194.036243,0.42,0.59,3.15296313,0.24253563,0.04123106,-4.08187457\n194.036243,0.5,0.61,3.15296313,0.24253563,0.08246211,-4.04064351\n198.434949,0.56,0.63,2.21359436,0.31622777,0.06324555,-3.09903211\n6.340192,0.47,0.62,8.0615014,0.11043153,0.09055385,-8.96483129\n315,0.46,0.63,0.70710678,0.70710678,0.01414214,-1.40007143\n45,0.45,0.62,0.70710678,0.70710678,0.01414214,-1.40007143\n23.198591,0.38,0.59,2.23220936,0.13130643,0.07615773,-7.53961537\n0,0.35,0.59,0,1,0.03,-0.97\n45,0.32,0.56,0.70710678,0.70710678,0.04242641,-1.37178716\n236.309932,0.34,0.59,2.21880078,0.2773501,0.03605551,-3.56949576\n206.565051,0.36,0.6,1.34164079,0.4472136,0.02236068,-2.2137073\n206.565051,0.42,0.63,1.34164079,0.4472136,0.06708204,-2.16898594\n206.565051,0.44,0.64,1.34164079,0.4472136,0.02236068,-2.2137073\n206.565051,0.46,0.65,1.34164079,0.4472136,0.02236068,-2.2137073\n180,0.57,0.65,0,1,0.11,-0.89\n225,0.58,0.66,0.70710678,0.70710678,0.01414214,-1.40007143\n321.340192,0.53,0.7,4.99756038,0.15617376,0.06403124,-6.339093\n296.565051,0.52,0.72,1.34164079,0.4472136,0.02236068,-2.2137073\n285.945396,0.5,0.79,3.15929297,0.13736056,0.0728011,-7.20730879\n254.054604,0.52,0.86,4.12081692,0.13736056,0.0728011,-7.20730879\n135,0.53,0.85,0.70710678,0.70710678,0.01414214,-1.40007143\n90,0.53,0.82,0,1,0.03,-0.97\n71.565051,0.52,0.79,0.9486833,0.31622777,0.03162278,-3.13065488\n105.945396,0.54,0.72,3.15929297,0.13736056,0.0728011,-7.20730879\n135,0.58,0.68,0.70710678,0.70710678,0.05656854,-1.35764502\n180,0.59,0.68,0,1,0.01,-0.99\n270,0.59,0.69,0,1,0.01,-0.99\n270,0.59,0.71,0,1,0.02,-0.98\n296.565051,0.58,0.73,1.34164079,0.4472136,0.02236068,-2.2137073\n278.130102,0.57,0.8,6.08111832,0.14142136,0.07071068,-7.00035713\n251.565051,0.58,0.83,0.9486833,0.31622777,0.03162278,-3.13065488\n225,0.59,0.84,0.70710678,0.70710678,0.01414214,-1.40007143\n225,0.6,0.85,0.70710678,0.70710678,0.01414214,-1.40007143\n243.434949,0.61,0.87,0.89442719,0.4472136,0.02236068,-2.2137073\n243.434949,0.63,0.91,0.89442719,0.4472136,0.04472136,-2.19134662\n243.434949,0.65,0.95,0.89442719,0.4472136,0.04472136,-2.19134662\n225,0.66,0.96,0.70710678,0.70710678,0.01414214,-1.40007143\n168.690068,0.81,0.93,0.98058068,0.19611614,0.15297059,-4.94604893\n355.601295,0.68,0.94,0.99705449,0.0766965,0.13038405,-12.90802076\n56.309932,0.66,0.91,2.21880078,0.2773501,0.03605551,-3.56949576\n56.309932,0.64,0.88,2.21880078,0.2773501,0.03605551,-3.56949576\n63.434949,0.63,0.86,0.89442719,0.4472136,0.02236068,-2.2137073\n56.309932,0.61,0.83,2.21880078,0.2773501,0.03605551,-3.56949576\n71.565051,0.6,0.8,0.9486833,0.31622777,0.03162278,-3.13065488\n90,0.6,0.79,0,1,0.01,-0.99\n90,0.6,0.77,0,1,0.02,-0.98\n90,0.6,0.74,0,1,0.03,-0.97\n225,0.61,0.75,0.70710678,0.70710678,0.01414214,-1.40007143\n243.434949,0.62,0.77,0.89442719,0.4472136,0.02236068,-2.2137073\n225,0.63,0.78,0.70710678,0.70710678,0.01414214,-1.40007143\n206.565051,0.65,0.79,1.34164079,0.4472136,0.02236068,-2.2137073\n206.565051,0.67,0.8,1.34164079,0.4472136,0.02236068,-2.2137073\n180,0.69,0.8,0,1,0.02,-0.98\n180,0.71,0.8,0,1,0.02,-0.98\n180,0.74,0.8,0,1,0.03,-0.97\n153.434949,0.76,0.79,0.89442719,0.4472136,0.02236068,-2.2137073\n135,0.77,0.78,0.70710678,0.70710678,0.01414214,-1.40007143\n135,0.56,0.56,0.70710678,0.70710678,0.01414214,-1.40007143\n26.565051,0.77,0.74,1.34164079,0.4472136,0.02236068,-2.2137073\n56.309932,0.75,0.71,2.21880078,0.2773501,0.03605551,-3.56949576\n14.036243,0.71,0.7,3.15296313,0.24253563,0.04123106,-4.08187457\n90,0.71,0.67,0,1,0.03,-0.97\n341.565051,0.68,0.68,0.9486833,0.31622777,0.03162278,-3.13065488\n0,0.67,0.68,0,1,0.01,-0.99\n90,0.56,0.55,0,1,0.01,-0.99\n180,0.57,0.55,0,1,0.01,-0.99\n225,0.58,0.56,0.70710678,0.70710678,0.01414214,-1.40007143\n270,0.58,0.57,0,1,0.01,-0.99\n135,0.59,0.56,0.70710678,0.70710678,0.01414214,-1.40007143\n74.475889,0.54,0.38,11.4016286,0.05352877,0.18681542,-18.49472628\n90,0.54,0.36,0,1,0.02,-0.98\n45,0.53,0.35,0.70710678,0.70710678,0.01414214,-1.40007143\n90,0.53,0.32,0,1,0.03,-0.97\n63.434949,0.47,0.2,0.89442719,0.4472136,0.13416408,-2.1019039\n90,0.47,0.19,0,1,0.01,-0.99\n56.309932,0.45,0.16,2.21880078,0.2773501,0.03605551,-3.56949576\n57.994617,0.4,0.08,5.82998834,0.10599979,0.09433981,-9.33964132\n45,0.39,0.07,0.70710678,0.70710678,0.01414214,-1.40007143\n180,0.4,0.07,0,1,0.01,-0.99\n225,0.41,0.08,0.70710678,0.70710678,0.01414214,-1.40007143\n236.309932,0.47,0.17,2.21880078,0.2773501,0.10816654,-3.49738474\n206.565051,0.49,0.18,1.34164079,0.4472136,0.02236068,-2.2137073\n244.983107,0.56,0.33,14.31769361,0.06041221,0.16552945,-16.3874159\n260.537678,0.57,0.39,0.98639392,0.16439899,0.06082763,-6.0219349\n255.963757,0.58,0.43,0.9701425,0.24253563,0.04123106,-4.08187457\n255.963757,0.6,0.51,0.9701425,0.24253563,0.08246211,-4.04064351\n251.565051,0.62,0.57,0.9486833,0.31622777,0.06324555,-3.09903211\n83.659808,0.61,0.48,0.99388373,0.11043153,0.09055385,-8.96483129\n135,0.62,0.47,0.70710678,0.70710678,0.01414214,-1.40007143\n45,0.61,0.46,0.70710678,0.70710678,0.01414214,-1.40007143\n66.801409,0.58,0.39,5.38356375,0.13130643,0.07615773,-7.53961537\n90,0.58,0.36,0,1,0.03,-0.97\n45,0.55,0.33,0.70710678,0.70710678,0.04242641,-1.37178716\n213.690068,0.58,0.35,1.38675049,0.2773501,0.03605551,-3.56949576\n243.434949,0.59,0.37,0.89442719,0.4472136,0.02236068,-2.2137073\n243.434949,0.62,0.43,0.89442719,0.4472136,0.06708204,-2.16898594\n243.434949,0.63,0.45,0.89442719,0.4472136,0.02236068,-2.2137073\n243.434949,0.64,0.47,0.89442719,0.4472136,0.02236068,-2.2137073\n270,0.64,0.58,0,1,0.11,-0.89\n225,0.65,0.59,0.70710678,0.70710678,0.01414214,-1.40007143\n128.659808,0.69,0.54,1.40556386,0.15617376,0.06403124,-6.339093\n153.434949,0.71,0.53,0.89442719,0.4472136,0.02236068,-2.2137073\n164.054604,0.78,0.51,4.12081692,0.13736056,0.0728011,-7.20730879\n195.945396,0.85,0.53,3.15929297,0.13736056,0.0728011,-7.20730879\n315,0.84,0.54,0.70710678,0.70710678,0.01414214,-1.40007143\n0,0.81,0.54,0,1,0.03,-0.97\n18.434949,0.78,0.53,2.21359436,0.31622777,0.03162278,-3.13065488\n344.054604,0.71,0.55,4.12081692,0.13736056,0.0728011,-7.20730879\n315,0.67,0.59,0.70710678,0.70710678,0.05656854,-1.35764502\n270,0.67,0.6,0,1,0.01,-0.99\n180,0.68,0.6,0,1,0.01,-0.99\n180,0.7,0.6,0,1,0.02,-0.98\n153.434949,0.72,0.59,0.89442719,0.4472136,0.02236068,-2.2137073\n171.869898,0.79,0.58,0.98994949,0.14142136,0.07071068,-7.00035713\n198.434949,0.82,0.59,2.21359436,0.31622777,0.03162278,-3.13065488\n225,0.83,0.6,0.70710678,0.70710678,0.01414214,-1.40007143\n225,0.84,0.61,0.70710678,0.70710678,0.01414214,-1.40007143\n206.565051,0.86,0.62,1.34164079,0.4472136,0.02236068,-2.2137073\n206.565051,0.9,0.64,1.34164079,0.4472136,0.04472136,-2.19134662\n206.565051,0.94,0.66,1.34164079,0.4472136,0.04472136,-2.19134662\n225,0.95,0.67,0.70710678,0.70710678,0.01414214,-1.40007143\n281.309932,0.92,0.82,4.11843884,0.19611614,0.15297059,-4.94604893\n94.398705,0.93,0.69,12.04135032,0.0766965,0.13038405,-12.90802076\n33.690068,0.9,0.67,1.38675049,0.2773501,0.03605551,-3.56949576\n33.690068,0.87,0.65,1.38675049,0.2773501,0.03605551,-3.56949576\n26.565051,0.85,0.64,1.34164079,0.4472136,0.02236068,-2.2137073\n33.690068,0.82,0.62,1.38675049,0.2773501,0.03605551,-3.56949576\n18.434949,0.79,0.61,2.21359436,0.31622777,0.03162278,-3.13065488\n0,0.78,0.61,0,1,0.01,-0.99\n0,0.76,0.61,0,1,0.02,-0.98\n0,0.73,0.61,0,1,0.03,-0.97\n225,0.74,0.62,0.70710678,0.70710678,0.01414214,-1.40007143\n206.565051,0.76,0.63,1.34164079,0.4472136,0.02236068,-2.2137073\n225,0.77,0.64,0.70710678,0.70710678,0.01414214,-1.40007143\n243.434949,0.78,0.66,0.89442719,0.4472136,0.02236068,-2.2137073\n243.434949,0.79,0.68,0.89442719,0.4472136,0.02236068,-2.2137073\n270,0.79,0.7,0,1,0.02,-0.98\n270,0.79,0.72,0,1,0.02,-0.98\n270,0.79,0.75,0,1,0.03,-0.97\n296.565051,0.78,0.77,1.34164079,0.4472136,0.02236068,-2.2137073\n315,0.77,0.78,0.70710678,0.70710678,0.01414214,-1.40007143\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*SACNCR,SACNCR\n45, 0,0, 0,.09375\n45, .06629126,0, 0,.09375, 0,-.09375\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*SCAFFOLD, verbose comment\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n270,0.76,0.84,1,1,0.02,-0.98\n326.3099325,0.26,0.16,2.21880078,0.2773501,0.57688819,-3.02866309\n90,0.24,0.49,1,1,0.02,-0.98\n270,0.25,0.16,1,1,0.32,-0.68\n146.3099325,0.24,0.84,2.21880078,0.2773501,0.5768882,-3.02866307\n180,0.76,0.49,0,1,0.02,-0.98\n270,0.74,0.18,1,1,0.02,-0.98\n0,0.74,0.84,0,1,0.02,-0.98\n90,0.25,0.51,1,1,0.31,-0.69\n270,0.76,0.51,1,1,0.02,-0.98\n0,0.26,0.17,0,1,0.48,-0.52\n0,0.24,0.51,0,1,0.02,-0.98\n180,0.76,0.18,0,1,0.02,-0.98\n90,0.74,0.82,1,1,0.02,-0.98\n212.855722,0.24,0.49,20.24844917,0.01750082,0.57140178,-56.56877673\n147.144278,0.24,0.18,36.89172934,0.01750082,0.57140178,-56.56877673\n213.6900675,0.24,0.16,1.38675049,0.2773501,0.57688818,-3.02866309\n180,0.24,0.17,0,1,0.48,-0.52\n0,0.26,0.83,0,1,0.48,-0.52\n90,0.26,0.16,1,1,0.02,-0.98\n180,0.76,0.82,0,1,0.02,-0.98\n90,0.74,0.49,1,1,0.02,-0.98\n147.144278,0.74,0.18,36.89172934,0.01750082,0.57140179,-56.56877672\n0,0.24,0.16,0,1,0.02,-0.98\n0,0.26,0.5,0,1,0.48,-0.52\n270,0.26,0.84,1,1,0.02,-0.98\n90,0.75,0.18,1,1,0.31,-0.69\n212.855722,0.74,0.82,20.24844917,0.01750082,0.57140179,-56.56877672\n180,0.26,0.49,0,1,0.02,-0.98\n270,0.24,0.18,1,1,0.02,-0.98\n0,0.24,0.84,0,1,0.02,-0.98\n270,0.26,0.51,1,1,0.02,-0.98\n270,0.75,0.82,1,1,0.31,-0.69\n32.855722,0.26,0.18,20.24844917,0.01750082,0.57140179,-56.56877672\n180,0.26,0.18,0,1,0.02,-0.98\n0,0.74,0.51,0,1,0.02,-0.98\n90,0.76,0.16,1,1,0.02,-0.98\n90,0.24,0.82,1,1,0.02,-0.98\n180,0.24,0.83,0,1,0.48,-0.52\n147.144278,0.24,0.51,36.89172934,0.01750082,0.57140178,-56.56877673\n180,0.24,0.5,0,1,0.48,-0.52\n270,0.25,0.49,1,1,0.31,-0.69\n212.855722,0.24,0.82,20.24844917,0.01750082,0.57140179,-56.56877672\n0,0.74,0.16,0,1,0.02,-0.98\n270,0.75,0.16,1,1,0.32,-0.68\n180,0.26,0.82,0,1,0.02,-0.98\n213.6900675,0.74,0.16,1.38675049,0.2773501,0.57688819,-3.02866309\n327.144278,0.26,0.82,36.89172934,0.01750082,0.57140179,-56.56877672\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*SQUARE,SQUARE\n0, 0,0, 0,.125, .125,-.125\n90, 0,0, 0,.125, .125,-.125\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*SQUIGGLE-01,SQUIGGLE-01\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in inch as imperial QCAD3 pattern\n45,0.11,-0.39,0.70710678,0.70710678,1.11722871,-0.29698485\n56.309932,0.07,0.55,2.21880078,0.2773501,0.07211103,-3.53344025\n81.869898,0.06,0.48,0.98994949,0.14142136,0.07071068,-7.00035713\n99.462322,0.07,0.42,5.09636861,0.16439899,0.06082763,-6.0219349\n123.690068,0.11,0.36,1.38675049,0.2773501,0.07211103,-3.53344025\n146.309932,0.17,0.32,2.21880078,0.2773501,0.07211103,-3.53344025\n170.537678,0.23,0.31,0.98639392,0.16439899,0.06082763,-6.0219349\n188.130102,0.3,0.32,6.08111832,0.14142136,0.07071068,-7.00035713\n213.690068,0.36,0.36,1.38675049,0.2773501,0.07211103,-3.53344025\n225,0.65,0.65,0.70710678,0.70710678,0.41012193,-1.00409163\n213.690068,0.71,0.69,1.38675049,0.2773501,0.07211103,-3.53344025\n189.462322,0.77,0.7,5.09636861,0.16439899,0.06082763,-6.0219349\n171.869898,0.84,0.69,0.98994949,0.14142136,0.07071068,-7.00035713\n146.309932,0.9,0.65,2.21880078,0.2773501,0.07211103,-3.53344025\n123.690068,0.94,0.59,1.38675049,0.2773501,0.07211103,-3.53344025\n99.462322,0.95,0.53,5.09636861,0.16439899,0.06082763,-6.0219349\n81.869898,0.94,0.46,0.98994949,0.14142136,0.07071068,-7.00035713\n56.309932,0.9,0.4,2.21880078,0.2773501,0.07211103,-3.53344025\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*SQUIGGLE-02,SQUIGGLE-02\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in inch as imperial QCAD3 pattern\n75.963757,0.99,0.16,0.9701425,0.24253563,0.04123106,-4.08187457\n63.434949,0.97,0.12,0.89442719,0.4472136,0.04472136,-2.19134662\n45,0.94,0.09,0.70710678,0.70710678,0.04242641,-1.37178716\n14.036243,0.9,0.08,3.15296313,0.24253563,0.04123106,-4.08187457\n0,0.85,0.08,0,1,0.05,-0.95\n345.963757,0.81,0.09,0.9701425,0.24253563,0.04123106,-4.08187457\n315,0.78,0.12,0.70710678,0.70710678,0.04242641,-1.37178716\n296.565051,0.76,0.16,1.34164079,0.4472136,0.04472136,-2.19134662\n284.036243,0.75,0.2,3.15296313,0.24253563,0.04123106,-4.08187457\n281.309932,0.74,0.85,4.11843884,0.19611614,0.0509902,-5.04802932\n303.690068,0.72,0.88,1.38675049,0.2773501,0.03605551,-3.56949576\n315,0.69,0.91,0.70710678,0.70710678,0.04242641,-1.37178716\n345.963757,0.65,0.92,0.9701425,0.24253563,0.04123106,-4.08187457\n0,0.6,0.92,0,1,0.05,-0.95\n14.036243,0.56,0.91,3.15296313,0.24253563,0.04123106,-4.08187457\n45,0.53,0.88,0.70710678,0.70710678,0.04242641,-1.37178716\n56.309932,0.51,0.85,2.21880078,0.2773501,0.03605551,-3.56949576\n78.690068,0.5,0.8,0.98058068,0.19611614,0.0509902,-5.04802932\n75.963757,0.49,0.16,0.9701425,0.24253563,0.04123106,-4.08187457\n63.434949,0.47,0.12,0.89442719,0.4472136,0.04472136,-2.19134662\n45,0.44,0.09,0.70710678,0.70710678,0.04242641,-1.37178716\n14.036243,0.4,0.08,3.15296313,0.24253563,0.04123106,-4.08187457\n0,0.35,0.08,0,1,0.05,-0.95\n345.963757,0.31,0.09,0.9701425,0.24253563,0.04123106,-4.08187457\n315,0.28,0.12,0.70710678,0.70710678,0.04242641,-1.37178716\n296.565051,0.26,0.16,1.34164079,0.4472136,0.04472136,-2.19134662\n284.036243,0.25,0.2,3.15296313,0.24253563,0.04123106,-4.08187457\n281.309932,0.24,0.85,4.11843884,0.19611614,0.0509902,-5.04802932\n303.690068,0.22,0.88,1.38675049,0.2773501,0.03605551,-3.56949576\n315,0.19,0.91,0.70710678,0.70710678,0.04242641,-1.37178716\n345.963757,0.15,0.92,0.9701425,0.24253563,0.04123106,-4.08187457\n0,0.1,0.92,0,1,0.05,-0.95\n14.036243,0.06,0.91,3.15296313,0.24253563,0.04123106,-4.08187457\n45,0.03,0.88,0.70710678,0.70710678,0.04242641,-1.37178716\n56.309932,0.01,0.85,2.21880078,0.2773501,0.03605551,-3.56949576\n78.690068,0,0.8,0.98058068,0.19611614,0.0509902,-5.04802932\n270,0.75,0.8,0,1,0.6,-0.4\n270,0.5,0.8,0,1,0.6,-0.4\n270,0.25,0.8,0,1,0.6,-0.4\n270,0,0.8,0,1,0.6,-0.4\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*STARS,STARS\n0, 0,0, 0,.21650635, .125,-.125\n60, 0,0, 0,.21650635, .125,-.125\n120, .0625,.10825318, 0,.21650635, .125,-.125\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*STEEL,STEEL\n45, 0,0, 0,.125\n45, 0,.0625, 0,.125\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*SWAMP,SWAMP\n0, 0,0, .5,.8660254, .125,-.875\n90, .0625,0, .8660254,.5, .0625,-1.66955081\n90, .078125,0, .8660254,.5, .05,-1.68205081\n90, .046875,0, .8660254,.5, .05,-1.68205081\n60, .09375,0, .5,.8660254, .04,-.96\n120, .03125,0, .5,.8660254, .04,-.96\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*TRANS,TRANS\n0, 0,0, 0,.25\n0, 0,.125, 0,.25, .125,-.125\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*TRIANG,TRIANG\n60, 0,0, .1875,.32475953, .1875,-.1875\n120, 0,0, .1875,.32475953, .1875,-.1875\n0, -.09375,.16237976, .1875,.32475953, .1875,-.1875\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*TRI-OVERLAP,TRI-OVERLAP verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n59.641885,0.09000001,0.15,47.50789248,0.01232691,0.81123363,-80.31212922\n300.358115,0.5,0.85000001,33.61547037,0.01232691,0.81123363,-80.31212922\n180,0.35942857,0.61,0,1,0.71885753,-0.28114247\n59.036243,0.89518072,0.17530121,2.22948161,0.17149859,0.20373205,-5.62721984\n180,0.91,0.15,0,1,0.81999999,-0.18000001\n300.963757,0,0.35,3.60147029,0.17149859,0.20373206,-5.62721983\n300.784147,0.12,0.15,5.83092324,0.01827876,0.5470832,-54.16123426\n239.215853,0.88,0.15,48.87739422,0.01827876,0.5470832,-54.16123426\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*WEATHERBOARD,WEATHERBOARD\n; By John Hyslop, Manually Entered QCAD3 pattern\n; Developed in inch as imperial QCAD3 pattern\n; Imperial Hatch Scale 1 Makes 6inch horizontally placed boards\n; with a 0.5in offset line to simulate a rounded edge\n0,0,0,0,6\n0,0,0.5,0,6\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*WEAVING,WEAVING\n;By John Hyslop, Using AutoCAD Lisp Tool\n;Developed in inch as imperial QCAD3 pattern\n90,0.9,0.2,0,1,0.05,-0.95\n75.963757,0.88,0.12,0.9701425,0.24253563,0.08246211,-4.04064351\n66.801409,0.85,0.05,5.38356375,0.13130643,0.07615773,-7.53961537\n54.462322,0.8,-0.02,3.6036768,0.11624764,0.08602325,-8.51630201\n56.309932,0.76,-0.08,2.21880078,0.2773501,0.07211103,-3.53344025\n90,0.79,0.22,0,1,0.07,-0.93\n80.537678,0.78,0.16,0.98639392,0.16439899,0.06082763,-6.0219349\n63.434949,0.75,0.1,0.89442719,0.4472136,0.06708204,-2.16898594\n56.309932,0.71,0.04,2.21880078,0.2773501,0.07211103,-3.53344025\n56.309932,0.67,-0.02,2.21880078,0.2773501,0.07211103,-3.53344025\n333.434949,0.86,0.27,0.89442719,0.4472136,0.06708204,-2.16898594\n344.054604,0.79,0.29,4.12081692,0.13736056,0.0728011,-7.20730879\n0,0.71,0.29,0,1,0.08,-0.92\n9.462322,0.65,0.28,5.09636861,0.16439899,0.06082763,-6.0219349\n26.565051,0.59,0.25,1.34164079,0.4472136,0.06708204,-2.16898594\n38.659808,0.54,0.21,1.40556386,0.15617376,0.06403124,-6.339093\n36.869898,0.46,0.15,1.4,0.2,0.1,-4.9\n20.556045,0.38,0.12,5.38389277,0.11704115,0.08544004,-8.45856371\n330.255119,0.91,0.37,2.23262522,0.12403473,0.08062258,-7.98163517\n344.054604,0.84,0.39,4.12081692,0.13736056,0.0728011,-7.20730879\n352.874984,0.76,0.4,0.99227788,0.12403473,0.08062258,-7.98163517\n0,0.69,0.4,0,1,0.07,-0.93\n14.036243,0.61,0.38,3.15296313,0.24253563,0.08246211,-4.04064351\n26.565051,0.53,0.34,1.34164079,0.4472136,0.08944272,-2.14662526\n33.690068,0.47,0.3,1.38675049,0.2773501,0.07211103,-3.53344025\n35.537678,0.4,0.25,4.99864847,0.11624764,0.08602325,-8.51630201\n0,0.2,0.1,0,1,0.05,-0.95\n348.690068,0.15,0.11,0.98058068,0.19611614,0.0509902,-5.04802932\n341.565051,0.12,0.12,0.9486833,0.31622777,0.03162278,-3.13065488\n336.801409,0.05,0.15,5.38356375,0.13130643,0.07615773,-7.53961537\n326.309932,-0.01,0.19,2.21880078,0.2773501,0.07211103,-3.53344025\n324.462322,-0.08,0.24,3.6036768,0.11624764,0.08602325,-8.51630201\n0,0.22,0.21,0,1,0.07,-0.93\n350.537678,0.16,0.22,0.98639392,0.16439899,0.06082763,-6.0219349\n333.434949,0.1,0.25,0.89442719,0.4472136,0.06708204,-2.16898594\n326.309932,0.04,0.29,2.21880078,0.2773501,0.07211103,-3.53344025\n326.309932,-0.02,0.33,2.21880078,0.2773501,0.07211103,-3.53344025\n60.255119,0.63,0.91,2.23262522,0.12403473,0.08062258,-7.98163517\n180,0.79,0.79,0,1,0.08,-0.92\n164.054604,0.86,0.77,4.12081692,0.13736056,0.0728011,-7.20730879\n153.434949,0.92,0.74,0.89442719,0.4472136,0.06708204,-2.16898594\n330.255119,0.91,0.87,2.23262522,0.12403473,0.08062258,-7.98163517\n345.963757,0.83,0.89,0.9701425,0.24253563,0.08246211,-4.04064351\n352.874984,0.75,0.9,0.99227788,0.12403473,0.08062258,-7.98163517\n60.255119,0.72,0.85,2.23262522,0.12403473,0.08062258,-7.98163517\n80.537678,0.71,0.79,0.98639392,0.16439899,0.06082763,-6.0219349\n90,0.71,0.71,0,1,0.08,-0.92\n104.036243,0.73,0.63,3.15296313,0.24253563,0.08246211,-4.04064351\n116.565051,0.76,0.57,1.34164079,0.4472136,0.06708204,-2.16898594\n129.805571,0.81,0.51,1.40840568,0.12803688,0.0781025,-7.73214718\n123.690068,0.85,0.45,1.38675049,0.2773501,0.07211103,-3.53344025\n113.198591,0.88,0.38,2.23220936,0.13130643,0.07615773,-7.53961537\n309.805571,0.71,0.46,1.40840568,0.12803688,0.0781025,-7.73214718\n305.537678,0.66,0.53,4.99864847,0.11624764,0.08602325,-8.51630201\n299.744881,0.62,0.6,5.82963253,0.12403473,0.08062258,-7.98163517\n285.945396,0.6,0.67,3.15929297,0.13736056,0.0728011,-7.20730879\n270,0.6,0.76,0,1,0.09,-0.91\n74.054604,0.61,0.84,4.12081692,0.13736056,0.0728011,-7.20730879\n82.874984,0.6,0.76,0.99227788,0.12403473,0.08062258,-7.98163517\n39.805571,0.54,0.71,1.40840568,0.12803688,0.0781025,-7.73214718\n35.537678,0.47,0.66,4.99864847,0.11624764,0.08602325,-8.51630201\n33.690068,0.41,0.62,1.38675049,0.2773501,0.07211103,-3.53344025\n15.945396,0.34,0.6,3.15929297,0.13736056,0.0728011,-7.20730879\n6.340192,0.25,0.59,8.0615014,0.11043153,0.09055385,-8.96483129\n350.537678,0.19,0.6,0.98639392,0.16439899,0.06082763,-6.0219349\n344.054604,0.12,0.62,4.12081692,0.13736056,0.0728011,-7.20730879\n23.198591,0.55,0.85,2.23220936,0.13130643,0.07615773,-7.53961537\n29.744881,0.48,0.81,5.82963253,0.12403473,0.08062258,-7.98163517\n39.805571,0.42,0.76,1.40840568,0.12803688,0.0781025,-7.73214718\n29.744881,0.35,0.72,5.82963253,0.12403473,0.08062258,-7.98163517\n7.125016,0.27,0.71,7.06997987,0.12403473,0.08062258,-7.98163517\n0,0.21,0.71,0,1,0.06,-0.94\n344.054604,0.14,0.73,4.12081692,0.13736056,0.0728011,-7.20730879\n333.434949,0.1,0.75,0.89442719,0.4472136,0.04472136,-2.19134662\n234.462322,0.31,-0.01,3.6036768,0.11624764,0.08602325,-8.51630201\n240.255119,0.35,0.06,2.23262522,0.12403473,0.08062258,-7.98163517\n243.434949,0.39,0.14,0.89442719,0.4472136,0.08944272,-2.14662526\n262.874984,0.4,0.22,0.99227788,0.12403473,0.08062258,-7.98163517\n270,0.4,0.3,0,1,0.08,-0.92\n282.528808,0.38,0.39,4.1216787,0.10846523,0.09219544,-9.12734901\n293.198591,0.35,0.46,2.23220936,0.13130643,0.07615773,-7.53961537\n309.805571,0.3,0.52,1.40840568,0.12803688,0.0781025,-7.73214718\n305.537678,0.25,0.59,4.99864847,0.11624764,0.08602325,-8.51630201\n270,0.21,0.78,0,1,0.07,-0.93\n254.054604,0.23,0.85,4.12081692,0.13736056,0.0728011,-7.20730879\n246.801409,0.26,0.92,5.38356375,0.13130643,0.07615773,-7.53961537\n236.309932,0.21,0.04,2.21880078,0.2773501,0.07211103,-3.53344025\n234.462322,0.26,0.11,3.6036768,0.11624764,0.08602325,-8.51630201\n249.443955,0.29,0.19,3.16011097,0.11704115,0.08544004,-8.45856371\n270,0.29,0.27,0,1,0.08,-0.92\n278.130102,0.28,0.34,6.08111832,0.14142136,0.07071068,-7.00035713\n296.565051,0.24,0.42,1.34164079,0.4472136,0.08944272,-2.14662526\n309.805571,0.19,0.48,1.40840568,0.12803688,0.0781025,-7.73214718\n303.690068,0.15,0.54,1.38675049,0.2773501,0.07211103,-3.53344025\n290.556045,0.12,0.62,5.38389277,0.11704115,0.08544004,-8.45856371\n341.565051,0.06,0.64,0.9486833,0.31622777,0.06324555,-3.09903211\n324.462322,-0.01,0.69,3.6036768,0.11624764,0.08602325,-8.51630201\n324.462322,-0.08,0.74,3.6036768,0.11624764,0.08602325,-8.51630201\n146.309932,0.04,0.79,2.21880078,0.2773501,0.07211103,-3.53344025\n146.309932,0.1,0.75,2.21880078,0.2773501,0.07211103,-3.53344025\n262.874984,0.11,0.83,0.99227788,0.12403473,0.08062258,-7.98163517\n255.963757,0.13,0.91,0.9701425,0.24253563,0.08246211,-4.04064351\n240.255119,0.17,0.98,2.23262522,0.12403473,0.08062258,-7.98163517\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*WIRE-FENCE,WIRE-FENCE verbose\n;By John Hyslop, Tile2Hatch tool © CVH 2020\n;Developed in inch as imperial QCAD3 pattern\n315,0.46,0.5,0.70710678,0.70710678,0.04673053,-1.36748303\n315,0.52571429,0.56428571,0.70710678,0.70710678,0.04848732,-1.36572624\n3.731397,0.50267394,0.56278308,15.03328073,0.02169305,0.02308929,-46.074633\n183.17983,0.46361415,0.56023571,17.02929602,0.05547002,0.90614559,-17.12161079\n183.17983,0.46120401,0.52006684,17.02929602,0.05547002,0.90600202,-17.12175436\n153.434949,0.52,0.51,0.89442719,0.4472136,0.02236068,-2.2137073\n266.593556,0.52,0.51,17.02938222,0.01188373,1.01178655,-83.1368914\n266.593556,0.56,0.53,17.02938222,0.01188373,1.01178655,-83.1368914\n2.602562,0.49304348,0.46695652,21.02374701,0.04540766,0.02449081,-21.99822474\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*XMASTREE-01,XMASTREE-01\n;By John Hyslop\n;Developed in inch as imperial QCAD3 pattern\n180,0.04,0.95,0,1,0.04,-0.96\n90,0.04,0.82,0,1,0.13,-0.87\n180,0.33,0.82,0,1,0.29,-0.71\n49.763642,0.22,0.69,7.81002892,0.05872202,0.17029386,-16.8590925\n180,0.28,0.69,0,1,0.06,-0.94\n51.340192,0.16,0.54,4.99756038,0.15617376,0.19209373,-6.21103051\n180,0.22,0.54,0,1,0.06,-0.94\n52.431408,0.12,0.41,4.99962824,0.06097108,0.16401219,-16.23720727\n180,0.17,0.41,0,1,0.05,-0.95\n53.130102,0.08,0.29,3.6,0.2,0.15,-4.85\n180,0.13,0.29,0,1,0.05,-0.95\n53.972627,0.05,0.18,8.60201108,0.07352146,0.13601471,-13.4654558\n180,0.1,0.18,0,1,0.05,-0.95\n54.462322,0,0.04,3.6036768,0.11624764,0.17204651,-8.43027876\n0,0.96,0.95,0,1,0.04,-0.96\n90,0.96,0.82,0,1,0.13,-0.87\n0,0.67,0.82,0,1,0.29,-0.71\n130.236358,0.78,0.69,9.21935745,0.05872202,0.17029386,-16.8590925\n0,0.72,0.69,0,1,0.06,-0.94\n128.659808,0.84,0.54,1.40556386,0.15617376,0.19209373,-6.21103051\n0,0.78,0.54,0,1,0.06,-0.94\n127.568592,0.88,0.41,11.40159123,0.06097108,0.16401219,-16.23720727\n0,0.83,0.41,0,1,0.05,-0.95\n126.869898,0.92,0.29,1.4,0.2,0.15,-4.85\n0,0.87,0.29,0,1,0.05,-0.95\n126.027373,0.95,0.18,4.99945943,0.07352146,0.13601471,-13.4654558\n0,0.9,0.18,0,1,0.05,-0.95\n125.537678,1,0.04,4.99864847,0.11624764,0.17204651,-8.43027876\n0,0.46,0.04,0,1,0.04,-0.96\n270,0.46,0.17,0,1,0.13,-0.87\n0,0.17,0.17,0,1,0.29,-0.71\n229.763642,0.28,0.3,7.81002892,0.05872202,0.17029386,-16.8590925\n0,0.22,0.3,0,1,0.06,-0.94\n231.340192,0.34,0.45,4.99756038,0.15617376,0.19209373,-6.21103051\n0,0.28,0.45,0,1,0.06,-0.94\n232.431408,0.38,0.58,4.99962824,0.06097108,0.16401219,-16.23720727\n0,0.33,0.58,0,1,0.05,-0.95\n233.130102,0.42,0.7,3.6,0.2,0.15,-4.85\n0,0.37,0.7,0,1,0.05,-0.95\n233.972627,0.45,0.81,8.60201108,0.07352146,0.13601471,-13.4654558\n0,0.4,0.81,0,1,0.05,-0.95\n234.462322,0.5,0.95,3.6036768,0.11624764,0.17204651,-8.43027876\n180,0.54,0.04,0,1,0.04,-0.96\n270,0.54,0.17,0,1,0.13,-0.87\n180,0.83,0.17,0,1,0.29,-0.71\n310.236358,0.72,0.3,9.21935745,0.05872202,0.17029386,-16.8590925\n180,0.78,0.3,0,1,0.06,-0.94\n308.659808,0.66,0.45,1.40556386,0.15617376,0.19209373,-6.21103051\n180,0.72,0.45,0,1,0.06,-0.94\n307.568592,0.62,0.58,11.40159123,0.06097108,0.16401219,-16.23720727\n180,0.67,0.58,0,1,0.05,-0.95\n306.869898,0.58,0.7,1.4,0.2,0.15,-4.85\n180,0.63,0.7,0,1,0.05,-0.95\n306.027373,0.55,0.81,4.99945943,0.07352146,0.13601471,-13.4654558\n180,0.6,0.81,0,1,0.05,-0.95\n305.537678,0.5,0.95,4.99864847,0.11624764,0.17204651,-8.43027876\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*XMASTREE-02,XMASTREE-02\n;By John Hyslop\n;Developed in inch as imperial QCAD3 pattern\n180,0.04,0.26,0,1,0.04,-0.96\n90,0.04,0.13,0,1,0.13,-0.87\n180,0.33,0.13,0,1,0.29,-0.71\n49.763642,0.22,0,7.81002892,0.05872202,0.17029386,-16.8590925\n180,0.28,1,0,1,0.06,-0.94\n51.340192,0.16,0.85,4.99756038,0.15617376,0.19209373,-6.21103051\n180,0.22,0.85,0,1,0.06,-0.94\n52.431408,0.12,0.72,4.99962824,0.06097108,0.16401219,-16.23720727\n180,0.17,0.72,0,1,0.05,-0.95\n53.130102,0.08,0.6,3.6,0.2,0.15,-4.85\n180,0.13,0.6,0,1,0.05,-0.95\n53.972627,0.05,0.49,8.60201108,0.07352146,0.13601471,-13.4654558\n180,0.1,0.49,0,1,0.05,-0.95\n54.462322,0,0.35,3.6036768,0.11624764,0.17204651,-8.43027876\n0,0.96,0.26,0,1,0.04,-0.96\n90,0.96,0.13,0,1,0.13,-0.87\n0,0.67,0.13,0,1,0.29,-0.71\n130.236358,0.78,0,9.21935745,0.05872202,0.17029386,-16.8590925\n0,0.72,1,0,1,0.06,-0.94\n128.659808,0.84,0.85,1.40556386,0.15617376,0.19209373,-6.21103051\n0,0.78,0.85,0,1,0.06,-0.94\n127.568592,0.88,0.72,11.40159123,0.06097108,0.16401219,-16.23720727\n0,0.83,0.72,0,1,0.05,-0.95\n126.869898,0.92,0.6,1.4,0.2,0.15,-4.85\n0,0.87,0.6,0,1,0.05,-0.95\n126.027373,0.95,0.49,4.99945943,0.07352146,0.13601471,-13.4654558\n0,0.9,0.49,0,1,0.05,-0.95\n125.537678,1,0.35,4.99864847,0.11624764,0.17204651,-8.43027876\n0,0.46,0.09,0,1,0.04,-0.96\n270,0.46,0.22,0,1,0.13,-0.87\n0,0.17,0.22,0,1,0.29,-0.71\n229.763642,0.28,0.35,7.81002892,0.05872202,0.17029386,-16.8590925\n0,0.22,0.35,0,1,0.06,-0.94\n231.340192,0.34,0.5,4.99756038,0.15617376,0.19209373,-6.21103051\n0,0.28,0.5,0,1,0.06,-0.94\n232.431408,0.38,0.63,4.99962824,0.06097108,0.16401219,-16.23720727\n0,0.33,0.63,0,1,0.05,-0.95\n233.130102,0.42,0.75,3.6,0.2,0.15,-4.85\n0,0.37,0.75,0,1,0.05,-0.95\n233.972627,0.45,0.86,8.60201108,0.07352146,0.13601471,-13.4654558\n0,0.4,0.86,0,1,0.05,-0.95\n234.462322,0.5,1,3.6036768,0.11624764,0.17204651,-8.43027876\n180,0.54,0.09,0,1,0.04,-0.96\n270,0.54,0.22,0,1,0.13,-0.87\n180,0.83,0.22,0,1,0.29,-0.71\n310.236358,0.72,0.35,9.21935745,0.05872202,0.17029386,-16.8590925\n180,0.78,0.35,0,1,0.06,-0.94\n308.659808,0.66,0.5,1.40556386,0.15617376,0.19209373,-6.21103051\n180,0.72,0.5,0,1,0.06,-0.94\n307.568592,0.62,0.63,11.40159123,0.06097108,0.16401219,-16.23720727\n180,0.67,0.63,0,1,0.05,-0.95\n306.869898,0.58,0.75,1.4,0.2,0.15,-4.85\n180,0.63,0.75,0,1,0.05,-0.95\n306.027373,0.55,0.86,4.99945943,0.07352146,0.13601471,-13.4654558\n180,0.6,0.86,0,1,0.05,-0.95\n305.537678,0.5,1,4.99864847,0.11624764,0.17204651,-8.43027876\n`), false)\n","import { Pattern, RegisterPattern } from \"../../Pattern.js\"\n\nRegisterPattern(Pattern.ParsePatFile(`\n*ZIGZAG,ZIGZAG\n0, 0,0, .125,.125, .125,-.125\n90, .125,0, .125,.125, .125,-.125\n`), false)\n","import { DynamicBuffer, NativeType } from \"./DynamicBuffer.js\"\nimport { BatchingKey } from \"./BatchingKey.js\"\nimport { Matrix3, Vector2 } from \"three\"\nimport { TextRenderer, ParseSpecialChars, HAlign, VAlign } from \"./TextRenderer.js\"\nimport { RBTree } from \"./RBTree.js\"\nimport { MTextFormatParser } from \"./MTextFormatParser.js\"\nimport dimStyleCodes from \"./parser/DimStyleCodes.js\"\nimport { LinearDimension } from \"./LinearDimension.js\"\nimport { HatchCalculator, HatchStyle } from \"./HatchCalculator.js\"\nimport { LookupPattern, Pattern } from \"./Pattern.js\"\nimport \"./patterns/index.js\"\nimport earcut from \"earcut\"\n\n\n/** Use 16-bit indices for indexed geometry. */\nconst INDEXED_CHUNK_SIZE = 0x10000\n/** Arc angle for tessellating point circle shape. */\nconst POINT_CIRCLE_TESSELLATION_ANGLE = 15 * Math.PI / 180\nconst POINT_SHAPE_BLOCK_NAME = \"__point_shape\"\n/** Flatten a block if its total vertices count in all instances is less than this value. */\nconst BLOCK_FLATTENING_VERTICES_THRESHOLD = 1024\n/** Number of subdivisions per spline point. */\nconst SPLINE_SUBDIVISION = 4\n/** Limit hatch lines number to some reasonable value to mitigate hanging and out-of-memory issues\n * on bad files.\n */\nconst MAX_HATCH_LINES = 20000\n/** Limit hatch segments number per line to some reasonable value to mitigate hanging and\n * out-of-memory issues on bad files.\n */\nconst MAX_HATCH_SEGMENTS = 20000\n\n\n/** Default values for system variables. Entry may be either value or function to call for obtaining\n * a value, the function `this` argument is DxfScene.\n */\nconst DEFAULT_VARS = {\n /* https://knowledge.autodesk.com/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-Core/files/GUID-A17A69D7-25EF-4F57-B4EB-D53A56AB909C-htm.html */\n DIMTXT: function() {\n //XXX should select value for imperial or metric units\n return 2.5 //XXX 0.18 for imperial\n },\n DIMASZ: 2.5,//XXX 0.18 for imperial\n DIMCLRD: 0,\n DIMCLRE: 0,\n DIMCLRT: 0,\n DIMDEC: 2, //XXX 4 for imperial,\n DIMDLE: 0,\n DIMDSEP: \".\".charCodeAt(0), //XXX \",\" for imperial,\n DIMEXE: 1.25, //XXX 0.18 for imperial\n DIMEXO: 0.625, // XXX 0.0625 for imperial\n DIMFXL: 1,\n DIMFXLON: false,\n DIMGAP: 0.625,//XXX for imperial\n DIMLFAC: 1,\n DIMRND: 0,\n DIMSAH: 0,\n DIMSCALE: 1,\n DIMSD1: 0,\n DIMSD2: 0,\n DIMSE1: 0,\n DIMSE2: 0,\n DIMSOXD: false,\n DIMTSZ: 0,\n DIMZIN: 8, //XXX 0 for imperial,\n}\n\n/** This class prepares an internal representation of a DXF file, optimized fo WebGL rendering. It\n * is decoupled in such a way so that it should be possible to build it in a web-worker, effectively\n * transfer it to the main thread, and easily apply it to a Three.js scene there.\n */\nexport class DxfScene {\n\n constructor(options) {\n this.options = Object.create(DxfScene.DefaultOptions)\n if (options) {\n Object.assign(this.options, options.sceneOptions)\n }\n\n /* Scene origin. All input coordinates are made local to this point to minimize precision\n * loss.\n */\n this.origin = null\n /* RBTree */\n this.batches = new RBTree((b1, b2) => b1.key.Compare(b2.key))\n /* Indexed by layer name, value is layer object from parsed DXF. */\n this.layers = new Map()\n /* Indexed by block name, value is Block. */\n this.blocks = new Map()\n /** Indexed by dimension style name, value is DIMSTYLE object from parsed DXF. */\n this.dimStyles = new Map()\n /** Indexed by variable name (without leading '$'). */\n this.vars = new Map()\n this.fontStyles = new Map()\n /* Indexed by entity handle. */\n this.inserts = new Map()\n this.bounds = null\n this.pointShapeBlock = null\n this.numBlocksFlattened = 0\n this.numEntitiesFiltered = 0\n }\n\n /** Build the scene from the provided parsed DXF.\n * @param dxf {{}} Parsed DXF file.\n * @param fontFetchers {?Function[]} List of font fetchers. Fetcher should return promise with\n * loaded font object (opentype.js). They are invoked only when necessary. Each glyph is being\n * searched sequentially in each provided font.\n */\n async Build(dxf, fontFetchers) {\n const header = dxf.header || {}\n\n for (const [name, value] of Object.entries(header)) {\n if (name.startsWith(\"$\")) {\n this.vars.set(name.slice(1), value)\n }\n }\n\n /* Zero angle direction, 0 is +X. */\n this.angBase = this.vars.get(\"ANGBASE\") ?? 0\n /* 0 - CCW, 1 - CW */\n this.angDir = this.vars.get(\"ANGDIR\") ?? 0\n this.pdMode = this.vars.get(\"PDMODE\") ?? 0\n this.pdSize = this.vars.get(\"PDSIZE\") ?? 0\n this.isMetric = (this.vars.get(\"MEASUREMENT\") ?? 1) == 1\n\n if(dxf.tables && dxf.tables.layer) {\n for (const [, layer] of Object.entries(dxf.tables.layer.layers)) {\n layer.displayName = ParseSpecialChars(layer.name)\n this.layers.set(layer.name, layer)\n }\n }\n\n if(dxf.tables && dxf.tables.dimstyle) {\n for (const [, style] of Object.entries(dxf.tables.dimstyle.dimStyles)) {\n this.dimStyles.set(style.name, style)\n }\n }\n\n if (dxf.tables && dxf.tables.style) {\n for (const [, style] of Object.entries(dxf.tables.style.styles)) {\n this.fontStyles.set(style.styleName, style);\n }\n }\n\n if (dxf.blocks) {\n for (const [, block] of Object.entries(dxf.blocks)) {\n this.blocks.set(block.name, new Block(block))\n }\n }\n\n this.textRenderer = new TextRenderer(fontFetchers, this.options.textOptions)\n this.hasMissingChars = false\n await this._FetchFonts(dxf)\n\n /* Scan all entities to analyze block usage statistics. */\n for (const entity of dxf.entities) {\n if (!this._FilterEntity(entity)) {\n continue\n }\n if (entity.type === \"INSERT\") {\n this.inserts.set(entity.handle, entity)\n const block = this.blocks.get(entity.name)\n block?.RegisterInsert(entity)\n\n } else if (entity.type == \"DIMENSION\") {\n if ((entity.block ?? null) !== null) {\n const block = this.blocks.get(entity.block)\n block?.RegisterInsert(entity)\n }\n }\n }\n\n for (const block of this.blocks.values()) {\n if (block.data.hasOwnProperty(\"entities\")) {\n const blockCtx = block.DefinitionContext()\n for (const entity of block.data.entities) {\n if (!this._FilterEntity(entity)) {\n continue\n }\n this._ProcessDxfEntity(entity, blockCtx)\n }\n }\n if (block.SetFlatten()) {\n this.numBlocksFlattened++\n }\n }\n console.log(`${this.numBlocksFlattened} blocks flattened`)\n\n for (const entity of dxf.entities) {\n if (!this._FilterEntity(entity)) {\n this.numEntitiesFiltered++\n continue\n }\n this._ProcessDxfEntity(entity)\n }\n console.log(`${this.numEntitiesFiltered} entities filtered`)\n\n this.scene = this._BuildScene()\n\n delete this.batches\n delete this.layers\n delete this.blocks\n delete this.textRenderer\n }\n\n /** @return False to suppress the specified entity, true to permit rendering. */\n _FilterEntity(entity) {\n if (entity.hidden) {\n return false\n }\n const layerName = this._GetEntityLayer(entity)\n if (layerName != \"0\") {\n const layer = this.layers.get(layerName)\n if (layer?.frozen) {\n return false\n }\n }\n return !this.options.suppressPaperSpace || !entity.inPaperSpace\n }\n\n async _FetchFonts(dxf) {\n\n function IsTextEntity(entity) {\n return entity.type === \"TEXT\" || entity.type === \"MTEXT\" ||\n entity.type === \"DIMENSION\" || entity.type === \"ATTDEF\" ||\n entity.type === \"ATTRIB\"\n }\n\n const ProcessEntity = async (entity) => {\n if (!this._FilterEntity(entity)) {\n return\n }\n let ret\n if (entity.type === \"TEXT\" || entity.type === \"ATTRIB\" || entity.type === \"ATTDEF\") {\n ret = await this.textRenderer.FetchFonts(ParseSpecialChars(entity.text))\n\n } else if (entity.type === \"MTEXT\") {\n const parser = new MTextFormatParser()\n parser.Parse(entity.text)\n ret = true\n //XXX formatted MTEXT may specify some fonts explicitly, this is not yet supported\n for (const text of parser.GetText()) {\n if (!await this.textRenderer.FetchFonts(ParseSpecialChars(text))) {\n ret = false\n break\n }\n }\n\n } else if (entity.type === \"DIMENSION\") {\n ret = true\n const dim = this._CreateLinearDimension(entity)\n if (dim) {\n for (const text of dim.GetTexts()) {\n if (!await this.textRenderer.FetchFonts(text)) {\n ret = false\n break\n }\n }\n }\n\n } else {\n throw new Error(\"Bad entity type\")\n }\n if (!ret) {\n this.hasMissingChars = true\n }\n return ret\n }\n\n for (const entity of dxf.entities) {\n if (IsTextEntity(entity)) {\n if (!await ProcessEntity(entity)) {\n /* Failing to resolve some character means that all fonts have been loaded and\n * checked. No mean to check the rest strings. However until it is encountered,\n * all strings should be checked, even if all fonts already loaded. This needed\n * to properly set hasMissingChars which allows displaying some warning in a\n * viewer.\n */\n return\n }\n }\n }\n for (const block of this.blocks.values()) {\n if (block.data.hasOwnProperty(\"entities\")) {\n for (const entity of block.data.entities) {\n if (IsTextEntity(entity)) {\n if (!await ProcessEntity(entity)) {\n return\n }\n }\n }\n }\n }\n }\n\n _ProcessDxfEntity(entity, blockCtx = null) {\n let renderEntities\n switch (entity.type) {\n case \"LINE\":\n renderEntities = this._DecomposeLine(entity, blockCtx)\n break\n case \"POLYLINE\":\n case \"LWPOLYLINE\":\n renderEntities = this._DecomposePolyline(entity, blockCtx)\n break\n case \"ARC\":\n renderEntities = this._DecomposeArc(entity, blockCtx)\n break\n case \"CIRCLE\":\n renderEntities = this._DecomposeCircle(entity, blockCtx)\n break\n case \"ELLIPSE\":\n renderEntities = this._DecomposeEllipse(entity, blockCtx)\n break\n case \"POINT\":\n renderEntities = this._DecomposePoint(entity, blockCtx)\n break\n case \"SPLINE\":\n renderEntities = this._DecomposeSpline(entity, blockCtx)\n break\n case \"INSERT\":\n /* Works with rendering batches without intermediate entities. */\n this._ProcessInsert(entity, blockCtx)\n return\n case \"TEXT\":\n renderEntities = this._DecomposeText(entity, blockCtx)\n break\n case \"MTEXT\":\n renderEntities = this._DecomposeMText(entity, blockCtx)\n break\n case \"3DFACE\":\n renderEntities = this._Decompose3DFace(entity, blockCtx)\n break\n case \"SOLID\":\n renderEntities = this._DecomposeSolid(entity, blockCtx)\n break\n case \"DIMENSION\":\n renderEntities = this._DecomposeDimension(entity, blockCtx)\n break\n case \"ATTRIB\":\n renderEntities = this._DecomposeAttribute(entity, blockCtx)\n break\n case \"HATCH\":\n renderEntities = this._DecomposeHatch(entity, blockCtx)\n break\n default:\n console.log(\"Unhandled entity type: \" + entity.type)\n return\n }\n for (const renderEntity of renderEntities) {\n this._ProcessEntity(renderEntity, blockCtx)\n }\n }\n /**\n * @param entity {Entity}\n * @param blockCtx {?BlockContext}\n */\n _ProcessEntity(entity, blockCtx = null) {\n switch (entity.type) {\n case Entity.Type.POINTS:\n this._ProcessPoints(entity, blockCtx)\n break\n case Entity.Type.LINE_SEGMENTS:\n this._ProcessLineSegments(entity, blockCtx)\n break\n case Entity.Type.POLYLINE:\n this._ProcessPolyline(entity, blockCtx)\n break\n case Entity.Type.TRIANGLES:\n this._ProcessTriangles(entity, blockCtx)\n break\n default:\n throw new Error(\"Unhandled entity type: \" + entity.type)\n }\n }\n\n /**\n * @param entity\n * @param vertex\n * @param blockCtx {?BlockContext}\n * @return {number}\n */\n _GetLineType(entity, vertex = null, blockCtx = null) {\n //XXX lookup\n return 0\n }\n\n /** Check if start/end with are not specified. */\n _IsPlainLine(entity) {\n //XXX until shaped polylines rendering implemented\n return true\n // return !Boolean(entity.startWidth || entity.endWidth)\n }\n\n *_DecomposeLine(entity, blockCtx) {\n /* start/end width, bulge - seems cannot be present, at least with current parser */\n if (entity.vertices.length !== 2) {\n return\n }\n const layer = this._GetEntityLayer(entity, blockCtx)\n const color = this._GetEntityColor(entity, blockCtx)\n yield new Entity({\n type: Entity.Type.LINE_SEGMENTS,\n vertices: entity.vertices,\n layer, color,\n lineType: this._GetLineType(entity, entity.vertices[0])\n })\n }\n\n /** Generate vertices for bulged line segment.\n *\n * @param vertices Generated vertices pushed here.\n * @param startVtx Starting vertex. Assuming it is already present in the vertices array.\n * @param endVtx Ending vertex.\n * @param bulge Bulge value (see DXF specification).\n */\n _GenerateBulgeVertices(vertices, startVtx, endVtx, bulge) {\n const a = 4 * Math.atan(bulge)\n const aAbs = Math.abs(a)\n if (aAbs < this.options.arcTessellationAngle) {\n vertices.push(new Vector2(endVtx.x, endVtx.y))\n return\n }\n const ha = a / 2\n const sha = Math.sin(ha)\n const cha = Math.cos(ha)\n const d = {x: endVtx.x - startVtx.x, y: endVtx.y - startVtx.y}\n const dSq = d.x * d.x + d.y * d.y\n if (dSq < Number.MIN_VALUE * 2) {\n /* No vertex is pushed since end vertex is duplicate of start vertex. */\n return\n }\n const D = Math.sqrt(dSq)\n let R = D / 2 / sha\n d.x /= D\n d.y /= D\n const center = {\n x: (d.x * sha - d.y * cha) * R + startVtx.x,\n y: (d.x * cha + d.y * sha) * R + startVtx.y\n }\n\n let numSegments = Math.floor(aAbs / this.options.arcTessellationAngle)\n if (numSegments < this.options.minArcTessellationSubdivisions) {\n numSegments = this.options.minArcTessellationSubdivisions\n }\n if (numSegments > 1) {\n const startAngle = Math.atan2(startVtx.y - center.y, startVtx.x - center.x)\n const step = a / numSegments\n if (a < 0) {\n R = -R\n }\n for (let i = 1; i < numSegments; i++) {\n const a = startAngle + i * step\n const v = new Vector2(\n center.x + R * Math.cos(a),\n center.y + R * Math.sin(a)\n )\n vertices.push(v)\n }\n }\n vertices.push(new Vector2(endVtx.x, endVtx.y))\n }\n\n /** Generate vertices for arc segment.\n *\n * @param vertices Generated vertices pushed here.\n * @param {{x, y}} center Center vector.\n * @param {number} radius\n * @param {?number} startAngle Start angle in radians. Zero if not specified. Arc is drawn in\n * CCW direction from start angle towards end angle.\n * @param {?number} endAngle Optional end angle in radians. Full circle is drawn if not\n * specified.\n * @param {?number} tessellationAngle Arc tessellation angle in radians, default value is taken\n * from scene options.\n * @param {?number} yRadius Specify to get ellipse arc. `radius` parameter used as X radius.\n * @param {?Matrix3} transform Optional transform matrix for the arc. Applied as last operation.\n * @param {?number} rotation Optional rotation angle for generated arc. Mostly for ellipses.\n * @param {?boolean} cwAngleDir Angles counted in clockwise direction from X positive direction.\n * @return {Vector2[]} List of generated vertices.\n */\n _GenerateArcVertices({vertices, center, radius, startAngle = null, endAngle = null,\n tessellationAngle = null, yRadius = null, transform = null,\n rotation = null, ccwAngleDir = true}) {\n if (!center || !radius) {\n return\n }\n if (!tessellationAngle) {\n tessellationAngle = this.options.arcTessellationAngle\n }\n if (yRadius === null) {\n yRadius = radius\n }\n /* Normalize angles - make them starting from +X in CCW direction. End angle should be\n * greater than start angle.\n */\n if (startAngle === undefined || startAngle === null) {\n startAngle = 0\n } else {\n startAngle += this.angBase\n }\n let isClosed = false\n if (endAngle === undefined || endAngle === null) {\n endAngle = startAngle + 2 * Math.PI\n isClosed = true\n } else {\n endAngle += this.angBase\n }\n\n //XXX this.angDir - not clear, seem in practice it does not alter arcs rendering.\n if (!ccwAngleDir) {\n const tmp = startAngle\n startAngle = -endAngle\n endAngle = -tmp\n }\n\n while (endAngle <= startAngle) {\n endAngle += Math.PI * 2\n }\n\n const arcAngle = endAngle - startAngle\n\n let numSegments = Math.floor(arcAngle / tessellationAngle)\n if (numSegments === 0) {\n numSegments = 1\n }\n const step = arcAngle / numSegments\n\n let rotationTransform = null\n if (rotation) {\n rotationTransform = new Matrix3().makeRotation(rotation)\n }\n\n for (let i = 0; i <= numSegments; i++) {\n if (i === numSegments && isClosed) {\n break\n }\n let a\n if (ccwAngleDir) {\n a = startAngle + i * step\n } else {\n a = startAngle + (numSegments - i) * step\n }\n const v = new Vector2(radius * Math.cos(a), yRadius * Math.sin(a))\n\n if (rotationTransform) {\n v.applyMatrix3(rotationTransform)\n }\n v.add(center)\n if (transform) {\n v.applyMatrix3(transform)\n }\n vertices.push(v)\n }\n }\n\n *_DecomposeArc(entity, blockCtx) {\n const color = this._GetEntityColor(entity, blockCtx)\n const layer = this._GetEntityLayer(entity, blockCtx)\n const lineType = this._GetLineType(entity, null, blockCtx)\n const vertices = []\n this._GenerateArcVertices({vertices, center: entity.center, radius: entity.radius,\n startAngle: entity.startAngle, endAngle: entity.endAngle,\n transform: this._GetEntityExtrusionTransform(entity)})\n yield new Entity({\n type: Entity.Type.POLYLINE,\n vertices, layer, color, lineType,\n shape: entity.endAngle === undefined\n })\n }\n\n *_DecomposeCircle(entity, blockCtx) {\n const color = this._GetEntityColor(entity, blockCtx)\n const layer = this._GetEntityLayer(entity, blockCtx)\n const lineType = this._GetLineType(entity, null, blockCtx)\n const vertices = []\n this._GenerateArcVertices({vertices, center: entity.center, radius: entity.radius,\n transform: this._GetEntityExtrusionTransform(entity)})\n yield new Entity({\n type: Entity.Type.POLYLINE,\n vertices, layer, color, lineType,\n shape: true\n })\n }\n\n *_DecomposeEllipse(entity, blockCtx) {\n const color = this._GetEntityColor(entity, blockCtx)\n const layer = this._GetEntityLayer(entity, blockCtx)\n const lineType = this._GetLineType(entity, null, blockCtx)\n const vertices = []\n const xR = Math.sqrt(entity.majorAxisEndPoint.x * entity.majorAxisEndPoint.x +\n entity.majorAxisEndPoint.y * entity.majorAxisEndPoint.y)\n const yR = xR * entity.axisRatio\n const rotation = Math.atan2(entity.majorAxisEndPoint.y, entity.majorAxisEndPoint.x)\n\n const startAngle = entity.startAngle ?? 0\n let endAngle = entity.endAngle ?? startAngle + 2 * Math.PI\n while (endAngle <= startAngle) {\n endAngle += Math.PI * 2\n }\n const isClosed = (entity.endAngle ?? null) === null ||\n Math.abs(endAngle - startAngle - 2 * Math.PI) < 1e-6\n\n this._GenerateArcVertices({vertices, center: entity.center, radius: xR,\n startAngle: entity.startAngle,\n endAngle: isClosed ? null : entity.endAngle,\n yRadius: yR,\n rotation,\n /* Assuming mirror transform if present, for ellipse it just\n * reverses angle direction.\n */\n ccwAngleDir: !this._GetEntityExtrusionTransform(entity)})\n\n yield new Entity({\n type: Entity.Type.POLYLINE,\n vertices, layer, color, lineType,\n shape: isClosed\n })\n }\n\n *_DecomposePoint(entity, blockCtx) {\n if (this.pdMode === PdMode.NONE) {\n /* Points not displayed. */\n return\n }\n if (this.pdMode !== PdMode.DOT && this.pdSize <= 0) {\n /* Currently not supported. */\n return\n }\n const color = this._GetEntityColor(entity, blockCtx)\n const layer = this._GetEntityLayer(entity, blockCtx)\n const markType = this.pdMode & PdMode.MARK_MASK\n const isShaped = (this.pdMode & PdMode.SHAPE_MASK) !== 0\n\n if (isShaped) {\n /* Shaped mark should be instanced. */\n const key = new BatchingKey(layer, POINT_SHAPE_BLOCK_NAME,\n BatchingKey.GeometryType.POINT_INSTANCE, color, 0)\n const batch = this._GetBatch(key)\n batch.PushVertex(this._TransformVertex(entity.position))\n this._CreatePointShapeBlock()\n return\n }\n\n if (markType === PdMode.DOT) {\n yield new Entity({\n type: Entity.Type.POINTS,\n vertices: [entity.position],\n layer, color,\n lineType: null\n })\n return\n }\n\n const vertices = []\n this._CreatePointMarker(vertices, markType, entity.position)\n yield new Entity({\n type: Entity.Type.LINE_SEGMENTS,\n vertices, layer, color,\n lineType: null\n })\n }\n\n *_DecomposeAttribute(entity, blockCtx) {\n if (!this.textRenderer.canRender) {\n return;\n }\n\n const insertEntity = this.inserts.get(entity.ownerHandle)\n const layer = this._GetEntityLayer(insertEntity ?? entity, blockCtx)\n const color = this._GetEntityColor(insertEntity ?? entity, blockCtx)\n\n //XXX lookup font style attributes\n\n yield* this.textRenderer.Render({\n text: ParseSpecialChars(entity.text),\n fontSize: entity.textHeight * entity.scale,\n startPos: entity.startPoint,\n endPos: entity.endPoint,\n rotation: entity.rotation,\n hAlign: entity.horizontalJustification,\n vAlign: entity.verticalJustification,\n color,\n layer\n })\n }\n\n\n /** Create line segments for point marker.\n * @param vertices\n * @param markType\n * @param position {?{x,y}} point center position, default is zero.\n */\n _CreatePointMarker(vertices, markType, position = null) {\n const _this = this\n function PushVertex(offsetX, offsetY) {\n vertices.push({\n x: (position?.x ?? 0) + offsetX * _this.pdSize * 0.5,\n y: (position?.y ?? 0) + offsetY * _this.pdSize * 0.5\n })\n }\n\n switch(markType) {\n case PdMode.PLUS:\n PushVertex(0, 1.5)\n PushVertex(0, -1.5)\n PushVertex(-1.5, 0)\n PushVertex(1.5, 0)\n break\n case PdMode.CROSS:\n PushVertex(-1, 1)\n PushVertex(1, -1)\n PushVertex(1, 1)\n PushVertex(-1, -1)\n break\n case PdMode.TICK:\n PushVertex(0, 1)\n PushVertex(0, 0)\n break\n default:\n console.warn(\"Unsupported point display type: \" + markType)\n }\n }\n\n /** Create point shape block if not yet done. */\n _CreatePointShapeBlock() {\n if (this.pointShapeBlock) {\n return\n }\n /* This mimics DXF block entity. */\n this.pointShapeBlock = new Block({\n name: POINT_SHAPE_BLOCK_NAME,\n position: { x: 0, y: 0}\n })\n /* Fix block origin at zero. */\n this.pointShapeBlock.offset = new Vector2(0, 0)\n const blockCtx = this.pointShapeBlock.DefinitionContext()\n\n const markType = this.pdMode & PdMode.MARK_MASK\n if (markType !== PdMode.DOT && markType !== PdMode.NONE) {\n const vertices = []\n this._CreatePointMarker(vertices, markType)\n const entity = new Entity({\n type: Entity.Type.LINE_SEGMENTS,\n vertices,\n color: ColorCode.BY_BLOCK\n })\n this._ProcessEntity(entity, blockCtx)\n }\n\n if (this.pdMode & PdMode.SQUARE) {\n const r = this.pdSize * 0.5\n const vertices = [\n {x: -r, y: r},\n {x: r, y: r},\n {x: r, y: -r},\n {x: -r, y: -r}\n ]\n const entity = new Entity({\n type: Entity.Type.POLYLINE, vertices,\n color: ColorCode.BY_BLOCK,\n shape: true\n })\n this._ProcessEntity(entity, blockCtx)\n }\n if (this.pdMode & PdMode.CIRCLE) {\n const vertices = []\n this._GenerateArcVertices({vertices, center: {x: 0, y: 0},\n radius: this.pdSize * 0.5,\n tessellationAngle: POINT_CIRCLE_TESSELLATION_ANGLE})\n const entity = new Entity({\n type: Entity.Type.POLYLINE, vertices,\n color: ColorCode.BY_BLOCK,\n shape: true\n })\n this._ProcessEntity(entity, blockCtx)\n }\n }\n\n *_Decompose3DFace(entity, blockCtx) {\n yield *this._DecomposeFace(entity, entity.vertices, blockCtx, this.options.wireframeMesh)\n }\n\n *_DecomposeSolid(entity, blockCtx) {\n yield *this._DecomposeFace(entity, entity.points, blockCtx, false,\n this._GetEntityExtrusionTransform(entity))\n }\n\n *_DecomposeFace(entity, vertices, blockCtx, wireframe, transform = null) {\n const layer = this._GetEntityLayer(entity, blockCtx)\n const color = this._GetEntityColor(entity, blockCtx)\n\n function IsValidTriangle(v1, v2, v3) {\n const e1 = new Vector2().subVectors(v2, v1)\n const e2 = new Vector2().subVectors(v3, v1)\n const area = Math.abs(e1.cross(e2))\n return area > Number.EPSILON\n }\n\n const v0 = new Vector2(vertices[0].x, vertices[0].y)\n const v1 = new Vector2(vertices[1].x, vertices[1].y)\n const v2 = new Vector2(vertices[2].x, vertices[2].y)\n let v3 = null\n\n let hasFirstTriangle = IsValidTriangle(v0, v1, v2)\n let hasSecondTriangle = false\n\n if (vertices.length > 3) {\n /* Fourth vertex may be the same as one of the previous vertices, so additional triangle\n * for degeneration.\n */\n\n v3 = new Vector2(vertices[3].x, vertices[3].y)\n hasSecondTriangle = IsValidTriangle(v1, v3, v2)\n if (transform) {\n v3.applyMatrix3(transform)\n }\n }\n if (transform) {\n v0.applyMatrix3(transform)\n v1.applyMatrix3(transform)\n v2.applyMatrix3(transform)\n }\n\n if (!hasFirstTriangle && !hasSecondTriangle) {\n return\n }\n\n if (wireframe) {\n const _vertices = []\n if (hasFirstTriangle && !hasSecondTriangle) {\n _vertices.push(v0, v1, v2)\n } else if (!hasFirstTriangle && hasSecondTriangle) {\n _vertices.push(v1, v3, v2)\n } else {\n _vertices.push(v0, v1, v3, v2)\n }\n yield new Entity({\n type: Entity.Type.POLYLINE,\n vertices: _vertices, layer, color,\n shape: true\n })\n\n } else {\n const _vertices = []\n const indices = []\n if (hasFirstTriangle) {\n _vertices.push(v0, v1, v2)\n indices.push(0, 1, 2)\n }\n if (hasSecondTriangle) {\n if (!hasFirstTriangle) {\n _vertices.push(v1, v2)\n indices.push(0, 1, 2)\n } else {\n indices.push(1, 2, 3)\n }\n _vertices.push(v3)\n }\n yield new Entity({\n type: Entity.Type.TRIANGLES,\n vertices: _vertices, indices, layer, color\n })\n }\n }\n\n *_DecomposeText(entity, blockCtx) {\n if (!this.textRenderer.canRender) {\n return\n }\n const layer = this._GetEntityLayer(entity, blockCtx)\n const color = this._GetEntityColor(entity, blockCtx)\n const style = this._GetEntityTextStyle(entity)\n const fixedHeight = style?.fixedTextHeight === 0 ? null : style?.fixedTextHeight\n yield* this.textRenderer.Render({\n text: ParseSpecialChars(entity.text),\n fontSize: entity.textHeight ?? (fixedHeight ?? 1),\n startPos: entity.startPoint,\n endPos: entity.endPoint,\n rotation: entity.rotation,\n hAlign: entity.halign,\n vAlign: entity.valign,\n widthFactor: entity.xScale,\n color, layer\n })\n }\n\n *_DecomposeMText(entity, blockCtx) {\n if (!this.textRenderer.canRender) {\n return\n }\n const layer = this._GetEntityLayer(entity, blockCtx)\n const color = this._GetEntityColor(entity, blockCtx)\n const style = this._GetEntityTextStyle(entity)\n const fixedHeight = style?.fixedTextHeight === 0 ? null : style?.fixedTextHeight\n const parser = new MTextFormatParser()\n parser.Parse(ParseSpecialChars(entity.text))\n yield* this.textRenderer.RenderMText({\n formattedText: parser.GetContent(),\n // May still be overwritten by inline formatting codes\n fontSize: entity.height ?? fixedHeight,\n position: entity.position,\n rotation: entity.rotation,\n direction: entity.direction,\n attachment: entity.attachmentPoint,\n lineSpacing: entity.lineSpacing,\n width: entity.width,\n color, layer\n })\n }\n\n /**\n * @return {?LinearDimension} Dimension handler instance, null if not possible to create from\n * the provided entity.\n */\n _CreateLinearDimension(entity) {\n const type = (entity.dimensionType || 0) & 0xf\n /* For now support linear dimensions only. */\n if ((type != 0 && type != 1) || !entity.linearOrAngularPoint1 ||\n !entity.linearOrAngularPoint2 || !entity.anchorPoint) {\n\n return null\n }\n\n let style = null\n if (entity.hasOwnProperty(\"styleName\")) {\n style = this.dimStyles.get(entity.styleName)\n }\n\n const dim = new LinearDimension({\n p1: new Vector2().copy(entity.linearOrAngularPoint1),\n p2: new Vector2().copy(entity.linearOrAngularPoint2),\n anchor: new Vector2().copy(entity.anchorPoint),\n isAligned: type == 1,\n angle: entity.angle,\n text: entity.text,\n textAnchor: entity.middleOfText ? new Vector2().copy(entity.middleOfText) : null,\n textRotation: entity.textRotation\n\n /* styleResolver */\n }, valueName => {\n return this._GetDimStyleValue(valueName, entity, style)\n\n /* textWidthCalculator */\n }, (text, fontSize) => {\n return this.textRenderer.GetLineWidth(text, fontSize)\n })\n\n if (!dim.IsValid) {\n console.warn(\"Invalid dimension geometry detected for \" + entity.handle)\n return null\n }\n\n return dim\n }\n\n *_DecomposeDimension(entity, blockCtx) {\n if ((entity.block ?? null) !== null && this.blocks.has(entity.block)) {\n /* Dimension may have pre-rendered block attached. Then just render this block instead\n * of synthesizing dimension geometry from parameters.\n *\n * Create dummy INSERT entity.\n */\n const insert = {\n name: entity.block,\n position: {x: 0, y: 0},\n layer: entity.layer,\n color: entity.color,\n colorIndex: entity.colorIndex\n }\n this._ProcessInsert(insert, blockCtx)\n return\n }\n\n /* https://ezdxf.readthedocs.io/en/stable/tutorials/linear_dimension.html\n * https://ezdxf.readthedocs.io/en/stable/tables/dimstyle_table_entry.html\n */\n\n const dim = this._CreateLinearDimension(entity)\n if (!dim) {\n return\n }\n\n const layer = this._GetEntityLayer(entity, blockCtx)\n const color = this._GetEntityColor(entity, blockCtx)\n const transform = this._GetEntityExtrusionTransform(entity)\n\n const layout = dim.GenerateLayout()\n\n for (const line of layout.lines) {\n const vertices = []\n\n if (transform) {\n line.start.applyMatrix3(transform)\n line.end.applyMatrix3(transform)\n }\n vertices.push(line.start, line.end)\n\n yield new Entity({\n type: Entity.Type.LINE_SEGMENTS,\n vertices,\n layer,\n color: line.color ?? color\n })\n }\n\n for (const triangle of layout.triangles) {\n if (transform) {\n for (const v of triangle.vertices) {\n v.applyMatrix3(transform)\n }\n }\n\n yield new Entity({\n type: Entity.Type.TRIANGLES,\n vertices: triangle.vertices,\n indices: triangle.indices,\n layer,\n color: triangle.color ?? color\n })\n }\n\n if (this.textRenderer.canRender) {\n for (const text of layout.texts) {\n if (transform) {\n //XXX does not affect text rotation and mirroring\n text.position.applyMatrix3(transform)\n }\n yield* this.textRenderer.Render({\n text: text.text,\n fontSize: text.size,\n startPos: text.position,\n rotation: text.angle,\n hAlign: HAlign.CENTER,\n vAlign: VAlign.MIDDLE,\n color: text.color ?? color,\n layer\n })\n }\n }\n }\n\n\n /**\n * @param {Vector2[]} loop Loop vertices. Transformed in-place if transform specified.\n * @param {Matrix3 | null} transform\n * @param {number[] | null} result Resulting coordinates appended to this array.\n * @return {number[]} Each pair of numbers form vertex coordinate. This format is required for\n * `earcut` library.\n */\n _TransformBoundaryLoop(loop, transform, result) {\n if (!result) {\n result = []\n }\n for (const v of loop) {\n if (transform) {\n v.applyMatrix3(transform)\n }\n result.push(v.x)\n result.push(v.y)\n }\n return result\n }\n\n *_DecomposeHatch(entity, blockCtx) {\n const boundaryLoops = this._GetHatchBoundaryLoops(entity)\n if (boundaryLoops.length == 0) {\n console.warn(\"HATCH entity with empty boundary loops array \" +\n \"(perhaps some loop types are not implemented yet)\")\n return\n }\n\n const style = entity.hatchStyle ?? 0\n const layer = this._GetEntityLayer(entity, blockCtx)\n const color = this._GetEntityColor(entity, blockCtx)\n const transform = this._GetEntityExtrusionTransform(entity)\n\n let filteredBoundaryLoops = null\n\n /* Make external loop first, outermost the second, all the rest in arbitrary order. Now is\n * required only for solid infill.\n */\n boundaryLoops.sort((a, b) => {\n if (a.isExternal != b.isExternal) {\n return a.isExternal ? -1 : 1\n }\n if (a.isOutermost != b.isOutermost) {\n return a.isOutermost ? -1 : 1\n }\n return 0\n })\n\n if (style == HatchStyle.THROUGH_ENTIRE_AREA) {\n /* Leave only external loop. */\n filteredBoundaryLoops = [boundaryLoops[0].vertices]\n\n } else if (style == HatchStyle.OUTERMOST) {\n /* Leave external and outermost loop. */\n filteredBoundaryLoops = []\n for (const loop of boundaryLoops) {\n if (loop.isExternal || loop.isOutermost) {\n filteredBoundaryLoops.push(loop.vertices)\n }\n }\n if (filteredBoundaryLoops.length == 0) {\n filteredBoundaryLoops = null\n }\n }\n\n if (!filteredBoundaryLoops) {\n /* Fall-back to full list. */\n filteredBoundaryLoops = boundaryLoops.map(loop => loop.vertices)\n }\n\n if (entity.isSolid) {\n const coords = this._TransformBoundaryLoop(filteredBoundaryLoops[0], transform)\n const holes = []\n for (let i = 1; i < filteredBoundaryLoops.length; i++) {\n holes.push(coords.length / 2)\n this._TransformBoundaryLoop(filteredBoundaryLoops[i], transform, coords)\n }\n const indices = earcut(coords, holes)\n const vertices = []\n for (const loop of filteredBoundaryLoops) {\n vertices.push(...loop)\n }\n yield new Entity({\n type: Entity.Type.TRIANGLES,\n vertices, indices, layer, color\n })\n return\n }\n\n const calc = new HatchCalculator(filteredBoundaryLoops, style)\n\n let pattern = null\n if (entity.definitionLines) {\n pattern = new Pattern(entity.definitionLines, entity.patternName, false)\n }\n /* QCAD always embed ANSI31-like pattern definition. Try to detect it, and let named\n * pattern override the provided definition.\n */\n if ((pattern == null || pattern.isQcadDefault) && entity.patternName) {\n const _pattern = LookupPattern(entity.patternName, this.isMetric)\n if (!_pattern) {\n console.log(`Hatch pattern with name ${entity.patternName} not found ` +\n `(metric: ${this.isMetric})`)\n } else {\n pattern = _pattern\n }\n }\n if (pattern == null) {\n pattern = LookupPattern(\"ANSI31\")\n }\n\n if (!pattern) {\n return\n }\n\n const seedPoints = entity.seedPoints ? entity.seedPoints : [{x: 0, y: 0}]\n\n for (const seedPoint of seedPoints) {\n\n /* Seems pattern transform is not applied at all if using lines definition embedded into\n * HATCH entity (according to observation of AutoDesk viewer behavior).\n */\n const patTransform = pattern.offsetInLineSpace ? calc.GetPatternTransform({\n seedPoint,\n angle: entity.patternAngle,\n scale: entity.patternScale\n }) : new Matrix3()\n\n for (const line of pattern.lines) {\n\n let offsetX\n let offsetY\n if (pattern.offsetInLineSpace) {\n offsetX = line.offset.x\n offsetY = line.offset.y\n } else {\n const sin = Math.sin(-(line.angle ?? 0))\n const cos = Math.cos(-(line.angle ?? 0))\n offsetX = line.offset.x * cos - line.offset.y * sin\n offsetY = line.offset.x * sin + line.offset.y * cos\n }\n\n /* Normalize offset so that Y is always non-negative. Inverting offset vector\n * direction does not change lines positions.\n */\n if (offsetY < 0) {\n offsetY = -offsetY\n offsetX = -offsetX\n }\n\n const lineTransform = calc.GetLineTransform({\n patTransform,\n basePoint: line.base,\n angle: line.angle ?? 0\n })\n\n const bbox = calc.GetBoundingBox(lineTransform)\n const margin = (bbox.max.x - bbox.min.x) * 0.05\n\n /* First determine range of line indices. Line with index 0 goes through base point\n * (which is [0; 0] in line coordinates system). Line with index `n`` starts in `n`\n * offset vectors added to the base point.\n */\n let minLineIdx, maxLineIdx\n if (offsetY == 0) {\n /* Degenerated to single line. */\n minLineIdx = 0\n maxLineIdx = 0\n } else {\n minLineIdx = Math.ceil(bbox.min.y / offsetY)\n maxLineIdx = Math.floor(bbox.max.y / offsetY)\n }\n\n if (maxLineIdx - minLineIdx > MAX_HATCH_LINES) {\n console.warn(\"Too many lines produced by hatching pattern\")\n continue\n }\n\n let dashPatLength\n if (line.dashes && line.dashes.length > 1) {\n dashPatLength = 0\n for (const dash of line.dashes) {\n if (dash < 0) {\n dashPatLength -= dash\n } else {\n dashPatLength += dash\n }\n }\n } else {\n dashPatLength = null\n }\n\n const ocsTransform = lineTransform.clone().invert()\n\n for (let lineIdx = minLineIdx; lineIdx <= maxLineIdx; lineIdx++) {\n const y = lineIdx * offsetY\n const xBase = lineIdx * offsetX\n\n const xStart = bbox.min.x - margin\n const xEnd = bbox.max.x + margin\n const lineLength = xEnd - xStart\n const start = new Vector2(xStart, y).applyMatrix3(ocsTransform)\n const end = new Vector2(xEnd, y).applyMatrix3(ocsTransform)\n const lineVec = end.clone().sub(start)\n const clippedSegments = calc.ClipLine([start, end])\n\n function GetParam(x) {\n return (x - xStart) / lineLength\n }\n\n function RenderSegment(seg) {\n const p1 = lineVec.clone().multiplyScalar(seg[0]).add(start)\n const p2 = lineVec.clone().multiplyScalar(seg[1]).add(start)\n if (transform) {\n p1.applyMatrix3(transform)\n p2.applyMatrix3(transform)\n }\n if (seg[1] - seg[0] <= Number.EPSILON) {\n return new Entity({\n type: Entity.Type.POINTS,\n vertices: [p1],\n layer, color\n })\n }\n return new Entity({\n type: Entity.Type.LINE_SEGMENTS,\n vertices: [p1, p2],\n layer, color\n })\n }\n\n /** Clip segment against `clippedSegments`. */\n function *ClipSegment(segStart, segEnd) {\n for (const seg of clippedSegments) {\n if (seg[0] >= segEnd) {\n return\n }\n if (seg[1] <= segStart) {\n continue\n }\n const _start = Math.max(segStart, seg[0])\n const _end = Math.min(segEnd, seg[1])\n yield [_start, _end]\n segStart = _end\n }\n }\n\n /* Determine range for segment indices. One segment is one full sequence of\n * dashes. In case there is no dashes (solid line), just use hatch bounds.\n */\n if (dashPatLength !== null) {\n let minSegIdx = Math.floor((xStart - xBase) / dashPatLength)\n let maxSegIdx = Math.floor((xEnd - xBase) / dashPatLength)\n if (maxSegIdx - minSegIdx >= MAX_HATCH_SEGMENTS) {\n console.warn(\"Too many segments produced by hatching pattern line\")\n continue\n }\n\n for (let segIdx = minSegIdx; segIdx <= maxSegIdx; segIdx++) {\n let segStartParam = GetParam(xBase + segIdx * dashPatLength)\n\n for (let dashLength of line.dashes) {\n const isSpace = dashLength < 0\n if (isSpace) {\n dashLength = -dashLength\n }\n const dashLengthParam = dashLength / lineLength\n if (!isSpace) {\n for (const seg of ClipSegment(segStartParam,\n segStartParam + dashLengthParam)) {\n yield RenderSegment(seg)\n }\n }\n segStartParam += dashLengthParam\n }\n }\n\n } else {\n /* Single solid line. */\n for (const seg of clippedSegments) {\n yield RenderSegment(seg)\n }\n }\n }\n }\n }\n }\n\n /**\n * @typedef {Object} HatchBoundaryLoop\n * @property {Vector2[]} vertices List of points in OCS coordinates.\n * @property {Boolean} isExternal\n * @property {Boolean} isOutermost\n */\n\n /** @return {HatchBoundaryLoop[]} Each loop is a list of points in OCS coordinates. */\n _GetHatchBoundaryLoops(entity) {\n if (!entity.boundaryLoops) {\n return []\n }\n\n const result = []\n\n const AddPoints = (vertices, points) => {\n const n = points.length\n if (n == 0) {\n return\n }\n if (vertices.length == 0) {\n vertices.push(points[0])\n } else {\n const lastPt = vertices[vertices.length - 1]\n if (lastPt.x != points[0].x || lastPt.y != points[0].y) {\n vertices.push(points[0])\n }\n }\n for (let i = 1; i < n; i++) {\n vertices.push(points[i])\n }\n }\n\n for (const loop of entity.boundaryLoops) {\n const vertices = []\n\n if (loop.type & 2) {\n /* Polyline. */\n for (let vtxIdx = 0; vtxIdx < loop.polyline.vertices.length; vtxIdx++) {\n const vtx = loop.polyline.vertices[vtxIdx]\n if ((vtx.bulge ?? 0) == 0) {\n vertices.push(new Vector2(vtx.x, vtx.y))\n } else {\n const prevVtx = loop.polyline.vertices[vtxIdx == 0 ?\n loop.polyline.vertices.length - 1 : vtxIdx - 1]\n if ((prevVtx.bulge ?? 0) == 0) {\n /* Start vertex is not produced by _GenerateBulgeVertices(). */\n vertices.push(new Vector2(vtx.x, vtx.y))\n }\n const nextVtx = loop.polyline.vertices[\n vtxIdx == loop.polyline.vertices.length - 1 ? 0 : vtxIdx + 1]\n this._GenerateBulgeVertices(vertices, vtx, nextVtx, vtx.bulge)\n }\n }\n\n } else if (loop.edges && loop.edges.length > 0) {\n for (const edge of loop.edges) {\n switch (edge.type) {\n case 1:\n /* Line segment. */\n AddPoints(vertices, [new Vector2(edge.start.x, edge.start.y),\n new Vector2(edge.end.x, edge.end.y)])\n break\n case 2: {\n /* Circular arc. */\n const arcVertices = []\n this._GenerateArcVertices({\n vertices: arcVertices,\n center: edge.start,\n radius: edge.radius,\n startAngle: edge.startAngle,\n endAngle: edge.endAngle,\n ccwAngleDir: edge.isCcw\n })\n AddPoints(vertices, arcVertices)\n break\n }\n case 3: {\n /* Elliptic arc. */\n const center = edge.start\n const majorAxisEndPoint = edge.end\n const xR = Math.sqrt(majorAxisEndPoint.x * majorAxisEndPoint.x +\n majorAxisEndPoint.y * majorAxisEndPoint.y)\n const axisRatio = edge.radius\n const yR = xR * axisRatio\n const rotation = Math.atan2(majorAxisEndPoint.y, majorAxisEndPoint.x)\n const arcVertices = []\n this._GenerateArcVertices({\n vertices: arcVertices,\n center,\n radius: xR,\n startAngle: edge.startAngle,\n endAngle: edge.endAngle,\n yRadius: yR,\n ccwAngleDir: edge.isCcw\n })\n if (rotation !== 0) {\n //XXX should account angDir?\n const cos = Math.cos(rotation)\n const sin = Math.sin(rotation)\n for (const v of arcVertices) {\n const tx = v.x - center.x\n const ty = v.y - center.y\n /* Rotate the vertex around the ellipse center point. */\n v.x = tx * cos - ty * sin + center.x\n v.y = tx * sin + ty * cos + center.y\n }\n }\n AddPoints(vertices, arcVertices)\n break;\n }\n case 4:\n /* Spline. */\n const controlPoints = edge.controlPoints.map(p => [p.x, p.y])\n const subdivisions = controlPoints.length * SPLINE_SUBDIVISION\n const step = 1 / subdivisions\n for (let i = 0; i <= subdivisions; i++) {\n const pt = this._InterpolateSpline(i * step, edge.degreeOfSplineCurve,\n controlPoints,\n edge.knotValues)\n vertices.push(new Vector2(pt[0],pt[1]))\n }\n break;\n default:\n console.warn(\"Unhandled hatch boundary loop edge type: \" + edge.type)\n }\n }\n }\n\n if (vertices.length > 2) {\n const first = vertices[0]\n const last = vertices[vertices.length - 1]\n if (last.x == first.x && last.y == first.y) {\n vertices.length = vertices.length - 1\n }\n }\n if (vertices.length > 2) {\n result.push({\n vertices,\n isExternal: loop.isExternal,\n isOutermost: loop.isOutermost\n })\n }\n }\n\n return result\n }\n\n _GetDimStyleValue(valueName, entity, style) {\n const entries = entity?.xdata?.ACAD?.DSTYLE?.values\n if (entries) {\n let isVarCode = true\n let found = false\n for (const e of entries) {\n if (isVarCode) {\n if (e.code != 1070) {\n /* Unexpected group code. */\n break\n }\n if (dimStyleCodes.get(e.value) == valueName) {\n found = true\n }\n } else if (found) {\n return e.value\n }\n isVarCode = !isVarCode\n }\n }\n if (style && style.hasOwnProperty(valueName)) {\n return style[valueName]\n }\n if (this.vars.has(valueName)) {\n return this.vars.get(valueName)\n }\n if (DEFAULT_VARS.hasOwnProperty(valueName)) {\n const value = DEFAULT_VARS[valueName]\n if (value instanceof Function) {\n return value.call(this)\n }\n return value\n }\n return null\n }\n\n /**\n * Updates batches directly.\n * @param entity\n * @param blockCtx {?BlockContext} Nested block insert when non-null.\n */\n _ProcessInsert(entity, blockCtx = null) {\n if (blockCtx) {\n //XXX handle indirect recursion\n if (blockCtx.name === entity.name) {\n console.warn(\"Recursive block reference: \" + blockCtx.name)\n return\n }\n /* Flatten nested blocks definition. */\n const block = this.blocks.get(entity.name)\n if (!block) {\n console.warn(\"Unresolved nested block reference: \" + entity.name)\n return\n }\n const nestedCtx = blockCtx.NestedBlockContext(block, entity)\n if (block.data.entities) {\n for (const entity of block.data.entities) {\n this._ProcessDxfEntity(entity, nestedCtx)\n }\n }\n return\n }\n\n const block = this.blocks.get(entity.name)\n if (!block) {\n console.warn(\"Unresolved block reference in INSERT: \" + entity.name)\n return\n }\n if (!block.HasGeometry()) {\n return\n }\n\n const layer = this._GetEntityLayer(entity, null)\n const color = this._GetEntityColor(entity, null)\n const lineType = this._GetLineType(entity, null, null)\n //XXX apply extrusion direction\n const transform = block.InstantiationContext().GetInsertionTransform(entity)\n\n /* Update bounding box and origin with transformed block bounds corner points. */\n const bounds = block.bounds\n this._UpdateBounds(new Vector2(bounds.minX, bounds.minY).applyMatrix3(transform))\n this._UpdateBounds(new Vector2(bounds.maxX, bounds.maxY).applyMatrix3(transform))\n this._UpdateBounds(new Vector2(bounds.minX, bounds.maxY).applyMatrix3(transform))\n this._UpdateBounds(new Vector2(bounds.maxX, bounds.minY).applyMatrix3(transform))\n\n transform.translate(-this.origin.x, -this.origin.y)\n //XXX grid instancing not supported yet\n if (block.flatten) {\n for (const batch of block.batches) {\n this._FlattenBatch(batch, layer, color, lineType, transform)\n }\n } else {\n const key = new BatchingKey(layer, entity.name, BatchingKey.GeometryType.BLOCK_INSTANCE,\n color, lineType)\n const batch = this._GetBatch(key)\n batch.PushInstanceTransform(transform)\n }\n }\n\n /** Flatten block definition batch. It is merged into suitable instant rendering batch. */\n _FlattenBatch(blockBatch, layerName, blockColor, blockLineType, transform) {\n /* INSERT layer (if specified) takes precedence over layer specified in block definition.\n * Use layer from block definition only if no layer in INSERT.\n */\n layerName ??= blockBatch.key.layerName\n const layer = layerName ? this.layers.get(layerName) : null\n let color, lineType = 0\n if (blockBatch.key.color === ColorCode.BY_BLOCK) {\n color = blockColor\n } else if (blockBatch.key.color === ColorCode.BY_LAYER) {\n color = layer?.color ?? 0\n } else {\n color = blockBatch.key.color\n }\n //XXX line type\n const key = new BatchingKey(layerName, null, blockBatch.key.geometryType, color, lineType)\n const batch = this._GetBatch(key)\n batch.Merge(blockBatch, transform)\n }\n\n /**\n * Generate entities for shaped polyline (e.g. line resulting in mesh). All segments are shaped\n * (have start/end width). Segments may be bulge.\n * @param vertices\n * @param layer\n * @param color\n * @param lineType\n * @param shape {Boolean} True if closed polyline.\n * @return {Generator}\n */\n *_GenerateShapedPolyline(vertices, layer, color, lineType, shape) {\n //XXX\n yield new Entity({\n type: Entity.Type.POLYLINE,\n vertices,\n layer,\n color,\n lineType,\n shape\n })\n }\n\n /** Mirror entity vertices if necessary in case of extrusionDirection with negative Z specified.\n *\n * @param entity Entity to check.\n * @param vertices {?{x,y}[]} Vertices array to use instead of entity vertices attribute.\n * @return {{x,y}[]} Vertices array with mirrored X if necessary. All attributes preserved.\n */\n _MirrorEntityVertices(entity, vertices = null) {\n if (!entity.extrusionDirection || entity.extrusionDirection.z >= 0) {\n return vertices ?? entity.vertices\n }\n if (!vertices || vertices === entity.vertices) {\n vertices = entity.vertices.slice()\n }\n const n = vertices.length\n for (let i = 0; i < n; i++) {\n const v = vertices[i]\n const _v = {x: -v.x}\n for (const propName in v) {\n if (!v.hasOwnProperty(propName)) {\n continue\n }\n if (propName !== \"x\") {\n _v[propName] = v[propName]\n }\n }\n vertices[i] = _v\n }\n return vertices\n }\n\n *_DecomposePolyline(entity, blockCtx = null) {\n\n if (entity.isPolyfaceMesh) {\n yield *this._DecomposePolyfaceMesh(entity, blockCtx)\n return\n }\n\n let entityVertices, verticesCount\n if (entity.includesCurveFitVertices || entity.includesSplineFitVertices) {\n entityVertices = entity.vertices.filter(v => v.splineVertex || v.curveFittingVertex)\n verticesCount = entityVertices.length\n } else {\n entityVertices = entity.vertices\n verticesCount = entity.vertices.length\n }\n if (verticesCount < 2) {\n return\n }\n entityVertices = this._MirrorEntityVertices(entity, entityVertices)\n const color = this._GetEntityColor(entity, blockCtx)\n const layer = this._GetEntityLayer(entity, blockCtx)\n const _this = this\n let startIdx = 0\n let curPlainLine = this._IsPlainLine(entityVertices[0])\n let curLineType = this._GetLineType(entity, entityVertices[0], blockCtx)\n let curVertices = null\n\n function *CommitSegment(endIdx) {\n if (endIdx === startIdx) {\n return\n }\n let isClosed = false\n let vertices = curVertices\n if (endIdx === verticesCount && startIdx === 0) {\n isClosed = true\n if (vertices === null) {\n vertices = entityVertices\n }\n } else if (endIdx === verticesCount - 1 && startIdx === 0) {\n if (vertices === null) {\n vertices = entityVertices\n }\n } else if (endIdx === verticesCount) {\n if (vertices === null) {\n vertices = entityVertices.slice(startIdx, endIdx)\n vertices.push(entityVertices[0])\n }\n } else {\n if (vertices === null) {\n vertices = entityVertices.slice(startIdx, endIdx + 1)\n }\n }\n\n if (curPlainLine) {\n yield new Entity({\n type: Entity.Type.POLYLINE,\n vertices, layer, color,\n lineType: curLineType,\n shape: isClosed\n })\n } else {\n yield* _this._GenerateShapedPolyline(vertices, layer, color, curLineType, isClosed)\n }\n\n startIdx = endIdx\n if (endIdx !== verticesCount) {\n curPlainLine = _this._IsPlainLine(entityVertices[endIdx])\n curLineType = _this._GetLineType(entity, entityVertices[endIdx])\n }\n curVertices = null\n }\n\n for (let vIdx = 1; vIdx <= verticesCount; vIdx++) {\n const prevVtx = entityVertices[vIdx - 1]\n let vtx\n if (vIdx === verticesCount) {\n if (!entity.shape) {\n yield* CommitSegment(vIdx - 1)\n break\n }\n vtx = entityVertices[0]\n } else {\n vtx = entityVertices[vIdx]\n }\n\n if (Boolean(prevVtx.bulge) && curPlainLine) {\n if (curVertices === null) {\n curVertices = entityVertices.slice(startIdx, vIdx)\n }\n this._GenerateBulgeVertices(curVertices, prevVtx, vtx, prevVtx.bulge)\n } else if (curVertices !== null) {\n curVertices.push(vtx)\n }\n\n if (vIdx === verticesCount) {\n yield* CommitSegment(vIdx)\n break\n }\n\n const isPlainLine = this._IsPlainLine(vtx)\n const lineType = this._GetLineType(entity, vtx)\n if (isPlainLine !== curPlainLine ||\n /* Line type is accounted for plain lines only. */\n (curPlainLine && lineType !== curLineType)) {\n\n yield* CommitSegment(vIdx)\n }\n }\n }\n\n *_DecomposePolyfaceMesh(entity, blockCtx = null) {\n const layer = this._GetEntityLayer(entity, blockCtx)\n const color = this._GetEntityColor(entity, blockCtx)\n\n const vertices = []\n const faces = []\n\n for (const v of entity.vertices) {\n if (v.faces) {\n const face = {\n indices: [],\n hiddenEdges: []\n }\n for (let vIdx of v.faces) {\n if (vIdx == 0) {\n break\n }\n if (vIdx > vertices.length) {\n /* It was observed that some software may produce negative values as 16-bits\n * complements. Seen this in files produced by `dwg2dxf`.\n */\n if (0x10000 - vIdx > vertices.length) {\n /* Index out of range, give up. */\n continue\n }\n vIdx = vIdx - 0x10000\n }\n face.indices.push(vIdx < 0 ? -vIdx - 1 : vIdx - 1)\n face.hiddenEdges.push(vIdx < 0)\n }\n if (face.indices.length == 3 || face.indices.length == 4) {\n faces.push(face)\n }\n } else {\n vertices.push(new Vector2(v.x, v.y))\n }\n }\n\n const polylines = []\n const CommitLineSegment = (startIdx, endIdx) => {\n if (polylines.length > 0) {\n const prev = polylines[polylines.length - 1]\n if (prev.indices[prev.indices.length - 1] == startIdx) {\n prev.indices.push(endIdx)\n return\n }\n if (prev.indices[0] == prev.indices[prev.indices.length - 1]) {\n prev.isClosed = true\n }\n }\n polylines.push({\n indices: [startIdx, endIdx],\n isClosed: false\n })\n }\n\n for (const face of faces) {\n\n if (this.options.wireframeMesh) {\n for (let i = 0; i < face.indices.length; i++) {\n if (face.hiddenEdges[i]) {\n continue\n }\n const nextIdx = i < face.indices.length - 1 ? i + 1 : 0\n CommitLineSegment(face.indices[i], face.indices[nextIdx])\n }\n\n } else {\n let indices\n if (face.indices.length == 3) {\n indices = face.indices\n } else {\n indices = [face.indices[0], face.indices[1], face.indices[2],\n face.indices[0], face.indices[2], face.indices[3]]\n }\n yield new Entity({\n type: Entity.Type.TRIANGLES,\n vertices, indices, layer, color\n })\n }\n }\n\n if (this.options.wireframeMesh) {\n for (const pl of polylines) {\n if (pl.length == 2) {\n yield new Entity({\n type: Entity.Type.LINE_SEGMENTS,\n vertices: [vertices[pl.indices[0]], vertices[pl.indices[1]]],\n layer, color\n })\n } else {\n const _vertices = []\n for (const vIdx of pl.indices) {\n _vertices.push(vertices[vIdx])\n }\n yield new Entity({\n type: Entity.Type.POLYLINE,\n vertices: _vertices, layer, color,\n shape: pl.isClosed\n })\n }\n }\n }\n }\n\n *_DecomposeSpline(entity, blockCtx = null) {\n const color = this._GetEntityColor(entity, blockCtx)\n const layer = this._GetEntityLayer(entity, blockCtx)\n const lineType = this._GetLineType(entity, null, blockCtx)\n if (!entity.controlPoints) {\n //XXX knots or fit points not supported yet\n return\n }\n const controlPoints = entity.controlPoints.map(p => [p.x, p.y])\n const vertices = []\n const subdivisions = controlPoints.length * SPLINE_SUBDIVISION\n const step = 1 / subdivisions\n for (let i = 0; i <= subdivisions; i++) {\n const pt = this._InterpolateSpline(i * step, entity.degreeOfSplineCurve, controlPoints,\n entity.knotValues)\n vertices.push({x: pt[0], y: pt[1]})\n }\n //XXX extrusionDirection (normalVector) transform?\n yield new Entity({type: Entity.Type.POLYLINE, vertices, layer, color, lineType})\n }\n\n /** Get a point on a B-spline.\n * https://github.com/thibauts/b-spline\n * @param t {number} Point position on spline, [0..1].\n * @param degree {number} B-spline degree.\n * @param points {number[][]} Control points. Each point should have the same dimension which\n * defines dimension of the result.\n * @param knots {?number[]} Knot vector. Should have size `points.length + degree + 1`. Default\n * is uniform spline.\n * @param weights {?number} Optional weights vector.\n * @return {number[]} Resulting point on the specified position.\n */\n _InterpolateSpline(t, degree, points, knots = null, weights = null) {\n let i, j, s, l // function-scoped iteration variables\n const n = points.length // points count\n const d = points[0].length // point dimensionality\n\n if (degree < 1) {\n throw new Error(\"Degree must be at least 1 (linear)\")\n }\n if (degree > (n - 1)) {\n throw new Error(\"Degree must be less than or equal to point count - 1\")\n }\n\n if (!weights) {\n // build weight vector of length [n]\n weights = []\n for(i = 0; i < n; i++) {\n weights[i] = 1\n }\n }\n\n if (!knots) {\n // build knot vector of length [n + degree + 1]\n knots = []\n for(i = 0; i < n + degree + 1; i++) {\n knots[i] = i\n }\n } else {\n if (knots.length !== n + degree + 1) {\n throw new Error(\"Bad knot vector length\")\n }\n }\n\n const domain = [\n degree,\n knots.length-1 - degree\n ]\n\n // remap t to the domain where the spline is defined\n const low = knots[domain[0]]\n const high = knots[domain[1]]\n t = t * (high - low) + low\n\n if (t < low) {\n t = low\n } else if (t > high) {\n t = high\n }\n\n // find s (the spline segment) for the [t] value provided\n for (s = domain[0]; s < domain[1]; s++) {\n if (t >= knots[s] && t <= knots[s + 1]) {\n break\n }\n }\n\n // convert points to homogeneous coordinates\n const v = []\n for (i = 0; i < n; i++) {\n v[i] = []\n for (j = 0; j < d; j++) {\n v[i][j] = points[i][j] * weights[i]\n }\n v[i][d] = weights[i]\n }\n\n // l (level) goes from 1 to the curve degree + 1\n let alpha\n for (l = 1; l <= degree + 1; l++) {\n // build level l of the pyramid\n for(i = s; i > s - degree - 1 + l; i--) {\n alpha = (t - knots[i]) / (knots[i + degree + 1 - l] - knots[i])\n // interpolate each component\n for(j = 0; j < d + 1; j++) {\n v[i][j] = (1 - alpha) * v[i - 1][j] + alpha * v[i][j]\n }\n }\n }\n\n // convert back to cartesian and return\n const result = []\n for(i = 0; i < d; i++) {\n result[i] = v[s][i] / v[s][d]\n }\n return result\n }\n\n /**\n * @param entity {Entity}\n * @param blockCtx {?BlockContext}\n */\n _ProcessPoints(entity, blockCtx = null) {\n const key = new BatchingKey(entity.layer, blockCtx?.name,\n BatchingKey.GeometryType.POINTS, entity.color, 0)\n const batch = this._GetBatch(key)\n for (const v of entity.vertices) {\n batch.PushVertex(this._TransformVertex(v, blockCtx))\n }\n }\n\n /**\n * @param entity {Entity}\n * @param blockCtx {?BlockContext}\n */\n _ProcessLineSegments(entity, blockCtx = null) {\n if (entity.vertices.length % 2 !== 0) {\n throw Error(\"Even number of vertices expected\")\n }\n const key = new BatchingKey(entity.layer, blockCtx?.name,\n BatchingKey.GeometryType.LINES, entity.color, entity.lineType)\n const batch = this._GetBatch(key)\n for (const v of entity.vertices) {\n batch.PushVertex(this._TransformVertex(v, blockCtx))\n }\n }\n\n /**\n * @param entity {Entity}\n * @param blockCtx {?BlockContext}\n */\n _ProcessPolyline(entity, blockCtx = null) {\n if (entity.vertices.length < 2) {\n return\n }\n /* It is more optimal to render short polylines un-indexed. Also DXF often contains\n * polylines with just two points.\n */\n const verticesCount = entity.vertices.length\n if (verticesCount <= 3) {\n const key = new BatchingKey(entity.layer, blockCtx?.name,\n BatchingKey.GeometryType.LINES, entity.color,\n entity.lineType)\n const batch = this._GetBatch(key)\n let prev = null\n for (const v of entity.vertices) {\n if (prev !== null) {\n batch.PushVertex(this._TransformVertex(prev, blockCtx))\n batch.PushVertex(this._TransformVertex(v, blockCtx))\n }\n prev = v\n }\n if (entity.shape && verticesCount > 2) {\n batch.PushVertex(this._TransformVertex(entity.vertices[verticesCount - 1], blockCtx))\n batch.PushVertex(this._TransformVertex(entity.vertices[0], blockCtx))\n }\n return\n }\n\n const key = new BatchingKey(entity.layer, blockCtx?.name,\n BatchingKey.GeometryType.INDEXED_LINES,\n entity.color, entity.lineType)\n const batch = this._GetBatch(key)\n /* Line may be split if exceeds chunk limit. */\n for (const lineChunk of entity._IterateLineChunks()) {\n const chunk = batch.PushChunk(lineChunk.verticesCount)\n for (const v of lineChunk.vertices) {\n chunk.PushVertex(this._TransformVertex(v, blockCtx))\n }\n for (const idx of lineChunk.indices) {\n chunk.PushIndex(idx)\n }\n chunk.Finish()\n }\n }\n\n /**\n * @param entity {Entity}\n * @param blockCtx {?BlockContext}\n */\n _ProcessTriangles(entity, blockCtx = null) {\n if (entity.vertices.length < 3) {\n return\n }\n if (entity.indices.length % 3 !== 0) {\n console.error(\"Unexpected size of indices array: \" + entity.indices.length)\n return\n }\n const key = new BatchingKey(entity.layer, blockCtx?.name,\n BatchingKey.GeometryType.INDEXED_TRIANGLES,\n entity.color, 0)\n const batch = this._GetBatch(key)\n //XXX splitting into chunks is not yet implemented.\n const chunk = batch.PushChunk(entity.vertices.length)\n for (const v of entity.vertices) {\n chunk.PushVertex(this._TransformVertex(v, blockCtx))\n }\n for (const idx of entity.indices) {\n chunk.PushIndex(idx)\n }\n chunk.Finish()\n }\n\n /** Resolve entity color.\n *\n * @param entity\n * @param blockCtx {?BlockContext}\n * @return {number} RGB color value. For block entity it also may be one of ColorCode values\n * which are resolved on block instantiation.\n */\n _GetEntityColor(entity, blockCtx = null) {\n let color = ColorCode.BY_LAYER\n if (entity.colorIndex === 0) {\n color = ColorCode.BY_BLOCK\n } else if (entity.colorIndex === 256) {\n /* Resolve color instantly if the entity has layer assigned, otherwise the layer is\n * is taken from `INSERT` layer when rendering.\n */\n if (entity.hasOwnProperty(\"layer\")) {\n const layer = this.layers.get(entity.layer)\n if (layer) {\n return layer.color\n }\n }\n color = ColorCode.BY_LAYER\n } else if (entity.hasOwnProperty(\"color\") && entity.color != null) {\n /* Index is converted to color value by parser now. */\n color = entity.color\n }\n\n if (blockCtx) {\n return color\n }\n if (color === ColorCode.BY_LAYER || color === ColorCode.BY_BLOCK) {\n /* BY_BLOCK is not useful when not in block so replace it by layer as well. */\n if (entity.hasOwnProperty(\"layer\")) {\n const layer = this.layers.get(entity.layer)\n if (layer && layer.color != null) {\n return layer.color\n }\n }\n } else {\n return color\n }\n /* Fallback to black. */\n return 0\n }\n\n /** @return {?string} Layer name, null for block entity. */\n _GetEntityLayer(entity, blockCtx = null) {\n if (entity.hasOwnProperty(\"layer\") && entity.layer != null) {\n return entity.layer\n }\n /* For block definition missing layer means taking layer from corresponding `INSERT` entity,\n * for instant entities use layer \"0\" as fallback to match reference software behavior.\n */\n return blockCtx ? null : \"0\"\n }\n\n /** @returns {TextStyle | null} */\n _GetEntityTextStyle(entity) {\n if (entity.hasOwnProperty(\"styleName\")) {\n return this.fontStyles.get(entity.styleName) ?? null\n }\n return null\n }\n\n /** Check extrusionDirection property of the entity and return corresponding transform matrix.\n *\n * @return {?Matrix3} Null if not transform required.\n */\n _GetEntityExtrusionTransform(entity) {\n //XXX For now just mirror X axis if extrusion Z is negative. No full support for arbitrary\n // OCS yet.\n if (!entity.hasOwnProperty(\"extrusionDirection\")) {\n return null\n }\n if (entity.extrusionDirection.z > 0) {\n return null\n }\n return new Matrix3().scale(-1, 1)\n }\n\n /** @return {RenderBatch} */\n _GetBatch(key) {\n let batch = this.batches.find({key})\n if (batch !== null) {\n return batch\n }\n batch = new RenderBatch(key)\n this.batches.insert(batch)\n if (key.blockName !== null && !key.IsInstanced()) {\n /* Block definition batch. */\n const block = this.blocks.get(key.blockName)\n if (block) {\n block.batches.push(batch)\n }\n }\n return batch\n }\n\n /**\n * Apply all necessary final transforms to a vertex before just before storing it in a rendering\n * batch.\n * @param v {{x: number, y: number}}\n * @param blockCtx {BlockContext}\n * @return {{x: number, y: number}}\n */\n _TransformVertex(v, blockCtx = null) {\n if (blockCtx) {\n /* Block definition in block coordinates. So it should not touch bounds and origin. */\n return blockCtx.TransformVertex(v)\n }\n this._UpdateBounds(v)\n return { x: v.x - this.origin.x, y: v.y - this.origin.y }\n }\n\n /** @param v {{x,y}} Vertex to extend bounding box with and set origin. */\n _UpdateBounds(v) {\n if (this.bounds === null) {\n this.bounds = { minX: v.x, maxX: v.x, minY: v.y, maxY: v.y }\n } else {\n if (v.x < this.bounds.minX) {\n this.bounds.minX = v.x\n } else if (v.x > this.bounds.maxX) {\n this.bounds.maxX = v.x\n }\n if (v.y < this.bounds.minY) {\n this.bounds.minY = v.y\n } else if (v.y > this.bounds.maxY) {\n this.bounds.maxY = v.y\n }\n }\n if (this.origin === null) {\n this.origin = { x: v.x, y: v.y }\n }\n }\n\n _BuildScene() {\n let verticesSize = 0\n let indicesSize = 0\n let transformsSize = 0\n this.batches.each(b => {\n verticesSize += b.GetVerticesBufferSize()\n indicesSize += b.GetIndicesBufferSize()\n transformsSize += b.GetTransformsSize()\n })\n\n const scene = {\n vertices: new ArrayBuffer(verticesSize),\n indices: new ArrayBuffer(indicesSize),\n transforms: new ArrayBuffer(transformsSize),\n batches: [],\n layers: [],\n origin: this.origin,\n bounds: this.bounds,\n hasMissingChars: this.hasMissingChars\n }\n\n const buffers = {\n vertices: new Float32Array(scene.vertices),\n verticesOffset: 0,\n indices: new Uint16Array(scene.indices),\n indicesOffset: 0,\n transforms: new Float32Array(scene.transforms),\n transformsOffset: 0\n }\n\n this.batches.each(b => {\n scene.batches.push(b.Serialize(buffers))\n })\n\n for (const layer of this.layers.values()) {\n if (layer.frozen) {\n continue\n }\n scene.layers.push({\n name: layer.name,\n displayName: layer.displayName,\n color: layer.color\n })\n }\n\n scene.pointShapeHasDot = (this.pdMode & PdMode.MARK_MASK) === PdMode.DOT\n\n return scene\n }\n}\n\nclass RenderBatch {\n constructor(key) {\n this.key = key\n if (key.IsIndexed()) {\n this.chunks = []\n } else if (key.geometryType === BatchingKey.GeometryType.BLOCK_INSTANCE) {\n this.transforms = new DynamicBuffer(NativeType.FLOAT32)\n } else {\n this.vertices = new DynamicBuffer(NativeType.FLOAT32)\n }\n }\n\n PushVertex(v) {\n const idx = this.vertices.Push(v.x)\n this.vertices.Push(v.y)\n return idx\n }\n\n /**\n * @param matrix {Matrix3} 3x3 Transform matrix. Assuming 2D affine transform so only top 3x2\n * sub-matrix is taken.\n */\n PushInstanceTransform(matrix) {\n /* Storing in row-major order as expected by renderer. */\n for (let row = 0; row < 2; row++) {\n for (let col = 0; col < 3; col++) {\n this.transforms.Push(matrix.elements[col * 3 + row])\n }\n }\n }\n\n /** This method actually reserves space for the specified number of indexed vertices in some\n * chunk. The returned object should be used to push exactly the same amount vertices and any\n * number of their referring indices.\n * @param verticesCount Number of vertices in the chunk.\n * @return {IndexedChunkWriter}\n */\n PushChunk(verticesCount) {\n if (verticesCount > INDEXED_CHUNK_SIZE) {\n throw new Error(\"Vertices count exceeds chunk limit: \" + verticesCount)\n }\n /* Find suitable chunk with minimal remaining space to fill them as fully as possible. */\n let curChunk = null\n let curSpace = 0\n for (const chunk of this.chunks) {\n const space = INDEXED_CHUNK_SIZE - chunk.vertices.GetSize() / 2\n if (space < verticesCount) {\n continue\n }\n if (curChunk === null || space < curSpace) {\n curChunk = chunk\n curSpace = space\n }\n }\n if (curChunk === null) {\n curChunk = this._NewChunk(verticesCount)\n }\n return new IndexedChunkWriter(curChunk, verticesCount)\n }\n\n /** Merge other batch into this one. They should have the same geometry type. Instanced batches\n * are disallowed.\n *\n * @param batch {RenderBatch}\n * @param transform {?Matrix3} Optional transform to apply for merged vertices.\n */\n Merge(batch, transform = null) {\n if (this.key.geometryType !== batch.key.geometryType) {\n throw new Error(\"Rendering batch merging geometry type mismatch: \" +\n `${this.key.geometryType} !== ${batch.key.geometryType}`)\n }\n if (this.key.IsInstanced()) {\n throw new Error(\"Attempted to merge instanced batch\")\n }\n if (this.key.IsIndexed()) {\n /* Merge chunks. */\n for (const chunk of batch.chunks) {\n const verticesSize = chunk.vertices.size\n const chunkWriter = this.PushChunk(verticesSize / 2)\n for (let i = 0; i < verticesSize; i += 2) {\n const v = new Vector2(chunk.vertices.Get(i), chunk.vertices.Get(i + 1))\n if (transform) {\n v.applyMatrix3(transform)\n }\n chunkWriter.PushVertex(v)\n }\n const numIndices = chunk.indices.size\n for (let i = 0; i < numIndices; i ++) {\n chunkWriter.PushIndex(chunk.indices.Get(i))\n }\n chunkWriter.Finish()\n }\n } else {\n const n = batch.vertices.size\n for (let i = 0; i < n; i += 2) {\n const v = new Vector2(batch.vertices.Get(i), batch.vertices.Get(i + 1))\n if (transform) {\n v.applyMatrix3(transform)\n }\n this.PushVertex(v)\n }\n }\n }\n\n /** @return Vertices buffer required size in bytes. */\n GetVerticesBufferSize() {\n if (this.key.IsIndexed()) {\n let size = 0\n for (const chunk of this.chunks) {\n size += chunk.vertices.GetSize()\n }\n return size * Float32Array.BYTES_PER_ELEMENT\n } else if (this.key.geometryType === BatchingKey.GeometryType.BLOCK_INSTANCE) {\n return 0\n } else {\n return this.vertices.GetSize() * Float32Array.BYTES_PER_ELEMENT\n }\n }\n\n /** @return Indices buffer required size in bytes. */\n GetIndicesBufferSize() {\n if (this.key.IsIndexed()) {\n let size = 0\n for (const chunk of this.chunks) {\n size += chunk.indices.GetSize()\n }\n return size * Uint16Array.BYTES_PER_ELEMENT\n } else {\n return 0\n }\n }\n\n /** @return Instances transforms buffer required size in bytes. */\n GetTransformsSize() {\n if (this.key.geometryType === BatchingKey.GeometryType.BLOCK_INSTANCE) {\n return this.transforms.GetSize() * Float32Array.BYTES_PER_ELEMENT\n } else {\n return 0\n }\n }\n\n Serialize(buffers) {\n if (this.key.IsIndexed()) {\n const batch = {\n key: this.key,\n chunks: []\n }\n for (const chunk of this.chunks) {\n batch.chunks.push(chunk.Serialize(buffers))\n }\n return batch\n\n } else if (this.key.geometryType === BatchingKey.GeometryType.BLOCK_INSTANCE) {\n const size = this.transforms.GetSize()\n const batch = {\n key: this.key,\n transformsOffset: buffers.transformsOffset,\n transformsSize: size\n }\n this.transforms.CopyTo(buffers.transforms, buffers.transformsOffset)\n buffers.transformsOffset += size\n return batch\n\n } else {\n const size = this.vertices.GetSize()\n const batch = {\n key: this.key,\n verticesOffset: buffers.verticesOffset,\n verticesSize: size\n }\n this.vertices.CopyTo(buffers.vertices, buffers.verticesOffset)\n buffers.verticesOffset += size\n return batch\n }\n }\n\n _NewChunk(initialCapacity) {\n const chunk = new IndexedChunk(initialCapacity)\n this.chunks.push(chunk)\n return chunk\n }\n}\n\nclass Block {\n /** @param data {{}} Raw DXF entity. */\n constructor(data) {\n this.data = data\n /* Number of times referenced from top-level entities (INSERT). */\n this.useCount = 0\n /* Number of times referenced by other block. */\n this.nestedUseCount = 0\n /* Total number of vertices in this block. Used for flattening decision. */\n this.verticesCount = 0\n /* Offset {x, y} to apply for all vertices. Used to move origin near vertices location to\n * minimize precision loss.\n */\n this.offset = null\n /* Definition batches. Used for root blocks flattening. */\n this.batches = []\n this.flatten = false\n /** Bounds in block coordinates (with offset applied). */\n this.bounds = null\n }\n\n /** Set block flattening flag based on usage statistics.\n * @return {Boolean} New flatten flag state.\n */\n SetFlatten() {\n if (!this.HasGeometry()) {\n return false\n }\n /* Flatten if a block is used once (pure optimization if shares its layer with other\n * geometry) or if total instanced vertices number is less than a threshold (trade some\n * space for draw calls number).\n */\n this.flatten = this.useCount === 1 ||\n this.useCount * this.verticesCount <= BLOCK_FLATTENING_VERTICES_THRESHOLD\n return this.flatten\n }\n\n /** @return {Boolean} True if has something to draw. */\n HasGeometry() {\n /* Offset is set on first geometry vertex encountered. */\n return this.offset !== null\n }\n\n /** @param {{}} entity May be either INSERT or DIMENSION. */\n RegisterInsert(entity) {\n this.useCount++\n }\n\n RegisterNestedUse(usedByBlock) {\n this.nestedUseCount++\n }\n\n /** @return {BlockContext} Context for block definition. */\n DefinitionContext() {\n return new BlockContext(this, BlockContext.Type.DEFINITION)\n }\n\n InstantiationContext() {\n return new BlockContext(this, BlockContext.Type.INSTANTIATION)\n }\n\n UpdateBounds(v) {\n if (this.bounds === null) {\n this.bounds = { minX: v.x, maxX: v.x, minY: v.y, maxY: v.y }\n } else {\n if (v.x < this.bounds.minX) {\n this.bounds.minX = v.x\n } else if (v.x > this.bounds.maxX) {\n this.bounds.maxX = v.x\n }\n if (v.y < this.bounds.minY) {\n this.bounds.minY = v.y\n } else if (v.y > this.bounds.maxY) {\n this.bounds.maxY = v.y\n }\n }\n }\n}\n\nclass BlockContext {\n constructor(block, type) {\n this.block = block\n this.type = type\n this.origin = this.block.data.position\n /* Transform to apply for block definition entities not including block offset. */\n this.transform = new Matrix3()\n }\n\n /** @return {string} Block name */\n get name() {\n return this.block.data.name\n }\n\n /**\n * @param v {{x,y}}\n * @return {{x,y}}\n */\n TransformVertex(v) {\n const result = new Vector2(v.x, v.y).applyMatrix3(this.transform)\n if (this.type !== BlockContext.Type.DEFINITION &&\n this.type !== BlockContext.Type.NESTED_DEFINITION) {\n\n throw new Error(\"Unexpected transform type\")\n }\n this.block.verticesCount++\n if (this.block.offset === null) {\n /* This is the first vertex. Take it as a block origin. So the result is always zero\n * vector for the first vertex.\n */\n this.block.offset = result\n const v = new Vector2()\n this.block.UpdateBounds(v)\n return v\n }\n result.sub(this.block.offset)\n this.block.UpdateBounds(result)\n return result\n }\n\n /**\n * Get transform for block instance.\n * @param entity Raw DXF INSERT entity.\n * @return {Matrix3} Transform matrix for block instance to apply to the block definition.\n */\n GetInsertionTransform(entity) {\n const mInsert = new Matrix3().translate(-this.origin.x, -this.origin.y)\n const yScale = entity.yScale || 1\n const xScale = entity.xScale || 1\n const rotation = -(entity.rotation || 0) * Math.PI / 180\n let x = entity.position.x\n const y = entity.position.y\n mInsert.scale(xScale, yScale)\n mInsert.rotate(rotation)\n mInsert.translate(x, y)\n if (entity.extrusionDirection && entity.extrusionDirection.z < 0) {\n mInsert.scale(-1, 1)\n }\n if (this.type !== BlockContext.Type.INSTANTIATION) {\n return mInsert\n }\n const mOffset = new Matrix3().translate(this.block.offset.x, this.block.offset.y)\n return mInsert.multiply(mOffset)\n }\n\n /**\n * Create context for nested block.\n * @param block {Block} Nested block.\n * @param entity Raw DXF INSERT entity.\n * @return {BlockContext} Context to use for nested block entities.\n */\n NestedBlockContext(block, entity) {\n block.RegisterNestedUse(this.block)\n const nestedCtx = new BlockContext(block, BlockContext.Type.NESTED_DEFINITION)\n const nestedTransform = nestedCtx.GetInsertionTransform(entity)\n const ctx = new BlockContext(this.block, BlockContext.Type.NESTED_DEFINITION)\n ctx.transform = new Matrix3().multiplyMatrices(this.transform, nestedTransform)\n return ctx\n }\n}\n\nBlockContext.Type = Object.freeze({\n DEFINITION: 0,\n NESTED_DEFINITION: 1,\n INSTANTIATION: 2\n})\n\nclass IndexedChunk {\n constructor(initialCapacity) {\n if (initialCapacity < 16) {\n initialCapacity = 16\n }\n /* Average two indices per vertex. */\n this.indices = new DynamicBuffer(NativeType.UINT16, initialCapacity * 2)\n /* Two components per vertex. */\n this.vertices = new DynamicBuffer(NativeType.FLOAT32, initialCapacity * 2)\n }\n\n Serialize(buffers) {\n const chunk = {}\n {\n const size = this.vertices.GetSize()\n chunk.verticesOffset = buffers.verticesOffset\n chunk.verticesSize = size\n this.vertices.CopyTo(buffers.vertices, buffers.verticesOffset)\n buffers.verticesOffset += size\n }\n {\n const size = this.indices.GetSize()\n chunk.indicesOffset = buffers.indicesOffset\n chunk.indicesSize = size\n this.indices.CopyTo(buffers.indices, buffers.indicesOffset)\n buffers.indicesOffset += size\n }\n return chunk\n }\n}\n\nclass IndexedChunkWriter {\n constructor(chunk, verticesCount) {\n this.chunk = chunk\n this.verticesCount = verticesCount\n this.verticesOffset = this.chunk.vertices.GetSize() / 2\n this.numVerticesPushed = 0\n }\n\n PushVertex(v) {\n if (this.numVerticesPushed === this.verticesCount) {\n throw new Error()\n }\n this.chunk.vertices.Push(v.x)\n this.chunk.vertices.Push(v.y)\n this.numVerticesPushed++\n }\n\n PushIndex(idx) {\n if (idx < 0 || idx >= this.verticesCount) {\n throw new Error(`Index out of range: ${idx}/${this.verticesCount}`)\n }\n this.chunk.indices.Push(idx + this.verticesOffset)\n }\n\n Finish() {\n if (this.numVerticesPushed !== this.verticesCount) {\n throw new Error(`Not all vertices pushed: ${this.numVerticesPushed}/${this.verticesCount}`)\n }\n }\n}\n\n/** Internal entity representation. DXF features are decomposed into these simpler entities. Whole\n * entity always shares single material.\n */\nexport class Entity {\n /** @param type {number} See Entity.Type\n * @param vertices {{x, y}[]}\n * @param indices {?number[]} Indices for indexed geometry.\n * @param layer {?string}\n * @param color {number}\n * @param lineType {?number}\n * @param shape {Boolean} true if closed shape.\n */\n constructor({type, vertices, indices = null, layer = null, color, lineType = 0, shape = false}) {\n this.type = type\n this.vertices = vertices\n this.indices = indices\n this.layer = layer\n this.color = color\n this.lineType = lineType\n this.shape = shape\n }\n\n *_IterateVertices(startIndex, count) {\n for (let idx = startIndex; idx < startIndex + count; idx++) {\n yield this.vertices[idx]\n }\n }\n\n /** Split line into chunks with at most INDEXED_CHUNK_SIZE vertices in each one. Each chunk is\n * an object with the following properties:\n * * \"verticesCount\" - length of \"vertices\"\n * * \"vertices\" - iterator for included vertices.\n * * \"indices\" - iterator for indices.\n * Closed shapes are handled properly.\n */\n *_IterateLineChunks() {\n const verticesCount = this.vertices.length\n if (verticesCount < 2) {\n return\n }\n const _this = this\n /* chunkOffset == verticesCount for shape closing vertex. */\n for (let chunkOffset = 0; chunkOffset <= verticesCount; chunkOffset += INDEXED_CHUNK_SIZE) {\n let count = verticesCount - chunkOffset\n let isLast\n if (count > INDEXED_CHUNK_SIZE) {\n count = INDEXED_CHUNK_SIZE\n isLast = false\n } else {\n isLast = true\n }\n if (isLast && this.shape && chunkOffset > 0 && count === INDEXED_CHUNK_SIZE) {\n /* Corner case - required shape closing vertex does not fit into the chunk. Will\n * require additional chunk.\n */\n isLast = false\n }\n if (chunkOffset === verticesCount && !this.shape) {\n /* Shape is not closed and it is last closing vertex iteration. */\n break\n }\n\n let vertices, indices, chunkVerticesCount\n if (count < 2) {\n /* Either last vertex or last shape-closing vertex, or both. */\n if (count === 1 && this.shape) {\n /* Both. */\n vertices = (function*() {\n yield this.vertices[chunkOffset]\n yield this.vertices[0]\n })()\n } else if (count === 1) {\n /* Just last vertex. Take previous one to make a line. */\n vertices = (function*() {\n yield this.vertices[chunkOffset - 1]\n yield this.vertices[chunkOffset]\n })()\n } else {\n /* Just shape-closing vertex. Take last one to make a line. */\n vertices = (function*() {\n yield this.vertices[verticesCount - 1]\n yield this.vertices[0]\n })()\n }\n indices = _IterateLineIndices(2, false)\n chunkVerticesCount = 2\n } else if (isLast && this.shape && chunkOffset > 0 && count < INDEXED_CHUNK_SIZE) {\n /* Additional vertex to close the shape. */\n vertices = (function*() {\n yield* _this._IterateVertices(chunkOffset, count)\n yield this.vertices[0]\n })()\n indices = _IterateLineIndices(count + 1, false)\n chunkVerticesCount = count + 1\n } else {\n vertices = this._IterateVertices(chunkOffset, count)\n indices = _IterateLineIndices(count,\n isLast && chunkOffset === 0 && this.shape)\n chunkVerticesCount = count\n }\n yield {\n verticesCount: chunkVerticesCount,\n vertices,\n indices\n }\n }\n }\n}\n\nEntity.Type = Object.freeze({\n POINTS: 0,\n /** Each vertices pair defines a segment. */\n LINE_SEGMENTS: 1,\n POLYLINE: 2,\n TRIANGLES: 3\n})\n\nfunction* _IterateLineIndices(verticesCount, close) {\n for (let idx = 0; idx < verticesCount - 1; idx++) {\n yield idx\n yield idx + 1\n }\n if (close && verticesCount > 2) {\n yield verticesCount - 1\n yield 0\n }\n}\n\n/** Point display mode, $PDMODE system variable. */\nconst PdMode = Object.freeze({\n DOT: 0,\n NONE: 1,\n PLUS: 2,\n CROSS: 3,\n TICK: 4,\n MARK_MASK: 0xf,\n\n CIRCLE: 0x20,\n SQUARE: 0x40,\n\n SHAPE_MASK: 0xf0\n})\n\n/** Special color values, used for block entities. Regular entity color is resolved instantly. */\nexport const ColorCode = Object.freeze({\n BY_LAYER: -1,\n BY_BLOCK: -2\n})\n\nDxfScene.DefaultOptions = {\n /** Target angle for each segment of tessellated arc. */\n arcTessellationAngle: 10 / 180 * Math.PI,\n /** Divide arc to at least the specified number of segments. */\n minArcTessellationSubdivisions: 8,\n /** Render meshes (3DFACE group, POLYLINE polyface mesh) as wireframe instead of solid. */\n wireframeMesh: false,\n /** Suppress paper-space entities when true (only model-space is rendered). */\n suppressPaperSpace: false,\n /** Text rendering options. */\n textOptions: TextRenderer.DefaultOptions,\n}\n","/*! https://mths.be/codepointat v0.2.0 by @mathias */\nif (!String.prototype.codePointAt) {\n\t(function() {\n\t\t'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\ttry {\n\t\t\t\tvar object = {};\n\t\t\t\tvar $defineProperty = Object.defineProperty;\n\t\t\t\tvar result = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tvar codePointAt = function(position) {\n\t\t\tif (this == null) {\n\t\t\t\tthrow TypeError();\n\t\t\t}\n\t\t\tvar string = String(this);\n\t\t\tvar size = string.length;\n\t\t\t// `ToInteger`\n\t\t\tvar index = position ? Number(position) : 0;\n\t\t\tif (index != index) { // better `isNaN`\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t// Account for out-of-bounds indices:\n\t\t\tif (index < 0 || index >= size) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\t// Get the first code unit\n\t\t\tvar first = string.charCodeAt(index);\n\t\t\tvar second;\n\t\t\tif ( // check if it’s the start of a surrogate pair\n\t\t\t\tfirst >= 0xD800 && first <= 0xDBFF && // high surrogate\n\t\t\t\tsize > index + 1 // there is a next code unit\n\t\t\t) {\n\t\t\t\tsecond = string.charCodeAt(index + 1);\n\t\t\t\tif (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate\n\t\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\t\treturn (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn first;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String.prototype, 'codePointAt', {\n\t\t\t\t'value': codePointAt,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.prototype.codePointAt = codePointAt;\n\t\t}\n\t}());\n}\n","var TINF_OK = 0;\nvar TINF_DATA_ERROR = -3;\n\nfunction Tree() {\n this.table = new Uint16Array(16); /* table of code length counts */\n this.trans = new Uint16Array(288); /* code -> symbol translation table */\n}\n\nfunction Data(source, dest) {\n this.source = source;\n this.sourceIndex = 0;\n this.tag = 0;\n this.bitcount = 0;\n \n this.dest = dest;\n this.destLen = 0;\n \n this.ltree = new Tree(); /* dynamic length/symbol tree */\n this.dtree = new Tree(); /* dynamic distance tree */\n}\n\n/* --------------------------------------------------- *\n * -- uninitialized global data (static structures) -- *\n * --------------------------------------------------- */\n\nvar sltree = new Tree();\nvar sdtree = new Tree();\n\n/* extra bits and base tables for length codes */\nvar length_bits = new Uint8Array(30);\nvar length_base = new Uint16Array(30);\n\n/* extra bits and base tables for distance codes */\nvar dist_bits = new Uint8Array(30);\nvar dist_base = new Uint16Array(30);\n\n/* special ordering of code length codes */\nvar clcidx = new Uint8Array([\n 16, 17, 18, 0, 8, 7, 9, 6,\n 10, 5, 11, 4, 12, 3, 13, 2,\n 14, 1, 15\n]);\n\n/* used by tinf_decode_trees, avoids allocations every call */\nvar code_tree = new Tree();\nvar lengths = new Uint8Array(288 + 32);\n\n/* ----------------------- *\n * -- utility functions -- *\n * ----------------------- */\n\n/* build extra bits and base tables */\nfunction tinf_build_bits_base(bits, base, delta, first) {\n var i, sum;\n\n /* build bits table */\n for (i = 0; i < delta; ++i) bits[i] = 0;\n for (i = 0; i < 30 - delta; ++i) bits[i + delta] = i / delta | 0;\n\n /* build base table */\n for (sum = first, i = 0; i < 30; ++i) {\n base[i] = sum;\n sum += 1 << bits[i];\n }\n}\n\n/* build the fixed huffman trees */\nfunction tinf_build_fixed_trees(lt, dt) {\n var i;\n\n /* build fixed length tree */\n for (i = 0; i < 7; ++i) lt.table[i] = 0;\n\n lt.table[7] = 24;\n lt.table[8] = 152;\n lt.table[9] = 112;\n\n for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;\n for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;\n for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;\n for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;\n\n /* build fixed distance tree */\n for (i = 0; i < 5; ++i) dt.table[i] = 0;\n\n dt.table[5] = 32;\n\n for (i = 0; i < 32; ++i) dt.trans[i] = i;\n}\n\n/* given an array of code lengths, build a tree */\nvar offs = new Uint16Array(16);\n\nfunction tinf_build_tree(t, lengths, off, num) {\n var i, sum;\n\n /* clear code length count table */\n for (i = 0; i < 16; ++i) t.table[i] = 0;\n\n /* scan symbol lengths, and sum code length counts */\n for (i = 0; i < num; ++i) t.table[lengths[off + i]]++;\n\n t.table[0] = 0;\n\n /* compute offset table for distribution sort */\n for (sum = 0, i = 0; i < 16; ++i) {\n offs[i] = sum;\n sum += t.table[i];\n }\n\n /* create code->symbol translation table (symbols sorted by code) */\n for (i = 0; i < num; ++i) {\n if (lengths[off + i]) t.trans[offs[lengths[off + i]]++] = i;\n }\n}\n\n/* ---------------------- *\n * -- decode functions -- *\n * ---------------------- */\n\n/* get one bit from source stream */\nfunction tinf_getbit(d) {\n /* check if tag is empty */\n if (!d.bitcount--) {\n /* load next tag */\n d.tag = d.source[d.sourceIndex++];\n d.bitcount = 7;\n }\n\n /* shift bit out of tag */\n var bit = d.tag & 1;\n d.tag >>>= 1;\n\n return bit;\n}\n\n/* read a num bit value from a stream and add base */\nfunction tinf_read_bits(d, num, base) {\n if (!num)\n return base;\n\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n\n var val = d.tag & (0xffff >>> (16 - num));\n d.tag >>>= num;\n d.bitcount -= num;\n return val + base;\n}\n\n/* given a data stream and a tree, decode a symbol */\nfunction tinf_decode_symbol(d, t) {\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n \n var sum = 0, cur = 0, len = 0;\n var tag = d.tag;\n\n /* get more bits while code value is above sum */\n do {\n cur = 2 * cur + (tag & 1);\n tag >>>= 1;\n ++len;\n\n sum += t.table[len];\n cur -= t.table[len];\n } while (cur >= 0);\n \n d.tag = tag;\n d.bitcount -= len;\n\n return t.trans[sum + cur];\n}\n\n/* given a data stream, decode dynamic trees from it */\nfunction tinf_decode_trees(d, lt, dt) {\n var hlit, hdist, hclen;\n var i, num, length;\n\n /* get 5 bits HLIT (257-286) */\n hlit = tinf_read_bits(d, 5, 257);\n\n /* get 5 bits HDIST (1-32) */\n hdist = tinf_read_bits(d, 5, 1);\n\n /* get 4 bits HCLEN (4-19) */\n hclen = tinf_read_bits(d, 4, 4);\n\n for (i = 0; i < 19; ++i) lengths[i] = 0;\n\n /* read code lengths for code length alphabet */\n for (i = 0; i < hclen; ++i) {\n /* get 3 bits code length (0-7) */\n var clen = tinf_read_bits(d, 3, 0);\n lengths[clcidx[i]] = clen;\n }\n\n /* build code length tree */\n tinf_build_tree(code_tree, lengths, 0, 19);\n\n /* decode code lengths for the dynamic trees */\n for (num = 0; num < hlit + hdist;) {\n var sym = tinf_decode_symbol(d, code_tree);\n\n switch (sym) {\n case 16:\n /* copy previous code length 3-6 times (read 2 bits) */\n var prev = lengths[num - 1];\n for (length = tinf_read_bits(d, 2, 3); length; --length) {\n lengths[num++] = prev;\n }\n break;\n case 17:\n /* repeat code length 0 for 3-10 times (read 3 bits) */\n for (length = tinf_read_bits(d, 3, 3); length; --length) {\n lengths[num++] = 0;\n }\n break;\n case 18:\n /* repeat code length 0 for 11-138 times (read 7 bits) */\n for (length = tinf_read_bits(d, 7, 11); length; --length) {\n lengths[num++] = 0;\n }\n break;\n default:\n /* values 0-15 represent the actual code lengths */\n lengths[num++] = sym;\n break;\n }\n }\n\n /* build dynamic trees */\n tinf_build_tree(lt, lengths, 0, hlit);\n tinf_build_tree(dt, lengths, hlit, hdist);\n}\n\n/* ----------------------------- *\n * -- block inflate functions -- *\n * ----------------------------- */\n\n/* given a stream and two trees, inflate a block of data */\nfunction tinf_inflate_block_data(d, lt, dt) {\n while (1) {\n var sym = tinf_decode_symbol(d, lt);\n\n /* check for end of block */\n if (sym === 256) {\n return TINF_OK;\n }\n\n if (sym < 256) {\n d.dest[d.destLen++] = sym;\n } else {\n var length, dist, offs;\n var i;\n\n sym -= 257;\n\n /* possibly get more bits from length code */\n length = tinf_read_bits(d, length_bits[sym], length_base[sym]);\n\n dist = tinf_decode_symbol(d, dt);\n\n /* possibly get more bits from distance code */\n offs = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]);\n\n /* copy match */\n for (i = offs; i < offs + length; ++i) {\n d.dest[d.destLen++] = d.dest[i];\n }\n }\n }\n}\n\n/* inflate an uncompressed block of data */\nfunction tinf_inflate_uncompressed_block(d) {\n var length, invlength;\n var i;\n \n /* unread from bitbuffer */\n while (d.bitcount > 8) {\n d.sourceIndex--;\n d.bitcount -= 8;\n }\n\n /* get length */\n length = d.source[d.sourceIndex + 1];\n length = 256 * length + d.source[d.sourceIndex];\n\n /* get one's complement of length */\n invlength = d.source[d.sourceIndex + 3];\n invlength = 256 * invlength + d.source[d.sourceIndex + 2];\n\n /* check length */\n if (length !== (~invlength & 0x0000ffff))\n return TINF_DATA_ERROR;\n\n d.sourceIndex += 4;\n\n /* copy block */\n for (i = length; i; --i)\n d.dest[d.destLen++] = d.source[d.sourceIndex++];\n\n /* make sure we start next block on a byte boundary */\n d.bitcount = 0;\n\n return TINF_OK;\n}\n\n/* inflate stream from source to dest */\nfunction tinf_uncompress(source, dest) {\n var d = new Data(source, dest);\n var bfinal, btype, res;\n\n do {\n /* read final block flag */\n bfinal = tinf_getbit(d);\n\n /* read block type (2 bits) */\n btype = tinf_read_bits(d, 2, 0);\n\n /* decompress block */\n switch (btype) {\n case 0:\n /* decompress uncompressed block */\n res = tinf_inflate_uncompressed_block(d);\n break;\n case 1:\n /* decompress block with fixed huffman trees */\n res = tinf_inflate_block_data(d, sltree, sdtree);\n break;\n case 2:\n /* decompress block with dynamic huffman trees */\n tinf_decode_trees(d, d.ltree, d.dtree);\n res = tinf_inflate_block_data(d, d.ltree, d.dtree);\n break;\n default:\n res = TINF_DATA_ERROR;\n }\n\n if (res !== TINF_OK)\n throw new Error('Data error');\n\n } while (!bfinal);\n\n if (d.destLen < d.dest.length) {\n if (typeof d.dest.slice === 'function')\n return d.dest.slice(0, d.destLen);\n else\n return d.dest.subarray(0, d.destLen);\n }\n \n return d.dest;\n}\n\n/* -------------------- *\n * -- initialization -- *\n * -------------------- */\n\n/* build fixed huffman trees */\ntinf_build_fixed_trees(sltree, sdtree);\n\n/* build extra bits and base tables */\ntinf_build_bits_base(length_bits, length_base, 4, 3);\ntinf_build_bits_base(dist_bits, dist_base, 2, 1);\n\n/* fix a special case */\nlength_bits[28] = 0;\nlength_base[28] = 258;\n\nmodule.exports = tinf_uncompress;\n","// The Bounding Box object\n\nfunction derive(v0, v1, v2, v3, t) {\n return Math.pow(1 - t, 3) * v0 +\n 3 * Math.pow(1 - t, 2) * t * v1 +\n 3 * (1 - t) * Math.pow(t, 2) * v2 +\n Math.pow(t, 3) * v3;\n}\n/**\n * A bounding box is an enclosing box that describes the smallest measure within which all the points lie.\n * It is used to calculate the bounding box of a glyph or text path.\n *\n * On initialization, x1/y1/x2/y2 will be NaN. Check if the bounding box is empty using `isEmpty()`.\n *\n * @exports opentype.BoundingBox\n * @class\n * @constructor\n */\nfunction BoundingBox() {\n this.x1 = Number.NaN;\n this.y1 = Number.NaN;\n this.x2 = Number.NaN;\n this.y2 = Number.NaN;\n}\n\n/**\n * Returns true if the bounding box is empty, that is, no points have been added to the box yet.\n */\nBoundingBox.prototype.isEmpty = function() {\n return isNaN(this.x1) || isNaN(this.y1) || isNaN(this.x2) || isNaN(this.y2);\n};\n\n/**\n * Add the point to the bounding box.\n * The x1/y1/x2/y2 coordinates of the bounding box will now encompass the given point.\n * @param {number} x - The X coordinate of the point.\n * @param {number} y - The Y coordinate of the point.\n */\nBoundingBox.prototype.addPoint = function(x, y) {\n if (typeof x === 'number') {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x;\n this.x2 = x;\n }\n if (x < this.x1) {\n this.x1 = x;\n }\n if (x > this.x2) {\n this.x2 = x;\n }\n }\n if (typeof y === 'number') {\n if (isNaN(this.y1) || isNaN(this.y2)) {\n this.y1 = y;\n this.y2 = y;\n }\n if (y < this.y1) {\n this.y1 = y;\n }\n if (y > this.y2) {\n this.y2 = y;\n }\n }\n};\n\n/**\n * Add a X coordinate to the bounding box.\n * This extends the bounding box to include the X coordinate.\n * This function is used internally inside of addBezier.\n * @param {number} x - The X coordinate of the point.\n */\nBoundingBox.prototype.addX = function(x) {\n this.addPoint(x, null);\n};\n\n/**\n * Add a Y coordinate to the bounding box.\n * This extends the bounding box to include the Y coordinate.\n * This function is used internally inside of addBezier.\n * @param {number} y - The Y coordinate of the point.\n */\nBoundingBox.prototype.addY = function(y) {\n this.addPoint(null, y);\n};\n\n/**\n * Add a Bézier curve to the bounding box.\n * This extends the bounding box to include the entire Bézier.\n * @param {number} x0 - The starting X coordinate.\n * @param {number} y0 - The starting Y coordinate.\n * @param {number} x1 - The X coordinate of the first control point.\n * @param {number} y1 - The Y coordinate of the first control point.\n * @param {number} x2 - The X coordinate of the second control point.\n * @param {number} y2 - The Y coordinate of the second control point.\n * @param {number} x - The ending X coordinate.\n * @param {number} y - The ending Y coordinate.\n */\nBoundingBox.prototype.addBezier = function(x0, y0, x1, y1, x2, y2, x, y) {\n // This code is based on http://nishiohirokazu.blogspot.com/2009/06/how-to-calculate-bezier-curves-bounding.html\n // and https://github.com/icons8/svg-path-bounding-box\n\n const p0 = [x0, y0];\n const p1 = [x1, y1];\n const p2 = [x2, y2];\n const p3 = [x, y];\n\n this.addPoint(x0, y0);\n this.addPoint(x, y);\n\n for (let i = 0; i <= 1; i++) {\n const b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n const a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n const c = 3 * p1[i] - 3 * p0[i];\n\n if (a === 0) {\n if (b === 0) continue;\n const t = -c / b;\n if (0 < t && t < 1) {\n if (i === 0) this.addX(derive(p0[i], p1[i], p2[i], p3[i], t));\n if (i === 1) this.addY(derive(p0[i], p1[i], p2[i], p3[i], t));\n }\n continue;\n }\n\n const b2ac = Math.pow(b, 2) - 4 * c * a;\n if (b2ac < 0) continue;\n const t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n if (0 < t1 && t1 < 1) {\n if (i === 0) this.addX(derive(p0[i], p1[i], p2[i], p3[i], t1));\n if (i === 1) this.addY(derive(p0[i], p1[i], p2[i], p3[i], t1));\n }\n const t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n if (0 < t2 && t2 < 1) {\n if (i === 0) this.addX(derive(p0[i], p1[i], p2[i], p3[i], t2));\n if (i === 1) this.addY(derive(p0[i], p1[i], p2[i], p3[i], t2));\n }\n }\n};\n\n/**\n * Add a quadratic curve to the bounding box.\n * This extends the bounding box to include the entire quadratic curve.\n * @param {number} x0 - The starting X coordinate.\n * @param {number} y0 - The starting Y coordinate.\n * @param {number} x1 - The X coordinate of the control point.\n * @param {number} y1 - The Y coordinate of the control point.\n * @param {number} x - The ending X coordinate.\n * @param {number} y - The ending Y coordinate.\n */\nBoundingBox.prototype.addQuad = function(x0, y0, x1, y1, x, y) {\n const cp1x = x0 + 2 / 3 * (x1 - x0);\n const cp1y = y0 + 2 / 3 * (y1 - y0);\n const cp2x = cp1x + 1 / 3 * (x - x0);\n const cp2y = cp1y + 1 / 3 * (y - y0);\n this.addBezier(x0, y0, cp1x, cp1y, cp2x, cp2y, x, y);\n};\n\nexport default BoundingBox;\n","// Geometric objects\n\nimport BoundingBox from './bbox';\n\n/**\n * A bézier path containing a set of path commands similar to a SVG path.\n * Paths can be drawn on a context using `draw`.\n * @exports opentype.Path\n * @class\n * @constructor\n */\nfunction Path() {\n this.commands = [];\n this.fill = 'black';\n this.stroke = null;\n this.strokeWidth = 1;\n}\n\n/**\n * @param {number} x\n * @param {number} y\n */\nPath.prototype.moveTo = function(x, y) {\n this.commands.push({\n type: 'M',\n x: x,\n y: y\n });\n};\n\n/**\n * @param {number} x\n * @param {number} y\n */\nPath.prototype.lineTo = function(x, y) {\n this.commands.push({\n type: 'L',\n x: x,\n y: y\n });\n};\n\n/**\n * Draws cubic curve\n * @function\n * curveTo\n * @memberof opentype.Path.prototype\n * @param {number} x1 - x of control 1\n * @param {number} y1 - y of control 1\n * @param {number} x2 - x of control 2\n * @param {number} y2 - y of control 2\n * @param {number} x - x of path point\n * @param {number} y - y of path point\n */\n\n/**\n * Draws cubic curve\n * @function\n * bezierCurveTo\n * @memberof opentype.Path.prototype\n * @param {number} x1 - x of control 1\n * @param {number} y1 - y of control 1\n * @param {number} x2 - x of control 2\n * @param {number} y2 - y of control 2\n * @param {number} x - x of path point\n * @param {number} y - y of path point\n * @see curveTo\n */\nPath.prototype.curveTo = Path.prototype.bezierCurveTo = function(x1, y1, x2, y2, x, y) {\n this.commands.push({\n type: 'C',\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n x: x,\n y: y\n });\n};\n\n/**\n * Draws quadratic curve\n * @function\n * quadraticCurveTo\n * @memberof opentype.Path.prototype\n * @param {number} x1 - x of control\n * @param {number} y1 - y of control\n * @param {number} x - x of path point\n * @param {number} y - y of path point\n */\n\n/**\n * Draws quadratic curve\n * @function\n * quadTo\n * @memberof opentype.Path.prototype\n * @param {number} x1 - x of control\n * @param {number} y1 - y of control\n * @param {number} x - x of path point\n * @param {number} y - y of path point\n */\nPath.prototype.quadTo = Path.prototype.quadraticCurveTo = function(x1, y1, x, y) {\n this.commands.push({\n type: 'Q',\n x1: x1,\n y1: y1,\n x: x,\n y: y\n });\n};\n\n/**\n * Closes the path\n * @function closePath\n * @memberof opentype.Path.prototype\n */\n\n/**\n * Close the path\n * @function close\n * @memberof opentype.Path.prototype\n */\nPath.prototype.close = Path.prototype.closePath = function() {\n this.commands.push({\n type: 'Z'\n });\n};\n\n/**\n * Add the given path or list of commands to the commands of this path.\n * @param {Array} pathOrCommands - another opentype.Path, an opentype.BoundingBox, or an array of commands.\n */\nPath.prototype.extend = function(pathOrCommands) {\n if (pathOrCommands.commands) {\n pathOrCommands = pathOrCommands.commands;\n } else if (pathOrCommands instanceof BoundingBox) {\n const box = pathOrCommands;\n this.moveTo(box.x1, box.y1);\n this.lineTo(box.x2, box.y1);\n this.lineTo(box.x2, box.y2);\n this.lineTo(box.x1, box.y2);\n this.close();\n return;\n }\n\n Array.prototype.push.apply(this.commands, pathOrCommands);\n};\n\n/**\n * Calculate the bounding box of the path.\n * @returns {opentype.BoundingBox}\n */\nPath.prototype.getBoundingBox = function() {\n const box = new BoundingBox();\n\n let startX = 0;\n let startY = 0;\n let prevX = 0;\n let prevY = 0;\n for (let i = 0; i < this.commands.length; i++) {\n const cmd = this.commands[i];\n switch (cmd.type) {\n case 'M':\n box.addPoint(cmd.x, cmd.y);\n startX = prevX = cmd.x;\n startY = prevY = cmd.y;\n break;\n case 'L':\n box.addPoint(cmd.x, cmd.y);\n prevX = cmd.x;\n prevY = cmd.y;\n break;\n case 'Q':\n box.addQuad(prevX, prevY, cmd.x1, cmd.y1, cmd.x, cmd.y);\n prevX = cmd.x;\n prevY = cmd.y;\n break;\n case 'C':\n box.addBezier(prevX, prevY, cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y);\n prevX = cmd.x;\n prevY = cmd.y;\n break;\n case 'Z':\n prevX = startX;\n prevY = startY;\n break;\n default:\n throw new Error('Unexpected path command ' + cmd.type);\n }\n }\n if (box.isEmpty()) {\n box.addPoint(0, 0);\n }\n return box;\n};\n\n/**\n * Draw the path to a 2D context.\n * @param {CanvasRenderingContext2D} ctx - A 2D drawing context.\n */\nPath.prototype.draw = function(ctx) {\n ctx.beginPath();\n for (let i = 0; i < this.commands.length; i += 1) {\n const cmd = this.commands[i];\n if (cmd.type === 'M') {\n ctx.moveTo(cmd.x, cmd.y);\n } else if (cmd.type === 'L') {\n ctx.lineTo(cmd.x, cmd.y);\n } else if (cmd.type === 'C') {\n ctx.bezierCurveTo(cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y);\n } else if (cmd.type === 'Q') {\n ctx.quadraticCurveTo(cmd.x1, cmd.y1, cmd.x, cmd.y);\n } else if (cmd.type === 'Z') {\n ctx.closePath();\n }\n }\n\n if (this.fill) {\n ctx.fillStyle = this.fill;\n ctx.fill();\n }\n\n if (this.stroke) {\n ctx.strokeStyle = this.stroke;\n ctx.lineWidth = this.strokeWidth;\n ctx.stroke();\n }\n};\n\n/**\n * Convert the Path to a string of path data instructions\n * See http://www.w3.org/TR/SVG/paths.html#PathData\n * @param {number} [decimalPlaces=2] - The amount of decimal places for floating-point values\n * @return {string}\n */\nPath.prototype.toPathData = function(decimalPlaces) {\n decimalPlaces = decimalPlaces !== undefined ? decimalPlaces : 2;\n\n function floatToString(v) {\n if (Math.round(v) === v) {\n return '' + Math.round(v);\n } else {\n return v.toFixed(decimalPlaces);\n }\n }\n\n function packValues() {\n let s = '';\n for (let i = 0; i < arguments.length; i += 1) {\n const v = arguments[i];\n if (v >= 0 && i > 0) {\n s += ' ';\n }\n\n s += floatToString(v);\n }\n\n return s;\n }\n\n let d = '';\n for (let i = 0; i < this.commands.length; i += 1) {\n const cmd = this.commands[i];\n if (cmd.type === 'M') {\n d += 'M' + packValues(cmd.x, cmd.y);\n } else if (cmd.type === 'L') {\n d += 'L' + packValues(cmd.x, cmd.y);\n } else if (cmd.type === 'C') {\n d += 'C' + packValues(cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y);\n } else if (cmd.type === 'Q') {\n d += 'Q' + packValues(cmd.x1, cmd.y1, cmd.x, cmd.y);\n } else if (cmd.type === 'Z') {\n d += 'Z';\n }\n }\n\n return d;\n};\n\n/**\n * Convert the path to an SVG element, as a string.\n * @param {number} [decimalPlaces=2] - The amount of decimal places for floating-point values\n * @return {string}\n */\nPath.prototype.toSVG = function(decimalPlaces) {\n let svg = '= 0 && v <= 255, 'Byte value should be between 0 and 255.');\n return [v];\n};\n/**\n * @constant\n * @type {number}\n */\nsizeOf.BYTE = constant(1);\n\n/**\n * Convert a 8-bit signed integer to a list of 1 byte.\n * @param {string}\n * @returns {Array}\n */\nencode.CHAR = function(v) {\n return [v.charCodeAt(0)];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.CHAR = constant(1);\n\n/**\n * Convert an ASCII string to a list of bytes.\n * @param {string}\n * @returns {Array}\n */\nencode.CHARARRAY = function(v) {\n if (typeof v === 'undefined') {\n v = '';\n console.warn('Undefined CHARARRAY encountered and treated as an empty string. This is probably caused by a missing glyph name.');\n }\n const b = [];\n for (let i = 0; i < v.length; i += 1) {\n b[i] = v.charCodeAt(i);\n }\n\n return b;\n};\n\n/**\n * @param {Array}\n * @returns {number}\n */\nsizeOf.CHARARRAY = function(v) {\n if (typeof v === 'undefined') {\n return 0;\n }\n return v.length;\n};\n\n/**\n * Convert a 16-bit unsigned integer to a list of 2 bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.USHORT = function(v) {\n return [(v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.USHORT = constant(2);\n\n/**\n * Convert a 16-bit signed integer to a list of 2 bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.SHORT = function(v) {\n // Two's complement\n if (v >= LIMIT16) {\n v = -(2 * LIMIT16 - v);\n }\n\n return [(v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.SHORT = constant(2);\n\n/**\n * Convert a 24-bit unsigned integer to a list of 3 bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.UINT24 = function(v) {\n return [(v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.UINT24 = constant(3);\n\n/**\n * Convert a 32-bit unsigned integer to a list of 4 bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.ULONG = function(v) {\n return [(v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.ULONG = constant(4);\n\n/**\n * Convert a 32-bit unsigned integer to a list of 4 bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.LONG = function(v) {\n // Two's complement\n if (v >= LIMIT32) {\n v = -(2 * LIMIT32 - v);\n }\n\n return [(v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.LONG = constant(4);\n\nencode.FIXED = encode.ULONG;\nsizeOf.FIXED = sizeOf.ULONG;\n\nencode.FWORD = encode.SHORT;\nsizeOf.FWORD = sizeOf.SHORT;\n\nencode.UFWORD = encode.USHORT;\nsizeOf.UFWORD = sizeOf.USHORT;\n\n/**\n * Convert a 32-bit Apple Mac timestamp integer to a list of 8 bytes, 64-bit timestamp.\n * @param {number}\n * @returns {Array}\n */\nencode.LONGDATETIME = function(v) {\n return [0, 0, 0, 0, (v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.LONGDATETIME = constant(8);\n\n/**\n * Convert a 4-char tag to a list of 4 bytes.\n * @param {string}\n * @returns {Array}\n */\nencode.TAG = function(v) {\n check.argument(v.length === 4, 'Tag should be exactly 4 ASCII characters.');\n return [v.charCodeAt(0),\n v.charCodeAt(1),\n v.charCodeAt(2),\n v.charCodeAt(3)];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.TAG = constant(4);\n\n// CFF data types ///////////////////////////////////////////////////////////\n\nencode.Card8 = encode.BYTE;\nsizeOf.Card8 = sizeOf.BYTE;\n\nencode.Card16 = encode.USHORT;\nsizeOf.Card16 = sizeOf.USHORT;\n\nencode.OffSize = encode.BYTE;\nsizeOf.OffSize = sizeOf.BYTE;\n\nencode.SID = encode.USHORT;\nsizeOf.SID = sizeOf.USHORT;\n\n// Convert a numeric operand or charstring number to a variable-size list of bytes.\n/**\n * Convert a numeric operand or charstring number to a variable-size list of bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.NUMBER = function(v) {\n if (v >= -107 && v <= 107) {\n return [v + 139];\n } else if (v >= 108 && v <= 1131) {\n v = v - 108;\n return [(v >> 8) + 247, v & 0xFF];\n } else if (v >= -1131 && v <= -108) {\n v = -v - 108;\n return [(v >> 8) + 251, v & 0xFF];\n } else if (v >= -32768 && v <= 32767) {\n return encode.NUMBER16(v);\n } else {\n return encode.NUMBER32(v);\n }\n};\n\n/**\n * @param {number}\n * @returns {number}\n */\nsizeOf.NUMBER = function(v) {\n return encode.NUMBER(v).length;\n};\n\n/**\n * Convert a signed number between -32768 and +32767 to a three-byte value.\n * This ensures we always use three bytes, but is not the most compact format.\n * @param {number}\n * @returns {Array}\n */\nencode.NUMBER16 = function(v) {\n return [28, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.NUMBER16 = constant(3);\n\n/**\n * Convert a signed number between -(2^31) and +(2^31-1) to a five-byte value.\n * This is useful if you want to be sure you always use four bytes,\n * at the expense of wasting a few bytes for smaller numbers.\n * @param {number}\n * @returns {Array}\n */\nencode.NUMBER32 = function(v) {\n return [29, (v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.NUMBER32 = constant(5);\n\n/**\n * @param {number}\n * @returns {Array}\n */\nencode.REAL = function(v) {\n let value = v.toString();\n\n // Some numbers use an epsilon to encode the value. (e.g. JavaScript will store 0.0000001 as 1e-7)\n // This code converts it back to a number without the epsilon.\n const m = /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/.exec(value);\n if (m) {\n const epsilon = parseFloat('1e' + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(v * epsilon) / epsilon).toString();\n }\n\n let nibbles = '';\n for (let i = 0, ii = value.length; i < ii; i += 1) {\n const c = value[i];\n if (c === 'e') {\n nibbles += value[++i] === '-' ? 'c' : 'b';\n } else if (c === '.') {\n nibbles += 'a';\n } else if (c === '-') {\n nibbles += 'e';\n } else {\n nibbles += c;\n }\n }\n\n nibbles += (nibbles.length & 1) ? 'f' : 'ff';\n const out = [30];\n for (let i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substr(i, 2), 16));\n }\n\n return out;\n};\n\n/**\n * @param {number}\n * @returns {number}\n */\nsizeOf.REAL = function(v) {\n return encode.REAL(v).length;\n};\n\nencode.NAME = encode.CHARARRAY;\nsizeOf.NAME = sizeOf.CHARARRAY;\n\nencode.STRING = encode.CHARARRAY;\nsizeOf.STRING = sizeOf.CHARARRAY;\n\n/**\n * @param {DataView} data\n * @param {number} offset\n * @param {number} numBytes\n * @returns {string}\n */\ndecode.UTF8 = function(data, offset, numBytes) {\n const codePoints = [];\n const numChars = numBytes;\n for (let j = 0; j < numChars; j++, offset += 1) {\n codePoints[j] = data.getUint8(offset);\n }\n\n return String.fromCharCode.apply(null, codePoints);\n};\n\n/**\n * @param {DataView} data\n * @param {number} offset\n * @param {number} numBytes\n * @returns {string}\n */\ndecode.UTF16 = function(data, offset, numBytes) {\n const codePoints = [];\n const numChars = numBytes / 2;\n for (let j = 0; j < numChars; j++, offset += 2) {\n codePoints[j] = data.getUint16(offset);\n }\n\n return String.fromCharCode.apply(null, codePoints);\n};\n\n/**\n * Convert a JavaScript string to UTF16-BE.\n * @param {string}\n * @returns {Array}\n */\nencode.UTF16 = function(v) {\n const b = [];\n for (let i = 0; i < v.length; i += 1) {\n const codepoint = v.charCodeAt(i);\n b[b.length] = (codepoint >> 8) & 0xFF;\n b[b.length] = codepoint & 0xFF;\n }\n\n return b;\n};\n\n/**\n * @param {string}\n * @returns {number}\n */\nsizeOf.UTF16 = function(v) {\n return v.length * 2;\n};\n\n// Data for converting old eight-bit Macintosh encodings to Unicode.\n// This representation is optimized for decoding; encoding is slower\n// and needs more memory. The assumption is that all opentype.js users\n// want to open fonts, but saving a font will be comparatively rare\n// so it can be more expensive. Keyed by IANA character set name.\n//\n// Python script for generating these strings:\n//\n// s = u''.join([chr(c).decode('mac_greek') for c in range(128, 256)])\n// print(s.encode('utf-8'))\n/**\n * @private\n */\nconst eightBitMacEncodings = {\n 'x-mac-croatian': // Python: 'mac_croatian'\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø' +\n '¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊©⁄€‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ',\n 'x-mac-cyrillic': // Python: 'mac_cyrillic'\n 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњ' +\n 'јЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю',\n 'x-mac-gaelic': // http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/GAELIC.TXT\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØḂ±≤≥ḃĊċḊḋḞḟĠġṀæø' +\n 'ṁṖṗɼƒſṠ«»… ÀÃÕŒœ–—“”‘’ṡẛÿŸṪ€‹›Ŷŷṫ·Ỳỳ⁊ÂÊÁËÈÍÎÏÌÓÔ♣ÒÚÛÙıÝýŴŵẄẅẀẁẂẃ',\n 'x-mac-greek': // Python: 'mac_greek'\n 'Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦€ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩ' +\n 'άΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ\\u00AD',\n 'x-mac-icelandic': // Python: 'mac_iceland'\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø' +\n '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ',\n 'x-mac-inuit': // http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/INUIT.TXT\n 'ᐃᐄᐅᐆᐊᐋᐱᐲᐳᐴᐸᐹᑉᑎᑏᑐᑑᑕᑖᑦᑭᑮᑯᑰᑲᑳᒃᒋᒌᒍᒎᒐᒑ°ᒡᒥᒦ•¶ᒧ®©™ᒨᒪᒫᒻᓂᓃᓄᓅᓇᓈᓐᓯᓰᓱᓲᓴᓵᔅᓕᓖᓗ' +\n 'ᓘᓚᓛᓪᔨᔩᔪᔫᔭ… ᔮᔾᕕᕖᕗ–—“”‘’ᕘᕙᕚᕝᕆᕇᕈᕉᕋᕌᕐᕿᖀᖁᖂᖃᖄᖅᖏᖐᖑᖒᖓᖔᖕᙱᙲᙳᙴᙵᙶᖖᖠᖡᖢᖣᖤᖥᖦᕼŁł',\n 'x-mac-ce': // Python: 'mac_latin2'\n 'ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅ' +\n 'ņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ',\n macintosh: // Python: 'mac_roman'\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø' +\n '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ',\n 'x-mac-romanian': // Python: 'mac_romanian'\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂȘ∞±≤≥¥µ∂∑∏π∫ªºΩăș' +\n '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›Țț‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ',\n 'x-mac-turkish': // Python: 'mac_turkish'\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø' +\n '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ'\n};\n\n/**\n * Decodes an old-style Macintosh string. Returns either a Unicode JavaScript\n * string, or 'undefined' if the encoding is unsupported. For example, we do\n * not support Chinese, Japanese or Korean because these would need large\n * mapping tables.\n * @param {DataView} dataView\n * @param {number} offset\n * @param {number} dataLength\n * @param {string} encoding\n * @returns {string}\n */\ndecode.MACSTRING = function(dataView, offset, dataLength, encoding) {\n const table = eightBitMacEncodings[encoding];\n if (table === undefined) {\n return undefined;\n }\n\n let result = '';\n for (let i = 0; i < dataLength; i++) {\n const c = dataView.getUint8(offset + i);\n // In all eight-bit Mac encodings, the characters 0x00..0x7F are\n // mapped to U+0000..U+007F; we only need to look up the others.\n if (c <= 0x7F) {\n result += String.fromCharCode(c);\n } else {\n result += table[c & 0x7F];\n }\n }\n\n return result;\n};\n\n// Helper function for encode.MACSTRING. Returns a dictionary for mapping\n// Unicode character codes to their 8-bit MacOS equivalent. This table\n// is not exactly a super cheap data structure, but we do not care because\n// encoding Macintosh strings is only rarely needed in typical applications.\nconst macEncodingTableCache = typeof WeakMap === 'function' && new WeakMap();\nlet macEncodingCacheKeys;\nconst getMacEncodingTable = function (encoding) {\n // Since we use encoding as a cache key for WeakMap, it has to be\n // a String object and not a literal. And at least on NodeJS 2.10.1,\n // WeakMap requires that the same String instance is passed for cache hits.\n if (!macEncodingCacheKeys) {\n macEncodingCacheKeys = {};\n for (let e in eightBitMacEncodings) {\n /*jshint -W053 */ // Suppress \"Do not use String as a constructor.\"\n macEncodingCacheKeys[e] = new String(e);\n }\n }\n\n const cacheKey = macEncodingCacheKeys[encoding];\n if (cacheKey === undefined) {\n return undefined;\n }\n\n // We can't do \"if (cache.has(key)) {return cache.get(key)}\" here:\n // since garbage collection may run at any time, it could also kick in\n // between the calls to cache.has() and cache.get(). In that case,\n // we would return 'undefined' even though we do support the encoding.\n if (macEncodingTableCache) {\n const cachedTable = macEncodingTableCache.get(cacheKey);\n if (cachedTable !== undefined) {\n return cachedTable;\n }\n }\n\n const decodingTable = eightBitMacEncodings[encoding];\n if (decodingTable === undefined) {\n return undefined;\n }\n\n const encodingTable = {};\n for (let i = 0; i < decodingTable.length; i++) {\n encodingTable[decodingTable.charCodeAt(i)] = i + 0x80;\n }\n\n if (macEncodingTableCache) {\n macEncodingTableCache.set(cacheKey, encodingTable);\n }\n\n return encodingTable;\n};\n\n/**\n * Encodes an old-style Macintosh string. Returns a byte array upon success.\n * If the requested encoding is unsupported, or if the input string contains\n * a character that cannot be expressed in the encoding, the function returns\n * 'undefined'.\n * @param {string} str\n * @param {string} encoding\n * @returns {Array}\n */\nencode.MACSTRING = function(str, encoding) {\n const table = getMacEncodingTable(encoding);\n if (table === undefined) {\n return undefined;\n }\n\n const result = [];\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n\n // In all eight-bit Mac encodings, the characters 0x00..0x7F are\n // mapped to U+0000..U+007F; we only need to look up the others.\n if (c >= 0x80) {\n c = table[c];\n if (c === undefined) {\n // str contains a Unicode character that cannot be encoded\n // in the requested encoding.\n return undefined;\n }\n }\n result[i] = c;\n // result.push(c);\n }\n\n return result;\n};\n\n/**\n * @param {string} str\n * @param {string} encoding\n * @returns {number}\n */\nsizeOf.MACSTRING = function(str, encoding) {\n const b = encode.MACSTRING(str, encoding);\n if (b !== undefined) {\n return b.length;\n } else {\n return 0;\n }\n};\n\n// Helper for encode.VARDELTAS\nfunction isByteEncodable(value) {\n return value >= -128 && value <= 127;\n}\n\n// Helper for encode.VARDELTAS\nfunction encodeVarDeltaRunAsZeroes(deltas, pos, result) {\n let runLength = 0;\n const numDeltas = deltas.length;\n while (pos < numDeltas && runLength < 64 && deltas[pos] === 0) {\n ++pos;\n ++runLength;\n }\n result.push(0x80 | (runLength - 1));\n return pos;\n}\n\n// Helper for encode.VARDELTAS\nfunction encodeVarDeltaRunAsBytes(deltas, offset, result) {\n let runLength = 0;\n const numDeltas = deltas.length;\n let pos = offset;\n while (pos < numDeltas && runLength < 64) {\n const value = deltas[pos];\n if (!isByteEncodable(value)) {\n break;\n }\n\n // Within a byte-encoded run of deltas, a single zero is best\n // stored literally as 0x00 value. However, if we have two or\n // more zeroes in a sequence, it is better to start a new run.\n // Fore example, the sequence of deltas [15, 15, 0, 15, 15]\n // becomes 6 bytes (04 0F 0F 00 0F 0F) when storing the zero\n // within the current run, but 7 bytes (01 0F 0F 80 01 0F 0F)\n // when starting a new run.\n if (value === 0 && pos + 1 < numDeltas && deltas[pos + 1] === 0) {\n break;\n }\n\n ++pos;\n ++runLength;\n }\n result.push(runLength - 1);\n for (let i = offset; i < pos; ++i) {\n result.push((deltas[i] + 256) & 0xff);\n }\n return pos;\n}\n\n// Helper for encode.VARDELTAS\nfunction encodeVarDeltaRunAsWords(deltas, offset, result) {\n let runLength = 0;\n const numDeltas = deltas.length;\n let pos = offset;\n while (pos < numDeltas && runLength < 64) {\n const value = deltas[pos];\n\n // Within a word-encoded run of deltas, it is easiest to start\n // a new run (with a different encoding) whenever we encounter\n // a zero value. For example, the sequence [0x6666, 0, 0x7777]\n // needs 7 bytes when storing the zero inside the current run\n // (42 66 66 00 00 77 77), and equally 7 bytes when starting a\n // new run (40 66 66 80 40 77 77).\n if (value === 0) {\n break;\n }\n\n // Within a word-encoded run of deltas, a single value in the\n // range (-128..127) should be encoded within the current run\n // because it is more compact. For example, the sequence\n // [0x6666, 2, 0x7777] becomes 7 bytes when storing the value\n // literally (42 66 66 00 02 77 77), but 8 bytes when starting\n // a new run (40 66 66 00 02 40 77 77).\n if (isByteEncodable(value) && pos + 1 < numDeltas && isByteEncodable(deltas[pos + 1])) {\n break;\n }\n\n ++pos;\n ++runLength;\n }\n result.push(0x40 | (runLength - 1));\n for (let i = offset; i < pos; ++i) {\n const val = deltas[i];\n result.push(((val + 0x10000) >> 8) & 0xff, (val + 0x100) & 0xff);\n }\n return pos;\n}\n\n/**\n * Encode a list of variation adjustment deltas.\n *\n * Variation adjustment deltas are used in ‘gvar’ and ‘cvar’ tables.\n * They indicate how points (in ‘gvar’) or values (in ‘cvar’) get adjusted\n * when generating instances of variation fonts.\n *\n * @see https://www.microsoft.com/typography/otspec/gvar.htm\n * @see https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6gvar.html\n * @param {Array}\n * @return {Array}\n */\nencode.VARDELTAS = function(deltas) {\n let pos = 0;\n const result = [];\n while (pos < deltas.length) {\n const value = deltas[pos];\n if (value === 0) {\n pos = encodeVarDeltaRunAsZeroes(deltas, pos, result);\n } else if (value >= -128 && value <= 127) {\n pos = encodeVarDeltaRunAsBytes(deltas, pos, result);\n } else {\n pos = encodeVarDeltaRunAsWords(deltas, pos, result);\n }\n }\n return result;\n};\n\n// Convert a list of values to a CFF INDEX structure.\n// The values should be objects containing name / type / value.\n/**\n * @param {Array} l\n * @returns {Array}\n */\nencode.INDEX = function(l) {\n //var offset, offsets, offsetEncoder, encodedOffsets, encodedOffset, data,\n // i, v;\n // Because we have to know which data type to use to encode the offsets,\n // we have to go through the values twice: once to encode the data and\n // calculate the offsets, then again to encode the offsets using the fitting data type.\n let offset = 1; // First offset is always 1.\n const offsets = [offset];\n const data = [];\n for (let i = 0; i < l.length; i += 1) {\n const v = encode.OBJECT(l[i]);\n Array.prototype.push.apply(data, v);\n offset += v.length;\n offsets.push(offset);\n }\n\n if (data.length === 0) {\n return [0, 0];\n }\n\n const encodedOffsets = [];\n const offSize = (1 + Math.floor(Math.log(offset) / Math.log(2)) / 8) | 0;\n const offsetEncoder = [undefined, encode.BYTE, encode.USHORT, encode.UINT24, encode.ULONG][offSize];\n for (let i = 0; i < offsets.length; i += 1) {\n const encodedOffset = offsetEncoder(offsets[i]);\n Array.prototype.push.apply(encodedOffsets, encodedOffset);\n }\n\n return Array.prototype.concat(encode.Card16(l.length),\n encode.OffSize(offSize),\n encodedOffsets,\n data);\n};\n\n/**\n * @param {Array}\n * @returns {number}\n */\nsizeOf.INDEX = function(v) {\n return encode.INDEX(v).length;\n};\n\n/**\n * Convert an object to a CFF DICT structure.\n * The keys should be numeric.\n * The values should be objects containing name / type / value.\n * @param {Object} m\n * @returns {Array}\n */\nencode.DICT = function(m) {\n let d = [];\n const keys = Object.keys(m);\n const length = keys.length;\n\n for (let i = 0; i < length; i += 1) {\n // Object.keys() return string keys, but our keys are always numeric.\n const k = parseInt(keys[i], 0);\n const v = m[k];\n // Value comes before the key.\n d = d.concat(encode.OPERAND(v.value, v.type));\n d = d.concat(encode.OPERATOR(k));\n }\n\n return d;\n};\n\n/**\n * @param {Object}\n * @returns {number}\n */\nsizeOf.DICT = function(m) {\n return encode.DICT(m).length;\n};\n\n/**\n * @param {number}\n * @returns {Array}\n */\nencode.OPERATOR = function(v) {\n if (v < 1200) {\n return [v];\n } else {\n return [12, v - 1200];\n }\n};\n\n/**\n * @param {Array} v\n * @param {string}\n * @returns {Array}\n */\nencode.OPERAND = function(v, type) {\n let d = [];\n if (Array.isArray(type)) {\n for (let i = 0; i < type.length; i += 1) {\n check.argument(v.length === type.length, 'Not enough arguments given for type' + type);\n d = d.concat(encode.OPERAND(v[i], type[i]));\n }\n } else {\n if (type === 'SID') {\n d = d.concat(encode.NUMBER(v));\n } else if (type === 'offset') {\n // We make it easy for ourselves and always encode offsets as\n // 4 bytes. This makes offset calculation for the top dict easier.\n d = d.concat(encode.NUMBER32(v));\n } else if (type === 'number') {\n d = d.concat(encode.NUMBER(v));\n } else if (type === 'real') {\n d = d.concat(encode.REAL(v));\n } else {\n throw new Error('Unknown operand type ' + type);\n // FIXME Add support for booleans\n }\n }\n\n return d;\n};\n\nencode.OP = encode.BYTE;\nsizeOf.OP = sizeOf.BYTE;\n\n// memoize charstring encoding using WeakMap if available\nconst wmm = typeof WeakMap === 'function' && new WeakMap();\n\n/**\n * Convert a list of CharString operations to bytes.\n * @param {Array}\n * @returns {Array}\n */\nencode.CHARSTRING = function(ops) {\n // See encode.MACSTRING for why we don't do \"if (wmm && wmm.has(ops))\".\n if (wmm) {\n const cachedValue = wmm.get(ops);\n if (cachedValue !== undefined) {\n return cachedValue;\n }\n }\n\n let d = [];\n const length = ops.length;\n\n for (let i = 0; i < length; i += 1) {\n const op = ops[i];\n d = d.concat(encode[op.type](op.value));\n }\n\n if (wmm) {\n wmm.set(ops, d);\n }\n\n return d;\n};\n\n/**\n * @param {Array}\n * @returns {number}\n */\nsizeOf.CHARSTRING = function(ops) {\n return encode.CHARSTRING(ops).length;\n};\n\n// Utility functions ////////////////////////////////////////////////////////\n\n/**\n * Convert an object containing name / type / value to bytes.\n * @param {Object}\n * @returns {Array}\n */\nencode.OBJECT = function(v) {\n const encodingFunction = encode[v.type];\n check.argument(encodingFunction !== undefined, 'No encoding function for type ' + v.type);\n return encodingFunction(v.value);\n};\n\n/**\n * @param {Object}\n * @returns {number}\n */\nsizeOf.OBJECT = function(v) {\n const sizeOfFunction = sizeOf[v.type];\n check.argument(sizeOfFunction !== undefined, 'No sizeOf function for type ' + v.type);\n return sizeOfFunction(v.value);\n};\n\n/**\n * Convert a table object to bytes.\n * A table contains a list of fields containing the metadata (name, type and default value).\n * The table itself has the field values set as attributes.\n * @param {opentype.Table}\n * @returns {Array}\n */\nencode.TABLE = function(table) {\n let d = [];\n const length = table.fields.length;\n const subtables = [];\n const subtableOffsets = [];\n\n for (let i = 0; i < length; i += 1) {\n const field = table.fields[i];\n const encodingFunction = encode[field.type];\n check.argument(encodingFunction !== undefined, 'No encoding function for field type ' + field.type + ' (' + field.name + ')');\n let value = table[field.name];\n if (value === undefined) {\n value = field.value;\n }\n\n const bytes = encodingFunction(value);\n\n if (field.type === 'TABLE') {\n subtableOffsets.push(d.length);\n d = d.concat([0, 0]);\n subtables.push(bytes);\n } else {\n d = d.concat(bytes);\n }\n }\n\n for (let i = 0; i < subtables.length; i += 1) {\n const o = subtableOffsets[i];\n const offset = d.length;\n check.argument(offset < 65536, 'Table ' + table.tableName + ' too big.');\n d[o] = offset >> 8;\n d[o + 1] = offset & 0xff;\n d = d.concat(subtables[i]);\n }\n\n return d;\n};\n\n/**\n * @param {opentype.Table}\n * @returns {number}\n */\nsizeOf.TABLE = function(table) {\n let numBytes = 0;\n const length = table.fields.length;\n\n for (let i = 0; i < length; i += 1) {\n const field = table.fields[i];\n const sizeOfFunction = sizeOf[field.type];\n check.argument(sizeOfFunction !== undefined, 'No sizeOf function for field type ' + field.type + ' (' + field.name + ')');\n let value = table[field.name];\n if (value === undefined) {\n value = field.value;\n }\n\n numBytes += sizeOfFunction(value);\n\n // Subtables take 2 more bytes for offsets.\n if (field.type === 'TABLE') {\n numBytes += 2;\n }\n }\n\n return numBytes;\n};\n\nencode.RECORD = encode.TABLE;\nsizeOf.RECORD = sizeOf.TABLE;\n\n// Merge in a list of bytes.\nencode.LITERAL = function(v) {\n return v;\n};\n\nsizeOf.LITERAL = function(v) {\n return v.length;\n};\n\nexport { decode, encode, sizeOf };\n","// Table metadata\n\nimport check from './check';\nimport { encode, sizeOf } from './types';\n\n/**\n * @exports opentype.Table\n * @class\n * @param {string} tableName\n * @param {Array} fields\n * @param {Object} options\n * @constructor\n */\nfunction Table(tableName, fields, options) {\n // For coverage tables with coverage format 2, we do not want to add the coverage data directly to the table object,\n // as this will result in wrong encoding order of the coverage data on serialization to bytes.\n // The fallback of using the field values directly when not present on the table is handled in types.encode.TABLE() already.\n if (fields.length && (fields[0].name !== 'coverageFormat' || fields[0].value === 1)) {\n for (let i = 0; i < fields.length; i += 1) {\n const field = fields[i];\n this[field.name] = field.value;\n }\n }\n\n this.tableName = tableName;\n this.fields = fields;\n if (options) {\n const optionKeys = Object.keys(options);\n for (let i = 0; i < optionKeys.length; i += 1) {\n const k = optionKeys[i];\n const v = options[k];\n if (this[k] !== undefined) {\n this[k] = v;\n }\n }\n }\n}\n\n/**\n * Encodes the table and returns an array of bytes\n * @return {Array}\n */\nTable.prototype.encode = function() {\n return encode.TABLE(this);\n};\n\n/**\n * Get the size of the table.\n * @return {number}\n */\nTable.prototype.sizeOf = function() {\n return sizeOf.TABLE(this);\n};\n\n/**\n * @private\n */\nfunction ushortList(itemName, list, count) {\n if (count === undefined) {\n count = list.length;\n }\n const fields = new Array(list.length + 1);\n fields[0] = {name: itemName + 'Count', type: 'USHORT', value: count};\n for (let i = 0; i < list.length; i++) {\n fields[i + 1] = {name: itemName + i, type: 'USHORT', value: list[i]};\n }\n return fields;\n}\n\n/**\n * @private\n */\nfunction tableList(itemName, records, itemCallback) {\n const count = records.length;\n const fields = new Array(count + 1);\n fields[0] = {name: itemName + 'Count', type: 'USHORT', value: count};\n for (let i = 0; i < count; i++) {\n fields[i + 1] = {name: itemName + i, type: 'TABLE', value: itemCallback(records[i], i)};\n }\n return fields;\n}\n\n/**\n * @private\n */\nfunction recordList(itemName, records, itemCallback) {\n const count = records.length;\n let fields = [];\n fields[0] = {name: itemName + 'Count', type: 'USHORT', value: count};\n for (let i = 0; i < count; i++) {\n fields = fields.concat(itemCallback(records[i], i));\n }\n return fields;\n}\n\n// Common Layout Tables\n\n/**\n * @exports opentype.Coverage\n * @class\n * @param {opentype.Table}\n * @constructor\n * @extends opentype.Table\n */\nfunction Coverage(coverageTable) {\n if (coverageTable.format === 1) {\n Table.call(this, 'coverageTable',\n [{name: 'coverageFormat', type: 'USHORT', value: 1}]\n .concat(ushortList('glyph', coverageTable.glyphs))\n );\n } else if (coverageTable.format === 2) {\n Table.call(this, 'coverageTable',\n [{name: 'coverageFormat', type: 'USHORT', value: 2}]\n .concat(recordList('rangeRecord', coverageTable.ranges, function(RangeRecord) {\n return [\n {name: 'startGlyphID', type: 'USHORT', value: RangeRecord.start},\n {name: 'endGlyphID', type: 'USHORT', value: RangeRecord.end},\n {name: 'startCoverageIndex', type: 'USHORT', value: RangeRecord.index},\n ];\n }))\n );\n } else {\n check.assert(false, 'Coverage format must be 1 or 2.');\n }\n}\nCoverage.prototype = Object.create(Table.prototype);\nCoverage.prototype.constructor = Coverage;\n\nfunction ScriptList(scriptListTable) {\n Table.call(this, 'scriptListTable',\n recordList('scriptRecord', scriptListTable, function(scriptRecord, i) {\n const script = scriptRecord.script;\n let defaultLangSys = script.defaultLangSys;\n check.assert(!!defaultLangSys, 'Unable to write GSUB: script ' + scriptRecord.tag + ' has no default language system.');\n return [\n {name: 'scriptTag' + i, type: 'TAG', value: scriptRecord.tag},\n {name: 'script' + i, type: 'TABLE', value: new Table('scriptTable', [\n {name: 'defaultLangSys', type: 'TABLE', value: new Table('defaultLangSys', [\n {name: 'lookupOrder', type: 'USHORT', value: 0},\n {name: 'reqFeatureIndex', type: 'USHORT', value: defaultLangSys.reqFeatureIndex}]\n .concat(ushortList('featureIndex', defaultLangSys.featureIndexes)))}\n ].concat(recordList('langSys', script.langSysRecords, function(langSysRecord, i) {\n const langSys = langSysRecord.langSys;\n return [\n {name: 'langSysTag' + i, type: 'TAG', value: langSysRecord.tag},\n {name: 'langSys' + i, type: 'TABLE', value: new Table('langSys', [\n {name: 'lookupOrder', type: 'USHORT', value: 0},\n {name: 'reqFeatureIndex', type: 'USHORT', value: langSys.reqFeatureIndex}\n ].concat(ushortList('featureIndex', langSys.featureIndexes)))}\n ];\n })))}\n ];\n })\n );\n}\nScriptList.prototype = Object.create(Table.prototype);\nScriptList.prototype.constructor = ScriptList;\n\n/**\n * @exports opentype.FeatureList\n * @class\n * @param {opentype.Table}\n * @constructor\n * @extends opentype.Table\n */\nfunction FeatureList(featureListTable) {\n Table.call(this, 'featureListTable',\n recordList('featureRecord', featureListTable, function(featureRecord, i) {\n const feature = featureRecord.feature;\n return [\n {name: 'featureTag' + i, type: 'TAG', value: featureRecord.tag},\n {name: 'feature' + i, type: 'TABLE', value: new Table('featureTable', [\n {name: 'featureParams', type: 'USHORT', value: feature.featureParams},\n ].concat(ushortList('lookupListIndex', feature.lookupListIndexes)))}\n ];\n })\n );\n}\nFeatureList.prototype = Object.create(Table.prototype);\nFeatureList.prototype.constructor = FeatureList;\n\n/**\n * @exports opentype.LookupList\n * @class\n * @param {opentype.Table}\n * @param {Object}\n * @constructor\n * @extends opentype.Table\n */\nfunction LookupList(lookupListTable, subtableMakers) {\n Table.call(this, 'lookupListTable', tableList('lookup', lookupListTable, function(lookupTable) {\n let subtableCallback = subtableMakers[lookupTable.lookupType];\n check.assert(!!subtableCallback, 'Unable to write GSUB lookup type ' + lookupTable.lookupType + ' tables.');\n return new Table('lookupTable', [\n {name: 'lookupType', type: 'USHORT', value: lookupTable.lookupType},\n {name: 'lookupFlag', type: 'USHORT', value: lookupTable.lookupFlag}\n ].concat(tableList('subtable', lookupTable.subtables, subtableCallback)));\n }));\n}\nLookupList.prototype = Object.create(Table.prototype);\nLookupList.prototype.constructor = LookupList;\n\n// Record = same as Table, but inlined (a Table has an offset and its data is further in the stream)\n// Don't use offsets inside Records (probable bug), only in Tables.\nexport default {\n Table,\n Record: Table,\n Coverage,\n ScriptList,\n FeatureList,\n LookupList,\n ushortList,\n tableList,\n recordList,\n};\n","// Parsing utility functions\n\nimport check from './check';\n\n// Retrieve an unsigned byte from the DataView.\nfunction getByte(dataView, offset) {\n return dataView.getUint8(offset);\n}\n\n// Retrieve an unsigned 16-bit short from the DataView.\n// The value is stored in big endian.\nfunction getUShort(dataView, offset) {\n return dataView.getUint16(offset, false);\n}\n\n// Retrieve a signed 16-bit short from the DataView.\n// The value is stored in big endian.\nfunction getShort(dataView, offset) {\n return dataView.getInt16(offset, false);\n}\n\n// Retrieve an unsigned 32-bit long from the DataView.\n// The value is stored in big endian.\nfunction getULong(dataView, offset) {\n return dataView.getUint32(offset, false);\n}\n\n// Retrieve a 32-bit signed fixed-point number (16.16) from the DataView.\n// The value is stored in big endian.\nfunction getFixed(dataView, offset) {\n const decimal = dataView.getInt16(offset, false);\n const fraction = dataView.getUint16(offset + 2, false);\n return decimal + fraction / 65535;\n}\n\n// Retrieve a 4-character tag from the DataView.\n// Tags are used to identify tables.\nfunction getTag(dataView, offset) {\n let tag = '';\n for (let i = offset; i < offset + 4; i += 1) {\n tag += String.fromCharCode(dataView.getInt8(i));\n }\n\n return tag;\n}\n\n// Retrieve an offset from the DataView.\n// Offsets are 1 to 4 bytes in length, depending on the offSize argument.\nfunction getOffset(dataView, offset, offSize) {\n let v = 0;\n for (let i = 0; i < offSize; i += 1) {\n v <<= 8;\n v += dataView.getUint8(offset + i);\n }\n\n return v;\n}\n\n// Retrieve a number of bytes from start offset to the end offset from the DataView.\nfunction getBytes(dataView, startOffset, endOffset) {\n const bytes = [];\n for (let i = startOffset; i < endOffset; i += 1) {\n bytes.push(dataView.getUint8(i));\n }\n\n return bytes;\n}\n\n// Convert the list of bytes to a string.\nfunction bytesToString(bytes) {\n let s = '';\n for (let i = 0; i < bytes.length; i += 1) {\n s += String.fromCharCode(bytes[i]);\n }\n\n return s;\n}\n\nconst typeOffsets = {\n byte: 1,\n uShort: 2,\n short: 2,\n uLong: 4,\n fixed: 4,\n longDateTime: 8,\n tag: 4\n};\n\n// A stateful parser that changes the offset whenever a value is retrieved.\n// The data is a DataView.\nfunction Parser(data, offset) {\n this.data = data;\n this.offset = offset;\n this.relativeOffset = 0;\n}\n\nParser.prototype.parseByte = function() {\n const v = this.data.getUint8(this.offset + this.relativeOffset);\n this.relativeOffset += 1;\n return v;\n};\n\nParser.prototype.parseChar = function() {\n const v = this.data.getInt8(this.offset + this.relativeOffset);\n this.relativeOffset += 1;\n return v;\n};\n\nParser.prototype.parseCard8 = Parser.prototype.parseByte;\n\nParser.prototype.parseUShort = function() {\n const v = this.data.getUint16(this.offset + this.relativeOffset);\n this.relativeOffset += 2;\n return v;\n};\n\nParser.prototype.parseCard16 = Parser.prototype.parseUShort;\nParser.prototype.parseSID = Parser.prototype.parseUShort;\nParser.prototype.parseOffset16 = Parser.prototype.parseUShort;\n\nParser.prototype.parseShort = function() {\n const v = this.data.getInt16(this.offset + this.relativeOffset);\n this.relativeOffset += 2;\n return v;\n};\n\nParser.prototype.parseF2Dot14 = function() {\n const v = this.data.getInt16(this.offset + this.relativeOffset) / 16384;\n this.relativeOffset += 2;\n return v;\n};\n\nParser.prototype.parseULong = function() {\n const v = getULong(this.data, this.offset + this.relativeOffset);\n this.relativeOffset += 4;\n return v;\n};\n\nParser.prototype.parseOffset32 = Parser.prototype.parseULong;\n\nParser.prototype.parseFixed = function() {\n const v = getFixed(this.data, this.offset + this.relativeOffset);\n this.relativeOffset += 4;\n return v;\n};\n\nParser.prototype.parseString = function(length) {\n const dataView = this.data;\n const offset = this.offset + this.relativeOffset;\n let string = '';\n this.relativeOffset += length;\n for (let i = 0; i < length; i++) {\n string += String.fromCharCode(dataView.getUint8(offset + i));\n }\n\n return string;\n};\n\nParser.prototype.parseTag = function() {\n return this.parseString(4);\n};\n\n// LONGDATETIME is a 64-bit integer.\n// JavaScript and unix timestamps traditionally use 32 bits, so we\n// only take the last 32 bits.\n// + Since until 2038 those bits will be filled by zeros we can ignore them.\nParser.prototype.parseLongDateTime = function() {\n let v = getULong(this.data, this.offset + this.relativeOffset + 4);\n // Subtract seconds between 01/01/1904 and 01/01/1970\n // to convert Apple Mac timestamp to Standard Unix timestamp\n v -= 2082844800;\n this.relativeOffset += 8;\n return v;\n};\n\nParser.prototype.parseVersion = function(minorBase) {\n const major = getUShort(this.data, this.offset + this.relativeOffset);\n\n // How to interpret the minor version is very vague in the spec. 0x5000 is 5, 0x1000 is 1\n // Default returns the correct number if minor = 0xN000 where N is 0-9\n // Set minorBase to 1 for tables that use minor = N where N is 0-9\n const minor = getUShort(this.data, this.offset + this.relativeOffset + 2);\n this.relativeOffset += 4;\n if (minorBase === undefined) minorBase = 0x1000;\n return major + minor / minorBase / 10;\n};\n\nParser.prototype.skip = function(type, amount) {\n if (amount === undefined) {\n amount = 1;\n }\n\n this.relativeOffset += typeOffsets[type] * amount;\n};\n\n///// Parsing lists and records ///////////////////////////////\n\n// Parse a list of 32 bit unsigned integers.\nParser.prototype.parseULongList = function(count) {\n if (count === undefined) { count = this.parseULong(); }\n const offsets = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n offsets[i] = dataView.getUint32(offset);\n offset += 4;\n }\n\n this.relativeOffset += count * 4;\n return offsets;\n};\n\n// Parse a list of 16 bit unsigned integers. The length of the list can be read on the stream\n// or provided as an argument.\nParser.prototype.parseOffset16List =\nParser.prototype.parseUShortList = function(count) {\n if (count === undefined) { count = this.parseUShort(); }\n const offsets = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n offsets[i] = dataView.getUint16(offset);\n offset += 2;\n }\n\n this.relativeOffset += count * 2;\n return offsets;\n};\n\n// Parses a list of 16 bit signed integers.\nParser.prototype.parseShortList = function(count) {\n const list = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n list[i] = dataView.getInt16(offset);\n offset += 2;\n }\n\n this.relativeOffset += count * 2;\n return list;\n};\n\n// Parses a list of bytes.\nParser.prototype.parseByteList = function(count) {\n const list = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n list[i] = dataView.getUint8(offset++);\n }\n\n this.relativeOffset += count;\n return list;\n};\n\n/**\n * Parse a list of items.\n * Record count is optional, if omitted it is read from the stream.\n * itemCallback is one of the Parser methods.\n */\nParser.prototype.parseList = function(count, itemCallback) {\n if (!itemCallback) {\n itemCallback = count;\n count = this.parseUShort();\n }\n const list = new Array(count);\n for (let i = 0; i < count; i++) {\n list[i] = itemCallback.call(this);\n }\n return list;\n};\n\nParser.prototype.parseList32 = function(count, itemCallback) {\n if (!itemCallback) {\n itemCallback = count;\n count = this.parseULong();\n }\n const list = new Array(count);\n for (let i = 0; i < count; i++) {\n list[i] = itemCallback.call(this);\n }\n return list;\n};\n\n/**\n * Parse a list of records.\n * Record count is optional, if omitted it is read from the stream.\n * Example of recordDescription: { sequenceIndex: Parser.uShort, lookupListIndex: Parser.uShort }\n */\nParser.prototype.parseRecordList = function(count, recordDescription) {\n // If the count argument is absent, read it in the stream.\n if (!recordDescription) {\n recordDescription = count;\n count = this.parseUShort();\n }\n const records = new Array(count);\n const fields = Object.keys(recordDescription);\n for (let i = 0; i < count; i++) {\n const rec = {};\n for (let j = 0; j < fields.length; j++) {\n const fieldName = fields[j];\n const fieldType = recordDescription[fieldName];\n rec[fieldName] = fieldType.call(this);\n }\n records[i] = rec;\n }\n return records;\n};\n\nParser.prototype.parseRecordList32 = function(count, recordDescription) {\n // If the count argument is absent, read it in the stream.\n if (!recordDescription) {\n recordDescription = count;\n count = this.parseULong();\n }\n const records = new Array(count);\n const fields = Object.keys(recordDescription);\n for (let i = 0; i < count; i++) {\n const rec = {};\n for (let j = 0; j < fields.length; j++) {\n const fieldName = fields[j];\n const fieldType = recordDescription[fieldName];\n rec[fieldName] = fieldType.call(this);\n }\n records[i] = rec;\n }\n return records;\n};\n\n// Parse a data structure into an object\n// Example of description: { sequenceIndex: Parser.uShort, lookupListIndex: Parser.uShort }\nParser.prototype.parseStruct = function(description) {\n if (typeof description === 'function') {\n return description.call(this);\n } else {\n const fields = Object.keys(description);\n const struct = {};\n for (let j = 0; j < fields.length; j++) {\n const fieldName = fields[j];\n const fieldType = description[fieldName];\n struct[fieldName] = fieldType.call(this);\n }\n return struct;\n }\n};\n\n/**\n * Parse a GPOS valueRecord\n * https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#value-record\n * valueFormat is optional, if omitted it is read from the stream.\n */\nParser.prototype.parseValueRecord = function(valueFormat) {\n if (valueFormat === undefined) {\n valueFormat = this.parseUShort();\n }\n if (valueFormat === 0) {\n // valueFormat2 in kerning pairs is most often 0\n // in this case return undefined instead of an empty object, to save space\n return;\n }\n const valueRecord = {};\n\n if (valueFormat & 0x0001) { valueRecord.xPlacement = this.parseShort(); }\n if (valueFormat & 0x0002) { valueRecord.yPlacement = this.parseShort(); }\n if (valueFormat & 0x0004) { valueRecord.xAdvance = this.parseShort(); }\n if (valueFormat & 0x0008) { valueRecord.yAdvance = this.parseShort(); }\n\n // Device table (non-variable font) / VariationIndex table (variable font) not supported\n // https://docs.microsoft.com/fr-fr/typography/opentype/spec/chapter2#devVarIdxTbls\n if (valueFormat & 0x0010) { valueRecord.xPlaDevice = undefined; this.parseShort(); }\n if (valueFormat & 0x0020) { valueRecord.yPlaDevice = undefined; this.parseShort(); }\n if (valueFormat & 0x0040) { valueRecord.xAdvDevice = undefined; this.parseShort(); }\n if (valueFormat & 0x0080) { valueRecord.yAdvDevice = undefined; this.parseShort(); }\n\n return valueRecord;\n};\n\n/**\n * Parse a list of GPOS valueRecords\n * https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#value-record\n * valueFormat and valueCount are read from the stream.\n */\nParser.prototype.parseValueRecordList = function() {\n const valueFormat = this.parseUShort();\n const valueCount = this.parseUShort();\n const values = new Array(valueCount);\n for (let i = 0; i < valueCount; i++) {\n values[i] = this.parseValueRecord(valueFormat);\n }\n return values;\n};\n\nParser.prototype.parsePointer = function(description) {\n const structOffset = this.parseOffset16();\n if (structOffset > 0) {\n // NULL offset => return undefined\n return new Parser(this.data, this.offset + structOffset).parseStruct(description);\n }\n return undefined;\n};\n\nParser.prototype.parsePointer32 = function(description) {\n const structOffset = this.parseOffset32();\n if (structOffset > 0) {\n // NULL offset => return undefined\n return new Parser(this.data, this.offset + structOffset).parseStruct(description);\n }\n return undefined;\n};\n\n/**\n * Parse a list of offsets to lists of 16-bit integers,\n * or a list of offsets to lists of offsets to any kind of items.\n * If itemCallback is not provided, a list of list of UShort is assumed.\n * If provided, itemCallback is called on each item and must parse the item.\n * See examples in tables/gsub.js\n */\nParser.prototype.parseListOfLists = function(itemCallback) {\n const offsets = this.parseOffset16List();\n const count = offsets.length;\n const relativeOffset = this.relativeOffset;\n const list = new Array(count);\n for (let i = 0; i < count; i++) {\n const start = offsets[i];\n if (start === 0) {\n // NULL offset\n // Add i as owned property to list. Convenient with assert.\n list[i] = undefined;\n continue;\n }\n this.relativeOffset = start;\n if (itemCallback) {\n const subOffsets = this.parseOffset16List();\n const subList = new Array(subOffsets.length);\n for (let j = 0; j < subOffsets.length; j++) {\n this.relativeOffset = start + subOffsets[j];\n subList[j] = itemCallback.call(this);\n }\n list[i] = subList;\n } else {\n list[i] = this.parseUShortList();\n }\n }\n this.relativeOffset = relativeOffset;\n return list;\n};\n\n///// Complex tables parsing //////////////////////////////////\n\n// Parse a coverage table in a GSUB, GPOS or GDEF table.\n// https://www.microsoft.com/typography/OTSPEC/chapter2.htm\n// parser.offset must point to the start of the table containing the coverage.\nParser.prototype.parseCoverage = function() {\n const startOffset = this.offset + this.relativeOffset;\n const format = this.parseUShort();\n const count = this.parseUShort();\n if (format === 1) {\n return {\n format: 1,\n glyphs: this.parseUShortList(count)\n };\n } else if (format === 2) {\n const ranges = new Array(count);\n for (let i = 0; i < count; i++) {\n ranges[i] = {\n start: this.parseUShort(),\n end: this.parseUShort(),\n index: this.parseUShort()\n };\n }\n return {\n format: 2,\n ranges: ranges\n };\n }\n throw new Error('0x' + startOffset.toString(16) + ': Coverage format must be 1 or 2.');\n};\n\n// Parse a Class Definition Table in a GSUB, GPOS or GDEF table.\n// https://www.microsoft.com/typography/OTSPEC/chapter2.htm\nParser.prototype.parseClassDef = function() {\n const startOffset = this.offset + this.relativeOffset;\n const format = this.parseUShort();\n if (format === 1) {\n return {\n format: 1,\n startGlyph: this.parseUShort(),\n classes: this.parseUShortList()\n };\n } else if (format === 2) {\n return {\n format: 2,\n ranges: this.parseRecordList({\n start: Parser.uShort,\n end: Parser.uShort,\n classId: Parser.uShort\n })\n };\n }\n throw new Error('0x' + startOffset.toString(16) + ': ClassDef format must be 1 or 2.');\n};\n\n///// Static methods ///////////////////////////////////\n// These convenience methods can be used as callbacks and should be called with \"this\" context set to a Parser instance.\n\nParser.list = function(count, itemCallback) {\n return function() {\n return this.parseList(count, itemCallback);\n };\n};\n\nParser.list32 = function(count, itemCallback) {\n return function() {\n return this.parseList32(count, itemCallback);\n };\n};\n\nParser.recordList = function(count, recordDescription) {\n return function() {\n return this.parseRecordList(count, recordDescription);\n };\n};\n\nParser.recordList32 = function(count, recordDescription) {\n return function() {\n return this.parseRecordList32(count, recordDescription);\n };\n};\n\nParser.pointer = function(description) {\n return function() {\n return this.parsePointer(description);\n };\n};\n\nParser.pointer32 = function(description) {\n return function() {\n return this.parsePointer32(description);\n };\n};\n\nParser.tag = Parser.prototype.parseTag;\nParser.byte = Parser.prototype.parseByte;\nParser.uShort = Parser.offset16 = Parser.prototype.parseUShort;\nParser.uShortList = Parser.prototype.parseUShortList;\nParser.uLong = Parser.offset32 = Parser.prototype.parseULong;\nParser.uLongList = Parser.prototype.parseULongList;\nParser.struct = Parser.prototype.parseStruct;\nParser.coverage = Parser.prototype.parseCoverage;\nParser.classDef = Parser.prototype.parseClassDef;\n\n///// Script, Feature, Lookup lists ///////////////////////////////////////////////\n// https://www.microsoft.com/typography/OTSPEC/chapter2.htm\n\nconst langSysTable = {\n reserved: Parser.uShort,\n reqFeatureIndex: Parser.uShort,\n featureIndexes: Parser.uShortList\n};\n\nParser.prototype.parseScriptList = function() {\n return this.parsePointer(Parser.recordList({\n tag: Parser.tag,\n script: Parser.pointer({\n defaultLangSys: Parser.pointer(langSysTable),\n langSysRecords: Parser.recordList({\n tag: Parser.tag,\n langSys: Parser.pointer(langSysTable)\n })\n })\n })) || [];\n};\n\nParser.prototype.parseFeatureList = function() {\n return this.parsePointer(Parser.recordList({\n tag: Parser.tag,\n feature: Parser.pointer({\n featureParams: Parser.offset16,\n lookupListIndexes: Parser.uShortList\n })\n })) || [];\n};\n\nParser.prototype.parseLookupList = function(lookupTableParsers) {\n return this.parsePointer(Parser.list(Parser.pointer(function() {\n const lookupType = this.parseUShort();\n check.argument(1 <= lookupType && lookupType <= 9, 'GPOS/GSUB lookup type ' + lookupType + ' unknown.');\n const lookupFlag = this.parseUShort();\n const useMarkFilteringSet = lookupFlag & 0x10;\n return {\n lookupType: lookupType,\n lookupFlag: lookupFlag,\n subtables: this.parseList(Parser.pointer(lookupTableParsers[lookupType])),\n markFilteringSet: useMarkFilteringSet ? this.parseUShort() : undefined\n };\n }))) || [];\n};\n\nParser.prototype.parseFeatureVariationsList = function() {\n return this.parsePointer32(function() {\n const majorVersion = this.parseUShort();\n const minorVersion = this.parseUShort();\n check.argument(majorVersion === 1 && minorVersion < 1, 'GPOS/GSUB feature variations table unknown.');\n const featureVariations = this.parseRecordList32({\n conditionSetOffset: Parser.offset32,\n featureTableSubstitutionOffset: Parser.offset32\n });\n return featureVariations;\n }) || [];\n};\n\nexport default {\n getByte,\n getCard8: getByte,\n getUShort,\n getCard16: getUShort,\n getShort,\n getULong,\n getFixed,\n getTag,\n getOffset,\n getBytes,\n bytesToString,\n Parser,\n};\n\nexport { Parser };\n","// The `cmap` table stores the mappings from characters to glyphs.\n// https://www.microsoft.com/typography/OTSPEC/cmap.htm\n\nimport check from '../check';\nimport parse from '../parse';\nimport table from '../table';\n\nfunction parseCmapTableFormat12(cmap, p) {\n //Skip reserved.\n p.parseUShort();\n\n // Length in bytes of the sub-tables.\n cmap.length = p.parseULong();\n cmap.language = p.parseULong();\n\n let groupCount;\n cmap.groupCount = groupCount = p.parseULong();\n cmap.glyphIndexMap = {};\n\n for (let i = 0; i < groupCount; i += 1) {\n const startCharCode = p.parseULong();\n const endCharCode = p.parseULong();\n let startGlyphId = p.parseULong();\n\n for (let c = startCharCode; c <= endCharCode; c += 1) {\n cmap.glyphIndexMap[c] = startGlyphId;\n startGlyphId++;\n }\n }\n}\n\nfunction parseCmapTableFormat4(cmap, p, data, start, offset) {\n // Length in bytes of the sub-tables.\n cmap.length = p.parseUShort();\n cmap.language = p.parseUShort();\n\n // segCount is stored x 2.\n let segCount;\n cmap.segCount = segCount = p.parseUShort() >> 1;\n\n // Skip searchRange, entrySelector, rangeShift.\n p.skip('uShort', 3);\n\n // The \"unrolled\" mapping from character codes to glyph indices.\n cmap.glyphIndexMap = {};\n const endCountParser = new parse.Parser(data, start + offset + 14);\n const startCountParser = new parse.Parser(data, start + offset + 16 + segCount * 2);\n const idDeltaParser = new parse.Parser(data, start + offset + 16 + segCount * 4);\n const idRangeOffsetParser = new parse.Parser(data, start + offset + 16 + segCount * 6);\n let glyphIndexOffset = start + offset + 16 + segCount * 8;\n for (let i = 0; i < segCount - 1; i += 1) {\n let glyphIndex;\n const endCount = endCountParser.parseUShort();\n const startCount = startCountParser.parseUShort();\n const idDelta = idDeltaParser.parseShort();\n const idRangeOffset = idRangeOffsetParser.parseUShort();\n for (let c = startCount; c <= endCount; c += 1) {\n if (idRangeOffset !== 0) {\n // The idRangeOffset is relative to the current position in the idRangeOffset array.\n // Take the current offset in the idRangeOffset array.\n glyphIndexOffset = (idRangeOffsetParser.offset + idRangeOffsetParser.relativeOffset - 2);\n\n // Add the value of the idRangeOffset, which will move us into the glyphIndex array.\n glyphIndexOffset += idRangeOffset;\n\n // Then add the character index of the current segment, multiplied by 2 for USHORTs.\n glyphIndexOffset += (c - startCount) * 2;\n glyphIndex = parse.getUShort(data, glyphIndexOffset);\n if (glyphIndex !== 0) {\n glyphIndex = (glyphIndex + idDelta) & 0xFFFF;\n }\n } else {\n glyphIndex = (c + idDelta) & 0xFFFF;\n }\n\n cmap.glyphIndexMap[c] = glyphIndex;\n }\n }\n}\n\n// Parse the `cmap` table. This table stores the mappings from characters to glyphs.\n// There are many available formats, but we only support the Windows format 4 and 12.\n// This function returns a `CmapEncoding` object or null if no supported format could be found.\nfunction parseCmapTable(data, start) {\n const cmap = {};\n cmap.version = parse.getUShort(data, start);\n check.argument(cmap.version === 0, 'cmap table version should be 0.');\n\n // The cmap table can contain many sub-tables, each with their own format.\n // We're only interested in a \"platform 0\" (Unicode format) and \"platform 3\" (Windows format) table.\n cmap.numTables = parse.getUShort(data, start + 2);\n let offset = -1;\n for (let i = cmap.numTables - 1; i >= 0; i -= 1) {\n const platformId = parse.getUShort(data, start + 4 + (i * 8));\n const encodingId = parse.getUShort(data, start + 4 + (i * 8) + 2);\n if ((platformId === 3 && (encodingId === 0 || encodingId === 1 || encodingId === 10)) ||\n (platformId === 0 && (encodingId === 0 || encodingId === 1 || encodingId === 2 || encodingId === 3 || encodingId === 4))) {\n offset = parse.getULong(data, start + 4 + (i * 8) + 4);\n break;\n }\n }\n\n if (offset === -1) {\n // There is no cmap table in the font that we support.\n throw new Error('No valid cmap sub-tables found.');\n }\n\n const p = new parse.Parser(data, start + offset);\n cmap.format = p.parseUShort();\n\n if (cmap.format === 12) {\n parseCmapTableFormat12(cmap, p);\n } else if (cmap.format === 4) {\n parseCmapTableFormat4(cmap, p, data, start, offset);\n } else {\n throw new Error('Only format 4 and 12 cmap tables are supported (found format ' + cmap.format + ').');\n }\n\n return cmap;\n}\n\nfunction addSegment(t, code, glyphIndex) {\n t.segments.push({\n end: code,\n start: code,\n delta: -(code - glyphIndex),\n offset: 0,\n glyphIndex: glyphIndex\n });\n}\n\nfunction addTerminatorSegment(t) {\n t.segments.push({\n end: 0xFFFF,\n start: 0xFFFF,\n delta: 1,\n offset: 0\n });\n}\n\n// Make cmap table, format 4 by default, 12 if needed only\nfunction makeCmapTable(glyphs) {\n // Plan 0 is the base Unicode Plan but emojis, for example are on another plan, and needs cmap 12 format (with 32bit)\n let isPlan0Only = true;\n let i;\n\n // Check if we need to add cmap format 12 or if format 4 only is fine\n for (i = glyphs.length - 1; i > 0; i -= 1) {\n const g = glyphs.get(i);\n if (g.unicode > 65535) {\n console.log('Adding CMAP format 12 (needed!)');\n isPlan0Only = false;\n break;\n }\n }\n\n let cmapTable = [\n {name: 'version', type: 'USHORT', value: 0},\n {name: 'numTables', type: 'USHORT', value: isPlan0Only ? 1 : 2},\n\n // CMAP 4 header\n {name: 'platformID', type: 'USHORT', value: 3},\n {name: 'encodingID', type: 'USHORT', value: 1},\n {name: 'offset', type: 'ULONG', value: isPlan0Only ? 12 : (12 + 8)}\n ];\n\n if (!isPlan0Only)\n cmapTable = cmapTable.concat([\n // CMAP 12 header\n {name: 'cmap12PlatformID', type: 'USHORT', value: 3}, // We encode only for PlatformID = 3 (Windows) because it is supported everywhere\n {name: 'cmap12EncodingID', type: 'USHORT', value: 10},\n {name: 'cmap12Offset', type: 'ULONG', value: 0}\n ]);\n\n cmapTable = cmapTable.concat([\n // CMAP 4 Subtable\n {name: 'format', type: 'USHORT', value: 4},\n {name: 'cmap4Length', type: 'USHORT', value: 0},\n {name: 'language', type: 'USHORT', value: 0},\n {name: 'segCountX2', type: 'USHORT', value: 0},\n {name: 'searchRange', type: 'USHORT', value: 0},\n {name: 'entrySelector', type: 'USHORT', value: 0},\n {name: 'rangeShift', type: 'USHORT', value: 0}\n ]);\n\n const t = new table.Table('cmap', cmapTable);\n\n t.segments = [];\n for (i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs.get(i);\n for (let j = 0; j < glyph.unicodes.length; j += 1) {\n addSegment(t, glyph.unicodes[j], i);\n }\n\n t.segments = t.segments.sort(function (a, b) {\n return a.start - b.start;\n });\n }\n\n addTerminatorSegment(t);\n\n const segCount = t.segments.length;\n let segCountToRemove = 0;\n\n // CMAP 4\n // Set up parallel segment arrays.\n let endCounts = [];\n let startCounts = [];\n let idDeltas = [];\n let idRangeOffsets = [];\n let glyphIds = [];\n\n // CMAP 12\n let cmap12Groups = [];\n\n // Reminder this loop is not following the specification at 100%\n // The specification -> find suites of characters and make a group\n // Here we're doing one group for each letter\n // Doing as the spec can save 8 times (or more) space\n for (i = 0; i < segCount; i += 1) {\n const segment = t.segments[i];\n\n // CMAP 4\n if (segment.end <= 65535 && segment.start <= 65535) {\n endCounts = endCounts.concat({name: 'end_' + i, type: 'USHORT', value: segment.end});\n startCounts = startCounts.concat({name: 'start_' + i, type: 'USHORT', value: segment.start});\n idDeltas = idDeltas.concat({name: 'idDelta_' + i, type: 'SHORT', value: segment.delta});\n idRangeOffsets = idRangeOffsets.concat({name: 'idRangeOffset_' + i, type: 'USHORT', value: segment.offset});\n if (segment.glyphId !== undefined) {\n glyphIds = glyphIds.concat({name: 'glyph_' + i, type: 'USHORT', value: segment.glyphId});\n }\n } else {\n // Skip Unicode > 65535 (16bit unsigned max) for CMAP 4, will be added in CMAP 12\n segCountToRemove += 1;\n }\n\n // CMAP 12\n // Skip Terminator Segment\n if (!isPlan0Only && segment.glyphIndex !== undefined) {\n cmap12Groups = cmap12Groups.concat({name: 'cmap12Start_' + i, type: 'ULONG', value: segment.start});\n cmap12Groups = cmap12Groups.concat({name: 'cmap12End_' + i, type: 'ULONG', value: segment.end});\n cmap12Groups = cmap12Groups.concat({name: 'cmap12Glyph_' + i, type: 'ULONG', value: segment.glyphIndex});\n }\n }\n\n // CMAP 4 Subtable\n t.segCountX2 = (segCount - segCountToRemove) * 2;\n t.searchRange = Math.pow(2, Math.floor(Math.log((segCount - segCountToRemove)) / Math.log(2))) * 2;\n t.entrySelector = Math.log(t.searchRange / 2) / Math.log(2);\n t.rangeShift = t.segCountX2 - t.searchRange;\n\n t.fields = t.fields.concat(endCounts);\n t.fields.push({name: 'reservedPad', type: 'USHORT', value: 0});\n t.fields = t.fields.concat(startCounts);\n t.fields = t.fields.concat(idDeltas);\n t.fields = t.fields.concat(idRangeOffsets);\n t.fields = t.fields.concat(glyphIds);\n\n t.cmap4Length = 14 + // Subtable header\n endCounts.length * 2 +\n 2 + // reservedPad\n startCounts.length * 2 +\n idDeltas.length * 2 +\n idRangeOffsets.length * 2 +\n glyphIds.length * 2;\n\n if (!isPlan0Only) {\n // CMAP 12 Subtable\n const cmap12Length = 16 + // Subtable header\n cmap12Groups.length * 4;\n\n t.cmap12Offset = 12 + (2 * 2) + 4 + t.cmap4Length;\n t.fields = t.fields.concat([\n {name: 'cmap12Format', type: 'USHORT', value: 12},\n {name: 'cmap12Reserved', type: 'USHORT', value: 0},\n {name: 'cmap12Length', type: 'ULONG', value: cmap12Length},\n {name: 'cmap12Language', type: 'ULONG', value: 0},\n {name: 'cmap12nGroups', type: 'ULONG', value: cmap12Groups.length / 3}\n ]);\n\n t.fields = t.fields.concat(cmap12Groups);\n }\n\n return t;\n}\n\nexport default { parse: parseCmapTable, make: makeCmapTable };\n","// Glyph encoding\n\nconst cffStandardStrings = [\n '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright',\n 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two',\n 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater',\n 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',\n 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore',\n 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',\n 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling',\n 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft',\n 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph',\n 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand',\n 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring',\n 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE',\n 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu',\n 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn',\n 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright',\n 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex',\n 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex',\n 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute',\n 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute',\n 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute',\n 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave',\n 'yacute', 'ydieresis', 'zcaron', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior',\n 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', '266 ff', 'onedotenleader',\n 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle',\n 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior', 'threequartersemdash', 'periodsuperior',\n 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior',\n 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'ffi', 'ffl',\n 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall',\n 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall',\n 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall',\n 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall',\n 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall',\n 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall',\n 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds',\n 'zerosuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior',\n 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior',\n 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior',\n 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall',\n 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall',\n 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall',\n 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall',\n 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall', '001.000',\n '001.001', '001.002', '001.003', 'Black', 'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold'];\n\nconst cffStandardEncoding = [\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright',\n 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two',\n 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater',\n 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',\n 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore',\n 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',\n 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', '', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle',\n 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger',\n 'daggerdbl', 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright',\n 'guillemotright', 'ellipsis', 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', 'tilde',\n 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', '', 'hungarumlaut', 'ogonek', 'caron',\n 'emdash', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', '',\n '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', '', '', '', 'dotlessi', '', '',\n 'lslash', 'oslash', 'oe', 'germandbls'];\n\nconst cffExpertEncoding = [\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', 'dollarsuperior',\n 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader',\n 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle',\n 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon',\n 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', '', 'asuperior',\n 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior',\n 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', '', 'ff', 'fi', 'fl', 'ffi', 'ffl',\n 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall',\n 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall',\n 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall',\n 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall',\n 'Brevesmall', 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', 'figuredash', 'hypheninferior',\n '', '', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters',\n 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '',\n '', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',\n 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior',\n 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior',\n 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall',\n 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall',\n 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',\n 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall',\n 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',\n 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];\n\nconst standardNames = [\n '.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',\n 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash',\n 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less',\n 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',\n 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',\n 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',\n 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde',\n 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave',\n 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis',\n 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis',\n 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section',\n 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal',\n 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation',\n 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown',\n 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright',\n 'ellipsis', 'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft',\n 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction',\n 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase',\n 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute',\n 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex',\n 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut',\n 'ogonek', 'caron', 'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar', 'Eth', 'eth',\n 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply', 'onesuperior', 'twosuperior', 'threesuperior',\n 'onehalf', 'onequarter', 'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla', 'scedilla',\n 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat'];\n\n/**\n * This is the encoding used for fonts created from scratch.\n * It loops through all glyphs and finds the appropriate unicode value.\n * Since it's linear time, other encodings will be faster.\n * @exports opentype.DefaultEncoding\n * @class\n * @constructor\n * @param {opentype.Font}\n */\nfunction DefaultEncoding(font) {\n this.font = font;\n}\n\nDefaultEncoding.prototype.charToGlyphIndex = function(c) {\n const code = c.codePointAt(0);\n const glyphs = this.font.glyphs;\n if (glyphs) {\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs.get(i);\n for (let j = 0; j < glyph.unicodes.length; j += 1) {\n if (glyph.unicodes[j] === code) {\n return i;\n }\n }\n }\n }\n return null;\n};\n\n/**\n * @exports opentype.CmapEncoding\n * @class\n * @constructor\n * @param {Object} cmap - a object with the cmap encoded data\n */\nfunction CmapEncoding(cmap) {\n this.cmap = cmap;\n}\n\n/**\n * @param {string} c - the character\n * @return {number} The glyph index.\n */\nCmapEncoding.prototype.charToGlyphIndex = function(c) {\n return this.cmap.glyphIndexMap[c.codePointAt(0)] || 0;\n};\n\n/**\n * @exports opentype.CffEncoding\n * @class\n * @constructor\n * @param {string} encoding - The encoding\n * @param {Array} charset - The character set.\n */\nfunction CffEncoding(encoding, charset) {\n this.encoding = encoding;\n this.charset = charset;\n}\n\n/**\n * @param {string} s - The character\n * @return {number} The index.\n */\nCffEncoding.prototype.charToGlyphIndex = function(s) {\n const code = s.codePointAt(0);\n const charName = this.encoding[code];\n return this.charset.indexOf(charName);\n};\n\n/**\n * @exports opentype.GlyphNames\n * @class\n * @constructor\n * @param {Object} post\n */\nfunction GlyphNames(post) {\n switch (post.version) {\n case 1:\n this.names = standardNames.slice();\n break;\n case 2:\n this.names = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n if (post.glyphNameIndex[i] < standardNames.length) {\n this.names[i] = standardNames[post.glyphNameIndex[i]];\n } else {\n this.names[i] = post.names[post.glyphNameIndex[i] - standardNames.length];\n }\n }\n\n break;\n case 2.5:\n this.names = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n this.names[i] = standardNames[i + post.glyphNameIndex[i]];\n }\n\n break;\n case 3:\n this.names = [];\n break;\n default:\n this.names = [];\n break;\n }\n}\n\n/**\n * Gets the index of a glyph by name.\n * @param {string} name - The glyph name\n * @return {number} The index\n */\nGlyphNames.prototype.nameToGlyphIndex = function(name) {\n return this.names.indexOf(name);\n};\n\n/**\n * @param {number} gid\n * @return {string}\n */\nGlyphNames.prototype.glyphIndexToName = function(gid) {\n return this.names[gid];\n};\n\nfunction addGlyphNamesAll(font) {\n let glyph;\n const glyphIndexMap = font.tables.cmap.glyphIndexMap;\n const charCodes = Object.keys(glyphIndexMap);\n\n for (let i = 0; i < charCodes.length; i += 1) {\n const c = charCodes[i];\n const glyphIndex = glyphIndexMap[c];\n glyph = font.glyphs.get(glyphIndex);\n glyph.addUnicode(parseInt(c));\n }\n\n for (let i = 0; i < font.glyphs.length; i += 1) {\n glyph = font.glyphs.get(i);\n if (font.cffEncoding) {\n if (font.isCIDFont) {\n glyph.name = 'gid' + i;\n } else {\n glyph.name = font.cffEncoding.charset[i];\n }\n } else if (font.glyphNames.names) {\n glyph.name = font.glyphNames.glyphIndexToName(i);\n }\n }\n}\n\nfunction addGlyphNamesToUnicodeMap(font) {\n font._IndexToUnicodeMap = {};\n\n const glyphIndexMap = font.tables.cmap.glyphIndexMap;\n const charCodes = Object.keys(glyphIndexMap);\n\n for (let i = 0; i < charCodes.length; i += 1) {\n const c = charCodes[i];\n let glyphIndex = glyphIndexMap[c];\n if (font._IndexToUnicodeMap[glyphIndex] === undefined) {\n font._IndexToUnicodeMap[glyphIndex] = {\n unicodes: [parseInt(c)]\n };\n } else {\n font._IndexToUnicodeMap[glyphIndex].unicodes.push(parseInt(c));\n }\n }\n}\n\n/**\n * @alias opentype.addGlyphNames\n * @param {opentype.Font}\n * @param {Object}\n */\nfunction addGlyphNames(font, opt) {\n if (opt.lowMemory) {\n addGlyphNamesToUnicodeMap(font);\n } else {\n addGlyphNamesAll(font);\n }\n}\n\nexport {\n cffStandardStrings,\n cffStandardEncoding,\n cffExpertEncoding,\n standardNames,\n DefaultEncoding,\n CmapEncoding,\n CffEncoding,\n GlyphNames,\n addGlyphNames\n};\n","// Drawing utility functions.\n\n// Draw a line on the given context from point `x1,y1` to point `x2,y2`.\nfunction line(ctx, x1, y1, x2, y2) {\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n}\n\nexport default { line };\n","// The Glyph object\n\nimport check from './check';\nimport draw from './draw';\nimport Path from './path';\n// import glyf from './tables/glyf' Can't be imported here, because it's a circular dependency\n\nfunction getPathDefinition(glyph, path) {\n let _path = path || new Path();\n return {\n configurable: true,\n\n get: function() {\n if (typeof _path === 'function') {\n _path = _path();\n }\n\n return _path;\n },\n\n set: function(p) {\n _path = p;\n }\n };\n}\n/**\n * @typedef GlyphOptions\n * @type Object\n * @property {string} [name] - The glyph name\n * @property {number} [unicode]\n * @property {Array} [unicodes]\n * @property {number} [xMin]\n * @property {number} [yMin]\n * @property {number} [xMax]\n * @property {number} [yMax]\n * @property {number} [advanceWidth]\n */\n\n// A Glyph is an individual mark that often corresponds to a character.\n// Some glyphs, such as ligatures, are a combination of many characters.\n// Glyphs are the basic building blocks of a font.\n//\n// The `Glyph` class contains utility methods for drawing the path and its points.\n/**\n * @exports opentype.Glyph\n * @class\n * @param {GlyphOptions}\n * @constructor\n */\nfunction Glyph(options) {\n // By putting all the code on a prototype function (which is only declared once)\n // we reduce the memory requirements for larger fonts by some 2%\n this.bindConstructorValues(options);\n}\n\n/**\n * @param {GlyphOptions}\n */\nGlyph.prototype.bindConstructorValues = function(options) {\n this.index = options.index || 0;\n\n // These three values cannot be deferred for memory optimization:\n this.name = options.name || null;\n this.unicode = options.unicode || undefined;\n this.unicodes = options.unicodes || options.unicode !== undefined ? [options.unicode] : [];\n\n // But by binding these values only when necessary, we reduce can\n // the memory requirements by almost 3% for larger fonts.\n if ('xMin' in options) {\n this.xMin = options.xMin;\n }\n\n if ('yMin' in options) {\n this.yMin = options.yMin;\n }\n\n if ('xMax' in options) {\n this.xMax = options.xMax;\n }\n\n if ('yMax' in options) {\n this.yMax = options.yMax;\n }\n\n if ('advanceWidth' in options) {\n this.advanceWidth = options.advanceWidth;\n }\n\n // The path for a glyph is the most memory intensive, and is bound as a value\n // with a getter/setter to ensure we actually do path parsing only once the\n // path is actually needed by anything.\n Object.defineProperty(this, 'path', getPathDefinition(this, options.path));\n};\n\n/**\n * @param {number}\n */\nGlyph.prototype.addUnicode = function(unicode) {\n if (this.unicodes.length === 0) {\n this.unicode = unicode;\n }\n\n this.unicodes.push(unicode);\n};\n\n/**\n * Calculate the minimum bounding box for this glyph.\n * @return {opentype.BoundingBox}\n */\nGlyph.prototype.getBoundingBox = function() {\n return this.path.getBoundingBox();\n};\n\n/**\n * Convert the glyph to a Path we can draw on a drawing context.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {Object=} options - xScale, yScale to stretch the glyph.\n * @param {opentype.Font} if hinting is to be used, the font\n * @return {opentype.Path}\n */\nGlyph.prototype.getPath = function(x, y, fontSize, options, font) {\n x = x !== undefined ? x : 0;\n y = y !== undefined ? y : 0;\n fontSize = fontSize !== undefined ? fontSize : 72;\n let commands;\n let hPoints;\n if (!options) options = { };\n let xScale = options.xScale;\n let yScale = options.yScale;\n\n if (options.hinting && font && font.hinting) {\n // in case of hinting, the hinting engine takes care\n // of scaling the points (not the path) before hinting.\n hPoints = this.path && font.hinting.exec(this, fontSize);\n // in case the hinting engine failed hPoints is undefined\n // and thus reverts to plain rending\n }\n\n if (hPoints) {\n // Call font.hinting.getCommands instead of `glyf.getPath(hPoints).commands` to avoid a circular dependency\n commands = font.hinting.getCommands(hPoints);\n x = Math.round(x);\n y = Math.round(y);\n // TODO in case of hinting xyScaling is not yet supported\n xScale = yScale = 1;\n } else {\n commands = this.path.commands;\n const scale = 1 / (this.path.unitsPerEm || 1000) * fontSize;\n if (xScale === undefined) xScale = scale;\n if (yScale === undefined) yScale = scale;\n }\n\n const p = new Path();\n for (let i = 0; i < commands.length; i += 1) {\n const cmd = commands[i];\n if (cmd.type === 'M') {\n p.moveTo(x + (cmd.x * xScale), y + (-cmd.y * yScale));\n } else if (cmd.type === 'L') {\n p.lineTo(x + (cmd.x * xScale), y + (-cmd.y * yScale));\n } else if (cmd.type === 'Q') {\n p.quadraticCurveTo(x + (cmd.x1 * xScale), y + (-cmd.y1 * yScale),\n x + (cmd.x * xScale), y + (-cmd.y * yScale));\n } else if (cmd.type === 'C') {\n p.curveTo(x + (cmd.x1 * xScale), y + (-cmd.y1 * yScale),\n x + (cmd.x2 * xScale), y + (-cmd.y2 * yScale),\n x + (cmd.x * xScale), y + (-cmd.y * yScale));\n } else if (cmd.type === 'Z') {\n p.closePath();\n }\n }\n\n return p;\n};\n\n/**\n * Split the glyph into contours.\n * This function is here for backwards compatibility, and to\n * provide raw access to the TrueType glyph outlines.\n * @return {Array}\n */\nGlyph.prototype.getContours = function() {\n if (this.points === undefined) {\n return [];\n }\n\n const contours = [];\n let currentContour = [];\n for (let i = 0; i < this.points.length; i += 1) {\n const pt = this.points[i];\n currentContour.push(pt);\n if (pt.lastPointOfContour) {\n contours.push(currentContour);\n currentContour = [];\n }\n }\n\n check.argument(currentContour.length === 0, 'There are still points left in the current contour.');\n return contours;\n};\n\n/**\n * Calculate the xMin/yMin/xMax/yMax/lsb/rsb for a Glyph.\n * @return {Object}\n */\nGlyph.prototype.getMetrics = function() {\n const commands = this.path.commands;\n const xCoords = [];\n const yCoords = [];\n for (let i = 0; i < commands.length; i += 1) {\n const cmd = commands[i];\n if (cmd.type !== 'Z') {\n xCoords.push(cmd.x);\n yCoords.push(cmd.y);\n }\n\n if (cmd.type === 'Q' || cmd.type === 'C') {\n xCoords.push(cmd.x1);\n yCoords.push(cmd.y1);\n }\n\n if (cmd.type === 'C') {\n xCoords.push(cmd.x2);\n yCoords.push(cmd.y2);\n }\n }\n\n const metrics = {\n xMin: Math.min.apply(null, xCoords),\n yMin: Math.min.apply(null, yCoords),\n xMax: Math.max.apply(null, xCoords),\n yMax: Math.max.apply(null, yCoords),\n leftSideBearing: this.leftSideBearing\n };\n\n if (!isFinite(metrics.xMin)) {\n metrics.xMin = 0;\n }\n\n if (!isFinite(metrics.xMax)) {\n metrics.xMax = this.advanceWidth;\n }\n\n if (!isFinite(metrics.yMin)) {\n metrics.yMin = 0;\n }\n\n if (!isFinite(metrics.yMax)) {\n metrics.yMax = 0;\n }\n\n metrics.rightSideBearing = this.advanceWidth - metrics.leftSideBearing - (metrics.xMax - metrics.xMin);\n return metrics;\n};\n\n/**\n * Draw the glyph on the given context.\n * @param {CanvasRenderingContext2D} ctx - A 2D drawing context, like Canvas.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {Object=} options - xScale, yScale to stretch the glyph.\n */\nGlyph.prototype.draw = function(ctx, x, y, fontSize, options) {\n this.getPath(x, y, fontSize, options).draw(ctx);\n};\n\n/**\n * Draw the points of the glyph.\n * On-curve points will be drawn in blue, off-curve points will be drawn in red.\n * @param {CanvasRenderingContext2D} ctx - A 2D drawing context, like Canvas.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n */\nGlyph.prototype.drawPoints = function(ctx, x, y, fontSize) {\n function drawCircles(l, x, y, scale) {\n ctx.beginPath();\n for (let j = 0; j < l.length; j += 1) {\n ctx.moveTo(x + (l[j].x * scale), y + (l[j].y * scale));\n ctx.arc(x + (l[j].x * scale), y + (l[j].y * scale), 2, 0, Math.PI * 2, false);\n }\n\n ctx.closePath();\n ctx.fill();\n }\n\n x = x !== undefined ? x : 0;\n y = y !== undefined ? y : 0;\n fontSize = fontSize !== undefined ? fontSize : 24;\n const scale = 1 / this.path.unitsPerEm * fontSize;\n\n const blueCircles = [];\n const redCircles = [];\n const path = this.path;\n for (let i = 0; i < path.commands.length; i += 1) {\n const cmd = path.commands[i];\n if (cmd.x !== undefined) {\n blueCircles.push({x: cmd.x, y: -cmd.y});\n }\n\n if (cmd.x1 !== undefined) {\n redCircles.push({x: cmd.x1, y: -cmd.y1});\n }\n\n if (cmd.x2 !== undefined) {\n redCircles.push({x: cmd.x2, y: -cmd.y2});\n }\n }\n\n ctx.fillStyle = 'blue';\n drawCircles(blueCircles, x, y, scale);\n ctx.fillStyle = 'red';\n drawCircles(redCircles, x, y, scale);\n};\n\n/**\n * Draw lines indicating important font measurements.\n * Black lines indicate the origin of the coordinate system (point 0,0).\n * Blue lines indicate the glyph bounding box.\n * Green line indicates the advance width of the glyph.\n * @param {CanvasRenderingContext2D} ctx - A 2D drawing context, like Canvas.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n */\nGlyph.prototype.drawMetrics = function(ctx, x, y, fontSize) {\n let scale;\n x = x !== undefined ? x : 0;\n y = y !== undefined ? y : 0;\n fontSize = fontSize !== undefined ? fontSize : 24;\n scale = 1 / this.path.unitsPerEm * fontSize;\n ctx.lineWidth = 1;\n\n // Draw the origin\n ctx.strokeStyle = 'black';\n draw.line(ctx, x, -10000, x, 10000);\n draw.line(ctx, -10000, y, 10000, y);\n\n // This code is here due to memory optimization: by not using\n // defaults in the constructor, we save a notable amount of memory.\n const xMin = this.xMin || 0;\n let yMin = this.yMin || 0;\n const xMax = this.xMax || 0;\n let yMax = this.yMax || 0;\n const advanceWidth = this.advanceWidth || 0;\n\n // Draw the glyph box\n ctx.strokeStyle = 'blue';\n draw.line(ctx, x + (xMin * scale), -10000, x + (xMin * scale), 10000);\n draw.line(ctx, x + (xMax * scale), -10000, x + (xMax * scale), 10000);\n draw.line(ctx, -10000, y + (-yMin * scale), 10000, y + (-yMin * scale));\n draw.line(ctx, -10000, y + (-yMax * scale), 10000, y + (-yMax * scale));\n\n // Draw the advance width\n ctx.strokeStyle = 'green';\n draw.line(ctx, x + (advanceWidth * scale), -10000, x + (advanceWidth * scale), 10000);\n};\n\nexport default Glyph;\n","// The GlyphSet object\n\nimport Glyph from './glyph';\n\n// Define a property on the glyph that depends on the path being loaded.\nfunction defineDependentProperty(glyph, externalName, internalName) {\n Object.defineProperty(glyph, externalName, {\n get: function() {\n // Request the path property to make sure the path is loaded.\n glyph.path; // jshint ignore:line\n return glyph[internalName];\n },\n set: function(newValue) {\n glyph[internalName] = newValue;\n },\n enumerable: true,\n configurable: true\n });\n}\n\n/**\n * A GlyphSet represents all glyphs available in the font, but modelled using\n * a deferred glyph loader, for retrieving glyphs only once they are absolutely\n * necessary, to keep the memory footprint down.\n * @exports opentype.GlyphSet\n * @class\n * @param {opentype.Font}\n * @param {Array}\n */\nfunction GlyphSet(font, glyphs) {\n this.font = font;\n this.glyphs = {};\n if (Array.isArray(glyphs)) {\n for (let i = 0; i < glyphs.length; i++) {\n const glyph = glyphs[i];\n glyph.path.unitsPerEm = font.unitsPerEm;\n this.glyphs[i] = glyph;\n }\n }\n\n this.length = (glyphs && glyphs.length) || 0;\n}\n\n/**\n * @param {number} index\n * @return {opentype.Glyph}\n */\nGlyphSet.prototype.get = function(index) {\n // this.glyphs[index] is 'undefined' when low memory mode is on. glyph is pushed on request only.\n if (this.glyphs[index] === undefined) {\n this.font._push(index);\n if (typeof this.glyphs[index] === 'function') {\n this.glyphs[index] = this.glyphs[index]();\n }\n\n let glyph = this.glyphs[index];\n let unicodeObj = this.font._IndexToUnicodeMap[index];\n\n if (unicodeObj) {\n for (let j = 0; j < unicodeObj.unicodes.length; j++)\n glyph.addUnicode(unicodeObj.unicodes[j]);\n }\n\n if (this.font.cffEncoding) {\n if (this.font.isCIDFont) {\n glyph.name = 'gid' + index;\n } else {\n glyph.name = this.font.cffEncoding.charset[index];\n }\n } else if (this.font.glyphNames.names) {\n glyph.name = this.font.glyphNames.glyphIndexToName(index);\n }\n\n this.glyphs[index].advanceWidth = this.font._hmtxTableData[index].advanceWidth;\n this.glyphs[index].leftSideBearing = this.font._hmtxTableData[index].leftSideBearing;\n } else {\n if (typeof this.glyphs[index] === 'function') {\n this.glyphs[index] = this.glyphs[index]();\n }\n }\n\n return this.glyphs[index];\n};\n\n/**\n * @param {number} index\n * @param {Object}\n */\nGlyphSet.prototype.push = function(index, loader) {\n this.glyphs[index] = loader;\n this.length++;\n};\n\n/**\n * @alias opentype.glyphLoader\n * @param {opentype.Font} font\n * @param {number} index\n * @return {opentype.Glyph}\n */\nfunction glyphLoader(font, index) {\n return new Glyph({index: index, font: font});\n}\n\n/**\n * Generate a stub glyph that can be filled with all metadata *except*\n * the \"points\" and \"path\" properties, which must be loaded only once\n * the glyph's path is actually requested for text shaping.\n * @alias opentype.ttfGlyphLoader\n * @param {opentype.Font} font\n * @param {number} index\n * @param {Function} parseGlyph\n * @param {Object} data\n * @param {number} position\n * @param {Function} buildPath\n * @return {opentype.Glyph}\n */\nfunction ttfGlyphLoader(font, index, parseGlyph, data, position, buildPath) {\n return function() {\n const glyph = new Glyph({index: index, font: font});\n\n glyph.path = function() {\n parseGlyph(glyph, data, position);\n const path = buildPath(font.glyphs, glyph);\n path.unitsPerEm = font.unitsPerEm;\n return path;\n };\n\n defineDependentProperty(glyph, 'xMin', '_xMin');\n defineDependentProperty(glyph, 'xMax', '_xMax');\n defineDependentProperty(glyph, 'yMin', '_yMin');\n defineDependentProperty(glyph, 'yMax', '_yMax');\n\n return glyph;\n };\n}\n/**\n * @alias opentype.cffGlyphLoader\n * @param {opentype.Font} font\n * @param {number} index\n * @param {Function} parseCFFCharstring\n * @param {string} charstring\n * @return {opentype.Glyph}\n */\nfunction cffGlyphLoader(font, index, parseCFFCharstring, charstring) {\n return function() {\n const glyph = new Glyph({index: index, font: font});\n\n glyph.path = function() {\n const path = parseCFFCharstring(font, glyph, charstring);\n path.unitsPerEm = font.unitsPerEm;\n return path;\n };\n\n return glyph;\n };\n}\n\nexport default { GlyphSet, glyphLoader, ttfGlyphLoader, cffGlyphLoader };\n","// The `CFF` table contains the glyph outlines in PostScript format.\n// https://www.microsoft.com/typography/OTSPEC/cff.htm\n// http://download.microsoft.com/download/8/0/1/801a191c-029d-4af3-9642-555f6fe514ee/cff.pdf\n// http://download.microsoft.com/download/8/0/1/801a191c-029d-4af3-9642-555f6fe514ee/type2.pdf\n\nimport { CffEncoding, cffStandardEncoding, cffExpertEncoding, cffStandardStrings } from '../encoding';\nimport glyphset from '../glyphset';\nimport parse from '../parse';\nimport Path from '../path';\nimport table from '../table';\n\n// Custom equals function that can also check lists.\nfunction equals(a, b) {\n if (a === b) {\n return true;\n } else if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i += 1) {\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n\n return true;\n } else {\n return false;\n }\n}\n\n// Subroutines are encoded using the negative half of the number space.\n// See type 2 chapter 4.7 \"Subroutine operators\".\nfunction calcCFFSubroutineBias(subrs) {\n let bias;\n if (subrs.length < 1240) {\n bias = 107;\n } else if (subrs.length < 33900) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n\n return bias;\n}\n\n// Parse a `CFF` INDEX array.\n// An index array consists of a list of offsets, then a list of objects at those offsets.\nfunction parseCFFIndex(data, start, conversionFn) {\n const offsets = [];\n const objects = [];\n const count = parse.getCard16(data, start);\n let objectOffset;\n let endOffset;\n if (count !== 0) {\n const offsetSize = parse.getByte(data, start + 2);\n objectOffset = start + ((count + 1) * offsetSize) + 2;\n let pos = start + 3;\n for (let i = 0; i < count + 1; i += 1) {\n offsets.push(parse.getOffset(data, pos, offsetSize));\n pos += offsetSize;\n }\n\n // The total size of the index array is 4 header bytes + the value of the last offset.\n endOffset = objectOffset + offsets[count];\n } else {\n endOffset = start + 2;\n }\n\n for (let i = 0; i < offsets.length - 1; i += 1) {\n let value = parse.getBytes(data, objectOffset + offsets[i], objectOffset + offsets[i + 1]);\n if (conversionFn) {\n value = conversionFn(value);\n }\n\n objects.push(value);\n }\n\n return {objects: objects, startOffset: start, endOffset: endOffset};\n}\n\nfunction parseCFFIndexLowMemory(data, start) {\n const offsets = [];\n const count = parse.getCard16(data, start);\n let objectOffset;\n let endOffset;\n if (count !== 0) {\n const offsetSize = parse.getByte(data, start + 2);\n objectOffset = start + ((count + 1) * offsetSize) + 2;\n let pos = start + 3;\n for (let i = 0; i < count + 1; i += 1) {\n offsets.push(parse.getOffset(data, pos, offsetSize));\n pos += offsetSize;\n }\n\n // The total size of the index array is 4 header bytes + the value of the last offset.\n endOffset = objectOffset + offsets[count];\n } else {\n endOffset = start + 2;\n }\n\n return {offsets: offsets, startOffset: start, endOffset: endOffset};\n}\nfunction getCffIndexObject(i, offsets, data, start, conversionFn) {\n const count = parse.getCard16(data, start);\n let objectOffset = 0;\n if (count !== 0) {\n const offsetSize = parse.getByte(data, start + 2);\n objectOffset = start + ((count + 1) * offsetSize) + 2;\n }\n\n let value = parse.getBytes(data, objectOffset + offsets[i], objectOffset + offsets[i + 1]);\n if (conversionFn) {\n value = conversionFn(value);\n }\n return value;\n}\n\n// Parse a `CFF` DICT real value.\nfunction parseFloatOperand(parser) {\n let s = '';\n const eof = 15;\n const lookup = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'E', 'E-', null, '-'];\n while (true) {\n const b = parser.parseByte();\n const n1 = b >> 4;\n const n2 = b & 15;\n\n if (n1 === eof) {\n break;\n }\n\n s += lookup[n1];\n\n if (n2 === eof) {\n break;\n }\n\n s += lookup[n2];\n }\n\n return parseFloat(s);\n}\n\n// Parse a `CFF` DICT operand.\nfunction parseOperand(parser, b0) {\n let b1;\n let b2;\n let b3;\n let b4;\n if (b0 === 28) {\n b1 = parser.parseByte();\n b2 = parser.parseByte();\n return b1 << 8 | b2;\n }\n\n if (b0 === 29) {\n b1 = parser.parseByte();\n b2 = parser.parseByte();\n b3 = parser.parseByte();\n b4 = parser.parseByte();\n return b1 << 24 | b2 << 16 | b3 << 8 | b4;\n }\n\n if (b0 === 30) {\n return parseFloatOperand(parser);\n }\n\n if (b0 >= 32 && b0 <= 246) {\n return b0 - 139;\n }\n\n if (b0 >= 247 && b0 <= 250) {\n b1 = parser.parseByte();\n return (b0 - 247) * 256 + b1 + 108;\n }\n\n if (b0 >= 251 && b0 <= 254) {\n b1 = parser.parseByte();\n return -(b0 - 251) * 256 - b1 - 108;\n }\n\n throw new Error('Invalid b0 ' + b0);\n}\n\n// Convert the entries returned by `parseDict` to a proper dictionary.\n// If a value is a list of one, it is unpacked.\nfunction entriesToObject(entries) {\n const o = {};\n for (let i = 0; i < entries.length; i += 1) {\n const key = entries[i][0];\n const values = entries[i][1];\n let value;\n if (values.length === 1) {\n value = values[0];\n } else {\n value = values;\n }\n\n if (o.hasOwnProperty(key) && !isNaN(o[key])) {\n throw new Error('Object ' + o + ' already has key ' + key);\n }\n\n o[key] = value;\n }\n\n return o;\n}\n\n// Parse a `CFF` DICT object.\n// A dictionary contains key-value pairs in a compact tokenized format.\nfunction parseCFFDict(data, start, size) {\n start = start !== undefined ? start : 0;\n const parser = new parse.Parser(data, start);\n const entries = [];\n let operands = [];\n size = size !== undefined ? size : data.length;\n\n while (parser.relativeOffset < size) {\n let op = parser.parseByte();\n\n // The first byte for each dict item distinguishes between operator (key) and operand (value).\n // Values <= 21 are operators.\n if (op <= 21) {\n // Two-byte operators have an initial escape byte of 12.\n if (op === 12) {\n op = 1200 + parser.parseByte();\n }\n\n entries.push([op, operands]);\n operands = [];\n } else {\n // Since the operands (values) come before the operators (keys), we store all operands in a list\n // until we encounter an operator.\n operands.push(parseOperand(parser, op));\n }\n }\n\n return entriesToObject(entries);\n}\n\n// Given a String Index (SID), return the value of the string.\n// Strings below index 392 are standard CFF strings and are not encoded in the font.\nfunction getCFFString(strings, index) {\n if (index <= 390) {\n index = cffStandardStrings[index];\n } else {\n index = strings[index - 391];\n }\n\n return index;\n}\n\n// Interpret a dictionary and return a new dictionary with readable keys and values for missing entries.\n// This function takes `meta` which is a list of objects containing `operand`, `name` and `default`.\nfunction interpretDict(dict, meta, strings) {\n const newDict = {};\n let value;\n\n // Because we also want to include missing values, we start out from the meta list\n // and lookup values in the dict.\n for (let i = 0; i < meta.length; i += 1) {\n const m = meta[i];\n\n if (Array.isArray(m.type)) {\n const values = [];\n values.length = m.type.length;\n for (let j = 0; j < m.type.length; j++) {\n value = dict[m.op] !== undefined ? dict[m.op][j] : undefined;\n if (value === undefined) {\n value = m.value !== undefined && m.value[j] !== undefined ? m.value[j] : null;\n }\n if (m.type[j] === 'SID') {\n value = getCFFString(strings, value);\n }\n values[j] = value;\n }\n newDict[m.name] = values;\n } else {\n value = dict[m.op];\n if (value === undefined) {\n value = m.value !== undefined ? m.value : null;\n }\n\n if (m.type === 'SID') {\n value = getCFFString(strings, value);\n }\n newDict[m.name] = value;\n }\n }\n\n return newDict;\n}\n\n// Parse the CFF header.\nfunction parseCFFHeader(data, start) {\n const header = {};\n header.formatMajor = parse.getCard8(data, start);\n header.formatMinor = parse.getCard8(data, start + 1);\n header.size = parse.getCard8(data, start + 2);\n header.offsetSize = parse.getCard8(data, start + 3);\n header.startOffset = start;\n header.endOffset = start + 4;\n return header;\n}\n\nconst TOP_DICT_META = [\n {name: 'version', op: 0, type: 'SID'},\n {name: 'notice', op: 1, type: 'SID'},\n {name: 'copyright', op: 1200, type: 'SID'},\n {name: 'fullName', op: 2, type: 'SID'},\n {name: 'familyName', op: 3, type: 'SID'},\n {name: 'weight', op: 4, type: 'SID'},\n {name: 'isFixedPitch', op: 1201, type: 'number', value: 0},\n {name: 'italicAngle', op: 1202, type: 'number', value: 0},\n {name: 'underlinePosition', op: 1203, type: 'number', value: -100},\n {name: 'underlineThickness', op: 1204, type: 'number', value: 50},\n {name: 'paintType', op: 1205, type: 'number', value: 0},\n {name: 'charstringType', op: 1206, type: 'number', value: 2},\n {\n name: 'fontMatrix',\n op: 1207,\n type: ['real', 'real', 'real', 'real', 'real', 'real'],\n value: [0.001, 0, 0, 0.001, 0, 0]\n },\n {name: 'uniqueId', op: 13, type: 'number'},\n {name: 'fontBBox', op: 5, type: ['number', 'number', 'number', 'number'], value: [0, 0, 0, 0]},\n {name: 'strokeWidth', op: 1208, type: 'number', value: 0},\n {name: 'xuid', op: 14, type: [], value: null},\n {name: 'charset', op: 15, type: 'offset', value: 0},\n {name: 'encoding', op: 16, type: 'offset', value: 0},\n {name: 'charStrings', op: 17, type: 'offset', value: 0},\n {name: 'private', op: 18, type: ['number', 'offset'], value: [0, 0]},\n {name: 'ros', op: 1230, type: ['SID', 'SID', 'number']},\n {name: 'cidFontVersion', op: 1231, type: 'number', value: 0},\n {name: 'cidFontRevision', op: 1232, type: 'number', value: 0},\n {name: 'cidFontType', op: 1233, type: 'number', value: 0},\n {name: 'cidCount', op: 1234, type: 'number', value: 8720},\n {name: 'uidBase', op: 1235, type: 'number'},\n {name: 'fdArray', op: 1236, type: 'offset'},\n {name: 'fdSelect', op: 1237, type: 'offset'},\n {name: 'fontName', op: 1238, type: 'SID'}\n];\n\nconst PRIVATE_DICT_META = [\n {name: 'subrs', op: 19, type: 'offset', value: 0},\n {name: 'defaultWidthX', op: 20, type: 'number', value: 0},\n {name: 'nominalWidthX', op: 21, type: 'number', value: 0}\n];\n\n// Parse the CFF top dictionary. A CFF table can contain multiple fonts, each with their own top dictionary.\n// The top dictionary contains the essential metadata for the font, together with the private dictionary.\nfunction parseCFFTopDict(data, strings) {\n const dict = parseCFFDict(data, 0, data.byteLength);\n return interpretDict(dict, TOP_DICT_META, strings);\n}\n\n// Parse the CFF private dictionary. We don't fully parse out all the values, only the ones we need.\nfunction parseCFFPrivateDict(data, start, size, strings) {\n const dict = parseCFFDict(data, start, size);\n return interpretDict(dict, PRIVATE_DICT_META, strings);\n}\n\n// Returns a list of \"Top DICT\"s found using an INDEX list.\n// Used to read both the usual high-level Top DICTs and also the FDArray\n// discovered inside CID-keyed fonts. When a Top DICT has a reference to\n// a Private DICT that is read and saved into the Top DICT.\n//\n// In addition to the expected/optional values as outlined in TOP_DICT_META\n// the following values might be saved into the Top DICT.\n//\n// _subrs [] array of local CFF subroutines from Private DICT\n// _subrsBias bias value computed from number of subroutines\n// (see calcCFFSubroutineBias() and parseCFFCharstring())\n// _defaultWidthX default widths for CFF characters\n// _nominalWidthX bias added to width embedded within glyph description\n//\n// _privateDict saved copy of parsed Private DICT from Top DICT\nfunction gatherCFFTopDicts(data, start, cffIndex, strings) {\n const topDictArray = [];\n for (let iTopDict = 0; iTopDict < cffIndex.length; iTopDict += 1) {\n const topDictData = new DataView(new Uint8Array(cffIndex[iTopDict]).buffer);\n const topDict = parseCFFTopDict(topDictData, strings);\n topDict._subrs = [];\n topDict._subrsBias = 0;\n topDict._defaultWidthX = 0;\n topDict._nominalWidthX = 0;\n const privateSize = topDict.private[0];\n const privateOffset = topDict.private[1];\n if (privateSize !== 0 && privateOffset !== 0) {\n const privateDict = parseCFFPrivateDict(data, privateOffset + start, privateSize, strings);\n topDict._defaultWidthX = privateDict.defaultWidthX;\n topDict._nominalWidthX = privateDict.nominalWidthX;\n if (privateDict.subrs !== 0) {\n const subrOffset = privateOffset + privateDict.subrs;\n const subrIndex = parseCFFIndex(data, subrOffset + start);\n topDict._subrs = subrIndex.objects;\n topDict._subrsBias = calcCFFSubroutineBias(topDict._subrs);\n }\n topDict._privateDict = privateDict;\n }\n topDictArray.push(topDict);\n }\n return topDictArray;\n}\n\n// Parse the CFF charset table, which contains internal names for all the glyphs.\n// This function will return a list of glyph names.\n// See Adobe TN #5176 chapter 13, \"Charsets\".\nfunction parseCFFCharset(data, start, nGlyphs, strings) {\n let sid;\n let count;\n const parser = new parse.Parser(data, start);\n\n // The .notdef glyph is not included, so subtract 1.\n nGlyphs -= 1;\n const charset = ['.notdef'];\n\n const format = parser.parseCard8();\n if (format === 0) {\n for (let i = 0; i < nGlyphs; i += 1) {\n sid = parser.parseSID();\n charset.push(getCFFString(strings, sid));\n }\n } else if (format === 1) {\n while (charset.length <= nGlyphs) {\n sid = parser.parseSID();\n count = parser.parseCard8();\n for (let i = 0; i <= count; i += 1) {\n charset.push(getCFFString(strings, sid));\n sid += 1;\n }\n }\n } else if (format === 2) {\n while (charset.length <= nGlyphs) {\n sid = parser.parseSID();\n count = parser.parseCard16();\n for (let i = 0; i <= count; i += 1) {\n charset.push(getCFFString(strings, sid));\n sid += 1;\n }\n }\n } else {\n throw new Error('Unknown charset format ' + format);\n }\n\n return charset;\n}\n\n// Parse the CFF encoding data. Only one encoding can be specified per font.\n// See Adobe TN #5176 chapter 12, \"Encodings\".\nfunction parseCFFEncoding(data, start, charset) {\n let code;\n const enc = {};\n const parser = new parse.Parser(data, start);\n const format = parser.parseCard8();\n if (format === 0) {\n const nCodes = parser.parseCard8();\n for (let i = 0; i < nCodes; i += 1) {\n code = parser.parseCard8();\n enc[code] = i;\n }\n } else if (format === 1) {\n const nRanges = parser.parseCard8();\n code = 1;\n for (let i = 0; i < nRanges; i += 1) {\n const first = parser.parseCard8();\n const nLeft = parser.parseCard8();\n for (let j = first; j <= first + nLeft; j += 1) {\n enc[j] = code;\n code += 1;\n }\n }\n } else {\n throw new Error('Unknown encoding format ' + format);\n }\n\n return new CffEncoding(enc, charset);\n}\n\n// Take in charstring code and return a Glyph object.\n// The encoding is described in the Type 2 Charstring Format\n// https://www.microsoft.com/typography/OTSPEC/charstr2.htm\nfunction parseCFFCharstring(font, glyph, code) {\n let c1x;\n let c1y;\n let c2x;\n let c2y;\n const p = new Path();\n const stack = [];\n let nStems = 0;\n let haveWidth = false;\n let open = false;\n let x = 0;\n let y = 0;\n let subrs;\n let subrsBias;\n let defaultWidthX;\n let nominalWidthX;\n if (font.isCIDFont) {\n const fdIndex = font.tables.cff.topDict._fdSelect[glyph.index];\n const fdDict = font.tables.cff.topDict._fdArray[fdIndex];\n subrs = fdDict._subrs;\n subrsBias = fdDict._subrsBias;\n defaultWidthX = fdDict._defaultWidthX;\n nominalWidthX = fdDict._nominalWidthX;\n } else {\n subrs = font.tables.cff.topDict._subrs;\n subrsBias = font.tables.cff.topDict._subrsBias;\n defaultWidthX = font.tables.cff.topDict._defaultWidthX;\n nominalWidthX = font.tables.cff.topDict._nominalWidthX;\n }\n let width = defaultWidthX;\n\n function newContour(x, y) {\n if (open) {\n p.closePath();\n }\n\n p.moveTo(x, y);\n open = true;\n }\n\n function parseStems() {\n let hasWidthArg;\n\n // The number of stem operators on the stack is always even.\n // If the value is uneven, that means a width is specified.\n hasWidthArg = stack.length % 2 !== 0;\n if (hasWidthArg && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n }\n\n nStems += stack.length >> 1;\n stack.length = 0;\n haveWidth = true;\n }\n\n function parse(code) {\n let b1;\n let b2;\n let b3;\n let b4;\n let codeIndex;\n let subrCode;\n let jpx;\n let jpy;\n let c3x;\n let c3y;\n let c4x;\n let c4y;\n\n let i = 0;\n while (i < code.length) {\n let v = code[i];\n i += 1;\n switch (v) {\n case 1: // hstem\n parseStems();\n break;\n case 3: // vstem\n parseStems();\n break;\n case 4: // vmoveto\n if (stack.length > 1 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n\n y += stack.pop();\n newContour(x, y);\n break;\n case 5: // rlineto\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n p.lineTo(x, y);\n }\n\n break;\n case 6: // hlineto\n while (stack.length > 0) {\n x += stack.shift();\n p.lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n\n y += stack.shift();\n p.lineTo(x, y);\n }\n\n break;\n case 7: // vlineto\n while (stack.length > 0) {\n y += stack.shift();\n p.lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n\n x += stack.shift();\n p.lineTo(x, y);\n }\n\n break;\n case 8: // rrcurveto\n while (stack.length > 0) {\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n break;\n case 10: // callsubr\n codeIndex = stack.pop() + subrsBias;\n subrCode = subrs[codeIndex];\n if (subrCode) {\n parse(subrCode);\n }\n\n break;\n case 11: // return\n return;\n case 12: // flex operators\n v = code[i];\n i += 1;\n switch (v) {\n case 35: // flex\n // |- dx1 dy1 dx2 dy2 dx3 dy3 dx4 dy4 dx5 dy5 dx6 dy6 fd flex (12 35) |-\n c1x = x + stack.shift(); // dx1\n c1y = y + stack.shift(); // dy1\n c2x = c1x + stack.shift(); // dx2\n c2y = c1y + stack.shift(); // dy2\n jpx = c2x + stack.shift(); // dx3\n jpy = c2y + stack.shift(); // dy3\n c3x = jpx + stack.shift(); // dx4\n c3y = jpy + stack.shift(); // dy4\n c4x = c3x + stack.shift(); // dx5\n c4y = c3y + stack.shift(); // dy5\n x = c4x + stack.shift(); // dx6\n y = c4y + stack.shift(); // dy6\n stack.shift(); // flex depth\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n case 34: // hflex\n // |- dx1 dx2 dy2 dx3 dx4 dx5 dx6 hflex (12 34) |-\n c1x = x + stack.shift(); // dx1\n c1y = y; // dy1\n c2x = c1x + stack.shift(); // dx2\n c2y = c1y + stack.shift(); // dy2\n jpx = c2x + stack.shift(); // dx3\n jpy = c2y; // dy3\n c3x = jpx + stack.shift(); // dx4\n c3y = c2y; // dy4\n c4x = c3x + stack.shift(); // dx5\n c4y = y; // dy5\n x = c4x + stack.shift(); // dx6\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n case 36: // hflex1\n // |- dx1 dy1 dx2 dy2 dx3 dx4 dx5 dy5 dx6 hflex1 (12 36) |-\n c1x = x + stack.shift(); // dx1\n c1y = y + stack.shift(); // dy1\n c2x = c1x + stack.shift(); // dx2\n c2y = c1y + stack.shift(); // dy2\n jpx = c2x + stack.shift(); // dx3\n jpy = c2y; // dy3\n c3x = jpx + stack.shift(); // dx4\n c3y = c2y; // dy4\n c4x = c3x + stack.shift(); // dx5\n c4y = c3y + stack.shift(); // dy5\n x = c4x + stack.shift(); // dx6\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n case 37: // flex1\n // |- dx1 dy1 dx2 dy2 dx3 dy3 dx4 dy4 dx5 dy5 d6 flex1 (12 37) |-\n c1x = x + stack.shift(); // dx1\n c1y = y + stack.shift(); // dy1\n c2x = c1x + stack.shift(); // dx2\n c2y = c1y + stack.shift(); // dy2\n jpx = c2x + stack.shift(); // dx3\n jpy = c2y + stack.shift(); // dy3\n c3x = jpx + stack.shift(); // dx4\n c3y = jpy + stack.shift(); // dy4\n c4x = c3x + stack.shift(); // dx5\n c4y = c3y + stack.shift(); // dy5\n if (Math.abs(c4x - x) > Math.abs(c4y - y)) {\n x = c4x + stack.shift();\n } else {\n y = c4y + stack.shift();\n }\n\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n default:\n console.log('Glyph ' + glyph.index + ': unknown operator ' + 1200 + v);\n stack.length = 0;\n }\n break;\n case 14: // endchar\n if (stack.length > 0 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n\n if (open) {\n p.closePath();\n open = false;\n }\n\n break;\n case 18: // hstemhm\n parseStems();\n break;\n case 19: // hintmask\n case 20: // cntrmask\n parseStems();\n i += (nStems + 7) >> 3;\n break;\n case 21: // rmoveto\n if (stack.length > 2 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n\n y += stack.pop();\n x += stack.pop();\n newContour(x, y);\n break;\n case 22: // hmoveto\n if (stack.length > 1 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n\n x += stack.pop();\n newContour(x, y);\n break;\n case 23: // vstemhm\n parseStems();\n break;\n case 24: // rcurveline\n while (stack.length > 2) {\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n x += stack.shift();\n y += stack.shift();\n p.lineTo(x, y);\n break;\n case 25: // rlinecurve\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n p.lineTo(x, y);\n }\n\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n break;\n case 26: // vvcurveto\n if (stack.length % 2) {\n x += stack.shift();\n }\n\n while (stack.length > 0) {\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x;\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n break;\n case 27: // hhcurveto\n if (stack.length % 2) {\n y += stack.shift();\n }\n\n while (stack.length > 0) {\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y;\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n break;\n case 28: // shortint\n b1 = code[i];\n b2 = code[i + 1];\n stack.push(((b1 << 24) | (b2 << 16)) >> 16);\n i += 2;\n break;\n case 29: // callgsubr\n codeIndex = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[codeIndex];\n if (subrCode) {\n parse(subrCode);\n }\n\n break;\n case 30: // vhcurveto\n while (stack.length > 0) {\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n if (stack.length === 0) {\n break;\n }\n\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n y = c2y + stack.shift();\n x = c2x + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n break;\n case 31: // hvcurveto\n while (stack.length > 0) {\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n y = c2y + stack.shift();\n x = c2x + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n if (stack.length === 0) {\n break;\n }\n\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n break;\n default:\n if (v < 32) {\n console.log('Glyph ' + glyph.index + ': unknown operator ' + v);\n } else if (v < 247) {\n stack.push(v - 139);\n } else if (v < 251) {\n b1 = code[i];\n i += 1;\n stack.push((v - 247) * 256 + b1 + 108);\n } else if (v < 255) {\n b1 = code[i];\n i += 1;\n stack.push(-(v - 251) * 256 - b1 - 108);\n } else {\n b1 = code[i];\n b2 = code[i + 1];\n b3 = code[i + 2];\n b4 = code[i + 3];\n i += 4;\n stack.push(((b1 << 24) | (b2 << 16) | (b3 << 8) | b4) / 65536);\n }\n }\n }\n }\n\n parse(code);\n\n glyph.advanceWidth = width;\n return p;\n}\n\nfunction parseCFFFDSelect(data, start, nGlyphs, fdArrayCount) {\n const fdSelect = [];\n let fdIndex;\n const parser = new parse.Parser(data, start);\n const format = parser.parseCard8();\n if (format === 0) {\n // Simple list of nGlyphs elements\n for (let iGid = 0; iGid < nGlyphs; iGid++) {\n fdIndex = parser.parseCard8();\n if (fdIndex >= fdArrayCount) {\n throw new Error('CFF table CID Font FDSelect has bad FD index value ' + fdIndex + ' (FD count ' + fdArrayCount + ')');\n }\n fdSelect.push(fdIndex);\n }\n } else if (format === 3) {\n // Ranges\n const nRanges = parser.parseCard16();\n let first = parser.parseCard16();\n if (first !== 0) {\n throw new Error('CFF Table CID Font FDSelect format 3 range has bad initial GID ' + first);\n }\n let next;\n for (let iRange = 0; iRange < nRanges; iRange++) {\n fdIndex = parser.parseCard8();\n next = parser.parseCard16();\n if (fdIndex >= fdArrayCount) {\n throw new Error('CFF table CID Font FDSelect has bad FD index value ' + fdIndex + ' (FD count ' + fdArrayCount + ')');\n }\n if (next > nGlyphs) {\n throw new Error('CFF Table CID Font FDSelect format 3 range has bad GID ' + next);\n }\n for (; first < next; first++) {\n fdSelect.push(fdIndex);\n }\n first = next;\n }\n if (next !== nGlyphs) {\n throw new Error('CFF Table CID Font FDSelect format 3 range has bad final GID ' + next);\n }\n } else {\n throw new Error('CFF Table CID Font FDSelect table has unsupported format ' + format);\n }\n return fdSelect;\n}\n\n// Parse the `CFF` table, which contains the glyph outlines in PostScript format.\nfunction parseCFFTable(data, start, font, opt) {\n font.tables.cff = {};\n const header = parseCFFHeader(data, start);\n const nameIndex = parseCFFIndex(data, header.endOffset, parse.bytesToString);\n const topDictIndex = parseCFFIndex(data, nameIndex.endOffset);\n const stringIndex = parseCFFIndex(data, topDictIndex.endOffset, parse.bytesToString);\n const globalSubrIndex = parseCFFIndex(data, stringIndex.endOffset);\n font.gsubrs = globalSubrIndex.objects;\n font.gsubrsBias = calcCFFSubroutineBias(font.gsubrs);\n\n const topDictArray = gatherCFFTopDicts(data, start, topDictIndex.objects, stringIndex.objects);\n if (topDictArray.length !== 1) {\n throw new Error('CFF table has too many fonts in \\'FontSet\\' - count of fonts NameIndex.length = ' + topDictArray.length);\n }\n\n const topDict = topDictArray[0];\n font.tables.cff.topDict = topDict;\n\n if (topDict._privateDict) {\n font.defaultWidthX = topDict._privateDict.defaultWidthX;\n font.nominalWidthX = topDict._privateDict.nominalWidthX;\n }\n\n if (topDict.ros[0] !== undefined && topDict.ros[1] !== undefined) {\n font.isCIDFont = true;\n }\n\n if (font.isCIDFont) {\n let fdArrayOffset = topDict.fdArray;\n let fdSelectOffset = topDict.fdSelect;\n if (fdArrayOffset === 0 || fdSelectOffset === 0) {\n throw new Error('Font is marked as a CID font, but FDArray and/or FDSelect information is missing');\n }\n fdArrayOffset += start;\n const fdArrayIndex = parseCFFIndex(data, fdArrayOffset);\n const fdArray = gatherCFFTopDicts(data, start, fdArrayIndex.objects, stringIndex.objects);\n topDict._fdArray = fdArray;\n fdSelectOffset += start;\n topDict._fdSelect = parseCFFFDSelect(data, fdSelectOffset, font.numGlyphs, fdArray.length);\n }\n\n const privateDictOffset = start + topDict.private[1];\n const privateDict = parseCFFPrivateDict(data, privateDictOffset, topDict.private[0], stringIndex.objects);\n font.defaultWidthX = privateDict.defaultWidthX;\n font.nominalWidthX = privateDict.nominalWidthX;\n\n if (privateDict.subrs !== 0) {\n const subrOffset = privateDictOffset + privateDict.subrs;\n const subrIndex = parseCFFIndex(data, subrOffset);\n font.subrs = subrIndex.objects;\n font.subrsBias = calcCFFSubroutineBias(font.subrs);\n } else {\n font.subrs = [];\n font.subrsBias = 0;\n }\n\n // Offsets in the top dict are relative to the beginning of the CFF data, so add the CFF start offset.\n let charStringsIndex;\n if (opt.lowMemory) {\n charStringsIndex = parseCFFIndexLowMemory(data, start + topDict.charStrings);\n font.nGlyphs = charStringsIndex.offsets.length;\n } else {\n charStringsIndex = parseCFFIndex(data, start + topDict.charStrings);\n font.nGlyphs = charStringsIndex.objects.length;\n }\n\n const charset = parseCFFCharset(data, start + topDict.charset, font.nGlyphs, stringIndex.objects);\n if (topDict.encoding === 0) {\n // Standard encoding\n font.cffEncoding = new CffEncoding(cffStandardEncoding, charset);\n } else if (topDict.encoding === 1) {\n // Expert encoding\n font.cffEncoding = new CffEncoding(cffExpertEncoding, charset);\n } else {\n font.cffEncoding = parseCFFEncoding(data, start + topDict.encoding, charset);\n }\n\n // Prefer the CMAP encoding to the CFF encoding.\n font.encoding = font.encoding || font.cffEncoding;\n\n font.glyphs = new glyphset.GlyphSet(font);\n if (opt.lowMemory) {\n font._push = function(i) {\n const charString = getCffIndexObject(i, charStringsIndex.offsets, data, start + topDict.charStrings);\n font.glyphs.push(i, glyphset.cffGlyphLoader(font, i, parseCFFCharstring, charString));\n };\n } else {\n for (let i = 0; i < font.nGlyphs; i += 1) {\n const charString = charStringsIndex.objects[i];\n font.glyphs.push(i, glyphset.cffGlyphLoader(font, i, parseCFFCharstring, charString));\n }\n }\n}\n\n// Convert a string to a String ID (SID).\n// The list of strings is modified in place.\nfunction encodeString(s, strings) {\n let sid;\n\n // Is the string in the CFF standard strings?\n let i = cffStandardStrings.indexOf(s);\n if (i >= 0) {\n sid = i;\n }\n\n // Is the string already in the string index?\n i = strings.indexOf(s);\n if (i >= 0) {\n sid = i + cffStandardStrings.length;\n } else {\n sid = cffStandardStrings.length + strings.length;\n strings.push(s);\n }\n\n return sid;\n}\n\nfunction makeHeader() {\n return new table.Record('Header', [\n {name: 'major', type: 'Card8', value: 1},\n {name: 'minor', type: 'Card8', value: 0},\n {name: 'hdrSize', type: 'Card8', value: 4},\n {name: 'major', type: 'Card8', value: 1}\n ]);\n}\n\nfunction makeNameIndex(fontNames) {\n const t = new table.Record('Name INDEX', [\n {name: 'names', type: 'INDEX', value: []}\n ]);\n t.names = [];\n for (let i = 0; i < fontNames.length; i += 1) {\n t.names.push({name: 'name_' + i, type: 'NAME', value: fontNames[i]});\n }\n\n return t;\n}\n\n// Given a dictionary's metadata, create a DICT structure.\nfunction makeDict(meta, attrs, strings) {\n const m = {};\n for (let i = 0; i < meta.length; i += 1) {\n const entry = meta[i];\n let value = attrs[entry.name];\n if (value !== undefined && !equals(value, entry.value)) {\n if (entry.type === 'SID') {\n value = encodeString(value, strings);\n }\n\n m[entry.op] = {name: entry.name, type: entry.type, value: value};\n }\n }\n\n return m;\n}\n\n// The Top DICT houses the global font attributes.\nfunction makeTopDict(attrs, strings) {\n const t = new table.Record('Top DICT', [\n {name: 'dict', type: 'DICT', value: {}}\n ]);\n t.dict = makeDict(TOP_DICT_META, attrs, strings);\n return t;\n}\n\nfunction makeTopDictIndex(topDict) {\n const t = new table.Record('Top DICT INDEX', [\n {name: 'topDicts', type: 'INDEX', value: []}\n ]);\n t.topDicts = [{name: 'topDict_0', type: 'TABLE', value: topDict}];\n return t;\n}\n\nfunction makeStringIndex(strings) {\n const t = new table.Record('String INDEX', [\n {name: 'strings', type: 'INDEX', value: []}\n ]);\n t.strings = [];\n for (let i = 0; i < strings.length; i += 1) {\n t.strings.push({name: 'string_' + i, type: 'STRING', value: strings[i]});\n }\n\n return t;\n}\n\nfunction makeGlobalSubrIndex() {\n // Currently we don't use subroutines.\n return new table.Record('Global Subr INDEX', [\n {name: 'subrs', type: 'INDEX', value: []}\n ]);\n}\n\nfunction makeCharsets(glyphNames, strings) {\n const t = new table.Record('Charsets', [\n {name: 'format', type: 'Card8', value: 0}\n ]);\n for (let i = 0; i < glyphNames.length; i += 1) {\n const glyphName = glyphNames[i];\n const glyphSID = encodeString(glyphName, strings);\n t.fields.push({name: 'glyph_' + i, type: 'SID', value: glyphSID});\n }\n\n return t;\n}\n\nfunction glyphToOps(glyph) {\n const ops = [];\n const path = glyph.path;\n ops.push({name: 'width', type: 'NUMBER', value: glyph.advanceWidth});\n let x = 0;\n let y = 0;\n for (let i = 0; i < path.commands.length; i += 1) {\n let dx;\n let dy;\n let cmd = path.commands[i];\n if (cmd.type === 'Q') {\n // CFF only supports bézier curves, so convert the quad to a bézier.\n const _13 = 1 / 3;\n const _23 = 2 / 3;\n\n // We're going to create a new command so we don't change the original path.\n // Since all coordinates are relative, we round() them ASAP to avoid propagating errors.\n cmd = {\n type: 'C',\n x: cmd.x,\n y: cmd.y,\n x1: Math.round(_13 * x + _23 * cmd.x1),\n y1: Math.round(_13 * y + _23 * cmd.y1),\n x2: Math.round(_13 * cmd.x + _23 * cmd.x1),\n y2: Math.round(_13 * cmd.y + _23 * cmd.y1)\n };\n }\n\n if (cmd.type === 'M') {\n dx = Math.round(cmd.x - x);\n dy = Math.round(cmd.y - y);\n ops.push({name: 'dx', type: 'NUMBER', value: dx});\n ops.push({name: 'dy', type: 'NUMBER', value: dy});\n ops.push({name: 'rmoveto', type: 'OP', value: 21});\n x = Math.round(cmd.x);\n y = Math.round(cmd.y);\n } else if (cmd.type === 'L') {\n dx = Math.round(cmd.x - x);\n dy = Math.round(cmd.y - y);\n ops.push({name: 'dx', type: 'NUMBER', value: dx});\n ops.push({name: 'dy', type: 'NUMBER', value: dy});\n ops.push({name: 'rlineto', type: 'OP', value: 5});\n x = Math.round(cmd.x);\n y = Math.round(cmd.y);\n } else if (cmd.type === 'C') {\n const dx1 = Math.round(cmd.x1 - x);\n const dy1 = Math.round(cmd.y1 - y);\n const dx2 = Math.round(cmd.x2 - cmd.x1);\n const dy2 = Math.round(cmd.y2 - cmd.y1);\n dx = Math.round(cmd.x - cmd.x2);\n dy = Math.round(cmd.y - cmd.y2);\n ops.push({name: 'dx1', type: 'NUMBER', value: dx1});\n ops.push({name: 'dy1', type: 'NUMBER', value: dy1});\n ops.push({name: 'dx2', type: 'NUMBER', value: dx2});\n ops.push({name: 'dy2', type: 'NUMBER', value: dy2});\n ops.push({name: 'dx', type: 'NUMBER', value: dx});\n ops.push({name: 'dy', type: 'NUMBER', value: dy});\n ops.push({name: 'rrcurveto', type: 'OP', value: 8});\n x = Math.round(cmd.x);\n y = Math.round(cmd.y);\n }\n\n // Contours are closed automatically.\n }\n\n ops.push({name: 'endchar', type: 'OP', value: 14});\n return ops;\n}\n\nfunction makeCharStringsIndex(glyphs) {\n const t = new table.Record('CharStrings INDEX', [\n {name: 'charStrings', type: 'INDEX', value: []}\n ]);\n\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs.get(i);\n const ops = glyphToOps(glyph);\n t.charStrings.push({name: glyph.name, type: 'CHARSTRING', value: ops});\n }\n\n return t;\n}\n\nfunction makePrivateDict(attrs, strings) {\n const t = new table.Record('Private DICT', [\n {name: 'dict', type: 'DICT', value: {}}\n ]);\n t.dict = makeDict(PRIVATE_DICT_META, attrs, strings);\n return t;\n}\n\nfunction makeCFFTable(glyphs, options) {\n const t = new table.Table('CFF ', [\n {name: 'header', type: 'RECORD'},\n {name: 'nameIndex', type: 'RECORD'},\n {name: 'topDictIndex', type: 'RECORD'},\n {name: 'stringIndex', type: 'RECORD'},\n {name: 'globalSubrIndex', type: 'RECORD'},\n {name: 'charsets', type: 'RECORD'},\n {name: 'charStringsIndex', type: 'RECORD'},\n {name: 'privateDict', type: 'RECORD'}\n ]);\n\n const fontScale = 1 / options.unitsPerEm;\n // We use non-zero values for the offsets so that the DICT encodes them.\n // This is important because the size of the Top DICT plays a role in offset calculation,\n // and the size shouldn't change after we've written correct offsets.\n const attrs = {\n version: options.version,\n fullName: options.fullName,\n familyName: options.familyName,\n weight: options.weightName,\n fontBBox: options.fontBBox || [0, 0, 0, 0],\n fontMatrix: [fontScale, 0, 0, fontScale, 0, 0],\n charset: 999,\n encoding: 0,\n charStrings: 999,\n private: [0, 999]\n };\n\n const privateAttrs = {};\n\n const glyphNames = [];\n let glyph;\n\n // Skip first glyph (.notdef)\n for (let i = 1; i < glyphs.length; i += 1) {\n glyph = glyphs.get(i);\n glyphNames.push(glyph.name);\n }\n\n const strings = [];\n\n t.header = makeHeader();\n t.nameIndex = makeNameIndex([options.postScriptName]);\n let topDict = makeTopDict(attrs, strings);\n t.topDictIndex = makeTopDictIndex(topDict);\n t.globalSubrIndex = makeGlobalSubrIndex();\n t.charsets = makeCharsets(glyphNames, strings);\n t.charStringsIndex = makeCharStringsIndex(glyphs);\n t.privateDict = makePrivateDict(privateAttrs, strings);\n\n // Needs to come at the end, to encode all custom strings used in the font.\n t.stringIndex = makeStringIndex(strings);\n\n const startOffset = t.header.sizeOf() +\n t.nameIndex.sizeOf() +\n t.topDictIndex.sizeOf() +\n t.stringIndex.sizeOf() +\n t.globalSubrIndex.sizeOf();\n attrs.charset = startOffset;\n\n // We use the CFF standard encoding; proper encoding will be handled in cmap.\n attrs.encoding = 0;\n attrs.charStrings = attrs.charset + t.charsets.sizeOf();\n attrs.private[1] = attrs.charStrings + t.charStringsIndex.sizeOf();\n\n // Recreate the Top DICT INDEX with the correct offsets.\n topDict = makeTopDict(attrs, strings);\n t.topDictIndex = makeTopDictIndex(topDict);\n\n return t;\n}\n\nexport default { parse: parseCFFTable, make: makeCFFTable };\n","// The `head` table contains global information about the font.\n// https://www.microsoft.com/typography/OTSPEC/head.htm\n\nimport check from '../check';\nimport parse from '../parse';\nimport table from '../table';\n\n// Parse the header `head` table\nfunction parseHeadTable(data, start) {\n const head = {};\n const p = new parse.Parser(data, start);\n head.version = p.parseVersion();\n head.fontRevision = Math.round(p.parseFixed() * 1000) / 1000;\n head.checkSumAdjustment = p.parseULong();\n head.magicNumber = p.parseULong();\n check.argument(head.magicNumber === 0x5F0F3CF5, 'Font header has wrong magic number.');\n head.flags = p.parseUShort();\n head.unitsPerEm = p.parseUShort();\n head.created = p.parseLongDateTime();\n head.modified = p.parseLongDateTime();\n head.xMin = p.parseShort();\n head.yMin = p.parseShort();\n head.xMax = p.parseShort();\n head.yMax = p.parseShort();\n head.macStyle = p.parseUShort();\n head.lowestRecPPEM = p.parseUShort();\n head.fontDirectionHint = p.parseShort();\n head.indexToLocFormat = p.parseShort();\n head.glyphDataFormat = p.parseShort();\n return head;\n}\n\nfunction makeHeadTable(options) {\n // Apple Mac timestamp epoch is 01/01/1904 not 01/01/1970\n const timestamp = Math.round(new Date().getTime() / 1000) + 2082844800;\n let createdTimestamp = timestamp;\n\n if (options.createdTimestamp) {\n createdTimestamp = options.createdTimestamp + 2082844800;\n }\n\n return new table.Table('head', [\n {name: 'version', type: 'FIXED', value: 0x00010000},\n {name: 'fontRevision', type: 'FIXED', value: 0x00010000},\n {name: 'checkSumAdjustment', type: 'ULONG', value: 0},\n {name: 'magicNumber', type: 'ULONG', value: 0x5F0F3CF5},\n {name: 'flags', type: 'USHORT', value: 0},\n {name: 'unitsPerEm', type: 'USHORT', value: 1000},\n {name: 'created', type: 'LONGDATETIME', value: createdTimestamp},\n {name: 'modified', type: 'LONGDATETIME', value: timestamp},\n {name: 'xMin', type: 'SHORT', value: 0},\n {name: 'yMin', type: 'SHORT', value: 0},\n {name: 'xMax', type: 'SHORT', value: 0},\n {name: 'yMax', type: 'SHORT', value: 0},\n {name: 'macStyle', type: 'USHORT', value: 0},\n {name: 'lowestRecPPEM', type: 'USHORT', value: 0},\n {name: 'fontDirectionHint', type: 'SHORT', value: 2},\n {name: 'indexToLocFormat', type: 'SHORT', value: 0},\n {name: 'glyphDataFormat', type: 'SHORT', value: 0}\n ], options);\n}\n\nexport default { parse: parseHeadTable, make: makeHeadTable };\n","// The `hhea` table contains information for horizontal layout.\n// https://www.microsoft.com/typography/OTSPEC/hhea.htm\n\nimport parse from '../parse';\nimport table from '../table';\n\n// Parse the horizontal header `hhea` table\nfunction parseHheaTable(data, start) {\n const hhea = {};\n const p = new parse.Parser(data, start);\n hhea.version = p.parseVersion();\n hhea.ascender = p.parseShort();\n hhea.descender = p.parseShort();\n hhea.lineGap = p.parseShort();\n hhea.advanceWidthMax = p.parseUShort();\n hhea.minLeftSideBearing = p.parseShort();\n hhea.minRightSideBearing = p.parseShort();\n hhea.xMaxExtent = p.parseShort();\n hhea.caretSlopeRise = p.parseShort();\n hhea.caretSlopeRun = p.parseShort();\n hhea.caretOffset = p.parseShort();\n p.relativeOffset += 8;\n hhea.metricDataFormat = p.parseShort();\n hhea.numberOfHMetrics = p.parseUShort();\n return hhea;\n}\n\nfunction makeHheaTable(options) {\n return new table.Table('hhea', [\n {name: 'version', type: 'FIXED', value: 0x00010000},\n {name: 'ascender', type: 'FWORD', value: 0},\n {name: 'descender', type: 'FWORD', value: 0},\n {name: 'lineGap', type: 'FWORD', value: 0},\n {name: 'advanceWidthMax', type: 'UFWORD', value: 0},\n {name: 'minLeftSideBearing', type: 'FWORD', value: 0},\n {name: 'minRightSideBearing', type: 'FWORD', value: 0},\n {name: 'xMaxExtent', type: 'FWORD', value: 0},\n {name: 'caretSlopeRise', type: 'SHORT', value: 1},\n {name: 'caretSlopeRun', type: 'SHORT', value: 0},\n {name: 'caretOffset', type: 'SHORT', value: 0},\n {name: 'reserved1', type: 'SHORT', value: 0},\n {name: 'reserved2', type: 'SHORT', value: 0},\n {name: 'reserved3', type: 'SHORT', value: 0},\n {name: 'reserved4', type: 'SHORT', value: 0},\n {name: 'metricDataFormat', type: 'SHORT', value: 0},\n {name: 'numberOfHMetrics', type: 'USHORT', value: 0}\n ], options);\n}\n\nexport default { parse: parseHheaTable, make: makeHheaTable };\n","// The `hmtx` table contains the horizontal metrics for all glyphs.\n// https://www.microsoft.com/typography/OTSPEC/hmtx.htm\n\nimport parse from '../parse';\nimport table from '../table';\n\nfunction parseHmtxTableAll(data, start, numMetrics, numGlyphs, glyphs) {\n let advanceWidth;\n let leftSideBearing;\n const p = new parse.Parser(data, start);\n for (let i = 0; i < numGlyphs; i += 1) {\n // If the font is monospaced, only one entry is needed. This last entry applies to all subsequent glyphs.\n if (i < numMetrics) {\n advanceWidth = p.parseUShort();\n leftSideBearing = p.parseShort();\n }\n\n const glyph = glyphs.get(i);\n glyph.advanceWidth = advanceWidth;\n glyph.leftSideBearing = leftSideBearing;\n }\n}\n\nfunction parseHmtxTableOnLowMemory(font, data, start, numMetrics, numGlyphs) {\n font._hmtxTableData = {};\n\n let advanceWidth;\n let leftSideBearing;\n const p = new parse.Parser(data, start);\n for (let i = 0; i < numGlyphs; i += 1) {\n // If the font is monospaced, only one entry is needed. This last entry applies to all subsequent glyphs.\n if (i < numMetrics) {\n advanceWidth = p.parseUShort();\n leftSideBearing = p.parseShort();\n }\n\n font._hmtxTableData[i] = {\n advanceWidth: advanceWidth,\n leftSideBearing: leftSideBearing\n };\n }\n}\n\n// Parse the `hmtx` table, which contains the horizontal metrics for all glyphs.\n// This function augments the glyph array, adding the advanceWidth and leftSideBearing to each glyph.\nfunction parseHmtxTable(font, data, start, numMetrics, numGlyphs, glyphs, opt) {\n if (opt.lowMemory)\n parseHmtxTableOnLowMemory(font, data, start, numMetrics, numGlyphs);\n else\n parseHmtxTableAll(data, start, numMetrics, numGlyphs, glyphs);\n}\n\nfunction makeHmtxTable(glyphs) {\n const t = new table.Table('hmtx', []);\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs.get(i);\n const advanceWidth = glyph.advanceWidth || 0;\n const leftSideBearing = glyph.leftSideBearing || 0;\n t.fields.push({name: 'advanceWidth_' + i, type: 'USHORT', value: advanceWidth});\n t.fields.push({name: 'leftSideBearing_' + i, type: 'SHORT', value: leftSideBearing});\n }\n\n return t;\n}\n\nexport default { parse: parseHmtxTable, make: makeHmtxTable };\n","// The `ltag` table stores IETF BCP-47 language tags. It allows supporting\n// languages for which TrueType does not assign a numeric code.\n// https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ltag.html\n// http://www.w3.org/International/articles/language-tags/\n// http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry\n\nimport check from '../check';\nimport parse from '../parse';\nimport table from '../table';\n\nfunction makeLtagTable(tags) {\n const result = new table.Table('ltag', [\n {name: 'version', type: 'ULONG', value: 1},\n {name: 'flags', type: 'ULONG', value: 0},\n {name: 'numTags', type: 'ULONG', value: tags.length}\n ]);\n\n let stringPool = '';\n const stringPoolOffset = 12 + tags.length * 4;\n for (let i = 0; i < tags.length; ++i) {\n let pos = stringPool.indexOf(tags[i]);\n if (pos < 0) {\n pos = stringPool.length;\n stringPool += tags[i];\n }\n\n result.fields.push({name: 'offset ' + i, type: 'USHORT', value: stringPoolOffset + pos});\n result.fields.push({name: 'length ' + i, type: 'USHORT', value: tags[i].length});\n }\n\n result.fields.push({name: 'stringPool', type: 'CHARARRAY', value: stringPool});\n return result;\n}\n\nfunction parseLtagTable(data, start) {\n const p = new parse.Parser(data, start);\n const tableVersion = p.parseULong();\n check.argument(tableVersion === 1, 'Unsupported ltag table version.');\n // The 'ltag' specification does not define any flags; skip the field.\n p.skip('uLong', 1);\n const numTags = p.parseULong();\n\n const tags = [];\n for (let i = 0; i < numTags; i++) {\n let tag = '';\n const offset = start + p.parseUShort();\n const length = p.parseUShort();\n for (let j = offset; j < offset + length; ++j) {\n tag += String.fromCharCode(data.getInt8(j));\n }\n\n tags.push(tag);\n }\n\n return tags;\n}\n\nexport default { make: makeLtagTable, parse: parseLtagTable };\n","// The `maxp` table establishes the memory requirements for the font.\n// We need it just to get the number of glyphs in the font.\n// https://www.microsoft.com/typography/OTSPEC/maxp.htm\n\nimport parse from '../parse';\nimport table from '../table';\n\n// Parse the maximum profile `maxp` table.\nfunction parseMaxpTable(data, start) {\n const maxp = {};\n const p = new parse.Parser(data, start);\n maxp.version = p.parseVersion();\n maxp.numGlyphs = p.parseUShort();\n if (maxp.version === 1.0) {\n maxp.maxPoints = p.parseUShort();\n maxp.maxContours = p.parseUShort();\n maxp.maxCompositePoints = p.parseUShort();\n maxp.maxCompositeContours = p.parseUShort();\n maxp.maxZones = p.parseUShort();\n maxp.maxTwilightPoints = p.parseUShort();\n maxp.maxStorage = p.parseUShort();\n maxp.maxFunctionDefs = p.parseUShort();\n maxp.maxInstructionDefs = p.parseUShort();\n maxp.maxStackElements = p.parseUShort();\n maxp.maxSizeOfInstructions = p.parseUShort();\n maxp.maxComponentElements = p.parseUShort();\n maxp.maxComponentDepth = p.parseUShort();\n }\n\n return maxp;\n}\n\nfunction makeMaxpTable(numGlyphs) {\n return new table.Table('maxp', [\n {name: 'version', type: 'FIXED', value: 0x00005000},\n {name: 'numGlyphs', type: 'USHORT', value: numGlyphs}\n ]);\n}\n\nexport default { parse: parseMaxpTable, make: makeMaxpTable };\n","// The `name` naming table.\n// https://www.microsoft.com/typography/OTSPEC/name.htm\n\nimport { decode, encode } from '../types';\nimport parse from '../parse';\nimport table from '../table';\n\n// NameIDs for the name table.\nconst nameTableNames = [\n 'copyright', // 0\n 'fontFamily', // 1\n 'fontSubfamily', // 2\n 'uniqueID', // 3\n 'fullName', // 4\n 'version', // 5\n 'postScriptName', // 6\n 'trademark', // 7\n 'manufacturer', // 8\n 'designer', // 9\n 'description', // 10\n 'manufacturerURL', // 11\n 'designerURL', // 12\n 'license', // 13\n 'licenseURL', // 14\n 'reserved', // 15\n 'preferredFamily', // 16\n 'preferredSubfamily', // 17\n 'compatibleFullName', // 18\n 'sampleText', // 19\n 'postScriptFindFontName', // 20\n 'wwsFamily', // 21\n 'wwsSubfamily' // 22\n];\n\nconst macLanguages = {\n 0: 'en',\n 1: 'fr',\n 2: 'de',\n 3: 'it',\n 4: 'nl',\n 5: 'sv',\n 6: 'es',\n 7: 'da',\n 8: 'pt',\n 9: 'no',\n 10: 'he',\n 11: 'ja',\n 12: 'ar',\n 13: 'fi',\n 14: 'el',\n 15: 'is',\n 16: 'mt',\n 17: 'tr',\n 18: 'hr',\n 19: 'zh-Hant',\n 20: 'ur',\n 21: 'hi',\n 22: 'th',\n 23: 'ko',\n 24: 'lt',\n 25: 'pl',\n 26: 'hu',\n 27: 'es',\n 28: 'lv',\n 29: 'se',\n 30: 'fo',\n 31: 'fa',\n 32: 'ru',\n 33: 'zh',\n 34: 'nl-BE',\n 35: 'ga',\n 36: 'sq',\n 37: 'ro',\n 38: 'cz',\n 39: 'sk',\n 40: 'si',\n 41: 'yi',\n 42: 'sr',\n 43: 'mk',\n 44: 'bg',\n 45: 'uk',\n 46: 'be',\n 47: 'uz',\n 48: 'kk',\n 49: 'az-Cyrl',\n 50: 'az-Arab',\n 51: 'hy',\n 52: 'ka',\n 53: 'mo',\n 54: 'ky',\n 55: 'tg',\n 56: 'tk',\n 57: 'mn-CN',\n 58: 'mn',\n 59: 'ps',\n 60: 'ks',\n 61: 'ku',\n 62: 'sd',\n 63: 'bo',\n 64: 'ne',\n 65: 'sa',\n 66: 'mr',\n 67: 'bn',\n 68: 'as',\n 69: 'gu',\n 70: 'pa',\n 71: 'or',\n 72: 'ml',\n 73: 'kn',\n 74: 'ta',\n 75: 'te',\n 76: 'si',\n 77: 'my',\n 78: 'km',\n 79: 'lo',\n 80: 'vi',\n 81: 'id',\n 82: 'tl',\n 83: 'ms',\n 84: 'ms-Arab',\n 85: 'am',\n 86: 'ti',\n 87: 'om',\n 88: 'so',\n 89: 'sw',\n 90: 'rw',\n 91: 'rn',\n 92: 'ny',\n 93: 'mg',\n 94: 'eo',\n 128: 'cy',\n 129: 'eu',\n 130: 'ca',\n 131: 'la',\n 132: 'qu',\n 133: 'gn',\n 134: 'ay',\n 135: 'tt',\n 136: 'ug',\n 137: 'dz',\n 138: 'jv',\n 139: 'su',\n 140: 'gl',\n 141: 'af',\n 142: 'br',\n 143: 'iu',\n 144: 'gd',\n 145: 'gv',\n 146: 'ga',\n 147: 'to',\n 148: 'el-polyton',\n 149: 'kl',\n 150: 'az',\n 151: 'nn'\n};\n\n// MacOS language ID → MacOS script ID\n//\n// Note that the script ID is not sufficient to determine what encoding\n// to use in TrueType files. For some languages, MacOS used a modification\n// of a mainstream script. For example, an Icelandic name would be stored\n// with smRoman in the TrueType naming table, but the actual encoding\n// is a special Icelandic version of the normal Macintosh Roman encoding.\n// As another example, Inuktitut uses an 8-bit encoding for Canadian Aboriginal\n// Syllables but MacOS had run out of available script codes, so this was\n// done as a (pretty radical) \"modification\" of Ethiopic.\n//\n// http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt\nconst macLanguageToScript = {\n 0: 0, // langEnglish → smRoman\n 1: 0, // langFrench → smRoman\n 2: 0, // langGerman → smRoman\n 3: 0, // langItalian → smRoman\n 4: 0, // langDutch → smRoman\n 5: 0, // langSwedish → smRoman\n 6: 0, // langSpanish → smRoman\n 7: 0, // langDanish → smRoman\n 8: 0, // langPortuguese → smRoman\n 9: 0, // langNorwegian → smRoman\n 10: 5, // langHebrew → smHebrew\n 11: 1, // langJapanese → smJapanese\n 12: 4, // langArabic → smArabic\n 13: 0, // langFinnish → smRoman\n 14: 6, // langGreek → smGreek\n 15: 0, // langIcelandic → smRoman (modified)\n 16: 0, // langMaltese → smRoman\n 17: 0, // langTurkish → smRoman (modified)\n 18: 0, // langCroatian → smRoman (modified)\n 19: 2, // langTradChinese → smTradChinese\n 20: 4, // langUrdu → smArabic\n 21: 9, // langHindi → smDevanagari\n 22: 21, // langThai → smThai\n 23: 3, // langKorean → smKorean\n 24: 29, // langLithuanian → smCentralEuroRoman\n 25: 29, // langPolish → smCentralEuroRoman\n 26: 29, // langHungarian → smCentralEuroRoman\n 27: 29, // langEstonian → smCentralEuroRoman\n 28: 29, // langLatvian → smCentralEuroRoman\n 29: 0, // langSami → smRoman\n 30: 0, // langFaroese → smRoman (modified)\n 31: 4, // langFarsi → smArabic (modified)\n 32: 7, // langRussian → smCyrillic\n 33: 25, // langSimpChinese → smSimpChinese\n 34: 0, // langFlemish → smRoman\n 35: 0, // langIrishGaelic → smRoman (modified)\n 36: 0, // langAlbanian → smRoman\n 37: 0, // langRomanian → smRoman (modified)\n 38: 29, // langCzech → smCentralEuroRoman\n 39: 29, // langSlovak → smCentralEuroRoman\n 40: 0, // langSlovenian → smRoman (modified)\n 41: 5, // langYiddish → smHebrew\n 42: 7, // langSerbian → smCyrillic\n 43: 7, // langMacedonian → smCyrillic\n 44: 7, // langBulgarian → smCyrillic\n 45: 7, // langUkrainian → smCyrillic (modified)\n 46: 7, // langByelorussian → smCyrillic\n 47: 7, // langUzbek → smCyrillic\n 48: 7, // langKazakh → smCyrillic\n 49: 7, // langAzerbaijani → smCyrillic\n 50: 4, // langAzerbaijanAr → smArabic\n 51: 24, // langArmenian → smArmenian\n 52: 23, // langGeorgian → smGeorgian\n 53: 7, // langMoldavian → smCyrillic\n 54: 7, // langKirghiz → smCyrillic\n 55: 7, // langTajiki → smCyrillic\n 56: 7, // langTurkmen → smCyrillic\n 57: 27, // langMongolian → smMongolian\n 58: 7, // langMongolianCyr → smCyrillic\n 59: 4, // langPashto → smArabic\n 60: 4, // langKurdish → smArabic\n 61: 4, // langKashmiri → smArabic\n 62: 4, // langSindhi → smArabic\n 63: 26, // langTibetan → smTibetan\n 64: 9, // langNepali → smDevanagari\n 65: 9, // langSanskrit → smDevanagari\n 66: 9, // langMarathi → smDevanagari\n 67: 13, // langBengali → smBengali\n 68: 13, // langAssamese → smBengali\n 69: 11, // langGujarati → smGujarati\n 70: 10, // langPunjabi → smGurmukhi\n 71: 12, // langOriya → smOriya\n 72: 17, // langMalayalam → smMalayalam\n 73: 16, // langKannada → smKannada\n 74: 14, // langTamil → smTamil\n 75: 15, // langTelugu → smTelugu\n 76: 18, // langSinhalese → smSinhalese\n 77: 19, // langBurmese → smBurmese\n 78: 20, // langKhmer → smKhmer\n 79: 22, // langLao → smLao\n 80: 30, // langVietnamese → smVietnamese\n 81: 0, // langIndonesian → smRoman\n 82: 0, // langTagalog → smRoman\n 83: 0, // langMalayRoman → smRoman\n 84: 4, // langMalayArabic → smArabic\n 85: 28, // langAmharic → smEthiopic\n 86: 28, // langTigrinya → smEthiopic\n 87: 28, // langOromo → smEthiopic\n 88: 0, // langSomali → smRoman\n 89: 0, // langSwahili → smRoman\n 90: 0, // langKinyarwanda → smRoman\n 91: 0, // langRundi → smRoman\n 92: 0, // langNyanja → smRoman\n 93: 0, // langMalagasy → smRoman\n 94: 0, // langEsperanto → smRoman\n 128: 0, // langWelsh → smRoman (modified)\n 129: 0, // langBasque → smRoman\n 130: 0, // langCatalan → smRoman\n 131: 0, // langLatin → smRoman\n 132: 0, // langQuechua → smRoman\n 133: 0, // langGuarani → smRoman\n 134: 0, // langAymara → smRoman\n 135: 7, // langTatar → smCyrillic\n 136: 4, // langUighur → smArabic\n 137: 26, // langDzongkha → smTibetan\n 138: 0, // langJavaneseRom → smRoman\n 139: 0, // langSundaneseRom → smRoman\n 140: 0, // langGalician → smRoman\n 141: 0, // langAfrikaans → smRoman\n 142: 0, // langBreton → smRoman (modified)\n 143: 28, // langInuktitut → smEthiopic (modified)\n 144: 0, // langScottishGaelic → smRoman (modified)\n 145: 0, // langManxGaelic → smRoman (modified)\n 146: 0, // langIrishGaelicScript → smRoman (modified)\n 147: 0, // langTongan → smRoman\n 148: 6, // langGreekAncient → smRoman\n 149: 0, // langGreenlandic → smRoman\n 150: 0, // langAzerbaijanRoman → smRoman\n 151: 0 // langNynorsk → smRoman\n};\n\n// While Microsoft indicates a region/country for all its language\n// IDs, we omit the region code if it's equal to the \"most likely\n// region subtag\" according to Unicode CLDR. For scripts, we omit\n// the subtag if it is equal to the Suppress-Script entry in the\n// IANA language subtag registry for IETF BCP 47.\n//\n// For example, Microsoft states that its language code 0x041A is\n// Croatian in Croatia. We transform this to the BCP 47 language code 'hr'\n// and not 'hr-HR' because Croatia is the default country for Croatian,\n// according to Unicode CLDR. As another example, Microsoft states\n// that 0x101A is Croatian (Latin) in Bosnia-Herzegovina. We transform\n// this to 'hr-BA' and not 'hr-Latn-BA' because Latin is the default script\n// for the Croatian language, according to IANA.\n//\n// http://www.unicode.org/cldr/charts/latest/supplemental/likely_subtags.html\n// http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry\nconst windowsLanguages = {\n 0x0436: 'af',\n 0x041C: 'sq',\n 0x0484: 'gsw',\n 0x045E: 'am',\n 0x1401: 'ar-DZ',\n 0x3C01: 'ar-BH',\n 0x0C01: 'ar',\n 0x0801: 'ar-IQ',\n 0x2C01: 'ar-JO',\n 0x3401: 'ar-KW',\n 0x3001: 'ar-LB',\n 0x1001: 'ar-LY',\n 0x1801: 'ary',\n 0x2001: 'ar-OM',\n 0x4001: 'ar-QA',\n 0x0401: 'ar-SA',\n 0x2801: 'ar-SY',\n 0x1C01: 'aeb',\n 0x3801: 'ar-AE',\n 0x2401: 'ar-YE',\n 0x042B: 'hy',\n 0x044D: 'as',\n 0x082C: 'az-Cyrl',\n 0x042C: 'az',\n 0x046D: 'ba',\n 0x042D: 'eu',\n 0x0423: 'be',\n 0x0845: 'bn',\n 0x0445: 'bn-IN',\n 0x201A: 'bs-Cyrl',\n 0x141A: 'bs',\n 0x047E: 'br',\n 0x0402: 'bg',\n 0x0403: 'ca',\n 0x0C04: 'zh-HK',\n 0x1404: 'zh-MO',\n 0x0804: 'zh',\n 0x1004: 'zh-SG',\n 0x0404: 'zh-TW',\n 0x0483: 'co',\n 0x041A: 'hr',\n 0x101A: 'hr-BA',\n 0x0405: 'cs',\n 0x0406: 'da',\n 0x048C: 'prs',\n 0x0465: 'dv',\n 0x0813: 'nl-BE',\n 0x0413: 'nl',\n 0x0C09: 'en-AU',\n 0x2809: 'en-BZ',\n 0x1009: 'en-CA',\n 0x2409: 'en-029',\n 0x4009: 'en-IN',\n 0x1809: 'en-IE',\n 0x2009: 'en-JM',\n 0x4409: 'en-MY',\n 0x1409: 'en-NZ',\n 0x3409: 'en-PH',\n 0x4809: 'en-SG',\n 0x1C09: 'en-ZA',\n 0x2C09: 'en-TT',\n 0x0809: 'en-GB',\n 0x0409: 'en',\n 0x3009: 'en-ZW',\n 0x0425: 'et',\n 0x0438: 'fo',\n 0x0464: 'fil',\n 0x040B: 'fi',\n 0x080C: 'fr-BE',\n 0x0C0C: 'fr-CA',\n 0x040C: 'fr',\n 0x140C: 'fr-LU',\n 0x180C: 'fr-MC',\n 0x100C: 'fr-CH',\n 0x0462: 'fy',\n 0x0456: 'gl',\n 0x0437: 'ka',\n 0x0C07: 'de-AT',\n 0x0407: 'de',\n 0x1407: 'de-LI',\n 0x1007: 'de-LU',\n 0x0807: 'de-CH',\n 0x0408: 'el',\n 0x046F: 'kl',\n 0x0447: 'gu',\n 0x0468: 'ha',\n 0x040D: 'he',\n 0x0439: 'hi',\n 0x040E: 'hu',\n 0x040F: 'is',\n 0x0470: 'ig',\n 0x0421: 'id',\n 0x045D: 'iu',\n 0x085D: 'iu-Latn',\n 0x083C: 'ga',\n 0x0434: 'xh',\n 0x0435: 'zu',\n 0x0410: 'it',\n 0x0810: 'it-CH',\n 0x0411: 'ja',\n 0x044B: 'kn',\n 0x043F: 'kk',\n 0x0453: 'km',\n 0x0486: 'quc',\n 0x0487: 'rw',\n 0x0441: 'sw',\n 0x0457: 'kok',\n 0x0412: 'ko',\n 0x0440: 'ky',\n 0x0454: 'lo',\n 0x0426: 'lv',\n 0x0427: 'lt',\n 0x082E: 'dsb',\n 0x046E: 'lb',\n 0x042F: 'mk',\n 0x083E: 'ms-BN',\n 0x043E: 'ms',\n 0x044C: 'ml',\n 0x043A: 'mt',\n 0x0481: 'mi',\n 0x047A: 'arn',\n 0x044E: 'mr',\n 0x047C: 'moh',\n 0x0450: 'mn',\n 0x0850: 'mn-CN',\n 0x0461: 'ne',\n 0x0414: 'nb',\n 0x0814: 'nn',\n 0x0482: 'oc',\n 0x0448: 'or',\n 0x0463: 'ps',\n 0x0415: 'pl',\n 0x0416: 'pt',\n 0x0816: 'pt-PT',\n 0x0446: 'pa',\n 0x046B: 'qu-BO',\n 0x086B: 'qu-EC',\n 0x0C6B: 'qu',\n 0x0418: 'ro',\n 0x0417: 'rm',\n 0x0419: 'ru',\n 0x243B: 'smn',\n 0x103B: 'smj-NO',\n 0x143B: 'smj',\n 0x0C3B: 'se-FI',\n 0x043B: 'se',\n 0x083B: 'se-SE',\n 0x203B: 'sms',\n 0x183B: 'sma-NO',\n 0x1C3B: 'sms',\n 0x044F: 'sa',\n 0x1C1A: 'sr-Cyrl-BA',\n 0x0C1A: 'sr',\n 0x181A: 'sr-Latn-BA',\n 0x081A: 'sr-Latn',\n 0x046C: 'nso',\n 0x0432: 'tn',\n 0x045B: 'si',\n 0x041B: 'sk',\n 0x0424: 'sl',\n 0x2C0A: 'es-AR',\n 0x400A: 'es-BO',\n 0x340A: 'es-CL',\n 0x240A: 'es-CO',\n 0x140A: 'es-CR',\n 0x1C0A: 'es-DO',\n 0x300A: 'es-EC',\n 0x440A: 'es-SV',\n 0x100A: 'es-GT',\n 0x480A: 'es-HN',\n 0x080A: 'es-MX',\n 0x4C0A: 'es-NI',\n 0x180A: 'es-PA',\n 0x3C0A: 'es-PY',\n 0x280A: 'es-PE',\n 0x500A: 'es-PR',\n\n // Microsoft has defined two different language codes for\n // “Spanish with modern sorting” and “Spanish with traditional\n // sorting”. This makes sense for collation APIs, and it would be\n // possible to express this in BCP 47 language tags via Unicode\n // extensions (eg., es-u-co-trad is Spanish with traditional\n // sorting). However, for storing names in fonts, the distinction\n // does not make sense, so we give “es” in both cases.\n 0x0C0A: 'es',\n 0x040A: 'es',\n\n 0x540A: 'es-US',\n 0x380A: 'es-UY',\n 0x200A: 'es-VE',\n 0x081D: 'sv-FI',\n 0x041D: 'sv',\n 0x045A: 'syr',\n 0x0428: 'tg',\n 0x085F: 'tzm',\n 0x0449: 'ta',\n 0x0444: 'tt',\n 0x044A: 'te',\n 0x041E: 'th',\n 0x0451: 'bo',\n 0x041F: 'tr',\n 0x0442: 'tk',\n 0x0480: 'ug',\n 0x0422: 'uk',\n 0x042E: 'hsb',\n 0x0420: 'ur',\n 0x0843: 'uz-Cyrl',\n 0x0443: 'uz',\n 0x042A: 'vi',\n 0x0452: 'cy',\n 0x0488: 'wo',\n 0x0485: 'sah',\n 0x0478: 'ii',\n 0x046A: 'yo'\n};\n\n// Returns a IETF BCP 47 language code, for example 'zh-Hant'\n// for 'Chinese in the traditional script'.\nfunction getLanguageCode(platformID, languageID, ltag) {\n switch (platformID) {\n case 0: // Unicode\n if (languageID === 0xFFFF) {\n return 'und';\n } else if (ltag) {\n return ltag[languageID];\n }\n\n break;\n\n case 1: // Macintosh\n return macLanguages[languageID];\n\n case 3: // Windows\n return windowsLanguages[languageID];\n }\n\n return undefined;\n}\n\nconst utf16 = 'utf-16';\n\n// MacOS script ID → encoding. This table stores the default case,\n// which can be overridden by macLanguageEncodings.\nconst macScriptEncodings = {\n 0: 'macintosh', // smRoman\n 1: 'x-mac-japanese', // smJapanese\n 2: 'x-mac-chinesetrad', // smTradChinese\n 3: 'x-mac-korean', // smKorean\n 6: 'x-mac-greek', // smGreek\n 7: 'x-mac-cyrillic', // smCyrillic\n 9: 'x-mac-devanagai', // smDevanagari\n 10: 'x-mac-gurmukhi', // smGurmukhi\n 11: 'x-mac-gujarati', // smGujarati\n 12: 'x-mac-oriya', // smOriya\n 13: 'x-mac-bengali', // smBengali\n 14: 'x-mac-tamil', // smTamil\n 15: 'x-mac-telugu', // smTelugu\n 16: 'x-mac-kannada', // smKannada\n 17: 'x-mac-malayalam', // smMalayalam\n 18: 'x-mac-sinhalese', // smSinhalese\n 19: 'x-mac-burmese', // smBurmese\n 20: 'x-mac-khmer', // smKhmer\n 21: 'x-mac-thai', // smThai\n 22: 'x-mac-lao', // smLao\n 23: 'x-mac-georgian', // smGeorgian\n 24: 'x-mac-armenian', // smArmenian\n 25: 'x-mac-chinesesimp', // smSimpChinese\n 26: 'x-mac-tibetan', // smTibetan\n 27: 'x-mac-mongolian', // smMongolian\n 28: 'x-mac-ethiopic', // smEthiopic\n 29: 'x-mac-ce', // smCentralEuroRoman\n 30: 'x-mac-vietnamese', // smVietnamese\n 31: 'x-mac-extarabic' // smExtArabic\n};\n\n// MacOS language ID → encoding. This table stores the exceptional\n// cases, which override macScriptEncodings. For writing MacOS naming\n// tables, we need to emit a MacOS script ID. Therefore, we cannot\n// merge macScriptEncodings into macLanguageEncodings.\n//\n// http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt\nconst macLanguageEncodings = {\n 15: 'x-mac-icelandic', // langIcelandic\n 17: 'x-mac-turkish', // langTurkish\n 18: 'x-mac-croatian', // langCroatian\n 24: 'x-mac-ce', // langLithuanian\n 25: 'x-mac-ce', // langPolish\n 26: 'x-mac-ce', // langHungarian\n 27: 'x-mac-ce', // langEstonian\n 28: 'x-mac-ce', // langLatvian\n 30: 'x-mac-icelandic', // langFaroese\n 37: 'x-mac-romanian', // langRomanian\n 38: 'x-mac-ce', // langCzech\n 39: 'x-mac-ce', // langSlovak\n 40: 'x-mac-ce', // langSlovenian\n 143: 'x-mac-inuit', // langInuktitut\n 146: 'x-mac-gaelic' // langIrishGaelicScript\n};\n\nfunction getEncoding(platformID, encodingID, languageID) {\n switch (platformID) {\n case 0: // Unicode\n return utf16;\n\n case 1: // Apple Macintosh\n return macLanguageEncodings[languageID] || macScriptEncodings[encodingID];\n\n case 3: // Microsoft Windows\n if (encodingID === 1 || encodingID === 10) {\n return utf16;\n }\n\n break;\n }\n\n return undefined;\n}\n\n// Parse the naming `name` table.\n// FIXME: Format 1 additional fields are not supported yet.\n// ltag is the content of the `ltag' table, such as ['en', 'zh-Hans', 'de-CH-1904'].\nfunction parseNameTable(data, start, ltag) {\n const name = {};\n const p = new parse.Parser(data, start);\n const format = p.parseUShort();\n const count = p.parseUShort();\n const stringOffset = p.offset + p.parseUShort();\n for (let i = 0; i < count; i++) {\n const platformID = p.parseUShort();\n const encodingID = p.parseUShort();\n const languageID = p.parseUShort();\n const nameID = p.parseUShort();\n const property = nameTableNames[nameID] || nameID;\n const byteLength = p.parseUShort();\n const offset = p.parseUShort();\n const language = getLanguageCode(platformID, languageID, ltag);\n const encoding = getEncoding(platformID, encodingID, languageID);\n if (encoding !== undefined && language !== undefined) {\n let text;\n if (encoding === utf16) {\n text = decode.UTF16(data, stringOffset + offset, byteLength);\n } else {\n text = decode.MACSTRING(data, stringOffset + offset, byteLength, encoding);\n }\n\n if (text) {\n let translations = name[property];\n if (translations === undefined) {\n translations = name[property] = {};\n }\n\n translations[language] = text;\n }\n }\n }\n\n let langTagCount = 0;\n if (format === 1) {\n // FIXME: Also handle Microsoft's 'name' table 1.\n langTagCount = p.parseUShort();\n }\n\n return name;\n}\n\n// {23: 'foo'} → {'foo': 23}\n// ['bar', 'baz'] → {'bar': 0, 'baz': 1}\nfunction reverseDict(dict) {\n const result = {};\n for (let key in dict) {\n result[dict[key]] = parseInt(key);\n }\n\n return result;\n}\n\nfunction makeNameRecord(platformID, encodingID, languageID, nameID, length, offset) {\n return new table.Record('NameRecord', [\n {name: 'platformID', type: 'USHORT', value: platformID},\n {name: 'encodingID', type: 'USHORT', value: encodingID},\n {name: 'languageID', type: 'USHORT', value: languageID},\n {name: 'nameID', type: 'USHORT', value: nameID},\n {name: 'length', type: 'USHORT', value: length},\n {name: 'offset', type: 'USHORT', value: offset}\n ]);\n}\n\n// Finds the position of needle in haystack, or -1 if not there.\n// Like String.indexOf(), but for arrays.\nfunction findSubArray(needle, haystack) {\n const needleLength = needle.length;\n const limit = haystack.length - needleLength + 1;\n\n loop:\n for (let pos = 0; pos < limit; pos++) {\n for (; pos < limit; pos++) {\n for (let k = 0; k < needleLength; k++) {\n if (haystack[pos + k] !== needle[k]) {\n continue loop;\n }\n }\n\n return pos;\n }\n }\n\n return -1;\n}\n\nfunction addStringToPool(s, pool) {\n let offset = findSubArray(s, pool);\n if (offset < 0) {\n offset = pool.length;\n let i = 0;\n const len = s.length;\n for (; i < len; ++i) {\n pool.push(s[i]);\n }\n\n }\n\n return offset;\n}\n\nfunction makeNameTable(names, ltag) {\n let nameID;\n const nameIDs = [];\n\n const namesWithNumericKeys = {};\n const nameTableIds = reverseDict(nameTableNames);\n for (let key in names) {\n let id = nameTableIds[key];\n if (id === undefined) {\n id = key;\n }\n\n nameID = parseInt(id);\n\n if (isNaN(nameID)) {\n throw new Error('Name table entry \"' + key + '\" does not exist, see nameTableNames for complete list.');\n }\n\n namesWithNumericKeys[nameID] = names[key];\n nameIDs.push(nameID);\n }\n\n const macLanguageIds = reverseDict(macLanguages);\n const windowsLanguageIds = reverseDict(windowsLanguages);\n\n const nameRecords = [];\n const stringPool = [];\n\n for (let i = 0; i < nameIDs.length; i++) {\n nameID = nameIDs[i];\n const translations = namesWithNumericKeys[nameID];\n for (let lang in translations) {\n const text = translations[lang];\n\n // For MacOS, we try to emit the name in the form that was introduced\n // in the initial version of the TrueType spec (in the late 1980s).\n // However, this can fail for various reasons: the requested BCP 47\n // language code might not have an old-style Mac equivalent;\n // we might not have a codec for the needed character encoding;\n // or the name might contain characters that cannot be expressed\n // in the old-style Macintosh encoding. In case of failure, we emit\n // the name in a more modern fashion (Unicode encoding with BCP 47\n // language tags) that is recognized by MacOS 10.5, released in 2009.\n // If fonts were only read by operating systems, we could simply\n // emit all names in the modern form; this would be much easier.\n // However, there are many applications and libraries that read\n // 'name' tables directly, and these will usually only recognize\n // the ancient form (silently skipping the unrecognized names).\n let macPlatform = 1; // Macintosh\n let macLanguage = macLanguageIds[lang];\n let macScript = macLanguageToScript[macLanguage];\n const macEncoding = getEncoding(macPlatform, macScript, macLanguage);\n let macName = encode.MACSTRING(text, macEncoding);\n if (macName === undefined) {\n macPlatform = 0; // Unicode\n macLanguage = ltag.indexOf(lang);\n if (macLanguage < 0) {\n macLanguage = ltag.length;\n ltag.push(lang);\n }\n\n macScript = 4; // Unicode 2.0 and later\n macName = encode.UTF16(text);\n }\n\n const macNameOffset = addStringToPool(macName, stringPool);\n nameRecords.push(makeNameRecord(macPlatform, macScript, macLanguage,\n nameID, macName.length, macNameOffset));\n\n const winLanguage = windowsLanguageIds[lang];\n if (winLanguage !== undefined) {\n const winName = encode.UTF16(text);\n const winNameOffset = addStringToPool(winName, stringPool);\n nameRecords.push(makeNameRecord(3, 1, winLanguage,\n nameID, winName.length, winNameOffset));\n }\n }\n }\n\n nameRecords.sort(function(a, b) {\n return ((a.platformID - b.platformID) ||\n (a.encodingID - b.encodingID) ||\n (a.languageID - b.languageID) ||\n (a.nameID - b.nameID));\n });\n\n const t = new table.Table('name', [\n {name: 'format', type: 'USHORT', value: 0},\n {name: 'count', type: 'USHORT', value: nameRecords.length},\n {name: 'stringOffset', type: 'USHORT', value: 6 + nameRecords.length * 12}\n ]);\n\n for (let r = 0; r < nameRecords.length; r++) {\n t.fields.push({name: 'record_' + r, type: 'RECORD', value: nameRecords[r]});\n }\n\n t.fields.push({name: 'strings', type: 'LITERAL', value: stringPool});\n return t;\n}\n\nexport default { parse: parseNameTable, make: makeNameTable };\n","// The `OS/2` table contains metrics required in OpenType fonts.\n// https://www.microsoft.com/typography/OTSPEC/os2.htm\n\nimport parse from '../parse';\nimport table from '../table';\n\nconst unicodeRanges = [\n {begin: 0x0000, end: 0x007F}, // Basic Latin\n {begin: 0x0080, end: 0x00FF}, // Latin-1 Supplement\n {begin: 0x0100, end: 0x017F}, // Latin Extended-A\n {begin: 0x0180, end: 0x024F}, // Latin Extended-B\n {begin: 0x0250, end: 0x02AF}, // IPA Extensions\n {begin: 0x02B0, end: 0x02FF}, // Spacing Modifier Letters\n {begin: 0x0300, end: 0x036F}, // Combining Diacritical Marks\n {begin: 0x0370, end: 0x03FF}, // Greek and Coptic\n {begin: 0x2C80, end: 0x2CFF}, // Coptic\n {begin: 0x0400, end: 0x04FF}, // Cyrillic\n {begin: 0x0530, end: 0x058F}, // Armenian\n {begin: 0x0590, end: 0x05FF}, // Hebrew\n {begin: 0xA500, end: 0xA63F}, // Vai\n {begin: 0x0600, end: 0x06FF}, // Arabic\n {begin: 0x07C0, end: 0x07FF}, // NKo\n {begin: 0x0900, end: 0x097F}, // Devanagari\n {begin: 0x0980, end: 0x09FF}, // Bengali\n {begin: 0x0A00, end: 0x0A7F}, // Gurmukhi\n {begin: 0x0A80, end: 0x0AFF}, // Gujarati\n {begin: 0x0B00, end: 0x0B7F}, // Oriya\n {begin: 0x0B80, end: 0x0BFF}, // Tamil\n {begin: 0x0C00, end: 0x0C7F}, // Telugu\n {begin: 0x0C80, end: 0x0CFF}, // Kannada\n {begin: 0x0D00, end: 0x0D7F}, // Malayalam\n {begin: 0x0E00, end: 0x0E7F}, // Thai\n {begin: 0x0E80, end: 0x0EFF}, // Lao\n {begin: 0x10A0, end: 0x10FF}, // Georgian\n {begin: 0x1B00, end: 0x1B7F}, // Balinese\n {begin: 0x1100, end: 0x11FF}, // Hangul Jamo\n {begin: 0x1E00, end: 0x1EFF}, // Latin Extended Additional\n {begin: 0x1F00, end: 0x1FFF}, // Greek Extended\n {begin: 0x2000, end: 0x206F}, // General Punctuation\n {begin: 0x2070, end: 0x209F}, // Superscripts And Subscripts\n {begin: 0x20A0, end: 0x20CF}, // Currency Symbol\n {begin: 0x20D0, end: 0x20FF}, // Combining Diacritical Marks For Symbols\n {begin: 0x2100, end: 0x214F}, // Letterlike Symbols\n {begin: 0x2150, end: 0x218F}, // Number Forms\n {begin: 0x2190, end: 0x21FF}, // Arrows\n {begin: 0x2200, end: 0x22FF}, // Mathematical Operators\n {begin: 0x2300, end: 0x23FF}, // Miscellaneous Technical\n {begin: 0x2400, end: 0x243F}, // Control Pictures\n {begin: 0x2440, end: 0x245F}, // Optical Character Recognition\n {begin: 0x2460, end: 0x24FF}, // Enclosed Alphanumerics\n {begin: 0x2500, end: 0x257F}, // Box Drawing\n {begin: 0x2580, end: 0x259F}, // Block Elements\n {begin: 0x25A0, end: 0x25FF}, // Geometric Shapes\n {begin: 0x2600, end: 0x26FF}, // Miscellaneous Symbols\n {begin: 0x2700, end: 0x27BF}, // Dingbats\n {begin: 0x3000, end: 0x303F}, // CJK Symbols And Punctuation\n {begin: 0x3040, end: 0x309F}, // Hiragana\n {begin: 0x30A0, end: 0x30FF}, // Katakana\n {begin: 0x3100, end: 0x312F}, // Bopomofo\n {begin: 0x3130, end: 0x318F}, // Hangul Compatibility Jamo\n {begin: 0xA840, end: 0xA87F}, // Phags-pa\n {begin: 0x3200, end: 0x32FF}, // Enclosed CJK Letters And Months\n {begin: 0x3300, end: 0x33FF}, // CJK Compatibility\n {begin: 0xAC00, end: 0xD7AF}, // Hangul Syllables\n {begin: 0xD800, end: 0xDFFF}, // Non-Plane 0 *\n {begin: 0x10900, end: 0x1091F}, // Phoenicia\n {begin: 0x4E00, end: 0x9FFF}, // CJK Unified Ideographs\n {begin: 0xE000, end: 0xF8FF}, // Private Use Area (plane 0)\n {begin: 0x31C0, end: 0x31EF}, // CJK Strokes\n {begin: 0xFB00, end: 0xFB4F}, // Alphabetic Presentation Forms\n {begin: 0xFB50, end: 0xFDFF}, // Arabic Presentation Forms-A\n {begin: 0xFE20, end: 0xFE2F}, // Combining Half Marks\n {begin: 0xFE10, end: 0xFE1F}, // Vertical Forms\n {begin: 0xFE50, end: 0xFE6F}, // Small Form Variants\n {begin: 0xFE70, end: 0xFEFF}, // Arabic Presentation Forms-B\n {begin: 0xFF00, end: 0xFFEF}, // Halfwidth And Fullwidth Forms\n {begin: 0xFFF0, end: 0xFFFF}, // Specials\n {begin: 0x0F00, end: 0x0FFF}, // Tibetan\n {begin: 0x0700, end: 0x074F}, // Syriac\n {begin: 0x0780, end: 0x07BF}, // Thaana\n {begin: 0x0D80, end: 0x0DFF}, // Sinhala\n {begin: 0x1000, end: 0x109F}, // Myanmar\n {begin: 0x1200, end: 0x137F}, // Ethiopic\n {begin: 0x13A0, end: 0x13FF}, // Cherokee\n {begin: 0x1400, end: 0x167F}, // Unified Canadian Aboriginal Syllabics\n {begin: 0x1680, end: 0x169F}, // Ogham\n {begin: 0x16A0, end: 0x16FF}, // Runic\n {begin: 0x1780, end: 0x17FF}, // Khmer\n {begin: 0x1800, end: 0x18AF}, // Mongolian\n {begin: 0x2800, end: 0x28FF}, // Braille Patterns\n {begin: 0xA000, end: 0xA48F}, // Yi Syllables\n {begin: 0x1700, end: 0x171F}, // Tagalog\n {begin: 0x10300, end: 0x1032F}, // Old Italic\n {begin: 0x10330, end: 0x1034F}, // Gothic\n {begin: 0x10400, end: 0x1044F}, // Deseret\n {begin: 0x1D000, end: 0x1D0FF}, // Byzantine Musical Symbols\n {begin: 0x1D400, end: 0x1D7FF}, // Mathematical Alphanumeric Symbols\n {begin: 0xFF000, end: 0xFFFFD}, // Private Use (plane 15)\n {begin: 0xFE00, end: 0xFE0F}, // Variation Selectors\n {begin: 0xE0000, end: 0xE007F}, // Tags\n {begin: 0x1900, end: 0x194F}, // Limbu\n {begin: 0x1950, end: 0x197F}, // Tai Le\n {begin: 0x1980, end: 0x19DF}, // New Tai Lue\n {begin: 0x1A00, end: 0x1A1F}, // Buginese\n {begin: 0x2C00, end: 0x2C5F}, // Glagolitic\n {begin: 0x2D30, end: 0x2D7F}, // Tifinagh\n {begin: 0x4DC0, end: 0x4DFF}, // Yijing Hexagram Symbols\n {begin: 0xA800, end: 0xA82F}, // Syloti Nagri\n {begin: 0x10000, end: 0x1007F}, // Linear B Syllabary\n {begin: 0x10140, end: 0x1018F}, // Ancient Greek Numbers\n {begin: 0x10380, end: 0x1039F}, // Ugaritic\n {begin: 0x103A0, end: 0x103DF}, // Old Persian\n {begin: 0x10450, end: 0x1047F}, // Shavian\n {begin: 0x10480, end: 0x104AF}, // Osmanya\n {begin: 0x10800, end: 0x1083F}, // Cypriot Syllabary\n {begin: 0x10A00, end: 0x10A5F}, // Kharoshthi\n {begin: 0x1D300, end: 0x1D35F}, // Tai Xuan Jing Symbols\n {begin: 0x12000, end: 0x123FF}, // Cuneiform\n {begin: 0x1D360, end: 0x1D37F}, // Counting Rod Numerals\n {begin: 0x1B80, end: 0x1BBF}, // Sundanese\n {begin: 0x1C00, end: 0x1C4F}, // Lepcha\n {begin: 0x1C50, end: 0x1C7F}, // Ol Chiki\n {begin: 0xA880, end: 0xA8DF}, // Saurashtra\n {begin: 0xA900, end: 0xA92F}, // Kayah Li\n {begin: 0xA930, end: 0xA95F}, // Rejang\n {begin: 0xAA00, end: 0xAA5F}, // Cham\n {begin: 0x10190, end: 0x101CF}, // Ancient Symbols\n {begin: 0x101D0, end: 0x101FF}, // Phaistos Disc\n {begin: 0x102A0, end: 0x102DF}, // Carian\n {begin: 0x1F030, end: 0x1F09F} // Domino Tiles\n];\n\nfunction getUnicodeRange(unicode) {\n for (let i = 0; i < unicodeRanges.length; i += 1) {\n const range = unicodeRanges[i];\n if (unicode >= range.begin && unicode < range.end) {\n return i;\n }\n }\n\n return -1;\n}\n\n// Parse the OS/2 and Windows metrics `OS/2` table\nfunction parseOS2Table(data, start) {\n const os2 = {};\n const p = new parse.Parser(data, start);\n os2.version = p.parseUShort();\n os2.xAvgCharWidth = p.parseShort();\n os2.usWeightClass = p.parseUShort();\n os2.usWidthClass = p.parseUShort();\n os2.fsType = p.parseUShort();\n os2.ySubscriptXSize = p.parseShort();\n os2.ySubscriptYSize = p.parseShort();\n os2.ySubscriptXOffset = p.parseShort();\n os2.ySubscriptYOffset = p.parseShort();\n os2.ySuperscriptXSize = p.parseShort();\n os2.ySuperscriptYSize = p.parseShort();\n os2.ySuperscriptXOffset = p.parseShort();\n os2.ySuperscriptYOffset = p.parseShort();\n os2.yStrikeoutSize = p.parseShort();\n os2.yStrikeoutPosition = p.parseShort();\n os2.sFamilyClass = p.parseShort();\n os2.panose = [];\n for (let i = 0; i < 10; i++) {\n os2.panose[i] = p.parseByte();\n }\n\n os2.ulUnicodeRange1 = p.parseULong();\n os2.ulUnicodeRange2 = p.parseULong();\n os2.ulUnicodeRange3 = p.parseULong();\n os2.ulUnicodeRange4 = p.parseULong();\n os2.achVendID = String.fromCharCode(p.parseByte(), p.parseByte(), p.parseByte(), p.parseByte());\n os2.fsSelection = p.parseUShort();\n os2.usFirstCharIndex = p.parseUShort();\n os2.usLastCharIndex = p.parseUShort();\n os2.sTypoAscender = p.parseShort();\n os2.sTypoDescender = p.parseShort();\n os2.sTypoLineGap = p.parseShort();\n os2.usWinAscent = p.parseUShort();\n os2.usWinDescent = p.parseUShort();\n if (os2.version >= 1) {\n os2.ulCodePageRange1 = p.parseULong();\n os2.ulCodePageRange2 = p.parseULong();\n }\n\n if (os2.version >= 2) {\n os2.sxHeight = p.parseShort();\n os2.sCapHeight = p.parseShort();\n os2.usDefaultChar = p.parseUShort();\n os2.usBreakChar = p.parseUShort();\n os2.usMaxContent = p.parseUShort();\n }\n\n return os2;\n}\n\nfunction makeOS2Table(options) {\n return new table.Table('OS/2', [\n {name: 'version', type: 'USHORT', value: 0x0003},\n {name: 'xAvgCharWidth', type: 'SHORT', value: 0},\n {name: 'usWeightClass', type: 'USHORT', value: 0},\n {name: 'usWidthClass', type: 'USHORT', value: 0},\n {name: 'fsType', type: 'USHORT', value: 0},\n {name: 'ySubscriptXSize', type: 'SHORT', value: 650},\n {name: 'ySubscriptYSize', type: 'SHORT', value: 699},\n {name: 'ySubscriptXOffset', type: 'SHORT', value: 0},\n {name: 'ySubscriptYOffset', type: 'SHORT', value: 140},\n {name: 'ySuperscriptXSize', type: 'SHORT', value: 650},\n {name: 'ySuperscriptYSize', type: 'SHORT', value: 699},\n {name: 'ySuperscriptXOffset', type: 'SHORT', value: 0},\n {name: 'ySuperscriptYOffset', type: 'SHORT', value: 479},\n {name: 'yStrikeoutSize', type: 'SHORT', value: 49},\n {name: 'yStrikeoutPosition', type: 'SHORT', value: 258},\n {name: 'sFamilyClass', type: 'SHORT', value: 0},\n {name: 'bFamilyType', type: 'BYTE', value: 0},\n {name: 'bSerifStyle', type: 'BYTE', value: 0},\n {name: 'bWeight', type: 'BYTE', value: 0},\n {name: 'bProportion', type: 'BYTE', value: 0},\n {name: 'bContrast', type: 'BYTE', value: 0},\n {name: 'bStrokeVariation', type: 'BYTE', value: 0},\n {name: 'bArmStyle', type: 'BYTE', value: 0},\n {name: 'bLetterform', type: 'BYTE', value: 0},\n {name: 'bMidline', type: 'BYTE', value: 0},\n {name: 'bXHeight', type: 'BYTE', value: 0},\n {name: 'ulUnicodeRange1', type: 'ULONG', value: 0},\n {name: 'ulUnicodeRange2', type: 'ULONG', value: 0},\n {name: 'ulUnicodeRange3', type: 'ULONG', value: 0},\n {name: 'ulUnicodeRange4', type: 'ULONG', value: 0},\n {name: 'achVendID', type: 'CHARARRAY', value: 'XXXX'},\n {name: 'fsSelection', type: 'USHORT', value: 0},\n {name: 'usFirstCharIndex', type: 'USHORT', value: 0},\n {name: 'usLastCharIndex', type: 'USHORT', value: 0},\n {name: 'sTypoAscender', type: 'SHORT', value: 0},\n {name: 'sTypoDescender', type: 'SHORT', value: 0},\n {name: 'sTypoLineGap', type: 'SHORT', value: 0},\n {name: 'usWinAscent', type: 'USHORT', value: 0},\n {name: 'usWinDescent', type: 'USHORT', value: 0},\n {name: 'ulCodePageRange1', type: 'ULONG', value: 0},\n {name: 'ulCodePageRange2', type: 'ULONG', value: 0},\n {name: 'sxHeight', type: 'SHORT', value: 0},\n {name: 'sCapHeight', type: 'SHORT', value: 0},\n {name: 'usDefaultChar', type: 'USHORT', value: 0},\n {name: 'usBreakChar', type: 'USHORT', value: 0},\n {name: 'usMaxContext', type: 'USHORT', value: 0}\n ], options);\n}\n\nexport default { parse: parseOS2Table, make: makeOS2Table, unicodeRanges, getUnicodeRange };\n","// The `post` table stores additional PostScript information, such as glyph names.\n// https://www.microsoft.com/typography/OTSPEC/post.htm\n\nimport { standardNames } from '../encoding';\nimport parse from '../parse';\nimport table from '../table';\n\n// Parse the PostScript `post` table\nfunction parsePostTable(data, start) {\n const post = {};\n const p = new parse.Parser(data, start);\n post.version = p.parseVersion();\n post.italicAngle = p.parseFixed();\n post.underlinePosition = p.parseShort();\n post.underlineThickness = p.parseShort();\n post.isFixedPitch = p.parseULong();\n post.minMemType42 = p.parseULong();\n post.maxMemType42 = p.parseULong();\n post.minMemType1 = p.parseULong();\n post.maxMemType1 = p.parseULong();\n switch (post.version) {\n case 1:\n post.names = standardNames.slice();\n break;\n case 2:\n post.numberOfGlyphs = p.parseUShort();\n post.glyphNameIndex = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n post.glyphNameIndex[i] = p.parseUShort();\n }\n\n post.names = [];\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n if (post.glyphNameIndex[i] >= standardNames.length) {\n const nameLength = p.parseChar();\n post.names.push(p.parseString(nameLength));\n }\n }\n\n break;\n case 2.5:\n post.numberOfGlyphs = p.parseUShort();\n post.offset = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n post.offset[i] = p.parseChar();\n }\n\n break;\n }\n return post;\n}\n\nfunction makePostTable() {\n return new table.Table('post', [\n {name: 'version', type: 'FIXED', value: 0x00030000},\n {name: 'italicAngle', type: 'FIXED', value: 0},\n {name: 'underlinePosition', type: 'FWORD', value: 0},\n {name: 'underlineThickness', type: 'FWORD', value: 0},\n {name: 'isFixedPitch', type: 'ULONG', value: 0},\n {name: 'minMemType42', type: 'ULONG', value: 0},\n {name: 'maxMemType42', type: 'ULONG', value: 0},\n {name: 'minMemType1', type: 'ULONG', value: 0},\n {name: 'maxMemType1', type: 'ULONG', value: 0}\n ]);\n}\n\nexport default { parse: parsePostTable, make: makePostTable };\n","// The `GSUB` table contains ligatures, among other things.\n// https://www.microsoft.com/typography/OTSPEC/gsub.htm\n\nimport check from '../check';\nimport { Parser } from '../parse';\nimport table from '../table';\n\nconst subtableParsers = new Array(9); // subtableParsers[0] is unused\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#SS\nsubtableParsers[1] = function parseLookup1() {\n const start = this.offset + this.relativeOffset;\n const substFormat = this.parseUShort();\n if (substFormat === 1) {\n return {\n substFormat: 1,\n coverage: this.parsePointer(Parser.coverage),\n deltaGlyphId: this.parseUShort()\n };\n } else if (substFormat === 2) {\n return {\n substFormat: 2,\n coverage: this.parsePointer(Parser.coverage),\n substitute: this.parseOffset16List()\n };\n }\n check.assert(false, '0x' + start.toString(16) + ': lookup type 1 format must be 1 or 2.');\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#MS\nsubtableParsers[2] = function parseLookup2() {\n const substFormat = this.parseUShort();\n check.argument(substFormat === 1, 'GSUB Multiple Substitution Subtable identifier-format must be 1');\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n sequences: this.parseListOfLists()\n };\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#AS\nsubtableParsers[3] = function parseLookup3() {\n const substFormat = this.parseUShort();\n check.argument(substFormat === 1, 'GSUB Alternate Substitution Subtable identifier-format must be 1');\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n alternateSets: this.parseListOfLists()\n };\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#LS\nsubtableParsers[4] = function parseLookup4() {\n const substFormat = this.parseUShort();\n check.argument(substFormat === 1, 'GSUB ligature table identifier-format must be 1');\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n ligatureSets: this.parseListOfLists(function() {\n return {\n ligGlyph: this.parseUShort(),\n components: this.parseUShortList(this.parseUShort() - 1)\n };\n })\n };\n};\n\nconst lookupRecordDesc = {\n sequenceIndex: Parser.uShort,\n lookupListIndex: Parser.uShort\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#CSF\nsubtableParsers[5] = function parseLookup5() {\n const start = this.offset + this.relativeOffset;\n const substFormat = this.parseUShort();\n\n if (substFormat === 1) {\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n ruleSets: this.parseListOfLists(function() {\n const glyphCount = this.parseUShort();\n const substCount = this.parseUShort();\n return {\n input: this.parseUShortList(glyphCount - 1),\n lookupRecords: this.parseRecordList(substCount, lookupRecordDesc)\n };\n })\n };\n } else if (substFormat === 2) {\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n classDef: this.parsePointer(Parser.classDef),\n classSets: this.parseListOfLists(function() {\n const glyphCount = this.parseUShort();\n const substCount = this.parseUShort();\n return {\n classes: this.parseUShortList(glyphCount - 1),\n lookupRecords: this.parseRecordList(substCount, lookupRecordDesc)\n };\n })\n };\n } else if (substFormat === 3) {\n const glyphCount = this.parseUShort();\n const substCount = this.parseUShort();\n return {\n substFormat: substFormat,\n coverages: this.parseList(glyphCount, Parser.pointer(Parser.coverage)),\n lookupRecords: this.parseRecordList(substCount, lookupRecordDesc)\n };\n }\n check.assert(false, '0x' + start.toString(16) + ': lookup type 5 format must be 1, 2 or 3.');\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#CC\nsubtableParsers[6] = function parseLookup6() {\n const start = this.offset + this.relativeOffset;\n const substFormat = this.parseUShort();\n if (substFormat === 1) {\n return {\n substFormat: 1,\n coverage: this.parsePointer(Parser.coverage),\n chainRuleSets: this.parseListOfLists(function() {\n return {\n backtrack: this.parseUShortList(),\n input: this.parseUShortList(this.parseShort() - 1),\n lookahead: this.parseUShortList(),\n lookupRecords: this.parseRecordList(lookupRecordDesc)\n };\n })\n };\n } else if (substFormat === 2) {\n return {\n substFormat: 2,\n coverage: this.parsePointer(Parser.coverage),\n backtrackClassDef: this.parsePointer(Parser.classDef),\n inputClassDef: this.parsePointer(Parser.classDef),\n lookaheadClassDef: this.parsePointer(Parser.classDef),\n chainClassSet: this.parseListOfLists(function() {\n return {\n backtrack: this.parseUShortList(),\n input: this.parseUShortList(this.parseShort() - 1),\n lookahead: this.parseUShortList(),\n lookupRecords: this.parseRecordList(lookupRecordDesc)\n };\n })\n };\n } else if (substFormat === 3) {\n return {\n substFormat: 3,\n backtrackCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n inputCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n lookaheadCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n lookupRecords: this.parseRecordList(lookupRecordDesc)\n };\n }\n check.assert(false, '0x' + start.toString(16) + ': lookup type 6 format must be 1, 2 or 3.');\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#ES\nsubtableParsers[7] = function parseLookup7() {\n // Extension Substitution subtable\n const substFormat = this.parseUShort();\n check.argument(substFormat === 1, 'GSUB Extension Substitution subtable identifier-format must be 1');\n const extensionLookupType = this.parseUShort();\n const extensionParser = new Parser(this.data, this.offset + this.parseULong());\n return {\n substFormat: 1,\n lookupType: extensionLookupType,\n extension: subtableParsers[extensionLookupType].call(extensionParser)\n };\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#RCCS\nsubtableParsers[8] = function parseLookup8() {\n const substFormat = this.parseUShort();\n check.argument(substFormat === 1, 'GSUB Reverse Chaining Contextual Single Substitution Subtable identifier-format must be 1');\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n backtrackCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n lookaheadCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n substitutes: this.parseUShortList()\n };\n};\n\n// https://www.microsoft.com/typography/OTSPEC/gsub.htm\nfunction parseGsubTable(data, start) {\n start = start || 0;\n const p = new Parser(data, start);\n const tableVersion = p.parseVersion(1);\n check.argument(tableVersion === 1 || tableVersion === 1.1, 'Unsupported GSUB table version.');\n if (tableVersion === 1) {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers)\n };\n } else {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers),\n variations: p.parseFeatureVariationsList()\n };\n }\n\n}\n\n// GSUB Writing //////////////////////////////////////////////\nconst subtableMakers = new Array(9);\n\nsubtableMakers[1] = function makeLookup1(subtable) {\n if (subtable.substFormat === 1) {\n return new table.Table('substitutionTable', [\n {name: 'substFormat', type: 'USHORT', value: 1},\n {name: 'coverage', type: 'TABLE', value: new table.Coverage(subtable.coverage)},\n {name: 'deltaGlyphID', type: 'USHORT', value: subtable.deltaGlyphId}\n ]);\n } else {\n return new table.Table('substitutionTable', [\n {name: 'substFormat', type: 'USHORT', value: 2},\n {name: 'coverage', type: 'TABLE', value: new table.Coverage(subtable.coverage)}\n ].concat(table.ushortList('substitute', subtable.substitute)));\n }\n check.fail('Lookup type 1 substFormat must be 1 or 2.');\n};\n\nsubtableMakers[2] = function makeLookup2(subtable) {\n check.assert(subtable.substFormat === 1, 'Lookup type 2 substFormat must be 1.');\n return new table.Table('substitutionTable', [\n {name: 'substFormat', type: 'USHORT', value: 1},\n {name: 'coverage', type: 'TABLE', value: new table.Coverage(subtable.coverage)}\n ].concat(table.tableList('seqSet', subtable.sequences, function(sequenceSet) {\n return new table.Table('sequenceSetTable', table.ushortList('sequence', sequenceSet));\n })));\n};\n\nsubtableMakers[3] = function makeLookup3(subtable) {\n check.assert(subtable.substFormat === 1, 'Lookup type 3 substFormat must be 1.');\n return new table.Table('substitutionTable', [\n {name: 'substFormat', type: 'USHORT', value: 1},\n {name: 'coverage', type: 'TABLE', value: new table.Coverage(subtable.coverage)}\n ].concat(table.tableList('altSet', subtable.alternateSets, function(alternateSet) {\n return new table.Table('alternateSetTable', table.ushortList('alternate', alternateSet));\n })));\n};\n\nsubtableMakers[4] = function makeLookup4(subtable) {\n check.assert(subtable.substFormat === 1, 'Lookup type 4 substFormat must be 1.');\n return new table.Table('substitutionTable', [\n {name: 'substFormat', type: 'USHORT', value: 1},\n {name: 'coverage', type: 'TABLE', value: new table.Coverage(subtable.coverage)}\n ].concat(table.tableList('ligSet', subtable.ligatureSets, function(ligatureSet) {\n return new table.Table('ligatureSetTable', table.tableList('ligature', ligatureSet, function(ligature) {\n return new table.Table('ligatureTable',\n [{name: 'ligGlyph', type: 'USHORT', value: ligature.ligGlyph}]\n .concat(table.ushortList('component', ligature.components, ligature.components.length + 1))\n );\n }));\n })));\n};\n\nsubtableMakers[6] = function makeLookup6(subtable) {\n if (subtable.substFormat === 1) {\n let returnTable = new table.Table('chainContextTable', [\n {name: 'substFormat', type: 'USHORT', value: subtable.substFormat},\n {name: 'coverage', type: 'TABLE', value: new table.Coverage(subtable.coverage)}\n ].concat(table.tableList('chainRuleSet', subtable.chainRuleSets, function(chainRuleSet) {\n return new table.Table('chainRuleSetTable', table.tableList('chainRule', chainRuleSet, function(chainRule) {\n let tableData = table.ushortList('backtrackGlyph', chainRule.backtrack, chainRule.backtrack.length)\n .concat(table.ushortList('inputGlyph', chainRule.input, chainRule.input.length + 1))\n .concat(table.ushortList('lookaheadGlyph', chainRule.lookahead, chainRule.lookahead.length))\n .concat(table.ushortList('substitution', [], chainRule.lookupRecords.length));\n\n chainRule.lookupRecords.forEach((record, i) => {\n tableData = tableData\n .concat({name: 'sequenceIndex' + i, type: 'USHORT', value: record.sequenceIndex})\n .concat({name: 'lookupListIndex' + i, type: 'USHORT', value: record.lookupListIndex});\n });\n return new table.Table('chainRuleTable', tableData);\n }));\n })));\n return returnTable;\n } else if (subtable.substFormat === 2) {\n check.assert(false, 'lookup type 6 format 2 is not yet supported.');\n } else if (subtable.substFormat === 3) {\n let tableData = [\n {name: 'substFormat', type: 'USHORT', value: subtable.substFormat},\n ];\n\n tableData.push({name: 'backtrackGlyphCount', type: 'USHORT', value: subtable.backtrackCoverage.length});\n subtable.backtrackCoverage.forEach((coverage, i) => {\n tableData.push({name: 'backtrackCoverage' + i, type: 'TABLE', value: new table.Coverage(coverage)});\n });\n tableData.push({name: 'inputGlyphCount', type: 'USHORT', value: subtable.inputCoverage.length});\n subtable.inputCoverage.forEach((coverage, i) => {\n tableData.push({name: 'inputCoverage' + i, type: 'TABLE', value: new table.Coverage(coverage)});\n });\n tableData.push({name: 'lookaheadGlyphCount', type: 'USHORT', value: subtable.lookaheadCoverage.length});\n subtable.lookaheadCoverage.forEach((coverage, i) => {\n tableData.push({name: 'lookaheadCoverage' + i, type: 'TABLE', value: new table.Coverage(coverage)});\n });\n\n tableData.push({name: 'substitutionCount', type: 'USHORT', value: subtable.lookupRecords.length});\n subtable.lookupRecords.forEach((record, i) => {\n tableData = tableData\n .concat({name: 'sequenceIndex' + i, type: 'USHORT', value: record.sequenceIndex})\n .concat({name: 'lookupListIndex' + i, type: 'USHORT', value: record.lookupListIndex});\n });\n\n let returnTable = new table.Table('chainContextTable', tableData);\n\n return returnTable;\n }\n\n check.assert(false, 'lookup type 6 format must be 1, 2 or 3.');\n};\n\nfunction makeGsubTable(gsub) {\n return new table.Table('GSUB', [\n {name: 'version', type: 'ULONG', value: 0x10000},\n {name: 'scripts', type: 'TABLE', value: new table.ScriptList(gsub.scripts)},\n {name: 'features', type: 'TABLE', value: new table.FeatureList(gsub.features)},\n {name: 'lookups', type: 'TABLE', value: new table.LookupList(gsub.lookups, subtableMakers)}\n ]);\n}\n\nexport default { parse: parseGsubTable, make: makeGsubTable };\n","// The `GPOS` table contains kerning pairs, among other things.\n// https://www.microsoft.com/typography/OTSPEC/gpos.htm\n\nimport check from '../check';\nimport { decode } from '../types';\nimport parse from '../parse';\nimport table from '../table';\n\n// Parse the metadata `meta` table.\n// https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6meta.html\nfunction parseMetaTable(data, start) {\n const p = new parse.Parser(data, start);\n const tableVersion = p.parseULong();\n check.argument(tableVersion === 1, 'Unsupported META table version.');\n p.parseULong(); // flags - currently unused and set to 0\n p.parseULong(); // tableOffset\n const numDataMaps = p.parseULong();\n\n const tags = {};\n for (let i = 0; i < numDataMaps; i++) {\n const tag = p.parseTag();\n const dataOffset = p.parseULong();\n const dataLength = p.parseULong();\n const text = decode.UTF8(data, start + dataOffset, dataLength);\n\n tags[tag] = text;\n }\n return tags;\n}\n\nfunction makeMetaTable(tags) {\n const numTags = Object.keys(tags).length;\n let stringPool = '';\n const stringPoolOffset = 16 + numTags * 12;\n\n const result = new table.Table('meta', [\n {name: 'version', type: 'ULONG', value: 1},\n {name: 'flags', type: 'ULONG', value: 0},\n {name: 'offset', type: 'ULONG', value: stringPoolOffset},\n {name: 'numTags', type: 'ULONG', value: numTags}\n ]);\n\n for (let tag in tags) {\n const pos = stringPool.length;\n stringPool += tags[tag];\n\n result.fields.push({name: 'tag ' + tag, type: 'TAG', value: tag});\n result.fields.push({name: 'offset ' + tag, type: 'ULONG', value: stringPoolOffset + pos});\n result.fields.push({name: 'length ' + tag, type: 'ULONG', value: tags[tag].length});\n }\n\n result.fields.push({name: 'stringPool', type: 'CHARARRAY', value: stringPool});\n\n return result;\n}\n\nexport default { parse: parseMetaTable, make: makeMetaTable };\n","// The `sfnt` wrapper provides organization for the tables in the font.\n// It is the top-level data structure in a font.\n// https://www.microsoft.com/typography/OTSPEC/otff.htm\n// Recommendations for creating OpenType Fonts:\n// http://www.microsoft.com/typography/otspec140/recom.htm\n\nimport check from '../check';\nimport table from '../table';\n\nimport cmap from './cmap';\nimport cff from './cff';\nimport head from './head';\nimport hhea from './hhea';\nimport hmtx from './hmtx';\nimport ltag from './ltag';\nimport maxp from './maxp';\nimport _name from './name';\nimport os2 from './os2';\nimport post from './post';\nimport gsub from './gsub';\nimport meta from './meta';\n\nfunction log2(v) {\n return Math.log(v) / Math.log(2) | 0;\n}\n\nfunction computeCheckSum(bytes) {\n while (bytes.length % 4 !== 0) {\n bytes.push(0);\n }\n\n let sum = 0;\n for (let i = 0; i < bytes.length; i += 4) {\n sum += (bytes[i] << 24) +\n (bytes[i + 1] << 16) +\n (bytes[i + 2] << 8) +\n (bytes[i + 3]);\n }\n\n sum %= Math.pow(2, 32);\n return sum;\n}\n\nfunction makeTableRecord(tag, checkSum, offset, length) {\n return new table.Record('Table Record', [\n {name: 'tag', type: 'TAG', value: tag !== undefined ? tag : ''},\n {name: 'checkSum', type: 'ULONG', value: checkSum !== undefined ? checkSum : 0},\n {name: 'offset', type: 'ULONG', value: offset !== undefined ? offset : 0},\n {name: 'length', type: 'ULONG', value: length !== undefined ? length : 0}\n ]);\n}\n\nfunction makeSfntTable(tables) {\n const sfnt = new table.Table('sfnt', [\n {name: 'version', type: 'TAG', value: 'OTTO'},\n {name: 'numTables', type: 'USHORT', value: 0},\n {name: 'searchRange', type: 'USHORT', value: 0},\n {name: 'entrySelector', type: 'USHORT', value: 0},\n {name: 'rangeShift', type: 'USHORT', value: 0}\n ]);\n sfnt.tables = tables;\n sfnt.numTables = tables.length;\n const highestPowerOf2 = Math.pow(2, log2(sfnt.numTables));\n sfnt.searchRange = 16 * highestPowerOf2;\n sfnt.entrySelector = log2(highestPowerOf2);\n sfnt.rangeShift = sfnt.numTables * 16 - sfnt.searchRange;\n\n const recordFields = [];\n const tableFields = [];\n\n let offset = sfnt.sizeOf() + (makeTableRecord().sizeOf() * sfnt.numTables);\n while (offset % 4 !== 0) {\n offset += 1;\n tableFields.push({name: 'padding', type: 'BYTE', value: 0});\n }\n\n for (let i = 0; i < tables.length; i += 1) {\n const t = tables[i];\n check.argument(t.tableName.length === 4, 'Table name' + t.tableName + ' is invalid.');\n const tableLength = t.sizeOf();\n const tableRecord = makeTableRecord(t.tableName, computeCheckSum(t.encode()), offset, tableLength);\n recordFields.push({name: tableRecord.tag + ' Table Record', type: 'RECORD', value: tableRecord});\n tableFields.push({name: t.tableName + ' table', type: 'RECORD', value: t});\n offset += tableLength;\n check.argument(!isNaN(offset), 'Something went wrong calculating the offset.');\n while (offset % 4 !== 0) {\n offset += 1;\n tableFields.push({name: 'padding', type: 'BYTE', value: 0});\n }\n }\n\n // Table records need to be sorted alphabetically.\n recordFields.sort(function(r1, r2) {\n if (r1.value.tag > r2.value.tag) {\n return 1;\n } else {\n return -1;\n }\n });\n\n sfnt.fields = sfnt.fields.concat(recordFields);\n sfnt.fields = sfnt.fields.concat(tableFields);\n return sfnt;\n}\n\n// Get the metrics for a character. If the string has more than one character\n// this function returns metrics for the first available character.\n// You can provide optional fallback metrics if no characters are available.\nfunction metricsForChar(font, chars, notFoundMetrics) {\n for (let i = 0; i < chars.length; i += 1) {\n const glyphIndex = font.charToGlyphIndex(chars[i]);\n if (glyphIndex > 0) {\n const glyph = font.glyphs.get(glyphIndex);\n return glyph.getMetrics();\n }\n }\n\n return notFoundMetrics;\n}\n\nfunction average(vs) {\n let sum = 0;\n for (let i = 0; i < vs.length; i += 1) {\n sum += vs[i];\n }\n\n return sum / vs.length;\n}\n\n// Convert the font object to a SFNT data structure.\n// This structure contains all the necessary tables and metadata to create a binary OTF file.\nfunction fontToSfntTable(font) {\n const xMins = [];\n const yMins = [];\n const xMaxs = [];\n const yMaxs = [];\n const advanceWidths = [];\n const leftSideBearings = [];\n const rightSideBearings = [];\n let firstCharIndex;\n let lastCharIndex = 0;\n let ulUnicodeRange1 = 0;\n let ulUnicodeRange2 = 0;\n let ulUnicodeRange3 = 0;\n let ulUnicodeRange4 = 0;\n\n for (let i = 0; i < font.glyphs.length; i += 1) {\n const glyph = font.glyphs.get(i);\n const unicode = glyph.unicode | 0;\n\n if (isNaN(glyph.advanceWidth)) {\n throw new Error('Glyph ' + glyph.name + ' (' + i + '): advanceWidth is not a number.');\n }\n\n if (firstCharIndex > unicode || firstCharIndex === undefined) {\n // ignore .notdef char\n if (unicode > 0) {\n firstCharIndex = unicode;\n }\n }\n\n if (lastCharIndex < unicode) {\n lastCharIndex = unicode;\n }\n\n const position = os2.getUnicodeRange(unicode);\n if (position < 32) {\n ulUnicodeRange1 |= 1 << position;\n } else if (position < 64) {\n ulUnicodeRange2 |= 1 << position - 32;\n } else if (position < 96) {\n ulUnicodeRange3 |= 1 << position - 64;\n } else if (position < 123) {\n ulUnicodeRange4 |= 1 << position - 96;\n } else {\n throw new Error('Unicode ranges bits > 123 are reserved for internal usage');\n }\n // Skip non-important characters.\n if (glyph.name === '.notdef') continue;\n const metrics = glyph.getMetrics();\n xMins.push(metrics.xMin);\n yMins.push(metrics.yMin);\n xMaxs.push(metrics.xMax);\n yMaxs.push(metrics.yMax);\n leftSideBearings.push(metrics.leftSideBearing);\n rightSideBearings.push(metrics.rightSideBearing);\n advanceWidths.push(glyph.advanceWidth);\n }\n\n const globals = {\n xMin: Math.min.apply(null, xMins),\n yMin: Math.min.apply(null, yMins),\n xMax: Math.max.apply(null, xMaxs),\n yMax: Math.max.apply(null, yMaxs),\n advanceWidthMax: Math.max.apply(null, advanceWidths),\n advanceWidthAvg: average(advanceWidths),\n minLeftSideBearing: Math.min.apply(null, leftSideBearings),\n maxLeftSideBearing: Math.max.apply(null, leftSideBearings),\n minRightSideBearing: Math.min.apply(null, rightSideBearings)\n };\n globals.ascender = font.ascender;\n globals.descender = font.descender;\n\n const headTable = head.make({\n flags: 3, // 00000011 (baseline for font at y=0; left sidebearing point at x=0)\n unitsPerEm: font.unitsPerEm,\n xMin: globals.xMin,\n yMin: globals.yMin,\n xMax: globals.xMax,\n yMax: globals.yMax,\n lowestRecPPEM: 3,\n createdTimestamp: font.createdTimestamp\n });\n\n const hheaTable = hhea.make({\n ascender: globals.ascender,\n descender: globals.descender,\n advanceWidthMax: globals.advanceWidthMax,\n minLeftSideBearing: globals.minLeftSideBearing,\n minRightSideBearing: globals.minRightSideBearing,\n xMaxExtent: globals.maxLeftSideBearing + (globals.xMax - globals.xMin),\n numberOfHMetrics: font.glyphs.length\n });\n\n const maxpTable = maxp.make(font.glyphs.length);\n\n const os2Table = os2.make(Object.assign({\n xAvgCharWidth: Math.round(globals.advanceWidthAvg),\n usFirstCharIndex: firstCharIndex,\n usLastCharIndex: lastCharIndex,\n ulUnicodeRange1: ulUnicodeRange1,\n ulUnicodeRange2: ulUnicodeRange2,\n ulUnicodeRange3: ulUnicodeRange3,\n ulUnicodeRange4: ulUnicodeRange4,\n // See http://typophile.com/node/13081 for more info on vertical metrics.\n // We get metrics for typical characters (such as \"x\" for xHeight).\n // We provide some fallback characters if characters are unavailable: their\n // ordering was chosen experimentally.\n sTypoAscender: globals.ascender,\n sTypoDescender: globals.descender,\n sTypoLineGap: 0,\n usWinAscent: globals.yMax,\n usWinDescent: Math.abs(globals.yMin),\n ulCodePageRange1: 1, // FIXME: hard-code Latin 1 support for now\n sxHeight: metricsForChar(font, 'xyvw', {yMax: Math.round(globals.ascender / 2)}).yMax,\n sCapHeight: metricsForChar(font, 'HIKLEFJMNTZBDPRAGOQSUVWXY', globals).yMax,\n usDefaultChar: font.hasChar(' ') ? 32 : 0, // Use space as the default character, if available.\n usBreakChar: font.hasChar(' ') ? 32 : 0, // Use space as the break character, if available.\n }, font.tables.os2));\n\n const hmtxTable = hmtx.make(font.glyphs);\n const cmapTable = cmap.make(font.glyphs);\n\n const englishFamilyName = font.getEnglishName('fontFamily');\n const englishStyleName = font.getEnglishName('fontSubfamily');\n const englishFullName = englishFamilyName + ' ' + englishStyleName;\n let postScriptName = font.getEnglishName('postScriptName');\n if (!postScriptName) {\n postScriptName = englishFamilyName.replace(/\\s/g, '') + '-' + englishStyleName;\n }\n\n const names = {};\n for (let n in font.names) {\n names[n] = font.names[n];\n }\n\n if (!names.uniqueID) {\n names.uniqueID = {en: font.getEnglishName('manufacturer') + ':' + englishFullName};\n }\n\n if (!names.postScriptName) {\n names.postScriptName = {en: postScriptName};\n }\n\n if (!names.preferredFamily) {\n names.preferredFamily = font.names.fontFamily;\n }\n\n if (!names.preferredSubfamily) {\n names.preferredSubfamily = font.names.fontSubfamily;\n }\n\n const languageTags = [];\n const nameTable = _name.make(names, languageTags);\n const ltagTable = (languageTags.length > 0 ? ltag.make(languageTags) : undefined);\n\n const postTable = post.make();\n const cffTable = cff.make(font.glyphs, {\n version: font.getEnglishName('version'),\n fullName: englishFullName,\n familyName: englishFamilyName,\n weightName: englishStyleName,\n postScriptName: postScriptName,\n unitsPerEm: font.unitsPerEm,\n fontBBox: [0, globals.yMin, globals.ascender, globals.advanceWidthMax]\n });\n\n const metaTable = (font.metas && Object.keys(font.metas).length > 0) ? meta.make(font.metas) : undefined;\n\n // The order does not matter because makeSfntTable() will sort them.\n const tables = [headTable, hheaTable, maxpTable, os2Table, nameTable, cmapTable, postTable, cffTable, hmtxTable];\n if (ltagTable) {\n tables.push(ltagTable);\n }\n // Optional tables\n if (font.tables.gsub) {\n tables.push(gsub.make(font.tables.gsub));\n }\n if (metaTable) {\n tables.push(metaTable);\n }\n\n const sfntTable = makeSfntTable(tables);\n\n // Compute the font's checkSum and store it in head.checkSumAdjustment.\n const bytes = sfntTable.encode();\n const checkSum = computeCheckSum(bytes);\n const tableFields = sfntTable.fields;\n let checkSumAdjusted = false;\n for (let i = 0; i < tableFields.length; i += 1) {\n if (tableFields[i].name === 'head table') {\n tableFields[i].value.checkSumAdjustment = 0xB1B0AFBA - checkSum;\n checkSumAdjusted = true;\n break;\n }\n }\n\n if (!checkSumAdjusted) {\n throw new Error('Could not find head table with checkSum to adjust.');\n }\n\n return sfntTable;\n}\n\nexport default { make: makeSfntTable, fontToTable: fontToSfntTable, computeCheckSum };\n","// The Layout object is the prototype of Substitution objects, and provides\n// utility methods to manipulate common layout tables (GPOS, GSUB, GDEF...)\n\nimport check from './check';\n\nfunction searchTag(arr, tag) {\n /* jshint bitwise: false */\n let imin = 0;\n let imax = arr.length - 1;\n while (imin <= imax) {\n const imid = (imin + imax) >>> 1;\n const val = arr[imid].tag;\n if (val === tag) {\n return imid;\n } else if (val < tag) {\n imin = imid + 1;\n } else { imax = imid - 1; }\n }\n // Not found: return -1-insertion point\n return -imin - 1;\n}\n\nfunction binSearch(arr, value) {\n /* jshint bitwise: false */\n let imin = 0;\n let imax = arr.length - 1;\n while (imin <= imax) {\n const imid = (imin + imax) >>> 1;\n const val = arr[imid];\n if (val === value) {\n return imid;\n } else if (val < value) {\n imin = imid + 1;\n } else { imax = imid - 1; }\n }\n // Not found: return -1-insertion point\n return -imin - 1;\n}\n\n// binary search in a list of ranges (coverage, class definition)\nfunction searchRange(ranges, value) {\n // jshint bitwise: false\n let range;\n let imin = 0;\n let imax = ranges.length - 1;\n while (imin <= imax) {\n const imid = (imin + imax) >>> 1;\n range = ranges[imid];\n const start = range.start;\n if (start === value) {\n return range;\n } else if (start < value) {\n imin = imid + 1;\n } else { imax = imid - 1; }\n }\n if (imin > 0) {\n range = ranges[imin - 1];\n if (value > range.end) return 0;\n return range;\n }\n}\n\n/**\n * @exports opentype.Layout\n * @class\n */\nfunction Layout(font, tableName) {\n this.font = font;\n this.tableName = tableName;\n}\n\nLayout.prototype = {\n\n /**\n * Binary search an object by \"tag\" property\n * @instance\n * @function searchTag\n * @memberof opentype.Layout\n * @param {Array} arr\n * @param {string} tag\n * @return {number}\n */\n searchTag: searchTag,\n\n /**\n * Binary search in a list of numbers\n * @instance\n * @function binSearch\n * @memberof opentype.Layout\n * @param {Array} arr\n * @param {number} value\n * @return {number}\n */\n binSearch: binSearch,\n\n /**\n * Get or create the Layout table (GSUB, GPOS etc).\n * @param {boolean} create - Whether to create a new one.\n * @return {Object} The GSUB or GPOS table.\n */\n getTable: function(create) {\n let layout = this.font.tables[this.tableName];\n if (!layout && create) {\n layout = this.font.tables[this.tableName] = this.createDefaultTable();\n }\n return layout;\n },\n\n /**\n * Returns all scripts in the substitution table.\n * @instance\n * @return {Array}\n */\n getScriptNames: function() {\n let layout = this.getTable();\n if (!layout) { return []; }\n return layout.scripts.map(function(script) {\n return script.tag;\n });\n },\n\n /**\n * Returns the best bet for a script name.\n * Returns 'DFLT' if it exists.\n * If not, returns 'latn' if it exists.\n * If neither exist, returns undefined.\n */\n getDefaultScriptName: function() {\n let layout = this.getTable();\n if (!layout) { return; }\n let hasLatn = false;\n for (let i = 0; i < layout.scripts.length; i++) {\n const name = layout.scripts[i].tag;\n if (name === 'DFLT') return name;\n if (name === 'latn') hasLatn = true;\n }\n if (hasLatn) return 'latn';\n },\n\n /**\n * Returns all LangSysRecords in the given script.\n * @instance\n * @param {string} [script='DFLT']\n * @param {boolean} create - forces the creation of this script table if it doesn't exist.\n * @return {Object} An object with tag and script properties.\n */\n getScriptTable: function(script, create) {\n const layout = this.getTable(create);\n if (layout) {\n script = script || 'DFLT';\n const scripts = layout.scripts;\n const pos = searchTag(layout.scripts, script);\n if (pos >= 0) {\n return scripts[pos].script;\n } else if (create) {\n const scr = {\n tag: script,\n script: {\n defaultLangSys: {reserved: 0, reqFeatureIndex: 0xffff, featureIndexes: []},\n langSysRecords: []\n }\n };\n scripts.splice(-1 - pos, 0, scr);\n return scr.script;\n }\n }\n },\n\n /**\n * Returns a language system table\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {boolean} create - forces the creation of this langSysTable if it doesn't exist.\n * @return {Object}\n */\n getLangSysTable: function(script, language, create) {\n const scriptTable = this.getScriptTable(script, create);\n if (scriptTable) {\n if (!language || language === 'dflt' || language === 'DFLT') {\n return scriptTable.defaultLangSys;\n }\n const pos = searchTag(scriptTable.langSysRecords, language);\n if (pos >= 0) {\n return scriptTable.langSysRecords[pos].langSys;\n } else if (create) {\n const langSysRecord = {\n tag: language,\n langSys: {reserved: 0, reqFeatureIndex: 0xffff, featureIndexes: []}\n };\n scriptTable.langSysRecords.splice(-1 - pos, 0, langSysRecord);\n return langSysRecord.langSys;\n }\n }\n },\n\n /**\n * Get a specific feature table.\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {string} feature - One of the codes listed at https://www.microsoft.com/typography/OTSPEC/featurelist.htm\n * @param {boolean} create - forces the creation of the feature table if it doesn't exist.\n * @return {Object}\n */\n getFeatureTable: function(script, language, feature, create) {\n const langSysTable = this.getLangSysTable(script, language, create);\n if (langSysTable) {\n let featureRecord;\n const featIndexes = langSysTable.featureIndexes;\n const allFeatures = this.font.tables[this.tableName].features;\n // The FeatureIndex array of indices is in arbitrary order,\n // even if allFeatures is sorted alphabetically by feature tag.\n for (let i = 0; i < featIndexes.length; i++) {\n featureRecord = allFeatures[featIndexes[i]];\n if (featureRecord.tag === feature) {\n return featureRecord.feature;\n }\n }\n if (create) {\n const index = allFeatures.length;\n // Automatic ordering of features would require to shift feature indexes in the script list.\n check.assert(index === 0 || feature >= allFeatures[index - 1].tag, 'Features must be added in alphabetical order.');\n featureRecord = {\n tag: feature,\n feature: { params: 0, lookupListIndexes: [] }\n };\n allFeatures.push(featureRecord);\n featIndexes.push(index);\n return featureRecord.feature;\n }\n }\n },\n\n /**\n * Get the lookup tables of a given type for a script/language/feature.\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {string} feature - 4-letter feature code\n * @param {number} lookupType - 1 to 9\n * @param {boolean} create - forces the creation of the lookup table if it doesn't exist, with no subtables.\n * @return {Object[]}\n */\n getLookupTables: function(script, language, feature, lookupType, create) {\n const featureTable = this.getFeatureTable(script, language, feature, create);\n const tables = [];\n if (featureTable) {\n let lookupTable;\n const lookupListIndexes = featureTable.lookupListIndexes;\n const allLookups = this.font.tables[this.tableName].lookups;\n // lookupListIndexes are in no particular order, so use naive search.\n for (let i = 0; i < lookupListIndexes.length; i++) {\n lookupTable = allLookups[lookupListIndexes[i]];\n if (lookupTable.lookupType === lookupType) {\n tables.push(lookupTable);\n }\n }\n if (tables.length === 0 && create) {\n lookupTable = {\n lookupType: lookupType,\n lookupFlag: 0,\n subtables: [],\n markFilteringSet: undefined\n };\n const index = allLookups.length;\n allLookups.push(lookupTable);\n lookupListIndexes.push(index);\n return [lookupTable];\n }\n }\n return tables;\n },\n\n /**\n * Find a glyph in a class definition table\n * https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#class-definition-table\n * @param {object} classDefTable - an OpenType Layout class definition table\n * @param {number} glyphIndex - the index of the glyph to find\n * @returns {number} -1 if not found\n */\n getGlyphClass: function(classDefTable, glyphIndex) {\n switch (classDefTable.format) {\n case 1:\n if (classDefTable.startGlyph <= glyphIndex && glyphIndex < classDefTable.startGlyph + classDefTable.classes.length) {\n return classDefTable.classes[glyphIndex - classDefTable.startGlyph];\n }\n return 0;\n case 2:\n const range = searchRange(classDefTable.ranges, glyphIndex);\n return range ? range.classId : 0;\n }\n },\n\n /**\n * Find a glyph in a coverage table\n * https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#coverage-table\n * @param {object} coverageTable - an OpenType Layout coverage table\n * @param {number} glyphIndex - the index of the glyph to find\n * @returns {number} -1 if not found\n */\n getCoverageIndex: function(coverageTable, glyphIndex) {\n switch (coverageTable.format) {\n case 1:\n const index = binSearch(coverageTable.glyphs, glyphIndex);\n return index >= 0 ? index : -1;\n case 2:\n const range = searchRange(coverageTable.ranges, glyphIndex);\n return range ? range.index + glyphIndex - range.start : -1;\n }\n },\n\n /**\n * Returns the list of glyph indexes of a coverage table.\n * Format 1: the list is stored raw\n * Format 2: compact list as range records.\n * @instance\n * @param {Object} coverageTable\n * @return {Array}\n */\n expandCoverage: function(coverageTable) {\n if (coverageTable.format === 1) {\n return coverageTable.glyphs;\n } else {\n const glyphs = [];\n const ranges = coverageTable.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n const start = range.start;\n const end = range.end;\n for (let j = start; j <= end; j++) {\n glyphs.push(j);\n }\n }\n return glyphs;\n }\n }\n\n};\n\nexport default Layout;\n","// The Position object provides utility methods to manipulate\n// the GPOS position table.\n\nimport Layout from './layout';\n\n/**\n * @exports opentype.Position\n * @class\n * @extends opentype.Layout\n * @param {opentype.Font}\n * @constructor\n */\nfunction Position(font) {\n Layout.call(this, font, 'gpos');\n}\n\nPosition.prototype = Layout.prototype;\n\n/**\n * Init some data for faster and easier access later.\n */\nPosition.prototype.init = function() {\n const script = this.getDefaultScriptName();\n this.defaultKerningTables = this.getKerningTables(script);\n};\n\n/**\n * Find a glyph pair in a list of lookup tables of type 2 and retrieve the xAdvance kerning value.\n *\n * @param {integer} leftIndex - left glyph index\n * @param {integer} rightIndex - right glyph index\n * @returns {integer}\n */\nPosition.prototype.getKerningValue = function(kerningLookups, leftIndex, rightIndex) {\n for (let i = 0; i < kerningLookups.length; i++) {\n const subtables = kerningLookups[i].subtables;\n for (let j = 0; j < subtables.length; j++) {\n const subtable = subtables[j];\n const covIndex = this.getCoverageIndex(subtable.coverage, leftIndex);\n if (covIndex < 0) continue;\n switch (subtable.posFormat) {\n case 1:\n // Search Pair Adjustment Positioning Format 1\n let pairSet = subtable.pairSets[covIndex];\n for (let k = 0; k < pairSet.length; k++) {\n let pair = pairSet[k];\n if (pair.secondGlyph === rightIndex) {\n return pair.value1 && pair.value1.xAdvance || 0;\n }\n }\n break; // left glyph found, not right glyph - try next subtable\n case 2:\n // Search Pair Adjustment Positioning Format 2\n const class1 = this.getGlyphClass(subtable.classDef1, leftIndex);\n const class2 = this.getGlyphClass(subtable.classDef2, rightIndex);\n const pair = subtable.classRecords[class1][class2];\n return pair.value1 && pair.value1.xAdvance || 0;\n }\n }\n }\n return 0;\n};\n\n/**\n * List all kerning lookup tables.\n *\n * @param {string} [script='DFLT'] - use font.position.getDefaultScriptName() for a better default value\n * @param {string} [language='dflt']\n * @return {object[]} The list of kerning lookup tables (may be empty), or undefined if there is no GPOS table (and we should use the kern table)\n */\nPosition.prototype.getKerningTables = function(script, language) {\n if (this.font.tables.gpos) {\n return this.getLookupTables(script, language, 'kern', 2);\n }\n};\n\nexport default Position;\n","// The Substitution object provides utility methods to manipulate\n// the GSUB substitution table.\n\nimport check from './check';\nimport Layout from './layout';\n\n/**\n * @exports opentype.Substitution\n * @class\n * @extends opentype.Layout\n * @param {opentype.Font}\n * @constructor\n */\nfunction Substitution(font) {\n Layout.call(this, font, 'gsub');\n}\n\n// Check if 2 arrays of primitives are equal.\nfunction arraysEqual(ar1, ar2) {\n const n = ar1.length;\n if (n !== ar2.length) { return false; }\n for (let i = 0; i < n; i++) {\n if (ar1[i] !== ar2[i]) { return false; }\n }\n return true;\n}\n\n// Find the first subtable of a lookup table in a particular format.\nfunction getSubstFormat(lookupTable, format, defaultSubtable) {\n const subtables = lookupTable.subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n if (subtable.substFormat === format) {\n return subtable;\n }\n }\n if (defaultSubtable) {\n subtables.push(defaultSubtable);\n return defaultSubtable;\n }\n return undefined;\n}\n\nSubstitution.prototype = Layout.prototype;\n\n/**\n * Create a default GSUB table.\n * @return {Object} gsub - The GSUB table.\n */\nSubstitution.prototype.createDefaultTable = function() {\n // Generate a default empty GSUB table with just a DFLT script and dflt lang sys.\n return {\n version: 1,\n scripts: [{\n tag: 'DFLT',\n script: {\n defaultLangSys: { reserved: 0, reqFeatureIndex: 0xffff, featureIndexes: [] },\n langSysRecords: []\n }\n }],\n features: [],\n lookups: []\n };\n};\n\n/**\n * List all single substitutions (lookup type 1) for a given script, language, and feature.\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n * @param {string} feature - 4-character feature name ('aalt', 'salt', 'ss01'...)\n * @return {Array} substitutions - The list of substitutions.\n */\nSubstitution.prototype.getSingle = function(feature, script, language) {\n const substitutions = [];\n const lookupTables = this.getLookupTables(script, language, feature, 1);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n let j;\n if (subtable.substFormat === 1) {\n const delta = subtable.deltaGlyphId;\n for (j = 0; j < glyphs.length; j++) {\n const glyph = glyphs[j];\n substitutions.push({ sub: glyph, by: glyph + delta });\n }\n } else {\n const substitute = subtable.substitute;\n for (j = 0; j < glyphs.length; j++) {\n substitutions.push({ sub: glyphs[j], by: substitute[j] });\n }\n }\n }\n }\n return substitutions;\n};\n\n/**\n * List all multiple substitutions (lookup type 2) for a given script, language, and feature.\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n * @param {string} feature - 4-character feature name ('ccmp', 'stch')\n * @return {Array} substitutions - The list of substitutions.\n */\nSubstitution.prototype.getMultiple = function(feature, script, language) {\n const substitutions = [];\n const lookupTables = this.getLookupTables(script, language, feature, 2);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n let j;\n\n for (j = 0; j < glyphs.length; j++) {\n const glyph = glyphs[j];\n const replacements = subtable.sequences[j];\n substitutions.push({ sub: glyph, by: replacements });\n }\n }\n }\n return substitutions;\n};\n\n/**\n * List all alternates (lookup type 3) for a given script, language, and feature.\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n * @param {string} feature - 4-character feature name ('aalt', 'salt'...)\n * @return {Array} alternates - The list of alternates\n */\nSubstitution.prototype.getAlternates = function(feature, script, language) {\n const alternates = [];\n const lookupTables = this.getLookupTables(script, language, feature, 3);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n const alternateSets = subtable.alternateSets;\n for (let j = 0; j < glyphs.length; j++) {\n alternates.push({ sub: glyphs[j], by: alternateSets[j] });\n }\n }\n }\n return alternates;\n};\n\n/**\n * List all ligatures (lookup type 4) for a given script, language, and feature.\n * The result is an array of ligature objects like { sub: [ids], by: id }\n * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...)\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n * @return {Array} ligatures - The list of ligatures.\n */\nSubstitution.prototype.getLigatures = function(feature, script, language) {\n const ligatures = [];\n const lookupTables = this.getLookupTables(script, language, feature, 4);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n const ligatureSets = subtable.ligatureSets;\n for (let j = 0; j < glyphs.length; j++) {\n const startGlyph = glyphs[j];\n const ligSet = ligatureSets[j];\n for (let k = 0; k < ligSet.length; k++) {\n const lig = ligSet[k];\n ligatures.push({\n sub: [startGlyph].concat(lig.components),\n by: lig.ligGlyph\n });\n }\n }\n }\n }\n return ligatures;\n};\n\n/**\n * Add or modify a single substitution (lookup type 1)\n * Format 2, more flexible, is always used.\n * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...)\n * @param {Object} substitution - { sub: id, by: id } (format 1 is not supported)\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n */\nSubstitution.prototype.addSingle = function(feature, substitution, script, language) {\n const lookupTable = this.getLookupTables(script, language, feature, 1, true)[0];\n const subtable = getSubstFormat(lookupTable, 2, { // lookup type 1 subtable, format 2, coverage format 1\n substFormat: 2,\n coverage: {format: 1, glyphs: []},\n substitute: []\n });\n check.assert(subtable.coverage.format === 1, 'Single: unable to modify coverage table format ' + subtable.coverage.format);\n const coverageGlyph = substitution.sub;\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos < 0) {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.substitute.splice(pos, 0, 0);\n }\n subtable.substitute[pos] = substitution.by;\n};\n\n/**\n * Add or modify a multiple substitution (lookup type 2)\n * @param {string} feature - 4-letter feature name ('ccmp', 'stch')\n * @param {Object} substitution - { sub: id, by: [id] } for format 2.\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n */\nSubstitution.prototype.addMultiple = function(feature, substitution, script, language) {\n check.assert(substitution.by instanceof Array && substitution.by.length > 1, 'Multiple: \"by\" must be an array of two or more ids');\n const lookupTable = this.getLookupTables(script, language, feature, 2, true)[0];\n const subtable = getSubstFormat(lookupTable, 1, { // lookup type 2 subtable, format 1, coverage format 1\n substFormat: 1,\n coverage: {format: 1, glyphs: []},\n sequences: []\n });\n check.assert(subtable.coverage.format === 1, 'Multiple: unable to modify coverage table format ' + subtable.coverage.format);\n const coverageGlyph = substitution.sub;\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos < 0) {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.sequences.splice(pos, 0, 0);\n }\n subtable.sequences[pos] = substitution.by;\n};\n\n/**\n * Add or modify an alternate substitution (lookup type 3)\n * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...)\n * @param {Object} substitution - { sub: id, by: [ids] }\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n */\nSubstitution.prototype.addAlternate = function(feature, substitution, script, language) {\n const lookupTable = this.getLookupTables(script, language, feature, 3, true)[0];\n const subtable = getSubstFormat(lookupTable, 1, { // lookup type 3 subtable, format 1, coverage format 1\n substFormat: 1,\n coverage: {format: 1, glyphs: []},\n alternateSets: []\n });\n check.assert(subtable.coverage.format === 1, 'Alternate: unable to modify coverage table format ' + subtable.coverage.format);\n const coverageGlyph = substitution.sub;\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos < 0) {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.alternateSets.splice(pos, 0, 0);\n }\n subtable.alternateSets[pos] = substitution.by;\n};\n\n/**\n * Add a ligature (lookup type 4)\n * Ligatures with more components must be stored ahead of those with fewer components in order to be found\n * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...)\n * @param {Object} ligature - { sub: [ids], by: id }\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n */\nSubstitution.prototype.addLigature = function(feature, ligature, script, language) {\n const lookupTable = this.getLookupTables(script, language, feature, 4, true)[0];\n let subtable = lookupTable.subtables[0];\n if (!subtable) {\n subtable = { // lookup type 4 subtable, format 1, coverage format 1\n substFormat: 1,\n coverage: { format: 1, glyphs: [] },\n ligatureSets: []\n };\n lookupTable.subtables[0] = subtable;\n }\n check.assert(subtable.coverage.format === 1, 'Ligature: unable to modify coverage table format ' + subtable.coverage.format);\n const coverageGlyph = ligature.sub[0];\n const ligComponents = ligature.sub.slice(1);\n const ligatureTable = {\n ligGlyph: ligature.by,\n components: ligComponents\n };\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos >= 0) {\n // ligatureSet already exists\n const ligatureSet = subtable.ligatureSets[pos];\n for (let i = 0; i < ligatureSet.length; i++) {\n // If ligature already exists, return.\n if (arraysEqual(ligatureSet[i].components, ligComponents)) {\n return;\n }\n }\n // ligature does not exist: add it.\n ligatureSet.push(ligatureTable);\n } else {\n // Create a new ligatureSet and add coverage for the first glyph.\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.ligatureSets.splice(pos, 0, [ligatureTable]);\n }\n};\n\n/**\n * List all feature data for a given script and language.\n * @param {string} feature - 4-letter feature name\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n * @return {Array} substitutions - The list of substitutions.\n */\nSubstitution.prototype.getFeature = function(feature, script, language) {\n if (/ss\\d\\d/.test(feature)) {\n // ss01 - ss20\n return this.getSingle(feature, script, language);\n }\n switch (feature) {\n case 'aalt':\n case 'salt':\n return this.getSingle(feature, script, language)\n .concat(this.getAlternates(feature, script, language));\n case 'dlig':\n case 'liga':\n case 'rlig':\n return this.getLigatures(feature, script, language);\n case 'ccmp':\n return this.getMultiple(feature, script, language)\n .concat(this.getLigatures(feature, script, language));\n case 'stch':\n return this.getMultiple(feature, script, language);\n }\n return undefined;\n};\n\n/**\n * Add a substitution to a feature for a given script and language.\n * @param {string} feature - 4-letter feature name\n * @param {Object} sub - the substitution to add (an object like { sub: id or [ids], by: id or [ids] })\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n */\nSubstitution.prototype.add = function(feature, sub, script, language) {\n if (/ss\\d\\d/.test(feature)) {\n // ss01 - ss20\n return this.addSingle(feature, sub, script, language);\n }\n switch (feature) {\n case 'aalt':\n case 'salt':\n if (typeof sub.by === 'number') {\n return this.addSingle(feature, sub, script, language);\n }\n return this.addAlternate(feature, sub, script, language);\n case 'dlig':\n case 'liga':\n case 'rlig':\n return this.addLigature(feature, sub, script, language);\n case 'ccmp':\n if (sub.by instanceof Array) {\n return this.addMultiple(feature, sub, script, language);\n }\n return this.addLigature(feature, sub, script, language);\n }\n return undefined;\n};\n\nexport default Substitution;\n","function isBrowser() {\n return typeof window !== 'undefined';\n}\n\nfunction isNode() {\n return typeof window === 'undefined';\n}\n\nfunction nodeBufferToArrayBuffer(buffer) {\n const ab = new ArrayBuffer(buffer.length);\n const view = new Uint8Array(ab);\n for (let i = 0; i < buffer.length; ++i) {\n view[i] = buffer[i];\n }\n\n return ab;\n}\n\nfunction arrayBufferToNodeBuffer(ab) {\n const buffer = new Buffer(ab.byteLength);\n const view = new Uint8Array(ab);\n for (let i = 0; i < buffer.length; ++i) {\n buffer[i] = view[i];\n }\n\n return buffer;\n}\n\nfunction checkArgument(expression, message) {\n if (!expression) {\n throw message;\n }\n}\n\nexport { isBrowser, isNode, nodeBufferToArrayBuffer, arrayBufferToNodeBuffer, checkArgument };\n","// The `glyf` table describes the glyphs in TrueType outline format.\n// http://www.microsoft.com/typography/otspec/glyf.htm\n\nimport check from '../check';\nimport glyphset from '../glyphset';\nimport parse from '../parse';\nimport Path from '../path';\n\n// Parse the coordinate data for a glyph.\nfunction parseGlyphCoordinate(p, flag, previousValue, shortVectorBitMask, sameBitMask) {\n let v;\n if ((flag & shortVectorBitMask) > 0) {\n // The coordinate is 1 byte long.\n v = p.parseByte();\n // The `same` bit is re-used for short values to signify the sign of the value.\n if ((flag & sameBitMask) === 0) {\n v = -v;\n }\n\n v = previousValue + v;\n } else {\n // The coordinate is 2 bytes long.\n // If the `same` bit is set, the coordinate is the same as the previous coordinate.\n if ((flag & sameBitMask) > 0) {\n v = previousValue;\n } else {\n // Parse the coordinate as a signed 16-bit delta value.\n v = previousValue + p.parseShort();\n }\n }\n\n return v;\n}\n\n// Parse a TrueType glyph.\nfunction parseGlyph(glyph, data, start) {\n const p = new parse.Parser(data, start);\n glyph.numberOfContours = p.parseShort();\n glyph._xMin = p.parseShort();\n glyph._yMin = p.parseShort();\n glyph._xMax = p.parseShort();\n glyph._yMax = p.parseShort();\n let flags;\n let flag;\n\n if (glyph.numberOfContours > 0) {\n // This glyph is not a composite.\n const endPointIndices = glyph.endPointIndices = [];\n for (let i = 0; i < glyph.numberOfContours; i += 1) {\n endPointIndices.push(p.parseUShort());\n }\n\n glyph.instructionLength = p.parseUShort();\n glyph.instructions = [];\n for (let i = 0; i < glyph.instructionLength; i += 1) {\n glyph.instructions.push(p.parseByte());\n }\n\n const numberOfCoordinates = endPointIndices[endPointIndices.length - 1] + 1;\n flags = [];\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = p.parseByte();\n flags.push(flag);\n // If bit 3 is set, we repeat this flag n times, where n is the next byte.\n if ((flag & 8) > 0) {\n const repeatCount = p.parseByte();\n for (let j = 0; j < repeatCount; j += 1) {\n flags.push(flag);\n i += 1;\n }\n }\n }\n\n check.argument(flags.length === numberOfCoordinates, 'Bad flags.');\n\n if (endPointIndices.length > 0) {\n const points = [];\n let point;\n // X/Y coordinates are relative to the previous point, except for the first point which is relative to 0,0.\n if (numberOfCoordinates > 0) {\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = flags[i];\n point = {};\n point.onCurve = !!(flag & 1);\n point.lastPointOfContour = endPointIndices.indexOf(i) >= 0;\n points.push(point);\n }\n\n let px = 0;\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = flags[i];\n point = points[i];\n point.x = parseGlyphCoordinate(p, flag, px, 2, 16);\n px = point.x;\n }\n\n let py = 0;\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = flags[i];\n point = points[i];\n point.y = parseGlyphCoordinate(p, flag, py, 4, 32);\n py = point.y;\n }\n }\n\n glyph.points = points;\n } else {\n glyph.points = [];\n }\n } else if (glyph.numberOfContours === 0) {\n glyph.points = [];\n } else {\n glyph.isComposite = true;\n glyph.points = [];\n glyph.components = [];\n let moreComponents = true;\n while (moreComponents) {\n flags = p.parseUShort();\n const component = {\n glyphIndex: p.parseUShort(),\n xScale: 1,\n scale01: 0,\n scale10: 0,\n yScale: 1,\n dx: 0,\n dy: 0\n };\n if ((flags & 1) > 0) {\n // The arguments are words\n if ((flags & 2) > 0) {\n // values are offset\n component.dx = p.parseShort();\n component.dy = p.parseShort();\n } else {\n // values are matched points\n component.matchedPoints = [p.parseUShort(), p.parseUShort()];\n }\n\n } else {\n // The arguments are bytes\n if ((flags & 2) > 0) {\n // values are offset\n component.dx = p.parseChar();\n component.dy = p.parseChar();\n } else {\n // values are matched points\n component.matchedPoints = [p.parseByte(), p.parseByte()];\n }\n }\n\n if ((flags & 8) > 0) {\n // We have a scale\n component.xScale = component.yScale = p.parseF2Dot14();\n } else if ((flags & 64) > 0) {\n // We have an X / Y scale\n component.xScale = p.parseF2Dot14();\n component.yScale = p.parseF2Dot14();\n } else if ((flags & 128) > 0) {\n // We have a 2x2 transformation\n component.xScale = p.parseF2Dot14();\n component.scale01 = p.parseF2Dot14();\n component.scale10 = p.parseF2Dot14();\n component.yScale = p.parseF2Dot14();\n }\n\n glyph.components.push(component);\n moreComponents = !!(flags & 32);\n }\n if (flags & 0x100) {\n // We have instructions\n glyph.instructionLength = p.parseUShort();\n glyph.instructions = [];\n for (let i = 0; i < glyph.instructionLength; i += 1) {\n glyph.instructions.push(p.parseByte());\n }\n }\n }\n}\n\n// Transform an array of points and return a new array.\nfunction transformPoints(points, transform) {\n const newPoints = [];\n for (let i = 0; i < points.length; i += 1) {\n const pt = points[i];\n const newPt = {\n x: transform.xScale * pt.x + transform.scale01 * pt.y + transform.dx,\n y: transform.scale10 * pt.x + transform.yScale * pt.y + transform.dy,\n onCurve: pt.onCurve,\n lastPointOfContour: pt.lastPointOfContour\n };\n newPoints.push(newPt);\n }\n\n return newPoints;\n}\n\nfunction getContours(points) {\n const contours = [];\n let currentContour = [];\n for (let i = 0; i < points.length; i += 1) {\n const pt = points[i];\n currentContour.push(pt);\n if (pt.lastPointOfContour) {\n contours.push(currentContour);\n currentContour = [];\n }\n }\n\n check.argument(currentContour.length === 0, 'There are still points left in the current contour.');\n return contours;\n}\n\n// Convert the TrueType glyph outline to a Path.\nfunction getPath(points) {\n const p = new Path();\n if (!points) {\n return p;\n }\n\n const contours = getContours(points);\n\n for (let contourIndex = 0; contourIndex < contours.length; ++contourIndex) {\n const contour = contours[contourIndex];\n\n let prev = null;\n let curr = contour[contour.length - 1];\n let next = contour[0];\n\n if (curr.onCurve) {\n p.moveTo(curr.x, curr.y);\n } else {\n if (next.onCurve) {\n p.moveTo(next.x, next.y);\n } else {\n // If both first and last points are off-curve, start at their middle.\n const start = {x: (curr.x + next.x) * 0.5, y: (curr.y + next.y) * 0.5};\n p.moveTo(start.x, start.y);\n }\n }\n\n for (let i = 0; i < contour.length; ++i) {\n prev = curr;\n curr = next;\n next = contour[(i + 1) % contour.length];\n\n if (curr.onCurve) {\n // This is a straight line.\n p.lineTo(curr.x, curr.y);\n } else {\n let prev2 = prev;\n let next2 = next;\n\n if (!prev.onCurve) {\n prev2 = { x: (curr.x + prev.x) * 0.5, y: (curr.y + prev.y) * 0.5 };\n }\n\n if (!next.onCurve) {\n next2 = { x: (curr.x + next.x) * 0.5, y: (curr.y + next.y) * 0.5 };\n }\n\n p.quadraticCurveTo(curr.x, curr.y, next2.x, next2.y);\n }\n }\n\n p.closePath();\n }\n return p;\n}\n\nfunction buildPath(glyphs, glyph) {\n if (glyph.isComposite) {\n for (let j = 0; j < glyph.components.length; j += 1) {\n const component = glyph.components[j];\n const componentGlyph = glyphs.get(component.glyphIndex);\n // Force the ttfGlyphLoader to parse the glyph.\n componentGlyph.getPath();\n if (componentGlyph.points) {\n let transformedPoints;\n if (component.matchedPoints === undefined) {\n // component positioned by offset\n transformedPoints = transformPoints(componentGlyph.points, component);\n } else {\n // component positioned by matched points\n if ((component.matchedPoints[0] > glyph.points.length - 1) ||\n (component.matchedPoints[1] > componentGlyph.points.length - 1)) {\n throw Error('Matched points out of range in ' + glyph.name);\n }\n const firstPt = glyph.points[component.matchedPoints[0]];\n let secondPt = componentGlyph.points[component.matchedPoints[1]];\n const transform = {\n xScale: component.xScale, scale01: component.scale01,\n scale10: component.scale10, yScale: component.yScale,\n dx: 0, dy: 0\n };\n secondPt = transformPoints([secondPt], transform)[0];\n transform.dx = firstPt.x - secondPt.x;\n transform.dy = firstPt.y - secondPt.y;\n transformedPoints = transformPoints(componentGlyph.points, transform);\n }\n glyph.points = glyph.points.concat(transformedPoints);\n }\n }\n }\n\n return getPath(glyph.points);\n}\n\nfunction parseGlyfTableAll(data, start, loca, font) {\n const glyphs = new glyphset.GlyphSet(font);\n\n // The last element of the loca table is invalid.\n for (let i = 0; i < loca.length - 1; i += 1) {\n const offset = loca[i];\n const nextOffset = loca[i + 1];\n if (offset !== nextOffset) {\n glyphs.push(i, glyphset.ttfGlyphLoader(font, i, parseGlyph, data, start + offset, buildPath));\n } else {\n glyphs.push(i, glyphset.glyphLoader(font, i));\n }\n }\n\n return glyphs;\n}\n\nfunction parseGlyfTableOnLowMemory(data, start, loca, font) {\n const glyphs = new glyphset.GlyphSet(font);\n\n font._push = function(i) {\n const offset = loca[i];\n const nextOffset = loca[i + 1];\n if (offset !== nextOffset) {\n glyphs.push(i, glyphset.ttfGlyphLoader(font, i, parseGlyph, data, start + offset, buildPath));\n } else {\n glyphs.push(i, glyphset.glyphLoader(font, i));\n }\n };\n\n return glyphs;\n}\n\n// Parse all the glyphs according to the offsets from the `loca` table.\nfunction parseGlyfTable(data, start, loca, font, opt) {\n if (opt.lowMemory)\n return parseGlyfTableOnLowMemory(data, start, loca, font);\n else\n return parseGlyfTableAll(data, start, loca, font);\n}\n\nexport default { getPath, parse: parseGlyfTable};\n","/* A TrueType font hinting interpreter.\n*\n* (c) 2017 Axel Kittenberger\n*\n* This interpreter has been implemented according to this documentation:\n* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM05/Chap5.html\n*\n* According to the documentation F24DOT6 values are used for pixels.\n* That means calculation is 1/64 pixel accurate and uses integer operations.\n* However, Javascript has floating point operations by default and only\n* those are available. One could make a case to simulate the 1/64 accuracy\n* exactly by truncating after every division operation\n* (for example with << 0) to get pixel exactly results as other TrueType\n* implementations. It may make sense since some fonts are pixel optimized\n* by hand using DELTAP instructions. The current implementation doesn't\n* and rather uses full floating point precision.\n*\n* xScale, yScale and rotation is currently ignored.\n*\n* A few non-trivial instructions are missing as I didn't encounter yet\n* a font that used them to test a possible implementation.\n*\n* Some fonts seem to use undocumented features regarding the twilight zone.\n* Only some of them are implemented as they were encountered.\n*\n* The exports.DEBUG statements are removed on the minified distribution file.\n*/\n'use strict';\n\nimport glyf from './tables/glyf';\n\nlet instructionTable;\nlet exec;\nlet execGlyph;\nlet execComponent;\n\n/*\n* Creates a hinting object.\n*\n* There ought to be exactly one\n* for each truetype font that is used for hinting.\n*/\nfunction Hinting(font) {\n // the font this hinting object is for\n this.font = font;\n\n this.getCommands = function (hPoints) {\n return glyf.getPath(hPoints).commands;\n };\n\n // cached states\n this._fpgmState =\n this._prepState =\n undefined;\n\n // errorState\n // 0 ... all okay\n // 1 ... had an error in a glyf,\n // continue working but stop spamming\n // the console\n // 2 ... error at prep, stop hinting at this ppem\n // 3 ... error at fpeg, stop hinting for this font at all\n this._errorState = 0;\n}\n\n/*\n* Not rounding.\n*/\nfunction roundOff(v) {\n return v;\n}\n\n/*\n* Rounding to grid.\n*/\nfunction roundToGrid(v) {\n //Rounding in TT is supposed to \"symmetrical around zero\"\n return Math.sign(v) * Math.round(Math.abs(v));\n}\n\n/*\n* Rounding to double grid.\n*/\nfunction roundToDoubleGrid(v) {\n return Math.sign(v) * Math.round(Math.abs(v * 2)) / 2;\n}\n\n/*\n* Rounding to half grid.\n*/\nfunction roundToHalfGrid(v) {\n return Math.sign(v) * (Math.round(Math.abs(v) + 0.5) - 0.5);\n}\n\n/*\n* Rounding to up to grid.\n*/\nfunction roundUpToGrid(v) {\n return Math.sign(v) * Math.ceil(Math.abs(v));\n}\n\n/*\n* Rounding to down to grid.\n*/\nfunction roundDownToGrid(v) {\n return Math.sign(v) * Math.floor(Math.abs(v));\n}\n\n/*\n* Super rounding.\n*/\nconst roundSuper = function (v) {\n const period = this.srPeriod;\n let phase = this.srPhase;\n const threshold = this.srThreshold;\n let sign = 1;\n\n if (v < 0) {\n v = -v;\n sign = -1;\n }\n\n v += threshold - phase;\n\n v = Math.trunc(v / period) * period;\n\n v += phase;\n\n // according to http://xgridfit.sourceforge.net/round.html\n if (v < 0) return phase * sign;\n\n return v * sign;\n};\n\n/*\n* Unit vector of x-axis.\n*/\nconst xUnitVector = {\n x: 1,\n\n y: 0,\n\n axis: 'x',\n\n // Gets the projected distance between two points.\n // o1/o2 ... if true, respective original position is used.\n distance: function (p1, p2, o1, o2) {\n return (o1 ? p1.xo : p1.x) - (o2 ? p2.xo : p2.x);\n },\n\n // Moves point p so the moved position has the same relative\n // position to the moved positions of rp1 and rp2 than the\n // original positions had.\n //\n // See APPENDIX on INTERPOLATE at the bottom of this file.\n interpolate: function (p, rp1, rp2, pv) {\n let do1;\n let do2;\n let doa1;\n let doa2;\n let dm1;\n let dm2;\n let dt;\n\n if (!pv || pv === this) {\n do1 = p.xo - rp1.xo;\n do2 = p.xo - rp2.xo;\n dm1 = rp1.x - rp1.xo;\n dm2 = rp2.x - rp2.xo;\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n\n if (dt === 0) {\n p.x = p.xo + (dm1 + dm2) / 2;\n return;\n }\n\n p.x = p.xo + (dm1 * doa2 + dm2 * doa1) / dt;\n return;\n }\n\n do1 = pv.distance(p, rp1, true, true);\n do2 = pv.distance(p, rp2, true, true);\n dm1 = pv.distance(rp1, rp1, false, true);\n dm2 = pv.distance(rp2, rp2, false, true);\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n\n if (dt === 0) {\n xUnitVector.setRelative(p, p, (dm1 + dm2) / 2, pv, true);\n return;\n }\n\n xUnitVector.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);\n },\n\n // Slope of line normal to this\n normalSlope: Number.NEGATIVE_INFINITY,\n\n // Sets the point 'p' relative to point 'rp'\n // by the distance 'd'.\n //\n // See APPENDIX on SETRELATIVE at the bottom of this file.\n //\n // p ... point to set\n // rp ... reference point\n // d ... distance on projection vector\n // pv ... projection vector (undefined = this)\n // org ... if true, uses the original position of rp as reference.\n setRelative: function (p, rp, d, pv, org) {\n if (!pv || pv === this) {\n p.x = (org ? rp.xo : rp.x) + d;\n return;\n }\n\n const rpx = org ? rp.xo : rp.x;\n const rpy = org ? rp.yo : rp.y;\n const rpdx = rpx + d * pv.x;\n const rpdy = rpy + d * pv.y;\n\n p.x = rpdx + (p.y - rpdy) / pv.normalSlope;\n },\n\n // Slope of vector line.\n slope: 0,\n\n // Touches the point p.\n touch: function (p) {\n p.xTouched = true;\n },\n\n // Tests if a point p is touched.\n touched: function (p) {\n return p.xTouched;\n },\n\n // Untouches the point p.\n untouch: function (p) {\n p.xTouched = false;\n }\n};\n\n/*\n* Unit vector of y-axis.\n*/\nconst yUnitVector = {\n x: 0,\n\n y: 1,\n\n axis: 'y',\n\n // Gets the projected distance between two points.\n // o1/o2 ... if true, respective original position is used.\n distance: function (p1, p2, o1, o2) {\n return (o1 ? p1.yo : p1.y) - (o2 ? p2.yo : p2.y);\n },\n\n // Moves point p so the moved position has the same relative\n // position to the moved positions of rp1 and rp2 than the\n // original positions had.\n //\n // See APPENDIX on INTERPOLATE at the bottom of this file.\n interpolate: function (p, rp1, rp2, pv) {\n let do1;\n let do2;\n let doa1;\n let doa2;\n let dm1;\n let dm2;\n let dt;\n\n if (!pv || pv === this) {\n do1 = p.yo - rp1.yo;\n do2 = p.yo - rp2.yo;\n dm1 = rp1.y - rp1.yo;\n dm2 = rp2.y - rp2.yo;\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n\n if (dt === 0) {\n p.y = p.yo + (dm1 + dm2) / 2;\n return;\n }\n\n p.y = p.yo + (dm1 * doa2 + dm2 * doa1) / dt;\n return;\n }\n\n do1 = pv.distance(p, rp1, true, true);\n do2 = pv.distance(p, rp2, true, true);\n dm1 = pv.distance(rp1, rp1, false, true);\n dm2 = pv.distance(rp2, rp2, false, true);\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n\n if (dt === 0) {\n yUnitVector.setRelative(p, p, (dm1 + dm2) / 2, pv, true);\n return;\n }\n\n yUnitVector.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);\n },\n\n // Slope of line normal to this.\n normalSlope: 0,\n\n // Sets the point 'p' relative to point 'rp'\n // by the distance 'd'\n //\n // See APPENDIX on SETRELATIVE at the bottom of this file.\n //\n // p ... point to set\n // rp ... reference point\n // d ... distance on projection vector\n // pv ... projection vector (undefined = this)\n // org ... if true, uses the original position of rp as reference.\n setRelative: function (p, rp, d, pv, org) {\n if (!pv || pv === this) {\n p.y = (org ? rp.yo : rp.y) + d;\n return;\n }\n\n const rpx = org ? rp.xo : rp.x;\n const rpy = org ? rp.yo : rp.y;\n const rpdx = rpx + d * pv.x;\n const rpdy = rpy + d * pv.y;\n\n p.y = rpdy + pv.normalSlope * (p.x - rpdx);\n },\n\n // Slope of vector line.\n slope: Number.POSITIVE_INFINITY,\n\n // Touches the point p.\n touch: function (p) {\n p.yTouched = true;\n },\n\n // Tests if a point p is touched.\n touched: function (p) {\n return p.yTouched;\n },\n\n // Untouches the point p.\n untouch: function (p) {\n p.yTouched = false;\n }\n};\n\nObject.freeze(xUnitVector);\nObject.freeze(yUnitVector);\n\n/*\n* Creates a unit vector that is not x- or y-axis.\n*/\nfunction UnitVector(x, y) {\n this.x = x;\n this.y = y;\n this.axis = undefined;\n this.slope = y / x;\n this.normalSlope = -x / y;\n Object.freeze(this);\n}\n\n/*\n* Gets the projected distance between two points.\n* o1/o2 ... if true, respective original position is used.\n*/\nUnitVector.prototype.distance = function(p1, p2, o1, o2) {\n return (\n this.x * xUnitVector.distance(p1, p2, o1, o2) +\n this.y * yUnitVector.distance(p1, p2, o1, o2)\n );\n};\n\n/*\n* Moves point p so the moved position has the same relative\n* position to the moved positions of rp1 and rp2 than the\n* original positions had.\n*\n* See APPENDIX on INTERPOLATE at the bottom of this file.\n*/\nUnitVector.prototype.interpolate = function(p, rp1, rp2, pv) {\n let dm1;\n let dm2;\n let do1;\n let do2;\n let doa1;\n let doa2;\n let dt;\n\n do1 = pv.distance(p, rp1, true, true);\n do2 = pv.distance(p, rp2, true, true);\n dm1 = pv.distance(rp1, rp1, false, true);\n dm2 = pv.distance(rp2, rp2, false, true);\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n\n if (dt === 0) {\n this.setRelative(p, p, (dm1 + dm2) / 2, pv, true);\n return;\n }\n\n this.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);\n};\n\n/*\n* Sets the point 'p' relative to point 'rp'\n* by the distance 'd'\n*\n* See APPENDIX on SETRELATIVE at the bottom of this file.\n*\n* p ... point to set\n* rp ... reference point\n* d ... distance on projection vector\n* pv ... projection vector (undefined = this)\n* org ... if true, uses the original position of rp as reference.\n*/\nUnitVector.prototype.setRelative = function(p, rp, d, pv, org) {\n pv = pv || this;\n\n const rpx = org ? rp.xo : rp.x;\n const rpy = org ? rp.yo : rp.y;\n const rpdx = rpx + d * pv.x;\n const rpdy = rpy + d * pv.y;\n\n const pvns = pv.normalSlope;\n const fvs = this.slope;\n\n const px = p.x;\n const py = p.y;\n\n p.x = (fvs * px - pvns * rpdx + rpdy - py) / (fvs - pvns);\n p.y = fvs * (p.x - px) + py;\n};\n\n/*\n* Touches the point p.\n*/\nUnitVector.prototype.touch = function(p) {\n p.xTouched = true;\n p.yTouched = true;\n};\n\n/*\n* Returns a unit vector with x/y coordinates.\n*/\nfunction getUnitVector(x, y) {\n const d = Math.sqrt(x * x + y * y);\n\n x /= d;\n y /= d;\n\n if (x === 1 && y === 0) return xUnitVector;\n else if (x === 0 && y === 1) return yUnitVector;\n else return new UnitVector(x, y);\n}\n\n/*\n* Creates a point in the hinting engine.\n*/\nfunction HPoint(\n x,\n y,\n lastPointOfContour,\n onCurve\n) {\n this.x = this.xo = Math.round(x * 64) / 64; // hinted x value and original x-value\n this.y = this.yo = Math.round(y * 64) / 64; // hinted y value and original y-value\n\n this.lastPointOfContour = lastPointOfContour;\n this.onCurve = onCurve;\n this.prevPointOnContour = undefined;\n this.nextPointOnContour = undefined;\n this.xTouched = false;\n this.yTouched = false;\n\n Object.preventExtensions(this);\n}\n\n/*\n* Returns the next touched point on the contour.\n*\n* v ... unit vector to test touch axis.\n*/\nHPoint.prototype.nextTouched = function(v) {\n let p = this.nextPointOnContour;\n\n while (!v.touched(p) && p !== this) p = p.nextPointOnContour;\n\n return p;\n};\n\n/*\n* Returns the previous touched point on the contour\n*\n* v ... unit vector to test touch axis.\n*/\nHPoint.prototype.prevTouched = function(v) {\n let p = this.prevPointOnContour;\n\n while (!v.touched(p) && p !== this) p = p.prevPointOnContour;\n\n return p;\n};\n\n/*\n* The zero point.\n*/\nconst HPZero = Object.freeze(new HPoint(0, 0));\n\n/*\n* The default state of the interpreter.\n*\n* Note: Freezing the defaultState and then deriving from it\n* makes the V8 Javascript engine going awkward,\n* so this is avoided, albeit the defaultState shouldn't\n* ever change.\n*/\nconst defaultState = {\n cvCutIn: 17 / 16, // control value cut in\n deltaBase: 9,\n deltaShift: 0.125,\n loop: 1, // loops some instructions\n minDis: 1, // minimum distance\n autoFlip: true\n};\n\n/*\n* The current state of the interpreter.\n*\n* env ... 'fpgm' or 'prep' or 'glyf'\n* prog ... the program\n*/\nfunction State(env, prog) {\n this.env = env;\n this.stack = [];\n this.prog = prog;\n\n switch (env) {\n case 'glyf' :\n this.zp0 = this.zp1 = this.zp2 = 1;\n this.rp0 = this.rp1 = this.rp2 = 0;\n /* fall through */\n case 'prep' :\n this.fv = this.pv = this.dpv = xUnitVector;\n this.round = roundToGrid;\n }\n}\n\n/*\n* Executes a glyph program.\n*\n* This does the hinting for each glyph.\n*\n* Returns an array of moved points.\n*\n* glyph: the glyph to hint\n* ppem: the size the glyph is rendered for\n*/\nHinting.prototype.exec = function(glyph, ppem) {\n if (typeof ppem !== 'number') {\n throw new Error('Point size is not a number!');\n }\n\n // Received a fatal error, don't do any hinting anymore.\n if (this._errorState > 2) return;\n\n const font = this.font;\n let prepState = this._prepState;\n\n if (!prepState || prepState.ppem !== ppem) {\n let fpgmState = this._fpgmState;\n\n if (!fpgmState) {\n // Executes the fpgm state.\n // This is used by fonts to define functions.\n State.prototype = defaultState;\n\n fpgmState =\n this._fpgmState =\n new State('fpgm', font.tables.fpgm);\n\n fpgmState.funcs = [ ];\n fpgmState.font = font;\n\n if (exports.DEBUG) {\n console.log('---EXEC FPGM---');\n fpgmState.step = -1;\n }\n\n try {\n exec(fpgmState);\n } catch (e) {\n console.log('Hinting error in FPGM:' + e);\n this._errorState = 3;\n return;\n }\n }\n\n // Executes the prep program for this ppem setting.\n // This is used by fonts to set cvt values\n // depending on to be rendered font size.\n\n State.prototype = fpgmState;\n prepState =\n this._prepState =\n new State('prep', font.tables.prep);\n\n prepState.ppem = ppem;\n\n // Creates a copy of the cvt table\n // and scales it to the current ppem setting.\n const oCvt = font.tables.cvt;\n if (oCvt) {\n const cvt = prepState.cvt = new Array(oCvt.length);\n const scale = ppem / font.unitsPerEm;\n for (let c = 0; c < oCvt.length; c++) {\n cvt[c] = oCvt[c] * scale;\n }\n } else {\n prepState.cvt = [];\n }\n\n if (exports.DEBUG) {\n console.log('---EXEC PREP---');\n prepState.step = -1;\n }\n\n try {\n exec(prepState);\n } catch (e) {\n if (this._errorState < 2) {\n console.log('Hinting error in PREP:' + e);\n }\n this._errorState = 2;\n }\n }\n\n if (this._errorState > 1) return;\n\n try {\n return execGlyph(glyph, prepState);\n } catch (e) {\n if (this._errorState < 1) {\n console.log('Hinting error:' + e);\n console.log('Note: further hinting errors are silenced');\n }\n this._errorState = 1;\n return undefined;\n }\n};\n\n/*\n* Executes the hinting program for a glyph.\n*/\nexecGlyph = function(glyph, prepState) {\n // original point positions\n const xScale = prepState.ppem / prepState.font.unitsPerEm;\n const yScale = xScale;\n let components = glyph.components;\n let contours;\n let gZone;\n let state;\n\n State.prototype = prepState;\n if (!components) {\n state = new State('glyf', glyph.instructions);\n if (exports.DEBUG) {\n console.log('---EXEC GLYPH---');\n state.step = -1;\n }\n execComponent(glyph, state, xScale, yScale);\n gZone = state.gZone;\n } else {\n const font = prepState.font;\n gZone = [];\n contours = [];\n for (let i = 0; i < components.length; i++) {\n const c = components[i];\n const cg = font.glyphs.get(c.glyphIndex);\n\n state = new State('glyf', cg.instructions);\n\n if (exports.DEBUG) {\n console.log('---EXEC COMP ' + i + '---');\n state.step = -1;\n }\n\n execComponent(cg, state, xScale, yScale);\n // appends the computed points to the result array\n // post processes the component points\n const dx = Math.round(c.dx * xScale);\n const dy = Math.round(c.dy * yScale);\n const gz = state.gZone;\n const cc = state.contours;\n for (let pi = 0; pi < gz.length; pi++) {\n const p = gz[pi];\n p.xTouched = p.yTouched = false;\n p.xo = p.x = p.x + dx;\n p.yo = p.y = p.y + dy;\n }\n\n const gLen = gZone.length;\n gZone.push.apply(gZone, gz);\n for (let j = 0; j < cc.length; j++) {\n contours.push(cc[j] + gLen);\n }\n }\n\n if (glyph.instructions && !state.inhibitGridFit) {\n // the composite has instructions on its own\n state = new State('glyf', glyph.instructions);\n\n state.gZone = state.z0 = state.z1 = state.z2 = gZone;\n\n state.contours = contours;\n\n // note: HPZero cannot be used here, since\n // the point might be modified\n gZone.push(\n new HPoint(0, 0),\n new HPoint(Math.round(glyph.advanceWidth * xScale), 0)\n );\n\n if (exports.DEBUG) {\n console.log('---EXEC COMPOSITE---');\n state.step = -1;\n }\n\n exec(state);\n\n gZone.length -= 2;\n }\n }\n\n return gZone;\n};\n\n/*\n* Executes the hinting program for a component of a multi-component glyph\n* or of the glyph itself for a non-component glyph.\n*/\nexecComponent = function(glyph, state, xScale, yScale)\n{\n const points = glyph.points || [];\n const pLen = points.length;\n const gZone = state.gZone = state.z0 = state.z1 = state.z2 = [];\n const contours = state.contours = [];\n\n // Scales the original points and\n // makes copies for the hinted points.\n let cp; // current point\n for (let i = 0; i < pLen; i++) {\n cp = points[i];\n\n gZone[i] = new HPoint(\n cp.x * xScale,\n cp.y * yScale,\n cp.lastPointOfContour,\n cp.onCurve\n );\n }\n\n // Chain links the contours.\n let sp; // start point\n let np; // next point\n\n for (let i = 0; i < pLen; i++) {\n cp = gZone[i];\n\n if (!sp) {\n sp = cp;\n contours.push(i);\n }\n\n if (cp.lastPointOfContour) {\n cp.nextPointOnContour = sp;\n sp.prevPointOnContour = cp;\n sp = undefined;\n } else {\n np = gZone[i + 1];\n cp.nextPointOnContour = np;\n np.prevPointOnContour = cp;\n }\n }\n\n if (state.inhibitGridFit) return;\n\n if (exports.DEBUG) {\n console.log('PROCESSING GLYPH', state.stack);\n for (let i = 0; i < pLen; i++) {\n console.log(i, gZone[i].x, gZone[i].y);\n }\n }\n\n gZone.push(\n new HPoint(0, 0),\n new HPoint(Math.round(glyph.advanceWidth * xScale), 0)\n );\n\n exec(state);\n\n // Removes the extra points.\n gZone.length -= 2;\n\n if (exports.DEBUG) {\n console.log('FINISHED GLYPH', state.stack);\n for (let i = 0; i < pLen; i++) {\n console.log(i, gZone[i].x, gZone[i].y);\n }\n }\n};\n\n/*\n* Executes the program loaded in state.\n*/\nexec = function(state) {\n let prog = state.prog;\n\n if (!prog) return;\n\n const pLen = prog.length;\n let ins;\n\n for (state.ip = 0; state.ip < pLen; state.ip++) {\n if (exports.DEBUG) state.step++;\n ins = instructionTable[prog[state.ip]];\n\n if (!ins) {\n throw new Error(\n 'unknown instruction: 0x' +\n Number(prog[state.ip]).toString(16)\n );\n }\n\n ins(state);\n\n // very extensive debugging for each step\n /*\n if (exports.DEBUG) {\n var da;\n if (state.gZone) {\n da = [];\n for (let i = 0; i < state.gZone.length; i++)\n {\n da.push(i + ' ' +\n state.gZone[i].x * 64 + ' ' +\n state.gZone[i].y * 64 + ' ' +\n (state.gZone[i].xTouched ? 'x' : '') +\n (state.gZone[i].yTouched ? 'y' : '')\n );\n }\n console.log('GZ', da);\n }\n\n if (state.tZone) {\n da = [];\n for (let i = 0; i < state.tZone.length; i++) {\n da.push(i + ' ' +\n state.tZone[i].x * 64 + ' ' +\n state.tZone[i].y * 64 + ' ' +\n (state.tZone[i].xTouched ? 'x' : '') +\n (state.tZone[i].yTouched ? 'y' : '')\n );\n }\n console.log('TZ', da);\n }\n\n if (state.stack.length > 10) {\n console.log(\n state.stack.length,\n '...', state.stack.slice(state.stack.length - 10)\n );\n } else {\n console.log(state.stack.length, state.stack);\n }\n }\n */\n }\n};\n\n/*\n* Initializes the twilight zone.\n*\n* This is only done if a SZPx instruction\n* refers to the twilight zone.\n*/\nfunction initTZone(state)\n{\n const tZone = state.tZone = new Array(state.gZone.length);\n\n // no idea if this is actually correct...\n for (let i = 0; i < tZone.length; i++)\n {\n tZone[i] = new HPoint(0, 0);\n }\n}\n\n/*\n* Skips the instruction pointer ahead over an IF/ELSE block.\n* handleElse .. if true breaks on matching ELSE\n*/\nfunction skip(state, handleElse)\n{\n const prog = state.prog;\n let ip = state.ip;\n let nesting = 1;\n let ins;\n\n do {\n ins = prog[++ip];\n if (ins === 0x58) // IF\n nesting++;\n else if (ins === 0x59) // EIF\n nesting--;\n else if (ins === 0x40) // NPUSHB\n ip += prog[ip + 1] + 1;\n else if (ins === 0x41) // NPUSHW\n ip += 2 * prog[ip + 1] + 1;\n else if (ins >= 0xB0 && ins <= 0xB7) // PUSHB\n ip += ins - 0xB0 + 1;\n else if (ins >= 0xB8 && ins <= 0xBF) // PUSHW\n ip += (ins - 0xB8 + 1) * 2;\n else if (handleElse && nesting === 1 && ins === 0x1B) // ELSE\n break;\n } while (nesting > 0);\n\n state.ip = ip;\n}\n\n/*----------------------------------------------------------*\n* And then a lot of instructions... *\n*----------------------------------------------------------*/\n\n// SVTCA[a] Set freedom and projection Vectors To Coordinate Axis\n// 0x00-0x01\nfunction SVTCA(v, state) {\n if (exports.DEBUG) console.log(state.step, 'SVTCA[' + v.axis + ']');\n\n state.fv = state.pv = state.dpv = v;\n}\n\n// SPVTCA[a] Set Projection Vector to Coordinate Axis\n// 0x02-0x03\nfunction SPVTCA(v, state) {\n if (exports.DEBUG) console.log(state.step, 'SPVTCA[' + v.axis + ']');\n\n state.pv = state.dpv = v;\n}\n\n// SFVTCA[a] Set Freedom Vector to Coordinate Axis\n// 0x04-0x05\nfunction SFVTCA(v, state) {\n if (exports.DEBUG) console.log(state.step, 'SFVTCA[' + v.axis + ']');\n\n state.fv = v;\n}\n\n// SPVTL[a] Set Projection Vector To Line\n// 0x06-0x07\nfunction SPVTL(a, state) {\n const stack = state.stack;\n const p2i = stack.pop();\n const p1i = stack.pop();\n const p2 = state.z2[p2i];\n const p1 = state.z1[p1i];\n\n if (exports.DEBUG) console.log('SPVTL[' + a + ']', p2i, p1i);\n\n let dx;\n let dy;\n\n if (!a) {\n dx = p1.x - p2.x;\n dy = p1.y - p2.y;\n } else {\n dx = p2.y - p1.y;\n dy = p1.x - p2.x;\n }\n\n state.pv = state.dpv = getUnitVector(dx, dy);\n}\n\n// SFVTL[a] Set Freedom Vector To Line\n// 0x08-0x09\nfunction SFVTL(a, state) {\n const stack = state.stack;\n const p2i = stack.pop();\n const p1i = stack.pop();\n const p2 = state.z2[p2i];\n const p1 = state.z1[p1i];\n\n if (exports.DEBUG) console.log('SFVTL[' + a + ']', p2i, p1i);\n\n let dx;\n let dy;\n\n if (!a) {\n dx = p1.x - p2.x;\n dy = p1.y - p2.y;\n } else {\n dx = p2.y - p1.y;\n dy = p1.x - p2.x;\n }\n\n state.fv = getUnitVector(dx, dy);\n}\n\n// SPVFS[] Set Projection Vector From Stack\n// 0x0A\nfunction SPVFS(state) {\n const stack = state.stack;\n const y = stack.pop();\n const x = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SPVFS[]', y, x);\n\n state.pv = state.dpv = getUnitVector(x, y);\n}\n\n// SFVFS[] Set Freedom Vector From Stack\n// 0x0B\nfunction SFVFS(state) {\n const stack = state.stack;\n const y = stack.pop();\n const x = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SPVFS[]', y, x);\n\n state.fv = getUnitVector(x, y);\n}\n\n// GPV[] Get Projection Vector\n// 0x0C\nfunction GPV(state) {\n const stack = state.stack;\n const pv = state.pv;\n\n if (exports.DEBUG) console.log(state.step, 'GPV[]');\n\n stack.push(pv.x * 0x4000);\n stack.push(pv.y * 0x4000);\n}\n\n// GFV[] Get Freedom Vector\n// 0x0C\nfunction GFV(state) {\n const stack = state.stack;\n const fv = state.fv;\n\n if (exports.DEBUG) console.log(state.step, 'GFV[]');\n\n stack.push(fv.x * 0x4000);\n stack.push(fv.y * 0x4000);\n}\n\n// SFVTPV[] Set Freedom Vector To Projection Vector\n// 0x0E\nfunction SFVTPV(state) {\n state.fv = state.pv;\n\n if (exports.DEBUG) console.log(state.step, 'SFVTPV[]');\n}\n\n// ISECT[] moves point p to the InterSECTion of two lines\n// 0x0F\nfunction ISECT(state)\n{\n const stack = state.stack;\n const pa0i = stack.pop();\n const pa1i = stack.pop();\n const pb0i = stack.pop();\n const pb1i = stack.pop();\n const pi = stack.pop();\n const z0 = state.z0;\n const z1 = state.z1;\n const pa0 = z0[pa0i];\n const pa1 = z0[pa1i];\n const pb0 = z1[pb0i];\n const pb1 = z1[pb1i];\n const p = state.z2[pi];\n\n if (exports.DEBUG) console.log('ISECT[], ', pa0i, pa1i, pb0i, pb1i, pi);\n\n // math from\n // en.wikipedia.org/wiki/Line%E2%80%93line_intersection#Given_two_points_on_each_line\n\n const x1 = pa0.x;\n const y1 = pa0.y;\n const x2 = pa1.x;\n const y2 = pa1.y;\n const x3 = pb0.x;\n const y3 = pb0.y;\n const x4 = pb1.x;\n const y4 = pb1.y;\n\n const div = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n const f1 = x1 * y2 - y1 * x2;\n const f2 = x3 * y4 - y3 * x4;\n\n p.x = (f1 * (x3 - x4) - f2 * (x1 - x2)) / div;\n p.y = (f1 * (y3 - y4) - f2 * (y1 - y2)) / div;\n}\n\n// SRP0[] Set Reference Point 0\n// 0x10\nfunction SRP0(state) {\n state.rp0 = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SRP0[]', state.rp0);\n}\n\n// SRP1[] Set Reference Point 1\n// 0x11\nfunction SRP1(state) {\n state.rp1 = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SRP1[]', state.rp1);\n}\n\n// SRP1[] Set Reference Point 2\n// 0x12\nfunction SRP2(state) {\n state.rp2 = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SRP2[]', state.rp2);\n}\n\n// SZP0[] Set Zone Pointer 0\n// 0x13\nfunction SZP0(state) {\n const n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SZP0[]', n);\n\n state.zp0 = n;\n\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z0 = state.tZone;\n break;\n case 1 :\n state.z0 = state.gZone;\n break;\n default :\n throw new Error('Invalid zone pointer');\n }\n}\n\n// SZP1[] Set Zone Pointer 1\n// 0x14\nfunction SZP1(state) {\n const n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SZP1[]', n);\n\n state.zp1 = n;\n\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z1 = state.tZone;\n break;\n case 1 :\n state.z1 = state.gZone;\n break;\n default :\n throw new Error('Invalid zone pointer');\n }\n}\n\n// SZP2[] Set Zone Pointer 2\n// 0x15\nfunction SZP2(state) {\n const n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SZP2[]', n);\n\n state.zp2 = n;\n\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z2 = state.tZone;\n break;\n case 1 :\n state.z2 = state.gZone;\n break;\n default :\n throw new Error('Invalid zone pointer');\n }\n}\n\n// SZPS[] Set Zone PointerS\n// 0x16\nfunction SZPS(state) {\n const n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SZPS[]', n);\n\n state.zp0 = state.zp1 = state.zp2 = n;\n\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z0 = state.z1 = state.z2 = state.tZone;\n break;\n case 1 :\n state.z0 = state.z1 = state.z2 = state.gZone;\n break;\n default :\n throw new Error('Invalid zone pointer');\n }\n}\n\n// SLOOP[] Set LOOP variable\n// 0x17\nfunction SLOOP(state) {\n state.loop = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SLOOP[]', state.loop);\n}\n\n// RTG[] Round To Grid\n// 0x18\nfunction RTG(state) {\n if (exports.DEBUG) console.log(state.step, 'RTG[]');\n\n state.round = roundToGrid;\n}\n\n// RTHG[] Round To Half Grid\n// 0x19\nfunction RTHG(state) {\n if (exports.DEBUG) console.log(state.step, 'RTHG[]');\n\n state.round = roundToHalfGrid;\n}\n\n// SMD[] Set Minimum Distance\n// 0x1A\nfunction SMD(state) {\n const d = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SMD[]', d);\n\n state.minDis = d / 0x40;\n}\n\n// ELSE[] ELSE clause\n// 0x1B\nfunction ELSE(state) {\n // This instruction has been reached by executing a then branch\n // so it just skips ahead until matching EIF.\n //\n // In case the IF was negative the IF[] instruction already\n // skipped forward over the ELSE[]\n\n if (exports.DEBUG) console.log(state.step, 'ELSE[]');\n\n skip(state, false);\n}\n\n// JMPR[] JuMP Relative\n// 0x1C\nfunction JMPR(state) {\n const o = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'JMPR[]', o);\n\n // A jump by 1 would do nothing.\n state.ip += o - 1;\n}\n\n// SCVTCI[] Set Control Value Table Cut-In\n// 0x1D\nfunction SCVTCI(state) {\n const n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SCVTCI[]', n);\n\n state.cvCutIn = n / 0x40;\n}\n\n// DUP[] DUPlicate top stack element\n// 0x20\nfunction DUP(state) {\n const stack = state.stack;\n\n if (exports.DEBUG) console.log(state.step, 'DUP[]');\n\n stack.push(stack[stack.length - 1]);\n}\n\n// POP[] POP top stack element\n// 0x21\nfunction POP(state) {\n if (exports.DEBUG) console.log(state.step, 'POP[]');\n\n state.stack.pop();\n}\n\n// CLEAR[] CLEAR the stack\n// 0x22\nfunction CLEAR(state) {\n if (exports.DEBUG) console.log(state.step, 'CLEAR[]');\n\n state.stack.length = 0;\n}\n\n// SWAP[] SWAP the top two elements on the stack\n// 0x23\nfunction SWAP(state) {\n const stack = state.stack;\n\n const a = stack.pop();\n const b = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SWAP[]');\n\n stack.push(a);\n stack.push(b);\n}\n\n// DEPTH[] DEPTH of the stack\n// 0x24\nfunction DEPTH(state) {\n const stack = state.stack;\n\n if (exports.DEBUG) console.log(state.step, 'DEPTH[]');\n\n stack.push(stack.length);\n}\n\n// LOOPCALL[] LOOPCALL function\n// 0x2A\nfunction LOOPCALL(state) {\n const stack = state.stack;\n const fn = stack.pop();\n const c = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'LOOPCALL[]', fn, c);\n\n // saves callers program\n const cip = state.ip;\n const cprog = state.prog;\n\n state.prog = state.funcs[fn];\n\n // executes the function\n for (let i = 0; i < c; i++) {\n exec(state);\n\n if (exports.DEBUG) console.log(\n ++state.step,\n i + 1 < c ? 'next loopcall' : 'done loopcall',\n i\n );\n }\n\n // restores the callers program\n state.ip = cip;\n state.prog = cprog;\n}\n\n// CALL[] CALL function\n// 0x2B\nfunction CALL(state) {\n const fn = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'CALL[]', fn);\n\n // saves callers program\n const cip = state.ip;\n const cprog = state.prog;\n\n state.prog = state.funcs[fn];\n\n // executes the function\n exec(state);\n\n // restores the callers program\n state.ip = cip;\n state.prog = cprog;\n\n if (exports.DEBUG) console.log(++state.step, 'returning from', fn);\n}\n\n// CINDEX[] Copy the INDEXed element to the top of the stack\n// 0x25\nfunction CINDEX(state) {\n const stack = state.stack;\n const k = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'CINDEX[]', k);\n\n // In case of k == 1, it copies the last element after popping\n // thus stack.length - k.\n stack.push(stack[stack.length - k]);\n}\n\n// MINDEX[] Move the INDEXed element to the top of the stack\n// 0x26\nfunction MINDEX(state) {\n const stack = state.stack;\n const k = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'MINDEX[]', k);\n\n stack.push(stack.splice(stack.length - k, 1)[0]);\n}\n\n// FDEF[] Function DEFinition\n// 0x2C\nfunction FDEF(state) {\n if (state.env !== 'fpgm') throw new Error('FDEF not allowed here');\n const stack = state.stack;\n const prog = state.prog;\n let ip = state.ip;\n\n const fn = stack.pop();\n const ipBegin = ip;\n\n if (exports.DEBUG) console.log(state.step, 'FDEF[]', fn);\n\n while (prog[++ip] !== 0x2D);\n\n state.ip = ip;\n state.funcs[fn] = prog.slice(ipBegin + 1, ip);\n}\n\n// MDAP[a] Move Direct Absolute Point\n// 0x2E-0x2F\nfunction MDAP(round, state) {\n const pi = state.stack.pop();\n const p = state.z0[pi];\n const fv = state.fv;\n const pv = state.pv;\n\n if (exports.DEBUG) console.log(state.step, 'MDAP[' + round + ']', pi);\n\n let d = pv.distance(p, HPZero);\n\n if (round) d = state.round(d);\n\n fv.setRelative(p, HPZero, d, pv);\n fv.touch(p);\n\n state.rp0 = state.rp1 = pi;\n}\n\n// IUP[a] Interpolate Untouched Points through the outline\n// 0x30\nfunction IUP(v, state) {\n const z2 = state.z2;\n const pLen = z2.length - 2;\n let cp;\n let pp;\n let np;\n\n if (exports.DEBUG) console.log(state.step, 'IUP[' + v.axis + ']');\n\n for (let i = 0; i < pLen; i++) {\n cp = z2[i]; // current point\n\n // if this point has been touched go on\n if (v.touched(cp)) continue;\n\n pp = cp.prevTouched(v);\n\n // no point on the contour has been touched?\n if (pp === cp) continue;\n\n np = cp.nextTouched(v);\n\n if (pp === np) {\n // only one point on the contour has been touched\n // so simply moves the point like that\n\n v.setRelative(cp, cp, v.distance(pp, pp, false, true), v, true);\n }\n\n v.interpolate(cp, pp, np, v);\n }\n}\n\n// SHP[] SHift Point using reference point\n// 0x32-0x33\nfunction SHP(a, state) {\n const stack = state.stack;\n const rpi = a ? state.rp1 : state.rp2;\n const rp = (a ? state.z0 : state.z1)[rpi];\n const fv = state.fv;\n const pv = state.pv;\n let loop = state.loop;\n const z2 = state.z2;\n\n while (loop--)\n {\n const pi = stack.pop();\n const p = z2[pi];\n\n const d = pv.distance(rp, rp, false, true);\n fv.setRelative(p, p, d, pv);\n fv.touch(p);\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n (state.loop > 1 ?\n 'loop ' + (state.loop - loop) + ': ' :\n ''\n ) +\n 'SHP[' + (a ? 'rp1' : 'rp2') + ']', pi\n );\n }\n }\n\n state.loop = 1;\n}\n\n// SHC[] SHift Contour using reference point\n// 0x36-0x37\nfunction SHC(a, state) {\n const stack = state.stack;\n const rpi = a ? state.rp1 : state.rp2;\n const rp = (a ? state.z0 : state.z1)[rpi];\n const fv = state.fv;\n const pv = state.pv;\n const ci = stack.pop();\n const sp = state.z2[state.contours[ci]];\n let p = sp;\n\n if (exports.DEBUG) console.log(state.step, 'SHC[' + a + ']', ci);\n\n const d = pv.distance(rp, rp, false, true);\n\n do {\n if (p !== rp) fv.setRelative(p, p, d, pv);\n p = p.nextPointOnContour;\n } while (p !== sp);\n}\n\n// SHZ[] SHift Zone using reference point\n// 0x36-0x37\nfunction SHZ(a, state) {\n const stack = state.stack;\n const rpi = a ? state.rp1 : state.rp2;\n const rp = (a ? state.z0 : state.z1)[rpi];\n const fv = state.fv;\n const pv = state.pv;\n\n const e = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SHZ[' + a + ']', e);\n\n let z;\n switch (e) {\n case 0 : z = state.tZone; break;\n case 1 : z = state.gZone; break;\n default : throw new Error('Invalid zone');\n }\n\n let p;\n const d = pv.distance(rp, rp, false, true);\n const pLen = z.length - 2;\n for (let i = 0; i < pLen; i++)\n {\n p = z[i];\n fv.setRelative(p, p, d, pv);\n //if (p !== rp) fv.setRelative(p, p, d, pv);\n }\n}\n\n// SHPIX[] SHift point by a PIXel amount\n// 0x38\nfunction SHPIX(state) {\n const stack = state.stack;\n let loop = state.loop;\n const fv = state.fv;\n const d = stack.pop() / 0x40;\n const z2 = state.z2;\n\n while (loop--) {\n const pi = stack.pop();\n const p = z2[pi];\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n (state.loop > 1 ? 'loop ' + (state.loop - loop) + ': ' : '') +\n 'SHPIX[]', pi, d\n );\n }\n\n fv.setRelative(p, p, d);\n fv.touch(p);\n }\n\n state.loop = 1;\n}\n\n// IP[] Interpolate Point\n// 0x39\nfunction IP(state) {\n const stack = state.stack;\n const rp1i = state.rp1;\n const rp2i = state.rp2;\n let loop = state.loop;\n const rp1 = state.z0[rp1i];\n const rp2 = state.z1[rp2i];\n const fv = state.fv;\n const pv = state.dpv;\n const z2 = state.z2;\n\n while (loop--) {\n const pi = stack.pop();\n const p = z2[pi];\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n (state.loop > 1 ? 'loop ' + (state.loop - loop) + ': ' : '') +\n 'IP[]', pi, rp1i, '<->', rp2i\n );\n }\n\n fv.interpolate(p, rp1, rp2, pv);\n\n fv.touch(p);\n }\n\n state.loop = 1;\n}\n\n// MSIRP[a] Move Stack Indirect Relative Point\n// 0x3A-0x3B\nfunction MSIRP(a, state) {\n const stack = state.stack;\n const d = stack.pop() / 64;\n const pi = stack.pop();\n const p = state.z1[pi];\n const rp0 = state.z0[state.rp0];\n const fv = state.fv;\n const pv = state.pv;\n\n fv.setRelative(p, rp0, d, pv);\n fv.touch(p);\n\n if (exports.DEBUG) console.log(state.step, 'MSIRP[' + a + ']', d, pi);\n\n state.rp1 = state.rp0;\n state.rp2 = pi;\n if (a) state.rp0 = pi;\n}\n\n// ALIGNRP[] Align to reference point.\n// 0x3C\nfunction ALIGNRP(state) {\n const stack = state.stack;\n const rp0i = state.rp0;\n const rp0 = state.z0[rp0i];\n let loop = state.loop;\n const fv = state.fv;\n const pv = state.pv;\n const z1 = state.z1;\n\n while (loop--) {\n const pi = stack.pop();\n const p = z1[pi];\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n (state.loop > 1 ? 'loop ' + (state.loop - loop) + ': ' : '') +\n 'ALIGNRP[]', pi\n );\n }\n\n fv.setRelative(p, rp0, 0, pv);\n fv.touch(p);\n }\n\n state.loop = 1;\n}\n\n// RTG[] Round To Double Grid\n// 0x3D\nfunction RTDG(state) {\n if (exports.DEBUG) console.log(state.step, 'RTDG[]');\n\n state.round = roundToDoubleGrid;\n}\n\n// MIAP[a] Move Indirect Absolute Point\n// 0x3E-0x3F\nfunction MIAP(round, state) {\n const stack = state.stack;\n const n = stack.pop();\n const pi = stack.pop();\n const p = state.z0[pi];\n const fv = state.fv;\n const pv = state.pv;\n let cv = state.cvt[n];\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n 'MIAP[' + round + ']',\n n, '(', cv, ')', pi\n );\n }\n\n let d = pv.distance(p, HPZero);\n\n if (round) {\n if (Math.abs(d - cv) < state.cvCutIn) d = cv;\n\n d = state.round(d);\n }\n\n fv.setRelative(p, HPZero, d, pv);\n\n if (state.zp0 === 0) {\n p.xo = p.x;\n p.yo = p.y;\n }\n\n fv.touch(p);\n\n state.rp0 = state.rp1 = pi;\n}\n\n// NPUSB[] PUSH N Bytes\n// 0x40\nfunction NPUSHB(state) {\n const prog = state.prog;\n let ip = state.ip;\n const stack = state.stack;\n\n const n = prog[++ip];\n\n if (exports.DEBUG) console.log(state.step, 'NPUSHB[]', n);\n\n for (let i = 0; i < n; i++) stack.push(prog[++ip]);\n\n state.ip = ip;\n}\n\n// NPUSHW[] PUSH N Words\n// 0x41\nfunction NPUSHW(state) {\n let ip = state.ip;\n const prog = state.prog;\n const stack = state.stack;\n const n = prog[++ip];\n\n if (exports.DEBUG) console.log(state.step, 'NPUSHW[]', n);\n\n for (let i = 0; i < n; i++) {\n let w = (prog[++ip] << 8) | prog[++ip];\n if (w & 0x8000) w = -((w ^ 0xffff) + 1);\n stack.push(w);\n }\n\n state.ip = ip;\n}\n\n// WS[] Write Store\n// 0x42\nfunction WS(state) {\n const stack = state.stack;\n let store = state.store;\n\n if (!store) store = state.store = [];\n\n const v = stack.pop();\n const l = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'WS', v, l);\n\n store[l] = v;\n}\n\n// RS[] Read Store\n// 0x43\nfunction RS(state) {\n const stack = state.stack;\n const store = state.store;\n\n const l = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'RS', l);\n\n const v = (store && store[l]) || 0;\n\n stack.push(v);\n}\n\n// WCVTP[] Write Control Value Table in Pixel units\n// 0x44\nfunction WCVTP(state) {\n const stack = state.stack;\n\n const v = stack.pop();\n const l = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'WCVTP', v, l);\n\n state.cvt[l] = v / 0x40;\n}\n\n// RCVT[] Read Control Value Table entry\n// 0x45\nfunction RCVT(state) {\n const stack = state.stack;\n const cvte = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'RCVT', cvte);\n\n stack.push(state.cvt[cvte] * 0x40);\n}\n\n// GC[] Get Coordinate projected onto the projection vector\n// 0x46-0x47\nfunction GC(a, state) {\n const stack = state.stack;\n const pi = stack.pop();\n const p = state.z2[pi];\n\n if (exports.DEBUG) console.log(state.step, 'GC[' + a + ']', pi);\n\n stack.push(state.dpv.distance(p, HPZero, a, false) * 0x40);\n}\n\n// MD[a] Measure Distance\n// 0x49-0x4A\nfunction MD(a, state) {\n const stack = state.stack;\n const pi2 = stack.pop();\n const pi1 = stack.pop();\n const p2 = state.z1[pi2];\n const p1 = state.z0[pi1];\n const d = state.dpv.distance(p1, p2, a, a);\n\n if (exports.DEBUG) console.log(state.step, 'MD[' + a + ']', pi2, pi1, '->', d);\n\n state.stack.push(Math.round(d * 64));\n}\n\n// MPPEM[] Measure Pixels Per EM\n// 0x4B\nfunction MPPEM(state) {\n if (exports.DEBUG) console.log(state.step, 'MPPEM[]');\n state.stack.push(state.ppem);\n}\n\n// FLIPON[] set the auto FLIP Boolean to ON\n// 0x4D\nfunction FLIPON(state) {\n if (exports.DEBUG) console.log(state.step, 'FLIPON[]');\n state.autoFlip = true;\n}\n\n// LT[] Less Than\n// 0x50\nfunction LT(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'LT[]', e2, e1);\n\n stack.push(e1 < e2 ? 1 : 0);\n}\n\n// LTEQ[] Less Than or EQual\n// 0x53\nfunction LTEQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'LTEQ[]', e2, e1);\n\n stack.push(e1 <= e2 ? 1 : 0);\n}\n\n// GTEQ[] Greater Than\n// 0x52\nfunction GT(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'GT[]', e2, e1);\n\n stack.push(e1 > e2 ? 1 : 0);\n}\n\n// GTEQ[] Greater Than or EQual\n// 0x53\nfunction GTEQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'GTEQ[]', e2, e1);\n\n stack.push(e1 >= e2 ? 1 : 0);\n}\n\n// EQ[] EQual\n// 0x54\nfunction EQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'EQ[]', e2, e1);\n\n stack.push(e2 === e1 ? 1 : 0);\n}\n\n// NEQ[] Not EQual\n// 0x55\nfunction NEQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'NEQ[]', e2, e1);\n\n stack.push(e2 !== e1 ? 1 : 0);\n}\n\n// ODD[] ODD\n// 0x56\nfunction ODD(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'ODD[]', n);\n\n stack.push(Math.trunc(n) % 2 ? 1 : 0);\n}\n\n// EVEN[] EVEN\n// 0x57\nfunction EVEN(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'EVEN[]', n);\n\n stack.push(Math.trunc(n) % 2 ? 0 : 1);\n}\n\n// IF[] IF test\n// 0x58\nfunction IF(state) {\n let test = state.stack.pop();\n let ins;\n\n if (exports.DEBUG) console.log(state.step, 'IF[]', test);\n\n // if test is true it just continues\n // if not the ip is skipped until matching ELSE or EIF\n if (!test) {\n skip(state, true);\n\n if (exports.DEBUG) console.log(state.step, ins === 0x1B ? 'ELSE[]' : 'EIF[]');\n }\n}\n\n// EIF[] End IF\n// 0x59\nfunction EIF(state) {\n // this can be reached normally when\n // executing an else branch.\n // -> just ignore it\n\n if (exports.DEBUG) console.log(state.step, 'EIF[]');\n}\n\n// AND[] logical AND\n// 0x5A\nfunction AND(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'AND[]', e2, e1);\n\n stack.push(e2 && e1 ? 1 : 0);\n}\n\n// OR[] logical OR\n// 0x5B\nfunction OR(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'OR[]', e2, e1);\n\n stack.push(e2 || e1 ? 1 : 0);\n}\n\n// NOT[] logical NOT\n// 0x5C\nfunction NOT(state) {\n const stack = state.stack;\n const e = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'NOT[]', e);\n\n stack.push(e ? 0 : 1);\n}\n\n// DELTAP1[] DELTA exception P1\n// DELTAP2[] DELTA exception P2\n// DELTAP3[] DELTA exception P3\n// 0x5D, 0x71, 0x72\nfunction DELTAP123(b, state) {\n const stack = state.stack;\n const n = stack.pop();\n const fv = state.fv;\n const pv = state.pv;\n const ppem = state.ppem;\n const base = state.deltaBase + (b - 1) * 16;\n const ds = state.deltaShift;\n const z0 = state.z0;\n\n if (exports.DEBUG) console.log(state.step, 'DELTAP[' + b + ']', n, stack);\n\n for (let i = 0; i < n; i++) {\n const pi = stack.pop();\n const arg = stack.pop();\n const appem = base + ((arg & 0xF0) >> 4);\n if (appem !== ppem) continue;\n\n let mag = (arg & 0x0F) - 8;\n if (mag >= 0) mag++;\n if (exports.DEBUG) console.log(state.step, 'DELTAPFIX', pi, 'by', mag * ds);\n\n const p = z0[pi];\n fv.setRelative(p, p, mag * ds, pv);\n }\n}\n\n// SDB[] Set Delta Base in the graphics state\n// 0x5E\nfunction SDB(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SDB[]', n);\n\n state.deltaBase = n;\n}\n\n// SDS[] Set Delta Shift in the graphics state\n// 0x5F\nfunction SDS(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SDS[]', n);\n\n state.deltaShift = Math.pow(0.5, n);\n}\n\n// ADD[] ADD\n// 0x60\nfunction ADD(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'ADD[]', n2, n1);\n\n stack.push(n1 + n2);\n}\n\n// SUB[] SUB\n// 0x61\nfunction SUB(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SUB[]', n2, n1);\n\n stack.push(n1 - n2);\n}\n\n// DIV[] DIV\n// 0x62\nfunction DIV(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'DIV[]', n2, n1);\n\n stack.push(n1 * 64 / n2);\n}\n\n// MUL[] MUL\n// 0x63\nfunction MUL(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'MUL[]', n2, n1);\n\n stack.push(n1 * n2 / 64);\n}\n\n// ABS[] ABSolute value\n// 0x64\nfunction ABS(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'ABS[]', n);\n\n stack.push(Math.abs(n));\n}\n\n// NEG[] NEGate\n// 0x65\nfunction NEG(state) {\n const stack = state.stack;\n let n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'NEG[]', n);\n\n stack.push(-n);\n}\n\n// FLOOR[] FLOOR\n// 0x66\nfunction FLOOR(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'FLOOR[]', n);\n\n stack.push(Math.floor(n / 0x40) * 0x40);\n}\n\n// CEILING[] CEILING\n// 0x67\nfunction CEILING(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'CEILING[]', n);\n\n stack.push(Math.ceil(n / 0x40) * 0x40);\n}\n\n// ROUND[ab] ROUND value\n// 0x68-0x6B\nfunction ROUND(dt, state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'ROUND[]');\n\n stack.push(state.round(n / 0x40) * 0x40);\n}\n\n// WCVTF[] Write Control Value Table in Funits\n// 0x70\nfunction WCVTF(state) {\n const stack = state.stack;\n const v = stack.pop();\n const l = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'WCVTF[]', v, l);\n\n state.cvt[l] = v * state.ppem / state.font.unitsPerEm;\n}\n\n// DELTAC1[] DELTA exception C1\n// DELTAC2[] DELTA exception C2\n// DELTAC3[] DELTA exception C3\n// 0x73, 0x74, 0x75\nfunction DELTAC123(b, state) {\n const stack = state.stack;\n const n = stack.pop();\n const ppem = state.ppem;\n const base = state.deltaBase + (b - 1) * 16;\n const ds = state.deltaShift;\n\n if (exports.DEBUG) console.log(state.step, 'DELTAC[' + b + ']', n, stack);\n\n for (let i = 0; i < n; i++) {\n const c = stack.pop();\n const arg = stack.pop();\n const appem = base + ((arg & 0xF0) >> 4);\n if (appem !== ppem) continue;\n\n let mag = (arg & 0x0F) - 8;\n if (mag >= 0) mag++;\n\n const delta = mag * ds;\n\n if (exports.DEBUG) console.log(state.step, 'DELTACFIX', c, 'by', delta);\n\n state.cvt[c] += delta;\n }\n}\n\n// SROUND[] Super ROUND\n// 0x76\nfunction SROUND(state) {\n let n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SROUND[]', n);\n\n state.round = roundSuper;\n\n let period;\n\n switch (n & 0xC0) {\n case 0x00:\n period = 0.5;\n break;\n case 0x40:\n period = 1;\n break;\n case 0x80:\n period = 2;\n break;\n default:\n throw new Error('invalid SROUND value');\n }\n\n state.srPeriod = period;\n\n switch (n & 0x30) {\n case 0x00:\n state.srPhase = 0;\n break;\n case 0x10:\n state.srPhase = 0.25 * period;\n break;\n case 0x20:\n state.srPhase = 0.5 * period;\n break;\n case 0x30:\n state.srPhase = 0.75 * period;\n break;\n default: throw new Error('invalid SROUND value');\n }\n\n n &= 0x0F;\n\n if (n === 0) state.srThreshold = 0;\n else state.srThreshold = (n / 8 - 0.5) * period;\n}\n\n// S45ROUND[] Super ROUND 45 degrees\n// 0x77\nfunction S45ROUND(state) {\n let n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'S45ROUND[]', n);\n\n state.round = roundSuper;\n\n let period;\n\n switch (n & 0xC0) {\n case 0x00:\n period = Math.sqrt(2) / 2;\n break;\n case 0x40:\n period = Math.sqrt(2);\n break;\n case 0x80:\n period = 2 * Math.sqrt(2);\n break;\n default:\n throw new Error('invalid S45ROUND value');\n }\n\n state.srPeriod = period;\n\n switch (n & 0x30) {\n case 0x00:\n state.srPhase = 0;\n break;\n case 0x10:\n state.srPhase = 0.25 * period;\n break;\n case 0x20:\n state.srPhase = 0.5 * period;\n break;\n case 0x30:\n state.srPhase = 0.75 * period;\n break;\n default:\n throw new Error('invalid S45ROUND value');\n }\n\n n &= 0x0F;\n\n if (n === 0) state.srThreshold = 0;\n else state.srThreshold = (n / 8 - 0.5) * period;\n}\n\n// ROFF[] Round Off\n// 0x7A\nfunction ROFF(state) {\n if (exports.DEBUG) console.log(state.step, 'ROFF[]');\n\n state.round = roundOff;\n}\n\n// RUTG[] Round Up To Grid\n// 0x7C\nfunction RUTG(state) {\n if (exports.DEBUG) console.log(state.step, 'RUTG[]');\n\n state.round = roundUpToGrid;\n}\n\n// RDTG[] Round Down To Grid\n// 0x7D\nfunction RDTG(state) {\n if (exports.DEBUG) console.log(state.step, 'RDTG[]');\n\n state.round = roundDownToGrid;\n}\n\n// SCANCTRL[] SCAN conversion ConTRoL\n// 0x85\nfunction SCANCTRL(state) {\n const n = state.stack.pop();\n\n // ignored by opentype.js\n\n if (exports.DEBUG) console.log(state.step, 'SCANCTRL[]', n);\n}\n\n// SDPVTL[a] Set Dual Projection Vector To Line\n// 0x86-0x87\nfunction SDPVTL(a, state) {\n const stack = state.stack;\n const p2i = stack.pop();\n const p1i = stack.pop();\n const p2 = state.z2[p2i];\n const p1 = state.z1[p1i];\n\n if (exports.DEBUG) console.log(state.step, 'SDPVTL[' + a + ']', p2i, p1i);\n\n let dx;\n let dy;\n\n if (!a) {\n dx = p1.x - p2.x;\n dy = p1.y - p2.y;\n } else {\n dx = p2.y - p1.y;\n dy = p1.x - p2.x;\n }\n\n state.dpv = getUnitVector(dx, dy);\n}\n\n// GETINFO[] GET INFOrmation\n// 0x88\nfunction GETINFO(state) {\n const stack = state.stack;\n const sel = stack.pop();\n let r = 0;\n\n if (exports.DEBUG) console.log(state.step, 'GETINFO[]', sel);\n\n // v35 as in no subpixel hinting\n if (sel & 0x01) r = 35;\n\n // TODO rotation and stretch currently not supported\n // and thus those GETINFO are always 0.\n\n // opentype.js is always gray scaling\n if (sel & 0x20) r |= 0x1000;\n\n stack.push(r);\n}\n\n// ROLL[] ROLL the top three stack elements\n// 0x8A\nfunction ROLL(state) {\n const stack = state.stack;\n const a = stack.pop();\n const b = stack.pop();\n const c = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'ROLL[]');\n\n stack.push(b);\n stack.push(a);\n stack.push(c);\n}\n\n// MAX[] MAXimum of top two stack elements\n// 0x8B\nfunction MAX(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'MAX[]', e2, e1);\n\n stack.push(Math.max(e1, e2));\n}\n\n// MIN[] MINimum of top two stack elements\n// 0x8C\nfunction MIN(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'MIN[]', e2, e1);\n\n stack.push(Math.min(e1, e2));\n}\n\n// SCANTYPE[] SCANTYPE\n// 0x8D\nfunction SCANTYPE(state) {\n const n = state.stack.pop();\n // ignored by opentype.js\n if (exports.DEBUG) console.log(state.step, 'SCANTYPE[]', n);\n}\n\n// INSTCTRL[] INSTCTRL\n// 0x8D\nfunction INSTCTRL(state) {\n const s = state.stack.pop();\n let v = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'INSTCTRL[]', s, v);\n\n switch (s) {\n case 1 : state.inhibitGridFit = !!v; return;\n case 2 : state.ignoreCvt = !!v; return;\n default: throw new Error('invalid INSTCTRL[] selector');\n }\n}\n\n// PUSHB[abc] PUSH Bytes\n// 0xB0-0xB7\nfunction PUSHB(n, state) {\n const stack = state.stack;\n const prog = state.prog;\n let ip = state.ip;\n\n if (exports.DEBUG) console.log(state.step, 'PUSHB[' + n + ']');\n\n for (let i = 0; i < n; i++) stack.push(prog[++ip]);\n\n state.ip = ip;\n}\n\n// PUSHW[abc] PUSH Words\n// 0xB8-0xBF\nfunction PUSHW(n, state) {\n let ip = state.ip;\n const prog = state.prog;\n const stack = state.stack;\n\n if (exports.DEBUG) console.log(state.ip, 'PUSHW[' + n + ']');\n\n for (let i = 0; i < n; i++) {\n let w = (prog[++ip] << 8) | prog[++ip];\n if (w & 0x8000) w = -((w ^ 0xffff) + 1);\n stack.push(w);\n }\n\n state.ip = ip;\n}\n\n// MDRP[abcde] Move Direct Relative Point\n// 0xD0-0xEF\n// (if indirect is 0)\n//\n// and\n//\n// MIRP[abcde] Move Indirect Relative Point\n// 0xE0-0xFF\n// (if indirect is 1)\n\nfunction MDRP_MIRP(indirect, setRp0, keepD, ro, dt, state) {\n const stack = state.stack;\n const cvte = indirect && stack.pop();\n const pi = stack.pop();\n const rp0i = state.rp0;\n const rp = state.z0[rp0i];\n const p = state.z1[pi];\n\n const md = state.minDis;\n const fv = state.fv;\n const pv = state.dpv;\n let od; // original distance\n let d; // moving distance\n let sign; // sign of distance\n let cv;\n\n d = od = pv.distance(p, rp, true, true);\n sign = d >= 0 ? 1 : -1; // Math.sign would be 0 in case of 0\n\n // TODO consider autoFlip\n d = Math.abs(d);\n\n if (indirect) {\n cv = state.cvt[cvte];\n\n if (ro && Math.abs(d - cv) < state.cvCutIn) d = cv;\n }\n\n if (keepD && d < md) d = md;\n\n if (ro) d = state.round(d);\n\n fv.setRelative(p, rp, sign * d, pv);\n fv.touch(p);\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n (indirect ? 'MIRP[' : 'MDRP[') +\n (setRp0 ? 'M' : 'm') +\n (keepD ? '>' : '_') +\n (ro ? 'R' : '_') +\n (dt === 0 ? 'Gr' : (dt === 1 ? 'Bl' : (dt === 2 ? 'Wh' : ''))) +\n ']',\n indirect ?\n cvte + '(' + state.cvt[cvte] + ',' + cv + ')' :\n '',\n pi,\n '(d =', od, '->', sign * d, ')'\n );\n }\n\n state.rp1 = state.rp0;\n state.rp2 = pi;\n if (setRp0) state.rp0 = pi;\n}\n\n/*\n* The instruction table.\n*/\ninstructionTable = [\n /* 0x00 */ SVTCA.bind(undefined, yUnitVector),\n /* 0x01 */ SVTCA.bind(undefined, xUnitVector),\n /* 0x02 */ SPVTCA.bind(undefined, yUnitVector),\n /* 0x03 */ SPVTCA.bind(undefined, xUnitVector),\n /* 0x04 */ SFVTCA.bind(undefined, yUnitVector),\n /* 0x05 */ SFVTCA.bind(undefined, xUnitVector),\n /* 0x06 */ SPVTL.bind(undefined, 0),\n /* 0x07 */ SPVTL.bind(undefined, 1),\n /* 0x08 */ SFVTL.bind(undefined, 0),\n /* 0x09 */ SFVTL.bind(undefined, 1),\n /* 0x0A */ SPVFS,\n /* 0x0B */ SFVFS,\n /* 0x0C */ GPV,\n /* 0x0D */ GFV,\n /* 0x0E */ SFVTPV,\n /* 0x0F */ ISECT,\n /* 0x10 */ SRP0,\n /* 0x11 */ SRP1,\n /* 0x12 */ SRP2,\n /* 0x13 */ SZP0,\n /* 0x14 */ SZP1,\n /* 0x15 */ SZP2,\n /* 0x16 */ SZPS,\n /* 0x17 */ SLOOP,\n /* 0x18 */ RTG,\n /* 0x19 */ RTHG,\n /* 0x1A */ SMD,\n /* 0x1B */ ELSE,\n /* 0x1C */ JMPR,\n /* 0x1D */ SCVTCI,\n /* 0x1E */ undefined, // TODO SSWCI\n /* 0x1F */ undefined, // TODO SSW\n /* 0x20 */ DUP,\n /* 0x21 */ POP,\n /* 0x22 */ CLEAR,\n /* 0x23 */ SWAP,\n /* 0x24 */ DEPTH,\n /* 0x25 */ CINDEX,\n /* 0x26 */ MINDEX,\n /* 0x27 */ undefined, // TODO ALIGNPTS\n /* 0x28 */ undefined,\n /* 0x29 */ undefined, // TODO UTP\n /* 0x2A */ LOOPCALL,\n /* 0x2B */ CALL,\n /* 0x2C */ FDEF,\n /* 0x2D */ undefined, // ENDF (eaten by FDEF)\n /* 0x2E */ MDAP.bind(undefined, 0),\n /* 0x2F */ MDAP.bind(undefined, 1),\n /* 0x30 */ IUP.bind(undefined, yUnitVector),\n /* 0x31 */ IUP.bind(undefined, xUnitVector),\n /* 0x32 */ SHP.bind(undefined, 0),\n /* 0x33 */ SHP.bind(undefined, 1),\n /* 0x34 */ SHC.bind(undefined, 0),\n /* 0x35 */ SHC.bind(undefined, 1),\n /* 0x36 */ SHZ.bind(undefined, 0),\n /* 0x37 */ SHZ.bind(undefined, 1),\n /* 0x38 */ SHPIX,\n /* 0x39 */ IP,\n /* 0x3A */ MSIRP.bind(undefined, 0),\n /* 0x3B */ MSIRP.bind(undefined, 1),\n /* 0x3C */ ALIGNRP,\n /* 0x3D */ RTDG,\n /* 0x3E */ MIAP.bind(undefined, 0),\n /* 0x3F */ MIAP.bind(undefined, 1),\n /* 0x40 */ NPUSHB,\n /* 0x41 */ NPUSHW,\n /* 0x42 */ WS,\n /* 0x43 */ RS,\n /* 0x44 */ WCVTP,\n /* 0x45 */ RCVT,\n /* 0x46 */ GC.bind(undefined, 0),\n /* 0x47 */ GC.bind(undefined, 1),\n /* 0x48 */ undefined, // TODO SCFS\n /* 0x49 */ MD.bind(undefined, 0),\n /* 0x4A */ MD.bind(undefined, 1),\n /* 0x4B */ MPPEM,\n /* 0x4C */ undefined, // TODO MPS\n /* 0x4D */ FLIPON,\n /* 0x4E */ undefined, // TODO FLIPOFF\n /* 0x4F */ undefined, // TODO DEBUG\n /* 0x50 */ LT,\n /* 0x51 */ LTEQ,\n /* 0x52 */ GT,\n /* 0x53 */ GTEQ,\n /* 0x54 */ EQ,\n /* 0x55 */ NEQ,\n /* 0x56 */ ODD,\n /* 0x57 */ EVEN,\n /* 0x58 */ IF,\n /* 0x59 */ EIF,\n /* 0x5A */ AND,\n /* 0x5B */ OR,\n /* 0x5C */ NOT,\n /* 0x5D */ DELTAP123.bind(undefined, 1),\n /* 0x5E */ SDB,\n /* 0x5F */ SDS,\n /* 0x60 */ ADD,\n /* 0x61 */ SUB,\n /* 0x62 */ DIV,\n /* 0x63 */ MUL,\n /* 0x64 */ ABS,\n /* 0x65 */ NEG,\n /* 0x66 */ FLOOR,\n /* 0x67 */ CEILING,\n /* 0x68 */ ROUND.bind(undefined, 0),\n /* 0x69 */ ROUND.bind(undefined, 1),\n /* 0x6A */ ROUND.bind(undefined, 2),\n /* 0x6B */ ROUND.bind(undefined, 3),\n /* 0x6C */ undefined, // TODO NROUND[ab]\n /* 0x6D */ undefined, // TODO NROUND[ab]\n /* 0x6E */ undefined, // TODO NROUND[ab]\n /* 0x6F */ undefined, // TODO NROUND[ab]\n /* 0x70 */ WCVTF,\n /* 0x71 */ DELTAP123.bind(undefined, 2),\n /* 0x72 */ DELTAP123.bind(undefined, 3),\n /* 0x73 */ DELTAC123.bind(undefined, 1),\n /* 0x74 */ DELTAC123.bind(undefined, 2),\n /* 0x75 */ DELTAC123.bind(undefined, 3),\n /* 0x76 */ SROUND,\n /* 0x77 */ S45ROUND,\n /* 0x78 */ undefined, // TODO JROT[]\n /* 0x79 */ undefined, // TODO JROF[]\n /* 0x7A */ ROFF,\n /* 0x7B */ undefined,\n /* 0x7C */ RUTG,\n /* 0x7D */ RDTG,\n /* 0x7E */ POP, // actually SANGW, supposed to do only a pop though\n /* 0x7F */ POP, // actually AA, supposed to do only a pop though\n /* 0x80 */ undefined, // TODO FLIPPT\n /* 0x81 */ undefined, // TODO FLIPRGON\n /* 0x82 */ undefined, // TODO FLIPRGOFF\n /* 0x83 */ undefined,\n /* 0x84 */ undefined,\n /* 0x85 */ SCANCTRL,\n /* 0x86 */ SDPVTL.bind(undefined, 0),\n /* 0x87 */ SDPVTL.bind(undefined, 1),\n /* 0x88 */ GETINFO,\n /* 0x89 */ undefined, // TODO IDEF\n /* 0x8A */ ROLL,\n /* 0x8B */ MAX,\n /* 0x8C */ MIN,\n /* 0x8D */ SCANTYPE,\n /* 0x8E */ INSTCTRL,\n /* 0x8F */ undefined,\n /* 0x90 */ undefined,\n /* 0x91 */ undefined,\n /* 0x92 */ undefined,\n /* 0x93 */ undefined,\n /* 0x94 */ undefined,\n /* 0x95 */ undefined,\n /* 0x96 */ undefined,\n /* 0x97 */ undefined,\n /* 0x98 */ undefined,\n /* 0x99 */ undefined,\n /* 0x9A */ undefined,\n /* 0x9B */ undefined,\n /* 0x9C */ undefined,\n /* 0x9D */ undefined,\n /* 0x9E */ undefined,\n /* 0x9F */ undefined,\n /* 0xA0 */ undefined,\n /* 0xA1 */ undefined,\n /* 0xA2 */ undefined,\n /* 0xA3 */ undefined,\n /* 0xA4 */ undefined,\n /* 0xA5 */ undefined,\n /* 0xA6 */ undefined,\n /* 0xA7 */ undefined,\n /* 0xA8 */ undefined,\n /* 0xA9 */ undefined,\n /* 0xAA */ undefined,\n /* 0xAB */ undefined,\n /* 0xAC */ undefined,\n /* 0xAD */ undefined,\n /* 0xAE */ undefined,\n /* 0xAF */ undefined,\n /* 0xB0 */ PUSHB.bind(undefined, 1),\n /* 0xB1 */ PUSHB.bind(undefined, 2),\n /* 0xB2 */ PUSHB.bind(undefined, 3),\n /* 0xB3 */ PUSHB.bind(undefined, 4),\n /* 0xB4 */ PUSHB.bind(undefined, 5),\n /* 0xB5 */ PUSHB.bind(undefined, 6),\n /* 0xB6 */ PUSHB.bind(undefined, 7),\n /* 0xB7 */ PUSHB.bind(undefined, 8),\n /* 0xB8 */ PUSHW.bind(undefined, 1),\n /* 0xB9 */ PUSHW.bind(undefined, 2),\n /* 0xBA */ PUSHW.bind(undefined, 3),\n /* 0xBB */ PUSHW.bind(undefined, 4),\n /* 0xBC */ PUSHW.bind(undefined, 5),\n /* 0xBD */ PUSHW.bind(undefined, 6),\n /* 0xBE */ PUSHW.bind(undefined, 7),\n /* 0xBF */ PUSHW.bind(undefined, 8),\n /* 0xC0 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 0),\n /* 0xC1 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 1),\n /* 0xC2 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 2),\n /* 0xC3 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 3),\n /* 0xC4 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 0),\n /* 0xC5 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 1),\n /* 0xC6 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 2),\n /* 0xC7 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 3),\n /* 0xC8 */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 0),\n /* 0xC9 */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 1),\n /* 0xCA */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 2),\n /* 0xCB */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 3),\n /* 0xCC */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 0),\n /* 0xCD */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 1),\n /* 0xCE */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 2),\n /* 0xCF */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 3),\n /* 0xD0 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 0),\n /* 0xD1 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 1),\n /* 0xD2 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 2),\n /* 0xD3 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 3),\n /* 0xD4 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 0),\n /* 0xD5 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 1),\n /* 0xD6 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 2),\n /* 0xD7 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 3),\n /* 0xD8 */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 0),\n /* 0xD9 */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 1),\n /* 0xDA */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 2),\n /* 0xDB */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 3),\n /* 0xDC */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 0),\n /* 0xDD */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 1),\n /* 0xDE */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 2),\n /* 0xDF */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 3),\n /* 0xE0 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 0),\n /* 0xE1 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 1),\n /* 0xE2 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 2),\n /* 0xE3 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 3),\n /* 0xE4 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 0),\n /* 0xE5 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 1),\n /* 0xE6 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 2),\n /* 0xE7 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 3),\n /* 0xE8 */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 0),\n /* 0xE9 */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 1),\n /* 0xEA */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 2),\n /* 0xEB */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 3),\n /* 0xEC */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 0),\n /* 0xED */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 1),\n /* 0xEE */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 2),\n /* 0xEF */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 3),\n /* 0xF0 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 0),\n /* 0xF1 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 1),\n /* 0xF2 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 2),\n /* 0xF3 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 3),\n /* 0xF4 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 0),\n /* 0xF5 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 1),\n /* 0xF6 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 2),\n /* 0xF7 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 3),\n /* 0xF8 */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 0),\n /* 0xF9 */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 1),\n /* 0xFA */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 2),\n /* 0xFB */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 3),\n /* 0xFC */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 0),\n /* 0xFD */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 1),\n /* 0xFE */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 2),\n /* 0xFF */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 3)\n];\n\nexport default Hinting;\n\n/*****************************\n Mathematical Considerations\n******************************\n\nfv ... refers to freedom vector\npv ... refers to projection vector\nrp ... refers to reference point\np ... refers to to point being operated on\nd ... refers to distance\n\nSETRELATIVE:\n============\n\ncase freedom vector == x-axis:\n------------------------------\n\n (pv)\n .-'\n rpd .-'\n .-*\n d .-'90°'\n .-' '\n .-' '\n *-' ' b\n rp '\n '\n '\n p *----------*-------------- (fv)\n pm\n\n rpdx = rpx + d * pv.x\n rpdy = rpy + d * pv.y\n\n equation of line b\n\n y - rpdy = pvns * (x- rpdx)\n\n y = p.y\n\n x = rpdx + ( p.y - rpdy ) / pvns\n\n\ncase freedom vector == y-axis:\n------------------------------\n\n * pm\n |\\\n | \\\n | \\\n | \\\n | \\\n | \\\n | \\\n | \\\n | \\\n | \\ b\n | \\\n | \\\n | \\ .-' (pv)\n | 90° \\.-'\n | .-'* rpd\n | .-'\n * *-' d\n p rp\n\n rpdx = rpx + d * pv.x\n rpdy = rpy + d * pv.y\n\n equation of line b:\n pvns ... normal slope to pv\n\n y - rpdy = pvns * (x - rpdx)\n\n x = p.x\n\n y = rpdy + pvns * (p.x - rpdx)\n\n\n\ngeneric case:\n-------------\n\n\n .'(fv)\n .'\n .* pm\n .' !\n .' .\n .' !\n .' . b\n .' !\n * .\n p !\n 90° . ... (pv)\n ...-*-'''\n ...---''' rpd\n ...---''' d\n *--'''\n rp\n\n rpdx = rpx + d * pv.x\n rpdy = rpy + d * pv.y\n\n equation of line b:\n pvns... normal slope to pv\n\n y - rpdy = pvns * (x - rpdx)\n\n equation of freedom vector line:\n fvs ... slope of freedom vector (=fy/fx)\n\n y - py = fvs * (x - px)\n\n\n on pm both equations are true for same x/y\n\n y - rpdy = pvns * (x - rpdx)\n\n y - py = fvs * (x - px)\n\n form to y and set equal:\n\n pvns * (x - rpdx) + rpdy = fvs * (x - px) + py\n\n expand:\n\n pvns * x - pvns * rpdx + rpdy = fvs * x - fvs * px + py\n\n switch:\n\n fvs * x - fvs * px + py = pvns * x - pvns * rpdx + rpdy\n\n solve for x:\n\n fvs * x - pvns * x = fvs * px - pvns * rpdx - py + rpdy\n\n\n\n fvs * px - pvns * rpdx + rpdy - py\n x = -----------------------------------\n fvs - pvns\n\n and:\n\n y = fvs * (x - px) + py\n\n\n\nINTERPOLATE:\n============\n\nExamples of point interpolation.\n\nThe weight of the movement of the reference point gets bigger\nthe further the other reference point is away, thus the safest\noption (that is avoiding 0/0 divisions) is to weight the\noriginal distance of the other point by the sum of both distances.\n\nIf the sum of both distances is 0, then move the point by the\narithmetic average of the movement of both reference points.\n\n\n\n\n (+6)\n rp1o *---->*rp1\n . . (+12)\n . . rp2o *---------->* rp2\n . . . .\n . . . .\n . 10 20 . .\n |.........|...................| .\n . . .\n . . (+8) .\n po *------>*p .\n . . .\n . 12 . 24 .\n |...........|.......................|\n 36\n\n\n-------\n\n\n\n (+10)\n rp1o *-------->*rp1\n . . (-10)\n . . rp2 *<---------* rpo2\n . . . .\n . . . .\n . 10 . 30 . .\n |.........|.............................|\n . .\n . (+5) .\n po *--->* p .\n . . .\n . . 20 .\n |....|..............|\n 5 15\n\n\n-------\n\n\n (+10)\n rp1o *-------->*rp1\n . .\n . .\n rp2o *-------->*rp2\n\n\n (+10)\n po *-------->* p\n\n-------\n\n\n (+10)\n rp1o *-------->*rp1\n . .\n . .(+30)\n rp2o *---------------------------->*rp2\n\n\n (+25)\n po *----------------------->* p\n\n\n\nvim: set ts=4 sw=4 expandtab:\n*****/\n","/**\n * Converts a string into a list of tokens.\n */\n\n/**\n * Create a new token\n * @param {string} char a single char\n */\nfunction Token(char) {\n this.char = char;\n this.state = {};\n this.activeState = null;\n}\n\n/**\n * Create a new context range\n * @param {number} startIndex range start index\n * @param {number} endOffset range end index offset\n * @param {string} contextName owner context name\n */\nfunction ContextRange(startIndex, endOffset, contextName) {\n this.contextName = contextName;\n this.startIndex = startIndex;\n this.endOffset = endOffset;\n}\n\n/**\n * Check context start and end\n * @param {string} contextName a unique context name\n * @param {function} checkStart a predicate function the indicates a context's start\n * @param {function} checkEnd a predicate function the indicates a context's end\n */\nfunction ContextChecker(contextName, checkStart, checkEnd) {\n this.contextName = contextName;\n this.openRange = null;\n this.ranges = [];\n this.checkStart = checkStart;\n this.checkEnd = checkEnd;\n}\n\n/**\n * @typedef ContextParams\n * @type Object\n * @property {array} context context items\n * @property {number} currentIndex current item index\n */\n\n/**\n * Create a context params\n * @param {array} context a list of items\n * @param {number} currentIndex current item index\n */\nfunction ContextParams(context, currentIndex) {\n this.context = context;\n this.index = currentIndex;\n this.length = context.length;\n this.current = context[currentIndex];\n this.backtrack = context.slice(0, currentIndex);\n this.lookahead = context.slice(currentIndex + 1);\n}\n\n/**\n * Create an event instance\n * @param {string} eventId event unique id\n */\nfunction Event(eventId) {\n this.eventId = eventId;\n this.subscribers = [];\n}\n\n/**\n * Initialize a core events and auto subscribe required event handlers\n * @param {any} events an object that enlists core events handlers\n */\nfunction initializeCoreEvents(events) {\n const coreEvents = [\n 'start', 'end', 'next', 'newToken', 'contextStart',\n 'contextEnd', 'insertToken', 'removeToken', 'removeRange',\n 'replaceToken', 'replaceRange', 'composeRUD', 'updateContextsRanges'\n ];\n\n coreEvents.forEach(eventId => {\n Object.defineProperty(this.events, eventId, {\n value: new Event(eventId)\n });\n });\n\n if (!!events) {\n coreEvents.forEach(eventId => {\n const event = events[eventId];\n if (typeof event === 'function') {\n this.events[eventId].subscribe(event);\n }\n });\n }\n const requiresContextUpdate = [\n 'insertToken', 'removeToken', 'removeRange',\n 'replaceToken', 'replaceRange', 'composeRUD'\n ];\n requiresContextUpdate.forEach(eventId => {\n this.events[eventId].subscribe(\n this.updateContextsRanges\n );\n });\n}\n\n/**\n * Converts a string into a list of tokens\n * @param {any} events tokenizer core events\n */\nfunction Tokenizer(events) {\n this.tokens = [];\n this.registeredContexts = {};\n this.contextCheckers = [];\n this.events = {};\n this.registeredModifiers = [];\n\n initializeCoreEvents.call(this, events);\n}\n\n/**\n * Sets the state of a token, usually called by a state modifier.\n * @param {string} key state item key\n * @param {any} value state item value\n */\nToken.prototype.setState = function(key, value) {\n this.state[key] = value;\n this.activeState = { key, value: this.state[key] };\n return this.activeState;\n};\n\nToken.prototype.getState = function (stateId) {\n return this.state[stateId] || null;\n};\n\n/**\n * Checks if an index exists in the tokens list.\n * @param {number} index token index\n */\nTokenizer.prototype.inboundIndex = function(index) {\n return index >= 0 && index < this.tokens.length;\n};\n\n/**\n * Compose and apply a list of operations (replace, update, delete)\n * @param {array} RUDs replace, update and delete operations\n * TODO: Perf. Optimization (lengthBefore === lengthAfter ? dispatch once)\n */\nTokenizer.prototype.composeRUD = function (RUDs) {\n const silent = true;\n const state = RUDs.map(RUD => (\n this[RUD[0]].apply(this, RUD.slice(1).concat(silent))\n ));\n const hasFAILObject = obj => (\n typeof obj === 'object' &&\n obj.hasOwnProperty('FAIL')\n );\n if (state.every(hasFAILObject)) {\n return {\n FAIL: `composeRUD: one or more operations hasn't completed successfully`,\n report: state.filter(hasFAILObject)\n };\n }\n this.dispatch('composeRUD', [state.filter(op => !hasFAILObject(op))]);\n};\n\n/**\n * Replace a range of tokens with a list of tokens\n * @param {number} startIndex range start index\n * @param {number} offset range offset\n * @param {token} tokens a list of tokens to replace\n * @param {boolean} silent dispatch events and update context ranges\n */\nTokenizer.prototype.replaceRange = function (startIndex, offset, tokens, silent) {\n offset = offset !== null ? offset : this.tokens.length;\n const isTokenType = tokens.every(token => token instanceof Token);\n if (!isNaN(startIndex) && this.inboundIndex(startIndex) && isTokenType) {\n const replaced = this.tokens.splice.apply(\n this.tokens, [startIndex, offset].concat(tokens)\n );\n if (!silent) this.dispatch('replaceToken', [startIndex, offset, tokens]);\n return [replaced, tokens];\n } else {\n return { FAIL: 'replaceRange: invalid tokens or startIndex.' };\n }\n};\n\n/**\n * Replace a token with another token\n * @param {number} index token index\n * @param {token} token a token to replace\n * @param {boolean} silent dispatch events and update context ranges\n */\nTokenizer.prototype.replaceToken = function (index, token, silent) {\n if (!isNaN(index) && this.inboundIndex(index) && token instanceof Token) {\n const replaced = this.tokens.splice(index, 1, token);\n if (!silent) this.dispatch('replaceToken', [index, token]);\n return [replaced[0], token];\n } else {\n return { FAIL: 'replaceToken: invalid token or index.' };\n }\n};\n\n/**\n * Removes a range of tokens\n * @param {number} startIndex range start index\n * @param {number} offset range offset\n * @param {boolean} silent dispatch events and update context ranges\n */\nTokenizer.prototype.removeRange = function(startIndex, offset, silent) {\n offset = !isNaN(offset) ? offset : this.tokens.length;\n const tokens = this.tokens.splice(startIndex, offset);\n if (!silent) this.dispatch('removeRange', [tokens, startIndex, offset]);\n return tokens;\n};\n\n/**\n * Remove a token at a certain index\n * @param {number} index token index\n * @param {boolean} silent dispatch events and update context ranges\n */\nTokenizer.prototype.removeToken = function(index, silent) {\n if (!isNaN(index) && this.inboundIndex(index)) {\n const token = this.tokens.splice(index, 1);\n if (!silent) this.dispatch('removeToken', [token, index]);\n return token;\n } else {\n return { FAIL: 'removeToken: invalid token index.' };\n }\n};\n\n/**\n * Insert a list of tokens at a certain index\n * @param {array} tokens a list of tokens to insert\n * @param {number} index insert the list of tokens at index\n * @param {boolean} silent dispatch events and update context ranges\n */\nTokenizer.prototype.insertToken = function (tokens, index, silent) {\n const tokenType = tokens.every(\n token => token instanceof Token\n );\n if (tokenType) {\n this.tokens.splice.apply(\n this.tokens, [index, 0].concat(tokens)\n );\n if (!silent) this.dispatch('insertToken', [tokens, index]);\n return tokens;\n } else {\n return { FAIL: 'insertToken: invalid token(s).' };\n }\n};\n\n/**\n * A state modifier that is called on 'newToken' event\n * @param {string} modifierId state modifier id\n * @param {function} condition a predicate function that returns true or false\n * @param {function} modifier a function to update token state\n */\nTokenizer.prototype.registerModifier = function(modifierId, condition, modifier) {\n this.events.newToken.subscribe(function(token, contextParams) {\n const conditionParams = [token, contextParams];\n const canApplyModifier = (\n condition === null ||\n condition.apply(this, conditionParams) === true\n );\n const modifierParams = [token, contextParams];\n if (canApplyModifier) {\n let newStateValue = modifier.apply(this, modifierParams);\n token.setState(modifierId, newStateValue);\n }\n });\n this.registeredModifiers.push(modifierId);\n};\n\n/**\n * Subscribe a handler to an event\n * @param {function} eventHandler an event handler function\n */\nEvent.prototype.subscribe = function (eventHandler) {\n if (typeof eventHandler === 'function') {\n return ((this.subscribers.push(eventHandler)) - 1);\n } else {\n return { FAIL: `invalid '${this.eventId}' event handler`};\n }\n};\n\n/**\n * Unsubscribe an event handler\n * @param {string} subsId subscription id\n */\nEvent.prototype.unsubscribe = function (subsId) {\n this.subscribers.splice(subsId, 1);\n};\n\n/**\n * Sets context params current value index\n * @param {number} index context params current value index\n */\nContextParams.prototype.setCurrentIndex = function(index) {\n this.index = index;\n this.current = this.context[index];\n this.backtrack = this.context.slice(0, index);\n this.lookahead = this.context.slice(index + 1);\n};\n\n/**\n * Get an item at an offset from the current value\n * example (current value is 3):\n * 1 2 [3] 4 5 | items values\n * -2 -1 0 1 2 | offset values\n * @param {number} offset an offset from current value index\n */\nContextParams.prototype.get = function (offset) {\n switch (true) {\n case (offset === 0):\n return this.current;\n case (offset < 0 && Math.abs(offset) <= this.backtrack.length):\n return this.backtrack.slice(offset)[0];\n case (offset > 0 && offset <= this.lookahead.length):\n return this.lookahead[offset - 1];\n default:\n return null;\n }\n};\n\n/**\n * Converts a context range into a string value\n * @param {contextRange} range a context range\n */\nTokenizer.prototype.rangeToText = function (range) {\n if (range instanceof ContextRange) {\n return (\n this.getRangeTokens(range)\n .map(token => token.char).join('')\n );\n }\n};\n\n/**\n * Converts all tokens into a string\n */\nTokenizer.prototype.getText = function () {\n return this.tokens.map(token => token.char).join('');\n};\n\n/**\n * Get a context by name\n * @param {string} contextName context name to get\n */\nTokenizer.prototype.getContext = function (contextName) {\n let context = this.registeredContexts[contextName];\n return !!context ? context : null;\n};\n\n/**\n * Subscribes a new event handler to an event\n * @param {string} eventName event name to subscribe to\n * @param {function} eventHandler a function to be invoked on event\n */\nTokenizer.prototype.on = function(eventName, eventHandler) {\n const event = this.events[eventName];\n if (!!event) {\n return event.subscribe(eventHandler);\n } else {\n return null;\n }\n};\n\n/**\n * Dispatches an event\n * @param {string} eventName event name\n * @param {any} args event handler arguments\n */\nTokenizer.prototype.dispatch = function(eventName, args) {\n const event = this.events[eventName];\n if (event instanceof Event) {\n event.subscribers.forEach(subscriber => {\n subscriber.apply(this, args || []);\n });\n }\n};\n\n/**\n * Register a new context checker\n * @param {string} contextName a unique context name\n * @param {function} contextStartCheck a predicate function that returns true on context start\n * @param {function} contextEndCheck a predicate function that returns true on context end\n * TODO: call tokenize on registration to update context ranges with the new context.\n */\nTokenizer.prototype.registerContextChecker = function(contextName, contextStartCheck, contextEndCheck) {\n if (!!this.getContext(contextName)) return {\n FAIL:\n `context name '${contextName}' is already registered.`\n };\n if (typeof contextStartCheck !== 'function') return {\n FAIL:\n `missing context start check.`\n };\n if (typeof contextEndCheck !== 'function') return {\n FAIL:\n `missing context end check.`\n };\n const contextCheckers = new ContextChecker(\n contextName, contextStartCheck, contextEndCheck\n );\n this.registeredContexts[contextName] = contextCheckers;\n this.contextCheckers.push(contextCheckers);\n return contextCheckers;\n};\n\n/**\n * Gets a context range tokens\n * @param {contextRange} range a context range\n */\nTokenizer.prototype.getRangeTokens = function(range) {\n const endIndex = range.startIndex + range.endOffset;\n return [].concat(\n this.tokens\n .slice(range.startIndex, endIndex)\n );\n};\n\n/**\n * Gets the ranges of a context\n * @param {string} contextName context name\n */\nTokenizer.prototype.getContextRanges = function(contextName) {\n const context = this.getContext(contextName);\n if (!!context) {\n return context.ranges;\n } else {\n return { FAIL: `context checker '${contextName}' is not registered.` };\n }\n};\n\n/**\n * Resets context ranges to run context update\n */\nTokenizer.prototype.resetContextsRanges = function () {\n const registeredContexts = this.registeredContexts;\n for (const contextName in registeredContexts) {\n if (registeredContexts.hasOwnProperty(contextName)) {\n const context = registeredContexts[contextName];\n context.ranges = [];\n }\n }\n};\n\n/**\n * Updates context ranges\n */\nTokenizer.prototype.updateContextsRanges = function () {\n this.resetContextsRanges();\n const chars = this.tokens.map(token => token.char);\n for (let i = 0; i < chars.length; i++) {\n const contextParams = new ContextParams(chars, i);\n this.runContextCheck(contextParams);\n }\n this.dispatch('updateContextsRanges', [this.registeredContexts]);\n};\n\n/**\n * Sets the end offset of an open range\n * @param {number} offset range end offset\n * @param {string} contextName context name\n */\nTokenizer.prototype.setEndOffset = function (offset, contextName) {\n const startIndex = this.getContext(contextName).openRange.startIndex;\n let range = new ContextRange(startIndex, offset, contextName);\n const ranges = this.getContext(contextName).ranges;\n range.rangeId = `${contextName}.${ranges.length}`;\n ranges.push(range);\n this.getContext(contextName).openRange = null;\n return range;\n};\n\n/**\n * Runs a context check on the current context\n * @param {contextParams} contextParams current context params\n */\nTokenizer.prototype.runContextCheck = function(contextParams) {\n const index = contextParams.index;\n this.contextCheckers.forEach(contextChecker => {\n let contextName = contextChecker.contextName;\n let openRange = this.getContext(contextName).openRange;\n if (!openRange && contextChecker.checkStart(contextParams)) {\n openRange = new ContextRange(index, null, contextName);\n this.getContext(contextName).openRange = openRange;\n this.dispatch('contextStart', [contextName, index]);\n }\n if (!!openRange && contextChecker.checkEnd(contextParams)) {\n const offset = (index - openRange.startIndex) + 1;\n const range = this.setEndOffset(offset, contextName);\n this.dispatch('contextEnd', [contextName, range]);\n }\n });\n};\n\n/**\n * Converts a text into a list of tokens\n * @param {string} text a text to tokenize\n */\nTokenizer.prototype.tokenize = function (text) {\n this.tokens = [];\n this.resetContextsRanges();\n let chars = Array.from(text);\n this.dispatch('start');\n for (let i = 0; i < chars.length; i++) {\n const char = chars[i];\n const contextParams = new ContextParams(chars, i);\n this.dispatch('next', [contextParams]);\n this.runContextCheck(contextParams);\n let token = new Token(char);\n this.tokens.push(token);\n this.dispatch('newToken', [token, contextParams]);\n }\n this.dispatch('end', [this.tokens]);\n return this.tokens;\n};\n\nexport default Tokenizer;\nexport { Token, Event, ContextRange, ContextParams };\n","// ╭─┄┄┄────────────────────────┄─────────────────────────────────────────────╮\n// ┊ Character Class Assertions ┊ Checks if a char belongs to a certain class ┊\n// ╰─╾──────────────────────────┄─────────────────────────────────────────────╯\n// jscs:disable maximumLineLength\n/**\n * Check if a char is Arabic\n * @param {string} c a single char\n */\nexport function isArabicChar(c) {\n return /[\\u0600-\\u065F\\u066A-\\u06D2\\u06FA-\\u06FF]/.test(c);\n}\n\n/**\n * Check if a char is an isolated arabic char\n * @param {string} c a single char\n */\nexport function isIsolatedArabicChar(char) {\n return /[\\u0630\\u0690\\u0621\\u0631\\u0661\\u0671\\u0622\\u0632\\u0672\\u0692\\u06C2\\u0623\\u0673\\u0693\\u06C3\\u0624\\u0694\\u06C4\\u0625\\u0675\\u0695\\u06C5\\u06E5\\u0676\\u0696\\u06C6\\u0627\\u0677\\u0697\\u06C7\\u0648\\u0688\\u0698\\u06C8\\u0689\\u0699\\u06C9\\u068A\\u06CA\\u066B\\u068B\\u06CB\\u068C\\u068D\\u06CD\\u06FD\\u068E\\u06EE\\u06FE\\u062F\\u068F\\u06CF\\u06EF]/.test(char);\n}\n\n/**\n * Check if a char is an Arabic Tashkeel char\n * @param {string} c a single char\n */\nexport function isTashkeelArabicChar(char) {\n return /[\\u0600-\\u0605\\u060C-\\u060E\\u0610-\\u061B\\u061E\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED]/.test(char);\n}\n\n/**\n * Check if a char is Latin\n * @param {string} c a single char\n */\nexport function isLatinChar(c) {\n return /[A-z]/.test(c);\n}\n\n/**\n * Check if a char is whitespace char\n * @param {string} c a single char\n */\nexport function isWhiteSpace(c) {\n return /\\s/.test(c);\n}\n","/**\n * Query a feature by some of it's properties to lookup a glyph substitution.\n */\n\nimport { ContextParams } from '../tokenizer';\nimport { isTashkeelArabicChar } from '../char';\n\n/**\n * Create feature query instance\n * @param {Font} font opentype font instance\n */\nfunction FeatureQuery(font) {\n this.font = font;\n this.features = {};\n}\n\n/**\n * @typedef SubstitutionAction\n * @type Object\n * @property {number} id substitution type\n * @property {string} tag feature tag\n * @property {any} substitution substitution value(s)\n */\n\n/**\n * Create a substitution action instance\n * @param {SubstitutionAction} action\n */\nfunction SubstitutionAction(action) {\n this.id = action.id;\n this.tag = action.tag;\n this.substitution = action.substitution;\n}\n\n/**\n * Lookup a coverage table\n * @param {number} glyphIndex glyph index\n * @param {CoverageTable} coverage coverage table\n */\nfunction lookupCoverage(glyphIndex, coverage) {\n if (!glyphIndex) return -1;\n switch (coverage.format) {\n case 1:\n return coverage.glyphs.indexOf(glyphIndex);\n\n case 2:\n let ranges = coverage.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n if (glyphIndex >= range.start && glyphIndex <= range.end) {\n let offset = glyphIndex - range.start;\n return range.index + offset;\n }\n }\n break;\n default:\n return -1; // not found\n }\n return -1;\n}\n\n/**\n * Handle a single substitution - format 1\n * @param {ContextParams} contextParams context params to lookup\n */\nfunction singleSubstitutionFormat1(glyphIndex, subtable) {\n let substituteIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (substituteIndex === -1) return null;\n return glyphIndex + subtable.deltaGlyphId;\n}\n\n/**\n * Handle a single substitution - format 2\n * @param {ContextParams} contextParams context params to lookup\n */\nfunction singleSubstitutionFormat2(glyphIndex, subtable) {\n let substituteIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (substituteIndex === -1) return null;\n return subtable.substitute[substituteIndex];\n}\n\n/**\n * Lookup a list of coverage tables\n * @param {any} coverageList a list of coverage tables\n * @param {ContextParams} contextParams context params to lookup\n */\nfunction lookupCoverageList(coverageList, contextParams) {\n let lookupList = [];\n for (let i = 0; i < coverageList.length; i++) {\n const coverage = coverageList[i];\n let glyphIndex = contextParams.current;\n glyphIndex = Array.isArray(glyphIndex) ? glyphIndex[0] : glyphIndex;\n const lookupIndex = lookupCoverage(glyphIndex, coverage);\n if (lookupIndex !== -1) {\n lookupList.push(lookupIndex);\n }\n }\n if (lookupList.length !== coverageList.length) return -1;\n return lookupList;\n}\n\n/**\n * Handle chaining context substitution - format 3\n * @param {ContextParams} contextParams context params to lookup\n */\nfunction chainingSubstitutionFormat3(contextParams, subtable) {\n const lookupsCount = (\n subtable.inputCoverage.length +\n subtable.lookaheadCoverage.length +\n subtable.backtrackCoverage.length\n );\n if (contextParams.context.length < lookupsCount) return [];\n // INPUT LOOKUP //\n let inputLookups = lookupCoverageList(\n subtable.inputCoverage, contextParams\n );\n if (inputLookups === -1) return [];\n // LOOKAHEAD LOOKUP //\n const lookaheadOffset = subtable.inputCoverage.length - 1;\n if (contextParams.lookahead.length < subtable.lookaheadCoverage.length) return [];\n let lookaheadContext = contextParams.lookahead.slice(lookaheadOffset);\n while (lookaheadContext.length && isTashkeelArabicChar(lookaheadContext[0].char)) {\n lookaheadContext.shift();\n }\n const lookaheadParams = new ContextParams(lookaheadContext, 0);\n let lookaheadLookups = lookupCoverageList(\n subtable.lookaheadCoverage, lookaheadParams\n );\n // BACKTRACK LOOKUP //\n let backtrackContext = [].concat(contextParams.backtrack);\n backtrackContext.reverse();\n while (backtrackContext.length && isTashkeelArabicChar(backtrackContext[0].char)) {\n backtrackContext.shift();\n }\n if (backtrackContext.length < subtable.backtrackCoverage.length) return [];\n const backtrackParams = new ContextParams(backtrackContext, 0);\n let backtrackLookups = lookupCoverageList(\n subtable.backtrackCoverage, backtrackParams\n );\n const contextRulesMatch = (\n inputLookups.length === subtable.inputCoverage.length &&\n lookaheadLookups.length === subtable.lookaheadCoverage.length &&\n backtrackLookups.length === subtable.backtrackCoverage.length\n );\n let substitutions = [];\n if (contextRulesMatch) {\n for (let i = 0; i < subtable.lookupRecords.length; i++) {\n const lookupRecord = subtable.lookupRecords[i];\n const lookupListIndex = lookupRecord.lookupListIndex;\n const lookupTable = this.getLookupByIndex(lookupListIndex);\n for (let s = 0; s < lookupTable.subtables.length; s++) {\n const subtable = lookupTable.subtables[s];\n const lookup = this.getLookupMethod(lookupTable, subtable);\n const substitutionType = this.getSubstitutionType(lookupTable, subtable);\n if (substitutionType === '12') {\n for (let n = 0; n < inputLookups.length; n++) {\n const glyphIndex = contextParams.get(n);\n const substitution = lookup(glyphIndex);\n if (substitution) substitutions.push(substitution);\n }\n }\n }\n }\n }\n return substitutions;\n}\n\n/**\n * Handle ligature substitution - format 1\n * @param {ContextParams} contextParams context params to lookup\n */\nfunction ligatureSubstitutionFormat1(contextParams, subtable) {\n // COVERAGE LOOKUP //\n let glyphIndex = contextParams.current;\n let ligSetIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (ligSetIndex === -1) return null;\n // COMPONENTS LOOKUP\n // (!) note, components are ordered in the written direction.\n let ligature;\n let ligatureSet = subtable.ligatureSets[ligSetIndex];\n for (let s = 0; s < ligatureSet.length; s++) {\n ligature = ligatureSet[s];\n for (let l = 0; l < ligature.components.length; l++) {\n const lookaheadItem = contextParams.lookahead[l];\n const component = ligature.components[l];\n if (lookaheadItem !== component) break;\n if (l === ligature.components.length - 1) return ligature;\n }\n }\n return null;\n}\n\n/**\n * Handle decomposition substitution - format 1\n * @param {number} glyphIndex glyph index\n * @param {any} subtable subtable\n */\nfunction decompositionSubstitutionFormat1(glyphIndex, subtable) {\n let substituteIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (substituteIndex === -1) return null;\n return subtable.sequences[substituteIndex];\n}\n\n/**\n * Get default script features indexes\n */\nFeatureQuery.prototype.getDefaultScriptFeaturesIndexes = function () {\n const scripts = this.font.tables.gsub.scripts;\n for (let s = 0; s < scripts.length; s++) {\n const script = scripts[s];\n if (script.tag === 'DFLT') return (\n script.script.defaultLangSys.featureIndexes\n );\n }\n return [];\n};\n\n/**\n * Get feature indexes of a specific script\n * @param {string} scriptTag script tag\n */\nFeatureQuery.prototype.getScriptFeaturesIndexes = function(scriptTag) {\n const tables = this.font.tables;\n if (!tables.gsub) return [];\n if (!scriptTag) return this.getDefaultScriptFeaturesIndexes();\n const scripts = this.font.tables.gsub.scripts;\n for (let i = 0; i < scripts.length; i++) {\n const script = scripts[i];\n if (script.tag === scriptTag && script.script.defaultLangSys) {\n return script.script.defaultLangSys.featureIndexes;\n } else {\n let langSysRecords = script.langSysRecords;\n if (!!langSysRecords) {\n for (let j = 0; j < langSysRecords.length; j++) {\n const langSysRecord = langSysRecords[j];\n if (langSysRecord.tag === scriptTag) {\n let langSys = langSysRecord.langSys;\n return langSys.featureIndexes;\n }\n }\n }\n }\n }\n return this.getDefaultScriptFeaturesIndexes();\n};\n\n/**\n * Map a feature tag to a gsub feature\n * @param {any} features gsub features\n * @param {string} scriptTag script tag\n */\nFeatureQuery.prototype.mapTagsToFeatures = function (features, scriptTag) {\n let tags = {};\n for (let i = 0; i < features.length; i++) {\n const tag = features[i].tag;\n const feature = features[i].feature;\n tags[tag] = feature;\n }\n this.features[scriptTag].tags = tags;\n};\n\n/**\n * Get features of a specific script\n * @param {string} scriptTag script tag\n */\nFeatureQuery.prototype.getScriptFeatures = function (scriptTag) {\n let features = this.features[scriptTag];\n if (this.features.hasOwnProperty(scriptTag)) return features;\n const featuresIndexes = this.getScriptFeaturesIndexes(scriptTag);\n if (!featuresIndexes) return null;\n const gsub = this.font.tables.gsub;\n features = featuresIndexes.map(index => gsub.features[index]);\n this.features[scriptTag] = features;\n this.mapTagsToFeatures(features, scriptTag);\n return features;\n};\n\n/**\n * Get substitution type\n * @param {any} lookupTable lookup table\n * @param {any} subtable subtable\n */\nFeatureQuery.prototype.getSubstitutionType = function(lookupTable, subtable) {\n const lookupType = lookupTable.lookupType.toString();\n const substFormat = subtable.substFormat.toString();\n return lookupType + substFormat;\n};\n\n/**\n * Get lookup method\n * @param {any} lookupTable lookup table\n * @param {any} subtable subtable\n */\nFeatureQuery.prototype.getLookupMethod = function(lookupTable, subtable) {\n let substitutionType = this.getSubstitutionType(lookupTable, subtable);\n switch (substitutionType) {\n case '11':\n return glyphIndex => singleSubstitutionFormat1.apply(\n this, [glyphIndex, subtable]\n );\n case '12':\n return glyphIndex => singleSubstitutionFormat2.apply(\n this, [glyphIndex, subtable]\n );\n case '63':\n return contextParams => chainingSubstitutionFormat3.apply(\n this, [contextParams, subtable]\n );\n case '41':\n return contextParams => ligatureSubstitutionFormat1.apply(\n this, [contextParams, subtable]\n );\n case '21':\n return glyphIndex => decompositionSubstitutionFormat1.apply(\n this, [glyphIndex, subtable]\n );\n default:\n throw new Error(\n `lookupType: ${lookupTable.lookupType} - ` +\n `substFormat: ${subtable.substFormat} ` +\n `is not yet supported`\n );\n }\n};\n\n/**\n * [ LOOKUP TYPES ]\n * -------------------------------\n * Single 1;\n * Multiple 2;\n * Alternate 3;\n * Ligature 4;\n * Context 5;\n * ChainingContext 6;\n * ExtensionSubstitution 7;\n * ReverseChainingContext 8;\n * -------------------------------\n *\n */\n\n/**\n * @typedef FQuery\n * @type Object\n * @param {string} tag feature tag\n * @param {string} script feature script\n * @param {ContextParams} contextParams context params\n */\n\n/**\n * Lookup a feature using a query parameters\n * @param {FQuery} query feature query\n */\nFeatureQuery.prototype.lookupFeature = function (query) {\n let contextParams = query.contextParams;\n let currentIndex = contextParams.index;\n const feature = this.getFeature({\n tag: query.tag, script: query.script\n });\n if (!feature) return new Error(\n `font '${this.font.names.fullName.en}' ` +\n `doesn't support feature '${query.tag}' ` +\n `for script '${query.script}'.`\n );\n const lookups = this.getFeatureLookups(feature);\n const substitutions = [].concat(contextParams.context);\n for (let l = 0; l < lookups.length; l++) {\n const lookupTable = lookups[l];\n const subtables = this.getLookupSubtables(lookupTable);\n for (let s = 0; s < subtables.length; s++) {\n const subtable = subtables[s];\n const substType = this.getSubstitutionType(lookupTable, subtable);\n const lookup = this.getLookupMethod(lookupTable, subtable);\n let substitution;\n switch (substType) {\n case '11':\n substitution = lookup(contextParams.current);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 11, tag: query.tag, substitution\n }));\n }\n break;\n case '12':\n substitution = lookup(contextParams.current);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 12, tag: query.tag, substitution\n }));\n }\n break;\n case '63':\n substitution = lookup(contextParams);\n if (Array.isArray(substitution) && substitution.length) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 63, tag: query.tag, substitution\n }));\n }\n break;\n case '41':\n substitution = lookup(contextParams);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 41, tag: query.tag, substitution\n }));\n }\n break;\n case '21':\n substitution = lookup(contextParams.current);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 21, tag: query.tag, substitution\n }));\n }\n break;\n }\n contextParams = new ContextParams(substitutions, currentIndex);\n if (Array.isArray(substitution) && !substitution.length) continue;\n substitution = null;\n }\n }\n return substitutions.length ? substitutions : null;\n};\n\n/**\n * Checks if a font supports a specific features\n * @param {FQuery} query feature query object\n */\nFeatureQuery.prototype.supports = function (query) {\n if (!query.script) return false;\n this.getScriptFeatures(query.script);\n const supportedScript = this.features.hasOwnProperty(query.script);\n if (!query.tag) return supportedScript;\n const supportedFeature = (\n this.features[query.script].some(feature => feature.tag === query.tag)\n );\n return supportedScript && supportedFeature;\n};\n\n/**\n * Get lookup table subtables\n * @param {any} lookupTable lookup table\n */\nFeatureQuery.prototype.getLookupSubtables = function (lookupTable) {\n return lookupTable.subtables || null;\n};\n\n/**\n * Get lookup table by index\n * @param {number} index lookup table index\n */\nFeatureQuery.prototype.getLookupByIndex = function (index) {\n const lookups = this.font.tables.gsub.lookups;\n return lookups[index] || null;\n};\n\n/**\n * Get lookup tables for a feature\n * @param {string} feature\n */\nFeatureQuery.prototype.getFeatureLookups = function (feature) {\n // TODO: memoize\n return feature.lookupListIndexes.map(this.getLookupByIndex.bind(this));\n};\n\n/**\n * Query a feature by it's properties\n * @param {any} query an object that describes the properties of a query\n */\nFeatureQuery.prototype.getFeature = function getFeature(query) {\n if (!this.font) return { FAIL: `No font was found`};\n if (!this.features.hasOwnProperty(query.script)) {\n this.getScriptFeatures(query.script);\n }\n const scriptFeatures = this.features[query.script];\n if (!scriptFeatures) return (\n { FAIL: `No feature for script ${query.script}`}\n );\n if (!scriptFeatures.tags[query.tag]) return null;\n return this.features[query.script].tags[query.tag];\n};\n\nexport default FeatureQuery;\nexport { FeatureQuery, SubstitutionAction };\n","/**\n * Arabic word context checkers\n */\n\nimport { isArabicChar } from '../../../char';\n\nfunction arabicWordStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? arabic first char\n (prevChar === null && isArabicChar(char)) ||\n // ? arabic char preceded with a non arabic char\n (!isArabicChar(prevChar) && isArabicChar(char))\n );\n}\n\nfunction arabicWordEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n return (\n // ? last arabic char\n (nextChar === null) ||\n // ? next char is not arabic\n (!isArabicChar(nextChar))\n );\n}\n\nexport default {\n startCheck: arabicWordStartCheck,\n endCheck: arabicWordEndCheck\n};\n","/**\n * Arabic sentence context checkers\n */\n\nimport { isArabicChar, isWhiteSpace, isTashkeelArabicChar } from '../../../char';\n\nfunction arabicSentenceStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? an arabic char preceded with a non arabic char\n (isArabicChar(char) || isTashkeelArabicChar(char)) &&\n !isArabicChar(prevChar)\n );\n}\n\nfunction arabicSentenceEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n switch (true) {\n case nextChar === null:\n return true;\n case (!isArabicChar(nextChar) && !isTashkeelArabicChar(nextChar)):\n const nextIsWhitespace = isWhiteSpace(nextChar);\n if (!nextIsWhitespace) return true;\n if (nextIsWhitespace) {\n let arabicCharAhead = false;\n arabicCharAhead = (\n contextParams.lookahead.some(\n c => isArabicChar(c) || isTashkeelArabicChar(c)\n )\n );\n if (!arabicCharAhead) return true;\n }\n break;\n default:\n return false;\n }\n}\n\nexport default {\n startCheck: arabicSentenceStartCheck,\n endCheck: arabicSentenceEndCheck\n};\n","import { SubstitutionAction } from './featureQuery';\n\n/**\n * Apply single substitution format 1\n * @param {Array} substitutions substitutions\n * @param {any} tokens a list of tokens\n * @param {number} index token index\n */\nfunction singleSubstitutionFormat1(action, tokens, index) {\n tokens[index].setState(action.tag, action.substitution);\n}\n\n/**\n * Apply single substitution format 2\n * @param {Array} substitutions substitutions\n * @param {any} tokens a list of tokens\n * @param {number} index token index\n */\nfunction singleSubstitutionFormat2(action, tokens, index) {\n tokens[index].setState(action.tag, action.substitution);\n}\n\n/**\n * Apply chaining context substitution format 3\n * @param {Array} substitutions substitutions\n * @param {any} tokens a list of tokens\n * @param {number} index token index\n */\nfunction chainingSubstitutionFormat3(action, tokens, index) {\n action.substitution.forEach((subst, offset) => {\n const token = tokens[index + offset];\n token.setState(action.tag, subst);\n });\n}\n\n/**\n * Apply ligature substitution format 1\n * @param {Array} substitutions substitutions\n * @param {any} tokens a list of tokens\n * @param {number} index token index\n */\nfunction ligatureSubstitutionFormat1(action, tokens, index) {\n let token = tokens[index];\n token.setState(action.tag, action.substitution.ligGlyph);\n const compsCount = action.substitution.components.length;\n for (let i = 0; i < compsCount; i++) {\n token = tokens[index + i + 1];\n token.setState('deleted', true);\n }\n}\n\n/**\n * Supported substitutions\n */\nconst SUBSTITUTIONS = {\n 11: singleSubstitutionFormat1,\n 12: singleSubstitutionFormat2,\n 63: chainingSubstitutionFormat3,\n 41: ligatureSubstitutionFormat1\n};\n\n/**\n * Apply substitutions to a list of tokens\n * @param {Array} substitutions substitutions\n * @param {any} tokens a list of tokens\n * @param {number} index token index\n */\nfunction applySubstitution(action, tokens, index) {\n if (action instanceof SubstitutionAction && SUBSTITUTIONS[action.id]) {\n SUBSTITUTIONS[action.id](action, tokens, index);\n }\n}\n\nexport default applySubstitution;\n","/**\n * Apply Arabic presentation forms to a range of tokens\n */\n\nimport { ContextParams } from '../../tokenizer';\nimport { isIsolatedArabicChar, isTashkeelArabicChar } from '../../char';\nimport { SubstitutionAction } from '../featureQuery';\nimport applySubstitution from '../applySubstitution';\n\n/**\n * Check if a char can be connected to it's preceding char\n * @param {ContextParams} charContextParams context params of a char\n */\nfunction willConnectPrev(charContextParams) {\n let backtrack = [].concat(charContextParams.backtrack);\n for (let i = backtrack.length - 1; i >= 0; i--) {\n const prevChar = backtrack[i];\n const isolated = isIsolatedArabicChar(prevChar);\n const tashkeel = isTashkeelArabicChar(prevChar);\n if (!isolated && !tashkeel) return true;\n if (isolated) return false;\n }\n return false;\n}\n\n/**\n * Check if a char can be connected to it's proceeding char\n * @param {ContextParams} charContextParams context params of a char\n */\nfunction willConnectNext(charContextParams) {\n if (isIsolatedArabicChar(charContextParams.current)) return false;\n for (let i = 0; i < charContextParams.lookahead.length; i++) {\n const nextChar = charContextParams.lookahead[i];\n const tashkeel = isTashkeelArabicChar(nextChar);\n if (!tashkeel) return true;\n }\n return false;\n}\n\n/**\n * Apply arabic presentation forms to a list of tokens\n * @param {ContextRange} range a range of tokens\n */\nfunction arabicPresentationForms(range) {\n const script = 'arab';\n const tags = this.featuresTags[script];\n const tokens = this.tokenizer.getRangeTokens(range);\n if (tokens.length === 1) return;\n let contextParams = new ContextParams(\n tokens.map(token => token.getState('glyphIndex')\n ), 0);\n const charContextParams = new ContextParams(\n tokens.map(token => token.char\n ), 0);\n tokens.forEach((token, index) => {\n if (isTashkeelArabicChar(token.char)) return;\n contextParams.setCurrentIndex(index);\n charContextParams.setCurrentIndex(index);\n let CONNECT = 0; // 2 bits 00 (10: can connect next) (01: can connect prev)\n if (willConnectPrev(charContextParams)) CONNECT |= 1;\n if (willConnectNext(charContextParams)) CONNECT |= 2;\n let tag;\n switch (CONNECT) {\n case 1: (tag = 'fina'); break;\n case 2: (tag = 'init'); break;\n case 3: (tag = 'medi'); break;\n }\n if (tags.indexOf(tag) === -1) return;\n let substitutions = this.query.lookupFeature({\n tag, script, contextParams\n });\n if (substitutions instanceof Error) return console.info(substitutions.message);\n substitutions.forEach((action, index) => {\n if (action instanceof SubstitutionAction) {\n applySubstitution(action, tokens, index);\n contextParams.context[index] = action.substitution;\n }\n });\n });\n}\n\nexport default arabicPresentationForms;\nexport { arabicPresentationForms };\n","/**\n * Apply Arabic required ligatures feature to a range of tokens\n */\n\nimport { ContextParams } from '../../tokenizer';\nimport applySubstitution from '../applySubstitution';\n\n/**\n * Update context params\n * @param {any} tokens a list of tokens\n * @param {number} index current item index\n */\nfunction getContextParams(tokens, index) {\n const context = tokens.map(token => token.activeState.value);\n return new ContextParams(context, index || 0);\n}\n\n/**\n * Apply Arabic required ligatures to a context range\n * @param {ContextRange} range a range of tokens\n */\nfunction arabicRequiredLigatures(range) {\n const script = 'arab';\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams(tokens);\n contextParams.context.forEach((glyphIndex, index) => {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: 'rlig', script, contextParams\n });\n if (substitutions.length) {\n substitutions.forEach(\n action => applySubstitution(action, tokens, index)\n );\n contextParams = getContextParams(tokens);\n }\n });\n}\n\nexport default arabicRequiredLigatures;\nexport { arabicRequiredLigatures };\n","/**\n * Latin word context checkers\n */\n\nimport { isLatinChar } from '../../../char';\n\nfunction latinWordStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? latin first char\n (prevChar === null && isLatinChar(char)) ||\n // ? latin char preceded with a non latin char\n (!isLatinChar(prevChar) && isLatinChar(char))\n );\n}\n\nfunction latinWordEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n return (\n // ? last latin char\n (nextChar === null) ||\n // ? next char is not latin\n (!isLatinChar(nextChar))\n );\n}\n\nexport default {\n startCheck: latinWordStartCheck,\n endCheck: latinWordEndCheck\n};\n","/**\n * Apply Latin ligature feature to a range of tokens\n */\n\nimport { ContextParams } from '../../tokenizer';\nimport applySubstitution from '../applySubstitution';\n\n/**\n * Update context params\n * @param {any} tokens a list of tokens\n * @param {number} index current item index\n */\nfunction getContextParams(tokens, index) {\n const context = tokens.map(token => token.activeState.value);\n return new ContextParams(context, index || 0);\n}\n\n/**\n * Apply Arabic required ligatures to a context range\n * @param {ContextRange} range a range of tokens\n */\nfunction latinLigature(range) {\n const script = 'latn';\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams(tokens);\n contextParams.context.forEach((glyphIndex, index) => {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: 'liga', script, contextParams\n });\n if (substitutions.length) {\n substitutions.forEach(\n action => applySubstitution(action, tokens, index)\n );\n contextParams = getContextParams(tokens);\n }\n });\n}\n\nexport default latinLigature;\n","/**\n * Infer bidirectional properties for a given text and apply\n * the corresponding layout rules.\n */\n\nimport Tokenizer from './tokenizer';\nimport FeatureQuery from './features/featureQuery';\nimport arabicWordCheck from './features/arab/contextCheck/arabicWord';\nimport arabicSentenceCheck from './features/arab/contextCheck/arabicSentence';\nimport arabicPresentationForms from './features/arab/arabicPresentationForms';\nimport arabicRequiredLigatures from './features/arab/arabicRequiredLigatures';\nimport latinWordCheck from './features/latn/contextCheck/latinWord';\nimport latinLigature from './features/latn/latinLigatures';\n\n/**\n * Create Bidi. features\n * @param {string} baseDir text base direction. value either 'ltr' or 'rtl'\n */\nfunction Bidi(baseDir) {\n this.baseDir = baseDir || 'ltr';\n this.tokenizer = new Tokenizer();\n this.featuresTags = {};\n}\n\n/**\n * Sets Bidi text\n * @param {string} text a text input\n */\nBidi.prototype.setText = function (text) {\n this.text = text;\n};\n\n/**\n * Store essential context checks:\n * arabic word check for applying gsub features\n * arabic sentence check for adjusting arabic layout\n */\nBidi.prototype.contextChecks = ({\n latinWordCheck,\n arabicWordCheck,\n arabicSentenceCheck\n});\n\n/**\n * Register arabic word check\n */\nfunction registerContextChecker(checkId) {\n const check = this.contextChecks[`${checkId}Check`];\n return this.tokenizer.registerContextChecker(\n checkId, check.startCheck, check.endCheck\n );\n}\n\n/**\n * Perform pre tokenization procedure then\n * tokenize text input\n */\nfunction tokenizeText() {\n registerContextChecker.call(this, 'latinWord');\n registerContextChecker.call(this, 'arabicWord');\n registerContextChecker.call(this, 'arabicSentence');\n return this.tokenizer.tokenize(this.text);\n}\n\n/**\n * Reverse arabic sentence layout\n * TODO: check base dir before applying adjustments - priority low\n */\nfunction reverseArabicSentences() {\n const ranges = this.tokenizer.getContextRanges('arabicSentence');\n ranges.forEach(range => {\n let rangeTokens = this.tokenizer.getRangeTokens(range);\n this.tokenizer.replaceRange(\n range.startIndex,\n range.endOffset,\n rangeTokens.reverse()\n );\n });\n}\n\n/**\n * Register supported features tags\n * @param {script} script script tag\n * @param {Array} tags features tags list\n */\nBidi.prototype.registerFeatures = function (script, tags) {\n const supportedTags = tags.filter(\n tag => this.query.supports({script, tag})\n );\n if (!this.featuresTags.hasOwnProperty(script)) {\n this.featuresTags[script] = supportedTags;\n } else {\n this.featuresTags[script] =\n this.featuresTags[script].concat(supportedTags);\n }\n};\n\n/**\n * Apply GSUB features\n * @param {Array} tagsList a list of features tags\n * @param {string} script a script tag\n * @param {Font} font opentype font instance\n */\nBidi.prototype.applyFeatures = function (font, features) {\n if (!font) throw new Error(\n 'No valid font was provided to apply features'\n );\n if (!this.query) this.query = new FeatureQuery(font);\n for (let f = 0; f < features.length; f++) {\n const feature = features[f];\n if (!this.query.supports({script: feature.script})) continue;\n this.registerFeatures(feature.script, feature.tags);\n }\n};\n\n/**\n * Register a state modifier\n * @param {string} modifierId state modifier id\n * @param {function} condition a predicate function that returns true or false\n * @param {function} modifier a modifier function to set token state\n */\nBidi.prototype.registerModifier = function (modifierId, condition, modifier) {\n this.tokenizer.registerModifier(modifierId, condition, modifier);\n};\n\n/**\n * Check if 'glyphIndex' is registered\n */\nfunction checkGlyphIndexStatus() {\n if (this.tokenizer.registeredModifiers.indexOf('glyphIndex') === -1) {\n throw new Error(\n 'glyphIndex modifier is required to apply ' +\n 'arabic presentation features.'\n );\n }\n}\n\n/**\n * Apply arabic presentation forms features\n */\nfunction applyArabicPresentationForms() {\n const script = 'arab';\n if (!this.featuresTags.hasOwnProperty(script)) return;\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges('arabicWord');\n ranges.forEach(range => {\n arabicPresentationForms.call(this, range);\n });\n}\n\n/**\n * Apply required arabic ligatures\n */\nfunction applyArabicRequireLigatures() {\n const script = 'arab';\n if (!this.featuresTags.hasOwnProperty(script)) return;\n const tags = this.featuresTags[script];\n if (tags.indexOf('rlig') === -1) return;\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges('arabicWord');\n ranges.forEach(range => {\n arabicRequiredLigatures.call(this, range);\n });\n}\n\n/**\n * Apply required arabic ligatures\n */\nfunction applyLatinLigatures() {\n const script = 'latn';\n if (!this.featuresTags.hasOwnProperty(script)) return;\n const tags = this.featuresTags[script];\n if (tags.indexOf('liga') === -1) return;\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges('latinWord');\n ranges.forEach(range => {\n latinLigature.call(this, range);\n });\n}\n\n/**\n * Check if a context is registered\n * @param {string} contextId context id\n */\nBidi.prototype.checkContextReady = function (contextId) {\n return !!this.tokenizer.getContext(contextId);\n};\n\n/**\n * Apply features to registered contexts\n */\nBidi.prototype.applyFeaturesToContexts = function () {\n if (this.checkContextReady('arabicWord')) {\n applyArabicPresentationForms.call(this);\n applyArabicRequireLigatures.call(this);\n }\n if (this.checkContextReady('latinWord')) {\n applyLatinLigatures.call(this);\n }\n if (this.checkContextReady('arabicSentence')) {\n reverseArabicSentences.call(this);\n }\n};\n\n/**\n * process text input\n * @param {string} text an input text\n */\nBidi.prototype.processText = function(text) {\n if (!this.text || this.text !== text) {\n this.setText(text);\n tokenizeText.call(this);\n this.applyFeaturesToContexts();\n }\n};\n\n/**\n * Process a string of text to identify and adjust\n * bidirectional text entities.\n * @param {string} text input text\n */\nBidi.prototype.getBidiText = function (text) {\n this.processText(text);\n return this.tokenizer.getText();\n};\n\n/**\n * Get the current state index of each token\n * @param {text} text an input text\n */\nBidi.prototype.getTextGlyphs = function (text) {\n this.processText(text);\n let indexes = [];\n for (let i = 0; i < this.tokenizer.tokens.length; i++) {\n const token = this.tokenizer.tokens[i];\n if (token.state.deleted) continue;\n const index = token.activeState.value;\n indexes.push(Array.isArray(index) ? index[0] : index);\n }\n return indexes;\n};\n\nexport default Bidi;\n","// The Font object\n\nimport Path from './path';\nimport sfnt from './tables/sfnt';\nimport { DefaultEncoding } from './encoding';\nimport glyphset from './glyphset';\nimport Position from './position';\nimport Substitution from './substitution';\nimport { isBrowser, checkArgument, arrayBufferToNodeBuffer } from './util';\nimport HintingTrueType from './hintingtt';\nimport Bidi from './bidi';\n\n/**\n * @typedef FontOptions\n * @type Object\n * @property {Boolean} empty - whether to create a new empty font\n * @property {string} familyName\n * @property {string} styleName\n * @property {string=} fullName\n * @property {string=} postScriptName\n * @property {string=} designer\n * @property {string=} designerURL\n * @property {string=} manufacturer\n * @property {string=} manufacturerURL\n * @property {string=} license\n * @property {string=} licenseURL\n * @property {string=} version\n * @property {string=} description\n * @property {string=} copyright\n * @property {string=} trademark\n * @property {Number} unitsPerEm\n * @property {Number} ascender\n * @property {Number} descender\n * @property {Number} createdTimestamp\n * @property {string=} weightClass\n * @property {string=} widthClass\n * @property {string=} fsSelection\n */\n\n/**\n * A Font represents a loaded OpenType font file.\n * It contains a set of glyphs and methods to draw text on a drawing context,\n * or to get a path representing the text.\n * @exports opentype.Font\n * @class\n * @param {FontOptions}\n * @constructor\n */\nfunction Font(options) {\n options = options || {};\n options.tables = options.tables || {};\n\n if (!options.empty) {\n // Check that we've provided the minimum set of names.\n checkArgument(options.familyName, 'When creating a new Font object, familyName is required.');\n checkArgument(options.styleName, 'When creating a new Font object, styleName is required.');\n checkArgument(options.unitsPerEm, 'When creating a new Font object, unitsPerEm is required.');\n checkArgument(options.ascender, 'When creating a new Font object, ascender is required.');\n checkArgument(options.descender <= 0, 'When creating a new Font object, negative descender value is required.');\n\n // OS X will complain if the names are empty, so we put a single space everywhere by default.\n this.names = {\n fontFamily: {en: options.familyName || ' '},\n fontSubfamily: {en: options.styleName || ' '},\n fullName: {en: options.fullName || options.familyName + ' ' + options.styleName},\n // postScriptName may not contain any whitespace\n postScriptName: {en: options.postScriptName || (options.familyName + options.styleName).replace(/\\s/g, '')},\n designer: {en: options.designer || ' '},\n designerURL: {en: options.designerURL || ' '},\n manufacturer: {en: options.manufacturer || ' '},\n manufacturerURL: {en: options.manufacturerURL || ' '},\n license: {en: options.license || ' '},\n licenseURL: {en: options.licenseURL || ' '},\n version: {en: options.version || 'Version 0.1'},\n description: {en: options.description || ' '},\n copyright: {en: options.copyright || ' '},\n trademark: {en: options.trademark || ' '}\n };\n this.unitsPerEm = options.unitsPerEm || 1000;\n this.ascender = options.ascender;\n this.descender = options.descender;\n this.createdTimestamp = options.createdTimestamp;\n this.tables = Object.assign(options.tables, {\n os2: Object.assign({\n usWeightClass: options.weightClass || this.usWeightClasses.MEDIUM,\n usWidthClass: options.widthClass || this.usWidthClasses.MEDIUM,\n fsSelection: options.fsSelection || this.fsSelectionValues.REGULAR,\n }, options.tables.os2)\n });\n }\n\n this.supported = true; // Deprecated: parseBuffer will throw an error if font is not supported.\n this.glyphs = new glyphset.GlyphSet(this, options.glyphs || []);\n this.encoding = new DefaultEncoding(this);\n this.position = new Position(this);\n this.substitution = new Substitution(this);\n this.tables = this.tables || {};\n\n // needed for low memory mode only.\n this._push = null;\n this._hmtxTableData = {};\n\n Object.defineProperty(this, 'hinting', {\n get: function() {\n if (this._hinting) return this._hinting;\n if (this.outlinesFormat === 'truetype') {\n return (this._hinting = new HintingTrueType(this));\n }\n }\n });\n}\n\n/**\n * Check if the font has a glyph for the given character.\n * @param {string}\n * @return {Boolean}\n */\nFont.prototype.hasChar = function(c) {\n return this.encoding.charToGlyphIndex(c) !== null;\n};\n\n/**\n * Convert the given character to a single glyph index.\n * Note that this function assumes that there is a one-to-one mapping between\n * the given character and a glyph; for complex scripts this might not be the case.\n * @param {string}\n * @return {Number}\n */\nFont.prototype.charToGlyphIndex = function(s) {\n return this.encoding.charToGlyphIndex(s);\n};\n\n/**\n * Convert the given character to a single Glyph object.\n * Note that this function assumes that there is a one-to-one mapping between\n * the given character and a glyph; for complex scripts this might not be the case.\n * @param {string}\n * @return {opentype.Glyph}\n */\nFont.prototype.charToGlyph = function(c) {\n const glyphIndex = this.charToGlyphIndex(c);\n let glyph = this.glyphs.get(glyphIndex);\n if (!glyph) {\n // .notdef\n glyph = this.glyphs.get(0);\n }\n\n return glyph;\n};\n\n/**\n * Update features\n * @param {any} options features options\n */\nFont.prototype.updateFeatures = function (options) {\n // TODO: update all features options not only 'latn'.\n return this.defaultRenderOptions.features.map(feature => {\n if (feature.script === 'latn') {\n return {\n script: 'latn',\n tags: feature.tags.filter(tag => options[tag])\n };\n } else {\n return feature;\n }\n });\n};\n\n/**\n * Convert the given text to a list of Glyph objects.\n * Note that there is no strict one-to-one mapping between characters and\n * glyphs, so the list of returned glyphs can be larger or smaller than the\n * length of the given string.\n * @param {string}\n * @param {GlyphRenderOptions} [options]\n * @return {opentype.Glyph[]}\n */\nFont.prototype.stringToGlyphs = function(s, options) {\n\n const bidi = new Bidi();\n\n // Create and register 'glyphIndex' state modifier\n const charToGlyphIndexMod = token => this.charToGlyphIndex(token.char);\n bidi.registerModifier('glyphIndex', null, charToGlyphIndexMod);\n\n // roll-back to default features\n let features = options ?\n this.updateFeatures(options.features) :\n this.defaultRenderOptions.features;\n\n bidi.applyFeatures(this, features);\n\n const indexes = bidi.getTextGlyphs(s);\n\n let length = indexes.length;\n\n // convert glyph indexes to glyph objects\n const glyphs = new Array(length);\n const notdef = this.glyphs.get(0);\n for (let i = 0; i < length; i += 1) {\n glyphs[i] = this.glyphs.get(indexes[i]) || notdef;\n }\n return glyphs;\n};\n\n/**\n * @param {string}\n * @return {Number}\n */\nFont.prototype.nameToGlyphIndex = function(name) {\n return this.glyphNames.nameToGlyphIndex(name);\n};\n\n/**\n * @param {string}\n * @return {opentype.Glyph}\n */\nFont.prototype.nameToGlyph = function(name) {\n const glyphIndex = this.nameToGlyphIndex(name);\n let glyph = this.glyphs.get(glyphIndex);\n if (!glyph) {\n // .notdef\n glyph = this.glyphs.get(0);\n }\n\n return glyph;\n};\n\n/**\n * @param {Number}\n * @return {String}\n */\nFont.prototype.glyphIndexToName = function(gid) {\n if (!this.glyphNames.glyphIndexToName) {\n return '';\n }\n\n return this.glyphNames.glyphIndexToName(gid);\n};\n\n/**\n * Retrieve the value of the kerning pair between the left glyph (or its index)\n * and the right glyph (or its index). If no kerning pair is found, return 0.\n * The kerning value gets added to the advance width when calculating the spacing\n * between glyphs.\n * For GPOS kerning, this method uses the default script and language, which covers\n * most use cases. To have greater control, use font.position.getKerningValue .\n * @param {opentype.Glyph} leftGlyph\n * @param {opentype.Glyph} rightGlyph\n * @return {Number}\n */\nFont.prototype.getKerningValue = function(leftGlyph, rightGlyph) {\n leftGlyph = leftGlyph.index || leftGlyph;\n rightGlyph = rightGlyph.index || rightGlyph;\n const gposKerning = this.position.defaultKerningTables;\n if (gposKerning) {\n return this.position.getKerningValue(gposKerning, leftGlyph, rightGlyph);\n }\n // \"kern\" table\n return this.kerningPairs[leftGlyph + ',' + rightGlyph] || 0;\n};\n\n/**\n * @typedef GlyphRenderOptions\n * @type Object\n * @property {string} [script] - script used to determine which features to apply. By default, 'DFLT' or 'latn' is used.\n * See https://www.microsoft.com/typography/otspec/scripttags.htm\n * @property {string} [language='dflt'] - language system used to determine which features to apply.\n * See https://www.microsoft.com/typography/developers/opentype/languagetags.aspx\n * @property {boolean} [kerning=true] - whether to include kerning values\n * @property {object} [features] - OpenType Layout feature tags. Used to enable or disable the features of the given script/language system.\n * See https://www.microsoft.com/typography/otspec/featuretags.htm\n */\nFont.prototype.defaultRenderOptions = {\n kerning: true,\n features: [\n /**\n * these 4 features are required to render Arabic text properly\n * and shouldn't be turned off when rendering arabic text.\n */\n { script: 'arab', tags: ['init', 'medi', 'fina', 'rlig'] },\n { script: 'latn', tags: ['liga', 'rlig'] }\n ]\n};\n\n/**\n * Helper function that invokes the given callback for each glyph in the given text.\n * The callback gets `(glyph, x, y, fontSize, options)`.* @param {string} text\n * @param {string} text - The text to apply.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {GlyphRenderOptions=} options\n * @param {Function} callback\n */\nFont.prototype.forEachGlyph = function(text, x, y, fontSize, options, callback) {\n x = x !== undefined ? x : 0;\n y = y !== undefined ? y : 0;\n fontSize = fontSize !== undefined ? fontSize : 72;\n options = Object.assign({}, this.defaultRenderOptions, options);\n const fontScale = 1 / this.unitsPerEm * fontSize;\n const glyphs = this.stringToGlyphs(text, options);\n let kerningLookups;\n if (options.kerning) {\n const script = options.script || this.position.getDefaultScriptName();\n kerningLookups = this.position.getKerningTables(script, options.language);\n }\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs[i];\n callback.call(this, glyph, x, y, fontSize, options);\n if (glyph.advanceWidth) {\n x += glyph.advanceWidth * fontScale;\n }\n\n if (options.kerning && i < glyphs.length - 1) {\n // We should apply position adjustment lookups in a more generic way.\n // Here we only use the xAdvance value.\n const kerningValue = kerningLookups ?\n this.position.getKerningValue(kerningLookups, glyph.index, glyphs[i + 1].index) :\n this.getKerningValue(glyph, glyphs[i + 1]);\n x += kerningValue * fontScale;\n }\n\n if (options.letterSpacing) {\n x += options.letterSpacing * fontSize;\n } else if (options.tracking) {\n x += (options.tracking / 1000) * fontSize;\n }\n }\n return x;\n};\n\n/**\n * Create a Path object that represents the given text.\n * @param {string} text - The text to create.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {GlyphRenderOptions=} options\n * @return {opentype.Path}\n */\nFont.prototype.getPath = function(text, x, y, fontSize, options) {\n const fullPath = new Path();\n this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) {\n const glyphPath = glyph.getPath(gX, gY, gFontSize, options, this);\n fullPath.extend(glyphPath);\n });\n return fullPath;\n};\n\n/**\n * Create an array of Path objects that represent the glyphs of a given text.\n * @param {string} text - The text to create.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {GlyphRenderOptions=} options\n * @return {opentype.Path[]}\n */\nFont.prototype.getPaths = function(text, x, y, fontSize, options) {\n const glyphPaths = [];\n this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) {\n const glyphPath = glyph.getPath(gX, gY, gFontSize, options, this);\n glyphPaths.push(glyphPath);\n });\n\n return glyphPaths;\n};\n\n/**\n * Returns the advance width of a text.\n *\n * This is something different than Path.getBoundingBox() as for example a\n * suffixed whitespace increases the advanceWidth but not the bounding box\n * or an overhanging letter like a calligraphic 'f' might have a quite larger\n * bounding box than its advance width.\n *\n * This corresponds to canvas2dContext.measureText(text).width\n *\n * @param {string} text - The text to create.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {GlyphRenderOptions=} options\n * @return advance width\n */\nFont.prototype.getAdvanceWidth = function(text, fontSize, options) {\n return this.forEachGlyph(text, 0, 0, fontSize, options, function() {});\n};\n\n/**\n * Draw the text on the given drawing context.\n * @param {CanvasRenderingContext2D} ctx - A 2D drawing context, like Canvas.\n * @param {string} text - The text to create.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {GlyphRenderOptions=} options\n */\nFont.prototype.draw = function(ctx, text, x, y, fontSize, options) {\n this.getPath(text, x, y, fontSize, options).draw(ctx);\n};\n\n/**\n * Draw the points of all glyphs in the text.\n * On-curve points will be drawn in blue, off-curve points will be drawn in red.\n * @param {CanvasRenderingContext2D} ctx - A 2D drawing context, like Canvas.\n * @param {string} text - The text to create.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {GlyphRenderOptions=} options\n */\nFont.prototype.drawPoints = function(ctx, text, x, y, fontSize, options) {\n this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) {\n glyph.drawPoints(ctx, gX, gY, gFontSize);\n });\n};\n\n/**\n * Draw lines indicating important font measurements for all glyphs in the text.\n * Black lines indicate the origin of the coordinate system (point 0,0).\n * Blue lines indicate the glyph bounding box.\n * Green line indicates the advance width of the glyph.\n * @param {CanvasRenderingContext2D} ctx - A 2D drawing context, like Canvas.\n * @param {string} text - The text to create.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {GlyphRenderOptions=} options\n */\nFont.prototype.drawMetrics = function(ctx, text, x, y, fontSize, options) {\n this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) {\n glyph.drawMetrics(ctx, gX, gY, gFontSize);\n });\n};\n\n/**\n * @param {string}\n * @return {string}\n */\nFont.prototype.getEnglishName = function(name) {\n const translations = this.names[name];\n if (translations) {\n return translations.en;\n }\n};\n\n/**\n * Validate\n */\nFont.prototype.validate = function() {\n const warnings = [];\n const _this = this;\n\n function assert(predicate, message) {\n if (!predicate) {\n warnings.push(message);\n }\n }\n\n function assertNamePresent(name) {\n const englishName = _this.getEnglishName(name);\n assert(englishName && englishName.trim().length > 0,\n 'No English ' + name + ' specified.');\n }\n\n // Identification information\n assertNamePresent('fontFamily');\n assertNamePresent('weightName');\n assertNamePresent('manufacturer');\n assertNamePresent('copyright');\n assertNamePresent('version');\n\n // Dimension information\n assert(this.unitsPerEm > 0, 'No unitsPerEm specified.');\n};\n\n/**\n * Convert the font object to a SFNT data structure.\n * This structure contains all the necessary tables and metadata to create a binary OTF file.\n * @return {opentype.Table}\n */\nFont.prototype.toTables = function() {\n return sfnt.fontToTable(this);\n};\n/**\n * @deprecated Font.toBuffer is deprecated. Use Font.toArrayBuffer instead.\n */\nFont.prototype.toBuffer = function() {\n console.warn('Font.toBuffer is deprecated. Use Font.toArrayBuffer instead.');\n return this.toArrayBuffer();\n};\n/**\n * Converts a `opentype.Font` into an `ArrayBuffer`\n * @return {ArrayBuffer}\n */\nFont.prototype.toArrayBuffer = function() {\n const sfntTable = this.toTables();\n const bytes = sfntTable.encode();\n const buffer = new ArrayBuffer(bytes.length);\n const intArray = new Uint8Array(buffer);\n for (let i = 0; i < bytes.length; i++) {\n intArray[i] = bytes[i];\n }\n\n return buffer;\n};\n\n/**\n * Initiate a download of the OpenType font.\n */\nFont.prototype.download = function(fileName) {\n const familyName = this.getEnglishName('fontFamily');\n const styleName = this.getEnglishName('fontSubfamily');\n fileName = fileName || familyName.replace(/\\s/g, '') + '-' + styleName + '.otf';\n const arrayBuffer = this.toArrayBuffer();\n\n if (isBrowser()) {\n window.URL = window.URL || window.webkitURL;\n\n if (window.URL) {\n const dataView = new DataView(arrayBuffer);\n const blob = new Blob([dataView], {type: 'font/opentype'});\n\n let link = document.createElement('a');\n link.href = window.URL.createObjectURL(blob);\n link.download = fileName;\n\n let event = document.createEvent('MouseEvents');\n event.initEvent('click', true, false);\n link.dispatchEvent(event);\n } else {\n console.warn('Font file could not be downloaded. Try using a different browser.');\n }\n } else {\n const fs = require('fs');\n const buffer = arrayBufferToNodeBuffer(arrayBuffer);\n fs.writeFileSync(fileName, buffer);\n }\n};\n/**\n * @private\n */\nFont.prototype.fsSelectionValues = {\n ITALIC: 0x001, //1\n UNDERSCORE: 0x002, //2\n NEGATIVE: 0x004, //4\n OUTLINED: 0x008, //8\n STRIKEOUT: 0x010, //16\n BOLD: 0x020, //32\n REGULAR: 0x040, //64\n USER_TYPO_METRICS: 0x080, //128\n WWS: 0x100, //256\n OBLIQUE: 0x200 //512\n};\n\n/**\n * @private\n */\nFont.prototype.usWidthClasses = {\n ULTRA_CONDENSED: 1,\n EXTRA_CONDENSED: 2,\n CONDENSED: 3,\n SEMI_CONDENSED: 4,\n MEDIUM: 5,\n SEMI_EXPANDED: 6,\n EXPANDED: 7,\n EXTRA_EXPANDED: 8,\n ULTRA_EXPANDED: 9\n};\n\n/**\n * @private\n */\nFont.prototype.usWeightClasses = {\n THIN: 100,\n EXTRA_LIGHT: 200,\n LIGHT: 300,\n NORMAL: 400,\n MEDIUM: 500,\n SEMI_BOLD: 600,\n BOLD: 700,\n EXTRA_BOLD: 800,\n BLACK: 900\n};\n\nexport default Font;\n","// The `fvar` table stores font variation axes and instances.\n// https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6fvar.html\n\nimport check from '../check';\nimport parse from '../parse';\nimport table from '../table';\n\nfunction addName(name, names) {\n const nameString = JSON.stringify(name);\n let nameID = 256;\n for (let nameKey in names) {\n let n = parseInt(nameKey);\n if (!n || n < 256) {\n continue;\n }\n\n if (JSON.stringify(names[nameKey]) === nameString) {\n return n;\n }\n\n if (nameID <= n) {\n nameID = n + 1;\n }\n }\n\n names[nameID] = name;\n return nameID;\n}\n\nfunction makeFvarAxis(n, axis, names) {\n const nameID = addName(axis.name, names);\n return [\n {name: 'tag_' + n, type: 'TAG', value: axis.tag},\n {name: 'minValue_' + n, type: 'FIXED', value: axis.minValue << 16},\n {name: 'defaultValue_' + n, type: 'FIXED', value: axis.defaultValue << 16},\n {name: 'maxValue_' + n, type: 'FIXED', value: axis.maxValue << 16},\n {name: 'flags_' + n, type: 'USHORT', value: 0},\n {name: 'nameID_' + n, type: 'USHORT', value: nameID}\n ];\n}\n\nfunction parseFvarAxis(data, start, names) {\n const axis = {};\n const p = new parse.Parser(data, start);\n axis.tag = p.parseTag();\n axis.minValue = p.parseFixed();\n axis.defaultValue = p.parseFixed();\n axis.maxValue = p.parseFixed();\n p.skip('uShort', 1); // reserved for flags; no values defined\n axis.name = names[p.parseUShort()] || {};\n return axis;\n}\n\nfunction makeFvarInstance(n, inst, axes, names) {\n const nameID = addName(inst.name, names);\n const fields = [\n {name: 'nameID_' + n, type: 'USHORT', value: nameID},\n {name: 'flags_' + n, type: 'USHORT', value: 0}\n ];\n\n for (let i = 0; i < axes.length; ++i) {\n const axisTag = axes[i].tag;\n fields.push({\n name: 'axis_' + n + ' ' + axisTag,\n type: 'FIXED',\n value: inst.coordinates[axisTag] << 16\n });\n }\n\n return fields;\n}\n\nfunction parseFvarInstance(data, start, axes, names) {\n const inst = {};\n const p = new parse.Parser(data, start);\n inst.name = names[p.parseUShort()] || {};\n p.skip('uShort', 1); // reserved for flags; no values defined\n\n inst.coordinates = {};\n for (let i = 0; i < axes.length; ++i) {\n inst.coordinates[axes[i].tag] = p.parseFixed();\n }\n\n return inst;\n}\n\nfunction makeFvarTable(fvar, names) {\n const result = new table.Table('fvar', [\n {name: 'version', type: 'ULONG', value: 0x10000},\n {name: 'offsetToData', type: 'USHORT', value: 0},\n {name: 'countSizePairs', type: 'USHORT', value: 2},\n {name: 'axisCount', type: 'USHORT', value: fvar.axes.length},\n {name: 'axisSize', type: 'USHORT', value: 20},\n {name: 'instanceCount', type: 'USHORT', value: fvar.instances.length},\n {name: 'instanceSize', type: 'USHORT', value: 4 + fvar.axes.length * 4}\n ]);\n result.offsetToData = result.sizeOf();\n\n for (let i = 0; i < fvar.axes.length; i++) {\n result.fields = result.fields.concat(makeFvarAxis(i, fvar.axes[i], names));\n }\n\n for (let j = 0; j < fvar.instances.length; j++) {\n result.fields = result.fields.concat(makeFvarInstance(j, fvar.instances[j], fvar.axes, names));\n }\n\n return result;\n}\n\nfunction parseFvarTable(data, start, names) {\n const p = new parse.Parser(data, start);\n const tableVersion = p.parseULong();\n check.argument(tableVersion === 0x00010000, 'Unsupported fvar table version.');\n const offsetToData = p.parseOffset16();\n // Skip countSizePairs.\n p.skip('uShort', 1);\n const axisCount = p.parseUShort();\n const axisSize = p.parseUShort();\n const instanceCount = p.parseUShort();\n const instanceSize = p.parseUShort();\n\n const axes = [];\n for (let i = 0; i < axisCount; i++) {\n axes.push(parseFvarAxis(data, start + offsetToData + i * axisSize, names));\n }\n\n const instances = [];\n const instanceStart = start + offsetToData + axisCount * axisSize;\n for (let j = 0; j < instanceCount; j++) {\n instances.push(parseFvarInstance(data, instanceStart + j * instanceSize, axes, names));\n }\n\n return {axes: axes, instances: instances};\n}\n\nexport default { make: makeFvarTable, parse: parseFvarTable };\n","// The `GDEF` table contains various glyph properties\n// https://docs.microsoft.com/en-us/typography/opentype/spec/gdef\n\nimport check from '../check';\nimport { Parser } from '../parse';\n\nvar attachList = function() {\n return {\n coverage: this.parsePointer(Parser.coverage),\n attachPoints: this.parseList(Parser.pointer(Parser.uShortList))\n };\n};\n\nvar caretValue = function() {\n var format = this.parseUShort();\n check.argument(format === 1 || format === 2 || format === 3,\n 'Unsupported CaretValue table version.');\n if (format === 1) {\n return { coordinate: this.parseShort() };\n } else if (format === 2) {\n return { pointindex: this.parseShort() };\n } else if (format === 3) {\n // Device / Variation Index tables unsupported\n return { coordinate: this.parseShort() };\n }\n};\n\nvar ligGlyph = function() {\n return this.parseList(Parser.pointer(caretValue));\n};\n\nvar ligCaretList = function() {\n return {\n coverage: this.parsePointer(Parser.coverage),\n ligGlyphs: this.parseList(Parser.pointer(ligGlyph))\n };\n};\n\nvar markGlyphSets = function() {\n this.parseUShort(); // Version\n return this.parseList(Parser.pointer(Parser.coverage));\n};\n\nfunction parseGDEFTable(data, start) {\n start = start || 0;\n const p = new Parser(data, start);\n const tableVersion = p.parseVersion(1);\n check.argument(tableVersion === 1 || tableVersion === 1.2 || tableVersion === 1.3,\n 'Unsupported GDEF table version.');\n var gdef = {\n version: tableVersion,\n classDef: p.parsePointer(Parser.classDef),\n attachList: p.parsePointer(attachList),\n ligCaretList: p.parsePointer(ligCaretList),\n markAttachClassDef: p.parsePointer(Parser.classDef)\n };\n if (tableVersion >= 1.2) {\n gdef.markGlyphSets = p.parsePointer(markGlyphSets);\n }\n return gdef;\n}\nexport default { parse: parseGDEFTable };\n","// The `GPOS` table contains kerning pairs, among other things.\n// https://docs.microsoft.com/en-us/typography/opentype/spec/gpos\n\nimport check from '../check';\nimport { Parser } from '../parse';\nimport table from '../table';\n\nconst subtableParsers = new Array(10); // subtableParsers[0] is unused\n\n// https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#lookup-type-1-single-adjustment-positioning-subtable\n// this = Parser instance\nsubtableParsers[1] = function parseLookup1() {\n const start = this.offset + this.relativeOffset;\n const posformat = this.parseUShort();\n if (posformat === 1) {\n return {\n posFormat: 1,\n coverage: this.parsePointer(Parser.coverage),\n value: this.parseValueRecord()\n };\n } else if (posformat === 2) {\n return {\n posFormat: 2,\n coverage: this.parsePointer(Parser.coverage),\n values: this.parseValueRecordList()\n };\n }\n check.assert(false, '0x' + start.toString(16) + ': GPOS lookup type 1 format must be 1 or 2.');\n};\n\n// https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#lookup-type-2-pair-adjustment-positioning-subtable\nsubtableParsers[2] = function parseLookup2() {\n const start = this.offset + this.relativeOffset;\n const posFormat = this.parseUShort();\n check.assert(posFormat === 1 || posFormat === 2, '0x' + start.toString(16) + ': GPOS lookup type 2 format must be 1 or 2.');\n const coverage = this.parsePointer(Parser.coverage);\n const valueFormat1 = this.parseUShort();\n const valueFormat2 = this.parseUShort();\n if (posFormat === 1) {\n // Adjustments for Glyph Pairs\n return {\n posFormat: posFormat,\n coverage: coverage,\n valueFormat1: valueFormat1,\n valueFormat2: valueFormat2,\n pairSets: this.parseList(Parser.pointer(Parser.list(function() {\n return { // pairValueRecord\n secondGlyph: this.parseUShort(),\n value1: this.parseValueRecord(valueFormat1),\n value2: this.parseValueRecord(valueFormat2)\n };\n })))\n };\n } else if (posFormat === 2) {\n const classDef1 = this.parsePointer(Parser.classDef);\n const classDef2 = this.parsePointer(Parser.classDef);\n const class1Count = this.parseUShort();\n const class2Count = this.parseUShort();\n return {\n // Class Pair Adjustment\n posFormat: posFormat,\n coverage: coverage,\n valueFormat1: valueFormat1,\n valueFormat2: valueFormat2,\n classDef1: classDef1,\n classDef2: classDef2,\n class1Count: class1Count,\n class2Count: class2Count,\n classRecords: this.parseList(class1Count, Parser.list(class2Count, function() {\n return {\n value1: this.parseValueRecord(valueFormat1),\n value2: this.parseValueRecord(valueFormat2)\n };\n }))\n };\n }\n};\n\nsubtableParsers[3] = function parseLookup3() { return { error: 'GPOS Lookup 3 not supported' }; };\nsubtableParsers[4] = function parseLookup4() { return { error: 'GPOS Lookup 4 not supported' }; };\nsubtableParsers[5] = function parseLookup5() { return { error: 'GPOS Lookup 5 not supported' }; };\nsubtableParsers[6] = function parseLookup6() { return { error: 'GPOS Lookup 6 not supported' }; };\nsubtableParsers[7] = function parseLookup7() { return { error: 'GPOS Lookup 7 not supported' }; };\nsubtableParsers[8] = function parseLookup8() { return { error: 'GPOS Lookup 8 not supported' }; };\nsubtableParsers[9] = function parseLookup9() { return { error: 'GPOS Lookup 9 not supported' }; };\n\n// https://docs.microsoft.com/en-us/typography/opentype/spec/gpos\nfunction parseGposTable(data, start) {\n start = start || 0;\n const p = new Parser(data, start);\n const tableVersion = p.parseVersion(1);\n check.argument(tableVersion === 1 || tableVersion === 1.1, 'Unsupported GPOS table version ' + tableVersion);\n\n if (tableVersion === 1) {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers)\n };\n } else {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers),\n variations: p.parseFeatureVariationsList()\n };\n }\n\n}\n\n// GPOS Writing //////////////////////////////////////////////\n// NOT SUPPORTED\nconst subtableMakers = new Array(10);\n\nfunction makeGposTable(gpos) {\n return new table.Table('GPOS', [\n {name: 'version', type: 'ULONG', value: 0x10000},\n {name: 'scripts', type: 'TABLE', value: new table.ScriptList(gpos.scripts)},\n {name: 'features', type: 'TABLE', value: new table.FeatureList(gpos.features)},\n {name: 'lookups', type: 'TABLE', value: new table.LookupList(gpos.lookups, subtableMakers)}\n ]);\n}\n\nexport default { parse: parseGposTable, make: makeGposTable };\n","// The `kern` table contains kerning pairs.\n// Note that some fonts use the GPOS OpenType layout table to specify kerning.\n// https://www.microsoft.com/typography/OTSPEC/kern.htm\n\nimport check from '../check';\nimport parse from '../parse';\n\nfunction parseWindowsKernTable(p) {\n const pairs = {};\n // Skip nTables.\n p.skip('uShort');\n const subtableVersion = p.parseUShort();\n check.argument(subtableVersion === 0, 'Unsupported kern sub-table version.');\n // Skip subtableLength, subtableCoverage\n p.skip('uShort', 2);\n const nPairs = p.parseUShort();\n // Skip searchRange, entrySelector, rangeShift.\n p.skip('uShort', 3);\n for (let i = 0; i < nPairs; i += 1) {\n const leftIndex = p.parseUShort();\n const rightIndex = p.parseUShort();\n const value = p.parseShort();\n pairs[leftIndex + ',' + rightIndex] = value;\n }\n return pairs;\n}\n\nfunction parseMacKernTable(p) {\n const pairs = {};\n // The Mac kern table stores the version as a fixed (32 bits) but we only loaded the first 16 bits.\n // Skip the rest.\n p.skip('uShort');\n const nTables = p.parseULong();\n //check.argument(nTables === 1, 'Only 1 subtable is supported (got ' + nTables + ').');\n if (nTables > 1) {\n console.warn('Only the first kern subtable is supported.');\n }\n p.skip('uLong');\n const coverage = p.parseUShort();\n const subtableVersion = coverage & 0xFF;\n p.skip('uShort');\n if (subtableVersion === 0) {\n const nPairs = p.parseUShort();\n // Skip searchRange, entrySelector, rangeShift.\n p.skip('uShort', 3);\n for (let i = 0; i < nPairs; i += 1) {\n const leftIndex = p.parseUShort();\n const rightIndex = p.parseUShort();\n const value = p.parseShort();\n pairs[leftIndex + ',' + rightIndex] = value;\n }\n }\n return pairs;\n}\n\n// Parse the `kern` table which contains kerning pairs.\nfunction parseKernTable(data, start) {\n const p = new parse.Parser(data, start);\n const tableVersion = p.parseUShort();\n if (tableVersion === 0) {\n return parseWindowsKernTable(p);\n } else if (tableVersion === 1) {\n return parseMacKernTable(p);\n } else {\n throw new Error('Unsupported kern table version (' + tableVersion + ').');\n }\n}\n\nexport default { parse: parseKernTable };\n","// The `loca` table stores the offsets to the locations of the glyphs in the font.\n// https://www.microsoft.com/typography/OTSPEC/loca.htm\n\nimport parse from '../parse';\n\n// Parse the `loca` table. This table stores the offsets to the locations of the glyphs in the font,\n// relative to the beginning of the glyphData table.\n// The number of glyphs stored in the `loca` table is specified in the `maxp` table (under numGlyphs)\n// The loca table has two versions: a short version where offsets are stored as uShorts, and a long\n// version where offsets are stored as uLongs. The `head` table specifies which version to use\n// (under indexToLocFormat).\nfunction parseLocaTable(data, start, numGlyphs, shortVersion) {\n const p = new parse.Parser(data, start);\n const parseFn = shortVersion ? p.parseUShort : p.parseULong;\n // There is an extra entry after the last index element to compute the length of the last glyph.\n // That's why we use numGlyphs + 1.\n const glyphOffsets = [];\n for (let i = 0; i < numGlyphs + 1; i += 1) {\n let glyphOffset = parseFn.call(p);\n if (shortVersion) {\n // The short table version stores the actual offset divided by 2.\n glyphOffset *= 2;\n }\n\n glyphOffsets.push(glyphOffset);\n }\n\n return glyphOffsets;\n}\n\nexport default { parse: parseLocaTable };\n","// opentype.js\n// https://github.com/opentypejs/opentype.js\n// (c) 2015 Frederik De Bleser\n// opentype.js may be freely distributed under the MIT license.\n\n/* global DataView, Uint8Array, XMLHttpRequest */\n\nimport 'string.prototype.codepointat';\nimport inflate from 'tiny-inflate';\nimport Font from './font';\nimport Glyph from './glyph';\nimport { CmapEncoding, GlyphNames, addGlyphNames } from './encoding';\nimport parse from './parse';\nimport BoundingBox from './bbox';\nimport Path from './path';\nimport { nodeBufferToArrayBuffer } from './util';\nimport cmap from './tables/cmap';\nimport cff from './tables/cff';\nimport fvar from './tables/fvar';\nimport glyf from './tables/glyf';\nimport gdef from './tables/gdef';\nimport gpos from './tables/gpos';\nimport gsub from './tables/gsub';\nimport head from './tables/head';\nimport hhea from './tables/hhea';\nimport hmtx from './tables/hmtx';\nimport kern from './tables/kern';\nimport ltag from './tables/ltag';\nimport loca from './tables/loca';\nimport maxp from './tables/maxp';\nimport _name from './tables/name';\nimport os2 from './tables/os2';\nimport post from './tables/post';\nimport meta from './tables/meta';\n\n/**\n * The opentype library.\n * @namespace opentype\n */\n\n// File loaders /////////////////////////////////////////////////////////\n/**\n * Loads a font from a file. The callback throws an error message as the first parameter if it fails\n * and the font as an ArrayBuffer in the second parameter if it succeeds.\n * @param {string} path - The path of the file\n * @param {Function} callback - The function to call when the font load completes\n */\nfunction loadFromFile(path, callback) {\n const fs = require('fs');\n fs.readFile(path, function(err, buffer) {\n if (err) {\n return callback(err.message);\n }\n\n callback(null, nodeBufferToArrayBuffer(buffer));\n });\n}\n/**\n * Loads a font from a URL. The callback throws an error message as the first parameter if it fails\n * and the font as an ArrayBuffer in the second parameter if it succeeds.\n * @param {string} url - The URL of the font file.\n * @param {Function} callback - The function to call when the font load completes\n */\nfunction loadFromUrl(url, callback) {\n const request = new XMLHttpRequest();\n request.open('get', url, true);\n request.responseType = 'arraybuffer';\n request.onload = function() {\n if (request.response) {\n return callback(null, request.response);\n } else {\n return callback('Font could not be loaded: ' + request.statusText);\n }\n };\n\n request.onerror = function () {\n callback('Font could not be loaded');\n };\n\n request.send();\n}\n\n// Table Directory Entries //////////////////////////////////////////////\n/**\n * Parses OpenType table entries.\n * @param {DataView}\n * @param {Number}\n * @return {Object[]}\n */\nfunction parseOpenTypeTableEntries(data, numTables) {\n const tableEntries = [];\n let p = 12;\n for (let i = 0; i < numTables; i += 1) {\n const tag = parse.getTag(data, p);\n const checksum = parse.getULong(data, p + 4);\n const offset = parse.getULong(data, p + 8);\n const length = parse.getULong(data, p + 12);\n tableEntries.push({tag: tag, checksum: checksum, offset: offset, length: length, compression: false});\n p += 16;\n }\n\n return tableEntries;\n}\n\n/**\n * Parses WOFF table entries.\n * @param {DataView}\n * @param {Number}\n * @return {Object[]}\n */\nfunction parseWOFFTableEntries(data, numTables) {\n const tableEntries = [];\n let p = 44; // offset to the first table directory entry.\n for (let i = 0; i < numTables; i += 1) {\n const tag = parse.getTag(data, p);\n const offset = parse.getULong(data, p + 4);\n const compLength = parse.getULong(data, p + 8);\n const origLength = parse.getULong(data, p + 12);\n let compression;\n if (compLength < origLength) {\n compression = 'WOFF';\n } else {\n compression = false;\n }\n\n tableEntries.push({tag: tag, offset: offset, compression: compression,\n compressedLength: compLength, length: origLength});\n p += 20;\n }\n\n return tableEntries;\n}\n\n/**\n * @typedef TableData\n * @type Object\n * @property {DataView} data - The DataView\n * @property {number} offset - The data offset.\n */\n\n/**\n * @param {DataView}\n * @param {Object}\n * @return {TableData}\n */\nfunction uncompressTable(data, tableEntry) {\n if (tableEntry.compression === 'WOFF') {\n const inBuffer = new Uint8Array(data.buffer, tableEntry.offset + 2, tableEntry.compressedLength - 2);\n const outBuffer = new Uint8Array(tableEntry.length);\n inflate(inBuffer, outBuffer);\n if (outBuffer.byteLength !== tableEntry.length) {\n throw new Error('Decompression error: ' + tableEntry.tag + ' decompressed length doesn\\'t match recorded length');\n }\n\n const view = new DataView(outBuffer.buffer, 0);\n return {data: view, offset: 0};\n } else {\n return {data: data, offset: tableEntry.offset};\n }\n}\n\n// Public API ///////////////////////////////////////////////////////////\n\n/**\n * Parse the OpenType file data (as an ArrayBuffer) and return a Font object.\n * Throws an error if the font could not be parsed.\n * @param {ArrayBuffer}\n * @param {Object} opt - options for parsing\n * @return {opentype.Font}\n */\nfunction parseBuffer(buffer, opt) {\n opt = (opt === undefined || opt === null) ? {} : opt;\n\n let indexToLocFormat;\n let ltagTable;\n\n // Since the constructor can also be called to create new fonts from scratch, we indicate this\n // should be an empty font that we'll fill with our own data.\n const font = new Font({empty: true});\n\n // OpenType fonts use big endian byte ordering.\n // We can't rely on typed array view types, because they operate with the endianness of the host computer.\n // Instead we use DataViews where we can specify endianness.\n const data = new DataView(buffer, 0);\n let numTables;\n let tableEntries = [];\n const signature = parse.getTag(data, 0);\n if (signature === String.fromCharCode(0, 1, 0, 0) || signature === 'true' || signature === 'typ1') {\n font.outlinesFormat = 'truetype';\n numTables = parse.getUShort(data, 4);\n tableEntries = parseOpenTypeTableEntries(data, numTables);\n } else if (signature === 'OTTO') {\n font.outlinesFormat = 'cff';\n numTables = parse.getUShort(data, 4);\n tableEntries = parseOpenTypeTableEntries(data, numTables);\n } else if (signature === 'wOFF') {\n const flavor = parse.getTag(data, 4);\n if (flavor === String.fromCharCode(0, 1, 0, 0)) {\n font.outlinesFormat = 'truetype';\n } else if (flavor === 'OTTO') {\n font.outlinesFormat = 'cff';\n } else {\n throw new Error('Unsupported OpenType flavor ' + signature);\n }\n\n numTables = parse.getUShort(data, 12);\n tableEntries = parseWOFFTableEntries(data, numTables);\n } else {\n throw new Error('Unsupported OpenType signature ' + signature);\n }\n\n let cffTableEntry;\n let fvarTableEntry;\n let glyfTableEntry;\n let gdefTableEntry;\n let gposTableEntry;\n let gsubTableEntry;\n let hmtxTableEntry;\n let kernTableEntry;\n let locaTableEntry;\n let nameTableEntry;\n let metaTableEntry;\n let p;\n\n for (let i = 0; i < numTables; i += 1) {\n const tableEntry = tableEntries[i];\n let table;\n switch (tableEntry.tag) {\n case 'cmap':\n table = uncompressTable(data, tableEntry);\n font.tables.cmap = cmap.parse(table.data, table.offset);\n font.encoding = new CmapEncoding(font.tables.cmap);\n break;\n case 'cvt ' :\n table = uncompressTable(data, tableEntry);\n p = new parse.Parser(table.data, table.offset);\n font.tables.cvt = p.parseShortList(tableEntry.length / 2);\n break;\n case 'fvar':\n fvarTableEntry = tableEntry;\n break;\n case 'fpgm' :\n table = uncompressTable(data, tableEntry);\n p = new parse.Parser(table.data, table.offset);\n font.tables.fpgm = p.parseByteList(tableEntry.length);\n break;\n case 'head':\n table = uncompressTable(data, tableEntry);\n font.tables.head = head.parse(table.data, table.offset);\n font.unitsPerEm = font.tables.head.unitsPerEm;\n indexToLocFormat = font.tables.head.indexToLocFormat;\n break;\n case 'hhea':\n table = uncompressTable(data, tableEntry);\n font.tables.hhea = hhea.parse(table.data, table.offset);\n font.ascender = font.tables.hhea.ascender;\n font.descender = font.tables.hhea.descender;\n font.numberOfHMetrics = font.tables.hhea.numberOfHMetrics;\n break;\n case 'hmtx':\n hmtxTableEntry = tableEntry;\n break;\n case 'ltag':\n table = uncompressTable(data, tableEntry);\n ltagTable = ltag.parse(table.data, table.offset);\n break;\n case 'maxp':\n table = uncompressTable(data, tableEntry);\n font.tables.maxp = maxp.parse(table.data, table.offset);\n font.numGlyphs = font.tables.maxp.numGlyphs;\n break;\n case 'name':\n nameTableEntry = tableEntry;\n break;\n case 'OS/2':\n table = uncompressTable(data, tableEntry);\n font.tables.os2 = os2.parse(table.data, table.offset);\n break;\n case 'post':\n table = uncompressTable(data, tableEntry);\n font.tables.post = post.parse(table.data, table.offset);\n font.glyphNames = new GlyphNames(font.tables.post);\n break;\n case 'prep' :\n table = uncompressTable(data, tableEntry);\n p = new parse.Parser(table.data, table.offset);\n font.tables.prep = p.parseByteList(tableEntry.length);\n break;\n case 'glyf':\n glyfTableEntry = tableEntry;\n break;\n case 'loca':\n locaTableEntry = tableEntry;\n break;\n case 'CFF ':\n cffTableEntry = tableEntry;\n break;\n case 'kern':\n kernTableEntry = tableEntry;\n break;\n case 'GDEF':\n gdefTableEntry = tableEntry;\n break;\n case 'GPOS':\n gposTableEntry = tableEntry;\n break;\n case 'GSUB':\n gsubTableEntry = tableEntry;\n break;\n case 'meta':\n metaTableEntry = tableEntry;\n break;\n }\n }\n\n const nameTable = uncompressTable(data, nameTableEntry);\n font.tables.name = _name.parse(nameTable.data, nameTable.offset, ltagTable);\n font.names = font.tables.name;\n\n if (glyfTableEntry && locaTableEntry) {\n const shortVersion = indexToLocFormat === 0;\n const locaTable = uncompressTable(data, locaTableEntry);\n const locaOffsets = loca.parse(locaTable.data, locaTable.offset, font.numGlyphs, shortVersion);\n const glyfTable = uncompressTable(data, glyfTableEntry);\n font.glyphs = glyf.parse(glyfTable.data, glyfTable.offset, locaOffsets, font, opt);\n } else if (cffTableEntry) {\n const cffTable = uncompressTable(data, cffTableEntry);\n cff.parse(cffTable.data, cffTable.offset, font, opt);\n } else {\n throw new Error('Font doesn\\'t contain TrueType or CFF outlines.');\n }\n\n const hmtxTable = uncompressTable(data, hmtxTableEntry);\n hmtx.parse(font, hmtxTable.data, hmtxTable.offset, font.numberOfHMetrics, font.numGlyphs, font.glyphs, opt);\n addGlyphNames(font, opt);\n\n if (kernTableEntry) {\n const kernTable = uncompressTable(data, kernTableEntry);\n font.kerningPairs = kern.parse(kernTable.data, kernTable.offset);\n } else {\n font.kerningPairs = {};\n }\n\n if (gdefTableEntry) {\n const gdefTable = uncompressTable(data, gdefTableEntry);\n font.tables.gdef = gdef.parse(gdefTable.data, gdefTable.offset);\n }\n\n if (gposTableEntry) {\n const gposTable = uncompressTable(data, gposTableEntry);\n font.tables.gpos = gpos.parse(gposTable.data, gposTable.offset);\n font.position.init();\n }\n\n if (gsubTableEntry) {\n const gsubTable = uncompressTable(data, gsubTableEntry);\n font.tables.gsub = gsub.parse(gsubTable.data, gsubTable.offset);\n }\n\n if (fvarTableEntry) {\n const fvarTable = uncompressTable(data, fvarTableEntry);\n font.tables.fvar = fvar.parse(fvarTable.data, fvarTable.offset, font.names);\n }\n\n if (metaTableEntry) {\n const metaTable = uncompressTable(data, metaTableEntry);\n font.tables.meta = meta.parse(metaTable.data, metaTable.offset);\n font.metas = font.tables.meta;\n }\n\n return font;\n}\n\n/**\n * Asynchronously load the font from a URL or a filesystem. When done, call the callback\n * with two arguments `(err, font)`. The `err` will be null on success,\n * the `font` is a Font object.\n * We use the node.js callback convention so that\n * opentype.js can integrate with frameworks like async.js.\n * @alias opentype.load\n * @param {string} url - The URL of the font to load.\n * @param {Function} callback - The callback.\n */\nfunction load(url, callback, opt) {\n opt = (opt === undefined || opt === null) ? {} : opt;\n const isNode = typeof window === 'undefined';\n const loadFn = isNode && !opt.isUrl ? loadFromFile : loadFromUrl;\n\n return new Promise((resolve, reject) => {\n loadFn(url, function(err, arrayBuffer) {\n if (err) {\n if (callback) {\n return callback(err);\n } else {\n reject(err);\n }\n }\n let font;\n try {\n font = parseBuffer(arrayBuffer, opt);\n } catch (e) {\n if (callback) {\n return callback(e, null);\n } else {\n reject(e);\n }\n }\n if (callback) {\n return callback(null, font);\n } else {\n resolve(font);\n }\n });\n });\n}\n\n/**\n * Synchronously load the font from a URL or file.\n * When done, returns the font object or throws an error.\n * @alias opentype.loadSync\n * @param {string} url - The URL of the font to load.\n * @param {Object} opt - opt.lowMemory\n * @return {opentype.Font}\n */\nfunction loadSync(url, opt) {\n const fs = require('fs');\n const buffer = fs.readFileSync(url);\n return parseBuffer(nodeBufferToArrayBuffer(buffer), opt);\n}\n\nexport {\n Font,\n Glyph,\n Path,\n BoundingBox,\n parse as _parse,\n parseBuffer as parse,\n load,\n loadSync\n};\n","import {DxfFetcher} from \"./DxfFetcher.js\"\nimport {DxfScene} from \"./DxfScene.js\"\nimport opentype from \"opentype.js\"\n\nconst MSG_SIGNATURE = \"DxfWorkerMsg\"\n\n/** Wraps web-worker instance and provides unified interface to its services, including the when\n * web-worker is not used and all heavy operations are performed in main thread.\n */\nexport class DxfWorker {\n /** @param worker Web worker instance with DxfViewer.SetupWorker() function called. Can be null\n * for synchronous operations.\n * @param isWorker True for worker-side wrapper.\n */\n constructor(worker, isWorker = false) {\n this.worker = worker\n if (isWorker) {\n worker.onmessage = this._ProcessRequest.bind(this)\n } else if (worker) {\n worker.addEventListener(\"message\", this._ProcessResponse.bind(this), false)\n worker.addEventListener(\"error\", this._OnError.bind(this), false)\n this.reqSeq = 1\n /* Indexed by sequence. */\n this.requests = new Map()\n this.progressCbk = null\n }\n }\n\n /**\n * @param url DXF file URL.\n * @param {?string[]} fonts Fonts URLs.\n * @param options Viewer options. See DxfViewer.DefaultOptions.\n * @param {?Function} progressCbk (phase, processedSize, totalSize)\n */\n async Load(url, fonts, options, progressCbk) {\n if (this.worker) {\n return this._SendRequest(DxfWorker.WorkerMsg.LOAD,\n { url, fonts, options: this._CloneOptions(options) },\n progressCbk)\n } else {\n return this._Load(url, fonts, options, progressCbk)\n }\n }\n\n async Destroy(noWait = false) {\n if (this.worker) {\n if (!noWait) {\n await this._SendRequest(DxfWorker.WorkerMsg.DESTROY)\n }\n /* close() in the worker is not enough, instance is still visible in dev tools. */\n this.worker.terminate()\n }\n }\n\n async _ProcessRequest(event) {\n const msg = event.data\n if (msg.signature !== MSG_SIGNATURE) {\n console.log(\"Message with bad signature\", msg)\n return\n }\n const resp = {seq: msg.seq, type: msg.type, signature: MSG_SIGNATURE}\n const transfers = []\n try {\n resp.data = await this._ProcessRequestMessage(msg.type, msg.data, transfers, msg.seq)\n } catch (error) {\n console.error(error)\n resp.error = String(error)\n }\n this.worker.postMessage(resp, transfers)\n if (msg.type === DxfWorker.WorkerMsg.DESTROY) {\n this.worker.onmessage = null\n this.worker.close()\n this.worker = null\n }\n }\n\n async _ProcessRequestMessage(type, data, transfers, seq) {\n switch (type) {\n case DxfWorker.WorkerMsg.LOAD: {\n const {scene, dxf} = await this._Load(\n data.url,\n data.fonts,\n data.options,\n (phase, size, totalSize) => this._SendProgress(seq, phase, size, totalSize))\n transfers.push(scene.vertices)\n transfers.push(scene.indices)\n transfers.push(scene.transforms)\n return {scene, dxf}\n }\n case DxfWorker.WorkerMsg.DESTROY:\n return null\n default:\n throw \"Unknown message type: \" + type\n }\n }\n\n async _ProcessResponse(event) {\n const msg = event.data\n if (msg.signature !== MSG_SIGNATURE) {\n console.log(\"Message with bad signature\", msg)\n return\n }\n const seq = msg.seq\n const req = this.requests.get(seq)\n if (!req) {\n console.error(\"Unmatched message sequence: \", seq)\n return\n }\n const data = msg.data\n if (msg.type === DxfWorker.WorkerMsg.PROGRESS) {\n if (req.progressCbk) {\n req.progressCbk(data.phase, data.size, data.totalSize)\n }\n return\n }\n this.requests.delete(seq)\n if (msg.hasOwnProperty(\"error\")) {\n req.SetError(msg.error)\n } else {\n req.SetResponse(data)\n }\n }\n\n async _OnError(error) {\n console.error(\"DxfWorker worker error\", error)\n const reqs = Array.from(this.requests.values)\n this.requests.clear()\n reqs.forEach(req => req.SetError(error))\n }\n\n async _SendRequest(type, data = null, progressCbk = null) {\n const seq = this.reqSeq++\n const req = new DxfWorker.Request(seq, progressCbk)\n this.requests.set(seq, req)\n this.worker.postMessage({ seq, type, data, signature: MSG_SIGNATURE})\n return await req.GetResponse()\n }\n\n _SendProgress(seq, phase, size, totalSize) {\n this.worker.postMessage({\n seq,\n type: DxfWorker.WorkerMsg.PROGRESS,\n data: {phase, size, totalSize},\n signature: MSG_SIGNATURE\n })\n }\n\n /** @return {Object} DxfScene serialized scene. */\n async _Load(url, fonts, options, progressCbk) {\n let fontFetchers\n if (fonts) {\n fontFetchers = this._CreateFontFetchers(fonts, progressCbk)\n } else {\n fontFetchers = []\n }\n const dxf = await new DxfFetcher(url, options.fileEncoding).Fetch(progressCbk)\n if (progressCbk) {\n progressCbk(\"prepare\", 0, null)\n }\n const dxfScene = new DxfScene(options)\n await dxfScene.Build(dxf, fontFetchers)\n return {scene: dxfScene.scene, dxf: options.retainParsedDxf === true ? dxf : undefined }\n }\n\n _CreateFontFetchers(urls, progressCbk) {\n\n function CreateFetcher(url) {\n return async function() {\n if (progressCbk) {\n progressCbk(\"font\", 0, null)\n }\n const data = await fetch(url).then(response => response.arrayBuffer())\n if (progressCbk) {\n progressCbk(\"prepare\", 0, null)\n }\n return opentype.parse(data)\n }\n }\n\n const fetchers = []\n for (const url of urls) {\n fetchers.push(CreateFetcher(url))\n }\n return fetchers\n }\n\n _CloneOptions(options) {\n /* Default options values are taken from prototype so need to implement deep clone here. */\n if (Array.isArray(options)) {\n return options.map(o => this._CloneOptions(o))\n } else if (typeof options === \"object\" && options !== null) {\n const result = {}\n for (const propName in options) {\n // noinspection JSUnfilteredForInLoop\n result[propName] = this._CloneOptions(options[propName])\n }\n return result\n } else {\n return options\n }\n }\n}\n\nDxfWorker.WorkerMsg = {\n LOAD: \"LOAD\",\n PROGRESS: \"PROGRESS\",\n DESTROY: \"DESTROY\"\n}\n\nDxfWorker.Request = class {\n constructor(seq, progressCbk) {\n this.seq = seq\n this.progressCbk = progressCbk\n this.promise = new Promise((resolve, reject) => {\n this._Resolve = resolve\n this._Reject = reject\n })\n }\n\n async GetResponse() {\n return await this.promise\n }\n\n SetResponse(response) {\n this._Resolve(response)\n }\n\n SetError(error) {\n this._Reject(error)\n }\n}\n","/** Key for materials. */\nimport {BatchingKey, CompareValues} from \"./BatchingKey.js\";\n\nexport class MaterialKey {\n /**\n * @param instanceType {Number} One of InstanceType values.\n * @param geometryType {?number} One of BatchingKey.GeometryType.\n * @param color {number} Color ARGB value.\n * @param lineType {?number} Line type ID, null for non-lines. Zero is default type (solid\n * line).\n */\n constructor(instanceType, geometryType, color, lineType) {\n this.instanceType = instanceType\n this.geometryType = geometryType ?? null\n this.color = color\n this.lineType = lineType ?? null\n }\n\n /** Comparator function. Fields lexical order corresponds to the constructor arguments order.\n * Null values are always first.\n */\n Compare(other) {\n let c = CompareValues(this.instanceType, other.instanceType)\n if (c !== 0) {\n return c\n }\n c = CompareValues(this.geometryType, other.geometryType)\n if (c !== 0) {\n return c\n }\n c = CompareValues(this.color, other.color)\n if (c !== 0) {\n return c\n }\n return CompareValues(this.lineType, other.lineType)\n }\n}\n","// Forked from three/examples/js/controls/OrbitControls.js to implement additional features (e.g.\n// zooming on cursor).\n\nimport * as THREE from \"three\"\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nexport const OrbitControls = function ( object, domElement ) {\n\n\tif ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter \"domElement\" is now mandatory.' );\n\tif ( domElement === document ) console.error( 'THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.' );\n\n\tthis.object = object;\n\tthis.domElement = domElement;\n\n\t// Set to false to disable this control\n\tthis.enabled = true;\n\n\t// \"target\" sets the location of focus, where the object orbits around\n\tthis.target = new THREE.Vector3();\n\n\t// How far you can dolly in and out ( PerspectiveCamera only )\n\tthis.minDistance = 0;\n\tthis.maxDistance = Infinity;\n\n\t// How far you can zoom in and out ( OrthographicCamera only )\n\tthis.minZoom = 0;\n\tthis.maxZoom = Infinity;\n\n\t// How far you can orbit vertically, upper and lower limits.\n\t// Range is 0 to Math.PI radians.\n\tthis.minPolarAngle = 0; // radians\n\tthis.maxPolarAngle = Math.PI; // radians\n\n\t// How far you can orbit horizontally, upper and lower limits.\n\t// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n\tthis.minAzimuthAngle = - Infinity; // radians\n\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t// Set to true to enable damping (inertia)\n\t// If damping is enabled, you must call controls.update() in your animation loop\n\tthis.enableDamping = false;\n\tthis.dampingFactor = 0.05;\n\n\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t// Set to false to disable zooming\n\tthis.enableZoom = true;\n\tthis.zoomSpeed = 1.0;\n\tthis.mouseZoomSpeedFactor = 1;\n\n\t// Set to false to disable rotating\n\tthis.enableRotate = true;\n\tthis.rotateSpeed = 1.0;\n\n\t// Set to false to disable panning\n\tthis.enablePan = true;\n\tthis.panSpeed = 1.0;\n\tthis.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\n\t// Set to true to automatically rotate around the target\n\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\tthis.autoRotate = false;\n\tthis.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60\n\n\t// The four arrow keys\n\tthis.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };\n\n\t// Mouse buttons\n\tthis.mouseButtons = { LEFT: THREE.MOUSE.ROTATE, MIDDLE: THREE.MOUSE.DOLLY, RIGHT: THREE.MOUSE.PAN };\n\n\t// Touch fingers\n\tthis.touches = { ONE: THREE.TOUCH.ROTATE, TWO: THREE.TOUCH.DOLLY_PAN };\n\n\t// for reset\n\tthis.target0 = this.target.clone();\n\tthis.position0 = this.object.position.clone();\n\tthis.zoom0 = this.object.zoom;\n\n\t// the target DOM element for key events\n\tthis._domElementKeyEvents = null;\n\n\t//\n\t// public methods\n\t//\n\n\tthis.getPolarAngle = function () {\n\n\t\treturn spherical.phi;\n\n\t};\n\n\tthis.getAzimuthalAngle = function () {\n\n\t\treturn spherical.theta;\n\n\t};\n\n\tthis.listenToKeyEvents = function ( domElement ) {\n\n\t\tdomElement.addEventListener( 'keydown', onKeyDown );\n\t\tthis._domElementKeyEvents = domElement;\n\n\t};\n\n\tthis.saveState = function () {\n\n\t\tscope.target0.copy( scope.target );\n\t\tscope.position0.copy( scope.object.position );\n\t\tscope.zoom0 = scope.object.zoom;\n\n\t};\n\n\tthis.reset = function () {\n\n\t\tscope.target.copy( scope.target0 );\n\t\tscope.object.position.copy( scope.position0 );\n\t\tscope.object.zoom = scope.zoom0;\n\n\t\tscope.object.updateProjectionMatrix();\n\t\tscope.dispatchEvent( changeEvent );\n\n\t\tscope.update();\n\n\t\tstate = STATE.NONE;\n\n\t};\n\n\t// this method is exposed, but perhaps it would be better if we can make it private...\n\tthis.update = function () {\n\n\t\tvar offset = new THREE.Vector3();\n\n\t\t// so camera.up is the orbit axis\n\t\tvar quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) );\n\t\tvar quatInverse = quat.clone().invert();\n\n\t\tvar lastPosition = new THREE.Vector3();\n\t\tvar lastQuaternion = new THREE.Quaternion();\n\n\t\tvar twoPI = 2 * Math.PI;\n\n\t\treturn function update() {\n\n\t\t\tvar position = scope.object.position;\n\n\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t// angle from z-axis around y-axis\n\t\t\tspherical.setFromVector3( offset );\n\n\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\trotateLeft( getAutoRotationAngle() );\n\n\t\t\t}\n\n\t\t\tif ( scope.enableDamping ) {\n\n\t\t\t\tspherical.theta += sphericalDelta.theta * scope.dampingFactor;\n\t\t\t\tspherical.phi += sphericalDelta.phi * scope.dampingFactor;\n\n\t\t\t} else {\n\n\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t}\n\n\t\t\t// restrict theta to be between desired limits\n\n\t\t\tvar min = scope.minAzimuthAngle;\n\t\t\tvar max = scope.maxAzimuthAngle;\n\n\t\t\tif ( isFinite( min ) && isFinite( max ) ) {\n\n\t\t\t\tif ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;\n\n\t\t\t\tif ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;\n\n\t\t\t\tif ( min <= max ) {\n\n\t\t\t\t\tspherical.theta = Math.max( min, Math.min( max, spherical.theta ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.theta = ( spherical.theta > ( min + max ) / 2 ) ?\n\t\t\t\t\t\tMath.max( min, spherical.theta ) :\n\t\t\t\t\t\tMath.min( max, spherical.theta );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// restrict phi to be between desired limits\n\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\tspherical.makeSafe();\n\n\n\t\t\tspherical.radius *= scale;\n\n\t\t\t// restrict radius to be between desired limits\n\t\t\tspherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );\n\n\t\t\t// move target to panned location\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tscope.target.addScaledVector( panOffset, scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t}\n\n\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\tpanOffset.multiplyScalar( 1 - scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t}\n\n\t\t\tscale = 1;\n\n\t\t\t// update condition is:\n\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\tif ( zoomChanged ||\n\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {\n\n\t\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\tzoomChanged = false;\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t};\n\n\t}();\n\n\tthis.dispose = function () {\n\n\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu );\n\n\t\tscope.domElement.removeEventListener( 'pointerdown', onPointerDown );\n\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel );\n\n\t\tscope.domElement.removeEventListener( 'touchstart', onTouchStart );\n\t\tscope.domElement.removeEventListener( 'touchend', onTouchEnd );\n\t\tscope.domElement.removeEventListener( 'touchmove', onTouchMove );\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp );\n\n\n\t\tif ( scope._domElementKeyEvents !== null ) {\n\n\t\t\tscope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );\n\n\t\t}\n\n\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t};\n\n\t//\n\t// internals\n\t//\n\n\tvar scope = this;\n\n\tvar changeEvent = { type: 'change' };\n\tvar startEvent = { type: 'start' };\n\tvar endEvent = { type: 'end' };\n\n\tvar STATE = {\n\t\tNONE: - 1,\n\t\tROTATE: 0,\n\t\tDOLLY: 1,\n\t\tPAN: 2,\n\t\tTOUCH_ROTATE: 3,\n\t\tTOUCH_PAN: 4,\n\t\tTOUCH_DOLLY_PAN: 5,\n\t\tTOUCH_DOLLY_ROTATE: 6\n\t};\n\n\tvar state = STATE.NONE;\n\n\tvar EPS = 0.000001;\n\n\t// current position in spherical coordinates\n\tvar spherical = new THREE.Spherical();\n\tvar sphericalDelta = new THREE.Spherical();\n\n\tvar scale = 1;\n\tvar panOffset = new THREE.Vector3();\n\tvar zoomChanged = false;\n\n\tvar rotateStart = new THREE.Vector2();\n\tvar rotateEnd = new THREE.Vector2();\n\tvar rotateDelta = new THREE.Vector2();\n\n\tvar panStart = new THREE.Vector2();\n\tvar panEnd = new THREE.Vector2();\n\tvar panDelta = new THREE.Vector2();\n\n\tvar dollyCenter = new THREE.Vector2();\n\tvar dollyStart = new THREE.Vector2();\n\tvar dollyEnd = new THREE.Vector2();\n\tvar dollyDelta = new THREE.Vector2();\n\n\tfunction getAutoRotationAngle() {\n\n\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t}\n\n\tfunction getZoomScale( isMouseMovement ) {\n\n\t\treturn Math.pow( 0.95, scope.zoomSpeed * ( isMouseMovement ? scope.mouseZoomSpeedFactor : 1 ));\n\n\t}\n\n\tfunction rotateLeft( angle ) {\n\n\t\tsphericalDelta.theta -= angle;\n\n\t}\n\n\tfunction rotateUp( angle ) {\n\n\t\tsphericalDelta.phi -= angle;\n\n\t}\n\n\tvar panLeft = function () {\n\n\t\tvar v = new THREE.Vector3();\n\n\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\tv.multiplyScalar( - distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\tvar panUp = function () {\n\n\t\tvar v = new THREE.Vector3();\n\n\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\tif ( scope.screenSpacePanning === true ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t\t} else {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t\tv.crossVectors( scope.object.up, v );\n\n\t\t\t}\n\n\t\t\tv.multiplyScalar( distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\t// deltaX and deltaY are in pixels; right and down are positive\n\tvar pan = function () {\n\n\t\tvar offset = new THREE.Vector3();\n\n\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\tvar element = scope.domElement;\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t// perspective\n\t\t\t\tvar position = scope.object.position;\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\tvar targetDistance = offset.length();\n\n\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t// orthographic\n\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom /\n\t\t\t\t\telement.clientWidth / window.devicePixelRatio, scope.object.matrix );\n\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom /\n\t\t\t\t\telement.clientHeight / window.devicePixelRatio, scope.object.matrix );\n\n\t\t\t} else {\n\n\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\tscope.enablePan = false;\n\n\t\t\t}\n\n\t\t};\n\n\t}();\n\n\tfunction zoomPan( zoomRatio, zoomCenter) {\n\t\tconst panX = (zoomCenter.x - scope.domElement.width / 2) * (zoomRatio - 1) / zoomRatio\n\t\tconst panY = (zoomCenter.y - scope.domElement.height / 2) * (zoomRatio - 1) / zoomRatio\n\t\tpan(-panX, -panY)\n\t}\n\n\tfunction dollyOut( dollyScale, zoomCenter ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale /= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tconst newZoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) );\n\t\t\tzoomPan(newZoom / scope.object.zoom, zoomCenter)\n\t\t\tscope.object.zoom = newZoom\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\tfunction dollyIn( dollyScale, zoomCenter ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale *= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tconst newZoom =\n\t\t\t\tMath.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) );\n\t\t\tzoomPan(newZoom / scope.object.zoom, zoomCenter)\n\t\t\tscope.object.zoom = newZoom;\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\t//\n\t// event callbacks - update the object state\n\t//\n\n\tfunction handleMouseDownRotate( event ) {\n\n\t\trotateStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownDolly( event ) {\n\n\t\tconst canvasRect = scope.domElement.getBoundingClientRect();\n\t\tdollyCenter.set( event.clientX - canvasRect.left, event.clientY - canvasRect.top );\n\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownPan( event ) {\n\n\t\tpanStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseMoveRotate( event ) {\n\n\t\trotateEnd.set( event.clientX, event.clientY );\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMoveDolly( event ) {\n\n\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\tdollyOut( getZoomScale(true), dollyCenter );\n\n\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\tdollyIn( getZoomScale(true), dollyCenter );\n\n\t\t}\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMovePan( event ) {\n\n\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\tpanDelta.subVectors( panEnd, panStart )\n\t\t\t.multiplyScalar( scope.panSpeed * window.devicePixelRatio );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseUp( /*event*/ ) {\n\n\t\t// no-op\n\n\t}\n\n\tfunction handleMouseWheel( event ) {\n\n\t\tconst canvasRect = scope.domElement.getBoundingClientRect()\n\t\tconst zoomCenter = new THREE.Vector2(\n\t\t\t(event.clientX - canvasRect.left) * window.devicePixelRatio,\n\t\t\t(event.clientY - canvasRect.top) * window.devicePixelRatio)\n\n\t\tif ( event.deltaY < 0 ) {\n\n\t\t\tdollyIn( getZoomScale(), zoomCenter );\n\n\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\tdollyOut( getZoomScale(), zoomCenter );\n\n\t\t}\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleKeyDown( event ) {\n\n\t\tvar needsUpdate = false;\n\n\t\tswitch ( event.keyCode ) {\n\n\t\t\tcase scope.keys.UP:\n\t\t\t\tpan( 0, scope.keyPanSpeed );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.BOTTOM:\n\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.LEFT:\n\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.RIGHT:\n\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\t// prevent the browser from scrolling on cursor keys\n\t\t\tevent.preventDefault();\n\n\t\t\tscope.update();\n\n\t\t}\n\n\n\t}\n\n\tfunction handleTouchStartRotate( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\trotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\trotateStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartPan( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\tpanStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartDolly( event ) {\n\t\tconst canvasRect = scope.domElement.getBoundingClientRect();\n\t\tdollyCenter.set(\n\t\t\t(event.touches[0].clientX + event.touches[1].clientX) / 2 - canvasRect.left,\n\t\t\t(event.touches[0].clientY + event.touches[1].clientY) / 2 - canvasRect.top )\n\t\t\t.multiplyScalar(window.devicePixelRatio);\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyStart.set( 0, distance );\n\n\t}\n\n\tfunction handleTouchStartDollyPan( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\tif ( scope.enablePan ) handleTouchStartPan( event );\n\n\t}\n\n\tfunction handleTouchStartDollyRotate( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\tif ( scope.enableRotate ) handleTouchStartRotate( event );\n\n\t}\n\n\tfunction handleTouchMoveRotate( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\trotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\trotateEnd.set( x, y );\n\n\t\t}\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t}\n\n\tfunction handleTouchMovePan( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\tpanEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanEnd.set( x, y );\n\n\t\t}\n\n\t\tpanDelta.subVectors( panEnd, panStart )\n\t\t\t.multiplyScalar( scope.panSpeed * window.devicePixelRatio );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t}\n\n\tfunction handleTouchMoveDolly( event ) {\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyEnd.set( 0, distance );\n\n\t\tdollyDelta.set( 0, dollyEnd.y / dollyStart.y );\n\n\t\tdollyOut( dollyDelta.y, dollyCenter );\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t}\n\n\tfunction handleTouchMoveDollyPan( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\tif ( scope.enablePan ) handleTouchMovePan( event );\n\n\t}\n\n\tfunction handleTouchMoveDollyRotate( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\tif ( scope.enableRotate ) handleTouchMoveRotate( event );\n\n\t}\n\n\tfunction handleTouchEnd( /*event*/ ) {\n\n\t\t// no-op\n\n\t}\n\n\t//\n\t// event handlers - FSM: listen for events and reset state\n\t//\n\n\tfunction onPointerDown( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tswitch ( event.pointerType ) {\n\n\t\t\tcase 'mouse':\n\t\t\tcase 'pen':\n\t\t\t\tonMouseDown( event );\n\t\t\t\tbreak;\n\n\t\t\t// TODO touch\n\n\t\t}\n\n\t}\n\n\tfunction onPointerMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tswitch ( event.pointerType ) {\n\n\t\t\tcase 'mouse':\n\t\t\tcase 'pen':\n\t\t\t\tonMouseMove( event );\n\t\t\t\tbreak;\n\n\t\t\t// TODO touch\n\n\t\t}\n\n\t}\n\n\tfunction onPointerUp( event ) {\n\n\t\tswitch ( event.pointerType ) {\n\n\t\t\tcase 'mouse':\n\t\t\tcase 'pen':\n\t\t\t\tonMouseUp( event );\n\t\t\t\tbreak;\n\n\t\t\t// TODO touch\n\n\t\t}\n\n\t}\n\n\tfunction onMouseDown( event ) {\n\n\t\t// Prevent the browser from scrolling.\n\t\tevent.preventDefault();\n\n\t\t// Manually set the focus since calling preventDefault above\n\t\t// prevents the browser from setting it automatically.\n\n\t\tscope.domElement.focus ? scope.domElement.focus() : window.focus();\n\n\t\tvar mouseAction;\n\n\t\tswitch ( event.button ) {\n\n\t\t\tcase 0:\n\n\t\t\t\tmouseAction = scope.mouseButtons.LEFT;\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\n\t\t\t\tmouseAction = scope.mouseButtons.MIDDLE;\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\n\t\t\t\tmouseAction = scope.mouseButtons.RIGHT;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tmouseAction = - 1;\n\n\t\t}\n\n\t\tswitch ( mouseAction ) {\n\n\t\t\tcase THREE.MOUSE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\tbreak;\n\n\t\t\tcase THREE.MOUSE.ROTATE:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase THREE.MOUSE.PAN:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.domElement.ownerDocument.addEventListener( 'pointermove', onPointerMove );\n\t\t\tscope.domElement.ownerDocument.addEventListener( 'pointerup', onPointerUp );\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onMouseMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction onMouseUp( event ) {\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp );\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleMouseUp( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onMouseWheel( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tscope.dispatchEvent( startEvent );\n\n\t\thandleMouseWheel( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t}\n\n\tfunction onKeyDown( event ) {\n\n\t\tif ( scope.enabled === false || scope.enablePan === false ) return;\n\n\t\thandleKeyDown( event );\n\n\t}\n\n\tfunction onTouchStart( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault(); // prevent scrolling\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 1:\n\n\t\t\t\tswitch ( scope.touches.ONE ) {\n\n\t\t\t\t\tcase THREE.TOUCH.ROTATE:\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleTouchStartRotate( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase THREE.TOUCH.PAN:\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleTouchStartPan( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\n\t\t\t\tswitch ( scope.touches.TWO ) {\n\n\t\t\t\t\tcase THREE.TOUCH.DOLLY_PAN:\n\n\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleTouchStartDollyPan( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase THREE.TOUCH.DOLLY_ROTATE:\n\n\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleTouchStartDollyRotate( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_ROTATE;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onTouchMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault(); // prevent scrolling\n\t\tevent.stopPropagation();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.TOUCH_ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_DOLLY_PAN:\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchMoveDollyPan( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_DOLLY_ROTATE:\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchMoveDollyRotate( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t}\n\n\tfunction onTouchEnd( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleTouchEnd( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onContextMenu( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t}\n\n\t//\n\n\tscope.domElement.addEventListener( 'contextmenu', onContextMenu );\n\n\tscope.domElement.addEventListener( 'pointerdown', onPointerDown );\n\tscope.domElement.addEventListener( 'wheel', onMouseWheel );\n\n\tscope.domElement.addEventListener( 'touchstart', onTouchStart );\n\tscope.domElement.addEventListener( 'touchend', onTouchEnd );\n\tscope.domElement.addEventListener( 'touchmove', onTouchMove );\n\n\t// force an update at start\n\n\tthis.update();\n\n};\n\nOrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype );\nOrbitControls.prototype.constructor = OrbitControls;\n\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n// This is very similar to OrbitControls, another set of touch behavior\n//\n// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - left mouse, or arrow keys / touch: one-finger move\n\nexport const MapControls = function ( object, domElement ) {\n\n\tOrbitControls.call( this, object, domElement );\n\n\tthis.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up\n\n\tthis.mouseButtons.LEFT = THREE.MOUSE.PAN;\n\tthis.mouseButtons.RIGHT = THREE.MOUSE.ROTATE;\n\n\tthis.touches.ONE = THREE.TOUCH.PAN;\n\tthis.touches.TWO = THREE.TOUCH.DOLLY_ROTATE;\n\n};\n\nMapControls.prototype = Object.create( THREE.EventDispatcher.prototype );\nMapControls.prototype.constructor = MapControls;\n","import * as three from \"three\"\nimport {BatchingKey} from \"./BatchingKey.js\"\nimport {DxfWorker} from \"./DxfWorker.js\"\nimport {MaterialKey} from \"./MaterialKey.js\"\nimport {ColorCode, DxfScene} from \"./DxfScene.js\"\nimport {OrbitControls} from \"./OrbitControls.js\"\nimport {RBTree} from \"./RBTree.js\"\n\n\n/** Level in \"message\" events. */\nconst MessageLevel = Object.freeze({\n INFO: \"info\",\n WARN: \"warn\",\n ERROR: \"error\"\n})\n\n\n/** The representation class for the viewer, based on Three.js WebGL renderer. */\nexport class DxfViewer {\n\n /**\n * @param domContainer Container element to create the canvas in. Usually empty div. Should not\n * have padding if auto-resize feature is used.\n * @param options Some options can be overridden if specified. See DxfViewer.DefaultOptions.\n */\n constructor(domContainer, options = null) {\n this.domContainer = domContainer\n this.options = Object.create(DxfViewer.DefaultOptions)\n if (options) {\n Object.assign(this.options, options)\n }\n options = this.options\n\n this.clearColor = this.options.clearColor.getHex()\n\n this.scene = new three.Scene()\n\n try {\n this.renderer = new three.WebGLRenderer({\n alpha: options.canvasAlpha,\n premultipliedAlpha: options.canvasPremultipliedAlpha,\n antialias: options.antialias,\n depth: false,\n preserveDrawingBuffer: options.preserveDrawingBuffer\n })\n } catch (e) {\n console.log(\"Failed to create renderer: \" + e)\n this.renderer = null\n return\n }\n const renderer = this.renderer\n /* Prevent bounding spheres calculations which fails due to non-conventional geometry\n * buffers layout. Also do not waste CPU on sorting which we do not need anyway.\n */\n renderer.sortObjects = false\n renderer.setPixelRatio(window.devicePixelRatio)\n\n const camera = this.camera = new three.OrthographicCamera(-1, 1, 1, -1, 0.1, 2);\n camera.position.z = 1\n camera.position.x = 0\n camera.position.y = 0\n\n this.simpleColorMaterial = []\n this.simplePointMaterial = []\n for (let i = 0; i < InstanceType.MAX; i++) {\n this.simpleColorMaterial[i] = this._CreateSimpleColorMaterial(i)\n this.simplePointMaterial[i] = this._CreateSimplePointMaterial(i)\n }\n\n renderer.setClearColor(options.clearColor, options.clearAlpha)\n\n if (options.autoResize) {\n this.canvasWidth = domContainer.clientWidth\n this.canvasHeight = domContainer.clientHeight\n domContainer.style.position = \"relative\"\n } else {\n this.canvasWidth = options.canvasWidth\n this.canvasHeight = options.canvasHeight\n this.resizeObserver = null\n }\n renderer.setSize(this.canvasWidth, this.canvasHeight)\n\n this.canvas = renderer.domElement\n domContainer.style.display = \"block\"\n if (options.autoResize) {\n this.canvas.style.position = \"absolute\"\n this.resizeObserver = new ResizeObserver(entries => this._OnResize(entries[0]))\n this.resizeObserver.observe(domContainer)\n }\n domContainer.appendChild(this.canvas)\n\n this.canvas.addEventListener(\"pointerdown\", this._OnPointerEvent.bind(this))\n this.canvas.addEventListener(\"pointerup\", this._OnPointerEvent.bind(this))\n\n this.Render()\n\n /* Indexed by MaterialKey, value is {key, material}. */\n this.materials = new RBTree((m1, m2) => m1.key.Compare(m2.key))\n /* Indexed by layer name, value is Layer instance. */\n this.layers = new Map()\n /* Default layer used when no layer specified. */\n this.defaultLayer = null\n /* Indexed by block name, value is Block instance. */\n this.blocks = new Map()\n\n /** Set during data loading. */\n this.worker = null\n }\n\n /**\n * @returns {boolean} True if renderer exists. May be false in case when WebGL context is lost\n * (e.g. after wake up from sleep). In such case page should be reloaded.\n */\n HasRenderer() {\n return Boolean(this.renderer)\n }\n\n /**\n * @returns {three.WebGLRenderer | null} Returns the created Three.js renderer.\n */\n GetRenderer(){\n return this.renderer;\n }\n\n GetCanvas() {\n return this.canvas\n }\n\n GetDxf() {\n return this.parsedDxf\n }\n\n SetSize(width, height) {\n this._EnsureRenderer()\n\n const hScale = width / this.canvasWidth\n const vScale = height / this.canvasHeight\n\n const cam = this.camera\n const centerX = (cam.left + cam.right) / 2\n const centerY = (cam.bottom + cam.top) / 2\n const camWidth = cam.right - cam.left\n const camHeight = cam.top - cam.bottom\n cam.left = centerX - hScale * camWidth / 2\n cam.right = centerX + hScale * camWidth / 2\n cam.bottom = centerY - vScale * camHeight / 2\n cam.top = centerY + vScale * camHeight / 2\n cam.updateProjectionMatrix()\n\n this.canvasWidth = width\n this.canvasHeight = height\n this.renderer.setSize(width, height)\n if (this.controls) {\n this.controls.update()\n }\n this._Emit(\"resized\", {width, height})\n this._Emit(\"viewChanged\")\n this.Render()\n }\n\n /** Load DXF into the viewer. Old content is discarded, state is reset.\n * @param {string} url DXF file URL.\n * @param {?string[]} fonts List of font URLs. Files should have typeface.js format. Fonts are\n * used in the specified order, each one is checked until necessary glyph is found. Text is not\n * rendered if fonts are not specified.\n * @param {?Function} progressCbk (phase, processedSize, totalSize)\n * Possible phase values:\n * * \"font\"\n * * \"fetch\"\n * * \"parse\"\n * * \"prepare\"\n * @param {?Function} workerFactory Factory for worker creation. The worker script should\n * invoke DxfViewer.SetupWorker() function.\n */\n async Load({url, fonts = null, progressCbk = null, workerFactory = null}) {\n if (url === null || url === undefined) {\n throw new Error(\"`url` parameter is not specified\")\n }\n\n this._EnsureRenderer()\n\n this.Clear()\n\n this.worker = new DxfWorker(workerFactory ? workerFactory() : null)\n const {scene, dxf} = await this.worker.Load(url, fonts, this.options, progressCbk)\n await this.worker.Destroy()\n this.worker = null\n this.parsedDxf = dxf\n\n this.origin = scene.origin\n this.bounds = scene.bounds\n this.hasMissingChars = scene.hasMissingChars\n\n for (const layer of scene.layers) {\n this.layers.set(layer.name, new Layer(layer.name, layer.displayName, layer.color))\n }\n this.defaultLayer = this.layers.get(\"0\") ?? new Layer(\"0\", \"0\", 0)\n\n /* Load all blocks on the first pass. */\n for (const batch of scene.batches) {\n if (batch.key.blockName !== null &&\n batch.key.geometryType !== BatchingKey.GeometryType.BLOCK_INSTANCE &&\n batch.key.geometryType !== BatchingKey.GeometryType.POINT_INSTANCE) {\n\n let block = this.blocks.get(batch.key.blockName)\n if (!block) {\n block = new Block()\n this.blocks.set(batch.key.blockName, block)\n }\n block.PushBatch(new Batch(this, scene, batch))\n }\n }\n\n console.log(`DXF scene:\n ${scene.batches.length} batches,\n ${this.layers.size} layers,\n ${this.blocks.size} blocks,\n vertices ${scene.vertices.byteLength} B,\n indices ${scene.indices.byteLength} B\n transforms ${scene.transforms.byteLength} B`)\n\n /* Instantiate all entities. */\n for (const batch of scene.batches) {\n this._LoadBatch(scene, batch)\n }\n\n this._Emit(\"loaded\")\n\n if (scene.bounds) {\n this.FitView(scene.bounds.minX - scene.origin.x, scene.bounds.maxX - scene.origin.x,\n scene.bounds.minY - scene.origin.y, scene.bounds.maxY - scene.origin.y)\n } else {\n this._Message(\"Empty document\", MessageLevel.WARN)\n }\n\n if (this.hasMissingChars) {\n this._Message(\"Some characters cannot be properly displayed due to missing fonts\",\n MessageLevel.WARN)\n }\n\n this._CreateControls()\n this.Render()\n }\n\n Render() {\n this._EnsureRenderer()\n this.renderer.render(this.scene, this.camera)\n }\n\n /** @return {Iterable<{name:String, color:number}>} List of layer names. */\n GetLayers(nonEmptyOnly = false) {\n const result = []\n for (const lyr of this.layers.values()) {\n if (nonEmptyOnly && lyr.objects.length == 0) {\n continue\n }\n result.push({\n name: lyr.name,\n displayName: lyr.displayName,\n color: this._TransformColor(lyr.color)\n })\n }\n return result\n }\n\n ShowLayer(name, show) {\n this._EnsureRenderer()\n const layer = this.layers.get(name)\n if (!layer) {\n return\n }\n for (const obj of layer.objects) {\n obj.visible = show\n }\n this.Render()\n }\n\n /** Reset the viewer state. */\n Clear() {\n this._EnsureRenderer()\n if (this.worker) {\n this.worker.Destroy(true)\n this.worker = null\n }\n if (this.controls) {\n this.controls.dispose()\n this.controls = null\n }\n this.scene.clear()\n for (const layer of this.layers.values()) {\n layer.Dispose()\n }\n this.layers.clear()\n this.blocks.clear()\n this.materials.each(e => e.material.dispose())\n this.materials.clear()\n this.SetView({x: 0, y: 0}, 2)\n this._Emit(\"cleared\")\n this.Render()\n }\n\n /** Free all resources. The viewer object should not be used after this method was called. */\n Destroy() {\n if (!this.HasRenderer()) {\n return\n }\n if (this.resizeObserver) {\n this.resizeObserver.disconnect()\n }\n this.Clear()\n this._Emit(\"destroyed\")\n for (const m of this.simplePointMaterial) {\n m.dispose()\n }\n for (const m of this.simpleColorMaterial) {\n m.dispose()\n }\n this.simplePointMaterial = null\n this.simpleColorMaterial = null\n this.renderer.dispose()\n this.renderer = null\n }\n\n SetView(center, width) {\n const aspect = this.canvasWidth / this.canvasHeight\n const height = width / aspect\n const cam = this.camera\n cam.left = -width / 2\n cam.right = width / 2\n cam.top = height / 2\n cam.bottom = -height / 2\n cam.zoom = 1\n cam.position.set(center.x, center.y, 1)\n cam.rotation.set(0, 0, 0)\n cam.updateMatrix()\n cam.updateProjectionMatrix()\n if (this.controls) {\n this.controls.target.set(cam.position.x, cam.position.y, 0)\n this.controls.update()\n }\n this._Emit(\"viewChanged\")\n }\n\n /** Set view to fit the specified bounds. */\n FitView(minX, maxX, minY, maxY, padding = 0.1) {\n const aspect = this.canvasWidth / this.canvasHeight\n let width = maxX - minX\n const height = maxY - minY\n const center = {x: minX + width / 2, y: minY + height / 2}\n if (height * aspect > width) {\n width = height * aspect\n }\n if (width <= Number.MIN_VALUE * 2) {\n width = 1\n }\n this.SetView(center, width * (1 + padding))\n }\n\n /** @return {Scene} three.js scene for the viewer. Can be used to add custom entities on the\n * scene. Remember to apply scene origin available via GetOrigin() method.\n */\n GetScene() {\n return this.scene\n }\n\n /** @return {OrthographicCamera} three.js camera for the viewer. */\n GetCamera() {\n return this.camera\n }\n\n /** @return {Vector2} Scene origin in global drawing coordinates. */\n GetOrigin() {\n return this.origin\n }\n\n /**\n * @return {?{maxX: number, maxY: number, minX: number, minY: number}} Scene bounds in model\n * space coordinates. Null if empty scene.\n */\n GetBounds() {\n return this.bounds\n }\n\n /** Subscribe to the specified event. The following events are defined:\n * * \"loaded\" - new scene loaded.\n * * \"cleared\" - current scene cleared.\n * * \"destroyed\" - viewer instance destroyed.\n * * \"resized\" - viewport size changed. Details: {width, height}\n * * \"pointerdown\" - Details: {domEvent, position:{x,y}}, position is in scene coordinates.\n * * \"pointerup\"\n * * \"viewChanged\"\n * * \"message\" - Some message from the viewer. {message: string, level: string}.\n *\n * @param eventName {string}\n * @param eventHandler {function} Accepts event object.\n */\n Subscribe(eventName, eventHandler) {\n this._EnsureRenderer()\n this.canvas.addEventListener(EVENT_NAME_PREFIX + eventName, eventHandler)\n }\n\n /** Unsubscribe from previously subscribed event. The arguments should match previous\n * Subscribe() call.\n *\n * @param eventName {string}\n * @param eventHandler {function}\n */\n Unsubscribe(eventName, eventHandler) {\n this._EnsureRenderer()\n this.canvas.removeEventListener(EVENT_NAME_PREFIX + eventName, eventHandler)\n }\n\n // /////////////////////////////////////////////////////////////////////////////////////////////\n\n _EnsureRenderer() {\n if (!this.HasRenderer()) {\n throw new Error(\"WebGL renderer not available. \" +\n \"Probable WebGL context loss, try refreshing the page.\")\n }\n }\n\n _CreateControls() {\n if (this.controls) {\n this.controls.dispose()\n }\n const controls = this.controls = new OrbitControls(this.camera, this.canvas)\n controls.enableRotate = false\n controls.mouseButtons = {\n LEFT: three.MOUSE.PAN,\n MIDDLE: three.MOUSE.DOLLY\n }\n controls.touches = {\n ONE: three.TOUCH.PAN,\n TWO: three.TOUCH.DOLLY_PAN\n }\n controls.zoomSpeed = 3\n controls.mouseZoomSpeedFactor = 0.05\n controls.target = new three.Vector3(this.camera.position.x, this.camera.position.y, 0)\n controls.addEventListener(\"change\", () => {\n this.Render()\n this._Emit(\"viewChanged\")\n })\n controls.update()\n }\n\n _Emit(eventName, data = null) {\n this.canvas.dispatchEvent(new CustomEvent(EVENT_NAME_PREFIX + eventName, { detail: data }))\n }\n\n _Message(message, level = MessageLevel.INFO) {\n this._Emit(\"message\", {message, level})\n }\n\n _OnPointerEvent(e) {\n const canvasRect = e.target.getBoundingClientRect()\n const canvasCoord = {x: e.clientX - canvasRect.left, y: e.clientY - canvasRect.top}\n this._Emit(e.type, {\n domEvent: e,\n canvasCoord,\n position: this._CanvasToSceneCoord(canvasCoord.x, canvasCoord.y)\n })\n }\n\n /** @return {{x,y}} Scene coordinate corresponding to the specified canvas pixel coordinates. */\n _CanvasToSceneCoord(x, y) {\n const v = new three.Vector3(x * 2 / this.canvasWidth - 1,\n -y * 2 / this.canvasHeight + 1,\n 1).unproject(this.camera)\n return {x: v.x, y: v.y}\n }\n\n _OnResize(entry) {\n this.SetSize(Math.floor(entry.contentRect.width), Math.floor(entry.contentRect.height))\n }\n\n _LoadBatch(scene, batch) {\n if (batch.key.blockName !== null &&\n batch.key.geometryType !== BatchingKey.GeometryType.BLOCK_INSTANCE &&\n batch.key.geometryType !== BatchingKey.GeometryType.POINT_INSTANCE) {\n /* Block definition. */\n return\n }\n const objects = new Batch(this, scene, batch).CreateObjects()\n\n for (const obj of objects) {\n this.scene.add(obj)\n const layer = obj._dxfViewerLayer ?? this.defaultLayer\n layer.PushObject(obj)\n }\n }\n\n _GetSimpleColorMaterial(color, instanceType = InstanceType.NONE) {\n const key = new MaterialKey(instanceType, null, color, 0)\n let entry = this.materials.find({key})\n if (entry !== null) {\n return entry.material\n }\n entry = {\n key,\n material: this._CreateSimpleColorMaterialInstance(color, instanceType)\n }\n this.materials.insert(entry)\n return entry.material\n }\n\n _CreateSimpleColorMaterial(instanceType = InstanceType.NONE) {\n const shaders = this._GenerateShaders(instanceType, false)\n return new three.RawShaderMaterial({\n uniforms: {\n color: {\n value: new three.Color(0xff00ff)\n }\n },\n vertexShader: shaders.vertex,\n fragmentShader: shaders.fragment,\n depthTest: false,\n depthWrite: false,\n glslVersion: three.GLSL3,\n side: three.DoubleSide\n })\n }\n\n /** @param color {number} Color RGB numeric value.\n * @param instanceType {number}\n */\n _CreateSimpleColorMaterialInstance(color, instanceType = InstanceType.NONE) {\n const src = this.simpleColorMaterial[instanceType]\n /* Should reuse compiled shaders. */\n const m = src.clone()\n m.uniforms.color = { value: new three.Color(color) }\n return m\n }\n\n _GetSimplePointMaterial(color, instanceType = InstanceType.NONE) {\n const key = new MaterialKey(instanceType, BatchingKey.GeometryType.POINTS, color, 0)\n let entry = this.materials.find({key})\n if (entry !== null) {\n return entry.material\n }\n entry = {\n key,\n material: this._CreateSimplePointMaterialInstance(color, this.options.pointSize,\n instanceType)\n }\n this.materials.insert(entry)\n return entry.material\n }\n\n _CreateSimplePointMaterial(instanceType = InstanceType.NONE) {\n const shaders = this._GenerateShaders(instanceType, true)\n return new three.RawShaderMaterial({\n uniforms: {\n color: {\n value: new three.Color(0xff00ff)\n },\n pointSize: {\n value: 2\n }\n },\n vertexShader: shaders.vertex,\n fragmentShader: shaders.fragment,\n depthTest: false,\n depthWrite: false,\n glslVersion: three.GLSL3\n })\n }\n\n /** @param color {number} Color RGB numeric value.\n * @param size {number} Rasterized point size in pixels.\n * @param instanceType {number}\n */\n _CreateSimplePointMaterialInstance(color, size = 2, instanceType = InstanceType.NONE) {\n const src = this.simplePointMaterial[instanceType]\n /* Should reuse compiled shaders. */\n const m = src.clone()\n m.uniforms.color = { value: new three.Color(color) }\n m.uniforms.size = { value: size }\n return m\n }\n\n _GenerateShaders(instanceType, pointSize) {\n const fullInstanceAttr = instanceType === InstanceType.FULL ?\n `\n /* First row. */\n in vec3 instanceTransform0;\n /* Second row. */\n in vec3 instanceTransform1;\n ` : \"\"\n const fullInstanceTransform = instanceType === InstanceType.FULL ?\n `\n pos.xy = mat2(instanceTransform0[0], instanceTransform1[0],\n instanceTransform0[1], instanceTransform1[1]) * pos.xy +\n vec2(instanceTransform0[2], instanceTransform1[2]);\n ` : \"\"\n\n const pointInstanceAttr = instanceType === InstanceType.POINT ?\n `\n in vec2 instanceTransform;\n ` : \"\"\n const pointInstanceTransform = instanceType === InstanceType.POINT ?\n `\n pos.xy += instanceTransform;\n ` : \"\"\n\n const pointSizeUniform = pointSize ? \"uniform float pointSize;\" : \"\"\n const pointSizeAssigment = pointSize ? \"gl_PointSize = pointSize;\" : \"\"\n\n return {\n vertex: `\n\n precision highp float;\n precision highp int;\n in vec2 position;\n ${fullInstanceAttr}\n ${pointInstanceAttr}\n uniform mat4 modelViewMatrix;\n uniform mat4 projectionMatrix;\n ${pointSizeUniform}\n\n void main() {\n vec4 pos = vec4(position, 0.0, 1.0);\n ${fullInstanceTransform}\n ${pointInstanceTransform}\n gl_Position = projectionMatrix * modelViewMatrix * pos;\n ${pointSizeAssigment}\n }\n `,\n fragment: `\n\n precision highp float;\n precision highp int;\n uniform vec3 color;\n out vec4 fragColor;\n\n void main() {\n fragColor = vec4(color, 1.0);\n }\n `\n }\n }\n\n /** Ensure the color is contrast enough with current background color.\n * @param color {number} RGB value.\n * @return {number} RGB value to use for rendering.\n */\n _TransformColor(color) {\n if (!this.options.colorCorrection && !this.options.blackWhiteInversion) {\n return color\n }\n /* Just black and white inversion. */\n const bkgLum = Luminance(this.clearColor)\n if (color === 0xffffff && bkgLum >= 0.8) {\n return 0\n }\n if (color === 0 && bkgLum <= 0.2) {\n return 0xffffff\n }\n if (!this.options.colorCorrection) {\n return color\n }\n const fgLum = Luminance(color)\n const MIN_TARGET_RATIO = 1.5\n const contrast = ContrastRatio(color, this.clearColor)\n const diff = contrast >= 1 ? contrast : 1 / contrast\n if (diff < MIN_TARGET_RATIO) {\n let targetLum\n if (bkgLum > 0.5) {\n targetLum = bkgLum / 2\n } else {\n targetLum = bkgLum * 2\n }\n if (targetLum > fgLum) {\n color = Lighten(color, targetLum / fgLum)\n } else {\n color = Darken(color, fgLum / targetLum)\n }\n }\n return color\n }\n}\n\nDxfViewer.MessageLevel = MessageLevel\n\nDxfViewer.DefaultOptions = {\n canvasWidth: 400,\n canvasHeight: 300,\n /** Automatically resize canvas when the container is resized. This options utilizes\n * ResizeObserver API which is still not fully standardized. The specified canvas size is\n * ignored if the option is enabled.\n */\n autoResize: false,\n /** Frame buffer clear color. */\n clearColor: new three.Color(\"#000\"),\n /** Frame buffer clear color alpha value. */\n clearAlpha: 1.0,\n /** Use alpha channel in a framebuffer. */\n canvasAlpha: false,\n /** Assume premultiplied alpha in a framebuffer. */\n canvasPremultipliedAlpha: true,\n /** Use antialiasing. May degrade performance on poor hardware. */\n antialias: true,\n /** Correct entities colors to ensure that they are always visible with the current background\n * color.\n */\n colorCorrection: false,\n /** Simpler version of colorCorrection - just invert pure white or black entities if they are\n * invisible on current background color.\n */\n blackWhiteInversion: true,\n /** Size in pixels for rasterized points (dot mark). */\n pointSize: 2,\n /** Scene generation options. */\n sceneOptions: DxfScene.DefaultOptions,\n /** Retain the simple object representing the parsed DXF - will consume a lot of additional\n * memory.\n */\n retainParsedDxf: false,\n /** Whether to preserve the buffers until manually cleared or overwritten. */\n preserveDrawingBuffer: false,\n /** Encoding to use for decoding DXF file text content. DXF files newer than DXF R2004 (AC1018)\n * use UTF-8 encoding. Older files use some code page which is specified in $DWGCODEPAGE header\n * variable. Currently parser is implemented in such a way that encoding must be specified\n * before the content is parsed so there is no chance to use this variable dynamically. This may\n * be a subject for future changes. The specified value should be suitable for passing as\n * `TextDecoder` constructor `label` parameter.\n */\n fileEncoding: \"utf-8\"\n}\n\nDxfViewer.SetupWorker = function () {\n new DxfWorker(self, true)\n}\n\nconst InstanceType = Object.freeze({\n /** Not instanced. */\n NONE: 0,\n /** Full affine transform per instance. */\n FULL: 1,\n /** Point instances, 2D-translation vector per instance. */\n POINT: 2,\n\n /** Number of types. */\n MAX: 3\n})\n\nclass Batch {\n /**\n * @param {DxfViewer} viewer\n * @param scene Serialized scene.\n * @param batch Serialized scene batch.\n */\n constructor(viewer, scene, batch) {\n this.viewer = viewer\n this.key = batch.key\n\n if (batch.hasOwnProperty(\"verticesOffset\")) {\n const verticesArray =\n new Float32Array(scene.vertices,\n batch.verticesOffset * Float32Array.BYTES_PER_ELEMENT,\n batch.verticesSize)\n if (this.key.geometryType !== BatchingKey.GeometryType.POINT_INSTANCE ||\n scene.pointShapeHasDot) {\n this.vertices = new three.BufferAttribute(verticesArray, 2)\n }\n if (this.key.geometryType === BatchingKey.GeometryType.POINT_INSTANCE) {\n this.transforms = new three.InstancedBufferAttribute(verticesArray, 2)\n }\n }\n\n if (batch.hasOwnProperty(\"chunks\")) {\n this.chunks = []\n for (const rawChunk of batch.chunks) {\n\n const verticesArray =\n new Float32Array(scene.vertices,\n rawChunk.verticesOffset * Float32Array.BYTES_PER_ELEMENT,\n rawChunk.verticesSize)\n const indicesArray =\n new Uint16Array(scene.indices,\n rawChunk.indicesOffset * Uint16Array.BYTES_PER_ELEMENT,\n rawChunk.indicesSize)\n this.chunks.push({\n vertices: new three.BufferAttribute(verticesArray, 2),\n indices: new three.BufferAttribute(indicesArray, 1)\n })\n }\n }\n\n if (batch.hasOwnProperty(\"transformsOffset\")) {\n const transformsArray =\n new Float32Array(scene.transforms,\n batch.transformsOffset * Float32Array.BYTES_PER_ELEMENT,\n batch.transformsSize)\n /* Each transform is 3x2 matrix which is split into two 3D vectors which will occupy two\n * attribute slots.\n */\n const buf = new three.InstancedInterleavedBuffer(transformsArray, 6)\n this.transforms0 = new three.InterleavedBufferAttribute(buf, 3, 0)\n this.transforms1 = new three.InterleavedBufferAttribute(buf, 3, 3)\n }\n\n this.layer = this.key.layerName !== null ? this.viewer.layers.get(this.key.layerName) : null\n }\n\n GetInstanceType() {\n switch (this.key.geometryType) {\n case BatchingKey.GeometryType.BLOCK_INSTANCE:\n return InstanceType.FULL\n case BatchingKey.GeometryType.POINT_INSTANCE:\n return InstanceType.POINT\n default:\n return InstanceType.NONE\n }\n }\n\n /** Create scene objects corresponding to batch data.\n * @param {?Batch} instanceBatch Batch with instance transform. Null for non-instanced object.\n */\n *CreateObjects(instanceBatch = null) {\n if (this.key.geometryType === BatchingKey.GeometryType.BLOCK_INSTANCE ||\n this.key.geometryType === BatchingKey.GeometryType.POINT_INSTANCE) {\n\n if (instanceBatch !== null) {\n throw new Error(\"Unexpected instance batch specified for instance batch\")\n }\n yield* this._CreateBlockInstanceObjects()\n return\n }\n yield* this._CreateObjects(instanceBatch)\n }\n\n *_CreateObjects(instanceBatch) {\n const color = instanceBatch ?\n instanceBatch._GetInstanceColor(this) : this.key.color\n\n /* INSERT layer (if specified) takes precedence over layer specified in block definition. */\n const layer = instanceBatch?.layer ?? this.layer\n\n //XXX line type\n const materialFactory =\n this.key.geometryType === BatchingKey.GeometryType.POINTS ||\n this.key.geometryType === BatchingKey.GeometryType.POINT_INSTANCE ?\n this.viewer._GetSimplePointMaterial : this.viewer._GetSimpleColorMaterial\n\n const material = materialFactory.call(this.viewer, this.viewer._TransformColor(color),\n instanceBatch?.GetInstanceType() ?? InstanceType.NONE)\n\n let objConstructor\n switch (this.key.geometryType) {\n case BatchingKey.GeometryType.POINTS:\n /* This method also called for creating dots for shaped point instances. */\n case BatchingKey.GeometryType.POINT_INSTANCE:\n objConstructor = three.Points\n break\n case BatchingKey.GeometryType.LINES:\n case BatchingKey.GeometryType.INDEXED_LINES:\n objConstructor = three.LineSegments\n break\n case BatchingKey.GeometryType.TRIANGLES:\n case BatchingKey.GeometryType.INDEXED_TRIANGLES:\n objConstructor = three.Mesh\n break\n default:\n throw new Error(\"Unexpected geometry type:\" + this.key.geometryType)\n }\n\n function CreateObject(vertices, indices) {\n const geometry = instanceBatch ?\n new three.InstancedBufferGeometry() : new three.BufferGeometry()\n geometry.setAttribute(\"position\", vertices)\n instanceBatch?._SetInstanceTransformAttribute(geometry)\n if (indices) {\n geometry.setIndex(indices)\n }\n const obj = new objConstructor(geometry, material)\n obj.frustumCulled = false\n obj.matrixAutoUpdate = false\n obj._dxfViewerLayer = layer\n return obj\n }\n\n if (this.chunks) {\n for (const chunk of this.chunks) {\n yield CreateObject(chunk.vertices, chunk.indices)\n }\n } else {\n yield CreateObject(this.vertices)\n }\n }\n\n /**\n * @param {InstancedBufferGeometry} geometry\n */\n _SetInstanceTransformAttribute(geometry) {\n if (!geometry.isInstancedBufferGeometry) {\n throw new Error(\"InstancedBufferGeometry expected\")\n }\n if (this.key.geometryType === BatchingKey.GeometryType.POINT_INSTANCE) {\n geometry.setAttribute(\"instanceTransform\", this.transforms)\n } else {\n geometry.setAttribute(\"instanceTransform0\", this.transforms0)\n geometry.setAttribute(\"instanceTransform1\", this.transforms1)\n }\n }\n\n *_CreateBlockInstanceObjects() {\n const block = this.viewer.blocks.get(this.key.blockName)\n if (!block) {\n return\n }\n for (const batch of block.batches) {\n yield* batch.CreateObjects(this)\n }\n if (this.vertices) {\n /* Dots for point shapes. */\n yield* this._CreateObjects()\n }\n }\n\n /**\n * @param {Batch} blockBatch Block definition batch.\n * @return {number} RGB color value for a block instance.\n */\n _GetInstanceColor(blockBatch) {\n const defColor = blockBatch.key.color\n if (defColor === ColorCode.BY_BLOCK) {\n return this.key.color\n } else if (defColor === ColorCode.BY_LAYER) {\n if (blockBatch.layer) {\n return blockBatch.layer.color\n }\n return this.layer ? this.layer.color : 0\n }\n return defColor\n }\n}\n\nclass Layer {\n constructor(name, displayName, color) {\n this.name = name\n this.displayName = displayName\n this.color = color\n this.objects = []\n }\n\n PushObject(obj) {\n this.objects.push(obj)\n }\n\n Dispose() {\n for (const obj of this.objects) {\n obj.geometry.dispose()\n }\n this.objects = null\n }\n}\n\nclass Block {\n constructor() {\n this.batches = []\n }\n\n /** @param batch {Batch} */\n PushBatch(batch) {\n this.batches.push(batch)\n }\n}\n\n/** Custom viewer event names are prefixed with this string. */\nconst EVENT_NAME_PREFIX = \"__dxf_\"\n\n/** Transform sRGB color component to linear color space. */\nfunction LinearColor(c) {\n return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4)\n}\n\n/** Transform linear color component to sRGB color space. */\nfunction SRgbColor(c) {\n return c < 0.003 ? c * 12.92 : Math.pow(c, 1 / 2.4) * 1.055 - 0.055\n}\n\n/** Get relative luminance value for a color.\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * @param color {number} RGB color value.\n * @return {number} Luminance value in range [0; 1].\n */\nfunction Luminance(color) {\n const r = LinearColor(((color & 0xff0000) >>> 16) / 255)\n const g = LinearColor(((color & 0xff00) >>> 8) / 255)\n const b = LinearColor((color & 0xff) / 255)\n\n return r * 0.2126 + g * 0.7152 + b * 0.0722\n}\n\n/**\n * Get contrast ratio for a color pair.\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n * @param c1\n * @param c2\n * @return {number} Contrast ratio between the colors. Greater than one if the first color color is\n * brighter than the second one.\n */\nfunction ContrastRatio(c1, c2) {\n return (Luminance(c1) + 0.05) / (Luminance(c2) + 0.05)\n}\n\nfunction HlsToRgb({h, l, s}) {\n let r, g, b\n if (s === 0) {\n /* Achromatic */\n r = g = b = l\n } else {\n function hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1\n }\n if (t > 1) {\n t -= 1\n }\n if (t < 1/6) {\n return p + (q - p) * 6 * t\n }\n if (t < 1/2) {\n return q\n }\n if (t < 2/3) {\n return p + (q - p) * (2/3 - t) * 6\n }\n return p\n }\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s\n const p = 2 * l - q\n r = hue2rgb(p, q, h + 1/3)\n g = hue2rgb(p, q, h)\n b = hue2rgb(p, q, h - 1/3)\n }\n\n return (Math.min(Math.floor(SRgbColor(r) * 256), 255) << 16) |\n (Math.min(Math.floor(SRgbColor(g) * 256), 255) << 8) |\n Math.min(Math.floor(SRgbColor(b) * 256), 255)\n}\n\nfunction RgbToHls(color) {\n const r = LinearColor(((color & 0xff0000) >>> 16) / 255)\n const g = LinearColor(((color & 0xff00) >>> 8) / 255)\n const b = LinearColor((color & 0xff) / 255)\n\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n let h, s\n const l = (max + min) / 2\n\n if (max === min) {\n /* Achromatic */\n h = s = 0\n } else {\n const d = max - min\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0)\n break;\n case g:\n h = (b - r) / d + 2\n break\n case b:\n h = (r - g) / d + 4\n break\n }\n h /= 6\n }\n\n return {h, l, s}\n}\n\nfunction Lighten(color, factor) {\n const hls = RgbToHls(color)\n hls.l *= factor\n if (hls.l > 1) {\n hls.l = 1\n }\n return HlsToRgb(hls)\n}\n\nfunction Darken(color, factor) {\n const hls = RgbToHls(color)\n hls.l /= factor\n return HlsToRgb(hls)\n}\n","import { useEffect, useState, useRef } from 'react'\nimport styled from 'styled-components'\nimport { BsXSquare, BsClipboardData } from 'react-icons/bs'\n\nimport { DxfViewer } from '../../node_modules/dxf-viewer/src/DxfViewer.js' // can't import in the normal way?\nimport { Color } from 'three'\n\nimport { isDT } from './Global'\nimport { colorButton0, colorButton0Text } from './Global'\nimport { paramSpecs, truncateString, price } from './_uiHelpers'\nimport { unabbreviateParams, abbreviateParams, saveUrl, paramsUrl, computeUrl } from './_makeUrls'\nimport { CommonAButton, CommonActionButton } from './_commonComponents'\nimport { calcModel, gltfArea } from './_gltfModel'\nimport { localize } from './_localization'\n\nexport default function PagePersonal() {\n\tconst [productId, setProductId] = useState()\n\tconst [incomingParams, setIncomingParams] = useState()\n\tconst [enquire, setEnquire] = useState()\n\tconst [url, setUrl] = useState()\n\tconst [wordPressUrl, setWordPressUrl] = useState()\n\tconst [fullNames, setFullNames] = useState()\n\tconst [friendlyNames, setFriendlyNames] = useState()\n\tconst [abbrevNames, setAbbrevNames] = useState()\n\tconst [newValues, setNewValues] = useState()\n\tconst [presetValues, setPresetValues] = useState()\n\tconst [differences, setDifferences] = useState()\n\tconst [presetParams, setPresetParams] = useState()\n\tconst [filterDiffs, setFilterDiffs] = useState()\n\tconst [filterOn, setFilterOn] = useState(false)\n\tconst [personalProductCode, setPersonalProductCode] = useState()\n\tconst [customerId, setCustomerId] = useState('.nnnnn_CustomerName')\n\tconst [personalizedId, setPersonalizedId] = useState()\n\tconst [paramsText, setParamsText] = useState()\n\tconst [paramsDownloadLink, setParamsDownloadLink] = useState()\n\tconst [gltfRawText, setGltfRawText] = useState()\n\tconst [gltf, setGltf] = useState()\n\tconst [gltfText, setGltfText] = useState()\n\tconst [gltfDownloadLink, setGltfDownloadLink] = useState()\n\tconst [localTextureFolder, setLocalTextureFolder] = useState()\n\tconst [blueprint, setBlueprint] = useState()\n\tconst [manufactureData, setManufactureData] = useState('')\n\t// const [manufactureStatus, setManufactureStatus] = useState('')\n\tconst [manufactureUrl, setManufactureUrl] = useState(null)\n\tconst [manufactureSheetWidth, setManufactureSheetWidth] = useState(150)\n\tconst [manufactureSheetLength, setManufactureSheetLength] = useState(300)\n\tconst [manufactureGap, setManufactureGap] = useState(1.5)\n\n\tconst dxfContainer = useRef(null);\n\n\tuseEffect(() => {\n\t\tif (!enquire) {\n\t\t\tsetUrl('')\n\t\t\tresetPanels()\n\t\t\treturn\n\t\t}\n\t\t// get all of the raw lines in enquire\n\t\tconst blueprintForm = enquire.replaceAll('\\n', ' ') // convert possible 'Enquire' format to 'blueprint' format\n\t\tconst kvpairs = blueprintForm.split(' ').filter((kvpair) => kvpair.trim() !== '') // omit blank lines\n\t\tconst _productId = kvpairs[0] // this is the only non-kvpair in the bunch\n\t\tlet _incomingParams = {}\n\t\tkvpairs.slice(1).map((line) => (_incomingParams[line.split('=')[0]] = line.split('=')[1]))\n\n\t\tconst decodedParams = unabbreviateParams(_productId, _incomingParams)\n\n\t\t// create the url (fullNames are converted back to abbreviatedNames in the resulting url)\n\t\tconst url = saveUrl(_productId, decodedParams);\n\t\tsetUrl(url)\n\t\tsetWordPressUrl(generateWordPressUrl(url));\n\t}, [enquire])\n\n\tuseEffect(() => {\n\t\tif (!url) return\n\t\tresetPanels()\n\t\t// extract productId and incomingParams from the url\n\t\tlet _url;\n\t\ttry {\n\t\t\t_url = new URL(url)\n\t\t} catch (e) {\n\t\t\talert(\"Not a valid URL\")\n\t\t\treturn\n\t\t}\n\t\tconst _productId = _url.pathname.split('/')[2]\n\t\tsetProductId(_productId)\n\t\tconst _incomingParams = Object.fromEntries(_url.searchParams)\n\t\tsetIncomingParams(_incomingParams)\n\n\t\t// get the preset params for the productId\n\t\tconst pUrl = paramsUrl(_productId)\n\t\tfetch(pUrl)\n\t\t\t.then((response) => response.text())\n\t\t\t.then((params) => setPresetParams(params))\n\t\t\t.catch((e) => window.alert(\"Bad data in 'paste Enquire' or 'or paste Url\"))\n\t}, [url])\n\n\tuseEffect(() => {\n\t\tif (!(productId && incomingParams)) return\n\t\tprocessModelInputs() // fill the columns related to the incoming abbrev names\n\t\tsetPersonalProductCode(productId, incomingParams)\n\n\t\t// get the model in threejs form\n\t\tcalcModel({ productId: productId, currentParams: incomingParamsDecodedFullQuality() }).then((g) => setGltf(g))\n\n\t\t// get the raw text for the gltf\n\t\tconst gltfUrl = computeUrl(productId, incomingParamsDecodedFullQuality())\n\t\tfetch(gltfUrl)\n\t\t\t.then((response) => response.text())\n\t\t\t.then((gltf) => setGltfRawText(gltf))\n\t\t\t.catch((e) => window.alert(\"Bad data in 'paste Enquire' or 'or paste Url\"))\n\t\t// eslint-disable-next-line\n\t}, [productId, incomingParams])\n\n\tuseEffect(() => {\n\t\tif (!(presetParams && newValues && abbrevNames && productId)) return\n\t\tprocessPresets()\n\t\tformatParamsText()\n\t\t// eslint-disable-next-line\n\t}, [presetParams, newValues, abbrevNames, productId])\n\n\tuseEffect(() => {\n\t\tif (!(fullNames && newValues)) return\n\t\tformatParamsText()\n\t\t// eslint-disable-next-line\n\t}, [fullNames, newValues])\n\n\tuseEffect(() => {\n\t\tsetPersonalizedId(personalProductCode + customerId)\n\t}, [personalProductCode, customerId])\n\n\tuseEffect(() => {\n\t\tif (!(gltf && gltfRawText)) return\n\t\tconst materialThickness = 1.8\n\t\tconst density = 7\n\t\tconst area = gltfArea(gltf)\n\t\tconst volume = area * materialThickness\n\t\tconst weight = volume * density\n\t\tconst materialIdExternal = unabbreviateParams(productId, incomingParams).MaterialIdExternal\n\t\tconst _price = price(productId, area, materialIdExternal)\n\n\t\tconst _manufactureData = []\n\t\t_manufactureData.push(`area: ${area.toFixed(2)} m2`)\n\t\t_manufactureData.push(`volume: ${volume.toFixed(1)} m3`)\n\t\t_manufactureData.push(`weight: ${weight.toFixed(1)} kg`)\n\t\t_manufactureData.push(`price: ${_price.toFixed(0)} CHF`)\n\t\t_manufactureData.push(``)\n\t\t_manufactureData.push('Measurements do not account for voids:')\n\t\tsetManufactureData(_manufactureData.join('\\n'))\n\n\t\tconst _gltfText = []\n\t\t_gltfText.push(``)\n\t\t_gltfText.push(`Glft raw text file:`)\n\t\t_gltfText.push(`gltf file size: ${(gltfRawText.length / 1e6).toFixed(1)} MB`)\n\t\t_gltfText.push(`texture files:`)\n\n\t\t// eslint-disable-next-line\n\t\tconst textures = [...gltfRawText.matchAll('.{10}?texture?.*?png')]\n\t\ttextures.map((tex) => _gltfText.push('... ' + tex))\n\n\t\t_gltfText.push(``)\n\t\t_gltfText.push(`blueprint: (use the Copy button below)`)\n\t\t_gltfText.push(blueprint)\n\n\t\tsetGltfText(_gltfText.join('\\n'))\n\t}, [gltf, gltfRawText, blueprint, productId, incomingParams])\n\n\tuseEffect(() => {\n\t\tif (!gltfRawText) return\n\t\t// create the download link\n\t\tconst data = new Blob([gltfRawText], { type: 'application/octet-stream' })\n\t\tconst downloadLink = window.URL.createObjectURL(data)\n\t\tsetGltfDownloadLink(downloadLink)\n\t}, [gltfRawText])\n\n\tuseEffect(() => {\n\t\tif (!(dxfContainer && dxfContainer.current && manufactureUrl)) return\n\n\t\tconst dxfCurrent = dxfContainer.current\n\t\tdxfContainer.current.innerHTML = ''\n\n\t\tconst dxfViewer = new DxfViewer(dxfCurrent, {\n\t\t\tcanvasWidth: dxfCurrent.clientWidth,\n\t\t\tcanvasHeight: dxfCurrent.clientHeight,\n\t\t\tclearColor: new Color('#fff'),\n\t\t\t// retainParsedDxf: true, // no way to get the raw dxf data\n\t\t})\n\n\t\t// Note, DxfViewer omits extended data in the dxf file. If necessary, we could do a\n\t\t// separate fetch of the dxf file and extract it manually (at the time cost of a separate Rhino compute).\n\n\t\tconst loadDxfViewer = async () => {\n\t\t\t// console.log('manufactureUrl', manufactureUrl)\n\t\t\tawait dxfViewer\n\t\t\t\t.Load({\n\t\t\t\t\turl: manufactureUrl,\n\t\t\t\t\t// progressCbk: (phase, processedSize, totalSize) => {\n\t\t\t\t\t// \tconsole.log('phase', phase, 'processedSize', processedSize, 'totalSize', totalSize)\n\t\t\t\t\t// },\n\t\t\t\t})\n\t\t\t// .then(() => console.log('dxfViewer', dxfViewer))\n\t\t}\n\n\t\tloadDxfViewer()\n\t}, [manufactureUrl])\n\n\tconst handleCopy = () => {\n\t\tnavigator.clipboard.writeText(wordPressUrl)\n\t\t\t.then(() => alert(\"Copied to clipboard!\"))\n\t\t\t.catch(err => console.error(\"Failed to copy:\", err));\n\t};\n\n\tconst generateWordPressUrl = (url) => {\n\t\tconst queryParams = new URL(url)?.search;\n\n\t\tif (!queryParams) return;\n\n\t\tconst encodedParams = `?data=${btoa(queryParams.substring(1))}`;\n\t\treturn encodedParams;\n\t}\n\n\tfunction incomingParamsDecodedFullQuality() {\n\t\treturn { ...unabbreviateParams(productId, incomingParams), ...{ ShowWoodgrain: 1, ShowEdges: 1, ShowFullRes: 1 } };\n\t}\n\n\tfunction incomingParamsDecodedForManufacture() {\n\t\treturn { ...unabbreviateParams(productId, incomingParams), ...{ NestSheetWidth: manufactureSheetWidth, NestSheetLength: manufactureSheetLength, NestCutSpacing: manufactureGap } }\n\t}\n\n\tfunction resetPanels(all) {\n\t\tif (all) {\n\t\t\tsetEnquire('')\n\t\t\tsetUrl('')\n\t\t}\n\t\tsetProductId(null)\n\t\tsetIncomingParams(null)\n\t\tsetFullNames(null)\n\t\tsetFriendlyNames(null)\n\t\tsetAbbrevNames(null)\n\t\tsetNewValues(null)\n\t\tsetPresetValues(null)\n\t\tsetDifferences(null)\n\t\tsetPresetParams(null)\n\t\tsetFilterDiffs(null)\n\t\tsetParamsText('')\n\t\tsetParamsDownloadLink(null)\n\t\tsetGltfDownloadLink(null)\n\t\tsetGltfRawText(null)\n\t\tsetGltf(null)\n\t\tsetGltfText('')\n\t\tsetFilterOn(false)\n\t\tsetBlueprint(null)\n\t\tsetManufactureUrl(null)\n\t\tsetManufactureData('')\n\t\tdxfContainer.current.innerHTML = ''\n\t}\n\n\tfunction handleOpenParams(event) {\n\t\tconst file = event.target.files[0]\n\t\tif (!file) {\n\t\t\treturn\n\t\t} // cancelled\n\n\t\tconst filename = file.name.replace('.params', '')\n\t\tif (filename.length !== 9 || filename.split('.').length !== 3) {\n\t\t\talert(\"The filename must be in the format 'seriesID.B01.productId.params'\")\n\t\t\treturn\n\t\t}\n\n\t\tconst reader = new FileReader()\n\t\treader.onload = function(e) {\n\t\t\tconst lines = e.target.result.split('\\n')\n\t\t\tconst params = {}\n\t\t\tlines.map((line) => (params[line.split(':')[2].replace(/\\s/g, '')] = line.split(':')[1].replace(/\\s/g, '')))\n\t\t\tconst encodedParams = abbreviateParams('AW.B01.CT', params)\n\n\t\t\t// Kick off partial processing. Must click \"copy blueprint\" (bottom right) and paste to complete\n\t\t\tsetProductId(filename)\n\t\t\tsetIncomingParams(encodedParams)\n\t\t\talert('Now click \"Copy Blueprint\" at the bottom-right of the scrollable window, and then paste the result')\n\t\t}\n\t\treader.readAsText(file)\n\t}\n\n\tfunction handleManufactureClick() {\n\t\tif (!url) {\n\t\t\talert('Paste a Blueprint or URL first')\n\t\t\treturn\n\t\t}\n\n\t\tconst urlManufacture = computeUrl(productId, incomingParamsDecodedForManufacture())\n\t\turlManufacture.href = urlManufacture.href.replace('computeid', 'manufactureid')\n\t\tsetManufactureUrl(urlManufacture)\n\t}\n\n\tfunction handleFilterClick() {\n\t\tsetFilterOn(!filterOn)\n\t}\n\n\tfunction handleTextureClick() {\n\t\tconst localFolder = localTextureFolder.replaceAll('\\\\', '\\\\\\\\') + '\\\\\\\\'\n\t\tsetGltfRawText(gltfRawText.replaceAll('../texture/', localFolder))\n\t}\n\n\tfunction processModelInputs() {\n\t\tconst decodedParams = unabbreviateParams(productId, incomingParams)\n\n\t\t// get param names (abbreviated, fullRhino, and friendly) and incoming values\n\t\t// keep all in the same order for side-by-side displays\n\n\t\tconst _abbrevs = Object.keys(incomingParams)\n\t\tsetAbbrevNames(_abbrevs)\n\n\t\tconst _values = Object.values(incomingParams)\n\t\tsetNewValues(_values)\n\n\t\t// truncate some of the really long full Rhino names\n\t\tconst _fullNames = Object.keys(decodedParams)\n\t\tsetFullNames(_fullNames)\n\n\t\t// get the friendly names from the full Param spec in _uiHelpers\n\t\tconst specs = paramSpecs(productId)\n\t\tconst mapping = {} // convenient object of a set of object pairs: {rhinoName: abbrev}\n\t\tspecs.forEach((param) => (mapping[param.rhinoName] = param.name))\n\t\tsetFriendlyNames(Object.keys(decodedParams).map((name) => mapping[name]))\n\n\t\tconst blueprintVals = _abbrevs.map((abbrev, index) => abbrev + '=' + _values[index])\n\t\tblueprintVals.splice(0, 0, productId)\n\t\tsetBlueprint(blueprintVals.join(' '))\n\t}\n\n\tfunction processPresets() {\n\t\t// presetParams are full names. Convert to abbreviations for matching to incomingParams/abbrevNames\n\t\tconst presetPairs = presetParams.split('&')\n\t\tlet _presetParams = {}\n\t\tpresetPairs.map((param) => (_presetParams[param.split('=')[0]] = param.split('=')[1]))\n\t\t_presetParams = abbreviateParams(productId, _presetParams)\n\n\t\t// order values to abbrevName order\n\t\tconst _orderedPresetValues = abbrevNames.map((name) => _presetParams[name])\n\t\tsetPresetValues(_orderedPresetValues)\n\n\t\t// calculate newValue differences from preset values\n\t\tlet _differences = []\n\t\tlet _filterDiffs = [] // create an array to filter out 0's; true if the value is non-zero, false o.w.\n\t\tconst specs = paramSpecs(productId)\n\t\tfor (let i = 0; i < newValues.length; i++) {\n\t\t\tconst newval = newValues[i]\n\t\t\tconst preval = _orderedPresetValues[i]\n\t\t\tconst name = abbrevNames[i]\n\t\t\tconst param = specs.find((param) => name === param.abbrev)\n\t\t\tlet chg = 0\n\t\t\tif (param === undefined) {\n\t\t\t\tconsole.log('undefined abbreviation; skipping', name)\n\t\t\t\tchg = 'xxxxx'\n\t\t\t} else {\n\t\t\t\tif (param.keyvaluepairs === '-') {\n\t\t\t\t\tif (param.min !== '-') {\n\t\t\t\t\t\tconst rng = param.max - param.min\n\t\t\t\t\t\tconst diff = newval - preval\n\t\t\t\t\t\tchg = ((diff / rng) * 100).toFixed(1)\n\t\t\t\t\t\tif (chg === '0.0') chg = '0.'\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchg = newval === preval ? '0' : '?'\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tchg = newval === preval ? '0' : '100'\n\t\t\t\t}\n\t\t\t}\n\t\t\t_differences.push(chg)\n\t\t\t_filterDiffs.push(!(chg === '0' || chg === '0.'))\n\t\t}\n\t\tsetDifferences(_differences)\n\t\tsetFilterDiffs(_filterDiffs)\n\t}\n\n\tfunction formatParamsText() {\n\t\tconst paramsLines = []\n\t\tfor (let i = 0; i < newValues.length; i++) {\n\t\t\tparamsLines.push(`set: ${newValues[i].padEnd(6)} : ${fullNames[i]}`)\n\t\t}\n\t\tsetParamsText(paramsLines.join('\\n'))\n\n\t\t// create the download link\n\t\tconst data = new Blob([paramsLines.join('\\n')], { type: 'application/octet-stream' })\n\t\tconst downloadLink = window.URL.createObjectURL(data)\n\t\tsetParamsDownloadLink(downloadLink)\n\t}\n\n\tfunction filterDisp(col) {\n\t\tif (!filterOn) return col\n\t\treturn col.filter((x, index) => filterDiffs[index])\n\t}\n\n\tfunction copyBlueprint() {\n\t\tnavigator.clipboard.writeText(blueprint)\n\t}\n\n\tconst narrow = { width: '70px' }\n\tconst buttonStyles = {\n\t\tbackgroundColor: 'black',\n\t\tcolor: 'white',\n\t\twidth: '180px',\n\t\theight: '30px',\n\t\tmargin: '2px 0 0 0',\n\t\tfontSize: '14px',\n\t}\n\tconst scrollSize = isDT ? { width: '100%', height: '100%' } : { width: window.innerWidth, height: window.innerHeight }\n\tconst outerSize = isDT ? { width: '100%', height: 'auto' } : { width: '900px', height: '500px' }\n\tconst lowerReportHeight = isDT ? { width: '90%', height: '200px' } : { width: '90%', height: '90px' }\n\tconst commentaryFontSize = isDT ? { fontSize: '12px' } : { fontSize: '12px' }\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tblueprint\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t setEnquire(e.target.value)} spellCheck='false' />\n\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\t resetPanels(true)}\n\t\t\t\t\t\t\t\t\ttext={}\n\t\t\t\t\t\t\t\t\tbuttonStyleOverrides={{ right: 0, width: '30px', height: '30px', backgroundColor: 'transparent' }}\n\t\t\t\t\t\t\t\t\tdataTip='Clear Data'\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\t\n\t\t\t\t\t\t\tor paste Url\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t 0}\n\t\t\t\t\t\t\t\t\tspellCheck='false'\n\t\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\t\tsetUrl(e.target.value);\n\t\t\t\t\t\t\t\t\t\tsetWordPressUrl(generateWordPressUrl(e.target.value));\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tstyle={{ padding: 0 }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{true && (\n\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\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\t\t\t\t\t\t\n\t\t\t\t\t\t\tAbbrev\n\t\t\t\t\t\t\t{abbrevNames && }\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tPreset\n\t\t\t\t\t\t\t{presetValues && }\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tValue\n\t\t\t\t\t\t\t{newValues && }\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tChg %\n\t\t\t\t\t\t\t{differences && }\n\t\t\t\t\t\t\t{differences && (\n\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\t\t\t\t\t\t\n\t\t\t\t\t\t\tFull\n\t\t\t\t\t\t\t{fullNames && (\n\t\t\t\t\t\t\t\t truncateString(name, 13))\n\t\t\t\t\t\t\t\t\t\t.join('\\n')}\n\t\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t\t\tspellCheck='false'\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\t\n\t\t\t\t\t\t\tFriendly\n\t\t\t\t\t\t\t{friendlyNames && (\n\t\t\t\t\t\t\t\t localize(name, 'en'))\n\t\t\t\t\t\t\t\t\t\t.join('\\n')}\n\t\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t\t\tspellCheck='false'\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\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\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\t setManufactureSheetWidth(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tstyle={{ ...ManufactureInputStyle }}\n\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\n\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\t setManufactureSheetLength(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tstyle={{ ...ManufactureInputStyle }}\n\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\n\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\t setManufactureGap(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tstyle={{ ...ManufactureInputStyle }}\n\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\t handleManufactureClick()}\n\t\t\t\t\t\t\t\tbuttonStyleOverrides={buttonStyles}\n\t\t\t\t\t\t\t\tdataTip='It takes a few seconds to compute the manufacture details'\n\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\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t setCustomerId(e.target.value)}\n\t\t\t\t\t\t\t\tspellCheck='false'\n\t\t\t\t\t\t\t\tstyle={{ width: '300px', textAlign: 'left' }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\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\t{true && (\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\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t setLocalTextureFolder(e.target.value)}\n\t\t\t\t\t\t\t\t\tstyle={{ ...{ height: '50px' } }}\n\t\t\t\t\t\t\t\t\tspellCheck='false'\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{true && (\n\t\t\t\t\t\t\t\t\t handleTextureClick()}\n\t\t\t\t\t\t\t\t\t\tbuttonStyleOverrides={buttonStyles}\n\t\t\t\t\t\t\t\t\t\tdataTip='after clicking, note the changes in the panel to the right'\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\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\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\t
\n\t\t\t\t\t\t\t\t\t{true && (\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\t copyBlueprint()}\n\t\t\t\t\t\t\t\t\t\ttext={}\n\t\t\t\t\t\t\t\t\t\tbuttonStyleOverrides={{ right: 0, width: '30px', height: '30px', backgroundColor: 'transparent' }}\n\t\t\t\t\t\t\t\t\t\tdataTip='Copy Blueprint to clipboard'\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
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t)\n}\n\nconst ScrollContainer = styled.div`\n\twidth: 100%;\n\theight: 100%;\n\toverflow: auto;\n\tbackground-color: red;\n`\n\nconst OuterContainerDiv = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tbackground-color: #bdb;\n`\n\nconst Section1Div = styled.div`\n overflow: visible;\n height: 600px;\n`;\n\nconst Section2Div = styled.div`\n overflow: auto;\n height: 600px;\n`;\n\nconst Section3Div = styled.div`\n overflow: auto;\n height: 400px;\n`;\n\nconst TopRowTextDiv = styled.div`\n\tdisplay: flex;\n\theight: 90%;\n\tjustify-content: center;\n\tmargin: 0 0 3% 0;\n`\n\nconst BottomRowDiv = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: 45%;\n`\n\nconst TopRowItemDiv = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tmax-width: 20%;\n\tmargin: 0 10px 0 10px;\n`\n\nconst TopRowItemTitle = styled.p`\n\tmargin: 0;\n\ttext-align: center;\n`\n\nconst UrlText = styled.textarea`\n\twidth: 100%;\n\theight: 100%;\n`\n\nconst ReportingText = styled.textarea`\n\theight: 100%;\n\tbackground: transparent;\n\ttext-align: left;\n`\n\nconst LinkButtonDiv = styled.div`\n\tposition: relative;\n\theight: 0;\n\tmargin: 0;\n\ttext-align: center;\n`\n\nconst ProductCodesDiv = styled.div`\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmargin: 0 0 20px 0;\n`\n\nconst IdText = styled.textarea`\n\twidth: 90%;\n\theight: 20px;\n\ttext-align: center;\n\tmargin: 4px 0 0 0;\n`\n\nconst BottomPanelsContainerDiv = styled.div`\n\twidth: 100%;\n\tdisplay: flex;\n\tjustify-content: space-evenly;\n`\n\nconst BottomPanelDiv = styled.div`\n\twidth: 30%;\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: start;\n\talign-items: center;\n`\nconst InputValueColumn = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n margin: 20px;\n background: transparent;\n`\nconst InputValueRow = styled.div`\n display: flex;\n flex-direction: row;\n\tjustify-content: start;\n width: 100%;\n height: 20px%;\n margin: 3px;\n background: transparent;\n`\n\nconst ButtonStyle = {\n\twidth: '255px',\n\theight: '45px',\n\tmargin: 0,\n\tborderWidth: '0',\n\tcolor: `${colorButton0}`,\n\tborderRadius: `4px`,\n\tbackgroundColor: `${colorButton0Text}`,\n\n}\n\nconst ManufactureLabelStyle = {\n\twidth: '100px',\n\tmargin: 0,\n\tborderWidth: '0',\n}\n\nconst ManufactureInputStyle = {\n\twidth: '50px',\n\tmargin: 0,\n\tborderWidth: '0',\n}\n\nconst ManufactureUnitStyle = {\n\tmargin: '0 0 0 5px',\n}\n\n\n","import { useState, createContext, useReducer } from 'react'\nimport { useEffect } from 'react' // keep for debugging log\nimport { matchPath, Route, Routes, useLocation } from 'react-router-dom'\nimport styled, { ThemeProvider } from 'styled-components'\nimport ReactTooltip from 'react-tooltip'\nimport { initializeEnv } from './Components/__urlsSystem'\nimport Global, { themeDesktop, backgroundColor } from './Components/Global'\nimport PageConfigurator from './Components/PageConfigurator'\nimport PageViewer from './Components/PageViewer'\nimport PageArModelViewer from './Components/PageArModelViewer'\nimport ErrorBoundary from './Components/ErrorBoundary'\nimport PageSelectorGallery from './Components/PageSelectorGallery'\nimport PagePersonal from './Components/PagePersonal'\nimport { logInit } from './Components/_logging.js'\n\nlogInit()\ninitializeEnv()\n\nexport const GlobalStateContext = createContext({ value: null, setValue: () => { } })\nexport const ParamContext = createContext({ value: null, setValue: () => { } })\nexport const SpeedParamContext = createContext({ value: null, setValue: () => { } })\n\nexport default function App() {\n\tconst location = useLocation();\n\tconst [currentTheme, setCurrentTheme] = useState(themeDesktop) // start out with themeDesktop until we know differently\n\n\tuseEffect(() => {\n\t\t// Match language from different routes\n\t\tconst langMatch = matchPath(\"/:language?\", location.pathname) ||\n\t\t\tmatchPath(\"/config/:productId/:language?\", location.pathname) ||\n\t\t\tmatchPath(\"/viewer/:productId/:language?\", location.pathname) ||\n\t\t\tmatchPath(\"/viewerframe/:productId/:language?\", location.pathname) ||\n\t\t\tmatchPath(\"/ar/:productId/:language?\", location.pathname) ||\n\t\t\tmatchPath(\"/manufacture2727/:language?\", location.pathname) ||\n\t\t\tmatchPath(\"/test/:language?\", location.pathname);\n\n\t\tsetGlobalStateItem('language', langMatch?.params?.language || localStorage.getItem(\"language\") || \"en\")\n\t}, [location]);\n\n\t// use useReducer to allow for sequential state updates in a single render event\n\tconst [globalState, globalDispatch] = useReducer(reducer, {\n\t\tsetCurrentTheme: setCurrentTheme,\n\t})\n\n\tconst omitBanner = true;\n\n\t// update the global state with a new state item (action.type:action.data is the key:value pair here)\n\tfunction reducer(state, action) {\n\t\t// console.log('reducer', state, action)\n\t\treturn {\n\t\t\t...state,\n\t\t\t[action.type]: action.data,\n\t\t}\n\t}\n\n\t// set an individual state item value. This function is provided through GlobalStateContext\n\tfunction setGlobalStateItem(name, value) {\n\t\tglobalDispatch({ type: name, data: value })\n\t\tif (name === 'language') localStorage.setItem(\"language\", value)\n\t}\n\n\tconst [currentParams, setCurrentParams] = useState({}) // these are set by input controls in the ParamsBlock\n\tconst [speedParams, setSpeedParams] = useState({ ShowWoodgrain: 1, ShowEdges: 1, ShowFullRes: 0 }) // quality/speed options (init used to be in BlockPersonalization, which was removed)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t {/* re-render Global every time */}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\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\t} />\n\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\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\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nconst FullBackgroundDiv = styled.div`\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tleft: 0;\n\tbottom: 0;\n\toverflow: hidden;\n\tbackground-color: ${backgroundColor};\n`\n","import './index.css';\nimport { createRoot } from 'react-dom/client';\nimport App from './App';\nimport { BrowserRouter } from 'react-router-dom';\nconst container = document.getElementById('root');\nconst root = createRoot(container);\nroot.render();\n"],"names":["definition","t","detect","ua","getFirstMatch","regex","match","length","getSecondMatch","result","iosdevice","toLowerCase","android","test","nexusMobile","nexusTablet","chromeos","silk","sailfish","tizen","webos","windowsphone","windows","mac","linux","edgeVersion","versionIdentifier","tablet","mobile","xbox","name","opera","version","samsungBrowser","whale","mzbrowser","coast","focus","yandexbrowser","ucbrowser","maxthon","epiphany","puffin","sleipnir","kMeleon","osname","msedge","msie","chromeBook","chrome","vivaldi","seamonkey","firefox","firefoxos","phantom","slimer","blackberry","touchpad","bada","qupzilla","chromium","safari","googlebot","blink","webkit","gecko","ios","osVersion","s","getWindowsVersion","replace","osversion","osMajorVersion","split","compareVersions","a","c","x","bowser","navigator","userAgent","getVersionPrecision","map","arr","iterator","i","Array","prototype","call","push","versions","precision","Math","max","chunks","delta","join","chunk","reverse","isUnsupportedBrowser","minVersions","strictMode","_bowser","browser","hasOwnProperty","Error","String","browserList","browserItem","check","_detect","module","exports","define","Object","defineProperty","value","property","_hyphenateStyleName2","default","obj","_hyphenateStyleName","require","__esModule","debounce","func","wait","immediate","timeout","args","context","timestamp","later","last","Date","now","setTimeout","apply","debounced","this","arguments","callNow","clear","clearTimeout","flush","isMergeableObject","isNonNullObject","stringValue","toString","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","Symbol","for","cloneUnlessOtherwiseSpecified","options","clone","deepmerge","val","isArray","defaultArrayMerge","target","source","concat","element","getKeys","keys","getOwnPropertySymbols","filter","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","object","_","mergeObject","destination","forEach","key","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","all","array","reduce","prev","next","deepmerge_1","canUseDOM","window","document","createElement","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","addEventListener","attachEvent","canUseViewport","screen","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","getOwnPropertyNames","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","e","b","d","f","g","h","k","l","m","n","p","q","r","v","w","y","z","u","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","uppercasePattern","msPattern","cache","toHyphenLower","hName","_createClass","defineProperties","props","enumerable","configurable","writable","Constructor","protoProps","staticProps","_ref","prefixMap","plugins","fallback","undefined","style","Prefixer","instance","TypeError","_classCallCheck","defaultUserAgent","_userAgent","_keepUnprefixed","keepUnprefixed","_browserInfo","_getBrowserInformation2","cssPrefix","_useFallback","prefixedKeyframes","_getPrefixedKeyframes2","browserName","browserVersion","prefixData","_requiresPrefix","_hasPropsRequiringPrefix","_metaData","jsPrefix","requiresPrefix","_prefixStyle","_isObject2","prefix","combinedValue","len","processedValue","_prefixValue2","_addNewValuesOnly2","_processedValue","_capitalizeString2","styles","_interopRequireDefault","indexOf","_getPrefixedValue2","_getPrefixedValue","grabValues","zoomValues","grab","grabbing","values","flex","alternativeProps","alternativeValues","alignContent","alignSelf","alignItems","justifyContent","order","flexGrow","flexShrink","flexBasis","properties","WebkitBoxOrient","WebkitBoxDirection","wrap","flexWrap","grad","maxHeight","maxWidth","width","height","columnWidth","minWidth","minHeight","requiresPrefixDashCased","prop","_hyphenateProperty2","multipleValues","index","_hyphenateProperty","transition","transitionProperty","WebkitTransition","WebkitTransitionProperty","MozTransition","MozTransitionProperty","prefixAll","_prefixProperty2","_isPrefixedValue2","prefixes","_isPrefixedValue","propertyPrefixMap","outputValue","singleValue","dashCaseProperty","j","pLen","unshift","prefixMapping","prefixValue","webkitOutput","mozOutput","Webkit","Moz","ms","addIfNew","list","str","charAt","toUpperCase","slice","browserInfo","_bowser2","prefixByBrowser","browserByCanIuseAlias","getBrowserName","parseFloat","parseInt","seamoney","firfox","prefixedValue","prefixProperties","newStyle","requiredPrefixes","capitalizedProperty","styleProperty","_capitalizeString","metaData","stdOnEnd","script","cb","onload","onerror","src","ieOnEnd","onreadystatechange","readyState","opts","head","getElementsByTagName","charset","async","attrs","attr","setAttribute","setAttributes","text","appendChild","root","noop","undefinedType","isIE","logMethods","_loggersByName","defaultLogger","bindMethod","methodName","method","bind","Function","traceForIE","console","log","trace","realMethod","replaceLoggingMethods","level","getLevel","methodFactory","debug","levels","SILENT","enableLoggingWhenConsoleArrives","defaultMethodFactory","_level","_loggerName","Logger","factory","inheritedLevel","defaultLevel","userLevel","self","storageKey","persistLevelIfPossible","levelNum","levelName","localStorage","ignore","cookie","encodeURIComponent","getPersistedLevel","storedLevel","cookieName","location","exec","clearPersistedLevel","removeItem","normalizeLevel","input","setLevel","persist","setDefaultLevel","resetLevel","enableAll","TRACE","disableAll","rebuild","childName","initialLevel","getLogger","logger","_log","noConflict","getLoggers","safeIsNaN","Number","isNaN","areInputsEqual","newInputs","lastInputs","first","second","resultFn","isEqual","lastThis","lastResult","lastArgs","calledOnce","newArgs","_i","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","err","getShim","isRequired","ReactPropTypes","bigint","bool","number","string","any","arrayOf","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","ReactIs","_typeof","constructor","Collapse","_react","_defineProperties","_setPrototypeOf","o","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","_defineProperty","_React$Component","subClass","superClass","create","_inherits","_super","_this","container","content","_this$props","isOpened","checkTimeout","containerHeight","floor","clientHeight","contentHeight","isFullyOpened","abs","isFullyClosed","onRest","onWork","onResize","hasOpened","hasClosed","overflow","_ref2","isOpenining","isClosing","initialStyle","nextProps","_this$props2","theme","children","some","_this$props3","ref","onRefContainer","className","collapse","onRefContent","Component","UnmountClosed","_Collapse","_excluded","_excluded2","_extends","assign","ownKeys","enumerableOnly","symbols","sym","_objectSpread","getOwnPropertyDescriptors","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","_React$PureComponent","rest","setState","isResting","isInitialRender","_this$state","state","prevProps","_this$state2","getInitialStyle","PureComponent","ex","React","React__default","UAParser","ClientUAInstance","getBrowser","cpu","getCPU","device","getDevice","engine","getEngine","os","getOS","getUA","setUa","userAgentString","setUA","parseUserAgent","UserAgentInstance","UA","setUserAgent","error","UAHelper","freeze","_slicedToArray","_arrayWithHoles","_s","_e","_arr","_n","_d","done","_iterableToArrayLimit","minLen","_arrayLikeToArray","from","_unsupportedIterableToArray","_nonIterableRest","arr2","DeviceTypes","BrowserTypes","Chrome","Firefox","Opera","Yandex","Safari","InternetExplorer","Edge","Chromium","Ie","MobileSafari","EdgeChromium","MIUI","SamsungBrowser","OsTypes","IOS","Android","WindowsPhone","Windows","MAC_OS","InitialDeviceTypes","isMobile","isTablet","isBrowser","isSmartTV","isConsole","isWearable","setDefaults","getNavigatorInstance","isIOS13Check","nav","platform","maxTouchPoints","MSStream","mobilePayload","_objectSpread2","vendor","model","isMobileType","isTabletType","isMobileAndTabletType","_ref3","isSmartTVType","_ref4","isBrowserType","_ref5","isWearableType","_ref6","isConsoleType","_ref7","isEmbeddedType","_ref8","getMobileVendor","_ref9","getMobileModel","_ref10","getDeviceType","_ref11","isAndroidType","_ref12","isWindowsType","_ref13","isMacOsType","_ref14","isWinPhoneType","_ref15","isIOSType","_ref16","getOsVersion","_ref17","getOsName","_ref18","isChromeType","_ref19","isFirefoxType","_ref20","isChromiumType","_ref21","isEdgeType","_ref22","isYandexType","_ref23","isSafariType","_ref24","isMobileSafariType","_ref25","isOperaType","_ref26","isIEType","_ref27","isMIUIType","_ref28","isSamsungBrowserType","_ref29","getBrowserFullVersion","_ref30","getBrowserVersion","_ref31","major","_ref32","getEngineName","_ref33","getEngineVersion","_ref34","isElectronType","isEdgeChromiumType","getIOS13","getIPad13","getIphone13","getIPod13","getUseragent","userAg","buildSelectorsObject","isEmbedded","isMobileSafari","isChromium","isMobileOnly","isDesktop","isAndroid","isWinPhone","isIOS","isChrome","isFirefox","isSafari","isOpera","osName","fullBrowserVersion","mobileVendor","mobileModel","engineName","engineVersion","isEdge","isYandex","deviceType","isIOS13","isIPad13","isIPhone13","isIPod13","isElectron","isEdgeChromium","isLegacyEdge","isWindows","isMacOs","isMIUI","isSamsungBrowser","useDeviceData","hookUserAgent","aa","ca","da","Set","ea","fa","ha","add","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","removeAttribute","setAttributeNS","xlinkHref","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","stack","trim","Na","Oa","prepareStackTrace","set","includes","Pa","tag","Qa","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","get","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","removeChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flexPositive","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","setProperty","substring","tb","menuitem","area","base","br","col","embed","hr","img","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","removeEventListener","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","fromCharCode","code","repeat","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","password","range","search","tel","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","De","Ee","Fe","He","Je","Ke","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","listener","D","of","has","pf","qf","rf","random","sf","capture","passive","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_owner","_stringRef","refs","Mg","Ng","Og","Pg","Qg","Rg","implementation","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","_currentValue","bh","childLanes","ch","dependencies","firstContext","lanes","dh","eh","memoizedValue","fh","gh","hh","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","lh","mh","eventTime","lane","payload","callback","nh","K","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","tagName","zh","Ah","Bh","L","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","M","N","O","Ih","Jh","Kh","Lh","P","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","Q","di","lastEffect","stores","ei","fi","gi","hi","ii","destroy","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","R","Bi","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","message","digest","Ki","Li","Mi","WeakMap","Ni","Oi","Pi","Qi","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","bj","cj","dj","baseLanes","cachePool","transitions","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","tail","tailMode","xj","Dj","S","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Gj","Hj","Ij","Jj","U","Kj","WeakSet","V","Lj","W","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","insertBefore","_reactRootContainer","Wj","X","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","display","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","Vk","lk","ceil","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","Infinity","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","al","mutableSourceEagerHydrationData","bl","pendingSuspenseBoundaries","dl","el","fl","gl","hl","il","yj","Zk","kl","reportError","ll","_internalRoot","ml","nl","ol","pl","rl","ql","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","sl","usingClientEntryPoint","Events","tl","findFiberByHostInstance","bundleType","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","createPortal","cl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","hasElementType","hasMap","hasSet","hasArrayBuffer","ArrayBuffer","isView","equal","it","entries","RegExp","warn","titleCase","redactingEmail","_str","title","smallWords","substr","mightBeEmail","redacted","redactEmail","GA4","_gtag","_format","_excluded3","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","_x","_r","_toPropertyKey","arg","hint","prim","toPrimitive","res","_toPrimitive","isInitialized","_testMode","_currentMeasurementId","_hasLoadedGA","_isQueuing","_queueGtag","_len","_key","GA_MEASUREMENT_ID","nonce","gtagUrl","dataLayer","gtag","gaOptions","mapFields","cookieUpdate","cookieExpires","cookieDomain","cookieFlags","userId","clientId","anonymizeIp","contentGroup1","contentGroup2","contentGroup3","contentGroup4","contentGroup5","allowAdFeatures","allowAdPersonalizationSignals","nonInteraction","page","hitCallback","initConfigs","trackingId","gtagOptions","_options$testMode","testMode","_loadGA","config","mergedGtagOptions","_toGtagOptions","queues","fieldsObject","_gaCommand","eventCategory","eventAction","eventLabel","eventValue","event_category","event_label","non_interaction","_len2","_key2","_gaCommandSendEvent","_args$","hitType","timingCategory","timingVar","timingValue","timingLabel","_this$_toGtagOptions","page_path","page_title","page_location","_len3","_key3","_gaCommandSendPageview","_args$2","_len4","_key4","_gaCommandSendEventParameters","_gaCommandSendPageviewParameters","_gaCommandSendTiming","_len5","_key5","command","_len6","_key6","_gaCommandSend","_gaCommandSet","_len7","_key7","readyCallback","ga","optionsOrName","params","category","label","transport","fieldObject","reset","_default","_window","_ga","nodeInterop","_getRequireWildcardCache","newObj","hasPropertyDescriptor","desc","_interopRequireWildcard","cacheBabelInterop","cacheNodeInterop","prevState","nextState","__reactInternalSnapshotFlag","__reactInternalSnapshot","polyfill","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","bodyOpenClassName","portalClassName","_react2","_reactDom2","_propTypes2","_ModalPortal2","ariaAppHider","_safeHTMLElement","_safeHTMLElement2","_reactLifecyclesCompat","isReact16","createHTMLElement","getCreatePortal","getParentElement","parentSelector","Modal","_Component","_temp","removePortal","parent","portalRef","portal","renderPortal","defaultStyles","prevParent","nextParent","_props","isOpen","closesAt","closeTimeoutMS","beforeClose","closeWithTimeout","setElement","overlay","htmlOpenClassName","afterOpen","overlayClassName","appElement","SafeHTMLCollection","SafeNodeList","onAfterOpen","onRequestClose","ariaHideApp","shouldFocusAfterRender","shouldCloseOnOverlayClick","shouldReturnFocusAfterClose","preventScroll","aria","role","contentLabel","shouldCloseOnEsc","overlayRef","contentRef","overlayElement","contentElement","contentEl","position","right","bottom","backgroundColor","border","background","WebkitOverflowScrolling","borderRadius","outline","padding","focusManager","_scopeTab2","classList","_portalOpenInstances2","CLASS_NAMES","ariaHiddenInstances","ModalPortal","setOverlayRef","setContentRef","afterClose","parentDocument","remove","show","returnFocus","teardownScopedFocus","popWithoutFocus","onAfterClose","deregister","open","beforeOpen","closeTimer","setupScopedFocus","markForFocusLater","openAnimationFrame","requestAnimationFrame","overlayEl","close","closeWithoutTimeout","focusContent","contentHasFocus","handleKeyDown","isTabKey","isEscKey","requestClose","handleOverlayOnClick","shouldClose","ownerHandlesClose","handleContentOnMouseUp","handleOverlayOnMouseDown","handleContentOnClick","handleContentOnMouseDown","shouldBeClosed","buildClassName","additional","classNames","attributesFromObject","items","acc","moveFromContentToOverlay","cancelAnimationFrame","hide","register","_props2","contentStyles","overlayStyles","overlayProps","onMouseDown","contentProps","tabIndex","onKeyDown","onMouseUp","modal","testId","resetState","globalElement","process","assertNodeList","useElement","validateElement","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","documentNotReadyOrSSRTesting","_warning","_warning2","nodeList","selector","HTMLCollection","NodeList","before","after","item","instances","_arr2","_i2","_portalOpenInstances","subscribe","eventType","openInstances","cloneNode","parentElement","htmlElement","cls","htmlClassList","removeClass","_cls","docBodyClassList","at","classString","classListRef","poll","incrementReference","decrementReference","focusLaterElements","handleBlur","handleFocus","toFocus","modalElement","_tabbable","_tabbable2","needToFocus","portalOpenInstances","PortalOpenInstances","openInstance","emit","subscribers","subscriber","_exenv","EE","SafeHTMLElement","HTMLElement","tabbable","getActiveElement","checkSafari","shadowRoot","findTabbableDescendants","descendants","finished","DISPLAY_NONE","DISPLAY_CONTENTS","tabbableNode","hidesContents","zeroSize","offsetWidth","offsetHeight","getComputedStyle","displayValue","getPropertyValue","scrollWidth","scrollHeight","isNotOverflowing","exception","focusable","isTabIndexNotNaN","rootNode","getRootNode","host","visible","getAttribute","isTabIndexNaN","_Modal","_Modal2","createReactPlayer","Player","canPlay","lazyPlayer","mod","__create","__defProp","__getOwnPropDesc","__getOwnPropNames","__getProtoOf","__hasOwnProp","__copyProps","to","except","_createForOfIteratorHelper","_loop","__toESM","isNodeMode","__publicField","__defNormalProp","Player_exports","__export","import_react","import_react_fast_compare","import_props","import_utils","_import_react$Compone","player","load","progress","isReady","playedSeconds","getCurrentTime","loadedSeconds","getSecondsLoaded","duration","getDuration","played","loaded","prevPlayed","prevLoaded","onProgress","progressTimeout","progressFrequency","progressInterval","mounted","isLoading","onReady","playing","volume","muted","setVolume","loadOnReady","play","handleDurationCheck","isPlaying","onStart","onPlay","playbackRate","startOnPlay","setPlaybackRate","seekOnPlay","seekTo","onPause","activePlayer","loop","onEnded","loopOnEnded","_this$props4","durationCheckTimeout","onDurationCalled","onDuration","stopOnUnmount","stop","disablePIP","_this2","_this$props5","pip","disableDeferredLoading","forceLoad","isMediaStream","pause","enablePIP","mute","unmute","setLoop","amount","keepPlaying","_this3","Player2","onMount","handlePlayerMount","handleReady","handlePlay","handlePause","handleEnded","onLoaded","handleLoaded","handleError","ReactPlayer_exports","import_deepmerge","import_memoize_one","import_Player","Preview","lazy","IS_BROWSER","IS_GLOBAL","global","SUPPORTED_PROPS","UniversalSuspense","customPlayers","players","_a","showPreview","light","wrapper","onClickPreview","getInternalPlayer","fraction","omit","getActivePlayer","getConfig","references","playIcon","previewTabIndex","oEmbedUrl","previewAriaLabel","handleClickPreview","fallback2","Wrapper","attributes","getAttributes","wrapperRef","renderPreview","renderActivePlayer","_i3","_arr3","canEnablePIP","patterns_exports","AUDIO_EXTENSIONS","DASH_EXTENSIONS","FLV_EXTENSIONS","HLS_EXTENSIONS","MATCH_URL_DAILYMOTION","MATCH_URL_FACEBOOK","MATCH_URL_FACEBOOK_WATCH","MATCH_URL_KALTURA","MATCH_URL_MIXCLOUD","MATCH_URL_MUX","MATCH_URL_SOUNDCLOUD","MATCH_URL_STREAMABLE","MATCH_URL_TWITCH_CHANNEL","MATCH_URL_TWITCH_VIDEO","MATCH_URL_VIDYARD","MATCH_URL_VIMEO","MATCH_URL_WISTIA","MATCH_URL_YOUTUBE","VIDEO_EXTENSIONS","youtube","every","soundcloud","vimeo","mux","facebook","streamable","wistia","twitch","dailymotion","mixcloud","vidyard","kaltura","file","canPlayFile","isBlobUrl","FilePlayer_exports","FilePlayer","import_patterns","HAS_NAVIGATOR","IS_IPAD_PRO","IS_IOS","IS_SAFARI","MATCH_DROPBOX_URL","MATCH_CLOUDFLARE_STREAM","onBuffer","onBufferEnd","_this$props6","_this$props7","onPlaybackRateChange","_this$props8","onEnablePIP","_this$props9","onDisablePIP","supportsWebKitPresentationMode","webkitPresentationMode","onSeek","currentTime","prevPlayer","addListeners","getSource","forceDisableHls","shouldUseAudio","removeListeners","srcObject","hls","_this$props10","playsinline","onPlayBackRateChange","onPresentationModeChange","shouldUseHLS","forceVideo","poster","forceAudio","forceSafariHLS","forceHLS","forceDASH","forceFLV","_this$props$config","hlsVersion","hlsOptions","dashVersion","flvVersion","dash","getSDK","Hls","on","MANIFEST_PARSED","ERROR","loadSource","attachMedia","shouldUseDASH","dashjs","MediaPlayer","initialize","getDebug","setLogToBrowserConsole","updateSettings","logLevel","Debug","LOG_LEVEL_NONE","shouldUseFLV","flvjs","flv","createPlayer","attachMediaElement","URL","createObjectURL","promise","seconds","requestPictureInPicture","pictureInPictureElement","webkitSetPresentationMode","exitPictureInPicture","rate","_this$player","seekable","buffered","useHLS","useDASH","useFLV","_this$props11","controls","preload","autoPlay","renderSourceElement","tracks","renderTrack","props_exports","import_prop_types","_import_prop_types$de","playerVars","embedOptions","onUnstarted","appId","playerId","playerOptions","customControls","onPlaybackQualityChange","visual","buying","liking","download","sharing","show_comments","show_playcount","showinfo","rel","iv_load_policy","modestbranding","api","autopause","byline","portrait","hide_cover","utils_exports","callPlayer","parseEndTime","parseStartTime","queryString","randomString","import_load_script","componentImportFn","_asyncToGenerator","_regeneratorRuntime","mark","_callee","sent","abrupt","MATCH_START_QUERY","MATCH_END_QUERY","MATCH_START_STAMP","MATCH_NUMERIC","parseTimeParam","pattern","stamp","_array2","count","period","parseTimeString","getGlobal","requests","fn","enableStubOn","sdkGlobal","sdkReady","isLoaded","fetchScript","existingGlobal","reject","sdk","request","previousOnReady","arrays","omitKeys","output","_keys","MediaStream","video","notMobile","webkitSupportsPresentationMode","ConcurrentRoot","ContinuousEventPriority","DefaultEventPriority","DiscreteEventPriority","$$$hostConfig","getPublicInstance","getRootHostContext","getChildHostContext","prepareForCommit","resetAfterCommit","createInstance","appendInitialChild","finalizeInitialChildren","prepareUpdate","shouldSetTextContent","createTextInstance","scheduleTimeout","cancelTimeout","noTimeout","isPrimaryRenderer","supportsMutation","supportsPersistence","supportsHydration","getInstanceFromNode","preparePortalMount","getCurrentEventPriority","detachDeletedInstance","supportsMicrotasks","scheduleMicrotask","supportsTestSelectors","findFiberRoot","getBoundingRect","getTextContent","isHiddenSubtree","matchAccessibilityRole","setFocusIfFocusable","setupIntersectionObserver","appendChildToContainer","commitTextUpdate","commitMount","commitUpdate","insertInContainerBefore","removeChildFromContainer","resetTextContent","hideInstance","hideTextInstance","unhideInstance","unhideTextInstance","clearContainer","cloneInstance","createContainerChildSet","appendChildToContainerChildSet","finalizeContainerChildren","replaceContainerChildren","cloneHiddenInstance","cloneHiddenTextInstance","canHydrateInstance","canHydrateTextInstance","canHydrateSuspenseInstance","isSuspenseInstancePending","isSuspenseInstanceFallback","registerSuspenseInstanceRetry","getNextHydratableSibling","getFirstHydratableChild","getFirstHydratableChildWithinContainer","getFirstHydratableChildWithinSuspenseInstance","hydrateInstance","hydrateTextInstance","hydrateSuspenseInstance","getNextHydratableInstanceAfterSuspenseInstance","commitHydratedContainer","commitHydratedSuspenseInstance","clearSuspenseBoundary","clearSuspenseBoundaryFromContainer","shouldDeleteUnhydratedTailInstances","didNotMatchHydratedContainerTextInstance","didNotMatchHydratedTextInstance","nc","_currentValue2","Cd","Ed","Gd","Kd","Sd","Ud","Wd","_workInProgressVersionSecondary","Ge","jf","kf","attemptContinuousHydration","attemptHydrationAtCurrentPriority","attemptSynchronousHydration","batchedUpdates","createComponentSelector","createContainer","createHasPseudoClassSelector","createHydrationContainer","createRoleSelector","createTestNameSelector","createTextSelector","deferredUpdates","discreteUpdates","findAllNodes","findBoundingRects","findHostInstance","findHostInstanceWithNoPortals","findHostInstanceWithWarning","flushControlled","flushPassiveEffects","focusWithin","getCurrentUpdatePriority","getFindAllNodesFailureDescription","getPublicRootInstance","injectIntoDevTools","isAlreadyRendering","observeVisibleRects","disconnect","registerMutableSourceForHydration","runWithPriority","shouldError","shouldSuspend","updateContainer","__self","__source","jsx","jsxs","forceUpdate","escape","_status","_result","Children","toArray","only","act","cloneElement","createContext","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","memo","startTransition","unstable_act","objA","objB","compareContext","ret","keysA","keysB","bHasOwnProperty","idx","valueA","valueB","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","enumerize","enums","str1","str2","lowerize","rgxMapper","matches","strMapper","windowsVersionMap","ME","XP","Vista","RT","regexes","EDGE","extensions","getResult","_navigator","_ua","_uach","userAgentData","_rgxmap","mergedRegexes","_isSelfNav","_browser","brave","isBrave","_cpu","_device","standalone","_engine","_os","CPU","DEVICE","ENGINE","OS","$","jQuery","Zepto","parser","warning","arrayLikeToArray","asyncGeneratorStep","gen","_next","_throw","info","unsupportedIterableToArray","allowArrayLike","normalCompletion","didErr","step","_e2","isNativeReflectConstruct","possibleConstructorReturn","assertThisInitialized","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","awrap","skipTempReset","rootRecord","rval","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","arrayWithHoles","iterableToArrayLimit","nonIterableRest","arrayWithoutHoles","iterableToArray","nonIterableSpread","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdD","amdO","getter","leafPrototypes","ns","def","chunkId","promises","miniCssF","inProgress","dataWebpackPrefix","needAttach","scripts","onScriptComplete","doneFns","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","chunkLoadingGlobal","_taggedTemplateLiteral","strings","raw","_construct","Parent","Class","_cache","_toArray","Action","ResultType","PopStateEventType","invariant","cond","getHistoryState","usr","createLocation","pathname","hash","parsePath","_ref$search","_ref$hash","path","parsedPath","hashIndex","searchIndex","getUrlBasedHistory","getLocation","createHref","validateLocation","_options2$window","_options2$v5Compat","v5Compat","globalHistory","history","Pop","getIndex","handlePop","nextIndex","createURL","origin","createPath","replaceState","listen","encodeLocation","Push","historyState","pushState","DOMException","Replace","go","matchRoutes","routes","locationArg","basename","matchRoutesImpl","allowPartial","stripBasename","branches","flattenRoutes","sort","score","siblings","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","decoded","decodePath","matchRouteBranch","parentsMeta","parentPath","flattenRoute","route","relativePath","caseSensitive","startsWith","joinPaths","computeScore","_route$path","explodeOptionalSegments","exploded","segments","isOptional","endsWith","required","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","regexpSource","paramName","matcher","compilePath","_compilePath2","compiledParams","captureGroups","splatValue","decodeURIComponent","startIndex","nextChar","getInvalidPathError","field","dest","getPathContributingMatches","getResolveToMatches","v7_relativeSplatPath","pathMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","_ref7$search","_ref7$hash","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","paths","AbortedDeferredError","isRouteErrorResponse","status","statusText","internal","validMutationMethodsArr","validRequestMethodsArr","DataRouterContext","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","useInRouterContext","useLocation","useIsomorphicLayoutEffect","static","useNavigate","router","useDataRouterContext","DataRouterHook","UseNavigateStable","useCurrentRouteId","DataRouterStateHook","activeRef","navigate","fromRouteId","useNavigateStable","dataRouterContext","future","routePathnamesJson","parse","relative","useNavigateUnstable","useParams","routeMatch","useResolvedPath","_temp2","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathnameBase","locationFromContext","parsedLocationArg","_parsedLocationArg$pa","parentSegments","renderedMatches","_renderMatches","navigationType","NavigationType","DefaultErrorComponent","useDataRouterState","UseRouteError","routeId","_state$errors","errors","useRouteError","lightgrey","preStyles","fontStyle","defaultErrorElement","RenderErrorBoundary","revalidation","errorInfo","routeContext","RenderedRoute","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","_future","v7_partialHydration","initialized","_dataRouterState","errorIndex","findIndex","renderFallback","fallbackIndex","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","reduceRight","shouldRenderHydrateFallback","alreadyWarned","getChildren","hookName","ctx","useRouteContext","thisRoute","Route","Router","basenameProp","_ref5$children","locationProp","_ref5$navigationType","_ref5$static","staticProp","navigationContext","_locationProp$pathnam","_locationProp$search","_locationProp$hash","_locationProp$state","_locationProp$key","locationContext","trailingPathname","Routes","createRoutesFromChildren","AwaitRenderStatus","neverSettledPromise","treePath","hasErrorBoundary","shouldRevalidate","charCodeAt","use","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","reactPropsRegex","memoize","interpolations","EMPTY_ARRAY","EMPTY_OBJECT","isFunction","getComponentName","isStyledComponent","styledComponentId","SC_ATTR","REACT_APP_SC_ATTR","DISABLE_SPEEDY","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","throwStyledComponentsError","DefaultGroupedTag","groupSizes","Uint32Array","indexOfGroup","group","insertRules","rules","oldBuffer","oldSize","newSize","throwStyledError","ruleIndex","insertRule","clearGroup","endIndex","deleteRule","getGroup","css","getRule","groupIDRegister","reverseRegister","nextFreeGroup","getGroupForId","getIdForGroup","setGroupForId","SELECTOR","MARKER_RE","rehydrateNamesFromContent","sheet","names","registerName","rehydrateSheetFromTag","parts","part","marker","getTag","getNonce","__webpack_nonce__","makeStyleTag","prevStyle","childNodes","hasAttribute","__VERSION__","CSSOMTag","styleSheets","ownerNode","rule","_error","cssRules","cssText","TextTag","nodes","refNode","VirtualTag","_target","SHOULD_REHYDRATE","defaultOptions","isServer","useCSSOMInjection","StyleSheet","globalStyles","gs","server","registerId","reconstructWithOptions","withNames","allocateGSInstance","hasNameForId","groupNames","clearNames","clearRules","clearTag","AD_REPLACER_R","getAlphabeticChar","generateAlphabeticName","phash","isStaticRules","SEED","ComponentStyle","componentId","baseStyle","staticRulesId","isStatic","NODE_ENV","baseHash","generateAndInjectStyles","executionContext","styleSheet","stylis","cssStatic","flatten","generateName","cssStaticFormatted","dynamicHash","partRule","partChunk","partString","cssFormatted","COMMENT_REGEX","COMPLEX_SELECTOR_PREFIX","createStylisInstance","_componentId","_selector","_selectorRegexp","_consecutiveSelfRefRegExp","Stylis","parsingRules","parseRulesPlugin","toSheet","block","selectors","parents","line","column","depth","delimiter","selfReferenceReplacer","stringifyRules","flatCSS","cssStr","lastIndexOf","parsedRules","plugin","StyleSheetContext","StylisContext","masterSheet","masterStylis","useStyleSheet","useStylis","StyleSheetManager","stylisPlugins","setPlugins","contextStyleSheet","disableCSSOMInjection","disableVendorPrefixes","shallowequal","Keyframes","stylisInstance","resolvedName","getName","uppercaseCheck","prefixAndLowerCase","hyphenateStyleName","isFalsish","ruleSet","isPlainObject","objToCssArray","prevKey","isCss","hyphenate","unitless","addTag","interleave","originalConsoleError","providedTheme","escapeRegex","dashesAtEnds","isTag","isObject","isValidKey","mixin","mixinDeep","ThemeContext","ThemeProvider","outerTheme","themeContext","identifiers","createStyledComponent","isTargetStyledComp","isCompositeComponent","parentComponentId","generateComponentId","finalAttrs","shouldForwardProp","filterFn","elementToBeCreated","WrappedStyledComponent","componentStyle","forwardedComponent","forwardedRef","componentAttrs","foldedComponentIds","resolvedAttrs","attrDef","resolvedAttrDef","determineTheme","generatedClassName","warnTooManyClasses","refToForward","$as","as","isTargetTag","computedProps","propsForElement","validAttr","withComponent","previousComponentId","optionsToCopy","newComponentId","_foldedDefaultProps","merge","hoist","styled","constructWithOptions","componentConstructor","templateFunction","withConfig","StyledComponent","domElement","GlobalStyle","createStyles","removeStyles","renderStyles","ServerStyleSheet","_emitSheetCSS","SC_ATTR_VERSION","getStyleTags","sealed","getStyleElement","seal","collectStyles","interleaveWithNodeStream","getRandomValues","crypto","msCrypto","rnds8","Uint8Array","rng","byteToHex","buf","bth","rnds","bytesToUuid","HIDE","REBUILD","SHOW","dispatchGlobalEvent","eventName","CustomEvent","createEvent","initEvent","checkStatus","dataEventOff","isCapture","currentItem","hideTooltip","setUntargetItems","getTargetArray","showTooltip","targetArray","customListeners","bodyListener","respectEffect","_options$customEvent","customEvent","tip","forId","isCustomEvent","isTargetBelongsToTooltip","getEffect","proxy","makeProxy","findCustomEvents","dataAttribute","events","getBody","getPosition","place","desiredPlace","effect","getDimensions","tipWidth","tipHeight","targetWidth","targetHeight","getCurrentOffset","mouseX","mouseY","defaultOffset","getDefaultPosition","calculateOffset","extraOffsetX","extraOffsetY","windowWidth","innerWidth","windowHeight","innerHeight","getParent","parentTop","parentLeft","getTipOffsetLeft","offsetX","getTipOffsetTop","offsetY","outsideRight","getTipOffsetRight","outsideBottom","getTipOffsetBottom","outside","outsideLeft","outsideTop","inside","placesList","insideList","newPlace","isNewState","shouldUpdatePlace","newState","getBoundingClientRect","boundingClientRect","targetTop","targetLeft","disToMouse","currentParent","computedStyle","getTipContent","getContent","multiline","regexp","parseAria","ariaObj","nodeListToArray","fill","defaultColors","dark","arrow","success","generateTooltipStyle","uuid","customColors","hasBorder","colors","textColor","borderColor","arrowColor","generateStyle","getDefaultPopupColors","getPopupColors","fails","$propertyIsEnumerable","bitmap","classof","IndexedObject","requireObjectCoercible","PREFERRED_STRING","argument","toObject","EXISTS","DESCRIPTORS","$getOwnPropertyDescriptor","toIndexedObject","IE8_DOM_DEFINE","createPropertyDescriptor","propertyIsEnumerableModule","$defineProperty","Attributes","anObject","definePropertyModule","createNonEnumerableProperty","SHARED","setGlobal","functionToString","store","inspectSource","copyright","postfix","uid","OBJECT_ALREADY_INITIALIZED","NATIVE_WEAK_MAP","wmget","wmhas","wmset","metadata","facade","STATE","sharedKey","hiddenKeys","objectHas","enforce","getterFor","getInternalState","InternalStateModule","enforceInternalState","TEMPLATE","unsafe","simple","noTargetGet","aFunction","variable","namespace","toInteger","createMethod","IS_INCLUDES","$this","fromIndex","toLength","integer","toAbsoluteIndex","enumBugKeys","internalObjectKeys","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","getOwnPropertyDescriptorModule","replacement","isForced","feature","detection","normalize","POLYFILL","NATIVE","require$$0","that","v8","activeXDocument","V8_VERSION","NATIVE_SYMBOL","WellKnownSymbolsStore","createWellKnownSymbol","USE_SYMBOL_AS_UID","withoutSetter","SPECIES","wellKnownSymbol","originalArray","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","callbackfn","specificCreate","boundFunction","arraySpeciesCreate","find","filterOut","Properties","objectKeys","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObject","domain","ActiveXObject","write","temp","NullProtoObjectViaActiveX","iframeDocument","iframe","documentCreateElement","JS","html","NullProtoObjectViaIFrame","UNSCOPABLES","ArrayPrototype","$find","FIND","SKIPS_HOLES","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","forced","copyConstructorProperties","redefine","proto","DESIGNER_URL","COMPUTE_URL","ReactTooltip","CONSTANT","globalRebuild","mount","unbindListener","bindListener","globalShow","hasTarget","globalHide","staticMethods","bindWindowEvents","resizeHide","onWindowResize","unbindWindowEvents","windowListener","ele","customBindListener","eventOff","dataEvent","customListener","customUnbindListener","isBodyMode","bodyMode","bindBodyListener","possibleCustomEvents","possibleCustomEventsOff","customEvents","customEventsOff","unbindBodyListener","bodyModeListeners","mouseover","mousemove","updateTooltip","mouseout","targetEventOff","bindRemovalTracker","MutationObserver","WebKitMutationObserver","MozMutationObserver","observer","mutations","m1","mutation","m2","removedNodes","observe","childList","subtree","removalTracker","unbindRemovalTracker","trackRemoval","extraClass","delayHide","delayShow","currentEvent","ariaProps","isEmptyTip","disable","originTooltip","isMultiline","delayShowLoop","delayHideLoop","delayReshow","intervalUpdateContent","insecure","class","delayUpdate","globalEventOff","afterShow","afterHide","overridePosition","scrollHide","clickable","methodArray","injectStyles","clearTimer","removeScrollListener","tooltipRef","domRoot","querySelector","msMatchesSelector","mozMatchesSelector","escaped","unbindBasicListener","isCaptureMode","_this4","placeholder","isGlobalCall","switchToSolid","FocusEvent","reshowDelay","updateState","addScrollListener","setInterval","updatePosition","getTooltipContent","eventTarget","mouseOnToolTip","delayTime","isInvisible","_this5","isScroll","isVisible","_this6","listenForTooltipExit","removeListenerForTooltipExit","hideTooltipOnScroll","_this7","clearInterval","_this8","tooltipClass","hasCustomColors","supportedWrappers","wrapperClassName","htmlContent","_this9","newAriaProps","isDT","isWebKit","isFullscreenAble","isFullscreen","enterFullScreenFunction","exitFullScreenFunction","isIPad","isInstagram","isArPossible","stratumWebsiteUrl","colorPrimaryAccent","colorPrimaryAccentContrast","colorButton0","colorButton0Text","colorButton1","colorButton1Text","colorProductInfoDiv","mobilePersonalizationBlockDiv_width_numeric","Global","_useContext","GlobalStateContext","globalState","setGlobalStateItem","setBrowserProperties","handleWindowSizeChange","BannerDiv_width_numeric_mobile","winProps","_enterFullScreenFunct","_enterFullScreenFunct2","matchMedia","_isFullscreen","_enterFullScreenFunction","appendWinProps","_exitFullScreenFunction","elem","requestFullScreen","requestFullscreen","webkitRequestFullscreen","mozRequestFullscreen","exitFullScreen","exitFullscreen","webkitExitFullscreen","mozExitFullscreen","mq","screenMatch","themeMobile","themeDesktop","setCurrentTheme","themify","styleName","qualifiedPrefix","namedThemeKeys","namedProps","qualifiedTheme","newval","_pageBackgroundColor","_uiBackgroundColor","_uiBackgroundColorInverse","_uiTextColor","_uiTextColorInverse","IconChevron_size","IconFullscreen_size","IconRulers_size","IconPerson_size","ArrowSVGDiv_margin","Banner_height_numeric","Banner_height","BannerDiv_width","BannerDiv_width_numeric","ButtonStyle_borderRadius","ButtonStyle_height","ButtonStyle_margin","ButtonText_fontSize","ButtonTextMini_fontSize","ExpandButton_margin","GroupContainerDiv_margin","GroupControlDiv_borderRadius","GroupControlDiv_flexDirection","GroupControlDiv_padding","GroupParamsContainerDiv_padding","H1_fontSize","H2_fontSize","H3_fontSize","H4_fontSize","H5_fontSize","H1_lineHeight","H2_lineHeight","H3_lineHeight","H4_lineHeight","InputDiv_width","MainContainerDiv_width","MobileSwitchContainer_display","MobileVerticalControlBackground_width","ModelText_margin","ParamContainerDiv_justifyContent","ParamContainerDiv_margin","ParamIconContainerDiv_width","ParamIconContainerDiv_margin","ParamResetButton_margin","ParamSlider_height","ParamSlider_margin","ParamSlider_width","ParamTextIconContainerDiv_justifyContent","ParamTextIconContainerDiv_width","PersonalizationBlockDiv_margin","PersonalizationBlockDiv_width","PersonalizationBlockDiv_width_numeric","PersonalizationDiv_top","SelectorDropdownDiv_fontSize","SelectorDropdownDiv_margin","SliderAndValueContainer_alignItems","SliderAndValueContainer_position","SliderLabelTopRow_justifyContent","SliderLabelTopRow_margin","SliderValueText_fontSize","SliderValueText_margin","SpeedOptionDropdown_width","VideoDiv_height","VideoDiv_width","VideoTitle_top","H1","_templateObject","H2","_templateObject2","H3","_templateObject3","H4","_templateObject4","H5","_templateObject5","createSearchParams","init","URLSearchParams","__reactRouterVersion","startTransitionImpl","ReactDOM","BrowserRouter","historyRef","_React$useState14","setStateImpl","v7_startTransition","ABSOLUTE_URL_REGEX","Link","absoluteHref","reloadDocument","preventScrollReset","unstable_viewTransition","isExternal","currentUrl","targetUrl","protocol","joinedPathname","useHref","internalOnClick","replaceProp","isModifiedEvent","shouldProcessLinkClick","useLinkClickHandler","useSearchParams","defaultInit","defaultSearchParamsRef","hasSetSearchParamsRef","searchParams","locationSearch","defaultSearchParams","getAll","append","setSearchParams","nextInit","navigateOptions","newSearchParams","isUnitlessNumber","appendPxIfNeeded","mapObject","mapper","appendImportantToEachValue","_camelCaseRegex","_camelCaseReplacer","p1","p2","camelCaseToDashCase","prefixedStyle","dashCaseKey","wm","wms","wmms","calc","crossFade","cursor","flexboxIE","flexboxOld","gradient","imageSet","sizing","transform","transformOrigin","transformOriginX","transformOriginY","backfaceVisibility","perspective","perspectiveOrigin","transformStyle","transformOriginZ","animationDelay","animationDirection","animationFillMode","animationDuration","animationPlayState","animationTimingFunction","appearance","userSelect","fontKerning","textEmphasisPosition","textEmphasis","textEmphasisStyle","textEmphasisColor","boxDecorationBreak","clipPath","maskImage","maskMode","maskRepeat","maskPosition","maskClip","maskOrigin","maskSize","maskComposite","mask","maskBorderSource","maskBorderMode","maskBorderSlice","maskBorderWidth","maskBorderOutset","maskBorderRepeat","maskBorder","maskType","textDecorationStyle","textDecorationSkip","textDecorationLine","textDecorationColor","fontFeatureSettings","breakAfter","breakBefore","breakInside","columnFill","columnGap","columnRule","columnRuleColor","columnRuleStyle","columnRuleWidth","columnSpan","writingMode","flexDirection","flexFlow","transitionDelay","transitionDuration","transitionTimingFunction","backdropFilter","scrollSnapType","scrollSnapPointsX","scrollSnapPointsY","scrollSnapDestination","scrollSnapCoordinate","shapeImageThreshold","shapeImageMargin","shapeImageOutside","hyphens","flowInto","flowFrom","regionFragment","boxSizing","textAlignLast","wrapFlow","wrapThrough","wrapMargin","touchAction","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridTemplate","gridAutoColumns","gridAutoRows","gridAutoFlow","grid","gridColumnGap","gridRowGap","gridGap","textSizeAdjust","borderImage","borderImageRepeat","borderImageSource","edge","ios_saf","and_chr","and_uc","op_mini","createStaticPrefixer","staticData","InlineStylePrefixer","createDynamicPrefixer","dynamicData","_lastUserAgent","_cachedPrefixer","getPrefixer","actualUserAgent","getPrefixedStyle","styleWithFallbacks","transformValues","flattenedStyle","flattenStyleValues","cssRuleSetToString","rulesWithPx","prefixedRules","serializedRules","createMarkupForStyles","camelCasePropsToDashCase","elementKey","cleanStateKey","_radiumStyleState","renderedElement","_lastRadiumState","hashValue","isNestedStyle","mergeStyles","newKey","_callbacks","_mouseUpListenerIsActive","_handleMouseUp","_windowMatchMedia","_isInteractiveStyleField","styleFieldName","getComponentField","getState","newComponentFields","newProps","existingOnMouseEnter","onMouseEnter","existingOnMouseLeave","onMouseLeave","existingOnMouseDown","_lastMouseDown","existingOnKeyDown","existingOnKeyUp","onKeyUp","existingOnFocus","onFocus","existingOnBlur","onBlur","_radiumMouseUpListener","MouseUpListener","interactionStyles","styleWithoutInteractions","componentFields","_filterObject","predicate","checkProps","keyframes","addCSS","processKeyframeStyle","_keyframesValue$__pro","__process","newStyleInProgress","isKeyframeArray","__radiumKeyframes","mergeStyleArray","mergeStyleArrayPlugin","removeNestedStyles","resolveInteractionStyles","resolveInteractionStylesPlugin","resolveMediaQueries","getGlobalState","styleWithoutMedia","_removeMediaQueries","mediaQueryClassNames","query","topLevelRules","ruleCSS","mediaQueryClassName","_topLevelRulesToCSS","mediaQueryString","_getWindowMatchMedia","listenersByQuery","mediaQueryListsByQuery","nestedRules","mql","addListener","removeListener","_subscribeToMediaQuery","_radiumMediaQueryListenersByQuery","visited","visitedClassName","DEFAULT_CONFIG","Plugins","_resolveStyles5","_runPlugins","existingKeyMap","getKey","originalKey","getStateKey","alreadyGotKey","elementName","_buildGetKey","componentGetState","stateKey","_radiumIsMounted","getRadiumStyleState","_setStyleState","styleKeeper","_radiumStyleKeeper","fieldName","newGlobalState","shouldCheckBeforeResolve","extraStateKeyMap","elements","_isRadiumEnhanced","_shouldResolveStyles","newChildren","childrenType","onlyChild","_resolveChildren","propValue","_resolveProps","_cloneElement","StyleKeeperContext","RadiumConfigContext","withRadiumContexts","WrappedComponent","WithRadiumContexts","radiumConfigContext","styleKeeperContext","hoistStatics","_get","receiver","_superPropBase","RADIUM_PROTO","RADIUM_METHODS","KEYS_TO_IGNORE_WHEN_COPYING_PROPERTIES","trimRadiumState","enhancer","_extraRadiumStateKeys","trimmedRadiumState","cleanUpEnhancer","resolveConfig","propConfig","contextConfig","hocConfig","renderRadiumComponent","resolvedConfig","_resolveStyles","resolveStyles","createEnhancedFunctionComponent","origComponent","RadiumEnhancer","radiumConfig","otherProps","_useState2","enhancerApi","hasExtraStateKeys","currentConfig","createEnhancedClassComponent","ComposedComponent","_ComposedComponent","enhancedSelf","thisDesc","thisMethod","radiumProtoMethod","copyArrowFuncs","copyProperties","ReactForwardRefSymbol","enhanceWithRadium","configOrComposedComponent","newConfig","configOrComponent","createFactoryFromConfig","isStateless","_ComposedComponent2","OrigComponent","NewComponent","_ComposedComponent3","Style","_PureComponent","scopeSelector","rootRules","accumulator","_buildMediaQueryString","stylesByMediaQuery","_buildStyles","StyleKeeper","_listeners","_cssSet","listenerIndex","_emitChange","_subscription","_root","_css","_onChange","nextCSS","getCSS","StyleRootInner","Enhancer","configContext","configProp","getStyleKeeper","Radium","StyleRoot","keyframeRules","keyframesPrefixed","getPrefixedKeyframes","percentage","qrcodegen","qrcodegen2","__getOwnPropSymbols","__propIsEnum","__spreadValues","__objRest","exclude","_QrCode","errorCorrectionLevel","dataCodewords","msk","modules","MIN_VERSION","MAX_VERSION","RangeError","row","drawFunctionPatterns","allCodewords","addEccAndInterleave","drawCodewords","minPenalty","applyMask","drawFormatBits","penalty","getPenaltyScore","assert","setFunctionModule","drawFinderPattern","alignPatPos","getAlignmentPatternPositions","numAlign","drawAlignmentPattern","drawVersion","formatBits","rem","bits","getBit","dy","dx","dist","xx","yy","isDark","ver","ecl","getNumDataCodewords","numBlocks","NUM_ERROR_CORRECTION_BLOCKS","ordinal","blockEccLen","ECC_CODEWORDS_PER_BLOCK","rawCodewords","getNumRawDataModules","numShortBlocks","shortBlockLen","blocks","rsDiv","reedSolomonComputeDivisor","dat","ecc","reedSolomonComputeRemainder","vert","invert","runColor","runX","runHistory","PENALTY_N1","finderPenaltyAddHistory","finderPenaltyCountPatterns","PENALTY_N3","finderPenaltyTerminateAndCount","runY","PENALTY_N2","_step3","_iterator3","sum","total","PENALTY_N4","pos","core","currentRunColor","currentRunLength","segs","QrSegment","makeSegments","encodeSegments","seg","makeBytes","dataUsedBits","minVersion","maxVersion","boostEcl","dataCapacityBits2","usedBits","getTotalBits","_i10","Ecc","MEDIUM","QUARTILE","HIGH","newEcl","_step4","_iterator4","appendBits","modeBits","numChars","numCharCountBits","_step5","_iterator5","getData","dataCapacityBits","padByte","degree","reedSolomonMultiply","divisor","_step6","_iterator6","_loop2","factor","coef","QrCode","_QrSegment","bitData","_step7","_iterator7","Mode","BYTE","digits","isNumeric","NUMERIC","isAlphanumeric","ALPHANUMERIC_CHARSET","ALPHANUMERIC","makeNumeric","makeAlphanumeric","toUtf8ByteArray","assignVal","ECI","NUMERIC_REGEX","ALPHANUMERIC_REGEX","_step8","_iterator8","ccbits","encodeURI","QrCode2","_Ecc","LOW","QrSegment2","_Mode","numBitsCharCount","KANJI","qrcodegen_default","ERROR_LEVEL_MAP","DEFAULT_BGCOLOR","DEFAULT_FGCOLOR","SPEC_MARGIN_SIZE","DEFAULT_MARGIN_SIZE","DEFAULT_IMG_SCALE","generatePath","margin","ops","cell","excavateModules","excavation","useQRCode","includeMargin","marginSize","imageSettings","boostLevel","qrcode","accum","_React$useMemo","cells2","getModules","margin2","getMarginSize","numCells2","calculatedImageSettings2","cells","numCells","defaultSize","scale","excavate","floorX","floorY","crossOrigin","getImageSettings","calculatedImageSettings","SUPPORTS_PATH2D","Path2D","addPath","QRCodeCanvas","_a$size","_a$level","_a$bgColor","bgColor","_a$fgColor","fgColor","_a$includeMargin","_a$minVersion","_b","imgSrc","_canvas","_image","setCanvasRef","_React$useState2","setIsImageLoaded","_useQRCode","canvas","getContext","cellsToDraw","image","haveImageToRender","naturalHeight","naturalWidth","pixelRatio","devicePixelRatio","fillStyle","fillRect","rdx","cdx","globalAlpha","drawImage","canvasStyle","onLoad","QRCodeSVG","_a$size2","_a$level2","_a$bgColor2","_a$fgColor2","_a$includeMargin2","_a$minVersion2","_useQRCode2","preserveAspectRatio","fgPath","viewBox","shapeRendering","DefaultContext","IconContext","Tree2Element","tree","GenIcon","IconBase","conf","svgProps","computedSize","stroke","xmlns","GrClose","ConfigModal","modalStyle","boxShadow","fontFamily","fontSize","_jsxs","_jsx","localize","textAlternatives","language","alternatives","ButtonStyle","borderWidth","ButtonStyleMini","LinkWrapperStyle","LinkStyle","textDecoration","ButtonText","letterSpacing","ButtonTextMini","LinkText","CommonActionButton","buttonStyleClass","buttonStyleOverrides","dataTip","CommonActionButtonMini","_React$Component2","_super2","CommonLinkButton","_React$Component3","_super3","_this$props12","_this$props13","_this$props14","_this$props15","_this$props16","_this$props17","linkStyleOverrides","CommonAButton","_React$Component4","_super4","_this$props18","_this$props19","_this$props20","_this$props21","_this$props22","_this$props23","_this$props24","ArMobileLinkButton","buttonClicked","ArMobileLinkModal","setIsOpen","qrUrl","ModalBasic","QrModalDiv","TopHeader","HorizontalDivider","BottomText","textAlign","div","BsArrowCounterclockwise","BsArrowsFullscreen","BsChevronDown","BsChevronUp","BsClipboardData","BsFullscreenExit","BsHouseFill","BsInfoCircle","BsQuestionCircle","BsXSquare","ErrorComponent","lang","getItem","hasError","BannerTop","_globalState$windowPr","alwaysFullWidth","infoModalIsOpen","setInfoModalIsOpen","_useState4","isBannerWide","setIsBannerWide","_Fragment","buttonStylesTab","linkStylesTab","linkStylesImgTabDesktop","paddingTop","linkStylesImgTabMobile","imgStylesDesktop","imgStylesMobile","linkStylesImgTab","imgStyles","BannerDiv","BannerSectionDiv","stratumIcon","alt","BannerDropdown","onChange","pair","WindowProps","windowProps","_prop$","_prop$$toString","_prop$$toString$repla","select","uiRawSpecModels","uiRawSpecParams","uiRawSpecProducts","uiSpecModels","createUiSpec","uiSpecGroups","uiSpecParams","uiSpecProducts","uiRawSpec","allRawLines","colNames","splitLine","specLinesCells","jsonify","uiRawSpecLine","modelSpecs","productId","allModels","modelCode","modelPlacement","placement","isModelPlacementWall","hasShadow","shadow","paramSpecs","allParams","computeUrl","currentParams","makeUrl","paramsUrl","saveQueryParams","makeQueryParams","abbreviateParams","arUrl","serverUrl","specs","mapping","rhinoName","abbrev","encoded","mappedKey","unabbreviateParams","incomingParamsEncoded","logAction","actionName","ReactGA","ArButton","setQrModalIsOpen","ParamContext","linkStyle","ViewInYourSpaceText","buttonStyle","dimensionsClicked","DimensionsSvg","ZoomIn","ZoomOut","BlockModelPresentation","omitBanner","omitAR","qrModalIsOpen","setQrUrl","ClickableIcons","REVISION","MOUSE","LEFT","MIDDLE","RIGHT","ROTATE","DOLLY","PAN","TOUCH","DOLLY_PAN","DOLLY_ROTATE","CullFaceNone","CullFaceBack","CullFaceFront","CullFaceFrontBack","BasicShadowMap","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","FlatShading","SmoothShading","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","CustomToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipMapNearestFilter","NearestMipmapLinearFilter","NearestMipMapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipMapNearestFilter","LinearMipmapLinearFilter","LinearMipMapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedInt248Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","LoopOnce","LoopRepeat","LoopPingPong","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","NormalAnimationBlendMode","AdditiveAnimationBlendMode","TrianglesDrawMode","TriangleStripDrawMode","TriangleFanDrawMode","LinearEncoding","sRGBEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","NoColorSpace","SRGBColorSpace","LinearSRGBColorSpace","ZeroStencilOp","KeepStencilOp","ReplaceStencilOp","IncrementStencilOp","DecrementStencilOp","IncrementWrapStencilOp","DecrementWrapStencilOp","InvertStencilOp","NeverStencilFunc","LessStencilFunc","EqualStencilFunc","LessEqualStencilFunc","GreaterStencilFunc","NotEqualStencilFunc","GreaterEqualStencilFunc","AlwaysStencilFunc","StaticDrawUsage","DynamicDrawUsage","StreamDrawUsage","StaticReadUsage","DynamicReadUsage","StreamReadUsage","StaticCopyUsage","DynamicCopyUsage","StreamCopyUsage","GLSL1","GLSL3","_SRGBAFormat","EventDispatcher","listenerArray","_lut","_seed","DEG2RAD","PI","RAD2DEG","generateUUID","d0","d1","d2","d3","clamp","euclideanModulo","lerp","isPowerOfTwo","ceilPowerOfTwo","pow","floorPowerOfTwo","MathUtils","mapLinear","a1","a2","b1","b2","inverseLerp","damp","lambda","dt","exp","pingpong","smoothstep","smootherstep","randInt","low","high","randFloat","randFloatSpread","seededRandom","imul","degToRad","degrees","radToDeg","radians","setQuaternionFromProperEuler","cos","sin","c2","s2","c13","s13","c1_3","s1_3","c3_1","s3_1","Float32Array","Uint16Array","round","Int16Array","Int8Array","denormalize","Vector2","scalar","addVectors","subVectors","multiplyScalar","minVal","maxVal","divideScalar","sqrt","angle","atan2","distanceToSquared","alpha","v1","v2","attribute","getX","getY","center","_context2","isVector2","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","xAxis","yAxis","zAxis","setFromMatrix3Column","multiplyMatrices","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","t11","t12","t13","det","detInv","tmp","matrix4","setFromMatrix4","transpose","tx","ty","sx","sy","rotation","cx","cy","theta","matrix","fromArray","arrayNeedsUint32","isMatrix3","TYPED_ARRAYS","Uint8ClampedArray","Int32Array","Float64Array","getTypedArray","buffer","SRGBToLinear","LinearToSRGB","FN","_FN","ColorManagement","legacyMode","workingColorSpace","colorSpace","convert","sourceColorSpace","targetColorSpace","fromWorkingColorSpace","toWorkingColorSpace","_colorKeywords","_rgb","_hslA","_hslB","hue2rgb","toComponents","Color","setRGB","isColor","copy","setHex","setStyle","hex","handleAlpha","components","setHSL","setColorName","copySRGBToLinear","copyLinearToSRGB","getHex","hue","saturation","lightness","getHSL","color1","color2","getZ","normalized","NAMES","ImageUtils","HTMLCanvasElement","ImageData","putImageData","toDataURL","HTMLImageElement","ImageBitmap","imageData","getImageData","Source","isRootObject","images","isDataTexture","serializeImage","getDataURL","isSource","textureId","Texture","_EventDispatcher","DEFAULT_IMAGE","DEFAULT_MAPPING","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","mipmaps","internalFormat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","userData","onUpdate","isRenderTargetTexture","needsPMREMUpdate","setUvTransform","needsUpdate","textures","toJSON","uv","applyMatrix3","isTexture","Vector4","acos","epsilon","epsilon2","m11","m12","m13","m21","m22","m23","m31","m32","m33","zz","xy","xz","yz","getW","_context3","isVector4","WebGLRenderTarget","_EventDispatcher2","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","samples","dispose","isWebGLRenderTarget","DataArrayTexture","_Texture","wrapR","isDataArrayTexture","WebGLArrayRenderTarget","_WebGLRenderTarget","isWebGLArrayRenderTarget","Data3DTexture","_Texture2","_super5","isData3DTexture","WebGL3DRenderTarget","_WebGLRenderTarget2","_super6","isWebGL3DRenderTarget","WebGLMultipleRenderTargets","_WebGLRenderTarget3","_super7","isWebGLMultipleRenderTargets","Quaternion","_y","_z","_w","_onChangeCallback","quaternion","euler","update","isEuler","_order","c1","c3","s1","s3","axis","halfAngle","vFrom","vTo","dot","EPSILON","angleTo","slerp","conjugate","multiplyQuaternions","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","u1","sqrt1u1","sqrtu1","u2","u3","qm","slerpQuaternions","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","tDir","isQuaternion","Vector3","multiplyVectors","applyQuaternion","_quaternion$4","setFromEuler","setFromAxisAngle","qx","qy","qz","qw","ix","iy","iz","iw","camera","applyMatrix4","matrixWorldInverse","projectionMatrix","projectionMatrixInverse","matrixWorld","crossVectors","ax","ay","az","bx","by","bz","denominator","lengthSq","planeNormal","_vector$c","projectOnVector","sub","normal","dz","setFromSphericalCoords","radius","phi","sinPhiRadius","setFromCylindricalCoords","setFromMatrixColumn","sz","_context4","isVector3","Box3","minX","minY","minZ","maxX","maxY","maxZ","points","makeEmpty","expandByPoint","halfSize","_vector$b","precise","expandByObject","box","isEmpty","point","vector","addScalar","updateWorldMatrix","geometry","fromBufferAttribute","boundingBox","computeBoundingBox","_box$3","union","sphere","clampPoint","plane","constant","triangle","getCenter","_center","_extents","_v0$2","_v1$7","_v2$3","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","getSize","_points","setFromPoints","equals","isBox3","_testAxis","v0","extents","p0","_box$2","_v1$6","_toFarthestPoint","_toPoint","Sphere","optionalCenter","maxRadiusSq","distanceTo","radiusSum","intersectsSphere","distanceToPoint","deltaLengthSq","expandByScalar","getMaxScaleOnAxis","missingRadiusHalf","_vector$a","_segCenter","_segDir","_diff","_edge1","_edge2","_normal$1","Ray","direction","ray","directionDistance","distanceSqToPoint","optionalPointOnRay","optionalPointOnSegment","s0","sqrDist","extDet","segExtent","a01","b0","invDet","tca","radius2","thc","t0","t1","distanceToPlane","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectBox","backfaceCulling","sign","DdN","DdQxE2","DdE1xQ","cross","QdN","transformDirection","Matrix4","n14","n24","n34","n41","n42","n43","n44","scaleX","_v1$5","scaleY","scaleZ","compose","_zero","_one","eye","up","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","yx","zx","zy","x2","y2","z2","wx","wy","wz","determinant","_m1$2","invSX","invSY","invSZ","setFromRotationMatrix","near","far","isMatrix4","_matrix$1","_quaternion$3","Euler","DefaultOrder","asin","makeRotationFromQuaternion","newOrder","setFromQuaternion","RotationOrders","Layers","channel","layers","_object3DId","_v1$4","_q1","_m1$1","_position$3","_scale$2","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","_EventDispatcher3","_super8","DefaultUp","modelViewMatrix","normalMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","castShadow","receiveShadow","frustumCulled","renderOrder","animations","updateMatrix","premultiply","decompose","multiply","rotateOnAxis","distance","translateOnAxis","setFromMatrixPosition","isCamera","isLight","lookAt","extractRotation","isObject3D","getObjectByProperty","traverse","traverseVisible","traverseAncestors","force","updateMatrixWorld","updateParents","updateChildren","geometries","materials","shapes","skeletons","serialize","library","isInstancedMesh","instanceMatrix","instanceColor","isScene","environment","isMesh","isLine","isPoints","parameters","isSkinnedMesh","bindMode","bindMatrix","skeleton","material","uuids","extractFromCache","recursive","_v0$1","_v1$3","_v2$2","_v3$1","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","i0","i1","i2","getNormal","setFromCoplanarPoints","getBarycoord","uv1","uv2","uv3","getUV","containsPoint","isFrontFacing","intersectsTriangle","d4","addScaledVector","d5","d6","denom","targetLengthSq","dot00","dot01","dot02","dot11","dot12","invDenom","p3","materialId","Material","_EventDispatcher4","_super9","_this10","fog","blending","side","vertexColors","transparent","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","stencilWriteMask","stencilFunc","stencilRef","stencilFuncMask","stencilFail","stencilZFail","stencilZPass","stencilWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaToCoverage","premultipliedAlpha","toneMapped","_alphaTest","onBeforeCompile","newValue","currentValue","flatShading","roughness","metalness","sheen","sheenColor","sheenRoughness","emissive","emissiveIntensity","specular","specularIntensity","specularColor","shininess","clearcoat","clearcoatRoughness","clearcoatMap","clearcoatRoughnessMap","clearcoatNormalMap","clearcoatNormalScale","matcap","alphaMap","lightMap","lightMapIntensity","aoMap","aoMapIntensity","bumpMap","bumpScale","normalMap","normalMapType","normalScale","displacementMap","displacementScale","displacementBias","roughnessMap","metalnessMap","emissiveMap","specularMap","specularIntensityMap","specularColorMap","envMap","combine","envMapIntensity","reflectivity","refractionRatio","gradientMap","transmission","transmissionMap","thickness","thicknessMap","attenuationDistance","attenuationColor","sizeAttenuation","linewidth","dashSize","gapSize","alphaTest","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","srcPlanes","dstPlanes","isMaterial","fromType","MeshBasicMaterial","_Material","_super10","_this11","setValues","isMeshBasicMaterial","_vector$9","_vector2$1","BufferAttribute","itemSize","usage","updateRange","index1","index2","vectors","setXY","setXYZ","applyNormalMatrix","onUploadCallback","isBufferAttribute","Int8BufferAttribute","_BufferAttribute","_super11","Uint8BufferAttribute","_BufferAttribute2","_super12","Uint8ClampedBufferAttribute","_BufferAttribute3","_super13","Int16BufferAttribute","_BufferAttribute4","_super14","Uint16BufferAttribute","_BufferAttribute5","_super15","Int32BufferAttribute","_BufferAttribute6","_super16","Uint32BufferAttribute","_BufferAttribute7","_super17","Float16BufferAttribute","_BufferAttribute8","_super18","isFloat16BufferAttribute","Float32BufferAttribute","_BufferAttribute9","_super19","Float64BufferAttribute","_BufferAttribute10","_super20","_id$1","_m1","_obj","_offset","_box$1","_boxMorphTargets","_vector$8","BufferGeometry","_EventDispatcher5","_super21","_this12","morphAttributes","morphTargetsRelative","groups","boundingSphere","drawRange","materialIndex","getNormalMatrix","tangent","computeBoundingSphere","makeRotationX","makeRotationY","makeRotationZ","makeTranslation","makeScale","negate","translate","morphAttributesPosition","isGLBufferAttribute","setFromBufferAttribute","morphAttribute","jl","indices","positions","normals","uvs","nVertices","tangents","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","handleTriangle","tmp2","n2","handleVertex","isFinite","positionAttribute","normalAttribute","pA","pB","pC","nA","nB","nC","normalizeNormals","isBufferGeometry","attributeArray1","attribute2","attributeArray2","attributeOffset","convertBufferAttribute","array2","isInterleavedBufferAttribute","stride","geometry2","newAttribute","morphArray","addGroup","hasMorphAttributes","attributeArray","setIndex","_inverseMatrix$2","_ray$2","_sphere$3","_vA$1","_vB$1","_vC$1","_tempA","_tempB","_tempC","_morphA","_morphB","_morphC","_uvA$1","_uvB$1","_uvC$1","_intersectionPoint","_intersectionPointWorld","Mesh","_Object3D","_super22","_this13","updateMorphTargets","morphTargetInfluences","morphTargetDictionary","morphTargets","raycaster","intersects","intersection","intersectsBox","morphPosition","groupMaterial","checkBufferGeometryIntersection","faceIndex","face","isGeometry","morphInfluences","influence","boneTransform","intersectTriangle","checkIntersection","BoxGeometry","_BufferGeometry","_super23","_this14","widthSegments","heightSegments","depthSegments","scope","vertices","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","mergeUniforms","uniforms","merged","UniformsUtils","ShaderMaterial","_Material2","_super24","_this15","defines","vertexShader","fragmentShader","lights","clipping","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","glslVersion","isShaderMaterial","Camera","_Object3D2","_super25","_this16","PerspectiveCamera","_Camera","_super26","_this17","fov","aspect","filmGauge","filmOffset","updateProjectionMatrix","focalLength","vExtentSlope","getFilmHeight","atan","tan","fullWidth","fullHeight","enabled","skew","getFilmWidth","makePerspective","isPerspectiveCamera","CubeCamera","_Object3D3","_super27","renderTarget","_this18","isWebGLCubeRenderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderer","scene","_this$children","currentRenderTarget","getRenderTarget","currentOutputEncoding","outputEncoding","currentToneMapping","toneMapping","currentXrEnabled","xr","setRenderTarget","CubeTexture","_Texture3","_super28","_this19","isCubeTexture","WebGLCubeRenderTarget","_WebGLRenderTarget4","_super29","_this20","shader","tEquirect","mesh","currentMinFilter","stencil","_vector1","_vector2","_normalMatrix","Plane","setFromNormalAndCoplanarPoint","inverseNormalLength","startSign","endSign","intersectsPlane","optionalNormalMatrix","referencePoint","coplanarPoint","isPlane","_sphere$2","_vector$7","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","frame","setAnimationLoop","setContext","WebGLAttributes","capabilities","isWebGL2","buffers","deleteBuffer","bufferType","cached","bytesPerElement","elementSize","createBuffer","bindBuffer","bufferData","BYTES_PER_ELEMENT","bufferSubData","subarray","updateBuffer","PlaneGeometry","_BufferGeometry2","_super30","_this21","width_half","height_half","segment_width","segment_height","ShaderChunk","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","alphatest_pars_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_physical_pars_fragment","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphcolor_vertex","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normal_pars_fragment","normal_pars_vertex","normal_vertex","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","output_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","transmission_fragment","transmission_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_vert","background_frag","cube_vert","cube_frag","depth_vert","depth_frag","distanceRGBA_vert","distanceRGBA_frag","equirect_vert","equirect_frag","linedashed_vert","linedashed_frag","meshbasic_vert","meshbasic_frag","meshlambert_vert","meshlambert_frag","meshmatcap_vert","meshmatcap_frag","meshnormal_vert","meshnormal_frag","meshphong_vert","meshphong_frag","meshphysical_vert","meshphysical_frag","meshtoon_vert","meshtoon_frag","points_vert","points_frag","shadow_vert","shadow_frag","sprite_vert","sprite_frag","UniformsLib","diffuse","uvTransform","uv2Transform","specularmap","envmap","flipEnvMap","ior","aomap","lightmap","emissivemap","bumpmap","normalmap","displacementmap","roughnessmap","metalnessmap","gradientmap","fogDensity","fogNear","fogFar","fogColor","ambientLightColor","lightProbe","directionalLights","directionalLightShadows","shadowBias","shadowNormalBias","shadowRadius","shadowMapSize","directionalShadowMap","directionalShadowMatrix","spotLights","coneCos","penumbraCos","decay","spotLightShadows","spotShadowMap","spotShadowMatrix","pointLights","pointLightShadows","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","ltc_1","ltc_2","ShaderLib","basic","lambert","phong","standard","toon","dashed","totalSize","t2D","cube","equirect","distanceRGBA","referencePosition","nearDistance","farDistance","WebGLBackground","cubemaps","objects","planeMesh","boxMesh","clearColor","clearAlpha","currentBackground","currentBackgroundVersion","currentTonemapping","setClear","getClearColor","setClearColor","getClearAlpha","setClearAlpha","renderList","forceClear","session","getSession","environmentBlendMode","autoClear","autoClearColor","autoClearDepth","autoClearStencil","deleteAttribute","onBeforeRender","copyPosition","WebGLBindingStates","maxVertexAttributes","getParameter","extension","vaoAvailable","bindingStates","defaultState","createBindingState","currentState","bindVertexArrayObject","vao","bindVertexArray","bindVertexArrayOES","deleteVertexArrayObject","deleteVertexArray","deleteVertexArrayOES","newAttributes","enabledAttributes","attributeDivisors","program","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","disableUnusedAttributes","disableVertexAttribArray","vertexAttribPointer","vertexAttribIPointer","resetDefaultState","setup","updateBuffers","programMap","stateMap","createVertexArray","createVertexArrayOES","getBindingState","cachedAttributes","geometryAttributes","attributesNum","cachedAttribute","geometryAttribute","saveCache","isInstancedBufferGeometry","programAttributes","materialDefaultAttributeValues","programAttribute","isInstancedInterleavedBuffer","locationSize","_maxInstanceCount","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","setupVertexAttributes","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","WebGLBufferRenderer","setMode","drawArrays","renderInstances","primcount","WebGLCapabilities","maxAnisotropy","getMaxPrecision","getShaderPrecisionFormat","WebGL2RenderingContext","WebGL2ComputeRenderingContext","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","floatVertexTextures","maxSamples","WebGLClipping","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","enableLocalClipping","beginShadows","endShadows","useCache","materialProperties","nGlobal","lGlobal","clippingState","WebGLCubeMaps","mapTextureMapping","onTextureDispose","cubemap","fromEquirectangularTexture","physical","sheenColorMap","sheenRoughnessMap","transmissionSamplerSize","transmissionSamplerMap","OrthographicCamera","_Camera2","_super31","_this22","scaleW","scaleH","makeOrthographic","isOrthographicCamera","EXTRA_LOD_SIGMA","MAX_SAMPLES","_flatCamera","_clearColor","_oldTarget","PHI","INV_PHI","_axisDirections","PMREMGenerator","_renderer","_pingPongRenderTarget","_lodMax","_cubeSize","_lodPlanes","_sizeLods","_sigmas","_blurMaterial","_cubemapMaterial","_equirectMaterial","_compileMaterial","sigma","_setSize","cubeUVRenderTarget","_allocateTargets","_sceneToCubeUV","_blur","_applyPMREM","_cleanup","equirectangular","_fromTexture","_getCubemapMaterial","_getEquirectMaterial","_dispose","cubeSize","log2","outputTarget","_setViewport","_textureToCubeUV","_createRenderTarget","_createPlanes2","lodMax","lodPlanes","sizeLods","sigmas","lod","totalLods","sizeLod","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","coordinates","_createPlanes","weights","poleAxis","shaderMaterial","_getBlurShader","tmpMesh","compile","cubeCamera","upSign","forwardSign","originalAutoClear","backgroundMaterial","backgroundBox","useSolidColor","lodIn","lodOut","pingPongRenderTarget","_halfBlur","targetIn","targetOut","sigmaRadians","blurMaterial","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","weight","outputSize","WebGLCubeUVMaps","cubeUVmaps","pmremGenerator","cubemapUV","isEquirectMap","isCubeMap","fromEquirectangular","fromCubemap","isCubeTextureComplete","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","memory","updateWireframeAttribute","geometryIndex","geometryPosition","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","programs","autoReset","instanceCount","numericalSort","absNumericalSort","morph","WebGLMorphtargets","influencesList","morphTextures","workInfluences","objectInfluences","morphTargetsCount","hasMorphPosition","hasMorphNormals","hasMorphColors","morphNormals","morphColors","vertexDataCount","vertexDataStride","morphTarget","morphNormal","morphColor","disposeTexture","morphInfluencesSum","morphBaseInfluence","getUniforms","influences","MAX_SAFE_INTEGER","WebGLObjects","updateMap","onInstancedMeshDispose","instancedMesh","buffergeometry","hasEventListener","emptyTexture","emptyArrayTexture","empty3dTexture","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","nBlocks","blockSize","firstElem","arraysEqual","copyArray","allocTexUnits","allocateTextureUnit","setValueV1f","uniform1f","addr","setValueV2f","uniform2f","uniform2fv","setValueV3f","uniform3f","uniform3fv","setValueV4f","uniform4f","uniform4fv","setValueM2","uniformMatrix2fv","setValueM3","uniformMatrix3fv","setValueM4","uniformMatrix4fv","setValueV1i","uniform1i","setValueV2i","uniform2iv","setValueV3i","uniform3iv","setValueV4i","uniform4iv","setValueV1ui","uniform1ui","setValueV2ui","uniform2uiv","setValueV3ui","uniform3uiv","setValueV4ui","uniform4uiv","setValueT1","unit","setTexture2D","setValueT3D1","setTexture3D","setValueT6","setTextureCube","setValueT2DArray1","setTexture2DArray","setValueV1fArray","uniform1fv","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV1uiArray","uniform1uiv","setValueV2uiArray","setValueV3uiArray","setValueV4uiArray","setValueT1Array","units","setValueT3DArray","setValueT6Array","setValueT2DArrayArray","SingleUniform","activeInfo","getSingularSetter","PureArrayUniform","getPureArraySetter","StructuredUniform","seq","updateCache","RePathPart","addUniform","uniformObject","parseUniform","pathLength","lastIndex","matchEnd","idIsIndex","subscript","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","createShader","shaderSource","compileShader","setOptional","upload","seqWithValue","programIdCount","getShaderErrors","getShaderParameter","getShaderInfoLog","errorLine","lines2","handleSource","getShaderSource","getTexelEncodingFunction","functionName","getEncodingComponents","getToneMappingFunction","toneMappingName","filterEmptyLine","replaceLightNums","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","numDirLightShadows","numSpotLightShadows","numPointLightShadows","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","includePattern","resolveIncludes","includeReplacer","include","deprecatedUnrollLoopPattern","unrollLoopPattern","unrollLoops","loopReplacer","deprecatedLoopReplacer","snippet","generatePrecision","precisionstring","WebGLProgram","cacheKey","prefixVertex","prefixFragment","shadowMapTypeDefine","shadowMapType","generateShadowMapTypeDefine","envMapTypeDefine","envMapMode","generateEnvMapTypeDefine","envMapModeDefine","generateEnvMapModeDefine","envMapBlendingDefine","generateEnvMapBlendingDefine","envMapCubeUVSize","imageHeight","envMapCubeUVHeight","maxMip","texelHeight","texelWidth","generateCubeUVSize","customExtensions","extensionDerivatives","tangentSpaceNormalMap","shaderID","extensionFragDepth","rendererExtensionFragDepth","extensionDrawBuffers","rendererExtensionDrawBuffers","extensionShaderTextureLOD","rendererExtensionShaderTextureLod","generateExtensions","customDefines","generateDefines","createProgram","versionString","isRawShaderMaterial","shaderName","instancing","instancingColor","supportsVertexTextures","maxBones","useFog","fogExp2","objectSpaceNormalMap","vertexTangents","vertexAlphas","vertexUvs","uvsVertexOnly","skinning","useVertexTexture","morphTextureStride","doubleSided","flipSided","shadowMapEnabled","decodeVideoTexture","physicallyCorrectLights","opaque","depthPacking","cachedUniforms","fragmentGlsl","glVertexShader","glFragmentShader","attachShader","bindAttribLocation","linkProgram","checkShaderErrors","programLog","getProgramInfoLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","getError","diagnostics","deleteShader","getActiveAttrib","getAttribLocation","fetchAttributeLocations","deleteProgram","usedTimes","_id","WebGLShaderCache","shaderCache","materialCache","vertexShaderStage","_getShaderStage","fragmentShaderStage","materialShaders","_getShaderCacheForMaterial","shaderStage","stage","WebGLShaderStage","WebGLPrograms","cubeuvmaps","_programLayers","_customShaders","shaderIDs","MeshDepthMaterial","MeshDistanceMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshMatcapMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","SpriteMaterial","getParameters","shadows","isMeshStandardMaterial","bones","nVertexUniforms","nVertexMatrices","getMaxBones","customVertexShaderID","customFragmentShaderID","getVertexShaderID","getFragmentShaderID","useAlphaTest","useClearcoat","isXRRenderTarget","isVideoTexture","isFogExp2","directional","spot","rectArea","hemi","shadowMap","customProgramCacheKey","getProgramCacheKey","morphAttributeCount","getProgramCacheKeyParameters","enable","getProgramCacheKeyBooleans","acquireProgram","preexistingProgram","releaseProgram","releaseShaderCache","WebGLProperties","painterSortStable","groupOrder","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","transmissive","getNextRenderItem","renderItem","customOpaqueSort","customTransparentSort","WebGLRenderLists","lists","renderCallDepth","UniformsCache","halfWidth","halfHeight","nextVersion","shadowCastingLightsFirst","lightA","lightB","WebGLLights","shadowCache","ShadowUniformsCache","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","ambient","probe","directionalShadow","spotShadow","rectAreaLTC1","rectAreaLTC2","pointShadow","vector3","matrix42","scaleFactor","intensity","isAmbientLight","isLightProbe","coefficients","isDirectionalLight","shadowUniforms","bias","normalBias","mapSize","isSpotLight","penumbra","isRectAreaLight","isPointLight","isHemisphereLight","LTC_FLOAT_1","LTC_FLOAT_2","LTC_HALF_1","LTC_HALF_2","setupView","identity","WebGLRenderState","lightsArray","shadowsArray","setupLights","setupLightsView","pushLight","pushShadow","shadowLight","WebGLRenderStates","renderStates","renderState","_Material3","_super32","_this23","isMeshDepthMaterial","_Material4","_super33","_this24","isMeshDistanceMaterial","vertex","fragment","WebGLShadowMap","_objects","_capabilities","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterial","_distanceMaterial","_materialCache","_maxTextureSize","shadowMaterialVertical","VSM_SAMPLES","shadow_pass","resolution","shadowMaterialHorizontal","HORIZONTAL_PASS","fullScreenTri","fullScreenMesh","VSMPass","blurSamples","mapPass","renderBufferDirect","getDepthMaterial","customMaterial","customDistanceMaterial","customDepthMaterial","keyA","keyB","materialsForVariant","cachedMaterial","renderObject","shadowCamera","intersectsObject","depthMaterial","autoUpdate","activeCubeFace","getActiveCubeFace","activeMipmapLevel","getActiveMipmapLevel","_state","setBlending","setTest","setScissorTest","shadowFrameExtents","getFrameExtents","isPointLightShadow","pars","viewportCount","getViewportCount","vp","getViewport","updateMatrices","getFrustum","WebGLState","_equationToGL","_factorToGL","colorBuffer","locked","currentColorMask","currentColorClear","setMask","colorMask","setLocked","lock","currentDepthMask","currentDepthFunc","currentDepthClear","depthMask","setFunc","clearDepth","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","setOp","stencilOp","clearStencil","enabledCapabilities","currentBoundFramebuffers","currentDrawbuffers","defaultDrawbuffers","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","scissorParam","viewportParam","currentScissor","currentViewport","createTexture","bindTexture","texParameteri","texImage2D","emptyTextures","setFlipSided","setCullFace","equationToGL","MIN_EXT","MAX_EXT","factorToGL","blendEquationSeparate","blendFuncSeparate","blendFunc","frontFace","cullFace","setPolygonOffset","activeTexture","webglSlot","bindFramebuffer","framebuffer","drawBuffersWEBGL","useProgram","setMaterial","frontFaceCW","setLineWidth","lineWidth","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","texImage3D","texStorage2D","texStorage3D","texSubImage2D","texSubImage3D","compressedTexSubImage2D","WebGLTextures","_gl","utils","_wrappingToGL","_filterToGL","multisampledRTTExt","supportsInvalidateFramebuffer","_videoTextures","_sources","useOffscreenCanvas","OffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","isPowerOfTwo$1","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","getInternalFormat","internalFormatName","glFormat","glType","getMipLevels","isFramebufferTexture","isCompressedTexture","filterFallback","textureProperties","__webglInit","webglTextures","__cacheKey","deleteTexture","deallocateTexture","onRenderTargetDispose","renderTargetProperties","__webglTexture","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","attachmentProperties","deallocateRenderTarget","textureUnits","slot","updateVideoTexture","__version","uploadTexture","wrappingToGL","filterToGL","setTextureParameters","textureType","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","initTexture","forceUpload","textureCacheKey","getTextureCacheKey","__currentVersion","pixelStorei","mipmap","textureNeedsPowerOfTwo","verifyColorSpace","glInternalFormat","useTexStorage","allocateMemory","isDepthTexture","setupFrameBufferTexture","attachment","textureTarget","__hasExternalTextures","useMultisampledRTT","framebufferTexture2DMultisampleEXT","getRenderTargetSamples","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","renderbufferStorageMultisampleEXT","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","setupDepthRenderbuffer","isCube","__autoAllocateDepthBuffer","webglDepthTexture","setupDepthTexture","createRenderbuffer","__useRenderToTexture","sRGBToLinear","textureUnit","resetTextureUnits","isCompressed","cubeImage","mipmapImage","uploadCubeTexture","rebindTextures","colorTexture","setupRenderTarget","isMultipleRenderTargets","createFramebuffer","glTextureType","updateRenderTargetMipmap","updateMultisampleRenderTarget","invalidationArray","depthStyle","ignoreDepthValues","__ignoreDepthValues","invalidateFramebuffer","blitFramebuffer","WebGLUtils","HALF_FLOAT_OES","SRGB_ALPHA_EXT","COMPRESSED_SRGB_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_SRGB8_ETC2","COMPRESSED_RGB8_ETC2","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR","COMPRESSED_RGBA_ASTC_4x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR","COMPRESSED_RGBA_ASTC_5x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR","COMPRESSED_RGBA_ASTC_5x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR","COMPRESSED_RGBA_ASTC_6x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR","COMPRESSED_RGBA_ASTC_6x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR","COMPRESSED_RGBA_ASTC_8x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR","COMPRESSED_RGBA_ASTC_8x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR","COMPRESSED_RGBA_ASTC_8x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR","COMPRESSED_RGBA_ASTC_10x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR","COMPRESSED_RGBA_ASTC_10x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR","COMPRESSED_RGBA_ASTC_10x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR","COMPRESSED_RGBA_ASTC_10x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR","COMPRESSED_RGBA_ASTC_12x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR","COMPRESSED_RGBA_ASTC_12x12_KHR","COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT","COMPRESSED_RGBA_BPTC_UNORM_EXT","UNSIGNED_INT_24_8_WEBGL","ArrayCamera","_PerspectiveCamera","_super34","_this25","cameras","isArrayCamera","Group","_Object3D4","_super35","_this26","isGroup","_moveEvent","WebXRController","_targetRay","_grip","_hand","joints","inputState","pinching","hasLinearVelocity","linearVelocity","hasAngularVelocity","angularVelocity","inputSource","referenceSpace","inputPose","gripPose","handPose","targetRay","grip","hand","visibilityState","getPose","targetRaySpace","inputjoint","jointPose","getJointPose","jointName","joint","jointRadius","indexTip","thumbTip","distanceToPinch","handedness","gripSpace","DepthTexture","_Texture4","_super36","_this27","WebXRManager","_EventDispatcher6","_super37","_this28","framebufferScaleFactor","referenceSpaceType","pose","glBinding","glProjLayer","glBaseLayer","xrFrame","getContextAttributes","initialRenderTarget","newRenderTarget","controllers","inputSourcesMap","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","onSessionEvent","controller","onSessionEnd","isPresenting","onInputSourcesChange","inputSources","removed","added","cameraAutoUpdate","getController","getTargetRaySpace","getControllerGrip","getGripSpace","getHand","getHandSpace","setFramebufferScaleFactor","setReferenceSpaceType","getReferenceSpace","getBaseLayer","getBinding","getFrame","setSession","layerInit","depthFormat","depthType","glDepthFormat","projectionlayerInit","_context5","xrCompatible","makeXRCompatible","antialias","XRWebGLLayer","updateRenderState","baseLayer","framebufferWidth","framebufferHeight","colorFormat","XRWebGLBinding","createProjectionLayer","textureWidth","textureHeight","setFoveation","requestReferenceSpace","_x3","cameraLPos","cameraRPos","updateCamera","depthNear","depthFar","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","translateX","translateZ","near2","far2","left2","right2","top2","bottom2","setProjectionFromUnion","getCamera","getFoveation","fixedFoveation","foveation","onAnimationFrameCallback","getViewerPose","views","setRenderTargetFramebuffer","cameraVRNeedsUpdate","glSubImage","getViewSubImage","setRenderTargetTextures","depthStencilTexture","WebGLMaterials","refreshUniformsCommon","uvScaleMap","uv2ScaleMap","refreshFogUniforms","isFog","density","refreshMaterialUniforms","transmissionRenderTarget","isMeshLambertMaterial","isMeshToonMaterial","refreshUniformsToon","isMeshPhongMaterial","refreshUniformsPhong","refreshUniformsStandard","isMeshPhysicalMaterial","refreshUniformsPhysical","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDistance","isMeshNormalMaterial","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","isShadowMaterial","WebGLRenderer","_alpha","createCanvasElement","_depth","_stencil","_antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","currentRenderList","currentRenderState","renderListStack","renderStateStack","sortObjects","toneMappingExposure","_isContextLost","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentMaterialId","_currentCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clippingEnabled","_localClippingEnabled","_transmissionRenderTarget","_projScreenMatrix","_vector3","_emptyScene","overrideMaterial","getTargetPixelRatio","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","isWebGL1Renderer","initGLContext","infoAutoReset","shadowMapAutoUpdate","shadowMapNeedsUpdate","onMaterialDispose","releaseMaterialProgramReferences","deallocateMaterial","forceContextLoss","loseContext","forceContextRestore","restoreContext","getPixelRatio","setPixelRatio","setSize","updateStyle","setViewport","getDrawingBufferSize","setDrawingBufferSize","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","setOpaqueSort","setTransparentSort","onXRSessionStart","onXRSessionEnd","needsProgramChange","needsLights","lightsStateVersion","getProgram","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","cameraPosition","boneTexture","computeBoneTexture","boneTextureSize","uniformsList","setProgram","rangeFactor","dataCount","rangeStart","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","projectObject","isLOD","intersectsSprite","renderScene","opaqueObjects","transmissiveObjects","transparentObjects","renderObjects","renderTransmissionPass","onAfterRender","programCacheKey","updateCommonMaterialProperties","onBuild","materialNeedsLights","progUniforms","setFromProjectionMatrix","camera2","defaultFramebuffer","__useDefaultFramebuffer","useDefaultFramebuffer","isRenderTarget3D","layer","framebufferTextureLayer","readRenderTargetPixels","activeCubeFaceIndex","textureFormat","halfFloatSupportedByExt","readPixels","copyFramebufferToTexture","levelScale","copyTexSubImage2D","copyTextureToTexture","srcTexture","dstTexture","copyTextureToTexture3D","sourceBox","glTarget","unpackRowLen","unpackImageHeight","unpackSkipPixels","unpackSkipRows","unpackSkipImages","compressedTexSubImage3D","__THREE_DEVTOOLS__","isWebGLRenderer","WebGL1Renderer","_WebGLRenderer","_super38","FogExp2","Fog","Scene","_Object3D5","_super39","_this29","InterleavedBuffer","arrayBuffers","_uuid","setUsage","isInterleavedBuffer","_vector$6","InterleavedBufferAttribute","interleavedBuffer","interleavedBuffers","_geometry","_Material5","_super40","_this30","_intersectPoint","_worldScale","_mvPosition","_alignedPosition","_rotatedPosition","_viewWorldMatrix","_vA","_vB","_vC","_uvA","_uvB","_uvC","Sprite","_Object3D6","_super41","_this31","float32Array","setFromMatrixScale","transformVertex","intersect","vertexPosition","mvPosition","_v1$2","_v2$1","LOD","_Object3D7","_super42","_this32","_currentLevel","addLevel","getObjectForDistance","raycast","_basePosition","_skinIndex","_skinWeight","_vector$5","_matrix","SkinnedMesh","_Mesh","_super43","_this33","bindMatrixInverse","calculateInverses","skinWeight","manhattanLength","setXYZW","skinIndex","getComponent","boneIndex","boneInverses","Bone","_Object3D8","_super44","_this34","isBone","DataTexture","_Texture5","_super45","_this35","_offsetMatrix","_identityMatrix","Skeleton","boneMatrices","inverse","bone","json","boneInverse","InstancedBufferAttribute","_BufferAttribute11","_super46","_this36","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_mesh","InstancedMesh","_Mesh2","_super47","_this37","raycastTimes","instanceId","getMatrixAt","_Material6","_super48","_this38","linecap","linejoin","_start$1","_end$1","_inverseMatrix$1","_ray$1","_sphere$1","Line","_Object3D9","_super49","_this39","lineDistances","threshold","localThreshold","localThresholdSq","vStart","vEnd","interSegment","interRay","distanceSqToSegment","_start","_end","LineSegments","_Line","_super50","_this40","LineLoop","_Line2","_super51","_this41","_Material7","_super52","_this42","_inverseMatrix","_ray","_sphere","_position$2","Points","_Object3D10","_super53","_this43","testPoint","rayPointDistanceSq","intersectPoint","closestPointToPoint","distanceToRay","VideoTexture","_Texture6","_super54","_this44","requestVideoFrameCallback","updateVideo","HAVE_CURRENT_DATA","FramebufferTexture","_Texture7","_super55","_this45","CompressedTexture","_Texture8","_super56","_this46","CanvasTexture","_Texture9","_super57","_this47","isCanvasTexture","Curve","arcLengthDivisions","optionalTarget","getUtoTmapping","getPoint","divisions","getPointAt","lengths","getLengths","cacheArcLengths","targetArcLength","arcLengths","comparison","lengthBefore","t2","pt1","pt2","getTangent","closed","binormals","vec","mat","getTangentAt","MAX_VALUE","tz","makeRotationAxis","EllipseCurve","_Curve","_super58","_this48","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","twoPi","deltaAngle","samePoints","isEllipseCurve","ArcCurve","_EllipseCurve","_super59","aRadius","_this49","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","isArcCurve","px","py","pz","CatmullRomCurve3","_Curve2","_super60","_this50","curveType","intPoint","CatmullRom","QuadraticBezier","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","CubicBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","isCatmullRomCurve3","CubicBezierCurve","_Curve3","_super61","_this51","v3","isCubicBezierCurve","CubicBezierCurve3","_Curve4","_super62","_this52","isCubicBezierCurve3","LineCurve","_Curve5","_super63","_this53","isLineCurve","LineCurve3","_Curve6","_super64","_this54","isLineCurve3","QuadraticBezierCurve","_Curve7","_super65","_this55","isQuadraticBezierCurve","QuadraticBezierCurve3","_Curve8","_super66","_this56","isQuadraticBezierCurve3","SplineCurve","_Curve9","_super67","_this57","isSplineCurve","Curves","CurvePath","_Curve10","_super68","_this58","curves","autoClose","curve","startPoint","endPoint","getLength","curveLengths","getCurveLengths","diff","segmentLength","lens","cacheLengths","sums","pts","getPoints","fromJSON","Path","_CurvePath","_super69","_this59","currentPoint","moveTo","lineTo","aCPx","aCPy","aCP1x","aCP1y","aCP2x","aCP2y","npts","absarc","absellipse","firstPoint","lastPoint","LatheGeometry","_BufferGeometry3","_super70","_this60","phiStart","phiLength","initNormals","inverseSegments","curNormal","prevNormal","CapsuleGeometry","_LatheGeometry","_super71","_this61","capSegments","radialSegments","CircleGeometry","_BufferGeometry4","_super72","_this62","thetaStart","thetaLength","CylinderGeometry","_BufferGeometry5","_super73","_this63","radiusTop","radiusBottom","openEnded","indexArray","generateCap","centerIndexStart","centerIndexEnd","cosTheta","sinTheta","slope","indexRow","generateTorso","ConeGeometry","_CylinderGeometry","_super74","_this64","PolyhedronGeometry","_BufferGeometry6","_super75","_this65","vertexBuffer","uvBuffer","subdivideFace","cols","rows","pushVertex","getVertexByIndex","correctUV","azimuth","subdivide","applyRadius","centroid","azi","correctUVs","correctSeam","generateUVs","computeVertexNormals","details","DodecahedronGeometry","_PolyhedronGeometry","_super76","_this66","_v0","_v1$1","_normal","_triangle","EdgesGeometry","_BufferGeometry7","_super77","_this67","thresholdAngle","thresholdDot","indexAttr","positionAttr","indexCount","indexArr","vertKeys","hashes","edgeData","jNext","vecHash0","vecHash1","reverseHash","index0","_edgeData$key","Shape","_Path","_super78","_this68","holes","holesPts","getPointsHoles","hole","Earcut","holeIndices","invSize","dim","hasHoles","outerLen","outerNode","linkedList","steiner","getLeftmost","compareX","eliminateHole","filterPoints","eliminateHoles","earcutLinked","clockwise","signedArea","insertNode","removeNode","again","ear","pass","zOrder","prevZ","nextZ","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","locallyInside","isValidDiagonal","splitPolygon","hx","hy","mx","my","tanMin","sectorContainsSector","findHoleBridge","leftmost","intersectsPolygon","middleInside","q1","q2","o1","o2","o3","o4","onSegment","num","Node","an","bp","ShapeUtils","contour","faces","removeDupEndPts","addContour","holeIndex","ExtrudeGeometry","_BufferGeometry8","_super79","_this69","verticesArray","uvArray","addShape","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","extrudePts","splineTube","binormal","position2","extrudeByPath","getSpacedPoints","computeFrenetFrames","shapePoints","extractPoints","isClockWise","ahole","triangulateShape","scalePt2","pt","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","v_trans_lensq","direction_eq","contourMovements","oneHoleMovements","holesMovements","verticesMovements","bs","sidewalls","layeroffset","slen1","slen2","f4","f3","addVertex","generateTopUV","addUV","generateSideWallUV","vector2","buildLidFaces","buildSideFaces","toJSON$1","geometryShapes","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","IcosahedronGeometry","_PolyhedronGeometry2","_super80","_this70","OctahedronGeometry","_PolyhedronGeometry3","_super81","_this71","RingGeometry","_BufferGeometry9","_super82","_this72","innerRadius","outerRadius","thetaSegments","phiSegments","radiusStep","thetaSegmentLevel","ShapeGeometry","_BufferGeometry10","_super83","_this73","indexOffset","shapeVertices","shapeHoles","shapeHole","SphereGeometry","_BufferGeometry11","_super84","_this74","thetaEnd","verticesRow","uOffset","TetrahedronGeometry","_PolyhedronGeometry4","_super85","_this75","TorusGeometry","_BufferGeometry12","_super86","_this76","tube","tubularSegments","arc","TorusKnotGeometry","_BufferGeometry13","_super87","_this77","P1","P2","calculatePositionOnCurve","cu","su","quOverP","cs","TubeGeometry","_BufferGeometry14","_super88","_this78","frames","generateSegment","generateIndices","generateBufferData","WireframeGeometry","_BufferGeometry15","_super89","_this79","edges","isUniqueEdge","hash1","hash2","Geometries","BoxBufferGeometry","CapsuleBufferGeometry","CircleBufferGeometry","ConeBufferGeometry","CylinderBufferGeometry","DodecahedronBufferGeometry","ExtrudeBufferGeometry","IcosahedronBufferGeometry","LatheBufferGeometry","OctahedronBufferGeometry","PlaneBufferGeometry","PolyhedronBufferGeometry","RingBufferGeometry","ShapeBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","TorusBufferGeometry","TorusKnotBufferGeometry","TubeBufferGeometry","_Material8","_super90","_this80","RawShaderMaterial","_ShaderMaterial","_super91","_this81","_Material9","_super92","_this82","_MeshStandardMaterial","_super93","_this83","_sheen","_clearcoat","_transmission","_Material10","_super94","_this84","_Material11","_super95","_this85","_Material12","_super96","_this86","_Material13","_super97","_this87","_Material14","_super98","_this88","_LineBasicMaterial","_super99","_this89","materialLib","AnimationUtils","arraySlice","isTypedArray","convertArray","forceClone","DataView","getKeyframeOrder","times","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","subclip","sourceClip","startFrame","endFrame","fps","clip","valueSize","getValueSize","minStartTime","resetDuration","makeClipAdditive","targetClip","referenceFrame","referenceClip","numTracks","referenceTime","referenceTrack","referenceTrackType","ValueTypeName","targetTrack","referenceOffset","referenceValueSize","createInterpolant","isInterpolantFactoryMethodGLTFCubicSpline","targetOffset","targetValueSize","referenceValue","interpolant","evaluate","resultBuffer","numTimes","valueStart","multiplyQuaternionsFlat","valueEnd","blendMode","Interpolant","parameterPositions","sampleValues","sampleSize","_cachedIndex","settings","DefaultSettings_","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","afterEnd_","t1global","beforeStart_","mid","intervalChanged_","interpolate_","copySampleValue_","CubicInterpolant","_Interpolant","_super100","_this90","_weightPrev","_offsetPrev","_weightNext","_offsetNext","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","getSettings_","halfDt","o0","oP","oN","wP","wN","ppp","sP","sN","LinearInterpolant","_Interpolant2","_super101","offset1","offset0","weight1","weight0","DiscreteInterpolant","_Interpolant3","_super102","KeyframeTrack","interpolation","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","factoryMethod","InterpolantFactoryMethodDiscrete","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","timeOffset","timeScale","endTime","nKeys","valid","prevTime","currTime","smoothInterpolation","getInterpolation","writeIndex","keep","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","trackType","BooleanKeyframeTrack","_KeyframeTrack","_super103","ColorKeyframeTrack","_KeyframeTrack2","_super104","NumberKeyframeTrack","_KeyframeTrack3","_super105","QuaternionLinearInterpolant","_Interpolant4","_super106","slerpFlat","QuaternionKeyframeTrack","_KeyframeTrack4","_super107","StringKeyframeTrack","_KeyframeTrack5","_super108","VectorKeyframeTrack","_KeyframeTrack6","_super109","AnimationClip","validate","optimize","jsonTracks","frameTime","parseKeyframeTrack","clipTracks","morphTargetSequence","noLoop","numMorphTargets","objectOrClipArray","clipArray","animationToMorphTargets","animationMorphTargets","clips","CreateFromMorphTargetSequence","addNonemptyTrack","trackName","animationKeys","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","typeName","getTrackTypeForValueTypeName","Cache","files","LoadingManager","itemsLoaded","itemsTotal","urlModifier","handlers","itemStart","itemEnd","itemError","resolveURL","setURLModifier","addHandler","removeHandler","getHandler","DefaultLoadingManager","Loader","manager","withCredentials","resourcePath","requestHeader","loading","FileLoader","_Loader","_super110","_this91","req","Request","headers","Headers","credentials","mimeType","responseType","fetch","response","ReadableStream","getReader","callbacks","reader","contentLength","lengthComputable","stream","readData","read","byteLength","ProgressEvent","enqueue","Response","arrayBuffer","blob","DOMParser","parseFromString","decoder","TextDecoder","decode","finally","AnimationLoader","_Loader2","_super111","setPath","setRequestHeader","setWithCredentials","CompressedTextureLoader","_Loader3","_super112","setResponseType","loadTexture","texDatas","mipmapCount","isCubemap","ImageLoader","_Loader4","_super113","onImageLoad","removeEventListeners","onImageError","CubeTextureLoader","_Loader5","_super114","urls","setCrossOrigin","DataTextureLoader","_Loader6","_super115","texData","TextureLoader","_Loader7","_super116","Light","_Object3D11","_super117","_this92","HemisphereLight","_Light","_super118","_this93","_projScreenMatrix$1","_lightPositionWorld$1","_lookTarget$1","LightShadow","_frameExtents","_viewportCount","_viewports","shadowMatrix","viewportIndex","SpotLightShadow","_LightShadow","_super119","_this94","isSpotLightShadow","SpotLight","_Light2","_super120","_this95","power","_lightPositionWorld","_lookTarget","PointLightShadow","_LightShadow2","_super121","_this96","_cubeDirections","_cubeUps","PointLight","_Light3","_super122","_this97","DirectionalLightShadow","_LightShadow3","_super123","isDirectionalLightShadow","DirectionalLight","_Light4","_super124","_this98","AmbientLight","_Light5","_super125","_this99","RectAreaLight","_Light6","_super126","_this100","SphericalHarmonics3","coeff","shBasis","isSphericalHarmonics3","LightProbe","_Light7","_super127","_this101","MaterialLoader","_Loader8","_super128","_this102","getTexture","shading","LoaderUtils","InstancedBufferGeometry","_BufferGeometry16","_super129","_this103","BufferGeometryLoader","_Loader9","_super130","interleavedBufferMap","arrayBufferMap","getInterleavedBuffer","getArrayBuffer","typedArray","bufferAttribute","drawcalls","offsets","ObjectLoader","_Loader10","_super131","extractUrlBase","_loadAsync","_callee2","_context6","loadAsync","parseAsync","_x7","_x8","parseAnimations","parseShapes","parseGeometries","parseImages","parseTextures","parseMaterials","parseObject","parseSkeletons","bindSkeletons","hasImages","_parseAsync","_callee3","_context7","parseImagesAsync","_x9","bufferGeometryLoader","setTextures","deserializeImage","loadImage","imageArray","deserializedImage","_parseImagesAsync","_callee5","_deserializeImage","_i299","_deserializedImage2","_context9","_callee4","_url","_context8","_x11","_x10","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","isInteger","objectAnimations","setResourcePath","ImageBitmapLoader","_Loader11","_super132","_this104","createImageBitmap","fetchOptions","colorSpaceConversion","imageBitmap","isImageBitmapLoader","AudioContext","webkitAudioContext","AudioLoader","_Loader12","_super133","bufferCopy","decodeAudioData","audioBuffer","HemisphereLightProbe","_LightProbe","_super134","_this105","sky","ground","isHemisphereLightProbe","AmbientLightProbe","_LightProbe2","_super135","_this106","isAmbientLightProbe","_eyeRight","_eyeLeft","_projectionMatrix","StereoCamera","eyeSep","xmin","xmax","eyeSepHalf","eyeSepOnProjection","ymax","Clock","autoStart","oldTime","running","getElapsedTime","getDelta","newTime","_position$1","_quaternion$1","_scale$1","_orientation$1","AudioListener","_Object3D12","_super136","_this107","gain","createGain","connect","timeDelta","_clock","setTargetAtTime","positionX","linearRampToValueAtTime","positionY","positionZ","forwardX","forwardY","forwardZ","upX","upY","upZ","setPosition","setOrientation","Audio","_Object3D13","_super137","_this108","getInput","autoplay","detune","loopStart","loopEnd","hasPlaybackControl","sourceType","_startedAt","_progress","_connected","filters","audioNode","mediaElement","createMediaElementSource","mediaStream","createMediaStreamSource","createBufferSource","onended","setDetune","getOutput","getFilters","setFilters","_position","_quaternion","_scale","_orientation","PositionalAudio","_Audio","_super138","_this109","panner","createPanner","panningModel","refDistance","rolloffFactor","distanceModel","maxDistance","coneInnerAngle","coneOuterAngle","coneOuterGain","orientationX","orientationY","orientationZ","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","getByteFrequencyData","getFrequencyData","PropertyMixer","binding","mixFunction","mixFunctionAdditive","setIdentity","_slerp","_slerpAdditive","_setAdditiveIdentityQuaternion","_workIndex","_select","_setAdditiveIdentityOther","_lerp","_lerpAdditive","_setAdditiveIdentityNumeric","_mixBufferRegion","_mixBufferRegionAdditive","_setIdentity","_origIndex","_addIndex","cumulativeWeight","cumulativeWeightAdditive","useCount","referenceCount","accuIndex","currentWeight","mix","weightAdditive","originalValueOffset","targetIndex","workOffset","_RESERVED_CHARS_RE","_reservedRe","_wordChar","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","Composite","targetGroup","optionalParsedPath","PropertyBinding","parseTrackName","_targetGroup","_bindings","subscribe_","firstValidIndex","nCachedObjects_","bindings","unbind","findNode","_getValue_unbound","_setValue_unbound","targetObject","resolvedProperty","propertyIndex","sourceArray","objectName","_getValue_unavailable","_setValue_unavailable","objectIndex","nodeProperty","versioning","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","bindingType","BindingType","Direct","ArrayElement","HasFromToArray","EntireArray","GetterByBindingType","SetterByBindingTypeAndVersioning","isAnimationObjectGroup","results","lastDot","getBoneByName","subTreeNode","searchNodeSubtree","childNode","_getValue_direct","_getValue_array","_getValue_arrayElement","_getValue_toArray","_setValue_direct","_setValue_direct_setNeedsUpdate","_setValue_direct_setMatrixWorldNeedsUpdate","_setValue_array","_setValue_array_setNeedsUpdate","_setValue_array_setMatrixWorldNeedsUpdate","_setValue_arrayElement","_setValue_arrayElement_setNeedsUpdate","_setValue_arrayElement_setMatrixWorldNeedsUpdate","_setValue_fromArray","_setValue_fromArray_setNeedsUpdate","_setValue_fromArray_setMatrixWorldNeedsUpdate","AnimationObjectGroup","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","inUse","bindingsPerObject","indicesByUUID","parsedPaths","nBindings","knownObject","nObjects","nCachedObjects","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","lastObject","indicesByPath","lastBindingsIndex","lastBindings","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_startTime","_effectiveTimeScale","_effectiveWeight","repetitions","paused","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","_activateAction","_deactivateAction","stopFading","stopWarping","_isActiveAction","_scheduleFading","fadeOutAction","warp","fadeOut","fadeIn","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","fadeInAction","crossFadeFrom","weightInterpolant","_takeBackControlInterpolant","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","deltaTime","timeDirection","timeRunning","_updateTimeScale","clipTime","_updateTime","_updateWeight","propertyMixers","accumulateAdditive","accumulate","interpolantValue","loopCount","pingPong","_setEndings","handle_stop","loopDelta","atStart","atEnd","weightNow","weightThen","AnimationMixer","_EventDispatcher7","_super139","_this110","_initMemoryManager","_accuIndex","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","clipUuid","actionsForClip","_actionsByClip","_bindAction","knownActions","_addInactiveAction","_lendBinding","saveOriginalState","_lendAction","restoreOriginalState","_takeBackBinding","_takeBackAction","_actions","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","actions","controlInterpolants","actionsByClip","actionByRoot","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","optionalRoot","clipObject","findByName","existingAction","newAction","nActions","_update","timeInSeconds","actionsToRemove","_removeInactiveAction","Uniform","InstancedInterleavedBuffer","_InterleavedBuffer","_super140","_this111","GLBufferAttribute","Raycaster","coords","unproject","intersectObject","ascSort","Spherical","other","EPS","setFromCartesianCoords","Cylindrical","_vector$4","Box2","isBox2","_startP","_startEnd","Line3","clampToLine","startEnd2","closestPointToPointParameter","_vector$3","SpotLightHelper","_Object3D14","_super141","_this112","cone","coneLength","coneWidth","_vector$2","_boneMatrix","_matrixWorldInv","SkeletonHelper","_LineSegments","_super142","_this113","getBoneList","isSkeletonHelper","boneList","PointLightHelper","_Mesh3","_super143","sphereSize","_this114","_vector$1","_color1","_color2","HemisphereLightHelper","_Object3D15","_super144","_this115","rotateY","GridHelper","_LineSegments2","_super145","_this116","PolarGridHelper","_LineSegments3","_super146","_this117","radials","circles","_v1","_v2","_v3","DirectionalLightHelper","_Object3D16","_super147","_this118","lightPlane","targetLine","_vector","_camera","CameraHelper","_LineSegments4","_super148","_this119","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","setPoint","_lineGeometry","_coneGeometry","_box","BoxHelper","_LineSegments5","_super149","_this120","setFromObject","Box3Helper","_LineSegments6","_super150","_this121","PlaneHelper","_Line3","_super151","_this122","_axis","ArrowHelper","_Object3D17","_super152","_this123","headLength","headWidth","setDirection","setLength","AxesHelper","_LineSegments7","_super153","_this124","xAxisColor","yAxisColor","zAxisColor","ShapePath","subPaths","currentPath","quadraticCurveTo","bezierCurveTo","splineThru","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","solid","holesFirst","tmpPoints","tmpHoles","betterShapeHoles","newShapes","newShapeHoles","mainIdx","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","DataUtils","_floatView","_uint32View","_baseTable","_shiftTable","_mantissaTable","_offsetTable","_exponentTable","_buffer","LineStrip","LinePieces","NoColors","FaceColors","VertexColors","MeshFaceMaterial","MultiMaterial","isMultiMaterial","PointCloud","_Points","_super154","Particle","_Sprite","_super155","ParticleSystem","_Points2","_super156","PointCloudMaterial","_PointsMaterial","_super157","ParticleBasicMaterial","_PointsMaterial2","_super158","ParticleSystemMaterial","_PointsMaterial3","_super159","Vertex","_Vector","_super160","DynamicBufferAttribute","_BufferAttribute12","_super161","_this125","Int8Attribute","_Int8BufferAttribute","_super162","Uint8Attribute","_Uint8BufferAttribute","_super163","Uint8ClampedAttribute","_Uint8ClampedBufferAt","_super164","Int16Attribute","_Int16BufferAttribute","_super165","Uint16Attribute","_Uint16BufferAttribut","_super166","Int32Attribute","_Int32BufferAttribute","_super167","Uint32Attribute","_Uint32BufferAttribut","_super168","Float32Attribute","_Float32BufferAttribu","_super169","Float64Attribute","_Float64BufferAttribu","_super170","fromPoints","AxisHelper","_AxesHelper","_super171","BoundingBoxHelper","_BoxHelper","_super172","EdgesHelper","_LineSegments8","_super173","setColors","WireframeHelper","_LineSegments9","_super174","Handlers","XHRLoader","_FileLoader","_super175","BinaryTextureLoader","_DataTextureLoader","_super176","empty","isIntersectionBox","isIntersectionSphere","toVector3","setFromMatrix","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBufferAttribute","applyToVector3Array","getInverse","extractPosition","setRotationFromQuaternion","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateX","rotateZ","rotateByAxis","makeFrustum","isIntersectionLine","intersectsLine","isIntersectionPlane","getArea","barycoordFromPoint","midpoint","getMidpoint","prototypenormal","getPlane","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","manhattanDistanceTo","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","getChildByName","getObjectByName","renderDepth","getWorldRotation","applyMatrix","eulerOrder","useQuaternion","setDrawMode","drawMode","initBones","setLens","setFocalLength","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","dynamic","setDynamic","copyIndicesArray","setArray","addIndex","addAttribute","addDrawCall","clearDrawCalls","clearGroups","computeOffsets","getArrays","addShapeList","wrapAround","overdraw","wrapRGB","clearTarget","animate","getCurrentRenderTarget","getPrecision","resetGLState","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","initMaterial","addPrePlugin","addPostPlugin","updateShadowMap","setFaceCulling","allocTextureUnit","setTexture","getActiveMipMapLevel","shadowMapCullFace","vr","gammaInput","gammaOutput","toneMappingWhitePoint","gammaFactor","renderReverseSided","renderSingleSided","WebGLRenderTargetCube","_WebGLCubeRenderTarge","_super177","CanvasRenderer","JSONLoader","setBuffer","updateCubeMap","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","SceneUtils","createMultiMaterialObject","detach","attach","LensFlare","ParametricGeometry","_BufferGeometry17","_super178","TextGeometry","_BufferGeometry18","_super179","FontLoader","Font","ImmediateRenderObject","WebGLMultisampleRenderTarget","_WebGLRenderTarget5","_super180","_this126","DataTexture2DArray","_DataArrayTexture","_super181","DataTexture3D","_Data3DTexture","_super182","revision","__THREE__","createStore","createState","partial","previousState","equalityFn","currentSlice","listenerToAdd","nextSlice","previousSlice","subscribeWithSelector","useStore","newStateSlice","stateRef","selectorRef","equalityFnRef","erroredRef","currentSliceRef","hasNewStateSlice","stateBeforeSubscriptionRef","nextStateSlice","unsubscribe","sliceToReturn","globalCache","shallowEqualArrays","arrA","arrB","_globalCache","lifespan","_window$document","_window$navigator","catalogue","hasColorSpace","getColorManagement","_ColorManagement","product","useMutableCallback","Block","DEFAULT","DEFAULTS","isDiffSet","memoized","changes","calculateDpr","dpr","_window$devicePixelRa","getRootState","_r3f","__r3f","findInitialRoot","previousRoot","fun","boo","und","equ","_ref7$arrays","_ref7$objects","_ref7$strict","strict","isObj","isArr","buildGraph","prepare","previousAttach","eventCount","INDEX_REGEX","_resolve","_resolve2","_child$__r3f","_child$__r3f2","_resolve3","previous","diffProps","_excluded4","_excluded5","localState","previousKeys","_instance$__r3f","primitive","__DEV__","applyProps$1","_instance$__r3f2","rootState","prevHandlers","_changes$_i","isEvent","currentInstance","targetProp","_keys$reverse2","THREE","_targetProp","setScalar","linear","convertSRGBToLinear","outputColorSpace","invalidateInstance","interaction","updateInstance","_instance$__r3f3","_instance$__r3f3$root","invalidate","manual","makeId","eventObject","releaseInternalPointerCapture","capturedMap","captures","captureData","releasePointerCapture","createEvents","filterPointerEvents","cancelPointer","intersections","hovered","hoveredObj","hit","onPointerOut","onPointerLeave","pointerMissed","onPointerMissed","handlePointer","_store$getState5","lastEvent","isPointerMove","isClickEvent","hits","duplicates","eventsObjects","compute","flatMap","_state$previousRoot","aState","bState","_r3f2","initialClick","calculateDistance","initialHits","stopped","pointer","unprojectedPoint","hasPointerCapture","_internal$capturedMap","_internal$capturedMap2","setPointerCapture","extractEventProps","raycastEvent","capturesForPointer","higher","handleIntersects","onPointerOver","onPointerEnter","hoveredItem","onPointerMove","handler","isRenderer","advance","defaultTarget","tempTarget","getWorldPosition","performanceTimeout","setPerformanceCurrent","connected","runGlobalEffects","legacy","flat","clock","mouse","frameloop","regress","initialDpr","setEvents","setDpr","resolved","setFrameloop","active","oldDpr","oldCamera","_rootState$getState","_size$updateStyle","subscription","globalEffects","globalAfterEffects","globalTailEffects","run","flushGlobalEffects","render$1","useThree","memoizedLoaders","loadingFn","Proto","useLoader","suspend","roots","_createLoop","useFrameInProgress","_state$gl$xr","_state$gl$xr2","createLoop","_createRenderer","_roots","_getEventPriority","_ref$args","parentInstance","_parentInstance$__r3f","beforeChild","_parentInstance$__r3f2","restSiblings","removeRecursive","_parentInstance$__r3f3","_child$__r3f3","_child$__r3f5","_child$__r3f4","_store$getState","removeInteractivity","_child$__r3f6","isPrimitive","shouldDispose","IS_REACT_ACT_ENVIRONMENT","handleTextInstance","reconciler","Reconciler","parentHostContext","_type","oldProps","_newProps$args","argsNew","restNew","_oldProps$args","argsOld","restOld","_oldProps","fiber","reconstruct","newInstance","autoRemovedBeforeAppend","switchInstance","_int","_instance$__r3f4","_instance$__r3f5","_instance$__r3f6","beforeActiveInstanceBlur","afterActiveInstanceBlur","applyProps","createRenderer","_globalScope$event","globalScope","shallowLoose","createRendererInstance","customRenderer","prevRoot","prevFiber","prevStore","onCreated","logRecoverableError","lastCamera","configured","configure","glConfig","propsSize","sceneOptions","onCreatedCallback","_props$shadows","_props$linear","_props$flat","_props$legacy","_props$orthographic","orthographic","_props$frameloop","_props$dpr","raycastOptions","cameraOptions","_excluded6","_gl$xr","handleXRFrame","handleSessionChange","oldEnabled","oldType","_types$shadows","types","soft","variance","defaultStyle","_defaultSize$updateSt","_canvas$parentElement","computeInitialSize","rootElement","_state$gl","_state$gl$renderLists","_state$gl2","_state$gl3","DOM_EVENTS","onContextMenu","onDoubleClick","onWheel","onPointerDown","onPointerUp","onPointerCancel","onLostPointerCapture","createPointerEvents","setFromCamera","_internal$lastEvent","_store$getState6","_events$handlers","_store$getState7","_DOM_EVENTS$name","_events$handlers2","_store$getState8","traverseFiber","ascending","wrapContext","_currentRenderer","_currentRenderer2","FiberContext","FiberProvider","useFiber","maybeFiber","useContextBridge","contextMap","useContextMap","Prev","__spreadProps","useMeasure","scroll","offsetSize","ResizeObserver","bounds","scrollContainers","resizeObserver","lastBounds","orientationHandler","scrollDebounce","resizeDebounce","resize","_useMemo2","_state$current$elemen","areBoundsEqual","createDebounce","forceRefresh","resizeChange","scrollChange","orientation","scrollContainer","onScroll","findScrollContainers","_window$getComputedSt","overflowX","overflowY","CanvasImpl","_ref2$events","eventSource","eventPrefix","Bridge","_useMeasure2","containerRef","containerRect","canvasRef","divRef","handlePointerMissed","setBlock","_React$useState4","setError","pointerEvents","Canvas","moduloWrapAround","capacity","OrbitControls","UP","BOTTOM","ONE","TWO","target0","position0","zoom0","getPolarAngle","spherical","getAzimuthalAngle","setPolarAngle","currentPhi","phiDist","sphericalDelta","setAzimuthalAngle","currentTheta","thetaDist","getDistance","listenToKeyEvents","_domElementKeyEvents","saveState","changeEvent","NONE","quat","setFromUnitVectors","quatInverse","lastPosition","lastQuaternion","twoPI","setFromVector3","autoRotate","rotateLeft","autoRotateSpeed","enableDamping","dampingFactor","minAzimuthAngle","maxAzimuthAngle","minPolarAngle","maxPolarAngle","makeSafe","minDistance","panOffset","setFromSpherical","zoomChanged","onMouseWheel","_scope$domElement","_scope$domElement2","_scope$domElement3","_scope$domElement4","_scope$domElement5","_scope$domElement6","startEvent","endEvent","TOUCH_ROTATE","TOUCH_PAN","TOUCH_DOLLY_PAN","TOUCH_DOLLY_ROTATE","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","pointers","pointerPositions","getZoomScale","zoomSpeed","reverseOrbit","rotateUp","panLeft","objectMatrix","panUp","screenSpacePanning","pan","targetDistance","clientWidth","enablePan","dollyOut","dollyScale","minZoom","maxZoom","enableZoom","dollyIn","handleMouseDownRotate","handleMouseDownPan","handleTouchStartRotate","handleTouchStartPan","handleTouchStartDolly","handleTouchMoveRotate","getSecondPointerPosition","rotateSpeed","handleTouchMovePan","panSpeed","handleTouchMoveDolly","_scope$domElement7","_scope$domElement8","addPointer","trackPointer","enableRotate","onTouchStart","mouseAction","mouseButtons","handleMouseDownDolly","handleTouchMoveDollyPan","handleTouchMoveDollyRotate","onTouchMove","handleMouseMoveRotate","handleMouseMoveDolly","handleMouseMovePan","onMouseMove","_scope$domElement9","_scope$domElement10","_scope$domElement11","removePointer","handleMouseWheel","keyPanSpeed","makeDefault","_ref$enableDamping","onEnd","restProps","defaultCamera","explCamera","explDomElement","OrbitControls$1","renderPriority","useFrame","old","GLTFLoader","dracoLoader","ktx2Loader","meshoptDecoder","pluginCallbacks","GLTFMaterialsClearcoatExtension","GLTFTextureBasisUExtension","GLTFTextureWebPExtension","GLTFMaterialsSheenExtension","GLTFMaterialsTransmissionExtension","GLTFMaterialsVolumeExtension","GLTFMaterialsIorExtension","GLTFMaterialsSpecularExtension","GLTFLightsExtension","GLTFMeshoptCompression","_onError","gltf","decodeText","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","KHR_BINARY_GLTF","GLTFBinaryExtension","asset","GLTFParser","fileLoader","extensionsUsed","extensionName","extensionsRequired","KHR_MATERIALS_UNLIT","GLTFMaterialsUnlitExtension","KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS","GLTFMaterialsPbrSpecularGlossinessExtension","KHR_DRACO_MESH_COMPRESSION","GLTFDracoMeshCompressionExtension","KHR_TEXTURE_TRANSFORM","GLTFTextureTransformExtension","KHR_MESH_QUANTIZATION","GLTFMeshQuantizationExtension","setExtensions","GLTFRegistry","removeAll","KHR_LIGHTS_PUNCTUAL","KHR_MATERIALS_CLEARCOAT","KHR_MATERIALS_IOR","KHR_MATERIALS_SHEEN","KHR_MATERIALS_SPECULAR","KHR_MATERIALS_TRANSMISSION","KHR_MATERIALS_VOLUME","KHR_TEXTURE_BASISU","EXT_TEXTURE_WEBP","EXT_MESHOPT_COMPRESSION","uses","nodeDefs","nodeIndex","nodeLength","nodeDef","_addNodeRef","lightIndex","dependency","lightNode","lightDef","innerConeAngle","outerConeAngle","createUniqueName","_loadLight","_getNodeRef","materialParams","materialDef","metallicRoughness","pbrMetallicRoughness","baseColorFactor","baseColorTexture","assignTexture","clearcoatFactor","clearcoatTexture","clearcoatRoughnessFactor","clearcoatRoughnessTexture","clearcoatNormalTexture","sheenColorFactor","sheenRoughnessFactor","sheenColorTexture","sheenRoughnessTexture","transmissionFactor","transmissionTexture","thicknessFactor","thicknessTexture","colorArray","specularFactor","specularTexture","specularColorFactor","specularColorTexture","textureIndex","textureDef","loadTextureImage","isSupported","textureLoader","uri","detectSupport","Image","bufferView","bufferViews","extensionDef","getDependency","supported","ready","byteOffset","byteStride","decodeGltfBuffer","BINARY_EXTENSION_CHUNK_TYPES","headerView","header","magic","getUint32","chunkContentsLength","chunkView","chunkIndex","chunkLength","chunkType","contentArray","bufferViewIndex","gltfAttributeMap","threeAttributeMap","attributeNormalizedMap","attributeTypeMap","threeAttributeName","ATTRIBUTES","accessorDef","accessors","componentType","WEBGL_COMPONENT_TYPES","decodeDracoFile","texCoord","GLTFMeshStandardSGMaterial","isGLTFSpecularGlossinessMaterial","specularMapParsFragmentChunk","glossinessMapParsFragmentChunk","specularMapFragmentChunk","glossinessMapFragmentChunk","lightPhysicalFragmentChunk","glossiness","glossinessMap","_extraUniforms","uniformName","USE_SPECULARMAP","USE_GLOSSINESSMAP","USE_UV","specularGlossinessParams","pbrSpecularGlossiness","diffuseFactor","diffuseTexture","glossinessFactor","specularGlossinessTexture","specGlossMapDef","GLTFCubicSplineInterpolant","stride2","stride3","m0","_q","GLTFCubicSplineQuaternionInterpolant","_GLTFCubicSplineInter","WEBGL_CONSTANTS","WEBGL_FILTERS","WEBGL_WRAPPINGS","WEBGL_TYPE_SIZES","POSITION","NORMAL","TANGENT","TEXCOORD_0","TEXCOORD_1","COLOR_0","WEIGHTS_0","JOINTS_0","PATH_PROPERTIES","translation","INTERPOLATION","CUBICSPLINE","LINEAR","STEP","ALPHA_MODES","createDefaultMaterial","addUnknownExtensionsToUserData","knownExtensions","objectDef","gltfExtensions","assignExtrasToUserData","gltfDef","extras","meshDef","targetNames","createPrimitiveKey","primitiveDef","dracoExtension","createAttributesKey","attributesKey","getNormalizedComponentScale","associations","primitiveCache","meshCache","cameraCache","lightCache","sourceCache","textureCache","nodeNamesUsed","_invokeAll","ext","_markDefs","beforeRoot","getDependencies","scenes","afterRoot","skinDefs","skins","meshDefs","meshes","skinLength","skin","updateMappings","original","mappings","_step$value","loadScene","loadNode","_invokeOne","loadMesh","loadAccessor","loadBufferView","loadBuffer","loadMaterial","loadSkin","loadAnimation","loadCamera","defs","bufferIndex","bufferDef","bufferViewDef","accessorIndex","sparse","pendingBufferViews","TypedArray","elementBytes","itemBytes","ibSlice","ibCacheKey","itemSizeIndices","SCALAR","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","setX","setY","setZ","setW","sourceIndex","sourceDef","sampler","loadImageSource","samplers","webkitURL","sourceURI","isObjectURL","Blob","revokeObjectURL","mapName","mapDef","gltfReference","extendTexture","useDerivativeTangents","useVertexColors","useFlatShading","pointsMaterial","lineMaterial","materialType","materialExtensions","sgExtension","getMaterialType","extendParams","kmuExtension","metallicFactor","roughnessFactor","metallicRoughnessTexture","extendMaterialParams","alphaMode","alphaCutoff","normalTexture","occlusionTexture","strength","emissiveFactor","emissiveTexture","createMaterial","originalName","sanitizedName","sanitizeNodeName","primitives","createDracoPrimitive","decodePrimitive","addPrimitiveAttributes","geometryPromise","meshIndex","loadGeometries","normalizeSkinWeights","toTrianglesDrawMode","assignFinalMaterial","cameraIndex","cameraDef","yfov","znear","zfar","xmag","ymag","skinDef","skinEntry","inverseBindMatrices","accessor","animationIndex","animationDef","pendingNodes","pendingInputAccessors","pendingOutputAccessors","pendingSamplers","pendingTargets","channels","inputAccessors","outputAccessors","targets","inputAccessor","outputAccessor","targetName","outputArray","scaled","meshPromise","createNodeMesh","createNodeAttachment","sceneIndex","sceneDef","nodeIds","buildNodeHierarchy","reducedAssociations","_step2$value","reduceAssociations","nodeId","parentObject","pendingJoints","jointNodes","jointNode","assignAttributeAccessor","gltfAttributeName","boxScale","maxDisplacement","expandByVector","computeBounds","hasMorphNormal","hasMorphColor","pendingPositionAccessors","pendingNormalAccessors","pendingColorAccessors","pendingAccessor","morphPositions","addMorphTargets","numberOfTriangles","newIndices","newGeometry","_taskCache","DRACOLoader","decoderPath","decoderConfig","decoderBinary","decoderPending","workerLimit","workerPool","workerNextTaskID","workerSourceURL","defaultAttributeIDs","defaultAttributeTypes","taskConfig","attributeIDs","attributeTypes","useUniqueIDs","decodeGeometry","worker","taskKey","cachedTask","taskID","taskCost","geometryPending","_getWorker","_worker","_createGeometry","_releaseTask","geometryData","_initDecoder","useJS","WebAssembly","librariesPending","_loadLibrary","libraries","jsContent","wasmBinary","DRACOWorker","_taskCosts","_taskLoad","terminate","decodeAttribute","draco","dracoGeometry","attributeType","numComponents","num_components","numValues","num_points","dataType","DT_FLOAT32","DT_INT8","DT_INT16","DT_INT32","DT_UINT8","DT_UINT16","DT_UINT32","getDracoDataType","ptr","_malloc","GetAttributeDataArrayForAllPoints","HEAPF32","_free","onModuleLoaded","DracoDecoderModule","Decoder","decoderBuffer","DecoderBuffer","Init","decodingStatus","geometryType","GetEncodedGeometryType","TRIANGULAR_MESH","DecodeBufferToMesh","POINT_CLOUD","DecodeBufferToPointCloud","error_msg","attributeID","GetAttributeByUniqueId","GetAttributeId","GetAttribute","numFaces","num_faces","numIndices","GetTrianglesUInt32Array","decodeIndex","El","Cylinder","BespokeThenable","scheduled","completeCalled","oneTime","reason","st","ignoreThrow","thenableObj","recursiveError","valThen","getThenableThen","scheduleQueueFlush","flushQueue","callIt","isFn","called","onResolve","onReject","nextThenable","resultThen","NativePromiseThenable","rej","resultCount","out","DefaultThenable","itemThenable","workerBootstrap","registerModule","getTransferables","dep","isWorkerModule","depResult","rehydrate","noLog","troikaDefine","importScripts","messageId","isCallable","ref$1","handleResult","callModule","transferables","supportsWorkers","_workerModuleId","_messageId","_allowInitAsString","workers","registeredModules","openRequests","defineWorkerModule","workerId","moduleFunc","_getInitResult","initResult","initThenable","defineMainThreadModule","registrationThenable","callWorker","workerModuleData","unregister","stringifyFunction","thenable","bootstrap","msgId","getWorker","ThenableWorkerModule","Thenable","SDFGenerator","pointOnQuadraticBezier","pointOut","pointOnCubicBezier","y3","forEachPathCommand","pathString","commandCallback","firstX","firstY","prevX","prevY","segmentRE","pathToLineSegments","segmentCallback","curvePoints","tempPoint","startX","startY","endX","endY","ctrl1X","ctrl1Y","ctrl2X","ctrl2Y","prevCurveX","prevCurveY","prevCurveX$1","prevCurveY$1","i$1","viewportQuadVertex","copyTexFragment","glContextParams","withWebGLContext","glOrCanvas","handleContextLoss","framebufferStack","withProgram","frag","VERTEX_SHADER","FRAGMENT_SHADER","transaction","setUniform","uniformLoc","instancingDivisor","ARRAY_BUFFER","FLOAT","vertexAttribDivisor","vertexAttribDivisorANGLE","withTexture","TEXTURE0","TEXTURE_2D","TEXTURE_MIN_FILTER","NEAREST","TEXTURE_MAG_FILTER","withTextureFramebuffer","FRAMEBUFFER","COLOR_ATTACHMENT0","renderImageData","tex","texUnit","RGBA","UNSIGNED_BYTE","STATIC_DRAW","BLEND","TRIANGLES","webglUtils","resizeWebGLCanvasWithoutClearing","newWidth","newHeight","generate$2","sdfWidth","sdfHeight","sdfExponent","textureData","viewBoxWidth","viewBoxHeight","sdfX","sdfY","signedDist","findNearestSignedDistance","closestDistSq","closestDist","distSq","absSquareDistanceToLineSegment","winding","isPointInPoly","generateIntoCanvas$2","generateIntoFramebuffer$1","rgbaData","lineX0","lineY0","lineX1","lineY1","ldx","ldy","javascript","generate","generateIntoCanvas","generateIntoFramebuffer","mainVertex","mainFragment","postFragment","viewportUVs","implicitContext","isTestingSupport","NULL_OBJECT","supportByCanvas","validateSupport","generate$1","generateIntoCanvas$1","lineSegmentCoords","intermediateTexture","intermediateTextureUnit","_lastWidth","_lastHeight","instancingExtension","blendMinMaxExtension","DYNAMIC_DRAW","FUNC_ADD","MAX","COLOR_BUFFER_BIT","drawArraysInstanced","drawArraysInstancedANGLE","isContextLost","failReason","expectedResult","testResult","webgl","bidi","DATA","TYPES","TYPES_TO_NAMES","ISOLATE_INIT_TYPES","LRI","RLI","FSI","STRONG_TYPES","AL","NEUTRAL_ISOLATE_TYPES","WS","ON","PDI","BN_LIKE_TYPES","BN","RLE","LRE","RLO","LRO","PDF","TRAILING_TYPES","getBidiCharType","lastCode","skip","parseData","codePointAt","openToClose","closeToOpen","canonical","data$1","parseCharacterMap","encodedString","includeReverse","prevPair","reverseMap","visit","fromCodePoint","parse$1","pairs","openingToClosingBracket","closingToOpeningBracket","getCanonicalBracket","TYPE_L","TYPE_R","TYPE_EN","EN","TYPE_ES","ES","TYPE_ET","ET","TYPE_AN","AN","TYPE_CS","CS","TYPE_B","TYPE_S","TYPE_ON","TYPE_BN","TYPE_NSM","NSM","TYPE_AL","TYPE_LRO","TYPE_RLO","TYPE_LRE","TYPE_RLE","TYPE_PDF","TYPE_LRI","TYPE_RLI","TYPE_FSI","TYPE_PDI","mirrorMap","getMirroredCharacter","getReorderSegments","embeddingLevelsResult","strLen","paragraphs","paragraph","lineStart","lineEnd","lineLevels","maxLevel","minOddLevel","lvl","i$2","segStart","getReorderedIndices","embedLevelsResult","getBidiCharTypeName","getEmbeddingLevels","baseDirection","charTypes","charTypeCounts","changeCharType","embedLevels","isolationPairs","determineAutoEmbedLevel","FORMATTING_TYPES","nextEven","nextOdd","paraIdx","statusStack","_override","_isolate","stackTop","overflowIsolateCount","overflowEmbeddingCount","validIsolateCount","charType","level$1","level$2","_isolInitIndex","isolInitIndex","levelRuns","currentRun","i$3","charType$1","isIsolInit","isPDI","_endsWithIsolInit","_startsWithPDI","isolatingRunSeqs","runIdx","seqRuns","pdiIndex","i$4","seqIndices","i$5","run$1","firstLevel","prevLevel","i$6","lastLevel","nextLevel","i$7","_seqIndices","_sosType","_eosType","seqIdx","seqIndices$1","sosType","eosType","i$8","prevType","si$1","i$9","sj$1","prevCharType","si$2","i$10","si$3","i$11","prevType$1","nextType","sj$2","sj$3","si$4","i$12","sj$4","sj$5","si$5","i$13","sj$6","sj$7","si$6","prevStrongType","i$14","R_TYPES_FOR_N_STEPS","STRONG_TYPES_FOR_N_STEPS","bracketPairs","openerStack","si$7","oppositeBracket","seqIndex","stackIdx","stackChar","pairIdx","openSeqIdx","closeSeqIdx","foundStrongType","useStrongType","si$8","i$15","lr","getEmbedDirection","si$9","i$16","lr$1","si$10","si$11","si$12","niRunStart","niRunEnd","prevType$2","si2","nextType$1","si2$1","sj$8","i$17","level$3","type$1","j$1","isFSI","pdi","indexOfMatchingPDI","isolateStart","isolationLevel","getMirroredCharactersMap","embeddingLevels","mirror","getReorderedString","chars","charIndex","voidMainRegExp","expandShaderIncludes","epoch","CONSTRUCTOR_CACHE","SHADER_UPGRADE_CACHE","materialInstanceId","createDerivedMaterial","baseMaterial","optionsKey","optionsHash","optionsJsonReplacer","optionsHashesToIds","_idCtr","getKeyForOptions","ctorsByDerivation","privateBeforeCompileProp","shaderInfo","upgradedShaders","upgraded","vertexDefs","vertexMainIntro","vertexMainOutro","vertexTransform","fragmentDefs","fragmentMainIntro","fragmentMainOutro","fragmentColorTransform","customRewriter","timeUniform","postChunks","match1","fullStr","injectIntoShaderCode","upgradeShaders","DerivedMaterial","derive","chained","derived","isDerivedMaterial","newBase","IS_DEPTH_MATERIAL","getDistanceMaterial","distanceMaterial","IS_DISTANCE_MATERIAL","shaderCode","intro","outro","warned","mainThreadGenerator","createSDFGenerator","generateSDF_GL","timer","nextChunk","_mainThreadGenerator$","timing","generateSDF_JS_Worker","threads","callNum","exponent","thread","workerModule","_createSDFGenerator","idleTimer","terminateWorker","_bin","readASCII","readUshort","readUint","_readFont","readFixed","_data","_tabOffset","readF2dot14","readShort","readInt","_view","getInt32","readInt8","getInt8","getInt16","getUint16","readUshorts","readUint64","readUnicode","_tdec","readUTF8","readBytes","readASCIIArray","_dataView","_lctf","scriptList","readScriptList","featureList","readFeatureList","lookupList","readLookupList","readLookupTable","tabs","ltype","flag","numOfOnes","readClassDef","getInterval","readCoverage","fmt","tab","coverageIndex","readFeatureTable","featureParams","readScriptTable","readLangSysTable","reqFeature","features","CFF","readIndex","readDict","readSubrs","CharStrings","ROS","FDArray","_readFDict","FDSelect","Encoding","readEncoding","readCharset","Private","Subrs","Bias","tableSE","glyphByUnicode","glyphBySE","getCharString","readCharString","cmap","tables","parse0","parse4","parse6","parse12","searchRange","entrySelector","rangeShift","endCount","startCount","idDelta","idRangeOffset","glyphIdArray","firstCode","glyf","maxp","numGlyphs","_parseGlyf","loca","noc","xMin","yMin","xMax","yMax","endPts","instructions","xs","ys","glyphIndex","instr","GPOS","subt","coverage","readValueRecord","pairsets","gid2","val1","val2","classDef1","classDef2","GSUB","newg","vals","readLigatureSet","cDef","scset","readSubClassSet","backCvg","inptCvg","ahedCvg","lookupRec","readSubstLookupRecords","readSubClassRule","substLookupRecords","readChainSubClassSet","readChainSubClassRule","subst","readLigature","chain","nglyph","fontRevision","unitsPerEm","created","modified","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","hhea","ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numberOfHMetrics","hmtx","aWidth","lsBearing","kern","parseV1","glyph1","readFormat0","glyph2","maxPoints","maxContours","maxCompositePoints","maxCompositeContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","_lang","postScriptName","version0","version1","version2","version5","xAvgCharWidth","usWeightClass","usWidthClass","fsType","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","sFamilyClass","panose","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","achVendID","fsSelection","usFirstCharIndex","usLastCharIndex","sTypoAscender","sTypoDescender","sTypoLineGap","usWinAscent","usWinDescent","ulCodePageRange1","ulCodePageRange2","sxHeight","sCapHeight","usDefault","usBreak","usMaxContext","usLowerOpticalPointSize","usUpperOpticalPointSize","post","italicAngle","underlinePosition","underlineThickness","codeToGlyph","p0e4","p3e1","p1e0","p0e3","glyphToPath","cmds","crds","SVG","toPath","nStems","haveWidth","defaultWidthX","_drawCFF","_drawGlyf","_simpleGlyph","_compoGlyph","qcurveTo","closePath","_getGlyphClass","getPairAdjustment","_applySubs","_glsCovered","glyphsToPath","curveTo","nominalWidthX","Typr","captureStackTrace","rr","er","nr","tr","convert_streams","setUint16","setUint32","signature","flavor","numTables","reserved","totalSfntSize","majorVersion","minorVersion","metaOffset","metaLength","metaOrigLength","privOffset","privLength","compLength","origLength","origChecksum","outOffset","woff2otf","joiningTypeMap","cmdArgLengths","joiningTypeRawData","JT_LEFT","JT_RIGHT","JT_DUAL","JT_TRANSPARENT","JT_JOIN_CAUSING","JT_NON_JOINING","getCharJoiningType","_range$split2","ISOL","INIT","FINA","MEDI","formsToFeatures","detectJoiningForms","joiningForms","prevJoiningType","prevForm","joiningType","wrapFontObj","typrFont","glyphMap","fontObj","forEachGlyph","glyphX","fontScale","glyphIndices","font","glyphIds","gsub","supportedFeatures","usedLookups","isJoiningFeature","stringToGlyphs","prevGlyphIndex","glyphObj","_Typr$U$glyphToPath","crdsIdx","numArgs","advanceWidth","pathCommandCount","peek","typrFactory","woff2otfFactory","parserFactory","CONFIG","defaultFontURL","sdfGlyphSize","sdfMargin","tempColor","now$1","linkEl","atlases","getTextRenderInfo","totalStart","toAbsoluteURL","colorRanges","glyphsPerRow","atlas","glyphCount","sdfCanvas","sdfTexture","contextLost","glyphsByFont","glyph","generateGlyphSDF","safariPre15Workaround","initContextLossHandling","_atlas","fontGlyphs","typesetInWorker","glyphPositions","timings","neededSDFs","glyphBounds","fontSizeMult","boundsIdx","positionsIdx","quadsStart","glyphId","glyphInfo","_result$glyphData$gly","glyphData","pathBounds","fontUnitsMargin","atlasIndex","sdfViewBox","posX","posY","quads","sdfStart","sdf","currentHeight","neededRows","neededHeight","gpuAccelerateSDF","sdfTotal","glyphAtlasIndices","glyphColors","caretPositions","caretHeight","chunkedBounds","topBaseline","blockBounds","visibleBounds","totalBounds","totalBlockSize","_result$blockBounds2","_warm","warmUpSDFCanvas","useGPU","maxDist","squareIndex","generateSDF","toObj","fromObj","typesetterWorkerModule","fontParser","fonts","INF","DEFAULT_IGNORABLE_CHARS","BREAK_AFTER_CHARS","loadFont","fontUrl","tryLoad","XMLHttpRequest","send","doLoadFont","typeset","_ref$text","_ref$font","_ref$fontSize","_ref$letterSpacing","_ref$lineHeight","_ref$maxWidth","_ref$textAlign","_ref$textIndent","textIndent","_ref$whiteSpace","whiteSpace","_ref$overflowWrap","overflowWrap","_ref$anchorX","anchorX","_ref$anchorY","anchorY","_ref$includeCaretPosi","includeCaretPositions","_ref$chunkedBoundsSiz","chunkedBoundsSize","_ref$colorRanges","metricsOnly","mainStart","fontLoad","typesetting","hasMaxWidth","maxLineWidth","renderableGlyphCount","canWrap","typesetStart","halfLeading","caretBottomOffset","lineXOffset","currentLine","TextLine","nextLine","glyphWidth","curLineCount","isWhitespace","canBreakAfter","glyphAt","adjustX","splitAt","isSoftWrapped","fly","_line$glyphAt","anchorXOffset","anchorYOffset","parsePercent","bidiLevelsResult","lineYOffset","currentColor","renderableGlyphIndex","prevCharIndex","colorCharIndex","lineIndex","lineGlyphCount","trailingWhitespaceCount","justifyAdjust","whitespaceCount","justifyOffset","flips","_flips$fi","startInLine","endInLine","setGlyphObj","rtl","mirrored","caretLeft","caretRight","ligCount","fillLigatureCaretPositions","glyphY","visX0","visY0","visX1","visY1","rect","chunkRect","pct","NaN","ligStartIndex","ligStartX","ligEndX","ligY","guessedAdvanceX","textLineProps","flyweight","newLine","measure","_result$blockBounds","bidiFactory","createTypesetter","typesetter","GlyphsGeometry","templateGeometries","glyphIndexAttrName","_InstancedBufferGeome","curveRadius","verts","setDrawRange","_detail","tpl","geom","front","back","frontAttrs","backAttrs","combined","vertCount","getTemplateGeometry","_curveRadius","_updateBounds","updateBufferAttr","_blockBounds","_chunkedBounds","setInstanceCount","bbox","halfPi","absR","leftAngle","rightAngle","getBoundingSphere","clipRect","attrName","newArray","VERTEX_TRANSFORM","FRAGMENT_DEFS","Text","defaultMaterial","defaultStrokeColor","tempMat4","tempVec3a","tempVec3b","tempArray","defaultOrient","getFlatRaycastMesh","getCurvedRaycastMesh","syncStartEvent","syncCompleteEvent","SYNCABLE_PROPS","COPYABLE_PROPS","outlineWidth","outlineColor","outlineOpacity","outlineBlur","outlineOffsetX","outlineOffsetY","strokeColor","depthOffset","glyphGeometryDetail","debugSDF","_needsSync","_isSyncing","_queuedSyncs","textRenderInfo","_textRenderInfo","updateGlyphs","queued","sync","isTroikaTextMaterial","_prepareForRender","_hadOwnSide","setSide","_actualSide","derivedMaterial","_derivedMaterial","_baseMaterial","_defaultMaterial","textMaterial","uTroikaSDFTexture","uTroikaSDFTextureSize","uTroikaSDFGlyphSize","uTroikaSDFExponent","uTroikaTotalBounds","uTroikaClipRect","uTroikaDistanceOffset","uTroikaOutlineOpacity","uTroikaFillOpacity","uTroikaPositionOffset","uTroikaCurveRadius","uTroikaBlurRadius","uTroikaStrokeWidth","uTroikaStrokeColor","uTroikaStrokeOpacity","uTroikaOrient","uTroikaUseGlyphColors","uTroikaSDFDebug","uDiffuseRE","createTextDerivedMaterial","onDispose","outlineMaterial","_outlineMtl","isTextOutlineMaterial","isOutline","textInfo","distanceOffset","blurRadius","_parsePercent","pad","applyClipRect","colorObj","_input","orient","rotMat","_match","hSign","hAxis","vSign","vAxis","localPositionToTextCoords","worldToLocal","raycastMesh","_geom$attributes","privateKey","deprMsgShown","_deprecated_anchor","characters","onSync","troikaMesh","Text$1","_React$useMemo2","preloadFont","gltfLoader","calcModel","processModel","_gltfSize","gltfSize","backTopRight","maxLen","cameraTarget","_cameraProps","mSpec","camHtPct","camAzDeg","cameraProps","setDecoderConfig","setDecoderPath","setDRACOLoader","personMaterial","personHeadRadius","personTorsoHeight","personHeight","personTorsoRadius","personLegsRadius","personWaistHeight","isEpsilon","vertexCount","frontBottomLeft","lerpVectors","vX","vY","vZ","dimensionsMaterial","vec3","arrowhead","applyAxisAngle","MainConfiguratorBlock","personalizationBlockDivRef","speedParams","SpeedParamContext","setHeight","staticScene","setStaticScene","_useState6","setGltf","_useState8","dimensions","setDimensions","_useState10","person","setPerson","_useState12","showInitialLoading","setShowInitialLoading","_useState14","setCameraPosition","_useState16","setCameraTarget","controlsRef","lightColor","lightIntensity","groundPlanePosition","rotationX","shadowLightPosition","shadowOpacity","lighting","_cameraProps$cameraPo","_cameraProps$cameraTa","showDimensions","_gltfSize3","dimensionsDisplay","showPerson","_gltfSize2","contextPerson","showContextPerson","unobserve","_controlsRef$current","visibility","isModelLoading","DOWN","preventScrollOnSwipe","rotationAngle","trackMouse","trackTouch","swipeDuration","touchEventOptions","initialState","initial","swiping","mouseMove","mouseUp","touchEnd","touchMove","touchStart","rotateXYByAngle","angleInRadians","getHandlers","handlerProps","isTouch","onMove","onUp","onTouchStartOrOnMouseDown","_rotateXYByAngle2","absX","absY","velocity","vxvy","getDirection","eventData","onSwipeStart","onSwiping","cancelablePageSwipe","onSwiped","onSwipedDir","onTap","onTouchEndOrOnMouseUp","cleanUpMouse","attachTouch","cleanup","baseOptions","tls","addState","cleanUpTouch","useSwipeable","defaultKey","transientState","transientProps","previousProps","stateSetter","updateTransientState","ParamsBlock","uiTree","incomingParams","setParamsHeightChanged","_useContext2","setCurrentParams","presetParams","setPresetParams","visibleGroup","setVisibleGroup","visibleParam","setVisibleParam","_useReducer2","inputParamState","basicGroupCode","showOneGroup","commitChanges","setCommitChanges","setParamValue","newGroup","groupCode","showOneParam","commitParam","logParam","showParamVideo","logVideo","presetValue","resetParam","isSlider","keyvaluepairs","Param","ParamContainerDiv","ParamTextIconContainerDiv","ParamIconContainerDiv","ParamVideoButton","ParamText","InputButtonMobile","borderStyle","ParamTextMobile","InputDiv","marginBottom","Slider","SelectorDropdown","SelectorButtons","ParamResetButton","sliderProperties","setCurrentValue","isSliderReversed","WebkitAppearance","sliderRef","thumbLeft","setThumbLeft","thWidth","thumbWidth","thumbMobileWidth","isReverse","rev","sliderProps","touchHandler","isLabelPair","labelPair","valueText","dynamicValueText","SliderValueText","thumbPosition","textA","textB","guideA","SliderLabel","guideB","SliderAndValueContainer","SliderLabelTopRow","ParamSlider","desktopButtons_ContainerStyles","SelectorButtonsGroup","SelectorButtonsContainer","optionElements","optionValue","optionText","optionColor","SelectorButtonContainer","SelectorButton","MobileSwitchContainer","MainContainerDiv","GroupsContainerDiv","GroupContainerDiv","GroupSeparatorDiv","GroupParamsContainerDiv","GroupControlDiv","GroupText","ExpandButtonComponent","ArrowSVGDiv","verticalAlign","MobileVerticalControlBackground","_templateObject6","_templateObject7","_templateObject8","_templateObject9","_templateObject10","_templateObject11","_templateObject12","_templateObject13","_templateObject14","_templateObject15","_templateObject16","_templateObject17","_templateObject18","_templateObject19","_templateObject20","_templateObject21","_templateObject22","_templateObject23","_templateObject24","selectorButtonSize","thumbHeight","thumbMobileHeight","thumbColor","lowerBackground","_templateObject25","ExpandButton","_templateObject26","_templateObject27","_templateObject28","_templateObject29","PersonalizationBlock","_upperDivRef$current","paramsHeightChanged","setShowDesktopSwitchText","upperDivRef","actionButton_style","ActionDiv","ViewOptionsDiv","PersonalizationBlockDiv","UpperDiv","ProductInfoDivWrapper","ProductInfoDiv","ModelText","BlockParams","SpeedOptionHeading","encodedParams","btoa","marginLeft","defaultBorderRadius","Configurator","omitUpDown","fromEntries","setUiTree","personalizationBlock","setPersonalizationBlock","saveModalIsOpen","setSaveModalIsOpen","hasSeenLandscapeRec","setHasSeenLandscapeRec","productCode","groupCodes","uiGroups","_uiGroups$find$params","paramCodes","paramCode","getUiSpecTree","logSession","Video","VideoTitle","videoTitle","ReactPlayer","videoFilename","controlsList","ModelDiv","PersonalizationDiv","showVideoModal","VideoDiv","Viewer","BlockConfigurator","protoOrDescriptor","createProperty","legacyProperty","kind","finisher","clazz","initializer","standardProperty","HTMLSlotElement","assignedElements","_v2$4","matrixWorldAutoUpdate","DefaultMatrixWorldAutoUpdate","iridescence","iridescenceIOR","iridescenceThicknessRange","iridescenceMap","iridescenceThicknessMap","uniformsGroups","cloneUniformsGroups","iridescence_fragment","lights_lambert_fragment","lights_lambert_pars_fragment","iridescence_pars_fragment","backgroundCube_vert","backgroundCube_frag","spotLightMap","spotLightMatrix","backgroundCube","backgroundBlurriness","tCube","tFlip","iridescenceThicknessMinimum","iridescenceThicknessMaximum","uniform2i","uniform3i","uniform4i","uniform2ui","uniform3ui","uniform4ui","errorMatches","numSpotLightCoords","numSpotLightMaps","numSpotLightShadowsWithMaps","useDepthPacking","useIridescence","listArray","shadowCastingAndTexturingLightsFirst","numSpotMaps","numSpotShadowsWithMaps","renderStateArray","uboBindings","uboProgamMap","compressedTexImage3D","updateUBOMapping","uniformsGroup","blockIndex","getUniformBlockIndex","uniformBlockBinding","__bindingPointIndex","forceLinearEncoding","isCompressedArrayTexture","sourceProperties","customReferenceSpace","controllerInputSources","controllerIndex","setReferenceSpace","space","WebGLUniformsGroups","updateList","allocatedBindingPoints","maxBindingPoints","hasUniformChanged","cachedObject","getUniformSize","boundary","storage","onUniformsGroupsDispose","webglProgram","chunkSize","chunkOffset","__data","__offset","__size","__cache","prepareUniformsGroup","bindingPointIndex","allocateBindingPointIndex","bindBufferBase","updateBufferData","onContextCreationError","statusMessage","isMeshGouraudMaterial","_identity","setMatrixAt","CompressedArrayTexture","_CompressedTexture","_iridescence","HttpError","_Error","_wrapNativeSuper","_tables","_generateTables","floatView","uint32View","baseTable","shiftTable","mantissaTable","exponentTable","offsetTable","toHalfFloat","fromHalfFloat","supportsAdoptingStyleSheets","ShadowRoot","ShadyCSS","nativeShadow","Document","CSSStyleSheet","constructionToken","cssTagCache","CSSResult","safeToken","_$cssResult$","_strings","_styleSheet","cacheable","replaceSync","getCompatibleStyle","unsafeCSS","trustedTypes","emptyStringForBooleanAttribute","emptyScript","polyfillSupport","reactiveElementPolyfillSupport","defaultConverter","toAttribute","fromValue","notEqual","defaultPropertyDeclaration","converter","reflect","hasChanged","finalized","ReactiveElement","super","isUpdatePending","hasUpdated","__reflectingProperty","__initialize","__updatePromise","enableUpdating","_$changedProperties","__saveInstanceProperties","requestUpdate","_initializers","addController","__controllers","renderRoot","isConnected","hostConnected","removeController","elementProperties","_v","__instanceProperties","createRenderRoot","attachShadow","shadowRootOptions","adoptedStyleSheets","litNonce","adoptStyles","elementStyles","connectedCallback","_requestedUpdate","disconnectedCallback","hostDisconnected","attributeChangedCallback","_old","_$attributeToProperty","__propertyToAttribute","__attributeNameForProperty","attrValue","__attributeToPropertyMap","getPropertyOptions","oldValue","shouldRequestUpdate","__reflectingProperties","__enqueueUpdate","performUpdate","shouldUpdate","changedProperties","willUpdate","hostUpdate","__markUpdated","_$didUpdate","_changedProperties","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","finalize","observedAttributes","noAccessor","getPropertyDescriptor","superCtor","propKeys","finalizeStyles","reactiveElementVersions","policy","createPolicy","createHTML","boundAttributeSuffix","markerMatch","nodeMarker","createMarker","createComment","isIterable","SPACE_CHAR","textEndRegex","commentEndRegex","comment2EndRegex","tagEndRegex","singleQuoteAttrEndRegex","doubleQuoteAttrEndRegex","rawTextElement","_$litType$","noChange","nothing","templateCache","walker","createTreeWalker","trustFromTemplateString","tsa","stringFromTSA","getTemplateHtml","rawTextEndRegex","attrNames","attrNameEndIndex","Template","attrNameIndex","partCount","currentNode","svgElement","nextNode","hasAttributes","getAttributeNames","attrsToRemove","realName","statics","PropertyPart","BooleanAttributePart","EventPart","AttributePart","_options","resolveDirective","attributeIndex","currentDirective","__directives","__directive","nextDirectiveConstructor","_$litDirective$","_$AO","_$initialize","_c","_$resolve","TemplateInstance","template","_$parts","_$disconnectableChildren","_$template","_$parent","_$isConnected","_clone","creationScope","importNode","partIndex","templatePart","ChildPart","ElementPart","_$setValue","startNode","endNode","_$committedValue","_$startNode","_$endNode","__isConnected","directiveParent","_$clear","_commitText","_commitTemplateResult","_commitNode","_commitIterable","_insert","_$getTemplate","itemPart","itemParts","_$notifyConnectionChanged","setConnected","noCommit","valueIndex","change","_commitValue","newListener","oldListener","shouldRemoveListener","once","shouldAddListener","handleEvent","litHtmlPolyfillSupport","litHtmlVersions","partOwnerNode","renderBefore","_$litPart$","LitElement","__childPart","renderOptions","_$litElement$","litElementHydrateSupport","litElementPolyfillSupport","litElementVersions","HAS_WEBXR_DEVICE_API","XRSession","isSessionSupported","HAS_WEBXR_HIT_TEST_API","requestHitTestSource","HAS_RESIZE_OBSERVER","HAS_INTERSECTION_OBSERVER","IntersectionObserver","IS_WEBXR_AR_CANDIDATE","IS_ANDROID","IS_FIREFOX","IS_OCULUS","IS_SCENEVIEWER_CANDIDATE","IS_WKWEBVIEW","messageHandlers","IS_AR_QUICKLOOK_CANDIDATE","tempAnchor","relList","supports","deserializeUrl","toFullUrl","assertIsArCandidate","missingApis","partialUrl","lowerLimit","upperLimit","resolveDpr","HAS_META_VIEWPORT_TAG","isDebugMode","debugQueryParameter","ModelViewerElement","debugMode","timePasses","waitForEvent","$currentEnvironmentMap","$currentBackground","$updateEnvironment","$cancelEnvironmentUpdate","templateResult","ARGlyph","ControlsPrompt","CloseIcon","GLTFMaterialsEmissiveStrengthExtension","GLTFMaterialsIridescenceExtension","GLTFMeshGpuInstancing","KHR_MATERIALS_IRIDESCENCE","KHR_MATERIALS_EMISSIVE_STRENGTH","EXT_MESH_GPU_INSTANCING","emissiveStrength","iridescenceFactor","iridescenceTexture","iridescenceIor","iridescenceThicknessTexture","decodeGltfBufferAsync","TRIANGLE_STRIP","TRIANGLE_FAN","attributesDef","nodeObject","instancedMeshes","TRANSLATION","ROTATION","SCALE","FLOAT_MAT3","FLOAT_MAT4","FLOAT_VEC2","FLOAT_VEC3","FLOAT_VEC4","REPEAT","SAMPLER_2D","POINTS","LINES","LINE_LOOP","LINE_STRIP","UNSIGNED_SHORT","firefoxVersion","_step3$value","_step4$value","WorkerPool","pool","workersResolve","workerStatus","workerCreator","_onMessage","msg","_this$queue$shift","transfer","_getIdleWorker","_initWorker","vkFormat","typeSize","pixelWidth","pixelHeight","pixelDepth","layerCount","faceCount","supercompressionScheme","dataFormatDescriptor","vendorId","descriptorType","descriptorBlockSize","versionNumber","colorModel","colorPrimaries","transferFunction","texelBlockDimension","bytesPlane","keyValue","globalData","_littleEndian","getUint8","Buffer","_nextUint32","_nextUint64","levelData","uncompressedByteLength","_skip","_nextUint16","_nextUint8","bitOffset","bitLength","channelType","samplePosition","sampleLower","sampleUpper","_nextInt32","_scan","imageFlags","rgbSliceByteOffset","rgbSliceByteLength","alphaSliceByteOffset","alphaSliceByteLength","endpointCount","selectorCount","imageDescs","endpointsData","selectorsData","tablesData","extendedData","_zstd","env","emscripten_notify_memory_growth","instantiate","malloc","ZSTD_findDecompressedSize","ZSTD_decompress","free","_activeLoaders","KTX2Loader","transcoderPath","transcoderBinary","transcoderPending","workerConfig","MSC_TRANSCODER","setWorkerLimit","astcSupported","etc1Supported","etc2Supported","dxtSupported","bptcSupported","pvrtcSupported","jsLoader","binaryLoader","binaryContent","BasisWorker","EngineFormat","TranscoderFormat","BasisFormat","setWorkerCreator","_createTexture","transcodeResult","dfdTransferFn","dfdFlags","_createTexture2","texturePending","_args","createDataTexture","_createTextureFrom","ETC1S","UASTC_4x4","ETC1","ETC2","BC1","BC3","BC4","BC5","BC7_M6_OPAQUE_ONLY","BC7_M5","PVRTC1_4_RGB","PVRTC1_4_RGBA","ASTC_4x4","ATC_RGB","ATC_RGBA_INTERPOLATED_ALPHA","RGBA32","RGB565","BGR565","RGBA4444","BasisModule","_EngineFormat","_TranscoderFormat","_BasisFormat","onRuntimeInitialized","BASIS","initializeBasis","KTX2File","_transcode","ktx2File","isValid","basisFormat","isUASTC","getWidth","getHeight","getLayers","getLevels","hasAlpha","getHasAlpha","getDFDTransferFunc","getDFDFlags","_getTranscoderFormat","transcoderFormat","engineFormat","ETC1S_OPTIONS","UASTC_OPTIONS","opt","if","getTranscoderFormat","startTranscoding","mip","layerMips","mipWidth","mipHeight","levelInfo","getImageLevelInfo","origWidth","origHeight","getImageTranscodedSizeInBytes","transcodeImage","transcode","FORMAT_OPTIONS","priorityETC1S","priorityUASTC","totalByteLength","FORMAT_MAP","_FORMAT_MAP","TYPE_MAP","_TYPE_MAP","ENCODING_MAP","_ENCODING_MAP","_x2","_createDataTexture","KHR_SUPERCOMPRESSION_NONE","KHR_SUPERCOMPRESSION_ZSTD","zstd","ZSTDDecoder","dracoDecoderLocation","ktx2TranscoderLocation","meshoptDecoderLocation","$retainerCount","$recentlyUsed","$evict","$evictionThreshold","$cache","CacheEvictionPolicy","evictionThreshold","recentlyUsedIndex","mappingsArrayToTable","table","variants","variant","gltfMaterialIndex","GLTFMaterialsVariantsExtension","variantNames","uniqueNames","knownNames","uniqueName","suffix","ensureUniqueNames","association","extensionsDef","variantMaterials","loadWithLoader","progressCallback","preloaded","$loader","$evictionPolicy","$GLTFInstance","CachingGLTFLoader","GLTFInstance","setKTX2Loader","rawGLTFLoads","gltfInstanceLoads","setMeshoptDecoder","rawGLTF","preparedGLTF","_args2","retain","release","setTranscoderPath","MeshoptDecoder","_value","gltfLoads","CSS2DObject","isCSS2DObject","_viewMatrix","_viewProjectionMatrix","CSS2DRenderer","_widthHalf","_heightHalf","objectData","distanceToCameraSquared","getDistanceToSquared","object1","object2","sorted","filterAndFlatten","zMax","GLTFExporter","writer","GLTFLightExtension","GLTFMaterialsPBRSpecularGlossiness","onDone","GLTFWriter","THREE_TO_WEBGL","equalArray","array1","getPaddedBufferSize","bufferSize","getPaddedArrayBuffer","paddingByte","paddedLength","getCanvas","getToBlobPromise","toBlob","quality","convertToBlob","nodeMap","uids","attributesNormalized","_write","extensionsUsedList","_reader","binary","trs","onlyVisible","includeCustomExtensions","processInput","FileReader","readAsArrayBuffer","onloadend","binaryChunk","binaryChunkPrefix","jsonChunk","TextEncoder","encode","jsonChunkPrefix","glbBlob","glbReader","readAsDataURL","base64data","isRelativeCopy","didTransform","transformDef","getEncodingConversion","composite","componentSize","dataView","setFloat32","setUint8","processBuffer","bufferViewTarget","minMax","POSITIVE_INFINITY","NEGATIVE_INFINITY","getMinMax","processBufferView","cachedImages","imageDef","processBufferViewImage","dataURL","samplerDef","processSampler","processImage","writeTexture","metalRoughTexture","buildMetalRoughTexture","metalRoughMapDef","processTexture","applyTextureTransform","baseColorMapDef","maxEmissiveComponent","emissiveMapDef","normalMapDef","occlusionMapDef","serializeUserData","writeMaterial","meshCacheKeyParts","meshCacheKey","nameConversion","originalNormal","isNormalizedNormalAttribute","createNormalizedNormalAttribute","modifiedAttribute","getUID","processAccessor","reverseDictionary","baseAttribute","relativeAttribute","processMaterial","writeMesh","isOrtho","Utils","mergeMorphTargetTracks","trackBinding","trackNode","trackProperty","outputItemSize","rootJoint","temporaryBoneInverse","processMesh","processCamera","processNode","writeNode","processScene","beforeParse","objectsWithoutScene","processObjects","processSkin","processAnimation","afterParse","specularMapDef","clearcoatMapDef","clearcoatRoughnessMapDef","clearcoatNormalMapDef","iridescenceMapDef","iridescenceThicknessMapDef","transmissionMapDef","thicknessMapDef","insertKeyframe","tolerance","mergedTracks","sourceTracks","sourceTrack","sourceTrackBinding","sourceTrackNode","targetCount","mergedTrack","sourceInterpolant","keyframeIndex","compatibleObject","compatibleMaterial","GLTFExporterMaterialsVariantsExtension","variantNameSet","variantData","variantName","variantMaterial","variantDataMap","mappingTable","reIndexedVariants","variantInstance","mappingsDef","originalMaterialIndex","originalMaterial","variantsDef","SessionLightProbe","xrLight","environmentEstimation","estimationStartCallback","xrWebGLBinding","frameCallback","onXRFrame","cubeRenderTarget","preferredReflectionFormat","updateReflection","cubeMap","getReflectionCubeMap","lightEstimate","getLightEstimate","sphericalHarmonicsCoefficients","intensityScalar","primaryLightIntensity","directionalLight","primaryLightDirection","XREstimatedLight","_Group","sessionLightProbe","estimationStarted","requestLightProbe","reflectionFormat","Damper","decayMilliseconds","naturalFrequency","setDecayTime","xGoal","timeStepMilliseconds","xNormalization","nilSpeed","intermediateVelocity","intermediateX","newVelocity","acceleration","RADIUS","DELTA_PHI","addCorner","cornerX","cornerY","PlacementBox","numVertices","goalOpacity","opacityDamper","hitPlane","shadowHeight","hitResult","positionAndNormalFromPoint","getHit","ARStatus","ARTracking","hitPosition","ARRenderer","stopPresenting","placementBox","presentedScene","placeOnWall","hitSource","transientHitTestSource","fingers","getHitTestResultsForTransientInput","gamepad","isTranslating","lastDragPosition","isRotating","lastAngle","isTwoFingering","separation","fingerPolar","firstRatio","goalPosition","threeRenderer","requestSession","requiredFeatures","optionalFeatures","domOverlay","_presentedScene","waitForAnimationFrame","currentSession","exitButton","viewerRefSpace","_args3","_reject","setHotspotsVisibility","queueRender","resolveARSession","postSessionCleanup","onExitWebXRButtonContainerClick","exitWebXRButtonContainer","tracking","turntableRotation","yaw","goalYaw","goalScale","oldShadowIntensity","shadowIntensity","setShadowIntensity","oldTarget","getTarget","onUpdateScene","XRRay","DOMPoint","offsetRay","hitTestSource","initialHitSource","placementComplete","lastTick","cleanupPromise","resolveCleanup","setTarget","onSelectStart","onSelectEnd","setShadowOffset","setEnvironmentAndSkybox","xrCamera","orientHotspots","$onResize","cancel","hitSourceInitial","placeInitially","requestViewportScale","recommendedViewportScale","getCameraOrbit","cameraDirection","getWorldDirection","updateTarget","requestHitTestSourceForTransientInput","profile","getExpandedHit","refSpace","hitMatrix","hitTestResults","getHitTestResults","hitPoint","getHitPoint","fingerOne","fingerTwo","deltaYaw","canScale","finger","getTouchLocation","boundingRadius","goal","oldScale","xDamper","yDamper","zDamper","newScale","scaleDamper","updateOpacity","yawDamper","isFirstView","updateView","moveToFloor","moveScene","preRender","renderShadow","Debugger","sourceLookup","cloneLookup","parallelTraverse","sourceNode","clonedNode","clonedMesh","sourceMesh","sourceBones","$prepared","$prepare","$preparedGLTF","$clone","GLTFInstanceConstructor","SkeletonUtils","cloneVariantMaterials","prepared","traversePair","obj1","obj2","$threeGLTF","$gltf","$gltfElementMap","$threeObjectMap","$parallelTraverseThreeScene","$correlateOriginalThreeGLTF","$correlateCloneThreeGLTF","CorrelatedSceneGraph","threeGLTF","threeObjectMap","gltfElementMap","upstreamCorrelatedSceneGraph","defaultReference","threeMaterial","threeObject","gltfMappings","objWithUserData","gltfElement","threeObjects","cloneThreeGLTF","originalThreeGLTF","originalGLTF","cloneGLTF","cloneThreeObjectMap","cloneGLTFElementMap","cloneObject","elementReference","cloneObjects","sceneOne","sceneTwo","$correlatedSceneGraph","ModelViewerGLTFInstance","sourceUUIDToClonedMaterial","correlatedSceneGraph","nullSphere","gltfRef","gltfMaterial","RGBELoader","rgbe_error","rgbe_error_code","fgets","lineLimit","consume","RGBEByteToRGBFloat","sourceOffset","destArray","destOffset","RGBEByteToRGBHalf","byteArray","rgbe_header_info","gamma_re","exposure_re","format_re","dimensions_re","comments","programtype","gamma","exposure","RGBE_ReadHeader","image_rgba_data","scanline_width","data_rgba","ptr_end","rgbeStart","scanline_buffer","num_scanlines","isEncodedRun","byteValue","off","RGBE_ReadPixels_RLE","numElements","floatArray","halfArray","EnvironmentScene","roomMaterial","boxMaterial","mainLight","room","box1","box2","box3","box4","box5","box6","light1","createAreaLightMaterial","light2","light3","light4","light5","light6","EnvironmentSceneAlt","light7","HDR_FILE_RE","ldrLoader","hdrLoader","setDataType","TextureUtils","isHDR","environmentMapUrl","useAltEnvironment","skyboxLoads","environmentMapLoads","_yield$Promise$all","_yield$Promise$all2","environmentMap","skybox","skyboxUrl","loadEquirectFromUrl","loadGeneratedEnvironmentMapAlt","loadGeneratedEnvironmentMap","skyboxCache","skyboxMapLoads","cubeTarget","generatedEnvironmentMap","blurCubemap","GenerateEnvironmentMap","generatedEnvironmentMapAlt","getBlurShader","blurScene","halfblur","SCALE_STEPS","DEFAULT_POWER_PREFERENCE","Renderer","sourceEvent","textureUtils","canvas3D","debugger","arRenderer","canRender","initializeKTX2Loader","onWebGLContextLost","onWebGLContextRestored","updateRendererSize","scaleStep","lastStep","forceRescale","addScene","removeScene","multipleScenesVisible","$canvas","visibleScenes","canvas3DScene","modelIsVisible","externalRenderer","newlyMultiple","disappearing","sceneSize","copyPixels","$updateSize","avgFrameDuration","shouldRender","rescaleCanvas","renderedDpr","reportedDpr","minimumDpr","context2D","clearRect","$tick","exposureIsNumber","countVisibleScenes","renderedLastFrame","updateRendererScale","orderedScenes","renderCount","visibleScene","hasRendered","onWebXRFrame","_step9","_iterator9","_singleton","_step10","_iterator10","_step11","_iterator11","Filter","Wrap","$correlatedObjects","$sourceObject","$onUpdate","ThreeDOMElement","correlatedObjects","quadMaterial","quad","adhocNum","$threeTexture","gltfImage","singleton","blobCanvas","blobContext","createImageData","TextureUsage","isMinFilter","minFilterValues","Nearest","Linear","NearestMipmapNearest","LinearMipmapLinear","NearestMipmapLinear","isMagFilter","magFilterValues","isWrapMode","wrapModes","ClampToEdge","MirroredRepeat","Repeat","$threeTextures","$setProperty","$sourceSampler","Sampler","gltfSampler","isValidSamplerValue","$image","$sampler","threeTexture","gltfTexture","$texture","$transform","$materials","$usage","TextureInfo","gltfTextureInfo","Base","MetallicRoughness","Normal","Occlusion","Emissive","$threeMaterials","$baseColorTexture","$metallicRoughnessTexture","PBRMetallicRoughness","correlatedMaterials","gltfBaseColorTexture","gltfMetallicRoughnessTexture","rgba","$pbrMetallicRoughness","$normalTexture","$occlusionTexture","$emissiveTexture","$backingThreeMaterial","$applyAlphaCutoff","$lazyLoadGLTFInfo","$initialize","$getLoadedMaterial","$ensureMaterialIsLoaded","$gltfIndex","$setActive","$variantIndices","$isActive","$variantSet","$modelVariants","gltfIndex","isActive","modelVariants","lazyLoadInfo","gltfNormalTexture","gltfOcclusionTexture","gltfEmissiveTexture","doLazyLoad","_yield$this$$lazyLoad","ensureLoaded","sourceMaterial","rgb","cutoff","enableTransparency","$variantToMaterialMap","$mesh","$children","$initialMaterialIdx","$activeMaterialIdx","PrimitiveNode","mvMaterials","materialMappings","gltfPrimitive","defaultIdx","variantsExtension","mvMaterial","setActiveMaterial","enableVariantHelper","materialVariant","ensureVariantIsUnused","variantIndex","updateVariantUserData","variantInfo","userDataMap","$hierarchy","$roots","$primitivesList","$prepareVariantsForExport","$switchVariant","$threeScene","$materialsFromPoint","$materialFromPoint","$variantData","$availableVariants","$modelOnUpdate","$cloneMaterial","LazyLoader","mapKey","Model","correlatedMaterial","gltfMaterialDef","capturedMatIndex","materialLoadCallback","threeMaterialSet","parentMap","nodeStack","found","getActiveMaterial","enableVariant","instantiateVariants","newMaterialName","gltfSourceMaterial","clonedSet","clonedMaterial","activateVariant","variantMaterialInstance","hasVariant","createVariant","addVariant","targetVariantName","currentName","newName","_step12","_iterator12","_step13","deleteVariant","_iterator13","$currentGLTF","$originalGltfJson","$model","$getOnUpdateMethod","$textureLoader","numberNode","parseExpressions","inputString","expressions","parseIterations","expressionParseResult","parseExpression","expression","terms","remainingInput","IS_IDENT_RE","IS_OPERATOR_RE","IS_EXPRESSION_END_RE","parseFunctionArguments","identParseResult","parseIdent","identNode","parseHex","parseNumber","NOT_IDENT_RE","VALUE_RE","UNIT_RE","ALLOWED_UNITS","valueMatch","unitMatch","HEX_RE","hexMatch","expressionNodes","$visitedTypes","ASTWalker","visitedTypes","ast","remaining","ZERO","degreesToRadians","fallbackRadianValue","lengthToBaseMeters","fallbackMeterValue","normalizeUnit","unitNormalizers","Hotspot","pivot","updateNormal","facingCamera","updateVisibility","positionNodes","setComponent","normalNodes","assignedNodes","ELEMENT_NODE","visibilityAttribute","reduceVertices","HorizontalBlurShader","VerticalBlurShader","Shadow","softness","shadowMaterial","blurPlane","horizontalBlurMaterial","verticalBlurMaterial","setScene","isAnimated","animationNames","maxDimension","subScalar","setSoftness","setMapSize","softFar","hardFar","setIntensity","setOffset","maxMapSize","baseWidth","baseHeight","renderTargetBlur","initialClearAlpha","xrEnabled","oldRenderTarget","blurShadow","tDiffuse","removeFromParent","normalWorld","ndc","ModelScene","annotationRenderer","schemaElement","isDirty","_model","setupScene","framingInfo","animationsByName","framedRadius","idealAspect","fieldOfViewAspect","cancelPendingSourceChange","$renderer","_currentGLTF","applyTransform","updateBoundingBox","updateFraming","updateShadow","bakedShadows","currentAnimationAction","stopAllAction","uncacheRoot","minDim","markBakedShadow","shadowBox","unmarkBakedShadow","roll","pitch","findBakedShadows","bound","setBakedShadowVisibility","checkBakedShadows","radiusSquared","horizontalTanFov","radiusXZ","idealCameraDistance","framedFoVDeg","halfFovRad","fovDeg","vertical","modelX","modelY","modelZ","goalTarget","targetDamperX","targetDamperY","targetDamperZ","normalization","worldX","worldZ","radiansY","setTime","queueShadowRender","getClip","crossfadeTime","loopMode","repetitionCount","animationClip","parsedAnimationIndex","lastAnimationAction","clipAction","animationTimeScale","animationTime","arPlacement","shadowSoftness","ndcPosition","hotspot","viewerPosition","forHotspots","iosSrc","contentUrl","encodingFormat","structuredData","dataUrlToBlob","base64DataUrl","typeMatch","base64","byteCharacters","atob","byteArrays","byteNumbers","ProgressTracker","ongoingActivities","activity","completed","ongoingActivityCount","announceTotalProgress","nextProgress","updatedActivity","progressLeft","completedActivities","lastProgress","totalProgress","EventTarget","$fallbackResizeHandler","$defaultAriaLabel","$resizeObserver","$clearModelTimeout","$onContextLost","$loaded","$status","$onFocus","$onBlur","$intersectionObserver","$isElementInViewport","$announceModelVisibility","$ariaLabel","$altDefaulted","$statusElement","$updateStatus","$loadedTime","$updateSource","$markLoaded","$container","$userInputElement","$scene","$needsRender","$onModelLoad","$progressTracker","$getLoaded","$getModelIsVisible","$shouldAttemptPreload","toVector3D","ModelViewerElementBase","boundingRect","oldVisibility","newVisibility","sourceError","makeTemplate","contentRect","isIntersecting","rootMargin","registerScene","unregisterScene","generateSchema","updateSchema","encoderOptions","displayCanvas","qualityArgument","useIdealAspect","_this$$scene","_this$$renderer","outputWidth","outputHeight","oldHeight","oldWidth","msToBlob","_time","_delta","stopAnimation","updateSourceProgress","beginActivity","srcUpdated","setSource","envUpdated","minScale","_l","_o","__decorate","$changeAnimation","$paused","DEFAULT_PLAY_OPTIONS","$hotspotMap","$mutationCallback","$observer","$addHotspot","$removeHotspot","worldToModel","worldToModelNormal","durl","u8","u16","u32","fleb","fdeb","clim","freb","revfl","revfd","hMap","co","rvb","sv","r_1","flt","fdt","flm","fdm","shft","slc","wbits","wbits16","hTree","et","maxSym","mbt","ln","lft","cst","i2_1","i2_2","i2_3","cli","cln","clen","wfblk","wblk","final","syms","dlt","mlb","ddt","mdb","lclt","nlc","lcdt","lcfreq","lct","mlcb","nlcc","lm","dm","ftlen","dtlen","llm","lcts","clct","deo","dflt","plvl","pre","lst","msk_1","bs1_1","bs2_1","hsh","lc_1","hv","imod","pimod","ch_1","dif","maxn","maxd","mmd","lin","din","crct","crc","cr","dopt","mem","mrg","wbytes","deflateSync","fltn","strToU8","latin1","ar_1","ar","exfl","wzh","extra","exl","compression","mtime","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","exf","wzf","zipSync","tot","com","comment","cdl","badd","USDZExporter","_parse","modelFileName","filename","headerSize","offsetMod64","geometryFileName","meshObject","buildMeshObject","buildUSDFileAsString","buildXform","buildCamera","buildMaterials","fflate","isRGBA","imageToCanvas","imagedata","PRECISION","dataToInsert","buildMatrix","buildMatrixRow","buildMeshVertexCount","buildMeshVertexIndices","buildVector3Array","toPrecision","buildVector2Array","buildMesh","buildMaterial","inputs","buildTexture","mapType","getHexString","buildVector2","buildColor","getFocalLength","allowedNames","isWebXRBlocked","isSceneViewerBlocked","noArViewerSigil","deserializeARModes","valueString","valueNode","ARMode","$arButtonContainer","$enterARWithWebXR","$openSceneViewer","$openIOSARQuickLook","$canActivateAR","$arMode","$arModes","$arAnchor","$preload","$onARButtonContainerClick","$onARStatus","$onARTracking","$onARTap","$selectARMode","$triggerLoad","$evaluate","$lastValue","Evaluator","isConstant","basis","PercentageEvaluator","CalcEvaluator","EnvEvaluator","evaluatable","evaluated","intrinsics","keywords","auto","basisNode","autoSubstituteNode","evaluatedNode","keyword","$percentage","$basis","$identNode","envFunction","pageYOffset","IS_MULTIPLICATION_RE","$evaluator","calcFunction","secondOrderTerms","term","previousTerm","operator","leftValue","OperatorEvaluator","evaluatableFor","_secondOrderTerms$spl2","$operator","$left","$right","leftNode","rightNode","leftUnit","rightValue","rightUnit","$evaluatables","$intrinsics","StyleEvaluator","firstExpression","applyIntrinsics","$instances","$activateListener","$deactivateListener","$notifyInstances","$notify","$scrollCallback","ScrollObserver","$computeStyleCallback","$astWalker","$dependencies","$onScroll","StyleEffector","relatedState","newDependencies","oldDependencies","environmentState","walk","functionNode","firstTerm","observeEffects","getIntrinsics","originalUpdated","originalConnectedCallback","originalDisconnectedCallback","$styleEffector","$styleEvaluator","$updateEvaluator","$evaluateAndSync","observeEffectsFor","updateHandler","DEFAULT_OPTIONS","minimumRadius","maximumRadius","minimumPolarAngle","maximumPolarAngle","minimumAzimuthalAngle","maximumAzimuthalAngle","minimumFieldOfView","maximumFieldOfView","KEYBOARD_ORBIT_INCREMENT","ZOOM_SENSITIVITY","ChangeSource","SmoothControls","logFov","PointerEvent","startPointerPosition","_disableZoom","touchDistance","twoTouchDistance","deltaZoom","lastSeparation","userAdjustOrbit","panPerPixel","movePan","touchDecided","dxMag","dyMag","changeSource","touchMode","disableScroll","handleSinglePointerMove","isUserPointing","onTouchChange","numTouches","resetRadius","enableTap","recenter","$panElement","panKeyCodeHandler","orbitZoomKeyCodeHandler","setOrbit","setFieldOfView","jumpToGoal","_interactionEnabled","onContext","updateTouchActionStyle","goalLogFov","nearPlane","farPlane","goalTheta","goalSpherical","goalPhi","goalRadius","nextTheta","wrapAngle","nextPhi","nextRadius","thetaDamper","phiDamper","radiusDamper","fovDamper","deltaTheta","deltaPhi","dTheta","dThetaLimit","deltaRatio","isStationary","moveCamera","setRotationFromEuler","dispatchChange","adjustOrbit","orbitSensitivity","inputSensitivity","pixelLength","touchOne","touchTwo","xOne","yOne","xDelta","yDelta","pixelLengthToSphericalAngle","psi","panProjection","dxy","metersPerPixel","getNDC","dr","touchModeRotate","touchModeZoom","initializePan","relevantKey","easeInOutQuad","interpolate","ease","timeline","lastValue","keyframe","sequence","wiggle","fade","DEFAULT_CAMERA_ORBIT","AZIMUTHAL_QUADRANT_LABELS","POLAR_TRIENT_LABELS","InteractionPromptStrategy","InteractionPromptStyle","TouchAction","fieldOfViewIntrinsics","minFieldOfViewIntrinsics","cameraOrbitIntrinsics","defaultTerms","minCameraOrbitIntrinsics","maxCameraOrbitIntrinsics","orbitIntrinsics","defaultRadius","cameraTargetIntrinsics","HALF_PI","THIRD_PI","QUARTER_PI","TAU","$controls","$promptElement","$promptAnimatedContainer","$fingerAnimatedContainers","$deferInteractionPrompt","$updateAria","$updateCameraForRadius","$onChange","$onPointerChange","$waitingToPromptUser","$userHasInteracted","$promptElementVisibleTime","$lastPromptOffset","$lastSpherical","$jumpCamera","$initialized","$maintainThetaPhi","$syncCameraOrbit","$syncFieldOfView","$syncCameraTarget","$syncMinCameraOrbit","$syncMaxCameraOrbit","$syncMinFieldOfView","$syncMaxFieldOfView","RevealStrategy","LoadingStrategy","$defaultProgressBarElement","$posterContainerElement","$defaultPosterElement","$shouldDismissPoster","$hidePoster","$modelIsRevealed","$updateProgressBar","$ariaLabelCallToAction","$onProgress","DEFAULT_ROTATION_SPEED","rotationRateIntrinsics","$autoRotateStartTime","$radiansPerSecond","$syncRotationRate","$onCameraChange","AnnotationModelViewerElement","MutationRecord","addedNodes","ShadyDOM","observeChildren","unobserveChildren","updateHotspots","project","canvasPosition","pixelX","pixelY","toVector2D","increment","addHotspot","decrement","removeHotspot","AnnotationMixin","SceneGraphModelViewerElement","currentGLTF","ModelViewerTexture","updateVariantProgress","forceIndices","truncateDrawRange","ndcCoords","SceneGraphMixin","StagingModelViewerElement","rotationDelta","autoRotateDelay","StagingMixin","EnvironmentModelViewerElement","setShadowSoftness","skyboxImage","environmentImage","updateEnvProgress","generateEnvironmentMapAndSkybox","_yield$textureUtils$g","EnvironmentMixin","ControlsModelViewerElement","getFieldOfView","interactionPrompt","cameraControls","keyPresses","WheelEvent","enableInteraction","disableInteraction","disableZoom","disablePan","disableTap","interactionPromptStyle","applyOptions","setDamperDecayTime","interpolationDecay","setTargetDamperDecayTime","oldFramedFoV","adjustedFoV","newFramedFoV","finger0","finger1","inputElement","fingerElements","dispatchTouches","onVisibilityChange","elapsed","moveTouches","jumpCameraToGoal","interactionPromptThreshold","updateNearFar","getCameraSpherical","azimuthalQuadrant","polarTrient","azimuthalQuadrantLabel","polarTrientLabel","fovRatio","updateAspect","maxFieldOfView","fieldOfView","minCameraOrbit","maxCameraOrbit","cameraOrbit","ControlsMixin","ARModelViewerElement","activateAR","arScale","arModes","arMode","supportsPresentation","present","xrEnvironment","locationUrl","modelUrl","soundUrl","linkUrl","intent","click","generateUsdz","prepareUSDZ","objectURL","srcUrl","anchor","exporter","arraybuffer","ARMixin","LoadingModelViewerElement","throttled","throttle","reveal","setDRACODecoderLocation","setKTX2TranscoderLocation","setMeshoptDecoderLocation","posterContainerElement","defaultPosterElement","showPoster","backgroundImage","getDRACODecoderLocation","getKTX2TranscoderLocation","getMeshoptDecoderLocation","LoadingMixin","AnimationModelViewerElement","subscribeMixerEvent","availableAnimations","updateAnimation","playAnimation","animationCrossfadeDuration","AnimationMixin","SuperClass","$endPolyfillCoordination","FocusVisibleCoordinator","applyFocusVisiblePolyfill","coordinationHandler","coordinateWithPolyfill","FocusVisiblePolyfillMixin","ArModelViewer","modelSrc","setModelSrc","setPlacement","logArSession","envImage","ArDiv","ActionButtonDiv","customElements","SelectorGallery","gallery","setGallery","isFixed","overflowProperty","getElementById","setFixedPageSizeMode","seriesSpecs","idNameTriples","rawId","idComponents","series","subproduct","defaultAccent","spec","baseId","seriesTriple","GalleryTitleDiv","GalleryTitleText","GalleryRowDiv","idTriple","productTriple","ProductDiv","ProductText","OuterDiv","BlockBanner","ContentDiv","AgXToneMapping","DisplayP3ColorSpace","LinearDisplayP3ColorSpace","LinearTransfer","SRGBTransfer","Rec709Primaries","P3Primaries","WebGLCoordinateSystem","WebGPUCoordinateSystem","trunc","_m3","makeRotation","warnOnce","LINEAR_SRGB_TO_LINEAR_DISPLAY_P3","LINEAR_DISPLAY_P3_TO_LINEAR_SRGB","COLOR_SPACES","_COLOR_SPACES","primaries","toReference","fromReference","convertLinearToSRGB","SUPPORTED_WORKING_COLOR_SPACES","_workingColorSpace","sourceToReference","targetFromReference","getPrimaries","getTransfer","_sourceId","dataReady","_textureId","DEFAULT_ANISOTROPY","RenderTarget","isRenderTarget","_RenderTarget","vx","vy","vz","getVertexPosition","_box$4","isSphere","coordinateSystem","zInv","DEFAULT_ORDER","DEFAULT_UP","DEFAULT_MATRIX_AUTO_UPDATE","DEFAULT_MATRIX_WORLD_AUTO_UPDATE","getObjectsByProperty","isBatchedMesh","perObjectFrustumCulled","drawRanges","_drawRanges","reservedRanges","_reservedRanges","_visibility","_active","_bounds","boxInitialized","boxMin","boxMax","sphereInitialized","sphereRadius","sphereCenter","maxGeometryCount","_maxGeometryCount","maxVertexCount","_maxVertexCount","maxIndexCount","_maxIndexCount","geometryInitialized","_geometryInitialized","geometryCount","_geometryCount","matricesTexture","_matricesTexture","_v3$2","_color","toFixed","_materialId","alphaHash","blendColor","blendAlpha","forceSinglePass","anisotropyRotation","anisotropyMap","_updateRange","updateRanges","gpuType","_id$2","_inverseMatrix$3","_ray$3","_sphere$6","_sphereHitAt","_normalA","_normalB","_normalC","recast","intersectSphere","_computeIntersections","rayLocalSpace","checkGeometryIntersection","getUnlitUniformColorSpace","clipCullDistance","multiDraw","_minTarget","_maxTarget","minTarget","maxTarget","getViewBounds","_cameras","updateCoordinateSystem","currentActiveCubeFace","currentActiveMipmapLevel","_sphere$5","HALF_FLOAT","SHORT","UNSIGNED_INT","INT","clearUpdateRanges","alphahash_fragment","alphahash_pars_fragment","batching_pars_vertex","batching_vertex","colorspace_fragment","colorspace_pars_fragment","opaque_fragment","mapTransform","alphaMapTransform","specularMapTransform","aoMapTransform","lightMapTransform","bumpMapTransform","normalMapTransform","displacementMapTransform","emissiveMapTransform","metalnessMapTransform","roughnessMapTransform","backgroundIntensity","clearcoatMapTransform","clearcoatNormalMapTransform","clearcoatRoughnessMapTransform","iridescenceMapTransform","iridescenceThicknessMapTransform","sheenColorMapTransform","sheenRoughnessMapTransform","transmissionMapTransform","thicknessMapTransform","specularColorMapTransform","specularIntensityMapTransform","anisotropyVector","anisotropyMapTransform","getRGB","getEnvironmentBlendMode","MAX_VERTEX_ATTRIBS","ELEMENT_ARRAY_BUFFER","renderMultiDraw","starts","counts","multiDrawArraysWEBGL","elementCount","HIGH_FLOAT","MEDIUM_FLOAT","MAX_TEXTURE_IMAGE_UNITS","MAX_VERTEX_TEXTURE_IMAGE_UNITS","MAX_TEXTURE_SIZE","MAX_CUBE_MAP_TEXTURE_SIZE","MAX_VERTEX_UNIFORM_VECTORS","MAX_VARYING_VECTORS","MAX_FRAGMENT_UNIFORM_VECTORS","setGlobalState","_oldActiveCubeFace","_oldActiveMipmapLevel","multiDrawElementsWEBGL","compareFunction","emptyShadowTexture","emptyTexture2D","SAMPLER_2D_SHADOW","ACTIVE_UNIFORMS","COMPLETION_STATUS_KHR","COMPILE_STATUS","gamutMapping","workingPrimaries","encodingPrimaries","shaderChunkMap","newInclude","normalMapTangentSpace","customVertexExtensions","extensionClipCullDistance","extensionMultiDraw","generateVertexExtensions","shaderType","batching","normalMapObjectSpace","mapUv","alphaMapUv","lightMapUv","aoMapUv","emissiveMapUv","bumpMapUv","normalMapUv","displacementMapUv","metalnessMapUv","roughnessMapUv","anisotropyMapUv","clearcoatMapUv","clearcoatNormalMapUv","clearcoatRoughnessMapUv","iridescenceMapUv","iridescenceThicknessMapUv","sheenColorMapUv","sheenRoughnessMapUv","specularMapUv","specularColorMapUv","specularIntensityMapUv","transmissionMapUv","thicknessMapUv","vertexUv1s","vertexUv2s","vertexUv3s","pointsUvs","numLightProbes","useLegacyLights","vertexGlsl","onFirstUse","LINK_STATUS","onShaderError","VALIDATE_STATUS","ACTIVE_ATTRIBUTES","FLOAT_MAT2","programReady","rendererExtensionParallelShaderCompile","_activeChannels","IS_WEBGL2","SUPPORTS_VERTEX_TEXTURES","getChannel","IS_INSTANCEDMESH","IS_BATCHEDMESH","HAS_MAP","HAS_MATCAP","HAS_ENVMAP","HAS_AOMAP","HAS_LIGHTMAP","HAS_BUMPMAP","HAS_NORMALMAP","HAS_DISPLACEMENTMAP","HAS_EMISSIVEMAP","HAS_METALNESSMAP","HAS_ROUGHNESSMAP","HAS_ANISOTROPY","HAS_CLEARCOAT","HAS_IRIDESCENCE","HAS_SHEEN","HAS_TRANSMISSION","HAS_ANISOTROPYMAP","HAS_CLEARCOATMAP","HAS_CLEARCOAT_NORMALMAP","HAS_CLEARCOAT_ROUGHNESSMAP","HAS_IRIDESCENCEMAP","HAS_IRIDESCENCE_THICKNESSMAP","HAS_SHEEN_COLORMAP","HAS_SHEEN_ROUGHNESSMAP","HAS_SPECULARMAP","HAS_SPECULAR_COLORMAP","HAS_SPECULAR_INTENSITYMAP","HAS_TRANSMISSIONMAP","HAS_THICKNESSMAP","HAS_GRADIENTMAP","HAS_ALPHAMAP","HAS_ALPHATEST","HAS_ALPHAHASH","HAS_EXTENSIONS","_useLegacyLights","_shadowSide","_previousType","onBeforeShadow","onAfterShadow","toVSM","fromVSM","DEPTH_TEST","NEVER","ALWAYS","LESS","LEQUAL","EQUAL","GEQUAL","GREATER","NOTEQUAL","STENCIL_TEST","uboProgramMap","currentBlendColor","currentBlendAlpha","MAX_COMBINED_TEXTURE_IMAGE_UNITS","SCISSOR_BOX","VIEWPORT","TEXTURE_3D","TEXTURE_2D_ARRAY","TEXTURE_CUBE_MAP","TEXTURE_CUBE_MAP_POSITIVE_X","CULL_FACE","FUNC_SUBTRACT","FUNC_REVERSE_SUBTRACT","MIN","SRC_COLOR","SRC_ALPHA","SRC_ALPHA_SATURATE","DST_COLOR","DST_ALPHA","ONE_MINUS_SRC_COLOR","ONE_MINUS_SRC_ALPHA","ONE_MINUS_DST_COLOR","ONE_MINUS_DST_ALPHA","CONSTANT_COLOR","ONE_MINUS_CONSTANT_COLOR","CONSTANT_ALPHA","ONE_MINUS_CONSTANT_ALPHA","CW","CCW","BACK","FRONT","FRONT_AND_BACK","POLYGON_OFFSET_FILL","DRAW_FRAMEBUFFER","SAMPLE_ALPHA_TO_COVERAGE","SCISSOR_TEST","KEEP","READ_FRAMEBUFFER","_compareToGL","forceLinearTransfer","RED","R32F","R16F","R8","RED_INTEGER","R8UI","R16UI","R32UI","R8I","R16I","R32I","RG","RG32F","RG16F","RG8","RGBA32F","RGBA16F","SRGB8_ALPHA8","RGBA8","UNSIGNED_SHORT_4_4_4_4","RGBA4","UNSIGNED_SHORT_5_5_5_1","RGB5_A1","CLAMP_TO_EDGE","MIRRORED_REPEAT","NEAREST_MIPMAP_NEAREST","NEAREST_MIPMAP_LINEAR","LINEAR_MIPMAP_NEAREST","LINEAR_MIPMAP_LINEAR","compareToGL","TEXTURE_WRAP_S","TEXTURE_WRAP_T","TEXTURE_WRAP_R","TEXTURE_COMPARE_MODE","COMPARE_REF_TO_TEXTURE","TEXTURE_COMPARE_FUNC","texturePrimaries","unpackConversion","BROWSER_DEFAULT_WEBGL","UNPACK_FLIP_Y_WEBGL","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_ALIGNMENT","UNPACK_COLORSPACE_CONVERSION_WEBGL","DEPTH_COMPONENT","DEPTH_COMPONENT32F","DEPTH_COMPONENT24","DEPTH24_STENCIL8","DEPTH_COMPONENT16","DEPTH_STENCIL","TEXTURE_CUBE_MAP_NEGATIVE_Z","RENDERBUFFER","DEPTH_ATTACHMENT","DEPTH_STENCIL_ATTACHMENT","DEPTH_BUFFER_BIT","STENCIL_BUFFER_BIT","ALPHA","LUMINANCE","LUMINANCE_ALPHA","RG_INTEGER","RGBA_INTEGER","COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT","COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT","COMPRESSED_RED_RGTC1_EXT","COMPRESSED_SIGNED_RED_RGTC1_EXT","COMPRESSED_RED_GREEN_RGTC2_EXT","COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT","UNSIGNED_INT_24_8","_getHandJoint","WebXRDepthSensing","depthData","cameraXR","depthColor","depthWidth","depthHeight","depthSensing","currentSize","currentPixelRatio","updateUserCamera","hasDepthSensing","cameraXRNeedsUpdate","enabledFeatures","getDepthInformation","detectedPlanes","refreshTransformUniform","MAX_UNIFORM_BUFFER_BINDINGS","indexString","uniformArray","chunkOffsetUniform","UNIFORM_BUFFER","arrayOffset","_parameters$canvas","_parameters$context","_parameters$depth","_parameters$stencil","_parameters$alpha","_parameters$antialias","_parameters$premultip","_parameters$preserveD","_parameters$powerPref","_parameters$failIfMaj","uintClearColor","intClearColor","_outputColorSpace","_currentClearColor","_currentClearAlpha","WebGLRenderingContext","prepareMaterial","isIntegerFormat","targetFormat","targetType","isUnsignedType","clearBufferuiv","COLOR","clearBufferiv","getUniformList","_multiDrawStarts","_multiDrawCounts","_multiDrawCount","maxInstanceCount","targetScene","material2","compileAsync","checkMaterialsReady","renderTargetNeedsUpdate","currentSide","IMPLEMENTATION_COLOR_READ_FORMAT","IMPLEMENTATION_COLOR_READ_TYPE","UNPACK_ROW_LENGTH","UNPACK_IMAGE_HEIGHT","UNPACK_SKIP_PIXELS","UNPACK_SKIP_ROWS","UNPACK_SKIP_IMAGES","drawingBufferColorSpace","unpackColorSpace","DEFAULT_MATERIAL_NAME","BatchingKey","layerName","blockName","lineType","CompareValues","GeometryType","INDEXED_LINES","INDEXED_TRIANGLES","BLOCK_INSTANCE","POINT_INSTANCE","DxfArrayScanner","_pointer","_eof","parseGroupValue","parseBoolean","hasNext","lastReadGroup","rewind","numberOfGroups","isEOF","ExtendedDataParser","appName","appNameWarningShown","lastString","sectionStack","_CreateSection","failure","curr","curSection","_currentSection","newSection","_CreateValue","entity","xdata","parsePoint","scanner","skipEmbeddedObject","checkCommonEntityProperties","xdataParser","Feed","Finish","lineTypeScale","hidden","colorIndex","AUTO_CAD_COLOR_INDEX","inPaperSpace","ownerHandle","materialObjectHandle","lineweight","EntityParser","parse3dFaceVertices","vertexIsStarted","vertexIsFinished","parseLWPolylineVertices","startWidth","endWidth","bulge","parseSeqEnd","helpers","ParseBoundaryLoop","ParsePolyline","isClosed","ParseEdge","isSpline","controlPoints","fitPoints","knotValues","startAngle","endAngle","rational","isCcw","periodic","degreeOfSplineCurve","polylineParsed","numEdges","numSourceRefs","isOutermost","polyline","sourceRefs","ParseDefinitionLine","numDashes","dashes","ParseSeedPoint","ForEntityName","parseEntity","hasContinuousLinetypePattern","extrusionDirection","textStyle","prompt","textHeight","obliqueAngle","verificationRequired","preset","backwards","horizontalJustification","fieldLength","verticalJustification","lineSpacingFactor","fillBoxScale","annotationHeight","backgroundFillColor","attachmentPoint","lineSpacing","backgroundFillSetting","lockPositionFlag","hardPointerId","angleLength","anchorPoint","middleOfText","insertionPoint","linearOrAngularPoint1","linearOrAngularPoint2","diameterOrRadiusPoint","arcPoint","dimensionType","actualMeasurement","textRotation","majorAxisEndPoint","axisRatio","xScale","yScale","zScale","rowCount","columnSpacing","rowSpacing","elevation","drawingDirection","curveFittingVertex","curveFitTangent","splineVertex","splineControlPoint","threeDPolylineVertex","threeDPolylineMesh","polyfaceMeshVertex","includesCurveFitVertices","includesSplineFitVertices","is3dPolyline","is3dPolygonMesh","is3dPolygonMeshClosed","isPolyfaceMesh","vertexParser","VertexParser","parsePolylineVertices","currentGroup","startTangent","endTangent","planar","numberOfKnots","numberOfControlPoints","numberOfFitPoints","halign","valign","numBoundaryLoops","numDefinitionLines","numSeedPoints","boundaryLoops","definitionLines","seedPoints","patternName","isSolid","hatchStyle","patternType","patternAngle","patternScale","DxfParser","dxfParser","_entityHandlers","registerEntityHandler","Face","Arc","AttDef","Attribute","Circle","Dimension","Ellipse","Insert","LWPolyline","MText","Point","Polyline","Solid","Spline","Hatch","logUnhandledGroup","debugCode","handlerType","parseSync","parseStream","dxfString","dxf","lastHandle","dxfLinesArray","groupIs","parseHeader","currVarName","currVarValue","parseBlocks","parseBlock","ensureHandle","xrefPath","name2","entities","parseEntities","parseTables","tableDefinitions","tableName","parseTable","END_OF_TABLE_VALUE","actualCount","tableDefinition","expectedCount","dxfSymbolName","tableRecordsProperty","parseTableRecords","tableRecords","VPORT","viewPorts","viewPort","lowerLeftCorner","upperRightCorner","snapBasePoint","snapSpacing","gridSpacing","viewDirectionFromTarget","viewTarget","lensLength","frontClippingPlane","backClippingPlane","viewHeight","snapRotationAngle","viewTwistAngle","orthographicType","ucsOrigin","ucsXAxis","ucsYAxis","renderMode","defaultLightingType","defaultLightingOn","ambientColor","LTYPE","ltypeName","ltypes","description","patternLength","LAYER","frozen","DIMSTYLE","dimStyles","dimStyleCodes","STYLE","subClassMarker","standardFlag","fixedTextHeight","widthFactor","textGenerationFlag","lastHeight","bigFont","extendedFont","forBlock","endingOnValue","parseAll","DxfFetcher","_Fetch","progressCbk","receivedSize","_yield$reader$read","DynamicBuffer","initialCapacity","NativeArray","_CheckGrow","dstBuffer","newBuffer","NativeType","INT8","UINT8","UINT8_CLAMPED","INT16","UINT16","INT32","UINT32","INT64","UINT64","FLOAT32","FLOAT64","bridge","bridgeReverse","State","TEXT","ESCAPE","SKIP_FORMAT","PARAGRAPH1","PARAGRAPH2","PARAGRAPH3","EntityType","SCOPE","PARAGRAPH","NON_BREAKING_SPACE","PARAGRAPH_ALIGNMENT","shortFormats","longFormats","validEscapes","MTextFormatParser","textStart","scopeStack","curEntities","curPos","EmitText","EmitEntity","PushScope","alignment","GetText","_marked","TraverseItems","GetContent","SPECIAL_CHARS_RE","ParseSpecialChars","replaceAll","TextRenderer","fontFetchers","DefaultOptions","stubShapeLoaded","stubShape","_FetchFonts","_Array$from","charMissing","_char","fetcher","fallbackChar","FetchFonts","_CreateCharShape","HasChar","_FetchFont","TextBlock","_GetCharShape","PushChar","GetCurrentPosition","Render","startPos","endPos","_ref$rotation","_ref$widthFactor","_ref$hAlign","hAlign","_ref$vAlign","vAlign","_ref$layer","RenderMText","formattedText","_ref2$width","_ref2$rotation","_ref2$direction","_ref2$lineSpacing","_ref2$layer","TextBox","FeedText","GetCharPath","CharShape","_FetchFont2","fontFetcher","curveSubdivision","toShapes","baseIdx","AddVertices","charMap","_Object$values","glyphs","unicode","commands","cmd","charToGlyphIndex","getKerningValue","HAlign","CENTER","ALIGNED","FIT","VAlign","BASELINE","TOP","MTextAttachment","TOP_LEFT","TOP_CENTER","TOP_RIGHT","MIDDLE_LEFT","MIDDLE_CENTER","MIDDLE_RIGHT","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","charShapeProvider","curParagraph","Paragraph","spaceShape","FlattenItems","_step14","curAlignment","_iterator14","_step15","_iterator15","FeedSpace","FeedChar","SetAlignment","Alignment","JUSTIFY","_iterator16","_step16","_iterator17","_step17","pWidth","defaultAlignment","_iterator18","_step18","_iterator19","_step19","_p3","_iterator20","_step20","_p4","_iterator21","_step21","chunkIdx","BuildLines","GetMaxLineWidth","ApplyAlignment","rotate","startChunkIdx","numChunks","GetSpacingWidth","t3","t4","_class","textBox","curChunk","_AddChunk","lastChar","PushSpace","boxWidth","curChunkIdx","curWidth","CommitLine","chunkWidth","GetWidth","_step22","_iterator22","_step23","_iterator23","Chunk","_class2","prevChunk","lastShape","leadingSpaces","spaceStartKerning","spaceEndKerning","GetKerning","withSpacing","_class3","_this$paragraph$align","ForEachChunk","curX","prevChar","prevFont","GetVertices","_endPos","_widthFactor","_hAlign","_vAlign","insertionPos","GetFitScale","GetFitRotation","_iterator24","_step24","_iterator25","_step25","MIN_VALUE","Entity","Type","TreeBase","Iterator","_tree","_ancestors","_cursor","red","RBTree","comparator","_comparator","is_red","single_rotate","save","get_child","set_child","double_rotate","findIter","lowerBound","cur","cmp","upperBound","each","reach","_minNode","_maxNode","insert","gp","ggp","dir2","sr","gpc","DimensionLayout","texts","arrowHeadShape","LinearDimension","styleResolver","textWidthCalculator","_CalculateGeometry","_GetText","_this$styleResolver","_this$styleResolver2","_this$styleResolver3","_this$styleResolver4","_this$styleResolver5","_this$params$textRota","_this$styleResolver6","_this$styleResolver7","_this$styleResolver8","_this$styleResolver9","dimSize","dimColor","dimScale","arrowSize","tickSize","textAnchor","flipArrows","dimExt","vDim","AddLine","vDimNorm","AddText","extColor","extOffset","extExt","DrawExtLine","basePt","dimPt","vExt","flip","_CreateTick","_CreateArrowShape","layout","AddTriangles","vBase","isAligned","_this$params$angle","_this$params$text","_this$styleResolver10","_this$styleResolver11","_this$styleResolver12","_this$styleResolver13","_this$styleResolver14","_this$styleResolver15","_this$params$text2","measurement","rnd","zeroSupp","leadZeroSupp","trailingZeroSupp","measText","decSep","IntersectSegmentsParametric","HatchStyle","ODD_PARITY","OUTERMOST","THROUGH_ENTIRE_AREA","ENDPOINT_MARGIN","EdgeSameSide","e1","e2","ClipCalculator","lineDir","loops","loopIdx","vtxIdx","_ProcessEdges","_CreateNodes","_GenerateThroughAllSegments","_GenerateOddParitySegments","edgeVec","isZero","isParallel","isProcessed","isStartVtx","_this$_GetConnectedEd2","_GetConnectedEdge","connEdge","isDirect","toggle","suppress","unsuppress","prevNode","loopStack","IsOutside","wasOutside","HatchCalculator","Calculate","seedPoint","patTransform","basePoint","Pattern","offsetInLineSpace","lineDefs","commentPos","lineDef","patternsRegistryMetric","patternsRegistryImperial","RegisterPattern","isMetric","registry","LookupPattern","earcut","createNode","ParsePatFile","_IterateLineIndices","INDEXED_CHUNK_SIZE","POINT_CIRCLE_TESSELLATION_ANGLE","POINT_SHAPE_BLOCK_NAME","DEFAULT_VARS","DIMTXT","DIMASZ","DIMCLRD","DIMCLRE","DIMCLRT","DIMDEC","DIMDLE","DIMDSEP","DIMEXE","DIMEXO","DIMFXL","DIMFXLON","DIMGAP","DIMLFAC","DIMRND","DIMSAH","DIMSCALE","DIMSD1","DIMSD2","DIMSE1","DIMSE2","DIMSOXD","DIMTSZ","DIMZIN","DxfScene","batches","Compare","vars","fontStyles","inserts","pointShapeBlock","numBlocksFlattened","numEntitiesFiltered","_Build","_this$vars$get","_this$vars$get2","_this$vars$get3","_this$vars$get4","_this$vars$get5","_Object$entries","_Object$entries$_i","_Object$entries2","_Object$entries2$_i","_Object$entries3","_Object$entries3$_i","_i4","_Object$entries4","_Object$entries4$_i","_style","_i5","_Object$entries5","_Object$entries5$_i","_block","_entity$block","_block2","_block3","blockCtx","_entity","_entity2","angBase","angDir","pdMode","pdSize","dimstyle","textRenderer","textOptions","hasMissingChars","_FilterEntity","RegisterInsert","DefinitionContext","_ProcessDxfEntity","SetFlatten","_BuildScene","_GetEntityLayer","suppressPaperSpace","_FetchFonts2","IsTextEntity","ProcessEntity","_entity3","_text","Parse","_CreateLinearDimension","GetTexts","_x4","renderEntities","_DecomposeLine","_DecomposePolyline","_DecomposeArc","_DecomposeCircle","_DecomposeEllipse","_DecomposePoint","_DecomposeSpline","_ProcessInsert","_DecomposeText","_DecomposeMText","_Decompose3DFace","_DecomposeSolid","_DecomposeDimension","_DecomposeAttribute","_DecomposeHatch","renderEntity","_ProcessEntity","_ProcessPoints","LINE_SEGMENTS","_ProcessLineSegments","POLYLINE","_ProcessPolyline","_ProcessTriangles","_GetEntityColor","_GetLineType","startVtx","endVtx","aAbs","arcTessellationAngle","sha","cha","dSq","numSegments","minArcTessellationSubdivisions","_ref2$startAngle","_ref2$endAngle","_ref2$tessellationAng","tessellationAngle","_ref2$yRadius","_ref2$transform","_ref2$ccwAngleDir","ccwAngleDir","arcAngle","rotationTransform","_GenerateArcVertices","_GetEntityExtrusionTransform","_entity$startAngle","_entity$endAngle","_entity$endAngle2","xR","yR","markType","PdMode","DOT","MARK_MASK","SHAPE_MASK","_GetBatch","PushVertex","_TransformVertex","_CreatePointShapeBlock","_CreatePointMarker","insertEntity","_position$x","_position$y","PLUS","CROSS","TICK","ColorCode","BY_BLOCK","SQUARE","CIRCLE","_context10","_DecomposeFace","wireframeMesh","_context11","IsValidTriangle","hasFirstTriangle","hasSecondTriangle","_vertices","_vertices4","_args12","_context12","_entity$textHeight","fixedHeight","_context13","_GetEntityTextStyle","_entity$height","_context14","valueName","_GetDimStyleValue","GetLineWidth","IsValid","_entity$block2","_line$color","_triangle$color","_text$color","_context15","GenerateLayout","_entity$hatchStyle","filteredBoundaryLoops","_pattern","_line$angle3","_line$angle","_line$angle2","lineTransform","minLineIdx","maxLineIdx","dashPatLength","ocsTransform","lineIdx","_context18","_GetHatchBoundaryLoops","_TransformBoundaryLoop","isQcadDefault","GetPatternTransform","GetLineTransform","GetBoundingBox","xBase","xStart","xEnd","lineLength","lineVec","clippedSegments","GetParam","RenderSegment","ClipSegment","minSegIdx","maxSegIdx","segIdx","segStartParam","dashLength","isSpace","dashLengthParam","_seg","_context17","segEnd","_context16","ClipLine","AddPoints","lastPt","_vtx$bulge","vtx","_prevVtx$bulge","nextVtx","_GenerateBulgeVertices","_step26","_iterator26","arcVertices","_step27","_iterator27","subdivisions","_InterpolateSpline","_entity$xdata","_entity$xdata$ACAD","_entity$xdata$ACAD$DS","ACAD","DSTYLE","_step28","isVarCode","_iterator28","nestedCtx","NestedBlockContext","_step29","_iterator29","HasGeometry","InstantiationContext","GetInsertionTransform","_UpdateBounds","_step30","_iterator30","batch","_FlattenBatch","PushInstanceTransform","blockBatch","blockColor","blockLineType","_layerName","BY_LAYER","_layer$color","Merge","_GenerateShapedPolyline","_context19","_vertices5","_marked2","entityVertices","verticesCount","startIdx","curPlainLine","curLineType","curVertices","CommitSegment","vIdx","prevVtx","isPlainLine","_args21","_context21","endIdx","_context20","_IsPlainLine","_DecomposePolyfaceMesh","_MirrorEntityVertices","_iterator31","_step31","_face","_iterator34","_step34","_vIdx","polylines","CommitLineSegment","_i6","_faces","nextIdx","_iterator32","_step32","_iterator33","_step33","_args22","_context22","hiddenEdges","_args23","_context23","knots","_step35","_iterator35","_step36","_iterator36","_step37","_iterator37","_step38","_iterator38","_IterateLineChunks","_step39","lineChunk","PushChunk","_iterator39","_step40","_iterator40","PushIndex","_step41","_iterator41","_step42","_iterator42","_this$fontStyles$get","RenderBatch","IsInstanced","TransformVertex","verticesSize","indicesSize","transformsSize","GetVerticesBufferSize","GetIndicesBufferSize","GetTransformsSize","transforms","verticesOffset","indicesOffset","transformsOffset","Serialize","_step43","_iterator43","pointShapeHasDot","IsIndexed","_step44","curSpace","_iterator44","GetSize","_NewChunk","IndexedChunkWriter","_step45","_iterator45","chunkWriter","Get","_step46","_iterator46","_step47","_iterator47","_step48","_iterator48","CopyTo","IndexedChunk","nestedUseCount","usedByBlock","BlockContext","DEFINITION","INSTANTIATION","NESTED_DEFINITION","UpdateBounds","mInsert","mOffset","RegisterNestedUse","nestedTransform","numVerticesPushed","_ref3$indices","_ref3$layer","_ref3$lineType","_ref3$shape","_IterateVertices","_context24","_loop3","_context30","isLast","chunkVerticesCount","_context29","_context25","_context26","_callee6","_context27","_callee7","_context28","_context31","_marked3","TINF_OK","TINF_DATA_ERROR","Tree","trans","Data","bitcount","destLen","ltree","dtree","sltree","sdtree","length_bits","length_base","dist_bits","dist_base","clcidx","code_tree","tinf_build_bits_base","offs","tinf_build_tree","tinf_getbit","bit","tinf_read_bits","tinf_decode_symbol","tinf_decode_trees","lt","hlit","hdist","hclen","tinf_inflate_block_data","tinf_inflate_uncompressed_block","tinf_build_fixed_trees","bfinal","BoundingBox","fail","addX","addY","addBezier","const","let","b2ac","addQuad","cp1x","cp1y","cp2x","cp2y","quadTo","pathOrCommands","getBoundingBox","draw","beginPath","strokeStyle","toPathData","decimalPlaces","floatToString","packValues","toSVG","svg","toDOMElement","temporaryPath","newPath","LIMIT32","sizeOf","CHAR","CHARARRAY","USHORT","UINT24","ULONG","LONG","FIXED","FWORD","UFWORD","LONGDATETIME","TAG","Card8","Card16","OffSize","SID","NUMBER","NUMBER16","NUMBER32","REAL","nibbles","STRING","UTF8","numBytes","codePoints","UTF16","codepoint","eightBitMacEncodings","macintosh","MACSTRING","dataLength","macEncodingCacheKeys","macEncodingTableCache","isByteEncodable","encodeVarDeltaRunAsZeroes","deltas","runLength","numDeltas","encodeVarDeltaRunAsBytes","encodeVarDeltaRunAsWords","cachedTable","decodingTable","encodingTable","getMacEncodingTable","VARDELTAS","INDEX","OBJECT","encodedOffsets","offSize","offsetEncoder","encodedOffset","DICT","OPERAND","OPERATOR","OP","wmm","Table","fields","optionKeys","ushortList","itemName","tableList","records","itemCallback","recordList","Coverage","coverageTable","ranges","RangeRecord","ScriptList","scriptListTable","scriptRecord","defaultLangSys","reqFeatureIndex","featureIndexes","langSysRecords","langSysRecord","langSys","FeatureList","featureListTable","featureRecord","lookupListIndexes","LookupList","lookupListTable","subtableMakers","lookupTable","subtableCallback","lookupType","lookupFlag","subtables","CHARSTRING","cachedValue","op","encodingFunction","sizeOfFunction","TABLE","subtableOffsets","bytes","RECORD","LITERAL","Record","getByte","getUShort","getULong","getFixed","typeOffsets","byte","uShort","short","uLong","fixed","longDateTime","Parser","relativeOffset","parseByte","parseChar","parseCard8","parseUShort","parseCard16","parseSID","parseOffset16","parseShort","parseF2Dot14","parseULong","parseOffset32","parseFixed","parseString","parseTag","parseLongDateTime","parseVersion","minorBase","minor","parseULongList","parseOffset16List","parseUShortList","parseShortList","parseByteList","parseList","parseList32","parseRecordList","recordDescription","rec","fieldType","parseRecordList32","parseStruct","struct","parseValueRecord","valueFormat","valueRecord","xPlacement","yPlacement","xAdvance","yAdvance","xPlaDevice","yPlaDevice","xAdvDevice","yAdvDevice","parseValueRecordList","valueCount","parsePointer","structOffset","parsePointer32","parseListOfLists","subOffsets","subList","parseCoverage","startOffset","parseClassDef","startGlyph","classes","classId","list32","recordList32","pointer32","offset16","uShortList","offset32","uLongList","classDef","langSysTable","parseScriptList","parseFeatureList","parseLookupList","lookupTableParsers","useMarkFilteringSet","markFilteringSet","parseFeatureVariationsList","conditionSetOffset","featureTableSubstitutionOffset","getCard8","getCard16","getShort","getOffset","getBytes","endOffset","bytesToString","addSegment","platformId","encodingId","glyphIndexMap","startCharCode","endCharCode","startGlyphId","parseCmapTableFormat12","segCount","endCountParser","startCountParser","idDeltaParser","idRangeOffsetParser","glyphIndexOffset","parseCmapTableFormat4","make","isPlan0Only","cmapTable","unicodes","addTerminatorSegment","segCountToRemove","endCounts","startCounts","idDeltas","idRangeOffsets","cmap12Groups","segCountX2","cmap4Length","cmap12Length","cmap12Offset","cffStandardStrings","cffStandardEncoding","cffExpertEncoding","standardNames","DefaultEncoding","CmapEncoding","CffEncoding","GlyphNames","numberOfGlyphs","glyphNameIndex","addGlyphNames","lowMemory","_IndexToUnicodeMap","charCodes","addGlyphNamesToUnicodeMap","addUnicode","cffEncoding","isCIDFont","glyphNames","glyphIndexToName","addGlyphNamesAll","charName","nameToGlyphIndex","gid","Glyph","bindConstructorValues","defineDependentProperty","externalName","internalName","GlyphSet","_path","getPathDefinition","getPath","hPoints","hinting","getCommands","getContours","contours","currentContour","lastPointOfContour","getMetrics","xCoords","yCoords","metrics","leftSideBearing","rightSideBearing","drawPoints","drawCircles","blueCircles","redCircles","drawMetrics","_push","unicodeObj","_hmtxTableData","glyphLoader","ttfGlyphLoader","parseGlyph","buildPath","cffGlyphLoader","parseCFFCharstring","charstring","calcCFFSubroutineBias","subrs","parseCFFIndex","conversionFn","objectOffset","parseOperand","lookup","n1","parseFloatOperand","parseCFFDict","operands","entriesToObject","getCFFString","interpretDict","dict","newDict","TOP_DICT_META","PRIVATE_DICT_META","parseCFFTopDict","parseCFFPrivateDict","gatherCFFTopDicts","cffIndex","topDictArray","iTopDict","topDict","_subrs","_subrsBias","_defaultWidthX","_nominalWidthX","privateSize","private","privateOffset","privateDict","subrIndex","_privateDict","c1x","c1y","c2x","c2y","subrsBias","fdIndex","cff","_fdSelect","fdDict","_fdArray","newContour","parseStems","b3","b4","codeIndex","subrCode","jpx","jpy","c3x","c3y","c4x","c4y","gsubrsBias","gsubrs","encodeString","sid","makeDict","makeTopDict","makeTopDictIndex","topDicts","glyphToOps","_13","_23","dx1","dy1","dx2","dy2","formatMajor","formatMinor","parseCFFHeader","nameIndex","topDictIndex","stringIndex","globalSubrIndex","ros","fdArrayOffset","fdArray","fdSelectOffset","fdSelect","fdArrayIndex","nGlyphs","fdArrayCount","iGid","nRanges","iRange","parseCFFFDSelect","charStringsIndex","privateDictOffset","subrOffset","parseCFFIndexLowMemory","charStrings","parseCFFCharset","enc","nCodes","nLeft","parseCFFEncoding","glyphset","charString","getCffIndexObject","fullName","familyName","weightName","fontBBox","fontMatrix","fontNames","makeNameIndex","charsets","glyphSID","makeCharsets","makeCharStringsIndex","makePrivateDict","makeStringIndex","checkSumAdjustment","magicNumber","getTime","createdTimestamp","numMetrics","parseHmtxTableOnLowMemory","parseHmtxTableAll","tags","stringPool","stringPoolOffset","tableVersion","numTags","nameTableNames","macLanguages","macLanguageToScript","windowsLanguages","getLanguageCode","platformID","languageID","ltag","utf16","macScriptEncodings","macLanguageEncodings","getEncoding","encodingID","reverseDict","makeNameRecord","nameID","addStringToPool","needle","haystack","needleLength","limit","findSubArray","stringOffset","translations","nameIDs","namesWithNumericKeys","nameTableIds","macLanguageIds","windowsLanguageIds","nameRecords","macPlatform","macLanguage","macScript","macEncoding","macName","macNameOffset","winLanguage","winName","winNameOffset","unicodeRanges","begin","os2","usDefaultChar","usBreakChar","usMaxContent","getUnicodeRange","isFixedPitch","minMemType42","maxMemType42","minMemType1","maxMemType1","nameLength","subtableParsers","substFormat","deltaGlyphId","substitute","sequences","alternateSets","ligatureSets","ligGlyph","lookupRecordDesc","sequenceIndex","lookupListIndex","ruleSets","substCount","lookupRecords","classSets","coverages","chainRuleSets","backtrack","lookahead","backtrackClassDef","inputClassDef","lookaheadClassDef","chainClassSet","backtrackCoverage","inputCoverage","lookaheadCoverage","extensionLookupType","extensionParser","substitutes","subtable","sequenceSet","alternateSet","ligatureSet","ligature","returnTable","chainRuleSet","chainRule","tableData","lookups","variations","numDataMaps","dataOffset","computeCheckSum","makeTableRecord","checkSum","makeSfntTable","sfnt","highestPowerOf2","recordFields","tableFields","tableLength","tableRecord","r1","r2","metricsForChar","notFoundMetrics","average","vs","fontToTable","firstCharIndex","xMins","yMins","xMaxs","yMaxs","advanceWidths","leftSideBearings","rightSideBearings","lastCharIndex","globals","advanceWidthAvg","maxLeftSideBearing","headTable","hheaTable","maxpTable","os2Table","hasChar","hmtxTable","englishFamilyName","getEnglishName","englishStyleName","englishFullName","uniqueID","en","preferredFamily","preferredSubfamily","fontSubfamily","languageTags","nameTable","_name","ltagTable","postTable","cffTable","metaTable","metas","sfntTable","checkSumAdjusted","searchTag","imin","imax","imid","binSearch","Layout","Position","Substitution","ar1","ar2","getSubstFormat","defaultSubtable","nodeBufferToArrayBuffer","checkArgument","parseGlyphCoordinate","previousValue","shortVectorBitMask","sameBitMask","numberOfContours","_xMin","_yMin","_xMax","_yMax","endPointIndices","instructionLength","numberOfCoordinates","repeatCount","onCurve","isComposite","moreComponents","scale01","scale10","matchedPoints","transformPoints","newPoints","newPt","contourIndex","next2","componentGlyph","transformedPoints","firstPt","secondPt","getTable","createDefaultTable","getScriptNames","getDefaultScriptName","hasLatn","getScriptTable","scr","getLangSysTable","scriptTable","getFeatureTable","featIndexes","allFeatures","getLookupTables","featureTable","allLookups","getGlyphClass","classDefTable","getCoverageIndex","expandCoverage","defaultKerningTables","getKerningTables","kerningLookups","leftIndex","rightIndex","covIndex","posFormat","pairSet","pairSets","secondGlyph","value1","class1","class2","classRecords","gpos","getSingle","substitutions","lookupTables","getMultiple","replacements","getAlternates","alternates","getLigatures","ligatures","ligSet","lig","addSingle","substitution","coverageGlyph","addMultiple","addAlternate","addLigature","ligComponents","ligatureTable","getFeature","instructionTable","execGlyph","execComponent","parseGlyfTableOnLowMemory","parseGlyfTableAll","Hinting","_fpgmState","_prepState","_errorState","roundOff","roundToGrid","roundToDoubleGrid","roundToHalfGrid","roundUpToGrid","roundDownToGrid","roundSuper","srPeriod","phase","srPhase","srThreshold","xUnitVector","xo","rp1","rp2","pv","do1","do2","doa1","doa2","dm1","dm2","setRelative","normalSlope","rp","org","rpx","rpy","yo","rpdx","rpdy","touch","xTouched","touched","untouch","yUnitVector","yTouched","UnitVector","getUnitVector","HPoint","prevPointOnContour","nextPointOnContour","preventExtensions","pvns","fvs","nextTouched","prevTouched","HPZero","cvCutIn","deltaBase","deltaShift","minDis","autoFlip","prog","zp0","zp1","zp2","rp0","fv","dpv","initTZone","tZone","gZone","handleElse","ins","ip","nesting","SVTCA","DEBUG","SPVTCA","SFVTCA","SPVTL","p2i","p1i","SFVTL","POP","MDAP","IUP","cp","np","SHP","rpi","SHC","sp","SHZ","MSIRP","MIAP","cv","cvt","GC","MD","pi2","pi1","DELTAP123","ppem","ds","mag","ROUND","DELTAC123","SDPVTL","PUSHB","PUSHW","MDRP_MIRP","indirect","setRp0","keepD","ro","cvte","rp0i","Token","activeState","ContextRange","ContextChecker","checkStart","checkEnd","openRange","ContextParams","currentIndex","Event","eventId","initializeCoreEvents","coreEvents","updateContextsRanges","Tokenizer","tokens","registeredContexts","contextCheckers","registeredModifiers","isArabicChar","isIsolatedArabicChar","isTashkeelArabicChar","isLatinChar","FeatureQuery","SubstitutionAction","lookupCoverage","singleSubstitutionFormat1","singleSubstitutionFormat2","substituteIndex","lookupCoverageList","coverageList","contextParams","lookupIndex","chainingSubstitutionFormat3","lookupsCount","inputLookups","lookaheadOffset","lookaheadContext","lookaheadParams","lookaheadLookups","backtrackContext","backtrackParams","backtrackLookups","getLookupByIndex","getLookupMethod","getSubstitutionType","ligatureSubstitutionFormat1","ligSetIndex","decompositionSubstitutionFormat1","prepState","fpgmState","fpgm","funcs","prep","oCvt","gz","gLen","inhibitGridFit","pa0i","pa1i","pb0i","pb1i","pa0","pa1","pb0","pb1","x4","y4","f1","f2","cip","cprog","ipBegin","rp1i","rp2i","sel","ignoreCvt","stateId","inboundIndex","composeRUD","RUDs","RUD","hasFAILObject","FAIL","report","replaceRange","silent","isTokenType","token","replaced","replaceToken","removeRange","removeToken","insertToken","registerModifier","modifierId","condition","modifier","newToken","conditionParams","modifierParams","newStateValue","eventHandler","subsId","setCurrentIndex","rangeToText","getRangeTokens","getText","registerContextChecker","contextStartCheck","contextEndCheck","getContextRanges","resetContextsRanges","runContextCheck","setEndOffset","rangeId","contextChecker","tokenize","getDefaultScriptFeaturesIndexes","getScriptFeaturesIndexes","mapTagsToFeatures","getScriptFeatures","featuresIndexes","lookupFeature","getFeatureLookups","getLookupSubtables","substType","supportedScript","supportedFeature","scriptFeatures","startCheck","endCheck","nextIsWhitespace","isWhiteSpace","SUBSTITUTIONS","compsCount","applySubstitution","arabicPresentationForms","featuresTags","tokenizer","charContextParams","CONNECT","isolated","tashkeel","willConnectPrev","willConnectNext","getContextParams","arabicRequiredLigatures","latinLigature","Bidi","baseDir","checkId","contextChecks","tokenizeText","reverseArabicSentences","rangeTokens","checkGlyphIndexStatus","applyArabicPresentationForms","applyArabicRequireLigatures","applyLatinLigatures","designer","designerURL","manufacturer","manufacturerURL","license","licenseURL","trademark","weightClass","usWeightClasses","widthClass","usWidthClasses","fsSelectionValues","REGULAR","_hinting","outlinesFormat","HintingTrueType","addName","nameString","nameKey","makeFvarAxis","minValue","maxValue","parseFvarAxis","makeFvarInstance","inst","axisTag","parseFvarInstance","setText","latinWordCheck","arabicWordCheck","arabicSentenceCheck","registerFeatures","supportedTags","applyFeatures","checkContextReady","contextId","applyFeaturesToContexts","processText","getBidiText","getTextGlyphs","indexes","deleted","charToGlyph","updateFeatures","defaultRenderOptions","notdef","nameToGlyph","leftGlyph","rightGlyph","gposKerning","kerningPairs","kerning","fullPath","gX","gY","gFontSize","glyphPath","getPaths","glyphPaths","getAdvanceWidth","assertNamePresent","englishName","toTables","toBuffer","toArrayBuffer","intArray","fileName","fs","arrayBufferToNodeBuffer","writeFileSync","ITALIC","UNDERSCORE","NEGATIVE","OUTLINED","STRIKEOUT","BOLD","USER_TYPO_METRICS","WWS","OBLIQUE","ULTRA_CONDENSED","EXTRA_CONDENSED","CONDENSED","SEMI_CONDENSED","SEMI_EXPANDED","EXPANDED","EXTRA_EXPANDED","ULTRA_EXPANDED","THIN","EXTRA_LIGHT","LIGHT","SEMI_BOLD","EXTRA_BOLD","BLACK","fvar","offsetToData","axisCount","axisSize","instanceSize","instanceStart","attachList","attachPoints","caretValue","coordinate","pointindex","ligCaretList","ligGlyphs","markGlyphSets","gdef","markAttachClassDef","posformat","valueFormat1","valueFormat2","value2","class1Count","class2Count","subtableVersion","nPairs","parseWindowsKernTable","parseMacKernTable","shortVersion","parseFn","glyphOffsets","glyphOffset","loadFromFile","readFile","loadFromUrl","parseOpenTypeTableEntries","tableEntries","checksum","uncompressTable","tableEntry","inBuffer","compressedLength","outBuffer","inflate","parseBuffer","cffTableEntry","fvarTableEntry","glyfTableEntry","gdefTableEntry","gposTableEntry","gsubTableEntry","hmtxTableEntry","kernTableEntry","locaTableEntry","nameTableEntry","metaTableEntry","parseWOFFTableEntries","locaTable","locaOffsets","glyfTable","kernTable","gdefTable","gposTable","gsubTable","fvarTable","loadFn","isUrl","readFileSync","MSG_SIGNATURE","DxfWorker","isWorker","_ProcessRequest","_ProcessResponse","_OnError","reqSeq","_Load2","_SendRequest","WorkerMsg","LOAD","_CloneOptions","_Load","_Destroy","noWait","DESTROY","_ProcessRequest2","resp","transfers","_ProcessRequestMessage","_x5","_ProcessRequestMessage2","_yield$this$_Load","_SendProgress","_x6","_ProcessResponse2","PROGRESS","SetError","SetResponse","_OnError2","reqs","_SendRequest2","_args7","GetResponse","_x12","_Load3","_callee8","dxfScene","_CreateFontFetchers","fileEncoding","Fetch","Build","retainParsedDxf","_x13","_x14","_x15","_x16","CreateFetcher","_callee9","opentype","fetchers","_Resolve","_Reject","_GetResponse","_callee10","MaterialKey","instanceType","mouseZoomSpeedFactor","onTouchEnd","dollyCenter","isMouseMovement","zoomPan","zoomRatio","zoomCenter","panX","panY","newZoom","canvasRect","handleTouchStartDollyPan","handleTouchStartDollyRotate","MapControls","MessageLevel","INFO","WARN","DxfViewer","domContainer","three","canvasAlpha","canvasPremultipliedAlpha","simpleColorMaterial","simplePointMaterial","InstanceType","_CreateSimpleColorMaterial","_CreateSimplePointMaterial","autoResize","canvasWidth","canvasHeight","_OnResize","_OnPointerEvent","defaultLayer","parsedDxf","_EnsureRenderer","hScale","vScale","cam","centerX","centerY","camWidth","camHeight","_Emit","_this$layers$get","_ref$fonts","_ref$progressCbk","_ref$workerFactory","workerFactory","_yield$this$worker$Lo","_batch","Clear","Load","Destroy","Layer","PushBatch","Batch","_LoadBatch","FitView","_Message","_CreateControls","nonEmptyOnly","lyr","_TransformColor","Dispose","SetView","HasRenderer","EVENT_NAME_PREFIX","canvasCoord","domEvent","_CanvasToSceneCoord","SetSize","CreateObjects","_obj$_dxfViewerLayer","_dxfViewerLayer","PushObject","_CreateSimpleColorMaterialInstance","shaders","_GenerateShaders","_CreateSimplePointMaterialInstance","pointSize","fullInstanceAttr","FULL","fullInstanceTransform","pointInstanceAttr","POINT","pointInstanceTransform","pointSizeUniform","pointSizeAssigment","colorCorrection","blackWhiteInversion","bkgLum","Luminance","targetLum","fgLum","contrast","RgbToHls","HlsToRgb","Lighten","Darken","SetupWorker","viewer","rawChunk","indicesArray","transformsArray","transforms0","transforms1","instanceBatch","_CreateBlockInstanceObjects","_CreateObjects","_instanceBatch$layer","_instanceBatch$GetIns","materialFactory","objConstructor","CreateObject","_SetInstanceTransformAttribute","_GetInstanceColor","_GetSimplePointMaterial","_GetSimpleColorMaterial","GetInstanceType","defColor","LinearColor","SRgbColor","PagePersonal","setProductId","setIncomingParams","enquire","setEnquire","setUrl","wordPressUrl","setWordPressUrl","fullNames","setFullNames","friendlyNames","setFriendlyNames","abbrevNames","setAbbrevNames","_useState18","newValues","setNewValues","_useState20","presetValues","setPresetValues","_useState22","differences","setDifferences","_useState24","_useState26","filterDiffs","setFilterDiffs","_useState28","filterOn","setFilterOn","_useState30","personalProductCode","setPersonalProductCode","_useState32","customerId","setCustomerId","_useState34","personalizedId","setPersonalizedId","_useState36","paramsText","setParamsText","_useState38","paramsDownloadLink","setParamsDownloadLink","_useState40","gltfRawText","setGltfRawText","_useState42","_useState44","gltfText","setGltfText","_useState46","gltfDownloadLink","setGltfDownloadLink","_useState48","localTextureFolder","setLocalTextureFolder","_useState50","blueprint","setBlueprint","_useState52","manufactureData","setManufactureData","_useState54","manufactureUrl","setManufactureUrl","_useState56","manufactureSheetWidth","setManufactureSheetWidth","_useState58","manufactureSheetLength","setManufactureSheetLength","_useState60","manufactureGap","setManufactureGap","dxfContainer","resetPanels","kvpairs","kvpair","_productId","_incomingParams","saveUrl","generateWordPressUrl","alert","pUrl","decodedParams","_abbrevs","_values","_fullNames","blueprintVals","processModelInputs","incomingParamsDecodedFullQuality","gltfUrl","presetPairs","_presetParams","_orderedPresetValues","_differences","_filterDiffs","preval","chg","processPresets","formatParamsText","xyzComponents","meshArea","tri","gltfArea","materialIdExternal","MaterialIdExternal","_price","priceBase","priceArea","materialPremium","priceMatPrem","pairStr","price","_manufactureData","_gltfText","matchAll","downloadLink","dxfCurrent","dxfViewer","loadDxfViewer","_URL","queryParams","ShowWoodgrain","ShowEdges","ShowFullRes","handleManufactureClick","urlManufacture","NestSheetWidth","NestSheetLength","NestCutSpacing","paramsLines","padEnd","filterDisp","narrow","buttonStyles","scrollSize","outerSize","lowerReportHeight","commentaryFontSize","ScrollContainer","OuterContainerDiv","Section1Div","TopRowTextDiv","TopRowItemDiv","TopRowItemTitle","UrlText","spellCheck","readAsText","accept","clipboard","writeText","ReportingText","readOnly","LinkButtonDiv","borderTopStyle","Section2Div","BottomPanelDiv","InputValueColumn","InputValueRow","ManufactureLabelStyle","ManufactureInputStyle","ManufactureUnitStyle","Section3Div","BottomRowDiv","ProductCodesDiv","IdText","BottomPanelsContainerDiv","localFolder","handleTextureClick","textarea","debug_mode","App","currentTheme","_langMatch$params","langMatch","globalDispatch","setItem","setSpeedParams","FullBackgroundDiv","PageSelectorGallery","PageConfigurator","PageViewer","PageArModelViewer"],"sourceRoot":""}